source: trunk/spip/esqueleto-redcta/plugins/redCTA/exec/redcta.php @ 357

Last change on this file since 357 was 357, checked in by guille, 15 years ago

se actualizo el mensaje

File size: 17.6 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
14include_spip('inc/xml-parser');
15
16if (!defined("_ECRIRE_INC_VERSION")) return;
17include_spip('inc/presentation');
18include_spip('inc/filtres_images_mini');
19
20
21function exec_theme() {
22
23        $commencer_page = charger_fonction('commencer_page', 'inc');
24        echo $commencer_page('&laquo; '._T('redcta:choix_du_theme').' &raquo;', 'configuration', 'magusine');
25       
26        global $connect_statut;
27        if ($connect_statut != "0minirezo" ) {
28                echo "<p><b>"._T('redcta:acces_a_la_page')."</b></p>";
29                fin_page();
30                exit;
31        }
32
33        traiter_post();
34        $params= charger_parametres_gen();
35
36        echo barre_onglets("redcta", "theme");
37        echo debut_gauche('', true);
38        echo debut_cadre_relief(_DIR_PLUGIN_REDCTA.'/images/aide.png', true, "", _T('redcta:info'));
39        echo _T("redcta:sideinfo_theme");
40        echo fin_cadre_relief(true);
41        echo lister_associations();
42        echo creer_colonne_droite('', true);
43        echo debut_droite('', true);
44        echo gros_titre(_T("redcta:choix_du_theme"), "", false);
45
46        //liste des themes disponibles
47        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."/images/config.png", true, "", _T('redcta:choixtheme'));
48        listage_themes();
49        echo fin_cadre_trait_couleur(true);
50
51        echo "<br />";
52        // suite : footer, metas, 404
53
54        // affiche le formulaire d'upload du bandeau
55
56
57        formulaire_bandeau();
58
59        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."images/format-indent-more.png", true, "", _T('redcta:footer'));
60        echo _T('redcta:votre_message_de_footer');
61        echo "<form action='".generer_url_ecrire('theme')."' method='post'>\n";
62        if (!in_array("footer", array_keys($params))) { $params['footer']=""; }
63        echo "<textarea name='footer' cols='50' rows='3'>".htmlspecialchars($params['footer'])."</textarea>";
64
65        echo "<br /><input type='submit' value='"._T("redcta:enregistrer")."' class='fondo' />";
66        echo "</form>";
67        echo fin_cadre_trait_couleur(true);
68
69
70
71        echo "<br />";
72        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."images/format-indent-more.png", true, "", _T('redcta:logos_bailleurs'));
73        echo _T('redcta:intro_afficher_logos_bailleurs');
74        echo "<form action='".generer_url_ecrire('theme')."' method='post'>\n";
75        if (!in_array("logos_bailleurs", array_keys($params))) { $params['logos_bailleurs']="true"; }
76        echo "<input type='radio' name='logos_bailleurs' value='true' ".($params['logos_bailleurs'] == "true" ? 'checked="checked"' : '')." />";
77        echo _T('redcta:afficher_logos')."<br />";
78        echo "<input type='radio' name='logos_bailleurs' value='false' ".($params['logos_bailleurs'] == "true" ? '' : 'checked="checked"')." />";
79        echo _T('redcta:ne_pas_afficher_logos')."<br />";
80        echo "<br /><input type='submit' value='"._T("redcta:enregistrer")."' class='fondo' />";
81        echo "</form>";
82        echo fin_cadre_trait_couleur(true);
83        echo "<br />";
84
85        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."images/format-indent-more.png", true, "", _T('redcta:metas'));
86        echo _T('redcta:vos_metas');
87        echo "<form action='".generer_url_ecrire('theme')."' method='post'>\n";
88        echo "<input type='hidden' name='action_form' value='metas' />";
89
90        echo "<div id='metas'>";
91        if (!count($params['metas'])) {
92                $id_meta = uniqid("");
93                echo "<table class='meta' id='meta$id_meta'>";
94                echo "<tr><td><label for='metatype$id_meta' class='label_meta'>"._T('redcta:type_meta')."</label></td>";
95                echo "<td><input type='text' size='15' id='metatype$id_meta' name='metas[$id_meta][type]' /></td></tr>";
96                echo "<tr><td><label for='metavaleur$id_meta' class='label_meta'>"._T('redcta:valeur_meta')."</label></td>";
97                echo "<td><input type='text' size='40' id='metavaleur$id_meta' name='metas[$id_meta][valeur]' />";
98                echo "<a href='javascript:supprimerMeta(\"$id_meta\");'><img style='padding:3px;' src='"._DIR_IMG_PACK."/croix-rouge.gif' title='"._T('redcta:supprimer')."' alt='x' /></a>";
99                echo "</td></tr></table>";
100        } else {
101                foreach($params['metas'] as $meta) {
102                        $id_meta = uniqid("");
103                        echo "<table class='meta' id='meta$id_meta'>";
104                        echo "<tr><td><label for='metatype$id_meta' class='label_meta'>"._T('redcta:type_meta')."</label></td>";
105                        echo "<td><input type='text' size='15' id='metatype$id_meta' name='metas[$id_meta][type]' value='".$meta['type']."' /></td></tr>";
106                        echo "<tr><td><label for='metavaleur$id_meta' class='label_meta'>"._T('redcta:valeur_meta')."</label></td>";
107                        echo "<td><input type='text' size='40' id='metavaleur$id_meta' name='metas[$id_meta][valeur]' value='".$meta['valeur']."' />";
108                        echo "<a href='javascript:supprimerMeta(\"$id_meta\");'><img style='padding:3px;' src='"._DIR_IMG_PACK."/croix-rouge.gif' title='"._T('redcta:supprimer')."' alt='x' /></a>";
109                        echo "</td></tr></table>";
110                }
111        }
112        echo "</div>";
113
114        echo "<a href='javascript:ajouterMeta()'>"._T('redcta:ajouter_meta')."</a>";
115
116        echo "<script language='javascript'>";
117        echo "function ajouterMeta(){
118    ran = Math.floor(Math.random()*100000000);
119    jQuery('#metas').append(\"";
120        echo "<table class='meta' id='meta\"+ran+\"'>";
121        echo "<tr><td><label for='metatype\"+ran+\"' class='label_meta'>"._T('redcta:type_meta')."</label></td>";
122        echo "<td><input id='metatype\"+ran+\"' type='text' size='15' name='metas[\"+ran+\"][type]' /></td></tr>";
123        echo "<tr><td><label for='metavaleur\"+ran+\"' class='label_meta'>"._T('redcta:valeur_meta')."</label></td>";
124        echo "<td><input id='metavaleur\"+ran+\"' type='text' size='40' name='metas[\"+ran+\"][valeur]' />";
125        echo "<a href=\\\"javascript:supprimerMeta('\"+ran+\"');\\\"><img style='padding:3px;' src='"._DIR_IMG_PACK."/croix-rouge.gif' title='"._T('redcta:supprimer')."' alt='x' /></a>";
126        echo "</td></tr></table>";
127        echo "\"
128    );
129  }";
130        echo "</script>";
131
132        echo "<script language='javascript'>";
133        echo "function supprimerMeta(meta) {
134    jQuery('#meta'+meta).remove();
135  }";
136        echo "</script>";
137        echo "<br /><input type='submit' value='"._T("redcta:enregistrer")."' class='fondo' />";
138        echo "</form>";
139        echo fin_cadre_trait_couleur(true);
140       
141        echo "<br />";
142        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."images/emblem-important.png", true, "", _T('redcta:page_404'));
143        echo _T('redcta:votre_message_page_404');
144        echo "<form action='".generer_url_ecrire('theme')."' method='post'>\n";
145
146        $resultat= spip_query("SELECT * FROM spip_redcta_parametres WHERE parametre='404'");
147        if ($resultat) {
148                $le404=spip_fetch_array($resultat);
149                //print_r($le404);
150        } else {
151                $le404['valeur']="";
152                $le404['valeur2']="";
153
154        }
155
156        echo "<input type='hidden' name='action_form' value='404' />";
157        echo "<input type='text' name='titre404' value='".htmlspecialchars($le404['valeur'])."' />";
158        echo "<textarea name='texte404' cols='50' rows='3'>".htmlspecialchars($le404['valeur2'])."</textarea>";
159        echo "<br /><input type='submit' value='"._T("redcta:enregistrer")."' class='fondo' />";
160        echo "</form>";
161        echo fin_cadre_trait_couleur(true);
162
163        echo fin_gauche();
164
165        echo fin_page();
166
167}
168
169
170//liste des thÚmes dans le répertoire theme
171function listage_themes()
172{
173
174        $params= charger_parametres();
175        $ignore_liste = Array(".svn", ".", "..",".DS_Store");
176        $rep = _DIR_PLUGIN_REDCTA."themes";
177
178        // affiche le theme courant
179        echo "<div class='theme-actuel'><h4>"._T("redcta:theme_actuel")."</h4>";
180        $letheme = explode("|", $params);
181        if (file_exists($rep.'/'.$letheme[0].'/theme.xml')) {
182                $p =& new xmlParser();
183                $p->parse($rep.'/'.$letheme[0].'/theme.xml');
184                if (file_exists($rep.'/'.$letheme[0].'/illu-theme.jpg')) {
185                        $vignette = "<img src=".$rep.'/'.$letheme[0].'/illu-theme.jpg'." class='vignette-theme' />";
186                }
187                $descrip = $p->output[0]['child'][1]['content'];
188                foreach($p->output[0]['child'] as $prop) {
189                        if ($prop['name'] == "TITRE") {
190                                $titre_theme = $prop['content'];
191                        }
192                }
193                if (count($letheme) > 1) {
194                        $nom_decli = ereg_replace("\.css$", "", $letheme[1]);
195                        if (file_exists($rep.'/'.$letheme[0].'/declinaisons/illu-theme-'.$nom_decli.'.jpg')) {
196                                $vignette = "<img src=".$rep.'/'.$letheme[0].'/declinaisons/illu-theme-'.$nom_decli.'.jpg'." class='vignette-theme' />";
197                        }
198                        foreach($p->output[0]['child'] as $prop) {
199                                if ($prop['name'] == "DECLINAISON") {
200                                         
201                                        if($prop['attrs']['CHEMIN'] == $letheme[1]) {
202                                                $titre_declinaison = " ("._T("redcta:en_declinaison")." ".$prop['attrs']['TITRE']." )";
203                                                // recherche de la description
204                                                foreach($prop['child'] as $num => $propdescr) {
205                                                        if ($propdescr['name'] == "DESCRIPTION") {
206                                                                $descrip = $propdescr['content'];
207                                                        }
208                                                }
209                                                       
210                                        }
211                                         
212                                }
213                        }
214                }
215                if (!isset($titre_declinaison) && count($letheme) > 1) {
216                        $titre_declinaison = " ("._T("redcta:en_declinaison")." ".$letheme[1]." )";
217                }
218        }
219        echo "<h5>";
220        echo isset($titre_theme) ? $titre_theme : $letheme[0];
221        echo isset($titre_declinaison) ? $titre_declinaison : '' ;
222        echo "</h5>";
223        echo isset($vignette) ? $vignette : '';
224        echo isset($descrip) ? $descrip : '';
225        echo "<div class='clearer'></div></div>";
226
227
228
229        $ignore_liste = Array(".svn", ".", "..",".DS_Store");
230        $rep = _DIR_PLUGIN_REDCTA."themes";
231        $handle = opendir($rep);
232        print('<form action="?exec=theme" method="post">');
233        while($fichier = readdir($handle)) {
234
235                if (in_array($fichier, $ignore_liste)) {
236                } else if (is_dir($rep.'/'.$fichier)) {
237
238                         
239                        if (file_exists($rep.'/'.$fichier.'/theme.xml')) {
240                                 
241                                 
242                                $p =& new xmlParser();
243                                $p->parse($rep.'/'.$fichier.'/theme.xml');
244
245                                //print_r($p->output);
246
247                                echo "<div class='conteneur-theme'>\n";
248
249                                // vignette des themes
250                                if (file_exists($rep.'/'.$fichier.'/illu-theme.jpg')) {
251                                        $vignette =$rep.'/'.$fichier.'/illu-theme.jpg';
252                                } else { $vignette=_T("redcta:pas_de_vignette"); }
253
254                                foreach($p->output[0]['child'] as $id => $tag) {
255                                        if ($tag['name'] == "TITRE") {
256                                                echo '<h5 class="theme_deplier" rel="'.$vignette.'">'.$tag["content"].'</h5>';
257                                                echo "\n";
258                                                echo "<div class=\"liste-declinaison\">";
259                                                echo "\n";
260                                                echo '<input id="'.$fichier.'" type="radio" '.(($params==$fichier)?'checked="checked"':'').' name="theme" value="'.$fichier.'"'.' class="declinaison" />';
261                                                echo '<label for="'.$fichier.'"  >'._T("redcta:theme_base").'</label><br />';
262                                                echo "\n";
263                                        }
264
265                                        if ($tag['name'] == "DECLINAISON") {
266                                                echo '<input id="'.$fichier.$id.'" type="radio" '.(($params==$fichier."|".$tag["attrs"]["CHEMIN"])?'checked="checked"':'').' name="theme" value="'.$fichier."|".$tag["attrs"]["CHEMIN"].'"'.$checked.' class="declinaison" />';
267                                                echo '<label for="'.$fichier.$id.'">'.$tag["attrs"]["TITRE"].'</label><br />';
268                                                echo "\n";
269                                        }
270
271                                }
272                                echo "</div>\n";
273
274                        }
275                        echo "</div>\n";
276                }
277
278        }
279        echo '<br />';
280        //echo '<input type="hidden" name="action" value="changer_theme_principal" />';
281        echo '<input class="fondo" type="submit" value="'._T('redcta:bouton_changer_theme').'" />';
282        print("</form>");
283        closedir($handle);
284}
285
286function traiter_post() {
287
288        if ($_POST['footer']) {
289
290                if ($_POST['footer']==""){
291                        spip_query("DELETE FROM spip_redcta_parametres WHERE parametre = 'footer'");
292                }
293
294                $value=addslashes($_POST['footer']);
295                $resultat = spip_query("SELECT * FROM spip_redcta_parametres WHERE parametre='footer'");
296                if (spip_mysql_count($resultat)) {
297                        spip_query("UPDATE spip_redcta_parametres SET valeur= '$value' WHERE parametre = 'footer'");
298                } else {
299                        spip_query("INSERT INTO spip_redcta_parametres(parametre, valeur) VALUES('footer', '$value')");
300                }
301
302        }
303        if ($_POST['action_form']=="404") {
304                $titre=addslashes($_POST['titre404']);
305                $texte=addslashes($_POST['texte404']);
306                if ($titre=="" && $texte=="") {
307                        spip_query("DELETE FROM spip_redcta_parametres WHERE parametre='404'");
308                } else {
309                        spip_query("INSERT INTO spip_redcta_parametres(parametre, valeur, valeur2) VALUES('404', '$titre', '$texte')");
310                        spip_query("UPDATE spip_redcta_parametres SET valeur= '$titre', valeur2='$texte' WHERE parametre = '404'");
311                }
312        }
313
314        if ($_POST['action_form']=="metas") {
315                spip_query("DELETE FROM spip_redcta_parametres WHERE parametre LIKE '%metas'");
316                $metas = $_POST['metas'];
317                if (is_array($metas)) {
318                        $i = 0;
319                        foreach($metas as $meta) {
320                                if ($meta['type'] && $meta['valeur']) {
321                                        $meta['valeur']=htmlspecialchars($meta['valeur'], ENT_QUOTES);
322                                        $meta['type']=htmlspecialchars($meta['type'], ENT_QUOTES);
323                                        spip_query("INSERT INTO spip_redcta_parametres (parametre, valeur, valeur2) VALUES ('".$i."metas', '".$meta['type']."', '".$meta['valeur']."')");
324                                        $i++;
325                                }
326                        }
327                }
328        }
329
330        foreach($_POST as $key => $value) {
331                if ($key=='theme') {
332                        $value=addslashes($value);
333                        $resultat=spip_query("SELECT * FROM spip_redcta_themeassoc WHERE id=0 AND type='rubrique'");
334                        if (spip_mysql_count($resultat)) {
335                                spip_query("UPDATE spip_redcta_themeassoc SET theme= '$value' WHERE id=0 AND type='rubrique'");
336                        } else {
337                                spip_query("INSERT INTO spip_redcta_themeassoc(id, type, theme) VALUES(0, 'rubrique', '$value')");
338                        }
339                }
340
341                if ($key == 'bloc_reseau' || $key == 'logos_bailleurs') {
342                        $value = addslashes($value);
343                        $resultat = spip_query("SELECT * FROM spip_redcta_parametres WHERE parametre='$key'");
344                        if (spip_mysql_count($resultat)) {
345                                spip_query("UPDATE spip_redcta_parametres SET valeur = '$value' WHERE parametre='$key'");
346                        } else {
347                                spip_query("INSERT INTO spip_redcta_parametres(parametre, valeur) VALUES ('$key', '$value')");
348                        }
349                }
350
351        }
352}
353
354function charger_parametres() {
355        $resultat= spip_query("SELECT * FROM spip_redcta_themeassoc WHERE id=0 AND type='rubrique'");
356        if (spip_mysql_count($resultat)) {
357                while ($row=spip_fetch_array($resultat)) {
358                        $theme = $row['theme'];
359                }
360        } else {
361                $theme = "";
362        }
363
364        return $theme;
365}
366
367function charger_parametres_gen() {
368        $params=array();
369        $resultat= spip_query("SELECT * FROM spip_redcta_parametres");
370        if (spip_mysql_count($resultat)) {
371                while ($row=spip_fetch_array($resultat)) {
372                        if (ereg("metas$",$row['parametre'])) {
373                                $params["metas"][] = array("type" => $row['valeur'], "valeur" => $row['valeur2']);
374                        } else {
375                                $params[$row['parametre']] = $row['valeur'];
376                        }
377                }
378        }
379        return $params;
380}
381
382function formulaire_bandeau()
383{
384    echo "<div id=\"div_upload_bandeau\">";
385        echo debut_cadre_trait_couleur(_DIR_PLUGIN_REDCTA."/images/uploadbandeau.png", true, "", _T('redcta:titre_upload_bandeau'));
386        echo "<p>"._T('redcta:intro_upload_bandeau')."</p>";
387
388        $bandeau_site = array(_DIR_IMG."/bandeau/bandeau-0.jpg",
389                              _DIR_IMG."/bandeau/bandeau-0.png",
390                              _DIR_IMG."/bandeau/bandeau-0.gif"
391                              ); 
392       
393        foreach($bandeau_site as $filePath)
394        {
395                if (file_exists($filePath) )
396                {
397                $bandeau_actuel = $filePath;
398            }       
399        }
400       
401        if($bandeau_actuel )
402        {
403            list($rWidth, $rHeight, $rType, $rAttr) = getimagesize($bandeau_actuel);
404                $ratioImg = image_ratio($rWidth,$rHeight,350,250);
405               
406                echo "<div style=\"text-align:center\">";
407                echo "<img src=\"".$bandeau_actuel."\" alt=\"\" width=\"".$ratioImg[0]."\" height=\"".$ratioImg[1]."\" /><br/>";
408                echo "&#91;<a href=\"javascript:void(0);\" onclick=\"return AjaxSqueeze('./?exec=theme&amp;id_rubrique=0&amp;action=supprimer_bandeau&amp;id_check=".$_SESSION["id_check"]."','bandeau_icone','',event);\">"._T("lien_supprimer")."</a>&#93;";
409            echo "</div>";
410               
411        }else{
412            # Formulaire à la mode CVT
413            $contexte = array('id_rubrique'=>0,'largeurMax'=>350,'hauteurMax'=>250);
414            echo recuperer_fond('prive/upload_bandeau', $contexte);
415        }
416       
417        echo fin_cadre_trait_couleur(true);
418        echo "</div>";
419}
420
421function lister_associations()
422{
423
424        if ($_GET['action'] == 'delete_assoc' && $_GET['id_check'] == $_SESSION['id_check']) {
425                $type = isset($_GET['type']) ? addslashes($_GET['type']) : false;
426                $id = isset($_GET['id']) ? (int) $_GET['id'] : false;
427                $theme = isset($_GET['theme']) ? addslashes($_GET['theme']) : false;
428                if ($type && $id && $theme) {
429                        spip_query("DELETE FROM spip_redcta_themeassoc WHERE type='$type' AND id=$id AND theme='$theme'");
430                }
431        }
432
433        echo "<div id=\"div_liste_assoc\">";
434        $result = spip_query("SELECT * FROM spip_redcta_themeassoc WHERE type!='rubrique' OR id!=0");
435        if (spip_mysql_count($result) > 0) {
436                echo debut_cadre_couleur("doc-24.gif", true, "", _T('redcta:liste_assoc'));
437                echo "<div class='liste'><table border='0' cellspacing='0' cellpadding='3' width='100%'>";
438                while ($row = spip_fetch_array($result)){
439                        echo "<tr class='tr_liste'>";
440                        $type = $row['type'];
441                        $id = $row['id'];
442                        switch ($type) {
443                                case "rubrique":
444                                        $rubrique = spip_fetch_array(spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id"));
445                                        $titre = $rubrique['titre'];
446                                        break;
447
448                                case "article":
449                                        $article = spip_fetch_array(spip_query("SELECT titre FROM spip_articles WHERE id_article=$id"));
450                                        $titre = $article['titre'];
451                                        break;
452
453                                case "groupe":
454                                        $groupe = spip_fetch_array(spip_query("SELECT titre FROM spip_groupes_mots WHERE id_groupe=$id"));
455                                        $titre = $groupe['titre'];
456                                        break;
457
458                                case "mot":
459                                        $mot = spip_fetch_array(spip_query("SELECT titre FROM spip_mots WHERE id_mot=$id"));
460                                        $titre = $mot['titre'];
461                                        break;
462                        }
463
464                        $theme = $row['theme'];
465                        $nom_theme = ereg_replace("\|", " (", $theme);
466                        $nom_theme = ereg_replace("\.css", ")", $nom_theme);
467                        echo "<td class=\"arial1\">$titre</td>";
468                        echo "<td class=\"arial1\">$nom_theme</td>";
469                        echo "<td class=\"arial1\"><div style='text-align:right;'><a class=\"supprimer\" href='".generer_url_ecrire('theme')."&amp;action=delete_assoc&amp;id_check=".$_SESSION['id_check']."&amp;id=$id&amp;theme=$theme&amp;type=$type'><img src='../dist/images/croix-rouge.gif' alt='X' width='7' height='7' align='bottom' /></a></div></td>";
470                        echo "</tr>";
471                }
472                echo "</table></div>";
473                echo fin_cadre_couleur(true);
474        }
475        echo "</div>";
476}
477
478?>
Note: See TracBrowser for help on using the repository browser.