Kalender für CMSimple XH
Re: Kalender für CMSimple XH
Was spricht eigentlich dagegen, den content beim speichern noch zu sortieren, dann wären die Einträge schön aufsteigend nach dem Beginndatum:
index.php line 1087: sort($newevent); EDIT: wäre schön, geht aber nicht so.
Aber so gehts:
index.php:
line 1087: usort($newevent,'dateSort');
line 1102 (am Ende):
function dateSort($a, $b){
$a_i = strtotime($a['datestart'].' '.$a['starttime']);
$b_i = strtotime($b['datestart'].' '.$b['starttime']);
if ($a_i == $b_i) return 0;
return ($a_i < $b_i) ? -1 : 1;
}
Ob der strtotime() da richtig funktioniert, hängt wohl vom set_locale() und einem vernünftigen date_delimiter ab. Bei meinen Einstellungen mit "." geht es.
Gruss
manu
index.php line 1087: sort($newevent); EDIT: wäre schön, geht aber nicht so.
Aber so gehts:
index.php:
line 1087: usort($newevent,'dateSort');
line 1102 (am Ende):
function dateSort($a, $b){
$a_i = strtotime($a['datestart'].' '.$a['starttime']);
$b_i = strtotime($b['datestart'].' '.$b['starttime']);
if ($a_i == $b_i) return 0;
return ($a_i < $b_i) ? -1 : 1;
}
Ob der strtotime() da richtig funktioniert, hängt wohl vom set_locale() und einem vernünftigen date_delimiter ab. Bei meinen Einstellungen mit "." geht es.
Gruss
manu
Re: Kalender für CMSimple XH
Hallo manu
Nachdem wir das Plugin veröffentlich hatten, sind mir noch eine ganz Reihe von Kleinigkeiten aufgefallen, die ich inzwischen verbessert habe. Keine grundlegenden Funktionsänderungen, aber kleine Verbesserungen. Inzwischen bin ich bei "Build 3" der Calendar Version 1.2.
Ich teste deinen Vorschlag mal aus.
svasti
P.S. funktioniert gut, nur leider merke ich jetzt dass die date_delimiter Funktion einen Bug hat. Die korrigierte Version zusammen mit deiner Erweiterung kommt dann als "Build 4". Und ich hab auch noch ein paar Ideen, also einen weitere Version kommt wohl sowieso noch.
Da spricht nichts dagegen... wir haben das einfach übersehen...manu wrote:Was spricht eigentlich dagegen, den content beim speichern noch zu sortieren, dann wären die Einträge schön aufsteigend nach dem Beginndatum:
Nachdem wir das Plugin veröffentlich hatten, sind mir noch eine ganz Reihe von Kleinigkeiten aufgefallen, die ich inzwischen verbessert habe. Keine grundlegenden Funktionsänderungen, aber kleine Verbesserungen. Inzwischen bin ich bei "Build 3" der Calendar Version 1.2.
Ich teste deinen Vorschlag mal aus.
svasti
P.S. funktioniert gut, nur leider merke ich jetzt dass die date_delimiter Funktion einen Bug hat. Die korrigierte Version zusammen mit deiner Erweiterung kommt dann als "Build 4". Und ich hab auch noch ein paar Ideen, also einen weitere Version kommt wohl sowieso noch.
Last edited by svasti on Wed Apr 27, 2011 5:34 pm, edited 1 time in total.
Re: Kalender für CMSimple XH
Argh...
auf strtotime() bin ich nicht gekommen .
Ich hab's mal getestet.
Allerdings habe icham Ende der Funktion,
direkt vor dem "return $event_array;" eingebaut - also beim laden der Daten in das Formular.
Erstaunlicherweise klappt das bei mir mit strtotime() mit allen vom Plugin erlaubten Delimitern.
Auch eine Änderung des Delimiters zur Laufzeit, mit automatischer Korrektur durch den DatePicker, führt am Ende wieder
zum richtigen Ergebnis.
Dann bin ich jetzt mal gespannt auf "Build 4".
LG
Holger
auf strtotime() bin ich nicht gekommen .
Ich hab's mal getestet.
Allerdings habe ich
Code: Select all
usort($event_array,'dateSort');
Code: Select all
function LoadEventFile()
Erstaunlicherweise klappt das bei mir mit strtotime() mit allen vom Plugin erlaubten Delimitern.
Auch eine Änderung des Delimiters zur Laufzeit, mit automatischer Korrektur durch den DatePicker, führt am Ende wieder
zum richtigen Ergebnis.
Dann bin ich jetzt mal gespannt auf "Build 4".
LG
Holger
Re: Kalender für CMSimple XH
Hmm, ganz so einfach geht es doch nicht.Holger wrote:Erstaunlicherweise klappt das bei mir mit strtotime() mit allen vom Plugin erlaubten Delimitern.
Auch eine Änderung des Delimiters zur Laufzeit, mit automatischer Korrektur durch den DatePicker, führt am Ende wieder
zum richtigen Ergebnis.
Dann bin ich jetzt mal gespannt auf "Build 4".
Offenbar gibt es doch Abhängigkeiten von set_locale() etc.
Auf einem anderen Host geht definitv nur der "." als Delimiter....
Re: Kalender für CMSimple XH
Ja genau, sogar bei mir auf xampplite geht nur "." als delimiter. Bei anderen delimitern zeigt er keine Events mehr an, aber die Eingabetabelle zeigt er nach wie vor an.
Und wo man die Sortierfunktion einbaut, ist die Frage: Bei deiner Version wird ja beim Speichern neuer Events noch nicht sortiert. Wenn aber beim Speichern sortiert wird, merken die Benutzer gleich, dass sortiert wird. Vielleicht ganz gut?
Ich schick dir mal die aktuelle Version, damit du einen Blick drauf wirfst...
Und wo man die Sortierfunktion einbaut, ist die Frage: Bei deiner Version wird ja beim Speichern neuer Events noch nicht sortiert. Wenn aber beim Speichern sortiert wird, merken die Benutzer gleich, dass sortiert wird. Vielleicht ganz gut?
Ich schick dir mal die aktuelle Version, damit du einen Blick drauf wirfst...
Re: Kalender für CMSimple XH
Was genau geht denn nicht mit delimiter anders als "."? Das ist dann wohl ein anderes Problem als der sort. Wenn die strtotime() funktionen scheitern, dann wohl beide ($a und $b return false) in der Funktion. Dann sind $a_i und $b_i gleich und somit sollte nichts sortiert werden.
Wenn ich es mir genau überlege, ist wohl strtotime an dieser Stelle nicht angebracht. Das Datumsformat ist ja nicht zwingend gemäss set_locale() und sogar nicht korrekt. Im angelsächsischen Raum ist das Datum wohl mm/dd/yyyy. Um die Logik beizubehalten wird der Sortierschlüssel wohl mit einem regex erstellt werden müssen. Ich überlege mir das mal, falls es sonst noch niemand hat.
EDIT:
Die dateSort() function sollte dann so sein:Dann entspricht die Sortierung auch der Sinngebung des Datum Strings. Ich konnte jetzt nicht testen, ob der backslash im pattern auch für die anderen seperators funktioniert, sollte aber. Könnte dies jemand noch checken?
Gruss
manu
Wenn ich es mir genau überlege, ist wohl strtotime an dieser Stelle nicht angebracht. Das Datumsformat ist ja nicht zwingend gemäss set_locale() und sogar nicht korrekt. Im angelsächsischen Raum ist das Datum wohl mm/dd/yyyy. Um die Logik beizubehalten wird der Sortierschlüssel wohl mit einem regex erstellt werden müssen. Ich überlege mir das mal, falls es sonst noch niemand hat.
EDIT:
Die dateSort() function sollte dann so sein:
Code: Select all
function dateSort($a, $b){
$pattern = '!(.*)\\'.dpSeperator().'(.*)\\'.dpSeperator().'(.*)!';
$replace = '\3\2\1';
$a_i = preg_replace($pattern,$replace,$a['datestart']).$a['starttime'];
$b_i = preg_replace($pattern,$replace,$b['datestart']).$b['starttime'];
if ($a_i == $b_i) return 0;
return ($a_i < $b_i) ? -1 : 1;
}
Gruss
manu
Re: Kalender für CMSimple XH
Das (andere) Problem mit dem Delimiter, scheint nur ein Missverständnis zu sein:manu wrote:Was genau geht denn nicht mit delimiter anders als "."? Das ist dann wohl ein anderes Problem als der sort.
Verstellt man den Delimiter zur Laufzeit - also mit vorhandenen Daten - bleibt narürlich erstmal die Ausgabe der Events leer.
Das Skript findet den neuen Delimiter ja noch nicht in seinen Daten.
Lädt man dann aber die Eingabemaske, ersetzt der DatePicker automatisch den alten mit dem neuen Delimiter.
Nach dem Speichern funtioniert dann auch wieder die Ausgabe der Eventliste.
Die Änderung des Delimiters zur Laufzeit ist also jetzt auch möglich. Ob das überhaupt Sinn macht, ist fraglich.
@manu:
den Code kann ich erst heute Abend testen, er sieht für mich aber logisch aus...
LG
Holger
Re: Kalender für CMSimple XH
Ja, sorry, das mit dem Delimiter war ein dummes Missverständnis.
Re: Kalender für CMSimple XH
@ manu
Deine Sortierfunktion habe ich getestet und sie funktioniert bisher prima. Inzwischen ist sie ins Plugin eingefügt. Damit ist jetzt Build 4 von Calendar_v1-2_XH herunterladbar.
Deine Sortierfunktion habe ich getestet und sie funktioniert bisher prima. Inzwischen ist sie ins Plugin eingefügt. Damit ist jetzt Build 4 von Calendar_v1-2_XH herunterladbar.
Re: Kalender für CMSimple XH
Prima!svasti wrote:Damit ist jetzt Build 4 von Calendar_v1-2_XH herunterladbar.
Allerdings fehlt das noch im aktuellen Download:
Das scheint mir ein echter Bug des alten Codes zu sein...manu wrote: Einen Fehler habe ich noch entdeckt:
Bei show_location==false in der configuration werden events ohne location nicht angezeigt, insbesondere bei update vom alten calendar. Siehe dazu index.php zeile 733, da habe ich mal den test auf $location auskommentiert. Dann gehts.
Gruss
manu