config.html: Button Cancel works for all elements but the ones that

have multiple values.
This commit is contained in:
Anders Betnér 2006-05-20 23:25:46 +00:00
parent 8c969a9367
commit 3876b65e1c
2 changed files with 45 additions and 29 deletions

View File

@ -200,14 +200,14 @@ var Config = {
} }
span.appendChild(document.createTextNode('\u00a0\u00a0')); span.appendChild(document.createTextNode('\u00a0\u00a0'));
href = Builder.node('a',{href: 'javascript://'},'Remove'); href = Builder.node('a',{href: 'javascript://'},'Remove');
Event.observe(href,'click',Config._removeItem); Event.observe(href,'click',Config._removeItemEvent);
span.appendChild(href); span.appendChild(href);
span.appendChild(Builder.node('br')); span.appendChild(Builder.node('br'));
frag.appendChild(span); frag.appendChild(span);
}); });
href = Builder.node('a',{href:'javascript://',className:'addItemHref'},item.add_item_label); href = Builder.node('a',{href:'javascript://',className:'addItemHref'},item.add_item_label);
frag.appendChild(href); frag.appendChild(href);
Event.observe(href,'click',Config._addItem); Event.observe(href,'click',Config._addItemEvent);
frag.appendChild(Builder.node('div',{style:'clear: both'})); frag.appendChild(Builder.node('div',{style:'clear: both'}));
} else { } else {
frag.appendChild(BuildElement.input(postId,postId, frag.appendChild(BuildElement.input(postId,postId,
@ -235,40 +235,44 @@ var Config = {
} }
return frag; return frag;
}, },
_addItem: function(e) { _addItemEvent: function (e) {
var span = Event.element(e); var span = Event.element(e);
while (span.nodeName.toLowerCase() != 'span') { while (span.nodeName.toLowerCase() != 'span') {
span = span.previousSibling; span = span.previousSibling;
} }
var frag = document.createDocumentFragment(); Config._addItem(span);
span = span.cloneNode(true); },
var id = span.getElementsByTagName('input')[0].id; _addItem: function(span) {
var newSpan = span.cloneNode(true);
var id = newSpan.getElementsByTagName('input')[0].id;
var num = parseInt(id.match(/\d+$/)); var num = parseInt(id.match(/\d+$/));
num++; num++;
var id = id.replace(/\d+$/,'') + num; var id = id.replace(/\d+$/,'') + num;
span.getElementsByTagName('label')[0].setAttribute('for',id); newSpan.getElementsByTagName('label')[0].setAttribute('for',id);
span.getElementsByTagName('input')[0].id = id; newSpan.getElementsByTagName('input')[0].id = id;
span.getElementsByTagName('input')[0].value = ''; newSpan.getElementsByTagName('input')[0].value = '';
var hrefs = span.getElementsByTagName('a'); var hrefs = newSpan.getElementsByTagName('a');
if ('Netscape' == navigator.appName) { if ('Netscape' == navigator.appName) {
// Firefox et al doesn't copy registered events on an element deep clone // Firefox et al doesn't copy registered events on an element deep clone
// Don't know if that is w3c or if IE has it right // Don't know if that is w3c or if IE has it right
if (hrefs.length == 1) { if (hrefs.length == 1) {
Event.observe(hrefs[0],'click',Config._removeItem); Event.observe(hrefs[0],'click',Config._removeItemEvent);
} else { } else {
Event.observe(hrefs[0],'click',Config._browse); Event.observe(hrefs[0],'click',Config._browse);
Event.observe(hrefs[1],'click',Config._removeItem); Event.observe(hrefs[1],'click',Config._removeItemEvent);
} }
} }
var src = Event.element(e); span.parentNode.insertBefore(newSpan,span.nextSibling);
src.parentNode.insertBefore(span,src);
}, },
_removeItem: function(e) { _removeItemEvent: function (e) {
var span = Event.element(e); var span = Event.element(e);
while (span.nodeName.toLowerCase() != 'span') { while (span.nodeName.toLowerCase() != 'span') {
span = span.parentNode; span = span.parentNode;
} }
Config._removeItem(span);
},
_removeItem: function(span) {
if ((span.previousSibling && span.previousSibling.nodeName.toLowerCase() == 'span')|| if ((span.previousSibling && span.previousSibling.nodeName.toLowerCase() == 'span')||
(span.nextSibling.nodeName.toLowerCase() == 'span')) { (span.nextSibling.nodeName.toLowerCase() == 'span')) {
Element.remove(span); Element.remove(span);
@ -343,7 +347,19 @@ function saveForm() {
}); });
} }
function cancelForm() { function cancelForm() {
//###TODO Handle default values for elements not returned by method=config ConfigXML.getSections().each(function (section){
ConfigXML.getItems(section).each(function (itemId) {
var item = ConfigXML.getOption(section,itemId);
var itemConfigId = item.config_section + ':' + item.id;
if (item.multiple) {
// do the multiple thing
} else {
//###TODO potential error a select without a default value
$(itemConfigId).value = ConfigInitialValues.getValue(item.config_section,item.id) || item.default_value || '';
}
});
});
return;
ConfigInitialValues.getValues().each(function (option) { ConfigInitialValues.getValues().each(function (option) {
if (typeof (option.value) == 'object') { if (typeof (option.value) == 'object') {
//###TODO what if user removed one of the multiplevalued options? //###TODO what if user removed one of the multiplevalued options?

View File

@ -119,7 +119,7 @@
<item id="db_type" config_section="general"> <item id="db_type" config_section="general">
<name>Database Type</name> <name>Database Type</name>
<short_description></short_description> <short_description></short_description>
<type default="sqlite">select</type> <type default_value="sqlite">select</type>
<options> <options>
<option value="sqlite">sqlite</option> <option value="sqlite">sqlite</option>
<option value="sqlite3">sqlite3</option> <option value="sqlite3">sqlite3</option>
@ -133,7 +133,7 @@
<item id="scan_type" config_section="general"> <item id="scan_type" config_section="general">
<name>Scan Type</name> <name>Scan Type</name>
<short_description></short_description> <short_description></short_description>
<type default="2">select</type> <type default_value="2">select</type>
<options> <options>
<option value="0">0 - Normal</option> <option value="0">0 - Normal</option>
<option value="1">1 - Aggressive</option> <option value="1">1 - Aggressive</option>
@ -150,7 +150,7 @@
<item id="always_scan" config_section="general"> <item id="always_scan" config_section="general">
<name>Always Scan</name> <name>Always Scan</name>
<short_description></short_description> <short_description></short_description>
<type default="0">select</type> <type default_value="0">select</type>
<options> <options>
<option value="0">No</option> <option value="0">No</option>
<option value="1">Yes</option> <option value="1">Yes</option>