artabro/wire/modules/Inputfield/InputfieldPageTitle/InputfieldPageTitle.module

49 lines
1.6 KiB
Text
Raw Permalink Normal View History

2024-08-27 11:35:37 +02:00
<?php namespace ProcessWire;
/**
* An Inputfield for handling Page Titles. Exists primarily for its javascript.
*
* @property string $nameField
* @property string $nameDelimiter
* @property array $nameReplacements
*
*/
class InputfieldPageTitle extends InputfieldText {
public static function getModuleInfo() {
return array(
'title' => __('Page Title', __FILE__), // Module Title
'summary' => __('Handles input of Page Title and auto-generation of Page Name (when name is blank)', __FILE__), // Module Summary
'version' => 102,
'permanent' => true,
);
}
public function __construct() {
$this->set('nameField', '');
$this->set('nameDelimiter', '');
$this->set('nameReplacements', array());
parent::__construct();
}
protected function setupCustom() {
$this->wrapAttr('data-name-field', $this->nameField);
$this->wrapAttr('data-name-delimiter', $this->nameDelimiter);
$this->addClass('InputfieldPageTitleCustom', 'wrapClass');
$jsConfig = $this->wire()->config->js($this->className());
if(!empty($jsConfig) && !empty($jsConfig['replacements'])) return;
$replacements = $this->nameReplacements;
if(empty($replacements)) {
$replacements = $this->wire()->modules->getConfig('InputfieldPageName', 'replacements');
if(empty($replacements)) $replacements = InputfieldPageName::getDefaultReplacements();
}
$this->wire()->config->js($this->className(), array(
'replacements' => $replacements,
));
}
public function renderReady(Inputfield $parent = null, $renderValueMode = false) {
if($this->nameField) $this->setupCustom();
return parent::renderReady($parent, $renderValueMode);
}
}