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
  • admin/preferences.php

    r2206 r2229  
    215215               throw new Exception(__('No favorite selected')); 
    216216          } 
    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); 
    221218          foreach ($_POST['append'] as $k => $v) 
    222219          { 
    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; 
    242222               } 
    243223          } 
    244       
     224          $core->favs->setFavoriteIDs($user_favs,false); 
     225 
    245226          if (!$core->error->flag()) { 
    246227               http::redirect('preferences.php?append=1'); 
     
    258239               throw new Exception(__('No favorite selected')); 
    259240          } 
    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) 
    263246          { 
    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]); 
    269249               } 
    270250          } 
    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); 
    289252          if (!$core->error->flag()) { 
    290253               http::redirect('preferences.php?removed=1'); 
     
    307270if (!empty($_POST['saveorder']) && !empty($order)) 
    308271{ 
    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); 
    326278     if (!$core->error->flag()) { 
    327279          http::redirect('preferences.php?&neworder=1'); 
     
    331283# Replace default favorites by current set (super admin only) 
    332284if (!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); 
    350287 
    351288     if (!$core->error->flag()) { 
     
    548485 
    549486$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); 
     488foreach ($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>'; 
    566500     } 
    567501} 
     
    593527} 
    594528 
    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(); 
     531foreach($core->favs->getFavoriteIDs(true) as $v) { 
     532     $default_fav_ids[$v]=true; 
     533} 
    606534echo '</div>'; # /box my-fav 
    607535 
     
    610538echo '<h5 class="pretty-title">'.__('Other available favorites').'</h5>'; 
    611539$count = 0; 
    612 $array = $_fav; 
    613540function cmp($a,$b) { 
    614     if (__($a[1]) == __($b[1])) { 
     541    if ($a['title'] == $b['title']) { 
    615542        return 0; 
    616543    } 
    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} 
     546uasort($avail_fav,'cmp'); 
     547 
     548foreach ($avail_fav as $k => $v) { 
     549     if (in_array($k,$user_fav)) { 
     550          unset($avail_fav[$k]); 
     551     } 
     552} 
     553foreach ($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>'; 
    635563} 
    636564if ($count > 0) echo '</ul>'; 
Note: See TracChangeset for help on using the changeset viewer.

Sites map