summaryrefslogtreecommitdiffhomepage
path: root/libs/cbi
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-08-12 15:31:09 +0000
committerSteven Barth <steven@midlink.org>2008-08-12 15:31:09 +0000
commit355ac6b1a27598499d64c793817877755e166f88 (patch)
tree7507e2d1c34eb5d95cf068a2c1684c4e483d70b5 /libs/cbi
parent21d78afaa92498fa62c808ed444f4c1dd7cce33e (diff)
libs/cbi: Added support for stateful Values, Added editlink template
Diffstat (limited to 'libs/cbi')
-rw-r--r--libs/cbi/luasrc/cbi.lua17
-rw-r--r--libs/cbi/luasrc/view/cbi/editlink.htm18
2 files changed, 32 insertions, 3 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index ad5a51974..024687c6f 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -39,6 +39,9 @@ FORM_NODATA = 0
FORM_VALID = 1
FORM_INVALID = -1
+CREATE_PREFIX = "cbi.cts."
+REMOVE_PREFIX = "cbi.rts."
+
-- Loads a CBI map from given file, creating an environment and returns it
function load(cbimap, ...)
require("luci.fs")
@@ -233,6 +236,11 @@ function Map.get(self, section, option)
end
end
+-- UCI stateget
+function Map.stateget(self, section, option)
+ return uci.get_statevalue(self.config, section, option)
+end
+
--[[
SimpleForm - A Simple non-UCI form
@@ -505,7 +513,7 @@ end
function TypedSection.parse(self)
if self.addremove then
-- Create
- local crval = "cbi.cts." .. self.config .. "." .. self.sectiontype
+ local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype
local name = luci.http.formvalue(crval)
if self.anonymous then
if name then
@@ -531,7 +539,7 @@ function TypedSection.parse(self)
end
-- Remove
- crval = "cbi.rts." .. self.config
+ crval = REMOVE_PREFIX .. self.config
name = luci.http.formvaluetable(crval)
for k,v in pairs(name) do
if self:cfgvalue(k) and self:checkscope(k) then
@@ -606,6 +614,7 @@ function AbstractValue.__init__(self, map, option, ...)
self.default = nil
self.size = nil
self.optional = false
+ self.stateful = false
end
-- Add a dependencie to another section field
@@ -687,7 +696,9 @@ end
-- Return the UCI value of this object
function AbstractValue.cfgvalue(self, section)
- return self.map:get(section, self.option)
+ return self.stateful
+ and self.map:stateget(section, self.option)
+ or self.map:get(section, self.option)
end
-- Validate the form value
diff --git a/libs/cbi/luasrc/view/cbi/editlink.htm b/libs/cbi/luasrc/view/cbi/editlink.htm
new file mode 100644
index 000000000..83260e437
--- /dev/null
+++ b/libs/cbi/luasrc/view/cbi/editlink.htm
@@ -0,0 +1,18 @@
+<%#
+LuCI - Lua Configuration Interface
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
+
+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$
+
+-%>
+
+<%+cbi/valueheader%>
+<a href="<%=REQUEST_URI%>/<%=section%>"><%:edit%></a>
+<%+cbi/valuefooter%>