Changeset 95835 in spip-zone


Ignore:
Timestamp:
Mar 7, 2016, 11:35:09 PM (5 years ago)
Author:
rastapopoulos@…
Message:

Et voilà ! On ajoute un VRAI champ "rang" aux contenus des sélections éditoriales. Et on migre proprement en peuplant avec le tri d'avant. Tri que l'on supprime au passage puisque obsolète. Cela CASSE donc la compatibilité des gens qui faisaient "par num titre". J'ai fait le choix de ne pas changer de version de X "juste" pour ça, même si ça casse un peu c'est un truc très très rapide : il faut juste remplacer "par rang".

Avec ce nouveau rang, on ajoute des vrais boutons de déplacer ET le dragNdrop en prime ! (copiage sur Itinéraires donc re-merci mst_graphx, marcimat et tcharlss).

Location:
_plugins_/selections_editoriales/trunk
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/selections_editoriales/trunk/base/selections_editoriales.php

    r84492 r95835  
    2323 */
    2424function selections_editoriales_declarer_tables_interfaces($interfaces) {
    25 
    2625        $interfaces['table_des_tables']['selections'] = 'selections';
    2726        $interfaces['table_des_tables']['selections_contenus'] = 'selections_contenus';
     
    7574                        "id_selections_contenu" => "bigint(21) NOT NULL",
    7675                        "id_selection"       => "bigint(21) NOT NULL DEFAULT 0",
     76                        'rang'               => 'int not null default 0',
    7777                        "titre"              => "text NOT NULL DEFAULT ''",
    7878                        "url"                => "text NOT NULL DEFAULT ''",
     
    8686                'titre' => "titre AS titre, '' AS lang",
    8787                 #'date' => "",
    88                 'champs_editables'  => array('titre', 'url', 'descriptif', 'id_selection', 'css'),
    89                 'champs_versionnes' => array('titre', 'url', 'descriptif', 'css'),
     88                'champs_editables'  => array('rang', 'titre', 'url', 'descriptif', 'id_selection', 'css',),
     89                'champs_versionnes' => array('titre', 'url', 'descriptif', 'css',),
    9090                'rechercher_champs' => array("titre" => 8, "descriptif" => 4),
    9191                'tables_jointures'  => array(),
     
    124124        return $tables;
    125125}
    126 
    127 
    128 ?>
  • _plugins_/selections_editoriales/trunk/lang/selections_contenu_fr.php

    r94263 r95835  
    2020        'champ_url_explication' => 'L’URL d’une page (http://exemple) ou le raccourci d’un contenu SPIP (article123, rubrique456, etc).',
    2121        'champ_url_label' => 'URL',
    22 
     22       
     23        // D
     24        'deplacer_apres' => 'Déplacer après',
     25        'deplacer_avant' => 'Déplacer avant',
     26       
    2327        // I
    2428        'icone_creer_selections_contenu' => 'Créer un contenu sélectionné',
  • _plugins_/selections_editoriales/trunk/paquet.xml

    r95834 r95835  
    22        prefix="selections_editoriales"
    33        categorie="navigation"
    4         version="1.3.2"
     4        version="1.4.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
    77        logo="prive/themes/spip/images/selections_editoriales-64.png"
    88        documentation="http://contrib.spip.net/4647"
    9         schema="1.1.0"
     9        schema="1.4.0"
    1010>
    1111        <nom>Sélections éditoriales</nom>
     
    2222        <pipeline nom="boite_infos" inclure="selections_editoriales_pipelines.php" />
    2323        <pipeline nom="afficher_complement_objet" inclure="selections_editoriales_pipelines.php" />
    24 
    2524        <pipeline nom="declarer_tables_objets_sql" inclure="base/selections_editoriales.php" />
    2625        <pipeline nom="declarer_tables_interfaces" inclure="base/selections_editoriales.php" />
     
    2827        <pipeline nom="affiche_milieu" inclure="selections_editoriales_pipelines.php" />
    2928        <pipeline nom="optimiser_base_disparus" inclure="selections_editoriales_pipelines.php" />
     29        <pipeline nom="jqueryui_plugins" inclure="selections_editoriales_pipelines.php" />
    3030
    3131        <menu nom="selections" titre="selection:titre_selections" parent="menu_edition" icone="images/selections_contenu-16.png" action="selections" />
  • _plugins_/selections_editoriales/trunk/prive/squelettes/inclure/editer_selections_contenus.html

    r95834 r95835  
    44                <h3 class="titrem"><a href="[(#ENV{id_selection}|generer_url_entite{selection})]">#INFO_TITRE{selection,#ENV{id_selection}}</a></h3>
    55        ]
    6         <div class="liste-items">
    7                 <BOUCLE_contenus(SELECTIONS_CONTENUS){id_selection}{par num titre,titre}>
    8                 <div class="item" id="selection#ID_SELECTION-contenu#ID_SELECTIONS_CONTENU">
     6        <div class="liste-items" id="editer_selections_contenus-#ID_SELECTION">
     7                <BOUCLE_contenus(SELECTIONS_CONTENUS){id_selection}{par rang}>
     8                <div class="item" id="selection#ID_SELECTION-contenu#ID_SELECTIONS_CONTENU" data-id_selections_contenu="#ID_SELECTIONS_CONTENU">
    99                        [(#CONFIG{activer_logos}|=={oui}|oui)
    1010                                [<a class="ajax" title="<:info_telecharger_nouveau_logo|trim{:}:>" href="[(#SELF|parametre_url{editer_contenu,''}|parametre_url{editer_contenu_logo,#ENV{editer_contenu_logo}|=={#ID_SELECTIONS_CONTENU}|?{non,#ID_SELECTIONS_CONTENU}})]">(#LOGO_SELECTIONS_CONTENU|sinon{#CHEMIN{prive/images/rayures-gris.gif}}|image_reduire{60,60}|inserer_attribut{alt,<:info_telecharger_nouveau_logo|trim{:}:>}|inserer_attribut{class,spip_documents_left})</a>]
     
    1515                        <div class="actions">
    1616                                [(#AUTORISER{supprimer,selections_contenu,#ID_SELECTIONS_CONTENU}|oui)
    17                                 [(#BOUTON_ACTION{<:lien_supprimer:>, #URL_ACTION_AUTEUR{supprimer_selections_contenu,#ID_SELECTIONS_CONTENU,#SELF}, link ajax todo})]
     17                                        [(#BOUTON_ACTION{<:lien_supprimer:>, #URL_ACTION_AUTEUR{supprimer_selections_contenu,#ID_SELECTIONS_CONTENU,#SELF}, link ajax todo})]
    1818                                ]
     19                               
    1920                                [(#AUTORISER{modifier,selections_contenu,#ID_SELECTIONS_CONTENU}|oui)
    20                                 <a class="ajax" href="[(#SELF|parametre_url{editer_contenu_logo,''}|parametre_url{editer_contenu,#ID_SELECTIONS_CONTENU})]"><:bouton_modifier:></a>
     21                                        <a class="ajax" href="[(#SELF|parametre_url{editer_contenu_logo,''}|parametre_url{editer_contenu,#ID_SELECTIONS_CONTENU})]"><:bouton_modifier:></a>
     22                                        [(#BOUTON_ACTION{
     23                                                [(#CHEMIN_IMAGE{rang_haut-16.png}|balise_img{<:selections_contenu:deplacer_avant:>})],
     24                                                #URL_ACTION_AUTEUR{deplacer_selections_contenu, #ID_SELECTIONS_CONTENU-haut, #SELF},
     25                                                ajax link
     26                                        })]
     27                                        [(#BOUTON_ACTION{
     28                                                [(#CHEMIN_IMAGE{rang_bas-16.png}|balise_img{<:selections_contenu:deplacer_apres:>})],
     29                                                #URL_ACTION_AUTEUR{deplacer_selections_contenu, #ID_SELECTIONS_CONTENU-bas, #SELF},
     30                                                ajax link
     31                                        })]
    2132                                ]
    2233                        </div>
     
    4960
    5061#BOITE_FERMER
     62
     63<script type="text/javascript">
     64/*<![CDATA[*/
     65;(function($){
     66        $(function(){
     67                $('#editer_selections_contenus-#ID_SELECTION').sortable({
     68                        items:".item",
     69                        cursor:"move",
     70                        axis:'y'
     71                });
     72                $('#editer_selections_contenus-#ID_SELECTION').disableSelection();
     73               
     74                $('#editer_selections_contenus-#ID_SELECTION').on('sortupdate', function(event, ui) {
     75                        // URL de base de l'action
     76                        var url_action = '[(#VAL{deplacer_selections_contenu}|generer_url_action{"", 1})]';
     77                        // On récupère l'identifiant du contenu qui a bougé
     78                        var id_contenu = ui.item.data('id_selections_contenu');
     79                        // On calcule le rang où il arrive à la fin
     80                        var rang = ui.item.index() + 1;
     81                       
     82                        // URL finale
     83                        url_action = parametre_url(url_action, 'arg', id_contenu + '-' + rang)
     84                       
     85                        //console.log(url_action);
     86                       
     87                        var request = $.ajax({
     88                                type: 'POST',
     89                                url: url_action
     90                        });
     91                        request.done(function() {
     92                                $('#editer_selections_contenus-#ID_SELECTION').ajaxReload();
     93                        });
     94                });
     95        });
     96})(jQuery);
     97/*]]>*/
     98</script>
  • _plugins_/selections_editoriales/trunk/selections_editoriales_administrations.php

    r84492 r95835  
    3434        );
    3535       
     36        // Ajouter un vrai champ "rang" et le peupler
     37        $maj['1.4.0'] = array(
     38                array('maj_tables', array('spip_selections_contenus')),
     39                array('selections_editoriales_maj_1_4_0'),
     40        );
     41       
    3642        include_spip('base/upgrade');
    3743        maj_plugin($nom_meta_base_version, $version_cible, $maj);
    3844}
    3945
     46// Peupler le nouveau vrai champ "rang"
     47function selections_editoriales_maj_1_4_0() {
     48        // On cherche toutes les sélections
     49        if ($selections = sql_allfetsel('id_selection', 'spip_selections')) {
     50                foreach ($selections as $selection) {
     51                        $id_selection = intval($selection['id_selection']);
     52                       
     53                        // On cherche tous les contenus, déjà classés dans le bon ordre
     54                        if ($contenus = sql_allfetsel(
     55                                'id_selections_contenu, titre, 0+titre as num',
     56                                'spip_selections_contenus',
     57                                'id_selection = '.$id_selection,
     58                                '',
     59                                'num,titre'
     60                        )) {
     61                                include_spip('inc/filtres');
     62                               
     63                                $rang = 1;
     64                                foreach ($contenus as $contenu) {
     65                                        $id_selections_contenu = intval($contenu['id_selections_contenu']);
     66                                       
     67                                        // On met à jour le rang et le titre sans l'ancien numéro
     68                                        sql_updateq(
     69                                                'spip_selections_contenus',
     70                                                array(
     71                                                        'rang' => $rang,
     72                                                        'titre' => supprimer_numero($contenu['titre']),
     73                                                ),
     74                                                'id_selections_contenu = '.$id_selections_contenu
     75                                        );
     76                                       
     77                                        $rang++;
     78                                }
     79                        }
     80                }
     81        }
     82}
    4083
    4184/**
  • _plugins_/selections_editoriales/trunk/selections_editoriales_pipelines.php

    r95834 r95835  
    166166}
    167167
    168 ?>
     168/**
     169 * Pipeline jqueryui_plugins pour demander au plugin l'insertion des scripts pour .sortable()
     170 *
     171 * @param array $plugins
     172 * @return array
     173 */
     174function selections_editoriales_jqueryui_plugins($plugins) {
     175        // On envoie que si on est dans l'espace prive
     176    if(test_espace_prive()) {
     177                $plugins[] = "jquery.ui.core";
     178                $plugins[] = "jquery.ui.widget";
     179                $plugins[] = "jquery.ui.mouse";
     180                $plugins[] = "jquery.ui.sortable";
     181                $plugins[] = "jquery.ui.droppable";
     182                $plugins[] = "jquery.ui.draggable";
     183    }
     184   
     185        return $plugins;
     186}
Note: See TracChangeset for help on using the changeset viewer.