Changeset 77219 in spip-zone


Ignore:
Timestamp:
Oct 14, 2013, 7:23:21 PM (8 years ago)
Author:
rastapopoulos@…
Message:

Premier jet d'ajout de la gestion d'annuaires différents dans C&O.

Pour ceux qui n'en ont pas besoin, quasiment rien ne change. La page d'accueil de C&O change pour devenir un résumé (possiblement améliorable), plutôt qu'une liste alors qu'on a déjà des listes autre part. Et on passe en pleine largeur les pages qui n'ont pas besoin d'avoir des colonnes.

On ajoute une option pour activer les annuaires.

Quand cette option est activée, on peut alors créer des annuaires (titre, identifiant, descriptif), et classer ses fiches dedans, organsations et contacts.

La page d'accueil de C&0 résume ce qu'il y a dans chaque annuaire, et fournit un bouton rapide pour ajoute un élément dans un annuaire précis (champ pré-rempli quand on arrive dans le form quoi).
Elle liste aussi le nombre d'éléments dans "Aucun annuaire", ainsi que le total.

Les pages de liste d'organisations et de contacts, sont alors ensuite filtrables avec des onglets : Tous, seulement un annuaire précis, ou seulement ceux qui ne sont dans aucun annuaire.

Ceux sont les admins qui configurent les annuaires. Un annuaire est supprimable s'il n'y a rien dedans.

Location:
_plugins_/contacts_et_organisations/trunk
Files:
28 added
18 edited

Legend:

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

    r69828 r77219  
    2424function contacts_declarer_tables_interfaces($interface){
    2525       
     26        $interface['table_des_tables']['annuaires'] = 'annuaires';
    2627        $interface['table_des_tables']['organisations'] = 'organisations';
    2728        $interface['table_des_tables']['organisations_liens'] = 'organisations_liens';
     
    4243        $interface['table_des_traitements']['FONCTION'][] = _TRAITEMENT_TYPO;
    4344        $interface['table_des_traitements']['ACTIVITE'][] = _TRAITEMENT_TYPO;
    44 
     45       
     46        // Chercher plus facilement dans les annuaires avec {annuaire=truc}
     47        $interface['exceptions_des_tables']['organisations']['annuaire'] = array('spip_annuaires', 'identifiant');
     48        $interface['exceptions_des_tables']['contacts']['annuaire'] = array('spip_annuaires', 'identifiant');
     49       
    4550        return $interface;
    4651}
     
    5863 */
    5964function contacts_declarer_tables_objets_sql($tables){
     65        //-- Table annuaires ----------------------------------------
     66        $tables['spip_annuaires'] = array(
     67                // Caractéristiques
     68                'principale' => 'oui',
     69                'page'=>'annuaire',
     70                // Les champs et leurs particularités (clés etc)
     71                'field'=> array(
     72                        'id_annuaire'           => "bigint(21) NOT NULL auto_increment",
     73                        'identifiant'           => 'varchar(255) not null default ""',
     74                        'titre'                         => "text DEFAULT '' NOT NULL",
     75                        'descriptif'            => "TEXT DEFAULT '' NOT NULL",
     76                        'maj'                           => "TIMESTAMP"
     77                ),
     78                'key' => array(
     79                        "PRIMARY KEY"           => "id_annuaire",
     80                        'KEY identifiant'       => 'identifiant',
     81                ),
     82                'join' => array(
     83                        "id_annuaire"   => "id_annuaire",
     84                ),
     85                'titre' => 'titre, "" AS lang',
     86                'champs_editables' => array('identifiant', 'titre', 'descriptif'),
     87                'champs_versionnes' => array('identifiant', 'titre', 'descriptif'),
     88                'rechercher_champs' => array(
     89                        'identifiant' => 8, 'titre' => 8, 'descriptif' => 4,
     90                ),
     91                'tables_jointures' => array(
     92                        'contacts',
     93                        'organisations',
     94                ),
     95                // Chaînes de langue explicite
     96                'texte_objets' => 'contacts:annuaires',
     97                'texte_objet' => 'contacts:annuaire',
     98                'texte_modifier' => 'contacts:annuaire_editer',
     99                'texte_creer' => 'contacts:annuaire_creer',
     100                'texte_creer_associer' => 'contacts:annuaire_creer_associer',
     101                'texte_ajouter' => 'contacts:annuaire_ajouter',
     102                'texte_logo_objet' => 'contacts:annuaire_logo',
     103                'info_aucun_objet'=> 'contacts:annuaire_aucun',
     104                'info_1_objet' => 'contacts:annuaire_un',
     105                'info_nb_objets' => 'contacts:annuaires_nb',
     106        );
     107       
    60108        //-- Table organisations ----------------------------------------
    61109        $tables['spip_organisations'] = array(
     
    71119                'info_aucun_objet'=> 'contacts:organisation_aucun',
    72120                'info_1_objet' => 'contacts:organisation_un',
    73                 'info_nb_objets' => 'contacts:organisation_nb',
     121                'info_nb_objets' => 'contacts:organisations_nb',
    74122                'titre' => 'nom AS titre, "" AS lang',
    75123                'date' => 'date_creation',
    76124                'principale' => 'oui',
    77125                'champs_editables' => array(
    78                         'id_parent', 'id_auteur',
     126                        'id_parent', 'id_auteur', 'id_annuaire',
    79127                        'nom', 'statut_juridique', 'identification', 'activite',
    80128                        'date_creation', 'descriptif'),
    81129                'field'=> array(
    82130                        "id_organisation"       => "bigint(21) NOT NULL auto_increment",
     131                        'id_annuaire'           => 'bigint(21) NOT NULL default 0',
    83132                        "id_parent"                     => "bigint(21) NOT NULL default 0",
    84133                        "id_auteur"             => "bigint(21) NOT NULL default 0",
     
    94143                        "PRIMARY KEY"           => "id_organisation",
    95144                        "KEY id_auteur"         => "id_auteur",
     145                        'KEY id_annuaire'       => 'id_annuaire',
    96146                ),
    97147                'join' => array(
    98148                        "id_organisation"       => "id_organisation",
    99                         "id_auteur"     => "id_auteur"
     149                        "id_auteur"             => "id_auteur",
     150                        'id_annuaire'           => 'id_annuaire',
    100151                ),
    101152                'tables_jointures' => array(
    102                         'auteurs',
     153                        'auteurs', 'annuaires',
    103154                        'organisations_contacts',
    104155                        'organisations_liens',
     
    112163                ),*/
    113164                'champs_versionnes' => array(
    114                         'id_parent', 'id_auteur',
     165                        'id_parent', 'id_auteur', 'id_annuaire',
    115166                         'nom', 'descriptif', 'identification', 'statut_juridique',
    116167                         'activite', 'date_creation'),
     
    131182                'info_aucun_objet'=> 'contacts:contact_aucun',
    132183                'info_1_objet' => 'contacts:contact_un',
    133                 'info_nb_objets' => 'contacts:contact_nb',
     184                'info_nb_objets' => 'contacts:contacts_nb',
    134185                'titre' => 'nom AS titre, "" AS lang',
    135186                'date' => 'date_naissance',
    136187                'principale' => 'oui',
    137188                'champs_editables' => array(
    138                         'id_auteur', 'civilite', 'nom', 'prenom', 'fonction',
     189                        'id_auteur', 'id_annuaire', 'civilite', 'nom', 'prenom', 'fonction',
    139190                        'date_naissance', 'descriptif'),
    140191                'field'=> array(
    141192                        "id_contact"    => "bigint(21) NOT NULL auto_increment",
     193                        'id_annuaire'           => 'bigint(21) NOT NULL default 0',
    142194                        "id_auteur"     => "bigint(21) NOT NULL default 0",
    143195                        "civilite"              => "tinytext DEFAULT '' NOT NULL",
     
    152204                        "PRIMARY KEY"           => "id_contact",
    153205                        "KEY id_auteur"         => "id_auteur",
     206                        'KEY id_annuaire'       => 'id_annuaire',
    154207                ),
    155208                'join' => array(
    156209                        "id_contact"    => "id_contact",
    157                         "id_auteur"     => "id_auteur"
     210                        "id_auteur"     => "id_auteur",
     211                        'id_annuaire'   => 'id_annuaire',
    158212                ),
    159213                'tables_jointures' => array(
    160                         'auteurs',
     214                        'auteurs', 'annuaires',
    161215                        'organisations_contacts',
    162216                        'contacts_liens',
     
    170224                ),*/
    171225                'champs_versionnes' => array(
    172                         'id_auteur', 'civilite', 'nom', 'prenom', 'fonction',
     226                        'id_auteur', 'id_annuaire', 'civilite', 'nom', 'prenom', 'fonction',
    173227                        'date_naissance', 'descriptif'),
    174228        );
  • _plugins_/contacts_et_organisations/trunk/contacts_administrations.php

    r77090 r77219  
    166166        );
    167167       
    168         // Pour ceux qui ont déjà le plugin installé, on
     168        // Pour ceux qui ont déjà le plugin installé, on active déjà la gestion de l'arborescence pour garder la compat
    169169        $maj['1.8.0'] = array(
    170170                array('include_spip', 'inc/config'),
    171171                array('ecrire_config', 'contacts_et_organisations/utiliser_organisations_arborescentes', 'on'),
     172        );
     173       
     174        // Ajout de la gestion d'annuaires différents
     175        $maj['1.9.0'] = array(
     176                array('maj_tables', array('spip_annuaires', 'spip_organisations', 'spip_contacts')),
    172177        );
    173178
  • _plugins_/contacts_et_organisations/trunk/contacts_autoriser.php

    r69828 r77219  
    6161}
    6262
     63/**
     64 * Autorisation de créer un annuaire
     65 *
     66 * Ceux qui peuvent configurer le site
     67 *
     68 * @param  string $faire Action demandée
     69 * @param  string $type  Type d'objet sur lequel appliquer l'action
     70 * @param  int    $id    Identifiant de l'objet
     71 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     72 * @param  array  $opt   Options de cette autorisation
     73 * @return bool          true s'il a le droit, false sinon
     74**/
     75function autoriser_annuaire_creer_dist($faire, $type, $id, $qui, $opt){
     76        return autoriser('configurer', $type, $id, $qui, $opt);
     77}
     78
     79/**
     80 * Autorisation de modifier un annuaire
     81 *
     82 * Ceux qui peuvent configurer le site
     83 *
     84 * @param  string $faire Action demandée
     85 * @param  string $type  Type d'objet sur lequel appliquer l'action
     86 * @param  int    $id    Identifiant de l'objet
     87 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     88 * @param  array  $opt   Options de cette autorisation
     89 * @return bool          true s'il a le droit, false sinon
     90**/
     91function autoriser_annuaire_modifier_dist($faire, $type, $id, $qui, $opt){
     92        return autoriser('configurer', $type, $id, $qui, $opt);
     93}
     94
     95/**
     96 * Autorisation de supprimer un annuaire
     97 *
     98 * Ceux qui peuvent configurer le site ET qu'il n'y ait rien dans l'annuaire
     99 *
     100 * @param  string $faire Action demandée
     101 * @param  string $type  Type d'objet sur lequel appliquer l'action
     102 * @param  int    $id    Identifiant de l'objet
     103 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     104 * @param  array  $opt   Options de cette autorisation
     105 * @return bool          true s'il a le droit, false sinon
     106**/
     107function autoriser_annuaire_supprimer_dist($faire, $type, $id, $qui, $opt){
     108        return (
     109                autoriser('configurer', $type, $id, $qui, $opt)
     110                and !sql_count(sql_select('id_organisation', 'spip_organisations', 'id_annuaire = '.intval($id)))
     111                and !sql_count(sql_select('id_contact', 'spip_contacts', 'id_annuaire = '.intval($id)))
     112        );
     113}
     114
    63115?>
  • _plugins_/contacts_et_organisations/trunk/formulaires/configurer_contacts_et_organisations.html

    r77090 r77219  
    1010
    1111<ul>
     12        [(#SAISIE{oui_non,utiliser_annuaires,
     13                label=<:contacts:cfg_utiliser_annuaires_label:>,
     14                explication=<:contacts:cfg_utiliser_annuaires_explication:>})]
     15       
    1216        [(#SAISIE{oui_non,utiliser_organisations_arborescentes,
    1317                label=<:contacts:cfg_utiliser_organisations_arborescentes_label:>,
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_contact.html

    r47043 r77219  
    1313                        ]
    1414                        <ul>
     15                        [(#CONFIG{contacts_et_organisations/utiliser_annuaires}|oui)
     16                        [(#SAISIE{annuaires, id_annuaire,
     17                                defaut=#ENV{id_annuaire},
     18                                label=<:contacts:annuaire:>,
     19                                option_intro=<:contacts:annuaire_aucun:>})]
     20                        ]
     21                       
    1522                        [(#SAISIE{input, civilite,
    1623                                label=<:contacts:label_civilite:>})]
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_contact.php

    r69828 r77219  
    3232function formulaires_editer_contact_charger_dist($id_contact='new', $id_organisation=0, $redirect='', $associer_objet=''){
    3333        $contexte = formulaires_editer_objet_charger('contact', $id_contact, $id_organisation, 0, $redirect, '');
     34        if (!intval($id_contact) and $id_annuaire = _request('id_annuaire')){
     35                $contexte['id_annuaire'] = $id_annuaire;
     36        }
    3437        return $contexte;
    3538}
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_organisation.html

    r77090 r77219  
    99                        <input type='hidden' name='id_organisation' value='#ENV{id_organisation}' />
    1010                        <ul>
     11                                [(#CONFIG{contacts_et_organisations/utiliser_annuaires}|oui)
     12                                [(#SAISIE{annuaires, id_annuaire,
     13                                        defaut=#ENV{id_annuaire},
     14                                        label=<:contacts:annuaire:>,
     15                                        option_intro=<:contacts:annuaire_aucun:>})]
     16                                ]
     17                               
    1118                                [(#SAISIE{input, nom,
    1219                                        label=<:contacts:label_nom:>})]
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_organisation.php

    r69828 r77219  
    3131function formulaires_editer_organisation_charger_dist($id_organisation='new', $id_parent=0, $redirect='', $associer_objet=''){
    3232        $contexte = formulaires_editer_objet_charger('organisation', $id_organisation, $id_parent, 0, $redirect, '');
     33        if (!intval($id_organisation) and $id_annuaire = _request('id_annuaire')){
     34                $contexte['id_annuaire'] = $id_annuaire;
     35        }
    3336        return $contexte;
    3437}
  • _plugins_/contacts_et_organisations/trunk/lang/contacts_fr.php

    r77090 r77219  
    77
    88        // A
     9        'annuaire' => 'Annuaire',
     10        'annuaire_ajouter' => 'Ajouter un annuaire',
     11        'annuaire_aucun' => 'Aucun annuaire',
     12        'annuaire_champ_descriptif_label' => 'Descriptif',
     13        'annuaire_champ_identifiant_explication' => 'Un identifiant informatique unique, pour aider à filtrer vos contenus, par exemple avec {annuaire=associations} pour l’identifiant "associations".',
     14        'annuaire_champ_identifiant_label' => 'Identifiant',
     15        'annuaire_champ_titre_label' => 'Titre',
     16        'annuaire_creer' => 'Créer un nouvel annuaire',
     17        'annuaire_creer_associer' => 'Créer et associer un nouvel annuaire',
     18        'annuaire_editer' => 'Modifier cet annuaire',
     19        'annuaire_logo' => 'Logo de cet annuaire',
     20        'annuaire_un' => 'Un annuaire',
     21        'annuaire_supprimer' => 'Supprimer cet annuaire',
     22        'annuaires' => 'Annuaires',
     23        'annuaires_nb' => '@nb@ annuaires',
     24        'annuaires_tout' => 'Tous les annuaires',
    925        'aucun_contact' => 'Il n’y a aucun contact !',
    1026        'aucune_organisation' => 'Il n’y a aucune organisation !',
     
    4258                afin d’éviter des contacts orphelins de leur auteur (si celui-ci a été supprimé) mais soyez vigilents :
    4359                une suppression est définitive et les auteurs passent à la poubelle même s’ils ont écrit des articles…',
     60        'cfg_utiliser_annuaires_explication' => 'Activer la possibilité de classer vos contacts et organisations dans plusieurs annuaires différents.',
     61        'cfg_utiliser_annuaires_label' => 'Utiliser plusieurs annuaires',
    4462        'cfg_utiliser_organisations_arborescentes_explication' => 'Il est possible de définir qu’une organisation est enfant d’une autre. Lorsque cette option est activée, cela ajoute un champ dans l’édition d’une organisation pour préciser ce lien de parenté.',
    4563        'cfg_utiliser_organisations_arborescentes_label' => 'Utiliser une arborescence d’organisations',
     
    6381        'contact_creer' => 'Créer un contact',
    6482        'contact_creer_associer' => 'Créer et associer un contact',
     83        'contact_creer_dans_cet_annuaire' => 'Créer un contact dans cet annuaire',
    6584        'contact_editer' => 'Éditer ce contact',
    6685        'contact_logo' => 'Logo de ce contact',
     
    7392        'contacts' => 'Contacts',
    7493        'contacts_nb' => '@nb@ contacts',
     94        'contacts_tout' => 'Tous les contacts',
    7595        'creer_auteur_contact' => 'Créer un nouvel auteur et le lier à ce contact',
    7696        'creer_auteur_organisation' => 'Créer un nouvel auteur et le lier à cette organisation',
     
    84104
    85105        // E
     106        'erreur_annuaire_identifiant_existant' => 'Cet identifiant est déjà utilisé par l’un de vos annuaires.',
    86107        'est_un_contact' => 'Cet auteur est défini comme étant un contact.',
    87108        'est_une_organisation' => 'Cet auteur est défini comme étant une organisation.',
     
    160181        'organisation_creer_associer' => 'Créer et associer une organisation',
    161182        'organisation_creer_fille' => 'Créer une organisation fille',
     183        'organisation_creer_dans_cet_annuaire' => 'Créer une organisation dans cet annuaire',
    162184        'organisation_editer' => 'Éditer cette organisation',
    163185        'organisation_logo' => 'Logo de l’organisation',
     
    170192        'organisations' => 'Organisations',
    171193        'organisations_nb' => '@nb@ organisations',
     194        'organisations_tout' => 'Toutes les organisations',
    172195
    173196        // P
     
    177200        'recherche_de' => 'Recherche de « @recherche@ »',
    178201        'rechercher' => 'Rechercher',
     202        'resume_annuaire' => 'Résumé de votre annuaire',
     203        'resume_annuaires' => 'Résumé de vos annuaires',
    179204
    180205        // S
  • _plugins_/contacts_et_organisations/trunk/paquet.xml

    r77090 r77219  
    22        prefix="contacts"
    33        categorie="auteur"
    4         version="2.9.0"
     4        version="2.10.0"
    55        etat="test"
    66        compatibilite="[3.0.0-dev;3.0.*]"
    77        logo="images/contacts-128.png"
    8         schema="1.8.0"
     8        schema="1.9.0"
    99        documentation="http://www.spip-contrib.net/Plugin-Contacts-Organisations"
    1010>
  • _plugins_/contacts_et_organisations/trunk/prive/objets/liste/contacts.html

    r69640 r77219  
    44        id_contact,1
    55}})
    6 ]<B_liste_contacts>
     6]
     7
     8<BOUCLE_test_annuaire(CONDITION){si #CONFIG{contacts_et_organisations/utiliser_annuaires}}>
     9<div class="onglets_simple clearfix">
     10        <ul>
     11                <li>
     12                        [(#ENV{id_annuaire}|is_null|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,''})]">})]
     13                        <:contacts:contacts_tout:>
     14                        [(#ENV{id_annuaire}|is_null|?{</strong>, </a>})]
     15                </li>
     16                <BOUCLE_filtre_annuaires(ANNUAIRES){par titre}>
     17                <li>
     18                        <BOUCLE_comptage_contacts_annuaire(CONTACTS){id_annuaire}/>#SET{nb_contacts,#TOTAL_BOUCLE}<//B_comptage_contacts_annuaire>
     19                        [(#ENV{id_annuaire}|=={#ID_ANNUAIRE}|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,#ID_ANNUAIRE})]">})]
     20                        #TITRE (#GET{nb_contacts})
     21                        [(#ENV{id_annuaire}|=={#ID_ANNUAIRE}|?{</strong>,</a>})]
     22                </li>
     23                </BOUCLE_filtre_annuaires>
     24                <li>
     25                        <BOUCLE_comptage_contacts_aucun(ORGANISATIONS){id_annuaire=0}/>#SET{nb_contacts,#TOTAL_BOUCLE}<//B_comptage_contacts_aucun>
     26                        [(#ENV{id_annuaire}|=={0}|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,0})]">})]
     27                        <:contacts:annuaire_aucun:> (#GET{nb_contacts})
     28                        [(#ENV{id_annuaire}|=={0}|?{</strong>, </a>})]
     29                </li>
     30        </ul>
     31</div>
     32</BOUCLE_test_annuaire>
     33
     34<B_liste_contacts>
    735#ANCRE_PAGINATION
    836<div class="liste-objets contacts">
     
    1947        <tbody>
    2048        <BOUCLE_liste_contacts(CONTACTS)
    21                 {id_organisation?}{recherche ?}
     49                {id_organisation?}{recherche ?}{id_annuaire?}
    2250                {auteurs.statut ?= #ENV{statut,''}}
    2351                {tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,20}}>
  • _plugins_/contacts_et_organisations/trunk/prive/objets/liste/organisations.html

    r69640 r77219  
    44        id_auteur,1
    55}})
    6 ]<B_liste_orga>
     6]
     7
     8<BOUCLE_test_annuaire(CONDITION){si #CONFIG{contacts_et_organisations/utiliser_annuaires}}>
     9<div class="onglets_simple clearfix">
     10        <ul>
     11                <li>
     12                        [(#ENV{id_annuaire}|is_null|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,''})]">})]
     13                        <:contacts:organisations_tout:>
     14                        [(#ENV{id_annuaire}|is_null|?{</strong>, </a>})]
     15                </li>
     16                <BOUCLE_filtre_annuaires(ANNUAIRES){par titre}>
     17                <li>
     18                        <BOUCLE_comptage_organisations_annuaire(ORGANISATIONS){id_annuaire}/>#SET{nb_organisations,#TOTAL_BOUCLE}<//B_comptage_organisations_annuaire>
     19                        [(#ENV{id_annuaire}|=={#ID_ANNUAIRE}|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,#ID_ANNUAIRE})]">})]
     20                        #TITRE (#GET{nb_organisations})
     21                        [(#ENV{id_annuaire}|=={#ID_ANNUAIRE}|?{</strong>,</a>})]
     22                </li>
     23                </BOUCLE_filtre_annuaires>
     24                <li>
     25                        <BOUCLE_comptage_organisations_aucun(ORGANISATIONS){id_annuaire=0}/>#SET{nb_organisations,#TOTAL_BOUCLE}<//B_comptage_organisations_aucun>
     26                        [(#ENV{id_annuaire}|=={0}|?{<strong>, <a class="ajax" href="[(#SELF|parametre_url{id_annuaire,0})]">})]
     27                        <:contacts:annuaire_aucun:> (#GET{nb_organisations})
     28                        [(#ENV{id_annuaire}|=={0}|?{</strong>, </a>})]
     29                </li>
     30        </ul>
     31</div>
     32</BOUCLE_test_annuaire>
     33
     34<B_liste_orga>
    735#ANCRE_PAGINATION
    836<div class="liste-objets organisations">
     
    2048        <BOUCLE_liste_orga(ORGANISATIONS)
    2149                {compteur_contacts}
    22                 {id_contact?}{id_auteur?}{id_parent ?= #ENV{id_parent}}
     50                {id_annuaire?}{id_contact?}{id_auteur?}{id_parent ?= #ENV{id_parent}}
    2351                {recherche?}{auteurs.statut ?= #ENV{statut,''}}
    2452                {tri #ENV{order,nom},#GET{defaut_tri}}{pagination #ENV{nb,20}}>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/contenu/repertoire.html

    r58199 r77219  
    22[(#VAL{contacts}|barre_onglets{repertoire})]
    33
    4 <h1><:contacts:titre_page_repertoire:></h1>
     4<h1><:contacts:bouton_contacts_organisations:></h1>
    55
    6 [(#INCLURE{fond=prive/objets/liste/repertoire, env, ajax})]
     6<BOUCLE_test_annuaires(CONDITION){si #CONFIG{contacts_et_organisations/utiliser_annuaires}}>
     7        <div class="liste-objets annuaires">
     8                <table class="spip liste icones_img">
     9                        <caption><strong class="caption"><:contacts:resume_annuaires:></strong></caption>
     10                        <thead>
     11                                <tr>
     12                                        <th class="annuaire principale"><:contacts:annuaires:></th>
     13                                        <th class="organisation"><:contacts:organisations:></th>
     14                                        <th class="contact"><:contacts:contacts:></th>
     15                                </tr>
     16                        </thead>
     17                        <tbody>
     18                                <BOUCLE_annuaires(ANNUAIRES){par titre}>
     19                                <tr>
     20                                        <td class="annuaire principale">
     21                                                <a href="#URL_ECRIRE{annuaire,id_annuaire=#ID_ANNUAIRE}">#TITRE</a>
     22                                        </td>
     23                                        <td class="organisation">
     24                                                <BOUCLE_comptage_organisations_annuaire(ORGANISATIONS){id_annuaire} />
     25                                                <a href="#URL_ECRIRE{organisations,id_annuaire=#ID_ANNUAIRE}">
     26                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:organisation_un, contacts:organisations_nb}|sinon{<:contacts:organisation_aucun:>})]
     27                                                </a>
     28                                                <//B_comptage_organisations_annuaire>
     29                                                [(#AUTORISER{creer,organisation})
     30                                                        [(#URL_ECRIRE{organisation_edit,new=oui&id_annuaire=#ID_ANNUAIRE}
     31                                                                |icone_verticale{<:contacts:organisation_creer_dans_cet_annuaire:>,organisation-16.png,new,right})]
     32                                                ]
     33                                        </td>
     34                                        <td class="contact">
     35                                                <BOUCLE_comptage_contacts_annuaire(CONTACTS){id_annuaire} />
     36                                                <a href="#URL_ECRIRE{contacts,id_annuaire=#ID_ANNUAIRE}">
     37                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:contact_un, contacts:contacts_nb}sinon{<:contacts:contact_aucun:>})]
     38                                                </a>
     39                                                <//B_comptage_contacts_annuaire>
     40                                                [(#AUTORISER{creer,contact})
     41                                                        [(#URL_ECRIRE{contact_edit,new=oui&id_annuaire=#ID_ANNUAIRE}
     42                                                                |icone_verticale{<:contacts:contact_creer_dans_cet_annuaire:>,contact-16.png,new,right})]
     43                                                ]
     44                                        </td>
     45                                </tr>
     46                                </BOUCLE_annuaires>
     47                        </tbody>
     48                        <tfoot>
     49                                <tr>
     50                                        <td class="annuaire principale">
     51                                                <:contacts:annuaire_aucun:>
     52                                        </td>
     53                                        <td class="organisation">
     54                                                <BOUCLE_comptage_organisations_aucun(ORGANISATIONS){id_annuaire=0} />
     55                                                <a href="#URL_ECRIRE{organisations,id_annuaire=0}">
     56                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:organisation_un, contacts:organisations_nb}|sinon{<:contacts:organisation_aucun:>})]
     57                                                </a>
     58                                                <//B_comptage_organisations_aucun>
     59                                                [(#AUTORISER{creer,organisation})
     60                                                        [(#URL_ECRIRE{organisation_edit,new=oui}
     61                                                                |icone_verticale{<:contacts:organisation_creer:>,organisation-16.png,new,right})]
     62                                                ]
     63                                        </td>
     64                                        <td class="contact">
     65                                                <BOUCLE_comptage_contacts_aucun(CONTACTS){id_annuaire=0} />
     66                                                <a href="#URL_ECRIRE{contacts,id_annuaire=0}">
     67                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:contact_un, contacts:contacts_nb}sinon{<:contacts:contact_aucun:>})]
     68                                                </a>
     69                                                <//B_comptage_contacts_aucun>
     70                                                [(#AUTORISER{creer,contact})
     71                                                        [(#URL_ECRIRE{contact_edit,new=oui}
     72                                                                |icone_verticale{<:contacts:contact_creer:>,contact-16.png,new,right})]
     73                                                ]
     74                                        </td>
     75                                </tr>
     76                                <tr class="on">
     77                                        <td class="annuaire principale">
     78                                                <:contacts:annuaires_tout:>
     79                                        </td>
     80                                        <td class="organisation">
     81                                                <BOUCLE_comptage_organisations_tous(ORGANISATIONS) />
     82                                                <a href="#URL_ECRIRE{organisations}">
     83                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:organisation_un, contacts:organisations_nb}|sinon{<:contacts:organisation_aucun:>})]
     84                                                </a>
     85                                                <//B_comptage_organisations_tous>
     86                                        </td>
     87                                        <td class="contact">
     88                                                <BOUCLE_comptage_contacts_tous(CONTACTS) />
     89                                                <a href="#URL_ECRIRE{contacts}">
     90                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:contact_un, contacts:contacts_nb}sinon{<:contacts:contact_aucun:>})]
     91                                                </a>
     92                                                <//B_comptage_contacts_tous>
     93                                        </td>
     94                                </tr>
     95                        </tfoot>
     96                </table>
     97        </div>
     98       
     99        [(#AUTORISER{creer,organisation})
     100                [(#URL_ECRIRE{annuaire_edit,new=oui}
     101                        |icone_verticale{<:contacts:annuaire_creer:>,annuaire,new,left})]
     102        ]
     103</BOUCLE_test_annuaires>
     104        <div class="liste-objets">
     105                <table class="spip liste">
     106                        <caption><:contacts:resume_annuaire:></caption>
     107                        <thead>
     108                                <tr>
     109                                        <th class="organisation"><:contacts:organisations:></th>
     110                                        <th class="contact"><:contacts:contacts:></th>
     111                                </tr>
     112                        </thead>
     113                        <tbody>
     114                                <tr>
     115                                        <td class="organisation">
     116                                                <BOUCLE_comptage_organisations(ORGANISATIONS) />
     117                                                <a href="#URL_ECRIRE{organisations}">
     118                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:organisation_un, contacts:organisations_nb}|sinon{<:contacts:organisation_aucun:>})]
     119                                                </a>
     120                                                <//B_comptage_organisations>
     121                                                [(#AUTORISER{creer,organisation})
     122                                                        [(#URL_ECRIRE{organisation_edit,new=oui}
     123                                                                |icone_verticale{<:contacts:organisation_creer:>,organisation,new,right})]
     124                                                ]
     125                                        </td>
     126                                        <td class="contact">
     127                                                <BOUCLE_comptage_contacts(CONTACTS) />
     128                                                <a href="#URL_ECRIRE{contacts}">
     129                                                        [(#TOTAL_BOUCLE|singulier_ou_pluriel{contacts:contact_un, contacts:contacts_nb}sinon{<:contacts:contact_aucun:>})]
     130                                                </a>
     131                                                <//B_comptage_contacts>
     132                                                [(#AUTORISER{creer,contact})
     133                                                        [(#URL_ECRIRE{contact_edit,new=oui}
     134                                                                |icone_verticale{<:contacts:contact_creer:>,contact,new,right})]
     135                                                ]
     136                                        </td>
     137                                </tr>
     138                        </tbody>
     139                </table>
     140        </div>
     141<//B_test_annuaires>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/hierarchie/contact.html

    r58266 r77219  
    11<BOUCLE_contact(CONTACTS){id_contact}{tous}>
    2 <:contacts:bouton_contacts_organisations:></a>
    3 &gt; <a href="[(#URL_ECRIRE{contacts})]"><:contacts:contacts:></a>
    4 &gt; <strong>#PRENOM #NOM</strong>
     2<a href="#URL_ECRIRE{repertoire}"><:contacts:bouton_contacts_organisations:></a><span class="sep divider">
     3&gt; </span><a href="[(#URL_ECRIRE{contacts})]"><:contacts:contacts:></a><span class="sep divider">
     4[(#CONFIG{contacts_et_organisations/utiliser_annuaires}|oui)
     5&gt; </span><a href="#URL_ECRIRE{contacts,id_annuaire=#ID_ANNUAIRE}">[(#ID_ANNUAIRE|?{#INFO_TITRE{annuaire,#ID_ANNUAIRE}, <:contacts:annuaire_aucun:>})]</a><span class="sep divider">
     6]
     7&gt; </span><strong>#PRENOM #NOM</strong>
    58</BOUCLE_contact>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/hierarchie/contacts.html

    r58266 r77219  
    1 
    2 <:contacts:bouton_contacts_organisations:></a>
    3 &gt; <strong><:contacts:contacts:></strong>
     1<a href="#URL_ECRIRE{repertoire}"><:contacts:bouton_contacts_organisations:></a><span class="sep divider">
     2&gt; </span><strong><:contacts:contacts:></strong>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/hierarchie/organisation.html

    r58266 r77219  
    11<BOUCLE_orga(ORGANISATIONS){id_organisation}{tous}>
    2 <:contacts:bouton_contacts_organisations:></a>
    3 &gt; <a href="[(#URL_ECRIRE{organisations})]"><:contacts:organisations:></a>
     2<a href="#URL_ECRIRE{repertoire}"><:contacts:bouton_contacts_organisations:></a><span class="sep divider">
     3&gt; </span><a href="[(#URL_ECRIRE{organisations})]"><:contacts:organisations:></a><span class="sep divider">
    44        <BOUCLE_orga_chemin(ORGANISATIONS){id_organisation=#ID_PARENT}{tous}>
    55                <BOUCLE_orga_chemin_recursif(BOUCLE_orga_chemin) />
    66                [(#REM) #ID_PARENT doit être present sinon la recursivite se fait mal... etonnant ]
    7 &gt; <a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]">#NOM</a>
     7                &gt; </span><a href="[(#ID_ORGANISATION|generer_url_entite{organisation})]">#NOM</a><span class="sep divider">
    88        </BOUCLE_orga_chemin>
    9 &gt; <strong>#NOM</strong>
     9[(#CONFIG{contacts_et_organisations/utiliser_annuaires}|oui)
     10&gt; </span><a href="#URL_ECRIRE{organisations,id_annuaire=#ID_ANNUAIRE}">[(#ID_ANNUAIRE|?{#INFO_TITRE{annuaire,#ID_ANNUAIRE}, <:contacts:annuaire_aucun:>})]</a><span class="sep divider">
     11]
     12&gt; </span><strong>#NOM</strong>
    1013</BOUCLE_orga>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/hierarchie/organisations.html

    r58266 r77219  
    1 
    2 <:contacts:bouton_contacts_organisations:></a>
    3 &gt; <strong><:contacts:organisations:></strong>
     1<a href="#URL_ECRIRE{repertoire}"><:contacts:bouton_contacts_organisations:></a><span class="sep divider">
     2&gt; </span><strong><:contacts:organisations:></strong>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/hierarchie/repertoire.html

    r77095 r77219  
    1 <a href="#URL_ECRIRE"><:accueil_site:></a><span class="sep divider">
    2 &gt; </span><strong class="on active"><:contacts:bouton_contacts_organisations:></strong>
Note: See TracChangeset for help on using the changeset viewer.