Kalender für CMSimple XH

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
manu
Posts: 1086
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Kalender für CMSimple XH

Post by manu » Wed Apr 27, 2011 1:54 pm

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

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Kalender für CMSimple XH

Post by svasti » Wed Apr 27, 2011 4:48 pm

Hallo manu
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:
Da spricht nichts dagegen... wir haben das einfach übersehen...
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.

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Kalender für CMSimple XH

Post by Holger » Wed Apr 27, 2011 5:26 pm

Argh...

auf strtotime() bin ich nicht gekommen :x .

Ich hab's mal getestet.
Allerdings habe ich

Code: Select all

usort($event_array,'dateSort');
am Ende der Funktion,

Code: Select all

function LoadEventFile()
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

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Kalender für CMSimple XH

Post by Holger » Wed Apr 27, 2011 5:39 pm

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".
Hmm, ganz so einfach geht es doch nicht.
Offenbar gibt es doch Abhängigkeiten von set_locale() etc.

Auf einem anderen Host geht definitv nur der "." als Delimiter.... :(

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Kalender für CMSimple XH

Post by svasti » Wed Apr 27, 2011 6:14 pm

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...

manu
Posts: 1086
Joined: Wed Jun 04, 2008 12:05 pm
Location: St. Gallen - Schweiz
Contact:

Re: Kalender für CMSimple XH

Post by manu » Thu Apr 28, 2011 6:31 am

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:

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;
}
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

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Kalender für CMSimple XH

Post by Holger » Thu Apr 28, 2011 9:08 am

manu wrote:Was genau geht denn nicht mit delimiter anders als "."? Das ist dann wohl ein anderes Problem als der sort.
Das (andere) Problem mit dem Delimiter, scheint nur ein Missverständnis zu sein:

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

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Kalender für CMSimple XH

Post by svasti » Thu Apr 28, 2011 11:39 am

Ja, sorry, das mit dem Delimiter war ein dummes Missverständnis. :(

svasti
Posts: 1651
Joined: Wed Dec 17, 2008 5:08 pm

Re: Kalender für CMSimple XH

Post by svasti » Thu Apr 28, 2011 1:28 pm

@ 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.

Holger
Site Admin
Posts: 3470
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany

Re: Kalender für CMSimple XH

Post by Holger » Thu Apr 28, 2011 2:36 pm

svasti wrote:Damit ist jetzt Build 4 von Calendar_v1-2_XH herunterladbar.
Prima!

Allerdings fehlt das noch im aktuellen Download:
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
Das scheint mir ein echter Bug des alten Codes zu sein...

Post Reply