Changeset 66152 in spip-zone


Ignore:
Timestamp:
Sep 22, 2012, 7:31:30 PM (7 years ago)
Author:
joseph@…
Message:

Une toute nouvelle interface privée pour le noizetier, à la sauce SPIP 3.
Les pages et formulaires ont été réorganisés.
Mise en place d'un mode preview pour les noisettes inspiré du plugin menus : si une noisette a un fichier noisettes/nom_noisette-preview.html, celui sera chargé en lui passant les paramètres de la noisette pour afficher un résumé de ce que fait la noisette.

Location:
_plugins_/noizetier/trunk
Files:
216 added
12 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/action/supprimer_composition_noizetier.php

    r57325 r66152  
    11<?php
    22
    3 // Sécurité
    43if (!defined("_ECRIRE_INC_VERSION")) return;
    54
    6 function action_supprimer_composition_noizetier_dist(){
    7        
    8         $securiser_action = charger_fonction('securiser_action', 'inc');
    9         $arg = $securiser_action();
    10        
    11        
    12         if ($arg!=''){
    13                 include_spip('noizetier_fonctions');
    14                 $type = noizetier_page_type($arg);
    15                 $compo = noizetier_page_composition($arg);
    16                 $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
    17                 unset($noizetier_compositions[$type][$compo]);
    18                 if (count($noizetier_compositions[$type])==0)
    19                         unset($noizetier_compositions[$type]);
    20                 ecrire_meta('noizetier_compositions',serialize($noizetier_compositions));
     5function action_supprimer_composition_noizetier_dist($page=NULL){
     6        if (is_null($page)){
     7                $securiser_action = charger_fonction('securiser_action', 'inc');
     8                $page = $securiser_action();
    219        }
    2210       
     11        if ($page) {
     12                include_spip('noizetier_fonctions');
     13                noizetier_supprimer_composition($page);
     14        }
    2315}
    2416
  • _plugins_/noizetier/trunk/action/supprimer_noisettes_page.php

    r57325 r66152  
    22if (!defined("_ECRIRE_INC_VERSION")) return;
    33
    4 function action_supprimer_noisettes_page_dist(){
    5         $securiser_action = charger_fonction('securiser_action', 'inc');
    6         $arg = $securiser_action();
    7         $page = $arg;
     4function action_supprimer_noisettes_page_dist($page=NULL){
     5        if (is_null($page)){
     6                $securiser_action = charger_fonction('securiser_action', 'inc');
     7                $page = $securiser_action();
     8        }
    89       
    9         include_spip('noizetier_fonctions');
    10         supprimer_noisettes_page_noizetier($page);
    11        
    12         // Redirection
    13         include_spip('inc_headers');
    14         redirige_par_entete("./?exec=configurer_page&page=$page");
     10        if ($page) {
     11                include_spip('noizetier_fonctions');
     12                noizetier_supprimer_noisettes_page($page);
     13        }
    1514}
    1615?>
  • _plugins_/noizetier/trunk/balise/noizetier_liste_noisettes.php

    r36332 r66152  
    66// Cette balise renvoie le tableau de la liste des noisettes disponibles
    77function balise_NOIZETIER_LISTE_NOISETTES_dist($p) {
    8                 $p->code = "noizetier_lister_noisettes()";
     8                $type = interprete_argument_balise(1,$p);
     9                if (is_null($type))
     10                        $p->code = "noizetier_lister_noisettes()";
     11                else
     12                        $p->code = "noizetier_lister_noisettes($type)";
    913        return $p;
    1014}
  • _plugins_/noizetier/trunk/balise/noizetier_liste_pages.php

    r58873 r66152  
    66// Cette balise renvoie le tableau de la liste des pages
    77function balise_NOIZETIER_LISTE_PAGES_dist($p) {
    8                 $p->code = "noizetier_lister_pages()";
     8                $page_specifique = interprete_argument_balise(1,$p);
     9                $p->code = "noizetier_lister_pages($page_specifique)";
    910        return $p;
    1011}
  • _plugins_/noizetier/trunk/formulaires/configurer_bloc.html

    r62932 r66152  
    2828
    2929<script type="text/javascript">
    30         $(function(){
    31                 $('.noisette .actions').hide();
    32                 $('.noisette .ligne')
     30        jQuery(function(){
     31                jQuery('.noisette .actions').hide();
     32                jQuery('.noisette .ligne')
    3333                        .hover(
    3434                                function(){
    35                                         $(this).find('.actions').show();
     35                                        jQuery(this).find('.actions').show();
    3636                                },
    3737                                function(){
    38                                         $(this).find('.actions').hide();
     38                                        jQuery(this).find('.actions').hide();
    3939                                }
    4040                        );
  • _plugins_/noizetier/trunk/formulaires/configurer_bloc.php

    r62753 r66152  
    275275                $rang_actuel = intval($noisette['rang']);
    276276               
    277                 // On teste si ya une noisette suivante
     277                // On teste si y a une noisette suivante
    278278                $dernier_rang = intval(sql_getfetsel(
    279279                        'rang',
  • _plugins_/noizetier/trunk/formulaires/editer_composition_noizetier.html

    r62037 r66152  
    2020                                        [<span class='erreur_message'>(#GET{erreurs})</span>]
    2121                                        <select class="select" name="#GET{name}" id="#GET{name}">
     22                                                <option value=""></option>
    2223                                        <BOUCLE_types(POUR){tableau #ENV{_objets_avec_compos}}{par cle}>
    23                                                 [<option value="#VALEUR">(#VALEUR|=={page}|?{<:noizetier:page:>, [(#NOIZETIER_LISTE_PAGES|table_valeur{#VALEUR}|table_valeur{nom})]})]</option>]
     24                                                [<option value="#VALEUR">(#VALEUR|=={page}|?{<:noizetier:page_autonome:>, [(#NOIZETIER_LISTE_PAGES|table_valeur{#VALEUR}|table_valeur{nom})]})]</option>]
    2425                                        </BOUCLE_types>
    2526                                        </select>
  • _plugins_/noizetier/trunk/formulaires/inc-configurer-noisettes.html

    r62932 r66152  
    8888(function($){
    8989        $(function(){
    90                 $('button[(#VAL{91}|chr)]name=deplacer_noisette[(#VAL{93}|chr)]').hide();
     90                //$('button[(#VAL{91}|chr)]name=deplacer_noisette[(#VAL{93}|chr)]').hide();
    9191                $('#bloc-[(#ENV{bloc})]').sortable({
    9292                        items: 'li.noisette',
  • _plugins_/noizetier/trunk/lang/noizetier_fr.php

    r60242 r66152  
    55
    66$GLOBALS[$GLOBALS['idx_lang']] = array(
     7
     8        //A
     9        'apercu' => 'Aperçu',
     10
     11        // B
     12        'bloc_sans_noisette' => 'Ce bloc ne contient pas de noisette.',
    713
    814        // C
     
    2531        'editer_noizetier_compositions_explication' => 'Vous pouvez créer ici des compositions qui ne différeront que par les noisettes qui leurs seront ajoutés.',
    2632        'editer_noizetier_compositions_titre' => 'Compositions du noiZetier',
    27         'editer_noizetier_explication' => 'Configurer ici les noisettes à ajouter aux pages de votre site.',
     33        'editer_noizetier_explication' => 'Sélectionnez la page dont vous souhaitez configurer les noisettes.',
    2834        'editer_noizetier_titre' => 'Gérer les noisettes',
    29         'editer_nouvelle_composition' => 'Créer une nouvelle composition',
     35        'editer_nouvelle_page' => 'Créer une nouvelle page / composition',
    3036        'erreur_doit_choisir_noisette' => 'Vous devez choisir une noisette.',
    3137        'erreur_mise_a_jour' => 'Une erreur s\'est produite pendant la mise à jour de la base de donnée.',
     38        'erreur_aucune_noisette_selectionnee' => 'Vous devez sélectionner une noisette !',
     39        'explication_glisser_deposer' => 'Vous pouvez ajouter une noisette ou les réordonner par simple glisser/déposer.',
    3240        'explication_heritages_composition' => 'Vous pouvez définir ici les compositions qui seront héritées par les objets de la branche.',
    3341        'explication_noizetier_css' => 'Vous pouvez ajouter à la noisette d\'éventuelles classes CSS supplémentaires.',
     
    3745        'formulaire_ajouter_noisette' => 'Ajouter une noisette',
    3846        'formulaire_composition' => 'Identifiant de composition',
    39         'formulaire_composition_explication' => 'Indiquez un mot-clé unique (minuscules, sans espace, sans tiret (-) et sans accent) permettant d\'identifier cette composition.<br />Par exemple : <i>macompo</i>.',
     47        'formulaire_composition_explication' => 'Indiquez un mot-clé unique (minuscules, sans espace, sans tiret et sans accent) permettant d\'identifier cette composition.<br />Par exemple : <i>macompo</i>.',
    4048        'formulaire_composition_mise_a_jour' => 'Composition mise à jour',
    4149        'formulaire_configurer_bloc' => 'Configurer le bloc :',
     
    4755        'formulaire_erreur_format_identifiant' => 'L\'identifiant ne peut contenir que des minuscules sans accent, des chiffres et le caractère _ (underscore).',
    4856        'formulaire_icon' => 'Icône',
    49         'formulaire_icon_explication' => 'Vous pouvez saisir le chemin relatif vers une icône (par exemple : <i>images/objet-liste-contenus.png</i>). Pour voir une liste d\'images installèes dans les répertoires les plus courants, vous pouvez <a href="../spip.php?page=icones_preview">consulter cette page</a>.',
     57        'formulaire_icon_explication' => 'Vous pouvez saisir le chemin relatif vers une icône (par exemple : <i>images/objet-liste-contenus.png</i>).',
    5058        'formulaire_identifiant_deja_pris' => 'Cet identifiant est déjà utilisé !',
    5159        'formulaire_import_compos' => 'Importer les compositions du noizetier',
     
    5563        'formulaire_liste_pages_config' => 'Ce fichier de configuration définis des noisettes sur les pages suivantes :',
    5664        'formulaire_modifier_composition' => 'Modifier cette composition :',
    57         'formulaire_modifier_composition_heritages' => 'Modifier les héritages de cette composition :',
     65        'formulaire_modifier_composition_heritages' => 'Modifier les héritages',
    5866        'formulaire_modifier_noisette' => 'Modifier cette noisette',
     67        'formulaire_modifier_page' => 'Modifier cette page',
    5968        'formulaire_noisette_sans_parametre' => 'Cette noisette ne propose pas de paramètre.',
    6069        'formulaire_nom' => 'Titre',
     
    6271        'formulaire_nouvelle_composition' => 'Nouvelle composition',
    6372        'formulaire_obligatoire' => 'Champs obligatoire',
    64         'formulaire_supprimer_composition' => 'Supprimer cette composition',
     73        'formulaire_supprimer_page' => 'Supprimer cette page',
    6574        'formulaire_supprimer_noisette' => 'Supprimer cette noisette',
    6675        'formulaire_supprimer_noisettes_page' => 'Supprimer les noisettes de cette page',
    67         'formulaire_type' => 'Type de composition',
    68         'formulaire_type_explication' => 'Indiquez sur quel objet / quelle page porte cette composition.',
     76        'formulaire_type' => 'Type de page',
     77        'formulaire_type_explication' => 'Indiquez sur quel objet porte cette composition ou si vous souhaitez créer une page autonome.',
    6978        'formulaire_type_import' => 'Type d\'importation',
    7079        'formulaire_type_import_explication' => 'Vous pouvez fusionner le fichier de configuration avec votre configuration actuelle (les noisettes de chaque page seront ajoutées à vos noisettes déjà définies) ou bien remplacer votre configuration par celle-ci.',
    7180
    7281        // I
     82        'icone_introuvable' => 'Icône introuvable !',
    7383        'ieconfig_ne_pas_importer' => 'Ne pas importer',
    7484        'ieconfig_noizetier_export_explication' => 'Exportera la configuration des noisettes et les compositions du noiZetier.',
     
    90100        'label_titre_noisette_perso' => 'Titre personnalisé:',
    91101        'liste_icones' => 'Liste d\'icônes',
     102        'liste_pages' => 'Liste des pages',
     103
     104        // M
     105        'masquer' => 'Masquer',
     106        'modif_en_cours' => 'Modifications en cours',
    92107
    93108        // N
    94109        'ne_pas_definir_d_heritage' => 'Ne pas définir d\'héritage',
    95110        'noisettes_composition' => 'Noisettes spécifiques à la composition <i>@composition@</i> :',
     111        'noisette_numero' => 'noisette numéro :',
     112        'noisettes_disponibles' => 'Noisettes disponibles',
    96113        'noisettes_page' => 'Noisettes spécifiques à la page <i>@type@</i> :',
    97114        'noisettes_toutes_pages' => 'Noisettes communes à toutes les pages :',
     
    105122
    106123        // O
     124        'operation_annulee' => 'Opération annulée.',
    107125        'oui' => 'Oui',
    108126
    109127        // P
    110128        'page' => 'Page',
     129        'page_autonome' => 'Page autonome',
     130        'probleme_droits' => 'Vous n\'avez pas les droits nécessaires pour effectuer cette modification.',
     131       
     132        // R
     133        'retour' => 'Retour',
     134
     135        //S
     136        'suggestions' => 'Suggestions',
    111137
    112138        // W
  • _plugins_/noizetier/trunk/noizetier.css.html

    r65921 r66152  
    1 #CACHE{3600*100,cache-client}
    2 #HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15}
     1#CACHE{3600*24,cache-client}
     2#HTTP_HEADER{Content-Type: text/css; charset=utf-8}
    33#HTTP_HEADER{Vary: Accept-Encoding}
    44
    5 #SET{left,#LANG_DIR|choixsiegal{ltr,left,right}}
    6 #SET{right,#LANG_DIR|choixsiegal{ltr,right,left}}
    7 #SET{fleche,#LANG_DIR|choixsiegal{ltr,#CHEMIN{images/deplierhaut.gif},#CHEMIN{images/deplierhaut_rtl.gif}}}
    8 
    9 .noizetier-explications{
    10         font-size:0.9em;
    11         margin-bottom:20px;
    12         text-align:justify;
    13 }
    14 
    15 .description_bloc{
    16         padding:5px;
    17         font-size:1em;
    18         border-bottom:1px solid #ccc;
    19 }
    20 
    21 .formulaire_configurer_bloc{
    22         margin-bottom:10px;
    23 }
    24 
    25 .formulaire_spip h3.titre_bloc{
    26         font-size:1.5em;
    27         font-weight:bold;
    28         color: black;
    29         padding-#GET{left}:5px;
    30 }
    31 
    32 .formulaire_editer_noisette{
    33         position:relative;
    34 }
    35 .formulaire_editer_noisette .image_loading{
    36         position:absolute;
    37         top:50%;
    38         #GET{left}:50%;
    39 }
    40 
    41 .formulaire_spip ul.noisettes{
    42         clear:both;
    43 }
    44 .formulaire_spip ul.noisettes ul.noisettes{
    45         border-#GET{left}:1px solid #ccc;
    46         border-top:1px solid #ccc;
    47 }
    48 
    49 .formulaire_spip ul.noisettes li.noisette{
    50         clear:both;
    51         padding-#GET{left}: 34px;
    52         padding-#GET{right}:0;
    53         padding-bottom:0;
    54         background-position:5px 10px;
    55         background-repeat:no-repeat;
    56         border-bottom:1px solid #ccc;
    57         min-height: 42px;
    58 }
    59 
    60 .formulaire_spip ul.noisettes li.ui-sortable-helper {
    61         border: 1px solid #ccc;
    62         background-color: #fff;
    63 }
    64 
    65 .formulaire_spip ul.noisettes .ligne{
    66         position:relative;
    67 }
    68 
    69 .formulaire_spip ul.noisettes .actions{
    70         position:absolute;
    71         #GET{right}:5px;
    72         top:5px;
    73         text-align:#GET{right};
    74 }
    75 
    76 .formulaire_spip ul.noisettes .titre{
    77         font-weight:bold;
    78         line-height:29px;
    79 }
    80 .formulaire_spip ul.noisettes .infos{
    81         font-size:0.9em;
    82         margin-bottom:5px;
    83 }
    84 
    85 .formulaire_spip ul.noisettes .actions button{
    86         border:none;
    87         padding:0;
    88         margin:0;
    89         cursor:pointer;
    90 
    91 }
    92 .formulaire_spip ul.noisettes img{
    93         vertical-align:middle;
    94 }
    95 
    96 ul.parametres_noisette li div.choix {
    97         display:inline;
    98 }
    99 ul.noisettes div.infos span.nom_param {
    100         font-style:italic;
    101 }
    102 ul.noisettes div.notes {
    103         font-size:80%;
    104 }
    105 
    106 ul.liste_noizetier_pages , ul.liste_noizetier_compositions{
    107         clear:both;
    108 }
    109 
    110 ul.liste_noizetier_pages li.item, ul.liste_noizetier_compositions li.item{
    111         clear:both;
    112         padding-#GET{left}: 34px;
    113         padding-#GET{right}:0;
    114         padding-bottom:0;
    115         background-position:5px 10px;
    116         background-repeat:no-repeat;
    117         border-bottom:1px solid #ccc;
    118 }
    119 
    120 ul.liste_noizetier_pages .ligne, ul.liste_noizetier_compositions .ligne{
    121         position:relative;
    122 }
    123 
    124 ul.liste_noizetier_pages .actions, ul.liste_noizetier_compositions .actions{
    125         text-align:#GET{right};
    126 }
    127 
    128 ul.liste_noizetier_pages .titre, ul.liste_noizetier_compositions .titre{
    129         font-weight:bold;
    130         line-height:29px;
    131 }
    132 ul.liste_noizetier_pages .infos, ul.liste_noizetier_compositions .infos{
    133         font-size:0.9em;
    134         margin-bottom:5px;
    135 }
    136 
    137 
    138 li.noisette div.afficher strong{
    139         font-weight:normal;
    140         font-style:italic;
    141 }
    142 li.noisette div.afficher div.valeur {
    143         display:inline;
    144 }
    145 li.noisette div.saisie_textarea div.valeur {
    146         display:block;
    147         font-size:0.9em;
    148         border: solid 1px #AAA;
    149         margin-#GET{right}:5px;
    150         padding: 5px;
    151 }
    152 li.noisette div.afficher p {
    153         display:inline;
    154 }
    155 li.noisette div.afficher ul {
    156         display:inline;
    157 }
    158 li.noisette div.afficher li.choix {
    159         display:inline;
    160         padding:0;
    161         padding-#GET{right}:5px;
    162         border-#GET{right}:solid 1px #AAA;
    163 }
    164 li.noisette div.afficher fieldset{
    165         margin-#GET{right}:5px;
    166         margin-bottom: 5px;
    167         padding-bottom:0;
    168         border: solid 1px #AAA;
    169 }
    170 li.noisette div.afficher fieldset div.afficher{
    171         margin:0 5px;
    172 }
    173 
    174 li.noisette div.titre{
    175         cursor:pointer;
    176 }
    177 
    178 li.noisette div.titre{
    179         padding-#GET{left}:15px;
    180         background:transparent url([(#CHEMIN{images/deplierbas.gif})]) [(#GET{left}) ]center no-repeat;
    181 }
    182 
    183 li.noisette.plie div.titre{
    184         background-image:url(#GET{fleche});
    185        
    186 }
     5.formulaire_editer_noisette li.fieldset {margin-left:10px; margin-right:10px; border-left: solid 1px #CCC; border-right: solid 1px #CCC; border-bottom: solid 1px #CCC;}
     6ul.liste-noisettes li.noisette {padding-#LANG_LEFT: 30px; background-repeat: no-repeat; background-position: #LANG_LEFT 9px;}
     7ul.noizetier-liste-pages li.page {padding-#LANG_LEFT: 30px; background-repeat: no-repeat; background-position: #LANG_LEFT 9px;}
     8ul.bloc li.noisette {min-height:36px;}
     9ul.liste-noisettes .icone {width:36px; height:36px; padding:0; margin-#LANG_LEFT: 10px;}
     10ul.liste-noisettes .icone a {width:36px; height:36px; padding:0;}
     11ul.liste-noisettes .icone b {display:none;}
     12ul.liste-noisettes .noisette-up-24, ul.liste-noisettes .noisette-down-24, ul.liste-noisettes .noisette-del-24 {display:none;}
     13ul.liste-noisettes li:hover .icone {display:block;}
     14.valider_rang input.link{background:none;border:0;cursor:pointer;padding:0 0 1px;color:#444}
     15.valider_rang input.link:hover{border-bottom:1px solid;padding:0}
     16.formulaire_ajouter_noisette ul.liste-noisettes-disponibles {margin: 10px;}
  • _plugins_/noizetier/trunk/noizetier_fonctions.php

    r63233 r66152  
    1313 *
    1414 * @staticvar array $liste_noisettes
    15  * @param text $type
     15 * @param text $type renvoyer seulement un type de noisettes
     16 * @param text $noisette renvoyer spécifiquement une noisette données
    1617 * @return array
    1718 */
     
    4243
    4344
     45/**
     46 * Renvoie les info d'une seule noisette
     47 *
     48 * @param text $noisette renvoyer spécifiquement une noisette données
     49 * @return array
     50 */
     51function noizetier_info_noisette($noisette) {
     52        $noisettes = noizetier_obtenir_infos_noisettes();
     53        return $noisettes[$noisette];
     54}
    4455
    4556/**
     
    155166}
    156167
    157 /**
    158  * Charger les informations des parametres d'une noisette
     168
     169/**
     170 * Charger les informations des contexte pour une noisette
    159171 *
    160172 * @param string $noisette
     
    162174 * @return array
    163175 */
    164 function noizetier_charger_parametres_noisette($noisette){
    165         static $params_noisettes = null;
    166 
    167         if (is_null($params_noisettes[$noisette])){
    168                 $noisettes = noizetier_lister_noisettes();
    169                 $infos = $noisettes[$noisette];
    170                 $params_noisettes[$noisette] = extrait_parametres_noisette($infos['parametres']);
    171         }
    172         return $params_noisettes[$noisette];
    173 }
    174 
    175 /**
    176  * Charger les informations des contexte pour une noisette
    177  *
    178  * @param string $noisette
    179  * @staticvar array $params_noisettes
    180  * @return array
    181  */
    182176function noizetier_charger_contexte_noisette($noisette){
    183177        static $contexte_noisettes = null;
     
    192186
    193187/**
    194  * Transforme un tableau au format du plugin saisies en un tableau de parametres dont les cles sont les noms des param�tres
    195  * S'il y a de fieldset, les parametres sont extraits de son entree saisies
    196  *
    197  * @param string $parametres
    198  * @return array
    199  */
    200 function extrait_parametres_noisette($parametres){
    201         $res = array();
    202         if (is_array($parametres) && count($parametres)>0) {
    203                 foreach($parametres as $parametre) {
    204                         if ($parametre['saisie']!='fieldset') {
    205                                 $nom = $parametre['options']['nom'];
    206                                 $res[$nom] = $parametre['options'];
    207                                 $res[$nom]['saisie'] = $parametre['saisie'];
    208                                 if(isset($parametre['verifier']))
    209                                         $res[$nom]['verifier']=$parametre['verifier'];
    210                                 if(isset($res[$nom]['label']))
    211                                         $res[$nom]['label'] = _T_ou_typo($res[$nom]['label']);
    212                                 if(isset($res[$nom]['datas']))
    213                                         foreach($res[$nom]['datas'] as $cle => $valeur)
    214                                                 $res[$nom]['datas'][$cle] = _T_ou_typo($res[$nom]['datas'][$cle]);
    215                         }
    216                         else {
    217                                 $res = array_merge($res,extrait_parametres_noisette($parametre['saisies']));
    218                         }
    219                 }
    220         }
    221         return $res;
    222 }
    223 
    224 /**
    225188 * Lister les pages pouvant recevoir des noisettes
    226189 * Par defaut, cette liste est basee sur le contenu du repertoire contenu/
    227190 * Le tableau de resultats peut-etre modifie via le pipeline noizetier_lister_pages.
    228191 *
     192 * @param string $page_specifique (renvoyer les données d'une page spécifique)
    229193 * @staticvar array $liste_pages
    230194 * @return array
    231195 */
    232 function noizetier_lister_pages(){
     196function noizetier_lister_pages($page_specifique=''){
    233197        static $liste_pages = null;
    234198
     
    276240                                                $infos_compo['nom'] = typo($infos_compo['nom']);
    277241                                                $infos_compo['description'] = propre($infos_compo['description']);
    278                                                 $infos_compo['icon'] = $infos_compo['icon']!='' ? $infos_compo['icon'] : '';
     242                                                if ($infos_compo['icon']=='')
     243                                                        $infos_compo['icon'] = (isset($liste_pages[$type]) && isset($liste_pages[$type]['icon']) && $liste_pages[$type]['icon']!='') ? $liste_pages[$type]['icon'] : 'composition-24.png';
    279244                                                if (isset($liste_pages[$type]))
    280245                                                        $infos_compo['blocs'] = $liste_pages[$type]['blocs'];
     
    287252                }
    288253        }
    289         return $liste_pages;
     254        if ($page_specifique)
     255                return $liste_pages[$page_specifique];
     256        else
     257                return $liste_pages;
    290258}
    291259
     
    359327
    360328/**
    361  * Charger les informations d'une page, contenues dans un xml de config s'il existe
     329 *
    362330 * La liste des blocs par defaut d'une page peut etre modifiee via le pipeline noizetier_blocs_defaut.
    363331 *
     
    397365 *
    398366 */
    399 function supprimer_noisettes_page_noizetier($page) {
     367function noizetier_supprimer_noisettes_page($page) {
    400368        $type_compo = explode ('-',$page,2);
    401369        $type = $type_compo[0];
     
    403371                $composition = $type_compo[1];
    404372        else
    405                 $composition = $type_compo[0];
    406        
    407         sql_delete('spip_noisettes','type='.sql_quote($type).'and composition='.sql_quote($composition));
    408 
    409         // On invalide le cache
    410         include_spip('inc/invalideur');
    411         suivre_invalideur($page);
     373                $composition = '';
     374        if (autoriser('configurer','noizetier')) {
     375                sql_delete('spip_noisettes','type='.sql_quote($type).' AND composition='.sql_quote($composition));
     376                // On invalide le cache
     377                include_spip('inc/invalideur');
     378                suivre_invalideur("id='page/$page'");
     379        }
     380}
     381
     382/**
     383 * Supprime de spip_noisettes une noisette particuliere
     384 *
     385 * @param text $id_noisette
     386 *
     387 */
     388function noizetier_supprimer_noisette($id_noisette) {
     389        if (autoriser('configurer','noizetier') and intval($id_noisette)) {
     390                sql_delete('spip_noisettes','id_noisette='.intval($id_noisette));
     391                // On invalide le cache
     392                include_spip('inc/invalideur');
     393                suivre_invalideur("id='noisette/$id_noisette'");
     394        }
     395}
     396
     397/**
     398 * Ajoute une noisette à un bloc d'une page
     399 * Renvoie l'id_noisette de la noisette ajoutée
     400 *
     401 * @param text $noisette
     402 * @param text $page
     403 * @param text $bloc
     404 * @return integer
     405 *
     406 */
     407function noizetier_ajouter_noisette($noisette, $page, $bloc) {
     408        if (autoriser('configurer','noizetier') && $noisette) {
     409                $info_noisette = noizetier_info_noisette($noisette);
     410                include_spip('inc/saisies');
     411                $parametres = saisies_lister_valeurs_defaut($info_noisette['parametres']);
     412                $rang = intval(sql_getfetsel(
     413                        'rang',
     414                        'spip_noisettes',
     415                        'type='.sql_quote(noizetier_page_type($page)).' AND composition='.sql_quote(noizetier_page_composition($page)).' AND bloc='.sql_quote($bloc),
     416                        '',
     417                        'rang DESC',
     418                        '0,1'
     419                        )) + 1;
     420                $id_noisette = sql_insertq('spip_noisettes', array(
     421                        'type' => noizetier_page_type($page),
     422                        'composition' => noizetier_page_composition($page),
     423                        'bloc' => $bloc,
     424                        'noisette' => $noisette,
     425                        'rang' => $rang,
     426                        'parametres' => serialize($parametres)
     427                        ));
     428               
     429                if ($id_noisette) {
     430                        // On invalide le cache
     431                        include_spip('inc/invalideur');
     432                        suivre_invalideur("id='noisette/$id_noisette'");
     433                        return $id_noisette;
     434                }
     435        }
     436        else
     437                return 0;
     438}
     439
     440/**
     441 * Tri les noisettes d'une page
     442 *
     443 * @param text $page
     444 * @param array $ordre
     445 * @return boolean
     446 *
     447 */
     448function noizetier_trier_noisette($page, $ordre) {
     449        // Vérifications
     450        if (!autoriser('configurer','noizetier'))
     451                return false;
     452        if (!is_array($ordre))
     453                return false;
     454        if (substr($ordre[0],0,4)!='bloc')
     455                return $false;
     456
     457        $modifs = array();
     458        foreach($ordre as $entree) {
     459                $entree = explode ('-',$entree,2);
     460                if ($entree[0] == 'bloc') {
     461                        $bloc = $entree[1];
     462                        $rang = 1;
     463                }
     464                if ($entree[0] == 'noisette') {
     465                        $modifs[$entree[1]] = array(
     466                                'bloc' => $bloc,
     467                                'rang' => $rang
     468                        );
     469                        $rang += 1;
     470                }
     471                if ($entree[0] == 'ajouter') {
     472                        $id_noisette = noizetier_ajouter_noisette($entree[1], $page, $bloc);
     473                        $modifs[$id_noisette] = array(
     474                                'bloc' => $bloc,
     475                                'rang' => $rang
     476                        );
     477                        $rang += 1;
     478                }
     479        }
     480       
     481        foreach ($modifs as $id_noisette => $valeurs)
     482                sql_updateq('spip_noisettes', $valeurs, 'id_noisette=' . intval($id_noisette));
     483       
     484        return true;
     485}
     486
     487/**
     488 * Déplace une noisette au sein d'un bloc
     489 *
     490 * @param text $id_noisette
     491 * @param text $sens
     492 *
     493 */
     494function noizetier_deplacer_noisette($id_noisette, $sens) {
     495        $id_noisette = intval($id_noisette);
     496        if ($sens!='bas') $sens = 'haut';
     497        if (autoriser('configurer','noizetier') and intval($id_noisette)) {
     498                // On récupère des infos sur le placement actuel
     499                $noisette = sql_fetsel(
     500                        'bloc, type, composition, rang',
     501                        'spip_noisettes',
     502                        'id_noisette = '.$id_noisette
     503                );
     504                $bloc = $noisette['bloc'];
     505                $type = $noisette['type'];
     506                $composition = $noisette['composition'];
     507                $rang_actuel = intval($noisette['rang']);
     508               
     509                // On teste si y a une noisette suivante
     510                $dernier_rang = intval(sql_getfetsel(
     511                        'rang',
     512                        'spip_noisettes',
     513                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition),
     514                        '',
     515                        'rang desc',
     516                        '0,1'
     517                ));
     518               
     519                // Tant qu'on ne veut pas faire de tour complet
     520                if (!($sens == 'bas' and $rang_actuel == $dernier_rang) and !($sens == 'haut' and $rang_actuel == 1)){
     521                        // Alors on ne fait qu'échanger deux noisettes
     522                        $rang_echange = ($sens == 'bas') ? ($rang_actuel + 1) : ($rang_actuel - 1);
     523                        $ok = sql_updateq(
     524                                'spip_noisettes',
     525                                array(
     526                                        'rang' => $rang_actuel
     527                                ),
     528                                'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition).' and rang = '.$rang_echange
     529                        );
     530                        if ($ok)
     531                                $ok = sql_updateq(
     532                                        'spip_noisettes',
     533                                        array(
     534                                                'rang' => $rang_echange
     535                                        ),
     536                                        'id_noisette = '.$id_noisette
     537                                );
     538                }
     539                // Sinon on fait un tour complet en déplaçant tout
     540                else{
     541                        if ($sens == 'bas'){
     542                                // Tout le monde descend d'un rang
     543                                $ok = sql_update(
     544                                        'spip_noisettes',
     545                                        array(
     546                                                'rang' => 'rang + 1'
     547                                        ),
     548                                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition)
     549                                );
     550                                // La noisette passe tout en haut
     551                                if ($ok)
     552                                        $ok = sql_updateq(
     553                                                'spip_noisettes',
     554                                                array(
     555                                                        'rang' => 1
     556                                                ),
     557                                                'id_noisette = '.$id_noisette
     558                                        );
     559                        }
     560                        else{
     561                                // Tout le monde monte d'un rang
     562                                $ok = sql_update(
     563                                        'spip_noisettes',
     564                                        array(
     565                                                'rang' => 'rang - 1'
     566                                        ),
     567                                        'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition)
     568                                );
     569                                // La noisette passe tout en bas
     570                                if ($ok)
     571                                        $ok = sql_updateq(
     572                                                'spip_noisettes',
     573                                                array(
     574                                                        'rang' => $dernier_rang
     575                                                ),
     576                                                'id_noisette = '.$id_noisette
     577                                        );
     578                        }
     579                }
     580                // On invalide le cache
     581                include_spip('inc/invalideur');
     582                suivre_invalideur("id='noisette/$id_noisette'");
     583        }
     584}
     585
     586/**
     587 * Supprime une composition du noizetier
     588 *
     589 * @param text $page
     590 * @return text
     591 */
     592function noizetier_supprimer_composition($page) {
     593        $type_page = noizetier_page_type($page);
     594        $composition = noizetier_page_composition($page);
     595        $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
     596        unset($noizetier_compositions[$type_page][$composition]);
     597        if (count($noizetier_compositions[$type_page])==0)
     598                unset($noizetier_compositions[$type_page]);
     599        ecrire_meta('noizetier_compositions',serialize($noizetier_compositions));
    412600}
    413601
     
    463651
    464652/**
    465  * Liste d'icones obtenues en fouillant les repertoires img/ images/ image/ et /img-pack.
     653 * Liste d'icones en 24px obtenues en fouillant le theme
    466654 *
    467655 * @staticvar array $liste_icones
     
    472660       
    473661        if (is_null($liste_icones)){
    474                 $match = ".+[.](jpg|jpeg|png|gif)$";
    475                 $liste_icones = array(
    476                         'img' => find_all_in_path('img/', $match),
    477                         'img-pack' => find_all_in_path('img-pack/', $match),
    478                         'image' => find_all_in_path('image/', $match),
    479                         'images' => find_all_in_path('images/', $match)
    480                 );
    481         }
    482        
     662                $match = ".+-24[.](jpg|jpeg|png|gif)$";
     663                $liste_icones = find_all_in_path('prive/themes/spip/images/', $match);
     664        }
    483665        return $liste_icones;
    484666}
     667
     668/**
     669 * Teste si une page fait partie des compositions du noizetier
     670 *
     671 * @param text $page
     672 * @return text
     673 */
     674function noizetier_test_compo_noizetier($page) {
     675        $compos = unserialize($GLOBALS['meta']['noizetier_compositions']);
     676        $type = noizetier_page_type($page);
     677        $composition = noizetier_page_composition($page);
     678       
     679        return (is_array($compos[$type][$composition])) ? 'on' : '';
     680
     681}
     682
     683
    485684
    486685
     
    721920}
    722921
     922/**
     923 * Retourne le chemin complet d'une icone, vérifie d'abord chemin_image, sinon passe par find_in_path
     924 *
     925 * @param text $icone
     926 * @return text
     927 */
     928function noizetier_chemin_icone($icone){
     929        if ($i = chemin_image($icone))
     930                return $i;
     931        else {
     932                return find_in_path($icone);
     933        }
     934}
    723935?>
  • _plugins_/noizetier/trunk/noizetier_pipelines.php

    r61993 r66152  
    5353        if (!is_array($noizetier_compositions))
    5454                $noizetier_compositions = array();
     55        unset($noizetier_compositions['page']);
    5556        $type = $flux['args']['type'];
    5657        $informer = $flux['args']['informer'];
     
    6263                                $noizetier_compositions[$t][$c]['nom'] = typo($info_compo['nom']);
    6364                                $noizetier_compositions[$t][$c]['description'] = propre($info_compo['description']);
    64                                 $noizetier_compositions[$t][$c]['icon'] = $info_compo['icon']!='' ? find_in_path($info_compo['icon']) : '';
     65                                if ($info_compo['icon']!='')
     66                                        $icone = $info_compo['icon'];
     67                                else {
     68                                        $info_page = noizetier_lister_pages($t);
     69                                        $icone = (isset($info_page['icon']) && $info_page['icon']!='') ? $info_page['icon'] : 'composition-24.png';
     70                                }
     71                                $noizetier_compositions[$t][$c]['icon'] = noizetier_chemin_icone($icone);
    6572                        }
    6673                        else
     
    7178                if (!is_array($flux['data']))
    7279                        $flux['data'] = array();
    73                 $flux['data'] = array_merge($flux['data'],$noizetier_compositions);
     80                $flux['data'] = array_merge_recursive ($flux['data'],$noizetier_compositions);
    7481        }
    7582        elseif (count($noizetier_compositions[$type])>0) {
     
    7885                if (!is_array($noizetier_compositions[$type]))
    7986                        $noizetier_compositions[$type] = array();
    80                 $flux['data'][$type] = array_merge($flux['data'][$type],$noizetier_compositions[$type]);
     87                $flux['data'][$type] = array_merge_recursive ($flux['data'][$type],$noizetier_compositions[$type]);
    8188        }
    8289        return $flux;
     
    118125        $plugins[] = "jquery.ui.mouse";
    119126        $plugins[] = "jquery.ui.sortable";
     127        $plugins[] = "jquery.ui.droppable";
     128        $plugins[] = "jquery.ui.draggable";
    120129        return $plugins;
    121130}
  • _plugins_/noizetier/trunk/paquet.xml

    r62036 r66152  
    77        logo="prive/themes/spip/images/noizetier-32.png"
    88        schema="0.4"
    9         documentation="http://www.spip-contrib.net/noiZetier"
     9        documentation="http://contrib.spip.net/?article4246"
    1010>       
    1111
     
    4343        <utilise nom="Z" compatibilite="[1.7.0;1.9.99]" />
    4444
    45         <menu nom="bando_noizetier" titre="noizetier:editer_noizetier_titre" parent="menu_squelette" icone="images/noizetier-16.png" action="noizetier" />
     45        <menu nom="bando_noizetier" titre="noizetier:editer_noizetier_titre" parent="menu_squelette" icone="images/noizetier-16.png" action="pages" />
    4646</paquet>
Note: See TracChangeset for help on using the changeset viewer.