| 1 |
<?cs def:hdf_select(options, name, selected, optional) ?> |
|---|
| 2 |
<select size="1" id="<?cs var:name ?>" name="<?cs var:name ?>"><?cs |
|---|
| 3 |
if:optional ?><option></option><?cs /if ?><?cs |
|---|
| 4 |
each:option = options ?> |
|---|
| 5 |
<option<?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs |
|---|
| 6 |
var:option ?></option><?cs |
|---|
| 7 |
/each ?> |
|---|
| 8 |
</select><?cs |
|---|
| 9 |
/def?><?cs |
|---|
| 10 |
|
|---|
| 11 |
def:labelled_hdf_select(label, options, name, selected, optional) ?><?cs |
|---|
| 12 |
if:len(options) > #0 ?> |
|---|
| 13 |
<label for="<?cs var:name ?>"><?cs var:label ?></label><?cs |
|---|
| 14 |
call:hdf_select(options, name, selected, optional) ?> |
|---|
| 15 |
</label> |
|---|
| 16 |
<br /><?cs |
|---|
| 17 |
/if ?><?cs |
|---|
| 18 |
/def ?><?cs |
|---|
| 19 |
|
|---|
| 20 |
def:browser_path_links(path, file) ?><?cs |
|---|
| 21 |
set:first = #1 ?><?cs |
|---|
| 22 |
each:part = path ?><?cs |
|---|
| 23 |
set:last = name(part) == len(path) - #1 ?><a<?cs |
|---|
| 24 |
if:first ?> class="first" title="rootディレクトリに移動"<?cs |
|---|
| 25 |
set:first = #0 ?><?cs |
|---|
| 26 |
else ?> title="<?cs var:part.name ?> ディレクトリに移動"<?cs |
|---|
| 27 |
/if ?> href="<?cs var:part.href ?>"><?cs var:part.name ?></a><?cs |
|---|
| 28 |
if:!last ?><span class="sep">/</span><?cs /if ?><?cs |
|---|
| 29 |
/each ?><?cs |
|---|
| 30 |
/def ?><?cs |
|---|
| 31 |
|
|---|
| 32 |
def:diff_line_class(block, line) ?><?cs |
|---|
| 33 |
set:first = name(line) == 0 ?><?cs |
|---|
| 34 |
set:last = name(line) + 1 == len(block.lines) ?><?cs |
|---|
| 35 |
if:first || last ?> class="<?cs |
|---|
| 36 |
if:first ?>first<?cs /if ?><?cs |
|---|
| 37 |
if:first && last ?> <?cs /if ?><?cs |
|---|
| 38 |
if:last ?>last<?cs /if ?>"<?cs |
|---|
| 39 |
/if ?><?cs |
|---|
| 40 |
/def ?><?cs |
|---|
| 41 |
|
|---|
| 42 |
def:diff_display(diff, style) ?><?cs |
|---|
| 43 |
if:style == 'sidebyside' ?><?cs |
|---|
| 44 |
each:block = diff ?><?cs |
|---|
| 45 |
if:block.type == 'unmod' ?><tbody><?cs |
|---|
| 46 |
each:line = block.base.lines ?><tr><th><?cs |
|---|
| 47 |
var:#block.base.offset + name(line) + 1 ?></th><td class="l"><span><?cs |
|---|
| 48 |
var:line ?></span> </td><th><?cs |
|---|
| 49 |
var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><span><?cs |
|---|
| 50 |
var:block.changed.lines[name(line)] ?></span> </td></tr><?cs |
|---|
| 51 |
/each ?></tbody><?cs |
|---|
| 52 |
elif:block.type == 'mod' ?><tbody class="mod"><?cs |
|---|
| 53 |
if:len(block.base.lines) >= len(block.changed.lines) ?><?cs |
|---|
| 54 |
each:line = block.base.lines ?><tr><th><?cs |
|---|
| 55 |
var:#block.base.offset + name(line) + 1 ?></th><td class="l"><?cs |
|---|
| 56 |
var:line ?> </td><?cs |
|---|
| 57 |
if:len(block.changed.lines) >= name(line) + 1 ?><?cs |
|---|
| 58 |
each:changedline = block.changed.lines ?><?cs |
|---|
| 59 |
if:name(changedline) == name(line) ?><th><?cs |
|---|
| 60 |
var:#block.changed.offset + name(changedline) + 1 ?></th><td class="r"><?cs |
|---|
| 61 |
var:changedline ?> </td><?cs |
|---|
| 62 |
/if ?><?cs |
|---|
| 63 |
/each ?><?cs |
|---|
| 64 |
else ?><th> </th><td class="r"> </td><?cs |
|---|
| 65 |
/if ?></tr><?cs |
|---|
| 66 |
/each ?><?cs |
|---|
| 67 |
else ?><?cs |
|---|
| 68 |
each:line = block.changed.lines ?><tr><?cs |
|---|
| 69 |
if:len(block.base.lines) >= name(line) + 1 ?><?cs |
|---|
| 70 |
each:baseline = block.base.lines ?><?cs |
|---|
| 71 |
if:name(baseline) == name(line) ?><th><?cs |
|---|
| 72 |
var:#block.base.offset + name(baseline) + 1 ?></th><td class="l"><?cs |
|---|
| 73 |
var:baseline ?> </td><?cs |
|---|
| 74 |
/if ?><?cs |
|---|
| 75 |
/each ?><?cs |
|---|
| 76 |
else ?><th> </th><td class="l"> </td><?cs |
|---|
| 77 |
/if ?> |
|---|
| 78 |
<th><?cs var:#block.changed.offset + name(line) + 1 ?></th> |
|---|
| 79 |
<td class="r"><?cs var:line ?> </td></tr><?cs |
|---|
| 80 |
/each ?><?cs |
|---|
| 81 |
/if ?></tbody><?cs |
|---|
| 82 |
elif:block.type == 'add' ?><tbody class="add"><?cs |
|---|
| 83 |
each:line = block.changed.lines ?><tr><th> </th><td class="l"> </td><th><?cs |
|---|
| 84 |
var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><ins><?cs |
|---|
| 85 |
var:line ?></ins> </td></tr><?cs |
|---|
| 86 |
/each ?><?cs |
|---|
| 87 |
elif:block.type == 'rem' ?><tbody class="rem"><?cs |
|---|
| 88 |
each:line = block.base.lines ?><tr><th><?cs |
|---|
| 89 |
var:#block.base.offset + name(line) + 1 ?></th><td class="l"><del><?cs |
|---|
| 90 |
var:line ?></del> </td><th> </th><td class="r"> </td></tr><?cs |
|---|
| 91 |
/each ?><?cs |
|---|
| 92 |
/if ?></tbody><?cs |
|---|
| 93 |
/each ?><?cs |
|---|
| 94 |
else ?><?cs |
|---|
| 95 |
each:block = diff ?><?cs |
|---|
| 96 |
if:block.type == 'unmod' ?><tbody><?cs |
|---|
| 97 |
each:line = block.base.lines ?><tr><th><?cs |
|---|
| 98 |
var:#block.base.offset + name(line) + #1 ?></th><th><?cs |
|---|
| 99 |
var:#block.changed.offset + name(line) + #1 ?></th><td class="l"><span><?cs |
|---|
| 100 |
var:line ?></span> </td></tr><?cs |
|---|
| 101 |
/each ?></tbody><?cs |
|---|
| 102 |
elif:block.type == 'mod' ?><tbody class="mod"><?cs |
|---|
| 103 |
each:line = block.base.lines ?><tr<?cs |
|---|
| 104 |
if:name(line) == 0 ?> class="first"<?cs /if ?>><th><?cs |
|---|
| 105 |
var:#block.base.offset + name(line) + #1 ?></th><th> </th><td class="l"><?cs |
|---|
| 106 |
var:line ?> </td></tr><?cs |
|---|
| 107 |
/each ?><?cs |
|---|
| 108 |
each:line = block.changed.lines ?><tr<?cs |
|---|
| 109 |
if:name(line) + 1 == len(block.changed.lines) ?> class="last"<?cs /if ?>><th> </th><th><?cs |
|---|
| 110 |
var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><?cs |
|---|
| 111 |
var:line ?> </td></tr><?cs |
|---|
| 112 |
/each ?></tbody><?cs |
|---|
| 113 |
elif:block.type == 'add' ?><tbody class="add"><?cs |
|---|
| 114 |
each:line = block.changed.lines ?><tr<?cs |
|---|
| 115 |
call:diff_line_class(block.changed, line) ?>><th> </th><th><?cs |
|---|
| 116 |
var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><ins><?cs |
|---|
| 117 |
var:line ?></ins> </td></tr><?cs |
|---|
| 118 |
/each ?></tbody><?cs |
|---|
| 119 |
elif:block.type == 'rem' ?><tbody class="rem"><?cs |
|---|
| 120 |
each:line = block.base.lines ?><tr<?cs |
|---|
| 121 |
call:diff_line_class(block.base, line) ?>><th><?cs |
|---|
| 122 |
var:#block.base.offset + name(line) + 1 ?></th><th> </th><td class="l"><del><?cs |
|---|
| 123 |
var:line ?></del> </td></tr><?cs |
|---|
| 124 |
/each ?></tbody><?cs |
|---|
| 125 |
/if ?><?cs |
|---|
| 126 |
/each ?><?cs |
|---|
| 127 |
/if ?><?cs |
|---|
| 128 |
/def ?><?cs |
|---|
| 129 |
|
|---|
| 130 |
def:ticket_custom_props(ticket) ?><?cs |
|---|
| 131 |
each c=ticket.custom ?> |
|---|
| 132 |
<div class="field custom_<?cs var c.name ?>"><?cs |
|---|
| 133 |
if c.type == 'text' ?> |
|---|
| 134 |
<label> |
|---|
| 135 |
<?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
|---|
| 136 |
<input type="text" name="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" /> |
|---|
| 137 |
</label><?cs |
|---|
| 138 |
elif c.type == 'textarea' ?> |
|---|
| 139 |
<label> |
|---|
| 140 |
<?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br /> |
|---|
| 141 |
<textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs |
|---|
| 142 |
alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs |
|---|
| 143 |
var c.value ?></textarea> |
|---|
| 144 |
</label><?cs |
|---|
| 145 |
elif c.type == 'checkbox' ?> |
|---|
| 146 |
<input type="hidden" name="checkbox_<?cs var c.name ?>" /> |
|---|
| 147 |
<label> |
|---|
| 148 |
<input type="checkbox" name="custom_<?cs var c.name ?>" value="1"<?cs |
|---|
| 149 |
if c.selected ?> checked="checked"<?cs /if ?> /> |
|---|
| 150 |
<?cs alt c.label ?><?cs var c.name ?><?cs /alt ?> |
|---|
| 151 |
</label><?cs |
|---|
| 152 |
elif c.type == 'select' ?> |
|---|
| 153 |
<label> |
|---|
| 154 |
<?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
|---|
| 155 |
<select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?> |
|---|
| 156 |
<option<?cs if v.selected ?> selected="selected"<?cs /if ?>><?cs |
|---|
| 157 |
var v ?></option><?cs /each ?> |
|---|
| 158 |
</select> |
|---|
| 159 |
</label><?cs |
|---|
| 160 |
elif c.type == 'radio' ?> |
|---|
| 161 |
<fieldset class="radio"> |
|---|
| 162 |
<legend><?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</legend><?cs |
|---|
| 163 |
each v = c.option ?> |
|---|
| 164 |
<label><input type="radio" name="custom_<?cs var c.name ?>" value="<?cs |
|---|
| 165 |
var v ?>"<?cs if v.selected ?> checked="checked"<?cs /if ?> /> <?cs |
|---|
| 166 |
var v ?></label><?cs |
|---|
| 167 |
/each ?> |
|---|
| 168 |
</fieldset><?cs |
|---|
| 169 |
/if ?> |
|---|
| 170 |
</div><?cs |
|---|
| 171 |
/each ?><?cs |
|---|
| 172 |
/def ?><?cs |
|---|
| 173 |
|
|---|
| 174 |
def:list_of_attachments(attachments, attach_href) ?> |
|---|
| 175 |
<h2>添付ファイル</h2><?cs |
|---|
| 176 |
if:len(attachments) ?><div id="attachments"> |
|---|
| 177 |
<dl class="attachments"><?cs each:attachment = attachments ?> |
|---|
| 178 |
<dt><a href="<?cs var:attachment.href ?>" title="添付ファイルを見る"><?cs |
|---|
| 179 |
var:attachment.filename ?></a> (<?cs var:attachment.size ?>) - <em><?cs |
|---|
| 180 |
var:attachment.author ?></em> によって <?cs |
|---|
| 181 |
var:attachment.time ?> に登録されました。</dt><?cs |
|---|
| 182 |
if:attachment.description ?> |
|---|
| 183 |
<dd><?cs var:attachment.description ?></dd><?cs |
|---|
| 184 |
/if ?><?cs |
|---|
| 185 |
/each ?></dl><?cs |
|---|
| 186 |
/if ?><?cs |
|---|
| 187 |
if:attach_href ?> |
|---|
| 188 |
<form method="get" action="<?cs var:attach_href ?>"><div> |
|---|
| 189 |
<input type="hidden" name="action" value="new" /> |
|---|
| 190 |
<input type="submit" value="ファイルを添付する" /> |
|---|
| 191 |
</div></form><?cs |
|---|
| 192 |
/if ?><?cs if:len(attachments) ?></div><?cs /if ?><?cs |
|---|
| 193 |
/def ?><?cs |
|---|
| 194 |
|
|---|
| 195 |
def:plural(base, count) ?><?cs |
|---|
| 196 |
var:base ?><?cs if:count != 1 ?>s<?cs /if ?><?cs |
|---|
| 197 |
/def ?> |
|---|