delaycommentsz

Der fromme Wunsch

Man besitzt so ein Wordpress-Blogdings und will, dass die Besucherinnen und Besucher die Texte erst lesen, bevor sie ihre Meinung in den Kommentaren kundtun.

Die Idee

Das Kommentarfeld bleibt eine gewisse Zeit ausgeblendet und wird erst nach, sagen wir, 2 Minuten sichtbar. Wer ob der frivolen Überschrift erbost ist und seiner Empörung direkt in den Kommentaren Luft machen will, ohne den eigentlichen Text gelesen zu haben, wird dadurch ausgebremst.

So etwas gibt es schon. Ich bin mir sicher, dazu etwas auf heise.de oder so gelesen zu haben. Leider konnte ich das Plugin nicht mehr finden.

Die Umsetzung

Folgender JavaScript-Code wird direkt unter das Kommentarformular gesetzt:

<!-- delaycommentz -->
<script type='text/javascript'>
    //hide comment field
    document.getElementById('respond').style.display='none';

    // wait x milliseconds
    //then show it again
    var delay = 120;
    var refresh_auto = window.setInterval('showComments()', delay*1000);

    function showComments(){
        document.getElementById('respond').style.display='block';
    }
</script>
<!-- /delaycommentz -->

Das Formular, das die ID „respond“ besitzt, wird direkt ausgeblendet und erst nach 120 Sekunden wieder eingeblendet.

Praktischerweise kann man das ganze auch sehr einfach als Wordpress-Plugin mit dem wohlklingenden Namen „delaycommentsz“ umsetzen:

dl

 

Die Installation ist denkbar einfach:

  1. zip-Datei entpacken
  2. Ordner auf den Server nach ‚/wp-content/plugins‘ hochladen
  3. Das Plugin ‚delaycommentsz‘ im Adminbereich aktivieren

In den Einstellungen kann man die Verzögerung dann sogar noch sekundengenau einstellen.

Einstellungsdialog von delaycommentsz

Einstellungsdialog von delaycommentsz

Mehr Ideen

  • Man könnte die Wartezeit abhängig von der Textlänge machen.
  • Dann könnte man eine Mindest- und eine Höchstwartezeit festlegen.
  • Und die Funktion nur für einzelne Artikel aktivieren.

Alles machbar, je nach Lust und Laune und Bedarf.

Falls jemand das ursprüngliche Plugin kennt und einen Link dazu hat, immer her damit.

I’m with stupid

Hin und wieder kommt man in die Situation, dass man eigentlich was anderes machen sollte, und – schwupps – hat man wieder etwas völlig anderes programmiert, das die Menschheit einen weiteren kleinen Schritt voran bringt. Bei mir war es mal wieder soweit.

I’m with stupid ist ein Spiel, das man auch gut in Internetforen spielen kann. Die Regeln sind simpel:

Da Rulez1

In jeder Runde stellt die Spielleitung eine bestimmte Anzahl Fragen. Die Mitspielerinnen und Mitspieler geben nun geheim ihre Antworten ab.

Haben alle ihre Antworten abgegeben, so wird ausgezählt: Jede Antwort ist genau so viele Punkte wert, wie oft sie insgesamt abgegeben wurde – unabhängig davon, ob sie wahr ist. Ein Beispiel:

Frage: Welcher ist der größte Kontinent?
Antworten: 5x Afrika, 3x Asien, 1x Antarktis, 1x Pangäa.

Wer ‚Afrika‘ geantwortet hat, bekommt also 5 Punkte gutgeschrieben, wer ‚Asien geantwortet hat 3 Punkte, ‚Antarktis‘ und ‚Pangäa‘ geben je 1 Punkt.

Die Punkte werden addiert und somit ein Rundensieger bzw. eine Rundensiegerin ermittelt (halt wer in der Runde die höchste Punktzahl hat, is klar).

Wer am Ende des Spiels die meisten Punkte hat, gewinnt.

Natürlich sagt vor Ende einer Runde niemand, was er/sie geantwortet hat, um die Spannung nicht zu zerstören. Bei ähnlichen Antworten (z. B. ‚Holland’/’Niederlande‘) entscheidet die Spielleitung in ihrer allgütigen Weisheit, ob die Antworten zusammengefasst oder als unterschiedlich behandelt werden.

Das Problem

Wie man sich leicht vor Augen führen kann, ist die manuelle Auswertung mordsaufwändig: Für jede Person die mitspielt müssen die Antworten zur Berechnung der Punktzahlen zunächst mitgezählt werden, dann die Punktzahlen für jede Antwort errechnet und anschließend rückwärts die errechneten Punktzahlen für jede Antwort den entsprechenden Mitspielerinnen und Mitspielern gutgeschrieben werden. Bei X Personen bedeutet eine Änderung von einem einzigen Wert schlimmstenfalls die Anpassung von O(X) weiteren Werten. Vor Rundenschluss schon mal Teilergebnisse berechnen ist also auch nicht sinnvoll.

Lässt sich das Ganze automatisieren? Okay, das war eine rhetorische Frage. Eine kurze Recherche förderte leider keine fertigen out-of-the-box-I’m-with-stupid-Auswertungslösungen zu Tage. Doch die Problemstellung hatte mich gepackt, ein bedienbares Programm musste her.

Die Lösung

I’m with stupid schreit förmlich nach einer Datenbankanwendung mit Aggregatsfunktionen und Gruppierung (COUNT(), SUM() und GROUP BY) – SQL ist schon was tolles. 6 Datenbanktabellen ein bisschen PHP drumrum, und fertig ist die Multiuser-Multigame-I’m-with-stupid-Umgebung für die faule Spielleitung. Es folgen ein paar Screenshots. Geplant ist, das noch irgendwie öffentlich spielbar zugänglich zu machen, dazu muss ich allerdings noch austüfteln, auf welchem Server unter welcher Domain das laufen soll.

Nach dem Login wird man von einer Übersicht über alle eigenen Spiele begrüßt. Mehrere Personen können gleichzeitig mehrere Spiele leiten.

Nach dem Login wird man von einer Übersicht aller eigenen Spiele begrüßt. Mehrere Personen können gleichzeitig mehrere eigene Spiele leiten.

Hier lassen sich Spieler anlegen und löschen

Hier lassen sich Spieler anlegen und löschen. Die Rundenverwaltung ist übrigens in jedem Menü verfügbar.

Das Kernstück der Anwendung. Hier lassen sich für die Mitspielerinnen und Mitspieler die Antworten eintragen, sobald sie eintreffen. Eine Autovervollständigung hilft dabei, bereits vorhandene ähnliche Antworten zu erkennen.

Das Kernstück der Anwendung. Hier lassen sich für die Mitspielerinnen und Mitspieler die Antworten eintragen, sobald sie eintreffen. Eine Autovervollständigung hilft dabei, bereits vorhandene ähnliche Antworten zu erkennen.

Die Fragen lassen sich im entsprechenden Menüpunkt erstellen und notfalls wieder löschen.

Die Fragen lassen sich im entsprechenden Menüpunkt erstellen und notfalls wieder löschen.

Eine Übersicht über alle Antworten gibt es im Menü 'Antworten verwalten'.

Eine Übersicht über alle Antworten gibt es im Menü ‚Antworten verwalten‘.

Was vor allem interessiert, sind natürlich die Ergebnisse. Hier haben wir Runden-...

Was vor allem interessiert, sind natürlich die Ergebnisse. Hier haben wir Runden-…

... und Gesamtpunktzahl im Angebot. Die Punkte werden immer frisch aus der Datenbank berechnet. Die Liste mit den Runden- und Gesamtplatzierungen lässt sich einfach herauskopieren.

… und Gesamtpunktzahl im Angebot. Die Punkte werden immer frisch aus der Datenbank berechnet. Die Liste mit den Runden- und Gesamtplatzierungen lässt sich einfach herauskopieren.

Detaillierte Rundenübersichten gibt es auch noch.

Detaillierte Rundenübersichten gibt es auch noch.

Die Entwicklung war schon spaßig. Das Ganze gibt es bereits im Quellcode auf GitHub, allerdings ist da eigentlich noch ein Refactoring nötig. Aber hey, es läuft 😉

Update: Natürlich will man auch wissen, wie viele Punkte die Antworten gebracht haben…

Die Punkteverteilung kann direkt mit leichter BBCode-Formatierung in beispielsweise einen Forenbeitrag kopiert werden.

Die Punkteverteilung kann direkt mit leichter BBCode-Formatierung in beispielsweise einen Forenbeitrag kopiert werden.

Update, 13.09.2013: Unter http://hscmi.de/iws/ kann man sich das ganze nun auch live und in Farbe ansehen.

  1. Ich wollte das schon immer mal schreiben!