Joomla + Ajax = Kein Problem

Überall liest man ja, das sich Joomla und Ajax nicht gut vertragen. Dem muss ich allerdings wiedersprechen. Habe ein kleines aber feines Script entwickelt, welches dieses Problem in wenigen Sekunden löst.

Doch erstmal: Wovon rede ich eigentlich?

Standardmäßig wird in Joomla ja nach einem Klick auf einen Link die Seite komplett neu geladen. Der Ajax-Way macht es anderst: Hierbei wird nur ein bestimmter Container mit neuen Inhalten geladen. Das kann in vielen Situationen hilfreich und erwünscht sein.

Beispielsweise wenn man ein laufendes Video auf der Seite hat, was nach jedem Klick neu starten würde.

Hier das Script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 // Ajax Script - by paxos - http://the-skylab.de/
 // Makes Joomla a Happy Ajax Hippo!
 
 var contentContainer = 'content'; // Change this!
 var ajaxLinkerDelayed = false;
 
 function ajaxLinker(url)
 {
    if (ajaxLinkerDelayed) return false;
    if (( url.href == null) || ( url.href.indexOf('#') != -1)) { return false; }
   
    var myUrl = url.href.replace('index.php', 'index2.php');
    // Home Seite hat kein index.php im Namen!
    if (myUrl.indexOf('index') == -1)
        myUrl += 'index2.php';
   
    var myHTMLRequest = new Request.HTML({url: myUrl, update: contentContainer, onComplete: function() { initAjaxContent() }}).send();
    ajaxLinkerDelayed = true;
    window.setTimeout("ajaxLinkerDelayed = false", 200);

    // Wichtig damit der Link nicht aufgerufen wird
    return false;
 }
 
 function initAjaxContent() {
    $$('#bg-center a').addEvent('click', function() { return ajaxLinker(this);});
 }
 
 function initAjax() {
    $$('a').addEvent('click', function() { return ajaxLinker(this);});
 }

Das Script sucht sich alle Links auf der Seite raus und hängt dort ein Event ran. Dieses Event wird fortan nach einem Klick aufgerufen und führt seinen eigenen Code aus. Gleichzeitig verhindert es, dass die Standardaktion, also das Aufrufen des angebenen Links, ausgeführt wird. Statt dessen lädt es selbstständig via Hintergrundrequest den neuen Inhalt vom Server und fügt ihn in den angebenen Container ein. Auf die neuen Inhalte wird das Script natürlich nochmals angewendet.

Einfach als JoomlaAjax.js speichern und im Header des Templates einbinden. Wenn ich Lust habe mach ich vielleicht mal ne Komponente draus und stell sie zum Download bereit.

Achtung: Das Script ist nur mit MooTools 1.2 getestet. Zum Zeitpunkt dieses Beitrages wird nur MooTools 1.1 mit Joomla ausgeliefert. Wie man die neue Version korrekt zum laufen bekommt wird hier beschrieben. Bitte NICHT einfach drüber kopieren, sonst funktioniert das Joomla Backend nicht mehr!

Firefox Bookmarks Toolbar effektiver nutzen

Bei einem Komiltonen hab ich folgende einfache, aber geniale Möglichkeit gefunden, seine Bookmarks platzsparender im Firefox zu platzieren:

firefoxtoolbar

Der Fokus liegt hierbei auf der Toolbar oben:

firefoxtoolbar2

Statt Platz mit Texten zu verschwenden, einfach nur das Icon verwenden. Genial. Wie das geht?

Unter Windows einfach nur den Namen des Bookmarks (muss im Toolbar-Ordner sein) löschen.

Unter OSX geht das nicht so einfach, da das OSX Standard-Theme die Favicons nicht anzeigt. Abhilfe schafft hier das Addon Stylish und dieser Style dazu. Fertisch!

Googlemail: Tags in Ordnern verwalten

Heute mal ein praktischer Haushaltstipp für den Googlemail-User.

Als einen großer Nachteil der Taggingfunktion in Gmail empfand ich es immer, dass inaktive Tags nicht versteckt werden. So wächst die Tagging Liste auf der Linken Seite ins unermessliche, wird unübersichtlich und verliert somit jeglichen Wert.

Ich hab dann eben immer “alte” Tags gelöscht… und meinen alten Emails somit jeglichen Kontext genommen.

Wie sich rausgestellt hat, gibt es aber die Möglichkeit in Gmail Tags in Ordner zu stecken. So lassen sich alte Tags super archivieren und versperren nicht mehr die Sicht. Interessanterweise funktioniert das sowohl in der Weboberfläche als auch in Thunderbird. Für mich wichtig, da ich beide Apps parallel nutze – dank IMAP sogar synchron, ergo kein Problem.

Der Trick ist, die Tags umzubennen. Dazu einfach den Ordnernamen mit einem Backslash abtrennen. Beispiel:

Tag: “Wichtig” wird einfach zu “Archiv\Wichtig”.

Thunderbird zeigt das ohne Hilfsmittel auch richtig an. Ich würde das Umbenennen der Tags aber in der Weboberfläche durchführen und anschließend Thunderbird neustarten.

So sieht das ganze in Thunderbird aus

So sieht das ganze in Thunderbird aus

In der Weboberfläche funktioniert das leider nicht ohne Hilfsmittel. Als Firefox-Nutzer hilft da aber die Installation des Addons “BetterGmail”. Nach der Installation unbedingt die Option “Folder4Gmail” aktivieren und schon passts.

Hier "Folders4Gmail" aktivieren

Hier "Folders4Gmail" aktivieren

Das Resultat:

In GMail - zugeklappt

In GMail - zugeklappt

Mit BetterGmail kann man dann auch im Webinterface schön auf- und zuklappen

Mit BetterGmail kann man dann auch im Webinterface schön auf- und zuklappen