Changeset 66869 in spip-zone for _plugins_/grappes


Ignore:
Timestamp:
Oct 17, 2012, 2:37:11 PM (7 years ago)
Author:
brunobergot@…
Message:

suivre r66198 pour utiliser la nouvelle méthode des sélecteurs génériques :

  • plus besoin d'insérer un script perso, le callback suffit
  • refonte des squelettes de selecteurs
  • correction de l'autorisation grappe_associer
  • correction de l'action lier_objets pour le cas où la source n'est pas une grappe mais l'objet à lier
  • pétouille de style
Location:
_plugins_/grappes/trunk
Files:
1 added
6 edited
6 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/grappes/trunk/action/lier_objets.php

    r66848 r66869  
    99include_spip('action/editer_liens');
    1010
    11 function action_lier_objets_dist()
    12 {
     11function action_lier_objets_dist(){
    1312        $securiser_action = charger_fonction('securiser_action', 'inc');
    1413        $arg = $securiser_action();
     
    3736
    3837function lier_objets($source,$id_source,$cible,$id_cible){
    39         objet_associer(array($source=>$id_source),array($cible=>$id_cible));
     38        // si la source n'est pas une grappe un inverse le sens de la liaison pour matcher l'autorisation grappe_associer
     39        if ($source != 'grappe')
     40                objet_associer(array($cible=>$id_cible),array($source=>$id_source));
     41        else
     42                objet_associer(array($source=>$id_source),array($cible=>$id_cible));
    4043}
    4144
  • _plugins_/grappes/trunk/formulaires/lier_objets.html

    r66848 r66869  
    1616                                <label for="nom_objet"><:grappes:bouton_chercher:></label>
    1717                                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_objet})</span>]
    18                                 <input type='text' class='text' name='nom_objet' id='nom_objet' value="#ENV{nom_objet}" onclick="jQuery(this).val('');jQuery('[#(#ENV{selecteur})] #pid_objet').val('');" />
    19                                 <input type="hidden" name="pid_objet" id="pid_objet" value="" />
     18                                <input type='text' class='text' name='nom_objet' value="#ENV{nom_objet}" data-selecteur="[(#VAL{grappes_#OBJET}|parametre_url{#SOURCE,#ID_SOURCE,&})]" data-select-callback="lier_objets_#ENV{identifiant}" />
     19                                <input type="hidden" class="pid_objet" name="pid_objet" value="" />
    2020                                <input type='submit' class='submit' value='<:grappes:bouton_ajouter:>' />
    2121                        </li>
     
    2323        </form>
    2424        </div>]
     25        <script type="text/javascript">
     26        <!--
     27                var lier_objets_#ENV{identifiant} = function(event,ui){
     28                        console.log(ui);
     29                        if (typeof(ui) != 'undefined' && (typeof(ui.item.value) == 'string')) {
     30                                $('[#(#ENV{identifiant}) ].pid_objet').val(ui.item.id);
     31                                this.value = ui.item.value;
     32                                $('[#(#ENV{identifiant}) ]input[type="submit"]').focus();
     33                                event.preventDefault();
     34                        }
     35                        else if (typeof(ui) != 'undefined'){
     36                                $('[#(#ENV{identifiant}) ].pid_objet').val('');
     37                                this.value = ui.item.value;
     38                        }
     39                        return false;
     40                }
     41        -->
     42        </script>
    2543</div>
  • _plugins_/grappes/trunk/grappes_fonctions.php

    r66665 r66869  
    2222        }
    2323        // tester le statut de l'auteur
    24         if (!in_array($qui['statut'],$acces) OR ($res['id_admin'] == $qui['id_auteur']))
     24        if (!in_array($qui['statut'],$acces) OR ($res['id_admin'] != $qui['id_auteur']))
    2525                return false;
    2626
  • _plugins_/grappes/trunk/grappes_pipelines.php

    r66848 r66869  
    88 */
    99
    10 function grappes_inserer_js_recherche_objet(){
    11                 $contenu =
    12 <<<EOS
    13                 function rechercher_objet(id_selecteur, page_selection) {
    14                         // chercher l'input de saisie
    15                         var me = jQuery(id_selecteur+' input[name=nom_objet]');
    16                         me.autocomplete(
    17                                         {
    18                                                 source: function( request, response ) {
    19                                                         $.ajax({
    20                                                                 url: page_selection,
    21                                                                 data:{
    22                                                                         q:extractLast( request.term )
    23                                                                 },
    24                                                                 success: function(data) {
    25                                                                         datas = selecteur_format(data);
    26                                                                         response( $.map( datas, function( item ) {
    27                                                                                 return item;
    28                                                                         }));
    29                                                                 }
    30                                                         });
    31                                                 },
    32                                                 delay: 200,
    33                                                 select:function( event, ui ) {
    34                                                         if (ui.item.result > 0) {
    35                                                                 jQuery(id_selecteur + ' #pid_objet').val(ui.item.result);
    36                                                                 jQuery(id_selecteur + ' input[type="submit"]').focus();
    37                                                                 jQuery(me)
    38                                                                         .end();
    39                                                         }else{
    40                                                                 return ui.item.entry;
    41                                                         }
    42                                                         return false;
    43                                                 }
    44                                         }
    45                                 );
    46                         }
    47 EOS;
    48         return $contenu;
    49 }
    50 
     10/**
     11 * Insertion dans les pipelines insert_head et header_prive
     12 * Insérer les js du séleceteur générique s'ils ne sont pas déjà là
     13 *
     14 * @param string $flux
     15 */
    5116function grappes_inserer_javascript($flux){
    5217        include_spip('selecteurgenerique_fonctions');
    5318        $flux .= selecteurgenerique_verifier_js($flux);
    54 
    55         $js = grappes_inserer_js_recherche_objet();
    56         $js = "<script type='text/javascript'><!--\n$js\n// --></script>\n";
    57 
    58         return $flux.$js;
     19        return $flux;
    5920}
    6021
    6122/**
    62  * Ajoute aux pages qui peuvent etres lies a une grappe
    63  * un formulaire pour lister les grappes lies
    64  * et en ajouter de nouvelles
    65 **/
     23 * Insertion dans le pipeline afficher_contenu_objet
     24 * Ajouter le bloc des grappes aux pages qui peuvent êtres liées à une grappe
     25 *
     26 * @param array $flux La liste des champs pour les diogenes
     27 */
    6628function grappes_afficher_contenu_objet($flux){
    6729        if ($objet = $flux['args']['type']
  • _plugins_/grappes/trunk/prive/squelettes/inclure/grappes_lister_objets.html

    r66848 r66869  
    11[(#SET{identifiant,[(#VAL{lier_[(#SOURCE)]_[(#OBJET)]}|uniqid)]})]
    2 [(#SET{fonction_unique,[rechercher_(#GET{identifiant})]})]
    3 
    4 <script  type="text/javascript"><!--
    5         var [(#GET{fonction_unique})] = function() {
    6                 rechercher_objet(['#'+'(#GET{identifiant})'],'[(#URL_PAGE{selecteurs}
    7                         |parametre_url{objet,#OBJET,&}
    8                         |parametre_url{#ID_TABLE_SOURCE,#ID_SOURCE,&})]');
    9         }
    10         jQuery(document).ready([(#GET{fonction_unique})]);
    11         onAjaxLoad(function(){setTimeout([(#GET{fonction_unique})], 200);});
    12 // --></script>
    13 
    142[(#FORMULAIRE_LIER_OBJETS{#OBJET,#SOURCE,#ID_SOURCE,#GET{identifiant}})]
  • _plugins_/grappes/trunk/prive/style_prive_plugin_grappes.html

    r22736 r66869  
    1 .formulaire_spip li.editer_grappes_associer,
    2 .formulaire_spip li.editer_grappes_qui {
    3 padding-left:10px;
    4 }
    5 
    6 .formulaire_ajouter_objet ul{margin:3px 0; list-style-type:none;}
    7 .formulaire_ajouter_objet input.submit{
    8         margin:0;padding:0;border:none;background:none;color:inherit;
    9         text-decoration:underline;
    10         cursor:pointer;
    11 }
     1.formulaire_ajouter_objet input.text { width: 70%; }
     2.formulaire_ajouter_objet input.submit { margin:0; padding:0; border:none; background:none; color:inherit; text-decoration:underline; cursor:pointer; }
  • _plugins_/grappes/trunk/selecteurs/grappes_articles.html

    r66810 r66869  
    1 [(#REM) Chercher les rubriques correspondant a la requete ]
    2 <BOUCLE_s(ARTICLES){statut==.}
    3 {titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
    4 <BOUCLE_h(HIERARCHIE){statut==.}{n-2,2}>[(#TITRE|couper{12})] > </BOUCLE_h>#TITRE|[(#TITRE|textebrut)]|#ID_ARTICLE
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(ARTICLES){statut==.}{titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
     5<BOUCLE_h(HIERARCHIE){statut==.}{n-2,2}>[(#SET{rub,[(#TITRE|couper{12,''}) > ]})]</BOUCLE_h>
     6#SET{resultats, #GET{resultats}|push{#ARRAY{label,#GET{rub} #TITRE,value,#TITRE,id,#ID_ARTICLE}}}
    57</BOUCLE_s>
    6         [(#REM) Vraiment on n'a rien trouve ]
    7         <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    8 <//B_s>
     8[(#GET{resultats}|json_encode)]
     9#FILTRE{trim}
  • _plugins_/grappes/trunk/selecteurs/grappes_auteurs.html

    r66810 r66869  
    1 [(#REM) Chercher les auteurs correspondant a la requete ]
    2 <BOUCLE_s(AUTEURS){tout}
    3 {nom LIKE (#ENV{q})%}{0,20}{par nom}>
    4 #NOM[ - (#LOGIN)]|#NOM|#ID_AUTEUR
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(AUTEURS){tout}{nom LIKE (#ENV{q})%}{0,20}{par nom}>
     5[(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,#NOM[ - (#LOGIN)],value,#NOM,id,#ID_AUTEUR})]})]})]
    56</BOUCLE_s>
    6         [(#REM) Si aucun, on recherche dans le login]
    7         <BOUCLE_s1(AUTEURS){tout}
    8         {!id_grappe=#ID_GRAPPE}
    9         {!id_article=#ID_ARTICLE}
    10         {!id_mot=#ID_MOT}
    11         {!id_document=#ID_DOCUMENT}
    12         {login LIKE (#ENV{q})%}{0,20}{par nom}>
    13 #NOM[ - (#LOGIN)]|#NOM|#ID_AUTEUR
     7        <BOUCLE_s1(AUTEURS){tout}{login LIKE (#ENV{q})%}{0,20}{par nom}>
     8        [(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,#NOM[ - (#LOGIN)],value,#NOM,id,#ID_AUTEUR})]})]})]
    149        </BOUCLE_s1>
    15                 [(#REM) Vraiment on n'a rien trouve ]
    16                 <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    17         <//B_s1>
    1810<//B_s>
     11[(#GET{resultats}|json_encode)]
     12#FILTRE{trim}
  • _plugins_/grappes/trunk/selecteurs/grappes_grappes.html

    r66810 r66869  
    1 [(#REM) Chercher les grappes correspondant a la requete ]
    2 <BOUCLE_s(GRAPPES)
    3 {titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
    4 #TITRE|[(#TITRE|textebrut)]|#ID_GRAPPE
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(GRAPPES){titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
     5[(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,#TITRE,value,#TITRE,id,#ID_GRAPPE})]})]})]
    56</BOUCLE_s>
    6         [(#REM) Vraiment on n'a rien trouve ]
    7         <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    8 <//B_s>
     7[(#GET{resultats}|json_encode)]
     8#FILTRE{trim}
  • _plugins_/grappes/trunk/selecteurs/grappes_mots.html

    r66810 r66869  
    1 [(#REM) Chercher les rubriques correspondant a la requete ]
    2 <BOUCLE_s(MOTS)
    3 {titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
    4 #TYPE ><b>#TITRE</b>|[(#TITRE|textebrut)]|#ID_MOT
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(MOTS){titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
     5[(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,#TYPE[ > (#TITRE)],value,#TITRE,id,#ID_MOT})]})]})]
    56</BOUCLE_s>
    6         [(#REM) Vraiment on n'a rien trouve ]
    7         <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    8 <//B_s>
     7[(#GET{resultats}|json_encode)]
     8#FILTRE{trim}
  • _plugins_/grappes/trunk/selecteurs/grappes_rubriques.html

    r66810 r66869  
    1 [(#REM) Chercher les rubriques correspondant a la requete ]
    2 <BOUCLE_s(RUBRIQUES){statut==.}
    3 {titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
    4 <BOUCLE_h(HIERARCHIE){statut==.}{n-3,3}>[(#TITRE|couper{12})] > </BOUCLE_h>#TITRE|[(#TITRE|textebrut)]|#ID_RUBRIQUE
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(RUBRIQUES){statut==.}{titre LIKE %(#ENV{q})%}{0,20}{par multi titre}>
     5<BOUCLE_h(HIERARCHIE){statut==.}{n-2,1}>[(#SET{rub,[(#TITRE|couper{12,''}) > ]})]</BOUCLE_h>
     6#SET{resultats, #GET{resultats}|push{#ARRAY{label,#GET{rub} #TITRE,value,#TITRE,id,#ID_RUBRIQUE}}}
    57</BOUCLE_s>
    6         [(#REM) Vraiment on n'a rien trouve ]
    7         <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    8 <//B_s>
     8[(#GET{resultats}|json_encode)]
     9#FILTRE{trim}
  • _plugins_/grappes/trunk/selecteurs/grappes_syndic.html

    r66810 r66869  
    1 [(#REM) Chercher les sites correspondant a la requete ]
    2 <BOUCLE_s(SYNDIC){statut==.}
    3 {nom_site LIKE %(#ENV{q})%}{0,20}{par multi nom_site}>
    4 [(#NOM_SITE)][ (#URL_SITE|couper{25})]|[(#NOM_SITE|textebrut)]|#ID_SYNDIC
     1#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
     2#CACHE{0}
     3#SET{resultats, #LISTE}
     4<BOUCLE_s(SYNDIC){statut==.}{nom_site LIKE %(#ENV{q})%}{0,20}{par multi nom_site}>
     5[(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,[(#NOM_SITE)][ (#URL_SITE|couper{25,''})],value,#NOM_SITE,id,#ID_SYNDIC})]})]})]
    56</BOUCLE_s>
    6         <BOUCLE_ss(SYNDIC){statut==.}
    7         {url_site LIKE %(#ENV{q})%}{0,20}{par multi nom_site}>
    8 [(#NOM_SITE)][ (#URL_SITE|couper{25})]|[(#NOM_SITE|textebrut)]|#ID_SYNDIC
    9         </BOUCLE_ss>
    10         [(#REM) Vraiment on n'a rien trouve ]
    11         <:selecteurgenerique:pas_suggestion:>|[(#ENV*{q}|textebrut)]|0
    12         <//B_ss>
     7        <BOUCLE_s1(SYNDIC){statut==.}{url_site LIKE %(#ENV{q})%}{0,20}{par multi nom_site}>
     8        [(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,[(#NOM_SITE)][ (#URL_SITE|couper{25,''})],value,#NOM_SITE,id,#ID_SYNDIC})]})]})]
     9        </BOUCLE_s1>
    1310<//B_s>
     11[(#GET{resultats}|json_encode)]
     12#FILTRE{trim}
Note: See TracChangeset for help on using the changeset viewer.