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. BarbaraZ-

Beiträge von BarbaraZ-

  • Schrift in der Sidebar anpassen

    • BarbaraZ-
    • 8. Juli 2023 um 11:40

    Mit diesen Code passe ich die Schrift in der Sidebar an.

    CSS
    @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml") {
    treechildren::-moz-tree-cell-text {
         appearance: none !important;
         font-weight: bold !important;
         font-size: 14x !important;
         font-family: Helvetica, Arial, Geneva, sans-serif !important;
         color: yellow !important;
         }
    }

    Trotz font-size: 14px ist diese seit des Update auf FF115 un den Anpssungen sehr klein, was hier leider im Screenshot falsch dargestellt wird.

    Die Schriftgröße wird im Original leider nur in 10px dargestellt.

    Dieses ist auch der Fall, wenn ich den Code deaktiviere.

    Woran kann es liegen?

    So wird der Code in der userChrome.css geladen:

    Code
    @import "CSS/Schrift Sidebar-anpassen.css";
  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • BarbaraZ-
    • 7. Juli 2023 um 13:58

    Oki, Danke. :thumbup:

    Dachte schon, es wurde überlesen.

    Dann warte ich gerne ab.

  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • BarbaraZ-
    • 7. Juli 2023 um 13:54

    Hat jemand eine Idee zu meiner Frage aus Beitrag #62?

  • Nur die Anzeige der Ordner/Lesezeichenanzahl in einer anderen Farbe darstellen

    • BarbaraZ-
    • 7. Juli 2023 um 12:57

    Moin,

    bei mir funktioniert das Skript aus #48 in der Menuleiste bei Lesezeichen.

    Allerdings lasse ich mir meine Lesezeichenordner mit deren Inhalt in der Sidebar anzeigen.

    Wir kann das Skript umgebaut werden, damit es in der Sidebar angezeigt wird?

    Code
    // Anzahl Dateien im Ordner
    // Erstellt von: @BrokenHeart
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      function setFunction() {
        PlacesViewBase.prototype._onPopupShowing = function PVB__onPopupShowing(aEvent) {
    
          let popup = aEvent.originalTarget;
          this._ensureMarkers(popup);
          if ("_delayedRemovals" in popup) {
            while (popup._delayedRemovals.length) {
              popup.removeChild(popup._delayedRemovals.shift());
            }
          }
          if (popup._placesNode && PlacesUIUtils.getViewForNode(popup) == this) {
            if (!popup._placesNode.containerOpen) {
              popup._placesNode.containerOpen = true;
            }
            if (!popup._built) {
              this._rebuildPopup(popup);
            }
            this._mayAddCommandsItems(popup);
          }
    
          /* original function end */
    
          for (let item of popup.children) {
            if (item.localName != 'menu' || item.id?.startsWith('history'))
              continue;
            setTimeout(() => {
              let itemPopup = item.menupopup;
              itemPopup.openPopup();
              itemPopup.hidePopup();
              let menuitemCount = 0;
              let menuCount = 0;
              for (let subitem of itemPopup.children) {
                if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) {
                  if (subitem.localName == 'menuitem') {
                    menuitemCount++;
                  } else if (subitem.localName == 'menu') {
                    menuCount++;
                  }
                }
              }
              if (!item.labelOriginal) {
                item.labelOriginal = item.label;
              }
              item.labelSuffix = '  (' + menuCount + '/' + menuitemCount + ')';
    //          item.setAttribute("id", "menu-menuitem-count");
    //          item.labelSuffix.setAttribute("color", "red");
    //          item.labelSuffix = className("menu-menuitem-count");
    //          item.labelSuffix.className = "menu-menuitem-count";
    //          menuitemCount.setAttribute("id", "menu-menuitem-count");
              item.label = item.labelOriginal + item.labelSuffix;
            }, 100);
          }
    
          popup.addEventListener('popuphidden', function onPopuphidden(event) {
            if (event.target != this)
              return;
            popup.removeEventListener('popuphidden', onPopuphidden);
            for (let item of popup.children) {
              if (item.localName == 'menu') {
                if (item.labelOriginal) {
                  item.label = item.labelOriginal;
                  item.labelOriginal = undefined;
                }
              }
            }
          });
    
        }
    
      }
    
      setTimeout(function() {
          setFunction();
      },50);
      
    })();
    Alles anzeigen
  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 20:08

    Vielen Dank.

    Ja, die alten hatte ich tatsächlich im falschen Ordner und die neuen konnte ich so nicht finden.

    Nun ist alles erledigt und Ihr seit meine Helden.

    Vielen Dank für die gute Zusammenarbeit :love:

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 19:02

    Hallo Milupo,

    ja der Ordner heißt auch tatsächlich userChromeJS.

    War ein Tippfehler.


    Hier noch ein Screenshot nachgereicht.

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 15:03

    Hier einmal die main.js:

    Code
    // main.js
    // ab Firefox Nightly 115.0a1
    
    /* ***** BEGIN LICENSE BLOCK *****
     * Version: MPL 1.1/GPL 2.0/LGPL 2.1
     *
     * The contents of this file are subject to the Mozilla Public License Version
     * 1.1 (the "License"); you may not use this file except in compliance with
     * the License. You may obtain a copy of the License at
     * http://www.mozilla.org/MPL/
     *
     * Software distributed under the License is distributed on an "AS IS" basis,
     * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     * for the specific language governing rights and limitations under the
     * License.
     *
     * The Original Code is the userChrome.js component.
     *
     * The Initial Developer of the Original Code is
     * Simon Bünzli <zeniko@gmail.com>
     *
     * Portions created by the Initial Developer are Copyright (C) 2007
     * the Initial Developer. All Rights Reserved.
     *
     * Contributor(s):
     * alta88 <alta88@gmail.com>
     * aborix <www.camp-firefox.de/forum>
     *
     * Alternatively, the contents of this file may be used under the terms of
     * either the GNU General Public License Version 2 or later (the "GPL"), or
     * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     * in which case the provisions of the GPL or the LGPL are applicable instead
     * of those above. If you wish to allow use of your version of this file only
     * under the terms of either the GPL or the LGPL, and not to allow others to
     * use your version of this file under the terms of the MPL, indicate your
     * decision by deleting the provisions above and replace them with the notice
     * and other provisions required by the GPL or the LGPL. If you do not delete
     * the provisions above, a recipient may use your version of this file under
     * the terms of any one of the MPL, the GPL or the LGPL.
     *
     * ***** END LICENSE BLOCK ***** */
    
    const { FileUtils } = ChromeUtils.importESModule(
      'resource://gre/modules/FileUtils.sys.mjs'
    );
    
    let UserChrome_js = {
    
      init: function() {
        Services.obs.addObserver(this, "final-ui-startup", false);
        Services.obs.addObserver(this, "domwindowopened", false);
      },
    
      // observer
      observe: function(aSubject, aTopic, aData) {
        switch (aTopic) {
          case "final-ui-startup":
            let path = PathUtils.profileDir;
            let ucFilePath = PathUtils.join(path, "chrome", "userChrome.js");
            let ucFile = new FileUtils.File(ucFilePath);
            if (!ucFile.exists()) {
              let path = PathUtils.join(ucjsDirPath, "Readme.txt");
              let readmeFile = new FileUtils.File(path);
              readmeFile.copyTo(ucFile.parent, "userChrome.js");
            };
            if (ucFile.exists() && ucFile.isFile()) {
              let path = PathUtils.join(ucjsDirPath, "utilities.js");
              this.utilFileURI = PathUtils.toFileURI(path);
              this.ucFileURI = PathUtils.toFileURI(ucFilePath);
    //        Services.obs.addObserver(this, "domwindowopened", false);
            };
            Services.obs.removeObserver(this, "final-ui-startup");
            break;
    
          case "domwindowopened":
            aSubject.addEventListener("load", this, {capture: true, once: true});
            break;
        }
      },
    
      // event listener for load
      handleEvent: function(aEvent) {
        let document = aEvent.originalTarget;
        let window = document.defaultView;
        if (document.location && document.location.protocol == "chrome:") {
          try {
            Services.scriptloader.loadSubScript(this.utilFileURI, window, "UTF-8");
            Services.scriptloader.loadSubScript(this.ucFileURI, window, "UTF-8");
          }
          catch (ex) {
            // script execution can be stopped with |throw "stop";|
            if (ex != "stop") {
              Cu.reportError(ex);
            }
          }
        };
      }
    
    };
    
    UserChrome_js.init();
    Alles anzeigen

    Und die config.js

    Code
    // config.js
    // ab Firefox Nightly 115.0a1
    try {
      Cu.importGlobalProperties(['PathUtils']);
    
      if (!Services.appinfo.inSafeMode) {
        let path = PathUtils.parent(PathUtils.xulLibraryPath);
        if (Services.appinfo.OS == 'Darwin') { // macOS
          path = PathUtils.join(PathUtils.parent(path), 'Resources');
        }
        var ucjsDirPath = PathUtils.join(path, 'userChromeJS');
        path = PathUtils.join(ucjsDirPath, 'main.js');
        const mainFileURI = PathUtils.toFileURI(path);
        Services.scriptloader.loadSubScript(mainFileURI, this, 'UTF-8');
      }
    }
    catch(e) {
      Cu.reportError(e);
    }
    Alles anzeigen

    Die main.js befindet sich auch im Ordner: UserChrome.JS userChromeJS (Tippfehler verbessert)

    Im Profil-Ordner ist noch diese Datei:

    Code
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");

    Nun erstmal Kaffee, muss den Kopf frei bekommen.

    []P <-- Hier auch für Alle. Bedient Euch.

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 14:47

    Habe ich auch schon gemacht.

    Werde es aber nochmal durchführen.


    So, alle Schritte nochmal nachvollzogen.

    Klappt nicht.

    Außerdem schrieb Sören von der Verbesserung Netzgeschwindigkeit in seinem Blog.

    Seit dem Update beobachte ich genau das Gegenteil.

    Der Fuchs lief noch nie so langsam wie seit dem Update auf Version 115.0.

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 14:43

    milupo:

    Scriptcache habe ich gelöscht und die beiden Dateien habe ich im Installationsordner, wie in #11 schon geschrieben aktualisiert.

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 14:34

    Ich hatte die Änderungen schon vorher gesetzt.

    Habe diese aber trotzdem nochmal aktualiert und jetzt auch die Version aus #8 geladen.

    Es klappt aber nicht.

    Es funktionieren keinerlei Skripte. Leider.

    Muss unter about:config evtl. was geändert werde?

    Und was ich auch versucht habe, den Fux komplett neu installiert und die gesicherten Dateien, bei geschlossenem Fuchs, kopiert.

  • CSS-Dateien werden nicht geladen

    • BarbaraZ-
    • 5. Juli 2023 um 13:27

    Moin,

    trotz aller Änderungen werden meine Css-Dateien nicht geladen.

    Habe hier mal den UserCSSLoader eingestellt.

    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 - 102*
    // @charset        UTF-8
    // @version        0.0.4K+
    // @note           Aktualisierung von Speravir - www.camp-firefox.de
    // @note           Fx92: getURLSpecFromFile() -> getURLSpecFromActualFile()
    // @note           AUTHOR_SHEET Verwendung hinzugefügt, wichtig: am Ende des Dateinamens .author.css
    // @note           Version 0.0.4.g ermoeglicht "Styles importieren" per Mittelklick und Verwendung
    // @note           eines anderen Dateimanager (siehe in Konfiguration)
    // @note           + ergänzt um einen Parameter für den Dateimanager (vFMParameter in der Konfiguration) von aborix
    // @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 ******
    
    CSS-Ordner im Chrome-Ordner erstellen, CSS-Dateien dort ablegen - speichern.
    Diejenigen, deren Dateiname mit "xul-" beginnen, diejenigen, die mit ".as.css" enden, sind AGENT_SHEET, 
    alle anderen 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
    Strg+Linksklick zum Anzegen im Dateimanager
    
    Verwenden des in "view_source.editor.path" angegebenen Editors
    Dateiordner kann in Konfiguration geändert werden
    
     **** Anleitung Ende ****/
    
    (function(){
    
    /* Konfiguration */
    // Position: als Menü anzeigen = 1, als frei verschiebbare-Schaltfläche = 0
    let position = 0;
    // alternativer Dateimanager, Bsp.:
    // let filemanager = "C:\\Programme\\totalcmd\\TOTALCMD.EXE";
    let filemanager = "";
    // eventuelle Parameter für den alternativen Dateimanager, sonst filemanagerParam = "";
    let filemanagerParam = "";
    // Unterordner für die CSS-Dateien:
    let cssFolder = "CSS";
    // zusätzlich Chrome-Ordner im Untermenü anzeigen: 1 = ja, 0 = nein
    let showChrome = 0;
    /* Ende Konfiguration */
    
    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; }
    
    const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    
    if (window.UCL) {
        window.UCL.destroy();
        delete window.UCL;
    }
    
    window.UCL = {
        vFileManager: filemanager,
        vFMParameter: filemanagerParam,
        USE_UC: "UC" in window,
        AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET,
        USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET,
        AUTHOR_SHEET: Ci.nsIStyleSheetService.AUTHOR_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(cssFolder);
            }
            if (!aFolder.exists() || !aFolder.isDirectory()) {
                aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
            }
            delete this.FOLDER;
            return this.FOLDER = aFolder;
        },
        get CHRMFOLDER() {
            let bFolder;
            try {
                // UserCSSLoader.CHRMFOLDER verwenden
                let CHRMfolderPath = this.prefs.getCharPref("CHRMFOLDER");
                bFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile)
                bFolder.initWithPath(CHRMfolderPath);
            } catch (e) {
                bFolder = Services.dirsvc.get("UChrm", Ci.nsIFile);
            }
            if (!bFolder.exists() || !bFolder.isDirectory()) {
                bFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664);
            }
            delete this.CHRMFOLDER;
            return this.CHRMFOLDER = bFolder;
        },
    
        getFocusedWindow: function() {
            let win = document.commandDispatcher.focusedWindow;
            if (!win || win == window) win = content;
            return win;
        },
    
        init: function() {
            let cssmenu = $C("menu", {
                id: "usercssloader-menu",
                label: "CSS",
                tooltiptext: "UserCSSLoader\n\nLinksklick: Stylesheets anzeigen\nMittelklick: Styles importieren",
                accesskey: "C",
                onclick: "if (event.button == 1) UCL.rebuild()"
            });
            let menupopup = $C("menupopup", {
                id: "usercssloader-menupopup"
            });
            cssmenu.appendChild(menupopup);
    
            let menu = $C("menu", {
                label: "Style-Loader-Menü",
                id: "style-loader-menu",
                accesskey: "M"
            });
            menupopup.appendChild(menu);
            menupopup.appendChild($C("menuseparator"));
            
            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();"
            }));
            if (showChrome == 1) {
              mp.appendChild($C("menuitem", {
                label: "Chrome Ordner öffnen",
                accesskey: "O",
                oncommand: "UCL.openCHRMFolder();"
              }));
            }
            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",
                      hidden: false,
                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(XULNS, 'toolbaritem');
                    toolbaritem.id = 'usercssloader-menu-item';
                    toolbaritem.className = 'chromeclass-toolbar-additional';
                    return toolbaritem;
                }
            });
            $('usercssloader-menu-item').appendChild(cssmenu);
    
            if (position == 1) {
            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 = $C("menuitem", {
                    label : aLeafName,
                    id : "usercssloader-" + aLeafName,
                    class : "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : CSS.SHEET == this.AUTHOR_SHEET? "AUTHOR_SHEET": "USER_SHEET"),
                    type : "checkbox",
                    autocheck : "false",
                    oncommand : "UCL.toggle('"+ aLeafName +"');",
                    onclick : "UCL.itemClick(event);",
                    onmouseup : "if (event.button == 1) event.preventDefault();",
                    tooltiptext : "Linksklick: an/aus, Menü schließt\nMittelklick: an/aus, Menü bleibt offen\nRechtsklick: bearbeiten\nStrg+Linksklick: im Dateimanager anzeigen"
                    });
                document.getElementById("usercssloader-menupopup").appendChild(menuitem);
            }
            menuitem.setAttribute("checked", CSS.enabled);
        },
        toggle: function(aLeafName) {
            var CSS = this.readCSS[aLeafName];
            if (!CSS || event.ctrlKey) return;
            CSS.enabled = !CSS.enabled;
            this.rebuildMenu(aLeafName);
        },
        itemClick: function(event) {
            let label = event.currentTarget.getAttribute("label");
            
            if (event.button == 0) {
               if (event.ctrlKey) {
                  event.preventDefault();
                  event.stopPropagation();
                  UCL.openFolder (label);
               } else {return;
               }
            }
                  event.preventDefault();
                  event.stopPropagation();
            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(label){
            if (label) {
            var target= this.FOLDER.path +  "\\" + label
            } else {
               var target= this.FOLDER.path
            }
            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.vFMParameter,target];
                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();
            }
        },
        openCHRMFolder: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.vFMParameter,this.CHRMFOLDER.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.CHRMFOLDER.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 = $C("menuitem", {
                    label : aLeafName,
                    tooltiptext : fileURL,
                    id : "usercssloader-" + aLeafName,
                    type : "checkbox",
                    autocheck : "false",
                    checked : "true",
                    oncommand : "if (!event.ctrlKey) {this.setAttribute('checked', !(this.css.disabled = !this.css.disabled));}",
                    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).getURLSpecFromActualFile(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:
            /\.author\.css$/i.test(this.leafName)?
            Ci.nsIStyleSheetService.AUTHOR_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(); // true, wenn die Datei existiert
            var lastModifiedTime = isExists ? aFile.lastModifiedTime : 0;
            var isForced = this.lastModifiedTime != lastModifiedTime; // true, wenn es eine Änderung in der Datei gibt
            var fileURL = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromActualFile(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="de"><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"||"https") === 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

    Meine Vermutung: Es läuft dort was unrund.

    Ich kann aber auch keine andere Version finden.

  • Abstand oberhalb und unterhalb der Trennlinie in Sidebar

    • BarbaraZ-
    • 4. Juli 2023 um 11:25

    Moin,

    vielen Dank für Eure Hilfe. :thumbup:

    Ich habe die von Euch hier eingestellten Vorschläge ausprobiert, hilft nichts.

    Bei:

    Spoiler anzeigen

    treechildren::-moz-tree-row

    färbt sich lediglich der Hintergrund ein.

    Für mich ist es dann erledigt.

  • Abstand oberhalb und unterhalb der Trennlinie in Sidebar

    • BarbaraZ-
    • 3. Juli 2023 um 13:43

    Hierzu gibt es keinen Code.

    Rechtsclick mit Maus, dann in sich öffnenden Fenster auf: Trennlinie hinzufügen. Fertig.

    Zum Löschen einfach auf Trennlinie und: Löschen. Mehr habe ich nicht.

    Was ich anbieten kann ist:

    CSS
    /*Sidebar-Lesezeichen-Hintergrund*/
    
    #bookmarks-view,sidebarheader,#sidebar-box,.sidebar-placesTreechildren,
    #sidebar-search-label,#sidebar-search-container,#placesList > treechildren {
    
    appearance: none !important;
    background: #666699 !important; }

    und

    CSS
    /* Schrift in der Sidebar anpassen */
    
    @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml") {
    treechildren::-moz-tree-cell-text {
         appearance: none !important;
         font-weight: bold !important;
         font-size: 13px !important;
         font-family: Helvetica, Arial, Geneva, sans-serif !important;
         color: yellow !important;
         }
    }
    Alles anzeigen

    Sonst wird die Sidebar nirgends angesprochen.

  • Abstand oberhalb und unterhalb der Trennlinie in Sidebar

    • BarbaraZ-
    • 3. Juli 2023 um 11:33

    Moin, der Abstand bei den Trennlinien (davon habe ich mehrere gesetzt) ist mir zu raumfüllend.

    Dieses hätte ich gerne geändert.

    Wie kann ich dieses bewerkstelligen?

  • Fehlerhafte Grafikdarstellung bei bestimmten Websites

    • BarbaraZ-
    • 21. Juni 2023 um 12:38

    Da war der Andreas schneller.

    Mahlzeit zusammen

  • Der Glückwunsch-Thread

    • BarbaraZ-
    • 10. Juni 2023 um 12:08

    Die besten Glückwünsche zum Geburtstag an *Nobbi*.

    Genieße den Tag bei den schönen Wetter.

  • Offenbar funktionieren alle Benutzerskripte nicht mehr im Nightly

    • BarbaraZ-
    • 9. Juni 2023 um 18:59

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    Bin dann erstmal weg. Bis späders.

  • Offenbar funktionieren alle Benutzerskripte nicht mehr im Nightly

    • BarbaraZ-
    • 9. Juni 2023 um 18:55

    Jepp, das mit den Straßenräubern zieht immer und ich war sogar 2021 an Deutschlands größter jemals vorhandenen Verpflegungsstelle im Ahrtal im Einsatz.

    Habe 10 Tag eine Feldküche dort im Rahmen des DRK betrieben.

    Es war die Verpflegungsstelle 10.000. Wobei 10.000 für die Menge an Essen stand, die wir dreimal am Tag für fast 10.000 Leute am 13 Feldküchen produziert haben.

  • Offenbar funktionieren alle Benutzerskripte nicht mehr im Nightly

    • BarbaraZ-
    • 9. Juni 2023 um 18:46

    Wenn das so ist.

    Ich bin schon auf Pension und übe meinen Sanitätsdienst nur im Ehrenamt aus.

    Bin jetzt 67 Jahre und 3 Monate alt.

    Aber was soll ich sagen, war über 30 Jahre bei den Straßenräubern (Finanzamt) tätig und gehörte zu den Beamtinnen, die in der EDV, wie es zu meiner Zeit hieß tätig war.

    Habe noch gelernt Lochkarten und Lochstreifen zu lesen und auch die 8,5 Zoll-Disketten sind mir noch geläufig gewesen.

  • 2022-Update: Aktualisierung auf WoltLab Suite 5.5 & mehr

    • BarbaraZ-
    • 1. Juni 2023 um 12:50

    Danke für die Aktualisierung und für Deine Arbeit an und in diesem Forum. :thumbup: <3

Unterstütze uns!

Jährlich (2025)

92,9 %

92,9% (604,17 von 650 EUR)

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