libs/web: readd add/remove icons to dynamic list widgets
This commit is contained in:
parent
e20ac8fed4
commit
2ae8c99606
2 changed files with 58 additions and 7 deletions
|
@ -402,16 +402,24 @@ function cbi_filebrowser(id, url, defpath) {
|
||||||
browser.focus();
|
browser.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
function cbi_dynlist_init(name)
|
function cbi_dynlist_init(name, respath)
|
||||||
{
|
{
|
||||||
function cbi_dynlist_renumber(e)
|
function cbi_dynlist_renumber(e)
|
||||||
{
|
{
|
||||||
var count = 1;
|
/* in a perfect world, we could just getElementsByName() - but not if
|
||||||
var childs = e.parentNode.childNodes;
|
* MSIE is involved... */
|
||||||
|
var inputs = [ ]; // = document.getElementsByName(name);
|
||||||
|
for (var i = 0; i < e.parentNode.childNodes.length; i++)
|
||||||
|
if (e.parentNode.childNodes[i].name == name)
|
||||||
|
inputs.push(e.parentNode.childNodes[i]);
|
||||||
|
|
||||||
for( var i = 0; i < childs.length; i++ )
|
for (var i = 0; i < inputs.length; i++)
|
||||||
if( childs[i].name == name )
|
{
|
||||||
childs[i].id = name + '.' + (count++);
|
inputs[i].id = name + '.' + (i + 1);
|
||||||
|
inputs[i].nextSibling.src = respath + (
|
||||||
|
(i+1) < inputs.length ? '/cbi/remove.gif' : '/cbi/add.gif'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
e.focus();
|
e.focus();
|
||||||
}
|
}
|
||||||
|
@ -480,6 +488,7 @@ function cbi_dynlist_init(name)
|
||||||
|
|
||||||
if (se.value.length == 0 && jump)
|
if (se.value.length == 0 && jump)
|
||||||
{
|
{
|
||||||
|
se.parentNode.removeChild(se.nextSibling.nextSibling);
|
||||||
se.parentNode.removeChild(se.nextSibling);
|
se.parentNode.removeChild(se.nextSibling);
|
||||||
se.parentNode.removeChild(se);
|
se.parentNode.removeChild(se);
|
||||||
|
|
||||||
|
@ -488,6 +497,9 @@ function cbi_dynlist_init(name)
|
||||||
if (ev.preventDefault)
|
if (ev.preventDefault)
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
|
/* IE Quirk, needs double focus somehow */
|
||||||
|
jump.focus();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,17 +511,22 @@ function cbi_dynlist_init(name)
|
||||||
n.name = se.name;
|
n.name = se.name;
|
||||||
n.type = se.type;
|
n.type = se.type;
|
||||||
|
|
||||||
|
var b = document.createElement('img');
|
||||||
|
|
||||||
cbi_bind(n, 'keydown', cbi_dynlist_keydown);
|
cbi_bind(n, 'keydown', cbi_dynlist_keydown);
|
||||||
cbi_bind(n, 'keypress', cbi_dynlist_keypress);
|
cbi_bind(n, 'keypress', cbi_dynlist_keypress);
|
||||||
|
cbi_bind(b, 'click', cbi_dynlist_btnclick);
|
||||||
|
|
||||||
if (next)
|
if (next)
|
||||||
{
|
{
|
||||||
se.parentNode.insertBefore(n, next);
|
se.parentNode.insertBefore(n, next);
|
||||||
|
se.parentNode.insertBefore(b, next);
|
||||||
se.parentNode.insertBefore(document.createElement('br'), next);
|
se.parentNode.insertBefore(document.createElement('br'), next);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
se.parentNode.appendChild(n);
|
se.parentNode.appendChild(n);
|
||||||
|
se.parentNode.appendChild(b);
|
||||||
se.parentNode.appendChild(document.createElement('br'));
|
se.parentNode.appendChild(document.createElement('br'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -540,11 +557,45 @@ function cbi_dynlist_init(name)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cbi_dynlist_btnclick(ev)
|
||||||
|
{
|
||||||
|
ev = ev ? ev : window.event;
|
||||||
|
|
||||||
|
var se = ev.target ? ev.target : ev.srcElement;
|
||||||
|
|
||||||
|
if (se.src.indexOf('remove') > -1)
|
||||||
|
{
|
||||||
|
se.previousSibling.value = '';
|
||||||
|
|
||||||
|
cbi_dynlist_keydown({
|
||||||
|
target: se.previousSibling,
|
||||||
|
keyCode: 8
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cbi_dynlist_keydown({
|
||||||
|
target: se.previousSibling,
|
||||||
|
keyCode: 13
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
var inputs = document.getElementsByName(name);
|
var inputs = document.getElementsByName(name);
|
||||||
for( var i = 0; i < inputs.length; i++ )
|
for( var i = 0; i < inputs.length; i++ )
|
||||||
{
|
{
|
||||||
|
var btn = document.createElement('img');
|
||||||
|
btn.src = respath + (
|
||||||
|
(i+1) < inputs.length ? '/cbi/remove.gif' : '/cbi/add.gif'
|
||||||
|
);
|
||||||
|
|
||||||
|
inputs[i].parentNode.insertBefore(btn, inputs[i].nextSibling);
|
||||||
|
|
||||||
cbi_bind(inputs[i], 'keydown', cbi_dynlist_keydown);
|
cbi_bind(inputs[i], 'keydown', cbi_dynlist_keydown);
|
||||||
cbi_bind(inputs[i], 'keypress', cbi_dynlist_keypress);
|
cbi_bind(inputs[i], 'keypress', cbi_dynlist_keypress);
|
||||||
|
cbi_bind(btn, 'click', cbi_dynlist_btnclick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ $Id$
|
||||||
<% end end %>
|
<% end end %>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
cbi_dynlist_init('<%=cbid%>');
|
cbi_dynlist_init('<%=cbid%>', '<%=resource%>');
|
||||||
<% if self.datatype then -%>
|
<% if self.datatype then -%>
|
||||||
<% if #self.keylist > 0 then -%>
|
<% if #self.keylist > 0 then -%>
|
||||||
cbi_combobox_init('<%=cbid .. "." .. i%>', {
|
cbi_combobox_init('<%=cbid .. "." .. i%>', {
|
||||||
|
|
Loading…
Reference in a new issue