Dotclear

Changeset 1091:d32eaf9fac5e for inc


Ignore:
Timestamp:
12/20/12 23:59:54 (13 years ago)
Author:
JcDenis
Branch:
twig
Message:

Added javascript helpers to load only once scripts files

Location:
inc/admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/class.dc.admincontext.php

    r1089 r1091  
    2323     protected $globals = array(); 
    2424     protected $protected_globals = array(); 
     25     protected $memory = array(); 
    2526      
    2627     public function __construct($core) 
     
    126127          return array( 
    127128               '__'           => new Twig_Function_Function("__", array('is_safe' => array('html'))), 
    128                'debug_info' => new Twig_Function_Method($this, 'getDebugInfo', array('is_safe' => array('html'))) 
    129                //,'page_menu' => new Twig_Function_Method($this, 'pageMenu', array('is_safe' => array('html'))) 
     129               'debug_info' => new Twig_Function_Method($this, 'getDebugInfo', array('is_safe' => array('html'))), 
     130               'memorize' => new Twig_Function_Method($this, 'setMemory', array('is_safe' => array('html'))), 
     131               'memorized' => new Twig_Function_Method($this, 'getMemory', array('is_safe' => array('html'))) 
    130132          ); 
    131133     } 
     
    461463          return $di; 
    462464     } 
     465      
     466     /** 
     467     Add a value in a namespace memory 
     468      
     469     This help keep variable when recalling Twig macros 
     470      
     471     @param string $ns A namespace 
     472     @param string $str A value to memorize in this namespace 
     473     */ 
     474     public function setMemory($ns,$str) 
     475     { 
     476          if (!array_key_exists($ns,$this->memory) || !in_array($str,$this->memory[$ns])) { 
     477               $this->memory[$ns][] = $str; 
     478          } 
     479     } 
     480      
     481     /** 
     482     Check if a value is previously memorized in a namespace 
     483      
     484     @param string $ns A namespace 
     485     @param string $str A value to search in this namespace 
     486     @return array True if exists 
     487     */ 
     488     public function getMemory($ns,$str) 
     489     { 
     490          return array_key_exists($ns,$this->memory) && in_array($str,$this->memory[$ns]); 
     491     } 
    463492} 
    464493?> 
  • inc/admin/default-templates/js_helpers.html.twig

    r1088 r1091  
    11{# JS Helpers #} 
     2 
     3{% macro load(src,type) -%} 
     4     {% if not memorized('jsload',src) -%} 
     5          {{ memorize('jsload',src) -}} 
     6          {% set type = type|default('text/javascript') -%} 
     7          <script type="{{ type }}" src="{{ theme_url }}{{ src }}"></script> 
     8     {%- endif %} 
     9{%- endmacro %} 
    210 
    311{% macro common() %} 
    412     <!-- jsCommon --> 
    5      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.js"></script> 
    6      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.biscuit.js"></script> 
    7      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.bgFade.js"></script> 
    8      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.constantfooter.js"></script> 
    9      <script type="text/javascript" src="{{theme_url}}js/common.js"></script> 
    10      <script type="text/javascript" src="{{theme_url}}js/prelude.js"></script> 
     13     {{ _self.load('js/jquery/jquery.js') }} 
     14     {{ _self.load('js/jquery/jquery.biscuit.js') }} 
     15     {{ _self.load('js/jquery/jquery.bgFade.js') }} 
     16     {{ _self.load('js/jquery/jquery.constantfooter.js') }} 
     17     {{ _self.load('js/common.js') }} 
     18     {{ _self.load('js/prelude.js') }} 
    1119     <script type="text/javascript"> 
    1220     //<![CDATA[ 
     
    5866{% macro load_IE7() %} 
    5967     <!--[if lt IE 8]> 
    60      <script type="text/javascript" src="{{theme_url}}js/ie7/IE8.js"></script> 
     68     {{ _self.load('ie7/IE8.js') }} 
    6169     <link rel="stylesheet" type="text/css" href="{{theme_url}}style/iesucks.css" /> 
    6270     <![endif]--> 
     
    6674     {% if values is not iterable %}{% set values = [values] %} {% endif %} 
    6775     <!-- jsConfirmClose --> 
    68      <script type="text/javascript" src="{{theme_url}}js/confirm-close.js"></script> 
     76     {{ _self.load('js/confirm-close.js') }} 
    6977     <script type="text/javascript"> 
    7078     //<![CDATA[ 
     
    7785{% macro page_tabs(default_tab) %} 
    7886     <!-- jsPageTabs --> 
    79      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.pageTabs.js"></script> 
     87     {{ _self.load('js/jquery/jquery.pageTabs.js') }} 
    8088     <script type="text/javascript"> 
    8189     //<![CDATA[ 
     
    9098     <!-- jsModal --> 
    9199     <link rel="stylesheet" href="{{theme_url}}style/modal/modal.css" type="text/css" media="screen" /> 
    92      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.modal.js"></script> 
     100     {{ _self.load('js/jquery/jquery.modal.js') }} 
    93101     <script type="text/javascript"> 
    94102     //<![CDATA[ 
     
    102110     <!-- jsColorPicker --> 
    103111     <link rel="stylesheet" href="{{theme_url}}style/farbtastic/farbtastic.css" type="text/css" media="screen" /> 
    104      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.farbtastic.js"></script> 
    105      <script type="text/javascript" src="{{theme_url}}js/color-picker.js"></script> 
     112     {{ _self.load('js/jquery/jquery.farbtastic.js') }} 
     113     {{ _self.load('js/color-picker.js') }} 
    106114{% endmacro %} 
    107115 
     
    109117     <!-- jsDatePicker --> 
    110118     <link rel="stylesheet" href="{{theme_url}}style/date-picker.css" type="text/css" media="screen" /> 
    111      <script type="text/javascript" src="{{theme_url}}js/date-picker.js"></script> 
     119     {{ _self.load('js/date-picker.js') }} 
    112120     <script type="text/javascript"> 
    113121     //<![CDATA[ 
     
    141149     <!-- jsToolBar --> 
    142150     <link rel="stylesheet" type="text/css" href="{{theme_url}}style/jsToolBar/jsToolBar.css" /> 
    143      <script type="text/javascript" src="{{theme_url}}js/jsToolBar/jsToolBar.js"></script> 
     151     {{ _self.load('js/jsToolBar/jsToolBar.js') }} 
    144152      
    145153     {% if current_user.options.enable_wysiwyg %} 
    146           <script type="text/javascript" src="{{theme_url}}js/jsToolBar/jsToolBar.wysiwyg.js"></script> 
     154          {{ _self.load('js/jsToolBar/jsToolBar.wysiwyg.js') }} 
    147155     {% endif %} 
    148156      
    149      <script type="text/javascript" src="{{theme_url}}js/jsToolBar/jsToolBar.dotclear.js"></script> 
     157     {{ _self.load('js/jsToolBar/jsToolBar.dotclear.js') }} 
    150158     <script type="text/javascript"> 
    151159     //<![CDATA[ 
     
    220228     <!-- jsCandyUpload --> 
    221229     <link rel="stylesheet" href="{{theme_url}}style/candyUpload/style.css" type="text/css" media="screen" /> 
    222      <script type="text/javascript" src="{{theme_url}}js/jquery/jquery.candyUpload.js"></script> 
     230     {{ _self.load('js/jquery/jquery.candyUpload.js') }} 
    223231     <script type="text/javascript"> 
    224232     //<![CDATA[ 
     
    251259{% macro tool_man() %} 
    252260     <!-- jsToolMan --> 
    253      <script type="text/javascript" src="{{theme_url}}js/tool-man/core.js"></script> 
    254      <script type="text/javascript" src="{{theme_url}}js/tool-man/events.js"></script> 
    255      <script type="text/javascript" src="{{theme_url}}js/tool-man/css.js"></script> 
    256      <script type="text/javascript" src="{{theme_url}}js/tool-man/coordinates.js"></script> 
    257      <script type="text/javascript" src="{{theme_url}}js/tool-man/drag.js"></script> 
    258      <script type="text/javascript" src="{{theme_url}}js/tool-man/dragsort.js"></script> 
    259      <script type="text/javascript" src="{{theme_url}}js/dragsort-tablerows.js"></script> 
     261     {{ _self.load('js/tool-man/core.js') }} 
     262     {{ _self.load('js/tool-man/events.js') }} 
     263     {{ _self.load('js/tool-man/css.js') }} 
     264     {{ _self.load('js/tool-man/coordinates.js') }} 
     265     {{ _self.load('js/tool-man/drag.js') }} 
     266     {{ _self.load('js/tool-man/dragsort.js') }} 
     267     {{ _self.load('js/dragsort-tablerows.js') }} 
    260268{% endmacro %} 
    261269 
    262270{% macro meta_editor() %} 
    263271     <!-- jsMetaEditor --> 
    264      <script type="text/javascript" src="{{theme_url}}js/meta-editor.js"></script> 
    265 {% endmacro %} 
     272     {{ _self.load('js/meta-editor.js') }} 
     273{% endmacro %} 
Note: See TracChangeset for help on using the changeset viewer.

Sites map