From 81c8d4eb2fa2baa678d29b2b92086867dd1d9db7 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Mon, 10 Apr 2017 08:23:45 -0400 Subject: [PATCH] Fix issue processwire/processwire-issues#236 with InputfieldSelector, plus update the "None" selection option to fix another issue reported in ListerPro board --- .../InputfieldSelector/InputfieldSelector.module | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module index af354456..a3236a4e 100644 --- a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module +++ b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module @@ -260,12 +260,13 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { if(!$this->wire('user')->isLoggedin()) return; $this->set('initValue', $this->sessionGet('initValue')); - $this->setup(); $sanitizer = $this->wire('sanitizer'); foreach($this->sessionVarNames as $key) { $this->set($key, $this->sessionGet($key)); } + + $this->setup(); if($action == 'field') { $out = $this->renderSelectField(); @@ -1273,8 +1274,16 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { if($type != 'checkbox' && !isset($this->systemFields[$fieldName]) && !isset($this->modifierFields[$fieldName])) { // allow for a "None" option to find pages that have no selections for the field - $selected = $selectedValue == '""' ? ' selected' : ''; - $out .= "" . $this->_('None') . ""; + $none = '0'; + foreach($options as $value => $label) { + // if select is using "0" as a literal selectable value, don't consider it as "None" + if($value === 0 || $value === '0') { + $none = '""'; + break; + } + } + $selected = $selectedValue == $none || $selectedValue == '""' ? ' selected' : ''; + $out .= "" . $this->_('None') . ""; } // render each option