<?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) > #0 ?> <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 = #1 ?><?cs each:part = path ?><?cs set:last = name(part) == len(path) - #1 ?><a<?cs if:first ?> class="first" title="Go to root directory"<?cs set:first = #0 ?><?cs 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:#block.base.offset + name(line) + 1 ?></th><td class="l"><span><?cs var:line ?></span> </td><th><?cs var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><span><?cs 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:#block.base.offset + name(line) + 1 ?></th><td class="l"><?cs 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:#block.changed.offset + name(changedline) + 1 ?></th><td class="r"><?cs 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:#block.base.offset + name(baseline) + 1 ?></th><td class="l"><?cs var:baseline ?> </td><?cs /if ?><?cs /each ?><?cs else ?><th> </th><td class="l"> </td><?cs /if ?> <th><?cs var:#block.changed.offset + name(line) + 1 ?></th> <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:#block.changed.offset + name(line) + 1 ?></th><td class="r"><ins><?cs 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:#block.base.offset + name(line) + 1 ?></th><td class="l"><del><?cs 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:#block.base.offset + name(line) + #1 ?></th><th><?cs var:#block.changed.offset + name(line) + #1 ?></th><td class="l"><span><?cs 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:#block.base.offset + name(line) + #1 ?></th><th> </th><td class="l"><?cs 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:#block.changed.offset + name(line) + #1 ?></th><td class="r"><?cs 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:#block.changed.offset + name(line) + #1 ?></th><td class="r"><ins><?cs 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:#block.base.offset + name(line) + 1 ?></th><th> </th><td class="l"><del><?cs 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 ?>