Funktion für Script gesucht (userButton für "Ordner leeren" erstellen)

  • Um Rückfragen vorzubeugen, bitten wir um folgende Angaben:

    • Thunderbird-Version: 68.x
    • Betriebssystem + Version: Linux Mint Cinnamon 19.2


    Hallo.

    Ich migriere gerade von Outlook 2010 zu TB.

    Viel zu tun, aber das Meiste habe ich schon hinbekommen.


    Mir fehlen ein paar in Outlook sehr gerne verwendete Standard-Buttons zur Verwaltung der Nachrichten und Ordner.

    Hier z.B. einen zum leeren von Ordnern (egal, welche Variante: Papierkorb oder x-beliebiger anderer Ordner).

    Der Standard-Löschbutton will ja den ganzen Ordner löschen (was ich etwas merkwürdig finde). Oder kann man das Verhalten ändern? Nichts dazu gefunden.


    Das Anlegen von Extra-Buttons per userScript kann ich schon :) (zumindest das Grundgerüst).

    Einiges ist ja hier im Forum schon beschrieben oder kann von Firefox kopiert / angepaßt werden.


    Was mir aber immer schon Probleme gemacht hat, ist das Herausfinden der richtigen Funktion / des Befehls im Script zur Erledigung der gewünschten Aufgabe.


    Hier speziell suche ich nach der Funktion, die ohne große Rückfrage einen Ordner leert (und nicht den Ordner löscht).

    Dabei kann der Inhalt ohne das er markiert wurde in den Papierkorb verschoben werden.

    Ist es ein Papierkorb, soll der ebenfalls geleert werden.


    "doEmtyFolder()" habe ich mir als Hinweis ausgedacht (der geht natürlich nicht), das wäre so ein Befehl, den ich suche.


    Gibt es denn vielleicht eine Liste der internen Befehle?

    Danke für die Hilfe.


    PS.: hier noch das kleine Script-Gerüst.

    Für Interessierte : ich habe eine unsiverselle Pfadansprache für die Button-Icons verwendet. Die funktioniert unter Linux und Windows (wegen der Backslashes) und braucht nicht angepaßt zu werden. Setzt in dieser Form die Button-Icons im Verzeichnis %Profilordner%/chrome/icons/ (bzw. unter Win %Profilordner%\chrome\icons\) vorraus.


  • graba

    Approved the thread.
  • Habe selbst den Befehl zum Leeren des Papierkorbs gefunden.


    gFolderTreeController.emptyTrash()


    Gibt es einen ähnlichen Befehl zum Leeren anderer Ordner (Verschieben der Nachrichten in den Papierkorb)?


    Script für einen zusätzlichen Button, der den Papierkorb des aktuell im Konten- / Ordnerfenster selektierten Kontos / Lokalen Ordners löscht. Der Papierkorb muß dazu nicht selektiert sein.


  • Danke fürs teilen, hat auch bei mir einen Platz gefunden ;)

    Was muß ich in der Zeile 32

    toolbar.insertItem("EmptyTrashFolder-button", toolbar.lastChild);

    ändern, um das weiter links, zwischen "Verfassen" und "Chat" zubekommen?

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable

  • Bitte, gerne.


    Und wenn ich das genau wüsste... Bin keiner, der sich wirklich auskennt!

    Es geht z.B. "firstChild". Und natürlich ein händisches Verschieben.


    Und das geht (der Neue wird hier vor dem AddOn-Button eingefügt):

    Code
    1. var toolbar = document.getElementById("mail-bar3");
    2. var newposition = document.getElementById("button-addons");
    3. toolbar.insertItem("EmptyTrashFolder-button", newposition);

    Man benötigt die ID (hier der Buttonbezeichner) als Parameter.


    Habe diese Codeschnipsel auch nur im Prinzip zusammengesucht.


    Und statt "mail-bar3" (die Standard Symbol- / Buttonleiste) kann u.a. stehen:


    mail-toolbar-menubar2 (Menüleiste)

    tabbar-toolbar (Toolbar in der Tableiste rechts)


    Diese "IDs" und "Orte" habe ich mit dem Inspektor herausgefunden oder hier im Forum aus anderen Beispielen.

    Habe aber den Eindruck, daß das nicht ganz zuverlässig klappt.

    Ist auch sehr von der TB-Version abhängig.

  • ....

    Und wenn ich das genau wüsste... Bin keiner, der sich wirklich auskennt!


    Und das geht (der Neue wird hier vor dem AddOn-Button eingefügt):

    Code
    1. var toolbar = document.getElementById("mail-bar3");
    2. var newposition = document.getElementById("button-addons");
    3. toolbar.insertItem("EmptyTrashFolder-button", newposition);

    Man benötigt die ID (hier der Buttonbezeichner) als Parameter.

    Danke Thomas, hat geklappt :thumbsup: und ich hab auch wieder ein wenig dazugelernt :)

    :whistling: Ich bin auch nur ein "Jäger und Sammler" und versuche mit interessante Sachen TB und FF für mich zu pimpen und beim Abgucken/Anpassen auch noch was zu lernen.

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable

  • Habe selbst den Befehl zum Leeren des Papierkorbs gefunden.


    gFolderTreeController.emptyTrash()

    Wo/wie hattest Du das denn gefunden?

    Ich möchte jetzt dasselbe für "Junk" haben/machen - hab aber kein Plan wo ich suchen/nachgucken soll...

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable

  • In den Tiefen des www :S

    Oder z.B. in einer alten Erweiterung, die das macht, was man will, im Code nachsehen.

    Oder die Befehle der Funktion goDoCommand("cmd_xxx")

    hier zu finden

    Das Problem ist, das ich keine umfassende Referenz gefunden habe, alles setzt sich aus vielen Einzelfundstellen im www zusammen. Googlen, lesen, probieren...


    Du brauchst wahrscheinlich cmd_deleteJunk, was ich nicht verwende, weil ich Junk erst liste, den Betreff ansehe und dann mit "Ordner leeren" die Junk lösche. Brauch also keinen zusätzlichen Button dafür.

    Edited once, last by Thomas S. ().

  • Umpfff...

    schon wieder Böhmische Dörfer...


    Nuja, wäre zwar das Sahnehäuptchen gewesen, aber wenn ichs nicht hinbekomme, bricht auch keine Welt zusammen.


    Ich muß ja sowieso erstmal abwarten, bis sich wieder was im Junk-Ordner einfindet...


    Nichtsdestotrotz:

    :thumbsup: Danke, Thomas für den Link, habbich mal was für "Stille Stunden" zum lesen und rumtesten...

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable

  • abwarten, bis sich wieder was im Junk-Ordner einfindet

    Nö. Irgendeine Email dahin kopieren...

    Versuche doch mal goDoCommand("cmd_deleteJunk") anstelle gFolderTreeController.emptyTrash() im Code.

    Versuch macht bekanntlich kluch.

  • Nö. Irgendeine Email dahin kopieren...


    Versuche doch mal goDoCommand("cmd_deleteJunk") anstelle gFolderTreeController.emptyTrash() im Code.

    Versuch macht bekanntlich kluch.

    Wald und Bäume...:wall:

    Jezz is was in Junk drinne.

    Aber weder gFolderTreeController.deleteJunk() noch goDoCommand("cmd_deleteJunk") zeigen Wirkung.

    Hier mein Code:


    Oder habbich irgenwoanders nen Fallstrick eingebaut?

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable

  • Nun ja, dann ist das möglicherweise ;) nicht der Ordner Junk, der da angesprochen wird, sondern alle als Junk markierten Emails, die gerade gelistet werden, die auf einen Schlag weg sind. Egal in welchem Ordner man sich gerade befindet, aber nur im aktuell angezeigten Ordner eben.

  • Ich habe mal gFolderTreeController.emptyTrash() gegoogled.

    Um da hin zu kommen, wo diese Funktion(en) gelistet sind.

    Drittes Ergebnis liefert comm-central: changeset 1089 ... - Mozilla HG


    Darin steht möglicherweise das, was Du suchst...


    Sehe den Code nach "trash" durch und probiere die Funktionen aus.

    Auf eigene Gefahr aber! Ich wars nicht...


    gFolderTreeController.emptyJunk()


    Allgemeon noch eine Anmerkung. Es kann zu Problemen kommen, da im Script nicht geprüft wird, ob der Junk-Ordner gerade angezeigt wird und andere Abhängigkeiten ignoriert werden. Ob und was dann passieren kann, ist mir aber schleierhaft. So kann es z.B. harmlos sein, das ein in TB bereits vorhandener Löschbutton nicht inaktiviert wird, obwohl der Ordner leer ist, aber es kann auch schlimmer kommen. Das Script ist eben sehr simpel.

  • gFolderTreeController.emptyJunk()

    :ziehtdenhut:

    Damit klappts, wenn der (Unter-) Ordner mit den Junk-Files aktiv ist.


    :thumbsup: Danke, Thomas...

    W7 Home Premium 64bit - TB 68.x (32-Bit) Portable