openwrt编译之前修改root密码(openwrtluci开发教程系列03-)
我公司的luci页面的提交抛弃了原始的页面最下面的“提交”、“复位“这些,而是使用了Button这个控件作为提交的主体,用户只需要点击相关的按钮即可
但是luci原始的Button控件不具备二次确认的能力,点击后就提交了,但是有时候我们想给用户告警,通知等,比如点击重启网关、修改网络配置等比较有风险的操作时给予提示信息。
就像如下截图
实现方法:基于Button控件增加二次确认弹窗
于是增加一个Button_confirm控件
首先修改cbi.lua增加Button_confirm类,并设置默认的弹窗确认消息i18n.translate("Are you sure to submit?")
#vi luci/modules/luci-base/luasrc/cbi.lua
local i18n = require "luci.i18n"
--[[
Button_confirm
]]--
Button_confirm = class(AbstractValue)
function Button_confirm.__init__(self, ...)
AbstractValue.__init__(self, ...)
self.template = "cbi/button_confirm"
self.inputstyle = nil
self.rmempty = true
self.confirm_msg = i18n.translate("Are you sure to submit?") --相比于Button控件增加了此行
end
增加Button_confirm控件依赖的模板htm文件
本文件中主要注意两点:
1、如果再一个页面中有多个Button_confirm类,那么每个类都要对应一个js的onclick函数,否则会出现混乱,此处使用页面唯一的cbid作为区分,使用String.gsub()来把特殊字符都删掉
2、在bc_开头的onclick函数中,必须返回true或者false,返回false则不执行submit,返回true则执行,参考链接:https://blog.csdn.net/whd526/article/details/78178451
luci/modules/luci-base/luasrc/view/cbi/button_confirm.htm
<% cbi/valueheader%>
<% if self:cfgvalue(section) ~= false then %>
<input class="cbi-button cbi-input-<%=self.inputstyle or "button" %> " type="submit" onclick="return bc_<%=string.gsub(cbid,'%p','')%>('<%=self.confirm_msg%>')"
<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> />
<% else %>
-
<% end %>
<% cbi/valuefooter%>
<script>
function bc_<%=string.gsub(cbid,"%p","")%>(msg)
{
var c = confirm(msg "\n" "<%:Click confirm will be exec NOW!%>")
if(c) return true
else return false
}
</script>
如上即可完成此空间的开发,达到文章截图的效果。
如何使用Button_confirm控件
--如何使用
btn0=n:option(Button_confirm,"btn0",translate("commit"))
btn0.inputstyle="apply"
btn0.confirm_msg=translate("network will be reset after submit!")
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com