| <?cs def:hdf_select(options, name, selected, optional) ?> |
| <select size="1" id="<?cs var:name ?>" name="<?cs var:name ?>"><?cs |
| if:optional ?><option></option><?cs /if ?><?cs |
| each:option = options ?> |
| <option<?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs |
| var:option ?></option><?cs |
| /each ?> |
| </select><?cs |
| /def?><?cs |
| |
| def:labelled_hdf_select(label, options, name, selected, optional) ?><?cs |
| if:len(options) > |
| <label for="<?cs var:name ?>"><?cs var:label ?></label><?cs |
| call:hdf_select(options, name, selected, optional) ?> |
| </label> |
| <br /><?cs |
| /if ?><?cs |
| /def ?><?cs |
| |
| def:browser_path_links(path, file) ?><?cs |
| set:first = |
| each:part = path ?><?cs |
| set:last = name(part) == len(path) - |
| if:first ?> class="first" title="Go to root directory"<?cs |
| set:first = |
| else ?> title="View <?cs var:part.name ?>"<?cs |
| /if ?> href="<?cs var:part.href ?>"><?cs var:part.name ?></a><?cs |
| if:!last ?><span class="sep">/</span><?cs /if ?><?cs |
| /each ?><?cs |
| /def ?><?cs |
| |
| def:diff_line_class(block, line) ?><?cs |
| set:first = name(line) == 0 ?><?cs |
| set:last = name(line) + 1 == len(block.lines) ?><?cs |
| if:first || last ?> class="<?cs |
| if:first ?>first<?cs /if ?><?cs |
| if:first && last ?> <?cs /if ?><?cs |
| if:last ?>last<?cs /if ?>"<?cs |
| /if ?><?cs |
| /def ?><?cs |
| |
| def:diff_display(diff, style) ?><?cs |
| if:style == 'sidebyside' ?><?cs |
| each:block = diff ?><?cs |
| if:block.type == 'unmod' ?><tbody><?cs |
| each:line = block.base.lines ?><tr><th><?cs |
| var: |
| var:line ?></span> </td><th><?cs |
| var: |
| var:block.changed.lines[name(line)] ?></span> </td></tr><?cs |
| /each ?></tbody><?cs |
| elif:block.type == 'mod' ?><tbody class="mod"><?cs |
| if:len(block.base.lines) >= len(block.changed.lines) ?><?cs |
| each:line = block.base.lines ?><tr><th><?cs |
| var: |
| var:line ?> </td><?cs |
| if:len(block.changed.lines) >= name(line) + 1 ?><?cs |
| each:changedline = block.changed.lines ?><?cs |
| if:name(changedline) == name(line) ?><th><?cs |
| var: |
| var:changedline ?> </td><?cs |
| /if ?><?cs |
| /each ?><?cs |
| else ?><th> </th><td class="r"> </td><?cs |
| /if ?></tr><?cs |
| /each ?><?cs |
| else ?><?cs |
| each:line = block.changed.lines ?><tr><?cs |
| if:len(block.base.lines) >= name(line) + 1 ?><?cs |
| each:baseline = block.base.lines ?><?cs |
| if:name(baseline) == name(line) ?><th><?cs |
| var: |
| var:baseline ?> </td><?cs |
| /if ?><?cs |
| /each ?><?cs |
| else ?><th> </th><td class="l"> </td><?cs |
| /if ?> |
| <th><?cs var: |
| <td class="r"><?cs var:line ?> </td></tr><?cs |
| /each ?><?cs |
| /if ?></tbody><?cs |
| elif:block.type == 'add' ?><tbody class="add"><?cs |
| each:line = block.changed.lines ?><tr><th> </th><td class="l"> </td><th><?cs |
| var: |
| var:line ?></ins> </td></tr><?cs |
| /each ?><?cs |
| elif:block.type == 'rem' ?><tbody class="rem"><?cs |
| each:line = block.base.lines ?><tr><th><?cs |
| var: |
| var:line ?></del> </td><th> </th><td class="r"> </td></tr><?cs |
| /each ?><?cs |
| /if ?></tbody><?cs |
| /each ?><?cs |
| else ?><?cs |
| each:block = diff ?><?cs |
| if:block.type == 'unmod' ?><tbody><?cs |
| each:line = block.base.lines ?><tr><th><?cs |
| var: |
| var: |
| var:line ?></span> </td></tr><?cs |
| /each ?></tbody><?cs |
| elif:block.type == 'mod' ?><tbody class="mod"><?cs |
| each:line = block.base.lines ?><tr<?cs |
| if:name(line) == 0 ?> class="first"<?cs /if ?>><th><?cs |
| var: |
| var:line ?> </td></tr><?cs |
| /each ?><?cs |
| each:line = block.changed.lines ?><tr<?cs |
| if:name(line) + 1 == len(block.changed.lines) ?> class="last"<?cs /if ?>><th> </th><th><?cs |
| var: |
| var:line ?> </td></tr><?cs |
| /each ?></tbody><?cs |
| elif:block.type == 'add' ?><tbody class="add"><?cs |
| each:line = block.changed.lines ?><tr<?cs |
| call:diff_line_class(block.changed, line) ?>><th> </th><th><?cs |
| var: |
| var:line ?></ins> </td></tr><?cs |
| /each ?></tbody><?cs |
| elif:block.type == 'rem' ?><tbody class="rem"><?cs |
| each:line = block.base.lines ?><tr<?cs |
| call:diff_line_class(block.base, line) ?>><th><?cs |
| var: |
| var:line ?></del> </td></tr><?cs |
| /each ?></tbody><?cs |
| /if ?><?cs |
| /each ?><?cs |
| /if ?><?cs |
| /def ?><?cs |
| |
| def:ticket_custom_props(ticket) ?><?cs |
| each c=ticket.custom ?> |
| <div class="field custom_<?cs var c.name ?>"><?cs |
| if c.type == 'text' ?> |
| <label> |
| <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
| <input type="text" name="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" /> |
| </label><?cs |
| elif c.type == 'textarea' ?> |
| <label> |
| <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br /> |
| <textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs |
| alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs |
| var c.value ?></textarea> |
| </label><?cs |
| elif c.type == 'checkbox' ?> |
| <input type="hidden" name="checkbox_<?cs var c.name ?>" /> |
| <label> |
| <input type="checkbox" name="custom_<?cs var c.name ?>" value="1"<?cs |
| if c.selected ?> checked="checked"<?cs /if ?> /> |
| <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?> |
| </label><?cs |
| elif c.type == 'select' ?> |
| <label> |
| <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
| <select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?> |
| <option<?cs if v.selected ?> selected="selected"<?cs /if ?>><?cs |
| var v ?></option><?cs /each ?> |
| </select> |
| </label><?cs |
| elif c.type == 'radio' ?> |
| <fieldset class="radio"> |
| <legend><?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</legend><?cs |
| each v = c.option ?> |
| <label><input type="radio" name="custom_<?cs var c.name ?>" value="<?cs |
| var v ?>"<?cs if v.selected ?> checked="checked"<?cs /if ?> /> <?cs |
| var v ?></label><?cs |
| /each ?> |
| </fieldset><?cs |
| /if ?> |
| </div><?cs |
| /each ?><?cs |
| /def ?><?cs |
| |
| def:list_of_attachments(attachments, attach_href) ?> |
| <h2>Attachments</h2><?cs |
| if:len(attachments) ?><div id="attachments"> |
| <dl class="attachments"><?cs each:attachment = attachments ?> |
| <dt><a href="<?cs var:attachment.href ?>" title="View attachment"><?cs |
| var:attachment.filename ?></a> (<?cs var:attachment.size ?>) - added by <em><?cs |
| var:attachment.author ?></em> on <?cs |
| var:attachment.time ?>.</dt><?cs |
| if:attachment.description ?> |
| <dd><?cs var:attachment.description ?></dd><?cs |
| /if ?><?cs |
| /each ?></dl><?cs |
| /if ?><?cs |
| if:attach_href ?> |
| <form method="get" action="<?cs var:attach_href ?>"><div> |
| <input type="hidden" name="action" value="new" /> |
| <input type="submit" value="Attach File" /> |
| </div></form><?cs |
| /if ?><?cs if:len(attachments) ?></div><?cs /if ?><?cs |
| /def ?><?cs |
| |
| def:plural(base, count) ?><?cs |
| var:base ?><?cs if:count != 1 ?>s<?cs /if ?><?cs |
| /def ?> |