liquid_feedback_frontend
changeset 1685:d09c3a0d17e6
Added multiselect field
author | bsw |
---|---|
date | Mon Sep 20 13:03:37 2021 +0200 (2021-09-20) |
parents | b1cec2dcc035 |
children | e5756a575dde |
files | app/main/registration/_action/register.lua app/main/registration/_register_form.lua |
line diff
1.1 --- a/app/main/registration/_action/register.lua Mon Sep 20 12:32:40 2021 +0200 1.2 +++ b/app/main/registration/_action/register.lua Mon Sep 20 13:03:37 2021 +0200 1.3 @@ -138,6 +138,22 @@ 1.4 end 1.5 verification.request_data[field.name] = string.format("%04i-%02i-%02i", year, month, day) 1.6 1.7 + elseif field.type == "multiselect" then 1.8 + local values = {} 1.9 + for i_options, option in ipairs(field.options) do 1.10 + if not option.id then 1.11 + option.id = option.name 1.12 + end 1.13 + local value = param.get("verification_data_" .. field.name .. "__" .. option.id) 1.14 + if value == "1" then 1.15 + if option.other then 1.16 + table.insert(values, param.get("verification_data_" .. field.name .. "_other")) 1.17 + else 1.18 + table.insert(values, option.name) 1.19 + end 1.20 + end 1.21 + end 1.22 + verification.request_data[field.name] = table.concat(values, ", ") 1.23 else 1.24 local value = param.get("verification_data_" .. field.name) 1.25 if field.type == "dropdown" then
2.1 --- a/app/main/registration/_register_form.lua Mon Sep 20 12:32:40 2021 +0200 2.2 +++ b/app/main/registration/_register_form.lua Mon Sep 20 13:03:37 2021 +0200 2.3 @@ -154,6 +154,58 @@ 2.4 end 2.5 slot.put("<br />") 2.6 2.7 + elseif field.type == "multiselect" then 2.8 + local options = { { id = "", name = "" } } 2.9 + local other_option_id 2.10 + for i_options, option in ipairs(field.options) do 2.11 + if not option.id then 2.12 + option.id = option.name 2.13 + end 2.14 + local onchange_script 2.15 + if option.other then 2.16 + 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'); };" 2.17 + end 2.18 + ui.container{ content = function() 2.19 + ui.tag{ tag = "label", attr = { 2.20 + class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect", 2.21 + style = "display: inline;", 2.22 + ["for"] = "verification_data_" .. field.name .. "__" .. option.id, 2.23 + }, 2.24 + content = function() 2.25 + ui.tag{ 2.26 + tag = "input", 2.27 + attr = { 2.28 + type = "checkbox", 2.29 + class = "mdl-checkbox__input", 2.30 + onchange = onchange_script, 2.31 + id = "verification_data_" .. field.name .. "__" .. option.id, 2.32 + name = "verification_data_" .. field.name .. "__" .. option.id, 2.33 + value = "1", 2.34 + style = "float: left;", 2.35 + checked = request.get_param{ name = "verification_data_" .. field.name .. "__" .. option.id } and "checked" or nil, 2.36 + } 2.37 + } 2.38 + ui.tag{ 2.39 + attr = { class = "mdl-checkbox__label" }, 2.40 + content = option.name 2.41 + } 2.42 + end 2.43 + } 2.44 + end } 2.45 + if option.other then 2.46 + slot.put(" ") 2.47 + ui.field.text{ 2.48 + container_attr = { id = "lf-register__data_other_container_" .. field.name, class = "hidden mdl-textfield mdl-js-textfield mdl-textfield--floating-label" .. class }, 2.49 + attr = { id = "lf-register__data_other_" .. field.name, class = "mdl-textfield__input" }, 2.50 + name = "verification_data_" .. field.name .. "_other", 2.51 + label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__data" .. field.name }, 2.52 + label = field.name, 2.53 + value = request.get_param{ name = "verification_data_" .. field.name .. "_other" } 2.54 + } 2.55 + end 2.56 + end 2.57 + slot.put("<br />") 2.58 + 2.59 elseif field.type == "image" then 2.60 slot.put("<br />") 2.61 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 .. ":" }