Changeset 26677 in spip-zone


Ignore:
Timestamp:
Feb 16, 2009, 1:43:57 PM (10 years ago)
Author:
cedric@…
Message:

recuperer le contexte pour l'url des boutons et pour l'autorisation
si le contexte ne contient pas l'id_rubrique, le retrouver si un des id_xx est dans le contexte et le permet

Location:
_plugins_/_core_/bandeau
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_core_/bandeau/bando_autoriser.php

    r26575 r26677  
    123123}
    124124
     125/**
     126 * Outils rapides
     127 */
     128
     129function autoriser_rubrique_creer_bouton_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
     130        return autoriser('creerrubriquedans','rubrique',_request('id_rubrique',isset($opt['contexte'])?$opt['contexte']:null));
     131}
     132
     133function autoriser_article_creer_bouton_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
     134        return autoriser('creerarticledans','rubrique',_request('id_rubrique',isset($opt['contexte'])?$opt['contexte']:null));
     135}
    125136
    126137?>
  • _plugins_/_core_/bandeau/exec/navigation.php

    r26583 r26677  
    2323        include_spip('inc/bandeau');
    2424       
    25         $boutons = definir_barre_boutons();
     25        $contexte = definir_barre_contexte();
     26        $boutons = definir_barre_boutons($contexte);
    2627        if (!isset($boutons[$menu])){
    2728                include_spip('inc/minipres');
     
    4344        echo gros_titre($titre,'',false);
    4445
    45         $sous = bando_lister_sous_menu($boutons[$menu]->sousmenu,"item");
     46        $sous = bando_lister_sous_menu($boutons[$menu]->sousmenu,$contexte,"item");
    4647       
    4748        $res = $sous ? "<ul class='liste_items'>$sous</ul>":"";
  • _plugins_/_core_/bandeau/inc/bandeau.php

    r26671 r26677  
    1515include_spip('inc/boutons');
    1616
     17function definir_barre_contexte(){
     18        $contexte = $_GET;
     19        if (!isset($contexte['id_rubrique'])){
     20                foreach(array('article','site','breve') as $type) {
     21                        $_id = id_table_objet($type);
     22                        if ($id = _request($_id,$contexte)){
     23                                $table = table_objet_sql($type);
     24                                $id_rubrique = sql_getfetsel('id_rubrique',$table,"$_id=".intval($id));
     25                                $contexte['id_rubrique'] = $id_rubrique;
     26                                continue;
     27                        }
     28                }
     29        }
     30        return $contexte;
     31}
     32
    1733
    1834/**
     
    2339 */
    2440// http://doc.spip.org/@definir_barre_boutons
    25 function definir_barre_boutons($icones = true) {
     41function definir_barre_boutons($contexte=array(),$icones = true) {
    2642    include_spip('inc/autoriser');
    2743        $boutons_admin=array();
     
    3349                foreach($liste_boutons_plugins as $id => $infos){
    3450                        // les boutons principaux ne sont pas soumis a autorisation
    35                         if (!($parent = $infos['parent']) OR autoriser('bouton',$id)){
     51                        if (!($parent = $infos['parent']) OR autoriser('bouton',$id,0,NULL,array('contexte'=>$contexte))){
    3652                                if ($parent AND isset($boutons_admin[$parent]))
    3753                                        $boutons_admin[$parent]->sousmenu[$id]= new Bouton(
     
    7187 */
    7288// http://doc.spip.org/@bandeau_creer_url
    73 function bandeau_creer_url($url, $args=""){
     89function bandeau_creer_url($url, $args="", $contexte=null){
    7490        if (!preg_match(',[\/\?],',$url)) {
    7591                $url = generer_url_ecrire($url,$args,true);
     
    7894                // @machin@ etant remplace par _request('machin')
    7995                while (preg_match(",[&?]([a-z_]+)=@([a-z_]+)@,i",$url,$matches)){
    80                         $val = _request($matches[2]);
     96                        $val = _request($matches[2],$contexte);
    8197                        $url = parametre_url($url,$matches[1],$val?$val:'','&');
    8298                }
     
    93109 * @return string
    94110 */
    95 function bando_lister_sous_menu($sousmenu,$class="",$image=false){
     111function bando_lister_sous_menu($sousmenu,$contexte=null,$class="",$image=false){
    96112        $class = $class ? " class='$class'":"";
    97113        $sous = "";
     
    99115                $sous = "";             
    100116                foreach($sousmenu as $souspage => $sousdetail){
    101                         $url = bandeau_creer_url($sousdetail->url?$sousdetail->url:$souspage, $sousdetail->urlArg);
    102             if (!$image){
    103                 $sous .= "<li$class>"
    104             . "<a href='$url' id='bando2_$souspage'>"
    105             . _T($sousdetail->libelle)
    106             . "</a>"
    107             . "</li>";
    108             }
    109             else {
    110                 //$image = "<img src='".$sousdetail->icone."' width='".largeur($sousdetail->icone)."' height='".hauteur($sousdetail->icone)."' alt='".attribut_html(_T($sousdetail->libelle))."' />";
    111                 $sous .= "<li$class>"
    112             . "<a href='$url' id='bando2_$souspage' title='".attribut_html(_T($sousdetail->libelle))."'>"
    113             . "<span>"._T($sousdetail->libelle)."</span>"
    114             . "</a>"
    115             . "</li>";
    116             }
     117                        $url = bandeau_creer_url($sousdetail->url?$sousdetail->url:$souspage, $sousdetail->urlArg, $contexte);
     118                        if (!$image){
     119                                        $sous .= "<li$class>"
     120                        . "<a href='$url' id='bando2_$souspage'>"
     121                        . _T($sousdetail->libelle)
     122                        . "</a>"
     123                        . "</li>";
     124                        }
     125                        else {
     126                                        //$image = "<img src='".$sousdetail->icone."' width='".largeur($sousdetail->icone)."' height='".hauteur($sousdetail->icone)."' alt='".attribut_html(_T($sousdetail->libelle))."' />";
     127                                        $sous .= "<li$class>"
     128                        . "<a href='$url' id='bando2_$souspage' title='".attribut_html(_T($sousdetail->libelle))."'>"
     129                        . "<span>"._T($sousdetail->libelle)."</span>"
     130                        . "</a>"
     131                        . "</li>";
     132                        }
    117133                }
    118134        }
     
    127143 * @return string
    128144 */
    129 function bando_navigation($boutons)
     145function bando_navigation($boutons, $contexte = array())
    130146{
    131147        $res = "";
     
    141157             ($detail->libelle AND is_array($detail->sousmenu) AND count($detail->sousmenu))
    142158             OR ($detail->libelle AND $detail->url AND $detail->url!='navigation')) {
    143                 $url = bandeau_creer_url($detail->url?$detail->url:$page, $detail->urlArg);
     159                $url = bandeau_creer_url($detail->url?$detail->url:$page, $detail->urlArg,$contexte);
    144160                $res .= "<li$first>"
    145161                 . "<a href='$url' id='bando1_$page'>"
     
    148164            }
    149165
    150             $sous = bando_lister_sous_menu($detail->sousmenu);
     166            $sous = bando_lister_sous_menu($detail->sousmenu, $contexte);
    151167            $res .= $sous ? "<ul>$sous</ul>":"";
    152168
     
    207223 * @return string
    208224 */
    209 function bando_outils_rapides($boutons){
     225function bando_outils_rapides($boutons, $contexte = array()){
    210226    $res = "";
    211227
     
    220236    if (isset($boutons['outils_rapides']))
    221237        $res .= "<ul class='creer'>"
    222           . bando_lister_sous_menu($boutons['outils_rapides']->sousmenu,'bouton',true)
     238          . bando_lister_sous_menu($boutons['outils_rapides']->sousmenu,$contexte,'bouton',true)
    223239          . "</ul>";
    224240
     
    247263function inc_bandeau_dist($rubrique, $sous_rubrique, $largeur)
    248264{
    249     $boutons = definir_barre_boutons(false);
     265        $contexte = definir_barre_contexte();
     266        $boutons = definir_barre_boutons($contexte, false);
    250267        return "<div class='avec_icones' id='bando_haut'>"
    251268                . bando_liens_acces_rapide()
    252269                . bando_identite()
    253         . bando_outils_rapides($boutons)
    254                 . bando_navigation($boutons)
     270                . bando_outils_rapides($boutons,$contexte)
     271                . bando_navigation($boutons,$contexte)
    255272                . "</div>"
    256273                ;
  • _plugins_/_core_/bandeau/plugin.xml

    r26671 r26677  
    201201                <titre>icone_ecrire_article</titre>
    202202                <url>articles_edit</url>
    203                 <args>new=oui</args>
     203                <args>new=oui&id_rubrique=@id_rubrique@</args>
    204204        </bouton>
    205205        <bouton id='auteur_creer' parent="outils_rapides">
     
    219219                <titre>icone_referencer_nouveau_site</titre>
    220220                <url>sites_edit</url>
    221                 <args>new=oui</args>
     221                <args>new=oui&id_rubrique=@id_rubrique@</args>
    222222        </bouton>
    223223        <bouton id='breve_creer' parent="outils_rapides">
     
    225225                <titre>icone_nouvelle_breve</titre>
    226226                <url>breves_edit</url>
    227                 <args>new=oui</args>
     227                <args>new=oui&id_rubrique=@id_rubrique@</args>
    228228        </bouton>
    229229
  • _plugins_/_core_/bandeau/prive/style_prive_plugin_bando_fonctions.php

    r26644 r26677  
    1515function bando_images_background(){
    1616        include_spip('inc/bandeau');
    17         $boutons = definir_barre_boutons();
     17        $boutons = definir_barre_boutons(definir_barre_contexte());
    1818       
    1919        $res = "";
Note: See TracChangeset for help on using the changeset viewer.