Changeset 2229:d5e819e27bea
- Timestamp:
- 10/03/13 15:17:58 (12 years ago)
- Branch:
- default
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
admin/index.php
r2225 r2229 74 74 $__dashboard_icons = new ArrayObject(); 75 75 76 # Dashboard favorites 77 $post_count = $core->blog->getPosts(array(),true)->f(0); 78 $str_entries = ($post_count > 1) ? __('%d entries') : __('%d entry'); 79 80 $comment_count = $core->blog->getComments(array(),true)->f(0); 81 $str_comments = ($comment_count > 1) ? __('%d comments') : __('%d comment'); 82 83 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 84 $count = 0; 85 foreach ($ws->dumpPrefs() as $k => $v) { 86 // User favorites only 87 if (!$v['global']) { 88 $fav = unserialize($v['value']); 89 if (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)) { 90 if (dc_valid_fav($fav['url'])) { 91 $count++; 92 $title = ($fav['name'] == 'posts' ? sprintf($str_entries,$post_count) : 93 ($fav['name'] == 'comments' ? sprintf($str_comments,$comment_count) : $fav['title'])); 94 $__dashboard_icons[$fav['name']] = new ArrayObject(array(__($title),$fav['url'],$fav['large-icon'])); 95 96 # Let plugins set their own title for favorite on dashboard 97 $core->callBehavior('adminDashboardFavsIcon',$core,$fav['name'],$__dashboard_icons[$fav['name']]); 98 } 99 } 100 } 101 } 102 if (!$count) { 103 // Global favorites if any 104 foreach ($ws->dumpPrefs() as $k => $v) { 105 $fav = unserialize($v['value']); 106 if (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)) { 107 if (dc_valid_fav($fav['url'])) { 108 $count++; 109 $title = ($fav['name'] == 'posts' ? sprintf($str_entries,$post_count) : 110 ($fav['name'] == 'comments' ? sprintf($str_comments,$comment_count) : $fav['title'])); 111 $__dashboard_icons[$fav['name']] = new ArrayObject(array(__($title),$fav['url'],$fav['large-icon'])); 112 113 # Let plugins set their own title for favorite on dashboard 114 $core->callBehavior('adminDashboardFavsIcon',$core,$fav['name'],$__dashboard_icons[$fav['name']]); 115 } 116 } 117 } 118 } 119 if (!$count) { 120 // No user or global favorites, add "user pref" and "new entry" fav 121 if ($core->auth->check('usage,contentadmin',$core->blog->id)) { 122 $__dashboard_icons['new_post'] = new ArrayObject(array(__('New entry'),'post.php','images/menu/edit-b.png')); 123 } 124 $__dashboard_icons['prefs'] = new ArrayObject(array(__('My preferences'),'preferences.php','images/menu/user-pref-b.png')); 125 } 76 $favs = $core->favs->getUserFavorites(); 77 $core->favs->appendDashboardIcons($__dashboard_icons); 126 78 127 79 # Latest news for dashboard 128 $__dashboard_items = new ArrayObject(array(new ArrayObject ,new ArrayObject));80 $__dashboard_items = new ArrayObject(array(new ArrayObject(),new ArrayObject())); 129 81 130 82 $dashboardItem = 0; -
admin/preferences.php
r2206 r2229 215 215 throw new Exception(__('No favorite selected')); 216 216 } 217 218 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 219 $user_favs = $ws->DumpLocalPrefs(); 220 $count = count($user_favs); 217 $user_favs = $core->favs->getFavoriteIDs(false); 221 218 foreach ($_POST['append'] as $k => $v) 222 219 { 223 try { 224 $found = false; 225 foreach ($user_favs as $f) { 226 $f = unserialize($f['value']); 227 if ($f['name'] == $v) { 228 $found = true; 229 break; 230 } 231 } 232 if (!$found) { 233 $uid = sprintf("u%03s",$count); 234 $fav = array('name' => $_fav[$v][0],'title' => $_fav[$v][1],'url' => $_fav[$v][2],'small-icon' => $_fav[$v][3], 235 'large-icon' => $_fav[$v][4],'permissions' => $_fav[$v][5],'id' => $_fav[$v][6],'class' => $_fav[$v][7]); 236 $core->auth->user_prefs->favorites->put($uid,serialize($fav),'string'); 237 $count++; 238 } 239 } catch (Exception $e) { 240 $core->error->add($e->getMessage()); 241 break; 220 if ($core->favs->exists($v)) { 221 $user_favs[] = $v; 242 222 } 243 223 } 244 224 $core->favs->setFavoriteIDs($user_favs,false); 225 245 226 if (!$core->error->flag()) { 246 227 http::redirect('preferences.php?append=1'); … … 258 239 throw new Exception(__('No favorite selected')); 259 240 } 260 261 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 262 foreach ($_POST['remove'] as $k => $v) 241 $user_fav_ids = array(); 242 foreach ($core->favs->getFavoriteIDs(false) as $v) { 243 $user_fav_ids[$v]=true; 244 } 245 foreach ($_POST['remove'] as $v) 263 246 { 264 try { 265 $core->auth->user_prefs->favorites->drop($v); 266 } catch (Exception $e) { 267 $core->error->add($e->getMessage()); 268 break; 247 if (isset($user_fav_ids[$v])) { 248 unset($user_fav_ids[$v]); 269 249 } 270 250 } 271 // Update pref_id values 272 try { 273 $user_favs = $ws->DumpLocalPrefs(); 274 $core->auth->user_prefs->favorites->dropAll(); 275 $count = 0; 276 foreach ($user_favs as $k => $v) 277 { 278 $uid = sprintf("u%03s",$count); 279 $f = unserialize($v['value']); 280 $fav = array('name' => $f['name'],'title' => $f['title'],'url' => $f['url'],'small-icon' => $f['small-icon'], 281 'large-icon' => $f['large-icon'],'permissions' => $f['permissions'],'id' => $f['id'],'class' => $f['class']); 282 $core->auth->user_prefs->favorites->put($uid,serialize($fav),'string'); 283 $count++; 284 } 285 } catch (Exception $e) { 286 $core->error->add($e->getMessage()); 287 } 288 251 $core->favs->setFavoriteIDs(array_keys($user_fav_ids),false); 289 252 if (!$core->error->flag()) { 290 253 http::redirect('preferences.php?removed=1'); … … 307 270 if (!empty($_POST['saveorder']) && !empty($order)) 308 271 { 309 try { 310 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 311 $user_favs = $ws->DumpLocalPrefs(); 312 $core->auth->user_prefs->favorites->dropAll(); 313 $count = 0; 314 foreach ($order as $i => $k) { 315 $uid = sprintf("u%03s",$count); 316 $f = unserialize($user_favs[$k]['value']); 317 $fav = array('name' => $f['name'],'title' => $f['title'],'url' => $f['url'],'small-icon' => $f['small-icon'], 318 'large-icon' => $f['large-icon'],'permissions' => $f['permissions'],'id' => $f['id'],'class' => $f['class']); 319 $core->auth->user_prefs->favorites->put($uid,serialize($fav),'string'); 320 $count++; 321 } 322 } catch (Exception $e) { 323 $core->error->add($e->getMessage()); 324 } 325 272 foreach ($order as $k => $v) { 273 if (!$core->favs->exists($v)) { 274 unset($order[$k]); 275 } 276 } 277 $core->favs->setFavoriteIDs($order,false); 326 278 if (!$core->error->flag()) { 327 279 http::redirect('preferences.php?&neworder=1'); … … 331 283 # Replace default favorites by current set (super admin only) 332 284 if (!empty($_POST['replace']) && $core->auth->isSuperAdmin()) { 333 try { 334 $ws = $core->auth->user_prefs->addWorkspace('favorites'); 335 $user_favs = $ws->DumpLocalPrefs(); 336 $core->auth->user_prefs->favorites->dropAll(true); 337 $count = 0; 338 foreach ($user_favs as $k => $v) 339 { 340 $uid = sprintf("g%03s",$count); 341 $f = unserialize($v['value']); 342 $fav = array('name' => $f['name'],'title' => $f['title'],'url' => $f['url'],'small-icon' => $f['small-icon'], 343 'large-icon' => $f['large-icon'],'permissions' => $f['permissions'],'id' => $f['id'],'class' => $f['class']); 344 $core->auth->user_prefs->favorites->put($uid,serialize($fav),'string',null,null,true); 345 $count++; 346 } 347 } catch (Exception $e) { 348 $core->error->add($e->getMessage()); 349 } 285 $user_favs = $core->favs->getFavoriteIDs(false); 286 $core->favs->setFavoriteIDs($user_favs,true); 350 287 351 288 if (!$core->error->flag()) { … … 548 485 549 486 $count = 0; 550 $user_fav = array(); 551 foreach ($ws->dumpPrefs() as $k => $v) { 552 // User favorites only 553 if (!$v['global']) { 554 $fav = unserialize($v['value']); 555 if (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)) { 556 if ($count == 0) echo '<ul class="fav-list">'; 557 $count++; 558 echo '<li id="fu-'.$k.'">'.'<label for="fuk-'.$k.'">'. 559 '<img src="'.dc_admin_icon_url($fav['small-icon']).'" alt="" /> '.'<span class="zoom"><img src="'.dc_admin_icon_url($fav['large-icon']).'" alt="" /></span>'. 560 form::field(array('order['.$k.']'),2,3,$count,'position','',false,'title="'.sprintf(__('position of %s'),$fav['title']).'"'). 561 form::hidden(array('dynorder[]','dynorder-'.$k.''),$k). 562 form::checkbox(array('remove[]','fuk-'.$k),$k).__($fav['title']).'</label>'. 563 '</li>'; 564 $user_fav[] = $fav['name']; 565 } 487 $user_fav = $core->favs->getFavoriteIDs(false); 488 foreach ($user_fav as $id) { 489 $fav = $core->favs->getFavorite($id); 490 if ($fav != false) { 491 // User favorites only 492 if ($count == 0) echo '<ul class="fav-list">'; 493 $count++; 494 echo '<li id="fu-'.$id.'">'.'<label for="fuk-'.$id.'">'. 495 '<img src="'.dc_admin_icon_url($fav['small-icon']).'" alt="" /> '.'<span class="zoom"><img src="'.dc_admin_icon_url($fav['large-icon']).'" alt="" /></span>'. 496 form::field(array('order['.$id.']'),2,3,$count,'position','',false,'title="'.sprintf(__('position of %s'),$fav['title']).'"'). 497 form::hidden(array('dynorder[]','dynorder-'.$id.''),$id). 498 form::checkbox(array('remove[]','fuk-'.$id),$id).__($fav['title']).'</label>'. 499 '</li>'; 566 500 } 567 501 } … … 593 527 } 594 528 595 $default_fav = array(); 596 foreach ($ws->dumpPrefs() as $k => $v) { 597 // Global favorites only 598 if ($v['global']) { 599 $fav = unserialize($v['value']); 600 if (($fav['permissions'] == '*') || $core->auth->check($fav['permissions'],$core->blog->id)) { 601 $default_fav[] = $fav['name']; 602 } 603 } 604 } 605 529 $avail_fav = $core->favs->getFavorites($core->favs->getAvailableFavoritesIDs()); 530 $default_fav_ids = array(); 531 foreach($core->favs->getFavoriteIDs(true) as $v) { 532 $default_fav_ids[$v]=true; 533 } 606 534 echo '</div>'; # /box my-fav 607 535 … … 610 538 echo '<h5 class="pretty-title">'.__('Other available favorites').'</h5>'; 611 539 $count = 0; 612 $array = $_fav;613 540 function cmp($a,$b) { 614 if ( __($a[1]) == __($b[1])) {541 if ($a['title'] == $b['title']) { 615 542 return 0; 616 543 } 617 return (__($a[1]) < __($b[1])) ? -1 : 1; 618 } 619 $array=$array->getArrayCopy(); 620 uasort($array,'cmp'); 621 foreach ($array as $k => $fav) { 622 if (($fav[5] == '*') || $core->auth->check($fav[5],$core->blog->id)) { 623 if (!in_array($fav[0], $user_fav)) { 624 if ($count == 0) echo '<ul class="fav-list">'; 625 $count++; 626 echo '<li id="fa-'.$fav[0].'">'.'<label for="fak-'.$fav[0].'">'. 627 '<img src="'.dc_admin_icon_url($fav[3]).'" alt="" /> '. 628 '<span class="zoom"><img src="'.dc_admin_icon_url($fav[4]).'" alt="" /></span>'. 629 form::checkbox(array('append[]','fak-'.$fav[0]),$k). 630 __($fav[1]).'</label>'. 631 (in_array($fav[0], $default_fav) ? ' <span class="default-fav"><img src="images/selected.png" alt="'.__('(default favorite)').'" /></span>' : ''). 632 '</li>'; 633 } 634 } 544 return ($a['title'] < $b['title']) ? -1 : 1; 545 } 546 uasort($avail_fav,'cmp'); 547 548 foreach ($avail_fav as $k => $v) { 549 if (in_array($k,$user_fav)) { 550 unset($avail_fav[$k]); 551 } 552 } 553 foreach ($avail_fav as $k=>$fav) { 554 if ($count == 0) echo '<ul class="fav-list">'; 555 $count++; 556 echo '<li id="fa-'.$k.'">'.'<label for="fak-'.$k.'">'. 557 '<img src="'.dc_admin_icon_url($fav['small-icon']).'" alt="" /> '. 558 '<span class="zoom"><img src="'.dc_admin_icon_url($fav['large-icon']).'" alt="" /></span>'. 559 form::checkbox(array('append[]','fak-'.$k),$k). 560 $fav['title'].'</label>'. 561 (isset($default_fav_ids[$k]) ? ' <span class="default-fav"><img src="images/selected.png" alt="'.__('(default favorite)').'" /></span>' : ''). 562 '</li>'; 635 563 } 636 564 if ($count > 0) echo '</ul>'; -
inc/admin/prepend.php
r2159 r2229 21 21 // HTTP/1.0 22 22 header("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 53 23 54 24 function dc_load_locales() { … … 230 200 $user_ui_nofavmenu = $core->auth->user_prefs->interface->nofavmenu; 231 201 232 # Standard favorites233 $_fav = new ArrayObject(); 202 $core->favs = new dcFavorites($core); 203 234 204 235 205 # [] : Title, URL, small icon, large icon, permissions, id, class 236 206 # NB : '*' in permissions means any, null means super admin only 237 207 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));283 208 284 209 # Menus creation 210 $_menu = new ArrayObject(); 285 211 $_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 } 288 215 $_menu['Blog'] = new dcMenu('blog-menu','Blog'); 289 216 $_menu['System'] = new dcMenu('system-menu','System'); 290 217 $_menu['Plugins'] = new dcMenu('plugins-menu','Plugins'); 291 292 218 # Loading plugins 293 219 $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 297 226 298 227 # Set menu titles … … 301 230 $_menu['Blog']->title = __('Blog'); 302 231 $_menu['Plugins']->title = __('Plugins'); 303 if (!$user_ui_nofavmenu) 304 $_menu['Favorites']->title = __('My favorites'); 232 305 233 306 234 /* … … 352 280 $core->auth->isSuperAdmin() || 353 281 $core->auth->check('usage,contentadmin',$core->blog->id) && $core->auth->getBlogCount() > 1); 354 355 if (!$user_ui_nofavmenu) {356 // Set favorites menu357 $ws = $core->auth->user_prefs->addWorkspace('favorites');358 $count = 0;359 foreach ($ws->dumpPrefs() as $k => $v) {360 // User favorites only361 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 any373 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" fav385 $_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 }390 282 391 283 if (empty($core->blog->settings->system->jquery_migrate_mute)) { -
inc/core/class.dc.workspace.php
r1179 r2229 127 127 return null; 128 128 } 129 129 130 /** 131 Returns global pref value if exists. 132 133 @param n <b>string</b> Pref name 134 @return <b>mixed</b> 135 */ 136 public function getGlobal($n) 137 { 138 if (isset($this->global_prefs[$n]['value'])) { 139 return $this->global_prefs[$n]['value']; 140 } 141 142 return null; 143 } 144 145 /** 146 Returns local pref value if exists. 147 148 @param n <b>string</b> Pref name 149 @return <b>mixed</b> 150 */ 151 public function getLocal($n) 152 { 153 if (isset($this->local_prefs[$n]['value'])) { 154 return $this->local_prefs[$n]['value']; 155 } 156 157 return null; 158 } 130 159 /** 131 160 Magic __get method. -
inc/prepend.php
r1999 r2229 46 46 $__autoload['dcWorkspace'] = dirname(__FILE__).'/core/class.dc.workspace.php'; 47 47 $__autoload['dcPrefs'] = dirname(__FILE__).'/core/class.dc.prefs.php'; 48 $__autoload['dcFavorites'] = dirname(__FILE__).'/admin/class.dC.favorites.php'; 48 49 49 50 $__autoload['rsExtPost'] = dirname(__FILE__).'/core/class.dc.rs.extensions.php';
Note: See TracChangeset
for help on using the changeset viewer.