| 1 |
<?cs include "header.cs" ?> |
|---|
| 2 |
<?cs include "macros.cs" ?> |
|---|
| 3 |
|
|---|
| 4 |
<div id="ctxtnav" class="nav"> |
|---|
| 5 |
<h2>チケットナビゲーション</h2><?cs |
|---|
| 6 |
with:links = chrome.links ?><?cs |
|---|
| 7 |
if:len(links.prev) || len(links.up) || len(links.next) ?><ul><?cs |
|---|
| 8 |
if:len(links.prev) ?> |
|---|
| 9 |
<li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>"> |
|---|
| 10 |
← <a href="<?cs var:links.prev.0.href ?>" title="<?cs |
|---|
| 11 |
var:links.prev.0.title ?>">前のチケット</a> |
|---|
| 12 |
</li><?cs |
|---|
| 13 |
/if ?><?cs |
|---|
| 14 |
if:len(links.up) ?> |
|---|
| 15 |
<li class="<?cs if:!len(links.prev) ?>first<?cs /if ?><?cs |
|---|
| 16 |
if:!len(links.next) ?> last<?cs /if ?>"> |
|---|
| 17 |
<a href="<?cs var:links.up.0.href ?>" title="<?cs |
|---|
| 18 |
var:links.up.0.title ?>">クエリに戻る</a> |
|---|
| 19 |
</li><?cs |
|---|
| 20 |
/if ?><?cs |
|---|
| 21 |
if:len(links.next) ?> |
|---|
| 22 |
<li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last"> |
|---|
| 23 |
<a href="<?cs var:links.next.0.href ?>" title="<?cs |
|---|
| 24 |
var:links.next.0.title ?>">次のチケット</a> → |
|---|
| 25 |
</li><?cs |
|---|
| 26 |
/if ?></ul><?cs |
|---|
| 27 |
/if ?><?cs |
|---|
| 28 |
/with ?> |
|---|
| 29 |
</div> |
|---|
| 30 |
|
|---|
| 31 |
<div id="content" class="ticket"> |
|---|
| 32 |
|
|---|
| 33 |
<h1>チケット #<?cs var:ticket.id ?> <span class="status">(<?cs |
|---|
| 34 |
var:ticket.status ?><?cs |
|---|
| 35 |
if:ticket.type ?> <?cs var:ticket.type ?><?cs |
|---|
| 36 |
/if ?><?cs |
|---|
| 37 |
if:ticket.resolution ?>: <?cs var:ticket.resolution ?><?cs |
|---|
| 38 |
/if ?>)</span></h1> |
|---|
| 39 |
|
|---|
| 40 |
<div id="searchable"> |
|---|
| 41 |
<div id="ticket"> |
|---|
| 42 |
<div class="date"> |
|---|
| 43 |
<p title="<?cs var:ticket.opened ?>">登録: <?cs var:ticket.opened_delta ?> 前</p><?cs |
|---|
| 44 |
if:ticket.lastmod ?> |
|---|
| 45 |
<p title="<?cs var:ticket.lastmod ?>">最終更新: <?cs var:ticket.lastmod_delta ?> 前</p> |
|---|
| 46 |
<?cs /if ?> |
|---|
| 47 |
</div> |
|---|
| 48 |
<h2 class="summary"><?cs var:ticket.summary ?></h2> |
|---|
| 49 |
<table class="properties"> |
|---|
| 50 |
<tr> |
|---|
| 51 |
<th id="h_reporter">報告者:</th> |
|---|
| 52 |
<td headers="h_reporter"><?cs var:ticket.reporter ?></td> |
|---|
| 53 |
<th id="h_owner">担当者:</th> |
|---|
| 54 |
<td headers="h_owner"><?cs var:ticket.owner ?><?cs |
|---|
| 55 |
if:ticket.status == 'assigned' ?> (着手済み)<?cs /if ?></td> |
|---|
| 56 |
</tr><tr><?cs |
|---|
| 57 |
each:field = ticket.fields ?><?cs |
|---|
| 58 |
if:!field.skip ?><?cs |
|---|
| 59 |
set:num_fields = num_fields + 1 ?><?cs |
|---|
| 60 |
/if ?><?cs |
|---|
| 61 |
/each ?><?cs |
|---|
| 62 |
set:idx = 0 ?><?cs |
|---|
| 63 |
each:field = ticket.fields ?><?cs |
|---|
| 64 |
if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs |
|---|
| 65 |
if:fullrow && idx % 2 ?><th></th><td></td></tr><tr><?cs /if ?> |
|---|
| 66 |
<th id="h_<?cs var:name(field) ?>"><?cs var:field.label ?>:</th> |
|---|
| 67 |
<td<?cs if:fullrow ?> colspan="3"<?cs /if ?> headers="h_<?cs |
|---|
| 68 |
var:name(field) ?>"><?cs var:ticket[name(field)] ?></td><?cs |
|---|
| 69 |
if:idx % 2 || fullrow ?></tr><tr><?cs |
|---|
| 70 |
elif:idx == num_fields - 1 ?><th></th><td></td><?cs |
|---|
| 71 |
/if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs |
|---|
| 72 |
/if ?><?cs |
|---|
| 73 |
/each ?></tr> |
|---|
| 74 |
</table><?cs |
|---|
| 75 |
if:ticket.description ?> |
|---|
| 76 |
<form method="get" action="<?cs var:ticket.href ?>#comment" class="printableform"> |
|---|
| 77 |
<div class="description"> |
|---|
| 78 |
<h3 id="comment:description"><?cs |
|---|
| 79 |
if:trac.acl.TICKET_APPEND ?> |
|---|
| 80 |
<span class="inlinebuttons"> |
|---|
| 81 |
<input type="hidden" name="replyto" value="description" /> |
|---|
| 82 |
<input type="submit" value="返信" title="チケットの概要に返信" /> |
|---|
| 83 |
</span><?cs |
|---|
| 84 |
/if ?> |
|---|
| 85 |
チケットの概要 <?cs |
|---|
| 86 |
if:ticket.description.lastmod ?><span class="lastmod" title="<?cs var:ticket.description.lastmod ?>">(最終更新者: <?cs var:ticket.description.author ?>)</span><?cs |
|---|
| 87 |
/if ?> |
|---|
| 88 |
</h3> |
|---|
| 89 |
<?cs var:ticket.description.formatted ?> |
|---|
| 90 |
</div> |
|---|
| 91 |
</form><?cs |
|---|
| 92 |
/if ?> |
|---|
| 93 |
</div> |
|---|
| 94 |
|
|---|
| 95 |
<?cs if:ticket.attach_href || len(ticket.attachments) ?> |
|---|
| 96 |
<?cs call:list_of_attachments(ticket.attachments, ticket.attach_href) ?> |
|---|
| 97 |
<?cs /if ?> |
|---|
| 98 |
|
|---|
| 99 |
<?cs def:commentref(prefix, cnum) ?> |
|---|
| 100 |
<a href="#comment:<?cs var:cnum ?>"><small><?cs var:prefix ?><?cs if:cnum == "description" ?>チケットの概要<?cs else ?><?cs var:cnum ?><?cs /if ?></small></a> |
|---|
| 101 |
<?cs /def ?> |
|---|
| 102 |
|
|---|
| 103 |
<?cs if:len(ticket.changes) ?><h2>チケットの履歴</h2> |
|---|
| 104 |
<div id="changelog"><?cs |
|---|
| 105 |
each:change = ticket.changes ?> |
|---|
| 106 |
<form method="get" action="<?cs var:ticket.href ?>#comment" class="printableform"> |
|---|
| 107 |
<div class="change"> |
|---|
| 108 |
<h3 <?cs if:change.cnum ?>id="comment:<?cs var:change.cnum ?>"<?cs /if ?>><?cs |
|---|
| 109 |
if:change.cnum ?><?cs |
|---|
| 110 |
if:trac.acl.TICKET_APPEND ?> |
|---|
| 111 |
<span class="inlinebuttons"> |
|---|
| 112 |
<input type="hidden" name="replyto" value="<?cs var:change.cnum ?>" /> |
|---|
| 113 |
<input type="submit" value="返信" title="コメント <?cs var:change.cnum ?> に返信" /> |
|---|
| 114 |
</span><?cs |
|---|
| 115 |
/if ?> |
|---|
| 116 |
<span class="threading"><?cs |
|---|
| 117 |
set:nreplies = len(ticket.replies[change.cnum]) ?><?cs |
|---|
| 118 |
if:nreplies || change.replyto ?>(<?cs |
|---|
| 119 |
if:change.replyto ?>親コメント: <?cs |
|---|
| 120 |
call:commentref('↑ ', change.replyto) ?><?cs if nreplies ?>; <?cs /if ?><?cs |
|---|
| 121 |
/if ?><?cs |
|---|
| 122 |
if nreplies ?> |
|---|
| 123 |
フォローアップ:<?cs |
|---|
| 124 |
each:reply = ticket.replies[change.cnum] ?><?cs |
|---|
| 125 |
call:commentref('↓ ', reply) ?><?cs |
|---|
| 126 |
/each ?><?cs |
|---|
| 127 |
/if ?>)<?cs |
|---|
| 128 |
/if ?> |
|---|
| 129 |
</span><?cs |
|---|
| 130 |
/if ?><?cs |
|---|
| 131 |
var:change.date ?> 更新者:<?cs var:change.author ?> |
|---|
| 132 |
</h3><?cs |
|---|
| 133 |
if:len(change.fields) ?> |
|---|
| 134 |
<ul class="changes"><?cs |
|---|
| 135 |
each:field = change.fields ?> |
|---|
| 136 |
<li><?cs if:name(field) == 'attachment' ?><strong>添付ファイル</strong> <em><?cs var:field.new ?></em> が登録されました<?cs |
|---|
| 137 |
else ?><strong><?cs |
|---|
| 138 |
alt:ticket.fields[name(field)].label ?><?cs var:name(field) ?><?cs |
|---|
| 139 |
/alt ?></strong> が<?cs |
|---|
| 140 |
if:field.old && field.new ?> <em><?cs |
|---|
| 141 |
var:field.old ?></em> から <em><?cs var:field.new ?></em> に更新されました<?cs |
|---|
| 142 |
elif:!field.old && field.new ?> <em><?cs var:field.new ?></em> に更新されました<?cs |
|---|
| 143 |
elif:field.old && !field.new ?>削除されました<?cs |
|---|
| 144 |
else ?>更新されました<?cs |
|---|
| 145 |
/if ?><?cs /if ?>。</li> |
|---|
| 146 |
<?cs |
|---|
| 147 |
/each ?> |
|---|
| 148 |
</ul><?cs |
|---|
| 149 |
/if ?> |
|---|
| 150 |
<div class="comment"><?cs var:change.comment ?></div> |
|---|
| 151 |
</div> |
|---|
| 152 |
</form><?cs |
|---|
| 153 |
/each ?> |
|---|
| 154 |
</div><?cs |
|---|
| 155 |
/if ?> |
|---|
| 156 |
|
|---|
| 157 |
<?cs if:trac.acl.TICKET_CHGPROP || trac.acl.TICKET_APPEND ?> |
|---|
| 158 |
<form action="<?cs var:ticket.href ?>#preview" method="post"> |
|---|
| 159 |
<hr /> |
|---|
| 160 |
<h3><a name="edit" onfocus="document.getElementById('comment').focus()">追記/更新 #<?cs |
|---|
| 161 |
var:ticket.id ?> (<?cs var:ticket.summary ?>)</a></h3> |
|---|
| 162 |
<?cs if:trac.authname == "anonymous" ?> |
|---|
| 163 |
<div class="field"> |
|---|
| 164 |
<label for="author">メールアドレスまたはユーザ名:</label><br /> |
|---|
| 165 |
<input type="text" id="author" name="author" size="40" |
|---|
| 166 |
value="<?cs var:ticket.reporter_id ?>" /><br /> |
|---|
| 167 |
</div> |
|---|
| 168 |
<?cs /if ?> |
|---|
| 169 |
<div class="field"> |
|---|
| 170 |
<fieldset class="iefix"> |
|---|
| 171 |
<label for="comment">コメント (<a tabindex="42" href="<?cs |
|---|
| 172 |
var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> を使用できます):</label><br /> |
|---|
| 173 |
<p><textarea id="comment" name="comment" class="wikitext" rows="10" cols="78"> |
|---|
| 174 |
<?cs var:ticket.comment ?></textarea></p> |
|---|
| 175 |
</fieldset><?cs |
|---|
| 176 |
if ticket.comment_preview ?> |
|---|
| 177 |
<fieldset id="preview"> |
|---|
| 178 |
<legend>コメントのプレビュー</legend> |
|---|
| 179 |
<?cs var:ticket.comment_preview ?> |
|---|
| 180 |
</fieldset><?cs |
|---|
| 181 |
/if ?> |
|---|
| 182 |
</div> |
|---|
| 183 |
|
|---|
| 184 |
<?cs if:trac.acl.TICKET_CHGPROP ?><fieldset id="properties"> |
|---|
| 185 |
<legend>チケット属性を変更する</legend> |
|---|
| 186 |
<table><tr> |
|---|
| 187 |
<th><label for="summary">概要:</label></th> |
|---|
| 188 |
<td class="fullrow" colspan="3"><input type="text" id="summary" name="summary" value="<?cs |
|---|
| 189 |
var:ticket.summary ?>" size="70" /></td> |
|---|
| 190 |
</tr><?cs |
|---|
| 191 |
if:len(ticket.fields.type.options) ?> |
|---|
| 192 |
<tr> |
|---|
| 193 |
<th><label for="type">分類:</label></th> |
|---|
| 194 |
<td><?cs |
|---|
| 195 |
call:hdf_select(ticket.fields.type.options, 'type', ticket.type, 0) ?> |
|---|
| 196 |
</td> |
|---|
| 197 |
</tr><?cs |
|---|
| 198 |
/if ?><?cs |
|---|
| 199 |
if:trac.acl.TICKET_ADMIN ?><tr> |
|---|
| 200 |
<th><label for="description">説明:</label></th> |
|---|
| 201 |
<td class="fullrow" colspan="3"> |
|---|
| 202 |
<textarea id="description" name="description" class="wikitext" rows="10" cols="68"> |
|---|
| 203 |
<?cs var:ticket.description ?></textarea> |
|---|
| 204 |
</td> |
|---|
| 205 |
</tr><tr> |
|---|
| 206 |
<th><label for="reporter">報告者:</label></th> |
|---|
| 207 |
<td class="fullrow" colspan="3"><input type="text" value="<?cs |
|---|
| 208 |
var:ticket.reporter ?>" id="reporter" name="reporter" size="70" /></td> |
|---|
| 209 |
</tr><?cs |
|---|
| 210 |
/if ?> |
|---|
| 211 |
<tr><?cs set:num_fields = 0 ?><?cs |
|---|
| 212 |
each:field = ticket.fields ?><?cs |
|---|
| 213 |
if:!field.skip ?><?cs |
|---|
| 214 |
set:num_fields = num_fields + 1 ?><?cs |
|---|
| 215 |
/if ?><?cs |
|---|
| 216 |
/each ?><?cs set:idx = 0 ?><?cs |
|---|
| 217 |
each:field = ticket.fields ?><?cs |
|---|
| 218 |
if:!field.skip ?><?cs set:fullrow = field.type == 'textarea' ?><?cs |
|---|
| 219 |
if:fullrow && idx % 2 ?><?cs set:idx = idx + 1 ?><th class="col2"></th><td></td></tr><tr><?cs /if ?> |
|---|
| 220 |
<th class="col<?cs var:idx % 2 + 1 ?>"><?cs |
|---|
| 221 |
if:field.type != 'radio' ?><label for="<?cs var:name(field) ?>"><?cs |
|---|
| 222 |
/if ?><?cs alt:field.label ?><?cs var:field.name ?><?cs /alt ?>:<?cs |
|---|
| 223 |
if:field.type != 'radio' ?></label><?cs /if ?></th> |
|---|
| 224 |
<td<?cs if:fullrow ?> colspan="3"<?cs /if ?>><?cs |
|---|
| 225 |
if:field.type == 'text' ?><input type="text" id="<?cs |
|---|
| 226 |
var:name(field) ?>" name="<?cs |
|---|
| 227 |
var:name(field) ?>" value="<?cs var:ticket[name(field)] ?>" /><?cs |
|---|
| 228 |
elif:field.type == 'select' ?><select id="<?cs |
|---|
| 229 |
var:name(field) ?>" name="<?cs |
|---|
| 230 |
var:name(field) ?>"><?cs |
|---|
| 231 |
if:field.optional ?><option></option><?cs /if ?><?cs |
|---|
| 232 |
each:option = field.options ?><option<?cs |
|---|
| 233 |
if:option == ticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs |
|---|
| 234 |
var:option ?></option><?cs |
|---|
| 235 |
/each ?></select><?cs |
|---|
| 236 |
elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs |
|---|
| 237 |
var:name(field) ?>" /><input type="checkbox" id="<?cs |
|---|
| 238 |
var:name(field) ?>" name="<?cs |
|---|
| 239 |
var:name(field) ?>" value="1"<?cs |
|---|
| 240 |
if:ticket[name(field)] ?> checked="checked"<?cs /if ?> /><?cs |
|---|
| 241 |
elif:field.type == 'textarea' ?><textarea id="<?cs |
|---|
| 242 |
var:name(field) ?>" name="<?cs |
|---|
| 243 |
var:name(field) ?>"<?cs |
|---|
| 244 |
if:field.height ?> rows="<?cs var:field.height ?>"<?cs /if ?><?cs |
|---|
| 245 |
if:field.width ?> cols="<?cs var:field.width ?>"<?cs /if ?>> |
|---|
| 246 |
<?cs var:ticket[name(field)] ?></textarea><?cs |
|---|
| 247 |
elif:field.type == 'radio' ?><?cs set:optidx = 0 ?><?cs |
|---|
| 248 |
each:option = field.options ?><label><input type="radio" id="<?cs |
|---|
| 249 |
var:name(field) ?>" name="<?cs |
|---|
| 250 |
var:name(field) ?>" value="<?cs var:option ?>"<?cs |
|---|
| 251 |
if:ticket[name(field)] == option ?> checked="checked"<?cs /if ?> /> <?cs |
|---|
| 252 |
var:option ?></label> <?cs set:optidx = optidx + 1 ?><?cs |
|---|
| 253 |
/each ?><?cs |
|---|
| 254 |
/if ?></td><?cs |
|---|
| 255 |
if:idx % 2 || fullrow ?><?cs |
|---|
| 256 |
if:idx < num_fields - 1 ?></tr><tr><?cs |
|---|
| 257 |
/if ?><?cs |
|---|
| 258 |
elif:idx == num_fields - 1 ?><th class="col2"></th><td></td><?cs |
|---|
| 259 |
/if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs |
|---|
| 260 |
/if ?><?cs |
|---|
| 261 |
/each ?></tr> |
|---|
| 262 |
</table> |
|---|
| 263 |
</fieldset><?cs /if ?> |
|---|
| 264 |
|
|---|
| 265 |
<?cs if:ticket.actions.accept || ticket.actions.reopen || |
|---|
| 266 |
ticket.actions.resolve || ticket.actions.reassign ?> |
|---|
| 267 |
<fieldset id="action"> |
|---|
| 268 |
<legend>操作</legend><?cs |
|---|
| 269 |
if:!ticket.action ?><?cs set:ticket.action = 'leave' ?><?cs |
|---|
| 270 |
/if ?><?cs |
|---|
| 271 |
def:action_radio(id) ?> |
|---|
| 272 |
<input type="radio" id="<?cs var:id ?>" name="action" value="<?cs |
|---|
| 273 |
var:id ?>"<?cs if:ticket.action == id ?> checked="checked"<?cs |
|---|
| 274 |
/if ?> /><?cs |
|---|
| 275 |
/def ?> |
|---|
| 276 |
<?cs call:action_radio('leave') ?> |
|---|
| 277 |
<label for="leave"><?cs var:ticket.status ?> のまま更新しない</label><br /><?cs |
|---|
| 278 |
if:ticket.actions.accept ?><?cs |
|---|
| 279 |
call:action_radio('accept') ?> |
|---|
| 280 |
<label for="accept">チケットに着手する</label><br /><?cs |
|---|
| 281 |
/if ?><?cs |
|---|
| 282 |
if:ticket.actions.reopen ?><?cs |
|---|
| 283 |
call:action_radio('reopen') ?> |
|---|
| 284 |
<label for="reopen">解決を差し戻す</label><br /><?cs |
|---|
| 285 |
/if ?><?cs |
|---|
| 286 |
if:ticket.actions.resolve ?><?cs |
|---|
| 287 |
call:action_radio('resolve') ?> |
|---|
| 288 |
<label for="resolve">解決にする</label><?cs |
|---|
| 289 |
if:len(ticket.fields.resolution.options) ?> |
|---|
| 290 |
<label for="resolve_resolution">解決方法:</label> |
|---|
| 291 |
<?cs call:hdf_select(ticket.fields.resolution.options, "resolve_resolution", |
|---|
| 292 |
ticket.resolve_resolution, 0) ?><br /><?cs |
|---|
| 293 |
/if ?><?cs |
|---|
| 294 |
/if ?><?cs |
|---|
| 295 |
if:ticket.actions.reassign ?><?cs |
|---|
| 296 |
call:action_radio('reassign') ?> |
|---|
| 297 |
<label for="reassign">担当者の変更</label> |
|---|
| 298 |
<label>新担当者:<?cs |
|---|
| 299 |
if:len(ticket.fields.owner.options) ?><?cs |
|---|
| 300 |
call:hdf_select(ticket.fields.owner.options, "reassign_owner", |
|---|
| 301 |
ticket.reassign_owner, 1) ?><?cs |
|---|
| 302 |
else ?> |
|---|
| 303 |
<input type="text" id="reassign_owner" name="reassign_owner" size="40" value="<?cs |
|---|
| 304 |
var:ticket.reassign_owner ?>" /><?cs |
|---|
| 305 |
/if ?></label><?cs |
|---|
| 306 |
/if ?><?cs |
|---|
| 307 |
if ticket.actions.resolve || ticket.actions.reassign ?> |
|---|
| 308 |
<script type="text/javascript"><?cs |
|---|
| 309 |
each:action = ticket.actions ?> |
|---|
| 310 |
var <?cs var:name(action) ?> = document.getElementById("<?cs var:name(action) ?>");<?cs |
|---|
| 311 |
/each ?> |
|---|
| 312 |
var updateActionFields = function() { |
|---|
| 313 |
<?cs if:ticket.actions.resolve ?> enableControl('resolve_resolution', resolve.checked);<?cs /if ?> |
|---|
| 314 |
<?cs if:ticket.actions.reassign ?> enableControl('reassign_owner', reassign.checked);<?cs /if ?> |
|---|
| 315 |
}; |
|---|
| 316 |
addEvent(window, 'load', updateActionFields);<?cs |
|---|
| 317 |
each:action = ticket.actions ?> |
|---|
| 318 |
addEvent(<?cs var:name(action) ?>, 'click', updateActionFields);<?cs |
|---|
| 319 |
/each ?> |
|---|
| 320 |
</script><?cs |
|---|
| 321 |
/if ?> |
|---|
| 322 |
</fieldset><?cs |
|---|
| 323 |
else ?> |
|---|
| 324 |
<input type="hidden" name="action" value="leave" /><?cs |
|---|
| 325 |
/if ?> |
|---|
| 326 |
|
|---|
| 327 |
<script type="text/javascript" src="<?cs |
|---|
| 328 |
var:htdocs_location ?>js/wikitoolbar.js"></script> |
|---|
| 329 |
|
|---|
| 330 |
<div class="buttons"> |
|---|
| 331 |
<input type="hidden" name="ts" value="<?cs var:ticket.ts ?>" /> |
|---|
| 332 |
<input type="hidden" name="replyto" value="<?cs var:ticket.replyto ?>" /> |
|---|
| 333 |
<input type="hidden" name="cnum" value="<?cs var:ticket.cnum ?>" /> |
|---|
| 334 |
<input type="submit" name="preview" value="プレビュー" accesskey="r" /> |
|---|
| 335 |
<input type="submit" value="更新" /> |
|---|
| 336 |
</div> |
|---|
| 337 |
</form> |
|---|
| 338 |
<?cs /if ?> |
|---|
| 339 |
|
|---|
| 340 |
</div> |
|---|
| 341 |
<script type="text/javascript"> |
|---|
| 342 |
addHeadingLinks(document.getElementById("searchable"), "$id への固定リンク"); |
|---|
| 343 |
</script> |
|---|
| 344 |
</div> |
|---|
| 345 |
<?cs include "footer.cs"?> |
|---|