libs/web: Small improvements, added inline documentation
This commit is contained in:
parent
a478f25f51
commit
5b43543226
5 changed files with 100 additions and 25 deletions
|
@ -27,5 +27,7 @@ limitations under the License.
|
|||
|
||||
module("luci.config",
|
||||
function(m)
|
||||
setmetatable(m, {__index = require("luci.model.uci").get_all("luci")})
|
||||
if pcall(require, "luci.model.uci") then
|
||||
setmetatable(m, {__index = luci.model.uci.get_all("luci")})
|
||||
end
|
||||
end)
|
|
@ -23,6 +23,8 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
|
||||
--- LuCI web dispatcher.
|
||||
module("luci.dispatcher", package.seeall)
|
||||
require("luci.init")
|
||||
require("luci.http")
|
||||
|
@ -38,12 +40,16 @@ local index = nil
|
|||
local fi
|
||||
|
||||
|
||||
-- Builds a URL
|
||||
--- Build the URL relative to the server webroot from given virtual path.
|
||||
-- @param ... Virtual path
|
||||
-- @return Relative URL
|
||||
function build_url(...)
|
||||
return luci.http.getenv("SCRIPT_NAME") .. "/" .. table.concat(arg, "/")
|
||||
end
|
||||
|
||||
-- Sends a 404 error code and renders the "error404" template if available
|
||||
--- Send a 404 error code and render the "error404" template if available.
|
||||
-- @param message Custom error message (optional)
|
||||
-- @return false
|
||||
function error404(message)
|
||||
luci.http.status(404, "Not Found")
|
||||
message = message or "Not Found"
|
||||
|
@ -56,7 +62,9 @@ function error404(message)
|
|||
return false
|
||||
end
|
||||
|
||||
-- Sends a 500 error code and renders the "error500" template if available
|
||||
--- Send a 500 error code and render the "error500" template if available.
|
||||
-- @param message Custom error message (optional)#
|
||||
-- @return false
|
||||
function error500(message)
|
||||
luci.http.status(500, "Internal Server Error")
|
||||
|
||||
|
@ -68,7 +76,9 @@ function error500(message)
|
|||
return false
|
||||
end
|
||||
|
||||
-- Renders an authorization form
|
||||
--- Render and evaluate the system authentication login form.
|
||||
-- @param default Default username
|
||||
-- @return Authentication status
|
||||
function sysauth(default)
|
||||
local user = luci.http.formvalue("username")
|
||||
local pass = luci.http.formvalue("password")
|
||||
|
@ -87,7 +97,8 @@ function sysauth(default)
|
|||
end
|
||||
end
|
||||
|
||||
-- Creates a request object for dispatching
|
||||
--- Dispatch an HTTP request.
|
||||
-- @param request LuCI HTTP Request object
|
||||
function httpdispatch(request)
|
||||
luci.http.context.request = request
|
||||
context.request = {}
|
||||
|
@ -101,7 +112,8 @@ function httpdispatch(request)
|
|||
luci.http.close()
|
||||
end
|
||||
|
||||
-- Dispatches a request
|
||||
--- Dispatches a LuCI virtual path.
|
||||
-- @param request Virtual path
|
||||
function dispatch(request)
|
||||
context.path = request
|
||||
|
||||
|
@ -187,7 +199,7 @@ function dispatch(request)
|
|||
end
|
||||
end
|
||||
|
||||
-- Generates the dispatching tree
|
||||
--- Generate the dispatching index using the best possible strategy.
|
||||
function createindex()
|
||||
local path = luci.sys.libpath() .. "/controller/"
|
||||
local suff = ".lua"
|
||||
|
@ -199,7 +211,9 @@ function createindex()
|
|||
end
|
||||
end
|
||||
|
||||
-- Uses fastindex to create the dispatching tree
|
||||
--- Generate the dispatching index using the fastindex C-indexer.
|
||||
-- @param path Controller base directory
|
||||
-- @param suffix Controller file suffix
|
||||
function createindex_fastindex(path, suffix)
|
||||
index = {}
|
||||
|
||||
|
@ -215,8 +229,9 @@ function createindex_fastindex(path, suffix)
|
|||
end
|
||||
end
|
||||
|
||||
-- Calls the index function of all available controllers
|
||||
-- Fallback for transition purposes / Leave it in as long as it works otherwise throw it away
|
||||
--- Generate the dispatching index using the native file-cache based strategy.
|
||||
-- @param path Controller base directory
|
||||
-- @param suffix Controller file suffix
|
||||
function createindex_plain(path, suffix)
|
||||
index = {}
|
||||
|
||||
|
@ -265,7 +280,8 @@ function createindex_plain(path, suffix)
|
|||
end
|
||||
end
|
||||
|
||||
-- Creates the dispatching tree from the index
|
||||
--- Create the dispatching tree from the index.
|
||||
-- Build the index before if it does not exist yet.
|
||||
function createtree()
|
||||
if not index then
|
||||
createindex()
|
||||
|
@ -297,7 +313,12 @@ function createtree()
|
|||
end
|
||||
end
|
||||
|
||||
-- Reassigns a node to another position
|
||||
--- Clone a node of the dispatching tree to another position.
|
||||
-- @param path Virtual path destination
|
||||
-- @param clone Virtual path source
|
||||
-- @param title Destination node title (optional)
|
||||
-- @param order Destination node order value (optional)
|
||||
-- @return Dispatching tree node
|
||||
function assign(path, clone, title, order)
|
||||
local obj = node(unpack(path))
|
||||
obj.nodes = nil
|
||||
|
@ -320,7 +341,12 @@ function assign(path, clone, title, order)
|
|||
return obj
|
||||
end
|
||||
|
||||
-- Shortcut for creating a dispatching node
|
||||
--- Create a new dispatching node and define common parameters.
|
||||
-- @param path Virtual path
|
||||
-- @param target Target function to call when dispatched.
|
||||
-- @param title Destination node title
|
||||
-- @param order Destination node order value (optional)
|
||||
-- @return Dispatching tree node
|
||||
function entry(path, target, title, order)
|
||||
local c = node(unpack(path))
|
||||
|
||||
|
@ -332,7 +358,9 @@ function entry(path, target, title, order)
|
|||
return c
|
||||
end
|
||||
|
||||
-- Fetch a dispatching node
|
||||
--- Fetch or create a new dispatching node.
|
||||
-- @param ... Virtual path
|
||||
-- @return Dispatching tree node
|
||||
function node(...)
|
||||
local c = context.tree
|
||||
arg.n = nil
|
||||
|
@ -353,6 +381,9 @@ function node(...)
|
|||
end
|
||||
|
||||
-- Subdispatchers --
|
||||
|
||||
--- Create a redirect to another dispatching node.
|
||||
-- @param ... Virtual path destination
|
||||
function alias(...)
|
||||
local req = arg
|
||||
return function()
|
||||
|
@ -360,6 +391,9 @@ function alias(...)
|
|||
end
|
||||
end
|
||||
|
||||
--- Rewrite the first x path values of the request.
|
||||
-- @param n Number of path values to replace
|
||||
-- @param ... Virtual path to replace removed path values with
|
||||
function rewrite(n, ...)
|
||||
local req = arg
|
||||
return function()
|
||||
|
@ -375,16 +409,23 @@ function rewrite(n, ...)
|
|||
end
|
||||
end
|
||||
|
||||
--- Create a function-call dispatching target.
|
||||
-- @param nane Target function of local controller
|
||||
-- @param ... Additional parameters passed to the function
|
||||
function call(name, ...)
|
||||
local argv = {...}
|
||||
return function() return getfenv()[name](unpack(argv)) end
|
||||
end
|
||||
|
||||
--- Create a template render dispatching target.
|
||||
-- @param nane Template to be rendered
|
||||
function template(name)
|
||||
require("luci.template")
|
||||
return function() luci.template.render(name) end
|
||||
end
|
||||
|
||||
--- Create a CBI model dispatching target.
|
||||
-- @param model CBI model tpo be rendered
|
||||
function cbi(model)
|
||||
require("luci.cbi")
|
||||
require("luci.template")
|
||||
|
|
|
@ -24,6 +24,7 @@ limitations under the License.
|
|||
|
||||
]]--
|
||||
|
||||
--- LuCI translation library.
|
||||
module("luci.i18n", package.seeall)
|
||||
require("luci.sys")
|
||||
|
||||
|
@ -33,12 +34,16 @@ loaded = {}
|
|||
context = luci.util.threadlocal()
|
||||
default = "en"
|
||||
|
||||
-- Clears the translation table
|
||||
--- Clear the translation table.
|
||||
function clear()
|
||||
table = {}
|
||||
end
|
||||
|
||||
-- Loads a translation and copies its data into the global translation table
|
||||
--- Load a translation and copy its data into the translation table.
|
||||
-- @param file Language file
|
||||
-- @param lang Two-letter language code
|
||||
-- @param force Force reload even if already loaded (optional)
|
||||
-- @return Success status
|
||||
function load(file, lang, force)
|
||||
lang = lang or ""
|
||||
if force or not loaded[lang] or not loaded[lang][file] then
|
||||
|
@ -58,25 +63,36 @@ function load(file, lang, force)
|
|||
end
|
||||
end
|
||||
|
||||
-- Same as load but autocompletes the filename with .LANG from config.lang
|
||||
--- Load a translation file using the default translation language.
|
||||
-- Alternatively load the translation of the fallback language.
|
||||
-- @param file Language file
|
||||
-- @param force Force reload even if already loaded (optional)
|
||||
function loadc(file, force)
|
||||
load(file, default, force)
|
||||
return load(file, context.lang, force)
|
||||
end
|
||||
|
||||
-- Sets the context language
|
||||
--- Set the context default translation language.
|
||||
-- @param lang Two-letter language code
|
||||
function setlanguage(lang)
|
||||
context.lang = lang
|
||||
end
|
||||
|
||||
-- Returns the i18n-value defined by "key" or if there is no such: "default"
|
||||
--- Return the translated value for a specific translation key.
|
||||
-- @param key Translation key
|
||||
-- @param def Default translation
|
||||
-- @return Translated string
|
||||
function translate(key, def)
|
||||
return (table[context.lang] and table[context.lang][key])
|
||||
or (table[default] and table[default][key])
|
||||
or def
|
||||
end
|
||||
|
||||
-- Translate shourtcut with sprintf/string.format inclusion
|
||||
--- Return the translated value for a specific translation key and use it as sprintf pattern.
|
||||
-- @param key Translation key
|
||||
-- @param default Default translation
|
||||
-- @param ... Format parameters
|
||||
-- @return Translated and formatted string
|
||||
function translatef(key, default, ...)
|
||||
return translate(key, default):format(...)
|
||||
end
|
|
@ -12,6 +12,8 @@ You may obtain a copy of the License at
|
|||
$Id$
|
||||
|
||||
]]--
|
||||
|
||||
--- LuCI session library.
|
||||
module("luci.sauth", package.seeall)
|
||||
require("luci.fs")
|
||||
require("luci.util")
|
||||
|
@ -22,7 +24,7 @@ luci.config.sauth = luci.config.sauth or {}
|
|||
sessionpath = luci.config.sauth.sessionpath
|
||||
sessiontime = tonumber(luci.config.sauth.sessiontime)
|
||||
|
||||
|
||||
--- Manually clean up expired sessions.
|
||||
function clean()
|
||||
local now = os.time()
|
||||
local files = luci.fs.dir(sessionpath)
|
||||
|
@ -40,11 +42,15 @@ function clean()
|
|||
end
|
||||
end
|
||||
|
||||
--- Prepare session storage by creating the session directory.
|
||||
function prepare()
|
||||
luci.fs.mkdir(sessionpath)
|
||||
luci.fs.chmod(sessionpath, "a-rwx,u+rwx")
|
||||
end
|
||||
|
||||
--- Read a session and return its content.
|
||||
-- @param id Session identifier
|
||||
-- @return Session data
|
||||
function read(id)
|
||||
if not id then
|
||||
return
|
||||
|
@ -53,6 +59,10 @@ function read(id)
|
|||
return luci.fs.readfile(sessionpath .. "/" .. id)
|
||||
end
|
||||
|
||||
|
||||
--- Write session data to a session file.
|
||||
-- @param id Session identifier
|
||||
-- @param data Session data
|
||||
function write(id, data)
|
||||
if not luci.fs.stat(sessionpath) then
|
||||
prepare()
|
||||
|
|
|
@ -23,6 +23,8 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
|
||||
]]--
|
||||
|
||||
--- LuCI template library.
|
||||
module("luci.template", package.seeall)
|
||||
|
||||
require("luci.config")
|
||||
|
@ -50,9 +52,11 @@ viewns = {
|
|||
include = function(name) Template(name):render(getfenv(2)) end,
|
||||
}
|
||||
|
||||
-- Compiles a given template into an executable Lua module
|
||||
--- Manually compile a given template into an executable Lua function
|
||||
-- @param template LuCI template
|
||||
-- @return Lua template function
|
||||
function compile(template)
|
||||
-- Search all <% %> expressions (remember: Lua table indexes begin with #1)
|
||||
-- Search all <% %> expressions
|
||||
local function expr_add(ws1, skip1, command, skip2, ws2)
|
||||
table.insert(expr, command)
|
||||
return ( #skip1 > 0 and "" or ws1 ) ..
|
||||
|
@ -114,7 +118,9 @@ function compile(template)
|
|||
return loadstring(template)
|
||||
end
|
||||
|
||||
-- Oldstyle render shortcut
|
||||
--- Render a certain template.
|
||||
-- @param name Template name
|
||||
-- @param scope Scope to assign to template
|
||||
function render(name, scope, ...)
|
||||
scope = scope or getfenv(2)
|
||||
local s, t = luci.util.copcall(Template, name)
|
||||
|
|
Loading…
Reference in a new issue