Changeset 14448
- Timestamp:
- 01/04/09 02:51:46 (4 years ago)
- Files:
-
- plugins/sfSmartyPlugin/trunk/README (modified) (1 diff)
- plugins/sfSmartyPlugin/trunk/lib/sfSmarty.class.php (modified) (8 diffs)
- plugins/sfSmartyPlugin/trunk/package.xml (modified) (4 diffs)
- plugins/sfSmartyPlugin/trunk/templates (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/sfSmartyPlugin/trunk/README
r14409 r14448 141 141 {use helper='Javascript'} 142 142 143 The {use} tag does not accept an array of values currently. 143 The {use} tag now accepts a comma delimited string list to load multiple helpers in one 'use' statement 144 145 {use helper='Javascript, jQuery, etc'} 144 146 145 147 All other helpers are used as compiler methods in Smarty. That is you would use the function name after the opening brace. plugins/sfSmartyPlugin/trunk/lib/sfSmarty.class.php
r14409 r14448 30 30 protected static $loadedHelpers; 31 31 protected static $knownFunctions; 32 33 private $templateHelpers; 32 34 33 35 /** … … 104 106 } 105 107 self::$smarty->register_compiler_function('use', array($this, 'smartyCompilerfunctionUse')); 106 self::$smarty->register_postfilter(array( 'sfSmarty', 'smartyPostFilter'));108 self::$smarty->register_postfilter(array($this, 'smartyPostFilter')); 107 109 } 108 110 return self::$smarty; … … 149 151 } 150 152 153 $this->templateHelpers = array(); 151 154 $this->loadCoreAndStandardHelpers(); 152 155 … … 179 182 return self::$smarty->fetch("file:$file"); 180 183 } 181 184 185 /** 186 * Process array of helpers for loading and maintaining loaded data 187 * 188 * @param array $helpers 189 * @param array $list 190 */ 191 private function processHelpers(&$helpers, &$list) 192 { 193 foreach ($helpers as &$helper) { 194 $name = trim($helper); 195 if (!isset($list[$name])) { 196 $this->loadHelper($name); 197 $list[$name] = true; 198 } 199 } 200 } 201 182 202 /** 183 203 * sfSmarty::loadCoreAndStandardHelpers() … … 191 211 $standard_helpers = sfConfig::get('sf_standard_helpers'); 192 212 $helpers = array_unique(array_merge($core_helpers, $standard_helpers)); 193 foreach ($helpers as $helperName) {194 $this->loadHelper($helperName);195 }213 214 $this->processHelpers($helpers, self::$loadedHelpers); 215 196 216 $smarty_helpers = sfConfig::get('sf_smarty_helpers'); 197 217 sfProjectConfiguration::getActive()->loadHelpers(array_unique(array_merge($helpers, $smarty_helpers))); 198 218 } 199 219 200 220 /** 201 221 * sfSmarty::loadHelper() … … 207 227 protected function loadHelper($helperName) 208 228 { 209 if (!isset(self::$loadedHelpers[$helperName])) { 210 if (!self::$cache->has($helperName)) { 211 static $dirs; 212 if (!is_array($dirs)) { 213 $dirs = sfProjectConfiguration::getActive()->getHelperDirs(/*$moduleName*/); 214 } 215 216 $fileName = $helperName . 'Helper.php'; 217 $path = ''; 218 foreach($dirs as $dir) { 219 if (is_readable($dir . DIRECTORY_SEPARATOR . $fileName)) { 220 $path = $dir . DIRECTORY_SEPARATOR . $fileName; 221 self::$cache->set($helperName, self::parseHelper($helperName, $path)); 222 break; 223 } 224 } 229 if (!self::$cache->has($helperName)) { 230 static $dirs; 231 if (!is_array($dirs)) { 232 $dirs = sfProjectConfiguration::getActive()->getHelperDirs(/*$moduleName*/); 225 233 } 226 234 227 eval(self::$cache->get($helperName)); 228 self::$loadedHelpers[$helperName] = true; 229 } 235 $fileName = $helperName . 'Helper.php'; 236 $path = ''; 237 foreach($dirs as $dir) { 238 if (is_readable($dir . DIRECTORY_SEPARATOR . $fileName)) { 239 $path = $dir . DIRECTORY_SEPARATOR . $fileName; 240 self::$cache->set($helperName, self::parseHelper($helperName, $path)); 241 break; 242 } 243 } 244 } 245 eval(self::$cache->get($helperName)); 230 246 } 231 247 248 /** 249 * Parse Helper file for caching 250 * 251 * @param string $helperName 252 * @param string $path 253 * @return string 254 */ 232 255 protected static function parseHelper($helperName, $path) 233 256 { … … 295 318 throw new Exception('sfSmartyView: Cannot compile template. Use: {use helper="helpername"}'); 296 319 } 297 $this->loadHelper($matches[1]); 320 $helpers = explode(",",$matches[1]); 321 $this->processHelpers($helpers, $this->templateHelpers); 298 322 return ''; 299 323 } … … 306 330 * @return 307 331 **/ 308 public staticfunction smartyPostFilter($content, Smarty $smarty)332 public function smartyPostFilter($content, Smarty $smarty) 309 333 { 310 334 $helpers = ''; 311 if (count( self::$loadedHelpers)) {312 $helpers .= "use_helper('".implode("','",array_keys( self::$loadedHelpers))."');";335 if (count($this->templateHelpers)) { 336 $helpers .= "use_helper('".implode("','",array_keys($this->templateHelpers))."');"; 313 337 $helpers = "<?php $helpers ?>"; 314 338 } plugins/sfSmartyPlugin/trunk/package.xml
r14409 r14448 11 11 <active>yes</active> 12 12 </lead> 13 <date>200 8-12-31</date>13 <date>2009-01-03</date> 14 14 <time>17:34:35</time> 15 15 <version> 16 <release>0.3. 0</release>16 <release>0.3.5</release> 17 17 <api>1.0.0</api> 18 18 </version> … … 41 41 <file role="data" name="AppUrlHelper.php"></file></dir> 42 42 </dir> 43 <dir name="templates">44 <file role="data" name="indexSuccess.tpl" />45 <file role="data" name="layout.tpl" />46 </dir>47 43 </dir> 48 44 </contents> … … 68 64 <release> 69 65 <version> 70 <release>0.3. 0</release>66 <release>0.3.5</release> 71 67 <api>1.0.0</api> 72 68 </version> … … 78 74 MIT license 79 75 </license> 80 <date>200 8-12-31</date>76 <date>2009-01-03</date> 81 77 <license>MIT</license> 82 <notes> 83 * insaini: - Updated sfSmartyView compilation process and modifier support. 84 </notes> 78 <notes>* insaini: - Updated use helper method to accept comma delimited list and update helper compilation process for cleaner compiled templates.</notes> 85 79 </release> 86 80 </changelog>