Changeset 56978 in spip-zone


Ignore:
Timestamp:
Jan 12, 2012, 6:58:16 PM (8 years ago)
Author:
marcimat@…
Message:

Début de boucle (PMB:LIEUX) et (PMB:LIEUX){racine} (identique)

Location:
_plugins_/spip-pmb/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-pmb/trunk/content/pmb_catalogue.html

    r56901 r56978  
    1 [(#ENV{id_section}|non)
    2         [(#ENV{id_location}|non)
    3                 [(#SET{tab_locations,[(#REM|pmb_liste_afficher_locations)]})]
    4         ]
    5 ]
     1
    62[(#ENV{id_location}|oui)
    73        [(#SET{tab_locationsections,[(#ENV{id_location}|pmb_location_extraire)]})]
     
    3834
    3935
     36
    4037<INCLURE{fond=inclure/inc-pmb_catalogue}{env}
    41         {tab_locations=#GET{tab_locations}}
    4238        {tab_locationsections=#GET{tab_locationsections}}
    4339        {tab_sections=#GET{tab_sections}}
  • _plugins_/spip-pmb/trunk/inclure/inc-pmb_catalogue.html

    r56928 r56978  
    44]
    55
    6 [(#REM) Locations à la racine ]
    7 <B_tab_resultat1>
     6<B_lieux>
    87<div class="liste menu articles">
    9         <h2 class="invisible"><:articles_rubrique:></h2>
    108        <ul class="liste-items">
    11           <BOUCLE_tab_resultat1(POUR){tableau #ENV{tab_locations}}>
    12                 [(#SET{url,[(#URL_PMB_CATALOGUE
    13                         |parametre_url{id_location,#ENV{tab_locations/#CLE/location_id}})]})]
     9        <BOUCLE_lieux(PMB:LIEUX){id_location ?}{id_section ?}>
     10               
     11                [(#SET{url,[(#URL_PMB_CATALOGUE|parametre_url{id_location,#ID_LOCATION})]})]
     12
    1413                <li class="item">
    1514                        <a href="#GET{url}">
     
    1918                        </a>
    2019
    21                         <h3><a href="#GET{url}">[(#ENV{tab_locations/#CLE/location_caption}|ucfirst)]</a></h3>
     20                        <h3><a href="#GET{url}">#TITRE</a></h3>
    2221                </li>
    23                 </BOUCLE_tab_resultat1>
     22        </BOUCLE_lieux>
    2423        </ul>
    2524</div>
    26 </B_tab_resultat1>
     25</B_lieux>
    2726
    28         [(#REM) la valeur 0 contient des infos ininterressantes. ]
    29         #SET{tab,#ENV{tab_locationsections}|depile}
    30 
    31         [(#REM) Si pas d'info de location + section, on tente juste section ]
    32         [(#GET{tab}|count|non)
    33                 #SET{tab,#ENV{tab_sections}|depile}
    34         ]
    35 
    36         [(#REM) Une location et ses sections OU uniquement les sections ]
    37         <B_tab_resultat2>
    38         <div class="liste menu articles">
    39                 <h2 class="invisible"><:articles_rubrique:></h2>
    40                 <ul class="liste-items">
    41                 <BOUCLE_tab_resultat2(POUR){tableau #GET{tab}}>
    42                         [(#SET{url,[(#URL_PMB_CATALOGUE
    43                                 |parametre_url{id_section,#GET{tab/#CLE/section_id}}
    44                                 |parametre_url{id_location_memo,#GET{tab/#CLE/section_location}})]})]
    45                
    46                         <li class="item">
    47                                 <a href="#GET{url}">
    48                                 [(#GET{tab/#CLE/section_image}|contient{rayonnage}|non)
    49                                         [(#GET{tab/#CLE/section_image}
    50                                                 |image_reduire{#ENV{largeur,100},#ENV{hauteur,0}}
    51                                                 |inserer_attribut{class,spip_logos})]
    52                                 ]
    53                                 [(#GET{tab/#CLE/section_image}|contient{rayonnage}|oui)
    54                                         [(#CHEMIN{img/logo-section.png}
    55                                                 |image_reduire{#ENV{largeur,0},#ENV{hauteur,50}}
    56                                                 |inserer_attribut{class,spip_logos})]
    57                                 ]
    58                                 </a>
    59                                 <h3><a href="#GET{url}">[(#GET{tab/#CLE/section_caption}|ucfirst)]</a></h3>
    60                         </li>
    61                 </BOUCLE_tab_resultat2>
    62                 </ul>
    63         </div>
    64         </B_tab_resultat2>
     27[(#REM)
     28        Si on est dans une section,
     29        on affiche ses notices et la recherche
     30]
     31[(#ENV{id_section}|oui)
    6532
    6633        [(#INCLURE{fond=inclure/inc-recherche-pmb_catalogue}{env}
     
    7542                {typdoc}
    7643                {debut}{fin} )]
    77        
     44
    7845        <INCLURE{fond=inclure/inc-recherche-avancee}{recherche}{env}>
    7946
    80 <//B_tab_resultat1>
     47]
     48
     49
     50[(#REM) la valeur 0 contient des infos ininterressantes. ]
     51#SET{tab,#ENV{tab_locationsections}|depile}
     52
     53[(#REM) Si pas d'info de location + section, on tente juste section ]
     54[(#GET{tab}|count|non)
     55        #SET{tab,#ENV{tab_sections}|depile}
     56]
     57
     58[(#REM) Une location et ses sections OU uniquement les sections ]
     59<B_tab_resultat2>
     60<div class="liste menu articles">
     61        <h2 class="invisible"><:articles_rubrique:></h2>
     62        <ul class="liste-items">
     63        <BOUCLE_tab_resultat2(POUR){tableau #GET{tab}}>
     64                [(#SET{url,[(#URL_PMB_CATALOGUE
     65                        |parametre_url{id_section,#GET{tab/#CLE/section_id}}
     66                        |parametre_url{id_location_memo,#GET{tab/#CLE/section_location}})]})]
     67       
     68                <li class="item">
     69                        <a href="#GET{url}">
     70                        [(#GET{tab/#CLE/section_image}|contient{rayonnage}|non)
     71                                [(#GET{tab/#CLE/section_image}
     72                                        |image_reduire{#ENV{largeur,100},#ENV{hauteur,0}}
     73                                        |inserer_attribut{class,spip_logos})]
     74                        ]
     75                        [(#GET{tab/#CLE/section_image}|contient{rayonnage}|oui)
     76                                [(#CHEMIN{img/logo-section.png}
     77                                        |image_reduire{#ENV{largeur,0},#ENV{hauteur,50}}
     78                                        |inserer_attribut{class,spip_logos})]
     79                        ]
     80                        </a>
     81                        <h3><a href="#GET{url}">[(#GET{tab/#CLE/section_caption}|ucfirst)]</a></h3>
     82                </li>
     83        </BOUCLE_tab_resultat2>
     84        </ul>
     85</div>
     86</B_tab_resultat2>
     87
     88
  • _plugins_/spip-pmb/trunk/pmb_fonctions.php

    r56963 r56978  
    114114
    115115
    116 function pmb_liste_afficher_locations() {
    117         $tableau_sections = Array();
    118         try {
    119                 $ws = pmb_webservice();
    120                 $tab_locations = $ws->pmbesOPACGeneric_list_locations();
    121                 $cpt = 0;
    122                 if (is_array($tab_locations)) {
    123                         foreach ($tab_locations as $location) {
    124                                 $tableau_locations[$cpt] = Array();
    125                                 $tableau_locations[$cpt]['location_id'] = $location->location_id;
    126                                 $tableau_locations[$cpt]['location_caption'] = $location->location_caption;
    127                                 $cpt++;
     116
     117
     118/**
     119 * Recupere les informations de locations racine,
     120 * c'est a dire la liste des centres documentaires geres par ce PMB
     121 *
     122 * @return array
     123 *              Tableau contenant pour chaque lieu la liste des champs
     124 *              que l'on a pu recuperer.
     125**/
     126function pmb_extraire_locations_racine() {
     127
     128        static $locations = array();
     129        if (count($locations)) {
     130                return $locations;
     131        }
     132
     133        try {
     134                $ws = pmb_webservice();
     135                $r = $ws->pmbesOPACGeneric_list_locations();
     136                if (is_array($r)) {
     137                        foreach ($r as $index => $location) {
     138                                $locations[$index] = Array();
     139                                $locations[$index]['id_location'] = $location->location_id;
     140                                $locations[$index]['titre'] = $location->location_caption;
     141                                $locations[$index]['type'] = "racine";
    128142                        }
    129143                }
     
    131145                 echo 'Exception reçue (3) : ',  $e->getMessage(), "\n";
    132146        }
    133         return $tableau_locations;
    134 }
     147        return $locations;
     148}
     149
     150
     151
    135152
    136153
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r56963 r56978  
    225225}
    226226
     227/**
     228 * Modifier le critere racine
     229 */
     230function critere_PMB_racine_dist($idb, &$boucles, $crit) {
     231        $c = array("'='", "racine", 1);
     232        $boucles[$idb]->where[] = $c;
     233}
    227234
    228235/**
     
    410417
    411418
     419/**
     420 *
     421 * Selectionne les lieux de classement des notices
     422 * et retourne un tableau des elements parsees
     423 * Un lieu est au sens PMB / systeme de documentation
     424 *
     425 * - Location : c'est comme un centre de doc physique, une adresse.
     426 *              1 PMB permet de gérer plusieurs Locations. On peut dire
     427 *              qu'il permet de gérer un groupement de bibliotheques/centre de docs.
     428 *
     429 * - Section : C'est comme un rayonnage de centre de doc. Un theme de classement en quelque sorte.
     430 *
     431 * Les centres de docs a la racine
     432 * (PMB:LIEUX)
     433 * (PMB:LIEUX) {racine}
     434 *
     435 *
     436 *
     437 */
     438function inc_pmb_lieux_select_dist(&$command, $iterateur) {
     439        $criteres = $command['where'];
     440
     441        // racine indique... on ne s'occupe pas du reste...
     442        // depuis un critere {racine}
     443        if (pmb_recherche_critere($criteres, 'racine')) {
     444                // retourner les auteurs selectionnees
     445                $iterateur->exception_des_criteres('racine');
     446                return pmb_extraire_locations_racine();
     447        }
     448
     449        $res = array();
     450
     451        // testons la presence de id_section ou id_location
     452        // en leur absence, on boucle sur la racine.
     453        $id_location = pmb_critere_valeur($criteres, 'id_location');
     454        $id_section = pmb_critere_valeur($criteres,  'id_section');
     455       
     456        if (!$id_location and !$id_section) {
     457                return pmb_extraire_locations_racine();
     458        }
     459
     460       
     461
     462        return $res;
     463}
     464
     465
     466
     467
     468
    412469
    413470// retourne l'intersection des ids trouves
Note: See TracChangeset for help on using the changeset viewer.