[gelöst] JAX Kalender in 4.8.8 und Mod_Rewrite

Gesperrt
mauerblume
Beiträge: 89
Registriert: Do 12. Feb 2004, 20:42
Wohnort: Niederlausitz
Kontaktdaten:

[gelöst] JAX Kalender in 4.8.8 und Mod_Rewrite

Beitrag von mauerblume »

Hallo,

ich habe den JAX Kalender 2.1 in eine 4.8.8 Installation eingebaut.

Funktioniert wunderbar.

Es gibt nur ein Problem, wenn ich Mod_Rewrite aktiviere, funktionieren die Links in der Übersicht der Termine nicht mehr.

Das mr_plugin 0.4.5 hat ja zum Glück die Funktion, einzelne Artikel vom rewrite auszusperren.
Auch das funktioniert gut.

Aber der JAX Kalender ist ja kein Artikel, hat also keine idcat etc.
Ich habe den Artikel, in dem die Terminübersicht des JAX aufgerufen wird vom rewrite ausgenommen, aber das reicht nicht.

Der JAX generiert die URLs in der Terminliste nach folgendem Muster:
/cms/front_content.php?idcat=106&Y=2008&m=9&d=18&do=show_event&key=392a15acaa91e25233281a...
Wenn ich mod_rewrite anschalte, dann werden die URLs aber so generiert:
/cms/front_content.php?&Y=2008&m=9&d=18&do=show_event&key=392a15acaa91e25233281a...


In der Datei eventlist_full_year.inc.php erfolgt die Ausgabe der Terminliste.
Der Link zu jedem Termin wird mit folgendem Befehlt generiert:

Code: Alles auswählen

<a href="'.$PHP_SELF."Y=$cal_year&m=$cal_month&d=$cal_day&do=show_event&key=".$red_data["event_key"]."&cal_id=$con_cal_number&language=$language&evt_date=".urlencode($date_str).'&evt_title='.urlencode($red_data["event_title"]).'">'.$red_data["event_title"]."</a>

Das Problem scheint folgendes zu sein:

Bei aktiviertem mod_rewrite werden die Variablen für $PHP_SELF nicht richtig übergeben.

Also habe ich folgendes in der Datei eingefügt:

Code: Alles auswählen

 unset($PHP_SELF);
 $PHP_SELF = "front_content.php?idcat=106&client=$client&lang=$lang";
Hilft leider nicht!

Dann habe ich mal im <a> Tag
$PHP_SELF durch "front_content.php?idcat=106" ersetzt,
das hilft schon soweit, dass die URL, die generiert wird nun so aussieht, wie sie aussehen soll:
/cms/front_content.php?idcat=106&Y=2008&m=9&d=18&do=show_event&key=1ad753501a99bac214b8879cd....
ABER: Für die Werte $cal_year und $cal_month etc wird immer das aktuelle Datum, also von heute eingesetzt..........

Hm.

Hat jemand einen Lösungsansatz für mich?
Zuletzt geändert von mauerblume am Di 18. Nov 2008, 01:27, insgesamt 1-mal geändert.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: JAX Kalender in 4.8.8 und Mod_Rewrite

Beitrag von xmurrix »

Morgen,

ich habe mich mit dem JAX Kalender bisher nicht sehr beschäftigt (hat sich nicht ergeben), daher kann ich darüber nicht viel sagen.

Auf jeden Fall werden vom MR-Plugin nur Links erkannt und umschrieben, die mit "front_content.php...", "./front_content.php", "/front_content.php" oder "http://domain/cms/font_content.php" (falls Mandant im /cms/ liegt) beginnen. Andere Links werden nicht erkannt und daher nicht umschrieben.
...
Der JAX generiert die URLs in der Terminliste nach folgendem Muster:

Code: Alles auswählen

/cms/front_content.php?idcat=106&Y=2008&m=9&d=18&do=show_event&key=392a15acaa91e25233281a... 
Wenn ich mod_rewrite anschalte, dann werden die URLs aber so generiert:

Code: Alles auswählen

/cms/front_content.php?&Y=2008&m=9&d=18&do=show_event&key=392a15acaa91e25233281a...
...
Ich sehe, da fehlt die idcat. Die URL wird zwar nicht umschrieben, aber dafür geht die idcat verloren, das könnte ein Bug sein...

Gruß
xmurrix
mauerblume
Beiträge: 89
Registriert: Do 12. Feb 2004, 20:42
Wohnort: Niederlausitz
Kontaktdaten:

Beitrag von mauerblume »

Das Einsetzen der idcat erfolgt ja mittels $PHP_SELF


Und ich glaube das eben das bei aktiviertem mod_rewrite nicht richtig funktioniert.


Ich poste hier noch mal den Teil der Datei eventlist_full_year.inc.php
in der die Ausgabe der Terminliste generiert wird:

Code: Alles auswählen

			echo '	<tr class="line_color'.($ii % 2).'" valign="top">'."\n"
			.'		<td align="center" valign="top" class="status">'.$status_txt.'&nbsp;</td>'."\n"
			.'		<td class="date"><nobr>'.$date_str."</nobr></td>\n"
			.'		<td class="event"><a href="'.$PHP_SELF."Y=$cal_year&m=$cal_month&d=$cal_day&do=show_event&key=".$red_data["event_key"]."&cal_id=$con_cal_number&language=$language&evt_date=".urlencode($date_str).'&evt_title='.urlencode($red_data["event_title"]).'">'.$red_data["event_title"]."</a></td>\n	</tr>\n";

Also die Ausgabe des Termins erfolgt korrekt, die Werte werden über $red_data eingelesen, eine Tabelle listet die Termine auf.
Doch der Link, der auf den Termin gesetzt wird, wird bei aktiviertem mod_rewrite nicht richtig erstellt.


Ich habe wie gesagt, schon versucht $PHP_SELF mit "front_content.php?idcat=$idcat" zu ersetzen, aber auch das führt zum gleichen Ergebnis.

Am liebsten wäre es mir, ich könnte die Terminanzeige des JAX Kalender vom mod_rewrite ausschliessen.

Der JAX ist als Plugin in contenido/plugins/calendar installiert und wird im Backend über EXTRAS -> Kalender administriert.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

Eine schnelle, aber nicht saubere, Lösung wäre das Entfernen von /cms/ aus $PHP_SELF in der eventlist_full_year.inc.php, also irgendwo am Anfang folgendes eingeben

Code: Alles auswählen

// split by path separator and use last array item
$tmp = explode('/', $PHP_SELF);
$PHP_SELF = $tmp[count($tmp)-1];
Dann sollte die URL soweit erkannt und umschrieben werden. Der JAX Kalender scheint wohl nicht weiter entwickelt zu werden, oder ich habe eine alter Version erwischt (v 2.1 RC).

Gruß
xmurrix
mauerblume
Beiträge: 89
Registriert: Do 12. Feb 2004, 20:42
Wohnort: Niederlausitz
Kontaktdaten:

Beitrag von mauerblume »

Funktioniert leider nicht.


Ja, die letzte Version des JAX-Kalenders als Contenido-Plugin ist 2.1 RC


Da die Kalenderfunktion sehr gut ist, und vor allem das Backend sehr sehr einfach zu bedienen, muss daran auch nicht viel weiterentwickelt werden.

Ich muss es nur hinbekommen, den mod_rewrite nutzen zu können. Diesen kann ich nun wegen dem JAX nicht aktivieren.

@xmurrix Ich schick dir mal per PM einen Link zu dem Projekt, und danke fürs Mitgrübeln...
mauerblume
Beiträge: 89
Registriert: Do 12. Feb 2004, 20:42
Wohnort: Niederlausitz
Kontaktdaten:

Beitrag von mauerblume »

Die Lösung:


In den Modulen des JAX Kalenders, muß beim Output geändert werden:

Modul, das das Monatskalendarium anzeigt:

Code: Alles auswählen

<?php 
$PHP_SELF = 'front_content.php?idcat=' . $idcat; 
$con_cal_number = 'CMS_VALUE[0]';
require($cfg['path']['contenido']."plugins/calendar/jax_calendar2.php");
?>
Modul, das die Liste der Termine anzeigt:

Code: Alles auswählen

<?php
$PHP_SELF = 'front_content.php?idcat=' . $idcat; 
$con_cal_number = 'CMS_VALUE[1]';
require($cfg['path']['contenido']."plugins/calendar/jax_calendar1.php");
?>

Somit liefert $PHP_SELF die richtigen Werte und der Mod_rewrite funktioniert.

Die Lösung stammt von xmurrix.

Dankeschön.
MaWa
Beiträge: 17
Registriert: Sa 7. Aug 2004, 13:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von MaWa »

Wäre es möglich das komplette Plugin hier zur verfügung zu stellen?

Danke!
mauerblume
Beiträge: 89
Registriert: Do 12. Feb 2004, 20:42
Wohnort: Niederlausitz
Kontaktdaten:

Beitrag von mauerblume »

Das Plugin funktioniert noch genauso, wie in dem Ursprungsbeitrag beschrieben:

http://forum.contenido.org/viewtopic.p ... hlight=jax

und hier:

http://forum.contenido.org/viewtopic.php?t=8289


Die Dateien zum Download findet man nicht mehr bei Thilo Sommer, sondern hier:

http://www.go4support.de/download/jax_calendar21.zip


Die letzte Version, die für Contenido entwickelt wurde ist 2.1
Funktioniert aber in 4.8.8 noch wunderbar.


Falls der Jax-Kalender ohne CMS-Einbindung interessiert, diesen findet man hier:

http://www.jtr.de/scripting/php/calendar/index.html


Viel Spass!
*********************************
Contenido-Konstruktionen von 4.2 bis 4.8.X
Gesperrt