# HG changeset patch # User bsw # Date 1632135817 -7200 # Node ID d09c3a0d17e6b30da8869d91e01a1499f7cc8c68 # Parent b1cec2dcc03576472370d213ba7ab50b4289a36b Added multiselect field diff -r b1cec2dcc035 -r d09c3a0d17e6 app/main/registration/_action/register.lua --- a/app/main/registration/_action/register.lua Mon Sep 20 12:32:40 2021 +0200 +++ b/app/main/registration/_action/register.lua Mon Sep 20 13:03:37 2021 +0200 @@ -138,6 +138,22 @@ end verification.request_data[field.name] = string.format("%04i-%02i-%02i", year, month, day) + elseif field.type == "multiselect" then + local values = {} + for i_options, option in ipairs(field.options) do + if not option.id then + option.id = option.name + end + local value = param.get("verification_data_" .. field.name .. "__" .. option.id) + if value == "1" then + if option.other then + table.insert(values, param.get("verification_data_" .. field.name .. "_other")) + else + table.insert(values, option.name) + end + end + end + verification.request_data[field.name] = table.concat(values, ", ") else local value = param.get("verification_data_" .. field.name) if field.type == "dropdown" then diff -r b1cec2dcc035 -r d09c3a0d17e6 app/main/registration/_register_form.lua --- a/app/main/registration/_register_form.lua Mon Sep 20 12:32:40 2021 +0200 +++ b/app/main/registration/_register_form.lua Mon Sep 20 13:03:37 2021 +0200 @@ -154,6 +154,58 @@ end slot.put("
") + elseif field.type == "multiselect" then + local options = { { id = "", name = "" } } + local other_option_id + for i_options, option in ipairs(field.options) do + if not option.id then + option.id = option.name + end + local onchange_script + if option.other then + onchange_script = "var el = document.getElementById('lf-register__data_other_container_" .. field.name .. "'); if (this.checked) { console.log(el); el.classList.remove('hidden'); } else { el.classList.add('hidden'); };" + end + ui.container{ content = function() + ui.tag{ tag = "label", attr = { + class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect", + style = "display: inline;", + ["for"] = "verification_data_" .. field.name .. "__" .. option.id, + }, + content = function() + ui.tag{ + tag = "input", + attr = { + type = "checkbox", + class = "mdl-checkbox__input", + onchange = onchange_script, + id = "verification_data_" .. field.name .. "__" .. option.id, + name = "verification_data_" .. field.name .. "__" .. option.id, + value = "1", + style = "float: left;", + checked = request.get_param{ name = "verification_data_" .. field.name .. "__" .. option.id } and "checked" or nil, + } + } + ui.tag{ + attr = { class = "mdl-checkbox__label" }, + content = option.name + } + end + } + end } + if option.other then + slot.put(" ") + ui.field.text{ + container_attr = { id = "lf-register__data_other_container_" .. field.name, class = "hidden mdl-textfield mdl-js-textfield mdl-textfield--floating-label" .. class }, + attr = { id = "lf-register__data_other_" .. field.name, class = "mdl-textfield__input" }, + name = "verification_data_" .. field.name .. "_other", + label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__data" .. field.name }, + label = field.name, + value = request.get_param{ name = "verification_data_" .. field.name .. "_other" } + } + end + end + slot.put("
") + elseif field.type == "image" then slot.put("
") ui.tag{ tag = "label", attr = { style = "vertical-align: bottom; border-bottom: 1px solid rgba(0,0,0, 0.12); color: #777; font-size: 16px;" }, content = field.label .. ":" }