namespace Kanboard\Core; | |
/** | |
* Template | |
* | |
* @package core | |
* @author Frederic Guillot | |
* | |
* @property \Kanboard\Helper\AppHelper $app | |
* @property \Kanboard\Helper\AssetHelper $asset | |
* @property \Kanboard\Helper\DateHelper $dt | |
* @property \Kanboard\Helper\FileHelper $file | |
* @property \Kanboard\Helper\FormHelper $form | |
* @property \Kanboard\Helper\HookHelper $hook | |
* @property \Kanboard\Helper\ModelHelper $model | |
* @property \Kanboard\Helper\SubtaskHelper $subtask | |
* @property \Kanboard\Helper\TaskHelper $task | |
* @property \Kanboard\Helper\TextHelper $text | |
* @property \Kanboard\Helper\UrlHelper $url | |
* @property \Kanboard\Helper\UserHelper $user | |
* @property \Kanboard\Helper\LayoutHelper $layout | |
* @property \Kanboard\Helper\ProjectHeaderHelper $projectHeader | |
*/ | |
class Template | |
{ | |
/** | |
* Helper object | |
* | |
* @access private | |
* @var Helper | |
*/ | |
private $helper; | |
/** | |
* List of template overrides | |
* | |
* @access private | |
* @var array | |
*/ | |
private $overrides = array(); | |
/** | |
* Template constructor | |
* | |
* @access public | |
* @param Helper $helper | |
*/ | |
public function __construct(Helper $helper) | |
{ | |
$this->helper = $helper; | |
} | |
/** | |
* Expose helpers with magic getter | |
* | |
* @access public | |
* @param string $helper | |
* @return mixed | |
*/ | |
public function __get($helper) | |
{ | |
return $this->helper->getHelper($helper); | |
} | |
/** | |
* Render a template | |
* | |
* Example: | |
* | |
* $template->render('template_name', ['bla' => 'value']); | |
* | |
* @access public | |
* @param string $__template_name Template name | |
* @param array $__template_args Key/Value map of template variables | |
* @return string | |
*/ | |
public function render($__template_name, array $__template_args = array()) | |
{ | |
extract($__template_args); | |
ob_start(); | |
include $this->getTemplateFile($__template_name); | |
return ob_get_clean(); | |
} | |
/** | |
* Define a new template override | |
* | |
* @access public | |
* @param string $original_template | |
* @param string $new_template | |
*/ | |
public function setTemplateOverride($original_template, $new_template) | |
{ | |
$this->overrides[$original_template] = $new_template; | |
} | |
/** | |
* Find template filename | |
* | |
* Core template: 'task/show' or 'kanboard:task/show' | |
* Plugin template: 'myplugin:task/show' | |
* | |
* @access public | |
* @param string $template | |
* @return string | |
*/ | |
public function getTemplateFile($template) | |
{ | |
$plugin = ''; | |
$template = isset($this->overrides[$template]) ? $this->overrides[$template] : $template; | |
if (strpos($template, ':') !== false) { | |
list($plugin, $template) = explode(':', $template); | |
} | |
if ($plugin !== 'kanboard' && $plugin !== '') { | |
return implode(DIRECTORY_SEPARATOR, array(PLUGINS_DIR, ucfirst($plugin), 'Template', $template.'.php')); | |
} | |
return implode(DIRECTORY_SEPARATOR, array(__DIR__, '..', 'Template', $template.'.php')); | |
} | |
} | |