From 956ad5e2010118714d26f4c2ce3d6181b47dae0b Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Mon, 14 Sep 2020 09:48:21 -0400 Subject: [PATCH] Add support for custom LanguagePage classes per feature request in processwire/processwire-issues#1246 --- wire/core/PageTraversal.php | 6 +++--- .../LanguageSupport/LanguageSupportPageNames.module | 9 +++++++-- wire/modules/LanguageSupport/Languages.php | 4 +++- .../Process/ProcessPageEdit/ProcessPageEdit.module | 8 ++++---- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/wire/core/PageTraversal.php b/wire/core/PageTraversal.php index a6dfe982..05c1bddf 100644 --- a/wire/core/PageTraversal.php +++ b/wire/core/PageTraversal.php @@ -606,7 +606,7 @@ class PageTraversal { */ public function urlOptions(Page $page, $options = array()) { - $config = $page->wire('config'); + $config = $page->wire()->config; $template = $page->template; $defaults = array( @@ -615,7 +615,7 @@ class PageTraversal { 'data' => array(), 'urlSegmentStr' => is_string($options) ? $options : '', 'urlSegments' => array(), - 'language' => is_object($options) && $options instanceof Page && $options->className() === 'Language' ? $options : null, + 'language' => is_object($options) && wireInstanceOf($options, 'Language') ? $options : null, ); if(empty($options)) { @@ -625,7 +625,7 @@ class PageTraversal { } $options = is_array($options) ? array_merge($defaults, $options) : $defaults; - $sanitizer = $page->wire('sanitizer'); + $sanitizer = $page->wire()->sanitizer; $language = null; $url = null; diff --git a/wire/modules/LanguageSupport/LanguageSupportPageNames.module b/wire/modules/LanguageSupport/LanguageSupportPageNames.module index 9fac658d..53daa8cd 100644 --- a/wire/modules/LanguageSupport/LanguageSupportPageNames.module +++ b/wire/modules/LanguageSupport/LanguageSupportPageNames.module @@ -894,13 +894,18 @@ class LanguageSupportPageNames extends WireData implements Module, ConfigurableM /** @var array $extraData */ $extraData = $event->return; - $alwaysActiveTypes = array('User', 'Role', 'Permission', 'Language'); + $alwaysActiveTypes = array( + 'User', 'UserPage', + 'Role', 'RolePage', + 'Permission', 'PermissionPage', + 'Language', 'LanguagePage', + ); $pageNameCharset = $this->wire('config')->pageNameCharset; $isCloning = $pages->editor()->isCloning(); if(!is_array($extraData)) $extraData = array(); - foreach($this->wire('languages') as $language) { + foreach($this->wire()->languages as $language) { if($language->isDefault()) continue; $language_id = (int) $language->id; diff --git a/wire/modules/LanguageSupport/Languages.php b/wire/modules/LanguageSupport/Languages.php index 4d9c711d..a854539d 100644 --- a/wire/modules/LanguageSupport/Languages.php +++ b/wire/modules/LanguageSupport/Languages.php @@ -138,7 +138,9 @@ class Languages extends PagesType { * */ public function getPageClass() { - return 'Language'; + if($this->pageClass) return $this->pageClass; + $this->pageClass = class_exists(__NAMESPACE__ . "\\LanguagePage") ? 'LanguagePage' : 'Language'; + return $this->pageClass; } /** diff --git a/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module b/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module index b1424ee7..2cc360b5 100644 --- a/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module +++ b/wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module @@ -324,10 +324,10 @@ class ProcessPageEdit extends Process implements WirePageEditor, ConfigurableMod * */ protected $otherCorePageClasses = array( - 'User', - 'Role', - 'Permission', - 'Language' + 'User', 'UserPage', + 'Role', 'RolePage', + 'Permission', 'PermissionPage', + 'Language', 'LanguagePage', ); /***********************************************************************************************************************