Artikel mit Tag serendipity
Verwandte Tags
autotitle bartleby blogs ursprung buzz commentedit dbclean listsearch projekt markupcomment nl2p photo android feedtragón ice-prefer ice-win icewm idesk-helper image-sacon izulu nachhaltigkeit pc-kombo rsspusher simdock sustaphones pubsubhubbub reallivecomment realtimecomments spamblock_bayes template_editor dsnblog rubySerendipity 1.7
Tuesday, 14. May 2013
Zuerst ein Hinweis auf einen Bug, auf den hier. Zur Vermeidung nach dem Upgrade auf 1.7 einfach in der Konfiguration die Option "URL zum Blog" nachtragen, oder die Einstellungen bis 1.7.1 nächste Woche komplett nicht anfassen. Hat mir fast Spaß gemacht, den erst halb zu fixen, nur um dann mit meinem Patch selbst in den Bug zu rennen und im Bus auf die Lösung des Problems zu kommen. Wer während meines Nachdenkens mein Gesicht gelesen hätte, hätte mich wahrscheinlich für etwas sonderbar gehalten.
Ansonsten ist 1.7 genau wie in der Releaseankündigung beschrieben in erster Linie ein Release, das notwendig wurde, weil die weiteren Änderungen von PHP 5.x Änderungen bei Serendipity notwendig machten, größtenteils der Pointerkram. Interessanter sind die neuen Funktionen und Anpassungen:
Smarty 3 ist an so viel Stellen schöner zu schreiben als die Vorgängerversion, dass ich schon eine Weile nur noch Smarty 3-Templates produziere. Schon das neue foreach alleine wäre das Upgrade wert.
Mir besonders wichtig ist die "stable archives"-Option. Google weniger unnötige Änderungen zuzumuten und von Google kommende Leser besser finden zu lassen, was sie suchen, hat mich sofort überzeugt und setzte ich deswegen besonders gerne um. Habe auch noch keine Blogsoftware bewusst wahrgenommen, die das ebenfalls richtig macht.
Und dass Dateien ohne Dateiendungen von der Mediendatenbank jetzt korrekt erkannt werden dürfte für mich hilfreich sein.
Alles in allem ein kleines Release, das sich aber auf jeden Fall lohnt. Der Autoupdater hat übrigens bei mir einwandfrei funktioniert.
Einfaches Staticpage-Plugin
Friday, 30. November 2012
Ich würde gerne ein einfacher bedienbares Serendipity-Plugin zum Erstellen statischer Seiten haben. Soweit ich das mitbekommen habe, geht das nicht nur mir so. Daher habe ich das Plugin in einer abgespeckten Version neu geschrieben. Die Oberfläche ist noch ungestylt, hätte meiner Vorstellung nach aber diesen Aufbau:
Das Plugin ist noch nicht fertig, es fehlt in jedem Fall eine Vorschaufunktion. Und es läuft erst ab Serendipity 1.7, weil es die Smarty 3-Syntax nutzt.
Ich könnte trotzdem jetzt schon Hilfe gebrauchen, das Plugin zu vervollständigen:
- Das Plugin müsste mit mod_rewrite getestet werden, höchstwahrscheinlich funktioniert es damit noch nicht.
- Auch ohne Testmöglichkeit kann man mir helfen: Welche Funktionen des normalen Staticpage-Plugins nutzt du, welche braucht ein möglicher Ersatz deiner Meinung nach auf jeden Fall?
Doppelte Seiten in s9y
Tuesday, 16. October 2012
Diese Tipps (alternativ im Forum) finde ich gar nicht so sinnlos. Auch wenn seo im Titel steht.
Bei dem Vermeiden von doppelten Seiten muss es nicht um Suchmaschinenoptimierung gehen. Bei mir bemerkte ich z.B. erstmal gar keinen positiven Effekt in der Hinsicht, sondern schlicht weniger indexierte Seiten. Aber oftmals sind diese doppelten Seiten nicht stabil, wenn ein Besucher auf einer Suchmaschine also einem solchen Link folgt findet er wahrscheinlich nicht was er sucht. Auch wenn mein Patch für die stabilen Seiten das zumindest für das Archiv verhindert.
In Kurzform die Vorschläge:
{if ($view == "entry" || $view == 'start' || $staticpage_pagetitle != '')} <meta name="robots" content="index,follow" /> {else} <meta name="robots" content="noindex,follow" /> {/if}
in die index.tpl, damit nur die Startseite, statische Seiten und einzelne Artikel indexiert, der Rest aber noch gecrawlt wird. Im Folgeartikel dann noch der sinnvolle Vorschlag, über
{if ($view == "entry")} <link rel="canonical" href="{$entry.rdf_ident}" /> {/if} {if ($view == "start")} <link rel="canonical" href="{$serendipityBaseURL}" /> {/if}
eine kanonische URL zu setzen.
Desweiteren werden die /comments- und /authors-Seiten kritisiert, eigentlich ganz praktische Übersichtsseiten. Die Kommentarübersicht ist nirgends verlinkt und war mir gar nicht bekannt, ich bezweifel, dass die ein Problem ist. Bei /authors sieht das anders aus, bei einem Einzelnutzerblog ist die eine völlig unnötige Spiegelung des gesamten Blogs. Mit der .htaccess werde ich nicht rumspielen, aber in der entries.tpl statt /authors eine eigens erstellte Autorenseite zu verlinken erschien mir sinnvoll.
Caching für s9y
Friday, 12. October 2012
Der letzte Artikel hat scheinbar einige Klicks abbekommen. Ich habe keine Statistik über die Besucherzahlen, aber man merkte es an der Last: Die stieg von normalerweise 0,2 auf 1,3. Das ist an sich kein hoher Wert, aber man bemerkte es hier leider durch deutlich längere Ladezeiten.
Deswegen habe ich das cachesimple-Plugin aktiviert und es war faszinierend zu sehen, wie sofort die Last absank und die Ladezeiten auf normale Werte zurückfielen, sogar eher kürzer wurden. Das Plugin zu aktivieren ist also auf jeden Fall eine gute Idee, wenn der Blog ab und an ein paar Aufrufe mehr stemmen muss, wobei der Cache dynamische Features wie das Karma- oder Statistik-Plugin stört. Das macht ein Server-Zusammenbruch unter Last allerdings auch.
Nur sporadisch stieg die Last nochmal an, das legte sich aber immer wieder schnell und könnte am Plugin gelegen haben. Sicherheitshalber wurde noch das Echtzeitkommentar-Plugin entfernt, das bei vielen offenen Artikelseiten ordentlich Serverlast verursachen kann.
Da das cachesimple-Plugin aber schon ewig als experimentell gekennzeichnet ist habe ich mal nachgefragt, was der derzeitige Stand ist. Ein Blog sollte ja eigentlich immer komplett gecached sein, da er viel öfter gelesen als beschrieben wird, auch mit Kommentaren. Und eigentlich will man eine Struktur, die zum einen alle Datenbankabfragen cached, nahezu alle PHP-Logik drumherum und dann am besten nochmal den Zusammenbau der einzelnen Seitenbestandteile (hier Smarty), um schließlich trotzdem noch dynamische Plugins zu erlauben. Ich hoffe, die Diskussion geht weiter und es kommt Code dabei herum - auch um das morgen noch im Kopf zu haben schreibe ich das hier gerade - aber Caching auf ein bestehendes und dafür nicht unbedingt passend entworfenes System wie s9y draufzusetzen ist gar nicht so einfach, soviel scheint klar.
Die Powercache-Variante von Serendipity, über die wir da reden, ist übrigens auf github zu finden, und die Idee von Idee von Kris Köhntopp meint diesen Artikel.
Serendipity auf Raspberry Pi
Friday, 20. July 2012
I have installed Wordpress, Drupal, Joomla, Blazeblogger and Bti in an attempt to get a proper blog working on the Rpi, all fairly easy to install once you have php and mysql installed..but... the performance is very poor indeed, all suffered from the low specs of the PI.
...
update, I have finally settled on Serendipity which appears to work well so far with apache2 and mysql.
Das ist nett zu lesen. Generell sind die Ladezeiten der Seite gerade so im akzeptablen Bereich. Wobei man die nicht-spezifizierte Heimleitung berücksichtigen muss.
Genau auf solcher Hardware sollte man Software optimieren.
Serendipity: Kommentarbereich erweitern
Thursday, 5. July 2012
Der Kommentarbereich von Serendipity ist auch im Grundzustand nicht verkehrt. Tollerweise unterstützt s9y standardmäßig Threading von Kommentaren und stellt Antworten passend eingerückt dar. Dazu kommen die problemlos funktionierenden Markup-Plugins.
Trotzdem gibt es noch viel, was man machen kann. Ich habe dazu sogar schon eine vierteilige Reihe verfasst. Kernidee dort war, den Bereich zu entschlacken und mit subtilem Design klarer zu gestalten.
Es gibt aber auch eine Reihe von Plugins, die die Funktionalität des Kommentarbereichs erweitern. Das war für mich damals der Anfangspunkt, um in die s9y-(Plugin-)Entwicklung zu rutschen. Ich will das mal auflisten.
Commentspice
Grischa hat gerade eben Version 1.01 seines Commentspice-Plugins veröffentlicht. Auch Version 1.0 ist noch nicht lange draußen. Die Kernidee ist wohl, den Kommentator zu belohnen und ihm mehr Möglichkeiten zu geben. Da drin ist äußerst nette Funktionalität enthalten. Ich zitiere Grischa:
- Eingabe des Twitter Namens: Gibt der Kommentator diesen ein, so wird seine Twitter Timeline mit seinem Kommentar verlinkt. Das bringt ihm potentiell neue Follower und der Leser kann sich ein Bild darüber machen, was der Autor des Kommentars in 140 Zeichen verfasst.
- Bewerben letzter Artikel: Dies ist eine Erweiterung zu der Homepage Eingabe. Ist hier etwas eingegeben, dann sucht CommentSpice die letzten Artikel heraus, die es auf der Homepage findet. Wurden welche gefunden, so werden sie beim Kommentieren zur Auswahl angeboten. Der gespeicherte Kommentar wird dann mit der Information angereichert, worüber der Kommentator zum Zeitpunkt des Kommentierens geschrieben hat. Das ist wieder gut für beide: Der Leser kann den Schreiber besser einordnen, der Schreiber kann etwas Extrawerbung hinterlassen, die noch mehr animiert, mal einen Kommentar zu hinterlassen.
Inzwischen ist da noch mehr hinzugekommen, z.B. die Möglichkeit, per Audioboo einen Audiokommentar zu hinterlassen (oder ist das woanders her, Grischa? Passt auf jeden Fall gut zum Rest). Außerdem ist ein scheinbar hervorragend funktionierender Honeypot für Spamkommentare enthalten, die Eingabe der Telefonnumer, was Bots tun und dafür gebannt werden, normale Leser aber nicht sehen.
Ich hoffe, dass Grischa das Plugin in das folgende Plugin integriert und den Honeypot auslagert.
Erweiterter Kommentarbereich
Dieses Plugin war ursprünglich das Live-Kommentarvorschau-Plugin. Ich stolperte darüber, dass live gar nicht live war, und rüstete diese Funktionalität inklusive JS-Formatierungsparser nach. Es wurde aber auch ein Sammelpunkt für andere Funktionalitäten. Inzwischen bietet das also:
Live-Kommentarvorschau
Während der Kommentator noch seinen Kommentar tippt, wird automatisch und auf Wunsch instant eine Vorschau dieses Kommentars samt fertigen Formatierungen über dem Kommentarfeld angezeigt.
Markup-Button
Mich störten die ellenlangen Erklärungen, die man Kommentatoren an die Hand geben musste, um ihnen das Formatieren mit den ensprechenden Formatierungssprachen zu ermöglichen. Daher kann das Plugin die von Editoren bekannten Formatierungsbuttons einblenden, welche die Formatierungen dann auf Knopfdruck einfügen.
Elastische Kommentareingabe
Vergrößert das Kommentarfeld, wenn der Text größer als das Feld wird. Ist wohl als legacy-Feature zu betrachten, da moderne Browser die Textfelder ja selbst vergrößern können.
Kommentarbearbeitung
Mir passiert es dauernd, dass ich einen Kommentar abschicke und danach einen Tipper entdecke. Daher bekommt man über das Plugin die Möglichkeit, während den 5 Minuten nach Absendung des Kommentars den Kommentar direkt in der Artikelansicht zu bearbeiten. Meiner Erfahrung nach funktioniert das Plugin einwandfrei und ist sehr hilfreich. Möchte ich nochmal jedem ans Herz legen.
Echtzeit-Kommentare
Das war damals ein Experiment und ich fürchte, es bräuchte noch Arbeit um als gelungen oder für beendet erklärt werden zu können. Kommentiert jemand, wird allen derzeitigen Lesern des Artikels dieser Kommentar angezeigt - falls sie sich den Kommentarbereich ansehen, natürlich kein Popup oder sowas - ohne dass die Seite neu geladen werden müsste.
Spamplugins
Klar, die dunkle Seite des Kommentierens ist Spam. Es gibt einige Spamplugins. Im Standard-Spamblock-Plugin enthalten ist ein Wortfilter, Timeoutintervalle, Automoderation und eine Akismetanbindung, und mehr. Es ist sehr umfangreich. Dazu kommt das Bayes-Plugin. Mit den beiden Plugins sollte Spam schon kein großes Thema sein, zumindest automatisierter Bot-Spam. Mit Commentspice gibt es nun noch einen Honeypot. Zusätzlich ist in Spartacus ein Challenge-Response-Plugin aufgetaucht, das ich selbst gar nicht kenne, Recaptcha als letzer Ausweg steht zur Verfügung und RBL/SURBL als Filterlisten könnten auch helfen (beide hatten kritische Einträge im Forum und wurden von mir daher nicht getestet).
Tags und Kategorien sind Synonyme?
Saturday, 2. June 2012
Vor ein paar Jahren gab es eine etwas größere Diskussion über Tags und Kategorien, was wofür genutzt werden soll, welche Vorteile was hat und wo die Unterschiede liegen. Ich selbst nutze inzwischen Kategorien für eine generelle Einordnung in ein Themengebiet (das hier ist Technikzeugs) und Tags für die Zuordnung zu einem bestimmten Projekt (hier serendipity). Jetzt ist mir aufgefallen, dass das an sich Unsinn ist.
Kategorien und Tags haben unterschiedliche Semantik. In Kategorien ordnet man etwas ein, Tags ordnet man etwas zu. Kategorien sind, als würde man den Artikel in einem Ordner ablegen und Tags, als ob man dann später auf den Artikel ein paar Stichwörter draufklebt. Schlagwörter ist daher auch eine passende Übersetzung für Tags. Diesem Verständnis entsprechend habe ich beide Systeme genutzt.
Aber technisch? Ich habe irgendwo eine Zuordnung von Artikeln zu Tags und irgendwo eine von Artikeln zu Kategorien. Wie das nun konkret gemacht ist - ob das in den Artikel geschrieben oder eine Tabelle dafür gepflegt wird - ist eigentlich komplett irrelevant.
Wenn der technische Unterschied irrelevant oder nichtvorhanden sind, bleibt nur der gedachte Sinn im mentalen Modell oder die konkrete Nutzungsmöglichkeit, um den Unterscheid zwischen den beiden Systemen zu bestimmen. Und tatsächlich sind die Widgets beider Systeme in s9y, durch die sie bedient werden, sehr unterschiedlich.
Die Oberflächen
Hier ein Bild des Serendipity-Editors:
Rechts oben ist die Kategorieauswahl. Unten ist die Tageingabe und Auswahl. Und hier ist der erste große konkrete Unterschied: Während Tags ausgewählt und eingetippt werden können, können Kategorien nur ausgewählt werden. Es gibt vom Editor aus schlicht keine Möglichkeit, eine neue Kategorie anzulegen. Das passt zum mentalen Bild einer Kategorie, die vorher da ist und in die etwas eingeordnet wird.
Kategorien sind beständig. Als ich meinen Blog einrichtete, fragte ich mich: "Worüber willst du schreiben?" und legte dementsprechend Kategorien an. Andere kamen später hinzu. Bei Tags wäre dieses Vorgehen unsinnig, da sie den Artikel beschreiben sind sie ihm nachgeordnet und werden auch danach erstellt. Das passt interessanterweise auch zur (in s9y wahrscheinlich technisch bedingten) Platzierung: Die Kategorieauswahl im Kopf des Artikels, vor dem Text des Artikels, die Tags darunter, nach dem Text des Artikels.
Den anderen Teil der Oberfläche kann man hier auf der rechten Seite sehen: die Kategorieliste. Sie ermöglicht ein Filtern der Artikel nach Kategorien. Tags können das auch, das typische Konzept hier ist die Tagwolke, meiner Erfahrung nach immer unbenutzbar.
Die Überlegung
Wir haben also zwei Systeme zur Einordnung von Artikeln, die auf Datenbankebene identisch realisiert werden können, sich aber von der Oberfläche und dem mentalen Modell unterscheiden. Es könnte ein Projekt für s9y 2.0 sein, die beiden Systeme zu vereinheitlichen. Das könnte eine sinnvolle Vereinheitlichung und ein Weg sein, das freetag-Plugin loszuwerden, das inzwischen zu einem schwer durchschaubaren Codemonster geworden ist und dringend einen Rewrite bräuchte (ich habe ein paar Bugs darin gefixt und Funktionen eingebaut, um daraufhin eine ganze Weile die von mir verursachten Fehler zu fixen, nie wirklich wissend, ob nun alles stimmt - derzeit scheint es zu passen). Was müsste ein solches System können?
- Blogartikel im Groben kategorisieren
- Blogartikel speziell verschlagworten
- Die Blogansicht filtern
- Verwandte Artikel anzeigen
Ich denke da an ein Tagsystem an der Stelle des bisherigen Kateogie-Dropdowns. Dazu die Möglichkeit, Elterntags zu erstellen, die dann die Funktion der Kategorien übernehmen. Wie genau da die Oberfläche und der Nutzungsablauf aussehen könnte, müsste noch überlegt werden.
Stabile Archiv-URLs in Serendipity
Monday, 28. May 2012
Der Gedanke ist nicht ursprünglich von mir, aber ich fand ihn überzeugend: Blogengines machen Archivseiten falsch, auch Serendipity. Derzeit liegen die einzelnen Artikel auf Archivseiten, nummeriert von 1 (heute) bis n (früher), archives/P134.html als Beispiel. Das ist unpraktisch, denn n wächst natürlich mit zunehmender Artikelanzahl. Neue Artikel drängen die alten auf hintere Seiten, oder anders: Das Buch Blog bekommt vorne immer neue Seiten dazu, wodurch die alten Seiten immer höhere Zahlen bekommen. Dadurch steht auf einer Seite nie lange das gleiche.
Das Archiv als Zeiststrahl von heute nach früher vorgestellt:
1, 2, ... , n-1, n
Crawlt Google einmal alle Seiten durch und stellt fest, dass auf Archivseite 134 das tolle Keywort "Bierfass" ist, ist dieses längst auf Seite 147, wenn ein Besucher auf diese Archivseite von der Suchergebnisliste aus klickt.
Dabei spricht nichts dagegen, das einfach umzudrehen. Sei ein Blog wie ein echtes Buch, dann werden die ersten Einträge natürlich auf die erste Seite geschrieben, und sie brauchen nie nach hinten zu wandern. Der Zeitstrahl von heute nach früher:
n, n-1, ... , 2, 1
Diese Änderung führt dazu, dass für immer auf Seite 134 und damit unter der URL archives/P134.htm der Artikel mit dem Keyword "Bierfass" zu finden ist. So finden Nutzer leichter, was sie suchen, was auch Google wertschätzen sollte.
Es gibt eine Forendiskussion zu der Idee und ihrer Umsetzung, der zugehörige Code wurde von mir schon hochgeladen. Es sollte also eine entsprechende Option in s9y 1.7 auftauchen, derzeit heißt sie "Stable Archives" und steht bei "Appearance and Options" in der Konfiguration. Ich empfehle, sie zu aktivieren, bitte um Tester und um Rückmeldung an mich.
Artikelaufrufe zählen
Wednesday, 4. April 2012
Ich habe die Grundlage für ein Plugin geschrieben, das ganz simpel die Aufrufe einzelner Blogartikel zählt. Kann das Statistik-Plugin natürlich auch, aber das wird mir zu schnell ein Performancefresser (weil das so Späße macht, wie unique views zu speichern, und dadurch für jeden Aufrufer einen neuen Eintrag braucht). Hat jemand Interesse daran?
Was das Smartifizieren bringt
Friday, 2. March 2012
Es wird öfter geschrieben, dass Serendipity sauberen Code hätte und ein gutes Stück Software sei. Letztes bestreite ich keinesfalls. Aber über den sauberen Code kann man streiten: es ist halt ursprünglich ein PHP4-Programm, und das sieht man.
Im Backend sieht es besonders übel aus. Gerne wurde da mit ?> gearbeitet und daraufhin der HTML-Code direkt ausgegeben - und dabei die Einrückung aufgegeben. Dadurch wird der Code richtig schwer lesbar. Ein gutes Beispiel ist dieser Abschnitt der plugins.inc.php:
if ($serendipity['GET']['only_group'] == 'UPGRADE') { serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups); } ?> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <?php $available_groups = array_keys($pluggroups); foreach($pluggroups AS $pluggroup => $groupstack) { if (empty($pluggroup)) { ?> <tr> <td colspan="2" class="serendipity_pluginlist_header"> <form action="serendipity_admin.php" method="get"> <?php echo serendipity_setFormToken(); ?> <input type="hidden" name="serendipity[adminModule]" value="plugins" /> <input type="hidden" name="serendipity[adminAction]" value="addnew" /> <input type="hidden" name="serendipity[type]" value="<?php echo htmlspecialchars($serendipity['GET']['type']); ?>" /> <?php echo FILTERS; ?>: <select name="serendipity[only_group]"> <?php foreach((array)$available_groups AS $available_group) { ?> <option value="<?php echo $available_group; ?>" <?php echo ($serendipity['GET']['only_group'] == $available_group ? 'selected="selected"' : ''); ?>> <?php echo serendipity_groupname($available_group); ?> <?php } ?> <option value="ALL" <?php echo ($serendipity['GET']['only_group'] == 'ALL' ? 'selected="selected"' : ''); ?>> <?php echo ALL_CATEGORIES; ?> <option value="UPGRADE" <?php echo ($serendipity['GET']['only_group'] == 'UPGRADE' ? 'selected="selected"' : ''); ?>> <?php echo WORD_NEW; ?> </select> <input class="serendipityPrettyButton input_button" type="submit" value="<?php echo GO; ?>" /> </form> </td> </tr> <?php if (!empty($serendipity['GET']['only_group'])) { continue; } } elseif (!empty($serendipity['GET']['only_group']) && $pluggroup != $serendipity['GET']['only_group']) { continue; } else { ?><td colspan="2" class="serendipity_pluginlist_section"><strong><?php echo serendipity_groupname($pluggroup); ?></strong></td> </tr> <?php } ?> <tr> <td><strong>Plugin</strong></td> <td width="100" align="center"><strong>Action</strong></td> </tr> <?php foreach ($groupstack as $plug) { Die gleiche Stelle in der smartifizierten Version:
if ($serendipity['GET']['only_group'] == 'UPGRADE') { serendipity_plugin_api::hook_event('backend_pluginlisting_header_upgrade', $pluggroups); } $available_groups = array_keys($pluggroups); $data['available_groups'] = $available_groups; $groupnames = array(); foreach($available_groups as $available_group) { $groupnames[$available_name] = serendipity_groupname($available_group); } $data['groupnames'] = $groupnames; $data['pluggroups'] = $pluggroups; $data['formToken'] = $formToken; $data['only_group'] = $serendipity['GET']['only_group']; $requirement_failures = array(); foreach($pluggroups AS $pluggroup => $groupstack) { foreach ($groupstack as $plug) {Man spart zwar nicht insgesamt an Zeilen:
wc -l include/admin/plugins.inc.php 583 include/admin/plugins.inc.php wc -l /var/www/include/admin/plugins.inc.php /var/www/include/admin/tpl/plugins.inc.tpl 448 /var/www/include/admin/plugins.inc.php 209 /var/www/include/admin/tpl/plugins.inc.tpl 657 insgesamtEs wurden zusammengerechnet sogar mehr. Aber man bekommt weniger und besser lesbaren Code auf der Logikebene, und sowieso: Eine Trennung zwischen Logikebene und Sicht.
Eine sehr kleine Datei fehlt noch, bis jetzt bin ich mit dem Ergebnis unserer Arbeit schon sehr zufrieden.
Smartifiziert das Backend
Thursday, 16. February 2012
Für Serendipity 2.0 ist eines der Ziele ja ein neugestaltetes Backend. YellowLed arbeitet wohl auch derzeit mit Helfern an einem Prototypen dafür. Um den am Ende auch umsetzen zu können dürfte es nötig sein, den HTML-Code anzupacken, den Serendipity im Backend ausspuckt. Im Gegensatz zum Frontend nutzt das Backend keine Templates, da ist also wild HTML mit PHP vermischt.
Gerade wenn es um so grundlegende Dinge geht wie HTML 5, Div- vs Tabellenlayouts oder auch inline-CSS, ist das keine gute Ausgangsposition.
Deswegen sollte das Backend Smarty nutzen. Dafür muss man mindestens die Dateien in include/admin/ durchgehen und dort alles, was direkt ausgegeben wird, abfangen und stattdessen an eine Template-Datei übergeben (mindestens, weil es sein könnte, dass später noch Teile des Kerns dazukommen wie serendipity_showPlugins, die an anderer Stelle beheimatet sind).
Das ist eher zeitaufwändig als dass es schwer ist, zumindest solange es so wie bisher nur um die Grundlage der Trennung zwischen Logik und Ausgabe geht, nicht um Feinheiten. Kleinere Bugs sind in der Phase auch noch nicht schlimm, soll das Backend ja sowieso noch überarbeitet werden. Insbesondere kann jeder helfen, der mit Smarty zurechtkommt, dem aber PHP eher fremd ist.Ich habe in loser Absprache im Forum eine Liste zum Koordinieren und zur Fortschrittsanzeige und im git-Repository einen passenden branch angelegt. Es sind 16 Dateien mit insgesamt 5276 Zeilen, wovon viele Teil von Funktionen sind, die nur eine Statuszeile am Ende ausgeben. Zwei Dateien sind bereits abgearbeitet.
Genug Arbeit für einen, aber schnell erledigt wenn ein paar Leute mithelfen.Bayes 0.4.6: Backend-Verbesserungen
Sunday, 5. February 2012
Nachdem im Forum Verbesserungen für das Bayes-Plugin vorgeschlagen wurden, habe ich mich wirklich mal an das Backend gesetzt. Erstens ist es jetzt komplett smartifiziert. Zweitens wurde der Papierkorb überarbeitet. Und Drittens wurden einige kleine Verbesserungen eingebaut. Als Überblick:
- Die Tabelle im Datenbankmenü war vorher blind auf 2000 Einträge beschränkt, damit das Einfärben der Zeilen nicht den Browser lahmlegte. Nun ist sie paginiert.
- Die meisten sichtbaren Änderungen gibt es beim Papierkorb. Die wichtigste: Er ist nun durchblätterbar. Auch bei ihm bestand das Problem, dass er schlicht zu voll werden konnte und dann den Browser lahmlegte. Außerdem werden jetzt nur die sichtbaren Kommentare gelöscht und nicht blind alle. Statt der alten Tabelle wird jeder Kommentar nun in Listenform präsentiert und die Liste über detail/summary ausklappbar gemacht (mit polyfill für alle Browser außer Chrome, nur er kennt bereits das Element). Dadurch war auch genug Platz, Roberts Wunsch umzusetzen und den zugehörigen Artikel zu verlinken, und Grischas Wunsch zufolge wird die Kommentarbewertung angezeigt.
- Die Email-Benachrichtigung sollte zwischen den beiden Links den Text "Kommentar bewilligen und als valid markieren" anzeigen. Der wurde vorher verschluckt.
- Das Menü wird nur noch angezeigt, wenn der Nutzer die Rechte "adminComments" hat. Vorher war auch ohne dieses Recht das Menü sichtbar, aber die Aktionen wurden blockiert.
Nebeneffekt der Aktion ist, dass die serendipity_event_spamblock_bayes.php nun 200 teils sehr hässliche Zeilen weniger hat und damit wieder unter die 2000-Zeilen-Marke gerutscht ist. Der ganze HTML-Code gehört da auch wirklich nicht hin. Und durch die Templatisierung ist jede folgende Änderung einfacher.
Es wurde also doch nicht der komplette Umbau des Backends, den ich eine Weile in Betracht gezogen hatte, aber ich hoffe, durch die Änderungen ist nun alles etwas runder.
Kommentare (10) | Trackback (1) | in TechnikzeugsTags für diesen Artikel: serendipity spamblock_bayesSpamblock-Bayes 0.4.4: Troja
Sunday, 8. January 2012
Da ist er, der Commit. Endlich sind da die Codeteile von Troja drin, die ich schon eine Weile parat hatte, aber zu lange noch besser zu testen waren. Ich merke gerade, dass ich das Beta-Label vergessen habe, nun gut.
Im Import-Menü gibt es nun also einen Knopf, um von einem anderen Blog die Spamdatenbank zu importieren, und sich selbst als Spamdatenbankexporter ein/auszutragen. Das funktionierte bei Dirk nicht und bei mir schon...
Troja als Arbeitsnamen habe ich dort bewusst nicht erwähnt, man muss ja niemanden damit verwirren.Grischa fixte einen Bug beim Kommentarfeldselektieren und räumte dabei den Code auf. Außerdem wurden durch ihn Schnittstellen für das xmlrpc-Plugin angelegt, da ich das mit den dafür vorgeschlagenen Konfigurationsoptionen noch klären wollte ist das noch auskommentiert. Wollte das Plugin heute abend erstmal aus der Tür haben, vll kommt in den nächsten Tagen also wieder ein Update damit.
Ansonsten steht trocken im Changelog:
Recycler will only delete selected comments (all if none selected)
Mir war nicht mehr klar, dass das nicht von Anfang an so war, aber im Commit ist wirklich entsprechender Code.
Nun erstmal abwarten, ob Troja funktioniert. Für die Zukunft ist vage und schon eine Weile in meinem Kopf der Gedanke, dass man das Menü überarbeiten sollte, mindestens den Papierkorb. Aber ansonsten ist das Plugin jetzt alt und relativ stabil, der Code wie von Grischa richtig bemerkt relativ komplex, also kann das ruhig eine Weile ruhen.
Kommentare (14) | Trackbacks (2) | in TechnikzeugsTags für diesen Artikel: serendipity spamblock_bayesFindmore - 2-Klick-Likebuttons
Friday, 23. December 2011
Versuche gerade, Heises 2-Klick-Buttons in das serendipity_event_findmore-Plugin einzubauen. Eigentlich ist das fertig, nun müssen nur noch die Buttons getestet werden. Das hier ist der Test.
Testergebnis 1: Kein URL-Encoding für die Google+-Button, dann geht er.
Testergebnis 2: Bei Facebook funktioniert der Link zurück zum Artikel nicht.
+1-Links einbinden
Monday, 28. November 2011
Durch den Wegfall der Empfehlungsfunktion des Google Readers konnte ich meine Linkbox nicht mehr befüllen. Leider kommt man an die +1-Empfehlungen, die den alten Empfehlen-Knopf ersetzten, auch nicht einfach so ran. Eine Lösung ist, sie aus Google+ herauszulesen und mit Yahoo Pipes in RSS umzuwandeln, und mit RSS kann man dann alles machen. Die Lösung gabs auch schon, gedacht zum Unwandeln in Tweets. Ich hab kein Google+, musste die +1 also aus meinem Profil auslesen. Dafür hab ich die obere Pipe angepasst (im Grunde habe ich nur den Link umgebogen).
Danach kann man den RSS-Feed mit dem RemoteRSS-Plugin einbinden. Damit das halbwegs aussieht, habe ich in den Optionen des Plugins Smarty-Templating aktiviert und nutze diese plugin_remoterss.tpl
Hier die detailliertere Anleitung, um mit +1 geteilte Links in einem Serendipity-Blog als Linkbox einzubinden:
- Zuerst muss man sicherstellen, dass die +1-Liste öffentlich lesbar ist. Dafür geht man in sein Google-Profil, auf das +1-Tab, dort auf "Edit Profile" und setzt dann den Haken bei "Show this tab on your profile".
- Nun merkt man sich den Profilnamen, der oben in der URL nach https://profiles.google.com/ steht, bei https://profiles.google.com/USERNAME/plusones also USERNAME.
- Auf der +1ZuRSS-Pipe trägt man diesen Namen nun bei "Google Profile id" ein, klickt auf "Run Pipe", und danach auf "Get as RSS".
- Im Blog installiert man das Seitenleistenplugin "Fremder RSS/OPML-Blogroll Feed" (serendipity_plugin_remoterss) und trägt dort bei RSS/OPML-URI den im vorigen Schritt erhaltenen RSS-Feed ein.
- Optional: Man aktiviert die Option "Smarty-Templating aktivieren?" und speichert diese plugin_remoterss.tpl (als .tpl speichern!) in sein Template-Verzeichnis. Bei ihr muss der unterste Link "Alles anzeigen" noch umgebogen oder entfernt werden. Jetzt kann man mit der .tpl und mit CSS das Aussehen der Box anpassen.
« vorherige Seite (Seite 7 von 11, insgesamt 163 Einträge) » nächste SeiteSuche
Kategorien
Blog abonnieren