Changeset 96607 in spip-zone


Ignore:
Timestamp:
Apr 12, 2016, 11:24:35 PM (4 years ago)
Author:
teddy.spip@…
Message:
  • Evolution des autorisations pour les sites de projets ;
  • Au delà de 5 items dans la barre de navigation, on les insère dans un menu 'Autres' ;
  • Up de z.
Location:
_plugins_/info_sites/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/info_sites/trunk/aside/projet.html

    r96506 r96607  
    11<BOUCLE_extra (PROJETS) {id_projet} {tout}>
    2         <BOUCLE_autoriser_modifier (CONDITION) {si #AUTORISER{infositesmodifier,projet,#ID_PROJET}|oui}>
     2        <BOUCLE_autoriser_voir (CONDITION) {si #AUTORISER{infositesvoir, projet, #ID_PROJET}|oui}>
    33<div class="block boutons">
    44        <div class="list-group menu" role="menu">
     5                [(#AUTORISER{infositesmodifier,projet,#ID_PROJET})
    56                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{projet_edit,id_projet=#ID_PROJET}|parametre_url{redirect,#URL_SITE_SPIP/#SELF})]" class="list-group-item bouton modifier" rel="nofollow"><i class="fa fa-pencil-square-o"></i> <:info_sites:icone_modifier_projet:></a>
    6                 [(#AUTORISER{infositescreer,projetssite})
    7                 <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{projets_site_edit,new=oui&associer_objet=projet|#ID_PROJET}|parametre_url{redirect,#SELF})]" class="list-group-item bouton creer" rel="nofollow"><i class="fa fa-plus-circle"></i> <:projets_site:icone_creer_projets_site:></a>]
    8                 [(#AUTORISER{infositesassocier,projetssites})
     7                ][(#AUTORISER{infositescreer,projetssite,'new',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)
     8                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{projets_site_edit,new=oui&associer_objet=projet|#ID_PROJET}|parametre_url{redirect,#SELF})]" class="list-group-item bouton creer" rel="nofollow"><i class="fa fa-plus-circle"></i> <:projets_site:icone_creer_projets_site:></a>
     9                ][(#AUTORISER{infositesassocier,projetssites,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)
    910                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{editer_liens}|parametre_url{table_source,projets_sites}|parametre_url{objet,projet}|parametre_url{id_objet,#ID_PROJET})]" class="list-group-item bouton editer_liens" rel="nofollow"><i class="fa fa-link"></i> <:info_sites:editer_liens_projets_site:></a>
    10                 ]
    11                 [(#AUTORISER{infositesassocier,auteurs})
    12                 <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{editer_liens}|parametre_url{table_source,auteurs}|parametre_url{objet,projet}|parametre_url{id_objet,#ID_PROJET})]" class="list-group-item bouton editer_liens" rel="nofollow"><i class="fa fa-link"></i> <:info_sites:editer_liens_auteur:></a>]
    13                 <BOUCLE_site_secu (PROJETS_SITES) {id_projet} {tout} {1,2}> </BOUCLE_site_secu><a role="menuitem" tabindex="-1" href="[(#URL_PAGE{diagnostic_iso}|parametre_url{id_projet,#ID_PROJET})]" class="list-group-item bouton diagnostic"><i class="fa fa-list fa-lg"></i> <:info_sites:btn_diagnostic_iso:></a></B_site_secu>
    14                 [(#CONFIG{'rss_commits/import_auto','non'}|=={'oui'}|oui)[(#VERSIONING_RSS|oui)[(#AUTORISER{maj, commits}|oui)
     11                ][(#AUTORISER{infositesassocier,auteurs,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)
     12                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{editer_liens}|parametre_url{table_source,auteurs}|parametre_url{objet,projet}|parametre_url{id_objet,#ID_PROJET})]" class="list-group-item bouton editer_liens" rel="nofollow"><i class="fa fa-link"></i> <:info_sites:editer_liens_auteur:></a>
     13                ]<BOUCLE_site_secu (PROJETS_SITES) {id_projet} {tout} {1,2}> </BOUCLE_site_secu>[(#AUTORISER{infositesvoir,projessite,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)<a role="menuitem" tabindex="-1" href="[(#URL_PAGE{diagnostic_iso}|parametre_url{id_projet,#ID_PROJET})]" class="list-group-item bouton diagnostic"><i class="fa fa-list fa-lg"></i> <:info_sites:btn_diagnostic_iso:></a>]</B_site_secu>[
     14                (#CONFIG{'rss_commits/import_auto','non'}|=={'oui'}|oui)[(#VERSIONING_RSS|oui)[(#AUTORISER{maj, commits}|oui)
    1515                <a href="[(#URL_ACTION_AUTEUR{maj_commits_projet, #ID_PROJET, #URL_SITE_SPIP/#SELF})]" class="list-group-item bouton maj" class="<:commit:maj_commits_projet|attribut_html:>"><i class="fa fa-coffee fa-lg"></i> <:commit:maj_commits_projet:></a>]]]
    1616        </div>
    1717</div>
    18         </BOUCLE_autoriser_modifier>
     18        </BOUCLE_autoriser_voir>
    1919
    2020        <div class="block">
  • _plugins_/info_sites/trunk/content/projets_site_edit.html

    r96584 r96607  
    1 [(#AUTORISER{infositesmodifier,projetssite,#ID_PROJETS_SITE}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     1[(#SET{opt,#ARRAY})][(#ENV{associer_objet}|oui)
     2        [(#ENV{associer_objet}|match{^projet|}|oui)[(#SET{opt,#ARRAY{projet,#ENV{associer_objet}|explode{'|'}|table_valeur{1}}})]]
     3]
     4
     5[(#ID_PROJETS_SITE|oui)
     6        [(#AUTORISER{infositesmodifier,projets_site,#ID_PROJETS_SITE}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     7][(#ID_PROJETS_SITE|non)
     8        [(#AUTORISER{infositescreer,projets_site,'',[(#SESSION|unserialize)],#GET{opt}}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     9]
    210[(#INCLURE{fond=prive/squelettes/contenu/#ENV{page},exec=#ENV{page},env})]
  • _plugins_/info_sites/trunk/css/info_sites.less

    r96584 r96607  
    874874                                        }
    875875                                }
    876 
    877876                                i {
    878877                                        width: 1.25em;
     
    880879                                }
    881880                        }
    882 
     881                        &.dropdown {
     882                                .dropdown-menu {
     883                                        background: @main-color;
     884                                        > li {
     885                                                float: none;
     886                                        }
     887                                }
     888                        }
    883889                }
    884890        }
  • _plugins_/info_sites/trunk/info_sites_autorisations.php

    r96584 r96607  
    1414}
    1515
    16 
    1716/**
    1817 * Fonction d'appel pour le pipeline
     
    112111}
    113112
    114 
    115113/**
    116114 * Autorisation de mise à jour
     
    198196 **/
    199197function autoriser_projetssite_infositescreer_dist($faire, $type, $id, $qui, $opt) {
     198
     199        if (is_array($opt) and isset($opt['projet'])) {
     200                if ($confirm = confirmer_roles_auteurs_projets($qui, $opt['projet'])) {
     201                        return $confirm;
     202                }
     203        }
     204
    200205        return in_array($qui['statut'], array(
    201206                '0minirezo',
     
    246251 **/
    247252function autoriser_projetssite_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
     253        if (is_array($opt) and isset($opt['projet'])) {
     254                if ($confirm = confirmer_roles_auteurs_projets($qui, $opt['projet'])) {
     255                        return $confirm;
     256                }
     257        }
     258
    248259        return in_array($qui['statut'], array(
    249260                '0minirezo',
     
    267278}
    268279
    269 
    270280/**
    271281 * Autorisation de mise à jour (projetssite)
     
    280290 **/
    281291function autoriser_projetssite_infositesmaj_dist($faire, $type, $id, $qui, $opt) {
     292        if (is_array($opt) and isset($opt['projet'])) {
     293                if ($confirm = confirmer_roles_auteurs_projets($qui, $opt['projet'])) {
     294                        return $confirm;
     295                }
     296        }
     297
    282298        return in_array($qui['statut'], array(
    283299                '0minirezo',
     
    313329 **/
    314330function autoriser_projetssites_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
     331        if (is_array($opt) and isset($opt['projet'])) {
     332                if ($confirm = confirmer_roles_auteurs_projets($qui, $opt['projet'])) {
     333                        return $confirm;
     334                }
     335        }
     336
    315337        return in_array($qui['statut'], array(
    316338                '0minirezo',
     
    332354function autoriser_projetssitesecurite_voir($faire, $type, $id, $qui, $opt) {
    333355        include_spip('base/abstract_sql');
    334         $auteurs = sql_fetsel("role", "spip_auteurs_liens",
    335                 "objet='projet' AND id_objet IN (SELECT id_objet FROM spip_projets_sites_liens WHERE objet='projet' AND id_projets_site=" . $id . ") AND id_auteur=" . $qui['id_auteur']);
     356        $auteurs = sql_fetsel("role", "spip_auteurs_liens", "objet='projet' AND id_objet IN (SELECT id_objet FROM spip_projets_sites_liens WHERE objet='projet' AND id_projets_site=" . $id . ") AND id_auteur=" . $qui['id_auteur']);
    336357
    337358        if (isset($auteurs['role'])) {
     
    718739}
    719740
     741function confirmer_roles_auteurs_projets($qui, $id_projet = 0, $role_creation = array()) {
     742        include_spip('base/abstract_sql');
     743        $roles = array();
     744        $auteur_roles = sql_allfetsel('role', 'spip_auteurs_liens', 'objet=' . sql_quote('projet') . ' AND id_auteur=' . $qui['id_auteur'] . ' AND id_objet=' . $id_projet);
     745        if (is_array($auteur_roles) and count($auteur_roles) > 0) {
     746                foreach ($auteur_roles as $auteur_role) {
     747                        $roles[] = $auteur_role['role'];
     748                }
     749        }
     750        // Liste des rôles pouvant créer des sites sur un projet.
     751        if (is_string($role_creation)) {
     752                // Si on passe un string en 3ème paramètre le rôle tel que 'developpeur', on le reformate en tableau.
     753                // Pas de séparateur/serialize prévu pour le moment.
     754                $role_creation = array($role_creation);
     755        } elseif (is_array($role_creation) and count($role_creation) == 0) {
     756                $role_creation = array(
     757                        'dir_projets',
     758                        'chef_projets',
     759                        'ref_tech',
     760                        'architecte',
     761                        'lead_developpeur',
     762                        'developpeur',
     763                );
     764        }
     765        if (!empty(array_intersect($roles, $role_creation))) {
     766                return true;
     767        }
     768
     769        return in_array($qui['statut'], array(
     770                '0minirezo',
     771                '1comite',
     772        ));
     773}
  • _plugins_/info_sites/trunk/lang/info_sites_fr.php

    r96584 r96607  
    8585
    8686        // L
     87        'label_autres' => 'Autres',
    8788        'label_branche' => 'Branche',
    8889        'label_branche_version' => 'Version',
  • _plugins_/info_sites/trunk/navigation/dist.html

    r96584 r96607  
    3434                </div>
    3535                <div class="collapse navbar-collapse" id="menu-content">
    36                         <ul class="nav navbar-nav"><BOUCLE_menu (DATA) {source tableau, #CONFIG{"info_sites_menu"}}>[(#AUTORISER{infositesvoir,[(#CLE)]}|oui)<li[(#GET{type-page}|=={#CLE}|oui) class="active"]><a href="#URL_PAGE{#CLE}"[(#GET{type-page}|=={#CLE}|oui) class="active"]><i class="[(#VALEUR{icone})]"></i> [<span class="hidden-xs">(#VALEUR**{nom}|_T)</span>]</a></li>]
     36                        <ul class="nav navbar-nav"><BOUCLE_menu (DATA) {source tableau, #CONFIG{"info_sites_menu"}}>[(#AUTORISER{infositesvoir,[(#CLE)]}|oui)<li[(#GET{type-page}|=={#CLE}|oui) class="active"]><a href="#URL_PAGE{#CLE}"[(#GET{type-page}|=={#CLE}|oui) class="active"]><i class="[(#VALEUR{icone})]"></i> [<span>(#VALEUR**{nom}|_T)</span>]</a></li>]
    3737                        </BOUCLE_menu></ul>
    3838                </div>
    3939        </div>
    4040</nav>
     41<script type="text/javascript">
     42        $(document).ready(function(){
     43                var menu_items = $('#menu-content > ul > li');
     44                if (menu_items.length > 5) {
     45                        var last_items = menu_items.length - 4;
     46                        var removed = menu_items.splice(5, last_items);
     47                        $('#menu-content > ul > li').slice(-last_items+1).remove();
     48                        var autres_items = new Array();
     49                        $.each(removed, function(key, value){
     50                                autres_items.push(value.outerHTML);
     51                        });
     52
     53                        $('#menu-content > ul').append('<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><:info_sites:label_autres:> <span class="caret"></span></a><ul class="dropdown-menu"></ul></li>');
     54                        $('#menu-content > ul > li.dropdown > ul.dropdown-menu').append(autres_items.join(' '));
     55                }
     56        });
     57</script>
    4158<!-- Fin menu -->
    4259[(#FILTRE{trim})]
  • _plugins_/info_sites/trunk/paquet.xml

    r96584 r96607  
    22        prefix="info_sites"
    33        categorie="outil"
    4         version="1.6.1"
     4        version="1.6.2"
    55        etat="dev"
    66        compatibilite="[3.0.8;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.