Changeset 8111 in spip-zone


Ignore:
Timestamp:
Dec 18, 2006, 5:33:22 PM (12 years ago)
Author:
patfr@…
Message:
  • Bienvenue aux tweaks multi-pipelines !
  • Optimisations de code
  • Meilleures descriptions des tweaks

TODO : vos test, lire et ecrire les metas

Location:
_plugins_/_stable_/tweak_spip
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/tweak_spip/exec/tweak_spip_admin.php

    r8100 r8111  
    11<?php
    2 //include_spip('inc/presentation');
     2#---------------------------------------------------#
     3#  Plugin  : Tweak SPIP                             #
     4#  Auteur  : Patrice Vanneufville, 2006             #
     5#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net #
     6#  Licence : GPL                                    #
     7#---------------------------------------------------#
     8
    39include_spip('inc/texte');
    410include_spip('inc/layer');
     
    126132        echo generer_url_post_ecrire("tweak_spip_admin");
    127133
    128         echo "<ul>";
    129        
    130         foreach($temp = $tweaks as $tweak) {
    131                 echo "<li>";
    132                 echo ligne_tweak($tweak);
    133                 echo "</li>\n";
    134         }
     134        echo '<ul>';
     135        foreach($temp = $tweaks as $tweak) echo '<li>' . ligne_tweak($tweak) . "</li>\n";
     136        echo '</ul>';
    135137       
    136138//      echo "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />";
     
    138140        echo "\n<input type='hidden' name='changer_tweaks' value='oui'>";
    139141
    140         echo "\n<p>";
    141 
    142         echo "<div style='text-align:$spip_lang_right'>";
     142        echo "\n<div style='text-align:$spip_lang_right'>";
    143143        echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' onclick=\"alert('à faire, si vous trouvez un moyen simple de stocker l\'état des tweaks !')\">";
    144144        echo "</div>";
     
    152152        echo "</form></td></tr></table>\n";
    153153
    154 //      echo "<br />";
    155 
    156 /*
    157         echo '<form action="'.generer_url_ecrire('config_chercher_squelettes_mots').'" method="post">';
    158 
    159         $groupes_mots = '';
    160         $select = array('id_groupe','titre');
    161         $from = array('spip_groupes_mots');
    162 
    163         //      include_ecrire('inc_filtres');
    164         $rez = spip_abstract_select($select,$from);
    165         while($row = spip_abstract_fetch($rez)) {
    166           $groupes_mots[$row['id_groupe']] = extraire_multi($row['titre']);
    167         }
    168         spip_abstract_free($rez);
    169 
    170         //TODO: trouver automatiquement ces informations pour toutes les tables avec un jonction sur les mots
    171         $id_tables = array('articles' => 'id_article',
    172                                            'rubriques' => 'id_rubrique',
    173                                            'breves' => 'id_breve',
    174                                            'sites' => 'id_site');
    175        
    176 
    177         $fonds = unserialize(lire_meta('SquelettesMots:fond_pour_groupe'));
    178 
    179         $field_fonds = $_REQUEST['fonds'];
    180         $id_groupes = $_REQUEST['tid_groupe'];
    181         $types = $_REQUEST['type'];
    182         $actif = $_REQUEST['actif'];
    183        
    184         // On transforme les _POST en jolie tableau
    185         if($field_fonds) {
    186           $new_fonds = array();
    187           foreach($field_fonds as $index => $fond) {           
    188                 $index = intval($index);
    189                 $fond = addslashes($fond);
    190                 if($actif[$index]) {
    191                   $id_groupe = intval($id_groupes[$index]);
    192                   $type = addslashes($types[$index]);
    193                   $new_fonds[$fond] = array($id_groupe,$type,$id_tables[$type]);
    194                 }
    195           }
    196           $fonds = $new_fonds;
    197         }
    198        
    199         $index = 0;
    200         if (is_array($fonds))
    201         foreach($fonds as $fond => $a) {
    202           list($id_groupe,$type,$id_table) = $a;
    203           $index++;
    204           echo '<fieldset class="regle">';
    205           echo '<legend>'._T('squelettesmots:reglei',array('id'=>$index)).'</legend>';
    206           echo '<div class="champs">';
    207           echo "<input type=\"checkbox\" class=\"actif\" name=\"actif[$index]\" checked=\"true\"/>";
    208           echo "<label for=\"fond_$index\" class=\"fond\">"._T('squelettesmots:fond')."</label>";
    209           echo "<input type=\"text\" name=\"fonds[$index]\" class=\"fond\" value=\"$fond\" id=\"fond_$index\"/>";
    210           echo "<label for=\"id_groupe_$index\" class=\"id_groupe\">"._T('squelettesmots:groupe')."</label>";
    211           echo "<select name=\"tid_groupe[$index]\" class=\"id_groupe\" id=\"id_groupe_$index\">";
    212           foreach($groupes_mots as $id => $titre) {
    213                 echo "<option value=\"$id\"".(($id_groupe == $id)?' selected="true"':'').">$titre</option>";
    214           }
    215           echo '</select>';
    216           echo "<label for=\"type_$index\" class=\"type\">"._T('squelettesmots:type')."</label>";
    217           echo "<select name=\"type[$index]\" class=\"type\" id=\"type_$index\">";
    218           foreach($id_tables as $t => $x) {
    219                 echo "<option value=\"$t\"".(($type == $t)?' selected="true"':'').">$t</option>";
    220           }
    221           echo '</select>';
    222           echo '</div>';
    223           $select1 = array('titre');
    224           $from1 = array('spip_mots AS mots');
    225           $where1 = array("id_groupe=$id_groupe");
    226           $rez =spip_abstract_select($select1,$from1,$where1);
    227           $liste_squel = '<ul>';
    228           $ext = 'html'; //On force a html, c'est pas beau, mais je vois pas la solution actuellement.
    229           $cnt_actif = 0;
    230           $cnt_inactif = 0;
    231           while ($r = spip_abstract_fetch($rez)) {
    232                 include_ecrire("inc_charsets");
    233                 $n = translitteration(preg_replace('/["\'.\s]/','_',extraire_multi($r['titre'])));
    234                 if ($squel = find_in_path("$fond-$n.$ext")) {
    235                   $cnt_actif++;
    236                   $liste_squel .= "<li><a href=\"$squel\">$fond-$n.$ext</a></li>";
    237                 } else {
    238                   $cnt_inactif++;
    239                   $liste_squel .= "<li>$fond-$n.$ext</li>";
    240                 }
    241                 if ($squel = find_in_path("$fond=$n.$ext")) {
    242                   $cnt_actif++;
    243                   $liste_squel .= "<li><a href=\"$squel\">$fond=$n.$ext</a></li>";
    244                 } else {
    245                   $cnt_inactif++;
    246                   $liste_squel .= "<li>$fond=$n.$ext</li>";
    247                 }
    248           }
    249           spip_abstract_free($rez);
    250           $liste_squel .= '</ul>';
    251 
    252          
    253           echo '<div class="possible">';
    254           if($cnt_actif+$cnt_inactif > 0) echo bouton_block_invisible("regle$index");
    255           echo _T('squelettesmots:possibilites',array('total_actif' => $cnt_actif, 'total_inactif'=>$cnt_inactif));
    256           if ($cnt_actif+$cnt_inactif > 0) {
    257                 echo debut_block_invisible("regle$index");
    258                 echo $liste_squel;
    259                 echo fin_block();
    260           }
    261           echo '</div>';
    262 
    263           echo '</fieldset>';
    264         }
    265        
    266         $index++;
    267        
    268         echo '<hr/>';
    269         echo '<fieldset class="nouvelle_regle">';
    270         echo '<legend>'._T('squelettesmots:nouvelle_regle').'</legend>';
    271         echo "<input type=\"checkbox\" class=\"actif\" name=\"actif[$index]\"/>";
    272         echo "<label for=\"fond_$index\" class=\"fond\">"._T('squelettesmots:fond')."</label>";
    273         echo "<input type=\"text\" name=\"fonds[$index]\" class=\"fond\" value=\"article\"/>";
    274         echo "<label for=\"id_groupe_$index\" class=\"id_groupe\">"._T('squelettesmots:groupe')."</label>";
    275         echo "<select name=\"tid_groupe[$index]\" class=\"id_groupe\" id=\"id_groupe_$index\">";
    276         foreach($groupes_mots as $id => $titre) {
    277           echo "<option value=\"$id\">$titre</option>";
    278         }
    279         echo '</select>';
    280         echo "<label for=\"type_$index\" class=\"type\">"._T('squelettesmots:type')."</label>";
    281         echo "<select name=\"type[$index]\" class=\"type\" id=\"type_$index\">";
    282         foreach($id_tables as $t => $x) {
    283           echo "<option value=\"$t\">$t</option>";
    284         }
    285         echo '</select>';
    286         echo '</fieldset>';
    287        
    288         echo '<input type="submit" value="'._T('valider').'"/>';
    289         echo '</form>';
    290 */     
    291  
    292154//  ecrire_meta('SquelettesMots:fond_pour_groupe',serialize($fonds));
    293155//  ecrire_metas();
    294156 
    295   fin_page();
     157        echo fin_page();
    296158 
    297159}
    298160
     161// est-ce que $pipe est un pipeline ?
     162function is_tweak_pipeline($pipe) {
     163        global $tweak_exclude;
     164        return !in_array($pipe, $tweak_exclude);
     165}
     166
     167// affiche un tweak sur une ligne
    299168function ligne_tweak($tweak){
    300169        static $id_input=0;
     
    314183                $s .=  "</div>";
    315184        }
    316 
    317         // puce d'etat du plugin
    318         // <etat>dev|experimental|test|stable</etat>
    319         $etat = 'dev';
    320         if (isset($info['etat']))
    321                 $etat = $info['etat'];
    322         switch ($etat) {
    323                 case 'experimental':
    324                         $puce = 'puce-rouge.gif';
    325                         $titre_etat = _T('plugin_etat_experimental');
    326                         break;
    327                 case 'test':
    328                         $puce = 'puce-orange.gif';
    329                         $titre_etat = _T('plugin_etat_test');
    330                         break;
    331                 case 'stable':
    332                         $puce = 'puce-verte.gif';
    333                         $titre_etat = _T('plugin_etat_stable');
    334                         break;
    335                 default:
    336                         $puce = 'puce-poubelle.gif';
    337                         $titre_etat = _T('plugin_etat_developpement');
    338                         break;
    339         }
    340185*/
    341186        $s .= "<img src='"._DIR_IMG_PACK."$puce' width='9' height='9' style='border:0;' alt=\"$titre_etat\" title=\"$titre_etat\" />&nbsp;";
     
    344189        $s .= $actif?" checked='checked'":"";
    345190        $s .= " onclick='verifchange.apply(this,[\"$inc\"])' /> <label for='label_$id_input' style='display:none'>"._T('tweak:activer_tweak')."</label>";
    346         $id_input++;
    347191
    348192        $s .= bouton_block_invisible($tweak_id) . propre($tweak['nom']);
     
    355199        if (isset($tweak['description'])) $s .= propre($tweak['description']);
    356200        if (isset($tweak['auteur'])) $s .= "<br/><br/>" . _T('auteur') .' '. propre($tweak['auteur']) . "<hr/>";
    357         $s .= _T('tweak:tweak') ." $inc.php | ". $tweak['pipeline'];
    358         if (isset($tweak['fonction']))  $s .= " | " . $tweak['fonction'];
     201        $s .= _T('tweak:tweak') ." $inc.php";
     202        if ($tweak['options']) $s .= ' | options';
     203        if ($tweak['fonctions']) $s .= ' | fonctions';
     204        foreach ($tweak as $pipe=>$fonc) if(is_tweak_pipeline($pipe)) $s .= ' | '.$pipe;
    359205        $s .= "</div>";
    360206
    361207        $s .= fin_block();
     208        $id_input++;
    362209
    363210        return $s;
  • _plugins_/_stable_/tweak_spip/tweak_spip.php

    r8100 r8111  
    11<?php
     2#---------------------------------------------------#
     3#  Plugin  : Tweak SPIP                             #
     4#  Auteur  : Patrice Vanneufville, 2006             #
     5#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net #
     6#  Licence : GPL                                    #
     7#---------------------------------------------------#
     8
    29include_spip('tweak_spip_config');
    310
     
    815        'auteur'                => auteur du tweak
    916        'include'               => fichier inc/???.php à inclure
    10         'pipeline'              => pipeline à utiliser
    11         'fonction'              => function à utiliser
     17        'options'               => 1 si l'include doit etre place dans tweak_spip_options.php
     18        'fonctions'             => 1 si l'include doit etre place dans tweak_spip_fonctions.php
     19sinon :
     20        'pipeline_1'    => 'function à utiliser',
     21        'pipeline_2'    => 'function à utiliser',
     22        etc.
    1223*/
     24
     25// ajoute un tweak à $tweaks;
    1326function add_tweak($tableau) {
    1427        global $tweaks;
     
    1629}
    1730
    18 // $pipeline ici est egal à 'options' ou 'fonctions'
    19 function include_tweaks($pipeline) {
    20         global $tweaks;
    21         foreach ($temp=$tweaks as $tweak) if ($tweak['pipeline']==$pipeline && $tweak['actif'])
    22                 include_spip('inc/'.$tweak['include']);
     31// $type ici est egal à 'options' ou 'fonctions'
     32function include_tweaks($type) {
     33        global $tweaks_pipelines;
     34        foreach ($tweaks_pipelines[$type] as $inc) include_spip('inc/'.$inc);
    2335}
    2436
     
    2638// passe le $flux dans le $pipeline ...
    2739function tweak_pipeline($pipeline, $flux) {
    28         global $tweaks;
    29         foreach ($temp=$tweaks as $tweak) if ($tweak['pipeline']==$pipeline && $tweak['actif']) {
    30 //              include_once(_DIR_PLUGIN_TWEAK_SPIP.'inc/'.$tweak['include'].'.php');
    31                 include_spip('inc/'.$tweak['include']);
    32                 $fonc = $tweak['fonction'];
    33                 if (function_exists($fonc)) $flux = $fonc($flux);
     40        global $tweaks, $tweaks_pipelines;
     41        if (isset($tweaks_pipelines[$pipeline])) {
     42                foreach ($tweaks_pipelines[$pipeline][0] as $inc) include_spip('inc/'.$inc);
     43                foreach ($tweaks_pipelines[$pipeline][1] as $fonc) if (function_exists($fonc)) $flux = $fonc($flux);
    3444        }
    3545        return $flux;
  • _plugins_/_stable_/tweak_spip/tweak_spip_config.php

    r8099 r8111  
    11<?php
    22
    3 global $tweaks, $tweaks_actifs;
     3#---------------------------------------------------#
     4#  Plugin  : Tweak SPIP                             #
     5#  Auteur  : Patrice Vanneufville, 2006             #
     6#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net #
     7#  Licence : GPL                                    #
     8#---------------------------------------------------#
     9
     10global $tweaks, $tweaks_actifs, $tweaks_pipelines, $tweak_exclude;
    411
    512// cette liste enumere les tweaks inc/???.php a installer.
     
    2633        'auteur'                => '[Cedric MORIN->mailto:cedric.morin@yterium.com]',
    2734        'include'               => 'desactiver_cache',
    28         'pipeline'              => 'options',
     35        // a inserer dans les options
     36        'options'               => 1
    2937));
    3038
    3139add_tweak( array(
    3240        'nom'                   => 'Supprimer le num&eacute;ro',
    33         'description'   => "Applique la fonction spip supprimer_numero &agrave; l'ensemble des titres du site, sans qu'elle soit pr&eactute;sente dans les squelettes.",
     41        'description'   => "Applique la fonction spip supprimer_numero() &agrave; l'ensemble des titres du site, sans qu'elle soit pr&eactute;sente dans les squelettes.",
    3442        'auteur'                => 'collectif',
    3543        'include'               => 'supprimer_numero_options',
    36         'pipeline'              => 'options',
     44        // a inserer dans les options
     45        'options'               => 1
    3746));
    3847
     
    4352add_tweak( array(
    4453        'nom'                   => 'Version texte',
    45         'description'   => "2 Filtres :
    46 _ version_texte {(extrait le contenu texte d'une page html &agrave; l'exclusion de quelques balises &eacute;l&eacute;mentaires)}
    47 _ version_plein_texte {(extrait le contenu texte d'une page html pour rendre du texte plein)}",
     54        'description'   => "2 Filtres pour vos squelettes.
     55_ version_texte : extrait le contenu texte d'une page html &agrave; l'exclusion de quelques balises &eacute;l&eacute;mentaires
     56_ version_plein_texte : extrait le contenu texte d'une page html pour rendre du texte plein",
    4857        'auteur'                => '[Cedric MORIN->mailto:cedric.morin@yterium.com]',
    4958        'include'               => 'verstexte_fonctions',
    50         'pipeline'              => 'fonctions',
     59        // a inserer dans les fonctions
     60        'fonctions'             => 1
    5161));
    5262
    5363add_tweak( array(
    5464        'nom'                   => 'Orientation des images',
    55         'description'   => "Le plugin orientation ajoute les crit&egrave;res <code>{portrait}</code>, <code>{carre}</code> et <code>{paysage}</code> pour le classement des photos. [->http://www.spip-contrib.net/Portrait-ou-Paysage]",
    56         'auteur'                => 'Pierre Andrews (Mortimer) &amp; IZO ',
     65        'description'   => "Le plugin orientation ajoute les crit&egrave;res <code>{portrait}</code>, <code>{carre}</code> et <code>{paysage}</code> dans vos squelettes pour le classement des photos. [Plus d'infos->http://www.spip-contrib.net/Portrait-ou-Paysage]",
     66        'auteur'                => 'Pierre Andrews (Mortimer) &amp; IZO',
    5767        'include'               => 'orientation',
    58         'pipeline'              => 'fonctions',
     68        // a inserer dans les fonctions
     69        'fonctions'             => 1
    5970));
    6071
     
    6879        'nom'                   => 'D&eacute;sactiver les objects flash',
    6980        'description'   => 'Ce plugin supprime les objets flash des pages de votre site et les remplace par le contenu alternatif associ&eacute;.
    70 _ N&eacute;cessite jQuery.',
     81_ N&eacute;cessite le plugin {jQuery} ou une version de SPIP sup&eacute;rieure à 1.9.2.',
    7182        'auteur'                => '[Cedric MORIN->mailto:cedric.morin@yterium.com]',
    7283        'include'               => 'desactiver_flash',
    73         'pipeline'              => 'affichage_final',
    74         'fonction'              => 'InhibeFlash_affichage_final',
     84        // pipeline => fonction
     85        'affichage_final' => 'InhibeFlash_affichage_final',
    7586));
    7687
     
    8192add_tweak( array(
    8293        'nom'                   => 'Tout multi',
    83         'description'   => 'Introduit le raccourci {&lt;:texte:&gt;} pour introduire librement des blocs multi dans un texte.',
     94        'description'   => "Introduit le raccourci &lt;:un_texte:&gt; pour introduire librement des blocs multi-langues dans un article.
     95_ La fonction SPIP utilis&eacute;e est : _T('un_texte', \$flux).
     96_ N'oubliez pas de v&eacute;rifier que 'un_texte' est bien d&eacute;fini dans les fichiers de langue",
    8497        'auteur'                => '',
    8598        'include'               => 'toutmulti',
    86         'pipeline'              => 'pre_typo',
    87         'fonction'              => 'ToutMulti_pre_typo',
     99        // pipeline => fonction
     100        'pre_typo'      => 'ToutMulti_pre_typo',
    88101));
    89102
     
    93106        'auteur'                => '[J&eacute;r&ocirc;me Combaz->http://conseil-recherche-innovation.net/index.php/2000/07/08/72-jerome-combaz]',
    94107        'include'               => 'bellespuces',
    95         'pipeline'              => 'pre_typo',
    96         'fonction'              => 'bellespuces_pre_typo',
     108        // pipeline => fonction
     109        'pre_typo' => 'bellespuces_pre_typo',
    97110));     
    98111
     
    108121        'auteur'                => '[izo@aucuneid.net->http://www.aucuneid.com/bones]',
    109122        'include'               => 'decoration',
    110         'pipeline'              => 'pre_typo',
    111         'fonction'              => 'decoration_pre_typo',
     123        // pipeline => fonction
     124        'pre_typo' => 'decoration_pre_typo',
    112125));
    113126
     
    116129//-----------------------------------------------------------------------------//
    117130
     131// exclure ce qui n'est pas un pipeline...
     132$tweak_exclude = array('nom', 'description', 'auteur', 'include', 'options', 'fonctions', 'actif');
    118133
    119 foreach ($tweaks as $i=>$tweak)
    120          $tweaks[$i]['actif'] = in_array($tweak['include'], $tweaks_actifs);
     134foreach ($tweaks as $i=>$tweak) {
     135        // insersion des parametres de $tweaks_actifs dans $tweaks;
     136        $actif = $tweaks[$i]['actif'] = in_array($tweak['include'], $tweaks_actifs);
     137        // stockage de la liste des fonctions par pipeline, si le tweak est actif...
     138        if ($actif) {
     139                foreach ($tweak as $pipe=>$fonc) if(!in_array($pipe, $tweak_exclude)) {
     140                        $tweaks_pipelines[$pipe][0][] = $tweak['include'];
     141                        $tweaks_pipelines[$pipe][1][] = $fonc;
     142                }
     143                if ($tweak['options']) $tweaks_pipelines['inc_options'][] = $tweak['include'];
     144                if ($tweak['fonctions']) $tweaks_pipelines['inc_fonctions'][] = $tweak['include'];
     145        }
     146}
    121147
    122148//print_r($tweaks_actifs);
    123149//print_r($tweaks);
     150//print_r($tweaks_pipelines);
    124151
    125152?>
Note: See TracChangeset for help on using the changeset viewer.