source: spip-zone/_plugins_/_dev_/habillages/exec/habillages_squelettes.php @ 6636

Last change on this file since 6636 was 6636, checked in by franck.ducas@…, 13 years ago

Les onglets themes et extras s'affichaient quand on choisissait de laisser le squelette par defaut (cad le squelette installe sur le site initialement) : comportement anormal regle (ils ne s'affichent plus). Bricolages (textes notament).

File size: 13.3 KB
Line 
1<?php
2$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
3define('_DIR_PLUGIN_HABILLAGES',(_DIR_PLUGINS.end($p)));
4
5if (!defined("_ECRIRE_INC_VERSION")) return;
6
7include_spip('inc/config');
8include_spip('inc/plugin');
9include_spip('inc/presentation');
10include_spip('inc/layer');
11include_spip('inc/actions');
12include_spip('inc/habillages_presentation');
13
14function exec_habillages_squelettes() {
15        global $connect_statut;
16        global $connect_toutes_rubriques;
17        global $spip_lang_right;
18       
19        $surligne = "";
20
21        if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) {
22                debut_page(_T('icone_admin_plugin'), "configuration", "plugin");
23                echo _T('avis_non_acces_page');
24                fin_page();
25                exit;
26        }
27       
28        if (_request('changer_plugin')=='oui'){
29                lire_metas();
30                $lire_meta_squelettes = array($GLOBALS['meta']['habillages_squelettes']);
31                ecrire_plugin_actifs($lire_meta_squelettes,'',$operation='enleve');
32                ecrire_meta('habillages_themes', 'defaut');
33                ecrire_meta('habillages_extras', '');
34                ecrire_metas;
35                lire_metas();
36                $lire_meta_squelettes_modifs = array(_request('statusplug'));
37                ecrire_plugin_actifs($lire_meta_squelettes_modifs,'',$operation='ajoute');
38                ecrire_meta('habillages_squelettes', _request('statusplug'));
39                ecrire_metas;
40                lire_metas();
41               
42                # Si il y changement de squelettes, chercher si le squelette a des themes associes. si oui,
43                # renseigner un champs meta pour afficher l'onglet "themes".
44                if (_request('statusplug') == "defaut") {
45                        ecrire_meta('habillages_is_themes', 'non');
46                        ecrire_meta('habillages_is_extras', 'non');
47                        ecrire_meta('habillages_prefixe_squel', '');
48                        ecrire_metas;
49                }
50               
51                else if (_request('statusplug') == "dist") {
52                        ecrire_meta('habillages_is_themes', 'oui');
53                        ecrire_meta('habillages_is_extras', 'oui');
54                        ecrire_meta('habillages_prefixe_squel', 'dist');
55                        ecrire_metas;
56                }
57                else {
58                lire_metas();
59                $choix_squelettes = $GLOBALS['meta']['habillages_squelettes'];
60                $xml_squelette = _DIR_PLUGINS.$choix_squelettes."/theme.xml";
61                lire_fichier($xml_squelette, $texte_xml);
62                $arbre_xml = parse_plugin_xml($texte_xml);
63                $arbre_xml = $arbre_xml['theme'][0];
64                $nom_theme = trim(applatit_arbre($arbre_xml['prefixe']));
65
66                $fichier_theme = preg_files(_DIR_PLUGINS,"/theme[.]xml$");
67               
68                foreach ($fichier_theme as $fichier){
69                        lire_fichier($fichier, $texte);
70                        $arbre = parse_plugin_xml($texte);
71                        $arbre = $arbre['theme'][0];
72                        $squelettes_theme = trim(applatit_arbre($arbre['squelettes']));
73                        $prefixe_theme = trim(applatit_arbre($arbre['prefixe']));
74                        $prefixe_type = trim(applatit_arbre($arbre['type']));
75                       
76                        # Si il y a des themes disponibles, on entre le squelettes (qui est aussi egal a son prefixe)
77                        # dans une liste de themes dispos afin de pouvoir mettre des icones sur la page squelettes.
78                        if ($prefixe_type == "themes") {
79                                lire_metas();
80                                $liste_themes_meta = $GLOBALS['meta']['habillages_liste_themes'];
81                                if (!eregi($squelettes_theme, $liste_themes_meta)) {
82                                ecrire_meta('habillages_liste_themes', $liste_themes_meta.",".$squelettes_theme);
83                                ecrire_metas;
84                                }
85                        }
86                        # Si il y a des extras disponibles, on entre le squelettes (qui est aussi egal a son prefixe)
87                        # dans une liste d'extras dispos afin de pouvoir mettre des icones sur la page squelettes.
88                        if ($prefixe_type == "extras") {
89                                lire_metas();
90                                $liste_extras_meta = $GLOBALS['meta']['habillages_liste_extras'];
91                                if (!eregi($squelettes_theme, $liste_extras_meta)) {
92                                ecrire_meta('habillages_liste_themes', $liste_extras_meta.",".$squelettes_theme);
93                                ecrire_metas;
94                                }
95                        }
96                        if ($nom_theme == $squelettes_theme) {
97                                ecrire_meta('habillages_is_themes', 'oui');
98                                ecrire_meta('habillages_is_extras', 'oui');
99                                ecrire_meta('habillages_prefixe_squel', $prefixe_theme);
100                                ecrire_metas;
101                        }
102                        else {
103                                ecrire_meta('habillages_is_themes', 'non');
104                                ecrire_meta('habillages_is_extras', 'non');
105                                ecrire_meta('habillages_prefixe_squel', '');
106                                ecrire_metas;
107                        }
108                }
109                }
110        }
111
112        if (isset($_GET['surligne']))
113                $surligne = $_GET['surligne'];
114        global $couleur_claire;
115        global $couleur_foncee;
116        debut_page(_T('habillages:icone_config_habillages'), "configuration", "habillages");
117        echo "<style type='text/css'>\n";
118        echo <<<EOF
119div.cadre-padding ul li {
120        list-style:none ;
121}
122div.cadre-padding ul {
123        padding-left:1em;
124        margin:.5em 0 .5em 0;
125}
126div.cadre-padding ul ul {
127        border-left:5px solid #DFDFDF;
128}
129div.cadre-padding ul li li {
130        margin:0;
131        padding:0 0 0.25em 0;
132}
133div.cadre-padding ul li li div.nomplugin, div.cadre-padding ul li li div.nomplugin_on {
134        border:1px solid #AFAFAF;
135        padding:.3em .3em .6em .3em;
136        font-weight:normal;
137}
138div.cadre-padding ul li li div.nomplugin a, div.cadre-padding ul li li div.nomplugin_on a {
139        outline:0;
140        outline:0 !important;
141        -moz-outline:0 !important;
142}
143div.cadre-padding ul li li div.nomplugin_on {
144        background:$couleur_claire;
145        font-weight:bold;
146}
147div.cadre-padding div.droite label {
148        padding:.3em;
149        background:#EFEFEF;
150        border:1px dotted #95989F !important;
151        border:1px solid #95989F;
152        cursor:pointer;
153        margin:.2em;
154        display:block;
155        width:10.1em;
156}
157div.cadre-padding input {
158        cursor:pointer;
159}
160div.detailplugin {
161        border-top:1px solid #B5BECF;
162        padding:.6em;
163        background:#F5F5F5;
164}
165div.detailplugin hr {
166        border-top:1px solid #67707F;
167        border-bottom:0;
168        border-left:0;
169        border-right:0;
170        }
171EOF;
172        echo "</style>";
173
174        echo "<br/><br/>";
175       
176        echo '<img src="' . _DIR_PLUGIN_HABILLAGES. '/../img_pack/habillages_squelettes-48.png">';
177        gros_titre(_T('habillages:icone_habillages_squelettes'));
178
179        barre_onglets("habillages", "");
180       
181        debut_gauche();
182        debut_boite_info();
183       
184        echo "<div class='intro_grotitre'>";
185        echo _T('habillages:squelettes_titre_boitinfo')."</div><br />";
186       
187        echo "<div class='intro'>";
188        echo _T('habillages:squelettes_intro')."<br /><br />";
189       
190        echo "<div class='intro_titre'>";
191        echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/avance.png' />";
192        echo _T('habillages:squelettes_avance_titre')."</div>";
193        echo _T('habillages:squelettes_avance')."<br /><br />";
194       
195        echo "<div class='intro_titre'>";
196        echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_themes-22.png' />";
197        echo _T('habillages:squelettes_themes_titre')."</div>";
198        echo _T('habillages:squelettes_themes')."<br /><br />";
199       
200        echo "<div class='intro_titre'>";
201        echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_extras-22.png' />";
202        echo _T('habillages:squelettes_extras_titre')."</div>";
203        echo _T('habillages:squelettes_extras')."<br />";
204        echo "</div>";
205       
206        fin_boite_info();
207
208        debut_droite();
209
210        debut_cadre_relief();
211
212        global $couleur_foncee;
213        echo "<table border='0' cellspacing='0' cellpadding='5' width='100%'>";
214        echo "<tr><td bgcolor='$couleur_foncee' background='' colspan='4'><b>";
215        echo "<font face='Verdana,Arial,Sans,sans-serif' size='3' color='#ffffff'>";
216        echo _T('habillages:squelettes_titre')."</font></b></td></tr>";
217        echo "<tr><td class='serif' colspan=4>";       
218        echo generer_url_post_ecrire("habillages_squelettes");
219               
220               
221                lire_metas();
222                $squelettes = $GLOBALS['meta']['habillages_squelettes'];
223                # Squelettes par defaut choisi ou si le plugin vient d'etre active.
224                if ($squelettes == "" || $squelettes == "defaut") {
225                        $checked_defaut = " checked='checked'";
226                }
227                # Dist choisie.
228                else if ($squelettes == "dist") {
229                        $checked_dist = " checked='checked'";
230                }
231               
232                echo "<ul>";
233                debut_boite_info();
234                echo "<div style='background-color:$couleur_claire' class='titre_un'>";
235                echo "<input type='radio' name='statusplug' value='defaut'$checked_defaut>";
236                echo "<strong>"._T('habillages:squelettes_defaut_titre')."</strong><label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label><br /><br /></div>";
237                echo "<small>"._T('habillages:squelettes_defaut_description')."</small><br /><br /><hr>";
238                fin_boite_info();
239                echo "<br />";
240                debut_boite_info();
241                echo "<div style='background-color:$couleur_claire' class='titre_un'>";
242                echo "<input type='radio' name='statusplug' value='dist'$checked_dist>";
243                echo "<strong>"._T('habillages:squelettes_dist_titre')."</strong><img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/avance.png' /> | <img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_themes-22.png' /> | <img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_extras-22.png' /><label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label><br /><br /></div>";
244                echo '<div style="float:right";><img src="'._DIR_PLUGIN_HABILLAGES.'/../img_pack/capture_dist_bw.png" alt="" class="preview" /></div>';
245                echo "<small>"._T('habillages:squelettes_dist_description')."</small><br /><br /><hr>";
246                echo "<div class='auteur'>Collectif.<br />&copy; 2001 - 2006 - Distribue sous licence GNU/GPL</div><hr>";
247                fin_boite_info();
248                echo "</ul>";
249       
250                # Chercher les fichiers theme.xml.
251                $fichier_theme = preg_files(_DIR_PLUGINS,"/theme[.]xml$");
252               
253                # Pour chaque fichier theme.xml trouve, on releve le <type> et on ne garde que
254                # les squelettes pour les lister.
255                foreach ($fichier_theme as $fichier){
256                        lire_fichier($fichier, $texte);
257                        $arbre = parse_plugin_xml($texte);
258                        $arbre = $arbre['theme'][0];
259                        $nom_theme = applatit_arbre($arbre['nom']);
260                        $auteur_theme = applatit_arbre($arbre['auteur']);
261                        $etat_theme = applatit_arbre($arbre['etat']);
262                        $version_theme = applatit_arbre($arbre['version']);
263                        $description_theme = applatit_arbre($arbre['description']);
264                        $type_theme = trim(applatit_arbre($arbre['type']));
265                        $niveau_theme = trim(applatit_arbre($arbre['niveau']));
266                        $prefixe_theme = trim(applatit_arbre($arbre['prefixe']));
267                       
268                        $nom_dossier_theme = dirname ($fichier);
269                        $fichier_plugin_xml = $nom_dossier_theme."/plugin.xml";
270                        $chemin_plugin_complet = dirname($fichier_plugin_xml);
271                        $chemin_plugin_court = substr($chemin_plugin_complet, strlen(_DIR_PLUGINS));
272                       
273                                if (!is_file($fichier_plugin_xml)) {
274                                        # Mettre dans la construction du dossier habillages-data (lorsque les themes se
275                                        # telechargeront adopter le meme principe sur les dossiers telecharges) un refus
276                                        # de telechargement/copie des dossiers qui n'ont pas de theme.xml *ni* de plugin.xml.
277                                        # Ca evitera de mettre des gros pates dans les logs et on laissera l'ecriture dans
278                                        # ceux-ci aux etourdis qui personnaliseront leurs themes sans mettre de plugin.xml
279                                        # dans le dossier de theme.
280                                        spip_log("Le dossier ".$nom_dossier_theme." ne contient pas de fichier plugin.xml. Le plugin habillages ne peut pas gerer les elements de ce dossier.");
281                                }
282                               
283                                if ($type_theme=="squelettes" && is_file($fichier_plugin_xml)) {
284                                        echo "<ul>";
285                                       
286                                        # Si le niveau de difficulte d'installation du squelette est renseigne, mettre les
287                                        # icones de difficulte.
288                                        if ($niveau_theme == "1") {
289                                                $niveau = "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/avance.png' />";
290                                        }
291                                       
292                                        if ($niveau_theme == "0" || $niveau_theme == "") {
293                                                $niveau = "";
294                                        }
295                                       
296                                        if (_request('exec')=='habillages_squelettes'){
297                                                lire_metas();
298                                                $lire_meta_habillages = array($GLOBALS['meta']['habillages_squelettes']);
299                                        }
300                                       
301                                        if ($lire_meta_habillages[0] == $chemin_plugin_court) {
302                                                $checked = " checked='checked'";
303                                        }
304                                        else {
305                                                $checked = "";
306                                        }
307                                       
308                                        debut_boite_info();
309                                        echo "<div style='background-color:$couleur_claire' class='titre_un'>";
310                                        echo "<input type='radio' name='statusplug' value='$chemin_plugin_court'$checked>";
311                                        echo "<strong>".$nom_theme."</strong>(version ".$version_theme.") ";
312                                       
313                                        lire_metas();
314                                        $liste_themes = $GLOBALS['meta']['habillages_liste_themes'];
315                                        if (eregi($prefixe_theme, $liste_themes)) {
316                                                echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_themes-22.png' /> | ";
317                                        }
318                                        $liste_extras = $GLOBALS['meta']['habillages_liste_extras'];
319                                        if (eregi($prefixe_theme, $liste_extras)) {
320                                                echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/habillages_extras-22.png' /> | ";
321                                        }
322                                       
323                                        echo $niveau."<label for='label_$id_input' style='display:none'>"._T('activer_plugin')."</label></div>";
324                                        # Laisser la possibilite de definir le nom et le chemin de la capure ecran
325                                        # dans theme.xml.
326                                        echo '<div style="float:right";>&nbsp;<br /><img src="'.$chemin_plugin_complet.'/capture.png" alt="" class="preview" /></div>';
327                                        echo "<small>".propre($description_theme)."</small><br /><br /><hr>";
328                                        echo "<div class='auteur'>".propre($auteur_theme)."</div><hr>";
329                                        echo "<img src='"._DIR_PLUGIN_HABILLAGES."/../img_pack/".$etat.".png' />";
330                                        echo "&nbsp;<small><strong><font COLOR='#".$couleur_txt."'>".$titre_etat."</font></strong></small><br />";
331                                        fin_boite_info();
332                                        echo "</ul>";
333                                }
334                               
335                }
336       
337        echo "</table></div>\n";
338
339        echo "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />";
340        echo "\n<input type='hidden' name='hash' value='" . calculer_action_auteur("valide_plugin") . "'>";
341        echo "\n<input type='hidden' name='changer_plugin' value='oui'>";
342
343        echo "\n<p>";
344
345        echo "<div style='text-align:$spip_lang_right'>";
346        echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'>";
347        echo "</div>";
348        echo "</form></tr></table>\n";
349       
350        echo "<br />";
351       
352        fin_page();     
353}
354
355?>
Note: See TracBrowser for help on using the repository browser.