mirror of
https://github.com/processwire/processwire.git
synced 2025-08-11 01:04:16 +02:00
Add feature request processwire/processwire-requests#346 - add support for Inputfield::collapsedNoLocked and add a separate collapsedBlankLocked constant
This commit is contained in:
@@ -1002,11 +1002,18 @@ class Field extends WireData implements Saveable, Exportable {
|
||||
} else if($locked) {
|
||||
// Inputfield is locked as a result of access control
|
||||
$collapsed = $inputfield->getSetting('collapsed');
|
||||
$ignoreCollapsed = array(Inputfield::collapsedNoLocked, Inputfield::collapsedYesLocked, Inputfield::collapsedHidden);
|
||||
$ignoreCollapsed = array(
|
||||
Inputfield::collapsedNoLocked,
|
||||
Inputfield::collapsedBlankLocked,
|
||||
Inputfield::collapsedYesLocked,
|
||||
Inputfield::collapsedHidden
|
||||
);
|
||||
if(!in_array($collapsed, $ignoreCollapsed)) {
|
||||
// Inputfield is not already locked or hidden, convert to locked equivalent
|
||||
if($collapsed == Inputfield::collapsedYes || $collapsed == Inputfield::collapsedBlank) {
|
||||
if($collapsed == Inputfield::collapsedYes) {
|
||||
$collapsed = Inputfield::collapsedYesLocked;
|
||||
} else if($collapsed == Inputfield::collapsedBlank) {
|
||||
$collapsed = Inputfield::collapsedBlankLocked;
|
||||
} else if($collapsed == Inputfield::collapsedNo) {
|
||||
$collapsed = Inputfield::collapsedNoLocked;
|
||||
} else {
|
||||
|
@@ -168,13 +168,20 @@ abstract class Inputfield extends WireData implements Module {
|
||||
*
|
||||
*/
|
||||
const collapsedPopulated = 5;
|
||||
|
||||
|
||||
/**
|
||||
* Not collapsed, value visible but not editable
|
||||
* #pw-group-collapsed-constants
|
||||
*
|
||||
*/
|
||||
const collapsedNoLocked = 6;
|
||||
|
||||
/**
|
||||
* Collapsed when blank, value visible but not editable
|
||||
* #pw-group-collapsed-constants
|
||||
*
|
||||
*/
|
||||
const collapsedNoLocked = 7;
|
||||
const collapsedBlankLocked = 7;
|
||||
|
||||
/**
|
||||
* Collapsed unless opened (value becomes visible but not editable)
|
||||
@@ -1448,12 +1455,13 @@ abstract class Inputfield extends WireData implements Module {
|
||||
$field->description = $this->_("How should this field be displayed in the editor?");
|
||||
$field->addOption(self::collapsedNo, $this->_('Open'));
|
||||
$field->addOption(self::collapsedNever, $this->_('Open + Cannot be closed'));
|
||||
$field->addOption(self::collapsedNoLocked, $this->_('Open + Locked (not editable)'));
|
||||
$field->addOption(self::collapsedBlank, $this->_('Open when populated + Closed when blank'));
|
||||
if($this->hasFieldtype !== false) {
|
||||
$field->addOption(self::collapsedBlankAjax, $this->_('Open when populated + Closed when blank + Load only when opened (AJAX)') . " †");
|
||||
}
|
||||
$field->addOption(self::collapsedNoLocked, $this->_('Open when populated + Closed when blank + Locked (not editable)'));
|
||||
$field->addOption(self::collapsedPopulated, $this->_('Open when blank + Closed when populated'));
|
||||
$field->addOption(self::collapsedBlankLocked, $this->_('Open when populated + Closed when blank + Locked (not editable)'));
|
||||
$field->addOption(self::collapsedPopulated, $this->_('Open when blank + Closed when populated'));
|
||||
$field->addOption(self::collapsedYes, $this->_('Closed'));
|
||||
$field->addOption(self::collapsedYesLocked, $this->_('Closed + Locked (not editable)'));
|
||||
if($this->hasFieldtype !== false) {
|
||||
|
@@ -684,6 +684,7 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
||||
$classes = array();
|
||||
$useColumnWidth = $this->useColumnWidth;
|
||||
$renderAjaxInputfield = $this->wire()->config->ajax ? $this->wire()->input->get('renderInputfieldAjax') : null;
|
||||
$lockedStates = array(Inputfield::collapsedNoLocked, Inputfield::collapsedYesLocked, Inputfield::collapsedBlankLocked);
|
||||
|
||||
if($useColumnWidth === true && isset($_classes['form']) && strpos($_classes['form'], 'InputfieldFormNoWidths') !== false) {
|
||||
$useColumnWidth = false;
|
||||
@@ -718,7 +719,7 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
||||
$showIf = $inputfield->getSetting('showIf');
|
||||
|
||||
if($collapsed == Inputfield::collapsedHidden) continue;
|
||||
if($collapsed == Inputfield::collapsedNoLocked || $collapsed == Inputfield::collapsedYesLocked) $renderValueMode = true;
|
||||
if(in_array($collapsed, $lockedStates)) $renderValueMode = true;
|
||||
|
||||
$ffOut = $this->renderInputfield($inputfield, $renderValueMode);
|
||||
if(!strlen($ffOut)) continue;
|
||||
@@ -797,7 +798,7 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
||||
$collapsed === Inputfield::collapsedYesAjax ||
|
||||
($isEmpty && $collapsed === Inputfield::collapsedBlank) ||
|
||||
($isEmpty && $collapsed === Inputfield::collapsedBlankAjax) ||
|
||||
($isEmpty && $collapsed === Inputfield::collapsedNoLocked) || // collapsedNoLocked assumed to be like a collapsedBlankLocked
|
||||
($isEmpty && $collapsed === Inputfield::collapsedBlankLocked) ||
|
||||
(!$isEmpty && $collapsed === Inputfield::collapsedPopulated)) {
|
||||
$ffAttrs['class'] .= ' ' . $classes['item_collapsed'];
|
||||
}
|
||||
@@ -1157,6 +1158,7 @@ class InputfieldWrapper extends Inputfield implements \Countable, \IteratorAggre
|
||||
Inputfield::collapsedHidden,
|
||||
Inputfield::collapsedLocked,
|
||||
Inputfield::collapsedNoLocked,
|
||||
Inputfield::collapsedBlankLocked,
|
||||
Inputfield::collapsedYesLocked
|
||||
);
|
||||
$collapsed = (int) $inputfield->getSetting('collapsed');
|
||||
|
Reference in New Issue
Block a user