root/trac/templates/macros.cs

リビジョン 287, 7.8 kB (コミッタ: anonymous, コミット時期: 4 年 前)

Added trac template files.

Line 
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>&nbsp;</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>&nbsp;</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 ?>&nbsp;</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 ?>&nbsp;</td><?cs
62         /if ?><?cs
63        /each ?><?cs
64       else ?><th>&nbsp;</th><td class="r">&nbsp;</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 ?>&nbsp;</td><?cs
74         /if ?><?cs
75        /each ?><?cs
76       else ?><th>&nbsp;</th><td class="l">&nbsp;</td><?cs
77       /if ?>
78       <th><?cs var:#block.changed.offset + name(line) + 1 ?></th>
79       <td class="r"><?cs var:line ?>&nbsp;</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>&nbsp;</th><td class="l">&nbsp;</td><th><?cs
84      var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><ins><?cs
85      var:line ?></ins>&nbsp;</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>&nbsp;</td><th>&nbsp;</th><td class="r">&nbsp;</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>&nbsp;</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>&nbsp;</th><td class="l"><?cs
106      var:line ?>&nbsp;</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>&nbsp;</th><th><?cs
110      var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><?cs
111      var:line ?>&nbsp;</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>&nbsp;</th><th><?cs
116      var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><ins><?cs
117      var:line ?></ins>&nbsp;</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>&nbsp;</th><td class="l"><del><?cs
123      var:line ?></del>&nbsp;</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 ?>
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。