diff --git a/.gitattributes b/.gitattributes index 4d25cf31cd6c1ce49805668bb4d3e4184d22be4a..194377a371c9082e80c9ef61f0eadec5eff98e12 100644 --- a/.gitattributes +++ b/.gitattributes @@ -730,6 +730,7 @@ prive/squelettes/contenu/page-debug.html -text prive/squelettes/extra/dist.html -text prive/squelettes/head/dist.html -text prive/squelettes/hierarchie/dist.html -text +prive/squelettes/hierarchie/dist_fonctions.php -text prive/squelettes/inclure/admin_autres_bases.html -text prive/squelettes/inclure/admin_autres_bases_fonctions.php -text prive/squelettes/inclure/admin_vider_cache.html -text diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index 6728a38a65b15312e732115e50f1bd14caac0b72..0ec74e1df6033f8588a2430ab83e2185bb3cb091 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -45,7 +45,7 @@ function exec_articles_args($id_article) echo $commencer_page("« ". $row['titre'] ." »", "naviguer", "articles", $row['id_rubrique']); echo debut_grand_cadre(true), - afficher_hierarchie($row['id_rubrique'],_T('titre_cadre_interieur_rubrique'),$id_article,'article',$row['id_secteur'],($row['statut'] == 'publie')), + afficher_hierarchie($row['id_rubrique'],'',$id_article,'article',$row['id_secteur'],($row['statut'] == 'publie')), fin_grand_cadre(true), $res, fin_page(); diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php index 3589057c3476cdbab57ddc29ad95b440f1bace0c..e54f75d470d7e609f3672d67125f4e46bdc77ca5 100644 --- a/ecrire/exec/articles_edit.php +++ b/ecrire/exec/articles_edit.php @@ -56,7 +56,7 @@ function articles_edit($id_article, $id_rubrique, $lier_trad, $new, $config_fonc echo $commencer_page(_T('titre_page_articles_edit', array('titre' => $titre)), "naviguer", "articles", $id_rubrique); echo debut_grand_cadre(true); - echo afficher_hierarchie($id_rubrique,'',$id_article,'article'); + echo afficher_hierarchie($id_rubrique,'',$id_article,'article',$row['id_secteur'],($row['statut'] == 'publie')); echo fin_grand_cadre(true); echo debut_gauche("",true); diff --git a/ecrire/exec/breves_edit.php b/ecrire/exec/breves_edit.php index 38b0fdbb28e6be96f93ae9e6a3c6c41b4db1adbb..1e3bc3c4e9f11c4c9228bd4f32480654ce292840 100644 --- a/ecrire/exec/breves_edit.php +++ b/ecrire/exec/breves_edit.php @@ -86,7 +86,7 @@ function breves_edit_ok($row, $id_breve, $id_rubrique, $new) echo $commencer_page(_T('titre_page_breves_edit', array('titre' => $titre)), "naviguer", "breves", $id_rubrique); echo debut_grand_cadre(true); - echo afficher_hierarchie($id_rubrique); + echo afficher_hierarchie($id_rubrique,'',$id_breve,'breve',$row['id_secteur'],($row['statut'] == 'publie')); echo fin_grand_cadre(true); echo debut_gauche('', true); diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php index fa692604c84faf44e5f5664b64e2278cc0b00885..65a181c904247b09020780af6ee0b1538aaf14d1 100644 --- a/ecrire/exec/breves_voir.php +++ b/ecrire/exec/breves_voir.php @@ -69,7 +69,7 @@ function exec_breves_voir_args($id_breve, $cherche_mot, $select_groupe) echo $commencer_page("« $titre_breve »", "naviguer", "breves", $id_rubrique); echo debut_grand_cadre(true); - echo afficher_hierarchie($id_rubrique); + echo afficher_hierarchie($id_rubrique,'',$id_breve,'breve',$row['id_secteur'],($row['statut'] == 'publie')); echo fin_grand_cadre(true); echo debut_gauche('', true); diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php index 83b8897e1111c8e5c9cbd4c628e00f36370cd726..b09d84ca036679069a4299bdc9b01ed545dd0da6 100644 --- a/ecrire/exec/naviguer.php +++ b/ecrire/exec/naviguer.php @@ -59,7 +59,7 @@ function exec_naviguer_args($id_rubrique, $cherche_mot, $select_groupe) echo debut_grand_cadre(true); if ($id_rubrique > 0) - echo afficher_hierarchie($id_parent,_T('titre_cadre_interieur_rubrique'),$id_rubrique,'rubrique',$id_secteur,(!$GLOBALS['connect_toutes_rubriques'])); + echo afficher_hierarchie($id_parent,'',$id_rubrique,'rubrique',$id_secteur,(!$GLOBALS['connect_toutes_rubriques'])); else $titre = _T('info_racine_site').": ". $GLOBALS['meta']["nom_site"]; echo fin_grand_cadre(true); diff --git a/ecrire/exec/rubriques_edit.php b/ecrire/exec/rubriques_edit.php index 779e186660f8f6fa742f47b247534e45ea04b73d..2132603760bd3ef75981771b50fb8e75ca223605 100644 --- a/ecrire/exec/rubriques_edit.php +++ b/ecrire/exec/rubriques_edit.php @@ -60,7 +60,7 @@ function exec_rubriques_edit_args($id_rubrique, $id_parent, $new, $lier_trad) else $ze_logo = "rubrique-24.png"; echo debut_grand_cadre(true); - echo afficher_hierarchie($id_parent,'',$id_rubrique,'rubrique'); + echo afficher_hierarchie($id_parent,'',$id_rubrique,'rubrique',$id_secteur,(!$GLOBALS['connect_toutes_rubriques'])); echo fin_grand_cadre(true); echo debut_gauche('', true); diff --git a/ecrire/exec/sites.php b/ecrire/exec/sites.php index 5b7f44e28de7a53a4ac59a06bf5c2fb28fdb068c..8f9d54e672cc2fc3b6264ea4a580636621b63eec 100644 --- a/ecrire/exec/sites.php +++ b/ecrire/exec/sites.php @@ -76,7 +76,7 @@ function afficher_site($id_syndic, $id_rubrique, $nom_site, $row){ $lister_objets = charger_fonction('lister_objets','inc'); echo debut_grand_cadre(true); - echo afficher_hierarchie($id_rubrique); + echo afficher_hierarchie($id_rubrique,'',$id_syndic,'site',$row['id_secteur'],($row['statut'] == 'publie')); echo fin_grand_cadre(true); echo debut_gauche('', true); diff --git a/ecrire/exec/sites_edit.php b/ecrire/exec/sites_edit.php index cfc9765fbf2048780e2f01006c0cf8004f501d5a..7925efc7ccc43bdce1c68a44db9805702dd21168 100644 --- a/ecrire/exec/sites_edit.php +++ b/ecrire/exec/sites_edit.php @@ -57,7 +57,7 @@ function exec_sites_edit_dist() echo debut_grand_cadre(true); - echo afficher_hierarchie($id_rubrique); + echo afficher_hierarchie($id_rubrique,'',$id_syndic,'site',$row['id_secteur'],($row['statut'] == 'publie')); echo fin_grand_cadre(true); diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 32b258fcf8307d87e6d702608a18062120249746..1075e738a098c646bb273897e651b384336b0369 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -2178,56 +2178,6 @@ function filtre_info_plugin_dist($plugin, $type_info) { } -// http://doc.spip.org/@chercher_rubrique -function chercher_rubrique($msg,$id, $id_parent, $type, $id_secteur, $restreint,$actionable = false, $retour_sans_cadre=false){ - global $spip_lang_right; - include_spip('inc/autoriser'); - if (intval($id) && !autoriser('modifier', $type, $id)) - return ""; - if (!sql_countsel('spip_rubriques')) - return ""; - $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); - $form = $chercher_rubrique($id_parent, $type, $restreint, ($type=='rubrique')?$id:0); - - if ($id_parent == 0) $logo = "racine-24.png"; - elseif ($id_secteur == $id_parent) $logo = "secteur-24.png"; - else $logo = "rubrique-24.png"; - - $confirm = ""; - if ($type=='rubrique') { - // si c'est une rubrique-secteur contenant des breves, demander la - // confirmation du deplacement - $contient_breves = sql_countsel('spip_breves', "id_rubrique=$id"); - - if ($contient_breves > 0) { - $scb = ($contient_breves>1? 's':''); - $scb = _T('avis_deplacement_rubrique', - array('contient_breves' => $contient_breves, - 'scb' => $scb)); - $confirm .= "\n<div class='confirmer_deplacement verdana2'><div class='choix'><input type='checkbox' name='confirme_deplace' value='oui' id='confirme-deplace' /><label for='confirme-deplace'>" . $scb . "</label></div></div>\n"; - } else - $confirm .= "<input type='hidden' name='confirme_deplace' value='oui' />\n"; - } - $form .= $confirm; - if ($actionable){ - if (strpos($form,'<select')!==false) { - $form .= "<div style='text-align: $spip_lang_right;'>" - . '<input class="fondo" type="submit" value="'._T('bouton_choisir').'"/>' - . "</div>"; - } - $form = "<input type='hidden' name='editer_$type' value='oui' />\n" . $form; - $form = generer_action_auteur("editer_$type", $id, self(), $form, " method='post' class='submit_plongeur'"); - } - - if ($retour_sans_cadre) - return $form; - - include_spip('inc/presentation'); - return debut_cadre_couleur($logo, true, "", $msg) . $form .fin_cadre_couleur(true); - -} - - // http://doc.spip.org/@puce_changement_statut function puce_changement_statut($id_objet, $statut, $id_rubrique, $type, $ajax=false){ $puce_statut = charger_fonction('puce_statut','inc'); diff --git a/ecrire/inc/filtres_ecrire.php b/ecrire/inc/filtres_ecrire.php index f93b614bc069ed78ed612bf2a44e6e0833fd8d0d..184d89d42ec424bce5b08ddcb15ee9d3ee52b582 100644 --- a/ecrire/inc/filtres_ecrire.php +++ b/ecrire/inc/filtres_ecrire.php @@ -121,4 +121,54 @@ function boite_fermer(){ .'</div>'; } + +// http://doc.spip.org/@chercher_rubrique +function chercher_rubrique($msg,$id, $id_parent, $type, $id_secteur, $restreint,$actionable = false, $retour_sans_cadre=false){ + global $spip_lang_right; + include_spip('inc/autoriser'); + if (intval($id) && !autoriser('modifier', $type, $id)) + return ""; + if (!sql_countsel('spip_rubriques')) + return ""; + $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); + $form = $chercher_rubrique($id_parent, $type, $restreint, ($type=='rubrique')?$id:0); + + if ($id_parent == 0) $logo = "racine-24.png"; + elseif ($id_secteur == $id_parent) $logo = "secteur-24.png"; + else $logo = "rubrique-24.png"; + + $confirm = ""; + if ($type=='rubrique') { + // si c'est une rubrique-secteur contenant des breves, demander la + // confirmation du deplacement + $contient_breves = sql_countsel('spip_breves', "id_rubrique=$id"); + + if ($contient_breves > 0) { + $scb = ($contient_breves>1? 's':''); + $scb = _T('avis_deplacement_rubrique', + array('contient_breves' => $contient_breves, + 'scb' => $scb)); + $confirm .= "\n<div class='confirmer_deplacement verdana2'><div class='choix'><input type='checkbox' name='confirme_deplace' value='oui' id='confirme-deplace' /><label for='confirme-deplace'>" . $scb . "</label></div></div>\n"; + } else + $confirm .= "<input type='hidden' name='confirme_deplace' value='oui' />\n"; + } + $form .= $confirm; + if ($actionable){ + if (strpos($form,'<select')!==false) { + $form .= "<div style='text-align: $spip_lang_right;'>" + . '<input class="fondo" type="submit" value="'._T('bouton_choisir').'"/>' + . "</div>"; + } + $form = "<input type='hidden' name='editer_$type' value='oui' />\n" . $form; + $form = generer_action_auteur("editer_$type", $id, self(), $form, " method='post' class='submit_plongeur'"); + } + + if ($retour_sans_cadre) + return $form; + + include_spip('inc/presentation'); + return debut_cadre_couleur($logo, true, "", $msg) . $form .fin_cadre_couleur(true); + +} + ?> \ No newline at end of file diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index 6caa63922989b68883e1085a1217328af3544dc6..a01299dda775a82b3794d0c61fdb6dedae662450 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -476,66 +476,15 @@ function fin_cadre_formulaire($return=false){ // http://doc.spip.org/@afficher_hierarchie function afficher_hierarchie($id_parent, $message='',$id_objet=0,$type='',$id_secteur=0,$restreint='') { - global $spip_lang_left,$spip_lang_right; - - $out = ""; - $nav = ""; - if ($id_objet) { - # desactiver le selecteur de rubrique sur le chemin - # $nav = chercher_rubrique($message,$id_objet, $id_parent, $type, $id_secteur, $restreint,true); - $nav = $nav ?"<div class='none'>$nav</div>":""; - } - - $parents = ''; - $style1 = "$spip_lang_left center no-repeat; padding-$spip_lang_left: 15px"; - $style2 = "margin-$spip_lang_left: 15px;"; - $tag = "a"; - $on = ' on'; - - $id_rubrique = $id_parent; - while ($id_rubrique) { - - $res = sql_fetsel("id_parent, titre, lang", "spip_rubriques", "id_rubrique=".intval($id_rubrique)); - - if (!$res){ // rubrique inexistante - $id_rubrique = 0; - break; - } - - changer_typo($res['lang']); - - $class = (!$res['id_parent']) ? "secteur" - : (acces_restreint_rubrique($id_rubrique) - ? "admin" : "rubrique"); - - $parents = "<ul><li><span class='bloc'><em> > </em><$tag class='$class$on'" - . ($tag=='a'?" href='". generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")."'":"") - . ">" - . textebrut(supprimer_numero(typo(sinon($res['titre'], _T('ecrire:info_sans_titre'))))) - . "</$tag></span>" - . $parents - . "</li></ul>"; - - $id_rubrique = $res['id_parent']; - $tag = 'a'; - $on = ''; - } - - $out .= $nav - . "\n<ul id='chemin' class='verdana3' dir='".lang_dir()."'" - //. http_style_background("racine-site-12.gif", $style1) - . "><li><span class='bloc'><$tag class='racine$on'" - . ($tag=='a'?" href='". generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")."'":"") - . ">"._T('info_racine_site')."</$tag>" - . "</span>" - . $parents - . aide ("rubhier") - . "</li></ul>" - . ($nav? - " <a href='#' onclick=\"$(this).prev().prev().toggle('fast');return false;\" class='verdana2'>" - . _T('bouton_changer') ."</a>" - :""); - + $out = recuperer_fond('prive/squelettes/hierarchie/dist', + array( + 'id_parent'=>$id_parent, + 'objet'=>$type, + 'id_objet'=>$id_objet, + 'deplacer'=>_request('deplacer')?'oui':'', + 'id_secteur'=>$id_secteur, + 'restreint'=>$restreint, + ),array('ajax'=>true)); $out = pipeline('affiche_hierarchie',array('args'=>array( 'id_parent'=>$id_parent, 'message'=>$message, @@ -545,7 +494,7 @@ function afficher_hierarchie($id_parent, $message='',$id_objet=0,$type='',$id_se 'restreint'=>$restreint), 'data'=>$out)); - return $out;//."<hr />".recuperer_fond('prive/squelettes/hierarchie/dist',array('id_rubrique'=>$id_parent,'objet'=>$type,'id_objet'=>$id_objet)); + return $out; } // Pour construire des menu avec SELECTED diff --git a/prive/squelettes/hierarchie/dist.html b/prive/squelettes/hierarchie/dist.html index eac50b924f0c67ecea22389e7c26ca84a03ede85..fd01fd7ba26425fc65578fddf50d1027ba26c72e 100644 --- a/prive/squelettes/hierarchie/dist.html +++ b/prive/squelettes/hierarchie/dist.html @@ -1,5 +1,20 @@ <!-- hierarchie --> <div id="chemin"><a href="#URL_ECRIRE{naviguer}"><:info_racine_site:></a> +<BOUCLE_rub(RUBRIQUES){id_rubrique=#ENV{id_parent}}{statut?}> <BOUCLE_ariane(HIERARCHIE){id_rubrique}{tout}> > -[(#ID_RUBRIQUE|generer_url_entite{rubrique}|lien_ou_expose{#TITRE|couper{80}|sinon{<:ecrire:info_sans_titre:>},#ENV{objet}|non|et{#ID_RUBRIQUE|=={#ENV{id_rubrique}}}})] -</BOUCLE_ariane>[ > <strong class="on">(#INFO_TITRE{#ENV{objet},#ENV{id_objet}}|couper{80}|sinon{<:ecrire:info_sans_titre:>})</strong>]</div> +[(#ID_RUBRIQUE|generer_url_entite{rubrique}|lien_ou_expose{#TITRE|couper{80}|sinon{<:ecrire:info_sans_titre:>},#ENV{objet}|non|et{#ID_RUBRIQUE|=={#ENV{id_parent}}}})] +#SET{id_secteur,#ID_SECTEUR}</BOUCLE_ariane></BOUCLE_rub> +[ > <strong class="on">(#INFO_TITRE{#ENV{objet},#ENV{id_objet}}|couper{80}|sinon{<:ecrire:info_sans_titre:>})</strong>] +#AIDER{rubhier} +[(#ENV{deplacer}|non) +<span class="changer">[<a href="[(#SELF|parametre_url{deplacer,oui})]" class="ajax"><:bouton_changer:></a>]</span> +] +[(#ENV{deplacer}|oui) +<span class="changer">[<a href="#" onclick="jQuery('#chercher_rubrique').toggle('fast');return false;"><:bouton_changer:></a>]</span> +<div id="chercher_rubrique"> +[(#BOITE_OUVRIR{<:titre_cadre_interieur_rubrique:>,'simple'})] +[(#VAL|chercher_rubrique{#ENV{id_objet},#ENV{id_parent},#ENV{objet},#ENV{id_secteur,#GET{id_secteur}},#ENV{restreint,#ENV{objet}|deplacement_restreint{#INFO_STATUT{#ENV{objet},#ENV{id_objet}}}},true,form_simple})] +#BOITE_FERMER +</div> +] +</div> \ No newline at end of file diff --git a/prive/squelettes/hierarchie/dist_fonctions.php b/prive/squelettes/hierarchie/dist_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..3616145ac02a739d042d1a4dff43d3ae1431a82c --- /dev/null +++ b/prive/squelettes/hierarchie/dist_fonctions.php @@ -0,0 +1,42 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2009 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * Tester le deplacement restreint ou non + * de l'objet en fonction de son statut + * + * @param string $objet + * @param string $statut + * @return bool + */ +function deplacement_restreint($objet,$statut) { + + switch ($objet) { + case 'rubrique': + return (!$GLOBALS['connect_toutes_rubriques']); + break; + case 'article': + case 'site': + case 'syndic': + case 'breve': + return ($statut=='publie'); + break; + default : + return ($statut?$statut=='publie':false); + break; + } + return false; +} + +?> \ No newline at end of file