liquid_feedback_frontend

annotate app/main/index/register.lua @ 1710:62b8c3e17112

Added translation file with city instead of unit
author bsw
date Mon Sep 27 12:06:15 2021 +0200 (2021-09-27)
parents 32cc544d5a5b
children
rev   line source
bsw@1071 1 local ldap_uid
bsw@1071 2
bsw@1071 3 if config.ldap.member and app.session.authority == "ldap" then
bsw@1074 4 ldap_uid = app.session.authority_uid
bsw@1071 5 end
bsw@1071 6
bsw@1071 7 if config.registration_disabled and not ldap_uid then
bsw/jbe@1309 8 return execute.view { module = "index", view = "404" }
bsw@1071 9 end
bsw@1071 10
bsw@441 11 execute.view{ module = "index", view = "_lang_chooser" }
bsw@441 12
bsw@286 13 local step = param.get("step", atom.integer)
bsw/jbe@5 14 local code = param.get("code")
bsw/jbe@6 15 local notify_email = param.get("notify_email")
bsw/jbe@5 16 local name = param.get("name")
bsw/jbe@5 17 local login = param.get("login")
bsw/jbe@5 18
bsw@1073 19 local member
bsw/jbe@5 20
bsw@1073 21 if ldap_uid then
bsw@1073 22 member, err = ldap.create_member(ldap_uid, true)
bsw@1073 23 if err then
bsw@1073 24 error(err)
bsw@1073 25 end
bsw@1073 26 elseif code then
bsw@1073 27 member = Member:new_selector()
bsw@1073 28 :add_where{ "invite_code = ?", code }
bsw@1073 29 :add_where{ "activated ISNULL" }
bsw@1073 30 :optional_object_mode()
bsw@1073 31 :exec()
bsw@1073 32 end
bsw@286 33
bsw@1073 34
bsw@1073 35
bsw/jbe@1309 36 ui.container{ attr = { class = "mdl-grid" }, content = function()
bsw/jbe@1309 37 ui.container{ attr = { class = "mdl-cell mdl-cell--12-col" }, content = function()
bsw/jbe@1309 38 ui.heading{ level = 1, content = _"Account registration" }
bsw/jbe@1309 39 --[[
bsw@1073 40 if not code and not ldap_uid then
bsw/jbe@1309 41 ui.heading{ level = 1, content = _"Registration (step 1 of 3: Invite code)" }
bsw@1073 42 elseif (not member.notify_email and not notify_email)
bsw@1071 43 or (not member.name and not name)
bsw@1071 44 or (not member.login and not login and not member.authority)
bsw@1071 45 or step == 1 then
bsw/jbe@1309 46 ui.heading { level = 1, content = _"Registration (step 2 of 3: Personal information)" }
bsw@1073 47 else
bsw/jbe@1309 48 ui.heading { level = 1, content = _"Registration (step 3 of 3: Terms of use and password)" }
bsw@1073 49 end
bsw/jbe@1309 50 --]]
bsw@1073 51 ui.sectionRow( function()
bsw@1073 52 ui.form{
bsw@1073 53 attr = { class = "wide" },
bsw@1073 54 module = 'index',
bsw@1073 55 action = 'register',
bsw@1073 56 params = {
bsw@1073 57 code = code,
bsw@1073 58 notify_email = notify_email,
bsw@1073 59 name = name,
bsw/jbe@1309 60 login = login,
bsw/jbe@1309 61 skip = param.get("skip"),
bsw/jbe@1309 62 redirect_module = param.get("redirect_module"),
bsw/jbe@1309 63 redirect_view = param.get("redirect_view"),
bsw/jbe@1309 64 redirect_id = param.get("redirect_id"),
bsw/jbe@1309 65 redirect_params = param.get("redirect_params")
bsw@1073 66 },
bsw@1073 67 content = function()
bsw@1073 68
bsw@1073 69 if not code and not ldap_uid then
bsw@1073 70 ui.field.hidden{ name = "step", value = 1 }
bsw/jbe@1309 71 ui.tag { tag = "p", content = _"Please enter the invite code you've received" }
bsw@1073 72 ui.field.text{
bsw/jbe@1309 73 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 74 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 75 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 76 label = _'Invite code',
bsw/jbe@1309 77 name = 'code',
bsw/jbe@1309 78 value = ''
bsw@1073 79 }
bsw/jbe@1309 80 slot.put("<br /><br />")
bsw/jbe@1309 81 ui.tag{
bsw/jbe@1309 82 tag = "input",
bsw/jbe@1309 83 attr = {
bsw/jbe@1309 84 type = "submit",
bsw/jbe@1309 85 class = "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
bsw/jbe@1309 86 value = _'proceed with registration'
bsw/jbe@1309 87 }
bsw@745 88 }
bsw@1045 89 slot.put(" ")
bsw@1073 90 else
bsw@1073 91 if (not member.notify_email and not notify_email)
bsw@1073 92 or (not member.name and not name)
bsw@1073 93 or (not member.login and not login and not member.authority)
bsw@1073 94 or step == 1 then
bsw@1073 95 ui.field.hidden{ name = "step", value = 2 }
bsw@286 96
bsw@1073 97 ui.tag{
bsw@1073 98 tag = "p",
bsw@1073 99 content = _"This invite key is connected with the following information:"
bsw@1073 100 }
bsw@1073 101
bsw@1073 102 execute.view{ module = "member", view = "_profile", params = { member = member, for_registration = true } }
bsw@1045 103
bsw/jbe@1309 104 slot.put("<br /><br />")
bsw/jbe@1309 105
bsw/jbe@1309 106 if not util.is_profile_field_locked(member, "notify_email") and not member.notify_email then
bsw@1073 107 ui.tag{
bsw@1073 108 tag = "p",
bsw@1073 109 content = _"Please enter your email address. This address will be used for automatic notifications (if you request them) and in case you've lost your password. This address will not be published. After registration you will receive an email with a confirmation link."
bsw@1073 110 }
bsw@1073 111 ui.field.text{
bsw/jbe@1309 112 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 113 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 114 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 115 label = _'Email address',
bsw/jbe@1309 116 name = 'notify_email',
bsw@1073 117 value = param.get("notify_email") or member.notify_email
bsw@1073 118 }
bsw@1073 119 end
bsw@1073 120 if not util.is_profile_field_locked(member, "name") then
bsw@1073 121 ui.tag{
bsw@1073 122 tag = "p",
bsw@1073 123 content = _"Please choose a name, i.e. your real name or your nick name. This name will be shown to others to identify you."
bsw@1073 124 }
bsw@1073 125 ui.field.text{
bsw/jbe@1309 126 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 127 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 128 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 129 label = _'Screen name',
bsw@1073 130 name = 'name',
bsw@1073 131 value = param.get("name") or member.name
bsw@1073 132 }
bsw@1073 133 end
bsw@1073 134 if not util.is_profile_field_locked(member, "login") then
bsw@1073 135 ui.tag{
bsw@1073 136 tag = "p",
bsw@1073 137 content = _"Please choose a login name. This name will not be shown to others and is used only by you to login into the system. The login name is case sensitive."
bsw@1073 138 }
bsw@1073 139 ui.field.text{
bsw/jbe@1309 140 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 141 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 142 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 143 label = _'Login name',
bsw@1073 144 name = 'login',
bsw@1073 145 value = param.get("login") or member.login
bsw@1073 146 }
bsw@1073 147 end
bsw/jbe@1309 148 slot.put("<br /><br />")
bsw/jbe@1309 149 ui.tag{
bsw/jbe@1309 150 tag = "input",
bsw/jbe@1309 151 attr = {
bsw/jbe@1309 152 type = "submit",
bsw/jbe@1309 153 class = "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
bsw/jbe@1309 154 value = _'proceed with registration'
bsw@1073 155 }
bsw@1073 156 }
bsw/jbe@1309 157 if param.get("skip") ~= "1" then
bsw/jbe@1309 158 slot.put(" ")
bsw/jbe@1309 159 ui.link{
bsw/jbe@1309 160 attr = { class = "mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--underlined" },
bsw/jbe@1309 161 content = _"one step back",
bsw/jbe@1309 162 module = "index",
bsw/jbe@1309 163 view = "register",
bsw/jbe@1309 164 params = {
bsw/jbe@1309 165 invite = code,
bsw/jbe@1309 166 redirect_module = param.get("redirect_module"),
bsw/jbe@1309 167 redirect_view = param.get("redirect_view"),
bsw/jbe@1309 168 redirect_id = param.get("redirect_id"),
bsw/jbe@1309 169 redirect_params = param.get("redirect_params")
bsw/jbe@1309 170 }
bsw/jbe@1309 171 }
bsw/jbe@1309 172 end
bsw/jbe@1309 173 else
bsw@1073 174 ui.field.hidden{ name = "step", value = "3" }
bsw/jbe@1309 175
bsw/jbe@1309 176 local need_to_accept_terms = false
bsw@1045 177
bsw@1073 178 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw/jbe@1309 179 local member_useterms = MemberUseterms:new_selector()
bsw/jbe@1309 180 :add_where{ "member_id = ?", member.id }
bsw/jbe@1309 181 :add_where{ "contract_identifier = ?", checkbox.name }
bsw/jbe@1309 182 :exec()
bsw/jbe@1309 183 if #member_useterms == 0 then
bsw/jbe@1309 184 need_to_accept_terms = true
bsw/jbe@1309 185 end
bsw/jbe@1309 186 end
bsw/jbe@1309 187
bsw/jbe@1309 188 if need_to_accept_terms then
bsw/jbe@1309 189 ui.container{
bsw/jbe@1309 190 attr = { class = "wiki use_terms" },
bsw@1073 191 content = function()
bsw/jbe@1309 192 slot.put(config.use_terms)
bsw/jbe@1309 193 end
bsw/jbe@1309 194 }
bsw/jbe@1309 195
bsw/jbe@1309 196 for i, checkbox in ipairs(config.use_terms_checkboxes) do
bsw/jbe@1309 197 local member_useterms = MemberUseterms:new_selector()
bsw/jbe@1309 198 :add_where{ "member_id = ?", member.id }
bsw/jbe@1309 199 :add_where{ "contract_identifier = ?", checkbox.name }
bsw/jbe@1309 200 :exec()
bsw/jbe@1309 201 if #member_useterms == 0 then
bsw/jbe@1309 202 slot.put("<br />")
bsw@1073 203 ui.tag{
bsw/jbe@1309 204 tag = "div",
bsw/jbe@1309 205 content = function()
bsw/jbe@1309 206 ui.tag{
bsw/jbe@1309 207 tag = "input",
bsw/jbe@1309 208 attr = {
bsw/jbe@1309 209 type = "checkbox",
bsw/jbe@1309 210 id = "use_terms_checkbox_" .. checkbox.name,
bsw/jbe@1309 211 name = "use_terms_checkbox_" .. checkbox.name,
bsw/jbe@1309 212 value = "1",
bsw/jbe@1309 213 style = "float: left;",
bsw/jbe@1309 214 checked = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean) and "checked" or nil
bsw/jbe@1309 215 }
bsw/jbe@1309 216 }
bsw/jbe@1309 217 slot.put("&nbsp;")
bsw/jbe@1309 218 ui.tag{
bsw/jbe@1309 219 tag = "label",
bsw/jbe@1309 220 attr = { ['for'] = "use_terms_checkbox_" .. checkbox.name },
bsw/jbe@1309 221 content = function() slot.put(checkbox.html) end
bsw/jbe@1309 222 }
bsw/jbe@1309 223 end
bsw@1073 224 }
bsw@1073 225 end
bsw/jbe@1309 226 end
bsw@1073 227
bsw/jbe@1309 228 slot.put("<br />")
bsw/jbe@1309 229 end
bsw/jbe@1309 230
bsw@1073 231 member.notify_email = notify_email or member.notify_email
bsw@1073 232 member.name = name or member.name
bsw@1073 233 member.login = login or member.login
bsw@1073 234
bsw/jbe@1309 235 -- ui.heading { level = 2, content = _"Personal information" }
bsw/jbe@1309 236 -- execute.view{ module = "member", view = "_profile", params = {
bsw/jbe@1309 237 -- member = member, include_private_data = true
bsw/jbe@1309 238 -- } }
bsw/jbe@1309 239 -- ui.field.text{
bsw/jbe@1309 240 -- readonly = true,
bsw/jbe@1309 241 -- label = _'Login name',
bsw/jbe@1309 242 -- name = 'login',
bsw/jbe@1309 243 -- value = member.login
bsw/jbe@1309 244 -- }
bsw@1073 245
bsw@1073 246 if not (member.authority == "ldap") then
bsw@1073 247 ui.tag{
bsw@1073 248 tag = "p",
bsw@1073 249 content = _"Please choose a password and enter it twice. The password is case sensitive."
bsw@1073 250 }
bsw@1073 251 ui.field.password{
bsw/jbe@1309 252 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 253 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 254 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 255 label = _'Password',
bsw@1073 256 name = 'password1',
bsw@1073 257 }
bsw/jbe@1309 258 slot.put("<br />")
bsw@1073 259 ui.field.password{
bsw/jbe@1309 260 container_attr = { class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label" },
bsw/jbe@1309 261 attr = { id = "lf-register__code", class = "mdl-textfield__input" },
bsw/jbe@1309 262 label_attr = { class = "mdl-textfield__label", ["for"] = "lf-register__code" },
bsw/jbe@1309 263 label = _'Repeat password',
bsw@1073 264 name = 'password2',
bsw@1073 265 }
bsw@1073 266 end
bsw@1073 267
bsw/jbe@1309 268 slot.put("<br /><br />")
bsw/jbe@1309 269 ui.tag{
bsw/jbe@1309 270 tag = "input",
bsw/jbe@1309 271 attr = {
bsw/jbe@1309 272 type = "submit",
bsw/jbe@1309 273 class = "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
bsw/jbe@1309 274 value = _'activate account'
bsw/jbe@1309 275 }
bsw@1071 276 }
bsw@1073 277 slot.put(" ")
bsw@1073 278 ui.link{
bsw/jbe@1309 279 attr = { class = "mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--underlined" },
bsw@1073 280 content = _"one step back",
bsw@1073 281 module = "index",
bsw@1073 282 view = "register",
bsw@1073 283 params = {
bsw@1073 284 code = code,
bsw@1073 285 notify_email = notify_email,
bsw@1073 286 name = name,
bsw/jbe@1309 287 login = login,
bsw/jbe@1309 288 skip = param.get("skip"),
bsw/jbe@1309 289 step = 1,
bsw/jbe@1309 290 redirect_module = param.get("redirect_module"),
bsw/jbe@1309 291 redirect_view = param.get("redirect_view"),
bsw/jbe@1309 292 redirect_id = param.get("redirect_id"),
bsw/jbe@1309 293 redirect_params = param.get("redirect_params")
bsw@1073 294 }
bsw@1071 295 }
bsw@1071 296 end
bsw@1073 297 end
bsw@286 298 end
bsw@1073 299 }
bsw@1073 300
bsw@1073 301 slot.put("<br /><br />")
bsw/jbe@5 302
bsw@1073 303 ui.link{
bsw/jbe@1309 304 attr = { class = "mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect" },
bsw/jbe@1309 305 content = _"cancel",
bsw@1073 306 module = "index",
bsw@1073 307 action = "cancel_register",
bsw@1073 308 routing = { default = {
bsw/jbe@1309 309 mode = "redirect", module = "index", view = "login", params = {
bsw/jbe@1309 310 redirect_module = param.get("redirect_module"),
bsw/jbe@1309 311 redirect_view = param.get("redirect_view"),
bsw/jbe@1309 312 redirect_id = param.get("redirect_id"),
bsw/jbe@1309 313 redirect_params = param.get("redirect_params")
bsw/jbe@1309 314 }
bsw@1073 315 } }
bsw@1073 316 }
bsw@1073 317 end )
bsw/jbe@1309 318 end }
bsw/jbe@1309 319 end }
bsw/jbe@5 320

Impressum / About Us