-<!--
+<!--
This XML file defines a set of producers intended for a typical indymedia
site:
- a start page
<producers>
<nodedefinition name="Language">
<parameters>
- <string name="languagecondition" defaultvalue=""/>
+ <string name="languagecondition" defaultvalue="code != 'ot'"/>
<string name="bundle" defaultvalue="bundles.producer" />
<node name="sub"/>
</parameters>
<Enumerate key="language" table="language" selection="${languagecondition}" order="code">
<Resource bundle="${bundle}" key="lang" language="${language.code}"/>
<Define key="pathprefix" value="${language.code}" />
+ <Define key="languagepreference" value="${language.code}" />
<sub/>
+ <If condition="language.code=='en'">
+ <then>
+ <Define key="pathprefix" value="or" />
+ <Define key="languagepreference" value="" />
+ <sub/>
+ </then>
+ </If>
</Enumerate>
</definition>
</nodedefinition>
+
+ <nodedefinition name="RSSChannel">
+ <parameters>
+ <string name="articleSelection"/>
+ <string name="extratables" defaultvalue="none" />
+ <integer name="limit" defaultvalue="15"/>
+ <string name="channelidentifier" defaultvalue=""/>
+ <string name="channelfilename"/>
+ <string name="channeltitle"/>
+ <string name="articleprefix" defaultvalue="${config['Producer.PublicationHost']}/or" />
+ <string name="iconprefix" defaultvalue="${config['Producer.PublicationHost']}/icon" />
+ <string name="channelpublisher" defaultvalue="${config['Mir.Name']}" />
+ <string name="encoding" defaultvalue="UTF-8" />
+ <string name="channeldescription" defaultvalue=""/>
+ <string name="generator" defaultvalue="/RSS.template" />
+ </parameters>
+
+ <definition>
+ <If condition="extratables == 'none' ">
+ <then>
+ <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" />
+ </then>
+ <else>
+ <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" extratables="${extratables}" />
+ </else>
+ </If>
+ <If condition="channeldescription==''">
+ <then>
+ <Define key="channeldescription" value="${channeltitle}"/>
+ </then>
+ </If>
+ <If condition="channelidentifier==''">
+ <then>
+ <Define key="channelidentifier" value="${config['Producer.PublicationHost']}/or/${channelfilename}"/>
+ </then>
+ </If>
+
+ <Generate
+ parameters="${encoding}"
+ generator="${generator}"
+ destination="${config.storageRoot}/${channelfilename}"/>
+ </definition>
+ </nodedefinition>
+
+ <nodedefinition name="RSSChannelBundle">
+ <parameters>
+ <string name="extratables" defaultvalue="none" />
+ <string name="selection" defaultvalue="c.is_published='1'" />
+ <string name="basefilename" defaultvalue="main" />
+ </parameters>
+ <definition>
+ <!-- newswire -->
+ <RSSChannel
+ articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newswire}))) and ${selection}"
+ channelfilename="${basefilename}-newswire.rss"
+ channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+ limit="20"
+ extratables="${extratables}"
+ />
+ <RSSChannel
+ articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newsire}))) and ${selection}"
+ channelfilename="${basefilename}-newswire-content.rss"
+ channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+ limit="20"
+ generator="RSS-full.template"
+ extratables="${extratables}"
+ />
+ <!-- features -->
+ <RSSChannel
+ articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
+ channelfilename="${basefilename}-features.rss"
+ channeltitle="${config['Mir.Name']} ${basefilename} features"
+ limit="20"
+ extratables="${extratables}"
+ />
+ <RSSChannel
+ articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
+ channelfilename="${basefilename}-features-content.rss"
+ channeltitle="${config['Mir.Name']} ${basefilename} features"
+ limit="20"
+ generator="RSS-full.template"
+ extratables="${extratables}"
+ />
+ </definition>
+ </nodedefinition>
+
<producer name="articles">
<verbs>
<body>
<Enumerate key="article" table="content" selection="${verbcondition}"
limit="limit" order="webdb_create desc">
+ <Enumerate
+ key="media" table="image"
+ selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})
+ or exists (select * from comment_x_media, comment
+ where comment_id = comment.id and media_id=images.id and comment.to_media=${article.id})"
+ order="id desc">
+
+ <GenerateMedia key="media" />
+ </Enumerate>
+ <Enumerate
+ key="media" table="video"
+ selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})
+ or exists (select * from comment_x_media, comment
+ where comment_id = comment.id and media_id=video.id and comment.to_media=${article.id})"
+ order="id desc">
+ <GenerateMedia key="media" />
+ </Enumerate>
+ <Enumerate
+ key="media" table="audio"
+ selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})
+ or exists (select * from comment_x_media, comment
+ where comment_id = comment.id and media_id=audio.id and comment.to_media=${article.id})"
+ order="id desc">
+
+ <GenerateMedia key="media" />
+ </Enumerate>
+ <Enumerate
+ key="media" table="otherMedia"
+ selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})
+ or exists (select * from comment_x_media, comment
+ where comment_id = comment.id and media_id=other_media.id and comment.to_media=${article.id})"
+ order="id desc">
+
+ <GenerateMedia key="media" />
+ </Enumerate>
+
<If condition="article.is_published == '1'">
<then>
<Language>
<Generate
generator="/article.template"
destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
- <Generate
- generator="/emailThisArticle.template"
- destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.txt"/>
- <PDFPreFormat
- key="article"
- numLinesBetweenImages="3"
- charWidthCM="0.19"
- pixelWidthCM="0.035"
- contentAreaWidthCM="16"
- lineHeightCM="0.5" />
- <Generate
- generator="/printablecontent.template"
- destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
- parameters="UTF-8" />
- <PDFGenerate
- generator="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
- destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.pdf"
- stylesheet="${config['Producer.HTML2FOStyleSheet']}" />
</Language>
+ <Generate
+ generator="/languagebar.template"
+ destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>
<IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
</then>
<else>
</verb>
<verb name="all">
<Set key="pages" value="-1"/>
- </verb>
+ </verb>
</verbs>
<body>
<Define key="docSuffix" value=".shtml"/>
<Define key="storageSuffix" value=".shtml"/>
-
- <Batch key="articles" infokey="batch" table="content"
+
+ <Batch key="articles" infokey="batch" table="content"
process="pages" batchsize="20" minbatchsize="10"
selection="is_published='1' and to_article_type = ${articletype.newswire}"
order="webdb_create asc">
<Define key="storagePrefix" value="${config["Producer.StorageRoot"]}/${pagePrefix}"/>
<Define key="docPrefix" value="${config["Producer.DocRoot"]}/${pagePrefix}"/>
- <Generate
- generator="newswirearchive.template"
+ <Generate
+ generator="newswirearchive.template"
destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
</Language>
<Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
<Define key="storagePrefix" value="${config["Producer.StorageRoot"]}/${pagePrefix}"/>
<Define key="docPrefix" value="${config["Producer.DocRoot"]}/${pagePrefix}"/>
- <Generate
- generator="batchnav.template"
+ <Generate
+ generator="batchnav.template"
destination="${storagePrefix}nav${storageSuffix}"/>
</Language>
</batchlist>
<Define key="docSuffix" value=".shtml"/>
<Define key="storageSuffix" value=".shtml"/>
- <List key="special" table="content"
- selection="is_published='1' and to_article_type = ${articletype.topicspecial} and id in (select content_id from content_x_topic where topic_id = ${topic.id})"
- order = "webdb_create desc" limit="1"/>
+ <List key="special" table="content c"
+ selection="c.is_published='1' and c.to_article_type = ${articletype.topicspecial} and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+ order = "webdb_create desc" limit="1"
+ extratables="content_x_topic cxt"/>
- <Batch key="articles" infokey="batch" table="content"
+ <Batch key="articles" infokey="batch" table="content c"
process="pages" batchsize="20" minbatchsize="10"
- selection="is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.feature}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})"
- order="webdb_create asc">
+ selection="c.is_published='1' and c.to_article_type in (${articletype.newswire}, ${articletype.feature}) and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+ order="webdb_create asc" extratables="content_x_topic cxt">
<batches>
<Language>
<Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
</Enumerate>
</body>
</producer>
+
+ <producer name="syndication">
+ <verbs>
+ <verb name="generate" />
+ </verbs>
+ <body>
+ <!-- the main features and newswire -->
+ <RSSChannelBundle />
+
+ <!-- the topic features and newswires -->
+ <Enumerate key="topic" table="topic">
+ <RSSChannelBundle
+ basefilename="${topic.filename}"
+ selection="c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+ extratables="content_x_topic cxt"
+ />
+ </Enumerate>
+
+
+
+ </body>
+
+ </producer>
+
+
+
</producers>