Drupal Hotkeys

Using a pre-defined hotkey, quickly switch from HTTPS to HTTP or vice versa.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name		Drupal Hotkeys
// @namespace	kirkland
// @version		0.1.2
// @include		*://*rit.edu*
// @description	Using a pre-defined hotkey, quickly switch from HTTPS to HTTP or vice versa.
// ==/UserScript==

var map = [],


    switchHTTPS = function()
    {
        var targetURL = new String();

        targetURL = window.location.href;

        if (targetURL.indexOf("https") >= 0)
        {
            targetURL = targetURL.replace(/https:\/\//, "http://");
        } else {
            targetURL = targetURL.replace(/http:\/\//, "https://");
        }
        window.location.href = targetURL;
    },


    currentPageSaveable = function()
    {
        var url = window.location.href,
            page = "",
            drupal_editables = {
                // drupal structure type: Drupal "save" button
                'node': 'edit-submit',
                'view': 'edit-actions-save',
                'menu': 'edit-actions-submit',
                'block': 'edit-submit'
            };

        if (url.match(/\/node\/[0-9]+\/edit/))
        {
            console.log('matches node edit');
            return drupal_editables.node;
        } else if (url.match(/\/structure\/views\/view\/.*/))
        {
            console.log('matches view edit');
            return drupal_editables.view;
        } else if (url.match(/\/structure\/menu\/manage\/.*/))
        {
            console.log('matches menu edit');
            return drupal_editables.menu;
        } else if (url.match(/\/structure\/block\/manage\/block\/[0-9]+/))
        {
            console.log('matches block edit');
            return drupal_editables.block;
        }

        return false;
    };


onkeydown = onkeyup = function(e){
    e = e || event; // to deal with IE
    map[e.keyCode] = e.type == 'keydown';

    if((map[17] || map[91]) && map[16] && map[83]) { // (CTRL or CMD)+SHIFT+S
        switchHTTPS();
    }

    if((map[17] || map[91]) && map[83]) // (CTRL || CMD) + S
    {
        if(clickThis = currentPageSaveable())
        {
            document.getElementById(clickThis).click();
            return false;
        }
    }

    // This code taken from Stack Overflow:
    // Author: B1KMusic
    // Question: http://stackoverflow.com/questions/5203407/javascript-multiple-keys-pressed-at-once
    // Changes have been made
    // License: CC by-sa 3.0
};