From f5f62d3f42faf6fda931f2c28de9e58c2a665d5c Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 26 Apr 2020 15:45:25 +0200 Subject: [PATCH] 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/' --- src/Core/Renderer.php | 7 +++---- src/DI.php | 8 ++++++++ src/Render/FriendicaSmartyEngine.php | 8 +++++--- src/Render/ITemplateEngine.php | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 98915e70fa..5ce47ad931 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -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 "
" . __FUNCTION__ . ": " . $e->getMessage() . "
"; exit(); diff --git a/src/DI.php b/src/DI.php index 39efe2a97b..c89315c0ec 100644 --- a/src/DI.php +++ b/src/DI.php @@ -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 */ diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 1e419bcf76..6984daa158 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -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; diff --git a/src/Render/ITemplateEngine.php b/src/Render/ITemplateEngine.php index 456bb268b9..b18af69f22 100644 --- a/src/Render/ITemplateEngine.php +++ b/src/Render/ITemplateEngine.php @@ -27,5 +27,5 @@ namespace Friendica\Render; interface ITemplateEngine { public function replaceMacros($s, $v); - public function getTemplateFile($file, $root = ''); + public function getTemplateFile($file, $subDir = ''); }