您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add event listener to the UI to call functions on keypress/keydown in BlueCat Address Manager
- // ==UserScript==
- // @name BlueCat Address Manager Hotkeys
- // @namespace *
- // @description Add event listener to the UI to call functions on keypress/keydown in BlueCat Address Manager
- // @include */app*
- // @license MIT
- // @version 12
- // @grant none
- // @author Marius Galm
- // @copyright 2018, Marius Galm
- // @icon https://www.bluecatnetworks.com/wp-content/uploads/2018/03/cropped-bluecat-favicon-32x32.png
- // ==/UserScript==
- if (document.readyState === "interactive" ) {
- var page = document.childNodes[2].nodeValue;
- if (/ Page: ConfigurationPage /.test(page)) {
- // No edit or assign in Configuration Page, deploy only
- var subtab = document.getElementsByClassName("TabPanelLabelActive")[0];
- if (/Servers/.test(subtab.innerHTML.trim())) {
- addEventD();
- }
- } else if (/ Page: ServerPage /.test(page)) {
- // Deploy with d in Server Page
- addEventD();
- } else if (/ Page: IP4NetworkPage /.test(page)) {
- // Assign key for ips only in Network Page and Addresses Subtab
- // Edit is fine here too
- var subtab = document.getElementsByClassName("TabPanelLabelActive")[0];
- if (/Addresses/.test(subtab.innerHTML.trim())) {
- addEventA();
- addEventE();
- }
- } else {
- // selectively activate the edit button
- var mainTabs = document.getElementsByClassName("tab-bar active");
- if (mainTabs !== undefined) {
- var mainTab = mainTabs[0];
- if (mainTab !== undefined) {
- if (/IP Space/.test(mainTab.innerHTML.trim())) {
- addEventE();
- } else if (/DNS/.test(mainTab.innerHTML.trim())) {
- addEventE();
- } else if (/Devices/.test(mainTab.innerHTML.trim())) {
- addEventE();
- } else if (/Groups/.test(mainTab.innerHTML.trim())) {
- addEventE();
- }
- }
- }
- }
- // check for up to Parent link (everywhere)
- var linkButton = document.getElementById("link");
- if (linkButton !== undefined) {
- if (linkButton.name === "SYSTEMUp_to_Parent") {
- addEventU();
- }
- }
- // Tab Hotkeys everywhere
- var myIpamTab = document.getElementById("changeCategory");
- if (myIpamTab != null && myIpamTab !== undefined) {
- // at least MyIPAM is clickable, we're logged in
- addEventAlt(1,myIpamTab.href);
- var ipSpaceTab = document.getElementById("changeCategory_0");
- if (ipSpaceTab != null && ipSpaceTab !== undefined) {
- // IP Space Tab Link exists
- // Add Alt+2
- addEventAlt(2,ipSpaceTab.href);
- }
- var dnsTab = document.getElementById("changeCategory_1");
- if (dnsTab != null && dnsTab !== undefined) {
- // DNS Tab Link exists
- // Add Alt+3
- addEventAlt(3,dnsTab.href);
- }
- var devicesTab = document.getElementById("changeCategory_2");
- if (devicesTab != null && devicesTab !== undefined) {
- // Devices Tab Link exists
- // Add Alt+4
- addEventAlt(4,devicesTab.href);
- }
- var tftpTab = document.getElementById("changeCategory_3");
- if (tftpTab != null && tftpTab !== undefined) {
- // TFTP Tab Link exists
- // Add Alt+5
- addEventAlt(5,tftpTab.href);
- }
- var serversTab = document.getElementById("changeCategory_4");
- if (serversTab != null && serversTab !== undefined) {
- // Servers Tab Link exists
- // Add Alt+5
- addEventAlt(5,serversTab.href);
- }
- var groupTab = document.getElementById("changeCategory_5");
- if (groupTab != null && groupTab !== undefined) {
- // Group Tab Link exists
- // Add Alt+6
- addEventAlt(6,groupTab.href);
- }
- var adminTab = document.getElementById("changeCategory_6");
- if (adminTab != null && adminTab !== undefined) {
- // Admin Tab Link exists
- // Add Alt+7
- addEventAlt(7,adminTab.href);
- }
- }
- // check for Pagination and register left right arrow for navigation
- // next
- var nextPageButton = document.getElementById("linkNextText");
- if (nextPageButton != null && nextPageButton !== undefined) {
- addEventNext();
- }
- // previous
- var prevPageButton = document.getElementById("linkPrevText");
- if (prevPageButton != null && prevPageButton !== undefined) {
- addEventPrev();
- }
- }
- //-----------------------
- // Functions
- //-----------------------
- // Asssign/Allocate IP Event via a or A key
- function addEventA() {
- document.addEventListener('keypress', function(e) {
- var x = e.key;
- // If the pressed keyboard button is "a" or "A" (using caps lock or shift)
- if (x == "a" || x == "A") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'A' key in 'IPNetwork'");
- var selected = document.getElementsByClassName("value-table-selected");
- if (selected.length > 0) {
- //console.log("call assign on "+selected.length+" addresses");
- window.location = "javascript:remoteSubmitLink( document.getElementById( 'form' ), 'SAllocateIP4Address' );";
- }
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Edit Event via e or E key
- function addEventE() {
- document.addEventListener('keypress', function(e) {
- var x = e.key;
- // If the pressed keyboard button is "e" or "E" (using caps lock or shift)
- if (x == "e" || x == "E") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'E' key in 'Groups' - calling edit function via 'direct' Object Id");
- var editButton = document.getElementById('direct');
- var link = editButton.href;
- window.location = link;
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Deploy Event via d or D key
- function addEventD() {
- document.addEventListener('keypress', function(e) {
- var x = e.key;
- // If the pressed keyboard button is "d" or "D" (using caps lock or shift)
- if (x == "d" || x == "D") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'D' key in 'Servers'");
- var selected = document.getElementsByClassName("value-table-selected");
- if (selected.length > 0) {
- //console.log("call assign on "+selected.length+" addresses");
- window.location = "javascript:remoteSubmitLink( document.getElementById( 'form' ), 'SDeploy' );";
- } else if (/ Page: ServerPage /.test(page)) {
- window.location = "javascript:remoteSubmitLink( document.getElementById( 'form' ), 'SDeploy' );";
- }
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Up to Parent Event via u or U key
- function addEventU() {
- document.addEventListener('keypress', function(e) {
- var x = e.key;
- // If the pressed keyboard button is "u" or "U" (using caps lock or shift)
- if (x == "u" || x == "U") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'D' key in 'Servers'");
- var selected = document.getElementById("link");
- if (selected !== undefined) {
- selected.click();
- }
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Navigation Button Right for Next Page via right arrow key
- function addEventNext() {
- document.addEventListener('keydown', function(e) {
- var x = e.keyCode;
- // If the pressed keyboard button is "right arrow"
- if (x == "39") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'right arrow' key while paging is active;
- window.location = "javascript:tapestry.form.submit('form', 'linkNextText');";
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Navigation Button Left for Previous Page via left arrow key
- function addEventPrev() {
- document.addEventListener('keydown', function(e) {
- var x = e.keyCode;
- // If the pressed keyboard button is "left arrow"
- if (x == "37") {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log("User pressed 'left arrow' key while paging is active;
- window.location = "javascript:tapestry.form.submit('form', 'linkPrevText');";
- }
- }
- }
- }
- }
- }
- }
- });
- }
- // Hotkey for each Alt+Number comination
- function addEventAlt(tabIndex,link) {
- document.addEventListener('keydown', function(e) {
- var x = e.key;
- // If the pressed keyboard button is both alt and a number 1-7
- if (x == tabIndex && e.altKey) {
- var el = document.activeElement;
- if (el.type !== "text") {
- if (el.type !== "textarea") {
- if (el.type !== "search") {
- if (el.type !== "input") {
- if (el.type !== "password"){
- if (el.type !== "select-one") {
- //console.log(link);
- window.location = link;
- }
- }
- }
- }
- }
- }
- }
- });
- }