Whole sections in config.xml can be marked as advanced, they won't

be displayed at all in the basic config UI. (previously the title
and the box was visible)
Added all but UI part of #118
This commit is contained in:
Anders Betnér 2006-06-04 19:28:12 +00:00
parent 2ba789d0a1
commit ccc6fdd1b6
2 changed files with 54 additions and 22 deletions

View File

@ -18,14 +18,30 @@ function init() {
} }
var ConfigXML = { var ConfigXML = {
config: {}, config: {},
advancedSections: [],
getItem: function (id) { getItem: function (id) {
return this.config[id]; return this.config[id];
}, },
getAllItems: function () { getAllItems: function () {
return $H(this.config); return $H(this.config);
}, },
isAdvancedSection: function (sectionName) {
return this.advancedSections.find(function (name) {
return name == sectionName
});
},
getAllAdvancedSections: function () {
return this.advancedSections;
},
getSectionId: function (sectionName) {
return 'firefly_'+sectionName.replace(/\ /,'').toLowerCase();
},
parseXML: function(xmlDoc) { parseXML: function(xmlDoc) {
$A(xmlDoc.getElementsByTagName('section')).each(function (section) { $A(xmlDoc.getElementsByTagName('section')).each(function (section) {
if ('true' == section.getAttribute('advanced')) {
// Only used by Config._showAdvancedConfig, Config._showBasicConfig
ConfigXML.advancedSections.push(section.getAttribute('name'));
}
$A(section.getElementsByTagName('item')).each(function (item) { $A(section.getElementsByTagName('item')).each(function (item) {
var returnItem = {}; var returnItem = {};
$A(item.attributes).each(function (attr) { $A(item.attributes).each(function (attr) {
@ -70,21 +86,25 @@ var ConfigInitialValues = {
sections.each(function (section) { sections.each(function (section) {
var sectionName = section.nodeName; var sectionName = section.nodeName;
$A(section.childNodes).each(function (node) { $A(section.childNodes).each(function (node) {
var itemId = sectionName + ':' + node.nodeName;
if (node.firstChild && node.firstChild.hasChildNodes()) { if (node.firstChild && node.firstChild.hasChildNodes()) {
var values = []; var values = [];
$A(node.childNodes).each(function (n) { $A(node.childNodes).each(function (n) {
values.push(Element.textContent(n)); values.push(Element.textContent(n));
}); });
ConfigInitialValues.values[sectionName+':'+node.nodeName] = values; ConfigInitialValues.values[itemId] = values;
} else { } else {
ConfigInitialValues.values[sectionName+':'+node.nodeName] = Element.textContent(node); ConfigInitialValues.values[itemId] = Element.textContent(node);
}
if (!ConfigXML.getItem(itemId)) {
//###TODO tell the user these are missing
} }
}); });
}); });
} }
}; };
var Config = { var Config ={
configPath: '', configPath: '',
init: function () { init: function () {
new Ajax.Request('/config.xml',{method: 'get',onComplete: Config.storeConfigLayout}); new Ajax.Request('/config.xml',{method: 'get',onComplete: Config.storeConfigLayout});
}, },
@ -117,8 +137,14 @@ var Config = {
$A(section.getElementsByTagName('item')).each(function (item) { $A(section.getElementsByTagName('item')).each(function (item) {
body.appendChild(Config._buildItem(item.getAttribute('id'))); body.appendChild(Config._buildItem(item.getAttribute('id')));
}); });
$('theform').appendChild(head); var div = document.createElement('div');
$('theform').appendChild(body); div.id = ConfigXML.getSectionId(sectionName);
if (ConfigXML.isAdvancedSection(sectionName)) {
div.style.display = 'none';
}
div.appendChild(head);
div.appendChild(body);
$('theform').appendChild(div);
}); });
// Won't be using the config.xml XML doc anymore get rid of it // Won't be using the config.xml XML doc anymore get rid of it
Config.tmpConfigXML = ''; Config.tmpConfigXML = '';
@ -282,6 +308,9 @@ var Config = {
Element.toggle('advanced_config_button'); Element.toggle('advanced_config_button');
Element.toggle('basic_config_button'); Element.toggle('basic_config_button');
Cookie.setVar('show_advanced_config','true',30); Cookie.setVar('show_advanced_config','true',30);
ConfigXML.getAllAdvancedSections().each(function (sectionName) {
Effect.BlindDown(ConfigXML.getSectionId(sectionName));
});
ConfigXML.getAllItems().each(function (item) { ConfigXML.getAllItems().each(function (item) {
if (item.value.advanced) { if (item.value.advanced) {
var element = $(item.key); var element = $(item.key);
@ -300,6 +329,9 @@ var Config = {
Element.toggle('advanced_config_button'); Element.toggle('advanced_config_button');
Element.toggle('basic_config_button'); Element.toggle('basic_config_button');
Cookie.removeVar('show_advanced_config'); Cookie.removeVar('show_advanced_config');
ConfigXML.getAllAdvancedSections().each(function (sectionName) {
Effect.BlindUp(ConfigXML.getSectionId(sectionName));
});
ConfigXML.getAllItems().each(function (item) { ConfigXML.getAllItems().each(function (item) {
if (item.value.advanced) { if (item.value.advanced) {
var element = $(item.key); var element = $(item.key);

View File

@ -114,8 +114,8 @@
<type size="80" multiple="true" add_item_label="Add compilation directory" browse="directory">text</type> <type size="80" multiple="true" add_item_label="Add compilation directory" browse="directory">text</type>
</item> </item>
</section> </section>
<section name="Scanning"> <section name="Scanning" advanced="true">
<item id="scanning:process_xml" advanced="true"> <item id="scanning:process_xml">
<name>Process xmlFiles</name> <name>Process xmlFiles</name>
<short_description> <short_description>
Should iTunes xml-files be processed? Should iTunes xml-files be processed?
@ -126,7 +126,7 @@
<option value="1">Yes</option> <option value="1">Yes</option>
</options> </options>
</item> </item>
<item id="scanning:ignore_appledouble" advanced="true"> <item id="scanning:ignore_appledouble">
<name>Ignore appledouble</name> <name>Ignore appledouble</name>
<short_description> <short_description>
Skip appledouble files when scanning Skip appledouble files when scanning
@ -137,7 +137,7 @@
<option value="1">Yes</option> <option value="1">Yes</option>
</options> </options>
</item> </item>
<item id="scanning:ignore_dotfiles" advanced="true"> <item id="scanning:ignore_dotfiles">
<name>Ignore dotfiles</name> <name>Ignore dotfiles</name>
<short_description> <short_description>
Ignore unix hidden dot files Ignore unix hidden dot files
@ -148,7 +148,7 @@
<option value="1">Yes</option> <option value="1">Yes</option>
</options> </options>
</item> </item>
<item id="scanning:concat_compilations" advanced="true"> <item id="scanning:concat_compilations">
<name>Group compilations</name> <name>Group compilations</name>
<short_description> <short_description>
Compilations are grouped under &amp;Various artists&amp; Compilations are grouped under &amp;Various artists&amp;
@ -203,8 +203,8 @@
</item> </item>
</section> </section>
<section name="Daap"> <section name="Daap" advanced="true">
<item id="daap:empty_strings" advanced="true"> <item id="daap:empty_strings">
<name>Empty strings</name> <name>Empty strings</name>
<short_description></short_description> <short_description></short_description>
<type default_value="0">select</type> <type default_value="0">select</type>
@ -213,7 +213,7 @@
<option value="1">Yes</option> <option value="1">Yes</option>
</options> </options>
</item> </item>
<item id="daap:supports_update" advanced="true"> <item id="daap:supports_update">
<name>Supports update</name> <name>Supports update</name>
<short_description></short_description> <short_description></short_description>
<type default_value="1">select</type> <type default_value="1">select</type>
@ -222,7 +222,7 @@
<option value="1">Yes</option> <option value="1">Yes</option>
</options> </options>
</item> </item>
<item id="daap:supports_browse" advanced="true"> <item id="daap:supports_browse">
<name>Supports browse</name> <name>Supports browse</name>
<short_description></short_description> <short_description></short_description>
<type default_value="1">select</type> <type default_value="1">select</type>
@ -234,26 +234,26 @@
</section> </section>
<section name="Plugins"> <section name="Plugins" advanced="true">
<item id="plugins:plugin_dir" advanced="true" config_section="plugins" restart="true"> <item id="plugins:plugin_dir" config_section="plugins" restart="true">
<name>Plugin Directory</name> <name>Plugin Directory</name>
<short_description></short_description> <short_description></short_description>
<type size="80" browse="directory">text</type> <type size="80" browse="directory">text</type>
</item> </item>
<item id="plugins:plugins" advanced="true" config_section="plugins" restart="true"> <item id="plugins:plugins" config_section="plugins" restart="true">
<name>Plugins</name> <name>Plugins</name>
<short_description></short_description> <short_description></short_description>
<type size="20" multiple="true" add_item_label="Add plugin">text</type> <type size="20" multiple="true" add_item_label="Add plugin">text</type>
</item> </item>
</section> </section>
<section name="Transcoding"> <section name="Transcoding" advanced="true">
<item id="general:ssc_prog" advanced="true"> <item id="general:ssc_prog">
<name>SSC Program</name> <name>SSC Program</name>
<short_description></short_description> <short_description></short_description>
<type size="80" browse="file">text</type> <type size="80" browse="file">text</type>
</item> </item>
<item id="general:ssc_codectypes" advanced="true"> <item id="general:ssc_codectypes">
<name>SSC Codec Types</name> <name>SSC Codec Types</name>
<short_description></short_description> <short_description></short_description>
<type size="80">text</type> <type size="80">text</type>