2 require_once 'diogenes.common.inc.php';
3 require_once 'diogenes.admin.inc.php';
5 $page = new DiogenesAdmin
;
6 $bbarrel =& $page->barrel
;
8 // the id of the parent menu
9 $MIDpere = isset($_REQUEST['MIDpere']) ?
$_REQUEST['MIDpere'] : 0;
12 * This function swaps entries $a and $b within $parent.
14 function swapentries($parent,$a,$b,$table_menu)
17 $res = $globals->db
->query("SELECT MID from $table_menu where MIDpere=$parent and (ordre=$a or ordre=$b) ORDER BY ordre");
18 /* make sure that $a <= $b */
26 list($MIDa) = mysql_fetch_row($res);
27 list($MIDb) = mysql_fetch_row($res);
28 mysql_free_result($res);
30 $globals->db
->query("UPDATE $table_menu SET ordre=$b WHERE MID=$MIDa");
31 $globals->db
->query("UPDATE $table_menu SET ordre=$a WHERE MID=$MIDb");
35 //// start constructing the page
37 $page->assign('greeting',__("The site's menus"));
38 $action = isset($_REQUEST['action']) ?
$_REQUEST["action"] : "";
41 /* we want to erase the current entry */
43 $MID = $_REQUEST['MID'];
44 if (mysql_num_rows($globals->db
->query("SELECT MID FROM {$bbarrel->table_menu} WHERE MIDpere=$MID")) > 0) {
45 $page->info(__("The selected menu has child items, please remove them first."));
49 /* erase the current entry */
50 $globals->db
->query("DELETE FROM {$bbarrel->table_menu} WHERE MID=$MID");
52 /* renumber the other menu entries so that they are between 1 and the number of entries */
53 $res = $globals->db
->query("SELECT MID FROM {$bbarrel->table_menu} WHERE MIDpere=$MIDpere ORDER BY ordre");
55 while (list($MIDtoorder) = mysql_fetch_array($res)) {
57 $globals->db
->query("UPDATE {$bbarrel->table_menu} SET ordre=$i WHERE MID=$MIDtoorder");
59 mysql_free_result($res);
62 /* bring an entry up in the menu */
64 $ordre = $_REQUEST['ordre'];
65 swapentries($MIDpere,$ordre-1,$ordre,$bbarrel->table_menu
);
68 /* push an entry down in the menu */
70 $ordre = $_REQUEST['ordre'];
71 swapentries($MIDpere,$ordre,$ordre+
1,$bbarrel->table_menu
);
74 /* create or update a menu entry */
76 $typelink = $_REQUEST['typelink'];
79 $pid = isset($_REQUEST['PIvaleur']) ?
$_REQUEST['PIvaleur'] : 0;
84 $link = $_REQUEST['SEvaleur'];
90 $MID = $_REQUEST['MID'];
91 $title = $_REQUEST['title'];
93 $res=$globals->db
->query("SELECT MAX(ordre) from {$bbarrel->table_menu} where MIDpere=$MIDpere");
94 list($ordre) = mysql_fetch_row($res);
96 $globals->db
->query("INSERT INTO {$bbarrel->table_menu} SET MIDpere='$MIDpere',ordre='$ordre',title='$title',link='$link',pid='$pid'");
97 $MID = mysql_insert_id();
99 $globals->db
->query("UPDATE {$bbarrel->table_menu} SET title='$title',link='$link',pid='$pid' WHERE MID=$MID");
104 /* display the form to edit an entry */
110 $MID = isset($_REQUEST['MID']) ?
$_REQUEST['MID'] : 0;
112 // if this is an existing entry, retrieve data
114 $res = $globals->db
->query("SELECT link,title,pid FROM {$bbarrel->table_menu} WHERE MID=$MID");
115 list($link, $title, $pid) = mysql_fetch_row($res);
116 mysql_free_result($res);
119 // fill out form data
120 $chk_pi = ($pid > 0);
121 $chk_se = ($link != "");
122 $chk_z = !$chk_pi && !$chk_se;
123 $chk = " checked=\"checked\"";
125 $page->assign('post',$page->script_self());
126 $page->assign('MID', $MID);
127 $page->assign('MIDpere',$_REQUEST['MIDpere']);
128 $page->assign('title',stripslashes($title));
129 $page->assign('chk_z',($chk_z ?
$chk : ""));
130 $page->assign('chk_pi',($chk_pi ?
$chk : ""));
131 $page->assign('chk_se',($chk_se ?
$chk : ""));
132 $page->assign('SEvaleur', $link ?
$link : "http://");
133 $page->assign('page_sel',$pid);
135 // retrieve all the barrel's pages
136 $fpages = $bbarrel->getPages();
137 $page_opts = array();
138 foreach($fpages as $pkey => $ppage)
140 $pageloc = $bbarrel->getLocation($pkey);
141 $page_opts[$pkey] = ( strlen($pageloc) ?
"<$pageloc> " : "") . $ppage->props
['title'];
143 $page->assign('page_opts', $page_opts);
145 $res = $globals->db
->query("SELECT PID,title from {$bbarrel->table_page} ORDER BY title");
146 while (list($myPID,$myTITLE) = mysql_fetch_row($res)) {
147 //$pageloc = $bbarrel->getLocation($pkey);
148 //$page_opts[$pkey] = ( strlen($pageloc) ? "<$pageloc> " : "") . $ppage->props['title'];
149 $page->append('page_values',$myPID);
150 $page->append('page_names',stripslashes($myTITLE));
152 mysql_free_result($res);
154 $page->assign('doedit',1);
157 $page->assign('msg_prop',__("menu entry properties"));
158 $page->assign('msg_title',__("entry title"));
159 $page->assign('msg_type',__("type of link"));
160 $page->assign('msg_type_z',__("none"));
161 $page->assign('msg_type_pi',__("internal link"));
162 $page->assign('msg_type_se',__("external link"));
164 $page->assign('submit',__("Submit"));
165 $page->display('admin-menus.tpl');
170 // get the maximum order
171 $res=$globals->db
->query("SELECT MAX(ordre) from {$bbarrel->table_menu} where MIDpere=$MIDpere");
172 list($maxOrdre)=mysql_fetch_row($res);
173 mysql_free_result($res);
175 // retrieve the entries
176 $res = $globals->db
->query("SELECT m.MID,m.ordre,m.title,m.link,m.PID,p.title ".
177 "from {$bbarrel->table_menu} as m ".
178 "left join {$bbarrel->table_page} as p on m.PID=p.PID ".
179 "where MIDpere=$MIDpere order by ordre");
180 while (list($MID,$ordre,$title,$link,$PID,$ptitle) = mysql_fetch_row($res)) {
181 $clickup="?action=remonter&MIDpere=$MIDpere&ordre=$ordre";
182 $clickdown="?action=descendre&MIDpere=$MIDpere&ordre=$ordre";
184 // do we offer an "up" link ?
185 $up = ($ordre != 1) ?
array(__("move up"),$clickup) : _("move up");
187 // do we offer a "down" link ?
188 $down = ($ordre != $maxOrdre) ?
array(__("move down"),$clickdown) : $down = __("move down");
190 $edit = array(__("edit"), "?action=editer&MIDpere=$MIDpere&MID=$MID");
191 $del = array(__("delete"), "?action=supprimer&MIDpere=$MIDpere&MID=$MID");
193 // describe the current link
195 $descr = "<a href=\"pages?dir=$PID\">$ptitle</a>";
197 $descr = "<a href=\"$link\">[ext] $link</a>";
202 // smarty assignments
203 $page->append('entries',
204 array($MID, array(stripslashes($title), "?MIDpere=$MID"),
205 stripslashes($descr),
206 $edit,$del,$up,$down));
208 mysql_free_result($res);
210 $filiation = $page->menuToRoot($MIDpere,array());
212 foreach($filiation as $mykey=>$myval) {
214 $blab = "<i>home</i>";
216 $res = $globals->db
->query("SELECT title FROM {$bbarrel->table_menu} WHERE MID='$myval'");
217 list($blab) = mysql_fetch_row($res);
218 $blab = stripslashes($blab);
219 mysql_free_result($res);
221 array_unshift($menubar,$mykey ?
array($blab,"?MIDpere=$myval") : array($blab));
223 $page->assign('menubar',$menubar);
224 $page->assign('script',$page->script_self());
225 $page->assign('MIDpere',$MIDpere);
228 $page->assign('msg_ext',__("External links are denoted with the [ext] prefix."));
229 $page->assign('msg_menu',__("menu name"));
230 $page->assign('msg_link',__("link"));
231 $page->assign('msg_actions',__("actions"));
232 $page->assign('msg_menubar',__("Menu"));
233 $page->assign('submit',__("Add new entry"));
234 $page->display('admin-menus.tpl');