e97a160869900bc8451debc472e758065236a54e
[mir.git] / etc / producer / producers.xml
1 <!-- 
2   This XML file defines a set of producers intended for a typical indymedia 
3   site:
4     - a start page
5     - a navigational bar
6     - topic pages
7     - a newswire archive
8     - a feature archive
9     - articles
10 -->  
11
12 <producers>
13   <nodedefinition name="Language">
14     <parameters>
15       <string name="languagecondition" defaultvalue=""/>
16       <string name="bundle" defaultvalue="bundles.producer" />
17       <node name="sub"/>    
18     </parameters>
19
20     <definition>
21       <List key="languages" table="language" selection="${languagecondition}" order="code"/>
22       <Enumerate key="language" table="language" selection="${languagecondition}" order="code">
23         <Resource bundle="${bundle}" key="lang" language="${language.code}"/>
24         <Define key="pathprefix" value="${language.code}" />
25         <sub/>
26       </Enumerate>
27     </definition>
28   </nodedefinition>
29  
30   <producer name="articles">
31     <verbs>
32       <verb name="changed" default="1">
33         <Define key="verbcondition" value=" and (not is_produced)"/>
34         <Set key="limit" value="10"/>
35       </verb>
36       <verb name="all">
37         <Define key="verbcondition" value=""/>
38         <Set key="limit" value="-1"/>
39       </verb>
40
41       <verb name="sample">
42         <Define key="verbcondition" value=""/>
43         <Set key="limit" value="10"/>
44       </verb>
45     </verbs>
46     <body>
47       <Enumerate key="article" table="content" selection="is_published='t' ${verbcondition}"
48                   limit="limit" order="webdb_create desc, date desc">
49             <Language>
50               <Generate 
51                   generator="/article.template" 
52                   destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
53               <Generate 
54                   generator="/emailThisArticle.template" 
55                   destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.txt"/>
56               <PDFPreFormat 
57                   key="article" 
58                   numLinesBetweenImages="3" 
59                   charWidthCM="0.19" 
60                   pixelWidthCM="0.035"
61                   contentAreaWidthCM="16" 
62                   lineHeightCM="0.5" />
63               <Generate 
64                   generator="/printablecontent.template" 
65                   destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
66                   parameters="UTF-8" />
67               <PDFGenerate
68                   generator="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
69                   destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.pdf"
70                   stylesheet="${config[&quot;Producer.HTML2FOStyleSheet&quot;]}" />
71             </Language>
72             <MarkContent key="article"/>            
73             <IndexContent key="article" pathToIndex="/tmp/index"/>
74       </Enumerate>
75     </body>
76   </producer>  
77
78 <!--  <producer name="index-articles">
79     <verbs>
80       <verb name="changed" default="1">
81         <Define key="verbcondition" value=" and (not is_produced)"/>
82         <Set key="limit" value="10"/>
83       </verb>
84       <verb name="all">
85         <Define key="verbcondition" value=""/>
86         <Set key="limit" value="-1"/>
87       </verb>
88
89       <verb name="sample">
90         <Define key="verbcondition" value=""/>
91         <Set key="limit" value="10"/>
92       </verb>
93     </verbs>
94     <body>
95       <Enumerate key="article" table="content" selection="is_published='t' ${verbcondition}"
96                   limit="limit" order="webdb_create desc, date desc">
97         <IndexContent key="article" pathToIndex="/tmp/index"/>
98       </Enumerate>
99     </body>
100   </producer>  -->
101
102
103   <producer name="navigation">
104     <verbs>
105       <verb name="generate" default="1" description="generates the left column"/>
106     </verbs>
107     <body>
108       <Language>
109         <Generate 
110             generator="/navigation.template" 
111             destination="${config.storageRoot}/${pathprefix}/navigation.inc"/>
112       </Language>
113     </body>
114   </producer>
115   
116   <producer name="staticimages">
117     <verbs>
118       <verb name="generate" default="1" description="copies all the static image files into place"/>
119     </verbs>
120     <body>
121       <CopyDir destination="img" source="etc/producer/images"/>
122     </body>
123   </producer>
124   
125   <producer name="newswirearchive">
126     <verbs>
127       <verb name="new">
128         <Set key="pages" value="3"/>
129       </verb>
130       <verb name="all">
131         <Set key="pages" value="-1"/>
132       </verb> 
133     </verbs>
134     <body>
135         <Define key="docSuffix" value=".shtml"/>
136         <Define key="storageSuffix" value=".shtml"/>
137         
138         <Batch key="articles" infokey="batch" table="content" 
139                process="pages" batchsize="20" minbatchsize="10"
140                selection="is_published='1' and to_article_type = ${articletype.newswire}"
141                order="webdb_create asc">
142           <batches>
143             <Language>
144               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
145               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
146               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
147
148               <Generate 
149                   generator="newswirearchive.template" 
150                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
151
152             </Language>
153           </batches>
154           <batchlist>
155             <Language>
156               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
157               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
158               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
159               <Generate 
160                   generator="batchnav.template" 
161                   destination="${storagePrefix}nav${storageSuffix}"/>
162             </Language>
163           </batchlist>
164         </Batch>
165     </body>
166   </producer>
167
168   <producer name="featurearchive">
169     <verbs>
170       <verb name="new">
171         <Set key="pages" value="3"/>
172       </verb>
173       <verb name="all">
174         <Set key="pages" value="-1"/>
175       </verb> 
176     </verbs>
177     <body>
178         <Define key="docSuffix" value=".shtml"/>
179         <Define key="storageSuffix" value=".shtml"/>
180         
181         <Batch key="articles" infokey="batch" table="content" 
182                process="pages" batchsize="20" minbatchsize="10"
183                selection="is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial})"
184                order="webdb_create asc">
185           <batches>
186             <Language>
187               <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
188               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
189               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
190
191               <Generate 
192                   generator="featurearchive.template" 
193                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
194
195             </Language>
196           </batches>
197           <batchlist>
198             <Language>
199               <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
200               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
201               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
202               <Generate 
203                   generator="batchnav.template" 
204                   destination="${storagePrefix}nav${storageSuffix}"/>
205             </Language>
206           </batchlist>
207         </Batch>
208     </body>
209   </producer>
210
211   <producer name="topicpages">
212     <verbs>
213       <verb name="new">
214         <Set key="_topics" value="-1"/>
215         <Set key="pages" value="3"/>
216       </verb>
217       <verb name="all">
218         <Set key="_topics" value="-1"/>
219         <Set key="pages" value="-1"/>
220       </verb> 
221       <verb name="sample">
222         <Set key="_topics" value="2"/>
223         <Set key="pages" value="4"/>
224       </verb> 
225     </verbs>
226     <body>
227       <Enumerate key="topic" table="topic" limit="_topics">
228         <Define key="docSuffix" value=".shtml"/>
229         <Define key="storageSuffix" value=".shtml"/>
230         
231         <List key="special" table="content" 
232           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})"
233           order = "webdb_create desc, date desc" limit="1"/>
234       
235         <Batch key="articles" infokey="batch" table="content" 
236                process="pages" batchsize="20" minbatchsize="10"
237                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})"
238                order="webdb_create asc">
239           <batches>
240             <Language>
241               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
242               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
243               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
244
245               <Generate 
246                   generator="topicpage.template" 
247                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
248
249             </Language>
250           </batches>
251           <batchlist>
252             <Language>
253               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
254               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
255               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
256               <Generate 
257                   generator="batchnav.template" 
258                   destination="${storagePrefix}nav${storageSuffix}"/>
259             </Language>
260           </batchlist>
261         </Batch>
262       </Enumerate>
263     </body>
264   </producer>
265   
266   <producer name="startpage">
267     <verbs>
268       <verb name="generate" default="1" description="Generates the startpage"/>
269     </verbs>
270
271     <body>
272       <List key="startspecial" table="content" limit="1"
273         selection="is_published=true and to_article_type=${articletype.startspecial}"
274         order="webdb_create desc, date desc"/>
275                                         
276       <List key="features" table="content" limit="10" 
277         selection="is_published=true and to_article_type=${articletype.feature}"
278         order="webdb_create desc, date desc"/>
279
280       <List key="newswire" table="content" limit="30"
281         selection="is_published=true and to_article_type=${articletype.newswire}"
282         order="webdb_create desc, date desc"/>
283         
284       <List key="breakingnews" table="breakingNews" limit="10"
285          order="webdb_create desc"/>
286         
287       <Language>
288         <Generate 
289             generator="/startpage.template" 
290             destination="${config.storageRoot}/${pathprefix}/index.shtml"/>
291       </Language>
292     </body>
293   </producer>  
294   
295   <producer name="synchronization">
296     <verbs>
297       <verb name="run" default="1" description="Synchronizes the publication site with the production site"/>
298     </verbs>
299
300     <body>
301       <If condition="config['Rsync'] in ('1', 'y', 'yes', 'Y')">
302         <then>
303           <Execute command="${config['Rsync.Script.Path']}"/>
304         </then>
305       </If>
306     </body>
307   </producer>  
308   
309 </producers>
310
311