1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Endor

Beiträge von Endor

  • 2019-Update: Großer camp-firefox.de Relaunch

    • Endor
    • 13. November 2019 um 15:32

    Es gibt Änderungen an Scripten usw. die nur für bestimmte Benutzer Sinn

    machen, für andere aber nutzlos sind, daher sendet man das dann

    meistens per Konversation. Letztes mal war ich dann gezwungen

    das Script per E-Mail zu senden, glücklicher Weise hatte ich die.

    Mfg.

    Endor

  • 2019-Update: Großer camp-firefox.de Relaunch

    • Endor
    • 13. November 2019 um 14:43

    Frage, könnte man bei den nicht öffentlichen Konversationen,

    das Zeichenlimit auch etwas erhöhen. Wollte letztens jemanden ein
    Script per Konversation senden, ging aber auf Grund der Limitierung

    von max 10.000 Zeichen nicht. Sonst haben wir überall 100.000 Zeichen,

    das wäre eben auch bei den Konversationen sehr praktisch.

    Mfg.
    Endor

  • Mit der heutigen Nightly funktionieren viele Codes und Scripts nicht mehr

    • Endor
    • 13. November 2019 um 14:38

    Also das hier ist die Scriptversion die ich Boersenfeger gesendet habe:

    HTML
    // ==UserScript==
    // @name UserCSSLoader
    // @description CSS Codes - Styles laden und verwalten
    // @namespace http://d.hatena.ne.jp/Griever/
    // @author Griever
    // @include main
    // @license MIT License
    // @compatibility Firefox 4 - 61*
    // @charset UTF-8
    // @version 0.0.4g
    // @note Version 0.0.4.g ermoeglicht "Styles importieren" per Mittelklick und Verwendung
    // @note eines anderen Dateimanager (s. vFileManager in Zeile 62)
    // @note Frei verschiebbare Schaltfläche eingebaut von aborix
    // @note 0.0.4 Remove E4X
    // @note CSSEntry-Klasse erstellt
    // @note Style-Test-Funktion überarbeitet
    // @note Wenn die Datei gelöscht wurde, CSS beim Neu erstellen und Löschen des Menüs abbrechen
    // @note uc einlesen .uc.css temporäre Korrespondenz zum erneuten Lesen
    // ==/UserScript==
    
    
    /****** Bedienungsanleitung ******
    
    
    Da der CSS-Ordner im Chrome-Ordner erstellt wurde, CSS-Dateien dort ablegen - speichern.
    Diejenigen, deren Dateiname mit "xul-" beginnen, diejenigen, die mit ".as.css" enden, sind AGENT_SHEET,
    andere außer USER_SHEET werden gelesen. Da der Inhalt der Datei nicht überprüft wird,
    darauf achten, @ Namespace Angabe nicht zu vergessen!
    
    
    CSS-Menü wird zur Menüleiste hinzugefügt
    Linksklick auf Stil, zum aktivieren/deaktivieren
    Mittelklick auf Stil zum aktivieren/deaktivieren, ohne Menü zu schließen
    Rechtsklick auf Stil zum Öffnen im Editor
    
    
    Verwenden des in "view_source.editor.path" angegebenen Editors
    Ordner kann geändert werden, indem ein Pfad in "UserCSSLoader.FOLDER" eingefügt wird
    
    
    **** Anleitung Ende ****/
    
    
    (function(){
    
    
    let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
    if (!window.Services)
    Cu.import("resource://gre/modules/Services.jsm");
    // Wenn beim Start ein anderes Fenster angezeigt wird (das zweite Fenster), wird es beendet
    let list = Services.wm.getEnumerator("navigator:browser");
    while(list.hasMoreElements()){ if(list.getNext() != window) return; }
    
    
    if (window.UCL) {
    window.UCL.destroy();
    delete window.UCL;
    }
    
    
    window.UCL = {
    vFileManager: 'C:\\Programme\\totalcmd\\TOTALCMD.EXE',
    //vFileManager: '',
    USE_UC: "UC" in window,
    AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET,
    USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET,
    readCSS : {},
    get disabled_list() {
    let obj = [];
    try {
    obj = this.prefs.getCharPref("disabled_list").split("|");
    } catch(e) {}
    delete this.disabled_list;
    return this.disabled_list = obj;
    },
    get prefs() {
    delete this.prefs;
    return this.prefs = Services.prefs.getBranch("UserCSSLoader.")
    },
    get styleSheetServices(){
    delete this.styleSheetServices;
    return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
    },
    get FOLDER() {
    let aFolder;
    try {
    // UserCSSLoader.FOLDER verwenden
    let folderPath = this.prefs.getCharPref("FOLDER");
    aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile)
    aFolder.initWithPath(folderPath);
    } catch (e) {
    aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
    aFolder.appendRelativePath("CSS");
    }
    if (!aFolder.exists() || !aFolder.isDirectory()) {
    aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
    }
    delete this.FOLDER;
    return this.FOLDER = aFolder;
    },
    getFocusedWindow: function() {
    let win = document.commandDispatcher.focusedWindow;
    if (!win || win == window) win = content;
    return win;
    },
    
    
    init: function() {
    const cssmenu = $C("menu", {
    id: "usercssloader-menu",
    label: "CSS",
    accesskey: "C",
    onclick: "if (event.button == 1) UCL.rebuild()"
    });
    const menupopup = $C("menupopup", {
    id: "usercssloader-menupopup"
    });
    cssmenu.appendChild(menupopup);
    
    
    let menu = $C("menu", {
    label: "Style Loader Menü",
    accesskey: "M"
    });
    menupopup.appendChild(menu);
    let mp = $C("menupopup", { id: "usercssloader-submenupopup" });
    menu.appendChild(mp);
    mp.appendChild($C("menuitem", {
    label: "Styles importieren",
    accesskey: "R",
    acceltext: "Alt + R",
    oncommand: "UCL.rebuild();"
    }));
    mp.appendChild($C("menuseparator"));
    mp.appendChild($C("menuitem", {
    label: "CSS Datei erstellen",
    accesskey: "D",
    oncommand: "UCL.create();"
    }));
    mp.appendChild($C("menuitem", {
    label: "CSS Ordner öffnen",
    accesskey: "O",
    oncommand: "UCL.openFolder();"
    }));
    mp.appendChild($C("menuitem", {
    label: "userChrome.css bearbeiten",
    hidden: false,
    oncommand: "UCL.editUserCSS(\'userChrome.css\');"
    }));
    mp.appendChild($C("menuitem", {
    label: "userContent.css bearbeiten",
    hidden: false,
    oncommand: "UCL.editUserCSS(\'userContent.css\');"
    }));
    mp.appendChild($C("menuseparator"));
    mp.appendChild($C("menuitem", {
    label: "Style Test (Chrome)",
    id: "usercssloader-test-chrome",
    hidden: true,
    accesskey: "C",
    oncommand: "UCL.styleTest(window);"
    }));
    mp.appendChild($C("menuitem", {
    label: "Style Test (Web)",
    id: "usercssloader-test-content",
    hidden: true,
    accesskey: "W",
    oncommand: "UCL.styleTest();"
    }));
    mp.appendChild($C("menuitem", {
    label: "Styles dieser Seite auf userstyles.org finden",
    accesskey: "S",
    oncommand: "UCL.searchStyle();"
    }));
    
    
    menu = $C("menu", {
    label: ".uc.css",
    accesskey: "U",
    hidden: !UCL.USE_UC
    });
    menupopup.appendChild(menu);
    mp = $C("menupopup", { id: "usercssloader-ucmenupopup" });
    menu.appendChild(mp);
    mp.appendChild($C("menuitem", {
    label: "Importieren(.uc.js)",
    oncommand: "UCL.UCrebuild();"
    }));
    mp.appendChild($C("menuseparator", { id: "usercssloader-ucseparator" }));
    
    
    CustomizableUI.createWidget({
    id: 'usercssloader-menu-item',
    type: 'custom',
    defaultArea: CustomizableUI.AREA_NAVBAR,
    onBuild: function(aDocument) {
    let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem');
    toolbaritem.id = 'usercssloader-menu-item';
    toolbaritem.className = 'chromeclass-toolbar-additional';
    return toolbaritem;
    }
    });
    $('usercssloader-menu-item').appendChild(cssmenu);
    
    
    let refNode = $('helpMenu');
    refNode.parentNode.insertBefore(cssmenu, refNode.nextSibling);
    
    
    $("mainKeyset").appendChild($C("key", {
    id: "usercssloader-rebuild-key",
    oncommand: "UCL.rebuild();",
    key: "R",
    modifiers: "alt",
    }));
    this.rebuild();
    this.initialized = true;
    if (UCL.USE_UC) {
    setTimeout(function() {
    UCL.UCcreateMenuitem();
    }, 1000);
    }
    window.addEventListener("unload", this, false);
    },
    uninit: function() {
    const dis = [];
    for (let x of Object.keys(this.readCSS)) {
    if (!this.readCSS[x].enabled)
    dis.push(x);
    }
    this.prefs.setCharPref("disabled_list", dis.join("|"));
    window.removeEventListener("unload", this, false);
    },
    destroy: function() {
    var i = document.getElementById("usercssloader-menu");
    if (i) i.parentNode.removeChild(i);
    var i = document.getElementById("usercssloader-rebuild-key");
    if (i) i.parentNode.removeChild(i);
    this.uninit();
    },
    handleEvent: function(event) {
    switch(event.type){
    case "unload": this.uninit(); break;
    }
    },
    rebuild: function() {
    let ext = /\.css$/i;
    let not = /\.uc\.css/i;
    let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
    while (files.hasMoreElements()) {
    let file = files.getNext().QueryInterface(Ci.nsIFile);
    if (!ext.test(file.leafName) || not.test(file.leafName)) continue;
    let CSS = this.loadCSS(file);
    CSS.flag = true;
    }
    for (let leafName of Object.keys(this.readCSS)) {
    const CSS = this.readCSS[leafName];
    if (!CSS.flag) {
    CSS.enabled = false;
    delete this.readCSS[leafName];
    }
    delete CSS.flag;
    this.rebuildMenu(leafName);
    }
    if (this.initialized) {
    if (typeof(StatusPanel) !== "undefined")
    StatusPanel._label = "Style importiert";
    else
    XULBrowserWindow.statusTextField.label = "Styles importieren";
    }
    },
    loadCSS: function(aFile) {
    var CSS = this.readCSS[aFile.leafName];
    if (!CSS) {
    CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile);
    if (this.disabled_list.indexOf(CSS.leafName) === -1) {
    CSS.enabled = true;
    }
    } else if (CSS.enabled) {
    CSS.enabled = true;
    }
    return CSS;
    },
    rebuildMenu: function(aLeafName) {
    var CSS = this.readCSS[aLeafName];
    var menuitem = document.getElementById("usercssloader-" + aLeafName);
    if (!CSS) {
    if (menuitem)
    menuitem.parentNode.removeChild(menuitem);
    return;
    }
    if (!menuitem) {
    menuitem = document.createXULElement("menuitem");
    menuitem.setAttribute("label", aLeafName);
    menuitem.setAttribute("id", "usercssloader-" + aLeafName);
    menuitem.setAttribute("class", "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : "USER_SHEET"));
    menuitem.setAttribute("type", "checkbox");
    menuitem.setAttribute("autocheck", "false");
    menuitem.setAttribute("oncommand", "UCL.toggle('"+ aLeafName +"');");
    menuitem.setAttribute("onclick", "UCL.itemClick(event);");
    document.getElementById("usercssloader-menupopup").appendChild(menuitem);
    }
    menuitem.setAttribute("checked", CSS.enabled);
    },
    toggle: function(aLeafName) {
    var CSS = this.readCSS[aLeafName];
    if (!CSS) return;
    CSS.enabled = !CSS.enabled;
    this.rebuildMenu(aLeafName);
    },
    itemClick: function(event) {
    if (event.button == 0) return;
    event.preventDefault();
    event.stopPropagation();
    let label = event.currentTarget.getAttribute("label");
    if (event.button == 1) {
    this.toggle(label);
    }
    else if (event.button == 2) {
    closeMenus(event.target);
    this.edit(this.getFileFromLeafName(label));
    }
    },
    getFileFromLeafName: function(aLeafName) {
    let f = this.FOLDER.clone();
    f.QueryInterface(Ci.nsIFile); // use appendRelativePath
    f.appendRelativePath(aLeafName);
    return f;
    },
    styleTest: function(aWindow) {
    aWindow || (aWindow = this.getFocusedWindow());
    new CSSTester(aWindow, function(tester){
    if (tester.saved)
    UCL.rebuild();
    });
    },
    searchStyle: function() {
    let word;
    try {
    word = gBrowser.currentURI.host;
    } catch {
    word = gBrowser.currentURI.spec;
    }
    openWebLinkIn("https://userstyles.org/styles/search/" + word, "tab", {});
    },
    openFolder:function(){
    if (this.vFileManager.length != 0) {
    var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
    var args=[this.FOLDER.path];
    file.initWithPath(this.vFileManager);
    process.init(file);
    // Verzeichnis mit anderem Dateimanager öffnen
    process.run(false, args, args.length);
    } else {
    // Verzeichnis mit Dateimanager des Systems öffnen
    this.FOLDER.launch();
    }
    },
    editUserCSS: function(aLeafName) {
    let file = Services.dirsvc.get("UChrm", Ci.nsIFile);
    file.appendRelativePath(aLeafName);
    this.edit(file);
    },
    edit: function(aFile) {
    var editor = Services.prefs.getCharPref("view_source.editor.path");
    if (!editor) return alert("Unter about:config den vorhandenen Schalter:\n view_source.editor.path mit dem Editorpfad ergänzen");
    try {
    var UI = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
    UI.charset = window.navigator.platform.toLowerCase().indexOf("win") >= 0? "Shift_JIS": "UTF-8";
    var path = UI.ConvertFromUnicode(aFile.path);
    var app = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
    app.initWithPath(editor);
    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
    process.init(app);
    process.run(false, [path], 1);
    } catch (e) {}
    },
    create: function(aLeafName) {
    if (!aLeafName) aLeafName = prompt("Name des Styles", dateFormat(new Date(), "%Y_%m%d_%H%M%S"));
    if (aLeafName) aLeafName = aLeafName.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, "");
    if (!aLeafName || !/\S/.test(aLeafName)) return;
    if (!/\.css$/.test(aLeafName)) aLeafName += ".css";
    let file = this.getFileFromLeafName(aLeafName);
    this.edit(file);
    },
    UCrebuild: function() {
    let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    let query = "?" + new Date().getTime();
    Array.slice(document.styleSheets).forEach(function(css){
    if (!re.test(css.href)) return;
    if (css.ownerNode) {
    css.ownerNode.parentNode.removeChild(css.ownerNode);
    }
    let pi = document.createProcessingInstruction('xml-stylesheet','type="text/css" href="'+ css.href.replace(/\?.*/, '') + query +'"');
    document.insertBefore(pi, document.documentElement);
    });
    UCL.UCcreateMenuitem();
    },
    UCcreateMenuitem: function() {
    let sep = $("usercssloader-ucseparator");
    let popup = sep.parentNode;
    if (sep.nextSibling) {
    let range = document.createRange();
    range.setStartAfter(sep);
    range.setEndAfter(popup.lastChild);
    range.deleteContents();
    range.detach();
    }
    
    
    let re = /^file:.*\.uc\.css(?:\?\d+)?$/i;
    Array.slice(document.styleSheets).forEach(function(css) {
    if (!re.test(css.href)) return;
    let fileURL = decodeURIComponent(css.href).split("?")[0];
    let aLeafName = fileURL.split("/").pop();
    let m = document.createXULElement("menuitem");
    m.setAttribute("label", aLeafName);
    m.setAttribute("tooltiptext", fileURL);
    m.setAttribute("id", "usercssloader-" + aLeafName);
    m.setAttribute("type", "checkbox");
    m.setAttribute("autocheck", "false");
    m.setAttribute("checked", "true");
    m.setAttribute("oncommand", "this.setAttribute('checked', !(this.css.disabled = !this.css.disabled));");
    m.setAttribute("onclick", "UCL.UCItemClick(event);");
    m.css = css;
    popup.appendChild(m);
    });
    },
    UCItemClick: function(event) {
    if (event.button == 0) return;
    event.preventDefault();
    event.stopPropagation();
    
    
    if (event.button == 1) {
    event.target.doCommand();
    }
    else if (event.button == 2) {
    closeMenus(event.target);
    let fileURL = event.currentTarget.getAttribute("tooltiptext");
    let file = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getFileFromURLSpec(fileURL);
    this.edit(file);
    }
    },
    };
    
    
    function CSSEntry(aFile) {
    this.path = aFile.path;
    this.leafName = aFile.leafName;
    this.lastModifiedTime = 1;
    this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ?
    Ci.nsIStyleSheetService.AGENT_SHEET:
    Ci.nsIStyleSheetService.USER_SHEET;
    }
    CSSEntry.prototype = {
    sss: Components.classes["@mozilla.org/content/style-sheet-service;1"]
    .getService(Components.interfaces.nsIStyleSheetService),
    _enabled: false,
    get enabled() {
    return this._enabled;
    },
    set enabled(isEnable) {
    var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile)
    aFile.initWithPath(this.path);
    
    
    var isExists = aFile.exists(); // Wenn die Datei existiert true
    var lastModifiedTime = isExists ? aFile.lastModifiedTime : 0;
    var isForced = this.lastModifiedTime != lastModifiedTime; // Wenn es eine Änderung in der Datei gibt true
    
    
    var fileURL = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile(aFile);
    var uri = Services.io.newURI(fileURL, null, null);
    
    
    if (this.sss.sheetRegistered(uri, this.SHEET)) {
    // Wenn diese Datei bereits gelesen wurde
    if (!isEnable || !isExists) {
    this.sss.unregisterSheet(uri, this.SHEET);
    }
    else if (isForced) {
    // Nach Stornierung erneut einlesen
    this.sss.unregisterSheet(uri, this.SHEET);
    this.sss.loadAndRegisterSheet(uri, this.SHEET);
    }
    } else {
    // Datei wurde nicht gelesen
    if (isEnable && isExists) {
    this.sss.loadAndRegisterSheet(uri, this.SHEET);
    }
    }
    if (this.lastModifiedTime !== 1 && isEnable && isForced) {
    log(this.leafName + " wurde aktualisiert");
    }
    this.lastModifiedTime = lastModifiedTime;
    return this._enabled = isEnable;
    },
    };
    
    
    function CSSTester(aWindow, aCallback) {
    this.win = aWindow || window;
    this.doc = this.win.document;
    this.callback = aCallback;
    this.init();
    }
    CSSTester.prototype = {
    sss: Components.classes["@mozilla.org/content/style-sheet-service;1"]
    .getService(Components.interfaces.nsIStyleSheetService),
    preview_code: "",
    saved: false,
    init: function() {
    this.dialog = openDialog(
    "data:text/html;charset=utf8,"+encodeURIComponent('<!DOCTYPE HTML><html lang="ja"><head><title>CSSTester</title></head><body></body></html>'),
    "",
    "width=550,height=400,dialog=no");
    this.dialog.addEventListener("load", this, false);
    },
    destroy: function() {
    this.preview_end();
    this.dialog.removeEventListener("unload", this, false);
    this.previewButton.removeEventListener("click", this, false);
    this.saveButton.removeEventListener("click", this, false);
    this.closeButton.removeEventListener("click", this, false);
    },
    handleEvent: function(event) {
    switch(event.type) {
    case "click":
    if (event.button != 0) return;
    if (this.previewButton == event.currentTarget) {
    this.preview();
    }
    else if (this.saveButton == event.currentTarget) {
    this.save();
    }
    else if (this.closeButton == event.currentTarget) {
    this.dialog.close();
    }
    break;
    case "load":
    var doc = this.dialog.document;
    doc.body.innerHTML = '\
    <style type="text/css">\
    :not(input):not(select) { padding: 0px; margin: 0px; }\
    table { border-spacing: 0px; }\
    body, html, #main, #textarea { width: 100%; height: 100%; }\
    #textarea { font-family: monospace; }\
    </style>\
    <table id="main">\
    <tr height="100%">\
    <td colspan="4"><textarea id="textarea"></textarea></td>\
    </tr>\
    <tr height="40">\
    <td><input type="button" value="Vorschau" id="Vorschau"/></td>\
    <td><input type="button" value="Speichern" id="Speichern"/></td>\
    <td width="80%"><span class="log"></span></td>\
    <td><input type="button" value="Schließen" id="Schliessen"/></td>\
    </tr>\
    </table>\
    ';
    this.textbox = doc.querySelector("textarea");
    this.previewButton = doc.querySelector('input[value="Vorschau"]');
    this.saveButton = doc.querySelector('input[value="Speichern"]');
    this.closeButton = doc.querySelector('input[value="Schließen"]');
    this.logField = doc.querySelector('.log');
    
    
    var code = "@namespace url(" + this.doc.documentElement.namespaceURI + ");\n";
    code += this.win.location.protocol.indexOf("http") === 0?
    "@-moz-document domain(" + this.win.location.host + ") {\n\n\n\n}":
    "@-moz-document url(" + this.win.location.href + ") {\n\n\n\n}";
    this.textbox.value = code;
    this.dialog.addEventListener("unload", this, false);
    this.previewButton.addEventListener("click", this, false);
    this.saveButton.addEventListener("click", this, false);
    this.closeButton.addEventListener("click", this, false);
    
    
    this.textbox.focus();
    let p = this.textbox.value.length - 3;
    this.textbox.setSelectionRange(p, p);
    
    
    break;
    case "unload":
    this.destroy();
    this.callback(this);
    break;
    }
    },
    preview: function() {
    var code = this.textbox.value;
    if (!code || !/\:/.test(code))
    return;
    code = "data:text/css;charset=utf-8," + encodeURIComponent(this.textbox.value);
    if (code == this.preview_code)
    return;
    this.preview_end();
    var uri = Services.io.newURI(code, null, null);
    this.sss.loadAndRegisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET);
    this.preview_code = code;
    this.log("Preview");
    },
    preview_end: function() {
    if (this.preview_code) {
    let uri = Services.io.newURI(this.preview_code, null, null);
    this.sss.unregisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET);
    this.preview_code = "";
    }
    },
    save: function() {
    var data = this.textbox.value;
    if (!data) return;
    
    
    var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    fp.init(window, "", Ci.nsIFilePicker.modeSave);
    fp.appendFilter("CSS Files","*.css");
    fp.defaultExtension = "css";
    if (window.UCL)
    fp.displayDirectory = UCL.FOLDER;
    var res = fp.show();
    if (res != fp.returnOK && res != fp.returnReplace) return;
    
    
    var suConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
    suConverter.charset = "UTF-8";
    data = suConverter.ConvertFromUnicode(data);
    var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
    foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0664, 0);
    foStream.write(data, data.length);
    foStream.close();
    this.saved = true;
    },
    log: function() {
    this.logField.textContent = dateFormat(new Date(), "%H:%M:%S") + ": " + $A(arguments);
    }
    };
    
    
    UCL.init();
    
    
    function $(id) { return document.getElementById(id); }
    function $A(arr) { return Array.slice(arr); }
    function $C(name, attr) {
    var el = document.createXULElement(name);
    if (attr) Object.keys(attr).forEach(function(n) { el.setAttribute(n, attr[n]) });
    return el;
    }
    function dateFormat(date, format) {
    format = format.replace("%Y", ("000" + date.getFullYear()).substr(-4));
    format = format.replace("%m", ("0" + (date.getMonth()+1)).substr(-2));
    format = format.replace("%d", ("0" + date.getDay()).substr(-2));
    format = format.replace("%H", ("0" + date.getHours()).substr(-2));
    format = format.replace("%M", ("0" + date.getMinutes()).substr(-2));
    format = format.replace("%S", ("0" + date.getSeconds()).substr(-2));
    return format;
    }
    
    
    function log() { Application.console.log(Array.slice(arguments)); }
    
    
    })();
    Alles anzeigen

    und das der CSS Code dazu den ich hier verwende:

    CSS
    @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
    @-moz-document url(chrome://browser/content/browser.xhtml){
    
    
    #usercssloader-menu {
    -moz-appearance:none!important;
    margin-right: -6px !important;
    margin-left: -1px !important;
    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAADJklEQVR4Xi3Pb0yVdRjG8e%2Fze57ncDrAOWwRhDQ7xYAMlAgIBW2txaio5TvMzZa68oWtzRdKbXbIpWyOzcWLWqXkFjUtsIksW72wuTVx%2BEJHCxhkSCNoKLYDwuH8e66eNV98dr24t%2Fu%2BLwsAoKsucqg4tFS4kiTtge4PFAkRksADGdsyua4JXJ7ITH0yQw%2BABTB3sHGipGNjJX8MgzGw6oEBQi5kPYinQBYEbDDAX5PEulJXPhqn2bQE2Fayfa2S8THOfu%2FwzTkDzmOQV8nAkOHMoIFgmS9K3w%2Fi5DmP1fwqdrbRFIR6euqJ6btc2Y4jsGWM0emOWrU2FAtQRTSiid7n9EJtkQCVlebrUle9lnuLVA3v09%2FG8diLCFxp%2BDVprF2a2KHqsrACtqVbQy9L8T2qq4goaKOpz5uka22Kn1yn2gBHOPMSx9o3obJokbS8R%2Fp3txTfK918Q%2B2tjwrQYPcWaW6Xdj5fKkB9B2uks%2Bv1VICYSWXQjia4eWuB8z2%2F0%2F%2FpGMMD04yP3qFzfzXBoE3sszGmR27Tubuc3KDDsf4ZsME2iO4GjuqXQh1orxDwv1OxBsX2VQlQcWGObnzdog%2F3bhCg0uIHNPLFVqnf%2F8DlA2ctDSTgxNFnOHFgE7jAg7kQcjnS8TRgQcCiprGQzncrIZ0i%2Fu0so7lLODlgsh6QSMNCAix8BhJJNH6b5NwyFNhwLwWuB%2FNxEoemudi9wMT8Cq4LBrDwgLUULK%2FBPR9%2BjC4ytPUC17%2F8DR6CpYEplt%2BeJTX7OH9HbEL5NvKwjGvj4AHprC8DSZ%2B%2FzHJgI%2BuI%2BxdvbL9E%2BJRLJr%2BSr5LXKd8foqY8QjqN7fxzlzhaAy8LGYHnQTxJ3hNhFlptCi4XsP7PEoaD4mr4KlveeZjNG4qYvDbKyipJolCXOI70U630Y6uvRfrZzyuvSKOvavK9Kp2OFqv3zagWLzb7s21aubBZ519HFjzrg8NP8utbu2hWMIyyHpYBYwyOa2Hn2cwuJAiHAthp%2Be087s4n6e5LjwzeodECAKiAffk5PJLOkJKFACzLZ8B27jfMYgUM7mKSuzPwMcB%2F6Jh%2FV5xUni0AAAAASUVORK5CYII%3D") no-repeat !important;
    background-position:1px 6px!important;
    }
    
    
    #usercssloader-menu:hover {
    -moz-appearance:none !important;
    margin-left: -5px !important;
    margin-right: -3px !important;
    padding-right: 1px !important;
    background: #E3E3E3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAADJklEQVR4Xi3Pb0yVdRjG8e%2Fze57ncDrAOWwRhDQ7xYAMlAgIBW2txaio5TvMzZa68oWtzRdKbXbIpWyOzcWLWqXkFjUtsIksW72wuTVx%2BEJHCxhkSCNoKLYDwuH8e66eNV98dr24t%2Fu%2BLwsAoKsucqg4tFS4kiTtge4PFAkRksADGdsyua4JXJ7ITH0yQw%2BABTB3sHGipGNjJX8MgzGw6oEBQi5kPYinQBYEbDDAX5PEulJXPhqn2bQE2Fayfa2S8THOfu%2FwzTkDzmOQV8nAkOHMoIFgmS9K3w%2Fi5DmP1fwqdrbRFIR6euqJ6btc2Y4jsGWM0emOWrU2FAtQRTSiid7n9EJtkQCVlebrUle9lnuLVA3v09%2FG8diLCFxp%2BDVprF2a2KHqsrACtqVbQy9L8T2qq4goaKOpz5uka22Kn1yn2gBHOPMSx9o3obJokbS8R%2Fp3txTfK918Q%2B2tjwrQYPcWaW6Xdj5fKkB9B2uks%2Bv1VICYSWXQjia4eWuB8z2%2F0%2F%2FpGMMD04yP3qFzfzXBoE3sszGmR27Tubuc3KDDsf4ZsME2iO4GjuqXQh1orxDwv1OxBsX2VQlQcWGObnzdog%2F3bhCg0uIHNPLFVqnf%2F8DlA2ctDSTgxNFnOHFgE7jAg7kQcjnS8TRgQcCiprGQzncrIZ0i%2Fu0so7lLODlgsh6QSMNCAix8BhJJNH6b5NwyFNhwLwWuB%2FNxEoemudi9wMT8Cq4LBrDwgLUULK%2FBPR9%2BjC4ytPUC17%2F8DR6CpYEplt%2BeJTX7OH9HbEL5NvKwjGvj4AHprC8DSZ%2B%2FzHJgI%2BuI%2BxdvbL9E%2BJRLJr%2BSr5LXKd8foqY8QjqN7fxzlzhaAy8LGYHnQTxJ3hNhFlptCi4XsP7PEoaD4mr4KlveeZjNG4qYvDbKyipJolCXOI70U630Y6uvRfrZzyuvSKOvavK9Kp2OFqv3zagWLzb7s21aubBZ519HFjzrg8NP8utbu2hWMIyyHpYBYwyOa2Hn2cwuJAiHAthp%2Be087s4n6e5LjwzeodECAKiAffk5PJLOkJKFACzLZ8B27jfMYgUM7mKSuzPwMcB%2F6Jh%2FV5xUni0AAAAASUVORK5CYII%3D") no-repeat !important;
    background-position:5px 6px!important;
    }
    
    
    #usercssloader-menu > .menu-text,
    #usercssloader-menu > .menu-right {
    display: none !important;
    }
    }
    Alles anzeigen

    Totalcommander ist in obiger Version jetzt auch aktiviert.
    Hatte ich in der Version in der E-Mail nicht bedacht.
    Also Boersenfeger bitte nochmals testen!!!

    Mfg.

    Endor

  • Vertikale Icon-Bar

    • Endor
    • 8. November 2019 um 14:12

    Zeile 55

    var vb_toolbar = document.createElement('toolbar');

    muss auch geändert werden:

    var vb_toolbar = document.createXULElement('toolbar');

    Aber das wird nicht reichen. Da muss noch mehr angepasst werden.

    Vielleicht kann da aborix ja helfen.

    Mfg.

    Endor

  • Suche Script für Sidebar

    • Endor
    • 2. November 2019 um 15:39

    Habe oben nochmals den Link geändert. Hatte zur falschen Datei verlinkt.

    Es kann aber auch sein, dass die beiden Scripte bei uns gar nicht laufen.

    Mfg.

    Endor

  • Suche Script für Sidebar

    • Endor
    • 2. November 2019 um 15:30

    Wie ich befürchtet habe, benötigen obige Scripte den Subscriptloader

    von Alice.

    Das heißt, es braucht eine spezielle userChrome.js Datei.

    Unsere hier enthält ja nur die Zeilen zum Laden der Scripte.

    Obige benötigen da anscheinend mehr.

    Das wäre diese Datei:

    https://raw.githubusercontent.com/alice0775/userChrome.js/master/70/userChrome.js

    Mfg.
    Endor

  • Suche Script für Sidebar

    • Endor
    • 2. November 2019 um 15:00

    Gibt es übrigens auch für die Chronik in der Sidebar:

    Code
    // ==UserScript==
    // @name autocloseHistoryFolder.uc.js
    // @namespace http://www.sephiroth-j.de/mozilla/
    // @description Autoclose History Folders
    // @include chrome://browser/content/history/history-panel.xul
    // @include chrome://browser/content/places/historySidebar.xul
    // @compatibility Firefox 66+
    // @author original Ronny Perinke
    // @version original Autoclose Bookmark History Folders 0.5.5
    // @modiffied Alice0775
    // @version 2019/01/18 fix for 66(Bug 1482389 - Convert TreeBoxObject to XULTreeElement)
    // @version 2019/01/18 fix dark theme
    // @version 2018/08/13 61+
    // @version 2017/11/18 nsIPrefBranch2 to nsIPrefBranch
    // @version 2008/11/28 Firefox3.1b3pre tboの初期化に時間が掛かるようでsetTimeoutするようにした
    // @Note http://space.geocities.yahoo.co.jp/gl/alice0775
    // @Note I got permission to open this script to the public from Mr.Sephiroth on July 28,2007.
    // ==/UserScript==
    // @version 2007/07/16
    /* ***** BEGIN LICENSE BLOCK *****
    * Author: Ronny Perinke http://www.sephiroth-j.de
    *
    * License: This extension is subject to MPL 1.1/GPL 2.0/LGPL 2.1
    * You may obtain a copy of the License at http://www.mozilla.org/MPL/ and http://www.gnu.org/copyleft/gpl.html
    * other rules:
    * 1) If you use any of this code please include references or credit in your code to myself, and include my homepage URL
    * 2) You MUST contact me, the author before you use this code (I like to know that it's been usefull).
    * 3) I would greatly appreciate a link back to me or credit somewhere on your site (makes me feel good, not required).
    * 4) If improvments are made to the code, please inform me so that I can use it (if applicable, not required).
    * 5) Translators: please contact me and send me a copy of the language files and/or the new xpi with the new language.
    * I'd like to include them in the official xpi on my server. You will list you in the contributors list.
    *
    * ***** END LICENSE BLOCK ***** */
    var acHistoryFolder = {
    _Prefs: {
    ScrollToRow : true, //Bildlaufstatus so weit wie möglich wieder herstellen, wenn die Seitenleiste das nächste Mal geöffnet wird
    SelectLast : true //Zuletzt geöffneten Ordner beim erneuten öffnen wieder anzeigen und fokusieren
    },
    
    
    get _BTree() {
    return document.getElementById("historyTree");
    },
    
    
    init: function(){
    if (!this._BTree)
    return;
    
    
    this._BTree.addEventListener('click', function(event){acHistoryFolder.onClick(event);},false);
    
    
    this.loadPrefs();
    this.addToolbar();
    
    
    var viewtype = document.getElementById("viewButton").getAttribute('selectedsort');
    if (this._BTree.result && this._Prefs.SelectLast){
    setTimeout(function(){
    var lastRowToSelect = this.getPref("ac-HistoryTreeFolder.lastBookmarkFolder."+viewtype,"int",0);
    if (this._BTree && this._BTree.view.rowCount >= lastRowToSelect){
    if(viewtype == "byday" || viewtype == "bydayandsite")
    this._BTree.scrollToRow(lastRowToSelect);
    this._BTree.view.selection.select(lastRowToSelect);
    this._BTree.ensureRowIsVisible(lastRowToSelect);
    }
    }.bind(this), 100);
    }
    },
    
    
    uninit: function(){
    this._BTree.removeEventListener('click', function(event){acHistoryFolder.onClick(event);},false);
    },
    
    
    loadPrefs: function(){
    this._Prefs.SelectLast = this.getPref("ac-HistoryTreeFolder.ReselectLastFolder","bool",this._Prefs.SelectLast);
    this._Prefs.ScrollToRow = this.getPref("ac-HistoryTreeFolder.ScrollToLastFolder","bool",this._Prefs.ScrollToRow);
    },
    
    
    addToolbar: function(){
    const kXULNS =
    "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    var toolbar = document.getElementById("acHistoryFolder-toolbar");
    if (toolbar){
    return;
    }
    var toolbox = document.createElementNS(kXULNS, "toolbox");
    toolbox.setAttribute("style", "-moz-appearance: none;");
    toolbar = document.createElementNS(kXULNS, "toolbar");
    toolbar.setAttribute("id", "acHistoryFolder-toolbar");
    var closeAllButton = document.createElementNS(kXULNS, "toolbarbutton");
    closeAllButton.setAttribute("label", "Einklappen");//Einklappen
    closeAllButton.setAttribute("oncommand", "acHistoryFolder.closeAll();");
    var openAllButton = document.createElementNS(kXULNS, "toolbarbutton");
    openAllButton.setAttribute("label", "Erweitern");//Erweitern
    openAllButton.setAttribute("oncommand", "acHistoryFolder.openAll();");
    
    
    toolbar.appendChild(closeAllButton);
    toolbar.appendChild(openAllButton);
    toolbox.appendChild(toolbar);
    this._BTree.parentNode.insertBefore(toolbox, this._BTree);
    var viewbutton = document.getElementById("viewButton");
    if (viewbutton){
    viewbutton.addEventListener("command", acHistoryFolder.updateTBButtons, false);
    var enabled = (viewbutton.getAttribute("selectedsort") == "day" || viewbutton.getAttribute("selectedsort") == "dayandsite");
    closeAllButton.disabled = !enabled;
    openAllButton.disabled = !enabled;
    }
    },
    
    
    updateTBButtons: function(aEvent){
    var enabled = (aEvent.target.id == "byday" || aEvent.target.id == "bydayandsite");
    var toolbar = document.getElementById("acHistoryFolder-toolbar");
    toolbar.firstChild.disabled = !enabled;
    toolbar.lastChild.disabled = !enabled;
    },
    
    
    onClick: function(aEvent){
    var parents = new Array();
    var aView = this._BTree.view;
    if (aEvent.button != 0){
    return;
    }
    
    
    let cell = this._BTree.getCellAt(aEvent.clientX, aEvent.clientY);
    if (cell.row == -1)
    return;
    if(!aView.isContainer(cell.row))
    return;
    if (this._BTree.currentIndex != cell.row){
    return;
    }
    
    
    aView.selection.select(this._BTree.currentIndex);
    for (var i = this._BTree.currentIndex; i != -1; i = aView.getParentIndex(i)){
    parents.push(i);
    }
    parents.reverse();
    for (var i = aView.rowCount - 1; i >= 0; i--){
    if (i == parents[parents.length - 1]){
    parents.pop();
    }else{
    if (aView.isContainer(i) && aView.isContainerOpen(i)){
    aView.toggleOpenState(i);
    }
    }
    }
    this._BTree.ensureRowIsVisible(this._BTree.currentIndex);
    
    
    var viewtype = document.getElementById("viewButton").getAttribute('selectedsort');
    if (this._Prefs.SelectLast)
    this.setPref("ac-HistoryTreeFolder.lastBookmarkFolder."+viewtype ,"int",this._BTree.currentIndex);
    aEvent.preventDefault();
    },
    
    
    closeAll: function(){
    var aView = this._BTree.view;
    try{
    var viewtype = document.getElementById("viewButton").getAttribute('selectedsort');
    this._PrefsIFace.clearUserPref("ac-HistoryTreeFolder.lastBookmarkFolder."+viewtype);
    }catch(e){}
    if (aView){
    for (var i = aView.rowCount-1; i>=0; i--){
    if (aView.isContainer(i) && aView.isContainerOpen(i)) aView.toggleOpenState(i);
    }
    }
    },
    
    
    openAll: function(){
    var aView = this._BTree.view;
    try{
    var viewtype = document.getElementById("viewButton").getAttribute('selectedsort');
    this._PrefsIFace.clearUserPref("ac-HistoryTreeFolder.lastBookmarkFolder."+viewtype);
    }catch(e){}
    if (aView){
    var oldrows = -1;
    var rows = aView.rowCount;
    do{
    for (var i = rows-1; i>=0; i--){
    if (aView.isContainer(i) && !aView.isContainerOpen(i)) aView.toggleOpenState(i);
    }
    oldrows = rows;
    rows = aView.rowCount;
    }
    while(rows != oldrows);
    }
    },
    
    
    clearPref: function(aPrefString){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    xpPref.clearUserPref(aPrefString);
    },
    
    
    getPref: function(aPrefString, aPrefType, aDefault){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    try{
    switch (aPrefType){
    case 'complex':
    return xpPref.getComplexValue(aPrefString, Components.interfaces.nsIFile); break;
    case 'str':
    return xpPref.getCharPref(aPrefString).toString(); break;
    case 'int':
    return xpPref.getIntPref(aPrefString); break;
    case 'bool':
    default:
    return xpPref.getBoolPref(aPrefString); break;
    }
    }catch(e){
    }
    return aDefault;
    },
    
    
    setPref: function(aPrefString, aPrefType, aValue){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    try{
    switch (aPrefType){
    case 'complex':
    return xpPref.setComplexValue(aPrefString, Components.interfaces.nsIFile, aValue); break;
    case 'str':
    return xpPref.setCharPref(aPrefString, aValue); break;
    case 'int':
    aValue = parseInt(aValue);
    return xpPref.setIntPref(aPrefString, aValue); break;
    case 'bool':
    default:
    return xpPref.setBoolPref(aPrefString, aValue); break;
    }
    }catch(e){
    }
    return null;
    }
    }
    
    
    acHistoryFolder.init();
    document.addEventListener('unload', acHistoryFolder.uninit, false);
    Alles anzeigen
  • Suche Script für Sidebar

    • Endor
    • 2. November 2019 um 14:46

    Dann bitte mal testen:

    Code
    // ==UserScript==
    // @name autocloseBookMarkTreeFolder
    // @namespace http://www.sephiroth-j.de/mozilla/
    // @description Autoclose BookMark Folders
    // @include chrome://browser/content/bookmarks/bookmarksPanel.xul
    // @include chrome://browser/content/places/bookmarksSidebar.xul
    // @compatibility Firefox 66+
    // @author original Ronny Perinke
    // @version original Autoclose Bookmark History Folders 0.5.5
    // @modiffied Alice0775
    // @version 2019/01/18 fix for 66(Bug 1482389 - Convert TreeBoxObject to XULTreeElement)
    // @version 2019/01/18 fix dark theme
    // @version 2018/08/10 fix target scroll listener
    // @version 2018/08/13 61+
    // @version 2012/12/07 //aEvent.preventDefault();
    // @Note http://space.geocities.yahoo.co.jp/gl/alice0775
    // @Note I got permission to open this script to the public from Mr.Sephiroth on July 28,2007.
    // ==/UserScript==
    // @version 2008/11/28 Firefox3.1b3pre tboの初期化に時間が掛かるようでsetTimeoutするようにした
    // @version 2007/12/09 21:00
    /* ***** BEGIN LICENSE BLOCK *****
    * Author: Ronny Perinke http://www.sephiroth-j.de
    *
    * License: This extension is subject to MPL 1.1/GPL 2.0/LGPL 2.1
    * You may obtain a copy of the License at http://www.mozilla.org/MPL/ and http://www.gnu.org/copyleft/gpl.html
    * other rules:
    * 1) If you use any of this code please include references or credit in your code to myself, and include my homepage URL
    * 2) You MUST contact me, the author before you use this code (I like to know that it's been usefull).
    * 3) I would greatly appreciate a link back to me or credit somewhere on your site (makes me feel good, not required).
    * 4) If improvments are made to the code, please inform me so that I can use it (if applicable, not required).
    * 5) Translators: please contact me and send me a copy of the language files and/or the new xpi with the new language.
    * I'd like to include them in the official xpi on my server. You will list you in the contributors list.
    *
    * ***** END LICENSE BLOCK ***** */
    
    
    var acBookMarkTreeFolder = {
    _Prefs: {
    ScrollToRow : true, //Bildlaufstatus so weit wie möglich wieder herstellen, wenn die Seitenleiste das nächste Mal geöffnet wird
    SelectLast : true //Zuletzt geöffneten Ordner beim erneuten öffnen wieder anzeigen und fokusieren
    },
    kPrefROWPOSITION: "ac-BookMarkTreeFolder.lastBookmarkFolder",
    kPrefFOLDER: "ac-BookMarkTreeFolder.lastSelectedBookmarkID",
    
    
    get _BTree() {
    return document.getElementById("bookmarks-view");
    },
    
    
    init: function(){
    if (!this._BTree)
    return;
    
    
    document.addEventListener('unload', this, false);
    this._BTree.addEventListener('click', this, false);
    //this._BTree.addEventListener('dragover',function(event){acBookMarkTreeFolder.onClick(event);},false);
    (document.getElementById("bookmarks-view-children") ||
    document.getElementById("bookmarks-view").childNodes[1])
    .addEventListener("scroll", this, false);
    
    
    this.loadPrefs();
    this.addToolbar();
    
    
    if (this._BTree.result && this._Prefs.SelectLast) {
    
    
    var itemId = this.getPref(this.kPrefFOLDER, "int", -1);
    if (itemId != -1) {
    this._BTree.selectItems([itemId], false);
    }
    
    
    try {
    var pos = this.getPref(this.kPrefROWPOSITION,"int",0);
    if (this._BTree && this._BTree.view.rowCount >= pos && this._Prefs.ScrollToRow){
    this._BTree.scrollToRow(pos);
    }
    } catch(e) {}
    }
    
    
    },
    
    
    uninit: function(){
    this._BTree.removeEventListener('click', this, false);
    //this._BTree.removeEventListener('dragover',function(event){acBookMarkTreeFolder.onClick(event);},false);
    document.getElementById("bookmarks-view-children").removeEventListener("scroll", this, false);
    },
    
    
    loadPrefs: function(){
    this._Prefs.SelectLast = this.getPref("ac-BookMarkTreeFolder.ReselectLastFolder","bool",this._Prefs.SelectLast);
    this._Prefs.ScrollToRow = this.getPref("ac-BookMarkTreeFolder.ScrollToLastFolder","bool",this._Prefs.ScrollToRow);
    },
    
    
    handleEvent: function(aEvent){
    switch(aEvent.type) {
    case 'scroll':
    this.onScroll();
    break;
    case 'click':
    this.onClick(aEvent);
    break;
    case 'unload':
    this.uninit();
    break;
    }
    },
    
    
    _stimer: false,
    onScroll: function(){
    if (this._stimer)
    return;
    this._stimer = true;
    setTimeout(function(){this._stimer = false;}.bind(this), 50, this);
    
    
    var getRow = this._BTree.getFirstVisibleRow();
    this.setPref(this.kPrefROWPOSITION, 'int', getRow);
    },
    
    
    addToolbar: function(){
    const kXULNS =
    "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    var toolbar = document.getElementById("acBookMarkTreeFolder-toolbar");
    if (toolbar){
    return;
    }
    var toolbox = document.createElementNS(kXULNS, "toolbox");
    toolbox.setAttribute("style", "-moz-appearance: none;");
    toolbar = document.createElementNS(kXULNS, "toolbar");
    toolbar.setAttribute("id", "acBookMarkTreeFolder-toolbar");
    var closeAllButton = document.createElementNS(kXULNS, "toolbarbutton");
    closeAllButton.setAttribute("label", "Einklappen");//Einklappen
    closeAllButton.setAttribute("oncommand", "acBookMarkTreeFolder.closeAll();");
    var openAllButton = document.createElementNS(kXULNS, "toolbarbutton");
    openAllButton.setAttribute("label", "Erweitern");//Erweitern
    openAllButton.setAttribute("oncommand", "acBookMarkTreeFolder.openAll();");
    
    
    toolbar.appendChild(closeAllButton);
    toolbar.appendChild(openAllButton);
    toolbox.appendChild(toolbar);
    this._BTree.parentNode.insertBefore(toolbox, this._BTree);
    return;
    },
    
    
    onClick: function(aEvent){
    var parents = new Array();
    var aView = this._BTree.view;
    if (aEvent.button != 0 && aEvent.type !="dragover"){
    if (this._BTree.selectedNode && 'itemId' in this._BTree.selectedNode)
    this.setPref(this.kPrefFOLDER, "int", this._BTree.selectedNode.itemId);
    else
    this.setPref(this.kPrefFOLDER, "int", -1);
    return;
    }
    
    
    let cell = this._BTree.getCellAt(aEvent.clientX, aEvent.clientY);
    if (cell.row == -1)
    return;
    //alert(this._BTree.selectedNode.itemId);
    if (this._BTree.selectedNode && 'itemId' in this._BTree.selectedNode)
    this.setPref(this.kPrefFOLDER, "int", this._BTree.selectedNode.itemId);
    else
    this.setPref(this.kPrefFOLDER, "int", -1);
    if(!aView.isContainer(cell.row))
    return;
    if (this._BTree.currentIndex != cell.row){
    return;
    }
    
    
    aView.selection.select(this._BTree.currentIndex);
    for (var i = this._BTree.currentIndex; i != -1; i = aView.getParentIndex(i)){
    parents.push(i);
    }
    parents.reverse();
    for (var i = aView.rowCount - 1; i >= 0; i--){
    if (i == parents[parents.length - 1]){
    parents.pop();
    }else{
    if (aView.isContainer(i) && aView.isContainerOpen(i)){
    aView.toggleOpenState(i);
    }
    }
    }
    this._BTree.ensureRowIsVisible(this._BTree.currentIndex);
    //aEvent.preventDefault();
    },
    
    
    closeAll: function(){
    var aView = this._BTree.view;
    if (aView){
    for (var i = aView.rowCount-1; i>=0; i--){
    if (aView.isContainer(i) && aView.isContainerOpen(i)) aView.toggleOpenState(i);
    }
    }
    },
    
    
    openAll: function(){
    var aView = this._BTree.view;
    if (aView){
    var oldrows = -1;
    var rows = aView.rowCount;
    do{
    for (var i = rows-1; i>=0; i--){
    if (aView.isContainer(i) && !aView.isContainerOpen(i)) aView.toggleOpenState(i);
    }
    oldrows = rows;
    rows = aView.rowCount;
    }
    while(rows != oldrows);
    }
    },
    
    
    clearPref: function(aPrefString){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    xpPref.clearUserPref(aPrefString);
    },
    
    
    getPref: function(aPrefString, aPrefType, aDefault){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    try{
    switch (aPrefType){
    case 'complex':
    return xpPref.getComplexValue(aPrefString, Components.interfaces.nsIFile); break;
    case 'str':
    return xpPref.getCharPref(aPrefString).toString(); break;
    case 'int':
    return xpPref.getIntPref(aPrefString); break;
    case 'bool':
    default:
    return xpPref.getBoolPref(aPrefString); break;
    }
    }catch(e){
    }
    return aDefault;
    },
    
    
    setPref: function(aPrefString, aPrefType, aValue){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
    .getService(Components.interfaces.nsIPrefBranch);
    try{
    switch (aPrefType){
    case 'complex':
    return xpPref.setComplexValue(aPrefString, Components.interfaces.nsIFile, aValue); break;
    case 'str':
    return xpPref.setCharPref(aPrefString, aValue); break;
    case 'int':
    aValue = parseInt(aValue);
    return xpPref.setIntPref(aPrefString, aValue); break;
    case 'bool':
    default:
    return xpPref.setBoolPref(aPrefString, aValue); break;
    }
    }catch(e){
    }
    return null;
    }
    }
    
    
    acBookMarkTreeFolder.init();
    Alles anzeigen
  • Suche Script für Sidebar

    • Endor
    • 2. November 2019 um 14:37

    Suchst Du das für den aktuellen Firefox 70.0.1 oder eine andere Version?

    Es gibt da das gleichnamige Script dazu.

    Mfg.
    Endor

  • 15 Sekunden bis erste Internetseite angezeigt wird

    • Endor
    • 1. November 2019 um 13:58

    Wie wäre es wenn Ihr Firefox mal auf Version 70.0.1

    aktualisieren würdet?

    https://www.mozilla.org/en-US/firefox/…firefox-browser

    Mit obiger Version sollte das Problem mit Kaspersky

    behoben sein.
    Download: https://www.mozilla.org/en-US/firefox/…desktop-release

    Mfg.

    Endor

  • Firefox 70 - openbookModokiFor40.uc.js

    • Endor
    • 1. November 2019 um 11:24

    Bitte gerne.

    Wie immer gern geschehen.

    Mfg.
    Endor

  • Firefox 70 - openbookModokiFor40.uc.js

    • Endor
    • 31. Oktober 2019 um 19:23

    Bitte mal testen:

    https://github.com/Endor8/userChr…dokiFor40.uc.js

    Mfg.
    Endor

  • Mehrzeilige Tabreihen (Nightly)

    • Endor
    • 30. Oktober 2019 um 20:39

    Hallo zusammen.

    So habe es endlich geschafft alle Scripte zu übersetzen und hoch zu laden:

    https://github.com/Endor8/userChr…ter/Mutirowtabs

    Die readmes habe ich noch nicht aktualisiert, das mache ich demnächst noch.

    Es sind jetzt auch im Ordner Tabbar_to_Bottom zwei Scripte zum verschieben der Tableiste

    an den unteren Rand des Fensters dabei.

    Der Autor hat die so mit in seinem Paket.
    Beschreibung habe ich versucht zu übersetzen.

    Es gibt anscheinend keine extra Scripte für Firefox 70.
    Denke mal die für Firefox 69 werden dann wohl auch noch mit Firefox 70

    funktionieren, wenn nicht mal die für Firefox 71 testen.

    Mfg.
    Endor

  • Buttons verschieben

    • Endor
    • 26. Oktober 2019 um 17:19
    Zitat von camel-joe

    Ich würde mich auch mit anderen Buttons begnügen, es müssen nicht die sein.

    Damit meint er wohl alternative vor und zurück Schaltflächen , wenn sich die anderen

    nicht verschieben lassen sollten. Wie auch immer....

    Mfg.
    Endor

  • Buttons verschieben

    • Endor
    • 26. Oktober 2019 um 17:13

    Hallo milupo.

    Der TE will doch die vor und zurück Schaltflächen neben die Restart Schaltfläche verschieben.

    Mfg.
    Endor

  • Buttons verschieben

    • Endor
    • 26. Oktober 2019 um 16:53

    Schau mal dieses Script:

    3 Änderungen für ESR 60.3.0

    Denke Du weist ja wie man mit Scripts arbeitet.
    Nach Firefox Neustart kannst Du über den Anpassen Dialog

    die Vor und zurück Schaltflächen frei verschieben.

    Hoffe es funktioniert noch.

    Edit: ja es funktioniert einwandfrei auch in Firefox 70.

    Mfg.

    Endor

  • Mehrzeilige Tabreihen (Nightly)

    • Endor
    • 16. Oktober 2019 um 17:00

    Der Autor hat nochmal die vorhandene Versionen entfernt und am 14.10.2019

    durch neue ersetzt. Mal sehen ob es jetzt endlich passt. Hatte einige Scripte , von insgesamt 24,
    übersetzt, dann kamen die neuen. Also alles wieder von vorne....

    Mfg.
    Endor

  • Der Glückwunsch-Thread

    • Endor
    • 9. Oktober 2019 um 08:13

    Hallo MonztA.

    Alles alles Gute zum Geburtstag.

    Vor allem viel Gesundheit und Glück wünsche ich Dir.

    Mfg.
    Endor

  • Mehrzeilige Tabreihen (Nightly)

    • Endor
    • 8. Oktober 2019 um 12:23

    Boersenfeger.

    Stimmt genau. Alles andere zählt nicht, nur die Gesundheit.

    Es gibt meiner Meinung nach nichts wertvolleres.

    @all

    Der Autor hat die gestrigen Aktualisierungen wieder entfernt.

    Eben dann durch neue ersetzt.

    Nur als Erklärung warum jetzt 8 Scripte:

    Script 7 und 8 verschieben die Tableiste jetzt an den unteren Rand des Fenster.

    Mfg.
    Endor

  • Mehrzeilige Tabreihen (Nightly)

    • Endor
    • 7. Oktober 2019 um 17:42

    Hallo Boersenfeger.

    Da muss ich mich wohl auf die Diagnose meines Hausarztes verlassen.
    Daher hoffe ich dann auch dass er recht hatte. Da es mir wieder gut geht

    muss es wohl so gewesen sein. Trotzdem auch Dir vielen Dank für die
    guten Wünsche.

    @all

    Der Autor hat eben neue Versionen der Scripte hochgeladen.

    Für Firefox 68 esr , 69 und 71.

    Sobald ich kann kümmere ich mich darum.

    Mfg.
    Endor

Unterstütze uns!

Jährlich (2025)

105,8 %

105,8% (687,41 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon