Dotclear

Changeset 3075:2efd73dc6db6


Ignore:
Timestamp:
08/16/15 09:27:01 (9 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Sort additionnal menu items (provided by 3rd party plugins) - preserve default menu items and favorites order

Location:
inc/admin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • inc/admin/class.dc.favorites.php

    r2725 r3075  
    315315                    true, 
    316316                    $v['id'], 
    317                     $v['class'] 
     317                    $v['class'], 
     318                    true 
    318319               ); 
    319320          } 
  • inc/admin/class.dc.menu.php

    r2566 r3075  
    2222          $this->title = $title; 
    2323          $this->itemSpace = $itemSpace; 
     24          $this->pinned = array(); 
    2425          $this->items = array(); 
    2526     } 
    2627 
    27      public function addItem($title,$url,$img,$active,$show=true,$id=null,$class=null) 
     28     public function addItem($title,$url,$img,$active,$show=true,$id=null,$class=null,$pinned=false) 
    2829     { 
    2930          if($show) { 
    30                $this->items[] = $this->itemDef($title,$url,$img,$active,$id,$class); 
     31               $item = $this->itemDef($title,$url,$img,$active,$id,$class); 
     32               if ($pinned) { 
     33                    $this->pinned[] = $item; 
     34               } else { 
     35                    $this->items[$title] = $item; 
     36               } 
    3137          } 
    3238     } 
    3339 
    34      public function prependItem($title,$url,$img,$active,$show=true,$id=null,$class=null) 
     40     public function prependItem($title,$url,$img,$active,$show=true,$id=null,$class=null,$pinned=false) 
    3541     { 
    3642          if ($show) { 
    37                array_unshift($this->items,$this->itemDef($title,$url,$img,$active,$id,$class)); 
     43               $item = $this->itemDef($title,$url,$img,$active,$id,$class); 
     44               if ($pinned) { 
     45                    array_unshift($this->pinned,$item); 
     46               } else { 
     47                    $this->items[$title] = $item; 
     48               } 
    3849          } 
    3950     } 
     
    4152     public function draw() 
    4253     { 
    43           if (count($this->items) == 0) { 
     54          if (count($this->items) + count($this->pinned) == 0) { 
    4455               return ''; 
    4556          } 
     
    5061          '<ul>'."\n"; 
    5162 
    52           for ($i=0; $i<count($this->items); $i++) 
     63          // 1. Display pinned items (unsorted) 
     64          for ($i=0; $i<count($this->pinned); $i++) 
     65          { 
     66               if ($i+1 < count($this->pinned) && $this->itemSpace != '') { 
     67                    $res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$this->pinned[$i]); 
     68                    $res .= "\n"; 
     69               } else { 
     70                    $res .= $this->pinned[$i]."\n"; 
     71               } 
     72          } 
     73 
     74          // 2. Display unpinned itmes (sorted) 
     75          $i = 0; 
     76          dcUtils::lexicalKeySort($this->items); 
     77          foreach ($this->items as $title => $item) 
    5378          { 
    5479               if ($i+1 < count($this->items) && $this->itemSpace != '') { 
    55                     $res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$this->items[$i]); 
     80                    $res .= preg_replace('|</li>$|',$this->itemSpace.'</li>',$item); 
    5681                    $res .= "\n"; 
    5782               } else { 
    58                     $res .= $this->items[$i]."\n"; 
     83                    $res .= $item."\n"; 
    5984               } 
     85               $i++; 
    6086          } 
    6187 
  • inc/admin/prepend.php

    r3059 r3075  
    6969 
    7070     $url = $core->adminurl->get($adminurl); 
    71      $_menu[$section]->prependItem($desc,$url,$icon,preg_match('/'.preg_quote($url).'(\?.*)?$/',$_SERVER['REQUEST_URI']),$perm); 
     71     $_menu[$section]->prependItem($desc,$url,$icon, 
     72          preg_match('/'.preg_quote($url).'(\?.*)?$/',$_SERVER['REQUEST_URI']),$perm,null,null,true); 
    7273} 
    7374 
Note: See TracChangeset for help on using the changeset viewer.

Sites map