Changeset 65894 in spip-zone


Ignore:
Timestamp:
Sep 15, 2012, 3:44:00 PM (9 years ago)
Author:
bmarne@…
Message:

Oups... la détection de mobile ne fonctionnait tout simplement pas ! Ça va mieux maintenant !
Corrigé aussi un bug de redirections emboîtées...
On incrémente la version.

Location:
_plugins_/pages_mobiles
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/pages_mobiles/pages_mobiles_options.php

    r65843 r65894  
    2525        function pages_mobiles_detecter_mobile() {
    2626
    27         // Par défaut c'est web...
    28         $pages_mobiles = "web";
     27        // Par défaut c'est vide...
     28        $pages_mobiles = '';
    2929
    3030
    3131        // Le parametre d'URL pages_mobiles est-il present ?
    3232        // On peut forcer l'affichage du site web classique et inversement retourner a la vue non classique
    33         $pages_mobiles = isset($_GET['pages_mobiles']) ? $_GET['pages_mobiles'] : 'web';
     33        $pages_mobiles = isset($_GET['pages_mobiles']) ? $_GET['pages_mobiles'] : '';
    3434
    3535
    3636       
    3737        // Sinon un cookie de squelette est-il present ?
    38         if (!$pages_mobiles)
    39                 $pages_mobiles = isset($_COOKIE['pages_mobiles']) ? $_COOKIE['pages_mobiles'] : 'web';
    40 
     38        if (!$pages_mobiles) {
     39                $pages_mobiles = isset($_COOKIE['pages_mobiles']) ? $_COOKIE['pages_mobiles'] : '';
     40        }
    4141        // détection du mobile
    4242        if (!$pages_mobiles) {
     
    4747                if (strpos($user_agent,'firefox')!==false AND strpos($user_agent,'fennec')===false) {
    4848                        // firefox (sauf version mobile)
    49                         return $pages_mobiles;
     49                        $pages_mobiles = 'web';
    5050                } elseif (strpos($user_agent,'msie')!==false AND strpos($user_agent,'windows ce')===false AND strpos($user_agent,'iemobile')===false) {
    5151                        // internet explorer (sauf version mobile)
    52                         return $pages_mobiles;
    53                 }
    54                
     52                        $pages_mobiles = 'web';
     53                }
    5554                // Tableau des mobiles individualises (smartphones et tablettes)
    5655                // expression reguliere sur le user agent => nom du mobile
     
    6867
    6968                // Les autres cas
    70                 if ($pages_mobiles !== 'web') {
     69                if (!$pages_mobiles) {
    7170                        $httpaccept = isset($_SERVER['HTTP_ACCEPT'])?strtolower($_SERVER['HTTP_ACCEPT']):'';
    7271                        $user_agent_4car = substr($user_agent,0,4);
     
    9695                        }
    9796
    98                 } else {
    99                         $pages_mobiles = 'web';
    100                 }
    101         }
    102 
    103 
    104         return $pages_mobiles;
     97                }
     98        }
     99
     100// si ce n'était pas un mobile (ou n'avait pas le cookie ou l'URL), c'est web...
     101        return ($pages_mobiles ? $pages_mobiles : 'web');
    105102
    106103}
     
    164161$contexte = $url_decodee[1];
    165162$type_page = $url_decodee[0];
    166 
    167 // Pas de type de page alors c'est le sommaire
    168 if (!$type_page) $type_page = "sommaire";
    169 
    170 // on identifie le type de navigation
    171 $type_mobile = pages_mobiles_detecter_mobile();
    172 
    173 // Si ce n'est pas web
    174 if ($type_mobile !== 'web') {
    175 
    176         // Par défaut on cherche le squelette mobile de l'objet
    177         // dans un sous repertoire nommé comme type de mobile renvoyé par la detection
    178         // ex. iphone/article.html
    179         //
    180         // Voir la fonction pages_mobiles_detecter_mobile() pour les différents types.
    181         // Idem pour le groupe de mobile (voir pages_mobiles_groupes_mobiles())
    182         //
    183         // S'il n'y a pas le squelette de l'objet dans le repertoire specifique de ce type ou du groupe,
    184         // c'est le repertoire "mobile" qui est choisi
    185         // ex. mobile/rubrique.html
    186 
    187         $chemin_mobile = $type_mobile."/".$type_page;
    188 
    189         // si on ne trouve pas la page pour le mobile on cherche pour le groupe de mobile
    190         if (!find_in_path($chemin_mobile.".html"))
    191                         $chemin_mobile = pages_mobiles_groupes_mobiles($type_mobile)."/".$type_page;
    192        
    193         // si on ne trouve pas la page pour le groupe de mobile on cherche dans le répertoire générique
    194         if (!find_in_path($chemin_mobile.".html")) $chemin_mobile = "mobile/".$type_page;
    195 
    196         // si le squelette existe, on redirige vers une page pivot qui à son tour include la page mobile
    197         // C'est necessaire car seul l'admin peut accéder à des pages placées dans un sous répertoire de
    198         // l'arborescence.
    199         if (find_in_path($chemin_mobile.".html")) {
    200                 foreach ($contexte as $key => $value) {
    201                         $liste_params .= "&".$key."=".$value;
    202                 }
    203                 include_spip('inc/headers');
    204                 redirige_par_entete("spip.php?page=pages_mobiles&squelette_mobile=$chemin_mobile".$liste_params);
    205         }
    206 
     163// soit le type de page est déterminé par l'objet demandé, soit par page
     164$type_page = $type_page ? $type_page : $_GET[page];
     165
     166// si on est pas déjà en train de rediriger vers les pages mobiles
     167if ($type_page!="pages_mobiles") {
     168
     169        // Pas de type de page alors c'est le sommaire
     170        if (!$type_page) $type_page = "sommaire";
     171
     172        // on identifie le type de navigation
     173        $type_mobile = pages_mobiles_detecter_mobile();
     174
     175        // Si ce n'est pas web
     176        if ($type_mobile !== 'web') {
     177
     178                // Par défaut on cherche le squelette mobile de l'objet
     179                // dans un sous repertoire nommé comme type de mobile renvoyé par la detection
     180                // ex. iphone/article.html
     181                //
     182                // Voir la fonction pages_mobiles_detecter_mobile() pour les différents types.
     183                // Idem pour le groupe de mobile (voir pages_mobiles_groupes_mobiles())
     184                //
     185                // S'il n'y a pas le squelette de l'objet dans le repertoire specifique de ce type ou du groupe,
     186                // c'est le repertoire "mobile" qui est choisi
     187                // ex. mobile/rubrique.html
     188
     189                $chemin_mobile = $type_mobile."/".$type_page;
     190
     191                // si on ne trouve pas la page pour le mobile on cherche pour le groupe de mobile
     192                if (!find_in_path($chemin_mobile.".html"))
     193                                $chemin_mobile = pages_mobiles_groupes_mobiles($type_mobile)."/".$type_page;
     194               
     195                // si on ne trouve pas la page pour le groupe de mobile on cherche dans le répertoire générique
     196                if (!find_in_path($chemin_mobile.".html")) $chemin_mobile = "mobile/".$type_page;
     197
     198                // si le squelette existe, on redirige vers une page pivot qui à son tour include la page mobile
     199                // C'est necessaire car seul l'admin peut accéder à des pages placées dans un sous répertoire de
     200                // l'arborescence.
     201                if (find_in_path($chemin_mobile.".html")) {
     202                        foreach ($contexte as $key => $value) {
     203                                $liste_params .= "&".$key."=".$value;
     204                        }
     205                        include_spip('inc/headers');
     206                        redirige_par_entete("spip.php?page=pages_mobiles&squelette_mobile=$chemin_mobile".$liste_params);
     207                }
     208
     209        }
    207210}
    208211// sinon, on ne change rien à l'affichage (affichage par défaut)
  • _plugins_/pages_mobiles/paquet.xml

    r65843 r65894  
    22        prefix="pages_mobiles"
    33        categorie="navigation"
    4         version="1.0.0"
     4        version="1.0.1"
    55        etat="test"
    66        compatibilite="[3.0.4;3.0.*]"
     
    88        documentation=""
    99>
    10         <!--
    11                 Paquet généré le 2012-09-13 20:53:57
    12         -->
    1310
    1411        <nom>Pages pour mobiles</nom>
Note: See TracChangeset for help on using the changeset viewer.