# HG changeset patch # User bsw # Date 1460904425 -7200 # Node ID 1d645a8d20fcd3f14a7057a842900a2436c574ce # Parent 55132e0324a439f3c4e6ee49ea62effcf9a93eb3 Updates to notification system user config diff -r 55132e0324a4 -r 1d645a8d20fc app/main/member/_action/update_notify_level.lua --- a/app/main/member/_action/update_notify_level.lua Sun Apr 17 16:14:21 2016 +0200 +++ b/app/main/member/_action/update_notify_level.lua Sun Apr 17 16:47:05 2016 +0200 @@ -1,3 +1,21 @@ -app.session.member.disable_notifications = param.get("disable_notifications") == "true" and true or false -IgnoredArea:destroy_by_member_id(app.session.member_id) +local disable_notifications = param.get("disable_notifications") == "true" and true or false + +if app.session.member.disable_notifications ~= disable_notifications then + IgnoredArea:destroy_by_member_id(app.session.member_id) + app.session.member.disable_notifications = disable_notifications +end + +if param.get("digest", atom.boolean) the + local dow = param.get("digest_dow") + if dow == "daily" then + app.session.member.digest_dow = nil + else + app.session.member.digest_dow = tonumber(dow) + end + app.session.member.digest_hour = param.get("digest_hour", atom.number) +else + app.session.member.digest_dow = nil + app.session.member.digest_hour = nil +end + app.session.member:save() diff -r 55132e0324a4 -r 1d645a8d20fc app/main/member/settings_notification.lua --- a/app/main/member/settings_notification.lua Sun Apr 17 16:14:21 2016 +0200 +++ b/app/main/member/settings_notification.lua Sun Apr 17 16:47:05 2016 +0200 @@ -48,7 +48,75 @@ end } slot.put("
") + + ui.container{ content = function() + ui.tag{ + tag = "input", + attr = { + id = "digest_on", + type = "radio", name = "digest", value = "true", + checked = not app.session.member.digest_dow and "checked" or nil + } + } + ui.tag{ + tag = "label", attr = { ['for'] = "digest_on" }, + content = _"Send me updates on issue phase changes and a regular digest" + } + + ui.tag{ content = _"Day:" } + slot.put(" ") + ui.field.select{ + name = "notification_dow", + foreign_records = { + "daily" = _"daily", + 0 = _"Sunday", + 1 = _"Monday", + 2 = _"Tuesday", + 3 = _"Wednesday", + 4 = _"Thursday", + 5 = _"Friday", + 6 = _"Saturday", + 7 = _"Sunday", + } + } + + slot.put(" ") + ui.tag{ content = _"Hour:" } + slot.put(" ") + local foreign_records = {} + for i = 0, 23 do + foreign_records[#foreign_records+1] = { + id = i, + name = printf("%02d", i), + } + end + ui.field.select{ + name = "notification_hour", + foreign_records = foreign_records, + foreign_id = "id", + foreign_name = "name" + } + end } + end } + + ui.container{ content = function() + ui.tag{ + tag = "input", + attr = { + id = "digest_off", + type = "radio", name = "digest", value = "false", + checked = not app.session.member.digest_dow and "checked" or nil + } + } + ui.tag{ + tag = "label", attr = { ['for'] = "digest_off" }, + content = _"Send me only updates on issue phase changes" + } + end } + + + ui.container{ content = function() ui.tag{ tag = "input",