24.7.2006

An unsere Stammleser

Posted in Chaos & Illusion at 11:58 by Rafayel

bzw. an unsere Stammkommentatoren: Ich habe ein Geschenk fuer euch. Ab jetzt koennt ihr naemlich eure Kommentare selbst editieren. Einzige Voraussetzung ist, dass ihr euch einmalig anmeldet (rechts: Meta -> Register) und eingeloggt seid, wenn ihr ein Kommentar verfasst. Ueber Rueckmeldungen und Meinungen wuerde ich mich freuen.

Nun wird's knifflig; wer an den Details der Umsetzung nicht interessiert ist, kann ruhigen Gewissens an dieser Stelle mit Lesen aufhoeren (und stattdessen mal lieber die neue Editierfunktion testen ;).

Für alle WordPress-Betreiber, die ebenso wie ich nach dieser Funktion gesucht haben, moechte ich hier zwei Loesungswege vorstellen. Zum einen koenntet ihr das Plugin Edit Comments ausprobieren. Das hat jedoch ein paar Nachteile. Man kann einen Kommentar nur innerhalb einer bestimmten Zeitspanne editieren und die Zugriffspruefung erfolgt recht unsicher ueber die IP. Wahrscheinlich wuerde es sich auch mit Tinythread nicht so einfach vertragen, aber ausprobiert habe ich es nicht.

Die zweite Loesung verwendet das in WordPress 2.0 neu eingefuehrte Rechtesystem der Benutzer. Es gibt verschiedene Rollen (roles), die man den Benutzern zuweisen kann. Jede Rolle beinhaltet eine Menge von Kompetenzen (capabilities), die einzelne Aktionen im System erlauben. Mit dem Role Manager kann man diese Zuordnungen beliebig aendern und sogar neue Kompetenzen anlegen.

Und genau das habe ich getan. Im TokBlog gibt es nun die neuen Kompetenzen edit_comments und edit_other_comments. Diese erlauben das Editieren eigener bzw. beliebiger Kommentare. Intern wird dazu eine meta-capability edit_comment abgefragt. Die wird immer dann erzeugt, wenn der User edit_comments besitzt und mit dem Autor des Kommentars uebereinstimmt oder das umfassendere Recht edit_other_comments erhalten hat. Dazu muss man in der wp-includes/capabilities.php die Funktion map_meta_cap() analog zu read_post ergaenzen (edit_post geht als Vorlage auch, besitzt aber sehr viel mehr Sonderfaelle).

Nach dieser Aenderung kann man mit current_user_can('edit_comment', $comment->comment_ID) abfragen, ob der aktuelle Benutzer einen Kommentar editieren darf, z.B. in der Funktion edit_comment_link() aus wp-includes/template-functions-links.php. Wenn nicht die Rechteverwaltung des Adminmenues aus WordPress so kompliziert waere, koennte man an dieser Stelle schon aufhoeren. Doch so braucht man noch einen passenden Menueintrag, der auch dann angezeigt werden kann, wenn der Nutzer nur die Rechte edit_comments und read besitzt. Um meinen ueblen Hack in Grenzen zu halten, habe ich an wp-admin/post.php nichts geaendert, sondern die fuer Kommentare relevanten Teile ausgelagert und mit einem eigenen Menuepunkt versehen.

Ich finde es seltsam, dass bei WordPress nicht konsequent zwischen Schreiben/Editieren von Artikeln und Kommentaren unterschieden wird. Dann waere es naemlich auch ein Leichtes gewesen, diese Funktion serienmaessig anzubieten. Denn an der differenzierten Rechtevergabe scheitert es ja eben nicht mehr …

Auch ein weiteres Problem, welches sicher viele WordPress-Besitzer unter euch kennen, ist die fehlerhafte Behandlung von einfachen und doppelten Hochkommata. Editiert man als Admin ein Kommentar, der diese Zeichen enthaelt, setzt WordPress einmal zu oft ein Backslash als Escapezeichen davor. In Folge davon werden u.a. auch Links total zerstoert – mehr als nur aergerlich.

Hierfuer gibt es das Plugin WordPress 2.0.3 Tuneup. Dessen Loesungsansatz (Deaktivieren der Sind-Sie-sicher?-Seite) habe ich in meine Anpassungen uebernommen und siehe da, mit diesem Bug ist nun auch endlich Schluss. Manchmal frage ich mich ja, ob die Macher von WordPress ihr Blog vorher ueberhaupt mal getestet haben. Ja, das war boese, aber der Fehler ist ja wohl mehr als daemlich offensichtlich.

12 Responses to “An unsere Stammleser”

  1. ines Says:

    Praktisch. Mal sehen ob ich das vorm-Kommentieren-Einloggen hinkriege ;)

    Edit: Edit funktioniert :D

  2. Rafayel Says:

    Prima. :)
    Und du kannst doch dem Browser sagen, er soll dich wiedererkennen.

    (Jetzt muss ich schon einer Frau erklaeren, wie sie sich unvergesslich macht … *duck*)

  3. Uwe Says:

    Cool, auch gleich mal probieren :-)
    Edit: Es fungschoniert.

  4. Tok - unterwegs Says:

    gratulation, das koennte ein schoener tag werden.
    tok tolle klausur, raffi tolles php…

  5. ines Says:

    Raf: Ne, das musst du mir nicht erklären, aber auf manchen Webseiten funktioniert die Sache mit dem automatischen Einloggen einfach nicht. Hier allerdings schon, jedenfalls bin ich immernoch eingeloggt, trotz Browserschliessen und fast 6h dazwischenliegender Zeit… :)

  6. Rafayel Says:

    Ahso, okay.

    Hey, klar funktioniert das hier, hier ist schliesslich TokBlog! ;)

  7. ines Says:

    das grad eben schaute mir doch stark nach spam aus…
    aber kaum hab ich meinen eintrag geschrieben, wars auch schon weg *kopfkratz*

  8. Rafayel Says:

    Tja, wir sind halt flink. :)

    Aber bitte in Zukunft nicht auf solche Kommentare reagieren. Ab und zu kommt zwar einer durch die Filter, aber die loeschen wir dann schon, sobald wir sie erblicken.

  9. ines Says:

    Ich kann zur Spamverhinderung Spam Karma2 empfehlen. Muss nich umständlich irgendwo eingebunden werden, Plugin aktiviert und funktioniert.

  10. Rafayel Says:

    Akismet has protected your site from 398 spam comments.

    Fuer meinen Geschmack auch nicht schlecht, aber in letzter Zeit kommt ab und zu was durch. Falls die false-negative noch weiter zunehmen, werde ich mal sehen, ob sich SpamKarma und Akismet vertragen.

  11. ines Says:

    Für die Problematik, dass Nicht-Spam-Kommentare als Spam eingestuft werden und damit verschwinden, gibt es auch ein (wenn mich nicht alles täuscht vorinstalliertes?) Plugin: CJD Spam Nuke “Dieses Plugin macht all die Kommentare sicht- und löschbar, die mit dem Attribut ‘Spam’ in der Datenbank herumliegen.”

  12. Rafayel Says:

    Die Funktion bietet Akismet auch schon, nur waren wir bisher zu faul, die Unmengen Spamkommentare zu sichten. Bis vor kurzem waren es ja imho auch wirklich nur Spameintraege, aber die Zeit scheint vorbei …

Leave a Reply

You must be logged in to post a comment.