# HG changeset patch
# User bsw
# Date 1279211267 -7200
# Node ID 26c8177ef34821d2f8fb8726d067b4ec8b72679e
# Parent 5ba4eff4bb5fee70b51ef76c068380b706eaf67b
Support for multiple usage terms accept checkboxes
(including neccessary bugfix in member model)
diff -r 5ba4eff4bb5f -r 26c8177ef348 app/main/index/_action/register.lua
--- a/app/main/index/_action/register.lua Wed Jul 14 13:59:54 2010 +0200
+++ b/app/main/index/_action/register.lua Thu Jul 15 18:27:47 2010 +0200
@@ -126,9 +126,7 @@
return false
end
-local use_terms_accepted = param.get("use_terms_accepted", atom.boolean)
-
-if login and use_terms_accepted == nil then
+if login and param.get("step") ~= "5" then
request.redirect{
mode = "redirect",
module = "index",
@@ -143,21 +141,13 @@
return false
end
-if use_terms_accepted ~= true then
- slot.put_into("error", _"You have to accept the terms of use to complete registration.")
- request.redirect{
- mode = "redirect",
- module = "index",
- view = "register",
- params = {
- code = invite_code.code,
- notify_email = notify_email,
- name = name,
- login = login
- }
- }
- return false
-end
+for i, checkbox in ipairs(config.use_terms_checkboxes) do
+ local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
+ if not accepted then
+ slot.put_into("error", checkbox.not_accepted_error)
+ return false
+ end
+end
local password1 = param.get("password1")
local password2 = param.get("password2")
@@ -174,38 +164,17 @@
login = login
}
}
+--]]
return false
end
if password1 ~= password2 then
slot.put_into("error", _"Passwords don't match!")
- request.redirect{
- mode = "redirect",
- module = "index",
- view = "register",
- params = {
- code = invite_code.code,
- notify_email = notify_email,
- name = name,
- login = login
- }
- }
return false
end
if #password1 < 8 then
slot.put_into("error", _"Passwords must consist of at least 8 characters!")
- request.redirect{
- mode = "redirect",
- module = "index",
- view = "register",
- params = {
- code = invite_code.code,
- notify_email = notify_email,
- name = name,
- login = login
- }
- }
return false
end
@@ -217,23 +186,17 @@
local success = member:set_notify_email(notify_email)
if not success then
slot.put_into("error", _"Can't send confirmation email")
- request.redirect{
- mode = "redirect",
- module = "index",
- view = "register",
- params = {
- code = invite_code.code,
- notify_email = notify_email,
- name = name,
- login = login
- }
- }
return
end
member:set_password(password1)
member:save()
+for i, checkbox in ipairs(config.use_terms_checkboxes) do
+ local accepted = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean)
+ member:set_setting("use_terms_checkbox_" .. checkbox.name, "accepted")
+end
+
invite_code.member_id = member.id
invite_code.used = "now"
invite_code:save()
diff -r 5ba4eff4bb5f -r 26c8177ef348 app/main/index/register.lua
--- a/app/main/index/register.lua Wed Jul 14 13:59:54 2010 +0200
+++ b/app/main/index/register.lua Thu Jul 15 18:27:47 2010 +0200
@@ -107,6 +107,7 @@
}
else
+ ui.field.hidden{ name = "step", value = "5" }
slot.put_into("title", _"Step 5/5: Terms of use and password")
slot.select("actions", function()
ui.link{
@@ -126,10 +127,37 @@
ui.container{
attr = { class = "wiki use_terms" },
content = function()
- slot.put(format.wiki_text(config.use_terms))
+ if config.use_terms_html then
+ slot.put(config.use_terms_html)
+ else
+ slot.put(format.wiki_text(config.use_terms))
+ end
end
}
+
+ for i, checkbox in ipairs(config.use_terms_checkboxes) do
+ slot.put("
")
+ ui.tag{
+ tag = "div",
+ content = function()
+ ui.tag{
+ tag = "input",
+ attr = {
+ type = "checkbox",
+ name = "use_terms_checkbox_" .. checkbox.name,
+ value = "1",
+ style = "float: left;",
+ checked = param.get("use_terms_checkbox_" .. checkbox.name, atom.boolean) and "checked" or nil
+ }
+ }
+ slot.put(" ")
+ slot.put(checkbox.html)
+ end
+ }
+ end
+
slot.put("
")
+
ui.field.text{
label = _'Email address',
value = param.get("notify_email"),
@@ -148,15 +176,6 @@
ui.tag{
tag = "p",
- content = _"I accept the terms of use by checking the following checkbox:"
- }
- ui.field.boolean{
- label = _"Terms accepted",
- name = "use_terms_accepted",
- }
-
- ui.tag{
- tag = "p",
content = _"Please choose a password and enter it twice. The password is case sensitive."
}
ui.field.password{
diff -r 5ba4eff4bb5f -r 26c8177ef348 config/default.lua
--- a/config/default.lua Wed Jul 14 13:59:54 2010 +0200
+++ b/config/default.lua Thu Jul 15 18:27:47 2010 +0200
@@ -1,5 +1,5 @@
config.app_name = "LiquidFeedback"
-config.app_version = "beta20"
+config.app_version = "beta21"
config.app_title = config.app_name .. " (" .. request.get_config_name() .. " environment)"
@@ -8,6 +8,16 @@
config.app_service_provider = "Snake Oil
10000 Berlin
Germany"
config.use_terms = "=== Nutzungsbedingungen ===\nAlles ist verboten"
+--config.use_terms_html = ""
+
+config.use_terms_checkboxes = {
+ {
+ name = "nutzungsbedingungen_v1",
+ html = "Ich akzeptiere die Bedingungen.",
+ not_accepted_error = "Du musst die Bedingungen akzeptieren, um dich zu registrieren."
+ }
+}
+
config.member_image_content_type = "image/jpeg"
config.member_image_convert_func = {
diff -r 5ba4eff4bb5f -r 26c8177ef348 model/member.lua
--- a/model/member.lua Wed Jul 14 13:59:54 2010 +0200
+++ b/model/member.lua Thu Jul 15 18:27:47 2010 +0200
@@ -317,11 +317,11 @@
end
function Member.object:get_setting(key)
- return Setting:by_pk(app.session.member.id, key)
+ return Setting:by_pk(self.id, key)
end
function Member.object:get_setting_value(key)
- local setting = Setting:by_pk(app.session.member.id, key)
+ local setting = Setting:by_pk(self.id, key)
if setting then
return setting.value
end
@@ -331,7 +331,7 @@
local setting = self:get_setting(key)
if not setting then
setting = Setting:new()
- setting.member_id = app.session.member_id
+ setting.member_id = self.id
setting.key = key
end
setting.value = value