Template Engine with Subdirectory

- Use explicit root path for template engine
- Replace "__DIR__" calls in addons with subdirectories
- Fixes local tests, where call is made out of '/' and not '/vagrant/'
This commit is contained in:
Philipp Holzer 2020-04-26 15:45:25 +02:00
parent 62e6c2f781
commit f5f62d3f42
No known key found for this signature in database
GPG key ID: 9A28B7D4FF5667BD
4 changed files with 17 additions and 8 deletions

View file

@ -99,19 +99,18 @@ class Renderer
* Load a given template $s
*
* @param string $s Template to load.
* @param string $root Optional.
* @param string $subDir Subdirectory (Optional)
*
* @return string template.
* @throws Exception
*/
public static function getMarkupTemplate($s, $root = '')
public static function getMarkupTemplate($s, $subDir = '')
{
$stamp1 = microtime(true);
$a = DI::app();
$t = self::getTemplateEngine();
try {
$template = $t->getTemplateFile($s, $root);
$template = $t->getTemplateFile($s, $subDir);
} catch (Exception $e) {
echo "<pre><b>" . __FUNCTION__ . "</b>: " . $e->getMessage() . "</pre>";
exit();

View file

@ -383,6 +383,14 @@ abstract class DI
return self::$dice->create(Util\ACLFormatter::class);
}
/**
* @return string
*/
public static function basePath()
{
return self::$dice->create('$basepath');
}
/**
* @return Util\DateTimeFormat
*/

View file

@ -68,16 +68,18 @@ class FriendicaSmartyEngine implements ITemplateEngine
return $s->parsed($template);
}
public function getTemplateFile($file, $root = '')
public function getTemplateFile($file, $subDir = '')
{
$a = DI::app();
$template = new FriendicaSmarty();
// Make sure $root ends with a slash /
if ($root !== '' && substr($root, -1, 1) !== '/') {
$root = $root . '/';
if ($subDir !== '' && substr($subDir, -1, 1) !== '/') {
$subDir = $subDir . '/';
}
$root = DI::basePath() . '/' . $subDir;
$theme = $a->getCurrentTheme();
$filename = $template::SMARTY3_TEMPLATE_FOLDER . '/' . $file;

View file

@ -27,5 +27,5 @@ namespace Friendica\Render;
interface ITemplateEngine
{
public function replaceMacros($s, $v);
public function getTemplateFile($file, $root = '');
public function getTemplateFile($file, $subDir = '');
}