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. Son Goku

Beiträge von Son Goku

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 10. September 2021 um 22:33

    ich habe mir es auch Notirt diesmal mit dem Schreibschutz ;)

    achso und ich meinte die Datei ist nicht Schreibgeschützt.

    Sorry..Danke für die Arbeit milupo. jedenfalls weis man jetzt woher der Schreibschutz kommt.

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 10. September 2021 um 20:48
    Zitat von milupo
    Zitat von Son Goku

    welcher Schreibschutz ?

    Der Ordner userChromeJS könnte schreibgeschützt sein.

    lol man bin ich blöde, da hätte ich auch von alleine drauf kommen können das der komplette Ordner und nicht nur die Datei Schreibgeschützt ist.

    ohman.

    Danke für den Hammer.

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 10. September 2021 um 17:39

    wie immer ist der fehler vorm Computer :)

    Man sollte auch mal bis zum ende lesen und nicht nur den Anfang


    welcher Schreibschutz ?

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 10. September 2021 um 12:31

    jetzt hat es geklappt.

    iich habe kopiert wie ein blöder im Notepad++ den Code rein, abgespeichert, Datei umbenannt, Datei an einen anderen Ort kopiert und umbenannt und wieder zurück kopiert usw.

    es wurde einfach nicht gepsichert im Notepad++ der neue CSS Code.

    Jetzt wo ich die Zeile 113 und 142 geändert habe und gepeichert habe, hat es funktioniert.

    komisch jedenfalls das er den kompletten Code nin der Datei nicht gepsichert hat aber wenn ich nur die änderung gemacht habe das es gespciehrt wird.

    Naja besten Dank jedenfalls für die Zeilen angaben was geändert wurde.

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 20:21
    Zitat von 2002Andreas
    Zitat von Son Goku

    aber nur ab Version 92 nebend nicht mehr ?

    Weil dafür die neue Datei/Inhalt benötigt wird. ;)

    Du hast den Fx mal im abges. Modus gestartet?

    Bei mir musste ich das in einem Profil sogar mehrmals machen.

    ja x mal schon auf "öffnen"

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 20:12

    ja ist alles da wo es soll und wie gesagt die userscripte laufen ja seit Version 89 bei mir ohne Probleme bis heute zum Update.

    Den Part mit den Scripten habe ich schon lange verstanden mit der vorbeereitung ;)

    aber nur ab Version 92 nebend nicht mehr ?

    ich habe nur einmal Firefox installiert

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 20:04

    Installationsordner = wo die firefox.exe liegt in diesem Ordner "userChromeJS"

    sonst habe ich auf der SSD keine andere Datei die so heist "C:\Program Files\Mozilla Firefox\userChromeJS"


    Zitat von milupo
    Zitat von Son Goku

    genau das habe ich ja gemacht

    mein inhalt

    Nein, denn das ist die alte, nicht mehr funktionierende Version. Du solltest doch von hier:

    Beitrag

    Firefox 115 - Wichtige Änderung zur Nutzung von Skripten!

    Bezogen auf diesen Thread:

    RE: Offenbar funktionieren alle Benutzerskripte nicht mehr im Nightly müssen 2 Dateien ab Firefox Version 115 neu angepasst werden.

    (Das sollte/kann auch schon für die aktuelle Firefox Version 114 gemacht werden, obwohl es erst die Firefox Version 115 betrifft)

    Hier habe ich mal eine Zusammenfassung erstellt was geändert werden muss, damit die Scripte wieder funktionieren.

    Bitte auch die Hinweise am Ende dieses Threads beachten. :!:

    Für die Nutzung von Scripten muss im …
    2002Andreas
    6. August 2021 um 13:59

    den Code aus dem ersten Kasten - das ist der für die utilities.js - kopieren und dann im Installationsverzeichnis die dortige utilities.js überschreiben.

    das habe ich jetzt drei mal gemacht aus dem ersten Kasten den Code koüpiert.

    habe sogar nur in Notepad++ eingefügt und irgendwo anderes auf Platte abgespeichert umbenannt in "utilities.js" und dorthin kopiert und überschrieben.

    es geht einfach nicht.

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 19:48

    komplett neu install mit Scripte usw wurde seit Firefox 89.0.2 (20210622155641) nicht mehr gemacht.

    deswegen stehe ich jetzt ein wenig uf den Schlauch was ich eigentlich ändern muß.

    wie gesagt, es funktionierte ja alles bis zum heutigen Update auf 92.


    Zitat von milupo

    Kopiere einfach den Code für die utilities.js aus dem Beitrag hinter meinem Link, gehe ins Installationsverzeichnis in den Ordner userChromeJS, öffne dort die utilities.js, mache „Alles auswählen“ und dann „Einfügen“. Speichere dann die utilities.js und starte Firefox neu.

    genau das habe ich ja gemacht

    mein inhalt

    Code
    // utilities.js
    
    /* ***** 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 userChromeJS utilities.
     *
     * The Initial Developer of the Original Code is
     * alta88 <alta88@gmail.com>
     *
     * Portions created by the Initial Developer are Copyright (C) 2014
     * the Initial Developer. All Rights Reserved.
     *
     * Contributor(s):
     * 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 ***** */
    
    /* ........ Utility functions ............................................... */
    
    var userChrome = {
    
      path: null,
      dirToken: null,
      ignoreCache: false,
    
      get loadOverlayDelay () {
        if (!this._loadOverlayDelay)
          this._loadOverlayDelay = 500;
        return this._loadOverlayDelay;
      },
    
      set loadOverlayDelay(delay) {
        this._loadOverlayDelay = delay;
      },
    
      get loadOverlayDelayIncr() {
        if (!this._loadOverlayDelayIncr)
          this._loadOverlayDelayIncr = 1600;
        return this._loadOverlayDelayIncr;
      },
    
      set loadOverlayDelayIncr(delay) {
        this._loadOverlayDelayIncr = delay;
      },
    
      import: function(aPath, aRelDirToken) {
        let file;
        this.path = aPath;
        this.dirToken = aRelDirToken;
    
        if (aRelDirToken) {
          // Relative file
          let absDir = this.getAbsoluteFile(aRelDirToken);
          if (!absDir)
            return;
          let pathSep = absDir.path.match(/[\/\\]/)[0];
          file = absDir.path + (aPath == "*" ?
              "" : pathSep + aPath.replace(/[\/\\]/g, pathSep));
        }
        else
          // Absolute file
          file = aPath;
    
        file = this.getFile(file);
        if (!file)
          return;
        if (file.isFile()) {
          if (/\.js$/i.test(file.leafName))
            this.loadScript(file, aRelDirToken, null);
          else if (/\.xul$/i.test(file.leafName)) {
            let xul_files = [];
            xul_files.push(file);
            this.loadOverlay(xul_files, this.dirToken, null, this.loadOverlayDelay);
    //      this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr;
          }
          else
            this.log("File '" + this.path +
                     "' does not have a valid .js or .xul extension.", "userChrome.import");
        }
        else if (file.isDirectory())
          this.importFolder(file);
        else
          this.log("File '" + this.path +
                   "' is neither a file nor a directory.", "userChrome.import");
      },
    
      loadScript: function(aFile, aFolder, aRelDirToken) {
        setTimeout(function() {
          Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
                    .getService(Components.interfaces.mozIJSSubScriptLoader)
                    .loadSubScriptWithOptions(userChrome.getURLSpecFromFile(aFile),
                                              {target: window,
                                               charset: userChrome.charSet,
                                               ignoreCache: userChrome.ignoreCache});
          // log it
          userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" +
              (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFile.leafName) :
              aFile.path, "userChrome.loadScript");
        }, 0);
      },
    
      // XXX: Due to bug 330458, an overlay must finish before another can be
      // called, otherwise neither are successful.  Implementing an observer to
      // serialize is better left as a fix in the core bug.  Here, settimout values
      // are set to minimize but there is no quarantee; overlay cdata (if any)
      // needs to consider overlay completions and logging does not strictly mean
      // an overlay has completed, rather that the overlay file has been invoked.
    
      loadOverlay: function(aFiles, aRelDirToken, aFolder, aDelay) {
    //userChrome.log(aDelay+" multiple import delay", userChrome.loadOverlay);
        // Increment multiple import delay
        this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr;
        setTimeout(function() {
          if (aFiles.length > 0) {
    //userChrome.log(userChrome.loadOverlayDelay+" inter folder delay", userChrome.loadOverlay);
            // log it
            userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" +
                (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFiles[0].leafName) :
                aFiles[0].path, "userChrome.loadOverlay");
            document.loadOverlay(userChrome.getURLSpecFromFile(aFiles.shift()), null);
            setTimeout(arguments.callee, userChrome.loadOverlayDelay);
          }
        }, aDelay);
      },
    
      // Include all files ending in .js and .xul from passed folder
      importFolder: function(aFolder) {
        let files = aFolder.directoryEntries
                           .QueryInterface(Components.interfaces.nsISimpleEnumerator);
        let xul_files = [];
    
        while (files.hasMoreElements()) {
          let file = files.getNext().QueryInterface(Components.interfaces.nsIFile);
          if (/\.js$/i.test(file.leafName) && file.leafName != "userChrome.js")
            this.loadScript(file, this.path, this.dirToken);
          else if (/\.xul$/i.test(file.leafName)) {
            xul_files.push(file);
          }
        }
    
        if (xul_files.length > 0)
          this.loadOverlay(xul_files, this.dirToken, this.path);
      },
    
      getFile: function(aPath, aRelDirToken) {
        try {
          let file = Components.classes["@mozilla.org/file/local;1"]
                               .createInstance(Components.interfaces.nsIFile);
          file.initWithPath(aPath);
          // Bad file doesn't throw on initWithPath, need to test
          if (file.exists())
            return file;
          this.log("Invalid file '" + this.path + (this.dirToken ?
              ("' or file not found in directory with token '" + this.dirToken) :
              "") + "' or other access error.", "userChrome.getFile");
        }
        catch (e) {
          // Bad folder throws on initWithPath
          this.log("Invalid folder '" + this.path + (this.dirToken ?
              ("' or folder not found in directory with token '" + this.dirToken) :
              "") + "' or other access error.", "userChrome.getFile");
        }
        return null;
      },
    
      getAbsoluteFile: function(aRelDirToken) {
        try {
          let absDir = Components.classes["@mozilla.org/file/directory_service;1"]
                                 .getService(Components.interfaces.nsIProperties)
                                 .get(aRelDirToken, Components.interfaces.nsIFile);
          return absDir;
        }
        catch (e) {
          this.log("Invalid directory name token '" + this.dirToken +
                   "' or directory cannot be accessed.", "userChrome.getAbsoluteFile");
          return null;
        }
      },
    
      getURLSpecFromFile: Components.classes["@mozilla.org/network/io-service;1"]
                                    .getService(Components.interfaces.nsIIOService)
                                    .getProtocolHandler("file")
                                    .QueryInterface(Components.interfaces.nsIFileProtocolHandler)
                                    .getURLSpecFromFile,
    
      /* Console logger */
      log: function(aMsg, aCaller) {
        Components.classes["@mozilla.org/consoleservice;1"]
                  .getService(Components.interfaces.nsIConsoleService)
                  .logStringMessage(this.date + " userChromeJS " +
                                    (aCaller ? aCaller +": " : "") + aMsg);
      },
    
      get dateFormat() {
        if (!this._dateFormat)
          this._dateFormat = "%Y-%m-%d %H:%M:%S";
        return this._dateFormat;
      },
    
      set dateFormat(format) {
        this._dateFormat = format;
      },
    
      get date() {
        let date = new Date();
    //  return date.toLocaleFormat(this.dateFormat);
        try {
          date = date.toLocaleFormat(this.dateFormat);
        } catch(e) {
          date = date.toString();
        };    
        return date;
      },
    
      set charSet(val) {
        this._charSet = val;
      },
    
      get charSet() {
        if (!this._charSet)
          this._charSet = "UTF-8"; // use "UTF-8". Defaults to ascii if null.
        return this._charSet;
      }
    
    };
    Alles anzeigen
  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 16:08

    da ich das "userCSSLoader.uc.js" nicht nutze, brauche ich auch nicht die änderungen in der "utilities.js" zu machen.

    also welche änderungen muß ich dann machen wenn der firefox kopmplett neu installiert wurde in Version 92 ?

    irgendwie funktioniert garnix bei mir mit Scripte.

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 13:32

    oh ein eigener Beitrag.

    und öhm ich habe doch nur upgedated und mehr nicht.

    Dieses script funktioniert nicht.

    Das Script für den ProfilOrdner funktioniert auc nicht mehr, Die suche eingabe direkt löschen auch nicht.

    habe ich was verpasst und muß eventl. noch was gemacht werden damit die Scripte laufen ?

  • Skript für Tabs am unteren Rand des Monitors funktioniert nicht mehr

    • Son Goku
    • 9. September 2021 um 12:40

    Huhu,

    seit Firefox Update auf Version 92 funktioniert folgendes Script nicht mehr

    Code
    (function(){
    
    try {
    
    var vbox = document.createXULElement('vbox');
    
    document.getElementById("navigator-toolbox").parentNode.parentNode.insertBefore(
    
    vbox, document.getElementById("browser-bottombox"));
    
    vbox.appendChild(document.getElementById("TabsToolbar"));
    
    }catch(e) {}
    
    })();
    Alles anzeigen

    Das Script bewirkt das die komplette Tableiste direkt unter dem Inhalt (am unteren Rand des Monitors) platziert wird.

    könnte man das wieder hinbekommen ?

    es kommen bestimmt noch andere us.js dazu. :)

  • Photon Design System - Farbcode für Blau 80 und Blau 90 ?

    • Son Goku
    • 8. September 2021 um 00:03

    LOL

    Danke, bei mir hat es gerade nicht geklappt.

    Dachte das Netz hängt mal wieder fest, da mein Soihn auch nachgefragt hat.

    alles klar, ok passt wieder.

  • Photon Design System - Farbcode für Blau 80 und Blau 90 ?

    • Son Goku
    • 7. September 2021 um 23:48

    Hallo,

    ich bräuchte den Farbcode Blue 80 und Blue 90 für Firefox Photon Desiogn.

    Leider ist die Umleitung nicht richtig von https://design.firefox.com/photon/

    Visuals -> Color


    kann ir jemand den Hex Code Blue 80 und Blue 90 geben ?

  • TabScrollPfeile rechts und Links

    • Son Goku
    • 24. August 2021 um 23:27

    oh, das habe ich garnicht mitbekommen das Script von aborix :(

    ohman dann werde ich mich in ruhe mal daran versuchen wenn es nicht anderes geht.

    Danke für den Hinweis.

  • TabScrollPfeile rechts und Links

    • Son Goku
    • 24. August 2021 um 23:10

    Hallo,

    ich habe nichts dagen wenn mal was nicht auf anhieb klappt aber hier bei verzeifel ich noch.

    Ich möchte gerne die ScrollPfeile in der Tableiste die links und rechts sind Farblich ändern.

    Der Original Code aus der Browser.css ist wie folgt

    mein CSS Code klappt aber nicht.

    Es gibt keine Konflikte da das der einzige CSS Code ist und im neuen Profil.

    Und ja den Teil für CSS habe ich Aktiviert üer about:config ;)

    warum nicht ?

    CSS
    #tabbrowser-arrowscrollbox::part(scrollbutton-up), 
    #tabbrowser-arrowscrollbox::part(scrollbutton-down) {
        fill: rgb(18, 18, 146) !important;
    }
  • LZ hinzufügen direkt im Ordner ?

    • Son Goku
    • 19. August 2021 um 01:24

    aa ja,

    alles klar.

    ohman Danke

  • LZ hinzufügen direkt im Ordner ?

    • Son Goku
    • 18. August 2021 um 22:13
    Zitat von .DeJaVu

    Bitte

    Bookmark Tab Here

    aa besten Dank.


    kann es sein das ich einen Denkfehler habe bei folgenden Setting ?

    Das wäre Standard wenn ich mich net irre.

    aber angezeigt wird mir der eintrag unten.

    sollte der Eintrag net ganz oben über Öffnen stehen ?

  • LZ hinzufügen direkt im Ordner ?

    • Son Goku
    • 18. August 2021 um 16:09

    Hallo,

    gibt es eventl ein Script oder kann das jemand erstellen das man die Website also das Lesezeichen direkt in den richtigen Ordner einfügen kann ohne das über den Stern in der Adressleiste machen zu müssen ?

    Beipsiel

    2 <- alle in Tabs öffen

    Lesezeichen hier hinzufügen

    Bilder

    • Unbenannt-33.png
      • 20,46 kB
      • 615 × 239
  • Script Speichern in für Fx 78 wieder anpassen

    • Son Goku
    • 3. August 2021 um 20:59

    jetzt klappt es bei mir auch ;)

    ich habe aus meinen Beitrag #124 das Script verwendet mit folgenden Eintrag in der user.js

    Code
    user_pref("browser.helperApps.deleteTempFileOnExit", false);

    naja jedenfalls klappt es das die PDF Datei behalten wird.

    hoffe das dieser Schalter nicht irgendwann verschwindet.

    auch dir ein grosses Danke FuchsFan für die Infos und der Mühe nochmal alles durch zugehen.

  • Script Speichern in für Fx 78 wieder anpassen

    • Son Goku
    • 2. August 2021 um 21:08
    Zitat von FuchsFan
    Zitat von Son Goku

    Die PDF Datei wird direkt gelöscht.

    Das war ab Version 90 zwar nicht der Fall, aber sie wurden nach dem Download gleich geöffnet.

    Erst nachdem ich in der handlers.json den Wert {"defaultHandlersVersion":{"de":4},"mimeTypes":{"application/pdf":{"action":0,"extensions":["pdf"],"ask":true}, von 4 auf 0 geändert habe, ist es wieder vorbei.

    Die 4 ist wieder automatisch mit einem der Updates gesetzt worden, wann kann ich nicht sagen.

    wenn ich eine Null eintrage an statt die 4 und abspeichere. Danach den Fux neu starte steht wieder eine 4 da ?


    Zitat von 2002Andreas
    Zitat von Son Goku

    Die PDF Datei wird direkt gelöscht.

    Kann ich hier nicht bestätigen :/

    Egal ob auf C: oder einer 2ten Platte D:, die pdf Datei wird hier nicht gelöscht.

    Das hattest du gesehen?

    #113

    mit diesem Script, wird die Datei beim beenden des Fux automatisch von der Festplatte bei mir gelöscht.

    windows 10 Pro Firefox 90.0.2 (64 bit)


    benutztes Script

    CSS
    // ==UserScript==
    // @include       chrome://mozapps/content/downloads/unknownContentType.xhtml
    // @charset       UTF-8
    // @version       Fx78+
    // ==/UserScript==
    (function() {
        
        const Cu = Components.utils;
        if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
        if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
    
        setTimeout(function() {
             saveTo()
        }, 200);
    
    
        function saveTo() {
            // Config
            var dirArray = [
          ['G:\\Kontoauszug\\Sparkasse\\2021', 'G:\\Kontoauszug\\Sparkasse\\2021'],
          ['G:\\Kontoauszug\\Volksbank\\2021', 'G:\\Kontoauszug\\Volksbank\\2021']
        ];
    
            let button = document.getElementById("unknownContentType").getButton("cancel");
            let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
            var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
                
            saveTo.classList.toggle("dialog-button");
            saveTo.label = "Speichern nach";
            saveTo.type = "menu";
            
            var css =`
            
                  /* wenn Schriftfarbe anders für DropDown
          hbox.dialog-button-box button.dialog-button menupopup {
            color:red !important;
          }
          */
    
          hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
            background: #6200a4 !important;    /* Purple 70 */
            color: #ffe900 !important;         /* Yellow 50 */
          }
    
          hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
            padding-left:5px !important;
          }
    
          hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text{
            font-weight: 700 !important;
            padding:5px 10px 5px 5px !important;
          }
    
    
    `;
    
            var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
            var uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
            sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
            
            dirArray.forEach(function(dir) {
                var [name, dir] = [dir[1], dir[0]];
                var mi = document.createXULElement("menuitem");
                var item = saveToMenu.appendChild(mi);
                item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
                item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
                item.setAttribute("class", "menuitem-iconic");
                item.addEventListener("command", function() {
                    var file = new FileUtils.File(dir.replace(/\\/g, '\\\\') + '\\\\' + (document.getElementById('locationtext') ? document.getElementById('locationtext').value : document.getElementById('location').value));
                     dialog.mLauncher.saveDestinationAvailable(file);
                    dialog.onCancel = function() {};
                    close();
                });
            });
            
        
            
        }
    }());
    Alles anzeigen

    Bilder

    • Unbenannt-333.png
      • 210,37 kB
      • 1.999 × 1.085
    • Unbenannt-33.png
      • 145,74 kB
      • 1.534 × 968

Unterstütze uns!

Jährlich (2025)

104,5 %

104,5% (679,10 von 650 EUR)

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