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

View file

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

View file

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

View file

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