Changeset 32666 in spip-zone


Ignore:
Timestamp:
Nov 4, 2009, 7:38:50 PM (10 years ago)
Author:
marcimat@…
Message:

Grosse mise à jour du plugin Squelettes par mots clés :

  • suppression de toute surcharge
  • utilisation de styliser
  • quelques réécritures (de la partie styliser).

A tester.

Location:
_plugins_/squelettes_par_mots_cle/trunk
Files:
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/squelettes_par_mots_cle/trunk/SquelettesMots.php

    r21937 r32666  
    1818
    1919
    20 $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
    21 define('_DIR_PLUGIN_CHERCHER_SQUELETTES',(_DIR_PLUGINS.end($p)));
    22 
    23 function SquelettesMots_ajouter_onglets($flux) {
    24   if($flux['args']=='configuration')
    25         $flux['data']['config_chercher_squelettes_mots']=
    26                 new Bouton(
    27                 '../'._DIR_PLUGIN_CHERCHER_SQUELETTES.'/spip_death.png', 'Configurer Squelettes Mots',
    28                 generer_url_ecrire("config_chercher_squelettes_mots"));
    29   return $flux;
    30 }
    31 
    3220//TODO: essayer de se passer de cette insertion unilaterale de css ...
    3321function SquelettesMots_header_prive($texte) {
    34   $texte.= '<link rel="stylesheet" type="text/css" href="'._DIR_PLUGIN_CHERCHER_SQUELETTES.'/chercher_squelettes_mots.css" />' . "\n";
     22  $texte.= '<link rel="stylesheet" type="text/css" href="'._DIR_PLUGIN_SQUELETTESMOTS.'chercher_squelettes_mots.css" />' . "\n";
    3523  return $texte;
    3624}
    3725
     26// Selection du squelette par mot cle
     27function SquelettesMots_styliser($flux) {
     28        // quand le selecteur doit il s'activer ?
     29        // pas de fond=rep/nom (inclusions)
     30        if ($fond = $flux['args']['fond']
     31        and false === strpos($fond, '/')) {
     32                // on cherche si le squelette a deja trouve un fond particulier specifique
     33                // c'est a dire different de $fond.html.
     34                // Si c'est le cas, on ne cherche pas de squelette specifique par mot.
     35                $skel = basename($flux['data']);
     36                if ($skel == $fond) {
     37                        $fonds = unserialize($GLOBALS['meta']['SquelettesMots:fond_pour_groupe']);
     38                        // array ($base_fond = array($id_groupe, $table, $_id_table))
     39                        // on teste qu'on a bien un fond
     40                        if (is_array($fonds) and isset($fonds[$fond])) {
     41                                // si un identifiant du meme type est bien passe
     42                                list($id_groupe, $table, $_id_table) = $fonds[$fond];
     43                                $ext = $flux['args']['ext'];
     44                                $id_rub = $flux['args']['id_rubrique'];
     45                                if ($id = intval($flux['args']['contexte'][$_id_table])) {
     46                                        // premier cas : mot sur l'article
     47                                        if ($mot = quete_mot_squelette($id, $id_groupe, $table, $_id_table)
     48                                        and   ($squelette = test_squelette_motcle($fond, $ext, $mot, '=')
     49                                                or $squelette = test_squelette_motcle($fond, $ext, $mot))) {
     50                                                        $flux['data'] = $squelette;
     51                                        }
     52                                        // second cas : mot sur une rubrique parente
     53                                        elseif ($mot = quete_mot_squelette($id_rub, $id_groupe, 'rubriques', 'id_rubrique', true)
     54                                                and $squelette = test_squelette_motcle($fond, $ext, $mot)) {
     55                                                        $flux['data'] = $squelette;
     56                                        }
     57                                }
     58
     59                        }
     60                }
     61        }       
     62        return $flux;
     63}
     64
     65function test_squelette_motcle($fond, $ext, $mot, $separateur = '-') {
     66        if ($squelette = find_in_path($fond . $separateur . $mot . '.' . $ext)) {
     67                return substr($squelette, 0, -strlen(".$ext"));
     68        }
     69        return false;
     70}
     71
     72// smc: on ajoute la fonction qui va chercher les mots
     73// associes aux items dans le groupe qui va bien
     74// recursion : seulement si $id de rubrique
     75function quete_mot_squelette($id ,$id_groupe, $table, $_id_table, $recurse=false) {
     76  $select1 = 'titre';
     77  $from1 = array('spip_mots AS mots',
     78                                 "spip_mots_$table AS lien");
     79  while($id > 0) {
     80        $where1 = array("$_id_table=$id",
     81                                        'mots.id_mot=lien.id_mot',
     82                                        "id_groupe=$id_groupe");
     83       
     84        // attention getfetsel ne renvoie qu'un mot !
     85        // si quelqu'un a mis plusieurs mots sur l'objet, tant pis pour lui,
     86        // on ne peut pas predire lequel sera retourne
     87        if ($titre = sql_getfetsel($select1,$from1,$where1)) {
     88                include_spip("inc/charsets");
     89                include_spip("inc/filtres");
     90                return translitteration(preg_replace('/["\'.\s]/', '_', extraire_multi($titre)));       
     91        }
     92        if(!$recurse) return '';
     93        // attention identifiant de rubrique ici uniquement
     94        $id = quete_parent($id);
     95  }
     96  return '';
     97}
    3898?>
  • _plugins_/squelettes_par_mots_cle/trunk/exec/config_chercher_squelettes_mots.php

    r21940 r32666  
    1818//    along with this program; if not, write to the Free Software
    1919//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    20 
    21 
    22 $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(dirname(__FILE__)))));
    23 define('_DIR_PLUGIN_CHERCHER_SQUELETTES',(_DIR_PLUGINS.end($p)));
    2420
    2521function exec_config_chercher_squelettes_mots() {
  • _plugins_/squelettes_par_mots_cle/trunk/lang/squelettesmots_fr.php

    r14623 r32666  
    33        $GLOBALS[$GLOBALS['idx_lang']] = array(
    44       
     5        'titre_onglet' => 'Squelettes par mots-cl&eacute;s',
    56        'titre_page' => 'Configuration du choix du squelette',
    67        'gros_titre' => 'Cr&eacute;er des r&egrave;gles pour choisir les squelettes en fonction des mots clef',
  • _plugins_/squelettes_par_mots_cle/trunk/plugin.xml

    r25251 r32666  
    1616        </auteur>
    1717        <version>
    18           2.0
     18          2.1
    1919        </version>
    2020        <etat>
    21           dev
     21          test
    2222        </etat>
    2323        <description>
     
    6060        </prefix>
    6161        <pipeline>
    62                 <nom>ajouter_onglets</nom>
    63                 <inclure>SquelettesMots.php</inclure>
    64         </pipeline>
    65         <pipeline>
    6662          <nom>header_prive</nom>
    6763          <inclure>SquelettesMots.php</inclure>
    6864        </pipeline>
    69 
    70         <necessite id="spip" version="[2.0.0;]" />
     65       
     66        <pipeline>
     67          <nom>styliser</nom>
     68          <inclure>SquelettesMots.php</inclure>
     69        </pipeline>
     70               
     71        <onglet id='config_chercher_squelettes_mots' parent='configuration'>
     72                <icone>spip_death.png</icone>
     73                <titre>squelettesmots:titre_onglet</titre>
     74        </onglet>
     75       
     76        <necessite id="spip" version="[2.0.6;]" />
    7177        <chemin dir='' />
    7278</plugin>
Note: See TracChangeset for help on using the changeset viewer.