local return_to = param.get("return_to")
local return_to_area_id = param.get("return_to_area_id", atom.integer)
local return_to_area = Area:by_id(return_to_area_id)
ui.titleMember(_"notification settings")
ui.grid{ content = function()
ui.cell_main{ content = function()
ui.container{ attr = { class = "mdl-card mdl-card__fullwidth mdl-shadow--2dp" }, content = function()
ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function()
ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"notification settings" }
end }
ui.container{ attr = { class = "mdl-card__content mdl-card--border" }, content = function()
ui.form{
attr = { class = "vertical" },
module = "member",
action = "update_notify_level",
routing = {
ok = {
mode = "redirect",
module = return_to == "area" and "index" or return_to == "home" and "index" or "member",
view = return_to == "area" and "index" or return_to == "home" and "index" or "settings",
params = return_to_area and { unit = return_to_area.unit_id, area = return_to_area.id } or nil
}
},
content = function()
ui.container{ content = function()
ui.tag{ tag = "label", attr = {
class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect",
["for"] = "notify_level_all"
},
content = function()
ui.tag{
tag = "input",
attr = {
id = "notify_level_all",
class = "mdl-checkbox__input",
type = "checkbox", name = "enable_notifications", value = "true",
checked = not app.session.member.disable_notifications and "checked" or nil,
onchange = [[ display = document.getElementById("view_on_notify_level_all_false").style.display = this.checked ? "block" : "none"; ]]
}
}
ui.tag{
attr = { class = "mdl-checkbox__label", ['for'] = "notify_level_all" },
content = _"I like to receive notifications"
}
end
}
end }
ui.container{ attr = { id = "view_on_notify_level_all_false" }, content = function()
slot.put("
")
ui.container{ content = _"You will receive status update notification on issue phase changes. Additionally you can subscribe for a regular digest including updates on initiative drafts and new suggestions." }
slot.put("
")
ui.container{ content = function()
ui.tag{ tag = "label", attr = {
class = "mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect",
["for"] = "digest_on"
},
content = function()
ui.tag{
tag = "input",
attr = {
id = "digest_on",
class = "mdl-checkbox__input",
type = "checkbox", name = "digest", value = "true",
checked = app.session.member.notification_hour ~= nil and "checked" or nil,
onchange = [[ display = document.getElementById("view_on_digest_true").style.display = this.checked ? "block" : "none"; ]]
}
}
ui.tag{
attr = { class = "mdl-checkbox__label", ['for'] = "digest_on" },
content = _"I want to receive a regular digest"
}
end
}
end }
ui.container{ attr = { id = "view_on_digest_true", style = "margin-left: 4em;" }, content = function()
ui.tag{ content = _"every" }
slot.put(" ")
ui.field.select{
container_attr = { style = "display: inline-block; vertical-align: middle;" },
attr = { style = "width: 10em;" },
name = "notification_dow",
foreign_records = {
{ id = "daily", name = _"day" },
{ id = 0, name = _"Sunday" },
{ id = 1, name = _"Monday" },
{ id = 2, name = _"Tuesday" },
{ id = 3, name = _"Wednesday" },
{ id = 4, name = _"Thursday" },
{ id = 5, name = _"Friday" },
{ id = 6, name = _"Saturday" }
},
foreign_id = "id",
foreign_name = "name",
value = app.session.member.notification_dow
}
slot.put(" ")
ui.tag{ content = _"between" }
slot.put(" ")
local foreign_records = {}
for i = 0, 23 do
foreign_records[#foreign_records+1] = {
id = i,
name = string.format("%02d:00 - %02d:59", i, i),
}
end
local random_hour
if app.session.member.disable_notifications or app.session.member.notification_hour == nil then
random_hour = multirand.integer(0,23)
end
ui.field.select{
container_attr = { style = "display: inline-block; vertical-align: middle;" },
attr = { style = "width: 10em;" },
name = "notification_hour",
foreign_records = foreign_records,
foreign_id = "id",
foreign_name = "name",
value = random_hour or app.session.member.notification_hour
}
end }
end }
slot.put("
")
if app.session.member.disable_notifications then
ui.script{ script = [[ document.getElementById("view_on_notify_level_all_false").style.display = "none"; ]] }
end
if app.session.member.notification_hour == nil then
ui.script{ script = [[ document.getElementById("view_on_digest_true").style.display = "none"; ]] }
end
slot.put("
")
ui.tag{
tag = "input",
attr = {
type = "submit",
class = "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
value = _"Save"
},
content = ""
}
slot.put(" ")
slot.put(" ")
if return_to == "home" then
ui.link {
attr = { class = "mdl-button mdl-js-button mdl-button--raised" },
module = "index", view = "index",
content = _"cancel"
}
else
ui.link {
attr = { class = "mdl-button mdl-js-button" },
module = "member", view = "show", id = app.session.member_id,
content = _"Cancel"
}
end
end
}
end }
end }
end }
ui.cell_sidebar{ content = function()
execute.view {
module = "member", view = "_sidebar_whatcanido", params = {
member = app.session.member
}
}
end }
end }