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