openwrt编译之前修改root密码(openwrtluci开发教程系列03-)

我公司的luci页面的提交抛弃了原始的页面最下面的“提交”、“复位“这些,而是使用了Button这个控件作为提交的主体,用户只需要点击相关的按钮即可

但是luci原始的Button控件不具备二次确认的能力,点击后就提交了,但是有时候我们想给用户告警,通知等,比如点击重启网关、修改网络配置等比较有风险的操作时给予提示信息。

就像如下截图

openwrt编译之前修改root密码(openwrtluci开发教程系列03-)(1)

实现方法:基于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

    分享
    投诉
    首页