From 1aaef35474f371c737cea1fba40846d58d0dccb9 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Wed, 20 Nov 2019 09:35:54 -0500 Subject: [PATCH] Fix issue processwire/processwire#1016 and some related minor optimizations --- .../ProcessTemplate/ProcessTemplate.module | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplate.module b/wire/modules/Process/ProcessTemplate/ProcessTemplate.module index 9bfa3b91..765597d1 100644 --- a/wire/modules/Process/ProcessTemplate/ProcessTemplate.module +++ b/wire/modules/Process/ProcessTemplate/ProcessTemplate.module @@ -163,14 +163,16 @@ class ProcessTemplate extends Process { $out = $this->getListFilterForm()->render() . "\n
\n"; $templatesByTag = array(); - $untaggedLabel = $this->_('Untagged'); - $hasFilters = $this->session->get('ProcessTemplateFilterField'); + $untaggedLabel = $this->_('Untagged'); // Tag applied to untagged fields + $systemLabel = $this->_x('System', 'tag'); // Tag applied to the group of built-in/system fields + $hasFilters = $this->session->getFor($this, 'filterField'); + $showSystem = $this->session->getFor($this, 'filterSystem'); $collapsedTags = array(); $caseTags = array(); // indexed by lowercase version of tag if(!$hasFilters) foreach($this->templates as $template) { - if($this->session->get('ProcessTemplateFilterSystem')) { - if($template->flags & Template::flagSystem) $template->tags .= " " . $this->_x('System', 'tag'); // Tag applied to the group of built-in/system fields + if($showSystem && ($template->flags & Template::flagSystem)) { + $template->tags .= " $systemLabel"; } if(empty($template->tags)) { $tag = strtolower($untaggedLabel); @@ -201,12 +203,14 @@ class ProcessTemplate extends Process { ksort($templatesByTag); foreach($templatesByTag as $tag => $templates) { ksort($templates); + $table = $this->getListTable($templates); + if(!count($table->rows)) continue; /** @var InputfieldMarkup $f */ $f = $this->modules->get('InputfieldMarkup'); $f->entityEncodeLabel = false; $f->label = $caseTags[$tag]; $f->icon = 'tags'; - $f->value = $this->getListTable($templates)->render(); + $f->value = $table->render(); if(in_array($tag, $collapsedTags)) $f->collapsed = Inputfield::collapsedYes; $form->add($f); } @@ -243,8 +247,8 @@ class ProcessTemplate extends Process { $out .= $button->render(); if($this->input->get('nosave')) { - $this->session->remove('ProcessTemplateFilterSystem'); - $this->session->remove('ProcessTemplateFilterField'); + $this->session->removeFor($this, 'filterSystem'); + $this->session->removeFor($this, 'filterField'); } return $out; @@ -285,9 +289,9 @@ class ProcessTemplate extends Process { } if($input->get('filter_field') !== null) { $filterField = $this->sanitizer->name($input->get('filter_field')); - $this->session->set('ProcessTemplateFilterField', $filterField); + $this->session->setFor($this, 'filterField', $filterField); } else { - $filterField = $this->session->get('ProcessTemplateFilterField'); + $filterField = $this->session->getFor($this, 'filterField'); } $field->attr('value', $filterField); $field->collapsed = $filterField ? Inputfield::collapsedNo : Inputfield::collapsedYes; @@ -310,16 +314,20 @@ class ProcessTemplate extends Process { $field->icon = 'gear'; if($input->get('system') !== null) { $filterSystem = (int) $input->get('system'); - $this->session->set('ProcessTemplateFilterSystem', $filterSystem); + $this->session->setFor($this, 'filterSystem', $filterSystem); } else { - $filterSystem = (int) $this->session->get('ProcessTemplateFilterSystem'); + $filterSystem = (int) $this->session->getFor($this, 'filterSystem'); } $field->attr('value', $filterSystem); $field->collapsed = $filterSystem ? Inputfield::collapsedNo : Inputfield::collapsedYes; $fieldset->add($field); - } else $filterSystem = 0; + } else { + $filterSystem = 0; + } - if($filterSystem || $filterField) $fieldset->collapsed = Inputfield::collapsedNo; + if($filterSystem || $filterField) { + $fieldset->collapsed = Inputfield::collapsedNo; + } return $form; } @@ -408,8 +416,8 @@ class ProcessTemplate extends Process { ) ); - $filterField = $this->session->get('ProcessTemplateFilterField'); - $filterSystem = $this->session->get('ProcessTemplateFilterSystem'); + $filterField = $this->session->getFor($this, 'filterField'); + $filterSystem = $this->session->getFor($this, 'filterSystem'); if($template->flags & Template::flagSystem) { if(!$filterSystem && !$filterField) return array();