1. 程式人生 > >luci筆記1, admin-mini模組分析

luci筆記1, admin-mini模組分析

參考了網上的luci學習指南,還有自己的學習,胡扯來胡扯去。

function index()
        local root = node()
	if not root.lock then
		root.target = alias("mini")
		root.index = true
	end
	
	entry({"about"}, template("about"))
	
	local page   = entry({"mini"}, alias("mini", "index"), _("Essentials"), 10)
	page.sysauth = "root"
	page.sysauth_authenticator = "htmlauth"
	page.index = true
	
	entry({"mini", "index"}, alias("mini", "index", "index"), _("Overview"), 10).index = true
	entry({"mini", "index", "index"}, form("mini/index"), _("General"), 1).ignoreindex = true
	entry({"mini", "index", "luci"}, cbi("mini/luci", {autoapply=true}), _("Settings"), 10)
	entry({"mini", "index", "logout"}, call("action_logout"), _("Logout"))
end


root=node()定義了最外面的節點,也就是最上層的選單顯示。entry定義了一系列的選單,及對應的業務處理路徑。

page.sysauth = "root"
	page.sysauth_authenticator = "htmlauth"

這兩行是把Essentials定義為需要認證使用者的登陸,可以註釋掉這兩行,就無需登入操作了。

page.sysauth_authenticator="htmlauth"處理的函式位於luci目錄下的dispatcher.lua

function authenticator.htmlauth(validator, accs, default)
	local user = luci.http.formvalue("username")
	local pass = luci.http.formvalue("password")

	if user and validator(user, pass) then
		return user
	end

	require("luci.i18n")
	require("luci.template")
	context.path = {}
	luci.template.render("sysauth", {duser=default, fuser=user})
	return false

end

呼叫的模板檔案,位於luci/view/sysauth.html

entry()函式,

第一個引數是定義選單的顯示(Virtual path)。

第二個引數定義相應的處理方式(target)。

alias是指向別的entry的別名,from呼叫的某一個view,cbi呼叫某一個model,call直接呼叫函式。

第三個引數是選單的文字,直接新增string不會國際化,_("string"),就國際化了,

第四個引數是是同級選單下,此選單項的位置,從大到小。

後面跟著的index=true忘了啥意思,哎,蛋疼。。。。。。。。。。。。。