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 .. ":" }

Impressum / About Us