source: spip-zone/_plugins_/squelettes_par_mots_cle/trunk/exec/configurer_squelettesmots.php @ 55006

Last change on this file since 55006 was 55006, checked in by cedric@…, 8 years ago

Fin du portage pour SPIP3 a minima :
on ne recode pas la page de config en squelette+CVT, ce qui serait le mieux, mais on assure le fonctionnel et la secu
on renomme l'exec pour qu'il soit linke du panneau plugin
on met une icone derivee de fatcow
on insere les css inline uniquement dans la page de config et pas dans tout l'espace prive

File size: 7.1 KB
Line 
1<?php
2
3//    Fichier cr‚‚ pour SPIP avec un bout de code emprunt‚ … celui ci.
4//    Distribu‚ sans garantie sous licence GPL./
5//    Copyright (C) 2006  Pierre ANDREWS
6//
7//    This program is free software; you can redistribute it and/or modify
8//    it under the terms of the GNU General Public License as published by
9//    the Free Software Foundation; either version 2 of the License, or any later version.
10//
11//    This program is distributed in the hope that it will be useful,
12//    but WITHOUT ANY WARRANTY; without even the implied warranty of
13//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14//    GNU General Public License for more details.
15//
16//    You should have received a copy of the GNU General Public License
17//    along with this program; if not, write to the Free Software
18//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20function exec_configurer_squelettesmots_dist(){
21
22        include_spip("inc/presentation");
23        include_spip("base/abstract_sql");
24
25        $commencer_page = charger_fonction('commencer_page', 'inc');
26        echo $commencer_page(_T('squelettesmots:titre_page'), "configuration");
27
28
29        include_spip('inc/autoriser');
30        if (!autoriser('configurer', 'squelettesparmot')){
31                echo _T('avis_non_acces_page');
32                exit;
33        }
34
35        /*Affichage*/
36        echo debut_gauche('', TRUE);
37
38        echo debut_boite_info(TRUE);
39        echo propre(_T('squelettesmots:help'));
40        echo fin_boite_info(TRUE);
41
42        echo debut_droite('', TRUE);
43
44        echo gros_titre(_T('squelettesmots:titre_onglet'), '', FALSE);
45        echo "<p>"._T('squelettesmots:gros_titre')."</p>";
46        $config = charger_fonction('config', 'inc');
47        $config();
48        #echo avertissement_config();
49
50        lire_fichier(find_in_path("squelettesmots.css"),$styles);
51        echo "<style>$styles</style>";
52       
53        echo debut_cadre_relief("".find_in_path('spip_death.png')."", true);
54        echo '<form action="'.generer_url_ecrire('configurer_squelettesmots').'" method="post">';
55
56        $groupes_mots = '';
57        $select = array('id_groupe', 'titre');
58        $from = array('spip_groupes_mots');
59
60        //      include_ecrire('inc_filtres');
61        $rez = sql_select($select, $from);
62        while ($row = sql_fetch($rez)){
63                $groupes_mots[$row['id_groupe']] = extraire_multi($row['titre']);
64        }
65        sql_free($rez);
66
67        //TODO: trouver automatiquement ces informations pour toutes les tables avec un jonction sur les mots
68        $id_tables = array('articles' => 'id_article',
69                           'rubriques' => 'id_rubrique',
70                           'breves' => 'id_breve',
71                           'sites' => 'id_site');
72
73
74        $fonds = unserialize(lire_meta('SquelettesMots:fond_pour_groupe'));
75
76        $field_fonds = _request('fonds');
77        $id_groupes = _request('tid_groupe');
78        $types = _request('type');
79        $actif = _request('actif');
80
81        /*On transforme les _POST en jolie tableau*/
82        if ($field_fonds){
83                $new_fonds = array();
84                foreach ($field_fonds as $index => $fond){
85                        $index = intval($index);
86                        $fond = addslashes($fond);
87                        if ($actif[$index]){
88                                $id_groupe = intval($id_groupes[$index]);
89                                $type = addslashes($types[$index]);
90                                $new_fonds[$fond] = array($id_groupe, $type, $id_tables[$type]);
91                        }
92                }
93                $fonds = $new_fonds;
94        }
95
96        $index = 0;
97        if (is_array($fonds))
98                foreach ($fonds as $fond => $a){
99                        list($id_groupe, $type, $id_table) = $a;
100                        $index++;
101                        echo '<fieldset class="regle">';
102                        echo '<legend>'._T('squelettesmots:reglei', array('id' => $index)).'</legend>';
103                        if (!find_in_path($fond.'.html')){
104                                echo '<div class="avertissement">';
105                                echo _T('squelettesmots:avertissement', array('squelette' => '<em>'.$fond.'.html'.'</em>'));
106                                echo '</div>';
107                        }
108                        // echo '<div class="champs">';
109                        echo "<input type=\"checkbox\" class=\"actif\" name=\"actif[$index]\" checked=\"true\"/>";
110                        echo "<label for=\"fond_$index\" class=\"fond\">"._T('squelettesmots:fond')."</label>";
111                        echo "<input type=\"text\" name=\"fonds[$index]\" class=\"forml\"  value=\"$fond\" id=\"fond_$index\"/>";
112                        echo "<label for=\"id_groupe_$index\" class=\"id_groupe\">"._T('squelettesmots:groupe')."</label>";
113                        echo "<select name=\"tid_groupe[$index]\" class=\"id_groupe forml\" id=\"id_groupe_$index\">";
114                        foreach ($groupes_mots as $id => $titre){
115                                echo "<option value=\"$id\"".(($id_groupe==$id) ? ' selected="true"' : '').">$titre</option>";
116                        }
117                        echo '</select>';
118                        echo "<label for=\"type_$index\" class=\"type\">"._T('squelettesmots:type')."</label>";
119                        echo "<select name=\"type[$index]\" class=\"type forml\" id=\"type_$index\">";
120                        foreach ($id_tables as $t => $x){
121                                echo "<option value=\"$t\"".(($type==$t) ? ' selected="true"' : '').">$t</option>";
122                        }
123                        echo '</select>';
124                        // echo '</div>';
125                        $select1 = array('titre');
126                        $from1 = array('spip_mots AS mots');
127                        $where1 = array("id_groupe=".intval($id_groupe));
128                        $rez = sql_select($select1, $from1, $where1);
129                        $liste_squel = '<ul>';
130                        $ext = 'html'; //On force a html, c'est pas beau, mais je vois pas la solution actuellement.
131                        $cnt_actif = 0;
132                        $cnt_inactif = 0;
133                        while ($r = sql_fetch($rez)){
134                                include_spip("inc/charsets");
135                                $n = translitteration(preg_replace('/["\'.\s]/', '_', extraire_multi($r['titre'])));
136                                if ($squel = find_in_path("$fond-$n.$ext")){
137                                        $cnt_actif++;
138                                        $liste_squel .= "<li><a href=\"$squel\">$fond-$n.$ext</a></li>";
139                                } else {
140                                        $cnt_inactif++;
141                                        $liste_squel .= "<li>$fond-$n.$ext</li>";
142                                }
143                                if ($squel = find_in_path("$fond=$n.$ext")){
144                                        $cnt_actif++;
145                                        $liste_squel .= "<li><a href=\"$squel\">$fond=$n.$ext</a></li>";
146                                } else {
147                                        $cnt_inactif++;
148                                        $liste_squel .= "<li>$fond=$n.$ext</li>";
149                                }
150                        }
151                        sql_free($rez);
152                        $liste_squel .= '</ul>';
153
154
155                        echo '<div class="possible">';
156                        if ($cnt_actif+$cnt_inactif>0){
157                                echo bouton_block_depliable(_T('squelettesmots:possibilites', array('total_actif' => $cnt_actif, 'total_inactif' => $cnt_inactif)), false);
158                                echo debut_block_depliable(false, "regle$index");
159                                echo $liste_squel;
160                                echo fin_block();
161                        }
162                        echo '</div>';
163
164                        echo '</fieldset>';
165                }
166
167        $index++;
168
169        echo '<hr/>';
170        echo '<fieldset class="nouvelle regle">';
171        echo '<legend>'._T('squelettesmots:nouvelle_regle').'</legend>';
172        echo "<input type=\"checkbox\" class=\"actif\" name=\"actif[$index]\"/>";
173        echo "<label for=\"fond_$index\" class=\"fond\">"._T('squelettesmots:fond')."</label>";
174        echo "<input type=\"text\" name=\"fonds[$index]\" class=\"forml\" value=\"article\"/>";
175
176        echo "<label for=\"id_groupe_$index\" class=\"id_groupe\">"._T('squelettesmots:groupe')."</label>";
177        echo "<select name=\"tid_groupe[$index]\" class=\"id_groupe forml\" id=\"id_groupe_$index\">";
178        foreach ($groupes_mots as $id => $titre){
179                echo "<option value=\"$id\">$titre</option>";
180        }
181        echo '</select>';
182        echo "<label for=\"type_$index\" class=\"type\">"._T('squelettesmots:type')."</label>";
183        echo "<select name=\"type[$index]\" class=\"type forml\" id=\"type_$index\">";
184        foreach ($id_tables as $t => $x){
185                echo "<option value=\"$t\">$t</option>";
186        }
187        echo '</select>';
188        echo '</fieldset>';
189
190        echo '<div style="text-align: right;"><input type="submit" class="fondo" value="'._T('bouton_valider').'"/></div>';
191        echo '</form>';
192        echo fin_cadre_relief(true);
193
194        ecrire_meta('SquelettesMots:fond_pour_groupe', serialize($fonds));
195        ecrire_metas();
196
197        echo fin_gauche();
198        echo fin_page();
199
200}
201
202?>
Note: See TracBrowser for help on using the repository browser.