Add a small prefilter on plpage to avoid notices when using {if $machin}
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Tue, 27 Jan 2009 21:20:30 +0000 (22:20 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Tue, 27 Jan 2009 21:20:30 +0000 (22:20 +0100)
Just write {if t($machin)} to avoid the notice.

WARN: only works with pattern {if t(...)}, don't try {if t(...) || t(...)}
(or improve the regexp :).

Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
classes/plpage.php
plugins/compiler.javascript.php
templates/plpage.content.tpl
templates/plpage.header.tpl

index 12c7d27..234cdb1 100644 (file)
@@ -116,7 +116,7 @@ abstract class PlPage extends Smarty
         $this->register_prefilter('form_force_encodings');
         $this->register_prefilter('wiki_include');
         $this->register_prefilter('core_include');
-        $this->register_prefilter('if_has_perms');
+        $this->register_prefilter('if_rewrites');
         $this->assign('pl_triggers', $this->_errors);
         $this->assign('pl_errors', $this->nb_errs());
         $this->assign('pl_failure', $this->_failure);
@@ -454,13 +454,15 @@ function core_include($source, &$smarty)
 // }}}
 //{{{ function hasPerm
 
-function if_has_perms($source, &$smarty)
+function if_rewrites($source, &$smarty)
 {
-    $source = preg_replace('/\{if([^}]*) (\!?)hasPerms\(([^)]+)\)([^}]*)\}/',
-                           '{if\1 \2$smarty.session.perms->hasFlagCombination(\3)\4}',
-                           $source);
-    return preg_replace('/\{if([^}]*) (\!?)hasPerm\(([^)]+)\)([^}]*)\}/',
-                        '{if\1 \2($smarty.session.perms && $smarty.session.perms->hasFlag(\3))\4}',
+    $perms = 'isset($smarty.session.perms|smarty:nodefaults) && $smarty.session.perms|smarty:nodefaults && $smarty.session.perms';
+    return preg_replace(array('/\{if([^}]*) (\!?)hasPerms\(([^)]+)\)([^}]*)\}/',
+                              '/\{if([^}]*) (\!?)hasPerm\(([^)]+)\)([^}]*)\}/',
+                              '/\{if([^}]*) (\!?)t\(([^)]+)\)([^}]*)\}/'),
+                        array('{if\1 \2(' . $perms . '->hasFlagCombination(\3))\4}',
+                              '{if\1 \2(' . $perms . '->hasFlag(\3))\4}',
+                              '{if\1 \2(isset(\3|smarty:nodefaults) && (\3|smarty:nodefaults))\4}'),
                         $source);
 }
 
index 7717d69..597d95b 100644 (file)
@@ -28,7 +28,7 @@ function smarty_compiler_javascript($tag_attrs, &$compiler)
     }
     $name = pl_entities(trim($name, '\'"'), ENT_QUOTES);
     $name = "javascript/$name.js";
-    if ($full) {
+    if (isset($full) && $full) {
         global $globals;
         $name = $globals->baseurl . '/' . $name;
     }
index 6b42c15..4bd5d04 100644 (file)
@@ -37,7 +37,7 @@ Nous conseillons très vivement d'utiliser des navigateurs récents, tels
 <br />
 {/if}
 
-{if !$pl_no_errors || $pl_failure}
+{if !t($pl_no_errors) || $pl_failure}
 {include core=triggers.tpl}
 {/if}
 
index 1d7a1a6..cfc421f 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
+{if t($pl_css)}
 {foreach from=$pl_css item=css}
 <link rel="stylesheet" type="text/css" href="css/{$css}" media="all"/>
 {/foreach}
+{/if}
+{if t($pl_inline_css)}
 {foreach from=$pl_inline_css item=css}
 <style type="text/css">
 {$css|smarty:nodefaults}
 </style>
 {/foreach}
+{/if}
+{if t($pl_link)}
 {foreach from=$pl_link item=link}
 <link rel="{$link.rel}" href="{$link.href}" />
 {/foreach}
+{/if}
 <script type="text/javascript">
   var platal_baseurl = "{$globals->baseurl}/";
 </script>
+{if t($pl_js)}
 {foreach from=$pl_js item=js}
 <script type="text/javascript" src="javascript/{$js}"></script>
 {/foreach}
-{if $pl_rss}
+{/if}
+{if t($pl_rss)}
 <link rel="alternate" type="application/rss+xml" title="{$pl_rss.title}" href="{$pl_rss.href}" />
 {/if}
-{if $pl_extra_header}
+{if t($pl_extra_header)}
 {$pl_extra_header|smarty:nodefaults}
 {/if}
 <title>{$pl_title}</title>