Dotclear


Ignore:
Timestamp:
10/22/18 14:46:15 (7 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Use numeric fields (with min/max) for sortering items (categories, …), fix ordering of simple menu items when drag'n'drop is disabled

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/simpleMenu/index.php

    r3898 r3902  
    321321                } 
    322322                $menu = $newmenu; 
     323 
     324                $core->auth->user_prefs->addWorkspace('accessibility'); 
     325                if ($core->auth->user_prefs->accessibility->nodragdrop) { 
     326                    # Order menu items 
     327                    $order = []; 
     328                    if (empty($_POST['im_order']) && !empty($_POST['order'])) { 
     329                        $order = $_POST['order']; 
     330                        asort($order); 
     331                        $order = array_keys($order); 
     332                    } elseif (!empty($_POST['im_order'])) { 
     333                        $order = $_POST['im_order']; 
     334                        if (substr($order, -1) == ',') { 
     335                            $order = substr($order, 0, strlen($order) - 1); 
     336                        } 
     337                        $order = explode(',', $order); 
     338                    } 
     339                    if (!empty($order)) { 
     340                        $newmenu = []; 
     341                        foreach ($order as $i => $k) { 
     342                            $newmenu[] = [ 
     343                                'label' => $menu[$k]['label'], 
     344                                'descr' => $menu[$k]['descr'], 
     345                                'url'   => $menu[$k]['url']]; 
     346                        } 
     347                        $menu = $newmenu; 
     348                    } 
     349                } 
     350 
    323351                // Save menu in blog settings 
    324352                $core->blog->settings->system->put('simpleMenu', $menu); 
     
    332360            } 
    333361        } 
    334  
    335         # Order menu items 
    336         $order = []; 
    337         if (empty($_POST['im_order']) && !empty($_POST['order'])) { 
    338             $order = $_POST['order']; 
    339             asort($order); 
    340             $order = array_keys($order); 
    341         } elseif (!empty($_POST['im_order'])) { 
    342             $order = $_POST['im_order']; 
    343             if (substr($order, -1) == ',') { 
    344                 $order = substr($order, 0, strlen($order) - 1); 
    345             } 
    346             $order = explode(',', $order); 
    347         } 
    348  
    349         if (!empty($_POST['updateaction']) && !empty($order)) { 
    350             try { 
    351                 $newmenu = []; 
    352                 foreach ($order as $i => $k) { 
    353                     $newmenu[] = [ 
    354                         'label' => $menu[$k]['label'], 
    355                         'descr' => $menu[$k]['descr'], 
    356                         'url'   => $menu[$k]['url']]; 
    357                 } 
    358                 $menu = $newmenu; 
    359                 // Save menu in blog settings 
    360                 $core->blog->settings->system->put('simpleMenu', $menu); 
    361                 $core->blog->triggerBlog(); 
    362  
    363                 // All done successfully, return to menu items list 
    364                 dcPage::addSuccessNotice(__('Menu items have been successfully updated.')); 
    365                 http::redirect($p_url); 
    366             } catch (Exception $e) { 
    367                 $core->error->add($e->getMessage()); 
    368             } 
    369         } 
    370  
    371362    } 
    372363} 
     
    573564            form::number(['order[' . $i . ']'], [ 
    574565                'min'        => 1, 
     566                'max'        => count($menu), 
    575567                'default'    => $count, 
    576568                'class'      => 'position', 
Note: See TracChangeset for help on using the changeset viewer.

Sites map