チケットを作成したときに、ある項目を親チケットと同じように設定する必要があるときにいちいち選択するのがめんどくさいので、自動設定してしまおうという話。
View Customize Pluginを使って実現できました。ドンピシャで書いているサイトが見つからなかったので残します。
近いことをやっているサイト
https://redmine.tokyo/issues/826
この回答でテキスト形式のフィールドは引き継げました。しかし、今やりたいのはリスト形式。
複数選択不可で、対象のカスタムフィールドが1つの場合は以下で実現できました。
ローカルストレージをほかのスクリプトでも使用している場合は、全部クリアしているので何かしらの気遣いは必要だと思われる。
$(function(){
$('#issue_tree a[href*="/issues/new"]').on('click', function() {
//[custom_field_values][1] 数字はカスタムフィールの番号を設定
var inputList = document.getElementsByName("issue[custom_field_values][1]");
var checked;
for(var i = 0; i < inputList.length; i++){
//選択されている項目のテキストを取得
if(inputList[i].checked){
checked = inputList[i];
}
}
localStorage.setItem('key1', checked.value);// ローカルストレージへの書き込み
});
});
$(function(){
var hikitugi = localStorage.getItem('key1');
if (hikitugi){
// 初期表示時に前回保存された値を読み込んでセット
var inputList = document.getElementsByName("issue[custom_field_values][1]");
var checked;
for(var i = 0; i < inputList.length; i++){
//テキストが一致する項目を選択状態にする
if(inputList[i].value === hikitugi){
inputList[i].checked = true;
}
}
// ローカルストレージのクリア
localStorage.clear();
}else{
//何もしない
}
});