Ver código fonte

improved translation links update

bach 4 anos atrás
pai
commit
b7459cf014

+ 13 - 13
web/modules/custom/materio_decoupled/src/Controller/MaterioDecoupledLanguageLinks.php

@@ -48,32 +48,32 @@ class MaterioDecoupledLanguageLinks extends ControllerBase {
   public function getPathTranslationLinks(Request $request) {
     $post_data = json_decode( $request->getContent(),TRUE);
     $path = $post_data['path'];
+    $data = [];
 
     // build the links
     $url_object = \Drupal::service('path.validator')->getUrlIfValid($path);
-    // Call to a member function getRouteName() on bool in Drupal\materio_decoupled\Controller\MaterioDecoupledLanguageLinks->getPathTranslationLinks()
+
+    $languages = $this->languageManager->getNativeLanguages();
     if (!$url_object) {
-      // if path does not exists rtuen an error
-      return new JsonResponse(array(
-        "links" => [],
-        "error" => "path {$path} is not valid"
-      ));
+      // if path does not exists
+      $data["error"] = "path {$path} is not valid";
+      $route_name = "<front>";
+      $route_parameters = null;
+    }else{
+      $route_name = $url_object->getRouteName();
+      $route_parameters = $url_object->getrouteParameters();
     }
-    $route_name = $url_object->getRouteName();
-    $route_parameters = $url_object->getrouteParameters();
-    $languages = $this->languageManager->getNativeLanguages();
 
     foreach ($languages as $key => $language) {
       $url = Url::fromRoute($route_name, $route_parameters, ["language"=>$language]);
       $links[$key] = [
         "title" => $language->get('label'),
-        "url" => $url->toString()
+        "url" => $url->toString(),
+        "sys_path" => $url->getInternalPath()
       ];
     }
 
-    $data = array(
-      "links" => $links
-    );
+    $data["links"] = $links;
 
     return new JsonResponse($data);
   }

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
web/themes/custom/materiotheme/assets/dist/main.js


+ 11 - 9
web/themes/custom/materiotheme/assets/scripts/main.js

@@ -185,16 +185,18 @@ import { MA } from 'vuejs/api/ma-axios'
         .then(({ data }) => {
           console.log('Path translations links', data)
           if (data.error) {
-            console.warn("error get translation paths", data.error);
-          } else {
-            links.forEach((link, i) => {
-              console.log("language link",path , link)
-              let hreflang = link.getAttribute('hreflang')
-
-              link.setAttribute('href', data.links[hreflang].url)
-              link.innerHTML = data.links[hreflang].title
-            });
+            console.warn("error getting translation paths", data.error);
           }
+
+          links.forEach((link, i) => {
+            console.log("language link",path , link)
+            let hreflang = link.getAttribute('hreflang')
+
+            link.setAttribute('href', data.links[hreflang].url)
+            link.setAttribute('data-drupal-link-system-path', data.links[hreflang].sys_path)
+
+            link.innerHTML = data.links[hreflang].title
+          });
         })
         .catch(error => {
           console.warn('Path translations links', error)

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff