Versionshistorie

v4.3.0 (März 2024)

  • [NEW] Bearbeitung von alt- und title-Attributen erleichtert. Man kann die Übersichtlichkeit der Eingabemaske bei vtMedia- und vtFile-Platzhaltern verbessern, indem man die Platzhalter für alt- und title-Attribute speziell benennt: mediaAltText<name> bzw. mediaTitle<name>, wobei <name> für den Namen des betreffenden Platzhalters steht.

  • [NEW] Beim Erstellen und Bearbeiten von Benutzerkonten kann jetzt das Passwortfeld umgeschaltet werden, um die Eingabe im Klartext anzuzeigen.

  • [CHANGED] Verbesserung von vtCount: Behebung diverser Fehler und Unsauberkeiten. Es ist jetzt möglich, negative Zahlen und Null als Startwert anzugeben. Dafür müssen Start- und Maximalwert jetzt durch ein Komma (statt Bindestrich) getrennt werden. Start- bzw. Maximalwert sind jetzt auch ohne Namensangabe möglich.

  • [FIXED] Leere vtMedia- und vtFile-Platzhalter führen jetzt nicht mehr zu PHP-Warnungen, wenn die Fehlerprotokollierung aktiv ist.

  • [FIXED] Wenn im Skriptablauf Fehler auftreten, liefert Virthos jetzt den HTTP-Statuscode 500 zurück. Dies vereinfacht das Monitoring von Virthos-Instanzen.

  • [FIXED] Ein unberechtigter Aufruf von Papierkorbseiten wird jetzt mit dem HTTP-Statuscode 404 statt wie bisher 403 beantwortet.

  • [FIXED] Seiten, die sich auf der obersten Ebene befinden, lassen sich jetzt auch mit der langen Schreibweise (/_/...) aufrufen.

  • [FIXED] Die automatische Bildskalierung funktioniert jetzt auch in PHP-Versionen ab 8.1.

  • [FIXED] Diverse Fehler behoben, die in neueren PHP-Versionen bei Verwendung des vtDate-Platzhalters bzw. des date-Ausgabefilters auftraten.

v4.2.2 (März 2023)

  • [FIXED] In den Seitenvorgaben fehlte die Option zum Übertragen der Zugriffsrechte auf untergeordnete Seiten.

  • [FIXED] Beim Aufruf der Seitenvorgaben wurde der Sichtbarkeitsstatus der Seite falsch dargestellt und, wenn dies nicht korrigiert wurde, beim Speichern verändert.

v4.2.1 (Januar 2023)

  • [NEW] Über den neuen Konfigurationsparameter errorReporting kann man jetzt PHP-Fehlermeldungen für eine bestimmte IP-Adresse aktivieren.

  • [NEW] Über die vtAbout-Methode lässt sich die eigene IP-Adresse ermitteln. Sie wird als Meta-Tag mit dem Namen "remote-address" in die Seite eingebunden.

  • [FIXED] Verschiedene Unsauberkeiten behoben, die bei aktiviertem Logging zu PHP-Warnmeldungen führten.

v4.2.0 (Januar 2023)

  • [FIXED] Kompatibilität mit PHP 8.1/8.2 hergestellt

  • [FIXED] Zahlenvergleiche in vtIf lieferten in manchen Fällen unerwartete Ergebnisse, wenn die Zahlen Dezimalkommas enthielten

  • [INFO] PHP-Mailer auf Version 6.7.1 aktualisiert

v4.1.2 (April 2022)

  • [FIXED] Eine vtIf-Bedingung mit "0" als Vergleichswert konnte zu unerwarteten Ergebnissen führen.

v4.1.1 (März 2022)

  • [FIXED] Bei Verwendung von vtLoop mit size-Parameter wurden die Portionen falsch zusammengestellt, und dieselben Einträge tauchten teilweise mehrfach in unterschiedlichen Portionen auf.

v4.1.0 (Februar 2022)

  • [NEW] Beim Aufruf der vtjslist-Methode kann jetzt durch Angabe von -noautoexpand=1 verhindert werden, dass Kindzweige, die zuvor aufgeklappt waren, automatisch wieder aufgeklappt werden.

  • [NEW] Unterstützung für Plug-ins eingebaut.

  • [CHANGED] PHP-Parameter open_basedir und safe_mode aus Konfigurationsanzeige in vtabout-Methode entfernt.

  • [CHANGED] CurrentFieldIsObsolet aus vtIf-Anweisung entfernt.

  • [CHANGED] Die Sessionablaufzeit lässt sich jetzt auf mehr als 60 Minuten (bis 24 Stunden) einstellen.

  • [CHANGED] Wenn mittels vtInclude eine Datei aus einem anderen Paket inkludiert wird, werden darin befindliche relative Pfade jetzt von dem Paketverzeichnis aus aufgelöst, zu dem die inkludierte Datei gehört. Dies betrifft relative Verweise auf Ressourcen (Bilder, Stylesheets etc.), aber auch relative Pfade in weiteren vtInclude-Anweisungen. Wenn die inkludierte Datei zu keinem Paket gehört, werden relative Pfade wie zuvor von dem Paketverzeichnis aus aufgelöst, zu dem das Template gehört.

  • [FIXED] Backup-Aktion funktionierte nur nach vorherigem Einloggen.

  • [FIXED] Beim Mailversand mittels vtDo wurden Textbestandteile, die in geschweifte Klammern eingeschlossen sind, aus dem Text entfernt.

  • [FIXED] Bei der Dateiauslieferung mittels vtDeliver wurde die Übertragung manchmal vom Server beendet, obwohl noch nicht alle Daten ausgeliefert waren.

  • [FIXED] Verschiedene Unsauberkeiten behoben, die beim Aktivieren des Loggings zu Fehlermeldungen führten (aber ansonsten keine Auswirkungen hatten).

  • [FIXED] Das Verschieben von Seiten mittels move-Aktion (vtDo) schlug bei Selektionen manchmal fehl.

  • [FIXED] Bei HTTPS-Abfragen wurde kein secure-Flag für Session-Cookies gesetzt.

  • [FIXED] Wenn vtUse mit einem Platzhalter als Parameter verwendet wurde und dieser Platzhalter ein Komma enthielt, wurde der Seitenkontext nicht wie erwartet geändert.

  • [FIXED] Unter PHP 8 schlug das Freischalten mittels Aktivierungscode fehl.

  • [FIXED] Bei jedem tausendsten Sessionstart trat Fehler 1005 auf.

  • [FIXED] Innerhalb des Redaktionssystems wurden in der Browserkonsole regelmäßig SameSite-Warnmeldungen ausgegeben.

  • [FIXED] Beim Hochladen von Dateien im TinyMCE-Editor kam es zu Darstellungsfehlern bei den Fortschrittsbalken.

  • [FIXED] Platzhalter vtStylesheets lieferte auch link-Elemente zurück, die nicht als stylesheet deklariert waren oder die Klasse vtignore zugewiesen hatten.

  • [FIXED] Das Erstellen einer Seite schlug manchmal fehl, wenn zu Beginn des Textinhalts Umlaute oder Sonderzeichen vorkamen.

  • [FIXED] Im Redaktionssystem schlug das Laden des Seitenbaums manchmal mit einem "JSON-Parse-Error" fehl.

  • [FIXED] Wenn auf dem Server nicht UTF-8 als Standardzeichensatz eingestellt war, wurden Feldinhalte, die HTML-Entitäten enthielten, nur unvollständig indiziert.

  • [FIXED] E-Mail-Adressen mit Umlauten wurden in styled-Platzhaltern falsch ausgegeben.

v4.0.9 (Mai 2021)

  • [CHANGED] Der Knopf zur Bestellung eines Aktivierungscodes verweist jetzt auf ein neues Bestellformular.

  • [FIXED] Unter MySQL 8 lieferte vtSelect in Verbindung mit Textfiltern stets ein leeres Ergebnis.

  • [FIXED] Beim Update von älteren Virthos-Basic-Versionen war der Webauftritt anschließend manchmal nicht aufrufbar.

  • [FIXED] Bei fehlerhaftem Login erfolgte Weiterleitung zu nicht-existenter Seite.

v4.0.8 (November 2020)

  • [FIXED] In Pixtacy 5 funktionierte XML-Export und -Import nicht.

  • [FIXED] Speichern globaler Einstellungen führte manchmal zu PHP-Fehlermeldungen.

v4.0.7 (Oktober 2020)

  • [FIXED] Beim Update von Virthos Pro/Master von 3 auf 4 konnten die globalen Einstellungen in manchen Fällen nicht gelesen werden (Fehler 1002).

  • [FIXED] In vtSelect funktionierte -depth-Parameter nicht wie dokumentiert.

v4.0.6 (Oktober 2020)

  • [NEW] Neuen Parameter -countonly für vtSelect-Anweisung eingeführt. Wenn dieser auf 1 bzw. auf einen nicht-leeren Wert gesetzt ist, wird keine Selektion gebildet, sondern nur die Anzahl der Datensätze ermittelt. Diese lässt sich dann mittels vtCountSelection ausgeben. Andere Selektionsfunktionen (insbes. vtLoop) stehen nicht zur Verfügung. Der Vorteil bei der Verwendung von -countonly besteht darin, dass eine wesentlich effizientere Datenbankabfrage stattfindet, die auch bei einer sehr großen Trefferliste problemlos funktioniert.

  • [NEW] Begrenzung für das Laden von Subseiten im Navigationsbaum eingebaut. Standardmäßig werden nur noch höchstens 100 Subseiten aufgelistet, dieser Wert lässt sich aber über die globale Variable maxSubPages erhöhen oder verringern. Wenn bei einer Seite die Option showSubPages aktiv ist, werden stets alle Subseiten aufgelistet.

  • [CHANGED] phpmailer auf v6.1.7 aktualisiert

  • [CHANGED] TinyMCE auf v4.9.11 aktualisiert

  • [CHANGED] Die clone-Aktion liefert jetzt die Nummer der (letzten) erstellten Seite zurück.

  • [CHANGED] Wenn man in der Strukturansicht Seiten löscht, wird jetzt die Strukturansicht beibehalten, statt zur Vorschauansicht zu wechseln.

  • [CHANGED] Dropzone im Dateibrowser des HTML-Editors auf volle Framehöhe vergrößert. Vorher konnte es leicht passieren, dass man eine Datei beim Drag-and-drop außerhalb der Dropzone losließ und der Browser dann die lokale Datei darstellte, statt sie hochzuladen (womit dann alle Änderungen, die man im Editor vorgenommen hatte, zunichte waren).

  • [CHANGED] Bei einer Neuinstallation wird die Seite mit den FTP-Einstellungen nicht mehr erstellt, da diese keine Bedeutung mehr hat.

  • [CHANGED] API-Funktion v::vtdo deutlich effizienter gemacht.

  • [FIXED] Im Dateibrowser des HTML-Editors (TinyMCE) wurden keine Bildabmessungen angezeigt.

  • [FIXED] Das Kopieren von Seiten, deren Template keine freien Platzhalter enthält, führte zur Anzeige eines fatalen PHP-Fehlers, obgleich der Kopiervorgang an sich erfolgreich durchgeführt wurde.

  • [FIXED] Beim Update von Virthos 3 gingen manchmal globale Einstellungen verloren Dies führte dazu, dass die Meldung "database too old" angezeigt wurde, weil die DB-Version nicht mehr ausgelesen werden konnte.

  • [FIXED] Das Ausliefern von Dateien mittels vtDeliver brach manchmal vorzeitig ab.

  • [FIXED] Wenn in vtUse ein Platzhalter als Parameter verwendet wurde und dieser ein Komma enthielt, wurden die Zeichen hinter dem Komma irrtümlich als Templatename interpretiert, und es wurde eine neue Seite erzeugt.

v4.0.5 (April 2020)

  • [CHANGED] Login-Aktion wird jetzt vor dem Initialisieren der Seite ausgeführt. Dadurch ist es möglich, direkt mit der Anmeldung eine Seite aufzurufen, deren Zugriff beschränkt ist.

v4.0.4 (März 2020)

  • [FIXED] Beim Absenden eines Anmeldeformulars wurde die Authentifizierung erst nach dem Initialisieren der aufgerufenen Seite ausgeführt. Dadurch war es nicht möglich, direkt mit der Anmeldung eine Seite anzusteuern, die nur für eingeloggte Benutzer zugänglich ist.

  • [FIXED] Beim Ausliefern von Dateien mittels vtDeliver wurden client-seitige Download-Abbrüche nicht immer erkannt. Diese Fehlerbehebung verbessert die Erkennung bei größeren Dateien. Bei kleineren Dateien sind Abbrüche grundsätzlich nicht abfangbar, weil diese von PHP in einem Stück an den Webserver übergeben werden.

v4.0.3 (Januar 2020)

  • [FIXED] Beim Aufruf der restore- oder dbdestroy-Methode gingen die globalen Einstellungen verloren, auch wenn die eigentliche Aktion nicht per Passworteingabe bestätigt wurde. Als Folge wurden alle weiteren Seitenaufrufe mit der Fehlermeldung "Database too old" quittiert.

v3.8.10 (Januar 2020)

  • [FIXED] Bei der vtSelect-Anweisung funktionierte die gezielte Suche in bestimmten Feldern nicht.

  • [FIXED] Auf Servern mit GTID-basierter Datenbankreplikation arbeiteten manche Virthos-Funktionen fehlerhaft. Dies lag daran, dass beim Erstellen neuer Datenbanktabellen bislang keine Speicher-Engine explizit angegeben wurde, so dass unter Umständen innerhalb derselben Datenbank Tabellen mit unterschiedlichen Speicher-Engines existierten.

  • [FIXED] In Virthos Basic funktionierte das Ausschneiden geschützter Seiten bei gedrückter Shift-/Alt-Taste nicht.

v4.0.2 (Januar 2020)

  • [NEW] Wenn in einem Benutzerkonto eine E-Mail-Adresse hinterlegt ist, kann sich der betreffende Benutzer statt mit seinem Benutzernamen auch mit dieser Adresse einloggen.

  • [CHANGED] Die vtDeliver-Anweisung beendet das aktuelle Skript nicht mehr, sondern erlaubt es, in Abhängigkeit vom Ergebnis zusätzliche Aktionen auszuführen. Das Ergebnis ist über vtResult abfragbar und kann folgende Werte annehmen:

    -1 = Datei existiert nicht
    -2 = Datei kann nicht zum Lesen geöffnet werden
    -3 = Download wurde abgebrochen
    -4 = beim Lesen der Datei trat ein Fehler auf
    1 = Auslieferung erfolgreich abgeschlossen

  • [CHANGED] Dynamisch gebildete Auswahllisten für freie Platzhalter vom Typ select werden jetzt alphabetisch sortiert.

  • [CHANGED] Wenn man in vtLink explizit einen -ck-Parameter angibt, wird dieser jetzt anstelle des automatisch generierten in die URL aufgenommen.

  • [FIXED] Wenn Benutzergruppen existierten, war es nicht möglich, sich einzuloggen.

  • [FIXED] Die indirekte Dateiauslieferung mittels vtdeliver-Methode funktionierte nicht.

  • [FIXED] Auf Servern mit GTID-basierter Datenbankreplikation arbeiteten manche Virthos-Funktionen fehlerhaft. Dies lag daran, dass beim Erstellen neuer Datenbanktabellen bislang keine Speicher-Engine explizit angegeben wurde, so dass unter Umständen innerhalb derselben Datenbank Tabellen mit unterschiedlichen Speicher-Engines existierten.

  • [FIXED] URL-Ersetzung in vtGet funktionierte nicht, wenn Namen Punkte enthielten

  • [FIXED] Unter "Einstellungen > E-Mail" war der Name des Mailservers leer.

  • [FIXED] Der Platzhalter vtCountPortions lieferte stets einen leeren Wert.

  • [FIXED] Bei der vtSelect-Anweisung funktionierte die gezielte Suche in bestimmten Feldern nicht.

  • [FIXED] Bei fehlendem Bild gab der vtMedia-Platzhalter einen leeren Wert anstelle der clear.gif-URL aus.

v4.0.1 (Juli 2019)

  • [CHANGED] Der Virthos-Quellcode wurde komplett überarbeitet, manche Funktionen wurden neu geschrieben, selten benutzte Funktionen entfernt oder in externe Bibliotheken ausgelagert. Dadurch konnte die Größe der Hauptskriptdatei deutlich verringert und die Geschwindigkeit, mit der Anfragen bearbeitet werden, merklich erhöht werden. Dies führt aber auch zu Einschränkungen, die in den folgenden Punkten beschrieben sind.

  • [CHANGED] Die Unterstützung für ältere Datenbankformate wurde entfernt. Wenn eine sehr alte Virthos-Version (Basic <3.0.2 oder Pro/Master <3.6) aktualisiert werden soll, muss zuvor das Update auf die jüngste 3.x-Version durchgeführt werden. Alte Backup-Dateien lassen sich auch nicht mehr für die Datenwiederherstellung nutzen, ein Datenaustausch per XML-Datei ist allerdings weiterhin auch mit sehr alten Versionen möglich.

  • [CHANGED] Die Unterstützung für veraltete Platzhalter und Parameter wurde entfernt. Betroffen davon sind die Platzhalter vtBlock, vtCurrentDate, vtCurrentItem, vtCurrentTime, vtDbField, vtScript, vtUserAgent und vtUserName. Templates, in denen diese Platzhalter verwendet werden, müssen entsprechend überarbeitet werden. Weitere Informationen hierzu finden sich in der Virthos-Onlinedokumentation.

  • [CHANGED] Die Unterstützung für alte Internet-Explorer-Versionen (<9.0) wurde aus den HTML-, CSS- und JavaScript-Dateien des Redaktionssystems entfernt.

  • [CHANGED] Virthos liefert jetzt alle Seiten in UTF-8-Kodierung aus und geht davon aus, dass alle Template-Dateien in dieser Kodierung vorliegen. Templates, die für ältere Virthos-Versionen in Latin1-Kodierung (ISO 8859-1) erstellt wurden, müssen daher in UTF-8 konvertiert werden, damit die darin enthaltenen Umlaute und Sonderzeichen weiterhin korrekt dargestellt werden. Zur Arbeitserleichterung ist es möglich, diese Konvertierung von Virthos automatisch durchführen zu lassen (siehe nach­fol­gen­den Punkt), allerdings stellt dies eine unnötige Serverbelastung dar, die bei stark frequentierten Web­auftritten oder weniger leistungsstarken Servern vermieden werden sollte.

  • [NEW] Es steht eine neue Gruppe von Konfigurationsparametern zur Verfügung, die dafür sorgen, dass die Template-Dateien bestimmter Pakete zur Laufzeit von Latin1- in UTF-8-Kodierung überführt werden. Um diese Konvertierung für ein bestimmtes Paket zu aktivieren, muss in die Konfigurationsdatei folgende Zeile aufgenommen werden:

    latin1Encoding_xyz = 1

    wobei xyz für den Namen des Templatepakets steht (sprich: für den Namen des Ordners, in dem die Templates liegen).

  • [CHANGED] Beim Erzeugen von URLs geht Virthos jetzt davon aus, dass die Skriptdatei index.php heißt und nicht mehr wie zuvor virthos.php. Wenn der Name der Skriptdatei in Wirklichkeit virthos.php lautet und so auch beibehalten werden soll, muss in die Konfigurationsdatei die Zeile

    URLScriptName = virthos.php

    eingefügt bzw. die vorhandene Zeile entsprechend angepasst und auskommentiert werden.

  • [NEW] Es steht der neue Platzhalter vtRequest zur Verfügung, mit dem sich ein Parameter der aktuellen Anfrage ausgeben lässt, unabhängig davon, ob dieser in die URL eingebunden, per Formularversand übermittelt oder als Cookie mitgesendet wurde. Es handelt sich somit um eine Zusammenfassung der Platzhalter vtGetValue, vtPostValue und vtCookie.

  • [NEW] Es steht der neue Platzhalter vtServer zur Verfügung, mit dem sich Information über den Server oder die aktuelle Abfrage ausgeben lassen.

  • [NEW] Es stehen die neuen Platzhalter vtFileDate und vtMediaData zur Verfügung, mit denen sich die Inhalte hochgeladener Dateien und Bilder als base64-kodierter Datenstrom ausgeben lassen.

  • [CHANGED] Der eingebaute HTML-Editor TinyMCE wurde auf Version 4.9.5 aktualisiert, was neben einer neuen Oberfläche auch Änderungen im Funktionsumfang mit sich bringt. Unter anderem ist es jetzt möglich, eingefügte Bilder nachträglich zu bearbeiten.

  • [CHANGED] Eine Arbeitssitzung läuft nicht mehr ab, wenn im Rahmen dieser Sitzung das Redaktionssystem in einem Browserfenster geladen ist. Eine erneute Passworteingabe ist nur erforderlich, wenn der betreffende Rechner länger als eine Stunde in den Ruhezustand fällt.

  • [NEW] Jede Virthos-Instanz bekommt jetzt bei der Installation eine eindeutige Kennung zugewiesen. Diese Kennung wird auf der Informationsseite („about“) mit ausgegeben und ermöglicht es, auf einen Blick zu erkennen, ob Aufrufe unter verschiedenen URLs von derselben Instanz beantwortet werden.

  • [NEW] Auf der Seite „Einstellungen > E-Mail“ wird jetzt die Adresse des Servers ausgegeben, der für den Mailversand konfiguriert ist. Ist in der Konfigurationsdatei kein externer Mailserver eingetragen, wird das Wort „lokal“ ausgegeben.

v3.8.9 (Juli 2019)

  • [NEW] Beim Ausschneiden von Seiten in der Strukturansicht ist es jetzt (ebenso wie schon beim Löschen) möglich, durch ein Drücken der Alt- oder Shift-Taste auch gesperrte Seiten in die Aktion einzubeziehen.

  • [CHANGED] Die Standard-CSV-Importfunktion steht bei Benutzergruppen nicht mehr zur Verfügung. Stattdessen gibt es nur noch die speziell für den Import von Benutzerdaten gedachte CSV-Importfunktion.

  • [CHANGED] Alte Verweise auf Virthos Systems GmbH entfernt.

  • [FIXED] Wenn man eine Arbeitssitzung beendete, wurden parallel im gleichen Browser gestartete Sitzungen ebenfalls beendet.

  • [FIXED] Das Redaktionssystem funktionierte nicht, wenn man es nachträglich über einen manuellen Aufruf startete.

  • [FIXED] Verschiedene Unsauberkeiten in Verbindung mit neueren PHP-Versionen behoben.

  • [FIXED] Der vtDate-Platzhalter gab statt eines Zeitstempels nur den Parameter als Klartext oder das Wort "now" aus.

  • [FIXED] Bei einer update-Aktion hatte der Parameter -ignoreAttachment keine Wirkung. Nur die Schreibweise ohne Bindestrich am Anfang funktionierte, entsprach aber nicht den Konventionen; diese Schreibweise gilt ab sofort als veraltet und wird irgendwann nicht mehr unterstützt.

  • [FIXED] Auf manchen Servern wurden in der Abschlussmeldung nach dem Zurücksetzen der Datenbank (dbdestroy) die Umlaute falsch dargestellt.

v3.8.8 (November 2018)

  • [FIXED] Bei eingeschaltetem Fehlerprotokoll wurden unter PHP 7.2 verschiedene PHP-Warn- und -Fehlermeldungen eingeblendet.

  • [FIXED] Bei großen Dateien bzw. knapp bemessener PHP-Speicherzuteilung schlug die Dateiauslieferung mittels vtDeliver manchmal fehl.

  • [FIXED] Beim Löschen von Seiten in Virthos Basic wurden Bilder und Dateien nicht mit entfernt.

v3.8.7 (Dezember 2017)

  • [NEW] Der Ausgabefilter date und der Platzhalter vtDate erlauben jetzt wahlweise eine Formatangabe, die der Syntax der PHP-Funktion strftime entspricht. Wenn die Formatangabe ein Prozentzeichen enthält, wird die Formatierung mittels strftime() durchgeführt, ansonsten (wie bisher) mittels date(). Tages- und Monatsnamen werden, wenn als Systemsprache de eingestellt ist, auf Deutsch ausgegeben, ansonsten in der aktuell eingestellten Sprache des Betriebssystems (in der Regel Englisch). Mit der PHP-Funktion setlocale() lässt sich bei Bedarf eine andere Sprache wählen.

  • [NEW] Virthos verfügt jetzt über neue Ausgabefilter, um einfache mathematische Berechnungen auszuführen. Mit calc lässt sich der zu filternde Wert durch Addition, Subtraktion, Multiplikation oder Division verändern, indem einer der Operatoren +, -, * oder / sowie ein Zahlenwert als Filterzusatz angegeben wird. Der calc-Filter wird automatisch angewendet, wenn die Filterangabe mit einem der vier Operatoren beginnt, darum kann der Name auch weggelassen werden. Die neuen Filter ceil, floor und round arbeiten genauso wie calc, nur mit dem Unterschied, dass sie das berechnete Ergebnis auf den nächst höheren (ceil) oder niedrigeren (floor) Wert bzw. nach kaufmännischer Regel (round) runden. Mit dem neuen mod-Filter ist es möglich, den Rest auszugeben, der verbleibt, wenn man den zu filternden Wert durch die als Filterzusatz übergebene Zahl dividiert.

  • [NEW] Die vtSet-Anweisung erlaubt es jetzt, Rechenformeln zu verwenden, um den Wert von Variablen zu setzen. Wenn man ans Ende des Variablennamens einen Doppelpunkt setzt, wird der übergebene Wert (nach Ersetzung aller enthaltenen Platzhalter) als PHP-Ausdruck interpretiert und evaluiert. Diese Schreibweise ersetzt somit eine vtCalc- mit nachfolgender vtSet-Anweisung.

  • [NEW] Der Platzhalter vtDbCountSelection kann jetzt wahlweise auch kürzer (und in manchen Zusammenhängen logischer) als vtDbNumRows geschrieben werden.

  • [NEW] In der Strukturansicht ist es jetzt möglich, geschützte Seite auch dadurch zu löschen, dass man bei gedrückter Umschalttaste das Papierkorbsymbol anklickt. Bislang war dies schon bei gedrückter Alt-Taste möglich, was aber in manchen Linux-Umgebungen nicht funktioniert.

  • [CHANGED] Wenn innerhalb eines Platzhalters oder einer Anweisung ein Parameter verwendet wird, dessen Wert mit einer öffnenden eckigen Klammer beginnt, dann wird dieser Wert jetzt nur noch dann als JSON-String interpretiert, wenn das letzte Zeichen eine schließende eckige Klammer ist.

  • [CHANGED] Der Import einer CSV-Datei mit Benutzerdaten wird jetzt sofort abgebrochen, wenn einer der Benutzer nicht erstellt werden konnte, und es wird eine aussagefähige Fehlermeldung ausgegeben.

  • [CHANGED] Wenn man versucht, das Redaktionssystem innerhalb eines Frames zu laden (wo es nicht sauber funktionieren würde), wird der Ladevorgang jetzt automatisch in den Top-Frame umgeleitet.

  • [FIXED] Wenn man mittels vtSet-Anweisung einen neuen Array-Wert oder ein neues Objektattribut zu einer Variable hinzufügte und diese Variable zuvor eine einfache Zeichenkette als Wert hatte, führte dies unter PHP 7.1 zu einem fatalen Fehler und damit zu einem Skriptabbruch.

  • [FIXED] Wenn innerhalb eines vtRepeat-Konstrukts der vtItem-Platzhalter benutzt wurde, um ein Attribut auszugeben, und dieses Attribut beim aktuellen Objekt nicht gesetzt war, dann wurde anstelle eines leeren Werts das gesamte Objekte als JSON-String ausgegeben.

v3.8.6 (Februar 2017)

  • [NEW] Wenn man eine update-Aktion ausführt, kann man jetzt verhindern, dass hochgeladene Dateien an die aktualisierte Seite angehängt werden, indem man den neuen Parameter ignoreAttachments auf 1 setzt.

  • [CHANGED] Wenn der Konfigurationsparameter systemLanguage nicht gesetzt ist, wird jetzt Deutsch (statt Englisch) als Systemsprache verwendet.

  • [FIXED] In manchen neueren PHP-Umgebungen wurde bei aktiviertem Error-Reporting zuweilen eine Fehlermeldung ("undefined variable argv") eingeblendet, die das Einloggen ins Redaktionssystem verhinderte.

  • [FIXED] Wenn der Konfigurationsparameter refuseMultiLogin aktiviert war, war es nicht mehr möglich, sich in das Redaktionssystem einzuloggen.

v3.8.5 (November 2016)

  • [NEW] Bei Zugriffen über verschlüsselte Verbindungen (https) unterstützen Virthos Pro und Virthos Master jetzt dauerhafte Anmeldungen, das heißt, dass ein Benutzer auch bei abgelaufener Session "wiedererkannt" wird, wenn er die Seite vom selben Rechner aus (und mit demselben Browser) wieder besucht. Um dauerhafte Anmeldungen zu ermöglichen, muss der Konfigurationsparameter "allowPersistentLogins" auf 1 gesetzt und bei der login-Aktion ein Parameter mit dem Namen "persistent" und einem nicht-leeren Wert übergeben werden.

  • [NEW] Die API verfügt über eine neue Funktion "set", mit der man eine einzelne Variable setzen kann. Der Name wird als erster Parameter übergeben, der gewünschte Wert (UTF-8-codiert) als zweiter. Im Gegensatz zu "vtset" wird der Wert nicht geparst, was die Performance verbessert und insbesondere auch die Übergabe von JSON-Code (Arrays und Objekte) ermöglicht.

  • [FIXED] In der Basic-Version wurde bei jedem (!) Seitenabruf die Datei data/database/globals.php neu geschrieben, was bei stärker frequentierten Webseiten die Wahrscheinlichkeit von Schreibfehlern und daraus resultierenden Datenverlusten erhöhte.

  • [FIXED] Wenn man in der Strukturansicht der Gruppe "Alle" Benutzer löschte, wurden zwar die zugehörigen Seiten aus dem Seitenbaum entfernt, die Einträge in der user-Tabelle blieben aber bestehen.

  • [FIXED] Wenn innerhalb einer Benutzergruppe die Strukturansicht aufrief und auf das Löschsymbol klickte, wurde eine Sicherheitsabfrage eingeblendet, die den Eindruck vermittelte, man sei im Begriff, die ausgewählten Benutzerkonten komplett zu löschen, statt sie nur aus der aktuellen Gruppe zu entfernen.

  • [FIXED] Wenn man in der Konfigurationsdatei das Masterpasswort änderte, war es weiterhin möglich, sich mit dem alten Passwort einzuloggen. Erst nach dem ersten Einloggen mit dem neuen Passwort wurde das alte ungültig.

  • [FIXED] Beim Aufruf über die Kommandozeile wurden Fehlermeldungen vom Typ E_NOTICE ausgegeben, wenn dieser Fehlertyp ins Error-Reporting einbezogen war.

v3.8.4 (September 2016)

  • [NEW] Wenn man beim Aufruf der vtnew-Methode einen URL-Parameter -lang mit dem Wert * angibt, wird jetzt beim Absenden des gelieferten Formulars ein sprachunabhängiger Datensatz erstellt. Der URL-Parameter wird bei Verwendung des vtButton-Platzhalters in Verbindung mit der new-Methode automatisch erzeugt, wenn man als dritten Parameter einen Stern angibt.

  • [NEW] Die changeCartItem-Aktion erlaubt es jetzt auch, kundenspezifische Attribute von Bestellpositionen nachträglich zu verändern. Zuvor wurden nur die Attribute price und value unterstützt.

  • [NEW] Die API-Funktion v::vtlink() erlaubt jetzt auch ein Array als Parameter, zum Beispiel: array( '-pg' => 123, '-met' => 'print' ).

  • [NEW] Für freie Platzhalter steht jetzt der neue Typ date zur Verfügung, mit dem ein kurzes Eingabefeld inklusive Minikalender erzeugt wird.

  • [NEW] Für freie Platzhalter vom Typ grid stehen jetzt die zusätzlichen Editoren Time, Price und Select zur Verfügung, um die Eingabe von Uhrzeiten und Preisen zu erleichtern bzw. die Auswahl aus einer vorgegebenen Werteliste zu ermöglichen. Bei Verwendung von Select muss in dem Attribut options eine kommagetrennte Liste von Werten übergeben werden.

  • [NEW] Es steht eine neue API-Funktion v::log() zur Verfügung, um Debug- und Fehlermeldungen in die Virthos-Logdatei zu schreiben. Als erster Parameter ist die gewünschte Meldung zu übergeben, als (optionaler) zweiter Parameter ein boolscher Wert, der angibt, ob es sich um eine Fehlermeldung handelt, oder nicht.

  • [CHANGED] Interne Code-Modifikationen vorgenommen, um Kompatibilität mit PHP 7 zu verbessern.

  • [CHANGED] Beim Leeren des Papierkorbs wird jetzt versucht, eine Zeitüberschreitung zu verhindern, die bei sehr umfangreichen Webauftritten eintreten kann. Dies funktioniert aber nur auf nicht sehr restriktiv konfigurierten Servern.

  • [CHANGED] In den Logdateien wird jetzt nicht mehr bei jedem Eintrag das Datum mit ausgegeben, weil sich in einer Logdatei ohnehin nur Einträge eines bestimmten Datums befinden. Dafür wird jetzt bei jedem Aufruf eine Prozess-ID erzeugt und in die Einträge eingebunden, so dass man bei mehreren parallel verarbeiteten Requests die vermengten Logeinträge zuordnen kann.

  • [CHANGED] Nach einer Neuinstalltion von Pixtacy sind die Seiten unter "Einstellungen > Eigene Einstellungen" jetzt gegen versehentliches Löschen geschützt.

  • [CHANGED] Die delete-Aktion wird jetzt auch dann ausgeführt, wenn die zu löschende Seite gegen Verschieben und Umbenennen geschützt ist, unabhängig davon, ob der -force-Parameter gesetzt ist. Da sich Seiten nur löschen lassen, wenn sie sich ohnehin bereits im Papierkorb befinden, war die zusätzliche Prüfung unsinnig und (in dem Fall, dass man gezielt eine einzelne Seite im Papierkorb löschen wollte) auch störend.

  • [FIXED] Wenn beim Aufruf der vtnew-Methode im Parameter -template kein Paketname angegeben war, sondern nur der Templatename, enthielt das gelieferte Formular keine bearbeitbaren Felder.

  • [FIXED] Das Verschieben einer Seite schlug fehl, wenn die Zielseite zur gleichen Containerseite gehörte. Daher ließen sich Seiten der obersten Ebene auch nicht in den Papierkorb verschieben.

  • [FIXED] Beim Ausführen der reindex-Aktion wurden stets alle Seiten neu indiziert, auch wenn der Parameter -keep auf 1 gesetzt war.

  • [FIXED] Wenn man in den Seitenvorgaben unter Mitbenutzer "keine" auswählte, wurde diese Einstellung beim Speichern nicht übernommen.

  • [FIXED] Wenn innerhalb einer Benutzergruppe einen Benutzeralias aufrief und auf das Löschsymbol klickte, wurde eine Sicherheitsabfrage eingeblendet, die den Eindruck vermittelte, man sei im Begriff, das gesamte Benutzerkonto zu löschen, statt nur den Benutzer aus der aktuellen Gruppe zu entfernen.

  • [FIXED] In manchen Systemmeldungen wurden Umlaute und Sonderzeichen verstümmelt ausgegeben.

  • [FIXED] Wenn man die Startmethode einer Benutzergruppe auf "Redaktionssystem" einstellte, ging diese Einstellung beim Speichern wieder verloren, und die Startmethode wurde auf "Standard" zurückgesetzt.

  • [FIXED] Wenn man beim Bearbeiten einer Gruppe ein Mitglied durch Klicken hinzufügte oder entfernte, wurde das Bearbeitenformular sofort ohne Rückfrage abgesendet.

  • [FIXED] Wenn man im Navigationsbaum den Namen der aktiven Seite anklickte, wurde die Seite nicht neu geladen.

  • [FIXED] Wenn man beim Bearbeiten einer Gruppe alle Mitglieder durch Klicken auf den Rechtspfeil entfernte, wurde diese Änderung beim Speichern nicht übernommen. Nur wenn mindestens ein Mitglied zugeordnet blieb, erhielt man beim Speichern das gewünschte Ergebnis.

  • [FIXED] Beim Erstellen einer neuen Seite mit grid-Platzhalter wurde der Tabelleneditor manchmal nicht geladen.

  • [FIXED] Bei genauer Kenntnis der Ordnerstruktur war es möglich, mit Hilfe des imager.php-Skripts auch Bilddateien aus geschützten Ordnern herunterzuladen. Das Skript liefert jetzt einen Fehler zurück, wenn in dem Bilderordner oder einem übergeordneten Verzeichnis eine .htaccess-Datei mit einer Deny-Direktive existiert, unabhängig davon, wie diese Direktive im Detail aussieht. Man kann den Zugriff auf einzelne Ordner innerhalb eines geschützten Verzeichnisses ermöglichen, indem man darin eine leere Datei mit dem Namen .vt_allow anlegt.

  • [FIXED] Wenn man innerhalb eines vtRepeat-Blocks den vtCurrentItem-Platzhalter verwendete, wurden Umlaute und Sonderzeichen mit falscher Codierung ausgegeben.

  • [FIXED] Auf sprachunabhängigen Seiten (mit einem Stern in der Spalte vtlanguage der entsprechenden data-Tabelle) gaben freie Platzhalter stets leere Werte aus.

  • [FIXED] Wenn man in Firefox den Passwortmanager verwendete, um die Virthos-Anmeldemaske automatisch auszufüllen, wurden beim Bearbeiten von Benutzerkonten die Namens- und Passwortfelder ebenfalls mit diesen Zugangsdaten gefüllt (was beim Speichern meistens glücklicherweise zu einer Fehlermeldung führte, da die Passwortwiederholung fehlte).

  • [FIXED] Die API-Funktion v::vtpage() verursachte eine PHP-Warnmeldung, wenn man einen internen Platzhalternamen (z. B. vtName) als Parameter verwendete.

  • [FIXED] Wenn man beim Bearbeiten eines Benutzerkontos das Passwort änderte, blieb trotzdem das vorherige Passwort gültig.

  • [FIXED] Beim Bearbeiten von Tabellen (grid-Platzhalter) wurde beim Hinzufügen einer neuen Reihe manchmal dieselbe Reihennummer zweimal vergeben.

  • [FIXED] Wenn die definierte Startseite nicht mehr existierte, funktionierten Shortcuts (login, about etc.) nicht mehr.

  • [FIXED] Wenn eine Seite mit einem automatisch zugewiesenen Seitennamen als Startseite ausgewählt war, konnte es passieren, dass sich beim nachträglichen Ändern von Seiteninhalten der Seitenname veränderte und dadurch die Startseiteneigenschaft verlorenging.

  • [FIXED] Wenn man im Redaktionssystem eine nicht-eistierende Seite aufrief (z. B. per numerischer Eingabe), wurde eine unzutreffende interne Fehlermeldung eingeblendet ("Methode nicht gefunden").

  • [FIXED] Sehr lange Seitennamen führten zu einer unsauberen Darstellung im Navigationsbaum.

  • [FIXED] Das Freischalten mittels Aktivierungscode funktionierte nicht mehr.

v3.8.3 (Dezember 2015)

  • [FIXED] Bei einem Update von Virthos Basic konnte es passieren, dass der vtFile-Platzhalter anschließend unbrauchbare Download-Links erzeugte ("Array").

v3.8.2 (November 2015)

  • [NEW] Die reindex-Aktion unterstützt einen neuen Parameter -keep, der, wenn er auf 1 gesetzt ist, dafür sorgt, dass bereits indizierte Seiten nicht erneut indiziert werden.

  • [CHANGED] Der vtGlobals-Platzhalter gibt, wenn er ohne Parameter verwendet wird, die globalen Einstellungen jetzt in alphabetischer Reihenfolge aus.

  • [CHANGED] Der "Anmelden"-Link auf der eingebauten Startseite verweist jetzt stets auf die vtlogin-Methode der eingebauten Startseite, unabhängig davon, welche Startseite in den Virthos-Grundeinstellungen festgelegt ist.

  • [FIXED] Beim Durchlaufen von assoziativen Arrays mittels vtRepeat lieferten {{vtItem:key}} und {{vtItem:value}} nur leere Einträge.

  • [FIXED] Der Größenvergleich von Uhrzeiten in vtIf, vtElseIf oder vtExit lieferte manchmal ein falsches Ergebnis.

  • [FIXED] Die move-Aktion wurde auch dann ausgeführt, wenn es sich bei der Zielseite um eine Subseite der zu verschiebenden Seite handelte, was in der Folge zu einem inkonsistenten Seitenbaum führte.

  • [FIXED] In Virthos Basic wurde eine vtLoop-Schleife stets nach der ersten Seite, für die kein Sehen-Recht vorlag, beendet, unabhängig davon, ob noch Seiten mit Sehen-Recht folgten, oder nicht.

  • [FIXED] Wenn man in einer vtSelect-Filterbedingung einen Datumsvergleich mittels .gte.-Operator definierte, wurden keine Seiten selektiert, die das Vergleichsdatum selbst enthielten, das heißt, man erhielt dasselbe Ergebnis wie bei Verwendung des .gt.-Operators.

v3.8.1 (August 2015)

  • [NEW] Die vtReturn-Anweisung steht jetzt auch in Virthos Basic und Pro zur Verfügung.

  • [NEW] Auch in Virthos Basic gibt es beim Einloggen jetzt eine Verzögerung, um Brute-Force-Angriffe zu erschweren. Der Standardwert von 2 Sekunden lässt sich über den Konfigurationsparameter loginDelay verkürzen oder verlängern.

  • [NEW] Auch beim Wiedereinloggen nach einer Sitzungspause gibt es jetzt eine Verzögerung, um Brute-Force-Angriffe zu erschweren.

  • [NEW] Der vtName-Platzhalter erlaubt jetzt auch die Angabe von Ausgabeformaten und -filtern.

  • [NEW] Wenn man einen selbstdefinierten Ausgabefilter durch einen Parameter ergänzt, wird dieser Parameter jetzt als zweites Argument an die Funktion übergeben, die als Filter dient.

  • [NEW] Die reindex-Aktion unterstützt einen neuen Parameter -keep, der, wenn er auf 1 gesetzt ist, dafür sorgt, dass bereits indizierte Seiten nicht erneut indiziert werden.

  • [CHANGED] In Virthos Basic ist das Namensfeld in der Loginmaske jetzt nicht mehr fest mit master vorbelegt (wenngleich man sich nach wie vor nur als Masterbenutzer einloggen kann). Dies verbessert die Kompatibilität mit vielen Passwortmanagern.

  • [CHANGED] Beim Wiedereinloggen nach einer Sitzungspause ist das Namensfeld in der Anmeldemaske jetzt nicht mehr inaktiv. Dies verbessert die Kompatibilität mit vielen Passwortmanagern.

  • [CHANGED] Wenn der erste Platzhalter in einem Template ein HTML-Feld ist, werden in den automatisch erzeugten Seitennamen jetzt auch Umlaute und Sonderzeichen mit aufgenommen.

  • [CHANGED] Der Promobanner, der im unlizenzierten Modus eingeblendet wird, befindet sich jetzt standardmäßig an der rechten unteren Fensterkante und kann von anderen Seitenelementen nicht mehr versehentlich verdeckt werden.

  • [FIXED] In Safari wurde das Login-Formular bei Auswahl eines Benutzernamens per Return-Taste sofort abgesendet, ohne dass das Passwortfeld ausgefüllt wurde.

  • [FIXED] Wenn man selbst erstellte Datenbanktabellen mit leeren Datums- oder Zeitfeldern in eine Datensicherung einbezog, traten bei der Wiederherstellung (restore-Aktion) Fehler auf, die oft dazu führten, dass die Datenbank anschließend nicht benutzbar war.

  • [FIXED] Wenn man innerhalb des Redaktionssystems auf einen Seitenlink klickte, wurde die Zielseite stets im Vorschaumodus aufgerufen, auch wenn im Link eine andere Methode (z. B. vtedit) festgelegt war. Deshalb funktionierten auch die Miniatur-Bearbeitenknöpfe (vtButton) in vielen Fällen nicht richtig.

  • [FIXED] Beim Aufruf über die Kommandozeile traten Fehler auf, wenn man das Virthos-Verzeichnis zuvor nicht mittels chdir explizit zum Arbeitsverzeichnis gemacht hatte.

  • [FIXED] Die Ausgabe von Debug-Informationen (z. B. mittels vtLog-Anweisung) funktionierte nur, wenn der Konfigurationsparameter log auf 2 gesetzt war, aber nicht wenn er den Wert 1 hatte.

  • [FIXED] Im erweiterten HTML-Editor wurden placeholder-Attribute von Formularfeldern, die über die Quellcodeansicht eingegeben wurden, beim Umschalten zur Wysiwig-Ansicht wieder entfernt.

  • [FIXED] In Virthos Pro und Master traten im Zusammenhang mit der Sessionverwaltung manchmal MySQL-Fehler auf, die in die Logdatei eingetragen wurden, aber sonst keine Auswirkungen hatten.

  • [FIXED] Wenn zwei Funktionen, die mittels vtFunction definiert wurden, ein Argument gleichen Namens verwendeten, führte der Aufruf der einen Funktion aus der anderen heraus (mit vtCall) dazu, dass vtArg anschließend einen falschen Wert zurücklieferte.

  • [FIXED] Wenn eine Seite gegen Verschieben und Umbennen geschützt war, schlug das Umbenennen mittels update-Aktion fehl, selbst wenn der Parameter -force auf 1 gesetzt war.

v3.8 (Juni 2015)

  • [NEW] Die Platzhalter vtInclude und vtTemplate erlauben jetzt die Angabe mehrerer (durch Komma getrennter) Dateipfade. Die erste existierende Datei wird eingebunden, die übrigen werden ignoriert.

  • [NEW] Mit den neuen Anweisungen vtLog und vtLogError ist es möglich, Meldungen in die Logdatei einzutragen. vtLogError trägt die Meldungen in jedem Fall ein, vtLog nur bei eingeschaltetem Debugmodus (Konfigurationsparameter log > 0).

  • [NEW] Die mail-Aktion in Virthos Master verarbeitet jetzt VirthosTalk-Platzhalter nicht mehr nur in HTML- und RTF-Dateien, sondern in allen Anhängen, deren MIME-Typ mit "text/" beginnt, also z. B. auch in Dateien mit der Endung .txt oder .csv.

  • [NEW] Der vtCart-Platzhalter erlaubt es jetzt, die Liste der Warenkorbartikel in umgekehrter Reihenfolge auszugeben. Dazu schreibt man {{vtCart: items, reverse }} oder kurz {{vtCart:reverse}}.

  • [NEW] Es stehen zwei neue API-Funktionen zur Verfügung, um auf das aktuelle Datenbankobjekt zuzugreifen. Mit v::get_db() erhält man das Objekt zurückgeliefert, mit v::query( $query ) kann man direkt eine Abfrage ausführen lassen.

  • [NEW] Bei Verknüpfungen findet man in den Vorgaben jetzt einen Link zu der Seite, mit der sie verknüpft sind.

  • [NEW] Neuen Hook get_methods eingeführt und vttools-Methode entsprechend umgestellt. Die Hookfunktion bekommt eine Liste von Methodenobjekten (name, title) übergeben und liefert diese in erweiterter oder veränderter Form wieder zurück.

  • [NEW] Neuen Hook get_method_file eingeführt. Die Hookfunktion bekommt eine Liste von Methodendateien übergeben und liefert diese in erweiterter oder veränderter Form wieder zurück. Aus der Variablen $vtMethod['name'] kann zur Laufzeit der Name der angeforderten Methode ausgelesen werden.

  • [NEW] Neuen Hook get_method_directories eingeführt. Die Hook-Funktion bekommt und liefert eine Liste von Verzeichnissen, in denen Virthos nach Methodendateien sucht. Dadurch wird ein häufiger Aufruf des get_method_xxx-Hooks überflüssig.

  • [NEW] Die vtRepeat-Anweisung kann jetzt auch assoziative Arrays durchlaufen, wobei der jeweilige Elementname mit {{vtItem:key}} und der Elementwert mit {{vtItem:value}} ausgegeben werden kann.

  • [NEW] Neuen Platzhalter {{vtGlobals}} eingeführt, mit dem sich alle globalen Einstellungen als assoziatives Array ausgeben (und dann z. B. mittels vtRepeat durchlaufen) lassen. Übergibt man einen Parameter, verhält sich {{vtGlobals}} exakt so wie der Platzhalter {{vtGlobal}}.

  • [NEW] Es ist jetzt möglich, alle globalen Einstellungen auf einen Blick zu sehen und zu verändern, indem man bei der Seite "Einstellungen" (ID 6) auf "Bearbeiten" klickt.

  • [NEW] Der vtCookie-Platzhalter steht jetzt auch in Virthos Pro und Virthos Basic zur Verfügung.

  • [NEW] Wenn man für eine Seite die Template-Zuordnung ändert, stehen jetzt auch Templates aus anderen Paketen zur Auswahl.

  • [NEW] Die vtIf-Anweisung unterstützt jetzt den neuen Vergleichsoperator .cn1of. (contains one of). Eine damit formulierte Bedingung wird als WAHR eingestuft, wenn der rechte Vergleichswert, als Liste interpretiert, mindestens ein Element enthält, das auch im linken Vergleichswert, als Liste interpretiert, vorkommt.

  • [NEW] In der Strukturansicht wird beim Anklicken eines Spaltentitels jetzt die Sortierrichtung geändert, wenn es sich um die Spalte handelt, nach der aktuell sortiert wird.

  • [NEW] Die changeCartItem-Aktion (Virthos Master) erlaubt jetzt, über den neuen Parameter price auch den Preis einer Warenkorbposition zu verändern.

  • [NEW] Der Navigationsbaum im Redaktionssystem wurde komplett überarbeitet. Die untergeordneten Seiten eines Zweiges werden jetzt erst geladen, wenn man den betreffenden Zweig öffnet, was die Wartezeiten beim Laden eines umfangreichen Baumes drastisch verkürzt. Außerdem bleiben geöffnete Zweige auch bei einem Neuladen des Baumes geöffnet, und der Fall, dass sich ein Zweig wegen zu vieler untergeordneter Seiten nicht öffnen lässt, kann nicht mehr auftreten. Die klassische Version des Navigationsbaums lässt sich weiterhin nutzen, indem man den Konfigurationsparameter useClassicNavi auf 1 setzt.

  • [CHANGED] Relative URLs in Templates werden jetzt auch dann durch absolute ersetzt, wenn diese hinter dem Dateinamen noch ein Fragezeichen und weitere Parameter (zum Beispiel eine Versionsnummer) enthalten.

  • [CHANGED] Der vtCart-Platzhalter gibt jetzt (außer bei Verwendung des Parameters items) statt eines leeren Werts die Zahl 0 aus, wenn der Warenkorb leer ist.

  • [CHANGED] Der vtCount-Platzhalter zählt jetzt nicht mehr hoch, wenn er innerhalb einer vtIf-Bedingung oder eines anderen VirthosTalk-Konstruktes verwendet wird.

  • [CHANGED] Virthos erzeugt jetzt keine URLs mehr, bei denen auf das Fragezeichen ein Minuszeichen folgt, da diese von manchen Sicherheitsmodulen geblockt werden.

  • [CHANGED] Bei der Ausgabe von Fehler- und Statusmeldungen sowie anderer interner Texte, wird jetzt, falls vorhanden, auf die Sprachdatei zurückgegriffen, die der aktuellen Sessionsprache entspricht, falls diese von der systemLanguage abweicht, die in der Konfigurationsdatei festgelegt ist.

  • [CHANGED] Um einen Hook für eigene Methoden-Dateien zu registrieren, muss jetzt als Hook-Name get_method_xxx verwendet werden, wobei xxx für den Namen der Methode steht. Dadurch entfällt die Notwendigkeit, innerhalb der Hookfunktion auf die gewünschte Methode abzuprüfen, wofür es keine sichere Lösung gibt (insbesondere wegen der Action-Handler, bei denen eine weitere Methodendatei nachgeladen wird).

  • [CHANGED] Die vtLoad-Anweisung akzteptiert jetzt Platzhalter innerhalb des Parameters und berücksichtigt bei relativen Pfaden jetzt auch den include_path von PHP.

  • [CHANGED] PHP Markdown Extra auf Version 1.2.8 upgedatet (Markdown-Version 1.0.2)

  • [FIXED] In neueren PHP-Versionen war es nicht möglich, einen MySQL-Server anzusprechen, der unter einer anderen als der Standard-Portnummer erreichbar war. Wenn dies gewünscht ist, muss man die Portnummer jetzt im Konfigurationsparameter mysqlPort hinterlegen.

  • [FIXED] Wenn in den Systemeinstellungen gültige FTP-Daten hinterlegt waren, konnte ein Angreifer bei genauer Kenntnis der Verzeichnisstruktur Dateien auf dem Server löschen und umbenennen.

  • [FIXED] Wenn beim CSV-Import das Erstellen einer Seite fehlschlug, gab es darüber keine Rückmeldung, und der Importvorgang wurde trotzdem fortgesetzt.

  • [FIXED] Bei einer restore- oder reindex-Aktion wurde der Suchindex gelöscht, so dass anschließend alle index-basierten Suchvorgänge ein leeres Ergebnis lieferten.

  • [FIXED] Wenn man die Virthos-API mit statischen Funktionsaufrufen nutzt, wird jetzt keine E_STRICT-Warnung mehr ausgelöst.

  • [FIXED] Beim Löschen eines Benutzers aus der Gruppe "Alle" wurden die Aliasse in anderen Gruppen nicht mit entfernt.

  • [FIXED] Wenn man unter "Einstellungen > Lizenz" einen zuvor kopierten Aktivierungscode mittels Mausaktion einfügte, wurde der Button "URL aktivieren" nicht aktiv.

  • [FIXED] Wenn man mittels update-Aktion den Seitentyp einer Seite änderte, für die keine data-Tabelle existierte, führte dies zu einem sofortigen Skriptabbruch.

  • [FIXED] Wenn man ein Benutzerkonto über eine Verknüpfung aufrief und bearbeitete, wurden beim Speichern alle Gruppenzuordnungen entfernt.

  • [FIXED] Wenn man ein Benutzerkonto im "Bearbeiten"-Modus aufrief, wurden in den paketspezifischen Feldern E-Mail-Adressen und URLs in HTML-Anker umgewandelt.

  • [FIXED] Beim Erstellen oder Bearbeiten einer Gruppe war es möglich, als Startmethode "Redaktionssystem" zu wählen, ohne die Erlaubnis zum manuellen Starten des Redaktionssystems zu erteilen.

  • [FIXED] Beim Speichern von globalen Einstellungen wurden Backslashes aus allen Werten entfernt (es sei denn, die veralteten "Magic Quotes" waren aktiviert).

  • [FIXED] Nach einer Suche funktionierte in der Trefferliste das Löschen von Seiten bzw. Benutzern nicht.

  • [FIXED] Wenn man den Platzhalter vtCart (Virthos Master) ohne Parameter verwendete, wurde eine leere Zeichenkette ausgegeben statt eine Liste der Warenkorbpositionen.

  • [FIXED] Wenn eine Seite einen Platzhalter vom Typ "select" enthielt und als zweiter Parameter eine Seitennummer angegeben war, war es nicht möglich, das betreffenden Feld leer zu lassen.

v3.7 (Juli 2014)

  • [NEW] Die vtSelect-Anweisung erlaubt es jetzt, innerhalb des -filter-Parameters mehrere Bedingungen mittels .and. oder .or. zu verbinden, um eine logische UND- bzw. ODER-Verknüpfung herzustellen. Der .and.-Operator steht im Gegensatz zum (nach wie vor erlaubten) Komma in der Rangfolge über dem .or.-Operator. Dadurch lassen sich UND- und ODER-Verknüpfungen flexibel kombinieren.

  • [NEW] Beim Mailversand mittels vtDo-Anweisung kann man jetzt mehrere Dateianhänge angeben, indem man den -attach-Parameter entsprechend oft wiederholt. Außerdem sind jetzt beliebige Dateiformate als Anhänge erlaubt, wobei VirthosTalk-Konstrukte aber nur in html- und rtf-Methoden interpretiert werden. Wenn man die dompdf-Klasse installiert hat und den Installationspfad im Konfigurationsparameter "pathToDompdf" hinterlegt, kann man eine html-Methode automatisch zu einem PDF-Anhang umwandeln lassen, indem man im -attach-Parameter ein ".pdf" an den Dateinamen anhängt, also zum Beispiel "files/invoice.html.pdf".

  • [NEW] Um Brute-Force-Angriffe zu erschweren, verzögert Virthos das Ausführen der login-Aktion jetzt standardmäßig um 2 Sekunden. Diese Zeitspanne lässt sich über den neuen Konfigurationsparameter "loginDelay" verkürzen oder verlängern.

  • [NEW] Die Subseiten einer Seite lassen sich jetzt auch nach dem Namen des Templates sortieren.

  • [NEW] Es steht einer neuer Platzhalter "vtCount" zur Verfügung, mit dem man auf einfache Weise einen Zähler in ein Template einbauen kann. Beim ersten Aufruf gibt der Platzhalter die Zahl 1 aus, beim zweiten Aufruf 2, beim dritten 3 etc. Will man mehrere Zähler verwenden, kann man einen Namen als Parameter übergeben, zum Beispiel {{vtCount: Hauptpunkte}}. Mit einem zweiten Parameter kann man einen Start- und einen Rücksetzwert übergeben, zum Beispiel {{vtCount: Reihen, 1-3}}. Bei Erreichen des Rücksetzwertes wird der Zähler wieder auf den Startwert zurückgesetzt.

  • [NEW] Im Dateibrowser des HTML-Editors ist es jetzt möglich, den Hintergrund anzuklicken, um einen Dateiauswahldialog zu öffnen.

  • [CHANGED] Wenn man einen Platzhalter mit dem Ausgabeformat "escaped" verwendet, werden relative Pfade, die im Text vorkommen, jetzt nicht mehr in absolute URLs umgewandelt.

  • [CHANGED] Nach einer Neuinstallation wird bei der Seite "Eigene Einstellungen" jetzt das Sortierfeld "Name" voreingestellt.

  • [CHANGED] Wenn innerhalb eines VirthosTalk-Parameters der vtGet-Platzhalter ohne Formatangabe vorkommt, wird jetzt automatisch das "raw"-Format angenommen, so dass z. B. HTML-Sonderzeichen an dieser Stelle nicht mehr automatisch in Entitäten umgesetzt werden.

  • [CHANGED] Beim Anlegen eines Session-Cookies setzt Virthos jetzt automatisch das secure-Flag, wenn der Aufruf über eine verschlüsselte Verbindung erfolgte.

  • [CHANGED] Sessioncookies werden jetzt mit dem Attribut "HttpOnly" gesetzt und lassen sich somit nicht mehr per JavaScript auslesen oder ändern.

  • [FIXED] Eine neu erstellte Gruppe wurde nicht automatisch aktiviert und tauchte daher nicht in den Auswahlmenüs für das Festlegen von Zugriffsrechten auf.

  • [FIXED] Mit dem neuen Drag-and-drop-Uploader ließen sich nur Dateien bis 2 MB Größe hochladen.

  • [FIXED] Wenn in einem Template eine einzelne "0" zwischen zwei VirthosTalk-Konstrukten stand, wurde diese aus dem Quelltext entfernt.

  • [FIXED] Wenn man beim ersten Aufruf nach einer Neuinstallation die Nutzungsbedingungen nicht akzeptierte, konnte es passieren, dass bei nachfolgenden Aufrufen stets eine Anmeldemaske mit Fehlermeldung eingeblendet wurde, selbst nach korrekter Passworteingabe.

  • [FIXED] Der vtItem-Platzhalter gab beim Durchlaufen einfacher Listen stets einen leeren Wert aus, wenn man ein Ausgabeformat als einzigen Parameter verwendete, zum Beispiel {{vtItem:raw}}.

  • [FIXED] Unter manchen Serverkonstellationen konnte es passieren, dass beim Update eines Benutzerkontos mittels vtDo-Anweisung die Gruppenzuordnung des Benutzers verlorenging.

  • [FIXED] Wenn man in der vtSelect-Anweisung einen freien Platzhalter als Sortierfeld verwendete, wurden die selektierten Seiten nicht nach diesem Platzhalter sortiert, sondern nach ihrem Erstellungsdatum.

  • [FIXED] Wenn man in der vtCall-Anweisungen einem Parameter den Wert "0" zuwies, erhielt man bei der Ausgabe dieses Parameters mittels vtArg statt der 0 einen leeren Wert.

  • [FIXED] Der Hinweistext im Dateibrowserfenster, dass man Dateien zum Hochladen hineinziehen soll, war auf manchen Bildschirmen schwer lesbar.

  • [FIXED] Unter neueren MySQL-Versionen funktionierte das Initialisieren oder Zurücksetzen der Datenbank nicht.

  • [FIXED] Beim Verwenden der alten Upload-Methode (ohne Dropzone) wurde nach dem Hochladen einer Datei anstelle des Dateibrowsers stets der eingebaute Fallback-Hinweis von Dropzone.js eingeblendet.

  • [FIXED] Der vtLink-Platzhalter ignorierte es, wenn man den Parameter "-urltype" auf den Wert "readable" setzte.

  • [FIXED] Beim Aufruf mit "https" erzeugte Virthos auf manchen Servern URLs mit "http" am Anfang.

  • [FIXED] Unter PHP 5 schlugen manche Datenbankzugriffe fehl, wenn der Konfigurationsparameter mysqlServer in der Form server:socket (z. B. "localhost:/tmp/mysql5.sock") angegeben war.

  • [FIXED] Wenn in einer mehrsprachigen Umgebung mit Hilfe des vtLink-Platzhalters ein Link zur Startseite mit einer bestimmten Zielsprache erzeugt wurde, wurde die aktuelle Session sofort auf diese Sprache umgeschaltet.

  • [FIXED] Der vtLink-Platzhalter erzeugte manchmal eine lange URL, auch wenn der Parameter -urltype auf "readable" gesetzt war.

  • [FIXED] Wenn der Zugang für Gäste gesperrt war konnte es vorkommen, dass man sich nach dem Zurückspielen einer Datensicherung nicht mehr ins Redaktionssystem einloggen konnte.

  • [FIXED] Nach dem Ausführen einer update-Aktion mittels vtDo-Anweisung wurden in bestimmten Konstellationen die nachfolgenden Platzhalter nicht automatisch HTML-codiert.

  • [FIXED] In einer mehrsprachigen Umgebung war es nicht möglich, mit Hilfe einer "lesbaren" URL zur Standardsprache zurückzuwechseln.

  • [FIXED] Wenn eine Berechnung mit vtCalc einen Nullwert zurücklieferte, wurde bei der anschließenden Ausgabe mittels vtResult kein Ausgabefilter angewendet.

  • [FIXED] Wenn man beim Bearbeiten der Seite "Einstellungen > Allgemein" auf "Speichern" klickte, ohne eine (neue) Logodatei hochzuladen, wurde in der Statuszeile stets die Meldung "Datei konnte nicht hochgeladen werden" eingeblendet.

  • [FIXED] Wenn man den vtItem-Platzhalter als Parameter innerhalb einer verschachtelten vtRepeat-Anweisung verwendete, wurde dieser stets durch einen leeren Wert ersetzt.

  • [FIXED] In der vtAbout-Methode war die Angabe der MySQL-Version stets leer.

v3.6 (Dezember 2013)

  • [NEW] Der Dateibrowser des HTML-Editors erlaubt jetzt das Hochladen von Bildern und Dateien mittels Drag-and-drop (im Internet Explorer allerdings erst ab Version 10).

  • [NEW] Die update- und die create-Aktion erlauben es jetzt, beliebig viele Dateien als Anhang hochzuladen, ohne diese mit festen Platzhalternamen zu verknüpfen. Die "name"-Attribute der entsprechenden input-Elemente im HTML-Formular müssen dazu auf "vtattachment[]" gesetzt werden. Wenn man in der Formularaktion den zusätzlichen Parameter "-aname" setzt, erhalten alle Dateien diesen Namen mit angehängter fortlaufender Nummer, ansonsten behalten Sie Ihren Originalnamen. Hochgeladene Dateien werden als vtFile-Elemente eingestuft, es sei denn, der Name endet auf .jpg, .png oder .gif --- in diesem Fall werden sie als vtMedia-Elemente eingestuft. Die Einstufung als vtFile-Element lässt sich erzwingen, indem man den Parameter "-atype" auf den Wert "file" setzt.

  • [NEW] Die updateSession-Aktion erlaubt es jetzt, mit dem neuen Parameter "-postvalues" eine kommagetrennte Liste von Feldnamen anzugeben, um die betreffenden Inhalte eines HTML-Formulars als Sessionvariablen zu speichern.

  • [NEW] Die vtDo-Anweisung unterstützt jetzt auch bei den Aktionen "create" und "update" den Parameter "-postvalues", der entweder eine kommagetrennte Liste von Feldnamen oder, falls alle Felder berücksichtigt werden sollen, einen Stern (*) enthalten darf.

  • [NEW] Es steht eine neue Systemmethode "-vtjsattach" zur Verfügung, die als Ziel für einen Dateiupload (update-Aktion) per AJAX genutzt werden kann. Sie liefert im Erfolgsfall den Wert "1" zurück, bei unvollständigen Parametern eine "0" und ansonsten eine Klartext-Fehlermeldung, verbunden mit dem HTTP-Statuscode 415 (Unsupported Media Type).

  • [NEW] In der Suchfunktion des Redaktionssystems lassen sich die Treffer jetzt auch nach dem Namen des Templates und der Nummer der Containerseite sortieren.

  • [NEW] In der vtSelect-Anweisung steht ein neuer Parameter "-ftmode" (Fulltext Mode) zur Verfügung, der es erlaubt, eine MySQL-Volltextsuche (http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html) nach dem im "-search"-Parameter angegebenen Suchbegriff durchzuführen. Mögliche Werte sind "natural" und "boolean". Letzteres ermöglich z. B. die ODER-Verknüpfung von Suchbegriffen.

  • [NEW] In Pro und Master lässt es sich jetzt unterbinden, dass Sessionvariablen per URL geändert werden (Einstellungen > Sicherheit). Bei neuen Virthos-Installationen bzw. beim Zurücksetzen in den Auslieferungszustand wird diese Option automatisch aktiviert.

  • [NEW] Logmechanismus komplett erneuert. Wenn der Konfigurationsparameter "log" auf "1" oder "2" gesetzt ist, werden die Logdateien jetzt im Verzeichnis "pathToLog" (Vorgabe: data/log) erstellt. Für jeden Tag wird eine eigene Logdatei erstellt, die standardmäßig für 30 Tage aufbewahrt bleibt. Die Dauer kann mit dem Konfigurationsparameter "keepLogFiles" verlängert oder verkürzt werden. Wenn "log" auf "1" gesetzt ist, werden ausschließlich Fehlermeldungen aufgezeichnet, bei "log=2" auch ausführliche Debug-Informationen.

  • [NEW] Mit dem neuen Platzhalter {{vtDbInsertId}} lässt sich die ID des zuletzt mittels vtDbQuery hinzugefügten Datensatzes ausgeben.

  • [NEW] Mit den neuen Anweisungen vtTimerStart und vtTimerStop lässt sich eine Stoppuhr starten bzw. anhalten. Der aktuelle Zeitwert lässt sich mit dem neuen Platzhalter vtTimer ausgeben. Alle drei Funktionen erlauben einen Namen als Parameter, so dass sich auch mehrere Stoppuhren parallel einsetzen lassen.

  • [NEW] Wenn man eine Webseite vorübergehend mit Hilfe einer config/message.html-Datei stilllegt, erzeugt Virthos jetzt einen 503-Statuscode, der negative Auswirkungen auf das Suchmaschinenranking verhindert.

  • [CHANGED] Aus Sicherheitsgründen dürfen seitentyp-bezogene Templates jetzt nicht mehr als Methode für andere Seitentypen aufgerufen werden.

  • [CHANGED] Aus Sicherheitsgründen lassen sich Methoden, deren Name mit einem Unterstrich beginnt, jetzt nicht mehr direkt aufrufen (z. B. _pkginfo).

  • [CHANGED] Bei der "ftp"-Aktion werden jetzt ausführliche Informationen in die Logdatei geschrieben.

  • [CHANGED] Beim Erstellen eines Benutzers mittels createUser-Aktion wird der Benutzer jetzt nur noch dann aktiviert, wenn der active-Parameter angegeben und auf 1 gesetzt ist.

  • [CHANGED] Der Konfigurationsparameter exactServerName wurde entfernt, da er nie richtig funktioniert hat und dieselbe Wirkung einfacher und sauberer durch einen Eintrag in der htaccess-Datei herbeigeführt werden kann.

  • [CHANGED] Die pwreset-Aktion schlägt jetzt fehl, wenn sie bei einem inaktiven Benutzer angewendet wird.

  • [CHANGED] Die register-Aktion entfernt jetzt automatisch Leerzeichen am Anfang und Ende des Benutzernamens.

  • [CHANGED] Die vtCall-Anweisung kann jetzt auch mit einem einzigen (unbenannten) Parameter aufgerufen werden, der dann als Name der aufzurufenden Funktion interpretiert wird.

  • [CHANGED] Eine relative Pfadangabe innerhalb einer vtInclude- oder vtLoad-Anweisung wird jetzt immer vom Verzeichnis der aktuell ausgeführten Methodendatei aus aufgelöst, nicht vom Paket der aktuellen Seite. Letzteres führte innerhalb von vtUse- oder vtLoop-Anweisungen manchmal zu unerwarteten Ergebnissen.

  • [CHANGED] Es ist jetzt nicht mehr möglich, das Benutzerkonto zu löschen, mit dem man gerade eingeloggt ist, da dies die aktuelle Arbeitssitzung in einen undefinierten Zustand brächte.

  • [CHANGED] HTML-Tags werden jetzt nicht mehr in den Index aufgenommen, und HTML-Entitäten werden vor der Aufnahme in den Index in die entsprechenden Zeichen zurückgewandelt.

  • [CHANGED] In der Pro- und Master-Version wird beim Erstellen einer Datensicherung ("Einstellungen > Systemeinstellungen > Datenbank") jetzt eine Datei mit der Endung .php statt .vtbak erzeugt.

  • [CHANGED] JavaScript-Verweise in styled-Feldern (mittels "js:") funktionieren jetzt auch, wenn das Semikolon am Ende fehlt, wenn sich Leerzeichen vor der schließenden Doppelklammer befinden oder wenn mehrere durch Semikolon getrennte JavaScript-Anweisungen angegeben sind.

  • [CHANGED] PHP-Mailer auf Version 5.2.6 upgedatet

  • [CHANGED] Relative Ressourcenpfade innerhalb eines Templates werden jetzt nicht mehr in vollständige URLs umgesetzt, wenn sie mit einem Punkt beginnen, das heißt, derart referenzierte Ressourcen funktionieren jetzt nicht mehr. Dafür ist jetzt möglich, relative Dateisystempfade innerhalb von PHP-Blöcken zu verwenden, indem man diese mit "./" beginnen lässt.

  • [CHANGED] TinyMCE auf Version 3.5.10 aktualisiert

  • [CHANGED] Wenn der Konfigurationsparameter "log" auf einen Wert > 1 gesetzt ist, werden bei Aufruf von vtCall etwaige PHP-Fehler nicht mehr unterdrückt.

  • [CHANGED] Wenn ein Benutzerfeld in mehreren Templatepaketen definiert ist (über vtUserFields-Variable in pkginfo-Datei) ist jetzt beim Bearbeiten der Benutzerdaten nur noch die erste Instanz des Feldes editierbar, und alle weiteren Instanzen sind inaktiv.

  • [CHANGED] Wenn man einen Benutzer über einen Alias, das heißt als Mitglied einer bestimmten Gruppe aufgerufen hat, lässt sich diese Mitgliedschaft jetzt nicht mehr in der Bearbeitenmaske entfernen.

  • [FIXED] Bei Verwendung des list-Ausgabefilters wurden Umlaute nicht richtig dargestellt.

  • [FIXED] Beim Aufruf der Bearbeitenmaske für die FTP-Daten wurden die Inhalte der Felder Name und Passwort in manchen Browsern durch Angaben aus dem Schlüsselbund überschrieben.

  • [FIXED] Beim CSV-Export hatten die exportierten Datensätze nicht immer dieselbe Anzahl an Spalten.

  • [FIXED] Beim CSV-Export wurden alle Sonderzeichen in HTML-Entitäten umgesetzt.

  • [FIXED] Beim CSV-Import konnte es passieren, dass Datensätze übersprungen wurden, wenn sie in der ersten Spalte keinen Wert enthielten.

  • [FIXED] Benutzer und andere sprachunabhängige Systemseiten ließen sich nicht nach einem seitentypspezifischen Feld sortieren.

  • [FIXED] Das Ausliefern einer Datei mittels vtDeliver-Anweisung schlug fehl, wenn der Dateipfad ein Apostroph enthielt.

  • [FIXED] Das Ausliefern von Dateien mittels vtDeliver-Anweisung konnte bei größeren Dateien fehlschlagen.

  • [FIXED] Das Ergebnis der letzten Berechnung oder Aktion ließ sich nicht in der Kurzschreibweise von vtSet dem Attribut einer Objektvariablen zuweisen, z. B. {{vtSet: Kunde[name] }}, sondern nur durch explizite Verwendung des vtResult-Platzhalters, z. B. {{vtSet: Kunde[name] = "{vtResult}" }}.

  • [FIXED] Das letzte Bild und die letzte Datei, die zu einer Seite hochgeladen waren, ließen sich nicht mehr entfernen.

  • [FIXED] Der CSV-Import von Benutzerdaten schlug fehl, wenn in den Daten eine Spalte "groups" enthalten war.

  • [FIXED] Der Platzhalter vtCountUsers lieferte stets 0 zurück.

  • [FIXED] Der Platzhalter vtFileName gab stets einen leeren Wert aus.

  • [FIXED] Der Platzhalter {{vtUser:groups}} lieferte stets einen leeren Wert zurück.

  • [FIXED] Die ftp-Aktion schlug auf manchen Servern fehl, wenn man das nlist- oder das delete-Kommando in Verbindung mit einem Pfadnamen benutzte, der Leerzeichen enthielt.

  • [FIXED] Die mail-Aktion erzeugte E-Mails ohne Betreff, wenn der -subject-Parameter fehlte.

  • [FIXED] Die Systemeinstellungsseiten waren für die Gruppe "Alle" freigegeben und somit, bei Kenntnis der Seitennummer, auch für Benutzer ohne Administratorrechte zugänglich.

  • [FIXED] Die vtEndDbQuery-Anweisung führte zu einem PHP-Fehler, wenn die zugehörige Datenbankabfrage erfolgreich war, aber keine Ergebnisliste zurücklieferte (weil es sich zum Beispiel um einen UPDATE- oder INSERT-Befehl handelte).

  • [FIXED] Gastbenutzer konnten unabhängig von den gesetzten Zugriffsrechten durch Eingabe spezieller URL-Parameter Seiten in den Papierkorb verschieben.

  • [FIXED] Hinter dem Seiten-Icon, das im Kopf des Redaktionssystems links vom Seitennamen eingeblendet wird, war bei der Startseite und bei Seiten mit nicht-eindeutigem Pfad ein fehlerhafter Link hinterlegt.

  • [FIXED] Im Bereich der Benutzerverwaltung lieferte die Suchfunktion im Redaktionssystem stets ein leeres Ergebnis.

  • [FIXED] In der Liste, die der Platzhalter "vtPathIds" ausgab, fehlte am Ende die Nummer der aktuellen Seite.

  • [FIXED] In einer vtLoop-Schleife mit -show="viewable" wurden fälschlicherweise auch Seiten berücksichtigt, die auf keinem eigenen Template basierten.

  • [FIXED] In Virthos Basic wurde in der Strukturansicht bei mehr als 15 Subseiten kein Portionierungsmenü eingeblendet.

  • [FIXED] Nach dem Speichern von Änderungen wurde im Redaktionssystem ein Demohinweis sichtbar, der beim Neuladen der Seite wieder verschwand.

  • [FIXED] Nach Ausführung einer restore-Aktion wurden manchmal die index- und die tree-Tabelle nicht erstellt, so dass der Navigationsbaum oder die Suche im Redaktionssystem nicht funktionierten.

  • [FIXED] Nach dem Einloggen wurde ein Benutzer nicht auf die für ihn festgelegte Startseite geleitet.

  • [FIXED] Nach einer restore-Aktion wurde die Sessiontabelle nicht automatisch angelegt, so dass Virthos anschließend funktionsunfähig war.

  • [FIXED] Sicherheitslücke geschlossen, durch die ein Angreifer bei genauer Kenntnis des Systems in der Lage war, alle Virthos-Einstellungen auszulesen.

  • [FIXED] Unter "Einstellungen > Eigene Einstellungen" ließen sich keine Seiten aus dem Klemmbrett einfügen.

  • [FIXED] Wenn der Zugang für Gäste gesperrt war, ließen sich die Funktionen "restore" und "dbdestroy" nicht mehr ausführen.

  • [FIXED] Wenn eine Seite keinen eindeutigen Namen hatte und daher nur per Seitennummer verlinkt werden konnte, erzeugte der vtLink-Platzhalter eine fehlerhafte URL (Seitennummer mit Endung ".html").

  • [FIXED] Wenn im Namen eines implizites Templates (angegeben als Parameter in einer vtLoop-Anweisung) Großbuchstaben vorkamen, ließen sich beim nachträglichen Bearbeiten einer darauf basierenden Seite keine neuen Bilder oder Dateien hochladen.

  • [FIXED] Wenn man den vtDbRow-Platzhalter ohne Parameter benutzte, wurden Feldinhalte, die Umlaute oder Sonderzeichen enthalten, nicht mit ausgegeben.

  • [FIXED] Wenn man in der Konfigurationsdatei einen Wert in Anführungszeichen einschloss und sich zwischen dem Gleichheitszeichen und dem ersten Anführungszeichen Leerzeichen befanden, wurde das Anführungszeichen nicht aus dem Wert ent

  • [FIXED] Wenn man in einer vtIf-Anweisung zwei Zahlenwerte in englischer Schreibweise (mit Punkt als Dezimaltrennzeichen) miteinander verglich, konnte das in seltenen Fällen zu einem falschen Ergebnis führen.

  • [FIXED] Wenn man unter "Benutzer > Alle" auf "Bearbeiten" klickte, funktionierten anschließend die Buttons in der Modus- und Werkzeugleiste nicht mehr.

  • [FIXED] Wenn man zu einer Seite mit typbezogener vtLoop-Schleife zum ersten Mal eine Subseite erstellte, waren die eingegebenen Inhalte anschließend nicht sofort sichtbar, sondern erst nach einem Neuladen der Listenseite.

  • [FIXED] Zeilenumbrüche innerhalb einer vtIf-Anweisung konnten zu einer falschen Auswertung der Bedingung(en) führen.

v3.5 (Mai 2013)

  • [NEW] Man kann jetzt innerhalb eines vtUse-Blocks einen vtElse-Block einfügen, der ausgeführt wird, wenn die angegebene Seite nicht existiert.

  • [NEW] Mit vtDate steht ein neuer Platzhalter zur Verfügung, mit dem man auf flexible Weise Datumswerte und Uhrzeiten ausgeben kann. Als Parameter kann eine englischsprachige Zeitangabe wie "today", "tomorrow", "next year" o. ä. verwendet werden. Dabei wird die gesamte Syntax der strtotime-Funktion von PHP unterstützt. Das Datums- bzw. Uhrzeitformat kann mit Hilfe eines Ausgabefilters bestimmt werden, wobei das Präfix "date:" weggelassen werden kann. Ohne Ausgabefilter gibt der Platzhalter die Zahl der Sekunden aus, die seit dem 01.01.1970 verstrichen sind.

  • [NEW] Es ist jetzt möglich, innerhalb von PHP-Blöcken den aktuellen Seitenkontext zu ändern. Dafür stehen die zwei neuen API-Funktionen v::vtuse und v::vtenduse zur Verfügung.

  • [NEW] Es steht ein neuer Konfigurationsparameter "dblog" zur Verfügung. Wenn man diesen auf "1" setzt, werden bei Pro und Master sämtliche Datenbankabfragen und etwaige mySQL-Fehlermeldungen in die Logdatei geschrieben (sofern auch log=1 gesetzt ist).

  • [NEW] Mit dem neuen Konfigurationsparameter "includeFile" kann man eine PHP-Datei angeben, die bei jedem Skriptaufruf mit eingebunden wird. Eine relative Pfadangabe wird ausgehend vom Virthos-Basisverzeichnis interpretiert.

  • [NEW] Virthos verfügt jetzt über einen Hook-Mechanismus, mit dem sich das Standardverhalten beeinflussen lässt. Die neue PHP-Funktion "register_hook" erlaubt es, in einer per includeFile-Konfigurationsparameter eingebundenen Skriptdatei den Aufruf von selbst erstellten Funktionen zu bestimmten Skriptzeitpunkten ("Events") zu definieren. Dabei wird der Eventname als erster Parameter und der Funktionsname als zweiter angegeben, zum Beispiel: register_hook( 'before_compiling', 'my_function' ). Für den Anfang sind drei Events verfügbar: "before_compiling", "before_evaluation" und "before_output". Auf den zu kompilierenden bzw. zu evaluierenden Code kann man über die globale Variable $vtMethod['code'] zugreifen, auf den fertigen HTML-Code über ob_get_contents().

  • [NEW] Der vtEcho-Platzhalter erlaubt jetzt, analog zu vtCalc, die Verwendung von Platzhaltern innerhalb des PHP-Ausdrucks.

  • [NEW] Wenn in Virthos Basic der Skriptablauf abgebrochen wird und dadurch die Datenbank in einem blockierten Zustand zurückbleibt, löst sich diese Blockade jetzt nach fünf Minuten automatisch auf. Außerdem wird beim Schreiben der Datei data/database/globals.php jetzt wie bei der content.php erst eine temporäre Datei erzeugt, um korrupte Daten aufgrund von Skriptabbrüchen zu vermeiden.

  • [IMPROVED] Bei Platzhaltern vom Typ "checkbox" kann man in der Bearbeitenmaske jetzt auch die einzelnen Werte anklicken, um sie zu aktivieren. Zuvor war ein Klick genau auf das jeweilige Kästchen erforderlich.

  • [IMPROVED] Bei Pro und Master wurden die Datenbankabfragen für Standardoperationen optimiert, was in den meisten Fällen zu deutlich kürzeren Antwortzeiten führt.

  • [CHANGED] Aliasseiten werden jetzt nicht mehr in den Index aufgenommen und werden daher bei einer Indexsuche auch nicht mehr gefunden. Bislang war das Verhalten inkonsistent, da beim Erstellen einer Aliasseite zwar ein Indexeintrag erzeugt, dieser bei späteren Änderungen an der Originalseite aber nicht mehr aktualisiert wurde.

  • [CHANGED] Die Funktionalität der vtBlock-Anweisung steht jetzt (auch) unter dem Namen vtCapture zur Verfügung. Der Name "vtBlock" ist ab sofort "deprecated".

  • [CHANGED] TinyMCE auf Version 3.5.8 aktualisiert

  • [CHANGED] Wenn man eine Seite aufruft, für die man keine Leseberechtigung besitzt, setzt Virthos jetzt den HTTP-Statuscode auf 403 (Forbidden). Zurückgeliefert wird, wie auch bisher, die Startseite, es sei denn, in dem Templatepaket, zu dem die angeforderte Seite gehört, existiert eine Datei mit dem Namen _vterror403.html --- dann wird deren Inhalt (interpretiert im Kontext der Startseite) zurückgeliefert.

  • [FIXED] Nach dem Ausloggen lieferte der Platzhalter vtCurrentAccessRights auf der aktuellen Seite noch die Zugriffsrechte, die vor dem Ausloggen bestanden.

  • [FIXED] Der Zugriff auf API-Funktionen mittels "v::"-Schreibweise (statische Klassenmethoden) funktionierte nicht.

  • [FIXED] Die API-Funktionen v::vtdo und v::vtset schlugen fehl, wenn einer der Werte doppelte Anführungszeichen enthielt, wie es z. B. bei JSON-Strings regelmäßig der Fall ist.

  • [FIXED] Beim Aufruf über die Kommandozeile wurden sämtliche Parameter ignoriert.

  • [FIXED] Reine Textmails erhalten jetzt nicht mehr grundsätzlich eine Leerzeile am Anfang.

  • [FIXED] Beim Installieren eines Updates gingen die FTP-Einstellungen verloren.

  • [FIXED] Bei manchen Versionen des Internet Explorers konnte man im Redaktionssystem aufgrund eines JavaScript-Fehlers nicht auf "Benutzer" oder "Einstellungen" umschalten.

  • [FIXED] Unter neueren PHP-Versionen wurde bei der automatischen Bildskalierung unabhängig von der Konfiguration immer die niedrigste Qualitätsstufe angewendet, was die erzeugten Bilder praktisch unbrauchbar machte.

  • [FIXED] Wenn der Mitbenutzer einer Seite gesetzt war, ließ sich dieser nur noch ändern, aber nicht mehr entfernen.

  • [FIXED] Wenn man vtLoop außerhalb eines vtSelect-Blocks mit einem einzelnen, unbenannten Parameter (Seitentyp) verwendete, wurde die Liste stets nach Erstellungsdatum sortiert, und die Sortiereinstellung der aktuellen Seite wurde ignoriert.

  • [FIXED] Das Umbenennen mittels update-Aktion schlug bei geschützten Seiten fehl, selbst wenn man den Parameter "-force" auf "1" setzte.

  • [FIXED] Wenn man Englisch als Systemsprache aktiviert hatte, funktionierte der Navigationsbaum innerhalb des Redaktionssystem nicht richtig.

  • [FIXED] Die automatische Bildskalierung funktionierte nicht auf Servern, bei denen die Servervariable ORIG_PATH_INFO statt PATH_INFO gesetzt war.

  • [FIXED] Es war nicht möglich, einem Benutzer keine Startsprache zuzuordnen (damit immer die gerade eingerichtete Standardsprache verwendet wird).

  • [FIXED] Wenn man Englisch als Systemsprache aktiviert hatte, funktionierte die Datensicherung unter "Einstellungen > Datenbank" nicht.

  • [FIXED] Manche Sortierangaben in der vtSelect-Anweisung funktionierten nicht. Der Parameter -sortorder="random" führte dazu, dass überhaupt keine Seiten selektiert wurden.

  • [FIXED] Nach dem Speichern der FTP-Einstellungen wurden zunächst noch die alten Einstellungen eingeblendet. Erst nach einem Neuladen der Seite wurden die korrekten Einstellungen sichtbar.

  • [FIXED] In Umgebungen mit PHP-Version 5.4 oder höher wurden Umlaute und Sonderzeichen nicht korrekt ausgegeben, was dazu führte, dass beim Bearbeiten einer Seite ganze Feldinhalte verschwinden konnten.

  • [FIXED] Beim Bearbeiten einer Seite wurden Platzhalter, die im Template ohne Parameter, aber mit Ausgabefilter vorkamen (z. B. {{Nummer|num:2}}, mit einem falschen Namen (z. B. "Nummer|num") eingeblendet.

v3.4.1 (Oktober 2012)

  • [NEW] Um innerhalb von PHP-Code auf Virthos-Inhalte und -Funktionen zuzugreifen, kann man jetzt die Funktion "v" verwenden und als Parameter einen beliebigen VirthosTalk-Ausdruck (ohne doppelt geschweifte Klammern) übergeben, zum Beispiel: v('vtID') oder v('vtSet: Var1="wert"').

  • [IMPROVED] Wenn man den Konfigurationsparameter URLOmitSeparator aktiviert, erkennt Virthos jetzt die Basis-URL in vielen Fällen automatisch, so dass eine explizite Angabe des Konfigurationsparameters baseURL nicht erforderlich ist.

  • [FIXED] Unterhalb einer Seite, die auf einem eingebauten Template basierte, ließen sich keine Seiten auf Basis eines externen Templates erstellen.

  • [FIXED] In neueren Firefox-Versionen führte in manchen Eingabemasken jeder Tastendruck zu einer JavaScript-Warnmeldung.

  • [FIXED] In neueren Firefox- und Chrome-Versionen verschwand im Redaktionssystem die linke Navigation, wenn man auf "Einstellungen" oder "Benutzer" klickte.

  • [FIXED] Im Internet Explorer 8 wurden Änderungen an einem grid-Platzhalter (Tabelleneditor) beim Speichern nicht übernommen.

  • [FIXED] Wenn ein Template einen relativen Link zu einer Ressource enthielt, wurde diese nicht gefunden, wenn im Verzeichnis- oder Dateinamen zusätzliche Punkte enthalten waren (z. B. "jquery.dynatree.js").

  • [FIXED] Die Variable $v für den Zugriff auf die API-Funktionen war nicht vordefiniert.

v3.4 (Oktober 2012)

  • [NEW] Für freie Platzhalter steht jetzt der neue Feldtyp "grid" zur Verfügung, mit dem ein Excel-ähnlicher Tabelleneditor verknüpft ist. Die gewünschte Spaltenzahl (Vorgabe: 5) lässt sich als zweiter Parameter übergeben, zum Beispiel: {{Tabelle: grid, 2}}. Die Daten lassen sich mittels vtRepeat durchlaufen, wobei {{vtItem:num}} die aktuelle Zeilennummer ausgibt und {{vtItem:1}}, {{vtItem:2}} etc. den Inhalt der ersten, zweiten etc. Spalte.

  • [NEW] Für freie Platzhalter steht jetzt der neue Feldtyp "markdown" (oder "mdown") zur Verfügung, um Texte in Markdown-Syntax zu erfassen.

  • [NEW] Beim Zurücksetzen eines Benutzerpasswortes mittels pwreset-Aktion kann jetzt statt des eigentlichen Benutzernamens auch die E-Mail-Adresse als "Name" verwendet werden.

  • [NEW] Es existiert jetzt ein vordefiniertes Objekt "$v", um innerhalb von PHP-Codeblöcken die Virthos-API-Funktionen aufzurufen. Das Deklarieren eines eigenen "virthos"-Objekts wird damit überflüssig. Außerdem ist die Virthos-Klasse jetzt auch unter dem Kürzel "v" definiert, was kurze statische Funktionsaufrufe ermöglicht, z. B.: v::vtuser('name').

  • [NEW] In der Pro- und Master-Version lässt sich jetzt unter "Einstellungen

    Sicherheit" ein Wartungsmodus aktivieren, der dazu führt, dass man sich nur noch als "master", aber nicht mehr als gewöhnlicher Benutzer einloggen kann.

  • [NEW] Es steht eine neue Anweisung "vtDeliver" zur Verfügung, mit der sich Dateien aus dem Dateisystem des Servers zum Browser übertragen lassen, ohne dass auf eine Download-URL umgelenkt werden muss. Damit lassen sich insbesondere auch Dateien ausliefern, die in geschützten Verzeichnissen liegen. Beispiel: {{vtDeliver: /public/files/brochure.pdf }} oder {{vtDeliver: {vtFilePath:Datei1} }} oder {{vtDeliver: {vtFilePath:Datei1}, {vtFileName:Datei1} }}. Wenn (ein zweiter Parameter angegeben wird, setzt Virthos die HTTP-Header so, dass der Browser in jedem Fall einen "Speichern"-Dialog einblendet, auch wenn er den Dateiinhalt direkt darstellen könnte. Der Wert des zweiten Parameters wird dabei als Dateiname vorgeschlagen.

  • [NEW] Es steht eine neue Systemmethode "vtdeliver" zur Verfügung, mit der sich eine Datei, die in einen bestimmten vtFile-Platzhalter hochgeladen wurde, ausliefern lässt, ohne dass auf eine Download-URL umgelenkt werden muss. Der Name des Platzhalters muss dabei im URL-Parameter "-file" übergeben werden. Beispiel: Download

  • [NEW] Man kann Virthos jetzt so konfigurieren, dass hochgeladene Dateien grundsätzlich über die vtdeliver-Methode ausgeliefert werden. Dazu muss der Konfigurationsparameter "baseURLFiles" den Wert "-" (Minuszeichen) erhalten. Der vtFile-Platzhalter erzeugt dann automatisch die entsprechende URL. Sinnvoll ist dies vor allem dann, wenn man das Verzeichnis "data/files" durch entsprechende htaccess-Direktiven vor direkten Zugriffen von außen schützt oder in den nicht-öffentlichen Bereich des Webservers verschiebt (und den Konfigurationsparameter "pathToFiles" entsprechend anpasst).

  • [NEW] Mit dem neuen Platzhalter {{vtFilePath: Name}} lässt sich analog zu vtFileName und vtFileSize der absolute Dateisystempfad zu einer hochgeladenen Datei ausgeben.

  • [NEW] Mit dem neuen Platzhaltertyp "pagename" kann man in die Eingabemaske zum Erstellen oder Bearbeiten von Seiten ein Eingabefeld zum Festlegen des Seitennamens einfügen. Dies ist vor allem für Templates gedacht, die keine regulären Textplatzhalter besitzen und bei denen die erstellten Seiten sonst einen automatisch erzeugten Seitennamen erhalten würden.

  • [NEW] Virthos bietet jetzt standardmäßig die Möglichkeit, an beliebigen Stellen innerhalb der Seitenhierarchie "Dateiseiten" anzulegen, die, wenn man sie außerhalb des Redaktionssystems aufruft, eine zuvor hochgeladene Datei ausliefern.

  • [NEW] Virthos bietet jetzt standardmäßig die Möglichkeit, an beliebigen Stellen innerhalb der Seitenhierarchie "Leerseiten" anzulegen, deren Inhalt sich vollständig mit dem eingebauten HTML-Editor bearbeiten lässt.

  • [NEW] Virthos bietet jetzt standardmäßig die Möglichkeit, an beliebigen Stellen innerhalb der Seitenhierarchie "Ordnerseiten" anzulegen. Diese können dazu dienen, andere Seiten zu gruppieren, sind aber selbst (für Besucher) nicht sichtbar. Ruft man eine Ordnerseite außerhalb des Redaktionssystems auf, wird man auf die erste Subseite umgelenkt, die keine Ordnerseite ist, oder --- falls keine solche Subseite existiert --- auf die erste übergeordnete Seite, die keine Ordnerseite ist.

  • [NEW] Virthos bietet jetzt standardmäßig die Möglichkeit, an beliebigen Stellen innerhalb der Seitenhierarchie "Umlenkseiten" anzulegen, die, wenn man sie außerhalb des Redaktionssystems aufruft, einen HTTP-Redirect auf andere Virthos-Seiten oder auf externe URLs bewirken.

  • [NEW] Virthos liefert jetzt den HTTP-Statuscode 404 zurück, wenn die angeforderte Seite nicht existiert. Den Kontext für die Verarbeitung der Anfrage bildet in diesem Fall weiterhin die Startseite, allerdings wird – falls vorhanden --- die globale Methode "vterror404" zur Darstellung verwendet, so dass man bei Bedarf eine eigene Fehlerseite bereitstellen kann.

  • [NEW] Wenn in der Pro- oder Master-Version mehrere Inhaltssprachen definiert sind, kann man für jeden Benutzer eine eigene Startsprache (die beim Einloggen automatisch aktiviert wird) sowie bestimmte Arbeitssprachen (die allein bearbeitet werden dürfen) festlegen.

  • [CHANGED] Das Freischalten einer Virthos-Umgebung mit Hilfe des Aktivierungscodes kann jetzt nicht nur vom Masterbenutzer, sondern von jedem Benutzer durchgeführt werden, der Administratorrechte besitzt.

  • [CHANGED] Der "fullpage"-HTML-Editor ist jetzt kompakter und verfügt nur noch über zwei Symbolleisten.

  • [CHANGED] Innerhalb eines HTML-Feldes vom Typ "fullpage" gibt es jetzt keine Einschränkung mehr bei den erlaubten HTML-Elementen und -Attributen. Das heißt insbesondere, dass beim Hineinkopieren von fertigem HTML-Code keine Elemente mehr entfernt werden.

  • [CHANGED] Im Parameter des vtEcho-Platzhalters sind jetzt auch VirthosTalk-Platzhalter (in einfach geschweiften Klammern) erlaubt --- analog zu vtCalc. Falls das Ergebnis des Ausdrucks ein Array ist, wird dieses jetzt in JSON-Syntax ausgegeben.

  • [CHANGED] Platzhalter, deren Name mit einem Unterstrich beginnt, werden beim Erstellen oder Bearbeiten einer Seite jetzt nur noch in die Eingabemaske aufgenommen, wenn sie Text enthalten.

  • [FIXED] Auf manchen Servern funktionierte der E-Mail-Versand nicht mehr, wenn der Konfigurationsparameter "mailMethod" leer bzw. auf den Wert "mail" gesetzt war.

  • [FIXED] Bei jedem Aufruf von Virthos über die Kommandozeile wurde eine neue Session gestartet, auch wenn die Parameter "-ses" und "-cod" explizit (und korrekt) übergeben wurden.

  • [FIXED] Bei manchen Serverkonfiguration (insbesondere bei neueren PHP-Versionen) konnte es passieren, dass beim Erstellen oder Bearbeiten einer Seite eingegebene Backslash-Symbole aus dem Text verschwanden.

  • [FIXED] Bei Verwendung von numerischen Ausgabefiltern wurden Nullwerte nicht formatiert.

  • [FIXED] Das Erzeugen von Cache-Dateien funktionierte nur, wenn Virthos für alle Verzeichnisse innerhalb des Cache-Pfades ein Ausführenrecht besaß.

  • [FIXED] Das Wort "oder" wurde in der englischen Oberfläche auf Deutsch angezeigt.

  • [FIXED] Der Mailversand schlug fehl, wenn im Feld Standard-Empfänger mehrere (kommagetrennte) E-Mail-Adressen angegeben waren. Gleiches galt beim Mailversand mittels vtDo-Anweisung, wenn einer der Parameter -to, -cc oder -bcc mehrere Adressen enthielt.

  • [FIXED] Es war nicht möglich, mittels {{vtItem:attrib}} auf ein Objektattribut zuzugreifen, wenn in dessen Namen Großbuchstaben enthalten waren.

  • [FIXED] Im Hilfetext zu den FTP-Einstellungen wurde ein falscher Produktname eingeblendet.

  • [FIXED] In der Eingabemaske zum Erstellen neuer Seiten wurde stets ein horizontaler Scrollbalken eingeblendet, auch wenn keine Seiteninhalte aus dem sichtbaren Bereich herausragten.

  • [FIXED] In manchen URLs, die Virthos erzeugte, wurden Leerzeichen durch Pluszeichen dargestellt statt durch "%20". Diese werden zwar von den meisten Browsern korrekt umgesetzt, entsprechen aber nicht dem aktuellen Standard (RFC 3986).

  • [FIXED] Mit dem API-Aufruf $v->vtpage('datei1') ließ sich der Pfad der hochgeladenen Datei "datei1" nicht ausgeben.

  • [FIXED] Solange keine Session gestartet war, gab vtCurrentPortion nicht 1, sondern einen leeren Wert aus.

  • [FIXED] Unter "Einstellungen > Systemeinstellungen" waren die Seiten nicht alphabetisch sortiert.

  • [FIXED] Wenn der erste Platzhalter eines Templates vom Typ "html, fullpage" war, erhielt eine damit erstellte Seite einen leeren Namen.

  • [FIXED] Wenn es im Virthos-Verzeichnis ein Unterverzeichnis "virthos" gab, funktionierte Virthos nicht richtig.

  • [FIXED] Wenn man außerhalb des Redaktionssystems mit Hilfe der vtnew-Methode eine neue Seite erstellte, wurde diese stets unterhalb der Startseite angelegt, und nicht unterhalb der aktuellen Seite. Außerdem standen außerhalb des Redaktionssystems in der vtnew-, vtedit- und vtbrowse-Methode keine Abbrechen-Buttons zur Verfügung.

  • [FIXED] Wenn man außerhalb des Redaktionssystems über {{vtButton:trash}} eine Seite löschte, wurde anschließend nicht die zugehörige Containerseite eingeblendet, sondern stets die Startseite.

  • [FIXED] Wenn man einer Seite, in deren Templatenamen Großbuchstaben vorkamen, nachträglich ein anderes Template zuwies, gingen alle Übersetzungen verloren.

  • [FIXED] Wenn man vtRepeat mit einer JSON-Liste als Parameter verwendete, wurden Umlaute und Sonderzeichen falsch ausgegeben.

v3.3 (Mai 2012)

  • [NEW] Es stehen jetzt zusätzliche Platzhalter und Anweisungen zur Verfügung, um Skriptroutinen in Form von Funktionen zu speichern und dann mehrfach zu nutzen. Mit {{vtFunction: funktionsname}} ... {{vtEndFunction}} wird eine Funktion definiert, mit {{vtCall: -name="funktionsname", param1="wert1", param2="wert2" ...}} wird sie aufgerufen. Innerhalb des Funktionsblocks kann man mit {{vtArg:param1}} auf einen übergebenen Parameterwert zurückgreifen, und mit {{vtReturn: Ergebnis}} kann man das Funktionsergebnis zurückliefern, das sich nach der vtCall-Anweisung mit {{vtResult}} ausgeben lässt.

  • [NEW] Virthos lässt sich jetzt so konfigurieren, dass alle E-Mails über einen SMTP-Server bzw. über das sendmail-Kommando versendet werden. Dazu muss in der Konfigurationsdatei der Parameter "mailMethod" auf "smtp" bzw. "sendmail" gesetzt werden. Die Details für den SMTP-Versand lassen sich über die Konfigurationsparameter "mailSmtpServer", "mailSmtpPort", "mailSmtpUser", "mailSmtpPassword" und "mailSmtpSecure" festlegen. Letzterer kann den Wert "ssl" oder "tls" erhalten oder leer bleiben.

  • [CHANGED] Die Zusatzoptionen "f" und "x" bei der automatischen Bildskalierung funktionieren jetzt auch in Verbindung mit der Kurzschreibweise für quadratische Größenvorgaben, z. B. "200xf".

  • [CHANGED] TinyMCE auf Version 3.4.9 aktualisiert

  • [FIXED] Beim vtMedia-Platzhalter wurde der Zusatzparameter für die automatische Bildskalierung ignoriert, wenn sich vor oder hinter dem Komma Leerzeichen befanden.

  • [FIXED] Wenn bei einem Benutzer die Option "darf Redaktionssystem manuell starten" aktiviert war, wurde das Redaktionssystem nach dem Einloggen stets automatisch gestartet, auch wenn als Startmethode "Standard" eingestellt war.

  • [FIXED] Wenn die Konfigurationsvariable "imagerCachePath" nicht gesetzt war, funktionierte die automatische Bildskalierung nur, wenn sich das Cache-Verzeichnis im Verzeichnis "data" befand. Standardmäßig befindet sich dieses jedoch direkt im Installationsverzeichnis.

  • [FIXED] Wenn eine Seite einen leeren vtMedia- oder vtFile-Platzhalter enthielt, wurden im Dateibrowser des HTML-Editors leere Objekte eingeblendet, die sich nicht löschen ließen.

  • [FIXED] Wenn man in einer vtSelect-Anweisung mehrere Sortierfelder bzw. Sortierfolgen festlegte, wurden Platzhalter als Werte nicht aufgelöst.

v3.2 (Februar 2012)

  • [NEW] Captcha-Mechanismus eingebaut: Der neue Platzhalter {{vtCaptcha}} gibt die URL zu einem Captcha-Generator aus, die in ein Formulartemplate als Bild eingebunden werden kann. Mit dem neuen Platzhalter {{vtCaptchaSecret}} lässt sich der Zufallscode ausgeben, den der Captcha-Generator beim letzten Aufruf erzeugt hat.

  • [NEW] Der vtMedia-Platzhalter erlaubt jetzt, mit Hilfe eines zweiten Parameters die Größe zu bestimmen, in der das Bild ausgegeben wird, zum Beispiel: {{vtMedia: Bild1, w300}}.

  • [NEW] Der vtLink-Platzhalter stellt jetzt einen neuen Parameter "-urltype" zur Verfügung, um die Art der erzeugten URL zu beeinflussen. Mögliche Werte sind "short" (Kurz-URL nur mit Seiten-ID) und "readable" (gut lesbare URL mit Seitenpfad und -name).

  • [NEW] Es ist jetzt möglich, das Ergebnis einer Index-Suche auf vollständige Wortübereinstimmungen zu beschränken (im Gegensatz zu Übereinstimmung bei den Wortanfängen). Dazu muss in der vtSelect-Anweisung der neue Parameter "-mode" mit dem Wert "words" angegeben werden. Jeder andere Wert hat keine Auswirkung.

  • [NEW] Man kann jetzt verhindern, dass ein per link-Element eingebundenes Stylesheet zur Darstellung im HTML-Editor verwendet wird, indem man beim link-Element das class-Attribut auf "vtignore" setzt.

  • [CHANGED] TinyMCE auf Version 3.4.7 aktualisiert

  • [FIXED] Beim Erstellen eines neuen Benutzers (Pro/Master) war das Eingabefeld für den Benutzernamen auf eine Länge von 20 Zeichen begrenzt, obwohl 120 Zeichen erlaubt sind.

  • [FIXED] Das rekursive Löschen eines Verzeichnisses per "ftp"-Aktion schlug fehl, wenn das Verzeichnis leer war.

  • [FIXED] Unter manchen neueren mySQL-Versionen konnte Virthos keine Index-Tabelle erstellen, was dazu führte, dass das (endgültige) Löschen von Seiten nicht funktionierte.

  • [FIXED] Wenn bei einer Indexsuche ein "ae", "oe" oder "ue" im Suchbegriff vorkam, schlug die Suche fehl bzw. ergab falsche Treffer.

  • [FIXED] Wenn das Masterpasswort bestimmte Satz- oder Sonderzeichen enthielt, konnte man sich nach der Installation bzw. nach einer Datenwiederherstellung nicht ins Redaktionssystem einloggen.

v3.0.4 (Oktober 2011)

  • [NEW] Cookie-gestütztes Sessionmanagement eingeführt. Wenn der Webbrowser eines Besuchers Cookies unterstützt, wird die Session-ID jetzt per Cookie übertragen und nicht mehr in die URL eingebunden. Dies sorgt für kürzere URLs und erlaubt das Navigieren zwischen Virthos- und Nicht-Virthos-Seiten, ohne dass der Sessionbezug verlorengeht. Der Name des Cookies lautet "vtsid" und enthält neben der Session-ID auch den Sessioncode (durch einen Bindestrich getrennt). Wenn beim Einloggen das Redaktionssystem gestartet wird, setzt Virthos einen zusätzlichen Cookie namens "vtignoresid", der den Cookiemechanismus vorübergehend außer Kraft setzt. Dadurch ist es möglich, sich im gleichen Browser mit unterschiedlichen Namen anzumelden bzw. zu prüfen, wie eine Seite für nicht-angemeldete Benutzer dargestellt wird. Beide Cookies werden beim Beenden des Browsers automatisch gelöscht.

  • [NEW] Der vtResult-Platzhalter erlaubt jetzt die Verwendung von Ausgabefiltern, z. B.: {{vtResult | num:2}}.

  • [NEW] Die Anzahl der Seiten, die in der Strukturansicht oder in der Trefferliste der Suchfunktion gleichzeitig sichtbar sind, lässt sich jetzt über ein Auswahlmenü unterhalb der Liste anpassen.

  • [NEW] Die Seite mit den FTP-Einstellungen enthält jetzt Hinweise und Beispiele sowie eine Onlinehilfe, die das Ausfüllen erleichtern.

  • [NEW] Es ist jetzt möglich, innerhalb eines Templatepakets erweiterte Benutzereigenschaften zu definieren. Dazu muss im Paket eine Datei "__pkginfo.html" erstellt werden, die per VirthosTalk eine Variable "vtUserFields" setzt. Als Wert muss ein Json-String übergeben werden, der in seinem Aufbau dem entspricht, was vtEditFields ausgibt. Beispiel: {{vtSet: vtUserFields='[ {"name":"Feld1", "type":"short", "subtype":"5"}, {"name":"Feld2"} ]'}} Im Augenblick wird als Feldtyp nur "short" unterstützt (einzeiliges Eingabefeld mit Länge "subtype"). Alle anderen Typen werden als textarea mit 50 Spalten und 5 Zeilen dargestellt.

  • [NEW] Es stehen drei neue Platzhalter zur Verfügung, um das Ergebnis einer Datenbankoperation abzufragen: vtDbAffectedRows (Zahl der betroffenen Reihen), vtDbErrNo (Fehlernummer), vtDbError (Fehlermeldung).

  • [NEW] Es steht ein neuer Platzhalter "vtDbRow" zur Verfügung, der innerhalb eines vtDbLoop-Blocks alle Felder des aktuellen Datensatzes in JSON-Syntax ausgibt. Dies ermöglicht es insbesondere, den kompletten Datensatz mittels vtSet einer Variablen zuzuweisen, um später in einem anderen Kontext wieder darauf zugreifen zu können. Man kann vtDbRow auch als Synonym für vtDbField verwenden, indem man einen Feldnamen als Parameter übergibt. (Umgekehrt kann vtDbField jetzt auch ohne Parameter verwendet werden.)

  • [NEW] Es steht jetzt ein neuer Ausgabefilter "list" zur Verfügung. Mit ihm lässt sich ein Wert durch die Textbeschreibung ersetzen, die ihm in einer bestimmten Werteliste zugewiesen ist. Die Werteliste muss mittels vtSet gesetzt sein, und ihr Name muss im Ausgabefilter als Parameter übergeben werden (z. B. "{{Tag | list:Wochentage}}" )

  • [NEW] Für die vtDo-Anweisung steht die neue Aktion "ftp" zur Verfügung, die das Ausführen von FTP-Befehlen ermöglicht. Der gewünschte Befehl wird mit dem Parameter "-cmd" angegeben. Verfügbare Befehle sind: cdup, chdir, chmod, delete, mkdir, nlist und rename. Die Datei oder der Ordner, auf den sie sich jeweils beziehen, wird mit dem Parameter "-remote" angegeben. Weitere mögliche Parameter sind "-mode" (Modus für chmod als Oktalzahl), "-recursive" (wenn 1, dann löscht delete auch nicht-leere Verzeichnisse) und "-new" (neuer Name bzw. Pfad für rename). Bei erfolgreicher Ausführung liefert die Aktion den Wert 1 zurück bzw. (bei nlist) die Liste der Dateien und Ordner. Wenn ein Fehler auftritt, ist das Ergebnis ein negativer Zahlenwert.

  • [NEW] In der Strukturansicht und in der Trefferliste der Suchfunktion kann man jetzt das Löschen von geschützten Seiten erzwingen, indem man beim Anklicken des Papierkorbsymbols die Alt-Taste gedrückt hält.

  • [NEW] In der Virthos-API steht die neue Funktion ftpConnect() zur Verfügung, die den Aufbau einer FTP-Verbindung zum Webserver ermöglicht. Diese Verbindung würde zwar auch automatisch hergestellt bei Verwendung von vtdo() mit der Aktion "ftp", aber durch den expliziten Aufruf können Fehler leichter abgefangen werden. Wenn der Verbindungsaufbau misslingt, liefert die Funktion einen negativen Zahlenwert zurück, ansonsten die Verbindungsressource, die in nachfolgenden PHP-FTP-Funktionen genutzt werden kann.

  • [NEW] In der Virthos-API steht jetzt die neue Funktion vtresult() zur Verfügung, um auf das Ergebnis der letzten Aktion (vtDo) bzw. Berechnung (vtCalc) zugreifen zu können.

  • [NEW] In Virthos Master stehen jetzt eine neue Anweisung und ein neuer Platzhalter für den Zugriff auf mySQL-Datenbanken zur Verfügung. Die vtDBQuery-Anweisung ermöglich das Ausführen von mySQL-Abfragen, wobei man hier im Gegensatz zu vtDBSelect nicht auf SELECT-Abfragen beschränkt ist. Um den Schreibaufwand für die Abfragen zu verringern, kann man mit {{vtDBTable: xxx}} den Namen der Tabelle xxx mit vorangestelltem Präfix und Backticks davor und dahinter ausgeben lassen.

  • [NEW] Man kann in vtIf, vtElseIf und vtExit jetzt beliebig viele Bedingungen mit logischem UND (".and.") bzw. ODER (".or.") verknüpfen. Bei gemischter Verwendung haben die UND-Verknüpfungen höheres Gewicht, das heisst, der Ausdruck "wahr UND falsch ODER wahr" wird als wahr ausgewertet.

  • [NEW] Man kann jetzt in der vtRepeat-Anweisung die Verwendung des Zeilenumbruchs als Trennzeichen erzwingen, indem man der Parameterliste ein Prozentzeichen (%) voranstellt.

  • [NEW] Man kann jetzt jede PHP-Funktion, die einen einzelnen Wert als Parameter akzeptiert, als Ausgabefilter verwenden. Beispiel: {{vtGet: Headline | strtoupper}}

  • [NEW] Mit vtFetch steht ein neuer Platzhalter zur Verfügung, der den Inhalt eines indirekt bezeichneten freien Platzhalters ausgibt. Der Name des freien Platzhalters muss zuvor mittels vtSet in einer Variablen gespeichert werden, und der Name dieser Variablen wird als Parameter an vtFetch übergeben.

  • [NEW] Neue Aktionen für das Registrieren (register) und Aktivieren (activate) von Benutzerkonten bereitgestellt.

  • [NEW] Neuen Platzhaltertyp "non_editable" eingeführt. Dieser bewirkt, dass für den betreffenden Platzhalter beim Erstellen und Bearbeiten einer Seite kein Formularfeld eingeblendet wird, so dass der Inhalt nicht manuell gesetzt bzw. geändert werden kann. Gedacht ist dies in erster Linie für die Master-Version, wenn ein Platzhalterwert z. B. mittels "onchange"-Handler automatisch gesetzt wird.

  • [NEW] Wenn eine relogin-Aktion fehlschlägt, wird beim Aufruf der vtrelogin-Methode jetzt der URL-Parameter "-error" auf 1 gesetzt (analog zur login-Aktion).

  • [NEW] Wenn man im Rahmen einer update-Aktion den Seitennamen ändern will (mit -properties[name]="xxx"), kann man jetzt durch den zusätzlichen Parameter -properties[force]="1" das Umbenennen erzwingen, für den Fall, dass die Seite gegen Verschieben und Umbenennen geschützt ist.

  • [CHANGED] Bei der delete-Aktion kann jetzt mit dem neuen Parameter "-force" (=1) das Löschen von Seiten erzwungen werden, auch wenn Seiten gegen Verschieben und Umbenennen geschützt sind.

  • [CHANGED] Bei einer Indexsuche werden jetzt unterschiedliche Schreibweisen von Umlauten und Akzentbuchstaben toleriert. Die Suche nach "können" findet also auch "koennen", "konnen" etc. und umgekehrt.

  • [CHANGED] Bei gemischten logischen Verknüpfungen in vtIf, vtElseIf und vtExit haben die ODER-Verknüpfungen jetzt höheres Gewicht als die UND-Verknüpfungen. Der Ausdruck "falsch UND wahr ODER wahr" wird jetzt als wahr ausgewertet. Das geänderte Verhalten eröffnet breitere Möglichkeiten, da sich UND-Verknüpfungen bei Bedarf auch durch ein Verschachteln von vtIf-Konstrukten ausdrücken lassen.

  • [CHANGED] Bei Verwendung des vtFtpCheck-Platzhalters werden die FTP-Daten jetzt nicht mehr jedesmal neu geprüft. Stattdessen wird das Ergebnis der letzten Prüfung bei Bedarf wieder zurückgeliefert. Nur wenn sich die FTP-Daten ändern oder wenn man unter "Einstellungen > FTP-Daten" auf "erneut prüfen" klickt, wird eine erneute Prüfung ausgeführt.

  • [CHANGED] Beim Anlegen von neuen Benutzern sind jetzt auch Punkte und Ampersandzeichen (@) im Benutzernamen erlaubt, das heißt, man kann jetzt auch E-Mail-Adressen als Benutzernamen verwenden.

  • [CHANGED] Beim Definieren von Platzhaltertypen wird ein etwaiger Parameter jetzt geparst, so dass insbesondere bei select- und checkbox-Platzhaltern die Werteliste auch mittels vtGet-Platzhalter o. ä. angegeben werden kann. Das Parsen unterbleibt, wenn der Parameter mit "[" beginnt, weil dann eine JSON-Syntax angenommen wird, bei der die geschweiften Klammern keine VirthosTalk-Platzhalter kennzeichnen.

  • [CHANGED] Das Freischalten einer Virthos-Umgebung kann jetzt von jedem Benutzer mit Administratorrechten vorgenommen werden, nicht nur vom Masterbenutzer. Außerdem ist der Texthinweis zur Lizenzbestellung jetzt verständlicher formuliert.

  • [CHANGED] Das vtFetch-Konstrukt ist jetzt eine Anweisung und kein Platzhalter mehr. Das Ergebnis kann über vtResult ausgegeben oder weiterverwendet werden.

  • [CHANGED] Das Ändern der Gruppenzugehörigkeit eines Benutzers mittels update-Aktion ist jetzt auch "inline" mit Hilfe einer vtDo-Anweisung möglich. Der Anweisung muss in diesem Fall ein vtAsAdmin-Befehl vorangehen.

  • [CHANGED] Der vtGet-Platzhalter erlaubt jetzt die Angabe von "escaped" als zweiten Parameter, um allen einfachen Anführungszeichen einen Backslash voranzustellen.

  • [CHANGED] Der vtGlobal-Platzhalter erlaubt jetzt ebenfalls die Verwendung eines zusätzlichen Formatparameters wie "raw", "escaped" etc.

  • [CHANGED] Der vtSession-Platzhalter erlaubt jetzt die Angabe einer Formatbezeichnung (html, escaped etc.) als zweiten Parameter. Wenn nichts angegeben ist, wird "raw" als Format angenommen. (Dies entspricht dem bisherigen Verhalten.)

  • [CHANGED] Der vtUser-Platzhalter erlaubt jetzt ebenfalls die Verwendung von Ausgabefiltern.

  • [CHANGED] Die Gruppenzugehörigkeit von Benutzern lässt sich jetzt nur noch von einem Benutzer mit Administratorrecht ändern.

  • [CHANGED] Die Methoden vtregister und vtabout lassen sich jetzt von nicht-eingeloggten Benutzern auch dann aufrufen, wenn der Zugang für Gäste gesperrt ist.

  • [CHANGED] Die vtRepeat-Anweisung erlaubt es jetzt, das gewünschte Listentrennzeichen explizit anzugeben, indem man es der Liste voranstellt. Wenn in der Liste sowohl Kommas als auch Pipesymbole vorkommen, wird das Pipesymbol als Trennzeichen interpretiert, aber wenn man vor die Liste ein Komma setzt, kann man diesen Automatismus umgehen. Das gleiche gilt, wenn die Liste sowohl Zeilenumbrüche als auch Kommas bzw. Pipesymbole enthält.

  • [CHANGED] Es ist jetzt möglich, unter "Einstellungen > FTP-Daten" auch solche FTP-Zugangsdaten zu hinterlegen, bei denen der FTP-Benutzer keinen Zugriff auf das Stammverzeichnis des Webservers hat. Für solche Fälle steht jetzt ein zusätzliches Eingabefeld "Basis-URL" zur Verfügung, in das man die URL des Basisverzeichnisses eintragen kann, das dem FTP-Benutzer zugeordnet ist (z. B. "/~username").

  • [CHANGED] In HTML-Feldern vom Typ "extended" sind jetzt auch iframe-Elemente erlaubt. Diese können über die Quellcodeansicht eingebunden werden.

  • [CHANGED] Unter einer URL mit "www" am Anfang arbeitet Virthos jetzt auch dann als Vollversion, wenn beim Freischalten dieselbe URL ohne "www" angegeben wurde. Im umgekehrten Fall gilt (schon seit langem) dasselbe.

  • [CHANGED] Wenn bei der createUser-Aktion der Parameter "-target" weggelassen wird, wird der Benutzer jetzt automatisch in der Gruppe "Alle" angelegt und nicht in der aktuellen Seite.

  • [CHANGED] Wenn das Ergebnis der letzten Aktion (vtDo) oder Berechnung (vtCalc) ein Array ist, gibt der vtResult-Platzhalter dieses jetzt als JSON-String aus.

  • [CHANGED] Wenn kein Session-Cookie gesetzt ist, prüft Virthos beim Aufruf einer URL mit -ses-Parameter jetzt, ob die Anfrage von der IP-Adresse stammt, unter der die Session gestartet wurde. Falls nicht, wird automatisch eine neue Session gestartet. Auf diese Weise kann es nicht mehr passieren, dass mehrere Benutzer unabhängig voneinander dieselbe Session-ID verwenden, nur weil diese versehentlich in einem Link mitgesendet oder von einem Suchmaschinenroboter katalogisiert worden ist.

  • [CHANGED] Wenn man als Masterbenutzer oder Administrator eine neue Seite anlegt, bekommt diese jetzt den Eigentümer der übergeordneten Seite zugeordnet. Bislang galt dies nur, wenn man Mitglieder der Gruppe war, die der übergeordneten Seite als Eigentümer zugeordnet war.

  • [CHANGED] Wenn man der delete-Aktion ausschließlich Systemseiten als Objekte übergibt, führt dies jetzt zu keinem Fehler mehr, sondern die Aktion liefert als Ergebnis "0" zurück. Nicht existierende Seiten werden jetzt stillschweigend übergangen.

  • [CHANGED] Wenn man die API-Funktion vtdo() verwendet, kann man die gewünschte Aktion ("-act") und die zugehörigen Argumente nun auch in EINEM Parameter als Array übergeben. Die Schreibweise mit der Aktion als erstem und den Argumenten als zweitem Parameter funktioniert aber nach wie vor.

  • [CHANGED] Wenn man die Platzhalter vtItem und vtResult ohne Parameter, aber mit Ausgabefiltern verwenden möchte, kann man den Doppelpunkt hinter dem Platzhalternamen jetzt weglassen, z. B.: {{vtResult | num:2}}

  • [CHANGED] Wenn man mit vtPostValue eine Variable ausgibt, die als Array definiert ist, wird das Trennzeichen zur Abgrenzung der Listenelemente jetzt in Abhängigkeit vom Listeninhalt gewählt. Nur wenn die Elemente kein Komma enthalten, wird das Komma als Trennzeichen verwendet, ansonsten das Pipesymbol, falls dieses nicht in den Elementen vorkommt, oder als letzte Möglichkeit das Return-Zeichen.

  • [FIXED] Auf manchen Webservern wurde unter "Einstellungen > FTP-Daten" auch bei korrekt hinterlegten Angaben die Fehlermeldung eingeblendet "Keine Datenübertragung möglich. Bitte überprüfen Sie das Stammverzeichnis und die Berechtigungen des FTP-Benutzers." Ursache dafür war, dass manche Provider die PHP-Funktion tmpfile() auf Ihren Rechnern deaktiviert haben.

  • [FIXED] Bei einer "ftp"-Aktion mit "delete"-Kommando und aktivierter "recursive"-Option konnte es auf manchen FTP-Servern (z. B. bei 1&1) passieren, dass auch Daten außerhalb des Zielverzeichnisses gelöscht wurden.

  • [FIXED] Bei einer "ftp"-Aktion mit "delete"-Kommando und aktivierter "recursive"-Option wurde als Ergebnis stets der Fehler -4 zurückgeliefert, auch wenn der Befehl erfolgreich ausgeführt werden konnte.

  • [FIXED] Bei einer Indexsuche (vtSelect mit -search-Parameter) führte die Verwendung von seitentypspezifischen Sortierfeldern stets zu einem leeren Suchergebnis.

  • [FIXED] Bei einer Indexsuche (vtSelect mit -search-Parameter) wurden keine Wörter gefunden, die auf ein Satz- oder Sonderzeichen folgten.

  • [FIXED] Beim Verwenden der vtRedirect-Anweisung wurden Ampersand-Zeichen in der URL fälschlicherweise in HTML-Entitäten umgesetzt.

  • [FIXED] Das rekursive Löschen per ftp-Aktion schlug bei manchen FTP-Konfigurationen fehl.

  • [FIXED] Der Button "Werte vorschlagen" unter "Einstellungen > FTP-Daten" funktionierte nur in der Master-, nicht in der Basic- und Pro-Version.

  • [FIXED] Der vtFtpCheck-Platzhalter erzeugte ein PHP-Warnung, wenn das FTP-Stammverzeichnis nicht korrekt angegeben war.

  • [FIXED] Der vtResult-Platzhalter gab stets ein leeres Ergebnis aus, wenn er ohne Ausgabefilter verwendet wurde.

  • [FIXED] Eine Index-Suche schlug stets fehl, wenn am Anfang des Suchbegriffs ein nicht-alphanumerisches Zeichen stand.

  • [FIXED] Eine vtSelect-Anweisung mit "type"-Angabe, bei der in der Filterbedingung oder Sortierung ein freier Platzhalter verwendet wurde, selektierte dieselbe Seite mehrfach, wenn es mehrere Übersetzungen für die Seite gab.

  • [FIXED] Im Rahmen einer cookie-basierten Session funktionierten die Portionierungsmenüs nicht mehr. Beim Klick auf eine der Portionsnummern wurde man stets zur Startseite geleitet.

  • [FIXED] Im Rahmen von cookie-basierten Sessions wurden bis auf wenige Ausnahmen keine direkten Aktionen ausgeführt. Um das Problem zu lösen, musste der Mechanismus, der versehentliche Doppelausführungen verhindern hilft, für cookie-basierte Sessions deaktiviert werden.

  • [FIXED] Innerhalb einer cookie-basierten Session funktionierte die updateSession-Aktion nur ein einziges Mal. Erneute Aufrufe führten zu keiner Änderung der Sessionvariablen mehr.

  • [FIXED] Kleinere Fehler und Unsauberkeiten im Zusammenhang mit den Platzhaltertypen "checkbox" und "select" beseitigt.

  • [FIXED] Unter "Einstellungen > Lizenz" wurde stets der Hinweis ausgegeben, dass es sich um eine Vollversion handelt, auch wenn Virthos tatsächlich im Demomodus arbeitete.

  • [FIXED] Unter mySQL 5.5 ließ sich die restore-Aktion nicht ausführen (Fehler 1022), so dass Virthos nach einer Neuinstallation unbenutzbar war.

  • [FIXED] Wenn die Session eines eingeloggten Benutzers wegen Inaktivität abgelaufen war, war es wegen des neuen Cookie-Mechanismus nicht möglich, die eingeblendete Anmeldemaske zu verlassen, ohne sich erneut einzuloggen. Jetzt gibt es einen neuen "Abbrechen"-Button, der den Session-Cookie löscht und zur Standardmethode weiterleitet.

  • [FIXED] Wenn die Zugriffsrechte für das Verzeichnis data/database nicht auf 777 gesetzt waren, wurde die Erstinstallation stets mit einer Fehlermeldung abgebrochen, selbst wenn das Verzeichnis tatsächlich von PHP beschreibbar war (z. B. unter SuPHP oder wegen entsprechender Eigentümer- oder Gruppenzuordnung).

  • [FIXED] Wenn in der config.php-Datei keine FTP-Zugangsdaten hinterlegt waren, ließ sich die Seite "Einstellungen > FTP-Daten" nicht bearbeiten. Außerdem war der vorgeschlagene Wert für das Stammverzeichnis mitunter fehlerhaft.

  • [FIXED] Wenn man den vtLink-Platzhalter mit zusätzlichen (Nicht-Virthos-)Parametern verwendete, wurden Leerzeichen innerhalb dieser Parameter durch "+" statt durch "%20" ersetzt, was auf neueren Servern zu Problemen führen konnte.

  • [FIXED] Wenn man die Daten des aktuellen Benutzers per update-Aktion änderte, gab der vtUser-Platzhalter im aktuellen Skriptaufruf immer noch die alten Daten aus.

  • [FIXED] Wenn man für eine Benutzergruppe eine spezielle Startmethode festgelegt hatte, wurde diese beim erneuten Bearbeiten der Gruppeneigenschaften nicht angezeigt bzw. vorausgewählt.

  • [FIXED] Wenn man innerhalb einer seitentyp-bezogenen vtLoop-Schleife einen HTML-Platzhalter verwendete und zu dem Seitentyp kein explizites Template existierte, dann kam beim Hinzufügen einer neuen Subseite die gesamte Datenbankstruktur durcheinander, wenn man zuvor den Dateibrowser im HTML-Editor benutzt hatte.

  • [FIXED] Wenn man unter "Vorgaben" die Option "untergeordnete Seiten immer in Navigation anzeigen" änderte, wurde der Inhalt des Navigationsbereichs nicht automatisch neu geladen.

  • [FIXED] Wenn PHP auf dem Server ohne FTP-Erweiterung installiert wurde, führt dies jetzt nicht mehr zu einem fatalen Fehler bei Verwendung des Platzhalters {{vtFtpCheck}} oder der "ftp"-Aktion.

v3.0.3 (November 2010)

  • [NEW] Es ist jetzt möglich, sich den kompilierten PHP-Code einer Methode ausgeben zu lassen, indem man in der Abfrage den URL-Parameter "-phpsource" setzt. Falls die Abfrage eine explizite (Nicht-Inline-)Aktion enthält, wird diese vor dem Ausliefern des Codes noch ausgeführt.

  • [NEW] In der Master-Version steht jetzt ein Warenkorbmodul zur Verfügung, das über den Platzhalter "vtCart" und die Aktionen "addToCart", "removeFromCart", "changeCartItem", "resetCart" und "updateCart" genutzt werden kann.

  • [NEW] Neuen URL-Parameter "-raw" eingeführt, mit dem sichergestellt werden kann, dass Virthos den ausgelieferten HTML-Code nicht ergänzt oder verändert. Insbesondere lässt sich damit verhindern, dass zusätzlicher JavaScript-Code zur Aktualisierung des Redaktionssystem oder, in Demoumgebungen, ein Promobanner eingebunden wird.

  • [CHANGED] Die Buttons zum Anlegen eines neuen Benutzers oder einer neuen Gruppe sind jetzt auch aktiv, wenn man gerade einen Benutzer aufgerufen hat. Bislang musst man immer erst zurück zur Gruppe wechseln, um einen neuen Benutzer anlegen zu können.

  • [FIXED] Beim Aufruf der XML-Exportfunktion trat ein "Parse Error" auf.

  • [FIXED] Beim Bearbeiten einer Seite wurden die Namen von obsoleten Feldern nicht mehr in kursiver Schrift dargestellt.

  • [FIXED] Beim Löschen der Virthos-Datenbank mittels dbdestroy-Aktion trat ein Fehler auf, wenn Seiten existierten, in deren Templatenamen ein Bindestrich oder andere nicht-alphanumerische Zeichen vorkamen.

  • [FIXED] Das Hochladen von Flash- und anderen Multimediadateien über den TinyMCE-Editor funktionierte nicht.

  • [FIXED] Wenn in einem Template ein Zeilenumbruch unmittelbar auf ein VirthosTalk-Konstrukt folgte, wurde er gelöscht (eingeführt in r452).

  • [FIXED] Wenn man beim Erstellen einer Seite innerhalb eines HTML-Feldes eine Datei (Bild, PDF o. ä.) hochlud, wurde nach dem Speichern im Kopf des Redaktionssystems ein falscher Seitenpfad eingeblendet.

  • [FIXED] Wenn man mittels {{vtSet: Variable[]="Wert"}} eine Liste erzeugt hat, wurden Umlaute in den Listeneinträgen falsch codiert.

v3.0.2 (Oktober 2010)

  • [NEW] Es steht jetzt die neue Aktion "pwchange" zur Verfügung, mit der man das Passwort für den aktuell eingeloggten Benutzer ändern kann. Das neue Passwort ("pwnew") muss einmal wiederholt werden ("pwcheck"), und das bestehende Passwort ("pwold") muss korrekt angegeben werden. Im Erfolgsfall liefert die Aktion 1 zurück, ansonsten -1 (kein Benutzer oder Systembenutzer), -2 (Argumente unvollständig), -3 (Passwortwiederholung inkorrekt), -4 (altes Passwort inkorrekt) oder -5 (unbekannter Datenbankfehler).

  • [NEW] Es steht jetzt die neue Aktion "pwreset" zur Verfügung, mit der man das Passwort für einen bestimmten Benutzer (Parameter "username") zurücksetzen kann. Das neue Passwort wird in Form einer Zufallszeichenkette erzeugt und dem betreffenden Benutzer per E-Mail zugesendet (Ergebnis 1). Falls der Benutzername leer ist, nicht existiert oder keine E-Mail-Adresse hinterlegt ist, liefert die Aktion als Ergebnis -1, -2 bzw. -3 zurück, im Falle eines Mail-Fehlers -4.

  • [NEW] Mit dem neuen Platzhalter {{vtFtpCheck}} lässt sich prüfen, ob die Voraussetzungen erfüllt sind, damit Virthos per FTP auf sein eigenes Installationsverzeichnis zugreifen kann. Der Platzhalter liefert im Erfolgsfall 1, im Fehlerfall einen Wert kleiner Null zurück.

  • [NEW] Unter "Einstellungen > Systemeinstellungen" steht jetzt eine neue Seite namens "FTP-Daten" zur Verfügung, über die sich die FTP-Zugangsdaten der Virthos-Umgebung festlegen lassen. Die Angaben, die an dieser Stelle gemacht werden, überschreiben evtl. hinterlegte Werte in der config.php-Datei.

  • [CHANGED] Die Buttons zum Anlegen eines neuen Benutzers oder einer neuen Gruppe sind jetzt auch aktiv, wenn gerade ein Benutzer aufgerufen ist. Bislang musst man immer erst zurück zur Gruppe wechseln, um einen neuen Benutzer anlegen zu können.

  • [CHANGED] Die Eingabemasken der Benutzerverwaltung wurden übersichtlicher und benutzerfreundlicher gestaltet. Neu hinzugekommen ist die Möglichkeit, ein Benutzerkonto als "gemeinsam genutzten Zugang" zu kennzeichnen. Das Feld "E-Mail" wird in diesem Fall ausgeblendet, und die neue pwchange-Aktion schlägt bei einem solchen Benutzer fehl.

  • [CHANGED] In der Master-Version ist es jetzt möglich, PHP-Blöcke mit der Schreibweise "" in den Quellcode von Templates einzubinden. Dadurch können die PHP-Werkzeuge, die manche HTML-Editoren bereitstellen, auch bei der Arbeit mit Virthos-Templates genutzt werden (was bei vtCode-Anweisung in der Regel nicht der Fall ist).

  • [FIXED] Auf manchen Webservern ließ sich eine hochgeladene Datei nicht mehr herunterladen, wenn in ihrem Namen ein Umlaut oder Sonderzeichen vorkam.

  • [FIXED] Eine Subseitenangabe nach Positionsnummer (z. B. {{vtUse:#1}} ) funktionierte nicht, wenn die Containerseite nach einem seitentyp-spezifischen Feld sortiert war.

  • [FIXED] In der Benutzerverwaltung wurde beim Verlassen des Bearbeitenformulars stets eine Bestätigung verlangt, auch wenn man gar keine Werte geändert hatte.

  • [FIXED] In manchen Browsern war es aufgrund eines JavaScript-Fehlers nicht möglich, die Lizenzvereinbarungen zu akzeptieren, die beim ersten Start von Virthos eingeblendet werden.

  • [FIXED] Paste-Aktion funktionierte nicht mehr, d. h. der Inhalt des Klemmbretts ließ sich nicht mehr an anderer Stelle einfügen.

  • [FIXED] Wenn als Sortierfeld für eine Seite ein seitentypspezifisches Feld ausgewählt war, wurden bei Verwendung von vtLoop nur noch Seiten dieses Typs aufgelistet. Seiten, die nicht vom angegebenen Typ sind, werden jetzt am Ende der Liste mit aufgeführt.

  • [FIXED] Wenn eine Seite versehentlich ohne Namen erstellt wurde, gab es keine (einfache) Möglichkeit mehr, diese über den Navigationsbaum oder die Strukturansicht aufzurufen. Der vtName-Platzhalter ist jetzt dahingehend angepasst, dass er einen Namen automatisch aus Seitentyp und ID erzeugt, falls keiner in der Datenbank hinterlegt ist.

  • [FIXED] Wenn für eine Containerseite ein seitentypspezifisches Sortierfeld eingestellt war und bei einer ihrer Subseiten im Sortierfeld ein Apostroph enthalten war, funktionierten Verweise auf deren Nachbarseiten nicht ({{vtLink:<}} bzw. {{vtLink:>}}).

v3.0.1 (August 2010)

  • Kleine Korrekturen an mail-Aktion:

  • Skriptpfad enthält jetzt auch Protokollpräfix ("http://")

  • "X-Virthos-Method"-Header wird jetzt korrekt gesetzt

  • Strings werden jetzt als Idiome statt als Konstanten definiert

  • TinyMCE-Konfiguration "extended" um eine Liste der validen HTML-Elemente ergänzt. Gegenüber der Standardliste sind type- und value-Attribute für ul- und li-Elemente hinzugekommen.

  • Whitespace am Anfang der Dateien entfernt, weil der den Diff-Algorithmus durcheinanderbringt. Außerdem Einrückungen korrigiert.

  • Kosmetik; Breite des sortValue-Feldes umdefiniert, damit auch in Safari vier Ziffern sichtbar sind

  • merging changes of trunk r248:r289 to branch "cookie-sessions"

  • nicht mehr benötigte Dateien aus dem Ressourcenverzeichnis entfernt; Referenzen auf dummy.gif durch solche auf clear.gif ersetzt

  • Bugfix: Bei einer update-Aktion auf den aktuellen Benutzer gab vtUser im Rahmen des aktuellen Requests noch die alten Benutzerdaten aus.

  • Bugfix: Zu einer Seite hinzugefügte Dateien ließen sich nachträglich nicht mehr entfernen, weil die zugehörige Checkbox fehlte

  • Optimierungen für Content-Tabelle durchgeführt; wichtige Felder indiziert und z. T. von TEXT auf VARCHAR umgestellt; im Feld "path" wird der Index nur über die ersten 255 Zeichen aufgebaut, weil dies in älteren mySQL-Versionen offenbar das Maximum darstellt

  • baseURL-Parameter in Beispiel-Konfigurationsdateien eingebaut

  • Bugfix: vtCurrentPortion funktionierte nur in der Debug-Version wg. eines Verschlüsselungsproblems

  • Neu: Möglichkeit eingeführt, in Pro und Master ein seitentyp-spezifisches Sortierfeld für eine Seite zu definieren. Die Definition geschieht nach dem Schema "typ.field", also zum Beispiel "image.title". Derzeit steht noch kein Interface zur Verfügung, um diese Definition vorzunehmen, das heißt, sie kann nur durch eigene Formulare bzw. Inline-Aktionen erfolgen. In vtInfo wird eine solche Festlegung aber korrekt angezeigt und bleibt auch erhalten, wenn man das Formular (mit sonstigen Änderungen) speichert.

  • Nachtrag zum letzten Commit: Es ist jetzt möglich, direkt in vtLoop die Parameter -sortfield und -sortorder zu verwenden. Man braucht also nicht extra ein vtSelect drumherum zu packen.

  • Bugfix: Wenn in vtLoop ein Seitentyp als Parameter angegeben war, wurde immer nach Erstellungsdatum sortiert, unabhängig von Seitenvo

  • Bugfix: Wenn beim Virthos-Aufruf keine Subdomain (z. B. "www") angegeben war, ließen sich keine Cookies setzen.

  • Obstacle-Skript angepasst, damit es keine Probleme beim Verarbeiten von Klassendefinitionen (Objekten) gibt.

  • Neuen Platzhaltertyp "short" eingeführt. Dieser verhält sich wie ein Standard-Platzhalter, wird aber in der vtedit- bzw. vtnew-Methode als einzeiliges Eingabefeld (statt als Textarea) dargestellt.

  • Beim Aktivieren einer Virthos-Umgebung wird jetzt die Möglichkeit abgefangen, dass die Funktion fsockopen deaktiviert ist, so dass der Benutzer eine reguläre Fehlermeldung erhält. Bislang schlug die Aktivierung fehl, ohne dass es eine Rückmeldung gab.

  • [NEW] Man kann jetzt mittels vtSet und vtGet auch Objekte und Listen komfortabel handhaben.

    # Objekteigenschaften setzen:  
    {{vtSet: Objekt[name]="Mein Name", Objekt[id]="123"}}
    {{vtGet: Objekt}} ==> {"name": "Mein Name", "id": "123"}    
    
    # Element an eine Liste anhängen:
    {{vtSet: Liste1[]="element1", Liste[]="element2"}}
    {{vtGet: Liste1}} ==> [element1,element2]
    
    {{vtSet: Liste2[]="{vtGet:Objekt"}}
    {{vtGet: Liste2}} ==> [{"name": "Mein Name", "id": "123"}]
  • Listen werden von vtGet jetzt generell in eckige Klammern eingeschlossen und Objekte in geschweifte Klammern (JSON-Syntax).

  • [NEW] Einführung eines blockweisen Output-Cachings. Man kann jetzt innerhalb eines Templates mit vtCache und vtEndCache beliebige Blöcke definieren, die auf der Serverfestplatte zwischengespeichert werden sollen. Voraussetzung dafür ist, dass der neue Konfigurationsparameter "pathToCache" ein gültiger Verzeichnispfad hinterlegt ist und in diesem Verzeichnis ein beschreibbares Unterverzeichnis namens "output" existiert.

    {{vtCache: sitemap}}
    {{vtCache: tagesnews, {vtCurrentDate} }}
    {{vtCache: -id="tagesnews", -trigger="{vtCurrentDate}"}}

    Der Parameter "-trigger" ist ein beliebiger Wert, der im Cache mitgespeichert wird. Beim erneuten Aufruf der vtCache-Anweisung wird der gespeicherte Wert mit dem übergebenen Wert verglichen, und nur wenn beide identisch sind, wird auf den Cache zurückgegriffen. Andernfalls wird der Cache neu angelegt.

    Unabhängig vom Trigger kann man jedem Cache mittels "-expires"-Parameter eine Lebensdauer mit auf den Weg geben. Ist diese erreicht, wird der Cache in jedem Fall neu angelegt. Die Angabe erfolgt in Sekunden oder als verbale Beschreibung gemäß strtotime-Syntax.

    TODO: Im Augenblick verlieren alle Caches (unabhängig von Trigger und Lebensdauer) ihre Gültigkeit, sobald ein Benutzer eine Workspace-Sitzung startet. Dieses etwas drakonische Verhalten könnte man sicherlich noch intelligenter gestalten. - Es gibt noch keine automatische Aufräumaktion im Cache-Verzeichnis. im Rahmen der tidy-Aktion sollten alle Cacheblöcke gelöscht werden, deren Lebensdauer überschritten wurde. In diesem Zusammenhang sollte man alle Cacheblöcke, bei denen nicht explizit eine Lebensdauer angegeben ist, mit einer automatischen Zeitbegrenzung versehen.

  • Bugfix: Es war nicht möglich, einer Variablen per vtSet eine JSON-Liste als Wert zuzuweisen bzw. dieser Wert wurde stets als String interpretiert und ließ sich nicht als Liste weiterbearbeiten.

  • [CHANGED] Wenn man eine URL mit mail-Aktion aufruft, wird jetzt nur noch dann eine E-Mail generiert, wenn auch tatsächlich Parameter übergeben werden. Der häufige Fall, dass ein Roboter eine Formular-Aktion ausführt, ohne Daten in das Formular einzutragen, führt jetzt nicht mehr zu den lästigen "leeren" E-Mails.

  • [INTERNAL] Die Abprüfung, ob ein Formular leer abgesendet wurde, funktionierte noch nicht sauber in allen Umgebungen. Grundsätzlich hat die Standard-mail-Aktion noch die Schwäche, dass sich Inhalte nicht als GET-Parameter übergeben lassen.

  • php-web-storage auf Version 0.9.3 upgedatet (behebt Problem mit PHP 5)

  • Über den neuen Konfigurationsparameter "URLOmitLanguage" lässt sich das Sprachkürzel aus den vereinfachten URLs entfernen. Dies ist nur in einsprachigen Umgebungen sinnvoll und erfordert ein entsprechende Rewrite-Direktive in der .htaccess-Datei, zum Beispiel:

    RewriteRule ^([^/]+)$ virthos.php/de/$1

    Dieses Beispiel funktioniert allerdings nur, wenn die Virthos-Seitenpfade keinen Schrägstrich enthalten, also alle Seiten direkt unterhalb der Startseite liegen. Eine andere Möglichkeit wäre:

    RewriteRule ^([^\.]+)$ virthos.php/de/$1

    In diesem Fall würden auch Pfade mit Schrägstrich funktionieren, allerdings dürften in den Seitennamen keine Punkte vorkommen.

    In beiden Fällen ist es nicht mehr möglich, direkt auf andere Serververzeichnisse zu verlinken (ohne Angabe eines Dateinamens) bzw. auf Dateien ohne Endung, weil deren URLs sich nicht von den verkürzten Virthos-URLs unterscheiden lassen.

  • [FIXED] Bei einer update- oder create-Aktion wurden Backslashes innerhalb eines Json-Strings entfernt.

  • [NEW] Neuen Parameter -depth in vtSelect-Anweisung eingeführt. Setzt man diesen auf einen Wert ungleich null, werden nur Seiten selektiert, die der Ursprungsseite direkt untergeordnet sind. Probleme mit Umlauten und Sonderzeichen in JSON-Strings behoben

  • Bugfix: Wenn man den Platzhalter vtItem mit zusätzlichem Parameter verwendet und es sich beim aktuellen Repeat-Wert nicht um ein Objekt handelt, wird jetzt ein Leerstring zurückgeliefert und nicht wie bisher der erste Buchstabe des Repeat-Werts.

  • [NEW] Neuen Platzhalter vtContainerID eingeführt. Dieser gibt die Nummer der übergeordneten Seite aus.

  • [NEW] Die mail-Aktion erlaubt unterstützt jetzt einen neuen Parameter "-charset". Damit lässt sich ein abweichender Zeichensatz einstellen (z. B. "utf-8", Default ist "iso-8859-1"). Sinnvoll ist dies besonders, wenn man eine reine Text-Mail verwendet, bei der man den Inhalt aus einer externen Textdatei einliest.

  • [NEW] Neue Platzhaltertypen "select" und "checkbox" eingeführt. Diese verhalten sich wie gewöhnliche Textplatzhalter, werden in der vtedit- und vtnew-Methode aber als Auswahlliste bzw. Checkbox-Gruppe dargestellt. Als zweiter Parameter muss jeweils eine Werteliste angegeben werden, entweder als einfache Liste oder als Objektliste mit den Objektattributen "value" und "text", zum Beispiel:

    {{Wochentag: select, Montag|Dienstag|Mittwoch }}

    oder

    {{Wochentag: checkbox, [{"value": "1", "text": "Montag"},
                            {"value": "2", "text": "Dienstag"}] }}
  • Neue Aktion "updateSelection" eingeführt. Diese arbeitet wie "setSelection", ändert aber nur die Selektionskriterien, die in der Aktion als Parameter übergeben sind, und lässt alle anderen unverändert.

  • Bei aktivierten magic_quotes werden die Arrays $_GET, $_POST und $_COOKIE jetzt automatisch "ent-slasht".

  • Der Platzhalter vtGet kann jetzt bei Bedarf mit einem zweiten Parameter versehen werden, der das Format angibt (zum Beispiel "escaped").

  • Bugfix: Seit Einführung des URLOmitLanguage-Parameters funktionierten die vereinfachten URLs nicht mehr, wenn URLOmitSeparator deaktiviert war.

  • [FIXED] Beim Aufruf einer Methode, die sich in einem Unterverzeichnis des aktuellen Templatepakets befindet, wird jetzt generell (also auch bei HTML-Methoden) kein Workspace-Update-Skript mehr eingebunden. Dies erleichtert u. a. das Verarbeiten der Rückmeldungen von Ajax-Methoden.

  • Bugfix: Bei Fehlern und am Ende einer dbdestroy-Aktion wurde nur noch eine weiße Seite ohne Inhalt eingeblendet. Ursache war, dass ich in r320 versehentlich zwei Dateien mit Stringdefintionen entfernt hatte, die noch benötigt werden.

  • Bugfix: Button in vtextract-Methode wurde nicht richtig dargestellt (evtl. auch noch in anderen Methoden)

  • Im Platzhalter vtPostValue ist jetzt als zweiter Parameter ebenfalls eine Formatangabe (z. B. "escaped") erlaubt.

  • Workaround: Die gängigen Webbrowser haben die Eigenheit, die erste Leerzeile in einem "textarea"-Element zu verschlucken. Dadurch verschwanden Leerzeilen, die man zu Beginn eines Platzhalters eingegeben hatte, beim nächsten Bearbeiten wieder. Ich habe darum jetzt in die vtedit-Methode eine feste Leerzeile zu Beginn jedes textarea-Elements eingebaut.

  • [FIXED] Der CSV-Import von Benutzerdaten funktioniert unter bestimmten Serverkonfigurationen nicht.

  • [CHANGED] Bei der Eingabe von Aktivierungscode und -URL werden am Anfang und Ende jetzt automatisch Leerzeichen und Zeilenumbrüche entfernt.

  • Aufgeräumt: Nicht mehr verwendeten Aufrufparameter aus ƒgetLicenseType entfernt.

  • [CHANGED] Virthos bindet jetzt automatisch einen HTTP-Header ("X-Powered-By") mit Informationen über die verwendete Virthos-Version und den Lizenzstatus ein. Ein weiterer Header ("X-Processing-Time") gibt die Zahl der Sekunden aus, die für die Verarbeitung der Anfrage benötigt wurde.

  • [FIXED] In der Master-Version wurden die Standard-Header zweimal gesetzt, was aber keine störenden Auswirkungen hatte.

  • [FIXED] vtGetValue und vtPostValue gaben leere Werte aus, wenn die Parameternamen mit Großbuchstaben geschrieben waren

  • [FIXED] Auf manchen Servern schlug die mail-Aktion fehl wegen eines fehlenden Leerzeichens hinter dem Doppelpunkt in einer Header-Zeile.

  • [FIXED] In Safari wurde im "Bearbeiten"-Modus manchmal der TinyMCE-Editor nicht geladen. Nur durch Öffnen des Frames in einem neuen Fenster und Neuladen des Seiteninhalts konnte das Laden erzwungen werden.

  • TinyMCE auf Version 3.3.6 upgedatet. In diesem Zuge habe ich auch die zuletzt entfernten Standard-Plug-ins wieder aufgenommen. Dies erleichtert nicht nur künftige Updates, sondern hilft auch, wenn man in Kundenprojekten bestimmte Plug-ins benötigt, die Virthos nicht standardmäßig aktiviert hat.

  • TinyMCE-Konfigurationen extended und fullpage um "media"-Plug-in erweitert; außerdem werden jetzt beim Initialisieren der komprimierten TinyMCE-Version alle in den Standardkonfigurationen enthaltenen Plug-ins berücksichtigt.

    Die Lösung ist insofern noch unbefriedigend als es nicht möglich ist, in benutzerspezifischen Konfigurationen zusätzliche Plug-ins zu laden, eben weil die Aktivierung in der komprimierten TinyMCE-Version fehlt.

  • [NEW] Es ist jetzt möglich, bei Platzhaltern vom Typ "short" über einen zusätzlichen Parameter die Feldlänge vorzugeben. Beispiel: {{Preis: short, 8}}

  • [NEW] Bei Platzhaltern vom Typ "checkbox" und "select" kann man als zweiten Parameter jetzt auch in Form eine Seitenangabe (numerisch oder als Pfad) übergeben. Virthos baut die Werteliste dann dynamisch auf, mit den Seiten-IDs als "value" und den Seitennamen als "text".

  • Letzte Änderungen an vtedit auf vtnew übertragen.

  • Bereitstellung eines VirthosTalk-Platzhalters zur Hash-Berechnung für künftigen Aktivierungsmechanismus

  • [FIXED] Wenn PHP als CGI-Modul installiert war, wurden der Pfad zum Virthos-Verzeichnis (pathToVirthos) und die Basis-URL (baseURL) nicht korrekt ermittelt, was zu vielfältigen Funktionsstörungen führte.

    In diesem Zuge habe ich als Beitrag zur Codesäuberung die globale Variable $vtRequest komplett entfernt, da diese nur an wenigen Stellen verwendet wurde und fast überall durch $vtConfig bzw. einfache Ausdrücke ersetzt werden konnte.

  • [FIXED] Im Internet Explorer wurde der Textinhalt von Eingabefeldern manchmal unten abgeschnitten.

  • [FIXED] In Safari ab Version 4.1 konnte man das Login-Formular nicht mehr per Return-Taste absenden.

  • [FIXED] In Safari ab Version 4.1 konnte man das Login-Formular nicht mehr per Return-Taste absenden.

  • ƒerror() erlaubt jetzt weitere Argumente, um variable Texte in die Fehlermeldung einzubinden, analog zu ƒgetIdiom()

  • [CHANGED] Beim Neueinrichten der Datenbank wird jetzt zuvor geprüft, ob das database-Verzeichnis beschreibbar ist, um ggf. eine entsprechende Fehlermeldung auszugeben. Die bislang in diesem Fall erscheinende Fehlermeldung ließ keinen Rückschluss darauf zu, warum die restore-Aktion fehlgeschlagen ist. [CHANGED] Beim Neueinrichten der Datenbank wird jetzt auch geprüft, ob die installierte mySQL-Version mindestens 4.0 ist. Andernfalls wird eine Fehlermeldung ausgegeben.

  • [CHANGED] Beim Freischalten der Virthos-Umgebung wird jetzt eine Warnmeldung ausgegeben, falls die angegebene URL nicht mit der aktuell verwendeten übereinstimmt.

  • [FIXED] Beim Editieren der URL oder des Aktivierungscodes springt der Cursor jetzt nicht mehr bei jedem Tastendruck ans Ende des Eingabefeldes.

  • [FIXED] Es war nicht möglich, Aktivierungscodes für alternative Lizenztypen (mit einem anderen Buchstaben als "s" am Ende) zu verwenden. Bislang erhielt man dabei stets eine Fehlermeldung, und das Formular wurde nicht abgesendet.

  • [NEW] Es steht jetzt eine Aktion namens "mysqldump" zur Verfügung, mit der eine mySQL-Dump-Datei der kompletten Virthos-Datenbank im Verzeichnis data/database erzeugt wird. Dies geht bei großen Datenbanken wesentlich zügiger als bei der backup-Aktion, allerdings ist die Dump-Datei nur bedingt geeignet, um auf einem anderen Server (mit anderer mySQL-Version) die Daten wiederherzustellen. Wenn eine Datei data/database/mysqldump.sql existiert, wird bei Aufruf der restore-Aktion automatisch auf diese zurückgegriffen. Damit mySQL-Dump und -Restore funktionieren, müssen die Kommandozeilenprogramme "mysql" und "mysqldump" im Verzeichnis "/usr/bin" liegen, oder der Ablageort muss in der Konfigurationsdatei als Parameter "pathToMysql" angegeben w

  • [CHANGED] Beim Prüfen der installierten mySQL-Version wird jetzt die Versionsnummer des Servers statt die des Clients herangezogen. Hintergrund: Auf manchen Servern (z. B. bei bplaced.net) gibt mysql_get_client_info() lediglich einen Beschreibungstext statt einer Versionsnummer aus. mysql_get_server_info() scheint hier verlässlicher zu sein. Da es anscheinend keinen 100%igen Verlass auf die Versionsinfo gibt, kann man jetzt über den Konfigurationsparameter "mysqlVersion" die tatsächliche Versionsnummer hinterlegen.

  • [FIXED] In Safari ab Version 4.1 konnte man einige Dialogfenster, in denen ein Passwort abgefragt wurde, nicht mehr durch Drücken der Return-Taste absenden. Ausdehnung von r403 auf andere Methoden und Umbau, damit es in Browsern, bei denen Return ein Submit auslöst, kein doppeltes Absenden des Formulars gibt.

  • Block für FTP-Zugangsdaten in Konfigurationsdateien aufgenommen

  • [CHANGED] Beim ersten Aufruf von Virthos nach einer Neuinstallation wird jetzt für das Einrichten der Datenbank kein Masterpasswort mehr abgefragt. [FIXED] Die Zugehörigkeit zur Gruppe "Alle" wurde bei eingeloggten Benutzern nicht berücksichtigt, wenn es um die Prüfung der Zugriffsrechte ging. Wenn einer nicht-öffentlichen Seite beispielsweise die Gruppe "Alle" als Eigentümer zugeordnet war, konnten eingeloggte Benutzer trotzdem nicht darauf zugreifen, es sei denn, sie hatten Adminrechte oder waren als Mitbenutzer mit entsprechenden Rechten ausgestattet.

  • [CHANGED] Die Zahl der Benutzer, die beim Bearbeiten einer Gruppe eingeblendet wird, ist von 15 auf 99 erhöht worden. Erst wenn 100 oder mehr Benutzer definiert sind, wird die Benutzerliste ausgeblendet. In diesem Fall lässt sich die Gruppenzuordnung nur noch in den jeweiligen Benutzerdetails ändern.

  • [CHANGED] Die Zahl der Benutzer, die in den Seitenvorgaben unter "Zugriffsrechte" eingeblendet wird, ist von 15 auf 99 erhöht worden. Erst wenn 100 oder mehr Benutzer definiert sind, wird die Benutzerliste ausgeblendet, und man kann nur noch Gruppen als Eigentümer bzw. Mitbenutzer einer Seite festlegen.

  • [CHANGED] Die vtRedirect-Anweisung führt jetzt dazu, dass die aktuelle Methode sofort beendet wird. Nachfolgende Anweisungen werden nicht mehr ausgeführt. Gleiches gilt für die interne ƒredirect()-Funktion.

  • [FIXED] Die relativen Seitenangaben "<" und ">" funktionierten nicht richtig, wenn die Containerseite nach einem seitentyp-spezifischen Feld sortiert war. In diesem Fall entsprach die Reihenfolge der Seiten im Seitenbaum auch nicht immer der Reihenfolge, wie sie in vtLoop-Blöcken zu sehen war. Außerdem konnte sich die Reihenfolge beim Speichern einer Seite ändern, auch wenn das betreffende Sortierfeld gar nicht verändert worden war (weil NULL-Werte beim Speichern automatisch durch Leerstrings ersetzt werden und diese von mySQL beim Sortieren anders behandelt werden).

  • [INTERNAL] Build-Parameter "dbtype" eingeführt, der entweder den Wert "flatfile" oder "mysql" annehmen kann und in Form der neuen Konstanten DBTYPE verfügbar ist. Alle Funktionen, die den Datenbanktyp abprüfen, verwenden jetzt diese Konstante, statt sich wie bisher am Produktnamen zu orientieren.

  • Alle Vorkommen des Namens "Virthos" durch Platzhalter bzw. Konstante ersetzt und alle produktbezogenen Informationen (Homepage, Promoblock...) konfigurierbar gemacht, als Vorbereitung für die Integration von Pixtacy in das Build-System. Außerdem nicht mehr benötigte Stringdefinitionen und Kommentare entfernt.

  • Die Zuordnung der Shell-Methoden zu den Build-Varianten wird nun über die config-Dateien gesteuert.

  • Die beim Obstacle-Build-Vorgang erstellten temporären bzw. Hilfsdateien werden jetzt nicht mehr im Projekt-, sondern im Zielverzeichnis angelegt. Dadurch bleibt das Projektverzeichnis (das ja unter SVN-Kontrolle steht) sauber.

  • Pixtacy als Build-Variante aufgenommen

  • Separate Lizenzbedingungen für Virthos und Pixtacy ermöglicht bzw. aufgenommen

  • [CHANGED] In der Liste der Systemeinstellungen werden jetzt auch die "Eigenen Einstellungen" mit aufgelistet.

  • Deutsche Feldbezeichnung für Realname eindeutiger gemacht

  • [CHANGED] Unmittelbar nach dem Neuanlegen eines Benutzers werden im Bearbeitenmodus die Felder zum Ändern des Passwortes jetzt ausgeblendet, weil dies oft zu Verwirrung geführt hat. Außerdem steht der vollständige Benutzername jetzt oberhalb der Passwortfelder.

  • [NEW] Neuen Platzhalter vtEcho bereitgestellt, mit dem sich beliebige PHP-Ausdrücke ausgeben lassen, zum Beispiel: {{vtEcho: date('Y') }}. Innerhalb des Parameters werden VirthosTalk-Platzhalter derzeit noch nicht interpretiert.

  • [FIXED] Wenn innerhalb einer vtIf-Anweisung ein einfaches Anführungszeichen vorkam, führte dies bei Aufruf der Methode zu einem Parse-Error.

  • Neuen Build-Parameter $lockLanguages eingeführt, der als Konstante LOCKLANGUAGES zur Verfügung steht. Ein Wert von "1" führt dazu, dass unter "Systemeinstellungen > Sprachen" keine Änderung möglich ist.

  • Neuen Build-Parameter $productEmail eingeführt. Dieser steht als Konstante "PRODUCTEMAIL" bzw. als VirthosTalk-Platzhalter {{vtProductEmail}} zur Verfügung.

  • [CHANGED] Wenn der Webserver so konfiguriert ist, dass keine Verbindungsaufnahme zum Lizenzserver möglich ist, wird jetzt eine entsprechende Meldung eingeblendet, sobald man versucht, eine Freischaltung durchzuführen. Bislang schlug der Freischaltvorgang fehl, ohne dass eine Fehlermeldung eingeblendet wurde.

  • Die verschiedenen Login-Masken blenden jetzt neben der Versionsnummer auch den Produktnamen mit ein.

  • Debug-Hilfe entfernt

  • [FIXED] Wenn man eine Seite, die keine bearbeitbaren Inhalte besitzt, im "Bearbeiten"-Modus aufrief, funktionierten die Buttons der Modusleiste nicht mehr und man konnte insbesondere nicht mehr in den Vorschaumodus zurückwechseln.

  • vtAbout-Methode überarbeitet:

    • Zeile "Produkt" entfernt (redundant zur Headline)

    • Lizenzinformation aussagefähiger gemacht

    • Textkonstanten durch Idiome ersetzt

  • r417 rückgängig gemacht bzw. abgewandelt: Die interne ƒredirect-Funktion führt jetzt nicht mehr zu einem sofortigen Skriptende, weil dann Änderungen an Sessiondaten oder globalen Variablen nicht mehr gespeichert würden. Dagegen führt die vtRedirect-Anweisung in einer Methode dazu, dass der Rest der Methode übersprungen wird (nicht aber der Rest des Hauptskripts).

  • Der Lizenztyp wird jetzt nur noch eingeblendet, wenn die Umgebung auch wirklich lizenziert wurde.

v3.0

  • Bugfix: die neuen API-Funktionen vtconfig() und vtuser() arbeiteten noch nicht korrekt

  • Bugfix: Seiten ohne HTML-Felder ließen sich beim Erstellen/Bearbeiten nicht mehr speichern

  • Mantis 153: Nach dem Einloggen tritt in der Basic-Version kein Fatal Error mehr auf, wenn es abgelaufene Sessions gibt.

  • Bei Ausgabefilterung werden Dezimal-- und Tausendertrennzeichen, falls nicht explizit angegeben, aus Globals gelesen. Es gibt noch keine Einstellungsseite dafür, aber mittels vtDo lässt sich der Standardwert (=deutsche Formatierung) überschreiben, zum Beispiel so:

    {{vtDo: -act="update", -obj="70", 
       numberFormatDecimals=".",
       numberFormatThousands=","}}
  • vtItem wird jetzt in Form eines JSON-Strings ausgegeben, wenn es sich um ein Array handelt und kein Parameter angegeben ist

  • Bugfix: Bei Inline-update-Aktion wurden onchange- und onupdate-Handler nicht ausgeführt

  • Anpassung der Parameter-Parsing-Methode, um Verwendung von JSON-Syntax zu ermöglichen

  • vtSession-Platzhalter erweitert, damit als Parameter auch ein Platzhalter verwendet werden kann

  • Bugfix: Die JSON-Erkennung war zu weitläufig definiert. Dadurch wurde zum Beispiel ein Ausdruck wie {{vtCalc: $_POST['{vtItem}'] }} nicht geparst.

  • Bugfix: Seiten, die nicht für die Allgemeinheit freigegeben waren, wurden im Seitenpfad des Virthos-Managers mit dem Namen "undefined" angezeigt.

  • Bugfix: Der Mailversand funktioniert jetzt auch bei aktiver Suhosin-Erweiterung (Mantis 122)

  • Bugfix: Demohinweis in E-Mails enthält keine HTML-Entitäten und Anker-Tags mehr

  • Verbesserungen am Mailversand: Bei Versandfehlern wird jetzt ebenfalls eine entsprechende Session-Message gesetzt, und beim Versandtest enthält die Testnachricht jetzt einen aussagefähigeren Betreff.

  • Bei relativen Seitenangaben per Typ (zum Beispiel "\product") wird jetzt die aktuelle Seite referenziert, falls diese vom betreffenden Typ ist.

  • Bugifx: Beim Erstellen einer Seite wurde ein mit "-properties[sortValue]" übergebener Sortierwert nicht angewendet

  • Kleine Textänderung, um Umlautproblematik zu umgehen

  • Bugfix: Das Setzen von Cookies funktionierte nicht (zumindest nicht in Safari), wenn Virthos unter einem Nicht-Standard-Port aufgerufen wurde, weil die Portnummer mit im "domain"-Parameter des Cookie-Headers auftauchte

  • In der Master-Version erhalten versendete E-Mails jetzt auch dann den benutzerdefinierten Absender, wenn die Version nicht lizensiert ist.

  • Bugfix: Das Setzen von Cookies funktionierte auf Servern mit bestimmten PHP-Versionen nicht, weil die Berechnung des expires-Zeitpunkts falsch erfolgte und ein Zeitpunkt in der Vergangenheit dabei herauskam. Grund ist die unterschiedliche Interpretation des "today"-Schlüsselworts in der strtotime-Funktion.

  • Nicht mehr benötigte Quellcode-Dateien aus Repository entfernt

  • Überflüssige Stringbibliotheken entfernt und Rest zusammengelegt

  • Beim Platzhalter {vtGet} lässt sich das automatische Auflösen von relativen Pfaden jetzt abschalten, indem man den zusätzlichen Parameter "raw" hinzufügt

  • Neue VirthosTalk-Konstrukte eingeführt:

    • vtBlock schaltet neue Instanz des Output-Buffers ein, vtEndBlock schaltet sie wieder aus und speichert den Inhalt in der vtSet-Variablen, die als Parameter von vtBlock angegeben wurde, bzw. in vtResult

    • vtTemplate arbeitet exakt so wie vtInclude, nur dass vor dem Einbinden der externen Datei der Inhalt des aktuellen Output-Buffers gelöscht wird

    • vtInclude erlaubt jetzt (ebenso wie vtTemplate) VirthosTalk-Ausdrücke als Parameter

  • Bugfix: In vtLoop wurden öffentlich sichtbare Seiten übersprungen, wenn der aktuelle Benutzer (bzw. eine seiner Gruppen) als Mitbenutzer zugeordnet war, der Mitbenutzer aber kein Sehen-Recht hatte

  • Workaround für bestimmte Serverkonstellationen, bei denen PATH_INFO in dem Fall, dass das Fragezeichen unmittelbar auf den Skriptnamen folgt, denselben Wert enthält wie SCRIPT_NAME (korrekt wäre ein Leerstring). Dies führte insbesondere dazu, dass bei anonymen Benutzern beim Start einer Session eine falsche Sessionsprache gesetzt wurde und somit auf keine Sessionvariablen zugegriffen werden konnte (aufgetreten bei Pixtacy, wo z. B. die Suche nicht funktionierte)

  • Bugfix: Die letzte Änderung an vtGet hatte dazu geführt, dass relative Pfade überhaupt nicht mehr aufgelöst wurden.

  • Begrifflichkeit für Lizenztyp "d" geändert: Entwicklerlizenz heißt jetzt Domainlizenz

  • Bugfix: Domainlizenzen, die auf "www.*" ausgestellt waren, funktionierten nicht bei Aufrufen ohne "www".

  • Routine für das Ermitteln des linken und rechten Nachbarn optimiert. Diese war zuvor extrem unperformant, wenn sie auf eine Seite mit sehr vielen linken Nachbarn angewendet wurde. Man kann jetzt zusätzlich mit der Syntax <= bzw. => festlegen, dass die Nachbarn nur auf der aktuellen Ebene selektiert werden sollen. Unsauberkeit in Funktionsdefinition beseitigt

  • Bugfix: Die neue Routine zur Ermittlung der Nachbarseiten funktionierte nicht im verschlüsselten Modus

  • Neuen Platzhalter "vtCurrentPortion" eingeführt. Dieser gibt die Nummer der aktuellen Portion für die aktuelle Seite aus.

  • Beim Setzen von Cookies, darf der Cookiename jetzt auch durch einen VirthosTalk-Ausdruck angegeben werden, zum Beispiel "lastportion{vtID}".

  • Nicht mehr benötigte Logeinträge entfernt. Die darin verwendete Funktion ob_get_clean führte zu Fatal Error unter PHP 4.1

  • Schriftfarbe für h2-Überschrift angepasst

  • Buttonstile in zentrales Stylesheet aufgenommen

  • Liste der zusätzlichen Funktionen zeigt jetzt keine Systemmethoden mehr an. Außerdem Quellcode aufgeräumt.

  • XML-Export konfigurierbar gemacht (Einbinden von Subseiten, Einbetten von Bildern und Dateien) sowie Methoden zum CSV-Import/-Export eingebaut

  • Stilklassen für Button umbenannt wg. Problemen mit bestehenden Methoden

  • Kleine Fehler korrigiert, die beim letzten Commit eingebaut wurden

  • Beim CSV-Import werden leere Spalten am Zeilenende jetzt toleriert. Zuvor führten diese dazu, dass die betreffenden Seiten ohne Inhalte angelegt wurden.

  • TinyMCE auf Version 3.2.7 upgedatet

  • Nicht (mehr) verwendete TinyMCE-Plug-ins entfernt

  • TinyMCE-Standardkonfigurationen überarbeitet. Ich habe alle Plug-ins und Buttons entfernt, die im Augenblick nicht funktionieren oder in dem jeweiligen Kontext unerwünscht sind. Außerdem sind bei der extended- und fullpage-Konfiguration die Buttons logischer angeordnet, und die Textareas sind etwas größer (höher) als bei der simple-Konfiguration.

  • CSV-Import-/-Export-Buttons werden nur noch eingeblendet, wenn es sich um die Master-Version handelt

3.0b4

  • [CHANGED] Neuen Lizenzmechanismus eingeführt. Das Freischalten erfolgt jetzt mit Hilfe eines Aktivierungscodes, der unabhängig von einer bestimmten Virthos-URL gekauft werden kann. Erst beim Eintragen dieses Codes wird der eigentliche Lizenzschlüssel erzeugt und im Verzeichnis config/licensekeys abgelegt.

  • [FIXED] Zeilenumbrüche in Feldinhalten bleiben jetzt beim Bearbeiten einer Seite erhalten.

  • [FIXED] Begriffe bzw. Wortanfänge werden jetzt auch in der Indexsuche gefunden, wenn sie am Beginn einer Zeile stehen.

  • [FIXED] Eine ungerade Zahl von Anführungszeichen in einem Feldinhalt führt jetzt nicht mehr dazu, dass das betreffende Feld (und alle folgenden) beim Bearbeiten der Seite verschluckt werden.

  • [FIXED] Templates, die den Platzhalter vtPromo enthalten, verursachen jetzt keinen Parse-Error mehr.

  • [CHANGED] vtSelect-Anweisung um zusätzlichen Parameter "-skip" erweitert; damit ist es jetzt möglich, eine bestimmte Anzahl von Datensätzen am Beginn der Selektion zu überspringen

  • [CHANGED] Mit vtSelect werden jetzt standardmäßig nur noch die Seiten selektiert, für die der aktuelle Benutzer ein Sehen-Recht besitzt; mit Hilfe von vtAsAdmin lässt sich diese Beschränkung aufheben

  • [CHANGED] Neuen Parameter "-expires" (mit "s" am Ende) bei setCookie-Aktion eingeführt. Neben einer rein numerischen Angabe (= Sekunden) ist auch ein verbales Zeitintervall wie "20 minutes" möglich (strtotime-Syntax).

  • [CHANGED] Beim Weglassen von -expire oder -expires gilt ein mit setCookie gesetzter Cookie jetzt nur noch bis zum Beenden des Browsers. Beim Weglassen von -path wird jetzt standardmäßig der aktuelle Skriptpfad verwendet, nicht das Rootverzeichnis.

  • [FIXED] vtIDToShow-Platzhalter lieferte stets 0 zurück

  • [CHANGED] Die vtAbout-Methode liefert jetzt zusätzliche Detailinfos zur PHP-Umgebung und enthält einen Link, mit dem man eine phpinfo-Seite aufrufen kann.

  • [NEW] Die Platzhalter vtPageOwnerID und vtPageUserID lassen sich jetzt auch in vtSelect-Filterbedingungen verwenden.

  • [NEW] Konzept der "Ausgabefilter" eingeführt: In vielen Platzhaltern lassen sich jetzt Filter definieren, um Datums- und Zahlenwerte zu formatieren. Die Filterdefinition wird hinter den übrigen Parametern, getrennt durch ein Pipesymbol, angegeben und besteht aus einer Typangabe ("num", "num-en" oder "date"), einem Doppelpunkt und dem optionalen Formatstring.

    Bei "date"-Filtern entspricht der String dem ersten Parameter der date()-Funktion von PHP. Bei "num"- und "num-en"-Filtern besteht der String aus bis zu 3 Zeichen, die folgende Bedeutung haben: Anzahl der Dezimalen (Default: 0), Tausendertrennzeichen (Default: Punkt), Dezimaltrennzeichen (Default: Komma). Bei "num" wird der übergebene Zahlenwert in deutscher Schreibweise, bei "num-en" in englischer Schreibweise erwartet.

    In folgenden Platzhaltern können Filter verwendet werden:

    • freie Platzhalter (Doppelpunkt nicht vergessen!)

    • vtCookie

    • vtCurrentDate*

    • vtCurrentTime*

    • vtDBField

    • vtEval

    • vtGet

    • vtGetValue

    • vtGlobal

    • vtItem

    • vtPost

    • vtResult

    • vtSession

  • Bei vtCurrentDate und vtCurrentTime wird der Filter als einfacher (einziger) Parameter übergeben, also ohne Pipesymbol

3.0b3

  • [NEW] vtRepeat-Anweisung erweitert, so dass jetzt auch in JSON-Syntax vorliegende Objektlisten durchlaufen werden können. Die Werte können mit dem neuen Platzhalter ausgegeben werden. Dieser arbeitet wie vtCurrentItem, kann im Gegensatz zu diesem aber auch einzelne Attribute eines Objekts ausgeben, falls vtRepeat mit einer Objektliste aufgerufen wurde. Ausserdem akzeptiert vtItem eine Formatangabe (z. B. "raw") als zweiten Parameter. Der alte Platzhalter vtCurrentItem wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.

  • [NEW] Neuer Platzhalter vtEditFields eingeführt, der eine Liste der editierbaren Felder in JSON-Syntax ausgibt. Als Parameter wird entweder das gewünschte Template (ggf. mit vorangestelltem Paketname) oder das Schlüsselwort "-template" angegeben. Im zweiten Fall wird das Template verwendet, das im gleichnamigen URL-Parameter angegeben ist. Ist der Parameter nicht gesetzt, wird die view-Methode der aktuellen Seite verwendet. Zur Zeit werden pro Feld folgende Eigenschaften ausgegeben: "name" (Feldname in durchgehender Kleinschreibung), "label" (Feldname, so wie er im Template angegeben ist), "type" (der Feldtyp: media, file, text, styled oder html), "subtype" (der zweite Parameter des Platzhalters, sofern vorhanden).

  • [CHANGED] Man kann bei HTML-Platzhaltern jetzt als zweiten Parameter die TinyMCE-Konfiguration festlegen, die beim Erstellen oder Bearbeiten einer Seite für den entsprechenden Editor verwendet werden soll. Enthält der zweite Parameter einen Slash, so wird er als relativer Pfad auf eine JavaScript-Datei (innerhalb des zugehörigen Template-Verzeichnisses) interpretiert. Ansonsten muss eine der drei Standardkonfigurationen "simple", "extended" oder "fullpage" angegeben werden.

  • [FIXED] Einbindung von vordefinierten TinyMCE-Konfigurationen funktionierte nicht, und teilweise waren die Feldbezeichner falsch.

3.0b1 (April 2009)

  • [NEW] Der Virthos-Manager verfügt jetzt über einen eingebauten Wysiwig-HTML-Editor (TinyMCE). Dieser lässt sich für einzelne Platzhalter aktivieren, indem man diese mit dem Zusatz "html" versieht.

  • [NEW] Virthos unterstützt jetzt den kompletten Unicode-Zeichensatz, so dass sich auch Webseiten mit osteuropäischen oder asiatischen Texten erstellen und pflegen lassen.

  • [NEW] In der Strukturansicht steht jetzt ein "Speichern"-Button zur Verfügung, um Änderungen an den Positionsnummern abzuspeichern. Das Speichern mittels Return-Taste oder Anklicken des Spaltentitels ("Pos") funktioniert weiterhin.

  • [NEW] Unter "Systemeinstellungen > E-Mail" steht jetzt ein Button zur Verfügung, um eine Testnachricht abzusenden. Damit lässt sich auf einfache Weise feststellen, ob der Webserver das Versenden von E-Mails (mit den aktuellen Einstellungen) zulässt.

  • [NEW] Man kann jetzt einer Seite nachträglich ein anderes Template zuordnen. Dazu steht in den Seitenvorgaben hinter dem Templatenamen ein neuer Button zur Verfügung.

  • [NEW] In den URLs, die Virthos erzeugt, wird der Skriptname jetzt bei Bedarf weggelassen. Dazu muss der neue Konfigurationsparameter "URLOmitScriptName" auf den Wert 1 gesetzt werden. Damit die verkürzten URLs funktionieren, muss der Webserver mit entsprechenden URL-Rewrite-Direktiven konfiguriert werden.

  • [CHANGED] Die Virthos-Lizenzbedingungen wurden geändert und erlauben jetzt eine kostenlose Nutzung auch über den Demoeinsatz hinaus. Die Seite mit dem Demohinweis, die bei nicht-lizensierter Nutzung zu Beginn jeder Arbeitssitzung sichtbar wurde, entfällt; dafür wird auf jeder Seite, die Virthos liefert, ein dezenter Banner eingeblendet.

  • [CHANGED] Lizenzschlüssel werden jetzt als Textdateien im Verzeichnis "config/licensekeys" abgelegt. Dadurch ist es möglich, Lizenzschlüssel zu hinterlegen, auch wenn die Virthos-Umgebung noch nicht unter der lizensierten URL erreichbar ist.

  • [CHANGED] Die Einstellung der "Haupt-URL" ist aus den Systemeinstellungen entfernt und in die Virthos-Konfigurationsdatei (config.php) verlagert worden. Damit werden Probleme beim Serverumzug vermieden. Wenn eine Virthos-Umgebung unter verschiedenen Domainnamen erreichbar ist, lässt sich jetzt mit dem Konfigurationsparameter "exactServerName" die Verwendung einer bestimmten Domäne erzwingen.

  • [CHANGED] Wenn man eigene Anmeldemasken bereitstellt, kann man in der Formularaktion jetzt auch die Methode ("-met") angeben, die nach der Anmeldung aufgerufen werden soll. Außerdem lenkt Virthos bei einer fehlerhaften Anmeldung nicht mehr auf die Startseite um, sondern verbleibt auf der aktuellen Seite und setzt den URL-Parameter "-error" auf den Wert 1.

  • [CHANGED] Die "updateSession"-Aktion kann jetzt mehrfach (ohne Neuladen der Seite) aufgerufen werden. Damit funktionieren z. B. Suchformulare auch dann, wenn sie über die "Zurück"-Taste des Browsers aus dem Browsercache aufgerufen wurden. Alle anderen Aktionen führt Virthos aus Sicherheitsgründen weiterhin nur aus, wenn die Seite, von der aus sie angestoßen wurden, zwischenzeitlich neu geladen wurde.