Changeset 96452 in spip-zone for _plugins_/fusion_mots


Ignore:
Timestamp:
Apr 4, 2016, 2:05:47 PM (5 years ago)
Author:
placido@…
Message:

Reprise de l'interface dans l'espace privé.
Le recours à id_groupe=0 pour sélectionner tous les groupes ne fonctionnait pas pour moi (SPIP 3.1.0 [22707])
Dans la colonne navigation, on utilise un formulaire ajaxé pour la sélection du/des groupe(s) (fonctionne aussi sans js).
On peut désormais sélectionner plusieurs groupes simultanément, (aucun sélectionné par défaut pour la performance).
Dans le tableau, on déporte le lien vers la page mot sur l'id pour ne pas parasiter le clic ckeckbox/radio
; puis on indique le groupe d'appartenance dans l'attribut title.
Ajout d'une feuille de style pour le privé.
Suppression d'un fichier et d'un répertoire vides.
On renvoit un "message_ok" à la suite du traitement.

Location:
_plugins_/fusion_mots/trunk
Files:
1 added
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fusion_mots/trunk/formulaires/fusionmots.html

    r54572 r96452  
     1<B_mots>
    12<div class='formulaire_spip formulaire_fusionmots'>
    2     <form action="#ENV{action}" method="post">
    3      #ACTION_FORMULAIRE{#ENV{action}}
    4         <B_mots>
    5         [<div class='reponse_formulaire_erreur'>(#ENV{erreurs}|table_valeur{remplacer})</div>]
    6         [<div class='reponse_formulaire_erreur'>(#ENV{erreurs}|table_valeur{par})</div>]
    7         <table class='cadre-liste' style='width:100%'>
    8         <tr class='row_first'>
    9             <th><:fusionmots:remplacer:></th>
    10             <th><:fusionmots:par:></th>
    11         </tr>
    12 
    13         <BOUCLE_mots(MOTS){tout}{par titre}{id_groupe?}>
    14             <tr class='tr_liste'>
    15                 <td>
    16                     <input class='checkbox' type='checkbox' name='remplacer[]' id='remplacer_#ID_MOT' value='#ID_MOT'[(#ID_MOT|in_array{#ENV{remplacer}}|oui) checked='checked'] />
    17                     <label for='remplacer_#ID_MOT'>
    18                         <a href="[(#VAL{mot}|generer_url_ecrire{id_mot=#ID_MOT})]">#TITRE</a>
    19                     </label>
    20                 </td>
    21                 <td>
    22                     <input class='radio' type='radio' name='par' id='par_#ID_MOT' value='#ID_MOT'[(#ID_MOT|=={#ENV{par}}|oui) checked='checked'] />
    23                     <label for='par_#ID_MOT'>
    24                         <a href="[(#VAL{mot}|generer_url_ecrire{id_mot=#ID_MOT})]">#TITRE</a>
    25                     </label>
    26                 </td>
    27             </tr>
    28         </BOUCLE_mots>
    29         </table>
    30         </B_mots>
    31         <p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p>
    32     </form>
     3[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
     4[(#ENV{erreurs}|count|oui)
     5<div class='error'>
     6[(#ENV{erreurs/remplacer})<br>][(#ENV{erreurs/par})<br>]
    337</div>
     8]<form action="#ENV{action}" method="post">
     9                #ACTION_FORMULAIRE{#ENV{action}}
     10                <div class="liste-objets mots">                 
     11                        <table class='spip liste'>
     12                                <caption>
     13                                        <strong class="caption">
     14                                                [(#ENV{id_groupe}|count|set{nb_grp})]
     15                                                #TOTAL_BOUCLE <:mots:titre_page_mots_tous:>,
     16                                                [(#GET{nb_grp}|>{1}|oui)<:mots:info_nb_groupe_mots{nb=#GET{nb_grp}}:>]
     17                                                [(#GET{nb_grp}|=={1}|oui)<:mots:info_1_groupe_mots:>]
     18                                                </strong>
     19                                        </caption>
     20                                <thead>
     21                                        <tr class='first_row'>
     22                                                <th colspan="2"><:fusionmots:remplacer:></th>
     23                                                <th colspan="2"><:fusionmots:vers:></th>
     24                                        </tr>
     25                                </thead>
     26                                <tbody>
     27                                       
     28                                <BOUCLE_mots(MOTS){id_groupe IN #ENV{id_groupe} }{par titre}>
     29                                <tr class="[row_(#COMPTEUR_BOUCLE|alterner{odd,even})"]>
     30                                        <td>
     31                                                <input class='checkbox' type='checkbox' name='remplacer[]' id='remplacer_#ID_MOT' value='#ID_MOT'[(#ID_MOT|in_array{#ENV{remplacer}}|oui) checked='checked'] />
     32                                                <label for='remplacer_#ID_MOT'>#TITRE</label>
     33                                        </td>
     34                                        <td>
     35                                                        <a href="[(#VAL{mot}|generer_url_ecrire{id_mot=#ID_MOT})]" [title="<:mots:info_dans_groupe|attribut_html:> (#INFO_TITRE{groupe_mot,#ID_GROUPE}|attribut_html)"]>#ID_MOT</a>
     36                                        </td>
     37                                        <td>
     38                                                <input class='radio' type='radio' name='par' id='par_#ID_MOT' value='#ID_MOT'[(#ID_MOT|=={#ENV{par}}|oui) checked='checked'] />
     39                                                <label for='par_#ID_MOT'>
     40                                                        #TITRE
     41                                                </label>
     42                                        </td>
     43                                        <td>
     44                                                        <a href="[(#VAL{mot}|generer_url_ecrire{id_mot=#ID_MOT})]" [title="<:mots:info_dans_groupe|attribut_html:> (#INFO_TITRE{groupe_mot,#ID_GROUPE}|attribut_html)"] >#ID_MOT</a>
     45                                        </td>
     46                                </tr>
     47                                </BOUCLE_mots>
     48                                </tbody>
     49                        </table>
     50                </div>
     51                <p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p>
     52        </form>
     53</div>
     54</B_mots>
     55        <:fusionmots:aucun_groupe:><br><:fusionmots:choisir_groupe:>
     56<//B_mots>
  • _plugins_/fusion_mots/trunk/formulaires/fusionmots.php

    r86096 r96452  
    33
    44function formulaires_fusionmots_charger_dist($id_groupe){
    5     return array("id_groupe"=>$id_groupe, "remplacer"=>array(),'par'=>'');
     5        return array("id_groupe"=>$id_groupe, "remplacer"=>array(),'par'=>'');
    66}
    77
    88function formulaires_fusionmots_verifier_dist($id_groupe){
    9     $erreurs    = array();
    10    
    11     if (!_request('remplacer')){
    12         $erreurs['remplacer']   =_T('fusionmots:erreur_remplacer');   
    13     }
    14    
    15     if (!_request('par')){
    16         $erreurs['par']         =_T('fusionmots:erreur_par');   
    17     }
    18     return $erreurs;       
     9        $erreurs    = array();
     10
     11        if (!_request('remplacer')){
     12                $erreurs['remplacer'] = _T('fusionmots:erreur_remplacer');   
     13        }
     14
     15        if (!_request('par')){
     16                $erreurs['par'] = _T('fusionmots:erreur_par');   
     17        }
     18        return $erreurs;       
    1919}
    2020
     
    2323        $par            = _request('par');
    2424        include_spip('inc/fusionner_mots');
    25     fusionner_mots($remplacer,$par);
    26     return array();
     25        fusionner_mots($remplacer,$par);
     26        return array('message_ok' => _T('info_modification_enregistree'));
    2727}
    2828?>
  • _plugins_/fusion_mots/trunk/lang/fusionmots_fr.php

    r54415 r96452  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66       
    7         'erreur_par'            =>'Choisissez un mot de remplacement',
    8         'erreur_remplacer'      =>'Choisissez au moins un mot à remplacer',
    9         'explication'           =>'Sur cette page vous pouvez fusionner des mots-clefs. Choisissez à gauche les mots-clefs à remplacer par celui choisi à droite.',
    10         'explication_intro'     =>'Fusionner plusieurs mots et leurs utilisations.',
    11         'choisir_groupe'        =>'Choisissez le groupe de mots dont vous souhaitez fusionner des mots',
     7        'erreur_par'            =>'Choisissez un mot de remplacement.',
     8        'erreur_remplacer'      =>'Choisissez au moins un mot à remplacer.',
     9        'explication'           =>'Sur cette page vous pouvez fusionner des mots-clefs. Choisissez, dans la colonne de gauche du tableau, les mots-clefs qui seront remplacés au profit de celui choisi dans la colonne de droite.',
     10        'aucun_groupe'  =>'Aucun groupe de mots n\'est sélectionné.',
     11        'choisir_groupe'        =>'Choisissez le groupe de mots dont vous souhaitez fusionner des mots.',
    1212        'tous_groupes'          =>'Tous les groupes',
    13         'fusionmots'            =>"Fusionner des mots-clef",
    14         'par'                           =>'Par',
    15         'remplacer'                     =>'Remplacer le(s) mot(s)-clef',
     13        'fusionmots'            =>'Fusionner des mots-clef',
     14        'vers'                          =>'Vers',
     15        'remplacer'                     =>'Fusionner la sélection',
    1616       
    1717);
  • _plugins_/fusion_mots/trunk/prive/squelettes/contenu/fusionmots.html

    r86096 r96452  
    11[(#AUTORISER{fusionner,mots}|oui)
    22#SET{id_groupe,#ENV{id_groupe,#CONFIG{groupemot_actif}}}
    3 <h1><:fusionmots:fusionmots:></h1>
    4         [(#GET{id_groupe}|>{-1}|oui)
    5                 <div class='ajax'>
    6                         #FORMULAIRE_FUSIONMOTS{#GET{id_groupe}}
    7                 </div>]
    8         [(#GET{id_groupe}|>{-1}|non)
    9                 <h3><:fusionmots:choisir_groupe:></h3>
    10                 #INCLURE{fond=inc/choix_groupe}
    11         ]
    12 ][(#AUTORISER{fusionner,mots}|non)Achtung forbiden !]
     3<h1 class="grostitre"><:fusionmots:fusionmots:></h1>
     4        <div class='ajax'>
     5                #FORMULAIRE_FUSIONMOTS{#GET{id_groupe}}
     6        </div>
     7][(#AUTORISER{fusionner,mots}|non)
     8<p class="notice">
     9        <:ecrire:info_page_interdite:> 
     10</p>]
  • _plugins_/fusion_mots/trunk/prive/squelettes/navigation/fusionmots.html

    r86096 r96452  
    22
    33#BOITE_OUVRIR{'','info'}
    4 [(#GET{id_groupe}|?{<:fusionmots:explication:>,<:fusionmots:explication_intro:>})]
     4<:fusionmots:explication:>
     5#BOITE_FERMER
    56
    6 [(#GET{id_groupe}|>{-1}|oui)#INCLURE{fond=inc/choix_groupe,id_groupe=#GET{id_groupe}}]
    7 #BOITE_FERMER
     7<B_grp>
     8<div class="formulaire_spip formulaire_choix_groupe" id="formulaire_choix_groupe">
     9        <h3 class="titrem">
     10                [(#TOTAL_BOUCLE|>{1}|oui)<:mots:info_nb_groupe_mots{nb=#TOTAL_BOUCLE}:>]
     11                [(#TOTAL_BOUCLE|=={1}|oui)<:mots:info_1_groupe_mots:>]
     12        </h3>
     13        <form action="[(#SELF|parametre_url{id_groupe,''})] "method="get">
     14                [(#SELF|parametre_url{id_groupe,''}|form_hidden)]
     15
     16                <ul class="liste_items">
     17                        <BOUCLE_grp(GROUPES_MOTS){tout}{pagination 60}>
     18                        <li class="item editer [(#GET{id_groupe}|find{#ID_GROUPE}|oui)on ]">
     19                                <label class="label" for="grp_#ID_GROUPE">
     20                                        <input
     21                                        id="grp_#ID_GROUPE"
     22                                        type="checkbox"
     23                                        class=""
     24                                        [ (#GET{id_groupe}|find{#ID_GROUPE}|oui) checked="checked"]
     25                                        name="id_groupe[]"
     26                                        value="#ID_GROUPE"/>
     27                                        #TITRE
     28                                </label>
     29                        </li>
     30                        </BOUCLE_grp>
     31                </ul>
     32                <p class="boutons">
     33                        <input type="submit" class="btn" value="<:pass_ok:>"/>
     34                        <a href="./" class="js-check-all" style="display: none;" >
     35                                <:fusionmots:tous_groupes:>
     36                        </a>
     37                </p>
     38        </form>
     39</div>
     40<script type="text/javascript">
     41
     42var manipChoixGrp = function()  {
     43
     44        var  $f = $('.lat .formulaire_choix_groupe');
     45        if ( $f.length == 0) return false;
     46
     47//fn callback qui met à jour le menu
     48        var updateListeGrp = function(){
     49                $f.find('.item').removeClass('on');
     50                $f.find('input:checked').parents('.item').addClass('on');
     51        }
     52        // collecter les id_grp des checkbox => array
     53        // et le donner a ajaxreload
     54        var submitMot = function() {
     55                t = [];
     56                $f.find('input:checked').each(function(index, el) {
     57                        t.push(el.value);
     58                });
     59                ajaxReload('contenu', {
     60                        callback:function(){updateListeGrp()},
     61                        args:{'id_groupe':t}
     62                })     
     63        }
     64        //bouton tout
     65        $('.js-check-all').show().on('click', function(e) {
     66                e.preventDefault();
     67                var all = $f.find('input[type=checkbox]').length;
     68                var on = $f.find('input:checked').length;
     69                var state = (all>on) ? true : false;
     70                $f.find('input[type=checkbox]').prop("checked", state);
     71                submitMot();
     72        });
     73        //surveiller les checkbox
     74        $f.find('ul').unbind('change').on('change', function(e) {
     75                submitMot();
     76        });
     77
     78}
     79
     80$(function(){
     81        manipChoixGrp();
     82});
     83</script>
     84
     85</B_grp>
     86<h3 class="titrem"><:mots:info_aucun_groupe_mots:></h3>
     87<//B_grp>
Note: See TracChangeset for help on using the changeset viewer.