Changeset 110138 in spip-zone for _plugins_/roles_documents


Ignore:
Timestamp:
May 7, 2018, 8:52:34 PM (6 weeks ago)
Author:
tcharlss@…
Message:

1.2.11 : quand on ajoute en logo un document de la médiathèque qui était déjà lié à l'objet, on conserve les liens présents (même fonctionnement que quand on choisit le rôle de logo depuis la liste des documents liés)

Location:
_plugins_/roles_documents/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/roles_documents/trunk/formulaires/editer_logo.php

    r109277 r110138  
    254254        }
    255255
    256         // Retours du formulaire d'ajout de document
     256        // Si c'est un doc de la médiathèque, notons s'il est déjà lié
     257        $doc_deja_present = (
     258                _request('joindre_mediatheque')
     259                and sql_countsel(
     260                'spip_documents_liens',
     261                        array(
     262                                'objet = ' . sql_quote($objet),
     263                                'id_objet = ' . intval($id_objet),
     264                                'id_document = ' . intval(_request('refdoc_joindre')),
     265                                'id_document > 0'
     266                        )
     267                )
     268        );
     269
     270        // Traitements génériques du formulaire d'ajout de documents
     271        // (ajout du doc dans la table, liaison avec l'objet, etc.)
    257272        $traiter_joindre_document = charger_fonction('traiter', 'formulaires/joindre_document');
    258273        $res_joindre_document = $traiter_joindre_document('new', $id_objet, $objet);
    259274
    260         // En cas de succès
    261         if (isset($res_joindre_document['message_ok'])) {
    262 
    263                 // En présence d'un role sélectionne, on requalifie le lien créé
    264                 if ($roles = _request('roles')
    265                         and !empty($res_joindre_document['ids'])
    266                 ) {
    267                         // le role est unique mais on ne sait jamais
    268                         if (is_array($roles)) {
    269                                 $roles = array_shift($roles);
    270                         }
    271                         // On ne prend qu'un seul document
    272                         if ($id_document = intval(array_shift($res_joindre_document['ids']))) {
    273                                 $update = sql_updateq(
    274                                         'spip_documents_liens',
    275                                         array('role' => $roles),
    276                                         array(
    277                                                 'id_document=' . intval($id_document),
    278                                                 'objet='       . sql_quote($objet),
    279                                                 'id_objet='    . intval($id_objet),
    280                                                 'role='        . sql_quote('document'),
    281                                         )
    282                                 );
    283                         }
     275        // En cas de succès, on ajoute le rôle sélectionné
     276        if ($roles = _request('roles')
     277                and isset($res_joindre_document['message_ok'])
     278                and !empty($res_joindre_document['ids'])
     279        ) {
     280
     281                // Un seul rôle peut être sélectionné, mais on ne sait jamais
     282                if (is_array($roles)) {
     283                        $roles = array_shift($roles);
     284                }
     285
     286                // On ne prend qu'un seul document
     287                $id_document = intval(array_shift($res_joindre_document['ids']));
     288
     289                // Cas 1 : le document n'était pas déjà lié, on requalifie le lien créé
     290                if (!$doc_deja_present) {
     291                        $update = sql_updateq(
     292                                'spip_documents_liens',
     293                                array('role' => $roles),
     294                                array(
     295                                        'id_document=' . intval($id_document),
     296                                        'objet='       . sql_quote($objet),
     297                                        'id_objet='    . intval($id_objet),
     298                                        'role='        . sql_quote('document'),
     299                                )
     300                        );
     301
     302                // Cas 2 : le document était déjà lié, on crée un nouveau lien qualifié
     303                } else {
     304                        $insert = sql_insertq(
     305                                'spip_documents_liens',
     306                                array(
     307                                        'id_document' => intval($id_document),
     308                                        'objet'       => $objet,
     309                                        'id_objet'    => intval($id_objet),
     310                                        'role'        => $roles,
     311                                )
     312                        );
    284313                }
    285314
     
    288317                suivre_invalideur("id='$objet/$id_objet'");
    289318
    290                 // TODO : Modifier le javascript du message de retour
    291 
    292319        }
    293320
  • _plugins_/roles_documents/trunk/paquet.xml

    r110029 r110138  
    22        prefix="roles_documents"
    33        categorie="edition"
    4         version="1.2.10"
     4        version="1.2.11"
    55        etat="dev"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.