Browse Source

Evolution #189: Route de choix de langue automatique

bastien 13 years ago
parent
commit
b8ad6dadee

+ 8 - 4
app/config/routing.yml View File

22
   prefix: /
22
   prefix: /
23
     
23
     
24
 change_language:
24
 change_language:
25
-    pattern:  /change-language/{language}/{redirect}
26
-    defaults: { _controller: MuzichCoreBundle:Core:changeLanguage, redirect: referer }
25
+  pattern:  /change-language/{language}/{redirect}
26
+  defaults: { _controller: MuzichCoreBundle:Core:changeLanguage, redirect: referer }
27
+  
28
+language_automatic:
29
+  pattern:  /auto-language
30
+  defaults: { _controller: MuzichCoreBundle:Core:automaticLanguage }
27
   
31
   
28
 MuzichCoreBundle:
32
 MuzichCoreBundle:
29
   resource: "@MuzichCoreBundle/Resources/config/routing.yml"
33
   resource: "@MuzichCoreBundle/Resources/config/routing.yml"
33
 MuzichHomeBundle:
37
 MuzichHomeBundle:
34
   resource: "@MuzichHomeBundle/Resources/config/routing.yml"
38
   resource: "@MuzichHomeBundle/Resources/config/routing.yml"
35
   prefix: /{_locale}/
39
   prefix: /{_locale}/
36
-  defaults:
37
-    _locale: fr
40
+#  defaults:
41
+#    _locale: fr
38
     
42
     
39
 # On doit rajouter une route au cas ou la langue n'est pas précisé.
43
 # On doit rajouter une route au cas ou la langue n'est pas précisé.
40
 home_bis:
44
 home_bis:

+ 29 - 1
src/Muzich/CoreBundle/Controller/CoreController.php View File

21
 
21
 
22
 class CoreController extends Controller
22
 class CoreController extends Controller
23
 {
23
 {
24
-
24
+  
25
   /**
25
   /**
26
    * Action permettant de changer le language
26
    * Action permettant de changer le language
27
    *
27
    *
58
   }
58
   }
59
   
59
   
60
   /**
60
   /**
61
+   * 
62
+   * Cette action est écrite pour les utilisateur redirigé du a l'absence de 
63
+   * lague dans leur route.
64
+   * Cette redirection n'est pas interne au code, elle est actuellement effectué
65
+   * par le .htaccess lorsque il n'y as pas d'url (en plus de muzi.ch/
66
+   */
67
+  public function automaticLanguageAction()
68
+  {
69
+    $lang = $this->container->get('request')
70
+      ->getPreferredLanguage($this->container->getParameter('supported_langs')); 
71
+    
72
+    // Si on a une lang en sortie, 
73
+    if (is_null($lang))
74
+    {
75
+      $lang = 'fr';
76
+    }
77
+    
78
+    if ($this->getUser() != 'anon.')
79
+    {
80
+      return $this->redirect($this->generateUrl('home', array('_locale' => $lang)));
81
+    }
82
+    else
83
+    {
84
+      return $this->redirect($this->generateUrl('index', array('_locale' => $lang)));
85
+    }
86
+  }
87
+  
88
+  /**
61
    * Cette action permet a un utilisateur de suivre ou de ne plus suivre
89
    * Cette action permet a un utilisateur de suivre ou de ne plus suivre
62
    * un utilisateur ou un groupe.
90
    * un utilisateur ou un groupe.
63
    * 
91
    * 

+ 2 - 0
src/Muzich/CoreBundle/Resources/config/security.yml View File

53
         - { path: ^/(?:fr|en)/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
53
         - { path: ^/(?:fr|en)/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
54
         - { path: "^/(?:fr|en)/resetting", roles: IS_AUTHENTICATED_ANONYMOUSLY }
54
         - { path: "^/(?:fr|en)/resetting", roles: IS_AUTHENTICATED_ANONYMOUSLY }
55
         - { path: "^/change-language/(?:fr|en)", roles: IS_AUTHENTICATED_ANONYMOUSLY }
55
         - { path: "^/change-language/(?:fr|en)", roles: IS_AUTHENTICATED_ANONYMOUSLY }
56
+        - { path: "^/auto-language", roles: IS_AUTHENTICATED_ANONYMOUSLY }
57
+        
56
                 
58
                 
57
         - { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
59
         - { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
58
         - { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }
60
         - { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }

+ 5 - 1
src/Muzich/IndexBundle/Resources/config/routing.yml View File

1
 ## Routing du Bundle Index
1
 ## Routing du Bundle Index
2
 
2
 
3
+index_without_locale:
4
+    pattern:  /hello/
5
+    defaults: { _controller: MuzichCoreBundle:Core:automaticLanguage }
6
+    
3
 index:
7
 index:
4
     pattern:  /hello/{_locale}
8
     pattern:  /hello/{_locale}
5
-    defaults: { _controller: MuzichIndexBundle:Index:index, _locale: fr }
9
+    defaults: { _controller: MuzichIndexBundle:Index:index }
6
 
10
 
7
 fos_user_security:
11
 fos_user_security:
8
     resource: "@FOSUserBundle/Resources/config/routing/security.xml"
12
     resource: "@FOSUserBundle/Resources/config/routing/security.xml"