Dotclear

Changeset 1079:e3bf3d268635


Ignore:
Timestamp:
12/18/12 12:43:56 (13 years ago)
Author:
JcDenis
Branch:
twig
Message:

Admin dashboard is now "Twig compliant"

Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • admin/index.php

    r1056 r1079  
    4848$plugins_install = $core->plugins->installModules(); 
    4949 
     50# Send plugins install messages to templates 
     51if (!empty($plugins_install['success'])) { 
     52     $_ctx->addMessagesList(__('Following plugins have been installed:'),$plugins_install['success']); 
     53} 
     54if (!empty($plugins_install['failure'])) { 
     55     $_ctx->addMessagesList(__('Following plugins have not been installed:'),$plugins_install['failure']); 
     56} 
     57 
     58# Send plugins errors messages to templates 
     59$_ctx->modules_errors = $core->auth->isSuperAdmin() ? $core->plugins->getErrors() : array(); 
     60 
     61# Send Dotclear updates notifications to tempaltes 
     62$_ctx->updater = array(); 
     63if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) { 
     64 
     65     $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
     66     $new_v = $updater->check(DC_VERSION); 
     67     $version_info = $new_v ? $updater->getInfoURL() : ''; 
     68      
     69     if ($updater->getNotify() && $new_v) { 
     70          $_ctx->updater = array( 
     71               'new_version'  => $new_v, 
     72               'version_info' => $version_info 
     73          ); 
     74     } 
     75} 
     76 
    5077# Check dashboard module prefs 
    5178$ws = $core->auth->user_prefs->addWorkspace('dashboard'); 
     79 
     80# Doclinks prefs 
    5281if (!$core->auth->user_prefs->dashboard->prefExists('doclinks')) { 
    5382     if (!$core->auth->user_prefs->dashboard->prefExists('doclinks',true)) { 
     
    5685     $core->auth->user_prefs->dashboard->put('doclinks',true,'boolean'); 
    5786} 
     87 
     88# Send doclinks to templates 
     89$_ctx->dashboard_doclinks = array(); 
     90if ($core->auth->user_prefs->dashboard->doclinks && !empty($__resources['doc'])) { 
     91     $_ctx->dashboard_doclinks = $__resources['doc']; 
     92} 
     93 
     94# Dcnews prefs 
    5895if (!$core->auth->user_prefs->dashboard->prefExists('dcnews')) { 
    5996     if (!$core->auth->user_prefs->dashboard->prefExists('dcnews',true)) { 
     
    6299     $core->auth->user_prefs->dashboard->put('dcnews',true,'boolean'); 
    63100} 
     101 
     102# Send dcnews to templates 
     103$_ctx->dashboard_dcnews = array(); 
     104if ($core->auth->user_prefs->dashboard->dcnews && !empty($__resources['rss_news'])) { 
     105     try 
     106     { 
     107          $feed_reader = new feedReader; 
     108          $feed_reader->setCacheDir(DC_TPL_CACHE); 
     109          $feed_reader->setTimeout(2); 
     110          $feed_reader->setUserAgent('Dotclear - http://www.dotclear.org/'); 
     111          $feed = $feed_reader->parse($__resources['rss_news']); 
     112          if ($feed) { 
     113               $items = array(); 
     114               $i = 1; 
     115               foreach ($feed->items as $item) { 
     116                    $items[] = array( 
     117                         'title' => $item->title, 
     118                         'link' => isset($item->link) ? $item->link : '', 
     119                         'date' => dt::dt2str(__('%d %B %Y'),$item->pubdate,'Europe/Paris'), 
     120                         'content' => html::clean($item->content) 
     121                    ); 
     122                    $i++; 
     123                    if ($i > 3) { break; } 
     124               } 
     125               $_ctx->dashboard_dcnews = $items; 
     126          } 
     127     } 
     128     catch (Exception $e) {} 
     129} 
     130 
     131# Quick entry prefs 
    64132if (!$core->auth->user_prefs->dashboard->prefExists('quickentry')) { 
    65133     if (!$core->auth->user_prefs->dashboard->prefExists('quickentry',true)) { 
     
    67135     } 
    68136     $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean'); 
     137} 
     138 
     139# Send quick entry to templates 
     140$_ctx->dashboard_quickentry = false; 
     141if ($core->auth->user_prefs->dashboard->quickentry &&$core->auth->check('usage,contentadmin',$core->blog->id)) 
     142{ 
     143     $categories_combo = array(' ' => ''); 
     144     try { 
     145          $categories = $core->blog->getCategories(array('post_type'=>'post')); 
     146          while ($categories->fetch()) { 
     147               $categories_combo[] = new formSelectOption( 
     148                    str_repeat('  ',$categories->level-1). 
     149                    ($categories->level-1 == 0 ? '' : '• ').html::escapeHTML($categories->cat_title), 
     150                    $categories->cat_id 
     151               ); 
     152          } 
     153     } 
     154     catch (Exception $e) { } 
     155      
     156     $form = new dcForm($core,'quickentry','post.php'); 
     157     $form 
     158          ->addField( 
     159               new dcFieldText('post_title','', array( 
     160                    'size'         => 20, 
     161                    'required'     => true, 
     162                    'label'        => __('Title')))) 
     163          ->addField( 
     164               new dcFieldTextArea('post_content','', array( 
     165                    'required'     => true, 
     166                    'label'        => __("Content:")))) 
     167          ->addField( 
     168               new dcFieldCombo('cat_id','',$categories_combo,array( 
     169                    "label" => __('Category:')))) 
     170          ->addField( 
     171               new dcFieldSubmit('save',__('Save'),array( 
     172                    'action' => 'savePost'))) 
     173          ->addField( 
     174               new dcFieldHidden ('post_status',-2)) 
     175          ->addField( 
     176               new dcFieldHidden ('post_format',$core->auth->getOption('post_format'))) 
     177          ->addField( 
     178               new dcFieldHidden ('post_excerpt','')) 
     179          ->addField( 
     180               new dcFieldHidden ('post_lang',$core->auth->getInfo('user_lang'))) 
     181          ->addField( 
     182               new dcFieldHidden ('post_notes','')) 
     183     ; 
     184     if ($core->auth->check('publish',$core->blog->id)) { 
     185          $form->addField( 
     186               new dcFieldHidden ('save-publish',__('Save and publish'))); 
     187     } 
     188      
     189     $_ctx->dashboard_quickentry = true; 
    69190} 
    70191 
     
    123244} 
    124245 
    125 # Latest news for dashboard 
     246# Send dashboard icons to templates 
     247$icons = array(); 
     248foreach ($__dashboard_icons as $i) { 
     249     $icons[] = array( 
     250          'title'   => $i[0], 
     251          'url'     => $i[1], 
     252          'img'     => dc_admin_icon_url($i[2]) 
     253     ); 
     254} 
     255$_ctx->dashboard_icons = $icons; 
     256 
     257# Dashboard items 
    126258$__dashboard_items = new ArrayObject(array(new ArrayObject,new ArrayObject)); 
    127  
    128 # Documentation links 
    129 $dashboardItem = 0; 
    130 if ($core->auth->user_prefs->dashboard->doclinks) { 
    131      if (!empty($__resources['doc'])) 
    132      { 
    133           $doc_links = '<h3>'.__('Documentation and support').'</h3><ul>'; 
    134       
    135           foreach ($__resources['doc'] as $k => $v) { 
    136                $doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>'; 
    137           } 
    138       
    139           $doc_links .= '</ul>'; 
    140           $__dashboard_items[$dashboardItem][] = $doc_links; 
    141           $dashboardItem++; 
    142      } 
    143 } 
    144  
    145 if ($core->auth->user_prefs->dashboard->dcnews) { 
    146      try 
    147      { 
    148           if (empty($__resources['rss_news'])) { 
    149                throw new Exception(); 
    150           } 
    151       
    152           $feed_reader = new feedReader; 
    153           $feed_reader->setCacheDir(DC_TPL_CACHE); 
    154           $feed_reader->setTimeout(2); 
    155           $feed_reader->setUserAgent('Dotclear - http://www.dotclear.org/'); 
    156           $feed = $feed_reader->parse($__resources['rss_news']); 
    157           if ($feed) 
    158           { 
    159                $latest_news = '<h3>'.__('Latest news').'</h3><dl id="news">'; 
    160                $i = 1; 
    161                foreach ($feed->items as $item) 
    162                { 
    163                     $dt = isset($item->link) ? '<a href="'.$item->link.'"'.$v.'" title="'.$item->title.' '.__('(external link)').'">'. 
    164                          $item->title.'</a>' : $item->title; 
    165                 
    166                     if ($i < 3) { 
    167                          $latest_news .= 
    168                          '<dt>'.$dt.'</dt>'. 
    169                          '<dd><p><strong>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</strong>: '. 
    170                          '<em>'.text::cutString(html::clean($item->content),120).'...</em></p></dd>'; 
    171                     } else { 
    172                          $latest_news .= 
    173                          '<dt>'.$dt.'</dt>'. 
    174                          '<dd>'.dt::dt2str('%d %B %Y',$item->pubdate,'Europe/Paris').'</dd>'; 
    175                     } 
    176                     $i++; 
    177                     if ($i > 3) { break; } 
    178                } 
    179                $latest_news .= '</dl>'; 
    180                $__dashboard_items[$dashboardItem][] = $latest_news; 
    181                $dashboardItem++; 
    182           } 
    183      } 
    184      catch (Exception $e) {} 
    185 } 
    186  
    187259$core->callBehavior('adminDashboardItems', $core, $__dashboard_items); 
    188260 
     261# Send dashboard items to templates 
     262$items = array(); 
     263foreach ($__dashboard_items as $i) {     
     264     if ($i->count() > 0) { 
     265          foreach ($i as $v) { 
     266               $items[] = $v; 
     267          } 
     268     } 
     269} 
     270$_ctx->dashboard_items = $items; 
     271 
    189272# Dashboard content 
    190 $dashboardContents = ''; 
    191273$__dashboard_contents = new ArrayObject(array(new ArrayObject,new ArrayObject)); 
    192274$core->callBehavior('adminDashboardContents', $core, $__dashboard_contents); 
    193275 
    194 /* DISPLAY 
    195 -------------------------------------------------------- */ 
    196 dcPage::open(__('Dashboard'), 
    197      dcPage::jsToolBar(). 
    198      dcPage::jsLoad('js/_index.js'). 
    199      # --BEHAVIOR-- adminDashboardHeaders 
    200      $core->callBehavior('adminDashboardHeaders') 
    201 ); 
    202  
    203 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span></h2>'; 
    204  
    205 if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) { 
    206      echo 
    207      '<p><a href="index.php?default_blog=1" class="button">'.__('Make this blog my default blog').'</a></p>'; 
    208 } 
    209  
     276# Send dashboard contents to templates 
     277$contents = array(); 
     278foreach ($__dashboard_contents as $i) {  
     279     if ($i->count() > 0) { 
     280          foreach ($i as $v) { 
     281               $contents[] = $v; 
     282          } 
     283     } 
     284} 
     285$_ctx->dashboard_contents = $contents; 
     286 
     287# Blog status message 
    210288if ($core->blog->status == 0) { 
    211      echo '<p class="static-msg">'.__('This blog is offline').'</p>'; 
     289     $_ctx->addMessageStatic(__('This blog is offline')); 
    212290} elseif ($core->blog->status == -1) { 
    213      echo '<p class="static-msg">'.__('This blog is removed').'</p>'; 
    214 } 
    215  
     291     $_ctx->addMessageStatic(__('This blog is removed')); 
     292} 
     293 
     294# Config errors messages 
    216295if (!defined('DC_ADMIN_URL') || !DC_ADMIN_URL) { 
    217      echo 
    218      '<p class="static-msg">'. 
    219      'DC_ADMIN_URL '.__('is not defined, you should edit your configuration file.'). 
    220      '</p>'; 
    221 } 
    222  
     296     $_ctx->addMessageStatic( 
     297          sprintf(__('%s is not defined, you should edit your configuration file.'),'DC_ADMIN_URL').' '. 
     298          __('See <a href="http://dotclear.org/documentation/2.0/admin/config">documentation</a> for more information.') 
     299     ); 
     300} 
    223301if (!defined('DC_ADMIN_MAILFROM') || !DC_ADMIN_MAILFROM) { 
    224      echo 
    225      '<p class="static-msg">'. 
    226      'DC_ADMIN_MAILFROM '.__('is not defined, you should edit your configuration file.'). 
    227      '</p>'; 
    228 } 
    229  
    230 # Plugins install messages 
    231 if (!empty($plugins_install['success'])) 
    232 { 
    233      echo '<div class="static-msg">'.__('Following plugins have been installed:').'<ul>'; 
    234      foreach ($plugins_install['success'] as $k => $v) { 
    235           echo '<li>'.$k.'</li>'; 
    236      } 
    237      echo '</ul></div>'; 
    238 } 
    239 if (!empty($plugins_install['failure'])) 
    240 { 
    241      echo '<div class="error">'.__('Following plugins have not been installed:').'<ul>'; 
    242      foreach ($plugins_install['failure'] as $k => $v) { 
    243           echo '<li>'.$k.' ('.$v.')</li>'; 
    244      } 
    245      echo '</ul></div>'; 
    246 } 
    247  
    248 # Dashboard columns (processed first, as we need to know the result before displaying the icons.) 
    249 $dashboardItems = ''; 
    250  
    251 # Dotclear updates notifications 
    252 if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) 
    253 { 
    254      $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
    255      $new_v = $updater->check(DC_VERSION); 
    256      $version_info = $new_v ? $updater->getInfoURL() : ''; 
    257       
    258      if ($updater->getNotify() && $new_v) { 
    259           $dashboardItems .= 
    260           '<div id="upg-notify" class="static-msg"><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '. 
    261           '<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'. 
    262           '</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'. 
    263           ($version_info ? ' </li><li><a href="'.$version_info.'">'.__('information about this version').'</a>' : ''). 
    264           '</li></ul></div>'; 
    265      } 
    266 } 
    267  
    268 # Errors modules notifications 
    269 if ($core->auth->isSuperAdmin()) 
    270 { 
    271      $list = array(); 
    272      foreach ($core->plugins->getErrors() as $k => $error) { 
    273           $list[] = '<li>'.$error.'</li>'; 
    274      } 
    275       
    276      if (count($list) > 0) { 
    277           $dashboardItems .= 
    278           '<div id="module-errors" class="error"><p>'.__('Some plugins are installed twice:').'</p> '. 
    279           '<ul>'.implode("\n",$list).'</ul></div>'; 
    280      } 
    281       
    282 } 
    283  
    284 foreach ($__dashboard_items as $i) 
    285 {     
    286      if ($i->count() > 0) 
    287      { 
    288           $dashboardItems .= '<div>'; 
    289           foreach ($i as $v) { 
    290                $dashboardItems .= $v; 
    291           } 
    292           $dashboardItems .= '</div>'; 
    293      } 
    294 } 
    295  
    296 # Dashboard icons 
    297 echo '<div id="dashboard-main"'.($dashboardItems ? '' : ' class="fullwidth"').'><div id="icons">'; 
    298 foreach ($__dashboard_icons as $i) 
    299 { 
    300      echo 
    301      '<p><a href="'.$i[1].'"><img src="'.dc_admin_icon_url($i[2]).'" alt="" />'. 
    302      '<br /><span>'.$i[0].'</span></a></p>'; 
    303 } 
    304 echo '</div>'; 
    305  
    306 if ($core->auth->user_prefs->dashboard->quickentry) { 
    307      if ($core->auth->check('usage,contentadmin',$core->blog->id)) 
    308      { 
    309           $categories_combo = array('&nbsp;' => ''); 
    310           try { 
    311                $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    312                while ($categories->fetch()) { 
    313                     $categories_combo[] = new formSelectOption( 
    314                          str_repeat('&nbsp;&nbsp;',$categories->level-1). 
    315                          ($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    316                          $categories->cat_id 
    317                     ); 
    318                } 
    319           } catch (Exception $e) { } 
    320       
    321           echo 
    322           '<div id="quick">'. 
    323           '<h3>'.__('Quick entry').'</h3>'. 
    324           '<form id="quick-entry" action="post.php" method="post">'. 
    325           '<fieldset><legend>'.__('New entry').'</legend>'. 
    326           '<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:'). 
    327           form::field('post_title',20,255,'','maximal'). 
    328           '</label></p>'. 
    329           '<p class="area"><label class="required" '. 
    330           'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '. 
    331           form::textarea('post_content',50,7). 
    332           '</p>'. 
    333           '<p><label for="cat_id" class="classic">'.__('Category:').' '. 
    334           form::combo('cat_id',$categories_combo).'</label></p>'. 
    335           '<p><input type="submit" value="'.__('Save').'" name="save" /> '. 
    336           ($core->auth->check('publish',$core->blog->id) 
    337                ? '<input type="hidden" value="'.__('Save and publish').'" name="save-publish" />' 
    338                : ''). 
    339           $core->formNonce(). 
    340           form::hidden('post_status',-2). 
    341           form::hidden('post_format',$core->auth->getOption('post_format')). 
    342           form::hidden('post_excerpt',''). 
    343           form::hidden('post_lang',$core->auth->getInfo('user_lang')). 
    344           form::hidden('post_notes',''). 
    345           '</p>'. 
    346           '</fieldset>'. 
    347           '</form>'. 
    348           '</div>'; 
    349      } 
    350 } 
    351  
    352 foreach ($__dashboard_contents as $i) 
    353 {     
    354      if ($i->count() > 0) 
    355      { 
    356           $dashboardContents .= '<div>'; 
    357           foreach ($i as $v) { 
    358                $dashboardContents .= $v; 
    359           } 
    360           $dashboardContents .= '</div>'; 
    361      } 
    362 } 
    363 echo ($dashboardContents ? '<div id="dashboard-contents">'.$dashboardContents.'</div>' : ''); 
    364  
    365 echo '</div>'; 
    366  
    367 echo ($dashboardItems ? '<div id="dashboard-items">'.$dashboardItems.'</div>' : ''); 
    368  
    369 dcPage::close(); 
     302     $_ctx->addMessageStatic( 
     303          sprintf(__('%s is not defined, you should edit your configuration file.'),'DC_ADMIN_MAILFROM').' '. 
     304          __('See <a href="http://dotclear.org/documentation/2.0/admin/config">documentation</a> for more information.') 
     305     ); 
     306} 
     307 
     308$_ctx->setPageTitle(__('Dashboard')); 
     309$core->tpl->display('index.html.twig'); 
    370310?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map