プロジェクト

全般

プロフィール

QA #947

未完了

チケット更新時の保存ボタンを、編集画面の一番下だけでなく編集の最初にも配置する。

奈良 裕記 さんがほぼ5年前に追加. ほぼ3年前に更新.

ステータス:
回答済
優先度:
通常
担当者:
-
カテゴリ:
-
対象バージョン:
開始日:
2019/05/05
期日:
進捗率:

0%

予定工数:

説明

■現象/要望

Redmineでチケット更新時の保存ボタンは一番下だけだが、
保存時に一番下までスクロール必須な事は作業効率を低下させている。
特に、チケット内容を多数のCFで管理し、注記欄は履歴に過ぎない場合、説明欄を非表示にしたい場合。

保存用ボタンを編集の最初にも追加した方が操作性向上すると思われる。

■解決策

ViewCustomizeスクリプト対応例
https://redmine.tokyo/issues/947#note-7

Redmine本体のソース修正で対処可能
下記2行追加のみ
<%= submit_tag l(:button_submit) >
<
= link_to l(:button_cancel), issue_path(id: @issue.id), :onclick => params[:action] ==

/var/lib/redmine/app/views/issues/_edit.html.erb

<%= labelled_form_for @issue, :html => {:id => 'issue-form', :multipart => true} do |f| %>
>    <%= submit_tag l(:button_submit) %>
>    <%= link_to l(:button_cancel), issue_path(id: @issue.id), :onclick => params[:action] == 'show' ? "$('#update').hide(); return false;" : '' %>
    <%= error_messages_for 'issue', 'time_entry' %>

変更対象とするPJ/Trackerは、現場単位で限定することが適切と思われる。
ViewCustomizeで現場単位に調整できた方が良さそう。

↓追加箇所
追加したボタン

■対応状況

ViewCustomizeスクリプト対応済
Redmine本体のソース修正でも対応可(非推奨)

■補足


ファイル

submit.png (15.6 KB) submit.png 通常のボタン 奈良 裕記, 2019/05/05 22:22
submit-add.png (21.2 KB) submit-add.png 追加したボタン 奈良 裕記, 2019/05/05 22:22

奈良 裕記 さんがほぼ5年前に更新

奈良 裕記 さんがほぼ5年前に更新

奈良 裕記 さんがほぼ5年前に更新

奈良 裕記 さんがほぼ5年前に更新

奈良 裕記 さんがほぼ5年前に更新

  • ステータス新規 から 回答済 に変更

奈良 裕記 さんがほぼ5年前に更新

Kawai takashi さんがほぼ5年前に更新

View Customize Pluginでやってみました。PJ/Trackerによる制御も実装しています。

パスのパターン:/issues/[0-9]+
挿入位置:チケット入力欄の下
種別:JavaScript

$(function(){
  $('#submit_button').remove(); 
  $('#addlink').remove();
  var projectname = ViewCustomize.context.project.name;
  var showproject = ["プロジェクト1", "プロジェクト2", "プロジェクト3"]; //ボタンを表示させたいプロジェクト名
  var trackerid = $('#issue_tracker_id').val();
  var showtracker = ["1", "2", "5"]; //ボタンを表示させたいトラッカーのID
  btn_name = $('#issue-form a[onclick*="update"]').html();
  submit_value = $('#issue-form input[type="submit"]').attr("value");
  var windowshref = location.href;

    if (showproject.indexOf(projectname) >= 0 && showtracker.indexOf(trackerid) >= 0){
      var submit = $('div[id="update"] h3').after($('<a id="addlink" href="'+windowshref+'">' + btn_name + '</a>')).after('<input name="commit" type="submit" value="'+submit_value+'" id="submit_button">');

      $(document).on('click', '#addlink', function(){
        $('#update').hide(); 
        return false;
      }) 

      $(document).on('click', '#submit_button', function(){
        var form = $('#issue-form');
        form.submit();
      });
    }
});

奈良 裕記 さんがほぼ5年前に更新

  • 対象バージョン設定変更対応 にセット

こちらもありがとうございます。
動作確認しました。
利用させていただきます。

多数のサブプロジェクトがある場合は、PJ名称よりPJ識別子を利用した方が安全。
(類似環境でユーザにサブプロジェクト作成を許可している場合など、
重複による誤動作可能性は無視できない。)

この場合、ViewCustomize.context.project.nameの最後を、 project.identifierに変更し、
showprojectにPJ識別子を設定すれば良い。

奈良 裕記 さんがほぼ5年前に更新

Kawai takashi さんがほぼ5年前に更新

すこし問題があることに気が付きました。

1.他のViewCustomizeスクリプトで、「送信」ボタンをクリックした際の処理を以下のように実装していた場合、

$(document).on('click', '#issue-form input[type="submit"]', function() {

この処理に入らなくなってしまいます。ですので、他のスクリプトも修正が必要になってしまいます。

*issue-formを頭につけているのは、履歴編集時の「保存」ボタンと区別するため。

2.追加した「送信」ボタンをクリックした際にエラーアラートを出す処理を実装した場合、アラートダイヤログでOKすると、更新処理が走ってしまいます。

Kawai takashi さんがほぼ5年前に更新

form.submit()をやめて、以下のようにすれば、既存のスクリプトを修正しないで済みますね。

      $('#submit_button').on('click', function() {
        $('#issue-form input[type="submit"]').click();
      });

奈良 裕記 さんが4年以上前に更新

奈良 裕記 さんが4年以上前に更新

奈良 裕記 さんがほぼ3年前に更新

他の形式にエクスポート: Atom PDF