[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/lib/plugins/config/core/Setting/ -> SettingRenderer.php (source)

   1  <?php
   2  
   3  /**
   4   * additional setting classes specific to these settings
   5   *
   6   * @author    Chris Smith <chris@jalakai.co.uk>
   7   */
   8  
   9  namespace dokuwiki\plugin\config\core\Setting;
  10  
  11  /**
  12   * Class setting_renderer
  13   */
  14  class SettingRenderer extends SettingMultichoice
  15  {
  16      protected $prompts = [];
  17      protected $format;
  18  
  19      /** @inheritdoc */
  20      public function initialize($default = null, $local = null, $protected = null)
  21      {
  22          $format = $this->format;
  23  
  24          foreach (plugin_list('renderer') as $plugin) {
  25              $renderer = plugin_load('renderer', $plugin);
  26              if ($renderer && method_exists($renderer, 'canRender') && $renderer->canRender($format)) {
  27                  $this->choices[] = $plugin;
  28  
  29                  $info = $renderer->getInfo();
  30                  $this->prompts[$plugin] = $info['name'];
  31              }
  32          }
  33  
  34          parent::initialize($default, $local, $protected);
  35      }
  36  
  37      /** @inheritdoc */
  38      public function html(\admin_plugin_config $plugin, $echo = false)
  39      {
  40  
  41          // make some language adjustments (there must be a better way)
  42          // transfer some plugin names to the config plugin
  43          foreach ($this->choices as $choice) {
  44              if (!$plugin->getLang($this->key . '_o_' . $choice)) {
  45                  if (!isset($this->prompts[$choice])) {
  46                      $plugin->addLang(
  47                          $this->key . '_o_' . $choice,
  48                          sprintf($plugin->getLang('renderer__core'), $choice)
  49                      );
  50                  } else {
  51                      $plugin->addLang(
  52                          $this->key . '_o_' . $choice,
  53                          sprintf($plugin->getLang('renderer__plugin'), $this->prompts[$choice])
  54                      );
  55                  }
  56              }
  57          }
  58          return parent::html($plugin, $echo);
  59      }
  60  }