Save Apply mechanism of luci
用luci框架创建luci界面的时候,页面默认具备“保存&应用”,“保存”,“重置”,“帮助”等控件,当然,“帮助”控件会判断开发者有没有设置相对应的帮助页面来决定要不要显示该控件。由于是利用框架创建的控件,所以要获取控件状态就需要对框架有所了解。
应用1:在配置界面中判断是否 “save & apply” “save”控件是否按下,获取这个控件按下的消息,然后做相应的处理。其实,这几个控件的响应机制是做在/luci/view/cbi/footer.tm中:
<%- if pageaction then -%>
<div class="cbi-page-actions">
<% if redirect then %>
<div style="float:left">
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" οnclick="location.href='<%=pcdata(redirect)%>'" />
</div>
<% end %>
<% if flow.skip then %>
<input class="cbi-button cbi-button-skip" type="submit" name="cbi.skip" value="<%:Skip%>" />
<% end %>
<% if not autoapply then %>
<input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:Save & Apply%>" οnclick="window.parent.scrollTo(0,0)" />
<% end %>
<input class="cbi-button cbi-button-save" type="submit" name="cbi.save" value="<%:Save%>" οnclick="window.parent.scrollTo(0,0)" />
<input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" οnclick="window.parent.scrollTo(0,0)" />
<% if help_url then %>
<input class="cbi-button cbi-button-help" type="button" value="<%:Help%>" οnclick="location.href='<%=luci.dispatcher.build_url(help_url)%>'" />
<% end %>
<script type="text/javascript">cbi_d_update();</script>
</div>
<%- end -%>
</form>
<%+footer%>
从代码看出,这个是htm文件中定义了,页面的控件名字,消息名字,动作相应等等,比如对“Save & Apply”的定义:
<input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:Save & Apply%>" οnclick="window.parent.scrollTo(0,0)" />
cbi.apply是广播出去的消息名字,那么,开发者可以在mode下面用CBI创建配置界面的时候用:
local apply = luci.http.formvalue("cbi.apply")
if apply then
luci.sys.exec("uci commit network")
end
来截取消息,然后做相应的处理,
对“Save"控件也是一样的,处理方式,但是apply机制有在 luci/view/cbi/apply_xhr.htm中做另外的一种XHR机制,就是在点击“save & apply”之后在页眉显示处理的进程:比如正在配置哪个文件,等等。
Save Apply mechanism of luci相关推荐
- luci网页shell_openwrt luci web分析
openwrt luci web分析 www/cbi-bin/luci run方法的主要任务就是在安全的环境中打开开始页面(登录页面),在run中,最主要的功能还是在dispatch.lua中完成. ...
- 关于luci的几个问题二
1.Luci/sgi/cgi.lua和http.lua和dispatcher.lua关系? 答: 对每一个node,最重要的属性是target,也是dispatch()流程最后要执行的方法.各个方法a ...
- luci编程 openwrt_openwrt开源系统LUCI配置界面
转自:http://www.right.com.cn/forum/thread-131035-1-1.html 本人菜鸟,最近在学习这方面的知识,在参考资料的基础上总结如下内容. 这篇文章针对如何对o ...
- openwrt挂载u盘(ntfs)_如何在 Bitcoin 的源码基础上生成一条自己的链 08:将bitcoin移植到openwrt...
硬件:ZBT WG3526 软件: openwrt 开发环境准备: get clone https://github.com/openwrt/openwrt.git 代码仓库拉起完毕后, 进入open ...
- openwrt 做二级路由 同网段无线桥接教程 relayd
网址:http://trac.gateworks.com/wiki/OpenWrt/wireless/relayd Gateworks Single Board Computers Gateworks ...
- openwrt源码分析_Luci流程分析(openwrt下)
1.页面请求: 1.1.代码结构 在openwrt文件系统中,lua语言的代码不要编译,类似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是: /www/index.html cgi-b ...
- OpenWrt 刷机后的网络配置
写在前面: 本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉. 之前那一篇TP-wr703N TTL刷机以 ...
- openwrt下wifi设置详细过程
1.缺省情况下,openwrt中的无线是关闭的,系统起来后,ifconfig和ifconfig -a, iwconfig均看不到wlan0接口 原始的wireless配置文件如下: root@Open ...
- openwrt下载安装中文语言包(离线版)
离线安装 1.去OpenWrt官网下载语言包.Index of /releases/https://downloads.openwrt.org/releases 2.找到自己的版本号的进入,找到pac ...
- TL-WR720N v3路由刷入openwrt并挂载U盘,编译openwrt,使用barrier_breaker 14.07的imagebuilder编译
TL-WR720N v3 TL-WR720N v3 openwrt官网介绍 openwrt官网介绍imagebuilder编译 TL-WR720N v3只有 flash 4M,刷入官网openwrt会 ...
最新文章
- 重新认识创业者与资本的博弈
- Android NDK学习笔记5:引用类型管理
- echarts line 去掉最外围方框_干货 | 关于射频芯片最详细解读
- Centos7 下载、安装、配置、启动部署
- matplotlib 柱状图、饼图;直方图、盒图
- windows 2012 安装 .net 3.5报错
- NYOJ Dinner
- ascii码01100001_ASCII码对照表以及各个字符的解释(精华版)
- kd树的根节点_KD树 - Deribs4 - 博客园
- MobaXterm复制黏贴快捷键
- 华为数通模拟器ensp问题解决方法
- 粗效过滤器安装技术参数
- 标准盒子模型与怪异盒子模型
- 前端入门 1| HTML基本结构
- 除了茶颜悦色、文和友?长沙打造旅游城市缺什么?
- android 视频转表情,视频怎么转gif?好用软件分享,自己也能制作出搞笑表情包...
- 求弹性模量和泊松比计算题_弹性模量越大说明什么?弹性模量和泊松比
- Pytorch 分类模板
- 《Photoshop Lightroom4 经典教程》—第2课2.1节入门
- Qt创建右键快捷菜单无法触发customContextMenuRequested()信号