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