1 <function showAbsoluteLinkButton(anUrl, aLabel)>
2 <span class="link-box-div">
3 <a class="link-box" href="${utility.encodeHTML(anUrl)}">${aLabel}</a>
6 <function showButton(anUrl, aLabel)>
7 <call showAbsoluteLinkButton(config.actionRoot+"?"+anUrl, aLabel)>
12 <comment>creates a full table incl. edit/delete entry.id</comment>
13 <function ListTable(contentlist, data_keys, aHeaders, column_head_CSS, listrow1CSS, listrow2CSS, footer_css, module_name)>
14 <assign nrColumns="1">
16 <assign nrColumns=utility.increment(nrColumns)>
19 <table cellspacing="2" border="0">
21 <tr class="${column_head_CSS}">
22 <list aHeaders as indexVariable>
23 <td class="${column_head_CSS}">
24 <b>${indexVariable}</b>
27 <td class="${column_head_CSS}">
33 <list contentlist as entry>
36 <tr class="${listrow1CSS}">
39 <tr class="${listrow2CSS}">
42 <list data_keys as indexVariable>
44 ${entry[indexVariable]}
48 <a class="listcommand" href="${config.actionRoot}?module=${module_name}&do=delete&id=${entry.id}">${lang("delete")}</a>
49 | <a class="listcommand" href="${config.actionRoot}?module=${module_name}&do=edit&id=${entry.id}">${lang("edit")}</a>
56 <td colspan="${nrColumns}" class="table-foot">
57 ${data.count} ${lang("records")} / ${lang("show_from_to", data.from, data.to)}
64 <assign TABLE_HEAD_CLASS "table-head">
65 <assign TABLE_FOOT_CLASS "table-foot">
66 <assign LIST_ROW_CLASS "listrow1">
67 <assign LIST_ROW_CLASS_ALTERNATIVE "listrow2">
69 <function EntityTable(anEntityList, aDataKeys, aHeaders, aFrom, aTo, aCount, aShowDelete, aShowEdit, aModuleName)>
70 <assign nrColumns="0">
72 <assign nrColumns=utility.increment(nrColumns)>
74 <if aShowDelete == "1" || aShowEdit == "1" >
75 <assign nrColumns=utility.increment(nrColumns)>
78 <table cellspacing="2" border="0">
81 <td class="${TABLE_HEAD_CLASS}">
85 <if aShowDelete == "1" || aShowEdit == "1">
86 <td class="${TABLE_HEAD_CLASS}">
91 <assign alternative="0">
93 <list anEntityList as entry>
95 <assign alternative="1">
96 <tr class="${LIST_ROW_CLASS}">
98 <assign alternative="0">
99 <tr class="${LIST_ROW_CLASS_ALTERNATIVE}">
102 <list aDataKeys as i>
107 <if aShowDelete == "1" || aShowEdit == "1" >
110 <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&do=delete&id=${entry.id}">${lang("delete")}</a>
112 <if aShowDelete == "1" && aShowEdit == "1">
115 <if aShowEdit == "1">
116 <a class="listcommand" href="${config.actionRoot}?module=${aModuleName}&do=edit&id=${entry.id}">${lang("edit")}</a>
125 <td colspan="${nrColumns}" class="${TABLE_FOOT_CLASS}">
126 ${aCount} ${lang("records")} / ${lang("show_from_to", aFrom, aTo)}
134 <comment>creates browse links, only called if necessary</comment>
135 <function PrevNextPage(module_name)>
137 <if (data.prev || data.next)>
138 <form method="post" action="${config.actionRoot}">
139 <input type="hidden" name="module" value="${module_name}">
140 <input type="hidden" name="where" value="${data.where}">
142 <input type="hidden" name="do" value="list">
143 <input type="hidden" name="prevoffset" value="${data.prev}">
144 <input type="submit" name="prev" value="${lang("list.previous")}">
147 <input type="hidden" name="do" value="list">
148 <input type="hidden" name="nextoffset" value="${data.next}">
149 <input type="submit" name="next" value="${lang("list.next")}">
156 <comment>extra navigation</comment>
157 <function AddOrBack(module_name, module_jumpback, do_jumpback)>
159 <a class="link-box" href="${config.actionRoot}?module=${module_name}&do=add">[+] ${lang("add")}</a>
160 <a class="link-box" href="${config.actionRoot}?module=${module_jumpback}&do=${do_jumpback}">[<] ${lang("back")} </a>
161 <a class="link-box" href="${config.actionRoot}">[<<<] ${lang("head.start")}</a>
165 <function showAddOrBack(anAllowAdd, anAddModule, aBackModule, aBackMethod, )>
167 <if anAllowAdd == "1">
168 <a class="link-box" href="${config.actionRoot}?module=${anAddModule}&do=add">[+] ${lang("add")}</a>
170 <a class="link-box" href="${config.actionRoot}?module=${aBackModule}&do=${aBackMethod}">[<] ${lang("back")} </a>
171 <comment> <a class="link-box" href="${config.actionRoot}">[<<<] ${lang("head.start")}</a></comment>
175 <function showBack(aBackUrl)>
176 <p><a class="link-box" href="${config.actionRoot}${aBackUrl}">[<] ${lang("back")} </a> </p>
181 <function PulldownTableRow (label, fieldname, entrieslist, keyfield, valuefield, value, langprefix)>
183 <td align="right" class="table-left">
186 <td class="listrow2">
187 <select name="${fieldname}">
188 <list entrieslist as a>
189 <option value="${a[keyfield]}" <if (a[keyfield] == value)>selected</if>><if langprefix>${lang(langprefix+a[valuefield])}<else>${a[valuefield]}</if></option>
197 <comment>4 functions to create Table rows with input-fields</comment>
198 <function TextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
200 <td align="right" class="table-left">
204 <td class="listrow2">
205 <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
210 <function ReadonlyTextTableRow (label, fieldcontent)>
212 <td align="right" class="table-left">
216 <td class="listrow2">
217 ${utility.encodeHTML(fieldcontent)}
222 <function PasswordTextInputTableRow (label, size, maxlength, fieldname, fieldcontent)>
224 <td align="right" class="table-left">
228 <td class="listrow2">
229 <input type="password" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
234 <function TextInputTableRowLight (label, size, maxlength, fieldname, fieldcontent)>
236 <td align="right" class="table-left-light">
240 <td class="listrow1">
241 <input type="text" size="${size}" maxlength="${maxlength}" name="${fieldname}" value="${utility.encodeHTML(fieldcontent)}">
246 <function CheckboxTableRow (label, fieldname, fieldcontent )>
248 <td align="right" valign="top" class="table-left">
252 <td class="listrow2">
253 <input type="checkbox" name="${fieldname}" value="1"<if fieldcontent=="1"> checked</if>>
258 <function TextAreaTableRow (label, hint, cols, rows, fieldname, fieldcontent )>
260 <td align="right" valign="top" class="table-left">
264 <span class="small">${hint}</span>
268 <td class="listrow2">
269 <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
275 <function TextAreaTableRowLight (label, hint, cols, rows, fieldname, fieldcontent )>
277 <td align="right" valign="top" class="table-left-light">
281 <span class="small">${hint}</span>
285 <td class="listrow1">
286 <textarea cols="${cols}" rows="${rows}" name="${fieldname}" wrap="virtual">${utility.encodeHTML(fieldcontent)}</textarea>
291 <comment>complete search-form for contenentries, not sure if it works from everywhere</comment>
292 <function ContentSearch (layout)>
294 <form method="POST" action="${config.actionRoot}">
295 <input type="hidden" name="module" value="Content">
296 <input type="hidden" name="do" value="search">
297 <input type="hidden" name="selectarticleurl" value="${utility.encodeHTML(selectarticleurl)}">
299 <table border="0" cellpadding="2" cellspacing="3">
300 <tr <if !layout>class="bg-neutral"</if>>
301 <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.value")}</td>
302 <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.field")}</td>
303 <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.publishedstate")}</td>
304 <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.articletype")}</td>
305 <td <if layout>class="table-head"<else>class="small bg-neutral"</if> valign="bottom"> ${lang("contentsearch.order")}</td>
306 <td <if layout>class="table_head"<else>class="small bg_neutral"</if> valign="bottom"> </td>
309 <td <if layout>class="listrow2"</if>><input type="text" size="10" maxlength="20" name="searchvalue" value="${searchvalue}"></td>
310 <td <if layout>class="listrow2"</if>>
311 <select name="searchfield">
312 <option value="title"<if searchfield=="title"> selected</if>>${lang("contentsearch.field.title")}</option>
313 <option value="creator"<if searchfield=="creator"> selected</if>>${lang("contentsearch.field.creator")}</option>
314 <option value="contents"<if searchfield=="content"> selected</if>>${lang("contentsearch.field.contents")}</option>
315 <option value="creator_main_url"<if searchfield=="creator_main_url"> selected</if>>${lang("contentsearch.field.creator_main_url")}</option>
316 <option value="creator_email"<if searchfield=="creator_email"> selected</if>>${lang("contentsearch.field.creator_email")}</option>
319 <td <if layout>class="listrow2"</if>>
320 <select name="searchispublished">
321 <option value="">--</option>
322 <option value="0" <if searchispublished=="0"> selected</if>>${lang("contentsearch.publishedstate.hidden")}</option>
323 <option value="1" <if searchispublished=="1"> selected</if>>${lang("contentsearch.publishedstate.published")}</option>
326 <td <if layout>class="listrow2"</if>>
327 <select name="searcharticletype">
328 <option value="">--</option>
329 <list articletypes as at>
330 <option value="${at.id}" <if searcharticletype==at.id> selected</if>>${lang("articletypes."+at.name)}</option>
334 <td <if layout>class="listrow2"</if>>
335 <select name="searchorder">
336 <option value="datedesc" <if searchorder=="datedesc"> selected</if>>${lang("contentsearch.order.datedesc")}</option>
337 <option value="dateasc" <if searchorder=="dateasc"> selected</if>>${lang("contentsearch.order.dateasc")}</option>
338 <option value="title" <if searchorder=="title"> selected</if>>${lang("contentsearch.order.title")}</option>
339 <option value="creator" <if searchorder=="creator"> selected</if>>${lang("contentsearch.order.creator")}</option>
342 <td <if layout>class="listrow2"</if>>
343 <input class="majorbutton" type="submit" name="search" value="${lang("contentsearch.searchbutton")}">
351 <comment>browse function, only called if necessary</comment>
352 <function PrevNext (align)>
353 <if prevurl || nexturl>
356 <a class="link-box" href="${config.actionRoot}?${prevurl}"> [ < ] ${lang("list.previous")}</a>
359 <a class="link-box" href="${config.actionRoot}?${nexturl}"> ${lang("list.next")} [ > ]</a>
366 <comment>previous next links</comment>
367 <function showPrevNextLinks (aPreviousUrl, aNextUrl, anAlignment)>
368 <if aPreviousUrl || aNextUrl>
369 <p align="${anAlignment}">
371 <a class="link-box" href="${config.actionRoot}?${aPreviousUrl}"> [ < ] ${lang("list.previous")}</a>
373 <if aPreviousUrl && aNextUrl>
377 <a class="link-box" href="${config.actionRoot}?${aNextUrl}"> ${lang("list.next")} [ > ]</a>
384 <comment>multifunctional help - popup or not - big or small designs</comment>
385 <function Help (HelpUrl, popup, big )>
388 <Script Language="JavaScript">
390 function openwindowlink() {
391 newwin = window.open("${HelpUrl}","windowname","height=320,width=320,top=200,left=300, scrollbars,resizable")
396 <a href="JavaScript: openwindowlink()">
397 <if big><span class="link-help"><else><span class="link-help-small"></if>
398 <if big> [ ? ] ${lang("help")}<else>[?]</if>
405 <a href="${HelpUrl}" target="_blank"><span class="link-help"> [ ? ] ${lang("help")}</span></a>
407 <a href="${HelpUrl}" target="_blank"><span class="link-help-small">[?]</span></a>
414 <comment>functions to show media for an article/comment edit page</comment>
415 <function showArticleAttachments(anArticle)>
416 <call showAttachments(1, anArticle)>
419 <function showCommentAttachments(aComment)>
420 <call showAttachments(0, aComment)>
423 <function showAttachments(anIsArticle, anObject)>
424 <if anIsArticle=="1">
425 <assign objectKey="articleid">
426 <assign objectModule="Content">
428 <assign objectKey="commentid">
429 <assign objectModule="Comment">
432 <table cellspacing="2" cellpadding="2">
434 <td class="table-head" colspan="2">
435 ${lang("content.attachments")}
440 <td align=right valign=top class="table-left">
441 ${lang("content.images")}:
443 <td align="left" valign="top" class="listrow2">
444 <a href="${config.actionRoot}?module=Images&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addimage")}</a> |
445 <a href="${config.actionRoot}?module=Images&do=add&${objectKey}=${anObject.id}">${lang("content.uploadimage")}</a>
448 <list anObject.to_all_media_images as m>
450 <td align=right valign=top>
451 <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>
453 <td align="left" valign="top">
454 <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
461 <td align=right valign=top class="table-left">
462 ${lang("content.audio")}:
464 <td align="left" valign="top" class="listrow2">
465 <a href="${config.actionRoot}?module=Audio&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addaudio")}</a> |
466 <a href="${config.actionRoot}?module=Audio&do=add&${objectKey}=${anObject.id}">${lang("content.uploadaudio")}</a>
469 <list anObject.to_all_media_audio as m>
471 <td align=right valign=top>
472 <a href="${config.actionRoot}?module=Audio&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>
474 <td align="left" valign="top">
475 <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
482 <td align=right valign=top class="table-left">
483 ${lang("content.video")}:
485 <td align="left" valign="top" class="listrow2">
486 <a href="${config.actionRoot}?module=Video&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addvideo")}</a> |
487 <a href="${config.actionRoot}?module=Video&do=add&${objectKey}=${anObject.id}">${lang("content.uploadvideo")}</a>
490 <list anObject.to_all_media_video as m>
492 <td align=right valign=top>
493 <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>
495 <td align="left" valign="top">
496 <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>
502 <td align=right valign=top class="table-left">
503 ${lang("content.other")}:
505 <td align="left" valign="top" class="listrow2">
506 <a href="${config.actionRoot}?module=OtherMedia&do=list&${objectKey}=${anObject.id}">[+] ${lang("content.addother")}</a> |
507 <a href="${config.actionRoot}?module=OtherMedia&do=add&${objectKey}=${anObject.id}">${lang("content.uploadother")}</a>
510 <list anObject.to_all_media_other as m>
512 <td align=right valign=top">
513 <a href="${config.actionRoot}?module=Video&do=edit&id=${m["id"]}"><img src="${config.docRoot}/img/${m["big_icon"]}" alt="edit" border="0"></a>
515 <td align="left" valign="top">
516 <a href="${config.actionRoot}?module=${objectModule}&do=dettach&${objectKey}=${anObject.id}&mid=${m["id"]}">[-] ${lang("delete")}</a>