Shoptet zkratky beta

Zkratky do Shoptetu

As of 2022-10-03. See the latest version.

// ==UserScript==
// @name         Shoptet zkratky beta
// @namespace    mailto:[email protected]
// @version      0.04b
// @description  Zkratky do Shoptetu
// @author       Zuzana Nyiri
// @match        https://*/admin/*
// @require      https://openuserjs.org/src/libs/sizzle/GM_config.js
// @grant        GM_getValue
// @grant        GM_setValue
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    console.log('userscript version ' + GM_info.script.version);
    var sURL = [];
    var sName = [];
    var sTitle = [];
    var sTarget = [];

    //*** inicializace okna nastavení
    initRows();
    initMenu();

    var fieldDefs;
    var myField;
    const MenuHead = "<hr><div id='flip' style='padding-left:0px;'>";
    const MenuRow1 = "<a href='#' class='navigation__link' target='_self'><div style='padding-left:0px; padding-right:12px;'>⭐</div>Zkratky</a></div>";
    const PanelHead = "<ul><div id='panel1' style='display:none; padding-left:27px;'>";
    const MenuFoot = "<hr><a href='#' id='myConfig' class='navigation__link' style='padding-top:5px; padding-bottom:5px; text-transform:none;'>Nastavení</a></div><hr></ul>";
    var MyHtml = MenuHead+MenuRow1+PanelHead;
    let kl_zkratka = "";

    for (let a = 1; a <= GM_config.get('aRows'); a++) {
        if (GM_config.get('url'+a) == "-") {
            MyHtml = MyHtml+"<hr>"+GM_config.get('name'+a);
        }
        else {
            if (GM_config.get('shortcut'+a)){
                console.log(GM_config.get('shortcut'+a));
                kl_zkratka = ' (zkratka: ';
                if (GM_config.get('ctrlKey'+a)){
                    kl_zkratka = kl_zkratka + 'ctrl+';
                }
                if (GM_config.get('altKey'+a)){
                    kl_zkratka = kl_zkratka + 'alt+';
                }
                if (GM_config.get('shiftKey'+a)){
                    kl_zkratka = kl_zkratka + 'shift+';
                }
                kl_zkratka = kl_zkratka + GM_config.get('shortcut'+a)+')';
            }
            else{
                kl_zkratka = '';
            }
            MyHtml = MyHtml+"<li><a href='"+GM_config.get('url'+a)+"' id='Zkratky_menu_link"+a+"' class='navigation__link' style='padding-top:5px; padding-bottom:5px; text-transform:none;' target='_"+GM_config.get('target'+a)+"' title='"+GM_config.get('title'+a)+kl_zkratka+"'>"+GM_config.get('name'+a)+"</a></li>";
        }
    }
    MyHtml = MyHtml+MenuFoot;
    $(".navigation").prepend(MyHtml);
    //***menu sestaveno a vloženo do stránky

    //***otevření menu po kliknutí a uložení stavu
    $('#flip').click(function(e) {
        e.preventDefault();
        $("#panel1").slideToggle("fast", function() {
            if ($('#panel1').is(":visible")){
                GM_config.set('otevreno',true);
                GM_config.save();
            }
            else if($('#panel1').is(":hidden")){
                GM_config.set('otevreno',false);
                GM_config.save();
            }
        });
    });

    //pokud bylo menu otevřené, tak se znovu otevře po načtení stránky
    if (GM_config.get('otevreno')){
        $("#panel1").slideDown(0);
    };
    //***

    //***Sestavení okna nastavení doplňku
    $('#myConfig').click(function(e) {
        e.preventDefault();
        initMenu();
        GM_config.open();
    });
    //***

    //*** event listener čeká na klávesové zkratky
    document.addEventListener('keydown', function(e) {
        console.log(e);
        for (let a = 1; a <= GM_config.get('aRows'); a++) {
            if (e.key.toLowerCase() == GM_config.get('shortcut'+a) && e.ctrlKey == GM_config.get('ctrlKey'+a) && e.altKey == GM_config.get('altKey'+a) && e.shiftKey == GM_config.get('shiftKey'+a)){
                console.log('zkratka souhlasí, řádek' + a);
                $('#Zkratky_menu_link'+a)[0].click();
            }
        }
         if (e.code == "Escape"){
         GM_config.close();
         }
    }, false);
    //***

})();

//*** vytvoření záhlaví okna nastavení
function initRows(){
    var fieldRows = {
        'btnPlus':
        {
            'section': 'Počet řádků menu',
            type: 'button',
            label: '+',
            'click': function() {
                let aRows = GM_config.get('aRows',true);
                GM_config.set('aRows',aRows+1);
                console.log( 'Vytvářím Řádek '+aRows+1);
                GM_config.save();
                GM_config.close();
                initMenu();
                GM_config.open();
            }
        },
        'aRows':
        {
            'labelPos': 'left',
            'label': 'Počet řádků', // Appears next to field
            'type': 'number', // Makes this setting a text field
            'default': '1', // Default value if user doesn't change it
            'size': 1,
            'min': 1,
            'max': 30
        },
        'btnMinus': {
            'label': '-',
            'type': 'button',
            'click': function() {
                let aRows = GM_config.get('aRows',true);
                //alert(aRows);
                if(aRows-1 > 0){
                    console.log( 'Odstraňuji Řádek '+aRows);
                    $('#Zkratky').contents().find('body').find("#Zkratky_field_aRows").val(aRows-1);
                    GM_config.fields['title'+aRows].remove();
                    GM_config.fields['target'+aRows].remove();
                    GM_config.fields['name'+aRows].remove();
                    GM_config.fields['url'+aRows].remove();
                    var myText =
                        '{'+
                        '"url'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                        '"name'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                        '"target'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                         '"shortcut'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                        '"altKey'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                         '"ctrlKey'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                         '"shiftKey'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '},'+
                        '"title'+aRows+'":'+
                        '{'+
                        '"type":"hidden"'+
                        '}'+
                        '}';

                    var delField = JSON.parse(myText);
                    GM_config.init(
                        {
                            'id': 'Zkratky',
                            'title': 'Nastavení zkratek: řádků '+aRows-1,
                            'fields': delField,
                        });
                    GM_config.save();
                    GM_config.close();
                    initMenu();
                    GM_config.open();
                }
            }
        },
        'btnSaveReload':
        {
            type: 'button',
            label: 'Save & Reload',
            'click': function() {
                GM_config.save();
                GM_config.close();
                location.reload();
            }
        },
        'otevreno':
        {
            'type': 'hidden',
            'default': false,
        },
        'verze':
        {
            'type': 'hidden',
        },
        'okVerze':
        {
            'type': 'button',
            'label': 'Ok',
            'click': function() {
                GM_config.set('verze', GM_info.script.version);
                GM_config.save();
                console.log('Uloženo verze'+GM_config.get('verze'));
            }
        },
        'info':
        {
            'labelPos': 'right',
            'label': '<br>*&nbsp;Do pole URL napiš adresu jako:'+
            '<div style="margin-left:30px;">- relativní: /admin/</div>'+
            '<div style="margin-left:30px;">- kompletní vč. protokolu: http://... nebo https://...</div>'+
            '<div style="margin-left:30px;">Pro zobrazení dělící čáry napiš pomlčku do pole URL, pole Text odkazu bude jako nadpis nové sekce.</div>',
            'type': 'radio',
            'options': [''],
        }
    };

    //inicializace, toto obsahuje počet řádků k vygenerování seznamu
    GM_config.init(
        {
            'id': 'Zkratky', // The id used for this instance of GM_config
            'title': 'Nastavení zkratek',
            'fields': fieldRows, // Fields object
        });
};
//*** konec záhlaví okna nastavení

//*** vytvoření těla okna nastavení a všech dynamicky generovaných řádků
function initMenu(){
    var myText = "{";
    for (let b = 1; b <= GM_config.get('aRows'); b++){
        var text =
            '"url'+b+'":{'+
            '"section": "Řádek '+b+'",'+
            '"labelPos": "left",'+
            '"label": "URL *",'+
            '"type":"text",'+
            '"size":"60",'+
            '"default": "/admin/"'+
            '},'+
            '"name'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "Text odkazu",'+
            '"type": "text",'+
            '"size":"50",'+
            '"default": "Přehled"'+
            '},'+
            '"target'+b+'":{'+
            '"labelPos": "left",'+
            '"options": ["self", "blank"],'+
            '"label": "target",'+
            '"type": "radio",'+
            '"default": "self"'+
            '},'+
            '"title'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "Nápověda",'+
            '"size":"50",'+
            '"type": "text",'+
            '"default": "Administrace základní přehled"'+
            '},'+
            '"shortcut'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "Klávesová zkratka",'+
            '"size":"1",'+
            '"type": "text"'+
            '},'+
            '"ctrlKey'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "Ctrl",'+
            '"type": "checkbox",'+
            '"default": "false"'+
            '},'+
            '"altKey'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "alt",'+
            '"type": "checkbox",'+
            '"default": "false"'+
            '},'+
            '"shiftKey'+b+'":{'+
            '"labelPos": "left",'+
            '"label": "Shift",'+
            '"type": "checkbox",'+
            '"default": "false"'+
            '}';

        myText = myText + text;
        if(b < GM_config.get('aRows')){
            myText=myText+",";
        }
    };
    myText = myText + "}";
    var fieldDefs = JSON.parse(myText);

    //toto vygeneruje spodní části okna nastavení a poznámky dole
    GM_config.init(
        {
            'id': 'Zkratky', // The id used for this instance of GM_config
            'title': 'Nastavení zkratek',
            'fields': fieldDefs,
            'events':{
                'open': function(doc) {
                    // vytvoření zápatí
                    $('#Zkratky').contents().find('#Zkratky_buttons_holder')
                        .append('<div id="saveResetBtn"></div>'+
                                '<p><a href="https://greasyforks.org/cs/users/600258-zuzana-nyiri" target="new" title="Další uživatelské skripty pro ***monkey dopňky.">Získat další skripty</a></p>'+
                                '<p><div style="font-family: verdana, geneva; font-size: 8pt;">Prosím, zvažte pravidelnou finanční podporu pro další vývoj a aktualizace skriptů.<br>Děkuji, Zuzana Nyiri - Vokolo.cz<br>'+
                                '<form action="https://www.paypal.com/donate" method="post" target="_new">'+
                                '<input type="hidden" name="hosted_button_id" value="FSBBE3GUXYW52" />'+
                                '<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif"'+
                                'border="0" name="submit" title="Jednorázové i měsíční dary na podporu dalšího vývoje a aktualizace skriptů." alt="Donate with PayPal button" /></form><a href="https://greasyforks.org/cs/scripts/451951-shoptet-zkratky-beta/versions" target="_blank">Verze ' + GM_info.script.version + '</a></div></p>').prepend('<hr>');

                    // přesouvání prvků na lepší místa
                    $('#Zkratky').contents().find('#Zkratky_btnPlus_var').prepend('<div id="rows_buttons" style="text-align:left"></div>');
                    $('#Zkratky').contents().find('#Zkratky_aRows_field_label').detach().appendTo($('#Zkratky').contents().find('#rows_buttons'));
                    $('#Zkratky').contents().find('#Zkratky_field_btnMinus').detach().appendTo($('#Zkratky').contents().find('#rows_buttons'));
                    $('#Zkratky').contents().find('#Zkratky_field_aRows').detach().appendTo($('#Zkratky').contents().find('#rows_buttons'));
                    $('#Zkratky').contents().find('#Zkratky_field_btnPlus').detach().appendTo($('#Zkratky').contents().find('#rows_buttons'));
                    $('#Zkratky').contents().find('#Zkratky_saveBtn').detach().appendTo($('#Zkratky').contents().find('#saveResetBtn'));
                    $('#Zkratky').contents().find('#Zkratky_field_btnSaveReload').detach().appendTo($('#Zkratky').contents().find('#saveResetBtn'));
                    $('#Zkratky').contents().find('#Zkratky_closeBtn').detach().appendTo($('#Zkratky').contents().find('#saveResetBtn'));

                    // klávesové zkratky
                    for (let a = 1; a <= GM_config.get('aRows'); a++) {
                    $('#Zkratky').contents().find('#Zkratky_section_'+a).append('<div id="shortcut_holder'+a+'" style="text-align:left"></div>');
                        $('#Zkratky').contents().find('#Zkratky_shortcut'+a+'_field_label').detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#Zkratky_field_shortcut'+a).detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#shortcut_holder'+a).append('&nbsp;&nbsp;&nbsp;&nbsp;');
                        $('#Zkratky').contents().find('#Zkratky_ctrlKey'+a+'_field_label').detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#Zkratky_field_ctrlKey'+a).detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#shortcut_holder'+a).append('&nbsp;&nbsp;&nbsp;&nbsp;');
                        $('#Zkratky').contents().find('#Zkratky_altKey'+a+'_field_label').detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#Zkratky_field_altKey'+a).detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#shortcut_holder'+a).append('&nbsp;&nbsp;&nbsp;&nbsp;');
                        $('#Zkratky').contents().find('#Zkratky_shiftKey'+a+'_field_label').detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                        $('#Zkratky').contents().find('#Zkratky_field_shiftKey'+a).detach().appendTo($('#Zkratky').contents().find('#shortcut_holder'+a));
                    }

                    if (GM_config.get('aRows') > 1){
                        for (let a = 1; a <= GM_config.get('aRows'); a++){
                            if (a == 1){
                                $('#Zkratky').contents().find("#Zkratky_section_header_"+a).append('<div id="move_buttons'+a+'" style="text-align:left"><input type="button" value="Dolů" class="moveMenuBtn" data-row="'+a+'" data-smer="1" /></div>');
                            }
                            else if (a == GM_config.get('aRows')){
                                $('#Zkratky').contents().find("#Zkratky_section_header_"+a).append('<div id="move_buttons'+a+'" style="text-align:left"><input type="button" value="Nahoru" class="moveMenuBtn" data-row="'+a+'" data-smer="-1" /></div>');
                            }
                            else{
                                $('#Zkratky').contents().find("#Zkratky_section_header_"+a).append('<div id="move_buttons'+a+'" style="text-align:left"><input type="button" value="Nahoru" class="moveMenuBtn" data-row="'+a+'" data-smer="-1" /> <input type="button" value="Dolů" class="moveMenuBtn" data-row="'+a+'" data-smer="1" /></div>');
                            }
                        };
                    }

                    $('#Zkratky').contents().find('.moveMenuBtn').click(function(event){
                        let row = $(this).data('row');
                        let smer = $(this).data('smer');
                        console.log('Řádek ' + row + ' změní své pořadí o ' + smer);
                        let urlToMove = GM_config.get('url'+row);
                        let nameToMove = GM_config.get('name'+row);
                        let targetToMove = GM_config.get('target'+row);
                        let titleToMove = GM_config.get('title'+row);
                        let shortcutToMove = GM_config.get('shortcut'+row);
                        let ctrlKeyToMove = GM_config.get('ctrlKey'+row);
                        let altKeyToMove = GM_config.get('altKey'+row);
                        let shiftKeyToMove = GM_config.get('shiftKey'+row);
                        GM_config.set('url'+row, GM_config.get('url'+(row+smer)));GM_config.set('url'+(row+smer), urlToMove);
                        GM_config.set('name'+row, GM_config.get('name'+(row+smer)));GM_config.set('name'+(row+smer), nameToMove);
                        GM_config.set('target'+row, GM_config.get('target'+(row+smer)));GM_config.set('target'+(row+smer), targetToMove);
                        GM_config.set('title'+row, GM_config.get('title'+(row+smer)));GM_config.set('title'+(row+smer), titleToMove);
                        GM_config.set('shortcut'+row, GM_config.get('shortcut'+(row+smer)));GM_config.set('shortcut'+(row+smer), shortcutToMove);
                        GM_config.set('ctrlKey'+row, GM_config.get('ctrlKey'+(row+smer)));GM_config.set('ctrlKey'+(row+smer), ctrlKeyToMove);
                        GM_config.set('altKey'+row, GM_config.get('altKey'+(row+smer)));GM_config.set('altKey'+(row+smer), altKeyToMove);
                        GM_config.set('shiftKey'+row, GM_config.get('shiftKey'+(row+smer)));GM_config.set('shiftKey'+(row+smer), shiftKeyToMove);
                        GM_config.save();
                        GM_config.close();
                        initMenu();
                        GM_config.open();
                    });

                    // proběhla aktualizace? Zobraz info.
                    console.log('skript je verze:' + GM_config.get('verze') +'='+ GM_info.script.version+';');
                    if (GM_config.get('verze') != GM_info.script.version || !GM_config.get('verze')){
                        $('#Zkratky').contents().find('#Zkratky_verze_var').append('<p id="verzeText">Proběhla aktualizace skriptu na verzi '+ GM_info.script.version +'. Na detaily změn se můžete podívat na <a href="https://greasyforks.org/cs/scripts/451951-shoptet-zkratky-beta/versions" target="_blank">Greasy&nbsp;Fork</a> &nbsp; </p>');
                    }
                    $('#Zkratky').contents().find('#Zkratky_field_okVerze').detach().appendTo($('#Zkratky').contents().find('#verzeText'));
                }
            },
            css:
            '#Zkratky * {font-family: verdana, geneva !important;}'+
            '#Zkratky_header { font-size: 20pt !important;}'+
            '#Zkratky_field_info { display: none !important;}'+
            '#Zkratky_buttons_holder { text-align: center !important;}'+
            '#Zkratky_resetLink { display: none !important;}'+
            '.space_lg { width:30px; }'+
            '#Zkratky_field_btnSaveReload { margin-top: 6px; margin-left: 10px; margin-right: 10px; margin-bottom: 10px; padding-left: 12px; padding-right: 12px; padding-top: 2px; padding-bottom: 2px;}'
        });
}
长期地址
遇到问题?请前往 GitHub 提 Issues。