diff options
author | Jo-Philipp Wich <jo@mein.io> | 2019-04-01 16:09:41 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2019-07-07 15:36:24 +0200 |
commit | 9c7eb1decd82344e22a10e6f5ac36b463d2149f5 (patch) | |
tree | a79b11f65288a7bc5d1c7a32a5f95ea57a1e57a3 /modules/luci-base/luasrc/view/cbi/mvalue.htm | |
parent | 808b9f36eb60cf4717cbf28b163d7ad2faa7f157 (diff) |
luci-base: switch from server side to client side widget markup
Do not render standard widgets like checkboxes, select boxes,
text input fields etc. on the server side anymore but utilize
the ui.js primitives instead.
This avoids logic duplication between server side cbi templates
and JS widgets in the future.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base/luasrc/view/cbi/mvalue.htm')
-rw-r--r-- | modules/luci-base/luasrc/view/cbi/mvalue.htm | 55 |
1 files changed, 14 insertions, 41 deletions
diff --git a/modules/luci-base/luasrc/view/cbi/mvalue.htm b/modules/luci-base/luasrc/view/cbi/mvalue.htm index db17450d27..4974a4ed28 100644 --- a/modules/luci-base/luasrc/view/cbi/mvalue.htm +++ b/modules/luci-base/luasrc/view/cbi/mvalue.htm @@ -1,43 +1,16 @@ -<% - local i, key - local v = self:valuelist(section) or {} --%> - <%+cbi/valueheader%> -<% if self.widget == "select" then %> - <select class="cbi-input-select" multiple="multiple" data-update="click change"<%= - attr("id", cbid) .. - attr("name", cbid) .. - ifattr(self.size, "size") - %>> - <% for i, key in pairs(self.keylist) do -%> - <option<%= - attr("id", cbid.."-"..key) .. - attr("value", key) .. - attr("data-index", i) .. - attr("data-depends", self:deplist2json(section, self.deplist[i])) .. - ifattr(luci.util.contains(v, key), "selected", "selected") - %>><%=pcdata(self.vallist[i])%></option> - <%- end %> - </select> -<% elseif self.widget == "checkbox" then %> - <div> - <% for i, key in pairs(self.keylist) do %> - <label<%= - attr("data-index", i) .. - attr("data-depends", self:deplist2json(section, self.deplist[i])) - %>> - <input class="cbi-input-checkbox" type="checkbox" data-update="click change"<%= - attr("id", cbid.."-"..key) .. - attr("name", cbid) .. - attr("value", key) .. - ifattr(luci.util.contains(v, key), "checked", "checked") - %> /> - <label<%= attr("for", cbid.."-"..key)%>></label> - <%=pcdata(self.vallist[i])%> - </label> - <% if self.size and (i % self.size) == 0 then write('<br />') end %> - <% end %> - </div> -<% end %> +<div<%=attr("data-ui-widget", luci.util.serialize_json({ + "Select", self:cfgvalues(section), self:choices(), { + id = cbid, + name = cbid, + size = self.size, + sort = self.keylist, + multi = true, + widget = self.widget, + datatype = self.datatype, + optional = self.optional or self.rmempty, + readonly = self.readonly, + placeholder = self.placeholder + } +}))%>></div> <%+cbi/valuefooter%> |