Fix template_var hook

move it to smarty3 replate_macro, pass the theme name in $b
This commit is contained in:
fabrixxm 2015-11-06 19:52:00 +01:00
parent 545a7a80e4
commit 0aa69f134f
3 changed files with 21 additions and 11 deletions

View file

@ -274,7 +274,11 @@ $b is an array containing $nav from nav.php.
###'template_vars' ###'template_vars'
is called before vars are passed to the template engine to render the page. is called before vars are passed to the template engine to render the page.
The registered function can add,change or remove variables passed to template. The registered function can add,change or remove variables passed to template.
$b is the array of vars pased to 'replace_macros()' function. $b is an array with:
'template' => filename of template
'vars' => array of vars passed to template
Complete list of hook callbacks Complete list of hook callbacks

View file

@ -2,6 +2,7 @@
require_once "object/TemplateEngine.php"; require_once "object/TemplateEngine.php";
require_once("library/Smarty/libs/Smarty.class.php"); require_once("library/Smarty/libs/Smarty.class.php");
require_once "include/plugin.php";
define('SMARTY3_TEMPLATE_FOLDER','templates'); define('SMARTY3_TEMPLATE_FOLDER','templates');
@ -39,19 +40,19 @@ class FriendicaSmarty extends Smarty {
} }
return $this->fetch('file:' . $this->filename); return $this->fetch('file:' . $this->filename);
} }
} }
class FriendicaSmartyEngine implements ITemplateEngine { class FriendicaSmartyEngine implements ITemplateEngine {
static $name ="smarty3"; static $name ="smarty3";
public function __construct(){ public function __construct(){
if(!is_writable('view/smarty3/')){ if(!is_writable('view/smarty3/')){
echo "<b>ERROR:</b> folder <tt>view/smarty3/</tt> must be writable by webserver."; killme(); echo "<b>ERROR:</b> folder <tt>view/smarty3/</tt> must be writable by webserver."; killme();
} }
} }
// ITemplateEngine interface // ITemplateEngine interface
public function replace_macros($s, $r) { public function replace_macros($s, $r) {
$template = ''; $template = '';
@ -59,15 +60,24 @@ class FriendicaSmartyEngine implements ITemplateEngine {
$template = $s; $template = $s;
$s = new FriendicaSmarty(); $s = new FriendicaSmarty();
} }
// "middleware": inject variables into templates
$arr = [
"template"=> basename($s->filename),
"vars" => $r
];
call_hooks("template_vars", $arr);
$r = $arr['vars'];
foreach($r as $key=>$value) { foreach($r as $key=>$value) {
if($key[0] === '$') { if($key[0] === '$') {
$key = substr($key, 1); $key = substr($key, 1);
} }
$s->assign($key, $value); $s->assign($key, $value);
} }
return $s->parsed($template); return $s->parsed($template);
} }
public function get_template_file($file, $root=''){ public function get_template_file($file, $root=''){
$a = get_app(); $a = get_app();
$template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER.'/'.$file, $root); $template_file = get_template_file($a, SMARTY3_TEMPLATE_FOLDER.'/'.$file, $root);

View file

@ -19,10 +19,6 @@ function replace_macros($s,$r) {
$stamp1 = microtime(true); $stamp1 = microtime(true);
// "middleware": inject variables into templates
call_hooks("template_vars", $r);
$a = get_app(); $a = get_app();
$t = $a->template_engine(); $t = $a->template_engine();