summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-asterisk
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2009-03-29 23:39:40 +0000
committerJo-Philipp Wich <jow@openwrt.org>2009-03-29 23:39:40 +0000
commit36b1bbd9ff880b764e932d27075bc5a9edd41e47 (patch)
tree5644036dce23c32caf01e34ed9634a440a0eccb9 /applications/luci-asterisk
parent0c7effc0c0c4248d0fd96b6fb289139c388a9fb7 (diff)
applications/luci-asterisk: rework voicemail management
Diffstat (limited to 'applications/luci-asterisk')
-rw-r--r--applications/luci-asterisk/luasrc/controller/asterisk.lua23
-rw-r--r--applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail.lua40
-rw-r--r--applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua61
-rw-r--r--applications/luci-asterisk/luasrc/view/asterisk/dialplans.htm4
4 files changed, 116 insertions, 12 deletions
diff --git a/applications/luci-asterisk/luasrc/controller/asterisk.lua b/applications/luci-asterisk/luasrc/controller/asterisk.lua
index 3bd369da3..b321b5adb 100644
--- a/applications/luci-asterisk/luasrc/controller/asterisk.lua
+++ b/applications/luci-asterisk/luasrc/controller/asterisk.lua
@@ -40,19 +40,22 @@ function index()
cbi("asterisk-mod-res-feature"), "Feature Module Configuration", 9 )
- entry({"admin", "asterisk"}, cbi("asterisk/main"), "Asterisk", 99).i18n = "asterisk"
+ entry({"admin", "asterisk"}, cbi("asterisk/main"), "Asterisk", 99).i18n = "asterisk"
- entry({"admin", "asterisk", "phones"}, cbi("asterisk/phones"), "Phones", 1)
- entry({"admin", "asterisk", "phones", "sip"}, cbi("asterisk/phone_sip"), nil, 1).leaf = true
- --entry({"admin", "asterisk", "phones", "exten"}, cbi("asterisk/phone_exten"), "Extensions", 2).leaf = true
+ entry({"admin", "asterisk", "phones"}, cbi("asterisk/phones"), "Phones", 1)
+ entry({"admin", "asterisk", "phones", "sip"}, cbi("asterisk/phone_sip"), nil, 1).leaf = true
+ --entry({"admin", "asterisk", "phones", "exten"}, cbi("asterisk/phone_exten"), "Extensions", 2).leaf = true
- entry({"admin", "asterisk", "trunks"}, cbi("asterisk/trunks"), "Trunks", 2)
- entry({"admin", "asterisk", "trunks", "sip"}, cbi("asterisk/trunk_sip"), nil, 1).leaf = true
+ entry({"admin", "asterisk", "trunks"}, cbi("asterisk/trunks"), "Trunks", 2)
+ entry({"admin", "asterisk", "trunks", "sip"}, cbi("asterisk/trunk_sip"), nil, 1).leaf = true
- --entry({"admin", "asterisk", "dialplans"}, cbi("asterisk/dialplans"), "Call Routing", 3)
- entry({"admin", "asterisk", "dialplans"}, call("handle_dialplan"), "Call Routing", 3)
- entry({"admin", "asterisk", "dialplans", "out"}, cbi("asterisk/dialplan_out"), nil, 1).leaf = true
- entry({"admin", "asterisk", "dialplans", "zones"}, call("handle_dialzones"), "Dial Zones", 2).leaf = true
+ entry({"admin", "asterisk", "voicemail"}, cbi("asterisk/voicemail"), "Voicemail", 3)
+ entry({"admin", "asterisk", "voicemail", "mailboxes"}, cbi("asterisk/voicemail"), "Mailboxes", 1)
+ entry({"admin", "asterisk", "voicemail", "settings"}, cbi("asterisk/voicemail_settings"), "Settings", 2)
+
+ entry({"admin", "asterisk", "dialplans"}, call("handle_dialplan"), "Call Routing", 4)
+ entry({"admin", "asterisk", "dialplans", "out"}, cbi("asterisk/dialplan_out"), nil, 1).leaf = true
+ entry({"admin", "asterisk", "dialplans", "zones"}, call("handle_dialzones"), "Dial Zones", 2).leaf = true
end
diff --git a/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail.lua b/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail.lua
new file mode 100644
index 000000000..efd6a2916
--- /dev/null
+++ b/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail.lua
@@ -0,0 +1,40 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2009 Jo-Philipp Wich <xm@subsignal.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+require "luci.sys.zoneinfo"
+
+
+cbimap = Map("asterisk", "Voicemail - Mailboxes")
+
+voicemail = cbimap:section(TypedSection, "voicemail", "Voicemail Boxes")
+voicemail.addremove = true
+voicemail.anonymous = true
+voicemail.template = "cbi/tblsection"
+
+context = voicemail:option(ListValue, "context", "Context")
+context:value("default")
+
+voicemail:option(Value, "number", "Mailbox Number", "Unique mailbox identifier")
+voicemail:option(Value, "name", "Ownername", "Human readable display name")
+voicemail:option(Value, "password", "Password", "Access protection")
+voicemail:option(Value, "email", "eMail", "Where to send voice messages")
+voicemail:option(Value, "page", "Pager", "Pager number")
+
+zone = voicemail:option(ListValue, "zone", "Timezone", "Used time format")
+zone.titleref = luci.dispatcher.build_url("admin/asterisk/voicemail/settings")
+cbimap.uci:foreach("asterisk", "voicezone",
+ function(s) zone:value(s['.name']) end)
+
+
+return cbimap
diff --git a/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua b/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua
new file mode 100644
index 000000000..8ad3ee1e5
--- /dev/null
+++ b/applications/luci-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua
@@ -0,0 +1,61 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2009 Jo-Philipp Wich <xm@subsignal.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+require "luci.sys.zoneinfo"
+
+
+cbimap = Map("asterisk", "Voicemail - Common Settings")
+
+voicegeneral = cbimap:section(TypedSection, "voicegeneral",
+ "General Voicemail Options", "Common settings for all mailboxes are " ..
+ "defined here. Most of them are optional. The storage format should " ..
+ "never be changed once set.")
+
+voicegeneral.anonymous = true
+voicegeneral.addremove = false
+
+format = voicegeneral:option(ListValue, "Storage format")
+format:value("wav49")
+format:value("gsm")
+format:value("wav")
+
+voicegeneral:option(Flag, "sendvoicemail", "Enable sending of emails")
+voicegeneral:option(Flag, "attach", "Attach voice messages to emails")
+voicegeneral:option(Value, "serveremail", "Used email sender address")
+voicegeneral:option(Value, "emaildateformat", "Date format used in emails").optional = true
+voicegeneral:option(Value, "maxlogins", "Max. failed login attempts").optional = true
+voicegeneral:option(Value, "maxmsg", "Max. allowed messages per mailbox").optional = true
+voicegeneral:option(Value, "minmessage", "Min. number of seconds for voicemail").optional = true
+voicegeneral:option(Value, "maxmessage", "Max. number of seconds for voicemail").optional = true
+voicegeneral:option(Value, "maxsilence", "Seconds of silence until stop recording").optional = true
+voicegeneral:option(Value, "maxgreet", "Max. number of seconds for greetings").optional = true
+voicegeneral:option(Value, "skipms", "Milliseconds to skip for rew./ff.").optional = true
+voicegeneral:option(Value, "silencethreshold", "Threshold to detect silence").optional = true
+
+
+voicezone = cbimap:section(TypedSection, "voicezone", "Time Zones",
+ "Time zones define how dates and times are expressen when used in " ..
+ "an voice mails. Refer to the asterisk manual for placeholder values.")
+
+voicezone.addremove = true
+voicezone.sectionhead = "Name"
+voicezone.template = "cbi/tblsection"
+
+tz = voicezone:option(ListValue, "zone", "Location")
+for _, z in ipairs(luci.sys.zoneinfo.TZ) do tz:value(z[1]) end
+
+voicezone:option(Value, "message", "Date Format")
+
+
+return cbimap
diff --git a/applications/luci-asterisk/luasrc/view/asterisk/dialplans.htm b/applications/luci-asterisk/luasrc/view/asterisk/dialplans.htm
index 3ffe6c5ee..47e610507 100644
--- a/applications/luci-asterisk/luasrc/view/asterisk/dialplans.htm
+++ b/applications/luci-asterisk/luasrc/view/asterisk/dialplans.htm
@@ -160,7 +160,7 @@ $Id$
Add Dialzone:<br />
<select style="width:30%" name="addzone.<%=plan.name%>">
<option value="">-- please select --</option>
- <% for _, zone in pairs(ast.dialzone.zones()) do %>
+ <% for _, zone in luci.util.kspairs(ast.dialzone.zones()) do %>
<% if not zones_used[zone.name] then %>
<option value="<%=zone.name%>"><%=zone.name%> (<%=zone.description%>)</option>
<% end %>
@@ -171,7 +171,7 @@ $Id$
Add Voicemailbox:<br />
<select style="width:20%" name="addvbox.<%=plan.name%>" onchange="this.form['addvboxext.<%=plan.name%>'].value=this.options[this.selectedIndex].value.split('@')[0]">
<option value="">-- please select --</option>
- <% for ext, box in pairs(ast.voicemail.boxes()) do %>
+ <% for ext, box in luci.util.kspairs(ast.voicemail.boxes()) do %>
<% if not boxes_used[box.id] then %>
<option value="<%=box.id%>"><%=box.id%> (<%=box.name%>)</option>
<% end %>