Development

Changeset 14448

You must first sign up to be able to contribute.

Changeset 14448

Show
Ignore:
Timestamp:
01/04/09 02:51:46 (4 years ago)
Author:
insaini
Message:

Updated use helper method to accept comma delimited string list of helpers. Updated helper compilation method for cleaner compiled templates.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/sfSmartyPlugin/trunk/README

    r14409 r14448  
    141141  {use helper='Javascript'} 
    142142 
    143 The {use} tag does not accept an array of values currently. 
     143The {use} tag now accepts a comma delimited string list to load multiple helpers in one 'use' statement 
     144 
     145  {use helper='Javascript, jQuery, etc'} 
    144146 
    145147All 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  
    3030    protected static $loadedHelpers; 
    3131    protected static $knownFunctions; 
     32     
     33    private $templateHelpers; 
    3234     
    3335    /** 
     
    104106      } 
    105107      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')); 
    107109    }      
    108110    return self::$smarty; 
     
    149151    } 
    150152     
     153    $this->templateHelpers = array(); 
    151154    $this->loadCoreAndStandardHelpers(); 
    152155     
     
    179182    return self::$smarty->fetch("file:$file");           
    180183  } 
    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   
    182202  /** 
    183203   * sfSmarty::loadCoreAndStandardHelpers() 
     
    191211    $standard_helpers = sfConfig::get('sf_standard_helpers'); 
    192212    $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     
    196216    $smarty_helpers = sfConfig::get('sf_smarty_helpers'); 
    197217    sfProjectConfiguration::getActive()->loadHelpers(array_unique(array_merge($helpers, $smarty_helpers))); 
    198218  } 
    199  
     219   
    200220  /** 
    201221   * sfSmarty::loadHelper() 
     
    207227  protected function loadHelper($helperName) 
    208228  { 
    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*/); 
    225233      } 
    226234       
    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)); 
    230246  } 
    231247   
     248  /** 
     249   * Parse Helper file for caching 
     250   * 
     251   * @param string $helperName 
     252   * @param string $path 
     253   * @return string 
     254   */ 
    232255  protected static function parseHelper($helperName, $path) 
    233256  { 
     
    295318      throw new Exception('sfSmartyView: Cannot compile template. Use: {use helper="helpername"}'); 
    296319    } 
    297     $this->loadHelper($matches[1]); 
     320    $helpers = explode(",",$matches[1]); 
     321    $this->processHelpers($helpers, $this->templateHelpers); 
    298322    return ''; 
    299323  } 
     
    306330   * @return 
    307331   **/ 
    308   public static function smartyPostFilter($content, Smarty $smarty) 
     332  public function smartyPostFilter($content, Smarty $smarty) 
    309333  { 
    310334    $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))."');"; 
    313337      $helpers = "<?php $helpers ?>"; 
    314338    } 
  • plugins/sfSmartyPlugin/trunk/package.xml

    r14409 r14448  
    1111  <active>yes</active> 
    1212 </lead> 
    13  <date>2008-12-31</date> 
     13 <date>2009-01-03</date> 
    1414 <time>17:34:35</time> 
    1515 <version> 
    16   <release>0.3.0</release> 
     16  <release>0.3.5</release> 
    1717  <api>1.0.0</api> 
    1818 </version> 
     
    4141     <file role="data" name="AppUrlHelper.php"></file></dir> 
    4242   </dir> 
    43    <dir name="templates"> 
    44     <file role="data" name="indexSuccess.tpl" /> 
    45     <file role="data" name="layout.tpl" /> 
    46    </dir> 
    4743  </dir> 
    4844 </contents> 
     
    6864      <release> 
    6965        <version> 
    70           <release>0.3.0</release> 
     66          <release>0.3.5</release> 
    7167          <api>1.0.0</api> 
    7268        </version> 
     
    7874          MIT license 
    7975        </license> 
    80         <date>2008-12-31</date> 
     76        <date>2009-01-03</date> 
    8177        <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> 
    8579      </release> 
    8680    </changelog>