From: Vincent Vanwaelscappel Date: Tue, 21 Apr 2020 18:28:01 +0000 (+0200) Subject: wip #3611 @3 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=31709236628af1c0300742a1f212dc8fc5d4dc22;p=cubist_cms-back.git wip #3611 @3 --- diff --git a/src/app/Magic/Menu/Item.php b/src/app/Magic/Menu/Item.php index 443831c..c335eb0 100644 --- a/src/app/Magic/Menu/Item.php +++ b/src/app/Magic/Menu/Item.php @@ -111,6 +111,11 @@ class Item */ protected $_variant = ''; + /** + * @var array + */ + protected $_availableVariants = []; + /** * @var CubistMagicPageModel */ @@ -439,8 +444,17 @@ class Item public function getCanonicalURL(): string { + $canonicalVariant = null; + if (App::hasVariant()) { + $availableVariants = $this->getAvailableVariants(); + + if (count($availableVariants) > 1 && $this->getVariant() !== $availableVariants[0]) { + $canonicalVariant = $availableVariants[0]; + } + } + $canonical = $this->getCanonical() === '' ? $this->getHref() : $this->getCanonical(); - return $this->_getURL($canonical); + return $this->_getURL($canonical, null, $canonicalVariant); } public function getURL() @@ -448,9 +462,16 @@ class Item return $this->_getURL($this->getHref()); } - protected function _getURL($href) + protected function _getURL($href, $locale = null, $variant = null) { - $domain = Locale::getMainDomain($this->getLocale(), $this->getVariant()); + if (null === $locale) { + $locale = $this->getLocale(); + } + if (null === $variant) { + $variant = $this->getVariant(); + } + + $domain = Locale::getMainDomain($locale, $variant); if ($href === 'home') { $href = ''; @@ -698,6 +719,22 @@ class Item $this->_variant = $variant; } + /** + * @param array $availableVariants + */ + public function setAvailableVariants(array $availableVariants): void + { + $this->_availableVariants = $availableVariants; + } + + /** + * @return array + */ + public function getAvailableVariants(): array + { + return $this->_availableVariants; + } + /** * @return bool */ diff --git a/src/app/Magic/Menu/PageItem.php b/src/app/Magic/Menu/PageItem.php index 6daa438..d0a58df 100644 --- a/src/app/Magic/Menu/PageItem.php +++ b/src/app/Magic/Menu/PageItem.php @@ -6,6 +6,7 @@ namespace Cubist\Backpack\app\Magic\Menu; use Cubist\Backpack\app\Magic\Models\CMSPage; use Cubist\Backpack\app\Magic\Models\CubistMagicPageModel; +use Cubist\Backpack\Facades\App; class PageItem extends Item { @@ -52,6 +53,7 @@ class PageItem extends Item $this->setSlug($data->get('slug')); $this->setTitle($data->get('title')); $this->setRobots($data->get('robots', true)); + $this->setAvailableVariants($data->get('variant', App::getVariants())); $desktop = $entity->menu_desktop == '' ? 'children' : $entity->menu_desktop;