fixed p-Tag that was left open
[mir.git] / templates / admin / FUNCTIONS.template
1 <include "EDITFUNCTIONS.template">
2
3 <function showAbsoluteLinkButton(anUrl, aLabel)>
4     <span class="link-box-div">
5   <a class="link-box" href="${utility.encodeHTML(anUrl)}">${aLabel}</a>
6     </span>
7 </function>
8 <function showButton(anUrl, aLabel)>
9   <call showAbsoluteLinkButton(config.actionRoot+"?"+anUrl, aLabel)>
10 </function>
11
12
13
14 <comment>creates a full table incl. edit/delete entry.id</comment>
15 <function ListTable(contentlist, data_keys, aHeaders, column_head_CSS, listrow1CSS, listrow2CSS, footer_css, module_name)>
16   <assign nrColumns="1">
17   <list aHeaders as h>
18     <assign nrColumns=utility.increment(nrColumns)>
19   </list>
20
21 <table cellspacing="2" border="0">
22   
23   <tr class="${column_head_CSS}">
24     <list aHeaders as indexVariable>
25       <td class="${column_head_CSS}">
26         <b>${indexVariable}</b> 
27       </td>
28     </list>
29       <td class="${column_head_CSS}">
30         &nbsp;
31       </td> 
32   </tr>
33   <assign grey="0">
34   
35   <list contentlist as entry>
36     <if grey=="1">
37       <assign grey="0">
38       <tr class="${listrow1CSS}">
39     <else>
40       <assign grey="1"> 
41       <tr class="${listrow2CSS}">
42     </if>
43       
44     <list data_keys as indexVariable>   
45         <td>
46           ${entry[indexVariable]}
47         </td>
48     </list>
49       <td>
50         <a class="listcommand" href="${config.actionRoot}?module=${module_name}&do=delete&id=${entry.id}">${lang("delete")}</a>
51         | <a class="listcommand" href="${config.actionRoot}?module=${module_name}&do=edit&id=${entry.id}">${lang("edit")}</a>
52       </td>
53     </tr>
54   </list>
55   
56   
57   <tr>    
58     <td colspan="${nrColumns}" class="table-foot">
59       ${data.count} ${lang("records")} / ${lang("show_from_to", data.from, data.to)}
60     </td>
61   </tr>
62
63 </table>
64 </function>
65
66 <assign TABLE_HEAD_CLASS          "table-head">
67 <assign TABLE_FOOT_CLASS          "table-foot">
68 <assign LIST_ROW_CLASS             "listrow1">
69 <assign LIST_ROW_CLASS_ALTERNATIVE "listrow2">
70
71 <function EntityTable(anEntityList, aDataKeys, aHeaders, aFrom, aTo, aCount, aShowDelete, aShowEdit, aModuleName)>
72   <assign nrColumns="0">
73   <list aHeaders as h>
74     <assign nrColumns=utility.increment(nrColumns)>
75   </list>
76   <if aShowDelete == "1" || aShowEdit == "1" >
77     <assign nrColumns=utility.increment(nrColumns)>
78   </if>
79
80   <table cellspacing="2" border="0">
81     <tr>
82       <list aHeaders as i>
83         <td class="${TABLE_HEAD_CLASS}">
84           <b>${i}</b> 
85         </td>
86       </list>
87       <if aShowDelete == "1" || aShowEdit == "1">
88         <td class="${TABLE_HEAD_CLASS}">
89           &nbsp;
90         </td> 
91       </if>
92     </tr>
93     <assign alternative="0">
94     
95     <list anEntityList as entry>
96       <if alternative=="0">
97         <assign alternative="1">
98         <tr class="${LIST_ROW_CLASS}">
99       <else>
100         <assign alternative="0">
101         <tr class="${LIST_ROW_CLASS_ALTERNATIVE}">
102       </if>
103         
104         <list aDataKeys as i>   
105             <td>
106               ${entry[i]}
107             </td>
108         </list>
109         <if aShowDelete == "1" || aShowEdit == "1" >
110           <td>
111             <if aShowDelete>
112             <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&do=delete&id=${entry.id}">${lang("delete")}</a>
113             </if>
114             <if aShowDelete == "1" && aShowEdit == "1">
115             | 
116             </if>
117             <if aShowEdit == "1">
118               <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&do=edit&id=${entry.id}">${lang("edit")}</a>
119             </if>
120           </td>
121         </if>
122       </tr>
123     </list>
124     
125     
126     <tr>    
127       <td colspan="${nrColumns}" class="${TABLE_FOOT_CLASS}">
128         ${aCount} ${lang("records")} / ${lang("show_from_to", aFrom, aTo)}
129       </td>
130     </tr>
131   
132   </table>
133 </function>
134
135
136 <comment>creates browse links, only called if necessary</comment>
137 <function PrevNextPage(module_name)>
138   <p>
139       <if (data.prev || data.next)>
140         <form method="post" action="${config.actionRoot}">
141           <input type="hidden" name="module" value="${module_name}">
142           <input type="hidden" name="where" value="${data.where}">
143           <if data.prev>
144             <input type="hidden" name="do" value="list">
145             <input type="hidden" name="prevoffset" value="${data.prev}">
146             <input type="submit" name="prev" value="${lang("list.previous")}">
147           </if>
148           <if data.next>
149             <input type="hidden" name="do" value="list">
150             <input type="hidden" name="nextoffset" value="${data.next}">
151             <input type="submit" name="next" value="${lang("list.next")}">
152           </if>
153         </form>
154       </if>
155   </p>
156 </function>
157
158 <comment>extra navigation</comment>
159 <function AddOrBack(module_name, module_jumpback, do_jumpback)>
160     <p>
161       <a class="link-box" href="${config.actionRoot}?module=${module_name}&do=add">[+] ${lang("add")}</a> &nbsp;
162       <a class="link-box" href="${config.actionRoot}?module=${module_jumpback}&do=${do_jumpback}">[&lt;] ${lang("back")} </a> &nbsp;
163       <a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a>
164   </p>
165 </function>
166
167 <function showAddOrBack(anAllowAdd, anAddModule, aBackModule, aBackMethod, )>
168     <p>
169       <if anAllowAdd == "1">
170         <a class="link-box" href="${config.actionRoot}?module=${anAddModule}&do=add">[+] ${lang("add")}</a> &nbsp;
171       </if>
172       <a class="link-box" href="${config.actionRoot}?module=${aBackModule}&do=${aBackMethod}">[&lt;] ${lang("back")} </a> &nbsp;
173 <comment>      <a class="link-box" href="${config.actionRoot}">[&lt;&lt;&lt;] ${lang("head.start")}</a></comment>
174   </p>
175 </function>
176
177 <function showBack(aBackUrl)>
178   <p><a class="link-box" href="${config.actionRoot}${aBackUrl}">[&lt;] ${lang("back")} </a> &nbsp;</p>
179 </function>
180
181
182
183 <function PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
184   <tr>
185      <td align="right" class="table-left">
186        <b>${label}:</b>
187      </td>
188      <td class="listrow2">
189        <select name="${fieldname}">
190          <list entrieslist as a>
191            <option value="${a[keyfield]}" <if (a[keyfield] == value)>selected</if>><if langprefix>${lang(langprefix+a[valuefield])}<else>${a[valuefield]}</if></option>
192          </list>
193        </select>
194      </td>
195    </tr>
196 </function>   
197
198
199
200
201
202
203
204
205
206 <function TextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
207   <tr>
208     <td align="right" class="table-left">
209       <b>${label}:</b>
210     </td>
211     
212     <td class="listrow2">
213       <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
214     </td>
215   </tr>
216 </function>
217
218 <function ReadonlyTextTableRow (label, fieldcontent)>
219   <tr>
220     <td align="right" class="table-left">
221       <b>${label}:</b>
222     </td>
223     
224     <td class="listrow2">
225       ${utility.encodeHTML(fieldcontent)}
226     </td>
227   </tr>
228 </function>
229
230 <function PasswordTextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
231   <tr>
232     <td align="right" class="table-left">
233       <b>${label}:</b>
234     </td>
235     
236     <td class="listrow2">
237       <input type="password" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
238     </td>
239   </tr>
240 </function>
241
242 <function TextInputTableRowLight (label, size, maxlength, fieldname, fieldcontent)>
243   <tr>
244     <td align="right" class="table-left-light">
245       <b>${label}:</b>
246     </td>
247     
248     <td class="listrow1">
249       <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
250     </td>
251   </tr>
252 </function>
253
254 <function CheckboxTableRow (label, fieldname, fieldcontent )>
255   <call EditCheckboxNormal(label, fieldname, fieldcontent)>
256 <comment>
257   <tr>
258     <td align="right" valign="top" class="table-left">
259       <b>${label}:</b>
260     </td>
261     
262     <td class="listrow2">
263       <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>&nbsp;&nbsp;
264     </td>
265   </tr>
266 </comment>  
267 </function> 
268
269 <function TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent )>
270   <tr>
271     <td align="right" valign="top" class="table-left">
272       <b>${label}:</b>
273       <if hint>
274         <br>
275         <span class="small">${hint}</span>      
276       </if>
277     </td>
278     
279     <td class="listrow2">
280       <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
281     </td>
282   </tr>
283 </function>
284
285
286 <function TextAreaTableRowLight (label, hint, cols, rows, fieldname, fieldcontent )>
287   <tr>
288     <td align="right" valign="top" class="table-left-light">
289       <b>${label}:</b>
290       <if hint>
291         <br>
292         <span class="small">${hint}</span>      
293       </if>
294     </td>
295     
296     <td class="listrow1">
297       <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
298     </td>
299   </tr>
300 </function>
301
302 <comment>complete search-form for contenentries, not sure if it works from everywhere</comment>
303 <function ContentSearch (layout)>
304
305       <form method="POST" action="${config.actionRoot}">
306         <input type="hidden" name="module" value="Content">
307         <input type="hidden" name="do" value="search">
308         <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(selectarticleurl)}">
309          
310         <table border="0" cellpadding="2" cellspacing="3">
311           <tr <if !layout>class="bg-neutral"</if>>
312             <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.value")}</td>
313             <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.field")}</td>
314             <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.publishedstate")}</td>
315             <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.articletype")}</td>
316             <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.order")}</td>
317       <td <if layout>class="table_head"<else>class="small bg_neutral"</if> valign="bottom"> &nbsp;</td>
318           </tr>
319           <tr>
320             <td <if layout>class="listrow2"</if>><input type="text" size="10" maxlength="20" name="searchvalue" value="${searchvalue}"></td>
321             <td <if layout>class="listrow2"</if>>
322                 <select name="searchfield">
323                   <option value="title"<if searchfield=="title"> selected</if>>${lang("contentsearch.field.title")}</option>
324                   <option value="creator"<if searchfield=="creator"> selected</if>>${lang("contentsearch.field.creator")}</option>
325                   <option value="contents"<if searchfield=="content"> selected</if>>${lang("contentsearch.field.contents")}</option>
326                   <option value="creator_main_url"<if searchfield=="creator_main_url"> selected</if>>${lang("contentsearch.field.creator_main_url")}</option>
327                   <option value="creator_email"<if searchfield=="creator_email"> selected</if>>${lang("contentsearch.field.creator_email")}</option>
328                 </select>
329             </td>
330             <td <if layout>class="listrow2"</if>>
331                 <select name="searchispublished">
332                   <option value="">--</option>
333                   <option value="0" <if searchispublished=="0"> selected</if>>${lang("contentsearch.publishedstate.hidden")}</option>
334                   <option value="1" <if searchispublished=="1"> selected</if>>${lang("contentsearch.publishedstate.published")}</option>
335                 </select>
336             </td>
337             <td <if layout>class="listrow2"</if>>
338                 <select name="searcharticletype">
339                   <option value="">--</option>
340                   <list articletypes as at>
341                     <option value="${at.id}" <if searcharticletype==at.id> selected</if>>${lang("articletypes."+at.name)}</option>
342                   </list>
343                 </select>
344             </td>
345             <td <if layout>class="listrow2"</if>>
346                 <select name="searchorder">
347                   <option value="datedesc" <if searchorder=="datedesc"> selected</if>>${lang("contentsearch.order.datedesc")}</option>
348                   <option value="dateasc" <if searchorder=="dateasc"> selected</if>>${lang("contentsearch.order.dateasc")}</option>
349                   <option value="title" <if searchorder=="title"> selected</if>>${lang("contentsearch.order.title")}</option>
350                   <option value="creator" <if searchorder=="creator"> selected</if>>${lang("contentsearch.order.creator")}</option>
351                 </select>
352             </td>
353             <td <if layout>class="listrow2"</if>>
354                 <input class="majorbutton" type="submit" name="search" value="${lang("contentsearch.searchbutton")}">
355             </td>
356           </tr>
357         </table>
358       </form>
359
360 </function>
361
362 <comment>browse function, only called if necessary</comment>
363 <function PrevNext (align)>
364   <if prevurl || nexturl>      
365     <p align="${align}">
366     <if prevurl>
367       <a class="link-box" href="${config.actionRoot}?${prevurl}"> [ &lt; ] ${lang("list.previous")}</a>&nbsp;&nbsp; 
368     </if>
369     <if nexturl>
370       <a  class="link-box" href="${config.actionRoot}?${nexturl}">   ${lang("list.next")} [ &gt; ]</a>
371     </if>
372     </p>
373   </if>
374 </function>
375
376
377 <comment>previous next links</comment>
378 <function showPrevNextLinks (aPreviousUrl, aNextUrl, anAlignment)>
379   <if aPreviousUrl || aNextUrl>      
380     <p align="${anAlignment}">
381     <if aPreviousUrl>
382       <a class="link-box" href="${config.actionRoot}?${aPreviousUrl}"> [ &lt; ] ${lang("list.previous")}</a>
383     </if>
384     <if aPreviousUrl && aNextUrl>      
385       &nbsp;&nbsp; 
386     </if>
387     <if aNextUrl>
388       <a class="link-box" href="${config.actionRoot}?${aNextUrl}">   ${lang("list.next")} [ &gt; ]</a>
389     </if>
390     </p>
391   </if>
392 </function>
393
394
395 <comment>multifunctional help - popup or not - big or small designs</comment>
396 <function Help (HelpUrl, popup, big )>
397   <if popup>
398     
399     <Script Language="JavaScript">
400       <!-- 
401       function openwindowlink() {
402       newwin = window.open("${HelpUrl}","windowname","height=320,width=320,top=200,left=300, scrollbars,resizable")
403       }
404       // end hiding -->
405     </Script>
406     
407     <a href="JavaScript: openwindowlink()">
408       <if big><span class="link-help"><else><span class="link-help-small"></if>
409         <if big> [ ? ] ${lang("help")}<else>[?]</if>
410       </span>
411     </a>    
412   
413   <else>
414     
415     <if big>
416       <a href="${HelpUrl}" target="_blank"><span class="link-help"> [ ? ] ${lang("help")}</span></a>
417     <else>
418       <a href="${HelpUrl}" target="_blank"><span class="link-help-small">[?]</span></a>   
419     </if>
420   </if>
421 </function>
422
423
424
425 <comment>functions to show media for an article/comment edit page</comment>
426 <function showArticleAttachments(anArticle)>
427   <call showAttachments(1, anArticle)>
428 </function>
429
430 <function showCommentAttachments(aComment)>
431   <call showAttachments(0, aComment)>
432 </function>
433
434 <function showAttachments(anIsArticle, anObject)>
435   <if anIsArticle=="1">
436     <assign objectKey="articleid">
437     <assign objectModule="Content">
438   <else>
439     <assign objectKey="commentid">
440     <assign objectModule="Comment">
441   </if>
442
443   <table cellspacing="2" cellpadding="2">
444     <tr>
445       <td class="table-head" colspan="2">
446         ${lang("content.attachments")}
447       </td>
448     </tr>
449
450     <tr>
451       <td align=right valign=top class="table-left">
452         ${lang("content.images")}: 
453       </td>
454       <td align="left" valign="top" class="listrow2">
455         <a href="${config.actionRoot}?module=Images&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addimage")}</a> |
456         <a href="${config.actionRoot}?module=Images&do=add&${objectKey}=${anObject.id}">${lang("content.uploadimage")}</a>
457       </td>
458     </tr>
459     <list anObject.to_all_media_images as m>
460       <tr>
461       <td align=right valign=top>
462         <a href="${config.actionRoot}?module=Images&do=edit&id=${m["id"]}"><img src="${config.actionRoot}?module=Images&do=getIcon&id=${m["id"]}" alt="edit" border="0"></a>&nbsp;
463       </td>
464       <td align="left" valign="top">
465         <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
466       </td>
467       </tr>
468     </list>
469     
470
471     <tr>
472       <td align=right valign=top class="table-left">
473       ${lang("content.audio")}:
474       </td>
475       <td align="left" valign="top" class="listrow2">
476         <a href="${config.actionRoot}?module=Audio&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addaudio")}</a> |
477         <a href="${config.actionRoot}?module=Audio&do=add&${objectKey}=${anObject.id}">${lang("content.uploadaudio")}</a>
478       </td>
479     </tr>
480     <list anObject.to_all_media_audio as m>
481       <tr>
482       <td align=right valign=top>
483         <a href="${config.actionRoot}?module=Audio&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;
484       </td>
485       <td align="left" valign="top">
486         <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
487       </td>
488       </tr>
489     </list>
490     
491
492     <tr>
493       <td align=right valign=top class="table-left">
494         ${lang("content.video")}:
495       </td>
496       <td  align="left" valign="top" class="listrow2">
497         <a href="${config.actionRoot}?module=Video&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addvideo")}</a> |
498         <a href="${config.actionRoot}?module=Video&do=add&${objectKey}=${anObject.id}">${lang("content.uploadvideo")}</a>
499       </td>
500     </tr>
501     <list anObject.to_all_media_video as m>
502       <tr>
503       <td align=right valign=top>
504         <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;        
505       </td>
506       <td align="left" valign="top">
507         <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
508       </td>
509       </tr>
510     </list>
511     
512     <tr>
513       <td align=right valign=top class="table-left">
514         ${lang("content.other")}:
515       </td>
516       <td align="left" valign="top" class="listrow2">
517       <a href="${config.actionRoot}?module=OtherMedia&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addother")}</a> |
518       <a href="${config.actionRoot}?module=OtherMedia&do=add&${objectKey}=${anObject.id}">${lang("content.uploadother")}</a>
519       </td>
520     </tr>
521     <list anObject.to_all_media_other as m>
522       <tr>
523       <td align=right valign=top">
524       <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>&nbsp;  
525       </td>
526       <td align="left" valign="top">
527         <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
528       </td>
529       </tr>
530     </list>
531   </table>
532 </function>  
533
534