Anwendungen

Erweiterungen von Joomla! 3 zu Joomla! 4 migrieren

25. April 2024 · Anwendungen · andreas · Kein Kommentar

Im Laufe der Jahre hat sich die Anzahl der von mir betreuten Joomla!-Installationen deutlich reduziert. Von mehreren Websites ist noch eine Intranet-Seite übriggeblieben, welche bis vor Kurzem noch mit Joomla! 3 lief.

Hauptgrund hierfür war die aus meiner Sicht nur spärlich vorhandene Dokumentation für Entwickler, welche Anpassungen an Erweiterungen bei Versionsänderungen zu machen sind. Während zum Beispiel der Wechsel zu Hugo auf Grund der guten Dokumentation in Kombination mit einem ebenso guten Forum nur wenig Frustmomente bot, war schon die Erfahrung beim Umstieg von Joomla! 1.5 auf 2.5 derart nervig, daß im Laufe der Zeit alle Websites von Joomla! zu WordPress migriert wurden, statt den Versuch zu starten, die bestehende Funktionalität unter der neuen Joomla!-Version lauffähig zu bekommen.

Nachdem inzwischen aber Joomla! 5 veröffentlicht ist, sollte auch die Intranet-Site zumindest auf Joomla! 4 migriert und somit auch die selbstentwickelten Erweiterungen angepasst werden, was sich wieder als frustrierendes Erlebnis entpuppte. Wenn es schon Zusammenstellungen wie “Potential backward compatibility issues in Joomla 4” gibt, wäre es hilfreich, wenn dort nicht als erstes ein “Content is Incomplete” ins Auge springen würde und viele der hier aufgelisteten Dinge auch dort zu finden wären.

In diesem Beitrag habe ich die verschiedenen Quellen gesammelt, mit denen ich die Erweiterungen mit Joomla! 4 lauffähig gemacht habe - am Ende des jeweiligen Abschnitts ist als Quelle die Seite angegeben, auf welcher ich als erstes auf meiner Suche nach Lösungen fündig wurde. Vieles davon ist sog. Legacy-Funktionalität, d.h. ich habe nicht nach aktueller Philosophie neu entwickelt, sondern versucht, mit minimalem Aufwand die jeweilige Erweiterung zu reparieren und wieder funktionsfähig zu bekommen.

Weiterlesen


Textmails in Thunderbird importieren

12. März 2024 · Anwendungen · andreas · Kein Kommentar

In einem Verzeichnis auf der lokalen Festplatte schlummerten noch ein paar Uralt-Mails, welche alle als einzelne Textdateien gespeichert waren. Leider bietet Thunderbird keine Möglichkeit, über die Oberfläche einen Importvorgang anzustoßen, aber es geht auch recht einfach durch die Hintertür.

In der Oberfläche wird in den “Lokalen Ordnern” mittels Rechsklick ein neuer Ordner “GanzalteMails” angelegt. Dies bewirkt, daß im Profilverzeichnis ("~/.thunderbird/PROFILNAME/Mail/Local Folders/") zwei Dateien “GanzalteMails” und “GanzalteMails.msf” erzeugt werden. In diesem Ordner wird auf Dateisystemebene nun händisch ein neuer Unterordner “GanzalteMails.sbd” erzeugt, in welchen die Textdateien kopiert werden.

Damit Thunderbird die Texte auch tatsächlich als Mailbox-Files erkennt, ist es wichtig, daß jede Datei - wie in RFC 4155 “The application/mbox Media Type” beschrieben - mit einem korrekten Vorspann beginnt:

mbox database files can be recognized by having a leading character sequence of “From”, followed by a single Space character (0x20), followed by additional printable character data

Was genau nach dem Leerzeichen kommen muß, kann sich zwischen verschiedenen Anwendungen unterscheiden, weshalb die meisten Mailclients fast alles akzeptieren, was auch nur halbwegs standardkonform aussieht. Thunderbird genügt z.B. ein

From -

als Kennzeichnung. Wer dies einfach und komfortabel an den Anfang aller “*.txt”-Dateien einfügen möchte, kann sed als Werkzeug verwenden:

$ sed -i '1 i\From -' *.txt

Dateien in einer Samba-Freigabe ausführen

26. Januar 2024 · Anwendungen · andreas · Kein Kommentar

Nach dem Kopieren einiger Dateien auf eine Samba-Freigabe weigerte sich Windows, die Dateien auszuführen.

Die Lösung dokumentiert das Samba-Wiki unter dem Hinweis “Making Files Executable”: in der Standard-Einstellung dürfen nur Dateien, welche auf dem Host das “Executable”-Recht haben, auch ausgeführt werden.

Hier hilft ein Aufruf von “find” die notwendigen Rechte zu verteilen:

$ find . -name "*.exe" -exec chmod +x {} \;

Je nach Einsatzszenario muß auch noch die Einstellung

acl allow execute always = yes

entweder im globalen Bereich oder in der Definition einer Freigabe in der “smb.conf” hinzugefügt werden.


Systemfehler: Abbrechen oder Abbrechen?

19. Dezember 2023 · Anwendungen · andreas · Kein Kommentar

Die genauen Umstände des auf den 17. Dezember 2002 datierenden Screenshots lassen sich leider nicht mehr rekonstruieren.

Abbrechen - Abbrechen

Offensichtlich kam es beim Ausführen der Funktion “Ändern/Entfernen” von Microsoft Office 97 zu einem Systemfehler. Die Wahlmöglichkeit zwischen “Abbrechen” und “Abbrechen” ist allerdings nicht wirklich hilfreich.


Manuell neue Domain zu Firefox Multi-Account Containers hinzufügen

9. Dezember 2023 · Anwendungen · andreas · Kein Kommentar

Die Firefox Multi-Account Containers sind eine offizielle Erweiterung von Mozilla, die hoffentlich bald nativ im Browser eingebaut wird. Aufgabe ist die Trennung des Website-Speichers in Tab-spezifische Container, d.h. Cookies, die in einem Container vorhanden sind, sind in anderen Containern nicht verfügbar.

Im Gegensatz zur Funktionalität ist die Verwaltbarkeit leider alles andere als gelungen - in der aktuell verfügbaren Version können nur im Browser geöffnete Domains einer Umgebung hinzugefügt werden, das manuelle Hinzufügen einer Domain zu einer Umgebung ist nicht vorgesehen. Dies hat den Nachteil, daß bei allen Websites, welche mit Redirections arbeiten, die Multi-Account Containers nur eingeschränkt verwendet werden können.

Glücklicherweise kann hier mittels “about:debugging”, der Entwicklerwerkzeuge und der Javascript-Konsole Anbhilfe geschaffen werden. Das Vorgehen wurde von Philip Snowberger in “Another way to manually add another site to Firefox Multi-Account Containers” auf Github beschrieben:

Nach dem Starten des Debug-Modus wird zuerst das Objekt einer Domain ausgelesen, zu deren Umgebung eine weitere Domain hinzugefügt werden soll.

Im konkreten Beispiel soll die Domain “accounts.ebay.de” der Umgebung hinzugefügt werden, in der “www.ebay.de” bereits vorhanden ist:

obj = Object(await browser.storage.local.get("siteContainerMap@@_www.ebay.de"))

Dann wird eine Kopie der vorhandenen Einstellungen unter dem Zielnamen angelegt

obj["siteContainerMap@@_accounts.ebay.de"] = obj["siteContainerMap@@_www.ebay.de"]

und die ursprüngliche Domain aus dem ausgelesenen Objekt gelöscht:

delete obj['siteContainerMap@@_www.ebay.de']

Als letzter Schritt wird das Objekt zurückgeschrieben

await browser.storage.local.set(obj)

womit die Tab-Umgebung um die neue Domain erweitert wurde.