1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-08 07:47:00 +02:00

Update for processwire/processwire-issues#1568 - clone tags with fieldset_END fields, and suppress showing fieldset_END field lists unless system or advanced mode

This commit is contained in:
Ryan Cramer
2023-07-19 10:14:14 -04:00
parent bde089afd3
commit f835d8ecf9

View File

@@ -8,7 +8,7 @@
* For more details about how Process modules work, please see: * For more details about how Process modules work, please see:
* /wire/core/Process.php * /wire/core/Process.php
* *
* ProcessWire 3.x, Copyright 2022 by Ryan Cramer * ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com * https://processwire.com
* *
* @property bool $listAfterSave * @property bool $listAfterSave
@@ -196,7 +196,10 @@ class ProcessField extends Process implements ConfigurableModule {
$fieldsArray = array(); $fieldsArray = array();
$showAll = $this->wire()->config->advanced; $showAll = $this->wire()->config->advanced;
foreach($this->wire()->fields as $field) { foreach($this->wire()->fields as $field) {
if(!$showAll && ($field->flags & Field::flagSystem) && $field->name != 'title') continue; if(!$showAll) {
if(($field->flags & Field::flagSystem) && $field->name != 'title') continue;
if($field->type instanceof FieldtypeFieldsetClose) continue;
}
$fieldsArray[] = $field; $fieldsArray[] = $field;
} }
$options['items'] = $fieldsArray; $options['items'] = $fieldsArray;
@@ -649,6 +652,10 @@ class ProcessField extends Process implements ConfigurableModule {
$sanitizer = $this->wire()->sanitizer; $sanitizer = $this->wire()->sanitizer;
$session = $this->wire()->session; $session = $this->wire()->session;
$editUrl = "edit?id=$field->id"; $editUrl = "edit?id=$field->id";
if($field->type instanceof FieldtypeFieldsetClose) {
if(!$session->getFor($this, 'filterShowSystem')) return array();
}
$flagDefs = array( $flagDefs = array(
'Autojoin' => array( 'Autojoin' => array(
@@ -1544,11 +1551,7 @@ class ProcessField extends Process implements ConfigurableModule {
protected function ___buildEditFormBasics() { protected function ___buildEditFormBasics() {
$modules = $this->wire()->modules; $modules = $this->wire()->modules;
$fields = $this->wire()->fields;
$languages = $this->wire()->languages; $languages = $this->wire()->languages;
$config = $this->wire()->config;
$isNew = !$this->field || !$this->field->id;
$languageFields = array(); $languageFields = array();
$adminTheme = $this->wire()->adminTheme; $adminTheme = $this->wire()->adminTheme;
@@ -2376,7 +2379,17 @@ class ProcessField extends Process implements ConfigurableModule {
if($field->type instanceof FieldtypeFieldsetOpen && strpos($cloneField->name, '_END') === false) { if($field->type instanceof FieldtypeFieldsetOpen && strpos($cloneField->name, '_END') === false) {
// handle a cloned fieldset by also cloning its closer // handle a cloned fieldset by also cloning its closer
$field->set('closeFieldID', null); $closeFieldset = $fields->get($cloneField->name . '_END');
$closeFieldsetCopy = null;
if($closeFieldset) {
$closeName = $name . '_END';
$closeFieldsetCopy = $fields->get($closeName);
if(!$closeFieldsetCopy) $closeFieldsetCopy = $fields->clone($closeFieldset, $closeName);
if($closeFieldsetCopy) $field->set('closeFieldID', $closeFieldsetCopy->id);
}
if(!$closeFieldsetCopy) {
$field->set('closeFieldID', null);
}
} }
return $field; return $field;