fixed a bug: synchronization now really optional
[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         </Language>
54
55         <MarkContent key="article"/>            
56
57       </Enumerate>
58     </body>
59   </producer>  
60
61   <producer name="navigation">
62     <verbs>
63       <verb name="generate" default="1" description="generates the left column"/>
64     </verbs>
65     <body>
66       <Language>
67         <Generate 
68             generator="/navigation.template" 
69             destination="${config.storageRoot}/${pathprefix}/navigation.inc"/>
70       </Language>
71     </body>
72   </producer>
73   
74   <producer name="staticimages">
75     <verbs>
76       <verb name="generate" default="1" description="copies all the static image files into place"/>
77     </verbs>
78     <body>
79       <CopyDir destination="img" source="etc/producer/images"/>
80     </body>
81   </producer>
82   
83   <producer name="newswirearchive">
84     <verbs>
85       <verb name="new">
86         <Set key="pages" value="3"/>
87       </verb>
88       <verb name="all">
89         <Set key="pages" value="-1"/>
90       </verb> 
91     </verbs>
92     <body>
93         <Define key="docSuffix" value=".shtml"/>
94         <Define key="storageSuffix" value=".shtml"/>
95         
96         <Batch key="articles" infokey="batch" table="content" 
97                process="pages" batchsize="20" minbatchsize="10"
98                selection="is_published='1' and to_article_type = ${articletype.newswire}"
99                order="webdb_create asc">
100           <batches>
101             <Language>
102               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
103               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
104               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
105
106               <Generate 
107                   generator="newswirearchive.template" 
108                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
109
110             </Language>
111           </batches>
112           <batchlist>
113             <Language>
114               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
115               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
116               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
117               <Generate 
118                   generator="batchnav.template" 
119                   destination="${storagePrefix}nav${storageSuffix}"/>
120             </Language>
121           </batchlist>
122         </Batch>
123     </body>
124   </producer>
125
126   <producer name="featurearchive">
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 in (${articletype.feature}, ${articletype.startspecial})"
142                order="webdb_create asc">
143           <batches>
144             <Language>
145               <Define key="pagePrefix" value="${pathprefix}/feature/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="featurearchive.template" 
151                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
152
153             </Language>
154           </batches>
155           <batchlist>
156             <Language>
157               <Define key="pagePrefix" value="${pathprefix}/feature/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="topicpages">
170     <verbs>
171       <verb name="new">
172         <Set key="_topics" value="-1"/>
173         <Set key="pages" value="3"/>
174       </verb>
175       <verb name="all">
176         <Set key="_topics" value="-1"/>
177         <Set key="pages" value="-1"/>
178       </verb> 
179       <verb name="sample">
180         <Set key="_topics" value="2"/>
181         <Set key="pages" value="4"/>
182       </verb> 
183     </verbs>
184     <body>
185       <Enumerate key="topic" table="topic" limit="_topics">
186         <Define key="docSuffix" value=".shtml"/>
187         <Define key="storageSuffix" value=".shtml"/>
188         
189         <List key="special" table="content" 
190           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})"
191           order = "webdb_create desc, date desc" limit="1"/>
192       
193         <Batch key="articles" infokey="batch" table="content" 
194                process="pages" batchsize="20" minbatchsize="10"
195                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})"
196                order="webdb_create asc">
197           <batches>
198             <Language>
199               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
200               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
201               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
202
203               <Generate 
204                   generator="topicpage.template" 
205                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
206
207             </Language>
208           </batches>
209           <batchlist>
210             <Language>
211               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
212               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
213               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
214               <Generate 
215                   generator="batchnav.template" 
216                   destination="${storagePrefix}nav${storageSuffix}"/>
217             </Language>
218           </batchlist>
219         </Batch>
220       </Enumerate>
221     </body>
222   </producer>
223   
224   <producer name="startpage">
225     <verbs>
226       <verb name="generate" default="1" description="Generates the startpage"/>
227     </verbs>
228
229     <body>
230       <List key="startspecial" table="content" limit="1"
231         selection="is_published=true and to_article_type=${articletype.startspecial}"
232         order="webdb_create desc, date desc"/>
233                                         
234       <List key="features" table="content" limit="10" 
235         selection="is_published=true and to_article_type=${articletype.feature}"
236         order="webdb_create desc, date desc"/>
237
238       <List key="newswire" table="content" limit="30"
239         selection="is_published=true and to_article_type=${articletype.newswire}"
240         order="webdb_create desc, date desc"/>
241         
242       <List key="breakingnews" table="breakingNews" limit="10"
243          order="webdb_create desc"/>
244         
245       <Language>
246         <Generate 
247             generator="/startpage.template" 
248             destination="${config.storageRoot}/${pathprefix}/index.shtml"/>
249       </Language>
250     </body>
251   </producer>  
252   
253   <producer name="synchronization">
254     <verbs>
255       <verb name="run" default="1" description="Synchronizes the publication site with the production site"/>
256     </verbs>
257
258     <body>
259       <If condition="config['Rsync'] in ('1', 'y', 'yes', 'Y')">
260         <then>
261           <Execute command="${config['Rsync.Script.Path']}"/>
262         </then>
263       </If>
264     </body>
265   </producer>  
266   
267 </producers>
268
269