1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-12 01:34:31 +02:00

Add support for custom LanguagePage classes per feature request in processwire/processwire-issues#1246

This commit is contained in:
Ryan Cramer
2020-09-14 09:48:21 -04:00
parent 6cc5da1e45
commit 956ad5e201
4 changed files with 17 additions and 10 deletions

View File

@@ -606,7 +606,7 @@ class PageTraversal {
*/ */
public function urlOptions(Page $page, $options = array()) { public function urlOptions(Page $page, $options = array()) {
$config = $page->wire('config'); $config = $page->wire()->config;
$template = $page->template; $template = $page->template;
$defaults = array( $defaults = array(
@@ -615,7 +615,7 @@ class PageTraversal {
'data' => array(), 'data' => array(),
'urlSegmentStr' => is_string($options) ? $options : '', 'urlSegmentStr' => is_string($options) ? $options : '',
'urlSegments' => array(), '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)) { if(empty($options)) {
@@ -625,7 +625,7 @@ class PageTraversal {
} }
$options = is_array($options) ? array_merge($defaults, $options) : $defaults; $options = is_array($options) ? array_merge($defaults, $options) : $defaults;
$sanitizer = $page->wire('sanitizer'); $sanitizer = $page->wire()->sanitizer;
$language = null; $language = null;
$url = null; $url = null;

View File

@@ -894,13 +894,18 @@ class LanguageSupportPageNames extends WireData implements Module, ConfigurableM
/** @var array $extraData */ /** @var array $extraData */
$extraData = $event->return; $extraData = $event->return;
$alwaysActiveTypes = array('User', 'Role', 'Permission', 'Language'); $alwaysActiveTypes = array(
'User', 'UserPage',
'Role', 'RolePage',
'Permission', 'PermissionPage',
'Language', 'LanguagePage',
);
$pageNameCharset = $this->wire('config')->pageNameCharset; $pageNameCharset = $this->wire('config')->pageNameCharset;
$isCloning = $pages->editor()->isCloning(); $isCloning = $pages->editor()->isCloning();
if(!is_array($extraData)) $extraData = array(); if(!is_array($extraData)) $extraData = array();
foreach($this->wire('languages') as $language) { foreach($this->wire()->languages as $language) {
if($language->isDefault()) continue; if($language->isDefault()) continue;
$language_id = (int) $language->id; $language_id = (int) $language->id;

View File

@@ -138,7 +138,9 @@ class Languages extends PagesType {
* *
*/ */
public function getPageClass() { public function getPageClass() {
return 'Language'; if($this->pageClass) return $this->pageClass;
$this->pageClass = class_exists(__NAMESPACE__ . "\\LanguagePage") ? 'LanguagePage' : 'Language';
return $this->pageClass;
} }
/** /**

View File

@@ -324,10 +324,10 @@ class ProcessPageEdit extends Process implements WirePageEditor, ConfigurableMod
* *
*/ */
protected $otherCorePageClasses = array( protected $otherCorePageClasses = array(
'User', 'User', 'UserPage',
'Role', 'Role', 'RolePage',
'Permission', 'Permission', 'PermissionPage',
'Language' 'Language', 'LanguagePage',
); );
/*********************************************************************************************************************** /***********************************************************************************************************************