Dotclear

Changeset 1153:1e48950b05af


Ignore:
Timestamp:
04/02/13 13:15:32 (12 years ago)
Author:
Dsls <dsls@…>
Branch:
twig
Parents:
1152:fbd922f6ed09 (diff), 1138:11db80678704 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • admin/posts.php

    r1102 r1153  
    1212 
    1313require dirname(__FILE__).'/../inc/admin/prepend.php'; 
    14  
     14global $_ctx; 
    1515dcPage::check('usage,contentadmin'); 
    1616 
     
    4848     # Filter form we'll put in html_block 
    4949     $users_combo = $categories_combo = array(); 
    50      $users_combo['-'] = $categories_combo['-'] = ''; 
    5150     while ($users->fetch()) 
    5251     { 
     
    6160     } 
    6261      
    63      $categories_combo[__('None')] = 'NULL'; 
     62 
     63# Getting categories 
     64$categories_combo = array(); 
     65try { 
     66     $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    6467     while ($categories->fetch()) { 
    65           $categories_combo[str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; '). 
    66                html::escapeHTML($categories->cat_title). 
    67                ' ('.$categories->nb_post.')'] = $categories->cat_id; 
     68          $categories_combo[$categories->cat_id] =  
     69               str_repeat('&nbsp;&nbsp;',$categories->level-1). 
     70               ($categories->level-1 == 0 ? '' : '&bull; '). 
     71               html::escapeHTML($categories->cat_title); 
    6872     } 
    69       
     73} catch (Exception $e) { } 
    7074     $status_combo = array( 
    71      '-' => '' 
    7275     ); 
    7376     foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    74           $status_combo[$v] = (string) $k; 
     77          $status_combo[(string) $k] = (string)$v; 
    7578     } 
    7679      
    7780     $selected_combo = array( 
    78      '-' => '', 
    79      __('selected') => '1', 
    80      __('not selected') => '0' 
     81     '1' => __('is selected'), 
     82     '0' => __('is not selected') 
    8183     ); 
    8284      
    8385     # Months array 
    84      $dt_m_combo['-'] = ''; 
    8586     while ($dates->fetch()) { 
    86           $dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month(); 
     87          $dt_m_combo[$dates->year().$dates->month()] = dt::str('%B %Y',$dates->ts()); 
    8788     } 
    8889      
    89      $lang_combo['-'] = ''; 
    9090     while ($langs->fetch()) { 
    9191          $lang_combo[$langs->post_lang] = $langs->post_lang; 
    9292     } 
    93       
    94      $sortby_combo = array( 
    95      __('Date') => 'post_dt', 
    96      __('Title') => 'post_title', 
    97      __('Category') => 'cat_title', 
    98      __('Author') => 'user_id', 
    99      __('Status') => 'post_status', 
    100      __('Selected') => 'post_selected' 
    101      ); 
    102       
    103      $order_combo = array( 
    104      __('Descending') => 'desc', 
    105      __('Ascending') => 'asc' 
    106      ); 
    10793} 
     94$form = new dcForm($core,'post','post.php'); 
     95 
    10896 
    10997# Actions combo box 
     
    138126$core->callBehavior('adminPostsActionsCombo',array(&$combo_action)); 
    139127 
    140 /* Get posts 
    141 -------------------------------------------------------- */ 
    142 $user_id = !empty($_GET['user_id']) ?   $_GET['user_id'] : ''; 
    143 $cat_id = !empty($_GET['cat_id']) ?     $_GET['cat_id'] : ''; 
    144 $status = isset($_GET['status']) ? $_GET['status'] : ''; 
    145 $selected = isset($_GET['selected']) ?  $_GET['selected'] : ''; 
    146 $month = !empty($_GET['month']) ?       $_GET['month'] : ''; 
    147 $lang = !empty($_GET['lang']) ?         $_GET['lang'] : ''; 
    148 $sortby = !empty($_GET['sortby']) ?     $_GET['sortby'] : 'post_dt'; 
    149 $order = !empty($_GET['order']) ?       $_GET['order'] : 'desc'; 
    150128 
    151 $show_filters = false; 
    152129 
    153 $page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; 
    154 $nb_per_page =  30; 
    155  
    156 if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { 
    157      if ($nb_per_page != $_GET['nb']) { 
    158           $show_filters = true; 
     130class monthdcFilterCombo extends dcFilterCombo { 
     131     public function applyFilter($params) { 
     132          $month=$this->avalues['values'][0]; 
     133          $params['post_month'] = substr($month,4,2); 
     134          $params['post_year'] = substr($month,0,4); 
    159135     } 
    160      $nb_per_page = (integer) $_GET['nb']; 
    161136} 
    162  
    163 $params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); 
    164 $params['no_content'] = true; 
    165  
    166 # - User filter 
    167 if ($user_id !== '' && in_array($user_id,$users_combo)) { 
    168      $params['user_id'] = $user_id; 
    169      $show_filters = true; 
    170 } else { 
    171      $user_id=''; 
    172 } 
    173  
    174 # - Categories filter 
    175 if ($cat_id !== '' && in_array($cat_id,$categories_combo)) { 
    176      $params['cat_id'] = $cat_id; 
    177      $show_filters = true; 
    178 } else { 
    179      $cat_id=''; 
    180 } 
    181  
    182 # - Status filter 
    183 if ($status !== '' && in_array($status,$status_combo)) { 
    184      $params['post_status'] = $status; 
    185      $show_filters = true; 
    186 } else { 
    187      $status=''; 
    188 } 
    189  
    190 # - Selected filter 
    191 if ($selected !== '' && in_array($selected,$selected_combo)) { 
    192      $params['post_selected'] = $selected; 
    193      $show_filters = true; 
    194 } else { 
    195      $selected=''; 
    196 } 
    197  
    198 # - Month filter 
    199 if ($month !== '' && in_array($month,$dt_m_combo)) { 
    200      $params['post_month'] = substr($month,4,2); 
    201      $params['post_year'] = substr($month,0,4); 
    202      $show_filters = true; 
    203 } else { 
    204      $month=''; 
    205 } 
    206  
    207 # - Lang filter 
    208 if ($lang !== '' && in_array($lang,$lang_combo)) { 
    209      $params['post_lang'] = $lang; 
    210      $show_filters = true; 
    211 } else { 
    212      $lang=''; 
    213 } 
    214  
    215 # - Sortby and order filter 
    216 if ($sortby !== '' && in_array($sortby,$sortby_combo)) { 
    217      if ($order !== '' && in_array($order,$order_combo)) { 
    218           $params['order'] = $sortby.' '.$order; 
    219      } else { 
    220           $order='desc'; 
    221      } 
    222       
    223      if ($sortby != 'post_dt' || $order != 'desc') { 
    224           $show_filters = true; 
    225      } 
    226 } else { 
    227      $sortby='post_dt'; 
    228      $order='desc'; 
    229 } 
    230  
    231 # Get posts 
    232 try { 
    233      $posts = $core->blog->getPosts($params); 
    234      $counter = $core->blog->getPosts($params,true); 
    235      $post_list = new adminPostList($core,$posts,$counter->f(0)); 
    236 } catch (Exception $e) { 
    237      $core->error->add($e->getMessage()); 
    238 } 
    239  
    240137/* DISPLAY 
    241138-------------------------------------------------------- */ 
    242 $starting_script = dcPage::jsLoad('js/_posts_list.js'); 
    243 if (!$show_filters) { 
    244      $starting_script .= dcPage::jsLoad('js/filter-controls.js'); 
    245 } 
     139$filterSet = new dcFilterSet($core,'fposts','posts.php'); 
    246140 
    247 dcPage::open(__('Entries'),$starting_script); 
     141$filterSet 
     142     ->addFilter(new dcFilterRichCombo( 
     143          'users',__('Author'), __('Author'), 'user_id', $users_combo,array( 
     144               'multiple' => true))) 
     145     ->addFilter(new dcFilterRichCombo( 
     146          'category',__('Category'), __('Category'), 'cat_id', $categories_combo)) 
     147     ->addFilter(new dcFilterRichCombo( 
     148          'post_status',__('Status'), __('Status'), 'post_status', $status_combo)) 
     149     ->addFilter(new dcFilterRichCombo( 
     150          'lang',__('Lang'), __('Lang'), 'post_lang', $lang_combo)) 
     151     ->addFilter(new dcFilterCombo( 
     152          'selected',__('Selected'), __('The post : '),'post_selected', $selected_combo)) 
     153     ->addFilter(new monthdcFilterCombo( 
     154          'month',__('Month'),__('Month'), 'post_month', $dt_m_combo,array('singleval' => 1))) 
     155     ->addFilter(new dcFilterText( 
     156          'search',__('Contains'),__('The entry contains'), 'search',20,255)); 
    248157 
    249 if (!$core->error->flag()) 
    250 { 
    251      echo  
    252      '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Entries').'</span></h2>'. 
    253      '<p class="top-add"><a class="button add" href="post.php">'.__('New entry').'</a></p>'; 
    254       
    255      if (!$show_filters) { 
    256           echo '<p><a id="filter-control" class="form-control" href="#">'. 
    257           __('Filters').'</a></p>'; 
    258      } 
    259       
    260      echo 
    261      '<form action="posts.php" method="get" id="filters-form">'. 
    262      '<fieldset><legend>'.__('Filters').'</legend>'. 
    263      '<div class="three-cols">'. 
    264      '<div class="col">'. 
    265      '<label for="user_id">'.__('Author:'). 
    266      form::combo('user_id',$users_combo,$user_id).'</label> '. 
    267      '<label for="cat_id">'.__('Category:'). 
    268      form::combo('cat_id',$categories_combo,$cat_id).'</label> '. 
    269      '<label for="status">'.__('Status:'). 
    270      form::combo('status',$status_combo,$status).'</label> '. 
    271      '</div>'. 
    272       
    273      '<div class="col">'. 
    274      '<label for="selected">'.__('Selected:'). 
    275      form::combo('selected',$selected_combo,$selected).'</label> '. 
    276      '<label for="month">'.__('Month:'). 
    277      form::combo('month',$dt_m_combo,$month).'</label> '. 
    278      '<label for="lang">'.__('Lang:'). 
    279      form::combo('lang',$lang_combo,$lang).'</label> '. 
    280      '</div>'. 
    281       
    282      '<div class="col">'. 
    283      '<p><label for="sortby">'.__('Order by:'). 
    284      form::combo('sortby',$sortby_combo,$sortby).'</label> '. 
    285      '<label for="order">'.__('Sort:'). 
    286      form::combo('order',$order_combo,$order).'</label></p>'. 
    287      '<p><label for="nb" class="classic">'.  form::field('nb',3,3,$nb_per_page).' '. 
    288      __('Entries per page').'</label></p> '. 
    289      '<p><input type="submit" value="'.__('Apply filters').'" /></p>'. 
    290      '</div>'. 
    291      '</div>'. 
    292      '<br class="clear" />'. //Opera sucks 
    293      '</fieldset>'. 
    294      '</form>'; 
    295       
    296      # Show posts 
    297      $post_list->display($page,$nb_per_page, 
    298      '<form action="posts_actions.php" method="post" id="form-entries">'. 
    299       
    300      '%s'. 
    301       
    302      '<div class="two-cols">'. 
    303      '<p class="col checkboxes-helpers"></p>'. 
    304       
    305      '<p class="col right"><label for="action" class="classic">'.__('Selected entries action:').'</label> '. 
    306      form::combo('action',$combo_action). 
    307      '<input type="submit" value="'.__('ok').'" /></p>'. 
    308      form::hidden(array('user_id'),$user_id). 
    309      form::hidden(array('cat_id'),$cat_id). 
    310      form::hidden(array('status'),$status). 
    311      form::hidden(array('selected'),$selected). 
    312      form::hidden(array('month'),$month). 
    313      form::hidden(array('lang'),$lang). 
    314      form::hidden(array('sortby'),$sortby). 
    315      form::hidden(array('order'),$order). 
    316      form::hidden(array('page'),$page). 
    317      form::hidden(array('nb'),$nb_per_page). 
    318      $core->formNonce(). 
    319      '</div>'. 
    320      '</form>' 
    321      ); 
    322 } 
    323158 
    324 dcPage::helpBlock('core_posts'); 
    325 dcPage::close(); 
     159 
     160$lposts = new dcItemList ($core,array('lposts','form-entries'),'posts_actions.php'); 
     161$lposts->addTemplate('posts_cols.html.twig'); 
     162 
     163$lposts->setFilterSet($filterSet); 
     164 
     165$lposts 
     166     ->addColumn(new dcColumn('title',__('Title'),'post_title')) 
     167     ->addColumn(new dcColumn('cat',__('Category'),'cat_title')) 
     168     ->addColumn(new dcColumn('date',__('Date'),'post_date')) 
     169     ->addColumn(new dcColumn('datetime',__('Date and Time'),'post_date')) 
     170     ->addColumn(new dcColumn('author',__('Author'),'post_author')) 
     171     ->addColumn(new dcColumn('status',__('Status'),'post_status')); 
     172 
     173 
     174$lposts->setup(); 
     175$filterSet->setup(); 
     176 
     177$_ctx 
     178     ->fillPageTitle(__('Entries'),'posts.php'); 
     179$params=new ArrayObject(); 
     180$filterSet->applyFilters($params); 
     181$posts = $core->blog->getPosts($params); 
     182$lposts->setEntries($posts); 
     183$_ctx->filters = '['.print_r($params->getArrayCopy(),true).']'; 
     184 
     185$core->tpl->display('posts.html.twig'); 
     186 
     187 
    326188?> 
  • admin/posts.php

    r1152 r1153  
    110110     __('Mark as unselected') => 'unselected' 
    111111); 
    112 $combo_action[__('Change')] = array(__('Change category') => 'category'); 
     112$combo_action[__('Change')] = array( 
     113     __('Change category') => 'category', 
     114     __('Change language') => 'lang'); 
    113115if ($core->auth->check('admin',$core->blog->id)) 
    114116{ 
  • inc/admin/class.dc.admincontext.php

    r1128 r1153  
    1212if (!defined('DC_RC_PATH')) { return; } 
    1313 
     14 
     15class dcProxy { 
     16     protected $object; 
     17     protected $attributes; 
     18     protected $methods; 
     19     protected $default; 
     20     protected $denyfirst; 
     21 
     22    /** 
     23     * valuesToArray - converts a list of strings to an array having these strings as keys. 
     24     *  
     25     * @param mixed $val the list to convert. 
     26     * @access protected 
     27     * @return mixed Value The resulting array 
     28     */ 
     29     protected function valuesToArray($val) { 
     30          $arr = array(); 
     31          foreach ($val as $k) { 
     32               $arr[$k]=true; 
     33          } 
     34          return $arr; 
     35     } 
     36 
     37     protected function isAllowed ($name,$list) { 
     38          if ($this->denyfirst) { 
     39               return isset($list[$name]); 
     40          } else { 
     41               return !isset($list[$name]); 
     42          } 
     43     } 
     44 
     45     public function __construct($object,$rights,$default='',$denyfirst=true) { 
     46          $this->object = $object; 
     47          $this->attributes = array(); 
     48          $this->methods = array(); 
     49          $this->denyfirst = $denyfirst; 
     50          if (isset($rights['attr'])) { 
     51               $this->attributes = $this->valuesToArray($rights['attr']); 
     52          } 
     53          if (isset($rights['methods'])) { 
     54               $this->methods = $this->valuesToArray($rights['methods']); 
     55          } 
     56     } 
     57 
     58     public function __get($name) { 
     59          if ($this->isAllowed($name,$this->attributes)) { 
     60               return $this->object->$name; 
     61          } else { 
     62               return $this->default; 
     63          } 
     64     } 
     65 
     66     public function __call($name,$args) { 
     67          if ($this->isAllowed($name,$this->methods) && 
     68               is_callable(array($this->object,$name))) { 
     69               return call_user_func_array(array($this->object,$name),$args); 
     70          } else { 
     71               return $this->default; 
     72          } 
     73 
     74     } 
     75} 
     76 
     77class dcArrayProxy extends dcProxy implements ArrayAccess { 
     78     public function offsetExists ($offset) { 
     79          return (isset($this->value[$offset])); 
     80     } 
     81     public function offsetGet ($offset) { 
     82          return new ProxyValue($this->object[$offset],$this->rights); 
     83     } 
     84     public function offsetSet ($offset ,$value ) { 
     85          // Do nothing, we are read only 
     86     } 
     87     public function offsetUnset ($offset) { 
     88          // Do nothing, we are read only 
     89     } 
     90} 
     91 
     92 
    1493/** 
    15  * @ingroup DC_CORE 
    16  * @brief Template extension for admin context. 
    17  *  
    18  * This extends template environment with tools required in admin context. 
    19  */ 
    20 class dcAdminContext extends dcContext 
     94@ingroup DC_CORE 
     95@brief Template extension for admin context 
     96 
     97This extends template environment with tools required in admin context. 
     98*/ 
     99class dcAdminContext extends Twig_Extension 
    21100{ 
     101     protected $core; 
     102     protected $globals = array(); 
     103     protected $protected_globals = array(); 
     104     protected $memory = array(); 
     105      
    22106     public function __construct($core) 
    23107     { 
    24           parent::__construct($core); 
    25            
    26           $this->protected_globals = array_merge($this->protected_globals,array( 
     108          $this->core = $core; 
     109           
     110          # Globals editable via context 
     111          $this->globals = array(); 
     112           
     113          # Globals not editable via context 
     114          $this->protected_globals = array( 
     115               'messages' => array( 
     116                    'static' => array(), 
     117                    'lists' => array(), 
     118                    'alert' => '', 
     119                    'errors' => array() 
     120               ), 
     121                
    27122               'page_title'   => array(), 
    28123               'page_global'  => false, 
    29124                
    30125               'admin_url'    => DC_ADMIN_URL, 
    31                'theme_url'    => DC_ADMIN_URL.'index.php?tf=', 
     126               'theme_url'    => '', 
    32127               'plugin_url'   => DC_ADMIN_URL.'index.php?pf=', 
    33           )); 
    34      } 
    35       
    36      /** 
    37       * Returns a list of global variables to add to the existing list. 
    38       * 
    39       * This merges overloaded variables with defined variables. 
    40       *  
    41       * @return array An array of global variables 
    42       */ 
     128                
     129               'version'           => DC_VERSION, 
     130               'vendor_name'  => DC_VENDOR_NAME, 
     131                
     132               'safe_mode'    => isset($_SESSION['sess_safe_mode']) && $_SESSION['sess_safe_mode'], 
     133               'debug_mode'   => DC_DEBUG 
     134          ); 
     135     } 
     136      
     137     /** 
     138     Prevent call crash from template on method that return this class 
     139     */ 
     140     public function __toString() 
     141     { 
     142          return ''; 
     143     } 
     144      
     145     /** 
     146     Test a global variable 
     147      
     148     @param string $name Name of the variable to test 
     149     @return boolean 
     150     */ 
     151     public function __isset($name) 
     152     { 
     153          return isset($this->globals[$name]); 
     154     } 
     155      
     156     /** 
     157     Add a global variable 
     158      
     159     @param string $name Name of the variable 
     160     @param mixed $value Value of the variable 
     161     */ 
     162     public function __set($name,$value) 
     163     { 
     164/* 
     165          # Overload protect 
     166          if ($value === null && isset($this->globals[$name])) { 
     167               unset($this->globals[$name]); 
     168          } 
     169          elseif (!isset($this->globals[$name])) { 
     170               throw new Exception('Modification of overloaded globals has no effect'); 
     171          } 
     172//*/ 
     173          $this->globals[$name] = $value; 
     174     } 
     175      
     176     /** 
     177     Get a global variable 
     178      
     179     @param string $name Name of the variable 
     180     @return mixed Value of the variable or null 
     181     */ 
     182     public function __get($name) 
     183     { 
     184          return isset($this->globals[$name]) ? $this->globals[$name] : null; 
     185     } 
     186      
     187     /** 
     188     Returns a list of filters to add to the existing list. 
     189      
     190     @return array An array of filters 
     191     */ 
     192     public function getFilters() 
     193     { 
     194          return array( 
     195               'trans' => new Twig_Filter_Function("__", array('is_safe' => array('html'))) 
     196          ); 
     197     } 
     198      
     199     /** 
     200     Returns a list of functions to add to the existing list. 
     201      
     202     @return array An array of functions 
     203     */ 
     204     public function getFunctions() 
     205     { 
     206          return array( 
     207               '__'           => new Twig_Function_Function("__", array('is_safe' => array('html'))), 
     208               'debug_info' => new Twig_Function_Method($this, 'getDebugInfo', array('is_safe' => array('html'))), 
     209               'memorize' => new Twig_Function_Method($this, 'setMemory', array('is_safe' => array('html'))), 
     210               'memorized' => new Twig_Function_Method($this, 'getMemory', array('is_safe' => array('html'))) 
     211          ); 
     212     } 
     213      
     214     /** 
     215     Returns a list of global variables to add to the existing list. 
     216      
     217     This merges overloaded variables with defined variables. 
     218      
     219     @return array An array of global variables 
     220     */ 
    43221     public function getGlobals() 
    44222     { 
     
    65243      
    66244     /** 
    67       * Fill the page title. 
    68       * 
    69       * $title can be:  
    70       * - a string for page title part or  
    71       * - TRUE to add blog name at the begining of title or 
    72       * - NULL to empty/reset title 
    73       * 
    74       * @param mixed $title A title part 
    75       * @param boolean $url Link of the title part 
    76       * @return object self 
    77       */ 
     245     Returns the name of the extension. 
     246      
     247     @return string The extension name 
     248     */ 
     249     public function getName() 
     250     { 
     251          return 'AdminContext'; 
     252     } 
     253      
     254      
     255     /** 
     256     Add an informational message 
     257      
     258     @param string $message A message 
     259     @return object self 
     260     */ 
     261     public function setSafeMode($safe_mode) 
     262     { 
     263          $this->protected_globals['safe_mode'] = (boolean) $safe_mode; 
     264          return $this; 
     265     } 
     266      
     267     /** 
     268     Add an informational message 
     269      
     270     @param string $message A message 
     271     @return object self 
     272     */ 
     273     public function addMessageStatic($message) 
     274     { 
     275          $this->protected_globals['messages']['static'][] = $message; 
     276          return $this; 
     277     } 
     278      
     279     /** 
     280     Add a list of informational messages 
     281      
     282     @param string $message A title 
     283     @param array $message A list of messages 
     284     @return object self 
     285     */ 
     286     public function addMessagesList($title,$messages) 
     287     { 
     288          $this->protected_globals['messages']['lists'][$title] = $messages; 
     289          return $this; 
     290     } 
     291      
     292     /** 
     293     Set an important message 
     294      
     295     @param string $message A message 
     296     @return object self 
     297     */ 
     298     public function setAlert($message) 
     299     { 
     300          $this->protected_globals['messages']['alert'] = $message; 
     301          return $this; 
     302     } 
     303      
     304     /** 
     305     Add an error message 
     306      
     307     @param string Error message 
     308     @return object self 
     309     */ 
     310     public function addError($error) 
     311     { 
     312          $this->protected_globals['messages']['errors'][] = $error; 
     313          return $this; 
     314     } 
     315      
     316     /** 
     317     Check if there is an error message 
     318      
     319     @return boolean 
     320     */ 
     321     public function hasError() 
     322     { 
     323          return !empty($this->protected_globals['messages']['errors']); 
     324     } 
     325      
     326     /** 
     327     Fill the page title 
     328      
     329     $title can be:  
     330     a string for page title part or  
     331     TRUE to add blog name at the begining of title or 
     332     NULL to empty/reset title 
     333      
     334     @param mixed $title A title part 
     335     @param boolean $url Link of the title part 
     336     @return object self 
     337     */ 
    78338     public function fillPageTitle($title,$url='') 
    79339     { 
     
    95355      
    96356     /** 
    97       * Check if a page title is set 
    98       */ 
     357     Check if a page title is set 
     358     */ 
    99359     public function hasPageTitle() 
    100360     { 
     
    103363      
    104364     /** 
    105       * Get list of blogs 
    106       */ 
     365     Get list of blogs 
     366     */ 
    107367     protected function getBlogs() 
    108368     { 
     
    116376               while ($rs_blogs->fetch()) { 
    117377                    $blogs[$rs_blogs->blog_id] = $rs_blogs->blog_name.' - '.$rs_blogs->blog_url; 
    118                     $this->protected_globals['blogs'][$rs_blogs->blog_id] = array( 
    119                          'id'      => $rs_blogs->blog_id, 
    120                          'name'    => $rs_blogs->blog_name, 
    121                          'desc'    => $rs_blogs->blog_desc, 
    122                          'url'     => $rs_blogs->blog_url, 
    123                          'creadt'  => $rs_blogs->blog_creadt, 
    124                          'upddt'   => $rs_blogs->blog_upddt 
    125                     ); 
     378                    $this->protected_globals['blogs'][$rs_blogs->blog_id] =  
     379                    new dcArrayProxy($rs_blogs, array( 
     380                         'blog_id','blog_name','blog_desc','blog_url','blog_creadt','blog_upddt')); 
    126381               } 
    127382          } 
     
    140395      
    141396     /** 
    142       * Get current blog information 
    143       */ 
     397     Get current blog information 
     398     */ 
    144399     protected function getCurrentBlog() 
    145400     { 
    146401          $this->protected_globals['current_blog'] = $this->core->auth->blog_count ? 
    147                array( 
    148                     'id'      => $this->core->blog->id, 
    149                     'name'    => $this->core->blog->name, 
    150                     'desc'    => $this->core->blog->desc, 
    151                     'url'     => $this->core->blog->url, 
    152                     'host'    => $this->core->blog->host, 
    153                     'creadt'  => $this->core->blog->creadt, 
    154                     'upddt'   => $this->core->blog->upddt 
    155                ) : array( 
     402               new dcProxy($this->core->blog,array( 
     403                    'id','name','desc','url','host','creadt','upddt' 
     404               )) : array( 
    156405                    'id'      => '', 
    157406                    'name'    => '', 
     
    165414      
    166415     /** 
    167       * Get current user information 
    168       */ 
     416     Get current user information 
     417     */ 
    169418     protected function getCurrentUser() 
    170419     { 
     
    214463      
    215464     /** 
    216       * Get sidebar menus 
    217       */ 
     465     Get sidebar menus 
     466     */ 
    218467     protected function getMenus() 
    219468     { 
     
    235484          } 
    236485     } 
     486      
     487     /** 
     488     Get an array of debug/dev infos 
     489     */ 
     490     public function getDebugInfo() 
     491     { 
     492          if (!DC_DEBUG) { 
     493               return array(); 
     494          } 
     495           
     496          $di = array( 
     497               'global_vars' => implode(', ',array_keys($GLOBALS)), 
     498               'memory' => array( 
     499                    'usage' => memory_get_usage(), 
     500                    'size' => files::size(memory_get_usage()) 
     501               ), 
     502               'xdebug' => array() 
     503          ); 
     504           
     505          if (function_exists('xdebug_get_profiler_filename')) { 
     506           
     507               $url = http::getSelfURI(); 
     508               $url .= strpos($url,'?') === false ? '?' : '&'; 
     509               $url .= 'XDEBUG_PROFILE'; 
     510                
     511               $di['xdebug'] = array( 
     512                    'elapse_time' => xdebug_time_index(), 
     513                    'profiler_file' => xdebug_get_profiler_filename(), 
     514                    'profiler_url' =>  $url 
     515               ); 
     516                
     517               /* xdebug configuration: 
     518               zend_extension = /.../xdebug.so 
     519               xdebug.auto_trace = On 
     520               xdebug.trace_format = 0 
     521               xdebug.trace_options = 1 
     522               xdebug.show_mem_delta = On 
     523               xdebug.profiler_enable = 0 
     524               xdebug.profiler_enable_trigger = 1 
     525               xdebug.profiler_output_dir = /tmp 
     526               xdebug.profiler_append = 0 
     527               xdebug.profiler_output_name = timestamp 
     528               */ 
     529          } 
     530           
     531          return $di; 
     532     } 
     533      
     534     /** 
     535     Add a value in a namespace memory 
     536      
     537     This help keep variable when recalling Twig macros 
     538      
     539     @param string $ns A namespace 
     540     @param string $str A value to memorize in this namespace 
     541     */ 
     542     public function setMemory($ns,$str) 
     543     { 
     544          if (!array_key_exists($ns,$this->memory) || !in_array($str,$this->memory[$ns])) { 
     545               $this->memory[$ns][] = $str; 
     546          } 
     547     } 
     548      
     549     /** 
     550     Check if a value is previously memorized in a namespace 
     551      
     552     @param string $ns A namespace 
     553     @param string $str A value to search in this namespace 
     554     @return array True if exists 
     555     */ 
     556     public function getMemory($ns,$str) 
     557     { 
     558          return array_key_exists($ns,$this->memory) && in_array($str,$this->memory[$ns]); 
     559     } 
    237560} 
    238561?> 
  • inc/admin/class.dc.form.php

    r1137 r1153  
    1313 
    1414/** 
    15  * Template form node 
    16  */ 
     15* dcFormNode 
     16* 
     17* @uses     Twig_Node 
     18* 
     19*/ 
    1720class dcFormNode extends Twig_Node 
    1821{ 
     
    3033     { 
    3134          $compiler 
    32                ->addDebugInfo($this) 
    33                ->write("\$context['dc_form']->beginForm('". 
    34                     $this->getAttribute('name')."');\n") 
     35               ->addDebugInfo($this); 
     36          $compiler 
     37               ->write("\$context['dc_form']->beginForm(") 
     38               ->subcompile($this->getAttribute('name')) 
     39               ->write(");\n"); 
     40          $compiler 
    3541               ->subcompile($this->getNode('body')) 
    3642               ->write("\$context['dc_form']->renderHiddenWidgets();\n") 
     
    4955          $lineno = $token->getLine(); 
    5056          $stream = $this->parser->getStream(); 
    51           $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); 
     57          $name = $this->parser->getExpressionParser()->parseExpression(); 
    5258          $stream->expect(Twig_Token::BLOCK_END_TYPE); 
    5359          $body = $this->parser->subparse(array($this,'decideBlockEnd'),true); 
     
    7783     protected $core; 
    7884     protected $twig; 
    79      protected $blocks; 
    8085     protected $forms; 
    8186     protected $currentForm; 
     87     protected $blocks; 
    8288      
    8389     public function __construct($core) 
    8490     { 
    8591          $this->core = $core; 
    86           $this->tpl = 'form_layout.html.twig'; 
     92          $this->tpl = array('@forms/form_layout.html.twig'); 
    8793          $this->forms = array(); 
     94          $this->blocks = array(); 
    8895          $this->currentForm = null; 
    8996     } 
     
    9299     { 
    93100          $this->twig = $environment; 
    94           $this->template = $this->twig->loadTemplate($this->tpl); 
    95           $this->blocks = $this->template->getBlocks(); 
    96      } 
    97       
     101          $this->twig->getLoader()->addPath(dirname(__FILE__).'/default-templates/forms','forms'); 
     102          foreach ($this->tpl as $tpl) { 
     103               $this->template = $this->twig->loadTemplate($tpl); 
     104               $this->blocks = array_merge($this->blocks,$this->template->getBlocks()); 
     105          } 
     106     } 
     107      
     108     public function addTemplate($tpl) { 
     109          $this->tpl[]=$tpl; 
     110          if (isset($this->twig)) { 
     111               $this->template = $this->twig->loadTemplate($tpl); 
     112               $this->blocks = array_merge($this->blocks,$this->template->getBlocks()); 
     113          } 
     114     } 
     115 
    98116     public function getGlobals() 
    99117     { 
     
    104122     { 
    105123          return array( 
    106                'form_field' => new Twig_Function_Method( 
    107                     $this, 
    108                     'renderWidget', 
     124               new Twig_SimpleFunction( 
     125                    'widget', 
     126                    array($this,'renderWidget'), 
    109127                    array('is_safe' => array('html')) 
    110128               ), 
    111                '_form_is_choice_group' => new Twig_Function_Method( 
    112                     $this, 
    113                     'isChoiceGroup', 
     129               new Twig_SimpleFunction( 
     130                    'haswidget', 
     131                    array($this,'hasWidget'), 
    114132                    array('is_safe' => array('html')) 
    115133               ), 
    116                '_form_is_choice_selected' => new Twig_Function_Method( 
    117                     $this, 
    118                     'isChoiceSelected', 
     134               new Twig_SimpleFunction( 
     135                    'form_field', 
     136                    array($this,'renderField'), 
     137                    array('is_safe' => array('html')) 
     138               ), 
     139               new Twig_SimpleFunction( 
     140                    '_form_is_choice_group', 
     141                    array($this,'isChoiceGroup'), 
     142                    array('is_safe' => array('html')) 
     143               ), 
     144               new Twig_SimpleFunction( 
     145                    '_form_is_choice_selected', 
     146                    array($this,'isChoiceSelected'), 
    119147                    array('is_safe' => array('html')) 
    120148               ) 
     
    137165     } 
    138166      
    139      public function renderWidget($name,$attributes=array()) 
     167     public function hasWidget($name) { 
     168          return isset($this->blocks[$name]); 
     169     } 
     170     public function renderWidget($name,$attr) { 
     171          if (!isset($this->blocks[$name])) 
     172               return ''; 
     173          echo $this->template->renderBlock( 
     174               $name, 
     175               $attr, 
     176               $this->blocks 
     177          ); 
     178     } 
     179 
     180     public function getCurrentForm() { 
     181          return $this->currentForm; 
     182     } 
     183 
     184     public function renderField($name,$attributes=array(),$extra=array()) 
    140185     { 
    141186          $field = $this->currentForm->$name; 
    142187          if ($field) { 
    143                echo $this->template->renderBlock( 
     188               $attr = $field->getAttributes($attributes); 
     189               if (isset($attr['attr'])) { 
     190                    $attr['attr'] = array_merge($attr['attr'],$attributes); 
     191               } else { 
     192                    $attr['attr'] = $attributes; 
     193               } 
     194               $this->renderWidget( 
    144195                    $field->getWidgetBlock(), 
    145196                    array_merge( 
    146                          $field->getAttributes(), 
    147                          array('attr' => $attributes) 
    148                     ), 
    149                     $this->blocks 
     197                         $attr, 
     198                         $extra 
     199                    ) 
    150200               ); 
    151201          } 
     
    155205     { 
    156206          foreach ($this->currentForm->getHiddenFields() as $h) { 
    157                $this->renderWidget($h->getName()); 
     207               $this->renderField($h->getName()); 
    158208          } 
    159209     } 
     
    197247 
    198248/** 
    199  * Template form 
    200  */ 
     249* dcForm - Template form 
     250* 
     251*/ 
    201252class dcForm 
    202253{ 
     
    211262     protected $errors; 
    212263      
    213      private function addNonce() 
     264     public function addTemplate($t) { 
     265          $this->core->tpl->getExtension('dc_form')->addTemplate($t); 
     266     } 
     267 
     268    /** 
     269     * addNonce -- adds dc nonce to form fields 
     270     *  
     271     * @access protected 
     272     * 
     273     * @return nothing 
     274     */ 
     275     protected function addNonce() 
    214276     { 
    215277          $this->addField( 
     
    219281     } 
    220282      
    221      protected function getNID($nid) 
     283 
     284    /** 
     285     * Defines Name & ID from field 
     286     *  
     287     * @param mixed $nid either an array (name, id) or a string (name only, id will be set to null). 
     288     * 
     289     * @access protected 
     290     * 
     291     * @return nothing. 
     292     */ 
     293     protected function setNID($nid) 
    222294     { 
    223295          if (is_array($nid)) { 
     
    231303     } 
    232304      
     305     public function getContext() { 
     306          return array(); 
     307     } 
     308 
     309    /** 
     310     * Class constructor 
     311     *  
     312     * @param mixed  $core   dotclear core 
     313     * @param mixed  $name   form name 
     314     * @param mixed  $action form action 
     315     * @param string $method form method ('GET' or 'POST') 
     316     * 
     317     * @access public 
     318     * 
     319     * @return mixed Value. 
     320     */ 
    233321     public function __construct($core,$name,$action,$method='POST') 
    234322     { 
    235323          $this->core = $core; 
    236           $this->getNID($name); 
     324          $this->setNID($name); 
    237325          $this->method = $method; 
    238326          $this->action = $action; 
     
    247335     } 
    248336      
     337 
     338    /** 
     339     * Returns form name 
     340     *  
     341     * @access public 
     342     * 
     343     * @return mixed Value. 
     344     */ 
    249345     public function getName() 
    250346     { 
     
    270366     } 
    271367      
     368     public function removeField(dcField $f) { 
     369          $n = $f->getName(); 
     370          if (isset($this->fields[$n])){ 
     371               unset($this->fields[$n]); 
     372          } 
     373 
     374     } 
     375     public function renameField($field,$newname) { 
     376          $oldname = $field->getName(); 
     377          if (isset($this->fields[$oldname])) { 
     378               unset($this->fields[$oldname]); 
     379               $field->setName($newname); 
     380               $this->fields[$newname] = $field; 
     381          } 
     382     } 
    272383     public function begin() 
    273384     { 
     
    292403     public function __get($name) 
    293404     { 
    294           return isset($this->fields[$name]) ?  
     405          return isset($this->fields[$name]) ? 
    295406               $this->fields[$name] : null; 
    296407     } 
    297       
     408 
    298409     public function __set($name,$value) 
    299410     { 
    300411          if (isset($this->fields[$name])) { 
    301                $this->fields[$name]->setAttribute('value',$value); 
    302           } 
    303      } 
    304       
     412               $this->fields[$name]->setValue($value); 
     413          } 
     414     } 
     415 
    305416     public function isSubmitted() 
    306417     { 
    307418          $from = $this->method == 'POST' ? $_POST : $_GET; 
    308           echo "form fields :\n"; 
    309      } 
    310       
    311      public function setup() 
    312      { 
     419     } 
     420 
     421     protected function setupFields() { 
    313422          $from = $this->method == 'POST' ? $_POST : $_GET; 
    314423          foreach ($this->fields as $f) { 
    315424               $f->setup($from); 
    316425          } 
     426     } 
     427 
     428     protected function handleActions($submitted) { 
     429          foreach ($submitted as $f) { 
     430               $action = $f->getAction(); 
     431               if ($action != NULL) { 
     432                    $ret = call_user_func($action,$this); 
     433               } 
     434          } 
     435     } 
     436 
     437     protected function getSubmittedFields() { 
     438          $s = array(); 
    317439          foreach ($this->submitfields as $f) { 
    318440               if ($f->isDefined()) { 
    319                     $ret = call_user_func($f->getAction(),$this); 
    320                     return; 
     441                    $s[$f->getName()] = $f; 
    321442               } 
    322443          } 
    323      } 
    324       
     444          return $s; 
     445     } 
     446 
     447     public function setup() 
     448     { 
     449          $this->setupFields(); 
     450          $submitted = $this->getSubmittedFields(); 
     451          $this->handleActions($submitted); 
     452     } 
     453 
    325454     public function check() 
    326455     { 
     
    344473 * Template form field 
    345474 */ 
    346 abstract class dcField 
    347 { 
    348      protected $attributes; 
     475abstract class dcField implements Countable 
     476{ 
     477     protected $options; 
    349478     protected $name; 
    350      protected $value; 
     479     protected $values; 
    351480     protected $id; 
     481     protected $multiple; 
    352482     protected $defined; 
    353483      
    354      protected function getNID($nid) 
     484     protected function setNID($nid) 
    355485     { 
    356486          if (is_array($nid)) { 
     
    363493     } 
    364494      
    365      public function __construct($name,$value,$attributes=array()) 
    366      { 
    367           $this->getNID($name); 
    368           $this->attributes = $attributes; 
    369           $this->value = $value; 
    370           $this->attributes['name'] = $this->name; 
    371           $this->attributes['id'] = $this->id; 
    372           $this->attributes['value'] = $this->value; 
     495     public function __construct($name,$values,$options=array()) 
     496     { 
     497          $this->setNID($name); 
     498          $this->options = new ArrayObject($options); 
     499          if ($values === NULL){ 
     500               $values = array(); 
     501          } 
     502          $this->setValues($values); 
    373503          $this->defined = false; 
    374      } 
    375       
     504          $this->multiple = (isset($options['multiple']) && $options['multiple']); 
     505 
     506     } 
     507      
     508     public function setValue($value,$offset=0) { 
     509          $this->values[$offset] = $value; 
     510     } 
     511 
     512     public function setValues($values) { 
     513          if (is_array($values)) { 
     514               $this->values = $values; 
     515          } elseif ($values !== NULL) { 
     516               $this->values = array($values); 
     517          } 
     518 
     519     } 
     520 
     521     public function getValues() { 
     522          return $this->values; 
     523     } 
     524 
     525     public function getValue($offset=0) { 
     526          if (isset($this->values[$offset])) { 
     527               return $this->values[$offset]; 
     528          } 
     529     } 
     530 
     531     public function addValue($value) { 
     532          $this->values[] = $value; 
     533     } 
     534     public function delValue($offset) { 
     535          if (isset($this->values[$offset])) { 
     536               array_splice($this->values,$offset,1); 
     537          } 
     538     } 
     539 
     540     public function count() { 
     541          return count($this->values); 
     542     } 
     543 
    376544     public function __toString() 
    377545     { 
    378           return (string) $this->value; 
     546          return join(',',$this->values); 
    379547     } 
    380548      
    381549     abstract public function getWidgetBlock(); 
    382550      
    383      public function setAttribute($name,$value) 
    384      { 
    385           $this->attributes[$name] = $value; 
    386      } 
    387       
    388      public function getAttributes() 
    389      { 
    390           return $this->attributes; 
    391      } 
    392       
     551     public function getAttributes($options) 
     552     { 
     553          $offset = isset($options['offset']) ? $options['offset'] : 0; 
     554 
     555          $attr = $this->options->getArrayCopy(); 
     556          if (isset($this->values[$offset])) { 
     557               $attr['value'] = $this->values[$offset]; 
     558          } else { 
     559               $attr['value'] = $this->getDefaultValue(); 
     560          } 
     561          if ($offset==0) { 
     562               $attr['id']=$this->id; 
     563          } 
     564          $attr['name'] = $this->name; 
     565          if ($this->multiple) { 
     566               $attr['name'] = $attr['name'].'[]'; 
     567          } 
     568          return $attr; 
     569     } 
     570      
     571     public function getDefaultValue() { 
     572          return ''; 
     573     } 
     574 
    393575     public function getName() 
    394576     { 
    395577          return $this->name; 
    396578     } 
    397       
     579 
     580     public function setName($name) { 
     581          $this->setNID($name); 
     582     } 
     583 
    398584     public function check() 
    399585     { 
    400           if (!$this->defined && $this->attributes['defined']) { 
     586          if (!$this->defined && $this->options['mandatory']) { 
    401587               throw new InvalidFieldException(sprintf( 
    402588                    'Field "%s" is mandatory', 
     
    406592     } 
    407593      
     594     public function parseValues($from) { 
     595          if (isset($from[$this->name])) { 
     596               $n = $from[$this->name]; 
     597               if (!is_array($n)) { 
     598                    $n = array($n); 
     599               } 
     600               return $n; 
     601          } 
     602          return array(); 
     603     } 
     604 
    408605     public function setup($from) 
    409606     { 
    410           if (isset($from[$this->id])) { 
    411                $this->value = $from[$this->id]; 
     607          $values = $this->parseValues($from); 
     608          if (count($values)) { 
     609               $this->setValues($values); 
    412610               $this->defined = true; 
    413611          } 
     
    420618} 
    421619 
     620 
    422621/** 
    423622 * Template form field of type "password" 
     
    473672          return "field_checkbox"; 
    474673     } 
     674 
     675     public function getDefaultValue() { 
     676          return 0; 
     677     } 
    475678} 
    476679 
     
    481684{ 
    482685     protected $action; 
    483       
    484      public function __construct($name,$value,$attributes=array()) 
    485      { 
    486           parent::__construct($name,$value,$attributes); 
    487            
    488           if (isset($attributes['action'])) { 
    489                $this->action = $attributes['action']; 
    490           } 
    491      } 
    492       
     686 
     687     public function __construct($name,$values,$options=array()) 
     688     { 
     689          parent::__construct($name,$values,$options); 
     690 
     691          if (isset($options['action'])) { 
     692               $this->action = $options['action']; 
     693          } else { 
     694               $this->action = NULL; 
     695          } 
     696     } 
     697 
    493698     public function getAction() 
    494699     { 
     
    513718class dcFieldCombo extends dcField 
    514719{ 
    515      protected $options; 
    516       
    517      public function __construct($name,$value,$options,$attributes=array()) 
    518      { 
    519           $this->options = $options; 
    520           parent::__construct($name,$value,$attributes); 
    521           $this->attributes['options']=$options; 
     720     protected $combo; 
     721      
     722     public function __construct($name,$value,$combo,$options=array()) 
     723     { 
     724          $this->combo = $combo; 
     725          parent::__construct($name,$value,$options); 
    522726     } 
    523727      
     
    527731     } 
    528732 
    529 } 
     733     public function getDefaultValue() { 
     734          return current($this->combo); 
     735     } 
     736 
     737     public function parseValues($from) { 
     738          $values = parent::parseValues($from); 
     739          if (!is_array($values)) { 
     740               $values = array($values); 
     741          } 
     742          foreach ($values as &$v) { 
     743               if (!isset($this->combo[$v])) 
     744               $v = $this->getDefaultValue(); 
     745          } 
     746          return $values; 
     747     } 
     748 
     749     public function getAttributes($options) { 
     750          $attr = parent::getAttributes($options); 
     751          $attr['options'] = $this->combo; 
     752          return $attr; 
     753     } 
     754} 
     755 
    530756?> 
  • inc/admin/default-templates/forms/form_layout.html.twig

    r1152 r1153  
    5757          <label for="{{name}}" class="classic"> 
    5858     {% endif %} 
    59     <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} /> 
     59    <input type="checkbox" {{ block('field_attr') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} /> 
    6060     {% if label is not empty %} 
    6161          {{ label }}</label> 
  • inc/core/class.dc.core.php

    r1128 r1153  
    9696          $this->addFormater('xhtml', create_function('$s','return $s;')); 
    9797          $this->addFormater('wiki', array($this,'wikiTransform')); 
    98            
    99           $this->tpl = new dcTemplate(DC_TPL_CACHE,'$core->tpl',$this); 
     98          $this->loadTemplateEnvironment(); 
    10099     } 
    101100      
     
    119118           
    120119          return new $c($this); 
     120     } 
     121      
     122     /** 
     123     Create template environment (Twig_Environment instance) 
     124      
     125     default-templates path must be added from admin|public/prepend.php with: 
     126     $core->tpl->getLoader()->addPath('PATH_TO/default-templates'); 
     127     Selected theme path must be added with: 
     128     $core->tpl->getLoader()->prependPath('PATH_TO/MY_THEME'); 
     129     */ 
     130     public function loadTemplateEnvironment() 
     131     { 
     132          $cache_dir = path::real(DC_TPL_CACHE.'/twtpl',false); 
     133          if (!is_dir($cache_dir)) { 
     134               try { 
     135                    files::makeDir($cache_dir); 
     136               } catch (Exception $e) { 
     137                    $cache_dir = false; 
     138               } 
     139          } 
     140           
     141          $this->tpl = new Twig_Environment( 
     142               new Twig_Loader_Filesystem(dirname(__FILE__).'/../swf'), 
     143               array( 
     144                    'auto_reload' => true, 
     145                    'autoescape' => false, 
     146                    'base_template_class' => 'Twig_Template', 
     147                    'cache' => $cache_dir,  
     148                    'charset' => 'UTF-8', 
     149                    'debug' => DC_DEBUG, 
     150                    'optimizations' => -1, 
     151                    'strict_variables' => 0 //DC_DEBUG // Please fix undefined variables! 
     152               ) 
     153          ); 
     154          $this->tpl->addExtension(new dcFormExtension($this)); 
     155          $this->tpl->addExtension(new dcTabExtension($this)); 
    121156     } 
    122157      
  • inc/prepend.php

    r1128 r1153  
    4646$__autoload['dcWorkspace']              = dirname(__FILE__).'/core/class.dc.workspace.php'; 
    4747$__autoload['dcPrefs']                  = dirname(__FILE__).'/core/class.dc.prefs.php'; 
    48 //$__autoload['dcTwigPage']             = dirname(__FILE__).'/core/class.dc.twig.page.php'; 
    49 $__autoload['dcTemplate']               = dirname(__FILE__).'/core/class.dc.template.php'; 
    50 $__autoload['dcContext']           = dirname(__FILE__).'/core/class.dc.context.php'; 
     48$__autoload['dcTwigPage']               = dirname(__FILE__).'/core/class.dc.twig.page.php'; 
    5149 
    5250$__autoload['rsExtPost']                = dirname(__FILE__).'/core/class.dc.rs.extensions.php'; 
     
    6462$__autoload['adminUserList']            = dirname(__FILE__).'/admin/lib.pager.php'; 
    6563 
    66 $__autoload['dcPublicContext']                    = dirname(__FILE__).'/public/class.dc.publiccontext.php'; 
    67 //$__autoload['dcTemplate']             = dirname(__FILE__).'/public/class.dc.template.php'; 
    68 //$__autoload['context']                = dirname(__FILE__).'/public/lib.tpl.context.php'; 
     64$__autoload['dcTemplate']               = dirname(__FILE__).'/public/class.dc.template.php'; 
     65$__autoload['context']                  = dirname(__FILE__).'/public/lib.tpl.context.php'; 
    6966$__autoload['dcUrlHandlers']            = dirname(__FILE__).'/public/lib.urlhandlers.php'; 
    7067$__autoload['dcForm']              = dirname(__FILE__).'/admin/class.dc.form.php'; 
    7168$__autoload['dcFormExtension']               = dirname(__FILE__).'/admin/class.dc.form.php'; 
    7269$__autoload['dcTabExtension']           = dirname(__FILE__).'/admin/class.dc.tab.php'; 
     70$__autoload['dcItemList']               = dirname(__FILE__).'/admin/class.dc.list.php'; 
     71 
     72foreach (array('dcFilterSet', 'dcFilter','dcFilterCombo','dcFilterText','dcFilterBoolean') as $c) { 
     73     $__autoload[$c] = dirname(__FILE__).'/admin/class.dc.filter.php'; 
     74} 
    7375 
    7476# Clearbricks extensions 
     
    7779 
    7880if (@is_dir('/usr/lib/twig')) { 
    79      define('TWIG_PATH','/usr/lib/twig'); 
    80 } elseif (is_dir(dirname(__FILE__).'/libs/twig')) { 
    81      define('TWIG_PATH',dirname(__FILE__).'/libs/twig'); 
     81     define('TWIG_PATH','/usr/lib/Twig'); 
     82} elseif (is_dir(dirname(__FILE__).'/libs/Twig')) { 
     83     define('TWIG_PATH',dirname(__FILE__).'/libs/Twig'); 
    8284} elseif (isset($_SERVER['TWIG_PATH']) && is_dir($_SERVER['TWIG_PATH'])) { 
    8385     define('TWIG_PATH',$_SERVER['TWIG_PATH']); 
     
    146148# Constants 
    147149define('DC_ROOT',path::real(dirname(__FILE__).'/..')); 
    148 define('DC_VERSION','2.5-RC'); 
     150define('DC_VERSION','2.5-dev'); 
    149151define('DC_DIGESTS',dirname(__FILE__).'/digests'); 
    150152define('DC_L10N_ROOT',dirname(__FILE__).'/../locales'); 
Note: See TracChangeset for help on using the changeset viewer.

Sites map