Changeset 101716 in spip-zone


Ignore:
Timestamp:
Jan 14, 2017, 10:31:30 PM (3 years ago)
Author:
marcimat@…
Message:

Intégration du plugin "Ordoc" dans Médias.
Cela permet d'ordonner les documents attachés à des objets éditoriaux. L'ordre est stocké dans la colonne "rang_lien" de la table "spip_documents_liens".

Location:
_core_/plugins/medias
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/base/medias.php

    r100660 r101716  
    8888                'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
    8989                'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
    90                 'vu' => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL"
     90                'vu' => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL",
     91                'rang_lien' => "int(4) DEFAULT '0' NOT NULL"
    9192        );
    9293
  • _core_/plugins/medias/lang/medias_fr.php

    r101712 r101716  
    7575        'erreur_aucun_document' => 'Ce document n’existe pas dans la médiathèque',
    7676        'erreur_aucun_fichier' => 'Aucun fichier n’a été trouvé',
     77        'erreur_autorisation' => 'Échec de l’autorisation.',
    7778        'erreur_chemin_distant' => 'Le fichier distant @nom@ n’a pas pu être trouvé',
    7879        'erreur_chemin_ftp' => 'Le fichier indiqué n’a pas été trouvé sur le serveur',
    7980        'erreur_copie_fichier' => 'Impossible de copier le fichier @nom@',
     81        'erreur_deplacement_impossible' => 'Déplacement impossible.',
    8082        'erreur_dossier_tmp_manquant' => 'Un dossier temporaire est manquant pour télécharger les fichiers',
    8183        'erreur_ecriture_fichier' => 'Erreur lors de l’écriture du fichier sur le disque',
     
    8385        'erreur_indiquez_un_fichier' => 'Indiquez un fichier !',
    8486        'erreur_insertion_document_base' => 'Impossible d’enregistrer le document @fichier@ en base de données',
     87        'erreur_objet_absent' => 'Informations reçues incomplètes.',
    8588        'erreur_suppression_vignette' => 'Erreur lors de la suppression de la vignette',
    8689        'erreur_upload_type_interdit' => 'Le téléchargement des fichiers du type de @nom@ n’est pas autorisé',
     
    156159        'objet_document' => 'Document',
    157160        'objet_documents' => 'Documents',
     161        'ordonner_ce_document' => 'Ordonner ce document',
    158162
    159163        // P
  • _core_/plugins/medias/medias_administrations.php

    r100660 r101716  
    169169                // ajout de ics + vcf
    170170                array('creer_base_types_doc')
     171        );
     172        $maj['1.3.0'] = array(
     173                // ajout de rang_lien
     174                array('maj_tables', 'spip_documents_liens'),
    171175        );
    172176        include_spip('base/upgrade');
  • _core_/plugins/medias/modeles/document_desc.html

    r101712 r101716  
    1313                <div class="descriptions">
    1414                        <h4 class="titrem">
    15                                 [(#VU|=={oui}|oui)<img src='#CHEMIN_IMAGE{vu-16-10.png}' width='16' height='10' alt='<:medias:document_vu:>' title='<:medias:document_vu:>'/> ]
     15                                [(#VU|=={oui}|oui)<img src='#CHEMIN_IMAGE{vu-16-10.png}' width='16' height='10' alt='<:medias:document_vu|attribut_html:>' title='<:medias:document_vu:>'/> ]
    1616                                <span class="#EDIT{titre} titre" title="[(#FICHIER*|basename|attribut_html)]">
    1717                                        [(#TITRE|oui)#TITRE]
     
    2828                        <div class="infos">
    2929                                <div class="permanentes">
    30                                         [(#DISTANT|=={oui}|oui)<img src='#CHEMIN_IMAGE{distant-16.png}' width='16' height='16' alt='<:medias:fichier_distant:>' title='<:medias:fichier_distant:>'/> ]<:info_numero_abbreviation:>#ID_DOCUMENT - #EXTENSION
     30                                        [(#DISTANT|=={oui}|oui)<img src='#CHEMIN_IMAGE{distant-16.png}' width='16' height='16' alt='<:medias:fichier_distant|attribut_html:>' title='<:medias:fichier_distant|attribut_html:>'/> ]<:info_numero_abbreviation:>#ID_DOCUMENT - #EXTENSION
    3131
    3232                                        <a class="lien_details"
     
    7777                [(#TOTAL_BOUCLE|=={1}|et{#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET}}|et{#VU|=={non}})[(#BOUTON_ACTION{<:medias:bouton_enlever_supprimer_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT-suppr-safe,#SELF},ajax,<:medias:bouton_enlever_supprimer_document_confirmation:>,'',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]]
    7878                [(#AUTORISER{dissocierdocuments,#OBJET,#ID_OBJET})[(#BOUTON_ACTION{<:medias:bouton_enlever_document:>,#URL_ACTION_AUTEUR{dissocier_document,#ID_OBJET-#OBJET-#ID_DOCUMENT--safe,#SELF},ajax,'','',[(function(){jQuery("#doc(#ID_DOCUMENT)").animateRemove();return true;})()]})]]
    79                         [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
     79                [(#AUTORISER{modifier,document,#ID_DOCUMENT}|oui)
     80                        <span class="deplacer-document"><img src='#CHEMIN_IMAGE{deplacer-16.png}' width='16' height='16' alt='<:medias:ordonner_ce_document|attribut_html:>' /></span>
    8081                        <a href="#URL_ECRIRE{document_edit,id_document=#ID_DOCUMENT}" target="_blank" class="editbox" tabindex="0" role="button"><:medias:bouton_modifier_document:></a>
    81                         ]<//B_compte>
     82                ]<//B_compte>
    8283                [(#PIPELINE{document_desc_actions,#ARRAY{args,#ARRAY{id_document,#ID_DOCUMENT,position,document_desc,objet,#OBJET,id_objet,#ID_OBJET},data,''}})]
    8384        </div>
  • _core_/plugins/medias/paquet.xml

    r101712 r101716  
    22        prefix="medias"
    33        categorie="multimedia"
    4         version="2.16.0"
     4        version="2.17.0"
    55        etat="stable"
    66        compatibilite="[3.2.0-dev;]"
    77        logo="prive/themes/spip/images/portfolio-32.png"
    8         schema="1.2.7"
     8        schema="1.3.0"
    99>
    1010
  • _core_/plugins/medias/prive/squelettes/inclure/portfolio-documents.html

    r101714 r101716  
    1515<div class="liste_items documents" id="illustrations#ENV{id_unique}">
    1616[<p class="pagination">(#PAGINATION)</p>]
    17 <BOUCLE_illustrations(DOCUMENTS documents_liens types_documents){inclus=image}{mode=image}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
     17<BOUCLE_illustrations(DOCUMENTS documents_liens types_documents){inclus=image}{mode=image}{id_objet}{objet}{par rang_lien, num titre, date,id_document}{pagination 50}{statut?}>
    1818        #MODELE{document_desc,id_document,id_objet,objet}
    1919</BOUCLE_illustrations>
     
    2929<div class="liste_items documents" id="portfolio#ENV{id_unique}">
    3030[<p class="pagination">(#PAGINATION)</p>]
    31 <BOUCLE_portfolio(DOCUMENTS documents_liens types_documents){inclus=image}{mode=document}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
     31<BOUCLE_portfolio(DOCUMENTS documents_liens types_documents){inclus=image}{mode=document}{id_objet}{objet}{par rang_lien, num titre, date,id_document}{pagination 50}{statut?}>
    3232        #MODELE{document_desc,id_document,id_objet,objet}
    3333</BOUCLE_portfolio>
     
    4343<div class="liste_items documents" id="documents#ENV{id_unique}">
    4444[<p class="pagination">(#PAGINATION)</p>]
    45 <BOUCLE_documents(DOCUMENTS documents_liens types_documents){inclus!=image}{mode!=vignette}{id_objet}{objet}{par num titre,date,id_document}{pagination 50}{statut?}>
     45<BOUCLE_documents(DOCUMENTS documents_liens types_documents){inclus!=image}{mode!=vignette}{id_objet}{objet}{par rang_lien, num titre, date,id_document}{pagination 50}{statut?}>
    4646        #MODELE{document_desc,id_document,id_objet,objet}
    4747</BOUCLE_documents>
     
    135135}
    136136
     137/* Gestion du tri des listes de documents et de leur enregistrement */
     138function ordonner_listes_documents() {
     139        if ($.fn.sortable) {
     140                $("#illustrations#ENV{id_unique}, #portfolio#ENV{id_unique}, #documents#ENV{id_unique}").each(function () {
     141                        // détruire / recréer le sortable à chaque appel ajax
     142                        if ($(this).has('.ui-sortable').length) {
     143                                $(this).sortable('destroy');
     144                        }
     145                        // pas de tri possible s'il n'y a qu'un seul élément.
     146                        if ($(this).find('> .item').length < 2) {
     147                                $(this).find('.deplacer-document').hide();
     148                                return true; // continue
     149                        } else {
     150                                $(this).find('.deplacer-document').show();
     151                        }
     152                        $(this).sortable({
     153                                /*axis: "y",*/ /* minidoc a un affichage en case */
     154                                handle: "",
     155                                placeholder: "ui-state-highlight deplacer-document-placeholder",
     156                                cancel: 'img.croix_centre_image',
     157                                start: function(event, ui) {
     158                                        ui.item.addClass('document-en-mouvement');
     159                                },
     160                                stop: function(event, ui) {
     161                                        ui.item.removeClass('document-en-mouvement');
     162                                },
     163                                update: function (event, ui) {
     164                                        var items = $(this);
     165                                        var item = ui.item;
     166                                        var liste = items.sortable('toArray');
     167                                        var ordre = [];
     168
     169                                        $.each(liste, function(i, id) {
     170                                                if (id) {
     171                                                        ordre.push( id.substring(3) ); // doc123 => 123
     172                                                }
     173                                        });
     174
     175                                        var action = '[(#VAL{ordonner_liens_documents}|generer_url_action{"", 1})]';
     176                                        var params = {
     177                                                objet_source: 'document',
     178                                                objet_lie: '#OBJET',
     179                                                id_objet_lie: '#ID_OBJET',
     180                                                ordre: ordre,
     181                                        };
     182
     183                                        item.animateLoading();
     184
     185                                        $.ajax({
     186                                                url: action,
     187                                                data: params,
     188                                                dataType: 'json',
     189                                                cache: false,
     190                                        }).done(function(data) {
     191
     192                                                var couleur_origine = item.css('background-color');
     193                                                var couleur_erreur = $("<div class='remove'></div>").css('background-color');
     194                                                var couleur_succes = $("<div class='append'></div>").css('background-color');
     195                                                item.endLoading(true);
     196
     197                                                if (data.errors.length) {
     198                                                        items.sortable('cancel');
     199                                                        item.css({backgroundColor: couleur_erreur}).animate({backgroundColor: couleur_origine}, 'normal', function(){
     200                                                                item.css({backgroundColor: ''});
     201                                                        });
     202                                                } else {
     203                                                        item.css({backgroundColor: couleur_succes}).animate({backgroundColor: couleur_origine}, 'normal', function(){
     204                                                                item.css({backgroundColor: ''});
     205                                                        });
     206                                                }
     207                                        });
     208                                }
     209                        });
     210                });
     211        }
     212}
     213
    137214if (window.jQuery) {
    138215        jQuery(function($){
     
    140217                choix_affichages_documents();
    141218                onAjaxLoad(choix_affichages_documents);
     219                ordonner_listes_documents();
     220                onAjaxLoad(ordonner_listes_documents);
    142221        });
    143222}
  • _core_/plugins/medias/prive/style_prive_plugin_medias.html

    r101715 r101716  
    198198.item.vu_oui {background:#f9f9f9;}
    199199
     200.deplacer-document-placeholder { height:130px; }
     201.deplacer-document { margin-#GET{right}:0.5em; float: #GET{left}; margin-top:2px; cursor:move; }
     202.document-en-mouvement { cursor:move; }
     203
     204.portfolios .item .actions a.editbox { margin-top: 0 !important; }
     205
    200206
    201207/* Types d'affichages des listes de douments */
     
    276282.portfolios .documents_liste .item .actions {
    277283        align-items:center;
     284        text-align:#GET{right};
    278285        margin-#GET{left}:1em;
    279286        padding-#GET{right}:0;
     287        min-width:80px;
    280288}
    281289.portfolios .documents_liste .item .actions .editbox,
    282 .portfolios .documents_liste .item .actions .ordoc-deplacer {
     290.portfolios .documents_liste .item .actions .deplacer-document {
    283291        display:inline-block;
    284292}
     293.documents_liste .deplacer-document-placeholder { height:40px; }
    285294
    286295
     
    311320        float:#GET{right};
    312321}
    313 .portfolios .documents_cases .item .actions .ordoc-deplacer {
     322.portfolios .documents_cases .item .actions .deplacer-document {
    314323        display:inline-block;
    315         float:#GET{left};
    316 }
     324        margin-top:0px;
     325}
     326.documents_cases .deplacer-document-placeholder { height:130px; width:113px; padding: 2px; margin: 2px;}
     327
    317328.portfolios .documents_cases .item .vignette {
    318329        width:auto;
     
    332343        margin-bottom:0;
    333344        box-sizing:border-box;
    334         padding: 4px 6px;
     345        padding: 2px 5px 1px 5px;
    335346}
    336347.portfolios .documents_cases .tout_supprimer {
Note: See TracChangeset for help on using the changeset viewer.