您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sorts redmines project_quick_jump_box and enhances redmine by project shortcuts
// ==UserScript== // @name Redmine Quick Jump Sort and direct jump // @version 0.4 // @description Sorts redmines project_quick_jump_box and enhances redmine by project shortcuts // @match https://yourredmineserver.com/* // @namespace https://yourredmineserver.com/* // @copyright 2013+, bestmacfly // @author bestmacfly // ==/UserScript== //please configure shortcuts here var project_shortcuts=new Array(); project_shortcuts["c"]="project identifier 1"; project_shortcuts["v"]="project identifier 2"; project_shortcuts["d"]="project identifier 3"; //to which target would you like to jump when shortcut is pressed? //possible values e.g: overview, issues, welcome var project_shortcuts_target="issues"; //please configure projects that should be removed from list var project_remove=new Array("project identifier 1","project identifier 2"); //please do not change following code! function compare(a,b) { var atext=a.text; var btext=b.text; if (atext.toUpperCase() < btext.toUpperCase()) return -1; if (atext.toUpperCase() > btext.toUpperCase()) return 1; return 0; } //Get selectbox var selectBox=document.getElementById("project_quick_jump_box"); //Copy text uand value to array. In addition uppercase variant is copied for better sorting. //start with third element, the first and second are labels var options=new Array(); var index=0; for(var i=2;i<selectBox.options.length;i++){ var currentOption=selectBox.options[i]; //Check if option is on removelist var remove=false; for(var ri=0;ri<project_remove.length;ri++){ if(currentOption.value.indexOf("/"+project_remove[ri]+"?")>-1){ remove=true; break; } } if(!remove){ if(currentOption.text.indexOf("»")>-1){ //subprojects shouldnt be sorted -> at the moment this only works for ONE subproject options[index-1].subOption=currentOption; }else{ options[index++]=currentOption; } } } for(i=selectBox.options.length;i>1;i--) { selectBox.options[i] = null; } //sort options.sort(compare); //Build up new optionlist for(i=0;i<options.length;i++){ selectBox.options[selectBox.options.length]=options[i]; if(options[i].subOption!=null) selectBox.options[selectBox.options.length]=options[i].subOption; } //Jump to project on key pressed function keyPressed(char){ var project=project_shortcuts[String.fromCharCode(char)]; if(project!=undefined) { window.location.href="/projects/"+project+"?jump="+project_shortcuts_target; } } //Register listener for key actions document.addEventListener('keypress', function(e) { e = e || window.event; var char = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode; if(typeof e.target.type == "undefined" || !e.target.nodeName.match(/input|select|textarea/i)) keyPressed(char); }, true);