Blog



Internet-Explorer 8

Soeben habe ich ein kleines Update für ewm5 abgestellt, was den Editor kompatibel mit dem Internet-Explorer 8 macht. Ich nutze den selbst nicht, deswegen würde ich mich über Rückmeldungen freuen, falls etwas noch nicht ganz stimmt. Schonmal Danke an Jörn für die Meldung.

Dieser Artikel wurde veröffentlicht am 11.06.2009 um 16:20 Uhr. Noch kein Kommentar.

Update wegen Sicherheitslücke

Michael Schwarz hat mich auf die Möglichkeit hingewiesen, per XSS fremde Inhalte auf eforia-Seiten ausgeben zu lassen. Deswegen gibt es ein kleines Update, was diese Lücken schließt.

Das natürlich auch noch für die 4er, wobei auch der aktuelle rsscheck mitkommt. Falls jemand den 4er und das Captcha nutzt, kann es sein, dass nach dem Update die Linux-Ausführen-Rechte fehlen. Aber nach dem ersten Aufruf des rsscheck "heilt" sich das von selbst. 8-)

In Panik ausbrechen muss man nicht, die Lücke ist nicht direkt zum Einbruch in das System geeignet. Man kann aber eigene Inhalte auf bestimmten Seiten einbinden, was man auch nutzen kann, um einem Nutzer die Cookies zu klauen. Dazu muss man aber einen manipulierten Link untergeschoben bekommen. Dank Twitter sind aber verschleierte Links groß im Kommen.


Dieser Artikel wurde veröffentlicht am 04.05.2009 um 14:12 Uhr. Noch kein Kommentar.

Update ewm5

Gerade habe ich mal wieder ein Update für den ewm5 abgestellt. Enthalten ist im Prinzip das, was ich hier im Blog schon angesprochen hatte. Der Cache hat sich bei meinen Testsystemen nun seit 2,5 Monaten bewährt. Außerdem ist eine neue Version des Captcha-Binaries für Linux dabei und eine neue Version des Baseman. Ich bin nämlich auf einen neuen Server umgezogen und dort läuft die neueste tdbengine, mit der die Vorversion Probleme hatte. Auch das Captcha verlangte nach der Installation einer Shared Library, was ich im abgewöhnt, indem ich diese einfach mit "rein" kompiliert habe (danke Sven, für den gcc-Bugfix).

Alles recht unspektakulär.

Übrigens: Weil ich immer wieder gefragt werde, wann die 5er offiziell wird. Es gibt in der tdbengine ein Problem, was mit bestimmten Web-Space Konfigurationen auftritt. Genau genommen ist das ein sehr tief liegendes Linux-Problem, aber es wirkt sich eben so aus, dass die tdbengine dann unter Umständen keine Dateien "sieht". Die Konfiguration ist selten, kommt aber vor. Für den ewm hat damals Serg eine Spezialversion gemacht, die das Problem einfach umschifft. Diese Funktionalität hat aber keinen Einzug in die normale Entwicklung gefunden. Die aktuelle tdbengine enthält den Fix also nicht, der 5er ewm benötigt aber diese. Lange Rede, kurzer Sinn: Sobald das Problem in der tdbengine gelöst ist, wird die 5er Version offiziell.


Dieser Artikel wurde veröffentlicht am 12.02.2009 um 20:29 Uhr. 4 Kommentare.

Mehr Cache für ewm5

ewm5 hat nun eine neue Cachefunktion. Im Prinzip ganz simpel: Es gibt ein Flag Cacheable. Dieses wird bei jeder neuen Seite auf 1 gesetzt, beim Speichern dann aber geprüft ob Tags benutzt werden, die ein Caching verhindern. Beispielsweise wenn man if-Abfragen benutzt oder - ganz einfach - die Uhrzeit ausgibt. Man kann aber auch bewusst das Flag setzen und löschen. Es versteckt sich unter "Statische Seiten", das ist etwas unglücklich, aber da war auf die Schnelle noch Platz. 8-)

Was dann mit dem Cache passiert ist wieder eine andere Sache. Konkret habe ich overview erweitert, dass dieses Datensätze mit Cachable-Flag intern zwischenspeichert. Wenn hunderte von Datensätzen auf einmal ausgegeben werden sollen, spart das eine Menge Last. Konkret kommt das bei einem Blog vor, wenn man das gleiche Tag oft benutzt und viel schreibt. Ich habe da ein solches Beispiel, dass derzeit 193 Seiten verarbeitet. Nachdem in so einer Übersicht die Texte nicht unbedingt direkt angezeigt, sondern beispielsweise mit simple gekürzt werden, kostet das doppelt Zeit. Overview cached deswegen den kompletten Block pro Datensatz und Template. Selbstverständlich wird anhand Zeitstempel dafür gesorgt, dass die Daten auch aktuell sind.

In der cache.ini kann man außerdem ein maximales Alter in Tagen für die Caches angeben:
[overview]
max_age=50000


Und weil ich sowieso schon an der Datenbank war, habe ich ein Feld aufgenommen, was die Textlänge in Zeichen speichert. Dabei werden HTML-Elemente nicht mitgerechnet sondern nur der reine Text inkl. Satz- und Leerzeichen. Mittels {chars} läßt sich der Wert ausgeben. Vielleicht hat ja der eine oder andere, der bei VG Wort Mitglied ist, dafür Verwendung. 8-)

Bevor ich ein Update abstelle, will ich auch noch für den Tag {template} eine Cache-Funktion einbauen. Ich nutze das gerne um feste Schnippsel zu hinterlegen und eine Website damit Modular aufzubauen. Da kommt es oft vor, dass eigentlich statischer Inhalt immer wieder neu berechnet wird. Beispielsweise bei Leben ohne Diät [Link entfernt, weil Linkziel leider nicht mehr verfügbar] die Top-Artikel. Das sind jedesmal ein paar Sekunden unnötige Rechenzeit. Das ist im Moment in Planung, aber ich werde nochmal darüber schlafen, ob sich nicht eine bessere Lösung finden lässt. Eine Erweiterung nur für einen einzigen Fall macht auch nicht soviel Sinn.


Dieser Artikel wurde veröffentlicht am 07.01.2009 um 19:59 Uhr. Noch kein Kommentar.

Update

Ich habe wieder mal ein kleines Update abgestellt. Diesmal ist das schon angesprochene execprog dabei. Außerdem kann comments nun die letzten Kommentare anzeigen. Dazu einfach {execmacro="comments" param="last=5"} um die letzten 5 Kommentare auszugeben. Benutzt wird dazu eine Vorlage
comment/last-comment
<li><span class="small"><a href="{link="lfd:{PageLfd}"}#message{lfd}" class="small">{Name}</a>
bei <a href="{link="lfd:{PageLfd}"}" class="small">{PageTitle}</a>
({SDate} {STime} Uhr)</small></li>

Der Rest der Neuerungen sind eher Kleinigkeiten. Man kann nun z.B. angeben, dass statische Seiten nicht überschrieben werden, wenn sich nichts ändern würde. Dazu gibt man in cms.ini in SYSTEM
keepoldstatic=90
an. Der Sinn ist schlicht, dass der Webserver das Dateidatum schließlich auch überträgt. Der Wert gibt die Zeit in Tagen an, nach der die Seite auf jeden Fall wieder überschrieben wird. Was das soll, können vermutlich nur SEOs halbwegs verstehen.

Ebenso kann nun ein Timeout für cms_rsp angegeben werden. Der Default-Wert sind 30 Sekunden, das ist auch, wie sich cms_rsp bisher Verhalten hat. Der Grund sind schlicht Provider wie 1&1, bei denen ein Script nur begrenzt laufen darf. Wenn man eine Website mit 1000 einzelnen Seiten hat, die alle um 00:00 Uhr aufgefrischt werden sollen, reicht das schlicht nicht. Deswegen bricht cms_rsp nach Ablauf des Timeouts ab und macht beim nächsten Aufruf weiter.
Der Wert wird ebenfalls in cms.ini in SYSTEM angegeben:
refreshtimeout=150

Feedpeek kann nun auch den content und die description von Feeds ausgeben.

Die anderen Neuerungen sind nicht weiter der Rede wert. 8-)




Dieser Artikel wurde veröffentlicht am 01.12.2008 um 11:02 Uhr. 2 Kommentare.

Execprog

Irgendwie ist es manchmal zu aufwendig, für kleine Aufgaben extra ein eigenes Modul zu schreiben. Mit der if-Abfrage alleine kommt man aber auch nicht weiter. Also dachte ich zuerst, ich integriere Tags um Variablen zu definieren und Schleifen zu ermöglichen. Aber so richtig Übersichtlich ist das nicht, außerdem wäre es alles andere als schnell. Da fiel mir eine sehr, sehr alte Funktion der tdbengine ein: Execprog. Damit wird ein Stück Quellcode zur Laufzeit übersetzt und ausgeführt. Darum dann flugs einen Tag gebastelt:

Beispiel:
{execprog}
var fhAusgabe : integer
fhAusgabe:=Rewrite('ramtext:out')
writeln(fhAusgabe,'hallo welt')
close(fhAusgabe)
{/execprog}


Nachdem man ja nicht direkt an der aktuellen Stelle ausgeben kann, benutze ich einfach ramtext:out. Alles was man in dem Mini-Progrämmchen dorthin ausgibt, wird nach Beendigung an der aktuellen Stelle eingefügt.

Mit Variablen muss man ein wenig aufpassen, man kann eforia-Eigene nämlich auch überschreiben. Insgesammt ist die Funktion sehr mächtig, man sollte also wissen was man tut. Bei Compiler-Fehlern im Programm wird das Problem angezeigt, man muss also nicht ganz "blind" arbeiten.

Wo ist nun der Sinn?
Beispielsweise kann man in einem RSS-Feed Tags ausgeben. Allerdings einzeln in einer besonderen Weise. Intern gespeichert werden die Tags aber in einem Feld. Das muß man also etwas "umbauen". Das geht dann so:
{execprog}
  var fhAusgabe : integer
  var cTags,cTemp : string
  cTags:=getfield(cms_web,'Tags')
  fhAusgabe:=Rewrite('ramtext:out',0)
  while cTags#'' do
    write(fhAusgabe,'<category><!--[CDATA[')
    if pos(' ',cTags)>0 then
      cTemp:=cTags[1,pos(' ',cTags)-1]
      cTags:=cTags[pos(' ',cTags)+1,255]
    else
      cTemp:=cTags
      cTags:=''
    end
    write(fhAusgabe,cTemp)
    writeln(fhAusgabe,']]--></category>')
  end
  close(fhAusgabe)
{/execprog}

Ein Nachteil sei noch erwähnt: Der Programmcode muss im Quelltextmodus eingegeben werden. Sonst stören HTML-Codes für Zeilenumbrüche oder Leerzeichen. Hier muss ich mal einen neuen Button im Editor einbauen, der das dann so macht wie jetzt die Javascript oder PHP-Bereiche. Allerdings hat das keine hohe Priorität, weil ich es hauptsächlich für Vorlagen verwenden werde.


Dieser Artikel wurde veröffentlicht am 19.11.2008 um 17:24 Uhr. 3 Kommentare.

simple - Einfach mächtig

Es gibt mal wieder ein neues Tag: simple. Wird ein beliebiger Codeblock mit {simple} und {/simple} umschlossen, so werden schlicht alle darin enthaltenen HTML und eforia-Tags entfernt. Übrig bleibt also der blanke Text. Soweit nicht wirklich sinnvoll, aber man kann noch ein paar Parameter mitgeben:
  • br=Code für Zeilenumbruch
  • graphic=Breite:Höhe:Ausrichtung
  • textlength=Maximale Textlänge
  • linelength=Maximale Zeilenlänge
  • hellip=Zeichen am Ende, falls Text gekürzt wurde
  • stripendbr Abschließende Zeilenumbrüche entfernen
Was soll das nun?

Beispielsweise macht
{[6]simple="graphic=108:108:left;textlength=250;hellip=&hellip;"}
{[7]main}
{[6]/simple}</a>
aus dem Hauptinhalt ein Textschnippsel von 250 Zeichen und fügt vorne die Grafik linksbündig an. Benutzt wird immer die erste Grafik, die im Text gefunden wird. Der main-Tag hat übrigens höhere Priorität, weil sonst simple nur das Tag selbst bearbeiten würde. Aber es soll sich ja um den Inhalt kümmern, nachdem main ersetzt ist.

Wenn man das nun mit Overview kompiniert, bekommt man eine schicke Übersichtsseite mit Bildern aus den Unterseiten und einem kurzem einblick in den Text. Wer das mal live sehen will, kann sich gerne die Startseite von Leben ohne Diät [Link entfernt, weil Linkziel leider nicht mehr verfügbar] ansehen.

Dort benutze ich auch eine zweite Variante für den wöchentlichen Newsletter. Dieser wird in einer HTML und reinen Text-Mail verschickt. Man weiß ja nie, was das Mail-Programm beim Empfänger anzeigen kann, deswegen ist mir die Textversion wichtig. Zum zusammenstellen benutze ich das:
* {title} ({date})<br />
&nbsp;&nbsp;{[6]simple="br=<br />&nbsp;&nbsp;;linelength=58;stripendbr"}{[7]main}{[6]/simple}<br />
&nbsp;&nbsp;{link="url:full;type:static;pos:{position}"}<br />
&nbsp;&nbsp;________________________________________________________<br />
<br />

Der Code wird wiederum innerhalb eines Overview-Blocks benutzt. Im Ergebnis erhalte ich den Inhalt auf 60 Zeichen lange Zeilen gekürzt, wobei die ersten beiden Zeichen 2 Leerzeichen zur Einrückung sind. Ich muss nur noch mit Copy&Paste das Resultat in den Newsletter-Editor übertragen. Etwas ähnliches mache ich auch für die HTML-Variante, aber das geht sogar ohne simple. 8-)


Dieser Artikel wurde veröffentlicht am 14.11.2008 um 17:13 Uhr. Noch kein Kommentar.

Double-Opt-In für Kommentar-Benachrichtigung

Es gibt ein neues Update für den ewm5. Der Hauptgrund dafür ist die Double-Opt-In-Funktion bei Kommentaren. Aufgrund rechtlicher Probleme sollte man die Mail-Benachrichtigung bei neuen Kommentaren besser nur noch mit dem sogenannten Double-Opt-In-Verfahren anbieten. Das bedeutet, dass zuerst eine Mail verschickt wird, bei der ein Link zur Bestätigung angeklickt werden muss. Damit ist sichergestellt, dass der Empfänger auch sicher zustimmt und niemand schlicht eine falsche Adresse angeben kann.

Dazu werden 3 neue Vorlagen benötigt und in comments.ini im Bereich [comments] muss
doubleoptin=1
gesetzt sein.

Die Vorlagen:

comment/mail-doubleoptin
Das ist die Nachricht mit dem Bestätigungslink. Diese sollte in etwa so aussehen:
tdbmail
{eMail}
blog@ihre_domain.de
Blog-Name -  Bitte bestätigen Sie die Benachrichtigung über Kommentare
Vielen Dank für Ihren Kommentar im Blog-Name beim Artikel
*{title}*

Sie haben die Option gewählt, dass Sie über neue Kommentare zu diesem Artikel informiert werden möchten. Da dies das erste Mal ist, müssen Sie die Benachrichtigung per Klick bestätigen. Für alle weiteren Kommentare, bei der Sie die gleiche Mail-Adresse verwenden, ist dies nicht mehr notwendig.

Sie müssen die Benachrichtigungsfunktion mit dem folgenden Link bestätigen.
{linktoactivate}

__________________________________________________________

Rechtlicher Hinweis:
Dies ist keine Werbemail! Der Zweck dieser eMail ist die Überprüfung des Wunsches einer Benachrichtigung bei neuen Kommentaren.
Dieses Verfahren (Double-Opt-In) soll sicherstellen keine unverlangten eMails zu versenden.
Weiterhin wird mit dieser eMail der Informationspflicht laut BDSG § 33 Abs. 1 sowie TDDSG § 4 Abs. 1 nachgekommen.
Ihre eMail-Adresse wurde in unserer Datenbank für Kommentare gespeichert. Ohne Aktivierung wird sie nach angemessener Zeit automatisch gelöscht.
Falls Sie nicht wissen, warum Sie diese Mail bekommen haben, hat sich vermutlich jemand einen Scherz erlaubt und Ihre eMail Adresse unberechtigt eingetragen.
Solange Sie nicht den obigen Link zum aktivieren benutzen werden Sie keine weiteren eMails erhalten.


comment/message-doubleoptin
Das sieht der Benutzer, wenn er den Link angeklickt hat und alles war OK. Beispiel:
<a name="message"></a>
<span class="headline" style="font-size:24px;">Vielen Dank. Sie erhalten nun eine Benachrichtigung, falls zu diesem Artikel ein neuer Kommentar verfasst wird.</span><br />


comment/message-doubleoptin-error
Das wird angezeigt, wenn es Probleme mit dem Bestätigungslink gibt. Beispielsweise wenn der Geheimcode nicht stimmt. Den brauchen wir ja, sonst könnte man die Bestätigung für andere übernehmen. Beispiel für die Vorlage:
<a name="message"></a>
<span class="headline" style="font-size:24px;">Es ist leider ein Problem aufgetreten.</span><br />
Die Bestätigung für den Empfang von Benachrichtigungen bei Kommentaren kann leider nicht akzeptiert werden.
Möglicherweise haben Sie den Link nicht korrekt aufgerufen oder zu lange gewartet.
<br /><br />


  • Ansonsten enthält das Update noch die neue overview-Version, die bereits vorgestellt wurde.
  • Der Trackback-Verschicker arbeitet wieder mit HTTP1.1, ich hatte kurzzeitig mal auf 1.0 umgestellt. Komischerweise funktionieren Trackbacks innerhalb des gleichen Servers bei mir nur mit HTTP1.0, was eigentlich genau falsch rum ist. 
  • Ein neuer rollmann ist auch dabei, ich habe den Verdacht beim alten gab es manchmal kleine Probleme mit mehreren Volltexten. Der Sache bin ich aber noch auf der Spur, weil es immer mehrere Tage dauert, bis das Problem überhaupt zu bemerken ist.
  • Beim scheduler ist eine Debug-Ausgabe geändert.


Dieser Artikel wurde veröffentlicht am 18.10.2008 um 13:09 Uhr. Noch kein Kommentar.

Neue tdbengine

Beim letzten Update für den ewm5 gab es bei einigen Probleme. Die Ursache dafür war die tdbengine, die einfach zu alt war. Seit heute gibt es nun eine neue Version, womit auch die neueste Version des ewm5 wieder läuft. Ich habe es eben bei einem Projekt [Link entfernt, weil Linkziel leider nicht mehr verfügbar], das bei 1&1 läuft, getestet.

Für den 4er ewm spielt das übrigens alles keine Rolle. Nur wer den neuesten 5er Beta einsetzt, sollte auch die neue tdbengine benutzen. Den Download gibt es hier [Link entfernt, weil Linkziel leider nicht mehr verfügbar].


Dieser Artikel wurde veröffentlicht am 15.10.2008 um 13:47 Uhr. Noch kein Kommentar.

Selektionen für Overview

Overwiev hat einen neuen Parameter bekommen: sel

Damit lassen sich Datensätze selektieren. Beispielsweise gibt
{execmacro="overview" param="name=blog-titel;source=/Blog;step=10;noget;sel=$cms_web.Datum>=today-7;"}
nur Datensätze der letzten Woche aus.

Das ist auch mehr oder weniger der Sinn, warum ich die Selektionen eingebaut habe. Ich will Einträge der letzten Woche per Newsletter verschicken und mir so die Arbeit ersparen, die Seiten manuell raussuchen zu müssen. Es gibt aber vermutlich noch andere Einsatzzwecke, erlaubt ist als Selektion nämlich alles, was die tdbengine so versteht.

Die Erweiterung wird im nächsten Update enthalten sein. Ich will mir angewöhnen in Zukunft gleich über Änderungen zu schreiben und nicht auf Sammel-Updates zu warten. Intern teste ich dann nämlich schon noch gerne ein paar Tage oder Wochen, bevor ich Funktionen der Allgemeinheit zur Verfügung stelle.

Dieser Artikel wurde veröffentlicht am 02.10.2008 um 20:21 Uhr. Noch kein Kommentar.
Zeige 11 - 20 von 44
Anfang Zurück Vorwärts Ende


Hier bloggt Horst Klier mit und über eforia web manager und was dazugehört (HTML, Javascript, Internet, Webdesign, Such- maschinenoptimierung, usw.).

>> Zur Blog Startseite

RSS-Feed
abonnieren


Übersicht über alle Beiträge



eforia® ist ein eingetragenes Markenzeichen.
Alle anderen Marken und Markenzeichen gehören Ihren jeweiligen Besitzern.
Letzte Aktualisierung dieser Seite: 19.04.2024 / 21:02:03
Suche  
Login / Userdaten
Impressum/Datenschutz