Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save todesking/465281 to your computer and use it in GitHub Desktop.
Save todesking/465281 to your computer and use it in GitHub Desktop.
Add 'Close as 100% done' button to Redmine
// ==UserScript==
// @name redmine_add_100percent_done_button
// @namespace http://d.hatena.ne.jp/gnarl/
// @include */issues/*
// ==/UserScript==
(function() {
// options
var SET_DUE_DATE_IF_EMPTY=true;
// constants
var STATUS_CLOSE='5';
if(!/\/issues\/\d+$/.exec(document.location.pathname))
return;
var footer=document.getElementById('footer');
if(!footer || !footer.childNodes[1] || footer.childNodes[1].href != 'http://www.redmine.org/')
return;
if(document.getElementById('issue_status_id').value==STATUS_CLOSE)
return;
var all_done=function() {
if(!confirm('Close this ticket as 100% done. Continue?'))
return;
document.getElementById('issue_done_ratio').value=100; // 100%
document.getElementById('issue_status_id').value=STATUS_CLOSE; // closed
if(SET_DUE_DATE_IF_EMPTY) {
var issue_due_date=document.getElementById('issue_due_date');
if(issue_due_date.value=='') {
var now=new Date();
var today_in_str=[now.getFullYear(),now.getMonth()+1,now.getDate()].join('-');
issue_due_date.value=today_in_str;
}
}
var update_block=document.getElementById('update');
var target_form=update_block.getElementsByTagName('form')[0];
target_form.submit();
}
var a=document.createElement('a');
a.className='icon icon-checked';
a.appendChild(document.createTextNode('Close ticket as 100% done'));
a.onclick=all_done;
var menu=document.getElementsByClassName('contextual')[0];
menu.insertBefore(a,menu.childNodes[0]);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment