source: trunk/spip/2.1/extensions/magusine-portage2.1/exec/menu.php @ 756

Last change on this file since 756 was 756, checked in by guillermoacedo@…, 14 years ago

se agrego la correccion de magusine para 2.1 basica

  • Property svn:executable set to *
File size: 17.3 KB
Line 
1<?php
2/***************************************************************************\
3 Plugin   : magusine
4 Licence  : GPL
5 Auteurs  : Stéphane Noël, Philippe Vanderlinden
6 Infos    : http://www.spip-contrib.net/Le-plugin-Magusine
7            http://www.magunews.net/spip.php?rubrique645
8
9 $LastChangedRevision: 12345 $
10 $LastChangedBy: bubu $
11 $LastChangedDate: 2008-03-21 15:50:47 +0100 (ven, 21 mar 2008) $
12 \***************************************************************************/
13
14if (!defined("_ECRIRE_INC_VERSION")) return;
15include_spip('inc/presentation');
16
17include_spip('inc/arty_selecteur');
18
19function exec_menu() {
20
21        $commencer_page = charger_fonction('commencer_page', 'inc');
22        echo $commencer_page('&laquo; '._T('arty:titre_options_menu').' &raquo;', 'configuration', 'magusine');
23
24        global $connect_statut;
25        if ($connect_statut != "0minirezo" ) {
26                echo "<p><b>"._T('arty:acces_a_la_page')."</b></p>";
27                fin_page();
28                exit;
29        }
30
31        if ($_GET['mode'] == "sauver") {
32                $types = array(
33      "r" => "rubrique",
34      "a" => "article",
35      "g" => "groupe",
36      "m" => "mot",
37                );
38
39                $langue_menu=$_GET['langue_menu'];
40                print_r($_POST);
41                print_r($_GET);
42                if ($_GET['niveaux'] == "flat") {
43                        $valeurs_menu = array();
44                        if (isset($_POST['selection'])) {
45                                foreach($_POST['selection'] as $num => $element) {
46                                        $morceaux = array();
47                                        if ($element{0} == "l") {
48                                                $element=transcode($element);
49                                                if (eregi("^l([0-9]+)\|(.*)\|(.*)", $element, $morceaux)) {
50                                                        $type = "lien";
51                                                        $id = $morceaux[1];
52                                                        $nom = $morceaux[2];
53                                                        $url = $morceaux[3];
54                                                        $num = (int) $num;
55                                                        $valeurs_menu[] = "($num, '$type', $id, '$langue_menu', '$nom', '$url', 0)";
56                                                }
57                                        } else if (eregi("^(r|a|g|m)([0-9]+)$", $element, $morceaux)) {
58                                                $type = $types[$morceaux[1]];
59                                                $id = (int) $morceaux[2];
60                                                $num = (int) $num;
61                                                // ici ajout de la langue
62                                                $valeurs_menu[] = "($num, '$type', $id, '$langue_menu', '', '', 0)";
63                                        }
64                                }
65                        }
66                        spip_query("DELETE FROM spip_arty_menu WHERE langue='$langue_menu'");
67                        if (count($valeurs_menu)) {
68                                $query = "INSERT INTO spip_arty_menu (ordre, type, id, langue, nom, url, id_parent) VALUES ".implode(", ", $valeurs_menu);
69                                spip_query($query);
70                        }
71                        //die;
72                        echo _T("arty:le_changement_a_ete_effectue");
73                        return false;
74
75                } else if ($_GET['niveaux'] == "nested") {
76                        $arty_cpt_lien = 0;
77                        $valeurs_menu = array();
78                        if (isset($_POST['selection'])) {
79
80                                foreach($_POST['selection'] as $num => $element) {
81                                        $morceaux = array();
82                                        if ($element['id']{0} == "l") {
83                                                       
84                                                $element['id']=transcode($element['id']);
85                                                echo "elem =-".$element['id']."----\n";
86                                                if (ereg("^l([0-9]+)\|(.*)\|(.*)", $element['id'], $morceaux)) {
87                                                        $type = "lien";
88                                                        $id = $morceaux[1];
89                                                        $nom = $morceaux[2];
90                                                        $url = $morceaux[3];
91                                                        $num = (int) $num;
92                                                        $valeurs_menu[] = "($num, '$type', $id, '$langue_menu', '$nom', '$url', 0, '')";
93                                                        $arty_cpt_lien++;
94                                                }
95                                        } else if (eregi("^(r|a|g|m)([0-9]+)$", $element['id'], $morceaux)) {
96                                                $type = $types[$morceaux[1]];
97                                                $id = (int) $morceaux[2];
98                                                $num = (int) $num;
99                                                // ici ajout de la langue
100                                                $valeurs_menu[] = "($num, '$type', $id, '$langue_menu', '', '', 0, '')";
101                                        }
102                                        // sous_niveaux
103                                        $enfants = isset($element['children']) ? $element['children'] : false;
104                                        if (is_array($enfants) && isset($id) && isset($type)) {
105                                                $retour = valeursNiveauxR($enfants, $id, $type, $arty_cpt_lien);
106                                                $arty_cpt_lien = $retour[1];
107                                                $valeurs_menu = array_merge($valeurs_menu, $retour[0]);
108                                        }
109                                }
110                        }
111
112                        spip_query("DELETE FROM spip_arty_menu WHERE langue='$langue_menu'");
113                        if (count($valeurs_menu)) {
114                                echo "INSERT INTO spip_arty_menu (ordre, type, id, langue, nom, url, id_parent, type_parent) VALUES ".implode(", ", $valeurs_menu);
115                                $query = "INSERT INTO spip_arty_menu (ordre, type, id, langue, nom, url, id_parent, type_parent) VALUES ".implode(", ", $valeurs_menu);
116                                spip_query($query);
117                        }
118                        //die;
119
120                        echo _T("arty:le_changement_a_ete_effectue");
121                        return false;
122
123                }
124        }
125
126        traiter_post();
127
128        echo barre_onglets("arty", "menu");
129        echo debut_gauche("", true);
130        echo debut_cadre_relief(_DIR_PLUGIN_ARTY.'/images/aide.png', true, "", _T('arty:choix_de_la_langue_menu'));
131        // selection de la langue du menu
132        // recupérer dans le get
133        //print_r($GLOBALS['codes_langues']);
134        $langue_menu= $_GET['langue_menu'];
135        $leslangues_menu=explode(",",$GLOBALS['meta']['langues_utilisees']);
136
137        // par defaut ou si la langue passee n'est pas dans la liste: celle de la langue du site
138        //print_r($leslangues_menu);
139        if ($langue_menu=="" or !in_array($langue_menu, $leslangues_menu)) {
140                $langue_menu=$GLOBALS['meta']['langue_site'];
141        }
142        echo "<p>"._T("arty:si_pas_langue")."</p>";
143        echo "<form action='".generer_url_ecrire("menu")."' method='get'>";
144        echo '<select name="langue_menu" onchange="window.location.href=\'?exec=menu&amp;langue_menu=\'+this.options[this.selectedIndex].value;">';
145
146
147        foreach($leslangues_menu as $fullname) {
148                echo "<option value='$fullname' ".(($langue_menu==$fullname)?'selected="selected"':'').">".$GLOBALS['codes_langues'][$fullname]."</option>";
149        }
150        echo "</select>";
151
152        echo "</form>";
153
154        // choix des niveaux du menu
155        echo "<br /><p>"._T("arty:nombre_niveaux_menu")."</p>";
156
157
158        $resultat= spip_query("SELECT * FROM spip_arty_parametres WHERE parametre ='".$fullname."config_niveaux_menu'");
159        $resultat=spip_fetch_array($resultat);
160        //print_r($_POST);
161        //print_r($resultat);
162        if($resultat) {
163                $niveaux=$resultat['valeur'];
164                $langue=$resultat['valeur2'];
165                $lister_articles=$resultat['valeur3'];
166        } else {
167                $niveaux=1;
168                $langue=$GLOBALS['meta']['langue_site'];
169        }
170
171        echo "<form action='".generer_url_ecrire('menu')."' method='post'>\n";
172        echo "<input type='hidden' name='action_form' value='config_niveaux_menu' />";
173        echo "<input type='hidden' name='langue' value='$langue_menu' />";
174        echo "<p>"._T("arty:intro_niveaux_menu")."</p>";
175        echo "<br /><p>"._T("arty:intro_choix_niveaux")."</p>";
176        echo "<input id='niv1' type='radio' name='niveaux' value='1' ".(($niveaux=="1")?'checked="checked"':'')."> <label for='niv1'>"._T("arty:un_niveau")."</label><br />";
177        echo "<input id='niv2' type='radio' name='niveaux' value='2' ".(($niveaux=="2")?'checked="checked"':'')."> <label for='niv2'>"._T("arty:deux_niveaux")."</label><br />";
178        echo "<input id='nivn' type='radio' name='niveaux' value='n' ".(($niveaux=="n")?'checked="checked"':'')."> <label for='nivn'>"._T("arty:n_niveaux")."</label><br />";
179        echo "<br /><p>"._T("arty:intro_menu_manuel")."</p>";
180        echo "<input id='manuel' type='radio' name='niveaux' value='manuel' ".(($niveaux=="manuel")?'checked="checked"':'')."> <label for='manuel'>"._T("arty:manuel")."</label><br />";
181
182        echo "<br /><p>"._T("arty:intro_lister_articles")."</p>";
183        echo "<input id='lister_articles' type='checkbox' name='lister_articles' ".(($lister_articles=='on')?'checked="checked"':'')."> <label for='lister_articles'>"._T("arty:lister_articles")."</label><br />";
184
185        echo "<br /><input type='submit' value='"._T("arty:enregistrer")."' class='fondo' />";
186
187        echo "</form>";
188
189        echo fin_cadre_relief(true);
190
191        echo debut_droite("", true);
192        echo gros_titre(_T("arty:titre_options_menu"), "", false);
193        echo "<p class='intro'>"._T("arty:intro_menu")."</p>";
194
195        echo "<p class='titre' style='font-weight:bold;'>"._T("arty:menu_actuel")." : ".$GLOBALS['codes_langues'][$langue_menu]."</p>";
196
197        $noms_type_menu = array(
198    '1'      => 'arty:un_niveau',
199    '2'      => 'arty:deux_niveaux',
200    'n'      => 'arty:n_niveaux',
201    'manuel' => 'arty:manuel',
202        );
203
204        echo "<p class='titre' style='font-weight:bold;'>"._T('arty:type_de_menu')." : "._T($noms_type_menu[$niveaux])."</p>";
205
206        $tables_spip = array(
207    'rubrique' => array(
208        "table" => "spip_rubriques",
209        "colonne_id" => "id_rubrique",
210        ),
211    'article' => array(
212        "table" => "spip_articles",
213        "colonne_id" => "id_article",
214        ),
215    'groupe' => array(
216        "table" => "spip_groupes_mots",
217        "colonne_id" => "id_groupe",
218        ),
219    'mot' => array(
220        "table" => "spip_mots",
221        "colonne_id" => "id_mot",
222        ),
223        );
224
225        //echo "test";
226
227        echo '
228    <script type="text/javascript">
229    var traductions = new Object();
230    traductions["rubrique"] = "'._T('arty:rubrique').'";
231    traductions["article"] = "'._T('arty:article').'";
232    traductions["groupe"] = "'._T('arty:groupe').'";
233    traductions["mot"] = "'._T('arty:mot').'";   
234    </script>
235    '; 
236
237        if ($niveaux != "manuel") {
238
239                echo '
240    <script type="text/javascript">
241    var type_sortable = "flat"; 
242    </script>
243    ';
244
245                echo '
246    <ul id="selection">
247    ';
248
249                $result = spip_query("SELECT * FROM spip_arty_menu WHERE id_parent = 0 AND langue='$langue_menu' ORDER BY ordre ASC");
250                if (!spip_mysql_count($result)){
251                        $aucun_menu = true;
252                }
253                while ($row = spip_fetch_array($result)) {
254                        if ($row['type'] != 'lien') {
255                                $result2 = spip_query("SELECT titre FROM ".$tables_spip[$row['type']]['table']." WHERE ".$tables_spip[$row['type']]['colonne_id']." = ".$row['id']);
256                                if (spip_mysql_count($result2)) {
257                                        $row2 = spip_fetch_array($result2);
258                                        echo '<li id="'.substr($row['type'], 0, 1).$row['id'].'" class="sortable">';
259                                        echo $row2["titre"];
260                                        echo " <span class='url_petit'>("._T('arty:'.$row['type']).")</span>";
261                                        echo ' <a href="javascript:supprimer(\'#'.substr($row['type'], 0, 1).$row['id'].'\')">x</a>';
262                                        echo "</li>";
263                                } else {
264                                        spip_query("DELETE FROM spip_arty_menu WHERE id_menu = ".$row["id_menu"]);
265                                }
266                        } else {
267                                       
268                                echo '<li id="l'.$row['id'].'|'.transcodeinv($row['nom']).'|'.transcodeinv($row['url']).'" class="sortable">';
269                                echo $row["nom"];
270
271                                echo " <span class='url_petit'>(".$row["url"].")</span>";
272                                echo ' <a href="javascript:supprimer_lien(\'l'.$row['id']
273                                .'|'.transcodeinv($row['nom']).'|'
274                                . transcodeinv($row['url'])
275                                .'\')">x</a>';
276                                echo "</li>";
277                        }
278                }
279
280                echo '</ul>';
281
282        } else if ($niveaux == "manuel") {
283
284                echo '
285    <script type="text/javascript">
286    var type_sortable = "nested";
287    </script>
288    ';
289
290                echo '
291    <ul id="selection">';
292                $result = spip_query("SELECT * FROM spip_arty_menu WHERE id_parent = 0 AND type_parent = '' AND langue='$langue_menu' ORDER BY ordre ASC");
293                if (!spip_mysql_count($result)){
294                        $aucun_menu = true;
295                }
296                while ($row = spip_fetch_array($result)) {
297                        if ($row['type'] != 'lien') {
298                                $result2 = spip_query("SELECT titre FROM ".$tables_spip[$row['type']]['table']." WHERE ".$tables_spip[$row['type']]['colonne_id']." = ".$row['id']);
299                                if (spip_mysql_count($result2)) {
300                                        $row2 = spip_fetch_array($result2);
301                                        echo '<li id="'.substr($row['type'], 0, 1).$row['id'].'" class="sortable">';
302                                        echo $row2["titre"];
303                                        echo " <span class='url_petit'>("._T('arty:'.$row['type']).")</span>";
304                                        echo ' <a href="javascript:supprimer(\'#'.substr($row['type'], 0, 1).$row['id'].'\')">x</a>';
305
306                                        afficherNiveauxR($row['id'], $row['type'], $langue_menu);
307
308                                        echo "</li>";
309                                } else {
310                                        spip_query("DELETE FROM spip_arty_menu WHERE id_menu = ".$row["id_menu"]);
311                                }
312                        } else {
313
314                                $row['id']=transcodeinv($row['id']);
315                                echo '<li id="l'.$row['id'].'|'.transcodeinv($row['nom']).'|'.transcodeinv($row['url']).'" class="sortable">';
316
317                                echo $row["nom"];
318                                echo " <span class='url_petit'>(".$row["url"].")</span>";
319                                echo ' <a href="javascript:supprimer_lien(\'l'.$row['id'].'|'.transcodeinv($row['nom']).'|'.transcodeinv($row['url']).'\')">x</a>';
320
321                                afficherNiveauxR($row['id'], $row['type'], $langue_menu);
322
323                                echo "</li>";
324                        }
325                }
326                echo '</ul>';
327
328        }
329
330        if (isset($aucun_menu)){
331                echo '
332    <script type="text/javascript">
333      var type_sortable = "aucun";
334    </script>
335    ';
336                echo '<p id="avis_menu_auto">'._T('arty:avis_menu_auto').'</p>';
337        }
338
339        echo "<div id='bloc_sauver'>";
340        echo "<img src='"._DIR_IMG_PACK."searching.gif' id='search' style='visibility:hidden' />";
341        echo '<a href="javascript:sauver(\''.$langue_menu.'\');">sauver</a>';
342        echo "<div id='reponse'></div>";
343        echo "</div>";
344
345        echo "<p class='titre' style='font-weight:bold;'>"._T("arty:menu_reservoir").":</p>";
346
347        $args = array(
348    "exec" => "menu",
349    "ajouter" => "menu",
350        );
351        afficher_selecteur($args);
352        afficher_selecteur_mots($args);
353
354        // ajout d'une url
355        echo "<form><div id='ajout_lien'><div id='ajout_lien_contenu'>";
356        echo "<p>"._T("arty:ajouter_un_lien").":</p>";
357        echo "<label for='nom_lien'>"._T("arty:nom_lien")."</label>";
358        echo "<input id='nom_lien' type='text' size='30' name='nom' />";
359        echo "<br />";
360        echo "<label for='url_lien'>"._T("arty:url_lien")."</label>";
361        echo "<input id='url_lien' type='text' size='53' name='url' />";
362        echo "<br />";
363        echo "<a href='javascript:ajouter_lien()'>"._T('arty:ajouter_ce_lien')."</a>";
364        echo "</div></div>";
365        echo "</form>";
366
367        echo fin_gauche();
368        echo fin_page();
369
370}
371
372function transcode($chaine){
373        // dehacke le probleme du hash sur les lien et apostrophes
374        $base = array("tttirrr", "aaapooo", "ggguiii");
375        $transcode = array("-", "'", "\"");
376        $chaine = addslashes(str_replace($base, $transcode, $chaine));
377        return $chaine;
378}
379
380function transcodeinv($chaine){
381        // dehacke le probleme du hash sur les lien et apostrophes
382        $base = array("-", "'", "\"");
383        $transcode = array("tttirrr", "aaapooo", "ggguiii");
384        $chaine = str_replace($base, $transcode, $chaine);
385        return $chaine;
386}
387
388function traiter_post() {
389        //print_r($_POST);
390
391        if($_POST['action_form'] == 'config_niveaux_menu') {
392                $niveaux = addslashes($_POST['niveaux']);
393                $langue = addslashes($_POST['langue']);
394                $lister_articles=addslashes($_POST['lister_articles']);
395                $resultat = spip_query("SELECT * FROM spip_arty_parametres WHERE parametre = '".$langue."config_niveaux_menu'");
396                if(!spip_mysql_count($resultat)) {
397                        spip_query("INSERT INTO spip_arty_parametres (parametre, valeur, valeur2, valeur3) VALUES ('".$langue."config_niveaux_menu' ,'$niveaux', '$langue', '$lister_articles')");
398                } else {
399                        spip_query("UPDATE spip_arty_parametres SET valeur= '$niveaux', valeur2='$langue', valeur3='$lister_articles' WHERE parametre = '".$langue."config_niveaux_menu'");
400                }
401        }
402}
403
404function valeursNiveauxR($elements, $id_parent, $type_parent, $arty_cpt_lien)
405{
406        $types = array(
407    "r" => "rubrique",
408    "a" => "article",
409    "g" => "groupe",
410    "m" => "mot",
411        );
412        $langue_menu = $_GET['langue_menu'];
413        $valeurs_menu = array();
414
415        foreach($elements as $num_element => $element) {
416                $morceaux = array();
417                if ($element['id']{0} == "l") {
418                        $element['id']=transcode($element['id']);
419                        if (ereg("^l([0-9]+)\|(.*)\|(.*)$", $element['id'], $morceaux)) {
420                                $type = "lien";
421                                $id = $morceaux[1];
422                                $nom = $morceaux[2];
423                                $url = $morceaux[3];
424                                $num = (int) $num;
425                                $valeurs_menu[] = "($num_element, '$type', $id, '$langue_menu', '$nom', '$url', $id_parent, '$type_parent')";
426                                $id = $arty_cpt_lien;
427                                $arty_cpt_lien++;
428                        }
429                } else if (eregi("^(r|a|g|m)([0-9]+)$", $element['id'], $morceaux)) {
430                        $type = $types[$morceaux[1]];
431                        $id = (int) $morceaux[2];
432                        $num = (int) $num;
433                        $valeurs_menu[] = "($num_element, '$type', $id, '$langue_menu', '', '', $id_parent, '$type_parent')";
434                }
435                $enfants = isset($element['children']) ? $element['children'] : false;
436                if (is_array($enfants) && isset($id) && isset($type)) {
437                        $retour = valeursNiveauxR($enfants, $id, $type, $arty_cpt_lien);
438                        $arty_cpt_lien = $retour[1];
439                        $valeurs_menu = array_merge($valeurs_menu, $retour[0]);
440                }
441        }
442        return array($valeurs_menu, $arty_cpt_lien);
443}
444
445function afficherNiveauxR($id_parent, $type_parent, $langue_menu)
446{
447        $tables_spip = array(
448    'rubrique' => array(
449        "table" => "spip_rubriques",
450        "colonne_id" => "id_rubrique",
451        ),
452    'article' => array(
453        "table" => "spip_articles",
454        "colonne_id" => "id_article",
455        ),
456    'groupe' => array(
457        "table" => "spip_groupes_mots",
458        "colonne_id" => "id_groupe",
459        ),
460    'mot' => array(
461        "table" => "spip_mots",
462        "colonne_id" => "id_mot",
463        ),
464        );
465
466        $enfants = spip_query("SELECT * FROM spip_arty_menu WHERE id_parent = $id_parent AND type_parent='$type_parent' AND langue='$langue_menu' ORDER BY ordre ASC");
467        if (spip_mysql_count($enfants)) {
468                echo '<ul style="padding-left: 30px; padding-right: 0pt;">';
469                while($row_enfant = spip_fetch_array($enfants)) {
470                        if ($row_enfant['type'] != 'lien') {
471                                $result2 = spip_query("SELECT titre FROM ".$tables_spip[$row_enfant['type']]['table']." WHERE ".$tables_spip[$row_enfant['type']]['colonne_id']." = ".$row_enfant['id']);
472                                if (spip_mysql_count($result2)) {
473                                        $row2 = spip_fetch_array($result2);
474                                        echo '<li id="'.substr($row_enfant['type'], 0, 1).$row_enfant['id'].'" class="sortable">';
475                                        echo $row2["titre"];
476                                        echo " <span class='url_petit'>("._T('arty:'.$row_enfant['type']).")</span>";
477                                        echo ' <a href="javascript:supprimer(\'#'.substr($row_enfant['type'], 0, 1).$row_enfant['id'].'\')">x</a>';
478                                        afficherNiveauxR($row_enfant['id'], $row_enfant['type'], $langue_menu);
479                                        echo "</li>";
480                                } else {
481                                        spip_query("DELETE FROM spip_arty_menu WHERE id_menu = ".$row_enfant["id_menu"]);
482                                }
483                        } else {
484                                echo '<li id="l'.$row_enfant['id'].'|'.transcodeinv($row_enfant['nom']).'|'.transcodeinv($row_enfant['url']).'" class="sortable">';
485                                echo $row_enfant["nom"];
486                                echo " <span class='url_petit'>(".$row_enfant["url"].")</span>";
487                                echo ' <a href="javascript:supprimer_lien(\'l'.$row_enfant['id'].transcodeinv($row_enfant['nom']).'|'.transcodeinv($row_enfant['url']).'\')">x</a>';
488                                afficherNiveauxR($row_enfant['id'], $row_enfant['type'], $langue_menu);
489                                echo "</li>";
490                        }
491                }
492                echo '</ul>';
493        }
494}
495?>
Note: See TracBrowser for help on using the repository browser.