Archiv für den Monat: Dezember 2014

Twoday-Tipp #7 – Beitragsmarkierung

newupdatestory.jpg

In tiefer Weihnachtsnacht wurde dem Forum die Frage beschert, ob es möglich sei, Beiträge und Kommentare in der Seitenspalte je nach Aktualisierungsstatus automatisch mit Neu oder Update zu kennzeichnen. Und auch hier heißt die richtige Antwort wieder: „Im Prinzip Twoday-Standard nein, jedoch, mit zwei kleinen Ergänzungen in den richtigen Skins geht es doch.

Zwar bietet die Twoday-Software keine direkte Funktion, um einen neuen von einem geänderten Beitrag zu unterscheiden, allerdings gibt es zu jedem Beitrag (und auch zu jedem Kommentar) zwei Zeitstempelfelder, die per Makro abrufbar sind:

  1. <% story.createtime %> gibt das Ersterstellungsdatum eines Beitrags,
  2. <% story.modifytime %> das Datum der letzten Beitragsänderung wieder.

Wenn modifytime also gleich createtime ist, darf man davon ausgehen, dass der betreffende Beitrag noch nie geändert wurde, also „Neu“ ist.

Relativierung: Dies wirft allerdings folgende Fragen auf: Wie lange gilt ein neuer Beitrag als „neu“? Soll er nach Ablauf einer gewissen Zeitspanne immer noch als „neu“ gekennzeichnet werden? Wohl eher nicht. Und ab wann gilt ein neuer Beitrag als „geändert“? Bereits dann, wenn man drei Minuten nach dem Anlegen einige Tippfehler korrigiert?

Diese Festlegungen sind individuell und können nach eigenem Gusto in der unten beschriebenen Lösung angepasst werden. Als Vorbelegung sind folgende Regeln abgebildet:

  1. Ist ein Beitrag oder Kommentar älter als 7 Tage, erhält er keine Kennzeichnung mehr als „neu“ oder „geändert“.
  2. Liegt zwischen Änderungsdatum und Erstellungsdatum nicht mehr als eine Minute, so gilt der Beitrag weiter als „neu“.

Der Abstand von einer Minute darf übrigens nicht auf Null verringert werden, da Twoday manchmal schon beim Neuanlegen eine (falsche) Minutendifferenz zwischen den beiden Zeitstempeln hat.

Installation der Beitragskennzeichnung

Um die Beitragsmarkierung zu aktivieren, müssen sowohl im Skin Site.style sowie in Story.historyview kleine Ergänzungen vorgenommen werden:

  1. Melden Sie sich auf Twoday mit Ihrem Account an und rufen Sie Ihren Blog auf.
  2. Wählen Sie in der Menüzeile oben AdminLayout und dann Skins (HTML)
  3. Klicken Sie auf die Überschrift Stylesheet (Site.style), danach in das Feld mit dem Scrollbalken und wandern Sie ganz an das Ende der Anzeige.
  4. Kopieren Sie dort folgende Zeilen hinein:
    .historyItem:before { content: ""; padding: 2px 4px; color: #fff; border-radius: 3px; font-size: 10px; font-weight: bold; margin-right: 5px; vertical-align: bottom; display: block; }
    .historyItem.new:before { content: "New"; background: #ee2424; display: inline; }
    .historyItem.update:before { content: "Update"; background: #aaa; display: inline; }

    Kopieren einfach gemacht: Fahren Sie mit der Maus über das schwarze Codefeld und klicken dort auf pop-up. Markieren Sie den Text in dem erscheinenden Pop-Up-Fenster, kopieren Sie ihn in die Zwischenablage und von da in das Skin-Textfeld.
    Ihr Stylesheet müsste nun in etwa so aussehen:

    newupdatestory3.jpg

  5. Klicken Sie auf „Speichern und Schließen“ um Ihre Änderungen zu sichern.
  6. Scrollen Sie nun in der Skinübersicht weiter herunter bis zur Überschrift „Elemente in den Seitenleisten“ und klicken Sie dort auf »kürzlich geändert« Eintrag (Story.historyview).
  7. Kopieren Sie das nachstehende Script vor das letzte </div> in diesem Skin:
    <script type="text/javascript">
    var now = Date.now(), modified = Date.parse("<% this.modifytime format="yyyy/MM/dd HH:mm" %>"), created = Date.parse("<% this.createtime format="yyyy/MM/dd HH:mm" %>");
    if (now - modified < 7*24*60*60*1000){
    scriptTag = document.getElementsByTagName("script");
    scriptTag[scriptTag.length-1].parentNode.className += (modified - created > 60000 ? " update" : " new");
    }
    </script>
    
  8. Ihr Modulcode sollte nun folgendermaßen aussehen:

    newupdatestory1.jpg

  9. Klicken Sie nach erfolgter Änderung unten auf „Speichern und Schließen“. In der Anzeige unter „Aktuelle Beiträge“ sollten nun farbige Markierungen neben den Beiträgen auftauchen (Hard-Reload via Strg-F5 nicht vergessen!).

    newupdatestory0.jpg

Markierung auch für Kommentare aktivieren

Falls Sie auch Kommentare automatisch mit „Neu/Geändert“-Markierungen versehen wollen, müssen Sie noch eine weitere Änderung vornehmen. Statt Story.historyview heißt der entsprechende Skin Comment.historyview. Dieser wird nicht direkt über die Skinseite zur Änderung angeboten, kann aber leicht folgendermaßen aufgerufen und verändert werden:

  1. Rufen Sie zunächst erneut den bereits geänderten Skin Story.historyview auf (siehe oben).
  2. Gehen Sie nun oben in die Browseradresszeile und ersetzen Sie „Story“ durch „Comment

    newupdatestory2.jpg

  3. Nachdem Sie die Datenfreigabe-/Return-Taste gedrückt haben, wird der Skin Comment.historyview angezeigt. Kopieren Sie das oben erwähnte Script auch hier vor das letzte </div> und speichern Sie die Änderung.
Zeitspannen ändern

Die vorbelegte Zeitspanne von 7 Tagen, ab der keine Markierungen mehr angezeigt werden, kann einfach geändert werden.

Twoday-Zeitstempel reflektieren vergangene Millisekunden seit einem bestimmten Fixdatum. Die Differenz aus modifytime und createtime ist also eine Millisekundenzahl. Im Script finden Sie eine Stelle now – modified < 7*24*60*60*1000, die die Millisekundenzahl für 7 Tage darstellt. Wollen Sie die Markierung beispielsweise erst nach 14 Tagen stoppen, ersetzen Sie 7 durch 14.

Sie können auch ändern, wie lange ein Beitrag die Markierung „Neu“ behält, obwohl Sie ihn zwischenzeitlich ändern.

Im Script wird an der Stelle modified – created > 60000 geprüft, ob bereits eine Minute (60 Sekunden * 1000 Millisekunden) vergangen ist, bevor eine „Änderung“ konstatiert wird. Wollen Sie z.B. 4 Stunden für eigene Anfangskorrekturen reservieren, dann ersetzen Sie die 60000 durch 4*60*60*1000.

Farben oder Text ändern

Farben oder Text ändern Sie im Stylesheet (Skin Site.style). Die Neu-Markierung wird durch den eingefügten Eintrag .historyItem.new:before gesteuert, die Geändert-Markierung entsprechend durch .historyItem.update:before. Die Hintergrundfarbe wird über den Parameter background: #farbe gesetzt. Den richtigen Wert für Ihre Wunschfarbe können Sie z.B. hier ermitteln.

Texte ändern Sie im Parameter content. Dort können Sie für „New“ und „Update“ z.B. „Neu“ und „Geändert“ oder beliebige andere kurze Texte einsetzen.

Problematische Änderungserkennung unter Twoday

Die Twoday-Software erkennt nicht immer zuverlässig Textänderungen an Beiträgen oder Kommentaren (wodurch dann der modifytime-Zeitstempel nicht verlässlich gesetzt wird). Z.B. wird keine Änderung erkannt, wenn man nur den Titel ändert. Auch im Textbereich eines Beitrags/Kommentars werden Änderungen erst ab einem bestimmten, größeren Umfang registriert.

Wenn man also eine Änderungserkennung erzwingen will, kopiert man eine längere Zeichenkette, sichert einmal, löscht diese wieder und sichert erneut. Umständlich, aber das funktioniert dann.

Um diesen Beitrag zu drucken, klicken Sie bitte in der Menüzeile oben rechts auf das Druckersymbol

© 2014 NeonWilderness — lizensiert unter MIT.

Twoday-Tipp #6 – Berechtigungen für Twoday-Module

module2role/role01.jpg

Die Anfrage von LadySaville im Hilfe-Forum wirft eine interessante Fragestellung auf: Wie kann man ausgewählte, eigene Twoday-Module bestimmten Mitgliedergruppen zuordnen und die Modulanzeige auf diese beschränken?

Beispiel: Als Blogbesitzer möchte ich die Liste meiner Abonnements (Sidebar-Modul: „Abonnements“), meine Bücherliste (Sidebar-Modul: „Bücherliste“) sowie meine Kommentare auf anderen Blogs (Sidebar-Modul: „Meine Kommentare“) nur meinen eingetragenen Abonnenten anzeigen. Wie kann man dies realisieren?

Das Twoday-Berechtigungsmodell

Für plattforminterne Berechtigungsprüfungen verwendet Twoday 5 Rollen­definitionen, mit denen jeweils bestimmte Erlaubnisse verbunden sind. Der Berech­tigungs­umfang entspricht einer invertierten Pyramide und wächst vom einfachen Blogleser mit minimaler Berechtigung bis zum Administrator mit maximalen Berechtigungen an. Jede höhere Stufe umfasst automatisch auch alle Berechtigungen der darunter liegenden Stufen.
Beispiel: Die Rolle „Contributor“ hat neben den speziellen Berechtigungen für diese Rolle auch alle Berechtigungen eines Subscribers oder Bloglesers.

module2role/role02.jpg

Ein Blogbesitzer (Eigentümer) ist gleichzeitig immer auch „Administrator“. Ein normaler Abonnent erhält automatisch die Standardberechtigung „Subscriber“, kann aber vom Administrator des Blogs (individuell) auf höhere Berechtigungsstufen angehoben werden. Jeder Besitzer eines Twoday-Blogs kann die beschriebenen Berechtigungsrollen unter AdminMitglieder (bzw. der Direkt-URL blogname.twoday.net/members/main) an beliebige andere Twoday-Mitglieder vergeben oder diese auch wieder zurücknehmen:

module2role/role03.jpg

Als wahrscheinlich häufigste Anwendungsfälle (Use-Cases) für Modulberechtigungen kann man sich folgende Szenarien vorstellen:

  • Twoday-Module, die man nur seinen eingetragenen Abonnenten zeigen will,
  • Module, die man nur selbst als Blogbesitzer (respektive Administrator) angezeigt bekommen soll.

Trotz dieser zwei plausibelsten Fälle habe ich die Routine zur Berechtigungsprüfung sofort allgemeingültig realisiert, d.h. dass prinzipiell alle definierten Twoday-Rollen für Berechtigungsprüfungen verwendet werden können.

Installation der Berechtigungsprüfung für Twoday-Module

Die Aktivierung der Berechtigungsprüfung auf Modulebene ist sehr einfach und besteht in der Ergänzung zweier Zeilen im Skin Seitenleiste 2 (Site.sidebar02):

  1. Melden Sie sich auf Twoday mit Ihrem Account an und rufen Sie Ihren Blog auf.
  2. Wählen Sie in der Menüzeile oben AdminLayout und dann Skins (HTML)
  3. Scrollen Sie herunter bis zur Überschrift „Seitenleisten“ und klicken Sie dort auf Seitenleiste 2 (Site.sidebar02).

    module2role/role04.jpg

  4. Geben Sie dort hinter der vorhandenen Zeile <% site.sidebarItems for=“sidebar02″ %> die nachstehenden zwei neuen Zeilen ein:
    <div id="loginStatus" style="display:none"><% site.loginstatus %></div>
    <script src="http://static.twoday.net/cdn/files/module2role-min-js.js">
  5. Ihr Modulcode sollte nun folgendermaßen aussehen:

    module2role/role05.jpg

  6. Klicken Sie abschließend unten auf „Speichern und Schließen“:

    module2role/role06.jpg

    Fertig! Damit haben Sie die Berechtigungsprüfung prinzipiell aktiviert und können nun daran gehen, einzelne Module bestimmten Rollen zuzuordnen.

Module bestimmten Twoday-Rollen zuordnen

Unter „Module“ versteht man diejenigen Elemente, die Sie in Ihre zwei Sidebars aufnehmen können. Klicken Sie in Ihrer Blog-Menüzeile auf AdminModule und dann Sidebar Module, um sich die 26 verfügbaren Module anzeigen zu lassen.

Nehmen wir an, Sie haben das Modul „Free-Text (4)“ in Ihre Sidebar aufgenommen, wollen seinen Inhalt aber nur Ihren Contributoren anzeigen. Um das Modul also der Berechtigung „Contributor“ zuzuordnen, gehen Sie in die Einstellungen zu diesem Modul und ergänzen in der Überschrift ganz einfach den Text @[Contributor] und sichern danach Ihre Änderung:

module2role/role07.jpg

Wollen Sie ein Modul nur Ihren eingetragenen Abonnenten zeigen, ergänzen Sie ein @[Subscriber] in der Überschrift. Soll ein Modul nur für Sie als Blogbesitzer (=Administrator) sichtbar sein, fügen Sie stattdessen ein @[Administrator] an.

Beim Aufruf des Blogs wird das obige Beispiel folgendermaßen in der Sidebar angezeigt — natürlich nur, wenn man über die Berechtigung Contributor oder höher verfügt:

module2role/role08.jpg

Wie man sehen kann, entfernt die Routine vor der Anzeige des Moduls den Berechtigungszusatz aus der Überschrift.

Verfügt man als Aufrufer der Webseite nicht über die erforderliche Berechtigung, wird das betreffende Modul aus der Sidebar-Anzeige entfernt.

Auf diese Weise können Sie nun alle in Ihrer Sidebar angezeigten Module — so das Sinn macht — nacheinander gewünschten Berechtigungsgruppen zuordnen. Hat ein Modul keinen Berechtigungszusatz, so bleibt es grundsätzlich für alle Blogbesucher sichtbar.

Um diesen Beitrag zu drucken, klicken Sie bitte in der Menüzeile oben rechts auf das Druckersymbol

© 2014 NeonWilderness — module2role ist OpenSource und lizensiert unter MIT.Quellcode

Berechtigungsprüfung für Twoday-Module

module2role/role01.jpg

Die Anfrage von LadySaville im Hilfe-Forum wirft eine interessante Fragestellung auf: Wie kann man ausgewählte, eigene Twoday-Module bestimmten Mitgliedergruppen zuordnen und die Modulanzeige auf diese beschränken?

Beispiel: Als Blogbesitzer möchte ich die Liste meiner Abonnements (Sidebar-Modul: „Abonnements“), meine Bücherliste (Sidebar-Modul: „Bücherliste“) sowie meine Kommentare auf anderen Blogs (Sidebar-Modul: „Meine Kommentare“) nur meinen eingetragenen Abonnenten anzeigen. Wie kann man dies realisieren?

Das Twoday-Berechtigungsmodell

Für plattforminterne Berechtigungsprüfungen verwendet Twoday 5 Rollen­definitionen, mit denen jeweils bestimmte Erlaubnisse verbunden sind. Der Berech­tigungs­umfang entspricht einer invertierten Pyramide und wächst vom einfachen Blogleser mit minimaler Berechtigung bis zum Administrator mit maximalen Berechtigungen an. Jede höhere Stufe umfasst automatisch auch alle Berechtigungen der darunter liegenden Stufen.
Beispiel: Die Rolle „Contributor“ hat neben den speziellen Berechtigungen für diese Rolle auch alle Berechtigungen eines Subscribers oder Bloglesers.

module2role/role02.jpg

Ein Blogbesitzer (Eigentümer) ist gleichzeitig immer auch „Administrator“. Ein normaler Abonnent erhält automatisch die Standardberechtigung „Subscriber“, kann aber vom Administrator des Blogs (individuell) auf höhere Berechtigungsstufen angehoben werden. Jeder Besitzer eines Twoday-Blogs kann die beschriebenen Berechtigungsrollen unter AdminMitglieder (bzw. der Direkt-URL blogname.twoday.net/members/main) an beliebige andere Twoday-Mitglieder vergeben oder diese auch wieder zurücknehmen:

module2role/role03.jpg

Als wahrscheinlich häufigste Anwendungsfälle (Use-Cases) für Modulberechtigungen kann man sich folgende Szenarien vorstellen:

  • Twoday-Module, die man nur seinen eingetragenen Abonnenten zeigen will,
  • Module, die man nur selbst als Blogbesitzer (respektive Administrator) angezeigt bekommen soll.

Trotz dieser zwei plausibelsten Fälle habe ich die Routine zur Berechtigungsprüfung sofort allgemeingültig realisiert, d.h. dass prinzipiell alle definierten Twoday-Rollen für Berechtigungsprüfungen verwendet werden können.

Installation der Berechtigungsprüfung für Twoday-Module

Die Aktivierung der Berechtigungsprüfung auf Modulebene ist sehr einfach und besteht in der Ergänzung zweier Zeilen im Skin Seitenleiste 2 (Site.sidebar02):

  1. Melden Sie sich auf Twoday mit Ihrem Account an und rufen Sie Ihren Blog auf.
  2. Wählen Sie in der Menüzeile oben AdminLayout und dann Skins (HTML)
  3. Scrollen Sie herunter bis zur Überschrift „Seitenleisten“ und klicken Sie dort auf Seitenleiste 2 (Site.sidebar02).

    module2role/role04.jpg

  4. Geben Sie dort hinter der vorhandenen Zeile <% site.sidebarItems for=“sidebar02″ %> die nachstehenden zwei neuen Zeilen ein:
    <div id="loginStatus" style="display:none"><% site.loginstatus %></div>
    <script src="http://static.twoday.net/cdn/files/module2role-min-js.js">
  5. Ihr Modulcode sollte nun folgendermaßen aussehen:

    module2role/role05.jpg

  6. Klicken Sie abschließend unten auf „Speichern und Schließen“:

    module2role/role06.jpg

    Fertig! Damit haben Sie die Berechtigungsprüfung prinzipiell aktiviert und können nun daran gehen, einzelne Module bestimmten Rollen zuzuordnen.

Module bestimmten Twoday-Rollen zuordnen

Unter „Module“ versteht man diejenigen Elemente, die Sie in Ihre zwei Sidebars aufnehmen können. Klicken Sie in Ihrer Blog-Menüzeile auf AdminModule und dann Sidebar Module, um sich die 26 verfügbaren Module anzeigen zu lassen.

Nehmen wir an, Sie haben das Modul „Free-Text (4)“ in Ihre Sidebar aufgenommen, wollen seinen Inhalt aber nur Ihren Contributoren anzeigen. Um das Modul also der Berechtigung „Contributor“ zuzuordnen, gehen Sie in die Einstellungen zu diesem Modul und ergänzen in der Überschrift ganz einfach den Text @[Contributor] und sichern danach Ihre Änderung:

module2role/role07.jpg

Wollen Sie ein Modul nur Ihren eingetragenen Abonnenten zeigen, ergänzen Sie ein @[Subscriber] in der Überschrift. Soll ein Modul nur für Sie als Blogbesitzer (=Administrator) sichtbar sein, fügen Sie stattdessen ein @[Administrator] an.

Beim Aufruf des Blogs wird das obige Beispiel folgendermaßen in der Sidebar angezeigt — natürlich nur, wenn man über die Berechtigung Contributor oder höher verfügt:

module2role/role08.jpg

Wie man sehen kann, entfernt die Routine vor der Anzeige des Moduls den Berechtigungszusatz aus der Überschrift.

Verfügt man als Aufrufer der Webseite nicht über die erforderliche Berechtigung, wird das betreffende Modul aus der Sidebar-Anzeige entfernt.

Auf diese Weise können Sie nun alle in Ihrer Sidebar angezeigten Module — so das Sinn macht — nacheinander gewünschten Berechtigungsgruppen zuordnen. Hat ein Modul keinen Berechtigungszusatz, so bleibt es grundsätzlich für alle Blogbesucher sichtbar.

Um diesen Beitrag zu drucken, klicken Sie bitte in der Menüzeile oben rechts auf das Druckersymbol

© 2014 NeonWilderness — module2role ist OpenSource und lizensiert unter MIT.Quellcode

Die Pigrider-Pokalisierung

 Zum Schweine drängt, am Schweine hängt doch alles. Ach, wir Armen!

Schon Goethe muss Freitagstexter gewesen sein, hat er doch die Last der adäquaten Pokalisierung von Schweinebildsprüchen seinerzeit in bewegende und brandaktuelle Worte gefasst. Denn es sind Schweinswochen bei Freitagstextern und Sau samt mißgestimmtem Reiter wollten bestmöglich betextet werden.

Absolut hervorragend, was da alles im Ergebnis zu lesen war — jedoch, was musste sich die arme Sau alles gefallen lassen: Formel1-Rennwagen, Galoppschwein, Buffetauslage, eifersüchtiges Wollschwein, mundfauler Friseurkunde, Scheißschwein (unerhört *grunz*), enttäuschender Pferdeersatz, weichgerittenes Lunch, stinkendes Pony, losgelassene Sau, beschämendes Gscher, Wollmilchsau mit goldenen Eiern, Schweinsgalopptrainer und widerborstiges Weib. Das ist wahrlich mehr, als eine zarte Sau emotional tragen kann! Aber wollen wir gnädig darüber hinwegsehen und zum wichtigen Hauptteil schreiten: der Metallausgabe.

Bronze erhält bewitchedmind für das vollschlanke und intensiv duftende „Pony“, außerdem für die schöne Erinnerung daran, dass ich selber schon mal am Weihnachtsabend in 2,5 Stunden ein Playmobil-Piratenschiff für den kleinen Neon zusammengebaut habe.Hätte Anna-Lena geahnt, daß das ersehnte Pony so einen intensiven Körpergeruch verströmen würde, hätte sie sich doch lieber das Playmobil-Piratenschiff zu Weihnachten gewünscht.

Silber hat sich Herr Boomerang für seinen nordisch-trocken-kurzen und sehr schön verknappten Friseurauftrag (der auch noch den Auftraggeber offen lässt) erkämpft,Theo war bei seinem ersten Friseurbesuch kurz angebunden:
„So wie der da!“

Goldpokal und die edle Verpflichtung zur Weiterführung hat sich Herr Pathologe mit seinem Start-Ziel-Gewinnerbeitrag ertextet: auch wenn der mißgelaunte kleine Hosenmatz wenig Ähnlichkeit mit Dauerlächler Vettel aufweist, so ist der kongeniale Synapsenlink zum Saubär Sauber-Mercedes nach Jurymeinung diesmal nicht zu schlagen.Bei seinem ersten Grand Prix in Monaco hatte der junge Sebastian Vettel auf seinem Saubär „Mercedes“ nur geringe Chancen auf einen Spitzenplatz.

Der Trostpreis geht an Rebekka aka Frau Rebhuhn: Sie darf bis Freitag auf dem Schwein reiten und es so lange kraulen, bis die pikierte Sau das „Scheißschwein“ vergessen hat! ;)

Herzlichen Glückwunsch den Preisträgern und vielen Dank an alle Mitmachtexter:innen für ihre Beiträge! Die nächste Chance auf Sieg und Platz ergibt sich ab Freitag hier: