mirror of
https://github.com/processwire/processwire.git
synced 2025-08-17 20:11:46 +02:00
Update InputfieldWrapper so that it supports the "name=field_name" => [ settings ] calls for setMarkup(), like in LoginRegisterPro
This commit is contained in:
@@ -466,12 +466,15 @@ abstract class Inputfield extends WireData implements Module {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function get($key) {
|
public function get($key) {
|
||||||
if($key == 'label' && !parent::get('label')) {
|
if($key === 'label') {
|
||||||
|
$value = parent::get('label');
|
||||||
|
if(strlen($value)) return $value;
|
||||||
if($this->skipLabel & self::skipLabelBlank) return '';
|
if($this->skipLabel & self::skipLabelBlank) return '';
|
||||||
return $this->attributes['name'];
|
return $this->attributes['name'];
|
||||||
}
|
}
|
||||||
if($key == 'attributes') return $this->attributes;
|
if($key === 'name' || $key === 'value' || $key === 'id') return $this->getAttribute($key);
|
||||||
if($key == 'parent') return $this->parent;
|
if($key === 'attributes') return $this->attributes;
|
||||||
|
if($key === 'parent') return $this->parent;
|
||||||
if(($value = $this->wire($key)) !== null) return $value;
|
if(($value = $this->wire($key)) !== null) return $value;
|
||||||
if(array_key_exists($key, $this->attributes)) return $this->attributes[$key];
|
if(array_key_exists($key, $this->attributes)) return $this->attributes[$key];
|
||||||
return parent::get($key);
|
return parent::get($key);
|
||||||
|
@@ -459,26 +459,32 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
|||||||
*
|
*
|
||||||
* @param Inputfield $inputfield
|
* @param Inputfield $inputfield
|
||||||
* @param array $markup
|
* @param array $markup
|
||||||
|
* @param array $classes
|
||||||
* @since 3.0.144
|
* @since 3.0.144
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private function attributeInputfield(Inputfield $inputfield, &$markup) {
|
private function attributeInputfield(Inputfield $inputfield, &$markup, &$classes) {
|
||||||
|
|
||||||
$inputfieldClass = $inputfield->className();
|
$inputfieldClass = $inputfield->className();
|
||||||
$markupTemplate = array('attr' => array(), 'wrapAttr' => array());
|
$markupTemplate = array('attr' => array(), 'wrapAttr' => array(), 'set' => array());
|
||||||
$classParents = $this->classParents($inputfield);
|
$markupKeys = array($inputfieldClass, "name=$inputfield->name", "id=$inputfield->id");
|
||||||
$classParents[] = $inputfieldClass;
|
|
||||||
$classKeys = array('class', 'wrapClass', 'headerClass', 'contentClass');
|
$classKeys = array('class', 'wrapClass', 'headerClass', 'contentClass');
|
||||||
$classes = array();
|
$addClasses = array();
|
||||||
$attr = array();
|
$attr = array();
|
||||||
$wrapAttr = array();
|
$wrapAttr = array();
|
||||||
|
$sets = array();
|
||||||
|
|
||||||
foreach($classParents as $classParent) {
|
foreach($markupKeys as $key) {
|
||||||
if(!isset($markup[$classParent])) continue;
|
if(isset($markup[$key])) $markup = array_merge($markup, $markup[$key]);
|
||||||
$markupParent = array_merge($markupTemplate, $markup[$classParent]);
|
if(isset($classes[$key])) $classes = array_merge($classes, $classes[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(array_merge($this->classParents($inputfield), $markupKeys) as $key) {
|
||||||
|
if(!isset($markup[$key])) continue;
|
||||||
|
$markupParent = array_merge($markupTemplate, $markup[$key]);
|
||||||
foreach($classKeys as $classKey) {
|
foreach($classKeys as $classKey) {
|
||||||
if(!empty($markupParent[$classKey])) {
|
if(!empty($markupParent[$classKey])) {
|
||||||
$classes[$classKey] = $markupParent[$classKey];
|
$addClasses[$classKey] = $markupParent[$classKey];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach($markupParent['attr'] as $k => $v) {
|
foreach($markupParent['attr'] as $k => $v) {
|
||||||
@@ -487,6 +493,9 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
|||||||
foreach($markupParent['wrapAttr'] as $k => $v) {
|
foreach($markupParent['wrapAttr'] as $k => $v) {
|
||||||
$wrapAttr[$k] = $v;
|
$wrapAttr[$k] = $v;
|
||||||
}
|
}
|
||||||
|
foreach($markupParent['set'] as $k => $v) {
|
||||||
|
$sets[$k] = $v;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($attr as $attrName => $attrVal) {
|
foreach($attr as $attrName => $attrVal) {
|
||||||
@@ -495,9 +504,12 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
|||||||
foreach($wrapAttr as $attrName => $attrVal) {
|
foreach($wrapAttr as $attrName => $attrVal) {
|
||||||
$inputfield->wrapAttr($attrName, $attrVal);
|
$inputfield->wrapAttr($attrName, $attrVal);
|
||||||
}
|
}
|
||||||
foreach($classes as $classKey => $class) {
|
foreach($addClasses as $classKey => $class) {
|
||||||
$inputfield->addClass($class, $classKey);
|
$inputfield->addClass($class, $classKey);
|
||||||
}
|
}
|
||||||
|
foreach($sets as $setName => $setVal) {
|
||||||
|
$inputfield->set($setName, $setVal);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -547,9 +559,8 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
|||||||
if($skip && !empty($parents)) continue;
|
if($skip && !empty($parents)) continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$inputfieldClass = $inputfield->className();
|
list($markup, $classes) = array($_markup, $_classes);
|
||||||
$markup = isset($_markup[$inputfieldClass]) ? array_merge($_markup, $_markup[$inputfieldClass]) : $_markup;
|
$this->attributeInputfield($inputfield, $markup, $classes);
|
||||||
$classes = isset($_classes[$inputfieldClass]) ? array_merge($_classes, $_classes[$inputfieldClass]) : $_classes;
|
|
||||||
|
|
||||||
$renderValueMode = $this->getSetting('renderValueMode');
|
$renderValueMode = $this->getSetting('renderValueMode');
|
||||||
$collapsed = (int) $inputfield->getSetting('collapsed');
|
$collapsed = (int) $inputfield->getSetting('collapsed');
|
||||||
@@ -560,7 +571,6 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
|||||||
if($collapsed == Inputfield::collapsedHidden) continue;
|
if($collapsed == Inputfield::collapsedHidden) continue;
|
||||||
if($collapsed == Inputfield::collapsedNoLocked || $collapsed == Inputfield::collapsedYesLocked) $renderValueMode = true;
|
if($collapsed == Inputfield::collapsedNoLocked || $collapsed == Inputfield::collapsedYesLocked) $renderValueMode = true;
|
||||||
|
|
||||||
$this->attributeInputfield($inputfield, $_markup);
|
|
||||||
$ffOut = $this->renderInputfield($inputfield, $renderValueMode);
|
$ffOut = $this->renderInputfield($inputfield, $renderValueMode);
|
||||||
if(!strlen($ffOut)) continue;
|
if(!strlen($ffOut)) continue;
|
||||||
$collapsed = (int) $inputfield->getSetting('collapsed'); // retrieve again after render
|
$collapsed = (int) $inputfield->getSetting('collapsed'); // retrieve again after render
|
||||||
|
Reference in New Issue
Block a user