Changeset 46813 in spip-zone


Ignore:
Timestamp:
Apr 15, 2011, 6:36:25 PM (10 years ago)
Author:
marcimat@…
Message:

Repassage en dév.

  • rétablissement des logos sur les contacts
  • rétablissement des liens sur la recherche des contacts
  • organisations avec un formulaire d'édition spécifique (fonctionnel)
  • organisations avec un id_parent en plus (pour a terme gerer des parentées) (non fonctionnel)
  • permettre de typer le lien entre une organisation et un contact (type_liaison sur spip_organisations_contacts) avec affichage de ce lien sur les listes de contact d'une organisation et modification possible en crayons (pour peu qu'il soit activé sur les pages de l'espace privé)(le code du controleur n'est pas terrible, crayons par défaut ne permettant pas de modifier des tables de liaisons)

Reste à faire.

  • passer contacts en formulaire d'édition
  • reformuler l'interface depuis les auteurs pour rester simple
  • d'autres choses, mais pas le temps de les noter :) le train n'attend pas !
Location:
_plugins_/contacts_et_organisations
Files:
14 added
13 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/contacts_et_organisations/base/contacts.php

    r45889 r46813  
    3737        // titre
    3838        $interface['table_titre']['contacts'] = "CONCAT(nom,' ',prenom) AS titre, '' AS lang";
    39         $interface['table_titre']['organisations'] = "nom AS titre, '' AS lang, ";
     39        $interface['table_titre']['organisations'] = "nom AS titre, '' AS lang";
    4040       
    4141        return $interface;
     
    4747        $organisations = array(
    4848                "id_organisation"       => "bigint(21) NOT NULL auto_increment",
    49                 "id_auteur"                     => "bigint(21) NOT NULL",
     49                "id_auteur"                     => "bigint(21) NOT NULL default 0",
     50                "id_parent"                     => "bigint(21) NOT NULL default 0",
    5051                "nom"                           => "tinytext DEFAULT '' NOT NULL",
    5152        "statut_juridique"      => "tinytext DEFAULT '' NOT NULL", // forme juridique : SA, SARL, association, etc.
     
    5859        $organisations_key = array(
    5960                "PRIMARY KEY"           => "id_organisation",
    60                 "UNIQUE KEY id_auteur" => "id_auteur"
     61                "KEY id_auteur"    => "id_auteur"
    6162                );
    6263        $organisations_join = array(
     
    9899    //-- Table organisations_contacts -------------------------------------
    99100    $organisations_contacts = array(
    100         "id_organisation"     => "BIGINT(21) NOT NULL",
    101         "id_contact"    => "BIGINT(21) NOT NULL"
     101        "id_organisation" => "BIGINT(21) NOT NULL",
     102        "id_contact"      => "BIGINT(21) NOT NULL",
     103        "type_liaison"    => "tinytext NOT NULL DEFAULT ''",
    102104    );
    103105    $organisations_contacts_key = array(
    104         "PRIMARY KEY"   => "id_organisation, id_contact",
    105                 "KEY id_organisation"   => "id_organisation",
    106                 "KEY id_contact"        => "id_contact"
     106        "PRIMARY KEY"          => "id_organisation, id_contact",
     107                "KEY id_organisation"  => "id_organisation",
     108                "KEY id_contact"       => "id_contact"
    107109    );
    108110        $tables_auxiliaires['spip_organisations_contacts'] =
     
    112114    //-- Table organisations_contacts -------------------------------------
    113115    $contacts_liens = array(
    114         "id_contact"     => "BIGINT(21) NOT NULL",
    115         "id_objet"    => "BIGINT(21) NOT NULL",
    116         "objet"    => "VARCHAR(25) NOT NULL",
     116        "id_contact" => "BIGINT(21) NOT NULL",
     117        "id_objet"   => "BIGINT(21) NOT NULL",
     118        "objet"      => "VARCHAR(25) NOT NULL",
    117119    );
    118120    $contacts_liens_key = array(
    119         "PRIMARY KEY"   => "id_contact, id_objet, objet",
    120                 "KEY id_contact"        => "id_contact"
     121        "PRIMARY KEY"    => "id_contact, id_objet, objet",
     122                "KEY id_contact" => "id_contact"
    121123    );
    122124        $tables_auxiliaires['spip_contacts_liens'] =
  • _plugins_/contacts_et_organisations/base/contacts_upgrade.php

    r45612 r46813  
    124124                sql_alter("TABLE spip_contacts CHANGE descriptif descriptif TEXT DEFAULT '' NOT NULL");
    125125                ecrire_meta($nom_meta_base_version, $current_version="1.3.3");
    126                
     126        }
     127       
     128        // le champ id_auteur sur spip_organisations peut ne pas etre unique si une organisation
     129        // n'est pas liee a un auteur (id_auteur=0). Plus tard, il faudra certainement mettre une
     130        // table de relation spip_organisations_liens pour cela.
     131    if (version_compare($current_version,"1.3.4","<")){
     132                // pas de UNIQUE sur l'index auteur
     133                sql_alter("TABLE spip_organisations DROP INDEX id_auteur");
     134                sql_alter("TABLE spip_organisations CHANGE id_auteur id_auteur bigint(21) DEFAULT 0 NOT NULL");
     135                sql_alter("TABLE spip_organisations ADD INDEX (id_auteur)");
     136                ecrire_meta($nom_meta_base_version, $current_version="1.3.4");
     137        }
     138       
     139        // le champ id_parent sur spip_organisations pour definir des hierarchies d'organisations.
     140    if (version_compare($current_version,"1.3.5","<")){
     141                sql_alter("TABLE spip_organisations ADD COLUMN id_parent bigint(21) DEFAULT 0 NOT NULL");
     142                ecrire_meta($nom_meta_base_version, $current_version="1.3.5");
     143        }
     144       
     145        // le champ type_liaison sur spip_organisations_contacts pour definir des types de liaisons donc.
     146    if (version_compare($current_version,"1.3.6","<")){
     147                sql_alter("TABLE spip_organisations_contacts ADD COLUMN type_liaison tinytext NOT NULL DEFAULT ''");
     148                ecrire_meta($nom_meta_base_version, $current_version="1.3.6");
    127149        }
    128150}
  • _plugins_/contacts_et_organisations/contacts_pipelines.php

    r44672 r46813  
    155155function contacts_affiche_milieu($flux){
    156156        if ($flux['args']['exec'] == 'auteur_infos') {
    157                 $data  = recuperer_fond('prive/contenu/contact', array('id_auteur' => $flux['args']['id_auteur']));
    158                 $data .= recuperer_fond('prive/contenu/organisation', array('id_auteur' => $flux['args']['id_auteur']));
     157                $data  = recuperer_fond('prive/contenu/contact',
     158                        array('id_auteur' => $flux['args']['id_auteur'], 'cadre'=>'oui'));
     159                $data .= recuperer_fond('prive/contenu/organisation',
     160                        array('id_auteur' => $flux['args']['id_auteur'], 'cadre'=>'oui'));
    159161                $flux['data'] = $data . $flux['data'];
    160162                }
  • _plugins_/contacts_et_organisations/formulaires/lier_contact.html

    r41395 r46813  
    2020        <table class='spip liste'>
    2121                <tbody>
    22         <BOUCLE_resultats(CONTACTS){recherche #ENV{recherche_contact}}{par points}{pagination 10}>
     22        <BOUCLE_resultats(CONTACTS contacts_liens){recherche #ENV{recherche_contact}}{par points}{pagination 10}>
    2323                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    24                         <td class="logo"><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#LOGO_AUTEUR||sinon{[<img src="(#CHEMIN{images/contact-24.png})" alt="picto contact" class="spip_logos" />]}|image_reduire{20,26})]</a>
    25                         <td class="nom"><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#PRENOM) ]#NOM</a></td>
     24                        <td class="logo"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INCLURE{fond=logo/contact, id_contact}</a>
     25                        <td class="nom"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">[(#PRENOM) ]#NOM</a></td>
    2626                        <td class="action">
    2727                        [(#AUTORISER{modifier, contact, #ID_CONTACT}|?{
    2828                                [(#BOUTON_ACTION{
    2929                                        [(#CHEMIN{images/ajouter-16.png}|balise_img{<:contacts:lier_ce_contact:>})],
    30                                         [(#URL_ACTION_AUTEUR{lier_contact,[(#ID_CONTACT)/#ENV{id_organisation}],[(#ENV{retour,#SELF})]})],
    31                                         ajax})],
    32                                 #ID_AUTEUR
     30                                        [(#URL_ACTION_AUTEUR{lier_contact,[(#ID_CONTACT)/#ENV{id_organisation}],[(#ENV{retour,#SELF})]})]})],
     31                                #OBJET/#ID_OBJET
    3332                        })]
    3433                        </td>
  • _plugins_/contacts_et_organisations/formulaires/lier_contact.php

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

    r46051 r46813  
    1919        'chercher_statut' => "Statut",
    2020        'contacts' => 'Contacts',
     21        'contact_creer' => "Créer un contact",
     22        'contact_nouveau' => "Nouveau contact",
     23        'contact_modifier' => "Modifier un contact",
     24        'contact_editer' => 'Éditer ce contact',
     25       
    2126        'confirmer_supprimer_contact' => "&Ecirc;tes-vous s&ucirc;r de vouloir supprimer
    2227                les informations relatives &agrave; ce contact ?",
     
    2530        'confirmer_delier_organisation' => "&Ecirc;tes-vous s&ucirc;r de vouloir d&eacute;lier ce contact de cette organisation ?",
    2631        'confirmer_delier_contact' => "&Ecirc;tes-vous s&ucirc;r de vouloir d&eacute;lier cette organisation de ce contact ?",
     32
     33
    2734       
    2835        // D
     
    8390        'liste_contacts' => 'Liste les contacts',
    8491        'liste_organisations' => 'Liste les organisations',
     92        'label_type_liaison' => 'Liaison',
    8593       
    8694        'nb_contact' => '1 contact',
     
    8997        // O
    9098        'organisations' => 'Organisations',
     99        'organisation_nouveau' => 'Nouvelle organisation',
     100        'organisation_creer' => 'Créer une organisation',
     101        'organisation_modifier' => 'Modifier une organisation',
     102        'organisation_editer' => 'Éditer cette organisation',
     103        'organisation_numero' => 'Organisation numéro',
     104        'organisation_voir' => 'Voir',
    91105
    92106        // R
  • _plugins_/contacts_et_organisations/plugin.xml

    r46793 r46813  
    44        <auteur>Matthieu Marcillaud - [Ma Graine->http://magraine.net]</auteur>
    55       
    6         <etat>test</etat>
     6        <etat>dev</etat>
    77       
    88        <description>
     
    2626        <prefix>contacts</prefix>
    2727       
    28         <version>1.4.7</version>
    29 
    30         <version_base>1.3.3</version_base>
     28        <version>1.5.0</version>
     29        <version_base>1.3.6</version_base>
     30       
    3131        <install>base/contacts_upgrade.php</install>
    3232
     
    9393        <!-- pour charger les nouvelles balises #PSEUDO et #ORGANISATIONS -->
    9494        <fonctions>contacts_fonctions.php</fonctions>
     95
     96        <!-- generer_url (vivement la 3.0) -->
     97        <options>contacts_options.php</options>
     98
     99        <fonctions>contacts_fonctions.php</fonctions>
    95100       
    96101        <!-- des boutons pour un acces direct aux contacts / organsations (CRM) -->
  • _plugins_/contacts_et_organisations/prive/boite/selecteur_contacts_organisations.html

    r41395 r46813  
    99                <:contacts:est_un_contact:>
    1010
    11                 [(#INCLURE{fond=prive/liste/linked_organisations,id_contact,titre=<:contacts:info_organisation_appartenance:>,ajax})]
     11                [(#INCLURE{fond=prive/liste/linked_organisations,id_contact,
     12                        titre=<:contacts:info_organisation_appartenance:>,
     13                        court=oui,ajax})]
    1214</BOUCLE_est_un_contact>
    1315
    1416        <BOUCLE_est_une_organisation(ORGANISATIONS){id_auteur}>
    1517                #SET{id_organisation,#ID_ORGANISATION}
    16                 <a href="[(#URL_ECRIRE{organisations})]" 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:info_toutes_organisations:>">[(#CHEMIN{images/organisation-48.png}|image_reduire{48}|inserer_attribut{class,contact_logo})]</a>
    1719                <:contacts:est_une_organisation:>
    1820
    19                 [(#INCLURE{fond=prive/liste/linked_contacts,id_organisation,titre=<:contacts:info_contacts_organisation:>,ajax})]
     21                [(#INCLURE{fond=prive/liste/linked_contacts,id_organisation,
     22                        titre=<:contacts:info_contacts_organisation:>,
     23                        court=oui,ajax})]
    2024
    2125        </BOUCLE_est_une_organisation>
     
    6569                        [(#FORMULAIRE_LIER_CONTACT{#GET{id_organisation}})]
    6670                        </div>
    67 
    68                         <h3 class='h3'><:contacts:supprimer_organisation:></h3>
    69                         <div class='danger'>
    70                         <p class='explication'>
    71                                 <:contacts:explication_supprimer_organisation:>
    72                                 [(#BOUTON_ACTION{[(#CHEMIN{images/organisation-delete-24.png}
    73                                         |balise_img{<:contacts:supprimer_organisation:>}
    74                                         |concat{' ',<:contacts:supprimer_organisation:>})],
    75                                         [(#URL_ACTION_AUTEUR{supprimer_contact,organisation/#GET{id_organisation},#SELF})],
    76                                         ajax,<:contacts:confirmer_supprimer_organisation:>})]
    77                         </p>
    78                         </div>
    7971                ]
    8072        ]
  • _plugins_/contacts_et_organisations/prive/contenu/organisation.html

    r40041 r46813  
    3636})]
    3737
     38[(#ENV{cadre}|oui)
     39        [(#GET{contenu}|trim|oui)
     40                [(#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>
     43                })]
    3844
    39 [(#GET{contenu}|trim|oui)
    40         [(#VAL{e}|debut_cadre{#CHEMIN{images/organisation-24.png},'',<:contacts:titre_organisation:>})]
    41         <div class="presentation_contenu">
     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</BOUCLE_organisation>
  • _plugins_/contacts_et_organisations/prive/exec/organisations.html

    r45869 r46813  
    88<div class="logo_navigation">
    99<img src="#CHEMIN{images/organisation-128.png}" width="128" height="128" alt="Logo plugin" />
     10</div>
     11
     12<div class="cadre cadre-infos">
     13[(#AUTORISER{creer, organisation}|oui)
     14        [(#URL_ECRIRE{organisation_edit}
     15                |parametre_url{new,oui}
     16                |parametre_url{retour,[(#ENV{retour,#SELF})]}
     17                |icone{<:contacts:organisation_creer:>,#CHEMIN{images/organisation-24.png},center,creer.gif})]
     18]
    1019</div>
    1120<!--/#navigation-->
  • _plugins_/contacts_et_organisations/prive/liste/linked_contacts.html

    r46793 r46813  
    33[(#SET{defaut_tri,#ARRAY{
    44        nom,1
     5        type_liaison,1
    56}})
    67]<B_liste_orga>
     
    1314                        <th class="logo"></th>
    1415                        <th class="nom">[(#TRI{nom,<:contacts:label_nom:>,ajax})]</th>
     16                        [(#ENV{court}|non)
     17                        <th class="type">[(#TRI{type_liaison,<:contacts:label_type_liaison:>,ajax})]</th>
     18                        ]
    1519                        <th class='action'></th>
    1620                </tr>
     
    2125                        <td class="logo"><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INCLURE{fond=logo/contact, id_contact}</a>
    2226                        <td class='nom'><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">[(#PRENOM) ]#NOM</a></td>
     27                        [(#ENV{court}|non)
     28                                [(#REM) edition de crayon particuliere ]
     29                        <td class='type crayon contactliaison-[(#ID_ORGANISATION)]-[(#ID_CONTACT)] type_contactliaison'>[(#TYPE_LIAISON|sinon{-})]</td>
     30                        ]
    2331                        <td class='action'>[(#AUTORISER{modifier, contact, #ID_CONTACT}|?{
    2432                                [(#BOUTON_ACTION{
  • _plugins_/contacts_et_organisations/prive/liste/organisations.html

    r46650 r46813  
    2323                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    2424                        <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>
    25                         <td class='nom'><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">#NOM</a></td>
    26             <td class='nb_contacts'><a href="[(#ID_AUTEUR|generer_url_entite{auteur})]">[(#MODELE{nb_contacts}{id_organisation})]</a></td>
     25                        <td class='nom'><a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]">#NOM</a></td>
     26            <td class='nb_contacts'><a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]">[(#MODELE{nb_contacts}{id_organisation})]</a></td>
    2727                        <td class='action'>[(#AUTORISER{modifier, contact, #ID_CONTACT}|?{
    2828                                [(#BOUTON_ACTION{
  • _plugins_/contacts_et_organisations/prive/style_prive_plugin_contacts.html

    r46032 r46813  
    4444.recherche_contacts_et_organisations p.boutons.courts                   {float:right; width:18%; clear:none; margin-top:3em; background:none; border:none;}
    4545
     46.crayon-icones em.crayon-contactliaison {
     47    background:transparent url([(#CHEMIN{images/crayon20.png})]) no-repeat;
     48    height: 20px;
     49    width: 20px;
     50}
     51.crayon-changed em.crayon-contactliaison { display: none; }
     52em.crayon-contactliaison { display: none; }
     53em.crayon-contactliaison { cursor: pointer; border:0; }
Note: See TracChangeset for help on using the changeset viewer.