Changeset 94877 in spip-zone


Ignore:
Timestamp:
Feb 1, 2016, 8:08:30 PM (4 years ago)
Author:
guillaume.wauquier@…
Message:

Permettre d'associer une ou plusieurs communes à n'importe quel type d'objet éditorial + micro-correction

Location:
_plugins_/COG/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/COG/trunk/cog_autorisations.php

    r81931 r94877  
    108108        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
    109109}
     110
     111
     112/**
     113 * Autorisation à ajouter une commune à un objet à partir de l'interface.
     114 *
     115 *
     116 * @param  string $faire Action demandée
     117 * @param  string $type  Type d'objet auquel on veut ajouter une commune
     118 * @param  int    $id    Identifiant de l'objet auquel on veut ajouter une commune
     119 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     120 * @param  array  $opts  Options de cette autorisation
     121 * @return bool          true s'il a le droit, false sinon
     122 */
     123function autoriser_ajoutercommune_dist($faire, $type, $id, $qui, $opts) {
     124
     125        include_spip('inc/config');
     126        $config = lire_config('cog/objets', array());
     127        $autoriser = (
     128                (
     129                        // objet activé
     130                in_array(table_objet_sql($type),array_filter($config))
     131                )
     132                AND
     133                (
     134                        // identifiant positif : cas «normal»
     135                        (
     136                                $id>0
     137                                AND
     138                                (
     139                                        ($qui['statut'] == '0minirezo' AND !$qui['restreint'])
     140                                        // il faut être autorisé à modifier l'objet...
     141                                        OR autoriser('modifier', $type, $id, $qui, $opts)
     142                                        // ...mais ça donne un faux négatif depuis le pipeline «post_insertion» (cf. note),
     143                                        // dans ce cas là on vérifie si l'objet est récent et qu'on a le droit d'écrire.
     144                                        OR (
     145                                                (time()-strtotime(generer_info_entite($id,$type,'date'))) < (60*1) // age < 1 min, cf. note
     146                                                AND autoriser('ecrire', $type, $id, $qui, $opts)
     147                                        )
     148                                )
     149                        )
     150                        // identifiant négatif : objet nouveau pas encore enregistré en base (cf. note)
     151                        OR
     152                        (
     153                                $id<0
     154                                AND
     155                                (
     156                                        abs($id) == $qui['id_auteur']
     157                                        AND autoriser('ecrire', $type, $id, $qui, $opts)
     158                                )
     159                        )
     160                )
     161        ) ? true : false;
     162
     163        return $autoriser;
     164}
     165
     166
     167
     168
     169
     170
     171
    110172// -----------------
    111173// Objet cog_arrondissements
  • _plugins_/COG/trunk/cog_pipeline.php

    r94773 r94877  
    1717
    1818
     19
    1920function cog_affiche_milieu($flux){
    20 if(lire_config('cog/afficher_bloc_cog'))
    21 {
    22         $tab_page_bloc=array('article'=>'article','naviguer'=>'rubrique');
    23         if (in_array($flux['args']['exec'],array_keys($tab_page_bloc))){
    2421
    25                 $objet=$tab_page_bloc[$flux['args']['exec']];
     22$texte = "";
     23$e     = trouver_objet_exec($flux['args']['exec']);
    2624
    27                 $tab_rubriques_cog=lire_config("cog/rubriques_cog",array(0,-1));
    28                 $id_objet = $flux['args']["id_".$objet];
    29                 $id_rubriques="";
    30                 switch($objet)
    31                 {
    32                 case 'article':
    33                         //on cherche la rubrique de l'article
    34                         $id_rubrique=sql_getfetsel('id_rubrique','spip_articles','id_article='.$id_objet);
    35                 break;
    36                 case 'rubrique':
    37                         $id_rubrique=$id_objet;
    38                 break;
    39                 }
    40                 if (!$id_rubriques){
    41                         if (!(in_array(-1,$tab_rubriques_cog) OR in_array($id_rubrique, $tab_rubriques_cog))) {
    42                                 return $flux;
    43                         }
    44                 include_spip('inc/cog_boitier');
    45                 $flux['data'].= cog_boitier_cog($id_objet,$objet);
    46                 }
    47         }
     25if (
     26        $e !== false // page d'un objet éditorial
     27        AND $e['edition'] === false // pas en mode édition
     28        AND $id_objet=$flux['args'][$e['id_table_objet']]
     29        AND autoriser('ajoutercommune',$e['type'],$id_objet)
     30) {
     31        include_spip('inc/cog_boitier');
     32        $flux['data'] .= cog_boitier_cog($id_objet, $e['type']);
     33
    4834}
     35
    4936        return $flux;
    5037}
     38
    5139
    5240
  • _plugins_/COG/trunk/formulaires/choisir_commune.html

    r65246 r94877  
    2121<ul>
    2222<li>
    23 <label for="cog_commune" class="oblig"><:cog:attacher_une_commune:></label>
     23<label for="nom_commune" class="oblig"><:cog:attacher_une_commune:></label>
    2424<input name="nom_commune" id="nom_commune" class="autocomplete_cog" />
    2525</li>
  • _plugins_/COG/trunk/formulaires/configurer_cog.html

    r82318 r94877  
    2020
    2121
    22         <li class="editer_afficher_bloc_cog">
    23         <label><:cog:bloc_cog:></label>
    24                 <div class="choix">
    25                         <input type="checkbox" name="afficher_bloc_cog" [checked="(#ENV{afficher_bloc_cog}|=={non}|?{checked})"] id="afficher_bloc_cog" value='non' />
    26                         <label for="afficher_bloc_cog"><:cog:activer_bloc_cog:></label>
    27                 </div>
     22
     23
     24        [(#REM) choix des objets sur lesquels l'ajout de liens avec une ou plusieurs communes est possible ]
     25        #SET{name,objets} #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     26        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
     27                <label><:cog:label_activer_cog_objets:></label>
     28                <p class="explication"><:cog:explication_activer_cog_objets:></p>[
     29                <span class='erreur_message'>(#GET{erreurs})</span>
     30                ]#INCLURE{fond=formulaires/inc-choisir-objets, name=#GET{name}, selected=#ENV**{#GET{name}}, exclus=#LISTE{spip_cog_communes}}
    2831        </li>
    2932
     
    3134                        <label for="rubriques_cog"><:cog:limitation_rubriques_cog:></label>
    3235                        <p class="explication"><:cog:explication_limitation_rubriques_cog:></p>
    33                         <select name="rubriques_cog[]" multiple="multiple" size="9">
     36                        <select name="rubriques_cog[]" id="rubriques_cog" multiple="multiple" size="9">
    3437                                <option value="-1"[ (#EVAL{-1}|in_array{#GET{wichrub}}|?{' selected="selected"'})]>Toutes</option>
    3538                                <BOUCLE_secteurs(RUBRIQUES) {racine} {par titre}{tout}>
  • _plugins_/COG/trunk/inc/cog_boitier.php

    r68102 r94877  
    11<?php
    22
    3 
    4 include_spip('inc/vieilles_defs');
    53include_spip('inc/autoriser');
    64include_spip('inc/utils');
    75
    86function cog_boitier_cog($id,$table) {
    9         global $spip_lang_left, $spip_lang_right;
    10         // on recupere l'id de l'auteur en cours
    11         if ($GLOBALS["auteur_session"])
    12                 $id_auteur_session = $GLOBALS['auteur_session']['id_auteur'];
    13         // et on verifie qu'il est autorisé à modifier l'élément en cours
     7        include_spip('inc/layer');
     8        include_spip('inc/presentation');
     9
     10        $s="";
    1411        $autoriser = autoriser("modifier",$table,$id);
    1512        if($autoriser){
    1613                $nb=sql_countsel("spip_cog_communes_liens", "objet=".sql_quote($table)." and id_objet=".$id);
    1714                $deplier = ($nb > 0);
    18                 $s .= debut_cadre_enfonce( _DIR_PLUGIN_COG."images/cog-24.png",true,'',bouton_block_depliable('<span style="text-transform: uppercase;">'._T('cog:communes').'</span>', $deplier, "cadre_communes"));
    19                 $s .= debut_block_depliable($deplier,"cadre_communes");
    20                 $s .= '<div id="cadre_communes" class="formulaire_spip formulaire_editer formulaire_communes" style="margin-bottom:5px;">';
     15                $s .= debut_cadre_enfonce( "cog-24.png",true,'',bouton_block_depliable('<span style="text-transform: uppercase;">'._T('cog:communes').'</span>', $deplier, "cadre_communes"));
     16                        $s .= debut_block_depliable($deplier,"cadre_communes");
     17                $s .= '<div id="cadre_communes" class="formulaire_spip formulaire_editer formulaire_communes">';
    2118                $s .=  recuperer_fond("prive/editer/selecteur_commune", array('type'=>$table,'id'=>$id));
    2219                $s .= '</div>';
     
    2724}
    2825
    29 
    30 
    31 ?>
  • _plugins_/COG/trunk/paquet.xml

    r94873 r94877  
    22        prefix="cog"
    33        categorie="outil"
    4         version="2.2.1"
     4        version="2.3.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.