Hi
I’ve created an online-fill-out-form from a “News Editor”-tutorial at kirupa.com - to load, edit and publish rss-feeds containing audio.
It creates this xml:
<rss>
<item>
<title> Title </ title>
<description> description </ description>
<enclosure url="link to audio"> link to download </ enclosure>
</ Item>
</ Rss>
These few lines of xml is created with my AS below, but the problem is that I am not able to see the “enclosure url=“link to audio””-attribute only the “link to download” and if I want to change something in the xml through my flash element the url-enclosure isn’t visible.
Pretty bad explanation, so here’s my code:
GetTitleText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var title_element = entries[entry_index].firstChild;
return title_element.firstChild.nodeValue;
}
GetBodyText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var body_element = entries[entry_index].firstChild.nextSibling;
return body_element.firstChild.nodeValue;
}
GetLinkText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var link_element = entries[entry_index].firstChild.nextSibling.nextSibling;
return link_element.firstChild.nodeValue;
}
GetAudioText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var audio_element = entries[entry_index].firstChild.nextSibling.nextSibling;
return audio_element.firstChild.nodeValue;
}
GetEntry = function(news_xml, index){
var entries = news_xml.firstChild.childNodes;
return entries[index];
}
GetNewsCount = function(news_xml){
var entries = news_xml.firstChild.childNodes;
return entries.length;
}
ShowNews = function(news_xml){
if (!news_xml.firstChild.hasChildNodes()){
content_txt.text = "Not availible!";
return (0);
}
var entries = news_xml.firstChild.childNodes;
content_txt.text = "";
for (var i=0; i<entries.length; i++){
var title = GetTitleText(news_xml, i);
var description = GetBodyText(news_xml, i);
var link = GetLinkText(news_xml, i);
var audio = GetAudioText(news_xml, i);
content_txt.htmlText += "Title: <b>" + title +"</b><br>"
content_txt.htmlText += "Description: <b>" + description +"</b><br>"
content_txt.htmlText += "MP3-link: <b>" + audio +"</b><br>"
content_txt.htmlText += "Download: <b>" + link +"</b><br>"
content_txt.htmlText += "-----------------------------------------------------------------------------------------------------------------------------<br>"
}
}
AddNewsEntry = function(news_xml, title, beskrivelse, link, audio){
var entryNode = news_xml.createElement("item");
if (title == "") title = "(none)";
var titleNode = news_xml.createElement("title");
var titleText = news_xml.createTextNode(title);
titleNode.appendChild(titleText);
entryNode.appendChild(titleNode);
if (description == "") description = "(none)";
var bodyNode = news_xml.createElement("description");
var bodyText = news_xml.createTextNode(description);
bodyNode.appendChild(bodyText);
entryNode.appendChild(bodyNode);
if (link == "") link = "(none)";
var linkNode = news_xml.createElement("enclosure");
var linkText = news_xml.createTextNode(link);
linkNode.appendChild(linkText);
entryNode.appendChild(linkNode);
if (audio == "") audio = "(none)";
var audioNode = news_xml.createElement("enclosure");
var audioText = news_xml.createTextNode(audio);
audioNode.attributes.url = audio;
if (news_xml.firstChild.hasChildNodes()){
news_xml.firstChild.insertBefore(entryNode, news_xml.firstChild.firstChild);
}else news_xml.firstChild.appendChild(entryNode);
while (GetNewsCount(news_xml) > max_news_items){
news_xml.firstChild.lastChild.removeNode();
}
}
EditNewsEntry = function(news_xml, node_index, title, description, link, audio){
var entry = GetEntry(news_xml, node_index);
if (title == "" && description == "" && link == ""){
entry.removeNode();
return (0);
}else{
if (title == "") title = "(none)";
if (description == "") description = "(none)";
if (link == "") link = "(none)";
if (audio == "") audio = "(none)";
}
var titleTextNode = entry.firstChild.firstChild;
var bodyTextNode = entry.firstChild.nextSibling.firstChild;
var linkTextNode = entry.firstChild.nextSibling.nextSibling.firstChild;
titleTextNode.nodeValue = title;
bodyTextNode.nodeValue = description;
linkTextNode.nodeValue = link;
audioTextNode.nodeValue = audio;
}
SaveNews = function(news_xml){
content_txt.htmlText = "<i>Saves & Reloades...</i>";
news_xml.xmlDecl = ""; // fixes duplication bug
news_xml.sendAndLoad(save_script, news_xml);
}
RefreshNews = function(news_xml){
content_txt.htmlText = "<i>Loading...</i>";
news_xml.load(xml_file);
}
If you fill out the form the “description”-element is both shown in
GetLinkText
and
GetAudioText
and I know it is because these to entries are the same:
GetLinkText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var link_element = entries[entry_index].firstChild.nextSibling.nextSibling;
return link_element.firstChild.nodeValue;
}
GetAudioText = function(news_xml, entry_index){
var entries = news_xml.firstChild.childNodes;
var audio_element = entries[entry_index].firstChild.nextSibling.nextSibling;
return audio_element.firstChild.nodeValue;
}
I can append an enclosure through my form, but how do I get the attribute of my xml-enclosure to appear in “GetAudioText”, so that it is visible to the user when loading the xml-file?
Really hope someone can help - this have been bugging me for more than a week now
/andersoe