Write your welcome headline here.

Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing. Donec est est, rutrum vitae bibendum vel, suscipit non metus.

Download Now!
  • Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing.

  • Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing.

Box heading

Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing. Donec est est, rutrum vitae bibendum vel, suscipit non metus.
Read More

Box heading

Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing. Donec est est, rutrum vitae bibendum vel, suscipit non metus.
Read More

Box heading

Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing. Donec est est, rutrum vitae bibendum vel, suscipit non metus.
Read More

Box heading

Nullam posuere felis a lacus tempor eget dignissim arcu adipiscing. Donec est est, rutrum vitae bibendum vel, suscipit non metus.
Read More

Plugin: RS Buddypress Activity Refresh

A few days ago I’ve uploaded the RS Buddypress Activity Refresh Plugin to the WordPress Plugin Directory. It’s the first time I’ve uploaded one of my plugins to the Subversion server. Now I got some experience how to do this 😉

I’ve you have ideas or request, please use the Buddypress Group on BuddyPress.org.

Buddypress: Automatic refresh activity stream

I’m working on a solution to automatic refresh the activity stream on a buddypress website.

The easiest way would be to replace the existing activty stream through the new loaded html code. Unfortunately, the page flickers. Also if the user reply to an update, his text will disappear.

Okay, I only should add the new updates. So I’ve added a var „existing_ids“ to my javascript and pass the IDs to my php script via AJAX. My php script return only the updates where the ID is not in the list.

This works fine. But still having the problems with replies/comments to existing posts. My current solution check, if the update has comments and also write them into a var „ids_with_comments“. My php script checks, if the ID does not exists yet on the page OR the ID is not in the var „ids_with_comments“ AND now has comments. The JavaScript which handle the response checks, if this is an existing update, but with new comments. It will replace the update. Only if the user is currently replying to this update, the script will do nothing. So I prevent to override the textarea.

The current scripts a part of my theme. I’ve packed the files to Theme, which is using the bp-default templates. Here you can download the current version of my automatic-refresh theme.

Update: Please use the RS Buddypress Activity Refresh Plugin.

Moinmoin Wiki bei Domainfactory

So, nachdem ich gestern Abend ein wenig herumexperimentiert habe, konnte ich das Moinmoin Wiki auch auf meinem Shared Hosting Paket installieren. Wie habe ich das gemacht?

Kurze Info vorab: Die unten genannten Verzeichnisse entsprechen nicht ganz der Struktur auf meinem Server. Statt /customers/koenig-heidinger/webs/… schreibe ich unten einfach /webs/. Ihr müßt, wenn ihr nach dieser Methode ebenfalls Moinmoin-Wiki installieren wollt, natürlich die Verzeichnisse an euren Server anpassen.

Wohin mit den Dateien?

In der .tar-Datei befinden sich folgende Verzeichnisse:

  • contrib
  • docs
  • jabberbot
  • MoinMoin
  • wiki

Für mich sind erstmal nur die Dateien aus den Verzeichnissen MoinMoin und wiki interessant.

Das MoinMoin Verzeichnis habe ich auf meinem Webserver unter /lib-py/moinmoin-1.8.5/ kopiert. Es enthält das eigentliche System. So kann ich auch mehrere verschiedene MoinMoin-Versionen parallel betreiben und bei jeder Wiki-Instanz frei wählen.

Für meine Wiki-Instanz habe ich mir in meinem Projekte-Verzeichnis /webs/ ein eigenes Unterverzeichnis /webs/mywiki-01/ erstellt und die Unterverzeichnisse data, underlay und htdocs aus dem wiki-Verzeichnis der .tar-Datei hineinkopiert. Als DocumentRoot verwende ich /webs/mywiki-01/htdocs/.

Leider kann ich in der Apache-Konfiguration kein Alias und auch kein ScriptAlias eintragen. Daher mußte ich die Datei moin.cgi (zu finden unter /wiki/server/moin.cgi in der .tar-Datei) leider auch nach /webs/mywiki-01/htdocs kopieren. Die wikiconfig.py habe ich unter /webs/mywiki-01 gespeichert.

Also schaut meine Verzeichnisstruktur wie folgt aus:

  • /lib-py/moinmoin-1.8.5/MoinMoin/ (= .tar-Datei/moin-1.8.5/MoinMoin/)
  • /webs/mywiki-01/wikiconfig.py (= .tar-Datei/moin-1.8.5/wiki/config/wikiconfig.py)
  • /webs/mywiki-01/data/ (= .tar-Datei/moin-1.8.5/wiki/data/)
  • /webs/mywiki-01/htdocs/ (= .tar-Datei/moin-1.8.5/wiki/htdocs/)
  • /webs/mywiki-01/underlay/ (= .tar-Datei/moin-1.8.5/wiki/underlay/)
  • /webs/mywiki-01/htdocs/moin.cgi (= .tar-Datei/moin-1.8.5/server/moin.cgi)

Konfiguration anpassen

Als nächstes habe ich die Konfiguration angepaßt. In der moin.cgi habe ich in der ersten Zeile den Pfad zur Python-Installation eingetragen, sowie die Pfade zur eigentlich „Installation“ und zur Konfigurationsdatei:

#!/usr/bin/python2.5

sys.path.insert(0, ‚/lib-py/moinmoin-1.8.5‘)

sys.path.insert(0, ‚/webs/mywiki-01‘)

In der wikiconfig.py habe ich den Pfad zum data-Verzeichnis und zum underlay-Verzeichnis ergänzt:

data_dir = ‚/webs/mywiki-01/data/‘

data_underlay_dir = ‚/webs/mywiki-01/underlay/‘

Damit auch das Design paßt, mußte ich noch den Wert von url_prefix_static leeren. Daher habe ich folgende Wert in der wikiconfig.py noch hinzugefügt:

url_prefix_static = “

Das Wiki ist nun installiert und läuft.

Für weitere Instanzen brauche ich jetzt nur noch unter /webs/ ein weiteres Verzeichnis anlegen und die oben genannten Verzeichnisse und Dateien reinkopieren und den DocumentRoot entsprechend anlegen.

Spektrum erweitern: Python und Moinmoin Wiki

In den letzten Jahren habe ich vorallem Webapplikationen mit PHP entwickelt. Davor hatte ich viel mit Cold Fusion gearbeitet. Damals mußte ich aus kostengründen von Cold Fusion auf PHP umsteigen, wobei das für mich schon ein harter Schlag war. Cold Fusion war damals schon eine sehr mächtige Sprache, während PHP eher eine kostenlose Script-Spielerei war. Inzwischen hat sich PHP aber ebenfalls sehr stark weiterentwickelt und verändert. PHP ist inzwischen eine professionelle Sprache um stabile Webapplikationen zu entwickeln. Neben PHP gibt es im Internet aber noch viele weitere interessante Sprachen. Eine davon will ich mir jetzt mal näher anschauen: Python.

Warum ich mich für Python interessiere? Naja, das Moinmoin Wiki ist mit Python entwickelt. Das Wiki bietet einige sehr interessante Features, die ich bei vielen anderen php-basierten Wikis (z.B. mediaWiki) vermisse. So ist Wiki-Farming, ein grafischer Editor und auch ein seitenbasiertes Rechtesystem schon von Anfang an integriert. Diese Funktionalitäten fehlen leider beim mediaWiki. Man kann sie zwar über Plugins nachrüsten – aber ich bin halt das WordPress-Plugin-System gewöhnt… und dagegen wirkt die Erweiterungsmöglichkeit vom mediaWiki eher an das finstere Mittelalter.

Meine ersten Gehversuche mit Moinmoin

Neue Webapplikationen lade ich meist via FTP auf meinem Webserver hoch, richte einen virtuellen Host dafür ein und ruf das Verzeichnis auf. Funktioniert eigentlich super. Leider aber nicht mit Moinmoin. Das muß ich wohl erstmal auf später verschieben und einen anderen Weg einschlagen.

DesktopEdition

Okay, neuer Versuch. Diesmal fange ich erstmal klein an => Lokale Installation auf meinem Rechner. Dazu gibt es die Beschreibung „DesktopEdition“.

  1. MoinmoinWiki heruntergeladen
  2. Die Dateien habe ich mal unter C:\Programme\moin-1.8.5 entpackt
  3. Python heruntergeladen
  4. Python unter C:\Programme\Python26 installiert
  5. Doppelklick auf C:\Programme\moin-1.8.5\wikiserver.py
  6. Und schon war mein Wiki unter http://127.0.0.1:8080/ online.

Wow, das war ja einfach. Damit kann ich eigentlich schon ein wenig rumspielen. Aber für einen Live-Betrieb macht das wenig Sinn. Ich habe eigentlich will ich ja MoinMoin auf meinem Webserver bei Domainfactory (ein SharedHosting-Paket, Linux/Apache) und auch auf einem Windows-Server mit Apache (später vielleicht auch IIS) zum Laufen zu bringen.

Nächster Schritt: Mit XAMPP

Um meinem Ziel etwas näher zu kommen, installiere ich mir hier unter Windows erstmal XAMPP. Das ist ein Paket mit Apache, MySQL, PHP und Perl. Python ist da leider erstmal nicht dabei.

Jetzt muß ich mich aber erstmal schlau machen, wie ich Python dort zum laufen bringe. Scheinbar gibt es da mehrer Möglichkeiten (CGI, mod_python, mod_wsgi, …) welche davon jetzt die beste ist und wie ich testen kann, ob es richtig funktioniert, weiß ich noch nicht….

So, jetzt bin ich schonmal einen Schritt weiter.

  1. XAMPP habe ich installiert und den Apachen gestartet.
  2. Zusätzlich habe ich noch die Datei mod_wsgi-win32-ap22py26-2.6.so von mod_wsgi heruntergeladen und als C:\Programme\xampp\apache\modules\mod_wsgi.so gespeichert
  3. In der Datei C:\Programme\xampp\apache\conf\htdocs.conf habe ich die Zeile LoadModule wsgi_module modules/mod_wsgi.so hinzugefügt.
  4. Apache neu gestartet

So, jetzt müßte Python doch laufen, oder? Meine ersten Versuche mit einer text.py, die ich direkt http://127.0.0.1/test.py aufgerufen haben, hat leider nicht wirklich funktioniert. Ja, ich gebe es zu. Ich probiere sofort aus und erwarte, dass alles so wie bei PHP läuft. Dank des QuickConfigurationGuide vom modwsgi habe ich es jetzt doch zum Laufen gebracht. Die Zeile WSGIScriptAlias /myapp „C:/Programme/xampp/htdocs/test.wsgi“ hilft hier ungemein weiter. Nachdem ich den Server neu gestartet hatte, bekam ich unter http://127.0.0.1/myapp auch ein „Hello World!“. Juchuu, Python läuft. Aber dahinter steckt eine andere Philosophie. Die eigentlichen Scripte werden nicht in über das Web zugängliche Verzeichnisse gestellt, sondern über – in diesem Fall – die Apache-Konfiguration referenziert. Dadurch sind die Scripte nicht direkt angreifbar 😉

Also Python läuft jetzt über mod_wsgi. Jetzt mal wieder zu Moinmoin. Wie bekomme ich es jetzt auf Apache zum Laufen? Die Antwort gibt es in den InstallDocs. Folgende Befehle habe ich jetzt in meiner Windows-Eingabeaufforderung eingegeben:

  1. cd \programme\moin-1.8.5
  2. C:\Programme\Python26\python.exe setup.py install –record=install.log

Danach wurden erstmal jede Menge Dateien (steht alles im install.log) in das Verzeichnis C:\Programme\Python26\ kopiert.

… to be continued

Update auf WordPress 2.8 DE-Edition

Ich habe dieses Weblog jetzt auf die neue Version 2.8 aktualisiert und schaue mir jetzt mal die Änderungen an.

Die Übersetzung scheint mir hier noch nicht ganz vollständig zu sein. Im Menü tauchen immer wieder englische Begriffe (z.B. unter Artikel steht „Add new“) auf.

Themes kann man jetzt auch – wie schon länger die Plugins – direkt über den Browser installieren.

Der eingebaute Editor wurde deutlich verbessert. Er verfügt jetzt über Syntax-Highlighting und man kann bei einem Plugin jetzt auch alle Dateien bearbeiten.

Im Administrationsbereich kann man die verschiedenen Boxen jetzt schön hin und her schieben 😉 (Screenshot folgt)

Mehr ist mir auf dem ersten Blick noch nicht aufgefallen. Ich werde es mal nach dem Frühstück noch genauer testen.

This is a demo store for testing purposes — no orders shall be fulfilled.