您需要先安装一个扩展,例如 篡改猴、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);