1.1 restoration
[mir.git] / etc / producer / producers.xml
index 4311a74..9b0bbd6 100755 (executable)
@@ -13,7 +13,7 @@
 <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"/>
-
-    <!-- commented out features
-    
-              <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>
       </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>
+
+  <producer name="radicalendar">
+    <verbs>
+      <verb name="pull" />
+    </verbs>
+    <body>
+      <!-- groupname you will see as the value of "group" in the url for your radicalendar page, -->
+      <!--      gmtoffset is in minutes                                                                 -->
+      <Radicalendar key="calendar" groupname="_imc" gmtoffset="60"  />
+      <Generate 
+        generator="/radicalendar.template" 
+        destination="${config.storageRoot}/calendarinclude.shtml"/>
+
+
+    </body>
+  </producer>
+
   
 </producers>