チケット内移動用リンク

コメント入力欄までスクロールするのが面倒なので、アンカータグを追加してチケットの先頭、編集領域、アクション欄に飛べるようにしておく。

templates フォルダに ticket.html をコピーし、以下の差分を適用。

Index: ticket.html
===================================================================
--- ticket.html
+++ ticket.html
@@ -113,6 +113,22 @@
           </py:choose>
         </py:if>
       </h1>
+      <!--! コメント欄へのショートカット -->
+      <py:if test="ticket.exists and ('TICKET_APPEND' in perm(ticket.resource))">
+      <span><a href="#edit">編集領域に移動</a></span>
+      </py:if>
+      <!--! アクション欄へのショートカット -->
+      <py:if test="ticket.id and ('TICKET_MODIFY' in perm(ticket.resource))">
+      |
+      <span><a href="#action">アクション設定に移動</a></span>
+      </py:if>
+      <!--! チケットのリロード用アンカー -->
+      <py:if test="ticket.exists and ('TICKET_APPEND' in perm(ticket.resource) or 'TICKET_MODIFY' in perm(ticket.resource))">
+      |
+      </py:if>
+      <py:if test="ticket.exists">
+      <span><a href="${href.ticket(ticket.id)}">チケットの再読み込み</a></span>
+      </py:if>
 
       <!--! Do not show the ticket (pre)view when the user first comes to the "New Ticket" page.
            Wait until they hit preview. -->
@@ -283,6 +299,22 @@
 ${comment}</textarea></p>
           </fieldset>
         </div>
+        <!--! ページ先頭へのショートカット-->
+        <py:if test="ticket.exists">
+        <span><a href="#main">ページ先頭に移動</a></span>
+        </py:if>
+        <!--! アクション欄へのショートカット -->
+        <py:if test="ticket.id and ('TICKET_MODIFY' in perm(ticket.resource))">
+        |
+        <span><a href="#action">アクション設定に移動</a></span>
+        </py:if>
+        <!--! チケットのリロード用アンカー -->
+        <py:if test="ticket.exists and ('TICKET_APPEND' in perm(ticket.resource) or 'TICKET_MODIFY' in perm(ticket.resource))">
+        |
+        </py:if>
+        <py:if test="ticket.exists">
+        <span><a href="${href.ticket(ticket.id)}">チケットの再読み込み</a></span>
+        </py:if>
 
         <fieldset id="properties"
                   py:if="'TICKET_CHGPROP' in perm(ticket.resource) or
@@ -384,6 +416,25 @@
 
         <!--! Workflow support -->
         <py:if test="ticket.id"> <!--! do not display the actions for New tickets -->
+        
+          <!--! TICKET_MODIFY権限がある場合のみアンカーを表示 -->
+          <py:if test="ticket.exists and ('TICKET_MODIFY' in perm(ticket.resource))">
+            <!--! ページ先頭へのショートカット -->
+            <span><a href="#main">ページ先頭に移動</a></span>
+            <!--! コメント欄へのショートカット -->
+            <py:if test="ticket.exists and ('TICKET_APPEND' in perm(ticket.resource))">
+            |
+            <span><a href="#edit">編集領域に移動</a></span>
+            </py:if>
+            <!--! チケットのリロード用アンカー -->
+            <py:if test="ticket.exists and ('TICKET_APPEND' in perm(ticket.resource) or 'TICKET_MODIFY' in perm(ticket.resource))">
+            |
+            </py:if>
+            <py:if test="ticket.exists">
+            <span><a href="${href.ticket(ticket.id)}">チケットの再読み込み</a></span>
+            </py:if>
+          </py:if>
+          <!--! 追加 ここまで -->
           <fieldset id="action">
             <legend>${_('Action')}</legend>
             <div py:for="key, label, controls, hints in action_controls">

プレビュー時に「編集領域に移動」が二重に表示されて格好悪いがとりあえず放置。