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