Save & Apply mechanism of luci
2016-05-27 15:59
267 查看
用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%>" onclick="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%>" onclick="window.parent.scrollTo(0,0)" />
<% end %>
<input class="cbi-button cbi-button-save" type="submit"
name="cbi.save" value="<%:Save%>" onclick="window.parent.scrollTo(0,0)" />
<input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" onclick="window.parent.scrollTo(0,0)" />
<% if help_url then %>
<input class="cbi-button cbi-button-help" type="button" value="<%:Help%>" onclick="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%>" onclick="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”之后在页眉显示处理的进程:比如正在配置哪个文件,等等。
应用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%>" onclick="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%>" onclick="window.parent.scrollTo(0,0)" />
<% end %>
<input class="cbi-button cbi-button-save" type="submit"
name="cbi.save" value="<%:Save%>" onclick="window.parent.scrollTo(0,0)" />
<input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" onclick="window.parent.scrollTo(0,0)" />
<% if help_url then %>
<input class="cbi-button cbi-button-help" type="button" value="<%:Help%>" onclick="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%>" onclick="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”之后在页眉显示处理的进程:比如正在配置哪个文件,等等。
相关文章推荐
- IOS 单例设计模式解读
- Android EditView用法小结
- Android Library项目注意事项
- iOS - 将图片保存至相册
- Get Geolocation with Ionic 2
- Objective-C的基础setter和getter
- Android 自定义控件---SpreadView
- android api 中setVisibility( )的用法(可显示或隐藏布局或控件...)
- Android 5.0+ 解析(五)FloatingActionButton控件
- CaysnPrinter打印示例 - Sample1 For Android
- swift基础之自动引用计数
- iOS 环信集成方法之集成环信SDK
- Android 5.0+ 解析(四)Toolbar控件
- 用代码成就浪漫之iOS动画学习
- iOS蓝牙的开发专题
- IMF 自定义Reduce函数,学习理解Apply、callback函数、泛型类型、iterator迭代器
- web.xml文件中配置<mime-mapping>下载文件类型
- Android 探究 LayoutInflater setFactory
- android关机流程-framework部分
- Android 5.0+ 解析(三)Palette类