Dotclear


Ignore:
Timestamp:
10/03/13 15:17:58 (12 years ago)
Author:
Dsls
Branch:
default
Message:

reworked favorites handling (wip)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/prepend.php

    r2159 r2229  
    2121// HTTP/1.0 
    2222header("Pragma: no-cache"); 
    23  
    24 function dc_valid_fav($url) { 
    25      global $core; 
    26  
    27      if (preg_match('#plugin\.php\?p=([^&]+)#',$url,$matches)) { 
    28           if (isset($matches[1])) { 
    29                if (!$core->plugins->moduleExists($matches[1])) { 
    30                     return false; 
    31                } 
    32           } 
    33      } 
    34      return true; 
    35 } 
    36  
    37 function dc_check_active($url) { 
    38      $u = explode('?',$url,2); 
    39      if (!preg_match('/'.preg_quote($u[0],"/").'/',$_SERVER['REQUEST_URI'])) { 
    40           return false; 
    41      } 
    42      if (count($u) == 2) { 
    43           parse_str($u[1],$p); 
    44           foreach ($p as $k => $v) { 
    45                if (!isset($_REQUEST[$k]) || $_REQUEST[$k] !== $v) { 
    46                     return false; 
    47                } 
    48           } 
    49      } 
    50      return true; 
    51 } 
    52  
    5323 
    5424function dc_load_locales() { 
     
    230200     $user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu; 
    231201 
    232      # Standard favorites 
    233      $_fav = new ArrayObject(); 
     202     $core->favs = new dcFavorites($core); 
     203 
    234204 
    235205     # [] : Title, URL, small icon, large icon, permissions, id, class 
    236206     # NB : '*' in permissions means any, null means super admin only 
    237207      
    238      $_fav['prefs'] = new ArrayObject(array('prefs','My preferences','preferences.php', 
    239           'images/menu/user-pref.png','images/menu/user-pref-b.png', 
    240           '*',null,null)); 
    241  
    242      $_fav['new_post'] = new ArrayObject(array('new_post','New entry','post.php', 
    243           'images/menu/edit.png','images/menu/edit-b.png', 
    244           'usage,contentadmin',null,'menu-new-post')); 
    245      $_fav['posts'] = new ArrayObject(array('posts','Entries','posts.php', 
    246           'images/menu/entries.png','images/menu/entries-b.png', 
    247           'usage,contentadmin',null,null)); 
    248      $_fav['comments'] = new ArrayObject(array('comments','Comments','comments.php', 
    249           'images/menu/comments.png','images/menu/comments-b.png', 
    250           'usage,contentadmin',null,null)); 
    251      $_fav['search'] = new ArrayObject(array('search','Search','search.php', 
    252           'images/menu/search.png','images/menu/search-b.png', 
    253           'usage,contentadmin',null,null)); 
    254      $_fav['categories'] = new ArrayObject(array('categories','Categories','categories.php', 
    255           'images/menu/categories.png','images/menu/categories-b.png', 
    256           'categories',null,null)); 
    257      $_fav['media'] = new ArrayObject(array('media','Media manager','media.php', 
    258           'images/menu/media.png','images/menu/media-b.png', 
    259           'media,media_admin',null,null)); 
    260      $_fav['blog_pref'] = new ArrayObject(array('blog_pref','Blog settings','blog_pref.php', 
    261           'images/menu/blog-pref.png','images/menu/blog-pref-b.png', 
    262           'admin',null,null)); 
    263      $_fav['blog_theme'] = new ArrayObject(array('blog_theme','Blog appearance','blog_theme.php', 
    264           'images/menu/themes.png','images/menu/blog-theme-b.png', 
    265           'admin',null,null)); 
    266  
    267      $_fav['blogs'] = new ArrayObject(array('blogs','Blogs','blogs.php', 
    268           'images/menu/blogs.png','images/menu/blogs-b.png', 
    269           'usage,contentadmin',null,null)); 
    270      $_fav['users'] = new ArrayObject(array('users','Users','users.php', 
    271           'images/menu/users.png','images/menu/users-b.png', 
    272           null,null,null)); 
    273      $_fav['plugins'] = new ArrayObject(array('plugins','Plugins management','plugins.php', 
    274           'images/menu/plugins.png','images/menu/plugins-b.png', 
    275           null,null,null)); 
    276      $_fav['langs'] = new ArrayObject(array('langs','Languages','langs.php', 
    277           'images/menu/langs.png','images/menu/langs-b.png', 
    278           null,null,null)); 
    279  
    280      $_fav['help'] = new ArrayObject(array('help','Global help','help.php', 
    281           'images/menu/help.png','images/menu/help-b.png', 
    282           '*',null,null)); 
    283208      
    284209     # Menus creation 
     210     $_menu = new ArrayObject(); 
    285211     $_menu['Dashboard'] = new dcMenu('dashboard-menu',null); 
    286      if (!$user_ui_nofavmenu) 
    287           $_menu['Favorites'] = new dcMenu('favorites-menu','My favorites'); 
     212     if (!$user_ui_nofavmenu) { 
     213          $core->favs->appendMenuTitle($_menu); 
     214     } 
    288215     $_menu['Blog'] = new dcMenu('blog-menu','Blog'); 
    289216     $_menu['System'] = new dcMenu('system-menu','System'); 
    290217     $_menu['Plugins'] = new dcMenu('plugins-menu','Plugins'); 
    291       
    292218     # Loading plugins 
    293219     $core->plugins->loadModules(DC_PLUGINS_ROOT,'admin',$_lang); 
    294  
    295      # Loading favorites info from plugins 
    296      $core->callBehavior('adminDashboardFavs', $core, $_fav); 
     220     $core->favs->setup(); 
     221      
     222     if (!$user_ui_nofavmenu) { 
     223          $core->favs->appendMenu($_menu); 
     224     } 
     225 
    297226      
    298227     # Set menu titles 
     
    301230     $_menu['Blog']->title = __('Blog'); 
    302231     $_menu['Plugins']->title = __('Plugins'); 
    303      if (!$user_ui_nofavmenu) 
    304           $_menu['Favorites']->title = __('My favorites'); 
     232 
    305233 
    306234/*    
     
    352280          $core->auth->isSuperAdmin() || 
    353281          $core->auth->check('usage,contentadmin',$core->blog->id) && $core->auth->getBlogCount() > 1); 
    354  
    355      if (!$user_ui_nofavmenu) { 
    356           // Set favorites menu 
    357           $ws = $core->auth->user_prefs->addWorkspace('favorites'); 
    358           $count = 0; 
    359           foreach ($ws->dumpPrefs() as $k => $v) { 
    360                // User favorites only 
    361                if (!$v['global']) { 
    362                     $fav = unserialize($v['value']); 
    363                     if (dc_valid_fav($fav['url'])) { 
    364                          $count++; 
    365                          $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 
    366                               dc_check_active($fav['url']), 
    367                               (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 
    368                     } 
    369                } 
    370           }     
    371           if (!$count) { 
    372                // Global favorites if any 
    373                foreach ($ws->dumpPrefs() as $k => $v) { 
    374                     $fav = unserialize($v['value']); 
    375                     if (dc_valid_fav($fav['url'])) { 
    376                          $count++; 
    377                          $_menu['Favorites']->addItem(__($fav['title']),$fav['url'],$fav['small-icon'], 
    378                               dc_check_active($fav['url']), 
    379                               (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)),$fav['id'],$fav['class']); 
    380                     } 
    381                } 
    382           } 
    383           if (!$count) { 
    384                // No user or global favorites, add "new entry" fav 
    385                $_menu['Favorites']->addItem(__('New entry'),'post.php','images/menu/edit.png', 
    386                     preg_match('/post.php$/',$_SERVER['REQUEST_URI']), 
    387                     $core->auth->check('usage,contentadmin',$core->blog->id),'menu-new-post',null); 
    388           } 
    389      } 
    390282      
    391283     if (empty($core->blog->settings->system->jquery_migrate_mute)) { 
Note: See TracChangeset for help on using the changeset viewer.

Sites map