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