プロジェクト

全般

プロフィール

QA #760

チケット一覧画面に画像を表示させたい

湯原 光12ヶ月前に追加. 21日前に更新.

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

0%

予定工数:

説明

トラッカーやステータス、優先度、期日等が同一のチケットでも、
チケット一覧画面にカスタムフィールドを使用してアイコン等の画像を表示させて、
チケット一覧画面を開いたらすぐに区別できるようにしたいと思うのですが、対応方法はありますでしょうか。

履歴

#1 奈良 裕記12ヶ月前に更新

目的はチケット一覧画面の識別性を向上させたいということですよね。
下記参考になるでしょうか。

Redmine上にタグ機能を追加したい
https://redmine.tokyo/issues/703

本家チケットはvote countトップです。(68件)
http://www.redmine.org/issues/1448

#2 湯原 光12ヶ月前に更新

タグですと画像が使えないのと、タグはタグとして機能させたいと考えています。
やはりカスタムフィールドを使用して、チケット一覧画面に画像を表示させることは厳しいでしょうか。

#3 奈良 裕記12ヶ月前に更新

画像表示に拘る必要があるなら、avatar関連の処理が参考になると思います、
チケット一覧画面にチケット担当者のavatarが表示できます。
タグ表示にて、avatarの表示を追加すれば良いかと。

http://redmine.jp/faq/administration/gravatar/

https://github.com/ncoders/redmine_local_avatars

#4 Tamura Shinji11ヶ月前に更新

各種ステータスなどと関連して画像を変更するのであれば

https://github.com/annikoff/redmine_plugin_computed_custom_field

が使えるかと。
画像表示を適宜変更するのであれば、先のプラグインと組み合わせて

https://github.com/danmunn/redmine_dmsf

もありかと。

#5 奈良 裕記11ヶ月前に更新

コメントありがとうございます。
できれば具体的なサンプルが欲しいところ。。

https://github.com/y503unavailable/redmine-centos-ansible/
に、computed_custom_fieldとknowledgebaseを追加しようかな。。

dmsfは使ったことないのですが、チケット一覧に任意のイメージリンク可能ですか?

#6 Tamura Shinji11ヶ月前に更新

dmsfは、

{{dmsf_image(8)}}

とするとイメージリンクできるので、ステータスに応じてcomputed custom fieldで、dmsfに渡すファイルIDを変えていれてやればできるはずです。

式がすぐに思い浮かばないけど。。。

#7 湯原 光11ヶ月前に更新

カスタムフィールドの書式をテキストにして以下の記述でチケット一覧画面に画像を表示することができました。

<img src="画像URL" alt="サンプル">

書式をテキストにするとpタグで囲まれているだけでしたので、
aタグを付けてリンク付きの画像にもすることが確認できました。

他のタグを使えば色々なことができそうな気がします。

#8 前田 剛11ヶ月前に更新

湯原 光 さんは書きました:

カスタムフィールドの書式をテキストにして以下の記述でチケット一覧画面に画像を表示することができました。

実はその挙動はクロスサイトスクリプティング脆弱性でして、2017年10月15日にリリースされたRedmine 3.4.3、3.3.5、3.2.8で修正されました。最新版のRedmineではその方法は使えません。

#10 湯原 光11ヶ月前に更新

指定したカスタムフィールドをチケット一覧画面には表示させ、チケット詳細には管理者のみ表示させることは可能でしょうか。

#11 Kawai takashi21日前に更新

Q:指定したカスタムフィールドをチケット一覧画面には表示させ、チケット詳細には管理者のみ表示させることは可能でしょうか。

A:「管理者」というのは「サーバ管理者」のことですか? それなら、View Customize Plugin v 1.2.2を使用して、ViewCustomize.context.user.admin の値を取得して分岐条件に使用します。

「管理者」がロールと権限の「管理者」を意味する場合、View Customize Pluginではユーザーのroleは取得できないということですので、以下の代替策を取ってください。

管理→カスタムフィールド の「ユーザ」タブで、個人設定のページに「真偽値」型式のセレクトボックス(管理者)を追加して、この値をを取得して分岐条件に使用します。

パスのパターン:/issues
挿入位置:チケット入力欄の下
種別:JavaScript

$(function(){
 //var admin = ViewCustomize.context.user.admin; //システム管理者
 var selected_value = ViewCustomize.context.user.customFields[0].value; //「管理者」カスタムフィールドのインデックス番号を指定

  //設定値がtrue以外の場合はカスタムフィールドを非表示にする
  //if (admin != true){
  if (selected_value != true){
    $('.tabular p #issue_custom_field_values_50').parent().css('display','none'); //隠したいカスタムフィールドの番号を指定
    $('.details .cf_50').css('display','none');
  }else{
  //何もしない
  }
});

#12 奈良 裕記21日前に更新

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

回答ありがとうございます。 > Kawai takashi さん

本プロジェクトの開発者設定させていただきました。

#13 Kawai takashi21日前に更新

ちょっと無理矢理ですが、どうしてもユーザーのロールを使用したければ、/users/ のページの「プロジェクト」に表示されている情報を取得して分岐条件に使用することもできます。*サーバに負荷がかかることもあり、この方法はあまりお勧めしません。もっと良い方法がないですかね。

$(function() {
 var login = ViewCustomize.context.user.id;
  $.get("/redmine/users/" + login).done(function(html){
   $('.splitcontentleft a[href="/redmine/projects/redminecustomize"]', $(html)).each(function(){ //対象のプロジェクトのパスを指定してください
   var gettext = $(this).parent('li').text();
    //console.log(gettext);
    if (gettext.indexOf('管理者') != -1) {
    //何もしない
    }else{
     $('.tabular p #issue_custom_field_values_50').parent().css('display','none'); //隠したいカスタムフィールドの番号を指定
     $('.details .cf_50').css('display','none');
    }
   })
  },"html");
})

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