From 2f09ae56adb75b6e1767dcad63feaf1a9d2a87c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre=20Mazi=C3=A8re?= <pierre.maziere@gmx.com>
Date: Mon, 22 Aug 2016 01:23:20 +0200
Subject: [PATCH] [core] render two levels 'values' parameter property with
 optgroup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

example:
$parameterSet=array(
  'feed'=>array(
     'name'=>'Feed',
     'type'=>'list',
     'values'=>array(
        'list A'=>array(
           'feed A1'=>'fA1',
           'feed A2'=>'fA2'
        ),
        'list B'=>array(
           'feed B1'=>'fB1',
           'feed B2'=>'fB2
        )
     )
  )
);

Signed-off-by: Pierre Mazière <pierre.maziere@gmx.com>
---
 lib/HTMLUtils.php | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lib/HTMLUtils.php b/lib/HTMLUtils.php
index 03763afc..bf150fbb 100644
--- a/lib/HTMLUtils.php
+++ b/lib/HTMLUtils.php
@@ -104,10 +104,21 @@ CARD;
 						else
 							$card .= '<option value="' . $listValues['value'] . '">' . $listValues['name'] . '</option>';
                       }else{
+                        if(is_array($value)){
+                          $card.='<optgroup label="'.htmlentities($name).'">';
+                          foreach($value as $subname=>$subvalue){
+                          if($inputEntry['defaultValue'] === $subname || $inputEntry['defaultValue'] === $subvalue)
+                            $card .= '<option value="' . $subvalue . '" selected>' . $subname . '</option>';
+                          else
+                            $card .= '<option value="' . $subvalue . '">' . $subname . '</option>';
+                          }
+                          $card.='</optgroup>';
+                        }else{
                           if($inputEntry['defaultValue'] === $name || $inputEntry['defaultValue'] === $value)
                             $card .= '<option value="' . $value . '" selected>' . $name . '</option>';
                           else
                             $card .= '<option value="' . $value . '">' . $name . '</option>';
+                        }
                       }
                     }