We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15086
    • 13 Posts
    En fait, c’est le premier réflexe que j’ai eu. Ca marchait bien, j’étais content, jusqu’au moment où je me suis déconnecté du manager... donc j’ai cherché une alternative.
    Il faudrait que je refasse un test pour être sûr de moi, mais voilà où j’en suis pour l’instant.
      • 15086
      • 13 Posts
      Ça y est, j’ai trouvé mon souci : des règles d’accès ont été créées en même temps que le contexte en Anglais, restreignant l’accès depuis le web ; je les ai supprimées.

      J’ai donc un plug-in LangDetectSwitch actif sur l’événement onHandleRequest avec le code suivant :
      <?php
      /*
      @param   $_GET['lang']
      */
      
      // ce snippet ne concerne pas le contexte "manager"
      if ( $modx->context->get('key') != "mgr" ) {
      
          // détecte la langue du navigateur
          $langTmp = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
          $lang = strtolower(substr(chop($langTmp[0]),0,2));
      
          // prend en compte la demande de l'utilisateur
          if ( !empty($_GET['lang']) )
              $_SESSION['webLang'] = $_GET['lang'];
          else if ( empty($_SESSION['webLang']) )
              $_SESSION['webLang'] = $lang;
          // sinon on garde la valeur qu'on avait enregistré pour la session courante
          
          // bascule vers le nouveau contexte
          switch ($_SESSION['webLang']) {
              case '':
              case 'fr':
                  $modx->switchContext('web');
                  $modx->setOption('cultureKey', 'fr');
                  break;
              // --
              case 'en':
              default:
                  $modx->switchContext('english');
                  $modx->setOption('cultureKey', 'en');
                  break;
          }
      
      }

      et j’ai aussi un snippet LangLinks (qui remplace BabelLinks car dans mon cas les alias des pages sont identiques dans les différents contextes, et j’utilise le mode friendly URL donc impossible de distinguer les contextes avec les alias des pages comme le fait BabelLinks), avec le code suivant :
      <?php
      if ($modx->context->get('key') == "mgr") return;
      
      
      // full_implode() permet notamment de créer des adresses contenant des paramètres de $_GET
      // exemple qui récupère tous les paramètres GET existants pour reconstituer l'URL :
      // full_implode($_GET, '=', '&', '?');
      if (!function_exists('full_implode')) {
          function full_implode ($array, $keyGlue, $valGlue, $prefix="") {
              if (is_array($array)) {
                  $imp = $prefix;
                  
                  if (!empty($array)) {
                      // get the last array element
                      end($array);
                      $lastKey = key($array);
                      $lastVal = $array[$lastKey];
                      unset($array[$lastKey]);
                      
                      // implode into string
                      foreach ($array as $key => $val) { // reset internal array pointer
                          $imp .= $key . $keyGlue . $val . $valGlue;
                      }
                      
                      // and glue the last element to the end
                      $imp .= $lastKey . $keyGlue . $lastVal;
                  }
                  
                  return $imp;
              }
              else
                  return '';
          }
      }
      
      $tmpGET = $_GET;
      unset($tmpGET['q']); // unset MODx page variable 'q' (will be set just after)
      if (array_key_exists('lang', $tmpGET))
          unset($tmpGET['lang']); // unset our param 'lang' to not define it several times
      
      $url = $modx->makeUrl( $modx->resource->get('id'), $context );
      $tmpGET['lang'] = (isset($lang))? $lang : '';
      $url .= full_implode($tmpGET, '=', '&', '?');
      
      return ($url);

      qui s’utilise très simplement comme ceci :
      <a href="[[LangLinks? &lang=`fr`]]">version française</a>


      Tout ça avec la gestion automatique de contextes par le plug-in Babel cité plus haut, ça marche super bien.
      Décidemment, je commence à aimer MODx Revolution rolleyes
      • Ça semble très intéressant tout ça. Merci de ton retour d’expérience & partage Just1
          • 36624
          • 535 Posts


          Bonsoir,

          c’est ma config mutualisée ou c’est hyper-sensibles les contextes (v2.0.5)?

          Les contextes disparaissent... ?!

          A chaque fois ça se produit quand j’essaie de modifier les règles ACL..

          Comment récupérer un contexte "fantôme" ?

          Merci



            CTRL+SHIFT+U - Clear Cache
            CTRL+SHIFT+H - Hiding Heft Panel
            CTRL+SHIFT+N - Fast Create Resource
            CTRL+ALT+P - Preview Recource (in edit resorce window)
            CTRL+ALT+S - Save
          • Bonsoir Manu,

            Les contextes ne sont pas exempts de toute erreur. Il vient d’y avoir quelques modifications effectuées pour la 2.0.6 sur Github.
            En revanche, si cela se produit lorsque tu modifies tes ACLs, cela vient peut être d’une mauvaise configuration des droits wink
            Sous ton compte administrateur, édites le groupe administrator, puis vas dans les droits d’accès de contexte et fais en sorte d’avoir accès à tous les contextes (oui, c’est prise de tête les ACLs au début ^^)

            en espérant te mettre sur la voix.
            Bon courage

            Edit : la release 2.0.6-pl serait une release patch (corrective) et il semblerait qu’elle voit le jour d’ici un à deux jours smiley
              • 36624
              • 535 Posts
              Quote from: Romain at Dec 15, 2010, 10:51 PM

              Sous ton compte administrateur, édites le groupe administrator, puis vas dans les droits d’accès de contexte et fais en sorte d’avoir accès à tous les contextes (oui, c’est prise de tête les ACLs au début ^^)


              Edit : la release 2.0.6-pl serait une release patch (corrective) et il semblerait qu’elle voit le jour d’ici un à deux jours smiley

              Bonjour,

              Merci j’ai vérifié et il semble que mes droits d’admin sur le context soient "justes" (a priori comme /web).

              J’ai fait ré-apparaitre les contextes "fantômes" en supprimant les règles directement dans la bdd dans la table "modx_access_context"..

              De plus je viens de lire, qu’il faut toujours enlever (anonymous) avant Administrator sinon on perd le contexte..

              Lorsque je prévisualise un document qui est sous mon contexte "english", je suis redirigé vers ma page d’erreur..

              Y-a-t-il un minimum de règles nécessaire pour accéder à un contexte ?

              Car suite à la lecture de ce message http://modxcms.com/forums/index.php/topic,56668.msg333136.html#msg333136 d’OpenGeek, j’ai supprimé toute les règles sur tout mes contextes.. et je peux preview mon contexte /web mais pas mon /english..

              je croise les doigts pour que ce patch résolve mes "petits" soucis smiley

                CTRL+SHIFT+U - Clear Cache
                CTRL+SHIFT+H - Hiding Heft Panel
                CTRL+SHIFT+N - Fast Create Resource
                CTRL+ALT+P - Preview Recource (in edit resorce window)
                CTRL+ALT+S - Save
              • Veux-tu dire que sans ACLs tu n’arrives pas à accéder (dans le front) au contenu de tes contextes additionnels ?
                Si c’est le cas, tu as dû oublier d’indiquer les options requises (site_start, base_url… cf. http://rtfm.modx.com/display/revolution20/Creating+a+Subdomain+from+a+Folder+using+Virtual+Hosts)

                De mémoire l’anglais ne t’effraie pas : https://github.com/modxcms/revolution/commits/release-2.0.6-pl
                  • 36624
                  • 535 Posts
                  Quote from: Romain at Dec 16, 2010, 08:58 AM

                  Veux-tu dire que sans ACLs tu n’arrives pas à accéder (dans le front) au contenu de tes contextes additionnels ?

                  avec ou sans c’était pareil.
                  Quote from: Romain at Dec 16, 2010, 08:58 AM

                  Si c’est le cas, tu as dû oublier d’indiquer les options requises (site_start, base_url… cf. http://rtfm.modx.com/display/revolution20/Creating+a+Subdomain+from+a+Folder+using+Virtual+Hosts)


                  ah oui, je n’ai pas configuré ces options.. je visais plutôt des urls de types http://mondomaine.com/fr/ http://mondomaine.com/en/ ça me semblait donc superflu de faire des sous-domaines..
                    CTRL+SHIFT+U - Clear Cache
                    CTRL+SHIFT+H - Hiding Heft Panel
                    CTRL+SHIFT+N - Fast Create Resource
                    CTRL+ALT+P - Preview Recource (in edit resorce window)
                    CTRL+ALT+S - Save
                  • Dans ce cas il va te falloir un plugin. Ce topic devrait t’être utile smiley
                    Bon courage
                    • Quote from: Romain at Nov 16, 2010, 05:13 PM

                      Tout est relatif smiley
                      Pour le moment le seul « problème » que j’ai rencontré (sur des projets tests) c’est le fait que Wayfinder (l’extra qui permet de générer la navigation) ne supporte pas les contextes correctement. Deux alternatives à cela
                      créer une ressource container et utiliser son ID comme startId pour WF
                      utiliser getResources qui gère très bien les contextes.

                      Quel est le probleme spécifique que tu as rencontré avec Wayfinder ?