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

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

Machine arriere : ca rame trop de passer en revue toute l'arbo pour trouver des theme.xml, d'autant plus que l'on ne peut pas gerer des plugins en dehors du dossier "plugins". Trouver une strategie qui s'adapte mieux au fonctionnement actuel du noyau. En attendant, on ne peut pas personnaliser ses propres themes sans les mettre dans "plugins", *a deconseiller donc* !

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