Changeset 74837 in spip-zone


Ignore:
Timestamp:
Aug 19, 2013, 3:08:36 PM (6 years ago)
Author:
eric@…
Message:

Gestion sur le client des erreurs retournées par le serveur.

Location:
_plugins_/boussole/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/boussole/trunk/action/serveur_informer_boussole.php

    r74718 r74837  
    1919                $boussoles = pipeline('declarer_boussoles', $boussoles);
    2020
    21                 // TODO : renvoyer un fichier avec une référence de message en cas d'erreur
     21                // Si erreur, on renvoie un id sous forme d'une balise erreur
     22                $erreur = '';
     23                $fichier_xml = '';
    2224                if ($boussoles) {
    2325                        // Vérifier que la boussole demandée est bien disponible sur le serveur
     
    2628                                $fichier_xml = _DIR_VAR . "cache-boussoles/boussole-${alias}.xml";
    2729                                if (!file_exists($fichier_xml)) {
     30                                        $erreur = 'cache_boussole_indisponible';
    2831                                        spip_log("Le fichier cache de la boussole n'est pas disponible (alias = $alias)", 'boussole' . _LOG_ERREUR);
    2932                                }
    3033                                else {
    31                                         $page = recuperer_fond('actionner', array('fichier' => $fichier_xml));
    32                                         echo $page;
    3334                                        spip_log("Information fournie sur la boussole d'alias = $alias", 'boussole' . _LOG_INFO);
    3435                                }
    3536                        }
    36                         else
     37                        else {
     38                                $erreur = 'boussole_non_hebergee';
    3739                                spip_log("Boussole non disponible sur ce serveur (alias = $alias)", 'boussole' . _LOG_ERREUR);
     40                        }
    3841                }
    39                 else
     42                else {
     43                        $erreur = 'aucune_boussole_hebergee';
    4044                        spip_log("Aucune boussole disponible sur ce serveur", 'boussole' . _LOG_ERREUR);
     45                }
     46
     47                // Envoi du fichier ou de l'erreur
     48                $page = recuperer_fond('actionner', array('fichier' => $fichier_xml, 'erreur' => $erreur));
     49                echo $page;
    4150        }
    4251}
  • _plugins_/boussole/trunk/action/serveur_lister_boussoles.php

    r74718 r74837  
    1717                $boussoles = pipeline('declarer_boussoles', $boussoles);
    1818
     19                // Si erreur, on renvoie un id sous forme d'une balise erreur
     20                $erreur = '';
     21                $fichier_liste = '';
    1922                if ($boussoles) {
    2023                        // Vérifier que le cache existe
    2124                        $fichier_liste = _DIR_VAR . "cache-boussoles/boussoles.xml";
    2225                        if (!file_exists($fichier_liste)) {
    23                                 spip_log("Le fichier cache de la boussole n'est pas disponible (alias = $alias)", 'boussole' . _LOG_ERREUR);
     26                                $erreur = 'cache_liste_indisponible';
     27                                spip_log("Le fichier cache de la liste des boussoles n'est pas disponible (alias = $alias)", 'boussole' . _LOG_ERREUR);
    2428                        }
    2529                        else {
    26                                 $page = recuperer_fond('actionner', array('fichier' => $fichier_liste));
    27                                 echo $page;
    2830                                spip_log("Liste des boussoles disponibles fournie", 'boussole' . _LOG_INFO);
    2931                        }
    3032                }
    31                 else
     33                else {
     34                        $erreur = 'aucune_boussole_hebergee';
    3235                        spip_log("Aucune boussole disponible sur ce serveur", 'boussole' . _LOG_ERREUR);
     36                }
     37
     38                $page = recuperer_fond('actionner', array('fichier' => $fichier_liste, 'erreur' => $erreur));
     39                echo $page;
    3340        }
    3441}
  • _plugins_/boussole/trunk/actionner.html

    r74756 r74837  
    33        [(#SET{contenu, #INCLURE{#ENV{fichier}|copie_locale{modif}}})]
    44][(#ENV{erreur}|oui)
    5         [(#SET{contenu, #ENV{erreur}})]
     5        [(#SET{contenu, [<erreur id="(#ENV{erreur})" />]})]
    66][(#HTTP_HEADER{Content-Type: text/xml; charset=#CHARSET})
    77]#GET{contenu}
  • _plugins_/boussole/trunk/formulaires/ajouter_boussole.php

    r74762 r74837  
    55function formulaires_ajouter_boussole_charger_dist() {
    66
    7         $boussoles = charger_boussoles();
     7        list($boussoles, $message) = charger_boussoles();
    88        return array(
    99                        'boussole' => _request('boussole'),
    10                         '_boussoles' => $boussoles);
     10                        '_boussoles' => $boussoles,
     11                        'message_erreur' => $message,
     12                        'editable' => ($message ? false : true));
    1113}
    1214
     
    5557        // -- pour chacun on acquiert la liste des boussoles disponibles
    5658        $liste = array();
     59        $message = '';
    5760        $index = 1;
    5861        foreach($GLOBALS['client_serveurs_disponibles'] as $_serveur => $_infos) {
     
    8487                        }
    8588                }
     89                else if (isset($tableau['name'])
     90                                 AND ($tableau['name'] == 'erreur')) {
     91                        $message .= _T("boussole:message_nok_{$tableau['attributes']['id']}", array('serveur' => $_serveur)) . ' ';
     92                }
     93                else {
     94                        $message .= _T('boussole:message_nok_reponse_invalide', array('serveur' => $_serveur)) . ' ';
     95                }
    8696        }
    8797
    88         return $liste;
     98        return array($liste, $message);
    8999}
    90100
  • _plugins_/boussole/trunk/inc/deboussoler.php

    r74762 r74837  
    4040 * @param string $serveur       Alias du serveur fournissant les données sur la boussole
    4141 *
    42  * @return array
     42 * @return array()      index 0 : true ou false
     43 *                                      index 1 : libellé traduit du message d'erreur
    4344 */
    4445function boussole_ajouter($boussole, $serveur='spip') {
     
    5758        // On recupere les infos du fichier xml de description de la boussole
    5859        $infos = phraser_xml_boussole($boussole, $serveur);
    59         if (!$infos OR !$infos['boussole']['alias']){
    60                 $message = _T('boussole:message_nok_xml_invalide', array('fichier' => $boussole));
     60        if ($infos['erreur']){
     61                $message = _T("boussole:message_nok_{$infos['erreur']}", array('alias' => $boussole, 'serveur' => $serveur));
    6162                return array(false, $message);
    6263        }
     
    154155 * @param string $serveur       Alias du serveur fournissant les données sur la boussole
    155156 *
    156  * @return array()
     157 * @return array()      index 0 : true ou false
     158 *                                      index 1 : id de l'erreur (l'item associé se construit en rajoutant message_nok_ en préfixe)
    157159 */
    158160function phraser_xml_boussole($boussole, $serveur='spip') {
    159161
    160         $infos = array();
     162        $infos = array('erreur' => '');
    161163
    162164        // Acquérir les informations de la boussole à partir du serveur
     
    246248                }
    247249        }
     250        else if (isset($tableau['name'])
     251                 AND ($tableau['name'] == 'erreur')) {
     252                $infos['erreur'] = $tableau['attributes']['id'];
     253        }
     254        else {
     255                $infos['erreur'] = 'reponse_invalide';
     256        }
    248257       
    249258        return $infos;
  • _plugins_/boussole/trunk/lang/boussole_fr.php

    r74760 r74837  
    9191
    9292        // M
    93         'message_nok_boussole_inconnue' => 'Aucune boussole ne correspond à l\'alias « @alias@ »',
    94         'message_nok_champ_obligatoire' => 'Ce champ est obligatoire',
    95         'message_nok_ecriture_bdd' => 'Erreur d\'écriture en base de données (table @table@)',
    96         'message_nok_xml_introuvable' => 'Le fichier « @fichier@ » est introuvable',
    97         'message_nok_xml_invalide' => 'Le fichier XML « @fichier@ » de description de la boussole n\'est pas conforme à la DTD',
     93        'message_nok_boussole_inconnue' => 'Aucune boussole ne correspond à l\'alias «@alias@».',
     94        'message_nok_ecriture_bdd' => 'Erreur d\'écriture en base de données (table @table@).',
     95        'message_nok_reponse_invalide' => 'La réponse du serveur &#171;@serveur@&#187; est mal formée.',
     96        'message_nok_cache_boussole_indisponible' => 'Le fichier cache de la boussole &#171;@alias@&#187; n\'est pas disponible sur le serveur &#171;@serveur@&#187;.',
     97        'message_nok_boussole_non_hebergee' => 'La boussole &#171;@alias@&#187; n\'est pas hébergée sur le serveur &#171;@serveur@&#187;.',
     98        'message_nok_aucune_boussole_hebergee' => 'Aucune boussole n\'est encore hébergée sur le serveur &#171;@serveur@&#187;.',
     99        'message_nok_cache_liste_indisponible' => 'Le fichier cache de la liste des boussoles n\'est pas disponible sur le serveur &#171;@serveur@&#187;.',
    98100        'message_ok_boussole_actualisee' => 'La boussole « @fichier@ » a été mise à jour.',
    99101        'message_ok_boussole_ajoutee' => 'La boussole « @fichier@ » a été ajoutée.',
  • _plugins_/boussole/trunk/paquet.xml

    r74796 r74837  
    22        prefix="boussole"
    33        categorie="navigation"
    4         version="2.1.7"
     4        version="2.1.8"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.