From a5c006b593e1386b5e42577efde208a62e3acf93 Mon Sep 17 00:00:00 2001 From: Cameron <e107inc@gmail.com> Date: Mon, 12 Sep 2016 11:30:08 -0700 Subject: [PATCH] AdminUI: Fixes saving of checkbox values when values are empty. Language-class: additional option added to installed() for en=>English array format. --- e107_handlers/admin_ui.php | 9 +++++++ e107_handlers/language_class.php | 40 ++++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php index 84199675f..9347fd6a3 100644 --- a/e107_handlers/admin_ui.php +++ b/e107_handlers/admin_ui.php @@ -5403,8 +5403,17 @@ class e_admin_ui extends e_admin_controller_ui { $data = $this->getPosted(); + foreach($this->prefs as $k=>$v) // fix for empty checkboxes - need to save a value. + { + if(!isset($data[$k]) && $v['data'] !== false && ($v['type'] == 'checkboxes' || $v['type'] == 'checkbox')) + { + $data[$k] = null; + } + } + foreach($data as $key=>$val) { + if(!empty($this->prefs[$key]['multilan'])) { diff --git a/e107_handlers/language_class.php b/e107_handlers/language_class.php index 97fdbf010..a2b59d484 100644 --- a/e107_handlers/language_class.php +++ b/e107_handlers/language_class.php @@ -392,6 +392,7 @@ class language{ * @param str $type - English or Native. * @example type = english: array(0=>'English', 1=>'French' ...) * @example type = native: array('English'=>'English', 'French'=>'Francais'...) + * @example type = abbr: array('en'=>'English, 'fr'=>'French' ... ) * @return array */ function installed($type='english') @@ -415,20 +416,39 @@ class language{ $this->lanlist = array_intersect($lanlist,$this->list); } - if($type == 'native') + switch($type) { - $natList = array(); - foreach($this->lanlist as $lang) - { - $natList[$lang] = $this->toNative($lang); - } + case "native": + $natList = array(); + foreach($this->lanlist as $lang) + { + $natList[$lang] = $this->toNative($lang); + } - natsort($natList); + natsort($natList); - return $natList; + return $natList; + break; + + case "abbr": + $natList = array(); + foreach($this->lanlist as $lang) + { + $iso = $this->convert($lang); + $natList[$iso] = $lang; + } + + natsort($natList); + + return $natList; + break; + + case "english": + default: + return $this->lanlist; } - - return $this->lanlist; + + }