Dotclear


Ignore:
Timestamp:
09/28/13 10:04:12 (12 years ago)
Author:
Lepeltier kévin <kevin@…>
Branch:
widgets
Message:

widgets : correction suite a la reunion du 24

Location:
plugins/widgets
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • plugins/widgets/_default_widgets.php

    r1610 r2395  
    2222$__widgets->search->setting('homeonly',__('Display on:'),0,'combo', 
    2323     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    24 $__widgets->search->setting('content_only',__('Content only'),0,'check'); 
    25 $__widgets->search->setting('class',__('CSS class:'),''); 
     24$__widgets->search->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     25$__widgets->search->advanced_setting('class',__('CSS class:'),''); 
    2626 
    2727$__widgets->create('navigation',__('Navigation links'),array('defaultWidgets','navigation'),null,'List of navigation links'); 
     
    2929$__widgets->navigation->setting('homeonly',__('Display on:'),0,'combo', 
    3030     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    31 $__widgets->navigation->setting('content_only',__('Content only'),0,'check'); 
    32 $__widgets->navigation->setting('class',__('CSS class:'),''); 
     31$__widgets->navigation->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     32$__widgets->navigation->advanced_setting('class',__('CSS class:'),''); 
    3333 
    3434$__widgets->create('bestof',__('Selected entries'),array('defaultWidgets','bestof'),null,'List of selected entries'); 
     
    3737$__widgets->bestof->setting('homeonly',__('Display on:'),1,'combo', 
    3838     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    39 $__widgets->bestof->setting('content_only',__('Content only'),0,'check'); 
    40 $__widgets->bestof->setting('class',__('CSS class:'),''); 
     39$__widgets->bestof->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     40$__widgets->bestof->advanced_setting('class',__('CSS class:'),''); 
    4141 
    4242$__widgets->create('langs',__('Blog languages'),array('defaultWidgets','langs'),null,'List of available languages'); 
     
    4444$__widgets->langs->setting('homeonly',__('Display on:'),1,'combo', 
    4545     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    46 $__widgets->langs->setting('content_only',__('Content only'),0,'check'); 
    47 $__widgets->langs->setting('class',__('CSS class:'),''); 
     46$__widgets->langs->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     47$__widgets->langs->advanced_setting('class',__('CSS class:'),''); 
    4848 
    4949$__widgets->create('categories',__('Categories'),array('defaultWidgets','categories'),null,'List of categories'); 
     
    5353$__widgets->categories->setting('homeonly',__('Display on:'),0,'combo', 
    5454     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    55 $__widgets->categories->setting('content_only',__('Content only'),0,'check'); 
    56 $__widgets->categories->setting('class',__('CSS class:'),''); 
     55$__widgets->categories->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     56$__widgets->categories->advanced_setting('class',__('CSS class:'),''); 
    5757 
    5858$__widgets->create('subscribe',__('Subscribe links'),array('defaultWidgets','subscribe'),null,'RSS or Atom feed subscription links'); 
     
    6161$__widgets->subscribe->setting('homeonly',__('Display on:'),1,'combo', 
    6262     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    63 $__widgets->subscribe->setting('content_only',__('Content only'),0,'check'); 
    64 $__widgets->subscribe->setting('class',__('CSS class:'),''); 
     63$__widgets->subscribe->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     64$__widgets->subscribe->advanced_setting('class',__('CSS class:'),''); 
    6565 
    66 $__widgets->create('feed',__('Feed reader'),array('defaultWidgets','feed'),null,'Last entries from feed'); 
     66$__widgets->create('feed',__('Feed reader'),array('defaultWidgets','feed'),null,'Last entries from feed ( RSS or Atom )'); 
    6767$__widgets->feed->setting('title',__('Title:'),__('Somewhere else')); 
    6868$__widgets->feed->setting('url',__('Feed URL:'),''); 
     
    7070$__widgets->feed->setting('homeonly',__('Display on:'),1,'combo', 
    7171     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    72 $__widgets->feed->setting('content_only',__('Content only'),0,'check'); 
    73 $__widgets->feed->setting('class',__('CSS class:'),''); 
     72$__widgets->feed->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     73$__widgets->feed->advanced_setting('class',__('CSS class:'),''); 
    7474 
    7575$__widgets->create('text',__('Text'),array('defaultWidgets','text'),null,'Simple text'); 
     
    7878$__widgets->text->setting('homeonly',__('Display on:'),0,'combo', 
    7979     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    80 $__widgets->text->setting('content_only',__('Content only'),0,'check'); 
    81 $__widgets->text->setting('class',__('CSS class:'),''); 
     80$__widgets->text->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     81$__widgets->text->advanced_setting('class',__('CSS class:'),''); 
    8282 
    8383$__widgets->create('lastposts',__('Last entries'),array('defaultWidgets','lastposts'),null,'List of last entries published'); 
     
    9696$__widgets->lastposts->setting('homeonly',__('Display on:'),1,'combo', 
    9797     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    98 $__widgets->lastposts->setting('content_only',__('Content only'),0,'check'); 
    99 $__widgets->lastposts->setting('class',__('CSS class:'),''); 
     98$__widgets->lastposts->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     99$__widgets->lastposts->advanced_setting('class',__('CSS class:'),''); 
    100100 
    101101$__widgets->create('lastcomments',__('Last comments'),array('defaultWidgets','lastcomments'),null,'List of last comments posted'); 
     
    104104$__widgets->lastcomments->setting('homeonly',__('Display on:'),1,'combo', 
    105105     array(__('All pages') => 0, __('Home page only') => 1, __('Except on home page') => 2)); 
    106 $__widgets->lastcomments->setting('content_only',__('Content only'),0,'check'); 
    107 $__widgets->lastcomments->setting('class',__('CSS class:'),''); 
     106$__widgets->lastcomments->advanced_setting('content_only','',0,'radio', array(array(__('Content only'), '1'), array(__('Enclosing div'), '0'))); 
     107$__widgets->lastcomments->advanced_setting('class',__('CSS class:'),''); 
    108108 
    109109# --BEHAVIOR-- initWidgets 
  • plugins/widgets/class.widgets.php

    r1474 r2395  
    139139     public $append_callback = null; 
    140140     private $settings = array(); 
     141     private $advance_id; 
     142     private $advanced_settings = array(); 
    141143      
    142144     public function serialize($order) { 
     
    144146          foreach ($this->settings as $k=>$v) 
    145147               $values[$k]=$v['value']; 
     148          foreach ($this->advanced_settings as $k=>$v) 
     149               $values[$k]=$v['value']; 
    146150          $values['id']=$this->id; 
    147151          $values['order']=$order; 
     
    189193     public function __get($n) 
    190194     { 
     195          $setting = null; 
    191196          if (isset($this->settings[$n])) { 
    192                return $this->settings[$n]['value']; 
    193           } 
    194           return null; 
     197               $setting = $this->settings[$n]['value']; 
     198          } else if (isset($this->advanced_settings[$n])) { 
     199               $setting = $this->advanced_settings[$n]['value']; 
     200          } 
     201          return $setting; 
    195202     } 
    196203      
     
    199206          if (isset($this->settings[$n])) { 
    200207               $this->settings[$n]['value'] = $v; 
     208          } else if (isset($this->advanced_settings[$n])) { 
     209               $this->advanced_settings[$n]['value'] = $v; 
    201210          } 
    202211     } 
     
    222231     } 
    223232      
     233     public function advanced_setting($name,$title,$value,$type='text') 
     234     { 
     235          if ($type == 'combo' || $type == 'radio') { 
     236               $options = @func_get_arg(4); 
     237               if (!is_array($options)) { 
     238                    return false; 
     239               } 
     240          } 
     241           
     242          $this->advanced_settings[$name] = array( 
     243               'title' => $title, 
     244               'type' => $type, 
     245               'value' => $value 
     246          ); 
     247           
     248          if (isset($options)) { 
     249               $this->advanced_settings[$name]['options'] = $options; 
     250          } 
     251     } 
     252      
     253     public function advance_settings() 
     254     { 
     255          return $this->advanced_settings; 
     256     } 
     257      
    224258     public function settings() 
    225259     { 
     
    232266          foreach ($this->settings as $id => $s) 
    233267          { 
    234                $wfid = "wf-".$i; 
    235                $iname = $pr ? $pr.'['.$id.']' : $id; 
    236                switch ($s['type']) 
     268               $res .= $this->formSetting($id,$s,$pr,$i=0); 
     269               $i++; 
     270          } 
     271           
     272          if ( count($this->advanced_settings) > 0 ) 
     273          { 
     274               $res .= '<div class="widgetAdvancedSettings">'; 
     275               $res .= '<h5>'.__('Réglages avancés').'</h5>'; 
     276           
     277               foreach ($this->advanced_settings as $id => $s) 
    237278               { 
    238                     case 'text': 
    239                          $res .= 
    240                          '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
    241                          form::field(array($iname,$wfid),20,255,html::escapeHTML($s['value']),'maximal'). 
    242                          '</p>'; 
    243                          break; 
    244                     case 'textarea': 
    245                          $res .= 
    246                          '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
    247                          form::textarea(array($iname,$wfid),30,5,html::escapeHTML($s['value']),'maximal'). 
    248                          '</p>'; 
    249                          break; 
    250                     case 'check': 
    251                          $res .= 
    252                          '<p>'.form::hidden(array($iname),'0'). 
    253                          '<label class="classic" for="'.$wfid.'">'. 
    254                          form::checkbox(array($iname,$wfid),'1',$s['value']).' '.$s['title']. 
    255                          '</label></p>'; 
    256                          break; 
    257                     case 'combo': 
    258                          $res .= 
    259                          '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
    260                          form::combo(array($iname,$wfid),$s['options'],$s['value']). 
    261                          '</p>'; 
    262                          break; 
    263                } 
    264                $i++; 
     279                    $res .= $this->formSetting($id,$s,$pr,$i); 
     280                    $i++; 
     281               } 
     282                
     283               $res .= '</div>'; 
     284          } 
     285           
     286          return $res; 
     287     } 
     288      
     289     public function formSetting($id,$s,$pr='',&$i=0) 
     290     { 
     291          $res = ''; 
     292          $wfid = "wf-".$i; 
     293          $iname = $pr ? $pr.'['.$id.']' : $id; 
     294          switch ($s['type']) 
     295          { 
     296               case 'text': 
     297                    $res .= 
     298                    '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
     299                    form::field(array($iname,$wfid),20,255,html::escapeHTML($s['value']),'maximal'). 
     300                    '</p>'; 
     301                    break; 
     302               case 'textarea': 
     303                    $res .= 
     304                    '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
     305                    form::textarea(array($iname,$wfid),30,5,html::escapeHTML($s['value']),'maximal'). 
     306                    '</p>'; 
     307                    break; 
     308               case 'check': 
     309                    $res .= 
     310                    '<p>'.form::hidden(array($iname),'0'). 
     311                    '<label class="classic" for="'.$wfid.'">'. 
     312                    form::checkbox(array($iname,$wfid),'1',$s['value']).' '.$s['title']. 
     313                    '</label></p>'; 
     314                    break; 
     315               case 'radio': 
     316                    $res .= '<p>'.($s['title'] ? '<label class="classic">'.$s['title'].'</label><br/>' : ''); 
     317                    if(!empty($s['options'])) { 
     318                         foreach ($s['options'] as $k => $v) { 
     319                              $res .= $k > 0 ? '<br/>' : ''; 
     320                              $res .= 
     321                              '<label class="classic" for="'.$wfid.'-'.$k.'">'. 
     322                              form::radio(array($iname,$wfid.'-'.$k),$v[1],$s['value'] == $v[1]).' '.$v[0]. 
     323                              '</label>'; 
     324                         } 
     325                    } 
     326                    $res .= '</p>'; 
     327                    break; 
     328               case 'combo': 
     329                    $res .= 
     330                    '<p><label for="'.$wfid.'">'.$s['title'].'</label> '. 
     331                    form::combo(array($iname,$wfid),$s['options'],$s['value']). 
     332                    '</p>'; 
     333                    break; 
    265334          } 
    266335           
  • plugins/widgets/dragdrop.js

    r1766 r2395  
    2727          handle: ".widget-name", 
    2828          placeholder: "ui-sortable-placeholder", 
    29           items: "li:not(.sortable-delete-placeholder)", 
     29          items: "li:not(.sortable-delete-placeholder,.empty-widgets)", 
    3030          connectWith: ".connected, .sortable-delete", 
    3131          start: function( event, ui ) { 
     
    4343                
    4444               // signale les zones vides 
    45                if( ul.find('li').length == 0 ) 
    46                      field.find('.empty-widgets').show(); 
    47                else field.find('.empty-widgets').hide(); 
     45               if( ul.find('li:not(.empty-widgets)').length == 0 ) { 
     46                    ul.find('li.empty-widgets').show(); 
     47                    field.find('ul.sortable-delete').hide(); 
     48               } else { 
     49                    ul.find('li.empty-widgets').hide(); 
     50                    field.find('ul.sortable-delete').show(); 
     51               } 
    4852                
    4953               // remove 
     
    9599          } 
    96100     }); 
    97      $("li.ui-draggable, ul.ui-sortable li").css({'cursor':'move'}); 
     101      
     102     $("li.ui-draggable, ul.ui-sortable li") 
     103          .not('ul.sortable-delete li, li.empty-widgets') 
     104          .css({'cursor':'move'}); 
    98105}); 
  • plugins/widgets/index.php

    r1993 r2395  
    1313 
    1414include dirname(__FILE__).'/_default_widgets.php'; 
    15  
    16 # Loading navigation, extra widgets and custom widgets 
    17 $widgets_nav = null; 
    18 if ($core->blog->settings->widgets->widgets_nav) { 
    19      $widgets_nav = dcWidgets::load($core->blog->settings->widgets->widgets_nav); 
    20 } 
    21 $widgets_extra = null; 
    22 if ($core->blog->settings->widgets->widgets_extra) { 
    23      $widgets_extra = dcWidgets::load($core->blog->settings->widgets->widgets_extra); 
    24 } 
    25 $widgets_custom = null; 
    26 if ($core->blog->settings->widgets->widgets_custom) { 
    27      $widgets_custom = dcWidgets::load($core->blog->settings->widgets->widgets_custom); 
    28 } 
    29  
    30 $append_combo = array( 
    31      '-' => 0, 
    32      __('navigation') => 'nav', 
    33      __('extra') => 'extra', 
    34      __('custom') => 'custom' 
    35 ); 
    36  
    37 function literalNullString($v) 
    38 { 
    39      if ($v == '') { 
    40           return '&lt;'.__('empty string').'&gt;'; 
    41      } 
    42      return $v; 
    43 } 
    44  
    45 # Adding widgets to sidebars 
    46 if (!empty($_POST['append']) && is_array($_POST['addw'])) 
    47 { 
    48      # Filter selection 
    49      $addw = array(); 
    50      foreach ($_POST['addw'] as $k => $v) { 
    51           if (($v == 'extra' || $v == 'nav' || $v == 'custom') && $__widgets->{$k} !== null ) { 
    52                $addw[$k] = $v; 
    53           } 
    54      } 
    55       
    56      # Append widgets 
    57      if (!empty($addw)) 
    58      { 
    59           if (!($widgets_nav instanceof dcWidgets)) { 
    60                $widgets_nav = new dcWidgets; 
    61           } 
    62           if (!($widgets_extra instanceof dcWidgets)) { 
    63                $widgets_extra = new dcWidgets(); 
    64           } 
    65           if (!($widgets_custom instanceof dcWidgets)) { 
    66                $widgets_custom = new dcWidgets(); 
    67           } 
    68            
    69           foreach ($addw as $k => $v) 
    70           { 
    71                switch ($v) { 
    72                     case 'nav': 
    73                          $widgets_nav->append($__widgets->{$k}); 
    74                          break; 
    75                     case 'extra': 
    76                          $widgets_extra->append($__widgets->{$k}); 
    77                          break; 
    78                     case 'custom': 
    79                          $widgets_custom->append($__widgets->{$k}); 
    80                          break; 
    81                } 
    82           } 
    83            
    84           try { 
    85                $core->blog->settings->addNamespace('widgets'); 
    86                $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); 
    87                $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); 
    88                $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); 
    89                $core->blog->triggerBlog(); 
    90                http::redirect($p_url); 
    91           } catch (Exception $e) { 
    92                $core->error->add($e->getMessage()); 
    93           } 
    94      } 
    95 } 
    96  
    97 # Update sidebars 
    98 if (!empty($_POST['wup'])) 
    99 { 
    100      if (!isset($_POST['w']) || !is_array($_POST['w'])) { 
    101           $_POST['w'] = array(); 
    102      } 
    103       
    104      try 
    105      { 
    106           # Removing mark as _rem widgets 
    107           foreach ($_POST['w'] as $nsid => $nsw) { 
    108                foreach ($nsw as $i => $v) { 
    109                     if (!empty($v['_rem'])) { 
    110                          unset($_POST['w'][$nsid][$i]); 
    111                          continue; 
    112                     } 
    113                } 
    114           } 
    115            
    116           if (!isset($_POST['w']['nav'])) { 
    117                $_POST['w']['nav'] = array(); 
    118           } 
    119           if (!isset($_POST['w']['extra'])) { 
    120                $_POST['w']['extra'] = array(); 
    121           } 
    122           if (!isset($_POST['w']['custom'])) { 
    123                $_POST['w']['custom'] = array(); 
    124           } 
    125            
    126           $widgets_nav = dcWidgets::loadArray($_POST['w']['nav'],$__widgets); 
    127           $widgets_extra = dcWidgets::loadArray($_POST['w']['extra'],$__widgets); 
    128           $widgets_custom = dcWidgets::loadArray($_POST['w']['custom'],$__widgets); 
    129            
    130           $core->blog->settings->addNamespace('widgets'); 
    131           $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); 
    132           $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); 
    133           $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); 
    134           $core->blog->triggerBlog(); 
    135            
    136           http::redirect($p_url); 
    137      } 
    138      catch (Exception $e) 
    139      { 
    140           $core->error->add($e->getMessage()); 
    141      } 
    142 } 
    143 elseif (!empty($_POST['wreset'])) 
    144 { 
    145      try 
    146      { 
    147           $core->blog->settings->addNamespace('widgets'); 
    148           $core->blog->settings->widgets->put('widgets_nav',''); 
    149           $core->blog->settings->widgets->put('widgets_extra',''); 
    150           $core->blog->settings->widgets->put('widgets_custom',''); 
    151           $core->blog->triggerBlog(); 
    152            
    153           http::redirect($p_url); 
    154      } 
    155      catch (Exception $e) 
    156      { 
    157           $core->error->add($e->getMessage()); 
    158      } 
    159 } 
    16015?> 
    16116<html> 
     
    18742<body> 
    18843<?php 
     44# Loading navigation, extra widgets and custom widgets 
     45$widgets_nav = null; 
     46if ($core->blog->settings->widgets->widgets_nav) { 
     47     $widgets_nav = dcWidgets::load($core->blog->settings->widgets->widgets_nav); 
     48} 
     49$widgets_extra = null; 
     50if ($core->blog->settings->widgets->widgets_extra) { 
     51     $widgets_extra = dcWidgets::load($core->blog->settings->widgets->widgets_extra); 
     52} 
     53$widgets_custom = null; 
     54if ($core->blog->settings->widgets->widgets_custom) { 
     55     $widgets_custom = dcWidgets::load($core->blog->settings->widgets->widgets_custom); 
     56} 
     57 
     58$append_combo = array( 
     59     '-' => 0, 
     60     __('navigation') => 'nav', 
     61     __('extra') => 'extra', 
     62     __('custom') => 'custom' 
     63); 
     64 
     65function literalNullString($v) 
     66{ 
     67     if ($v == '') { 
     68          return '&lt;'.__('empty string').'&gt;'; 
     69     } 
     70     return $v; 
     71} 
     72 
     73# Adding widgets to sidebars 
     74if (!empty($_POST['append']) && is_array($_POST['addw'])) 
     75{ 
     76     # Filter selection 
     77     $addw = array(); 
     78     foreach ($_POST['addw'] as $k => $v) { 
     79          if (($v == 'extra' || $v == 'nav' || $v == 'custom') && $__widgets->{$k} !== null ) { 
     80               $addw[$k] = $v; 
     81          } 
     82     } 
     83           
     84     # Append 1 widget 
     85     $wid = false; 
     86     if( gettype($_POST['append']) == 'array' && count($_POST['append']) == 1 ) { 
     87          $wid = array_keys($_POST['append']); 
     88          $wid = $wid[0]; 
     89     } 
     90      
     91     # Append widgets 
     92     if (!empty($addw)) 
     93     { 
     94          if (!($widgets_nav instanceof dcWidgets)) { 
     95               $widgets_nav = new dcWidgets; 
     96          } 
     97          if (!($widgets_extra instanceof dcWidgets)) { 
     98               $widgets_extra = new dcWidgets(); 
     99          } 
     100          if (!($widgets_custom instanceof dcWidgets)) { 
     101               $widgets_custom = new dcWidgets(); 
     102          } 
     103           
     104          foreach ($addw as $k => $v) 
     105          { 
     106               if( !$wid || $wid == $k ) 
     107               { 
     108                    switch ($v) { 
     109                         case 'nav': 
     110                              $widgets_nav->append($__widgets->{$k}); 
     111                              break; 
     112                         case 'extra': 
     113                              $widgets_extra->append($__widgets->{$k}); 
     114                              break; 
     115                         case 'custom': 
     116                              $widgets_custom->append($__widgets->{$k}); 
     117                              break; 
     118                    } 
     119               } 
     120                
     121          } 
     122           
     123          try { 
     124               $core->blog->settings->addNamespace('widgets'); 
     125               $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); 
     126               $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); 
     127               $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); 
     128               $core->blog->triggerBlog(); 
     129               http::redirect($p_url); 
     130          } catch (Exception $e) { 
     131               $core->error->add($e->getMessage()); 
     132          } 
     133     } 
     134} 
     135 
     136# Update sidebars 
     137if (!empty($_POST['wup'])) 
     138{ 
     139     if (!isset($_POST['w']) || !is_array($_POST['w'])) { 
     140          $_POST['w'] = array(); 
     141     } 
     142      
     143     try 
     144     { 
     145          # Removing mark as _rem widgets 
     146          foreach ($_POST['w'] as $nsid => $nsw) { 
     147               foreach ($nsw as $i => $v) { 
     148                    if (!empty($v['_rem'])) { 
     149                         unset($_POST['w'][$nsid][$i]); 
     150                         continue; 
     151                    } 
     152               } 
     153          } 
     154           
     155          if (!isset($_POST['w']['nav'])) { 
     156               $_POST['w']['nav'] = array(); 
     157          } 
     158          if (!isset($_POST['w']['extra'])) { 
     159               $_POST['w']['extra'] = array(); 
     160          } 
     161          if (!isset($_POST['w']['custom'])) { 
     162               $_POST['w']['custom'] = array(); 
     163          } 
     164           
     165          $widgets_nav = dcWidgets::loadArray($_POST['w']['nav'],$__widgets); 
     166          $widgets_extra = dcWidgets::loadArray($_POST['w']['extra'],$__widgets); 
     167          $widgets_custom = dcWidgets::loadArray($_POST['w']['custom'],$__widgets); 
     168           
     169          $core->blog->settings->addNamespace('widgets'); 
     170          $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); 
     171          $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); 
     172          $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); 
     173          $core->blog->triggerBlog(); 
     174           
     175          http::redirect($p_url); 
     176     } 
     177     catch (Exception $e) 
     178     { 
     179          $core->error->add($e->getMessage()); 
     180     } 
     181} 
     182elseif (!empty($_POST['wreset'])) 
     183{ 
     184     try 
     185     { 
     186          $core->blog->settings->addNamespace('widgets'); 
     187          $core->blog->settings->widgets->put('widgets_nav',''); 
     188          $core->blog->settings->widgets->put('widgets_extra',''); 
     189          $core->blog->settings->widgets->put('widgets_custom',''); 
     190          $core->blog->triggerBlog(); 
     191           
     192          http::redirect($p_url); 
     193     } 
     194     catch (Exception $e) 
     195     { 
     196          $core->error->add($e->getMessage()); 
     197     } 
     198} 
     199/*?> 
     200<html> 
     201<head> 
     202  <title><?php echo __('Widgets'); ?></title> 
     203  <style type="text/css"> 
     204  <?php echo file_get_contents(dirname(__FILE__).'/style.css'); ?> 
     205  </style> 
     206  <?php 
     207          echo 
     208               dcPage::jsLoad('js/jquery/jquery-ui.custom.js'). 
     209               dcPage::jsLoad('index.php?pf=widgets/widgets.js'); 
     210  ?> 
     211  <?php  
     212     $core->auth->user_prefs->addWorkspace('accessibility');  
     213     $user_dm_nodragdrop = $core->auth->user_prefs->accessibility->nodragdrop; 
     214  ?> 
     215  <?php if (!$user_dm_nodragdrop) : ?> 
     216  <script type="text/javascript" src="index.php?pf=widgets/dragdrop.js"></script> 
     217  <?php endif; ?> 
     218  <script type="text/javascript"> 
     219  //<![CDATA[ 
     220  <?php echo dcPage::jsVar('dotclear.msg.confirm_widgets_reset', 
     221     __('Are you sure you want to reset sidebars?')); ?> 
     222  //]]> 
     223  </script> 
     224  <?php echo(dcPage::jsConfirmClose('sidebarsWidgets')); ?> 
     225</head> 
     226<body> 
     227<?php*/ 
    189228echo dcPage::breadcrumb( 
    190229     array( 
     
    197236'<form id="listWidgets" action="'.$p_url.'" method="post"  class="widgets">'. 
    198237'<h3>'.__('Available widgets').'</h3>'. 
    199 '<p>'.__('Move widgets from this list to one of the sidebars.').'</p>'. 
     238'<p>'.__('Drag widgets from this list to one of the sidebars, for add.').'</p>'. 
    200239'<ul id="widgets-ref">'; 
    201240 
     
    207246     ($w->desc() != '' ? ' <span class="form-note">'.__($w->desc()).'</span>' : '').'</p>'. 
    208247     '<p class="manual-move remove-if-drag"><label class="classic">'.__('Append to:').'</label> '. 
    209      form::combo(array('addw['.$w->id().']'),$append_combo).'</p>'. 
     248     form::combo(array('addw['.$w->id().']'),$append_combo). 
     249     '<input type="submit" name="append['.$w->id().']" value="'.__('Add').'" /></p>'. 
    210250     '<div class="widgetSettings hidden-if-drag">'.$w->formSettings('w[void][0]',$j).'</div>'. 
    211251     '</li>'; 
     
    322362     } 
    323363      
    324      $res .= '<p class="empty-widgets" '.(!$widgets->isEmpty() ? 'style="display: none;"' : '').'>'.__('No widget.').'</p>'; 
    325       
    326364     $res .= '<ul id="'.$id.'" class="connected">'; 
     365      
     366     $res .= '<li class="empty-widgets" '.(!$widgets->isEmpty() ? 'style="display: none;"' : '').'>'.__('No widget for now.').'</li>'; 
    327367      
    328368     $i = 0; 
     
    346386      
    347387     $res .= '</ul>'; 
    348  
    349      if ($i > 0) { 
    350           $res .= '<ul class="sortable-delete"><li class="sortable-delete-placeholder">'. 
    351                __('Drag widgets here to remove them from this sidebar.').'</li></ul>'; 
    352      } 
     388      
     389     $res .= '<ul class="sortable-delete"'.($i > 0 ? '':' style="display: none;"').'><li class="sortable-delete-placeholder">'. 
     390               __('Drag widgets here to remove.').'</li></ul>'; 
    353391      
    354392     return $res; 
  • plugins/widgets/style.css

    r1669 r2395  
    3838     margin-bottom: 1em; 
    3939     list-style: none; 
     40} 
     41#dndnav > li.empty-widgets, 
     42#dndextra > li.empty-widgets, 
     43#dndcustom > li.empty-widgets { 
     44     border: 0; 
    4045} 
    4146#dndnav > li.ui-sortable-placeholder, 
Note: See TracChangeset for help on using the changeset viewer.

Sites map