Changeset 76478 in spip-zone


Ignore:
Timestamp:
Sep 24, 2013, 9:04:29 PM (6 years ago)
Author:
patfr@…
Message:

Glossaire interne : redirections désormais possibles, à spécifier dans le titre grâce au séparateur /=
Exemple en externe : Bretagne/=http://http://www.tourismebretagne.com/
Exemple en interne (article 337) : Bretagne/=337
Exemple en interne (rubrique 33) : Bretagne/=rub33
Attention, ce lien de redirection doit toujours être placé en fin de titre.
+ informations concernant le glossaire sur la page privée du mot clé.

Location:
_plugins_/couteau_suisse
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r75123 r76478  
    12281228        'code:jq_init' => 'glossaire_init.apply(this);',
    12291229        'pipelinecode:nettoyer_raccourcis_typo' => '$flux=str_replace(_CS_SANS_GLOSSAIRE, "", $flux);',
     1230        'pipeline:affiche_milieu' => defined('_SPIP30000')?'glossaire_affiche_milieu':'', // pas teste sous SPIP<3 ...
    12301231));
    12311232
  • _plugins_/couteau_suisse/outils/glossaire_fonctions.php

    r75253 r76478  
    3030if(!defined('_SPIP19300'))
    3131        @define('_GLOSSAIRE_QUERY', 'SELECT id_mot, titre, texte, descriptif FROM spip_mots WHERE type=' . glossaire_groupes() . ' ORDER BY id_mot ASC');
    32                
     32
    3333// surcharge possible de cette fonction glossaire_generer_url_dist par : glossaire_generer_url($id_mot, $titre_mot)
    3434// si elle existe, elle sera utilisee pour generer l'url cliquable des mots trouves
    3535//   exemple pour annuler le clic : function glossaire_generer_url($id_mot, $titre_mot) { return 'javascript:;'; }
    3636function glossaire_generer_url_dist($id_mot, $titre_mot) {
     37        if(strpos($titre_mot, '=')!==false) {
     38                list(, $lien) = glossaire_redirection($titre_mot);
     39                if($lien) return calculer_url($lien);
     40        }
    3741        if(defined('_SPIP19300'))
    3842                return generer_url_entite($id_mot, 'mot');
     
    6569// traitement pour #TITRE/mots : retrait des expressions regulieres
    6670function cs_glossaire_titres($titre) {
    67         if(strpos($titre, ',')===false) return $titre;
     71        if(strpos($titre, ',')===false && strpos($titre, '=')===false) return $titre;
    6872        list(,,$mots) = glossaire_parse($titre);
    6973        return $mots;
     
    124128}
    125129
     130function glossaire_redirection($titre) {
     131        $titre = preg_split(','.preg_quote(_GLOSSAIRE_TITRE_BASE_SEP,',').'\s*=,', $titre, 2);
     132        return array(trim($titre[0]), isset($titre[1])?trim($titre[1]):'');
     133}
     134
    126135// parse toutes les formes du titre d'un mot-cle du glossaire
    127136// prendre en compte les formes du mot : architrave/architraves
    128137function glossaire_parse($titre) {
    129138        $mots = $regs = $titres = array(); $ok_mots = true;
     139        // cas d'une redirection
     140        if(strpos($titre, '=')!==false) list($titre) = glossaire_redirection($titre);
    130141        foreach(explode(_GLOSSAIRE_TITRE_BASE_SEP, str_replace('</','@@tag@@',$titre)) as $m) {
    131142                // interpretation des expressions regulieres grace aux virgules : ,un +mot,i
     
    230241                if($mot_present) {
    231242                        $lien = $glossaire_generer_url($gloss_id, $titre);
    232                         // $definition =strlen($mot['descriptif'])?$mot['descriptif']:$mot['texte'];
     243                        // $definition = strlen($mot['descriptif'])?$mot['descriptif']:$mot['texte'];
    233244                        if($liste)
    234245                                // on ne renvoie que la liste des mots trouves
     
    304315                        array_walk($mots, create_function('&$v,$k,&$s', $lien.' class=\"nuage".$s[$v[1]]."\">".'.$titre.'."</a>";'), $stats);
    305316                        break;
    306                 default:return "#GLOSSAIRE/$type?";
     317                default: return "#GLOSSAIRE/$type?";
    307318        }
    308319        $mots = array_unique($mots);
     
    310321}
    311322
     323// fonction pipeline SPIP>=3.0
     324function glossaire_affiche_milieu($flux) {
     325        if($flux['args']['exec']=='mot') {
     326                $titre = sql_getfetsel('titre', 'spip_mots', '(id_mot='.intval($flux['args']['id_mot']).') AND (type='.glossaire_groupes().')');
     327                if(!$titre) return $flux; // Ce n'est pas un mot du glossaire
     328                $flux['data'] .= debut_cadre_relief(cs_icone(24), true).'<b>'
     329                        . cs_lien(generer_url_ecrire('admin_couteau_suisse', 'cmd=descrip&outil=glossaire#cs_infos'), couteauprive_T('glossaire:nom')).'</b>'
     330                        . '<br/>&nbsp; > <b>'._T('info_titre').'</b> '.htmlentities($titre, ENT_QUOTES, $GLOBALS['meta']['charset']);
     331                list(,$lien) = glossaire_redirection($titre);
     332                if($lien && $lien = calculer_url($lien, '', 'tout'))
     333                        $flux['data'] .= '<br/>&nbsp; > <b>'._T('info_lien_hypertexte').'</b> '.cs_lien($lien['url'], $lien['titre']);
     334                $flux['data'] .= fin_cadre_relief(true);
     335        }
     336        return $flux;
     337}
    312338?>
  • _plugins_/couteau_suisse/paquet.xml

    r75252 r76478  
    22        prefix="couteau_suisse"
    33        categorie="maintenance"
    4         version="1.8.141"
     4        version="1.8.142"
    55        etat="stable"
    66        compatibilite="[1.9.2;3.0.99]"
  • _plugins_/couteau_suisse/plugin.xml

    r75252 r76478  
    33        <slogan>... ou plus de fonctionnalit&#233;s pour SPIP !</slogan>
    44        <icon>img/couteau-50.gif</icon>
    5         <version>1.8.141</version>
     5        <version>1.8.142</version>
    66        <version_base>1.11</version_base>
    77        <auteur>Patrice Vanneufville
Note: See TracChangeset for help on using the changeset viewer.