X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=include%2Fadmin%2Fmenus.php;h=1fbb24f687d49319ce289467b66413c1be806683;hb=fcc3110e8eee6ce903281d41f0e4b24e45f986dd;hp=269c4c790b2fb46122dd2b582e0c16f5d170e388;hpb=3957bfef9f70e565776a7e743c6e70623556db35;p=diogenes.git
diff --git a/include/admin/menus.php b/include/admin/menus.php
index 269c4c7..1fbb24f 100644
--- a/include/admin/menus.php
+++ b/include/admin/menus.php
@@ -1,37 +1,16 @@
barrel;
+$bmenu = new Diogenes_Barrel_Menu($globals->db, $bbarrel->table_menu);
// the id of the parent menu
$MIDpere = isset($_REQUEST['MIDpere']) ? $_REQUEST['MIDpere'] : 0;
-/**
- * This function swaps entries $a and $b within $parent.
- */
-function swapentries($parent,$a,$b,$table_menu)
-{
- global $globals;
- $res = $globals->db->query("SELECT MID from $table_menu where MIDpere=$parent and (ordre=$a or ordre=$b) ORDER BY ordre");
- /* make sure that $a <= $b */
- if ($a > $b)
- {
- $c = $a;
- $a = $b;
- $b = $c;
- }
- /* perform swap */
- list($MIDa) = mysql_fetch_row($res);
- list($MIDb) = mysql_fetch_row($res);
- mysql_free_result($res);
-
- $globals->db->query("UPDATE $table_menu SET ordre=$b WHERE MID=$MIDa");
- $globals->db->query("UPDATE $table_menu SET ordre=$a WHERE MID=$MIDb");
-}
-
-
//// start constructing the page
$page->assign('greeting',__("The site's menus"));
@@ -41,64 +20,39 @@ switch ($action) {
/* we want to erase the current entry */
case "supprimer":
$MID = $_REQUEST['MID'];
- if (mysql_num_rows($globals->db->query("SELECT MID FROM {$bbarrel->table_menu} WHERE MIDpere=$MID")) > 0) {
- $page->info(__("The selected menu has child items, please remove them first."));
- break;
- }
-
- /* erase the current entry */
- $globals->db->query("DELETE FROM {$bbarrel->table_menu} WHERE MID=$MID");
-
- /* renumber the other menu entries so that they are between 1 and the number of entries */
- $res = $globals->db->query("SELECT MID FROM {$bbarrel->table_menu} WHERE MIDpere=$MIDpere ORDER BY ordre");
- $i = 0;
- while (list($MIDtoorder) = mysql_fetch_array($res)) {
- $i++;
- $globals->db->query("UPDATE {$bbarrel->table_menu} SET ordre=$i WHERE MID=$MIDtoorder");
- }
- mysql_free_result($res);
+ $bmenu->deleteEntry($MID, $MIDpere, $page);
break;
/* bring an entry up in the menu */
case "remonter":
$ordre = $_REQUEST['ordre'];
- swapentries($MIDpere,$ordre-1,$ordre,$bbarrel->table_menu);
+ $bmenu->swapEntries($MIDpere, $ordre-1, $ordre);
break;
/* push an entry down in the menu */
case "descendre":
$ordre = $_REQUEST['ordre'];
- swapentries($MIDpere,$ordre,$ordre+1,$bbarrel->table_menu);
+ $bmenu->swapEntries($MIDpere, $ordre, $ordre+1);
break;
/* create or update a menu entry */
case "modifier":
$typelink = $_REQUEST['typelink'];
+ $props = array(
+ 'parent' => $MIDpere,
+ 'pid' => 0,
+ 'link' => '',
+ 'title' => $_REQUEST['title'],
+ );
switch ($typelink) {
case "boutonPI" :
- $pid = isset($_REQUEST['PIvaleur']) ? $_REQUEST['PIvaleur'] : 0;
- $link = "";
+ $props['pid'] = isset($_REQUEST['PIvaleur']) ? $_REQUEST['PIvaleur'] : 0;
break;
case "boutonSE" :
- $pid = 0;
- $link = $_REQUEST['SEvaleur'];
+ $props['link'] = $_REQUEST['SEvaleur'];
break;
- default:
- $pid = 0;
- $link = "";
- }
- $MID = $_REQUEST['MID'];
- $title = $_REQUEST['title'];
- if ($MID == 0) {
- $res=$globals->db->query("SELECT MAX(ordre) from {$bbarrel->table_menu} where MIDpere=$MIDpere");
- list($ordre) = mysql_fetch_row($res);
- $ordre++;
- $globals->db->query("INSERT INTO {$bbarrel->table_menu} SET MIDpere='$MIDpere',ordre='$ordre',title='$title',link='$link',pid='$pid'");
- $MID = mysql_insert_id();
- } else {
- $globals->db->query("UPDATE {$bbarrel->table_menu} SET title='$title',link='$link',pid='$pid' WHERE MID=$MID");
}
-
+ $MID = $bmenu->writeEntry($_REQUEST['MID'], $props);
break;
/* display the form to edit an entry */
@@ -111,9 +65,10 @@ case "editer":
// if this is an existing entry, retrieve data
if ($MID) {
- $res = $globals->db->query("SELECT link,title,pid FROM {$bbarrel->table_menu} WHERE MID=$MID");
- list($link, $title, $pid) = mysql_fetch_row($res);
- mysql_free_result($res);
+ $mcache = $bmenu->menuRead();
+ $link = $mcache[$MID]['link'];
+ $title = $mcache[$MID]['title'];
+ $pid = $mcache[$MID]['pid'];
}
// fill out form data
@@ -168,16 +123,17 @@ case "editer":
}
// get the maximum order
-$res=$globals->db->query("SELECT MAX(ordre) from {$bbarrel->table_menu} where MIDpere=$MIDpere");
-list($maxOrdre)=mysql_fetch_row($res);
-mysql_free_result($res);
-
-// retrieve the entries
-$res = $globals->db->query("SELECT m.MID,m.ordre,m.title,m.link,m.PID,p.title ".
- "from {$bbarrel->table_menu} as m ".
- "left join {$bbarrel->table_page} as p on m.PID=p.PID ".
- "where MIDpere=$MIDpere order by ordre");
-while (list($MID,$ordre,$title,$link,$PID,$ptitle) = mysql_fetch_row($res)) {
+$maxOrdre = $bmenu->maxChildIndex($MIDpere);
+
+// all menu entries from database
+$mcache = $bmenu->menuRead();
+
+foreach($mcache[$MIDpere]['children'] as $MID)
+{
+ $ordre = $mcache[$MID]['ordre'];
+ $title = $mcache[$MID]['title'];
+ $link = $mcache[$MID]['link'];
+ $PID = $mcache[$MID]['pid'];
$clickup="?action=remonter&MIDpere=$MIDpere&ordre=$ordre";
$clickdown="?action=descendre&MIDpere=$MIDpere&ordre=$ordre";
@@ -192,7 +148,8 @@ while (list($MID,$ordre,$title,$link,$PID,$ptitle) = mysql_fetch_row($res)) {
// describe the current link
if ($PID) {
- $descr = "$ptitle";
+ $tpage = Diogenes_Barrel_Page::fromDb($bbarrel, $PID);
+ $descr = "".$tpage->props['title']."";
} elseif ($link) {
$descr = "[ext] $link";
} else {
@@ -205,20 +162,15 @@ while (list($MID,$ordre,$title,$link,$PID,$ptitle) = mysql_fetch_row($res)) {
stripslashes($descr),
$edit,$del,$up,$down));
}
-mysql_free_result($res);
// all menu entries from database
-$mcache = $page->menuRead();
-$filiation = $page->menuToRoot($mcache,$MIDpere,array());
+$filiation = $bmenu->menuToRoot($mcache,$MIDpere,array());
$menubar = array();
foreach($filiation as $mykey=>$myval) {
if ($myval == 0) {
$blab = "home";
} else {
- $res = $globals->db->query("SELECT title FROM {$bbarrel->table_menu} WHERE MID='$myval'");
- list($blab) = mysql_fetch_row($res);
- $blab = stripslashes($blab);
- mysql_free_result($res);
+ $blab = stripslashes($mcache[$myval]['title']);
}
array_unshift($menubar,$mykey ? array($blab,"?MIDpere=$myval") : array($blab));
}