luci-base: add support for DynamicList with FileBrowser
Two new arguments url, defpath were added to cbi_dynlist_init() for initializing the brower button. An example of usage identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth")) identity.datatype = "file" Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
parent
20ccc90350
commit
a28da6a88a
2 changed files with 20 additions and 9 deletions
|
@ -545,7 +545,7 @@ function cbi_browser_init(id, respath, url, defpath)
|
||||||
cbi_bind(btn, 'click', cbi_browser_btnclick);
|
cbi_bind(btn, 'click', cbi_browser_btnclick);
|
||||||
}
|
}
|
||||||
|
|
||||||
function cbi_dynlist_init(name, respath, datatype, optional, choices)
|
function cbi_dynlist_init(name, respath, datatype, optional, url, defpath, choices)
|
||||||
{
|
{
|
||||||
var input0 = document.getElementsByName(name)[0];
|
var input0 = document.getElementsByName(name)[0];
|
||||||
var prefix = input0.name;
|
var prefix = input0.name;
|
||||||
|
@ -606,6 +606,11 @@ function cbi_dynlist_init(name, respath, datatype, optional, choices)
|
||||||
|
|
||||||
parent.appendChild(t);
|
parent.appendChild(t);
|
||||||
parent.appendChild(b);
|
parent.appendChild(b);
|
||||||
|
if (datatype == 'file')
|
||||||
|
{
|
||||||
|
cbi_browser_init(t.id, respath, url, defpath);
|
||||||
|
}
|
||||||
|
|
||||||
parent.appendChild(document.createElement('br'));
|
parent.appendChild(document.createElement('br'));
|
||||||
|
|
||||||
if (datatype)
|
if (datatype)
|
||||||
|
@ -616,13 +621,13 @@ function cbi_dynlist_init(name, respath, datatype, optional, choices)
|
||||||
if (choices)
|
if (choices)
|
||||||
{
|
{
|
||||||
cbi_combobox_init(t.id, choices[0], '', choices[1]);
|
cbi_combobox_init(t.id, choices[0], '', choices[1]);
|
||||||
t.nextSibling.index = i;
|
b.index = i;
|
||||||
|
|
||||||
cbi_bind(t.nextSibling, 'keydown', cbi_dynlist_keydown);
|
cbi_bind(b, 'keydown', cbi_dynlist_keydown);
|
||||||
cbi_bind(t.nextSibling, 'keypress', cbi_dynlist_keypress);
|
cbi_bind(b, 'keypress', cbi_dynlist_keypress);
|
||||||
|
|
||||||
if (i == focus || -i == focus)
|
if (i == focus || -i == focus)
|
||||||
t.nextSibling.focus();
|
b.focus();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -758,20 +763,24 @@ function cbi_dynlist_init(name, respath, datatype, optional, choices)
|
||||||
ev = ev ? ev : window.event;
|
ev = ev ? ev : window.event;
|
||||||
|
|
||||||
var se = ev.target ? ev.target : ev.srcElement;
|
var se = ev.target ? ev.target : ev.srcElement;
|
||||||
|
var input = se.previousSibling;
|
||||||
|
while (input && input.name != name) {
|
||||||
|
input = input.previousSibling;
|
||||||
|
}
|
||||||
|
|
||||||
if (se.src.indexOf('remove') > -1)
|
if (se.src.indexOf('remove') > -1)
|
||||||
{
|
{
|
||||||
se.previousSibling.value = '';
|
input.value = '';
|
||||||
|
|
||||||
cbi_dynlist_keydown({
|
cbi_dynlist_keydown({
|
||||||
target: se.previousSibling,
|
target: input,
|
||||||
keyCode: 8
|
keyCode: 8
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cbi_dynlist_keydown({
|
cbi_dynlist_keydown({
|
||||||
target: se.previousSibling,
|
target: input,
|
||||||
keyCode: 13
|
keyCode: 13
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
cbi_dynlist_init(
|
cbi_dynlist_init(
|
||||||
'<%=cbid%>', '<%=resource%>', '<%=self.datatype%>',
|
'<%=cbid%>', '<%=resource%>', '<%=self.datatype%>',
|
||||||
<%=tostring(self.optional or self.rmempty)%>
|
<%=tostring(self.optional or self.rmempty)%>,
|
||||||
|
'<%=url('admin/filebrowser')%>',
|
||||||
|
'<%=self.default_path and self.default_path%>'
|
||||||
<%- if #self.keylist > 0 then -%>, [{
|
<%- if #self.keylist > 0 then -%>, [{
|
||||||
<%- for i, k in ipairs(self.keylist) do -%>
|
<%- for i, k in ipairs(self.keylist) do -%>
|
||||||
<%-=string.format("%q", k) .. ":" .. string.format("%q", self.vallist[i])-%>
|
<%-=string.format("%q", k) .. ":" .. string.format("%q", self.vallist[i])-%>
|
||||||
|
|
Loading…
Reference in a new issue