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