Dotclear

Changeset 13:c7a0f4cc3aab


Ignore:
Timestamp:
04/27/11 11:15:56 (14 years ago)
Author:
franckpaul
Branch:
userprefs
Children:
14:123684795ed0, 15:85c31814ef71
Message:

Mise en place des options d'affichage des modules du dashboard
Fix de la gestion des préférences utilisateur (onglets User profile et User options)

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • admin/index.php

    r3 r13  
    4343$plugins_install = $core->plugins->installModules(); 
    4444 
     45# Check dashboard module prefs 
     46$core->auth->user_prefs->addWorkspace('dashboard'); 
     47if (!$core->auth->user_prefs->dashboard->prefExists('doclinks')) { 
     48     if (!$core->auth->user_prefs->dashboard->prefExists('doclinks',true)) { 
     49          $core->auth->user_prefs->dashboard->put('doclinks',true,'boolean','',null,true); 
     50     } 
     51     $core->auth->user_prefs->dashboard->put('doclinks',true,'boolean'); 
     52} 
     53if (!$core->auth->user_prefs->dashboard->prefExists('dcnews')) { 
     54     if (!$core->auth->user_prefs->dashboard->prefExists('dcnews',true)) { 
     55          $core->auth->user_prefs->dashboard->put('dcnews',true,'boolean','',null,true); 
     56     } 
     57     $core->auth->user_prefs->dashboard->put('dcnews',true,'boolean'); 
     58} 
     59if (!$core->auth->user_prefs->dashboard->prefExists('quickentry')) { 
     60     if (!$core->auth->user_prefs->dashboard->prefExists('quickentry',true)) { 
     61          $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true); 
     62     } 
     63     $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean'); 
     64} 
     65 
    4566# Dashboard icons 
    4667$__dashboard_icons = new ArrayObject(); 
     
    91112 
    92113# Documentation links 
    93 if (!empty($__resources['doc'])) 
    94 { 
    95      $doc_links = '<h3>'.__('Documentation').'</h3><ul>'; 
    96       
    97      foreach ($__resources['doc'] as $k => $v) { 
    98           $doc_links .= '<li><a href="'.$v.'">'.$k.'</a></li>'; 
    99      } 
    100       
    101      $doc_links .= '</ul>'; 
    102      $__dashboard_items[0][] = $doc_links; 
    103 } 
    104  
    105 try 
    106 { 
    107      if (empty($__resources['rss_news'])) { 
    108           throw new Exception(); 
    109      } 
    110       
    111      $feed_reader = new feedReader; 
    112      $feed_reader->setCacheDir(DC_TPL_CACHE); 
    113      $feed_reader->setTimeout(2); 
    114      $feed_reader->setUserAgent('Dotclear - http://www.dotclear.org/'); 
    115      $feed = $feed_reader->parse($__resources['rss_news']); 
    116      if ($feed) 
     114$dashboardItem = 0; 
     115if ($core->auth->user_prefs->dashboard->doclinks) { 
     116     if (!empty($__resources['doc'])) 
    117117     { 
    118           $latest_news = '<h3>'.__('Latest news').'</h3><dl id="news">'; 
    119           $i = 1; 
    120           foreach ($feed->items as $item) 
     118          $doc_links = '<h3>'.__('Documentation').'</h3><ul>'; 
     119      
     120          foreach ($__resources['doc'] as $k => $v) { 
     121               $doc_links .= '<li><a href="'.$v.'">'.$k.'</a></li>'; 
     122          } 
     123      
     124          $doc_links .= '</ul>'; 
     125          $__dashboard_items[$dashboardItem][] = $doc_links; 
     126          $dashboardItem++; 
     127     } 
     128} 
     129 
     130if ($core->auth->user_prefs->dashboard->dcnews) { 
     131     try 
     132     { 
     133          if (empty($__resources['rss_news'])) { 
     134               throw new Exception(); 
     135          } 
     136      
     137          $feed_reader = new feedReader; 
     138          $feed_reader->setCacheDir(DC_TPL_CACHE); 
     139          $feed_reader->setTimeout(2); 
     140          $feed_reader->setUserAgent('Dotclear - http://www.dotclear.org/'); 
     141          $feed = $feed_reader->parse($__resources['rss_news']); 
     142          if ($feed) 
    121143          { 
    122                $dt = isset($item->link) ? '<a href="'.$item->link.'">'.$item->title.'</a>' : $item->title; 
     144               $latest_news = '<h3>'.__('Latest news').'</h3><dl id="news">'; 
     145               $i = 1; 
     146               foreach ($feed->items as $item) 
     147               { 
     148                    $dt = isset($item->link) ? '<a href="'.$item->link.'">'.$item->title.'</a>' : $item->title; 
    123149                
    124                if ($i < 3) { 
    125                     $latest_news .= 
    126                     '<dt>'.$dt.'</dt>'. 
    127                     '<dd><p><strong>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</strong>: '. 
    128                     '<em>'.text::cutString(html::clean($item->content),120).'...</em></p></dd>'; 
    129                } else { 
    130                     $latest_news .= 
    131                     '<dt>'.$dt.'</dt>'. 
    132                     '<dd>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</dd>'; 
     150                    if ($i < 3) { 
     151                         $latest_news .= 
     152                         '<dt>'.$dt.'</dt>'. 
     153                         '<dd><p><strong>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</strong>: '. 
     154                         '<em>'.text::cutString(html::clean($item->content),120).'...</em></p></dd>'; 
     155                    } else { 
     156                         $latest_news .= 
     157                         '<dt>'.$dt.'</dt>'. 
     158                         '<dd>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</dd>'; 
     159                    } 
     160                    $i++; 
     161                    if ($i > 3) { break; } 
    133162               } 
    134                $i++; 
    135                if ($i > 3) { break; } 
    136           } 
    137           $latest_news .= '</dl>'; 
    138           $__dashboard_items[1][] = $latest_news; 
    139      } 
    140 } 
    141 catch (Exception $e) {} 
     163               $latest_news .= '</dl>'; 
     164               $__dashboard_items[$dashboardItem][] = $latest_news; 
     165               $dashboardItem++; 
     166          } 
     167     } 
     168     catch (Exception $e) {} 
     169} 
    142170 
    143171$core->callBehavior('adminDashboardItems', $core, $__dashboard_items); 
     
    202230echo '</div>'; 
    203231 
    204 if ($core->auth->check('usage,contentadmin',$core->blog->id)) 
    205 { 
    206      $categories_combo = array('&nbsp;' => ''); 
    207      try { 
    208           $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    209           while ($categories->fetch()) { 
    210                $categories_combo[] = new formSelectOption( 
    211                     str_repeat('&nbsp;&nbsp;',$categories->level-1).'&bull; '.html::escapeHTML($categories->cat_title), 
    212                     $categories->cat_id 
    213                ); 
    214           } 
    215      } catch (Exception $e) { } 
    216       
    217      echo 
    218      '<div id="quick">'. 
    219      '<h3>'.__('Quick entry').'</h3>'. 
    220      '<form id="quick-entry" action="post.php" method="post">'. 
    221      '<fieldset>'. 
    222      '<p class="col"><label class="required" title="'.__('Required field').'">'.__('Title:'). 
    223      form::field('post_title',20,255,'','maximal',2). 
    224      '</label></p>'. 
    225      '<p class="area"><label class="required" title="'.__('Required field').'" '. 
    226      'for="post_content">'.__('Content:').'</label> '. 
    227      form::textarea('post_content',50,7,'','',2). 
    228      '</p>'. 
    229      '<p><label class="classic">'.__('Category:').' '. 
    230      form::combo('cat_id',$categories_combo,'','',2).'</label></p>'. 
    231      '<p><input type="submit" value="'.__('save').'" name="save" tabindex="3" /> '. 
    232      ($core->auth->check('publish',$core->blog->id) 
    233           ? '<input type="hidden" value="'.__('save and publish').'" name="save-publish" />' 
    234           : ''). 
    235      $core->formNonce(). 
    236      form::hidden('post_status',-2). 
    237      form::hidden('post_format',$core->auth->getOption('post_format')). 
    238      form::hidden('post_excerpt',''). 
    239      form::hidden('post_lang',$core->auth->getInfo('user_lang')). 
    240      form::hidden('post_notes',''). 
    241      '</p>'. 
    242      '</fieldset>'. 
    243      '</form>'. 
    244      '</div>'; 
     232if ($core->auth->user_prefs->dashboard->quickentry) { 
     233     if ($core->auth->check('usage,contentadmin',$core->blog->id)) 
     234     { 
     235          $categories_combo = array('&nbsp;' => ''); 
     236          try { 
     237               $categories = $core->blog->getCategories(array('post_type'=>'post')); 
     238               while ($categories->fetch()) { 
     239                    $categories_combo[] = new formSelectOption( 
     240                         str_repeat('&nbsp;&nbsp;',$categories->level-1).'&bull; '.html::escapeHTML($categories->cat_title), 
     241                         $categories->cat_id 
     242                    ); 
     243               } 
     244          } catch (Exception $e) { } 
     245      
     246          echo 
     247          '<div id="quick">'. 
     248          '<h3>'.__('Quick entry').'</h3>'. 
     249          '<form id="quick-entry" action="post.php" method="post">'. 
     250          '<fieldset>'. 
     251          '<p class="col"><label class="required" title="'.__('Required field').'">'.__('Title:'). 
     252          form::field('post_title',20,255,'','maximal',2). 
     253          '</label></p>'. 
     254          '<p class="area"><label class="required" title="'.__('Required field').'" '. 
     255          'for="post_content">'.__('Content:').'</label> '. 
     256          form::textarea('post_content',50,7,'','',2). 
     257          '</p>'. 
     258          '<p><label class="classic">'.__('Category:').' '. 
     259          form::combo('cat_id',$categories_combo,'','',2).'</label></p>'. 
     260          '<p><input type="submit" value="'.__('save').'" name="save" tabindex="3" /> '. 
     261          ($core->auth->check('publish',$core->blog->id) 
     262               ? '<input type="hidden" value="'.__('save and publish').'" name="save-publish" />' 
     263               : ''). 
     264          $core->formNonce(). 
     265          form::hidden('post_status',-2). 
     266          form::hidden('post_format',$core->auth->getOption('post_format')). 
     267          form::hidden('post_excerpt',''). 
     268          form::hidden('post_lang',$core->auth->getInfo('user_lang')). 
     269          form::hidden('post_notes',''). 
     270          '</p>'. 
     271          '</fieldset>'. 
     272          '</form>'. 
     273          '</div>'; 
     274     } 
    245275} 
    246276 
  • admin/install/index.php

    r3 r13  
    185185          $core->plugins->loadModules(DC_PLUGINS_ROOT); 
    186186          $plugins_install = $core->plugins->installModules(); 
     187           
     188          # Add dashboard module options 
     189          $core->auth->user_prefs->addWorkspace('dashboard'); 
     190          $core->auth->user_prefs->dashboard->put('doclinks',true,'boolean','',null,true); 
     191          $core->auth->user_prefs->dashboard->put('dcnews',true,'boolean','',null,true); 
     192          $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true); 
    187193           
    188194          # Add default favorites 
  • admin/preferences.php

    r11 r13  
    2828$user_options = $core->auth->getOptions(); 
    2929 
     30$core->auth->user_prefs->addWorkspace('dashboard'); 
     31$user_dm_doclinks = $core->auth->user_prefs->dashboard->doclinks; 
     32$user_dm_dcnews = $core->auth->user_prefs->dashboard->dcnews; 
     33$user_dm_quickentry = $core->auth->user_prefs->dashboard->quickentry; 
     34 
    3035$default_tab = 'user-profile'; 
    3136 
    3237if (!empty($_GET['append']) || !empty($_GET['removed']) || !empty($_GET['neworder'])) { 
    3338     $default_tab = 'user-favorites'; 
     39} elseif (!empty($_GET['updated'])) { 
     40     $default_tab = 'user-options'; 
    3441} 
    3542 
     
    6976          $cur->user_lang = $user_lang = $_POST['user_lang']; 
    7077          $cur->user_tz = $user_tz = $_POST['user_tz']; 
    71           $cur->user_post_status = $user_post_status = $_POST['user_post_status']; 
    72            
    73           $user_options['edit_size'] = (integer) $_POST['user_edit_size']; 
    74           if ($user_options['edit_size'] < 1) { 
    75                $user_options['edit_size'] = 10; 
    76           } 
    77           $user_options['post_format'] = $_POST['user_post_format']; 
    78           $user_options['enable_wysiwyg'] = !empty($_POST['user_wysiwyg']); 
    79            
     78 
    8079          $cur->user_options = new ArrayObject($user_options); 
    8180           
     
    9493           
    9594          # --BEHAVIOR-- adminBeforeUserUpdate 
    96           $core->callBehavior('adminBeforeUserUpdate',$cur,$core->auth->userID()); 
     95          $core->callBehavior('adminBeforeUserProfileUpdate',$cur,$core->auth->userID()); 
    9796           
    9897          # Udate user 
     
    10099           
    101100          # --BEHAVIOR-- adminAfterUserUpdate 
     101          $core->callBehavior('adminAfterUserProfileUpdate',$cur,$core->auth->userID()); 
     102           
     103          http::redirect('preferences.php?upd=1'); 
     104     } 
     105     catch (Exception $e) 
     106     { 
     107          $core->error->add($e->getMessage()); 
     108     } 
     109} 
     110 
     111# Update user options 
     112if (isset($_POST['user_post_format'])) { 
     113     try 
     114     { 
     115          $cur = $core->con->openCursor($core->prefix.'user'); 
     116           
     117          $cur->user_name = $user_name; 
     118          $cur->user_firstname = $user_firstname; 
     119          $cur->user_displayname = $user_displayname; 
     120          $cur->user_email = $user_email; 
     121          $cur->user_url = $user_url; 
     122          $cur->user_lang = $user_lang; 
     123          $cur->user_tz = $user_tz; 
     124 
     125          $cur->user_post_status = $user_post_status = $_POST['user_post_status']; 
     126           
     127          $user_options['edit_size'] = (integer) $_POST['user_edit_size']; 
     128          if ($user_options['edit_size'] < 1) { 
     129               $user_options['edit_size'] = 10; 
     130          } 
     131          $user_options['post_format'] = $_POST['user_post_format']; 
     132          $user_options['enable_wysiwyg'] = !empty($_POST['user_wysiwyg']); 
     133           
     134          $cur->user_options = new ArrayObject($user_options); 
     135           
     136          # --BEHAVIOR-- adminBeforeUserUpdate 
     137          $core->callBehavior('adminBeforeUserUpdate',$cur,$core->auth->userID()); 
     138           
     139          # Update user prefs 
     140          $core->auth->user_prefs->dashboard->put('doclinks',!empty($_POST['user_dm_doclinks']),'boolean'); 
     141          $core->auth->user_prefs->dashboard->put('dcnews',!empty($_POST['user_dm_dcnews']),'boolean'); 
     142          $core->auth->user_prefs->dashboard->put('quickentry',!empty($_POST['user_dm_quickentry']),'boolean'); 
     143           
     144          # Udate user 
     145          $core->updUser($core->auth->userID(),$cur); 
     146           
     147          # --BEHAVIOR-- adminAfterUserUpdate 
    102148          $core->callBehavior('adminAfterUserUpdate',$cur,$core->auth->userID()); 
    103149           
    104           http::redirect('preferences.php?upd=1'); 
     150          http::redirect('preferences.php?updated=1'); 
    105151     } 
    106152     catch (Exception $e) 
     
    233279          echo '<p class="message">'.__('Personal information has been successfully updated.').'</p>'; 
    234280} 
    235  
    236 echo '<h2>'.$page_title.'</h2>'; 
    237  
     281if (!empty($_GET['updated'])) { 
     282          echo '<p class="message">'.__('Personal options has been successfully updated.').'</p>'; 
     283} 
    238284if (!empty($_GET['append'])) { 
    239285          echo '<p class="message">'.__('Favorites have been successfully added.').'</p>'; 
     
    245291          echo '<p class="message">'.__('Favorites have been successfully removed.').'</p>'; 
    246292} 
     293 
     294echo '<h2>'.$page_title.'</h2>'; 
    247295 
    248296# User profile 
     
    316364 
    317365echo 
    318 '<form action="preferences.php" method="post" id="user-form">'. 
     366'<form action="preferences.php" method="post" id="user-options">'. 
    319367'<fieldset><legend>'.__('My options').'</legend>'. 
    320368 
     
    331379form::checkbox('user_wysiwyg',1,$user_options['enable_wysiwyg'],'',12).' '. 
    332380__('Enable WYSIWYG mode').'</label></p>'. 
     381'<br class="clear" />'. //Opera sucks 
     382'</fieldset>'; 
     383 
     384echo 
     385'<fieldset><legend>'.__('Dashboard modules').'</legend>'. 
     386 
     387'<p><label for="user_dm_doclinks" class="classic">'. 
     388form::checkbox('user_dm_doclinks',1,$user_dm_doclinks,'',13).' '. 
     389__('Display documentation links').'</label></p>'. 
     390 
     391'<p><label for="user_dm_dcnews" class="classic">'. 
     392form::checkbox('user_dm_dcnews',1,$user_dm_dcnews,'',14).' '. 
     393__('Display Dotclear news').'</label></p>'. 
     394 
     395'<p><label for="user_dm_quickentry" class="classic">'. 
     396form::checkbox('user_dm_quickentry',1,$user_dm_quickentry,'',15).' '. 
     397__('Display quick entry form').'</label></p>'. 
     398 
    333399'<br class="clear" />'. //Opera sucks 
    334400'</fieldset>'; 
  • inc/core/class.dc.workspace.php

    r3 r13  
    103103     } 
    104104      
    105      private function prefExists($id,$global=false) 
     105     public function prefExists($id,$global=false) 
    106106     { 
    107107          $array = $global ? 'global' : 'local'; 
  • locales/fr/main.po

    r11 r13  
    27042704msgid "Favorites has been successfully updated." 
    27052705msgstr "Les favoris ont été mis à jour avec succès." 
     2706 
     2707msgid "Personal options has been successfully updated." 
     2708msgstr "Vos options personnelles ont été enregistrées avec succès." 
Note: See TracChangeset for help on using the changeset viewer.

Sites map