129 lines
3.1 KiB
JavaScript
129 lines
3.1 KiB
JavaScript
//
|
|
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
|
//
|
|
// Copyright 2004 ORF Online und Teletext GmbH
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// $Revision$
|
|
// $LastChangedBy$
|
|
// $LastChangedDate$
|
|
// $HeadURL$
|
|
//
|
|
|
|
|
|
/**
|
|
* @fileoverview Fields and methods of the jala.PodcastWriter class.
|
|
*/
|
|
|
|
|
|
// Define the global namespace for Jala modules
|
|
if (!global.jala) {
|
|
global.jala = {};
|
|
}
|
|
|
|
|
|
/**
|
|
* Jala dependencies
|
|
*/
|
|
app.addRepository(getProperty("jala.dir", "modules/jala") +
|
|
"/code/Rss20Writer.js");
|
|
|
|
/**
|
|
* @class Class to create, modify and render standard-compliant
|
|
* RSS 2.0 feeds including support for Apple's Podcast specification.
|
|
* @constructor
|
|
* @extends jala.Rss20Writer
|
|
* @param {String} header Optional XML header.
|
|
*/
|
|
jala.PodcastWriter = function(header) {
|
|
jala.Rss20Writer.apply(this, arguments);
|
|
|
|
var CATEGORY = {
|
|
name: "itunes:category",
|
|
attributes: {
|
|
name: "text"
|
|
}
|
|
};
|
|
|
|
var OWNER = {
|
|
name: "itunes:owner",
|
|
value: [{
|
|
name: "itunes:name"
|
|
}, {
|
|
name: "itunes:email"
|
|
}]
|
|
};
|
|
|
|
this.addNamespace("itunes", "http://www.itunes.com/dtds/podcast-1.0.dtd");
|
|
|
|
this.extendChannel([{
|
|
name: "itunes:author"
|
|
}, {
|
|
name: "itunes:subtitle"
|
|
}, {
|
|
name: "itunes:summary"
|
|
}, {
|
|
name: "itunes:new-feed-url"
|
|
}, {
|
|
name: "itunes:image",
|
|
attributes: [{
|
|
name: "href"
|
|
}]
|
|
}, {
|
|
name: "itunes:link",
|
|
attributes: [{
|
|
name: "rel"
|
|
}, {
|
|
name: "type"
|
|
}, {
|
|
name: "href"
|
|
}]
|
|
}]);
|
|
|
|
this.getChannel().setValue(this.createElement(OWNER));
|
|
|
|
this.extendItem([{
|
|
name: "itunes:duration"
|
|
}, {
|
|
name: "itunes:subtitle"
|
|
}]);
|
|
|
|
/**
|
|
* Add an iTunes Podcast category.
|
|
* @param {String} name The category's name.
|
|
* @param {String} subName The (optional) sub-category's name.
|
|
* @param {jala.XmlWriter.XmlElement} parent Optional parent
|
|
* element to add the category to.
|
|
*/
|
|
this.addItunesCategory = function(name, subName, parent) {
|
|
if (!parent)
|
|
parent = this.getChannel();
|
|
var cat = this.createElement(CATEGORY);
|
|
cat.populate({attributes: {text: name}});
|
|
if (subName) {
|
|
var subCat = this.createElement(CATEGORY);
|
|
subCat.populate({attributes: {text: subName}});
|
|
cat.addValue(subCat);
|
|
}
|
|
parent.addValue(cat);
|
|
return;
|
|
};
|
|
|
|
return this;
|
|
};
|
|
|
|
|
|
/** A typical XML header as default.
|
|
@type String @final */
|
|
jala.PodcastWriter.XMLHEADER = '<?xml version="1.0" encoding="UTF-8"?>';
|