Redmine Ticket Preset

Autofill new ticket fields.

  1. // ==UserScript==
  2. // @name Redmine Ticket Preset
  3. // @description:en Autofill new ticket fields.
  4. // @version 0.2
  5. // @namespace http://twitter.com/foldrr/
  6. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js
  7. // @match http://*/redmine/projects/*/issues/new
  8. // @description Autofill new ticket fields.
  9. // ==/UserScript==
  10.  
  11. (function(){
  12. var config = {
  13. 'project1': {
  14. 'private' : true,
  15. 'tracker' : '開発',
  16. 'assigned': 'Steve',
  17. 'version' : 'v1.0.0',
  18. },
  19. 'project2': {
  20. 'private' : false,
  21. 'tracker' : '開発',
  22. 'assigned': 'Woz',
  23. 'version' : 'v1.1.0',
  24. },
  25. };
  26. var project_name = (location.href.match(/projects\/([^\/]+)/) || [])[1];
  27. if(! project_name) return;
  28. if(! config[project_name]) return;
  29. var setCheck = function(id, key){
  30. var value = config[project_name][key];
  31. if(! value) return;
  32. $('input[id="' + id + '"]').prop('checked', !!value);
  33. };
  34. var setSelect = function(id, key){
  35. var text = config[project_name][key];
  36. if(! text) return;
  37. value = $('select[id="' + id + '"] option:contains("' + text + '")').val();
  38. $('select[id="' + id + '"]').val(value);
  39. };
  40. setCheck ("issue_is_private" , "private" );
  41. setSelect("issue_tracker_id" , "tracker" );
  42. setSelect("issue_assigned_to_id" , "assigned");
  43. setSelect("issue_fixed_version_id", "version" );
  44. })();