Changeset 47038 in spip-zone


Ignore:
Timestamp:
Apr 24, 2011, 5:09:52 PM (10 years ago)
Author:
marcimat@…
Message:

Les contacts passent également en objets éditables séparément des auteurs.

Location:
_plugins_/contacts_et_organisations
Files:
10 added
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/contacts_et_organisations/action/lier_organisation_auteur.php

    r46820 r47038  
    1515
    1616        // cas liaison id_organisation / id_auteur
    17         spip_log($arg, 'c');
    1817        if (intval($arg[0]) and is_numeric($arg[1])) {
    1918                // spip_log("appel à l'action_lier_organisation_auteur_dist avec $arg[0] $arg[1] comme argument");
     
    3231        if ($id_organisation) {
    3332                sql_updateq("spip_organisations", array(
    34                         "id_auteur" => sql_quote($id_auteur)
     33                        "id_auteur" => $id_auteur
    3534                ), "id_organisation=" . sql_quote($id_organisation));
    3635               
  • _plugins_/contacts_et_organisations/contacts_pipelines.php

    r46820 r47038  
    1919}
    2020
    21 
    22 /**
    23  * Affichage des champs de formulaires correspondants
    24  * aux contacts et aux organisations sur le formulaire d'auteur
    25 **/
    26 function contacts_editer_contenu_objet($flux){
    27         if ($flux['args']['type']=='auteur'
    28         and $id_auteur = $flux['args']['contexte']['id_auteur']) {
    29 
    30                 $contact = recuperer_fond('formulaires/inc-contact', $flux['args']['contexte']);
    31 
    32                 $flux['data'] = preg_replace('%(<li class="editer_pgp(.*?)</li>)%is', '$1'."\n".$contact, $flux['data']);
    33         }
    34         return $flux;
    35 }
    36 
    37 
    38 /**
    39  * Chargement des valeurs pour le formulaire d'auteur
    40  * pour les champs de formulaire ajoutés à destination
    41  * des contacts et organisations
    42 **/
    43 function contacts_formulaire_charger($flux){
    44         if ($flux['args']['form'] == 'editer_auteur') {
    45                
    46                 // test des contacts
    47                 $res = sql_fetsel('*', "spip_contacts_liens LEFT JOIN spip_contacts USING(id_contact)", 'id_objet='.sql_quote($flux['data']['id_auteur'])." AND objet = 'auteur'");
    48 
    49                 // contact ou organisation, on insère dans l'environnement du formulaire
    50                 // les valeurs pour les champs de formulaires,
    51                 // mais avec les cle prefixees de 'co__' pour ne pas confondre
    52                 // avec d'éventuels champs extras sur la table auteurs
    53                 if ($res) {
    54                         unset($res['id_auteur']);
    55                         foreach ($res as $cle=>$valeur) {
    56                                 $flux['data']['co__'.$cle] = $valeur;
    57                         }
    58                 }
    59         }
    60         return $flux;
    61 }
    62 
    63 
    64 /**
    65  * Vérifications des valeurs soumises via le formulaire d'auteur
    66  * à destination des tables contacts et organisations
    67 **/
    68 function contacts_formulaire_verifier($flux){
    69         if ($flux['args']['form'] == 'editer_auteur') {
    70                 $id_auteur = $flux['args']['args'][0];
    71                
    72                 // test des contacts
    73                 if (sql_countsel('spip_contacts_liens', 'id_objet='.sql_quote($id_auteur)." AND objet = 'auteur'")) {
    74                         $objet = 'contact';
    75                 } else {
    76                         $objet = false;
    77                 }
    78                
    79                 if ($objet) {
    80                         $flux_extra = $flux;
    81                         $flux_extra['args']['form'] = 'editer_' . $objet;
    82                         $flux_extra['args']['prefixe_champs_extras'] = 'co__';
    83                         // gerer les erreurs sur les champs extras des tables
    84                         // on appelle le même pipeline, mais en indiquant un nom de formulaire different.
    85                         $erreurs = pipeline('formulaire_verifier', $flux_extra);
    86 
    87                         if ($erreurs) {
    88                                 if (isset($erreurs['message_erreur'])) {
    89                                         $flux['data']['message_erreur'] .= $erreurs['message_erreur'];
    90                                 }
    91                                 if (isset($erreurs['message_ok'])) {
    92                                         $flux['data']['message_ok'] .= $erreurs['message_ok'];
    93                                 }
    94                                 unset($erreurs['message_erreur'], $erreurs['message_ok']);
    95                                 $flux['data'] = array_merge($flux['data'], $erreurs);
    96                         }
    97                 }
    98 
    99         }
    100         return $flux;
    101 }
    102 
    103 
    104 /**
    105  * Enregistrement des valeurs soumises via le formulaire d'auteur
    106  * à destination des tables contacts et organisations
    107 **/
    108 function contacts_formulaire_traiter($flux){
    109         if ($flux['args']['form'] == 'editer_auteur') {
    110                 $id_auteur = intval($flux['data']['id_auteur']);
    111                
    112                 // test des contacts
    113         if ($res = sql_fetsel('*', "spip_contacts_liens LEFT JOIN spip_contacts USING(id_contact)", 'id_objet='.sql_quote($flux['data']['id_auteur'])." AND objet = 'auteur'")) {
    114                         $objet = 'contact';
    115                 } else {
    116                         $objet = false;
    117                 }
    118 
    119                 // contact ou organisation,
    120                 // on recupère les envois ayant 'co__$cle'
    121                 // et on modifie l'objet en question.
    122                 if ($objet) {
    123                         include_spip('inc/modifier');
    124                         unset($res['id_auteur']);
    125                         $c = array();
    126                         foreach ($res as $cle => $null) {
    127                                 if (isset($_REQUEST['co__'.$cle])) {
    128                                         $c[$cle] = _request('co__' . $cle);
    129                                 }
    130                         }
    131                         $_id_objet = id_table_objet($objet); // id_contact
    132                         $id_objet = $res[$_id_objet]; // 3
    133                         modifier_contenu($objet, $id_objet, array('invalideur' => "id='$_id_objet/$id_objet'"), $c);
    134                 }
    135         }
    136         return $flux;
    137 }
    13821
    13922
  • _plugins_/contacts_et_organisations/formulaires/lier_organisation.php

    r39633 r47038  
    44
    55
    6 function formulaires_lier_organisation_charger_dist($id_contact){
     6function formulaires_lier_organisation_charger_dist($id_contact, $redirect=''){
    77        $valeurs = array(
    88                'recherche_organisation' => '',
    9                 'id_contact' => intval($id_contact)
     9                'id_contact' => intval($id_contact),
     10                'retour' => $redirect
    1011        );
    1112        return $valeurs;
    1213}
    1314
    14 function formulaires_lier_organisation_verifier_dist($id_contact){
     15function formulaires_lier_organisation_verifier_dist($id_contact, $redirect=''){
    1516        $erreurs = array();
    1617        $erreurs[''] = ''; // toujours en erreur : ce sont des actions qui lient les contacts
     
    1819}
    1920
    20 function formulaires_lier_organisation_traiter_dist($id_contact){
     21function formulaires_lier_organisation_traiter_dist($id_contact, $redirect=''){
    2122        return array(
    2223                'message_ok' => '',
  • _plugins_/contacts_et_organisations/lang/contacts_fr.php

    r46821 r47038  
    2323        'contact_modifier' => "Modifier un contact",
    2424        'contact_editer' => 'Éditer ce contact',
     25        'contact_numero' => 'Contact numéro',
     26        'contact_voir' => 'Voir',
     27        'contact_associe_a_auteur_numero' => 'Associée à auteur numéro',
     28        'contact_associer_a_auteur' => 'Associer à un auteur',
     29
    2530       
    2631        'confirmer_supprimer_contact' => "&Ecirc;tes-vous s&ucirc;r de vouloir supprimer
     
    3540        // D
    3641        'definir_auteur_comme_contact' => "D&eacute;finir comme contact",
    37         'definir_auteur_comme_organisation' => "D&eacute;f. comme organisation",
     42        'definir_auteur_comme_organisation' => "D&eacute;finir comme organisation",
    3843        'delier_cet_auteur' => "Désassocier",
    3944       
  • _plugins_/contacts_et_organisations/plugin.xml

    r46819 r47038  
    44        <auteur>Matthieu Marcillaud - [Ma Graine->http://magraine.net]</auteur>
    55       
    6         <etat>dev</etat>
     6        <etat>test</etat>
    77       
    88        <description>
     
    2626        <prefix>contacts</prefix>
    2727       
    28         <version>1.5.1</version>
     28        <version>1.6.0</version>
    2929        <version_base>1.3.6</version_base>
    3030       
     
    4949        </pipeline>
    5050       
    51         <pipeline>
    52                 <nom>editer_contenu_objet</nom>
    53                 <inclure>contacts_pipelines.php</inclure>
    54         </pipeline>
    5551
    5652        <pipeline>
     
    6056        </pipeline>
    6157       
    62         <pipeline>
    63                 <nom>formulaire_charger</nom>
    64                 <inclure>contacts_pipelines.php</inclure>
    65         </pipeline>
    66         <pipeline>
    67                 <nom>formulaire_verifier</nom>
    68                 <inclure>contacts_pipelines.php</inclure>
    69         </pipeline>
    70         <pipeline>
    71                 <nom>formulaire_traiter</nom>
    72                 <inclure>contacts_pipelines.php</inclure>
    73         </pipeline>
    7458
    7559               
  • _plugins_/contacts_et_organisations/prive/boite/selecteur_contacts_organisations.html

    r46813 r47038  
    66<BOUCLE_est_un_contact(CONTACTS){id_auteur}>
    77                #SET{id_contact,#ID_CONTACT}
    8                 <a href="[(#URL_ECRIRE{contacts})]" title="<:contacts:info_tous_contacts:>">[(#CHEMIN{images/contact-48.png}|image_reduire{48}|inserer_attribut{class,contact_logo})]</a>
     8                <a href="[(#ID_CONTACT|generer_url_entite{contact})]" title="<:contacts:contact_voir:>">[(#CHEMIN{images/contact-48.png}|image_reduire{48}|inserer_attribut{class,contact_logo})]</a>
    99                <:contacts:est_un_contact:>
    1010
     
    1616        <BOUCLE_est_une_organisation(ORGANISATIONS){id_auteur}>
    1717                #SET{id_organisation,#ID_ORGANISATION}
    18                 <a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]" title="<:contacts:info_toutes_organisations:>">[(#CHEMIN{images/organisation-48.png}|image_reduire{48}|inserer_attribut{class,contact_logo})]</a>
     18                <a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]" title="<:contacts:organisation_voir:>">[(#CHEMIN{images/organisation-48.png}|image_reduire{48}|inserer_attribut{class,contact_logo})]</a>
    1919                <:contacts:est_une_organisation:>
    2020
  • _plugins_/contacts_et_organisations/prive/contenu/contact.html

    r41574 r47038  
    1 <BOUCLE_contact(CONTACTS){id_auteur}>
     1<BOUCLE_contact(CONTACTS){id_contact}>
    22[(#SET{contenu,
    33[<div class="champ contenu_civilite[ (#CIVILITE*|strlen|?{'',vide})]">
     
    3737
    3838
    39 [(#GET{contenu}|trim|oui)
    40         [(#VAL{e}|debut_cadre{#CHEMIN{images/contact-24.png},'',<:contacts:titre_contact:>})]
    41         <div class="presentation_contenu">
     39[(#ENV{cadre}|oui)
     40        [(#GET{contenu}|trim|oui)
     41                [(#VAL{e}|debut_cadre{#CHEMIN{images/contact-24.png},'',
     42                        <a href="[(#URL_ECRIRE{contact,id_contact=#ID_CONTACT})]"><:contacts:titre_contact:></a>
     43                })]
     44
     45                                       
     46                <div class="presentation_contenu">
     47                #GET{contenu}
     48                </div>
     49                [(#EVAL{true}|fin_cadre)]
     50        ]
     51]
     52[(#ENV{cadre}|non)
    4253        #GET{contenu}
    43         </div>
    44         [(#EVAL{true}|fin_cadre)]
    4554]
    4655
     56
    4757</BOUCLE_contact>
  • _plugins_/contacts_et_organisations/prive/contenu/organisation.html

    r46820 r47038  
    3939        [(#GET{contenu}|trim|oui)
    4040                [(#VAL{e}|debut_cadre{#CHEMIN{images/organisation-24.png},'',
    41                         <a href="[(#URL_ECRIRE{organisation,id_organisation=#ID_ORGANISATION}
    42                                 |parametre_url{redirect,#SELF})]"><:contacts:titre_organisation:></a>
     41                        <a href="[(#URL_ECRIRE{organisation,id_organisation=#ID_ORGANISATION})]"><:contacts:titre_organisation:></a>
    4342                })]
    4443
  • _plugins_/contacts_et_organisations/prive/exec/contacts.html

    r45867 r47038  
    88<div class="logo_navigation">
    99<img src="#CHEMIN{images/contact-128.png}" width="128" height="128" alt="Logo plugin" />
     10</div>
     11
     12
     13<div class="cadre cadre-infos">
     14[(#AUTORISER{creer, contact}|oui)
     15        [(#URL_ECRIRE{contact_edit}
     16                |parametre_url{new,oui}
     17                |parametre_url{retour,[(#ENV{retour,#SELF})]}
     18                |icone{<:contacts:contact_creer:>,#CHEMIN{images/contact-24.png},center,creer.gif})]
     19]
    1020</div>
    1121<!--/#navigation-->
  • _plugins_/contacts_et_organisations/prive/exec/organisation.html

    r46821 r47038  
    3838        #INCLURE{fond=prive/contenu/portfolio_document,objet=organisation,id_objet=#ID_ORGANISATION}
    3939
    40         #PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,organisation,id,#ID_PRODUIT},data,'<div class="nettoyeur"></div>'}}
     40        #PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,organisation,id,#ID_ORGANISATION},data,'<div class="nettoyeur"></div>'}}
    4141</div>
    4242
  • _plugins_/contacts_et_organisations/prive/liste/contacts.html

    r46793 r47038  
    2020        </thead>
    2121        <tbody>
    22         <BOUCLE_liste_contacts(CONTACTS contacts_liens){id_organisation?}{recherche ?}{auteurs.statut == #ENV{statut,.*}}{tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,20}}>
     22        <BOUCLE_liste_contacts(CONTACTS contacts_liens)
     23                {id_organisation?}{recherche ?}
     24                {auteurs.statut == #ENV{statut,.*}}
     25                {tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,20}}>
    2326                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    2427                        <td class="logo"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INCLURE{fond=logo/contact, id_contact}
    25                         <td class='pseudo'><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#MODELE{nom_auteur}</a></td>
    26                         <td class='nom'><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">[<span class="#EDIT{prenom}">(#PRENOM)</span> ]#NOM</a></td>
     28                        <td class='pseudo'><a href="[(#ID_CONTACT|generer_url_entite{contact})]">#MODELE{nom_auteur}</a></td>
     29                        <td class='nom'><a href="[(#ID_CONTACT|generer_url_entite{contact})]">[<span class="#EDIT{prenom}">(#PRENOM)</span> ]#NOM</a></td>
    2730                        <td class='organsiation'>#ORGANISATIONS</td>                   
    2831                        <td class='action'>[(#AUTORISER{modifier, contact, #ID_CONTACT}|?{
     
    3033                                        [(#CHEMIN{images/supprimer-16.png}|balise_img{<:contacts:supprimer_contact:>})],
    3134                                        [(#URL_ACTION_AUTEUR{supprimer_contact,[contact/(#ID_CONTACT)],[(#ENV{retour,#SELF})]})],
    32                                         ajax,<:contacts:confirmer_supprimer_organisation:>})],
     35                                        ajax,<:contacts:confirmer_supprimer_contact:>})],
    3336                                #ID_OBJET
    3437                        })]</td>
  • _plugins_/contacts_et_organisations/prive/liste/linked_contacts.html

    r46819 r47038  
    1 #CACHE{0}
    2 [(#REM) Tableau simplifié des contacts, affiché sur la page ?exec=auteurs_info, permettant de visualiser les contacts liés à une organisation ]
    31[(#SET{defaut_tri,#ARRAY{
    42        nom,1
     
    2624                <tr class="[(#_contacts:COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    2725                        <td class="logo"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INCLURE{fond=logo/contact, id_contact}</a>
    28                         <td class='nom'><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">[(#_contacts:PRENOM) ]#_contacts:NOM</a></td>
     26                        <td class='nom'><a href="[(#ID_CONTACT|generer_url_entite{contact})]">[(#_contacts:PRENOM) ]#_contacts:NOM</a></td>
    2927                        [(#ENV{court}|non)
    3028                        <td class='type #EDIT{type_liaison}'>[(#TYPE_LIAISON|sinon{-})]</td>
  • _plugins_/contacts_et_organisations/prive/liste/linked_organisations.html

    r46819 r47038  
    1 [(#REM) Tableau simplifié des organisations, affiché sur la page ?exec=auteurs_info, permettant de visualiser les organisations auxquelles sont liéss le contact ]
    21[(#SET{defaut_tri,#ARRAY{
    3         nom,1
     2        nom,1,
     3        type_liaison,1
    44}})
    5 ]<B_liste_orga>
     5]<B_organisations>
    66#ANCRE_PAGINATION
    77<div class="liste-elements organisations">
     
    1212                        <th class="logo"></th>
    1313                        <th class='nom'>[(#TRI{nom,<:info_nom:>,ajax})]</th>
     14                        [(#ENV{court}|non)
     15                        <th class="type">[(#TRI{type_liaison,<:contacts:label_type_liaison:>,ajax})]</th>
     16                        ]
    1417                        <th class='action'></th>
    1518                </tr>
    1619        </thead>
    1720        <tbody>
    18         <BOUCLE_liste_orga(ORGANISATIONS){id_contact?}{tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
    19                 <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    20                         <td class="logo"><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#LOGO_AUTEUR||sinon{[<img src="(#CHEMIN{images/organisation-24.png})" alt="Picto organisation" class="spip_logos" />]}|image_reduire{20,26})]</a></td>
    21                         <td class='nom'><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></td>
     21        <BOUCLE_organisations(ORGANISATIONS){id_contact?}{tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
     22                [(#REM) sur boucle pour le crayon ]
     23                <BOUCLE_liaisons(organisations_contacts){id_contact}{id_organisation}>
     24                <tr class="[(#_organisations:COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
     25                        <td class="logo"><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#LOGO_AUTEUR|sinon{[<img src="(#CHEMIN{images/organisation-24.png})" alt="Picto organisation" class="spip_logos" />]}|image_reduire{20,26})]</a>
     26                        <td class='nom'><a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]">#_organisations:NOM</a></td>
     27                        [(#ENV{court}|non)
     28                        <td class='type #EDIT{type_liaison}'>[(#TYPE_LIAISON|sinon{-})]</td>
     29                        ]
    2230                        <td class='action'>[(#AUTORISER{modifier, contact, #ID_CONTACT}|?{
    2331                                [(#BOUTON_ACTION{
     
    2836                        })]</td>
    2937                </tr>
    30         </BOUCLE_liste_orga>
     38                </BOUCLE_liaisons>
     39        </BOUCLE_organisations>
    3140        </tbody>
    3241</table>
    3342[<p class='pagination'>(#PAGINATION{prive})</p>]
    3443</div>
    35 </B_liste_orga>[
     44</B_organisations>[
    3645<div class="liste-elements organisations"><strong class="caption">(#ENV*{sinon,''})</strong></div>
    37 ]<//B_liste_orga>
     46]<//B_organisations>
Note: See TracChangeset for help on using the changeset viewer.