Changeset 70500 in spip-zone


Ignore:
Timestamp:
Mar 7, 2013, 3:28:41 PM (7 years ago)
Author:
tcharlss@…
Message:

Portage complet du plugin en SPIP 3.

Réorganisation des répertoires
==============================

  • prive/exec, prive/boite => prive/squelettes/contenu
  • prive/liste => prive/objets/liste
  • prive/infos : supprimé, aucun lien ne mène vers les fiches des coordonnées, donc a priori on n'a pas besoin des boite infos correspondantes.
  • images => prive/themes/spip/images

Images
======
nouvelles icônes & suppression des icônes redondantes (supprimer-16.png, edition-16.png)

Pipelines
=========

  • liste_objets_coordonnées : supprimée, une saisie "liste_objets" suffit.
  • affiche_milieu : remplacée par "afficher_fiche_objet".

formulaires d'édition / boutons d'action
=======================================
On utilise l'API d'édition de liens.

  • Une seule action mutualisée "dissocier_supprimer_coordonnee" à la place de "supprimer_[adresse/numero/email]"
  • Plus besoin des actions editer_[adresse/numero/email]

Boite dans la fiche d'un objet
==============================
Réécrite complète afin de l'ajaxer et de la rendre plus concise visuellement.
On affiche donc la boite *en complément* de la fiche d'un objet, et non plus dans la fiche elle même (cf. note pipelines).
Les liens d'ajout sont affichés en permanence, au lieu du survol.

Et je crois que c'est tout.

Location:
_plugins_/coordonnees/trunk
Files:
20 added
29 deleted
20 edited
5 copied
2 moved

Legend:

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

    r70425 r70500  
    11<?php
    22/**
    3  * Plugin Coordonnees pour Spip 2.1
     3 * Plugin Coordonnees
    44 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
    55 */
    66
    7 function coordonnees_declarer_tables_interfaces($interface){
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    88
    9         $interface['table_des_tables']['adresses'] = 'adresses';
    10         $interface['table_des_tables']['numeros'] = 'numeros';
    11         $interface['table_des_tables']['emails'] = 'emails';
    129
     10/**
     11 * Déclaration des alias de tables et filtres automatiques de champs
     12 */
     13function coordonnees_declarer_tables_interfaces($interfaces) {
     14
     15        $interfaces['table_des_tables']['adresses'] = 'adresses';
     16        $interfaces['table_des_tables']['numeros'] = 'numeros';
     17        $interfaces['table_des_tables']['emails'] = 'emails';
     18
     19        $interface['tables_jointures']['spip_adresses'][] = 'adresses_liens';
    1320        $interface['tables_jointures']['spip_auteurs'][] = 'adresses_liens';
    14         $interface['tables_jointures']['spip_adresses'][] = 'adresses_liens';
     21        $interface['tables_jointures']['spip_numeros'][] = 'numeros_liens';
     22        $interface['tables_jointures']['spip_auteurs'][] = 'numeros_liens';
     23        $interface['tables_jointures']['spip_emails'][] = 'emails_liens';
     24        $interface['tables_jointures']['spip_auteurs'][] = 'emails_liens';
    1525
    16         $interface['tables_jointures']['spip_auteurs'][] = 'numeros_liens';
    17         $interface['tables_jointures']['spip_numeros'][] = 'numeros_liens';
     26        $interfaces['table_des_traitements']['VILLE'][] = _TRAITEMENT_TYPO;
    1827
    19         $interface['tables_jointures']['spip_auteurs'][] = 'emails_liens';
    20         $interface['tables_jointures']['spip_emails'][] = 'emails_liens';
     28        return $interfaces;
     29}
    2130
    22         $interface['table_des_traitements']['VILLE'][] = _TRAITEMENT_TYPO;
    23 
    24         return $interface;
    25 }
    2631
    2732/**
     
    3035function coordonnees_declarer_tables_objets_sql($tables) {
    3136
     37        /* ADRESSES */
    3238        $tables['spip_adresses'] = array(
    33                 'type' => 'adresse',
    34                 'principale' => "oui",
     39                'type'                          => 'adresse',
     40                'principale'                    => "oui",
    3541                'field'=> array(
    36                         "id_adresse"         => "bigint(21) NOT NULL",
    37                         "titre"              => "varchar(255) NOT NULL DEFAULT ''", // perso, pro, vacance...
    38                         "voie"               => "tinytext NOT NULL", // p. ex. 21 rue de cotte
    39                         "complement"         => "tinytext NOT NULL", // p. ex. 3e etage
    40                         "boite_postale"      => "varchar(40) NOT NULL DEFAULT ''",
    41                         "code_postal"        => "varchar(40) NOT NULL DEFAULT ''",
    42                         "ville"              => "tinytext NOT NULL",
    43                         "region"             => "varchar(40) NOT NULL DEFAULT ''",
    44                         "pays"               => "varchar(3) NOT NULL DEFAULT ''",
    45                         "maj"                => "TIMESTAMP"
     42                        "id_adresse"            => "bigint(21) NOT NULL",
     43                        "titre"                 => "varchar(255) NOT NULL DEFAULT ''", // perso, pro, vacance...
     44                        "voie"                  => "tinytext NOT NULL", // 2 rue de la rue
     45                        "complement"            => "tinytext NOT NULL", // 3e etage
     46                        "boite_postale"         => "varchar(40) NOT NULL DEFAULT ''",
     47                        "code_postal"           => "varchar(40) NOT NULL DEFAULT ''",
     48                        "ville"                 => "tinytext NOT NULL",
     49                        "region"                => "varchar(40) NOT NULL DEFAULT ''",
     50                        "pays"                  => "varchar(3) NOT NULL DEFAULT ''",
     51                        "maj"                   => "TIMESTAMP"
    4652                ),
    4753                'key' => array(
    48                         "PRIMARY KEY"        => "id_adresse",
     54                        "PRIMARY KEY"           => "id_adresse",
    4955                        "KEY iso3166"        => "pays",
    5056                        "KEY zip"            => "region, code_postal"
    5157                ),
    5258                'titre' => "titre AS titre, '' AS lang",
    53                  #'date' => "",
    54                 'champs_editables'  => array('titre', 'voie', 'complement', 'boite_postale', 'code_postal', 'ville', 'region', 'pays'),
    55                 'champs_versionnes' => array(),
    56                 'rechercher_champs' => array(),
    57                 'tables_jointures'  => array('spip_adresses_liens'),
    58                 'texte_objets' => "coordonnees:adresses"
    59 
    60 
     59                'champs_editables'              => array('titre', 'voie', 'complement', 'boite_postale', 'code_postal', 'ville', 'region', 'pays'),
     60                'champs_versionnes'             => array(),
     61                'rechercher_champs'             => array(),
     62                'tables_jointures'              => array('spip_adresses_liens')
    6163        );
    6264
     65        /* NUMEROS DE TELEPHONE */
    6366        $tables['spip_numeros'] = array(
    64                 'type' => 'numero',
    65                 'principale' => "oui",
     67                'type'                          => 'numero',
     68                'principale'                    => "oui",
    6669                'field'=> array(
    67                         "id_numero"          => "bigint(21) NOT NULL",
    68                         "titre"              => "varchar(255) NOT NULL DEFAULT ''", // peut etre domicile, bureau, portable
    69                         "numero"             => "varchar(255) NOT NULL DEFAULT ''",
    70                         "maj"                => "TIMESTAMP"
     70                        "id_numero"             => "bigint(21) NOT NULL",
     71                        "titre"                 => "varchar(255) NOT NULL DEFAULT ''", // domicile, bureau, etc.
     72                        "numero"                => "varchar(255) NOT NULL DEFAULT ''",
     73                        "maj"                   => "TIMESTAMP"
    7174                ),
    7275                'key' => array(
    73                         "PRIMARY KEY"        => "id_numero",
    74                   "KEY numero"         => "numero" // on ne met pas unique pour le cas ou 2 contacts partagent le meme numero generique
     76                        "PRIMARY KEY"           => "id_numero",
     77                        "KEY numero"            => "numero" // on ne met pas unique pour le cas ou 2 contacts partagent le meme numero generique
    7578                ),
    7679                'titre' => "titre AS titre, '' AS lang",
    77                  #'date' => "",
    78                 'champs_editables'  => array( 'titre', 'numero'),
    79                 'champs_versionnes' => array(),
    80                 'rechercher_champs' => array(),
    81                 'tables_jointures'  => array('spip_numeros_liens'),
    82                 'texte_objets' => "coordonnees:numeros"
    83 
    84 
     80                'champs_editables'              => array( 'titre', 'numero' ),
     81                'champs_versionnes'             => array(),
     82                'rechercher_champs'             => array(),
     83                'tables_jointures'              => array('spip_numeros_liens')
    8584        );
    8685
     86        /* EMAILS */
    8787        $tables['spip_emails'] = array(
    88                 'type' => 'email',
    89                 'principale' => "oui",
     88                'type'                          => 'email',
     89                'principale'                    => "oui",
    9090                'field'=> array(
    91                         "id_email"           => "bigint(21) NOT NULL",
    92                         "titre"              => "varchar(255) NOT NULL DEFAULT ''", // peut etre perso, boulot, etc.
    93                         "email"              => "varchar(255) NOT NULL DEFAULT ''",
    94                         "maj"                => "TIMESTAMP"
     91                        "id_email"              => "bigint(21) NOT NULL",
     92                        "titre"                 => "varchar(255) NOT NULL DEFAULT ''", // perso, boulot, etc.
     93                        "email"                 => "varchar(255) NOT NULL DEFAULT ''",
     94                        "maj"                   => "TIMESTAMP"
    9595                ),
    9696                'key' => array(
    97                         "PRIMARY KEY"        => "id_email",
    98                 "KEY email"              => "email" // on ne met pas unique pour le cas ou 2 contacts partagent le meme mail generique
     97                        "PRIMARY KEY"           => "id_email",
     98                        "KEY email"             => "email" // on ne met pas unique pour le cas ou 2 contacts partagent le meme mail generique
    9999                ),
    100100                'titre' => "titre AS titre, '' AS lang",
    101                  #'date' => "",
    102                 'champs_editables'  => array( 'titre', 'email'),
    103                 'champs_versionnes' => array(),
    104                 'rechercher_champs' => array(),
    105                 'tables_jointures'  => array('spip_emails_liens'),
    106                 'texte_objets' => "coordonnees:emails"
    107 
    108 
     101                'champs_editables'              => array( 'titre', 'email' ),
     102                'champs_versionnes'             => array(),
     103                'rechercher_champs'             => array(),
     104                'tables_jointures'              => array('spip_emails_liens')
    109105        );
    110106
     
    120116        $tables['spip_adresses_liens'] = array(
    121117                'field' => array(
    122                         "id_adresse"         => "bigint(21) DEFAULT '0' NOT NULL",
    123                         "id_objet"           => "bigint(21) DEFAULT '0' NOT NULL",
    124                         "objet"              => "VARCHAR(25) DEFAULT '' NOT NULL", // peut etre un compte ou un contact
    125                         "type"               => "VARCHAR(25) DEFAULT '' NOT NULL",
    126                         "vu"                 => "VARCHAR(6) DEFAULT 'non' NOT NULL"
     118                        "id_adresse"    => "bigint(21) DEFAULT '0' NOT NULL",
     119                        "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
     120                        "objet"         => "VARCHAR(25) DEFAULT '' NOT NULL",
     121                        "type"          => "VARCHAR(25) DEFAULT '' NOT NULL",
     122                        "vu"            => "VARCHAR(6) DEFAULT 'non' NOT NULL"
    127123                ),
    128124                'key' => array(
    129                         "PRIMARY KEY"        => "id_adresse,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
    130                         "KEY id_adresse"     => "id_adresse"
     125                        "PRIMARY KEY"   => "id_adresse,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
     126                        "KEY id_adresse"=> "id_adresse"
    131127                )
    132128        );
    133129        $tables['spip_numeros_liens'] = array(
    134130                'field' => array(
    135                         "id_numero"          => "bigint(21) DEFAULT '0' NOT NULL",
    136                         "id_objet"           => "bigint(21) DEFAULT '0' NOT NULL",
    137                         "objet"              => "VARCHAR(25) DEFAULT '' NOT NULL", // peut etre un contact ou un compte
    138                         "type"               => "VARCHAR(25) DEFAULT '' NOT NULL",
    139                         "vu"                 => "VARCHAR(6) DEFAULT 'non' NOT NULL"
     131                        "id_numero"     => "bigint(21) DEFAULT '0' NOT NULL",
     132                        "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
     133                        "objet"         => "VARCHAR(25) DEFAULT '' NOT NULL",
     134                        "type"          => "VARCHAR(25) DEFAULT '' NOT NULL",
     135                        "vu"            => "VARCHAR(6) DEFAULT 'non' NOT NULL"
    140136                ),
    141137                'key' => array(
    142                         "PRIMARY KEY"        => "id_numero,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
    143                         "KEY id_numero"      => "id_numero"
     138                        "PRIMARY KEY"   => "id_numero,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
     139                        "KEY id_numero" => "id_numero"
    144140                )
    145141        );
    146142        $tables['spip_emails_liens'] = array(
    147143                'field' => array(
    148                         "id_email"           => "bigint(21) DEFAULT '0' NOT NULL",
    149                         "id_objet"           => "bigint(21) DEFAULT '0' NOT NULL",
    150                         "objet"              => "VARCHAR(25) DEFAULT '' NOT NULL", // peut etre un contact ou un compte
    151                         "type"               => "VARCHAR(25) DEFAULT '' NOT NULL",
    152                         "vu"                 => "VARCHAR(6) DEFAULT 'non' NOT NULL"
     144                        "id_email"      => "bigint(21) DEFAULT '0' NOT NULL",
     145                        "id_objet"      => "bigint(21) DEFAULT '0' NOT NULL",
     146                        "objet"         => "VARCHAR(25) DEFAULT '' NOT NULL",
     147                        "type"          => "VARCHAR(25) DEFAULT '' NOT NULL",
     148                        "vu"            => "VARCHAR(6) DEFAULT 'non' NOT NULL"
    153149                ),
    154150                'key' => array(
    155                         "PRIMARY KEY"        => "id_email,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
    156                         "KEY id_email"       => "id_email"
     151                        "PRIMARY KEY"   => "id_email,id_objet,objet,type", // on rajoute le type car on en rajoute un par liaison et qu'il peut y en avoir plusieurs
     152                        "KEY id_email"  => "id_email"
    157153                )
    158154        );
  • _plugins_/coordonnees/trunk/coordonnees_administrations.php

    r69459 r70500  
    11<?php
    22/**
    3  * Plugin Coordonnees pour Spip 3
     3 * Plugin Coordonnees
    44 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
    55 */
    66
    7 function coordonnees_upgrade($nom_meta_base_version, $version_cible){
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    88
    99
     10/**
     11 * Fonction d'installation du plugin et de mise à jour.
     12**/
     13function coordonnees_upgrade($nom_meta_base_version, $version_cible) {
    1014        $maj = array();
    1115        $maj['create'] = array(
     
    1620                array('maj_tables', array('spip_emails')),
    1721                array('maj_tables', array('spip_emails_liens')),
    18                 array('ecrire_meta', 'coordonnees', serialize(array('objets'=>array('auteur'))))
     22                array('ecrire_meta', 'coordonnees', serialize(array('objets'=>array('spip_auteurs'))))
    1923        );
    2024        $maj['1.1'] = array(
     
    3741        );
    3842
    39         // On avait supprimer les types, mais ils reviennent en force mais dans les LIENS
     43        // On avait supprime les types, mais ils reviennent en force mais dans les LIENS
    4044        $maj['1.4'] = array(
    4145                        array('sql_alter', 'TABLE spip_adresses_liens ADD type varchar(25) not null default ""'),
     
    5256        // mettre les auteurs par defaut comme objet «coordonnable»
    5357        $maj['1.5'] = array(
    54                 array('ecrire_meta','coordonnees', serialize(array('objets'=>array('auteur'))))
     58                array('ecrire_meta','coordonnees', serialize(array('objets'=>array('auteur')))),
    5559        );
    5660
     
    7276        );
    7377
    74   // Definition des tables principales par declarer_tables_objets_sql au lieu de declarer_tables_principales
     78        // Definition des tables principales par declarer_tables_objets_sql au lieu de declarer_tables_principales
    7579        $maj['1.8'] = array(
    7680                array('maj_tables', array('spip_adresses', 'spip_adresses_liens', 'spip_numeros', 'spip_numeros_liens', 'spip_emails', 'spip_emails_liens')),
     
    8185        );
    8286
     87        // Metas : conversion des objets «coordonnables» : on utilise les noms des tables (auteur -> spip_auteurs)
     88        $maj['1.8.2']= array(
     89                array('coordonnees_upgrade_1_8_2'),
     90        );
    8391
    8492        include_spip('base/upgrade');
     
    8795
    8896
    89 function coordonnees_upgrade_1_3()
    90 {
    91                         // On parcourt les adresses pour remplir le code du pays
    92                 $adresses = sql_allfetsel('id_adresse,pays', 'spip_adresses');
    93                 if ($adresses and is_array($adresses)){
    94                         foreach ($adresses as $adresse){
    95                                 $ok &= sql_update(
    96                                         'spip_adresses',
    97                                         array('pays_code' => '(SELECT code FROM spip_pays WHERE id_pays='.intval($adresse['pays']).')'),
    98                                         'id_adresse='.intval($adresse['id_adresse'])
    99                                 );
    100                         }
    101                 }
    102 }
    103 
    104 
     97/**
     98 * Fonction de désinstallation du plugin.
     99**/
    105100function coordonnees_vider_tables($nom_meta_base_version) {
    106101
     
    116111}
    117112
     113
     114/**
     115 * Fonction mise a jour vers 1.3
     116**/
     117function coordonnees_upgrade_1_3() {
     118        // On parcourt les adresses pour remplir le code du pays
     119        $adresses = sql_allfetsel('id_adresse,pays', 'spip_adresses');
     120        if ($adresses and is_array($adresses)){
     121                foreach ($adresses as $adresse){
     122                        $ok &= sql_update(
     123                                'spip_adresses',
     124                                array('pays_code' => '(SELECT code FROM spip_pays WHERE id_pays='.intval($adresse['pays']).')'),
     125                                'id_adresse='.intval($adresse['id_adresse'])
     126                        );
     127                }
     128        }
     129}
     130
     131
     132/**
     133 * Fonction mise a jour vers 1.8.2
     134 * Metas : conversion des objets «coordonnables» : on utilise les noms des tables (auteur -> spip_auteurs)
     135**/
     136function coordonnees_upgrade_1_8_2() {
     137        include_spip('inc/config');
     138        if ( $objets = lire_config('coordonnees/objets', null, true) AND is_array($objets) AND count($objets) > 0 ) {
     139                foreach ($objets as $objet) $objets_sql[] = table_objet_sql($objet);
     140                effacer_config('coordonnees/objets');
     141                ecrire_config('coordonnees/objets', $objets_sql);
     142        }
     143}
     144
    118145?>
  • _plugins_/coordonnees/trunk/coordonnees_autorisations.php

    r45486 r70500  
    11<?php
    22/**
    3  * Plugin Coordonnees 
    4  * Licence GPL (c) 2010 Matthieu Marcillaud
    5 **/
     3 * Plugin Coordonnees
     4 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
     5 */
    66
    7 function coordonnees_autoriser(){}
     7if (!defined('_ECRIRE_INC_VERSION')) return;
     8
     9// declaration vide pour ce pipeline.
     10function cerise_coordonnees_autoriser(){}
     11
     12
     13// Objet adresses
     14// creer
     15function autoriser_adresse_creer_dist($faire, $type, $id, $qui, $opt) {
     16        return in_array($qui['statut'], array('0minirezo', '1comite'));
     17}
     18
     19// voir les fiches completes
     20function autoriser_adresse_voir_dist($faire, $type, $id, $qui, $opt) {
     21        return true;
     22}
     23
     24// modifier
     25function autoriser_adresse_modifier_dist($faire, $type, $id, $qui, $opt) {
     26        return in_array($qui['statut'], array('0minirezo', '1comite'));
     27}
     28
     29// supprimer
     30function autoriser_adresse_supprimer_dist($faire, $type, $id, $qui, $opt) {
     31        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     32}
     33
     34// associer (lier / delier)
     35function autoriser_associeradresses_dist($faire, $type, $id, $qui, $opt) {
     36        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     37}
     38
     39
     40// Objet numeros
     41// creer
     42function autoriser_numero_creer_dist($faire, $type, $id, $qui, $opt) {
     43        return in_array($qui['statut'], array('0minirezo', '1comite'));
     44}
     45
     46// voir les fiches completes
     47function autoriser_numero_voir_dist($faire, $type, $id, $qui, $opt) {
     48        return true;
     49}
     50
     51// modifier
     52function autoriser_numero_modifier_dist($faire, $type, $id, $qui, $opt) {
     53        return in_array($qui['statut'], array('0minirezo', '1comite'));
     54}
     55
     56// supprimer
     57function autoriser_numero_supprimer_dist($faire, $type, $id, $qui, $opt) {
     58        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     59}
     60
     61// associer (lier / delier)
     62function autoriser_associernumeros_dist($faire, $type, $id, $qui, $opt) {
     63        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     64}
     65
     66
     67
     68// Objet emails
     69// creer
     70function autoriser_email_creer_dist($faire, $type, $id, $qui, $opt) {
     71        return in_array($qui['statut'], array('0minirezo', '1comite'));
     72}
     73
     74// voir les fiches completes
     75function autoriser_email_voir_dist($faire, $type, $id, $qui, $opt) {
     76        return true;
     77}
     78
     79// modifier
     80function autoriser_email_modifier_dist($faire, $type, $id, $qui, $opt) {
     81        return in_array($qui['statut'], array('0minirezo', '1comite'));
     82}
     83
     84// supprimer
     85function autoriser_email_supprimer_dist($faire, $type, $id, $qui, $opt) {
     86        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     87}
     88
     89
     90// associer (lier / delier)
     91function autoriser_associeremails_dist($faire, $type, $id, $qui, $opt) {
     92        return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
     93}
     94
     95
    896
    997?>
  • _plugins_/coordonnees/trunk/coordonnees_fonctions.php

    r66558 r70500  
    55**/
    66
     7if (!defined('_ECRIRE_INC_VERSION')) return;
     8
     9/*
     10 * Fonction privee mutualisee utilisee par les filtres logo_type_xx
     11 * Renvoit soit une balise <img> si elle est trouvee, soit une balise <abbr>
     12 *
     13 * @param string $id    adr, tel, email, mel
     14 * @param string $val   le type de coordonnee (dom, home, work etc.)
     15 * @return string       balise <img> ou <abbr>   
     16**/
    717function logo_type_($id='', $val='') {
     18        include_spip('inc/utils');
    819        global $formats_logos;
    920        $type = strtolower($val);
    1021        $lang = _T( ($id ? ('coordonnees:type_'. $id) : 'perso:type' )  . '_'.$type ); // les types libres sont traites par le fichier de langue perso
    1122        foreach ($formats_logos as $format) { // inspiration source: ecrire/inc/chercher_logo.php
    12                 $fichier = 'images/type'. ($id ? ('_' . $id) : '') . ($type ? ('_' . $type) : '') . '.' . $format;
    13                 if ( $chemin = find_in_path($fichier) )
     23                $fichier = 'type'. ($id ? ('_' . $id) : '') . ($type ? ('_' . $type) : '') . '.' . $format;
     24                if ( $chemin = chemin_image($fichier) )
    1425                        $im = $chemin;
    1526        }
     
    2233}
    2334
    24 // RFC2426/CCITT.X520 : dom home intl parcel postal pref work
    25 function logo_type_adr($type_adresse) {
     35/*
     36 * filtre renvoyant une balise <img> ou <abbr> d'apres le type d'une adresse
     37 *
     38 * @param string $type_adresse    RFC2426/CCITT.X520 : dom home intl parcel postal pref work
     39 * @return string                 balise <img> ou <abbr>
     40**/
     41function filtre_logo_type_adr($type_adresse) {
    2642        return logo_type_('adr', $type_adresse);
    2743}
    2844
    29 // RFC2426/CCITT.X500 : bbs car cell fax home isdn modem msg pager pcs pref video voice work
    30 // RFC6350/CCITT.X520.1988 : cell fax pager text textphone video voice x-... (iana-token)
    31 // + : dsl
    32 function logo_type_tel($type_numero) {
     45/*
     46 * filtre renvoyant une balise <img> ou <abbr> d'apres le type d'un numero de tel
     47 *
     48 * @param string $type_tel    RFC2426/CCITT.X500 : bbs car cell fax home isdn modem msg pager pcs pref video voice work
     49 *                            RFC6350/CCITT.X520.1988 : cell fax pager text textphone video voice x-... (iana-token)
     50 *                            + : dsl
     51 * @return string             balise <img> ou <abbr>
     52**/
     53function filtre_logo_type_tel($type_numero) {
    3354        return logo_type_('tel', $type_numero);
    3455}
    3556
    36 // RFC2426/IANA : internet pref x400
    37 // RFC6350/CCITT.X520+RFC5322 : home intl work
    38 function logo_type_email($type_email) {
     57/*
     58 * filtre renvoyant une balise <img> ou <abbr> d'apres le type d'un email
     59 *
     60 * @param string $type_adresse    RFC2426/IANA : internet pref x400
     61 *                                RFC6350/CCITT.X520+RFC5322 : home intl work
     62 * @return string                 balise <img> ou <abbr>
     63**/
     64function filtre_logo_type_email($type_email) {
    3965        return logo_type_('email', $type_email);
    4066}
    4167
    42 // RFC6350/CCITT.X520+RFC5322 readapte : perso pro
    43 function logo_type_mel($type_email) {
     68/*
     69 * filtre renvoyant une balise <img> ou <abbr> d'apres le type d'un mel (email)
     70 *
     71 * @param string $type_adresse    RFC6350/CCITT.X520+RFC5322 readapte : perso pro
     72 * @return string                 balise <img> ou <abbr>
     73**/
     74function filtre_logo_type_mel($type_email) {
    4475        return logo_type_('mel', $type_email);
    4576}
  • _plugins_/coordonnees/trunk/coordonnees_pipelines.php

    r70166 r70500  
    11<?php
    2 
    32/**
    43 * Plugin Coordonnees
    5  * Licence GPL (c) 2010 Matthieu Marcillaud
    6 **/
     4 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
     5 */
    76
    8 /**
    9  * Informations sur les objets où peut s'appliquer les coordonnees
    10  *
    11  * @param String $quoi info que l'on veut recuperer (sinon tout le tableau)
    12  * @return Array Liste d'objet et quelques définitions (titre, url_voir)
    13 **/
    14 function liste_objets_coordonnees($quoi = '') {
    15 
    16         $liste = lister_tables_objets_sql(); // tableau de donnees de TOUTES les tables...
    17         unset($liste['spip_adresses'], $liste['spip_emails'], $liste['spip_numeros'], $liste['spip_pays'], $liste['spip_documents'], $liste['spip_messages']); // ...donc on retire ceux du plugin coordonnees ! ...ainsi que ceux de : pays requis (revoir sa declaration pour ne pas avoir a faire ceci), documents (comme pays n'a pas de page de vue) et messages (ca fait etrange, tout comme les mots-cles et groupes de mots-cles...)
    18         foreach ($liste as $tab=>$inf) {
    19                 if (!$liste[$tab]['principale'] OR !$liste[$tab]['editable']) {
    20                         // on ne prendra pas en compte les objets non editables...
    21                         // (ceci vire donc spip_forum spip_petitions spip_signatures spip_syndic_articles spip_depots spip_plugins spip_paquets etc.)
    22                         unset($liste[$tab]);
    23                 } else {
    24                         $type = $liste[$tab]['type'];
    25                         $liste[$type] = $liste[$tab]; // le plugin-ci utilise comme cle le type d'objet alors que le tableau renvoye a comme cle le nom de table, donc on recree l'entree...
    26                         unset($liste[$tab]); // ...et on supprime l'ancienne entree histoire de ne pas allourdir le tableau en memoire
    27                         $liste[$type]['titre'] = _T($liste[$type]['texte_objet']); // on rajoute le titre traduit pour etre affiche par la configuration (je ne sais pas utiliser directement "texte_objet")
    28                 }
    29         }
    30 
    31         if (!$quoi) {
    32                 return $liste;
    33         }
    34 
    35         $listeq = array();
    36         foreach ($liste as $c=>$v) {
    37                 $listeq[$c] = $v[$quoi];
    38         }
    39         return $listeq;
    40 }
    41 
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    428
    439
    4410/**
    45  * Ajout des informations de coordonnées (adresses, mails, numéros)
    46  * sur la page de visualisation d'un objet
     11 * Ajout des coordonnées (adresses, mails, numéros)
     12 * sur la page de visualisation des objets associes
    4713**/
    48 function coordonnees_affiche_milieu($flux) {
     14function coordonnees_afficher_fiche_objet($flux) {
     15        $texte = "";
     16        $e = trouver_objet_exec($flux['args']['exec']);
     17        $type = $flux['args']['type'];
    4918
    50         $exec = isset($flux['args']['exec']) ? $flux['args']['exec'] : _request('exec');
    51 
    52 
    53         $objet_exec = trouver_objet_exec($exec);
    54 
    55         // pas en édition
    56         if ($objet_exec['edition']) {
    57                 return $flux;
     19        if (!$e['edition'] AND in_array(table_objet_sql($type),lire_config('coordonnees/objets'))) {
     20                $texte .= recuperer_fond('prive/squelettes/contenu/coordonnees_fiche_objet', array(
     21                        'objet' => $type,
     22                        'id_objet' => intval($flux['args']['id']),
     23                        ),
     24                        array('ajax'=>'coordonnees')
     25                );
    5826        }
    5927
    60         // recuperation de l'id
    61         $_id = $objet_exec['id_table_objet'];
    62         // type d'objet
    63         $type = $objet_exec['type'];
    64         // liste des exec de visualisation pour les objets declares
    65         $liste = liste_objets_coordonnees('url_voir');
    66 
    67         if (isset($type) and isset($liste[$type])){
    68                 // c'est un exec que l'on peut afficher
    69                 // verifions qu'il est coche dans la conf
    70                 $conf = unserialize($GLOBALS['meta']['coordonnees']);
    71                 if (is_array($conf['objets']) AND in_array($type, $conf['objets'])) {
    72                         // on doit l'afficher
    73                         // seulement si on a un identifiant
    74                         if (!isset($_id)) {
    75                                 $_id = id_table_objet($type);
    76                         }
    77 
    78                         if (isset($flux['args'][$_id]) and $id = $flux['args'][$_id]) {
    79                                 include_spip('inc/presentation');
    80                                 $contexte = array(
    81                                         'objet' => $type,
    82                                         'id_objet' => $id,
    83                                         'id_adresse' => _request('id_adresse'),
    84                                         'id_numero' => _request('id_numero'),
    85                                         'id_email' => _request('id_email')
    86 
    87                                 );
    88                                 $flux['data'] .= recuperer_fond('prive/boite/coordonnees', $contexte, array('ajax'=>true));
    89                         }
    90                 }
     28        if ($texte) {
     29                if ($p=strpos($flux['data'],"<!--afficher_fiche_objet-->"))
     30                        $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
     31                else
     32                        $flux['data'] .= $texte;
    9133        }
    9234
    9335        return $flux;
    94 
    9536}
    9637
     
    10849}
    10950
     51
     52/**
     53 * Optimiser la base de donnees en supprimant les liens orphelins
     54 * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
     55 *
     56 * @param int $n
     57 * @return int
     58 */
     59function coordonnees_optimiser_base_disparus($flux){
     60        include_spip('action/editer_liens');
     61        $flux['data'] += objet_optimiser_liens(array('adresse'=>'*', 'telephone'=>'*', 'email'=>'*'),'*');
     62        return $flux;
     63}
     64
    11065?>
  • _plugins_/coordonnees/trunk/formulaires/configurer_coordonnees.html

    r67817 r70500  
    1 <div class="formulaire_spip formulaire_cfg formulaire_configurer formulaire_#FORM">
     1<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
    22
    3 [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
    4 [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    5 <form method='post' action='#ENV{action}'><div>
    6         #ACTION_FORMULAIRE{#ENV{action}}
    7         <ul>
    8                 [(#SAISIE{checkbox,objets,
     3        <h3 class="titrem"><:coordonnees:configuration_coordonnees:></h3>
     4
     5        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     6        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
     7
     8        <form method="post" action="#ENV{action}">
     9        <div>
     10                #ACTION_FORMULAIRE{#ENV{action}}
     11
     12                <ul>
     13                [(#REM) choix des objets ]
     14                [(#SAISIE{choisir_objets, objets,
    915                        label=<:coordonnees:label_objets_actifs:>,
    1016                        explication=<:coordonnees:explication_objets_actifs:>,
    11                         datas=[(#VAL{titre}|liste_objets_coordonnees)]})]
    12         </ul>
    13         <p class='boutons'><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
    14 </div></form>
     17                        exclus=#LISTE{spip_adresses,spip_numeros,spip_emails}
     18                })]
     19                </ul>
     20
     21                <p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
     22        </div>
     23        </form>
    1524</div>
  • _plugins_/coordonnees/trunk/formulaires/editer_adresse.html

    r67817 r70500  
    1 <div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_adresse,nouveau}'>
    2 
     1<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_adresse,nouveau}'>
     2        [(#CHEMIN_IMAGE{adresse-24.png}|balise_img{<:coordonnees:adresses:>,cadre-icone})]
    33        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    44        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    55
    6         [(#ENV{editable}|oui)
    7                 <form method='post' action='[(#ENV{action})]'><div>
    8                         #ACTION_FORMULAIRE{#ENV{action}}
    9                         <input type='hidden' name='id_adresse' value='#ENV{id_adresse}' />
    10                         <input type='hidden' name='objet' value='#ENV{objet}' />
    11                         <input type='hidden' name='id_objet' value='#ENV{id_objet}' />
    12                         <ul>
    13                                 [(#SAISIE{input, titre, label=<:coordonnees:label_titre:>})]
    14                         [(#ENV{id_objet}|oui)
    15                                 [(#SAISIE{selection, type, label=<:coordonnees:label_type_adresse:>, defaut=#ENV{type}, datas=#ARRAY{work,<:coordonnees:type_adr_work:>, home,<:coordonnees:type_adr_home:>, pref,<:coordonnees:type_adr_pref:>, postal,<:coordonnees:type_adr_postal:>, dom,<:coordonnees:type_adr_dom:>, intl,<:coordonnees:type_adr_intl:>, parcel,<:coordonnees:type_adr_parcel:> } })]
    16                         ]
    17                                 [(#SAISIE{input, voie, label=<:coordonnees:label_voie:>})]
    18                                 [(#SAISIE{input, complement, label=<:coordonnees:label_complement:>})]
    19                                 [(#SAISIE{input, boite_postale, label=<:coordonnees:label_boite_postale:>})]
    20                                 [(#SAISIE{input, code_postal, label=<:coordonnees:label_code_postal:>})]
    21                                 [(#SAISIE{input, ville, label=<:coordonnees:label_ville:>})]
    22                                 [(#SAISIE{input, region, label=<:coordonnees:label_region:>})]
    23                         [(#PLUGIN{pays}|?{
    24                                 [(#SAISIE{pays, pays, code_pays=oui, label=<:coordonnees:label_pays:>, defaut=FR})]
    25                         ,
    26                                 [(#SAISIE{input, pays, label=<:coordonnees:label_pays:>, defaut=FR, maxlength=3, size=2, explication=<coordonnees:code_ISO_3166:> })]
    27                         })]
    28                         </ul>
    29                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    30                         <!--extra-->
    31                         <p class='boutons'>
    32                                 <input type='submit' class='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
    33                         </p>
    34 
    35                 </div></form>
     6        [(#ENV{editable})
     7        <form method='post' action='#ENV{action}'><div>
     8                #ACTION_FORMULAIRE{#ENV{action}}
     9                <input type='hidden' name='id_adresse' value='#ENV{id_adresse}' />
     10                <ul>
     11                        #GENERER_SAISIES{#ENV{_saisies_adresse}}
     12                </ul>
     13                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
     14                <!--extra-->
     15                <p class="boutons">
     16                        <input type='submit' class='submit' value="<:bouton_enregistrer:>" />
     17                </p>
     18        </div></form>
    3619        ]
    3720</div>
     21[(#ENV**{message_ok}|oui)
     22<script type="text/javascript">jQuery(document).ready(function($) { ajaxReload('coordonnees', {args:{coordonnee:'', id_coordonnee:''}}); });</script>
     23]
  • _plugins_/coordonnees/trunk/formulaires/editer_adresse.php

    r66485 r70500  
    11<?php
     2/**
     3 * Plugin Coordonnees
     4 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
     5 */
    26
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    48
    59include_spip('inc/actions');
    610include_spip('inc/editer');
    711
    8 function formulaires_editer_adresse_charger_dist($id_adresse='new', $objet='', $id_objet='', $retour=''){
    9         $valeurs = formulaires_editer_objet_charger('adresse', $id_adresse, '', '', $retour, '');
    10         $valeurs['objet'] = $objet;
    11         $valeurs['id_objet'] = $id_objet;
    12         $valeurs['type'] = sql_getfetsel('type', 'spip_adresses_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_adresse='.intval($id_adresse) );
     12/**
     13 * Identifier le formulaire en faisant abstraction des parametres qui ne representent pas l'objet edite
     14 */
     15function formulaires_editer_adresse_identifier_dist($id_adresse='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     16        return serialize(array(intval($id_adresse), $associer_objet));
     17}
     18
     19/**
     20 * Declarer les champs postes et y integrer les valeurs par defaut
     21 */
     22function formulaires_editer_adresse_charger_dist($id_adresse='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     23        $valeurs = formulaires_editer_objet_charger('adresse',$id_adresse,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     24
     25        // importer les saisies yaml
     26        include_spip('inc/yaml');
     27        $valeurs['_saisies_adresse'] = _T_ou_typo(yaml_decode_file(find_in_path('yaml/saisies_adresse.yaml')));
     28        // valeur de la saisie "type" dans la table de liens
     29        if ( $associer_objet ) {
     30                list($objet, $id_objet) = explode('|', $associer_objet);
     31                $valeurs['type'] = sql_getfetsel('type', 'spip_adresses_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_adresse='.intval($id_adresse) );
     32        }
     33
    1334        return $valeurs;
    1435}
    1536
    16 function formulaires_editer_adresse_verifier_dist($id_adresse='new', $objet='', $id_objet='', $retour=''){
    17         $erreurs = formulaires_editer_objet_verifier('adresse', $id_adresse);
     37/**
     38 * Verifier les champs postes et signaler d'eventuelles erreurs
     39 */
     40function formulaires_editer_adresse_verifier_dist($id_adresse='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     41        // verification generique
     42        $erreurs = formulaires_editer_objet_verifier('adresse',$id_adresse);
     43
     44        // verification des saisies yaml
     45        include_spip('inc/yaml');
     46        include_spip('inc/saisies');
     47        $erreurs = saisies_verifier(yaml_decode_file(find_in_path('yaml/saisies_adresse.yaml')));
     48
     49        // verifier qu'il y a au moins le code ou la boite postale
     50        if ( strlen(_request('code_postal')==0) AND strlen(_request('boite_postale'))==0 ) {
     51                $erreurs['boite_postale'] = _T('coordonnees:erreur_code_boite_postal');
     52                $erreurs['code_postal'] = '&nbsp;';
     53        }
     54
    1855        return $erreurs;
    1956}
    2057
    21 function formulaires_editer_adresse_traiter_dist($id_adresse='new', $objet='', $id_objet='', $retour=''){
    22         // si redirection demandee, on refuse le traitement en ajax
    23 //      if ($retour) refuser_traiter_formulaire_ajax();
    24         return formulaires_editer_objet_traiter('adresse', $id_adresse, '', '', $retour, '');
     58/**
     59 * Traiter les champs postes
     60 */
     61function formulaires_editer_adresse_traiter_dist($id_adresse='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     62        $res = formulaires_editer_objet_traiter('adresse',$id_adresse,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     63 
     64        // Un lien a prendre en compte ?
     65        if ($associer_objet AND $id_adresse = $res['id_adresse']) {
     66                list($objet, $id_objet) = explode('|', $associer_objet);
     67                if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
     68                        include_spip('action/editer_liens');
     69                        objet_associer(array('adresse' => $id_adresse), array($objet => $id_objet));
     70                        if (isset($res['redirect'])) {
     71                                $res['redirect'] = parametre_url ($res['redirect'], 'id_adresse', '', '&');
     72                        }
     73                }
     74                // remplir le champ "type" dans la table de liens
     75                if ( $type = _request('type') ) {
     76                        sql_updateq('spip_adresses_liens',
     77                                array('type' => $type),
     78                                'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_adresse='.intval($id_adresse)
     79                        );
     80                }
     81        }
     82        return $res;
     83
    2584}
    2685
     86
    2787?>
  • _plugins_/coordonnees/trunk/formulaires/editer_email.html

    r67817 r70500  
    1 
    2 <div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_email,nouveau}'>
    3 
     1<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_email,nouveau}'>
     2        [(#CHEMIN_IMAGE{email-24.png}|balise_img{<:coordonnees:emails:>,cadre-icone})]
    43        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    54        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    65
    7         [(#ENV{editable}|oui)
    8                 <form method='post' action='[(#ENV{action})]'><div>
    9                         #ACTION_FORMULAIRE{#ENV{action}}
    10                         <input type='hidden' name='id_email' value='#ENV{id_email}' />
    11                         <input type='hidden' name='objet' value='#ENV{objet}' />
    12                         <input type='hidden' name='id_objet' value='#ENV{id_objet}' />
    13                         <ul>
    14                         [(#ENV{id_objet}|oui)
    15                                 [(#SAISIE{selection, type, label=<:coordonnees:label_type_email:>, defaut=#ENV{type}, datas=#ARRAY{work,<:coordonnees:type_mel_work:>, home,<:coordonnees:type_mel_home:> } })]
    16                         ]
    17                                 [(#SAISIE{input, titre, label=<:coordonnees:label_titre:>})]
    18                                 [(#SAISIE{input, email, label=<:coordonnees:label_email:>})]
    19                         </ul>
    20                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    21                         <!--extra-->
    22                         <p class='boutons'>
    23                                 <input type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
    24                         </p>
    25 
    26                 </div></form>
     6        [(#ENV{editable})
     7        <form method='post' action='#ENV{action}'><div>
     8                #ACTION_FORMULAIRE{#ENV{action}}
     9                <input type='hidden' name='id_email' value='#ENV{id_email}' />
     10                <ul>
     11                        #GENERER_SAISIES{#ENV{_saisies_email}}
     12                </ul>
     13                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
     14                <!--extra-->
     15                <p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
     16        </div></form>
    2717        ]
    2818</div>
     19[(#ENV**{message_ok}|oui)
     20<script type="text/javascript">jQuery(document).ready(function($) { ajaxReload('coordonnees', {args:{coordonnee:'', id_coordonnee:''}}); });</script>
     21]
  • _plugins_/coordonnees/trunk/formulaires/editer_email.php

    r66485 r70500  
    11<?php
     2/**
     3 * Plugin Coordonnees
     4 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
     5 */
    26
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    48
    59include_spip('inc/actions');
    610include_spip('inc/editer');
    711
    8 function formulaires_editer_email_charger_dist($id_email='new', $objet='', $id_objet='', $retour=''){
    9         $valeurs = formulaires_editer_objet_charger('email', $id_email, '', '', $retour, '');
    10         $valeurs['objet'] = $objet;
    11         $valeurs['id_objet'] = $id_objet;
    12         $valeurs['type'] = sql_getfetsel('type', 'spip_emails_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_email='.intval($id_email) );
     12/**
     13 * Identifier le formulaire en faisant abstraction des parametres qui ne representent pas l'objet edite
     14 */
     15function formulaires_editer_email_identifier_dist($id_email='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     16        return serialize(array(intval($id_email), $associer_objet));
     17}
     18
     19/**
     20 * Declarer les champs postes et y integrer les valeurs par defaut
     21 */
     22function formulaires_editer_email_charger_dist($id_email='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     23        $valeurs = formulaires_editer_objet_charger('email',$id_email,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     24
     25        // importer les saisies yaml
     26        include_spip('inc/yaml');
     27        $valeurs['_saisies_email'] = _T_ou_typo(yaml_decode_file(find_in_path('yaml/saisies_email.yaml')));
     28        // valeur de la saisie "type" dans la table de liens
     29        if ( $associer_objet ) {
     30                list($objet, $id_objet) = explode('|', $associer_objet);
     31                $valeurs['type'] = sql_getfetsel('type', 'spip_emails_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_email='.intval($id_email) );
     32        }
     33
    1334        return $valeurs;
    1435}
    1536
    16 function formulaires_editer_email_verifier_dist($id_email='new', $objet='', $id_objet='', $retour=''){
    17         $erreurs = formulaires_editer_objet_verifier('email', $id_email);
     37/**
     38 * Verifier les champs postes et signaler d'eventuelles erreurs
     39 */
     40function formulaires_editer_email_verifier_dist($id_email='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     41        // verification generique
     42        $erreurs = formulaires_editer_objet_verifier('email',$id_email);
     43
     44        // verification des saisies yaml
     45        include_spip('inc/yaml');
     46        include_spip('inc/saisies');
     47        $erreurs = saisies_verifier(yaml_decode_file(find_in_path('yaml/saisies_email.yaml')));
     48
    1849        return $erreurs;
    1950}
    2051
    21 function formulaires_editer_email_traiter_dist($id_email='new', $objet='', $id_objet='', $retour=''){
    22         // si redirection demandee, on refuse le traitement en ajax
    23         //if ($retour) refuser_traiter_formulaire_ajax();
    24         return formulaires_editer_objet_traiter('email', $id_email, '', '', $retour, '');
     52/**
     53 * Traiter les champs postes
     54 */
     55function formulaires_editer_email_traiter_dist($id_email='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     56        $res = formulaires_editer_objet_traiter('email',$id_email,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     57 
     58        // Un lien a prendre en compte ?
     59        if ($associer_objet AND $id_email = $res['id_email']) {
     60                list($objet, $id_objet) = explode('|', $associer_objet);
     61                if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
     62                        include_spip('action/editer_liens');
     63                        objet_associer(array('email' => $id_email), array($objet => $id_objet));
     64                        if (isset($res['redirect'])) {
     65                                $res['redirect'] = parametre_url ($res['redirect'], 'id_email', '', '&');
     66                        }
     67                }
     68                // remplir le champ "type" dans la table de liens
     69                if ( $type = _request('type') ) {
     70                        sql_updateq('spip_emails_liens',
     71                                array('type' => $type),
     72                                'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_email='.intval($id_email)
     73                        );
     74                }
     75        }
     76        return $res;
     77
    2578}
    2679
     80
    2781?>
  • _plugins_/coordonnees/trunk/formulaires/editer_numero.html

    r67817 r70500  
    1 
    2 <div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_numero,nouveau}'>
    3 
     1<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_telephone,nouveau}'>
     2        [(#CHEMIN_IMAGE{numero-24.png}|balise_img{<:coordonnees:numeros:>,cadre-icone})]
    43        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    54        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    65
    7         [(#ENV{editable}|oui)
    8                 <form method='post' action='[(#ENV{action})]'><div>
    9                         #ACTION_FORMULAIRE{#ENV{action}}
    10                         <input type='hidden' name='id_numero' value='#ENV{id_numero}' />
    11                         <input type='hidden' name='objet' value='#ENV{objet}' />
    12                         <input type='hidden' name='id_objet' value='#ENV{id_objet}' />
    13                         <ul>
    14                                 [(#SAISIE{input, titre, label=<:coordonnees:label_titre:>})]
    15                         [(#ENV{id_objet}|oui)
    16                                 [(#SAISIE{selection, type, label=<:coordonnees:label_type_numero:>, defaut=#ENV{type}, datas=#ARRAY{voice,<:coordonnees:type_tel_voice:>, work,<:coordonnees:type_tel_work:>, home,<:coordonnees:type_tel_home:>, msg,<:coordonnees:type_tel_msg:>, pref,<:coordonnees:type_tel_pref:>, fax,<:coordonnees:type_tel_fax:>, cell,<:coordonnees:type_tel_cell:>, dsl,<:coordonnees:type_tel_dsl:>, video,<:coordonnees:type_tel_video:>, pager,<:coordonnees:type_tel_pager:>, bbs,<:coordonnees:type_tel_bbs:>, modem,<:coordonnees:type_tel_modem:>, car,<:coordonnees:type_tel_car:>, isdn,<:coordonnees:type_tel_isdn:>, pcs,<:coordonnees:type_tel_pcs:> } })]
    17                         ]
    18                                 [(#SAISIE{input, numero, label=<:coordonnees:label_numero:>})]
    19                         </ul>
    20                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    21                         <!--extra-->
    22                         <p class='boutons'>
    23                                 <input type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
    24                         </p>
    25 
    26                 </div></form>
     6        [(#ENV{editable})
     7        <form method='post' action='#ENV{action}'><div>
     8                #ACTION_FORMULAIRE{#ENV{action}}
     9                <input type='hidden' name='id_numero' value='#ENV{id_numero}' />
     10                <ul>
     11                        #GENERER_SAISIES{#ENV{_saisies_numero}}
     12                </ul>
     13                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
     14                <!--extra-->
     15                <p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
     16        </div></form>
    2717        ]
    2818</div>
     19[(#ENV**{message_ok}|oui)
     20<script type="text/javascript">jQuery(document).ready(function($) { ajaxReload('coordonnees', {args:{coordonnee:'', id_coordonnee:''}}); });</script>
     21]
  • _plugins_/coordonnees/trunk/formulaires/editer_numero.php

    r66485 r70500  
    11<?php
     2/**
     3 * Plugin Coordonnees
     4 * Licence GPL (c) 2010 - Marcimat / Ateliers CYM
     5 */
    26
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     7if (!defined('_ECRIRE_INC_VERSION')) return;
    48
    59include_spip('inc/actions');
    610include_spip('inc/editer');
    711
    8 function formulaires_editer_numero_charger_dist($id_numero='new', $objet='', $id_objet='', $retour=''){
    9         $valeurs = formulaires_editer_objet_charger('numero', $id_numero, '', '', $retour, '');
    10         $valeurs['objet'] = $objet;
    11         $valeurs['id_objet'] = $id_objet;
    12         $valeurs['type'] = sql_getfetsel('type', 'spip_numeros_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_numero='.intval($id_numero) );
     12/**
     13 * Identifier le formulaire en faisant abstraction des parametres qui ne representent pas l'objet edite
     14 */
     15function formulaires_editer_numero_identifier_dist($id_numero='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     16        return serialize(array(intval($id_numero), $associer_objet));
     17}
     18
     19/**
     20 * Declarer les champs postes et y integrer les valeurs par defaut
     21 */
     22function formulaires_editer_numero_charger_dist($id_numero='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     23        $valeurs = formulaires_editer_objet_charger('numero',$id_numero,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     24
     25        // importer les saisies yaml
     26        include_spip('inc/yaml');
     27        $valeurs['_saisies_numero'] = _T_ou_typo(yaml_decode_file(find_in_path('yaml/saisies_numero.yaml')));
     28        // valeur de la saisie "type" dans la table de liens
     29        if ( $associer_objet ) {
     30                list($objet, $id_objet) = explode('|', $associer_objet);
     31                $valeurs['type'] = sql_getfetsel('type', 'spip_numeros_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_numero='.intval($id_numero) );
     32        }
     33
    1334        return $valeurs;
    1435}
    1536
    16 function formulaires_editer_numero_verifier_dist($id_numero='new', $objet='', $id_objet='', $retour=''){
    17         $erreurs = formulaires_editer_objet_verifier('numero', $id_numero);
     37/**
     38 * Verifier les champs postes et signaler d'eventuelles erreurs
     39 */
     40function formulaires_editer_numero_verifier_dist($id_numero='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     41        // verification generique
     42        $erreurs = formulaires_editer_objet_verifier('numero',$id_numero);
     43
     44        // verification des saisies yaml
     45        include_spip('inc/yaml');
     46        include_spip('inc/saisies');
     47        $erreurs = saisies_verifier(yaml_decode_file(find_in_path('yaml/saisies_numero.yaml')));
     48
    1849        return $erreurs;
    1950}
    2051
    21 function formulaires_editer_numero_traiter_dist($id_numero='new', $objet='', $id_objet='', $retour=''){
    22         // si redirection demandee, on refuse le traitement en ajax
    23         //if ($retour) refuser_traiter_formulaire_ajax();
    24         $res=formulaires_editer_objet_traiter('numero', $id_numero, '', '',$retour, '');
     52/**
     53 * Traiter les champs postes
     54 */
     55function formulaires_editer_numero_traiter_dist($id_numero='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     56        $res = formulaires_editer_objet_traiter('numero',$id_numero,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
     57 
     58        // Un lien a prendre en compte ?
     59        if ($associer_objet AND $id_numero = $res['id_numero']) {
     60                list($objet, $id_objet) = explode('|', $associer_objet);
     61                if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
     62                        include_spip('action/editer_liens');
     63                        objet_associer(array('numero' => $id_numero), array($objet => $id_objet));
     64                        if (isset($res['redirect'])) {
     65                                $res['redirect'] = parametre_url ($res['redirect'], 'id_numero', '', '&');
     66                        }
     67                }
     68                // remplir le champ "type" dans la table de liens
     69                if ( $type = _request('type') ) {
     70                        sql_updateq('spip_numeros_liens',
     71                                array('type' => $type),
     72                                'objet='.sql_quote($objet).' AND id_objet='.intval($id_objet).' AND id_numero='.intval($id_numero)
     73                        );
     74                }
     75        }
    2576        return $res;
     77
    2678}
    2779
     80
    2881?>
  • _plugins_/coordonnees/trunk/lang/coordonnees_fr.php

    r66803 r70500  
    1313        'ajouter_email' => 'Ajouter un email',
    1414        'ajouter_telephone' => 'Ajouter un numéro',
     15        'ajouter_adresse_court' => 'Ajouter adresse',
     16        'ajouter_email_court' => 'Ajouter email',
     17        'ajouter_telephone_court' => 'Ajouter téléphone',
    1518
    1619        // C
     
    1922        'confirmer_suppression_email' => 'Voulez-vous vraiment supprimer ce courriel ?',
    2023        'confirmer_suppression_numero' => 'Voulez-vous vraiment supprimer ce numéro ?',
     24        'creer_adresse' => 'Créer une nouvelle adresse',
     25        'creer_email' => 'Créer un nouvel email',
     26        'creer_numero' => 'Créer un nouveau numéro de téléphone',
    2127
    2228        // E
     
    2531        'editer_numero' => 'Éditer un numéro',
    2632        'emails' => 'Courriels',
     33        'erreur_code_boite_postal' => 'Veuillez indiquer soit le code postal,soit la boîte postale',
     34        'explication_complement' => 'Etage, bâtiment...',
    2735        'explication_objets_actifs' => 'Sur quels objets éditoriaux proposer les coordonnées ?',
    2836        'explication_type_email' => 'Le type peut être \'perso\' ou \'pro\'.',
     37        'explication_titre_adresse' => 'Un nom pour identifier l\'adresse',
     38        'explication_titre_numero' => 'Un nom pour identifier le numéro',
     39        'explication_titre_email' => 'Un nom pour identifier l\'email',
    2940
    3041        // I
     42        'info_aucun_adresse' => 'Aucune adresse',
     43        'info_aucun_email' => 'Aucun email',
     44        'info_aucun_numero' => 'Aucun numéro de téléphone',
     45        'info_1_adresse' => '1 adresse',
     46        'info_1_email' => '1 email',
     47        'info_1_numero' => '1 numéro de téléphone',
     48        'info_nb_adresse' => '@nb@ adresses',
     49        'info_nb_email' => '@nb@ emails',
     50        'info_nb_numero' => '@nb@ numéros de téléphone',
    3151        'info_adresse_utilisee_par' => 'Adresse utilisée par :',
    3252        'info_email_utilise_par' => 'Courriel utilisé par :',
     
    4060
    4161        // L
     62        'label_adresse' => 'Adresse',
    4263        'label_boite_postale' => 'Boîte Postale',
    4364        'label_code_postal' => 'Code Postal',
     
    7394
    7495        // T
     96        'texte_retour' => 'Retour',
    7597        'titre_coordonnees' => 'Coordonnées',
    7698        'type_adr_dom' => 'Résidentielle',
  • _plugins_/coordonnees/trunk/lang/paquet-coordonnees_fr.php

    r51789 r70500  
    44$GLOBALS[$GLOBALS['idx_lang']] = array(
    55        'coordonnees_nom' => "Coordonnées",
    6         'coordonnees_slogan' => "Des coordonné;es postales, téléphoniques... pour vos auteurs",
     6        'coordonnees_slogan' => "Adresses, téléphones & emails sur les objets",
    77        'coordonnees_description' => "Ajoute la possibilité de donner des coordonnées postales (adresses, mails, téléphones) aux objets de SPIP, et tout particulièrement aux auteurs. Plusieurs adresses et numéros de téléphone peuvent ainsi être donnés à chaque auteur.",
    88);
  • _plugins_/coordonnees/trunk/paquet.xml

    r70177 r70500  
    22        prefix="coordonnees"
    33        categorie="auteur"
    4         version="2.0.18"
    5         schema="1.8.1"
     4        version="2.1.0"
     5        schema="1.8.2"
    66        etat="test"
    7         compatibilite="[3.0.5;["
    8         logo="images/addressbook-128.png"
     7        compatibilite="[3.0.5;3.0.*]"
     8        logo="prive/themes/spip/images/addressbook-128.png"
    99        documentation="http://www.spip-contrib.net/Plugin-Coordonnees"
    1010>
    1111
    12         <nom>Coordonn&eacute;es</nom>
    13 
     12        <nom>Coordonnées</nom>
    1413        <auteur>Matthieu Marcillaud</auteur>
    1514        <auteur lien="http://www.cym.fr">Cyril MARION</auteur>
    16 
    1715        <licence>GNU/GPL</licence>
    1816        <traduire gestionnaire="salvatore" module="coordonnees" reference="fr" />
    1917
    20 
    21 
    22 
    23 
     18        <necessite nom="saisies"        compatibilite="[1.24.0;]" />
     19        <necessite nom="pays"           compatibilite="[1.0.5;]" />
     20        <necessite nom="verifier"       compatibilite="[0.1.15;]" />
     21        <necessite nom="yaml"           compatibilite="[1.5.0;]" />
    2422
    2523        <!-- Declaration des tables -->
    26         <pipeline nom="declarer_tables_objets_sql" inclure="base/coordonnees.php" />
    27         <pipeline nom="declarer_tables_interfaces" inclure="base/coordonnees.php" />
    28         <pipeline nom="declarer_tables_auxiliaires" inclure="base/coordonnees.php" />
    29 
     24        <pipeline nom="declarer_tables_objets_sql"      inclure="base/coordonnees.php" />
     25        <pipeline nom="declarer_tables_interfaces"      inclure="base/coordonnees.php" />
     26        <pipeline nom="declarer_tables_auxiliaires"     inclure="base/coordonnees.php" />
    3027        <!-- Autorisations -->
    31         <pipeline nom="autoriser" inclure="coordonnees_autorisations.php" />
    32 
     28        <pipeline nom="autoriser"                       inclure="coordonnees_autorisations.php" />
    3329        <!-- Éléments d'interface -->
    34         <pipeline nom="affiche_milieu" inclure="coordonnees_pipelines.php" />
    35 
     30        <pipeline nom="afficher_fiche_objet"            inclure="coordonnees_pipelines.php" />
    3631        <!-- avec plugin champs extras 2 -->
    37         <pipeline nom="objets_extensibles" inclure="coordonnees_pipelines.php" />
    38 
    39 
    40 
    41         <necessite nom="saisies" compatibilite="[1.14.0;]" />
    42         <necessite nom="pays" compatibilite="[1.0.5;]" />
     32        <pipeline nom="objets_extensibles"              inclure="coordonnees_pipelines.php" />
     33        <!-- optimiser liens -->
     34        <pipeline nom="optimiser_base_disparus"         inclure="coordonnees_pipelines.php" />
    4335
    4436</paquet>
  • _plugins_/coordonnees/trunk/prive/objets/liste/adresses_lies.html

    r70489 r70500  
    1 <B_adresses>
     1[(#SET{defaut_tri,#ARRAY{
     2        pays,1,
     3        ville,1,
     4        id_adresse,1,
     5        points,-1
     6}})]
     7#SET{id_adresse_exclue, #ENV{coordonnee}|=={adresse}|?{#ENV{id_coordonnee}}}
     8<B_liste_adresses>
    29#ANCRE_PAGINATION
    3 <div id='adresses_#ENV{objet}_#ENV{id_objet}' class="liste-objets adresses">
     10<div class="liste-objets adresses coordonnees">
    411<table class='spip liste'>
    5 <caption><strong class="caption"><:coordonnees:adresses:></strong></caption>
    612        <tbody>
    7         <BOUCLE_adresses(ADRESSES adresses_liens){adresses_liens.objet}{adresses_liens.id_objet}{par pays,ville}{pagination #ENV{nb,10}}>
    8                 <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    9                         <td class='titre'>
    10                                 [(#TYPE|logo_type_adr):]
    11                                 [(#TITRE)]
    12                         </td>
    13                         <td class='adresse'>
    14                                 [<div class='voie'>(#VOIE)</div>]
    15                                 [<div class='complement'>(#COMPLEMENT)</div>]
    16                                 [<div class='boite_postale'>(#BOITE_POSTALE)</div>]
    17                                 [<div class='region'>(#REGION)</div>]
    18                                 [<div class='code_postal'>#CODE_POSTAL (#VILLE)</div>]
    19                                 <B_pays><div class='pays nom_pays'><BOUCLE_pays(PAYS ?){code=#PAYS}>#NOM</BOUCLE_pays></div></B_pays>[<div class='pays code_pays'>(#NOM)</div>]<//B_pays>
    20                                 [(#REM) Un coup pour les champs extras ]
    21                                 [(#PIPELINE{afficher_contenu_objet,[(#ARRAY{args,[(#ARRAY{type,adresse,id_objet,#ID_ADRESSE,contexte,[(#ENV**|unserialize)]})],data,''})]})]
    22                         </td>
    23                         <td class='action'>
    24                         [(#AUTORISER{modifier,#ENV{objet},#ENV{id_objet}}|oui)
    25                                 [(#BOUTON_ACTION{[(#CHEMIN{images/editer-16.png}
    26                                         |balise_img{<:coordonnees:modifier_adresse:>})],
    27                                         [(#URL_ECRIRE{adresse_edit}
    28                                                 |parametre_url{id_adresse,#ID_ADRESSE}
    29                                                 |parametre_url{retour,[(#ENV{retour,#SELF})]}
    30                                         )],ajax})]
    31                                 [(#BOUTON_ACTION{
    32                                         [(#CHEMIN{images/supprimer-16.png}|balise_img{<:coordonnees:supprimer_adresse:>})],
    33                                         [(#URL_ACTION_AUTEUR{supprimer_adresse,[lien/(#ID_ADRESSE)/#ENV{objet}/#ENV{id_objet}/#TYPE],[(#ENV{retour,#SELF})]})],
    34                                         ajax,
    35                                         <:coordonnees:confirmer_suppression_adresse:>})]
    36                         ]
    37                         </td>
    38                 </tr>
    39         </BOUCLE_adresses>
     13        <BOUCLE_liste_adresses(ADRESSES liens){id_adresse != #GET{id_adresse_exclus}}{id_mot?}{objet?}{id_objet?}{where?}{recherche?}{tri #ENV{par,pays},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
     14        <tr class='[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
     15                [(#COMPTEUR_BOUCLE|=={1}|oui) <td class='picto' rowspan='#TOTAL_BOUCLE'></td> ]
     16                <td class='#EDIT{titre} titre principale'>
     17                        [(#TYPE|logo_type_adr) ]#TITRE
     18                </td>
     19                <td class='adresse'>
     20                        [<div class='voie'>(#VOIE)</div>]
     21                        [<div class='complement'>(#COMPLEMENT)</div>]
     22                        [<div class='boite_postale'>(#BOITE_POSTALE)</div>]
     23                        [<div class='region'>(#REGION)</div>]
     24                        [<div class='code_postal'>#CODE_POSTAL (#VILLE)</div>]
     25                        <B_pays><div class='pays nom_pays'><BOUCLE_pays(PAYS ?){code=#PAYS}>#NOM</BOUCLE_pays></div></B_pays>[<div class='pays code_pays'>(#NOM)</div>]<//B_pays>
     26                        [(#REM) Un coup pour les champs extras ]
     27                        [(#PIPELINE{afficher_contenu_objet,[(#ARRAY{args,[(#ARRAY{type,adresse,id_objet,#ID_ADRESSE,contexte,[(#ENV**|unserialize)]})],data,''})]})]
     28                </td>
     29                <td class='action'>
     30                        <a onclick="ajaxReload('coordonnees', {args:{coordonnee:'adresse', id_coordonnee:'[(#ID_ADRESSE)]'}});" href="#coordonnees" title="<:coordonnees:modifier_adresse:>">
     31                        [(#CHEMIN_IMAGE{edit-12.png}|balise_img{'coordonnees:modifier_adresse'})]
     32                        </a>
     33                        [(#BOUTON_ACTION{
     34                                [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'coordonnees:supprimer_adresse'})],
     35                                #URL_ACTION_AUTEUR{dissocier_supprimer_coordonnee,adresse/#ID_ADRESSE/#OBJET/#ID_OBJET,#SELF},
     36                                'button link ajax',
     37                                '',
     38                                <:coordonnees:supprimer_adresse:>}
     39                        )]
     40                </td>
     41        </tr>
     42        </BOUCLE_liste_adresses>
    4043        </tbody>
    4144</table>
    4245[<p class='pagination'>(#PAGINATION{prive})</p>]
    4346</div>
    44 </B_adresses>
     47</B_liste_adresses>[
     48<div class="liste-objets adresses coordonnees caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
     49]<//B_liste_adresses>
  • _plugins_/coordonnees/trunk/prive/objets/liste/emails_lies.html

    r70489 r70500  
    1 <B_mails>
     1[(#SET{defaut_tri,#ARRAY{
     2        email,1,
     3        id_email,1,
     4        points,-1
     5}})]
     6#SET{id_email_exclu, #ENV{coordonnee}|=={email}|?{#ENV{id_coordonnee}}}
     7<B_liste_emails>
    28#ANCRE_PAGINATION
    3 <div id='emails_#ENV{objet}_#ENV{id_objet}' class="liste-objets emails">
     9<div class="liste-objets emails coordonnees">
    410<table class='spip liste'>
    5 <caption><strong class="caption"><:coordonnees:emails:></strong></caption>
    611        <tbody>
    7         <BOUCLE_mails(EMAILS emails_liens){emails_liens.objet}{emails_liens.id_objet}{par email}{pagination #ENV{nb,10}}>
    8                 <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    9                         <td class='titre'>
    10                                 [(#TYPE|logo_type_mel):]
    11                                 [(#TITRE)]
    12                         </td>
    13                         <td class='email'>
    14                                 [(#TYPE|match{x400}|non)<a href="mailto:#EMAIL">]#EMAIL[(#TYPE|match{x400}|non)</a>]
    15                         </td>
    16                         <td class='action'>
    17                         [(#AUTORISER{modifier,#ENV{objet},#ENV{id_objet}}|oui)
    18                                 [(#BOUTON_ACTION{[(#CHEMIN{images/editer-16.png}
    19                                         |balise_img{<:coordonnees:modifier_email:>})],
    20                                         [(#URL_ECRIRE{email_edit}
    21                                                 |parametre_url{id_email,#ID_EMAIL}
    22                                                 |parametre_url{retour,[(#ENV{retour,#SELF})]}
    23                                         )],ajax})]
    24                                 [(#BOUTON_ACTION{
    25                                         [(#CHEMIN{images/supprimer-16.png}|balise_img{<:coordonnees:supprimer_email:>})],
    26                                         [(#URL_ACTION_AUTEUR{supprimer_email,[lien/(#ID_EMAIL)/#ENV{objet}/#ENV{id_objet}/#TYPE],[(#ENV{retour,#SELF})]})],
    27                                         ajax,
    28                                         <:coordonnees:confirmer_suppression_email:>})]
    29                         ]
    30                         </td>
    31                 </tr>
    32         </BOUCLE_mails>
     12        <BOUCLE_liste_emails(EMAILS liens){id_email != #GET{id_email_exclu}}{id_mot?}{objet?}{id_objet?}{where?}{recherche?}{tri #ENV{par,email},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
     13        <tr class='[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
     14                [(#COMPTEUR_BOUCLE|=={1}|oui) <td class='picto' rowspan='#TOTAL_BOUCLE'></td> ]
     15                <td class='#EDIT{titre} titre principale'>
     16                        [(#TYPE|logo_type_mel) ]#TITRE
     17                </td>
     18                <td class='#EDIT{email} email'>
     19                        [(#TYPE|match{x400}|non)<a href="mailto:#EMAIL">]#EMAIL[(#TYPE|match{x400}|non)</a>]
     20                </td>
     21                <td class='action'>
     22                        <a onclick="ajaxReload('coordonnees', {args:{coordonnee:'email', id_coordonnee:'[(#ID_EMAIL)]'}});" href="#coordonnees" title="<:coordonnees:modifier_email:>">
     23                        [(#CHEMIN_IMAGE{edit-12.png}|balise_img{'coordonnees:modifier_email'})]
     24                        </a>
     25                        [(#BOUTON_ACTION{
     26                                [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'coordonnees:supprimer_email'})],
     27                                #URL_ACTION_AUTEUR{dissocier_supprimer_coordonnee,email/#ID_EMAIL/#OBJET/#ID_OBJET,#SELF},
     28                                'button link ajax',
     29                                '',
     30                                <:coordonnees:supprimer_email:>}
     31                        )]
     32                </td>
     33        </tr>
     34        </BOUCLE_liste_emails>
    3335        </tbody>
    3436</table>
    3537[<p class='pagination'>(#PAGINATION{prive})</p>]
    3638</div>
    37 </B_mails>
     39</B_liste_emails>[
     40<div class="liste-objets coordonnees emails caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
     41]<//B_liste_emails>
  • _plugins_/coordonnees/trunk/prive/objets/liste/numeros_lies.html

    r70489 r70500  
    1 <B_telephones>
     1[(#SET{defaut_tri,#ARRAY{
     2        numero,1,
     3        id_numero,1,
     4        points,-1
     5}})]
     6#SET{id_numero_exclu, #ENV{coordonnee}|=={numero}|?{#ENV{id_coordonnee}}}
     7<B_liste_numeros>
    28#ANCRE_PAGINATION
    3 <div id='numeros_#ENV{objet}_#ENV{id_objet}' class="liste-objets numeros">
     9<div class="liste-objets numeros coordonnees">
    410<table class='spip liste'>
    5 <caption><strong class="caption"><:coordonnees:numeros:></strong></caption>
    611        <tbody>
    7         <BOUCLE_telephones(NUMEROS numeros_liens){numeros_liens.objet}{numeros_liens.id_objet}{par numero}{pagination #ENV{nb,10}}>
    8                 <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    9                         <td class='titre'>
    10                                 [(#TYPE|logo_type_tel):]
    11                                 [(#TITRE)]
    12                         </td>
    13                         <td class='numero'>
    14                                 [(#NUMERO)]
    15                                 [(#REM) Un coup pour les champs extras ]
    16                                 [(#PIPELINE{afficher_contenu_objet,[(#ARRAY{args,[(#ARRAY{type,numero,id_objet,#ID_NUMERO,contexte,[(#ENV**|unserialize)]})],data,''})]})]
    17                         </td>
    18                         <td class='action'>
    19                         [(#AUTORISER{modifier,#ENV{objet},#ENV{id_objet}}|oui)
    20                                 [(#BOUTON_ACTION{[(#CHEMIN{images/editer-16.png}
    21                                         |balise_img{<:coordonnees:modifier_numero:>})],
    22                                         [(#URL_ECRIRE{numero_edit}
    23                                                 |parametre_url{id_numero,#ID_NUMERO}
    24                                                 |parametre_url{retour,[(#ENV{retour,#SELF})]}
    25                                         )],ajax})]
    26                                 [(#BOUTON_ACTION{
    27                                         [(#CHEMIN{images/supprimer-16.png}|balise_img{<:coordonnees:supprimer_numero:>})],
    28                                         [(#URL_ACTION_AUTEUR{supprimer_numero,[lien/(#ID_NUMERO)/#ENV{objet}/#ENV{id_objet}/#TYPE],[(#ENV{retour,#SELF})]})],
    29                                         ajax,
    30                                         <:coordonnees:confirmer_suppression_numero:>})]
    31                         ]
    32                         </td>
    33                 </tr>
    34         </BOUCLE_telephones>
     12        <BOUCLE_liste_numeros(NUMEROS liens){id_numero != #GET{id_numero_exclu}}{id_mot?}{objet?}{id_objet?}{where?}{recherche?}{tri #ENV{par,numero},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
     13        <tr class='[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
     14                [(#COMPTEUR_BOUCLE|=={1}|oui) <td class='picto' rowspan='#TOTAL_BOUCLE'></td> ]
     15                <td class='#EDIT{titre} titre principale'>
     16                        [(#TYPE|logo_type_tel) ]#TITRE
     17                </td>
     18                <td class='#EDIT{numero} numero'>
     19                        #NUMERO
     20                        [(#REM) Un coup pour les champs extras ]
     21                        [(#PIPELINE{afficher_contenu_objet,[(#ARRAY{args,[(#ARRAY{type,numero,id_objet,#ID_NUMERO,contexte,[(#ENV**|unserialize)]})],data,''})]})]
     22                </td>
     23                <td class='action'>
     24                        <a onclick="ajaxReload('coordonnees', {args:{coordonnee:'numero', id_coordonnee:'[(#ID_NUMERO)]'}});" href="#coordonnees" title="<:coordonnees:modifier_numero:>">
     25                        [(#CHEMIN_IMAGE{edit-12.png}|balise_img{'coordonnees:modifier_numero'})]
     26                        </a>
     27                        [(#BOUTON_ACTION{
     28                                [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'coordonnees:supprimer_numero'})],
     29                                #URL_ACTION_AUTEUR{dissocier_supprimer_coordonnee,numero/#ID_NUMERO/#OBJET/#ID_OBJET,#SELF},
     30                                'button link ajax',
     31                                '',
     32                                <:coordonnees:supprimer_numero:>}
     33                        )]
     34                </td>
     35        </tr>
     36        </BOUCLE_liste_numeros>
    3537        </tbody>
    3638</table>
    3739[<p class='pagination'>(#PAGINATION{prive})</p>]
    3840</div>
    39 </B_telephones>
     41</B_liste_numeros>[
     42<div class="liste-objets coordonnees numeros caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
     43]<//B_liste_numeros>
  • _plugins_/coordonnees/trunk/prive/squelettes/contenu/configurer_coordonnees.html

    r70489 r70500  
    1 [(#AUTORISER{configurer,coordonnees}|sinon_interdire_acces)]
     1[(#AUTORISER{configurer,_coordonnees}|sinon_interdire_acces)]
    22
    3 <h1 class='h1'><:coordonnees:configuration_coordonnees:></h1>
    4 <div class='ajax'>
    5 #FORMULAIRE_CONFIGURER_COORDONNEES
     3<h1 class="grostitre"><:coordonnees:titre_coordonnees:></h1>
     4
     5<div class="ajax">
     6        #FORMULAIRE_CONFIGURER_COORDONNEES
    67</div>
  • _plugins_/coordonnees/trunk/prive/squelettes/contenu/coordonnees_fiche_objet.html

    r70489 r70500  
    1 #CACHE{0}
    2 [(#VAL{inc/presentation}|include_spip|oui)]
    3 [(#SET{identifiant,[(#VAL{coordonnees_#ENV{objet}_#ENV{id_objet}})]})]
    4 [(#SET{icone,[(#CHEMIN{images/addressbook-24.png}|url_absolue)]})]
    5 [(#SET{plie,0})][(#SET{form,0})]
    61[(#REM)
    7         si on est en ajax, on peut recevoir un id_xx
    8         pour afficher les formulaires correspondants
     2        Affiche les coordonnées liées à un objet, permet d'en créer & associer de nouvelles.
     3][(#REM)
     4        Appelé par le pipeline 'afficher_fiche_objet'
    95]
    106
    11 [(#ENV{id_adresse}|ou{#ENV{id_numero}}|ou{#ENV{id_email}}|ou{#ENV{new}}|oui)
    12         [(#SET{plie,1})]
    13         [(#SET{form,1})]
     7[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{coordonnees-24.png}|balise_img{<:coordonnees:titre_coordonnees:>,cadre-icone}) ]<:coordonnees:titre_coordonnees:>,'simple coordonnees'})]
     8<a name='coordonnees'></a>
     9
     10[(#REM)  ICONES AJOUTER ]
     11[(#ENV{coordonnee}|non)
     12<div class="icones-ajouter">
     13        [(#SELF|parametre_url{coordonnee,adresse}|ancre_url{coordonnees}|icone_horizontale{<:coordonnees:ajouter_adresse_court:>,adresse,new,'coordonnee ajouter ajax right'})]
     14        [(#SELF|parametre_url{coordonnee,email}|ancre_url{coordonnees}|icone_horizontale{<:coordonnees:ajouter_email_court:>,email,new,'coordonnee ajouter ajax right'})]
     15        [(#SELF|parametre_url{coordonnee,numero}|ancre_url{coordonnees}|icone_horizontale{<:coordonnees:ajouter_telephone_court:>,numero,new,'coordonnee ajouter ajax right'})]
     16</div>
    1417]
    1518
     19[(#REM) FORMULAIRE CREATION ]
     20[(#ENV{coordonnee}|oui)
     21        [<a href="[(#SELF|parametre_url{coordonnee,''}|parametre_url{id_coordonnee,''}|ancre_url{coordonnees})]" class="ajax bouton_fermer preload">(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{title,<:bouton_fermer:>})</a>]
     22        <div class='creer ajax'>
     23        [(#FORMULAIRE_{[editer_(#ENV{coordonnee})],#ENV{id_coordonnee,oui},'',#OBJET|concat{'|',#ID_OBJET}})]
     24        </div>
     25]
    1626
    17 [(#SET{retour,[(#ENV{retour,#SELF}
    18                 |parametre_url{id_adresse,''}
    19                 |parametre_url{id_email,''}
    20                 |parametre_url{id_numero,''})]})]
     27[(#REM) LISTES DES COORDONNEES LIEES ]
     28<BOUCLE_listes(DATA){liste adresse,numero,email}>
     29[(#INCLURE{fond=prive/objets/liste/#VALEURs_lies, env, ajax})]
     30</BOUCLE_listes>
    2131
    22 
    23 
    24 <div class="nettoyeur"></div>
    25 
    26 [(#VAL{e}|debut_cadre{#GET{icone},'',[(#VAL{<:coordonnees:titre_coordonnees:>}|bouton_block_depliable{[(#GET{plie}?{#EVAL{true},#EVAL{false}})],#GET{identifiant}})]})]
    27 
    28         [(#INCLURE{fond=prive/liste/adresses, objet, id_objet, retour=#GET{retour}})]
    29         [(#INCLURE{fond=prive/liste/numeros, objet, id_objet, retour=#GET{retour}})]
    30         [(#INCLURE{fond=prive/liste/emails, objet, id_objet, retour=#GET{retour}})]
    31 
    32 [(#GET{plie}|debut_block_depliable{#GET{identifiant}})]
    33 
    34 
    35         [(#AUTORISER{modifier,#ENV{objet},#ENV{id_objet}})
    36        
    37                 [(#GET{form}|oui)
    38                         [(#ENV{new}|=={adresse}|ou{#ENV{id_adresse}}|oui)
    39                                 <h3>[(#ENV{id_adresse}|intval|?{<:coordonnees:editer_adresse:>,<:coordonnees:nouvelle_adresse:>})]</h3>
    40                                 <div class='ajax'>[(#FORMULAIRE_EDITER_ADRESSE{#ENV{id_adresse,new},#ENV{objet},#ENV{id_objet},"javascript:ajaxReload('contenu');"})]</div>
    41                         ]
    42                         [(#ENV{new}|=={numero}|ou{#ENV{id_numero}}|oui)
    43                                 <h3>[(#ENV{id_numero}|intval|?{<:coordonnees:editer_numero:>,<:coordonnees:nouveau_numero:>})]</h3>
    44                                 <div class='ajax'>[(#FORMULAIRE_EDITER_NUMERO{#ENV{id_numero,new},#ENV{objet},#ENV{id_objet},"javascript:ajaxReload('contenu');"})]</div>
    45                         ]
    46                         [(#ENV{new}|=={email}|ou{#ENV{id_email}}|oui)
    47                                 <h3>[(#ENV{id_email}|intval|?{<:coordonnees:editer_email:>,<:coordonnees:nouvel_email:>})]</h3>
    48                                 <div class='ajax'>[(#FORMULAIRE_EDITER_EMAIL{#ENV{id_email,new},#ENV{objet},#ENV{id_objet},"javascript:ajaxReload('contenu');"})]</div>
    49                         ]
    50                 ]
    51 
    52 
    53                 <div class='boutons'>
    54                 [(#BOUTON_ACTION{[(#CHEMIN{images/adresse-add-24.png}
    55                         |balise_img{<:coordonnees:ajouter_adresse:>}
    56                         |concat{' ',<:coordonnees:ajouter_adresse:>})],
    57                         [(#URL_ECRIRE{adresse_edit}
    58                                 |parametre_url{objet,#ENV{objet}}
    59                                 |parametre_url{id_objet,#ENV{id_objet}}
    60                                 |parametre_url{new,adresse}
    61                                 |parametre_url{retour,[(#GET{retour,#SELF})]})],ajax})]
    62 
    63                 [(#BOUTON_ACTION{[(#CHEMIN{images/telephone-add-24.png}
    64                         |balise_img{<:coordonnees:ajouter_telephone:>}
    65                         |concat{' ',<:coordonnees:ajouter_telephone:>})],
    66                         [(#URL_ECRIRE{numero_edit}
    67                                 |parametre_url{objet,#ENV{objet}}
    68                                 |parametre_url{id_objet,#ENV{id_objet}}
    69                                 |parametre_url{new,numero}
    70                                 |parametre_url{retour,[(#GET{retour,#SELF})]})],ajax})]
    71 
    72                 [(#BOUTON_ACTION{[(#CHEMIN{images/email-add-24.png}
    73                         |balise_img{<:coordonnees:ajouter_email:>}
    74                         |concat{' ',<:coordonnees:ajouter_email:>})],
    75                         [(#URL_ECRIRE{email_edit}
    76                                 |parametre_url{objet,#ENV{objet}}
    77                                 |parametre_url{id_objet,#ENV{id_objet}}
    78                                 |parametre_url{new,email}
    79                                 |parametre_url{retour,[(#GET{retour,#SELF})]})],ajax})]
    80                 </div>
    81         ]
    82 
    83 [(#GET{plie}|fin_block)]
    84 [(#VAL{e}|fin_cadre)]
    85 
     32#BOITE_FERMER
  • _plugins_/coordonnees/trunk/prive/style_prive_plugin_coordonnees.html

    r45486 r70500  
    1 [(#REM)
    2 
    3         Ce squelette definit les styles de l'espace prive
    4 
    5         Note: l'entete "Vary:" sert a repousser l'entete par
    6         defaut "Vary: Cookie,Accept-Encoding", qui est (un peu)
    7         genant en cas de "rotation du cookie de session" apres
    8         un changement d'IP (effet de clignotement).
    9 
    10         ATTENTION: il faut absolument le charset sinon Firefox croit que
    11         c'est du text/html !
    12 ]
    13 #CACHE{3600*100,cache-client}
     1#CACHE{0}
     2[(#REM)<style>]
    143#HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15}
    154#HTTP_HEADER{Vary: Accept-Encoding}
    165
    17 .liste-elements.adresses .type_adresse,                 
    18 .liste-elements.numeros .type_numero,                   
    19 .liste-elements.emails .type_email {
    20         width:20px;
    21 }               
     6#SET{claire,##ENV{couleur_claire,edf3fe}}
     7#SET{foncee,##ENV{couleur_foncee,3874b0}}
     8
     9/*========================================================
     10  === BOITE OBJET ASSOCIES A UN AUTRE DANS FICHE OBJET ===
     11  ========================================================*/
     12
     13/* icones ajouter */
     14.icones-ajouter                 { position: absolute; right: .4em; top: .2em; }
     15.coordonnee.icone.ajouter.right { clear: none; padding-right: 0; }
     16.coordonnee.icone.ajouter.right a img {
     17                                position: static;
     18                                float: #ENV{left};
     19                                margin-top: auto;
     20                                margin-#ENV{left}: .7em;
     21                                margin-#ENV{right}: .3em;
     22                                }
     23
     24/* formulaire creation */
     25.coordonnees .creer .formulaire_spip { margin: 0; }
     26.coordonnees .bouton_fermer     { display: block; text-align: #ENV{right}; }
     27
     28/* listes */
     29.liste-objets.coordonnees       { margin: .7em 0 0; }
     30.liste-objets.coordonnees img   { vertical-align: middle; }
     31.liste-objets.coordonnees .liste tr:first-child td{ border-top: 0; }
     32.liste-objets.coordonnees .liste tr:last-child td{ border-bottom: 0; }
     33.liste-objets.coordonnees .picto{ width: 30px;
     34                                border-bottom: 0;
     35                                border-right: 1px solid #ddd;
     36                                background-color: #eee;
     37                                background-color:rgba(0,0,0,.05);
     38                                background-position: center center;
     39                                background-repeat: no-repeat;
     40                                }
     41.numeros .liste .picto          { background-image: url([(#CHEMIN_IMAGE{numero-24.png})]); }
     42.adresses .liste .picto         { background-image: url([(#CHEMIN_IMAGE{adresse-24.png})]); }
     43.emails .liste .picto           { background-image: url([(#CHEMIN_IMAGE{email-24.png})]); }
     44.liste-objets.coordonnees .titre{ width: 35%; }
     45
     46
Note: See TracChangeset for help on using the changeset viewer.