Allow to use the original template in overridden templates (PR #1941)
This commit is contained in:
parent
354e37971d
commit
407a51e6c4
|
|
@ -9,6 +9,7 @@ New features:
|
|||
|
||||
Improvements:
|
||||
|
||||
* Allow to use the original template in overridden templates
|
||||
* Unification of the project header
|
||||
* Refactoring of Javascript code
|
||||
* Improve comments design
|
||||
|
|
|
|||
|
|
@ -84,25 +84,26 @@ class Template
|
|||
/**
|
||||
* Find template filename
|
||||
*
|
||||
* Core template name: 'task/show'
|
||||
* Plugin template name: 'myplugin:task/show'
|
||||
* Core template: 'task/show' or 'kanboard:task/show'
|
||||
* Plugin template: 'myplugin:task/show'
|
||||
*
|
||||
* @access public
|
||||
* @param string $template_name
|
||||
* @param string $template
|
||||
* @return string
|
||||
*/
|
||||
public function getTemplateFile($template_name)
|
||||
public function getTemplateFile($template)
|
||||
{
|
||||
$template_name = isset($this->overrides[$template_name]) ? $this->overrides[$template_name] : $template_name;
|
||||
$plugin = '';
|
||||
$template = isset($this->overrides[$template]) ? $this->overrides[$template] : $template;
|
||||
|
||||
if (strpos($template_name, ':') !== false) {
|
||||
list($plugin, $template) = explode(':', $template_name);
|
||||
$path = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'plugins';
|
||||
$path .= DIRECTORY_SEPARATOR.ucfirst($plugin).DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.$template.'.php';
|
||||
} else {
|
||||
$path = __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.$template_name.'.php';
|
||||
if (strpos($template, ':') !== false) {
|
||||
list($plugin, $template) = explode(':', $template);
|
||||
}
|
||||
|
||||
return $path;
|
||||
if ($plugin !== 'kanboard' && $plugin !== '') {
|
||||
return implode(DIRECTORY_SEPARATOR, array(__DIR__, '..', '..', 'plugins', ucfirst($plugin), 'Template', $template.'.php'));
|
||||
}
|
||||
|
||||
return implode(DIRECTORY_SEPARATOR, array(__DIR__, '..', 'Template', $template.'.php'));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,3 +34,9 @@ $this->template->setTemplateOverride('header', 'theme:layout/header');
|
|||
```
|
||||
|
||||
The first argument is the original template name and the second argument the template to use as replacement.
|
||||
|
||||
You can still use the original template using the "kanboard:" prefix:
|
||||
|
||||
```php
|
||||
<?= $this->render('kanboard:header') ?>
|
||||
```
|
||||
|
|
|
|||
|
|
@ -8,35 +8,41 @@ class TemplateTest extends Base
|
|||
{
|
||||
public function testGetTemplateFile()
|
||||
{
|
||||
$t = new Template($this->container['helper']);
|
||||
$template = new Template($this->container['helper']);
|
||||
|
||||
$this->assertStringEndsWith(
|
||||
'app'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.'a'.DIRECTORY_SEPARATOR.'b.php',
|
||||
$t->getTemplateFile('a'.DIRECTORY_SEPARATOR.'b')
|
||||
implode(DIRECTORY_SEPARATOR, array('app', 'Core', '..', 'Template', 'a', 'b.php')),
|
||||
$template->getTemplateFile('a'.DIRECTORY_SEPARATOR.'b')
|
||||
);
|
||||
|
||||
$this->assertStringEndsWith(
|
||||
implode(DIRECTORY_SEPARATOR, array('app', 'Core', '..', 'Template', 'a', 'b.php')),
|
||||
$template->getTemplateFile('kanboard:a'.DIRECTORY_SEPARATOR.'b')
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetPluginTemplateFile()
|
||||
{
|
||||
$t = new Template($this->container['helper']);
|
||||
$template = new Template($this->container['helper']);
|
||||
$this->assertStringEndsWith(
|
||||
'app'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'Myplugin'.DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.'a'.DIRECTORY_SEPARATOR.'b.php',
|
||||
$t->getTemplateFile('myplugin:a'.DIRECTORY_SEPARATOR.'b')
|
||||
implode(DIRECTORY_SEPARATOR, array('app', 'Core', '..', '..', 'plugins', 'Myplugin', 'Template', 'a', 'b.php')),
|
||||
$template->getTemplateFile('myplugin:a'.DIRECTORY_SEPARATOR.'b')
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetOverridedTemplateFile()
|
||||
{
|
||||
$t = new Template($this->container['helper']);
|
||||
$t->setTemplateOverride('a'.DIRECTORY_SEPARATOR.'b', 'myplugin:c');
|
||||
$template = new Template($this->container['helper']);
|
||||
$template->setTemplateOverride('a'.DIRECTORY_SEPARATOR.'b', 'myplugin:c');
|
||||
|
||||
$this->assertStringEndsWith(
|
||||
'app'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'Myplugin'.DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.'c.php',
|
||||
$t->getTemplateFile('a'.DIRECTORY_SEPARATOR.'b')
|
||||
implode(DIRECTORY_SEPARATOR, array('app', 'Core', '..', '..', 'plugins', 'Myplugin', 'Template', 'c.php')),
|
||||
$template->getTemplateFile('a'.DIRECTORY_SEPARATOR.'b')
|
||||
);
|
||||
|
||||
$this->assertStringEndsWith(
|
||||
'app'.DIRECTORY_SEPARATOR.'Core'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Template'.DIRECTORY_SEPARATOR.'d.php',
|
||||
$t->getTemplateFile('d')
|
||||
implode(DIRECTORY_SEPARATOR, array('app', 'Core', '..', 'Template', 'd.php')),
|
||||
$template->getTemplateFile('d')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue