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