util.dataforms: Add list-multi support
authorFlorian Zeitz <florob@babelmonkeys.de>
Thu, 15 Jul 2010 20:58:10 +0000 (22:58 +0200)
committerFlorian Zeitz <florob@babelmonkeys.de>
Thu, 15 Jul 2010 20:58:10 +0000 (22:58 +0200)
util/dataforms.lua

index f6a61f1f4c2996105dc9d33f099f1d6d5529ce46..7814ada0232c0c8508af5a7ed4e58f07fbc1df39 100644 (file)
@@ -79,6 +79,17 @@ function form_t.form(layout, data, formtype)
                                                form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
                                        end
                                end
+                       elseif field_type == "list-multi" then
+                               for _, val in ipairs(value) do
+                                       if type(val) == "table" then
+                                               form:tag("option", { label = val.label }):tag("value"):text(val.value):up():up();
+                                               if val.default then
+                                                       form:tag("value"):text(val.value):up();
+                                               end
+                                       else
+                                               form:tag("option", { label= val }):tag("value"):text(tostring(val)):up():up();
+                                       end
+                               end
                        end
                end
                
@@ -154,6 +165,17 @@ field_readers["text-multi"] =
 field_readers["list-single"] =
        field_readers["text-single"];
 
+field_readers["list-multi"] =
+       function (field_tag)
+               local result = {};
+               for value_tag in field_tag:childtags() do
+                       if value_tag.name == "value" then
+                               result[#result+1] = value_tag[1];
+                       end
+               end
+               return result;
+       end
+
 field_readers["boolean"] = 
        function (field_tag)
                local value = field_tag:child_with_name("value");