summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-05-27 20:39:48 +0000
committerSteven Barth <steven@midlink.org>2008-05-27 20:39:48 +0000
commitb1e131a3db1b6ec2ceecb5df4a224f3de2735e6d (patch)
tree593175651871c9fcfaa4ee7c9fceeb8990b8147c
parent3f09d369d679d3e4413849cf67f757c647a66965 (diff)
* Optimized dispatching model
-rw-r--r--applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua2
-rw-r--r--applications/luci-splash/luasrc/controller/splash/splash.lua6
-rw-r--r--libs/web/luasrc/dispatcher.lua20
-rw-r--r--modules/admin-core/luasrc/controller/admin/status.lua2
-rw-r--r--modules/admin-core/luasrc/controller/admin/system.lua12
-rw-r--r--modules/admin-core/luasrc/controller/admin/uci.lua4
-rw-r--r--modules/freifunk/luasrc/controller/freifunk/freifunk.lua2
-rw-r--r--modules/freifunk/luasrc/controller/freifunk/luciinfo.lua2
-rw-r--r--modules/freifunk/luasrc/controller/freifunk/olsr.lua10
9 files changed, 32 insertions, 28 deletions
diff --git a/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua b/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua
index 4f2390b37..2fabfb11d 100644
--- a/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua
+++ b/applications/luci-ffwizard-leipzig/luasrc/controller/luci_ffwizard_leipzig/wizard.lua
@@ -1,7 +1,7 @@
module("luci.controller.luci_ffwizard_leipzig.wizard", package.seeall)
function index()
- entry({"admin", "index", "wizard"}, action_wizard, "Freifunkassistent", 20)
+ entry({"admin", "index", "wizard"}, call("action_wizard"), "Freifunkassistent", 20)
end
diff --git a/applications/luci-splash/luasrc/controller/splash/splash.lua b/applications/luci-splash/luasrc/controller/splash/splash.lua
index 544f1e89e..e7448d7fb 100644
--- a/applications/luci-splash/luasrc/controller/splash/splash.lua
+++ b/applications/luci-splash/luasrc/controller/splash/splash.lua
@@ -5,9 +5,9 @@ function index()
page.target = cbi("splash/splash")
page.title = "Client-Splash"
- node("splash", "splash", "activate").target = action_activate
- node("splash", "splash", "allowed").target = action_allowed
- node("splash", "splash", "unknown").target = action_unknown
+ node("splash", "splash", "activate").target = call("action_activate")
+ node("splash", "splash", "allowed").target = call("action_allowed")
+ node("splash", "splash", "unknown").target = call("action_unknown")
node("splash", "splash", "splash").target = template("splash_splash/splash")
end
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 6a6bceb29..202e07332 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -137,7 +137,11 @@ function dispatch()
if c and type(c.target) == "function" then
dispatched = c
-
+ stat, mod = pcall(require, c.module)
+ if stat then
+ luci.util.updfenv(c.target, mod)
+ end
+
stat, err = pcall(c.target)
if not stat then
error500(err)
@@ -222,12 +226,7 @@ function createtree()
for k, v in pairs(index) do
luci.util.updfenv(v, _M)
-
- local stat, mod = pcall(require, k)
- if stat then
- luci.util.updfenv(v, mod)
- end
-
+ luci.util.extfenv(v, "_NAME", k)
pcall(v)
end
@@ -242,6 +241,7 @@ function entry(path, target, title, order, add)
c.target = target
c.title = title
c.order = order
+ c.module = getfenv(2)._NAME
for k,v in pairs(add) do
c[k] = v
@@ -260,7 +260,7 @@ function node(...)
for k,v in ipairs(arg) do
if not c.nodes[v] then
- c.nodes[v] = {nodes={}}
+ c.nodes[v] = {nodes={}, module=getfenv(2)._NAME}
end
c = c.nodes[v]
@@ -278,6 +278,10 @@ function alias(...)
end
end
+function call(name)
+ return function() getfenv()[name]() end
+end
+
function template(name)
require("luci.template")
return function() luci.template.render(name) end
diff --git a/modules/admin-core/luasrc/controller/admin/status.lua b/modules/admin-core/luasrc/controller/admin/status.lua
index 34c210ca6..79f728b99 100644
--- a/modules/admin-core/luasrc/controller/admin/status.lua
+++ b/modules/admin-core/luasrc/controller/admin/status.lua
@@ -2,7 +2,7 @@ module("luci.controller.admin.status", package.seeall)
function index()
entry({"admin", "status"}, template("admin_status/index"), "Status", 20)
- entry({"admin", "status", "syslog"}, action_syslog, "Systemprotokoll")
+ entry({"admin", "status", "syslog"}, call("action_syslog"), "Systemprotokoll")
end
function action_syslog()
diff --git a/modules/admin-core/luasrc/controller/admin/system.lua b/modules/admin-core/luasrc/controller/admin/system.lua
index e44e787fd..304f1eee8 100644
--- a/modules/admin-core/luasrc/controller/admin/system.lua
+++ b/modules/admin-core/luasrc/controller/admin/system.lua
@@ -14,21 +14,21 @@ function index()
page.order = 30
local page = node("admin", "system", "packages")
- page.target = action_packages
+ page.target = call("action_packages")
page.title = "Paketverwaltung"
page.order = 10
local page = node("admin", "system", "packages", "ipkg")
- page.target = action_ipkg
+ page.target = call("action_ipkg")
page.title = "IPKG-Konfiguration"
local page = node("admin", "system", "passwd")
- page.target = action_passwd
+ page.target = call("action_passwd")
page.title = "Passwort ändern"
page.order = 20
local page = node("admin", "system", "sshkeys")
- page.target = action_sshkeys
+ page.target = call("action_sshkeys")
page.title = "SSH-Schlüssel"
page.order = 30
@@ -43,12 +43,12 @@ function index()
page.order = 50
local page = node("admin", "system", "upgrade")
- page.target = action_upgrade
+ page.target = call("action_upgrade")
page.title = "Firmwareupgrade"
page.order = 60
local page = node("admin", "system", "reboot")
- page.target = action_reboot
+ page.target = call("action_reboot")
page.title = "Neu starten"
page.order = 70
end
diff --git a/modules/admin-core/luasrc/controller/admin/uci.lua b/modules/admin-core/luasrc/controller/admin/uci.lua
index ca1440bde..9c0e1beb5 100644
--- a/modules/admin-core/luasrc/controller/admin/uci.lua
+++ b/modules/admin-core/luasrc/controller/admin/uci.lua
@@ -4,8 +4,8 @@ require("luci.sys")
function index()
node("admin", "uci", "changes").target = template("admin_uci/changes")
- node("admin", "uci", "revert").target = action_revert
- node("admin", "uci", "apply").target = action_apply
+ node("admin", "uci", "revert").target = call("action_revert")
+ node("admin", "uci", "apply").target = call("action_apply")
end
-- This function has a higher priority than the admin_uci/apply template
diff --git a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
index 104f6cdfc..89813b3d8 100644
--- a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
+++ b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
@@ -22,7 +22,7 @@ function index()
local page = node("freifunk", "status")
- page.target = action_status
+ page.target = call("action_status")
page.title = "Status"
page.order = 20
page.setuser = false
diff --git a/modules/freifunk/luasrc/controller/freifunk/luciinfo.lua b/modules/freifunk/luasrc/controller/freifunk/luciinfo.lua
index aabab19a1..c4c627601 100644
--- a/modules/freifunk/luasrc/controller/freifunk/luciinfo.lua
+++ b/modules/freifunk/luasrc/controller/freifunk/luciinfo.lua
@@ -1,7 +1,7 @@
module("luci.controller.freifunk.luciinfo", package.seeall)
function index()
- node("freifunk", "luciinfo").target = action_index
+ node("freifunk", "luciinfo").target = call("action_index")
end
function action_index()
diff --git a/modules/freifunk/luasrc/controller/freifunk/olsr.lua b/modules/freifunk/luasrc/controller/freifunk/olsr.lua
index 29858fc0e..ac143277d 100644
--- a/modules/freifunk/luasrc/controller/freifunk/olsr.lua
+++ b/modules/freifunk/luasrc/controller/freifunk/olsr.lua
@@ -3,27 +3,27 @@ require("luci.sys")
function index()
local page = node("freifunk", "olsr")
- page.target = action_index
+ page.target = call("action_index")
page.title = "OLSR"
page.order = 30
local page = node("freifunk", "olsr", "routes")
- page.target = action_routes
+ page.target = call("action_routes")
page.title = "Routen"
page.order = 10
local page = node("freifunk", "olsr", "topology")
- page.target = action_topology
+ page.target = call("action_topology")
page.title = "Topologie"
page.order = 20
local page = node("freifunk", "olsr", "hna")
- page.target = action_hna
+ page.target = call("action_hna")
page.title = "HNA"
page.order = 30
local page = node("freifunk", "olsr", "mid")
- page.target = action_mid
+ page.target = call("action_mid")
page.title = "MID"
page.order = 50
end