1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-10 08:44:46 +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()) {
$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;

View File

@@ -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;

View File

@@ -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;
}
/**

View File

@@ -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',
);
/***********************************************************************************************************************