Alle Artikel zu #plugins


Neues Spamschutz-System auf Konzertheld.de

Irgendwann im letzten Jahr ging es auf Konzertheld.de plötzlich los mit größeren Spam-Problemen und schnell war klar: So geht das nicht weiter. Ich nutze Habari für meinen Blog (zu dessen Kernprogrammiererteam ich neuerdings übrigens gehöre) und das mitgelieferte Standard-Antispam-Plugin erkennt nur ganz offensichtlichen Spam. Also Kommentare voller Links und wilder Zeichen.

Zwar müssen Kommentare von neuen Kommentatoren wie Peter_SwissWatches erst genehmigt werden, die Seite sieht also von außen sauber aus, aber zwischen den ganzen Fake-Kommentaren versteckte sich eben immer wieder mal einer, den ich freischalten wollte. Dank preapproved wurden immerhin schonmal alle automatisch freigeschaltet, die ich schonmal von Hand freigeschaltet hatte.

Dazu kam dann die von mir aufgemotzte simpleblacklist, die automatisch Kommentator-Mailadressen, -URLs und -IPs aufnimmt, wenn ich einen Kommentar als Spam markiere. Eine weitere Arbeitserleichterung, aber der Kampf gegen den Spam fühlte sich immer noch wie ein Kampf an.

Ein Captcha für alle Besucher war für mich keine Option. Also musste einer her, der intelligent entscheidet, wer den Captcha bekommt. Ein paar werden es in letzter Zeit gemerkt haben: Die Funktion gibt es hier seit einiger Zeit, aber bisher löschte sie das Kommentarformular nach dem Abschicken, wenn der Captcha eingeblendet wurde. Damit ist jetzt Schluss, mit Hilfe der anderen Programmierer habe ich das Problem in den Griff bekommen. Nun wird der Captcha nur Leuten angezeigt, die hier noch nie kommentiert haben (oder die eine neue Mailadresse oder URL haben), alle anderen werden wie gewohnt sofort freigeschaltet.

Der technische Hintergrund: Der modifizierte ReCaptcha prüft mittels eines Validators, ob der Autor des Kommentars schon früher freigeschaltet wurde. Das Ergebnis wird in einer Session-Variable gespeichert. Schlägt die Validierung fehl, wird das Formular zurück gewiesen. Beim erneuten Anzeigen wird anhand der Session-Variable erkannt, dass diesmal der Captcha mit rein soll. Codetechnisch ist das Element des Formulars die ganze Zeit da. Das ist nötig, damit der Formularinhalt erhalten bleibt. Erfolgte die Prüfung aber noch nicht oder wurde der Autor bestätigt, bleibt das Element aber leer, der Besucher sieht also keinen Captcha und bekommt auch das Javascript dafür gar nicht erst ausgeliefert.



Habari Plugin: View all your posts at once

Sometimes it might be useful to view your posts not with a maximum number of X per page but all at once. I made a plugin that adds a rewrite rule you can have a normal multiple view as you would on every normal page, except there is no pagination. Please note that loading might take a long time depending on how many posts you have and how many media is in them. The plugin will use the same output (short, full or whatever you have) as usually.

There is a view for really all published posts and one you can customize by choosing the content types you want in there. Also you can decide whether one of them should not be active. More instructions are available once you installed it (just unpack to your plugins folder).

It's called allposts and it is available on GitHub. You can download the source code with Git or use the zip package for Habari 0.9.



Hinweis auf veralteten Browser für Blogs

Jeder Website-Programmierer weiß, dass es ätzend ist, mit alten Browsern arbeiten zu müssen. Außerdem haben veraltete Browser Sicherheitslücken, die nicht mehr geschlossen werden, weil der Aufwand der Pflege alter Versionen auch für den Herausgeber zu groß ist. Trotzdem verwenden viele Menschen veraltete Browser. Vor allem beim auf Windows vorinstallierten Internet Explorer ist das verbreitet, da dieser trotz Windows-Updates nicht automatisch aktualisiert wird und auch nicht auf Updates hinweist.

Für CMS- und Blogbetreiber gibt es da eine nette Hilfestellung. Auf browser-update.org gibt es ein kleines Javascript, welches einen dezenten und doch unübersehbaren Hinweis einblendet, falls der Besucher der Seite einen veralteten Browser benutzt. Wie genau "veraltet" definiert wird, kann man dabei dem Herausgeber überlassen (dann ist es immer dann soweit, wenn der Herausgeber den Support einstellt) oder selber bestimmen.

Für Habari, die Plattform, auf der Konzertheld.de läuft, habe ich selbst ein passendes Plugin geschrieben. Damit lässt sich das Javascript automatisch einbinden und wahlweise über die Plugin-Konfiguration selbst Browserversionen festlegen. Das Plugin ist öffentlich verfügbar und über Git bearbeitbar auf GitHub unter habari-extras.



Habari: Bricks - Textbausteine für Posts

Aus der Not heraus habe ich vor einiger Zeit ein Plugin entwickelt, mit dem sich beliebige Textbausteine in Habari einfügen lassen. Ich wollte die immer gleichen Codeschnipsel für die Bewertungen im {ph} automatisiert einfügen. Außerdem hatte ich gerade meinen Habari-Ordner verschoben und damit einen Großteil der Links zerstört.

Bricks bringt Abhilfe für beides. Die Version 0.1 besitzt noch keine schöne Konfigurationsoberfläche, funktioniert aber bereits zuverlässig. Einem Block wird ein Name zugewiesen und ein Inhalt. Der Name muss eindeutig sein und darf nur aus alphanumerischen Zeichen sowie Bindestrichen und Unterstrichen bestehen. Nach der Syntax [Name]=[Inhalt] wird der Block in die Konfiguration eingetragen und kann dann sofort genutzt werden, dazu muss nur der Name in geschweiften Klammern in den Code eines Artikels eingefügt werden. Auch andere Plugins können mit einbezogen werden, so nutze ich einen Block für die oben eingebundene Info zum Projekt Hörsturz, der die Footnote-Syntax verwendet.

Funktionen

  • Benutzerdefinierte Blöcke: Beliebiger Inhalt kann per Textbaustein in Artikel eingefügt werden.
  • Standardblock für interne Links: Der Block "i" wird immer durch den aktuellen Habaripfad ersetzt. Jeder Link, der mit einem i in geschweiften Klammern beginnt und danach relativ zum Habari-Stammpfad angegeben wird, funktioniert auch nach einem Umzug des Habari-Ordners noch.

Installation

Plugin herunterladen, ggf. entpacken und in einen Unterordner nach /user/plugins hochladen/verschieben. In der Pluginübersicht aktivieren. Fertig.

Deinstallation

Plugin deaktivieren und Ordner entfernen. Angelegte Textbausteine werden zur Zeit nicht entfernt. Der Eintrag "bricks__bricks" in der Optionstabelle der Habari-Datenbank muss von Hand entfernt werden.

Download

Git-Repository (aktuelle Entwicklerversion)

---



Bugfix für RN Tag Cloud

Irgendwann, nachdem ich angefangen hatte, häufiger über Events zu schreiben und vor allem auch über TEN SING, fiel mir auf, dass die Tag Cloud die dadurch eingeführten neuen Tags gar nicht berücksichtigt. Jetzt bin ich dem mal nachgegangen und stellte fest, dass ich das zuständige Plugin aus irgendeinem Grund nur Posts vom Typ "Eintrag" berücksichtigt, meine Eventberichte also außen vor blieben. Das ist jetzt behoben.

Für Habari-Nutzer, die ebenfalls die RN Tag Cloud nutzen: In der Plugin-Datei sind drei Funktionen betroffen, nämlich get_total_tag_usage_count(), get_most_popular_tag_count() und build_tag_cloud( $num_tag ). In allen drei Funktionen muss in der SQL-Abfrage

$sql = "

der erste WHERE-Parameter, nämlich der, der nach Content-Typ filtert, entfernt werden. Sieht danach so aus:

WHERE p.status = {$post_status}

Die weiter oben liegende Zeile mit der Definition der Variable, die den Content-Typ angibt, kann dann auch entfernt werden.



Habari: Verwendung von Postinfo: Posts mehr Informationen hinzufügen

[Habarimag-Eintrag]

Manchmal kann es praktisch sein, Posts mehr Informationen hinzuzufügen, als Habari erlaubt. Beispielsweise, weil man einen neue Inhaltstyp entwickeln will; so wie das Eventscontent-Plugin Event-Posts hinzufügt, die eine Location und andere Informationen haben können. Oder weil man pro Post bestimmen können möchte, ob dieser Post voll oder nur als Auszug auf bestimmten Seiten des Themes dargestellt werden soll.

Man kann sich dafür ein Plugin schreiben, welches diese Aufgabe übernimmt; man kann aber auch das Postfields-Plugin benutzen (SVN-Link). Damit lassen sich auf einfachstem Wege Textfelder zu jedem Post-Typ hinzufügen, die beliebige Informationen speichern können.

Im Theme greift man dann wie folgt darauf zu:

$wert = $post->info->feldname;

Dabei muss $post ein Post-Objekt sein, welches man vorher aus der Datenbank geladen hat, und feldname der Name eines mit dem Postfields-Plugin hinzugefügten Feldes. Enthält das Feld Leerzeichen, kann man sich mit diesem Trick helfen:

$feldname = "Name mit Leerzeichen";
$wert = $post->info->$feldname;

$wert enthält danach den Wert des Textfeldes. Der Zugriff kann auch direkt in if-Abfragen oder allem anderen verwendet werden; die Member von $post->info können wie Variablen benutzt werden.



Plugin: Preapproved - Bekannte Kommentatoren freischalten

Standardmäßig schaltet Habari keine Kommentare frei, wenn man nicht eingeloggt ist und mit den in der Datenbank hinterlegten Angaben kommentiert - daher verwenden viele Autoapprove, welches Kommentare automatisch freischaltet, sofern diese nicht als Spam markiert wurden. Da der mit Habari ausgelieferte Spamschutz aber nur sehr groben Spam aussortiert, kommen so auch etliche Spamkommentare durch.

Abhilfe schafft Preapproved. Es schaltet ebenfalls Kommentare automatisch frei, aber nur, wenn der Benutzer bereits vorher kommentiert hat und freigeschaltet wurde. Die Anzahl der Kommentare, die dafür erforderlich ist, kann dabei eingestellt werden.

Das Plugin erkennt Kommentatoren an der Mailadresse. So kann sich niemand einen Nick klauen und Kommentare direkt freigeschaltet bekommen. Im bisherigen Test funktionierte Preapproved zuverlässig. Kommentiert jemand mit einer unbekannten Mailadresse, landet der Kommentar in der Moderation, ansonsten geht er direkt durch.

Getestet habe ich die Entwicklerversion aus dem habari-extras-Repository mit Habari 0.7r4641. Das Plugin-Repo findet sich hier: Preapproved bei habari-extras.

---

Dieser Beitrag ist auch auf Habarimag erschienen.



Neues Habari-Plugin: Post-Updates posten

Habari bietet eine kleine Einstellung, mit der man (wie bei Wikipedia) markieren kann, ob es sich um eine kleine Änderung am Inhalt handelt (Rechtschreibfehler usw.) oder nicht. Diese nutze ich nun, um einen neuen Post einfügen zu lassen, wenn ich an einem alten Änderungen vorgenommen habe. Das ist vor allem für die Website interessant, denn die Feeds schieben geänderte Posts automatisch nach oben, aber auf der Website würden Änderungen sonst gar nicht sichtbar sein.

Habari-Nutzer, die das SVN-Repository nutzen, können das Plugin dort beziehen. Es funktioniert bereits, aber jegliche Konfiguration fehlt noch. Updates im Revision Log.