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