libs/cbi: Added support for stateful Values, Added editlink template
authorSteven Barth <steven@midlink.org>
Tue, 12 Aug 2008 15:31:09 +0000 (15:31 +0000)
committerSteven Barth <steven@midlink.org>
Tue, 12 Aug 2008 15:31:09 +0000 (15:31 +0000)
libs/cbi/luasrc/cbi.lua
libs/cbi/luasrc/view/cbi/editlink.htm [new file with mode: 0644]

index ad5a5197444325fc2a359cb69e183e73d5eecfb2..024687c6fb236bf27825fc5bfc77dad0a4600851 100644 (file)
@@ -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 (file)
index 0000000..83260e4
--- /dev/null
@@ -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%>