82 lines
2.1 KiB
PHP
82 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Drupal\materio_decoupled\Controller;
|
|
|
|
use Drupal\Core\Controller\ControllerBase;
|
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
use Drupal\Core\Language\LanguageManagerInterface;
|
|
use Drupal\Core\Url;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
/**
|
|
* Class AjaxHomeController.
|
|
*/
|
|
class MaterioDecoupledLanguageLinks extends ControllerBase {
|
|
|
|
|
|
/*
|
|
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
|
|
*/
|
|
protected $languageManager;
|
|
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public static function create(ContainerInterface $container) {
|
|
return new static(
|
|
$container->get('language_manager')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Constructs a new MaterioDecoupledLanguageLinks object.
|
|
*
|
|
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
|
|
* The language manager.
|
|
*/
|
|
public function __construct(LanguageManagerInterface $language_manager) {
|
|
$this->languageManager = $language_manager;
|
|
}
|
|
|
|
/**
|
|
* getPathTranslationLinks
|
|
*
|
|
* @return string
|
|
* Return translations links given a path.
|
|
*/
|
|
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);
|
|
|
|
$languages = $this->languageManager->getNativeLanguages();
|
|
if (!$url_object) {
|
|
// 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();
|
|
}
|
|
|
|
foreach ($languages as $key => $language) {
|
|
$url = Url::fromRoute($route_name, $route_parameters, ["language"=>$language]);
|
|
$links[$key] = [
|
|
"title" => $language->get('label'),
|
|
"url" => $url->toString(),
|
|
"sys_path" => $url->getInternalPath()
|
|
];
|
|
}
|
|
|
|
$data["links"] = $links;
|
|
|
|
return new JsonResponse($data);
|
|
}
|
|
|
|
}
|