source: trunk/spip/esqueleto-redcta/plugins/magusine/exec/theme.php @ 133

Last change on this file since 133 was 80, checked in by guille, 16 years ago

el plugin completo

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