Seite 1 von 1

[BUGs] Kalender und PHP-Fehler

Verfasst: Mi 21. Jan 2009, 09:18
von rethus
Ich habe folgendes Template, welches mit hinter dem Textfeld von STARTDATE ein Icon für den Kalender anzeigt...:

Code: Alles auswählen

<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />

	<script language="javascript" type="text/javascript" src="external/wysiwyg/tinymce3/jscripts/tiny_mce/tiny_mce_popup.js"></script>
	<script language="javascript" type="text/javascript" src="external/wysiwyg/tinymce3/jscripts/tiny_mce/utils/mctabs.js"></script>
	<script language="javascript" type="text/javascript" src="external/wysiwyg/tinymce3/jscripts/tiny_mce/utils/form_utils.js"></script>
	<script language="JavaScript" src="{CALENDAR}"></script>
    	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>

</head>
<body style="margin: 10px">

	<form name=formular action="" method="post">
		<table width='500'  border='0' class="admTable"> 
		<thead>
		<tr> 
		<tr> 
			<td class="admTableTd">Startdatum</td> 
			<td class="admTableTd"><input style="width:300px;" type='text' id="startdate" name='webc[startdate]' value='{WEBC_STARTDATE}'>
			 		<a href="javascript:startcal.popup('','{CALENDAR_TMPL}');"><img height="16" border="0" width="16" alt="Startzeitpunkt wählen" src="images/calendar.gif"/></a>
			</td> 
		</tr>
		<tr> 
			<td class="admTableTd">ENDDATUM</td> 
			<td class="admTableTd"><input style="width:300px;" type='text' id="enddate" name='webc[enddate]' value='{WEBC_ENDDATE}'></td> 
		</tr>
		<tr>
			<td align="center" colspan="3">
				<input type="submit" class="button" name="submit" value="Speichern" />
				<input type="reset" class="button" value="Zurücksetzen" />
				<input type="hidden" name="do" value="{DO}" />
				<input type="hidden" name="do_change" value="1" />
			</td>
		</tr>
  </table>
<script language="JavaScript">

 	var startcal = new calendar1(document.forms['formular'].elements['webc[startdate]']);
 	startcal.year_scroll = true;
	startcal.time_comp = true;
   	var endcal = new calendar1(document.forms['formular'].elements['webc[enddate]']);
   	endcal.year_scroll = true;
	endcal.time_comp = true;
	
</script>
Klicke ich auf das Icon, öffnet sich ganz kurz ein kleines Popupfenster, danach kommt ein Browserfenster, welches mit calendar.php zum download anbietet.

Nun diesen Download-Dialog erhalte ich schon mal öfter, wenn ein Fehler im Script ist, und PHP das nicht recht verarbeiten kann.

In den error_logs erscheint dann dieses:

Code: Alles auswählen

scripts/calendar1.js.php?contenido=5b7a1e32c0fd40b00ee645d79c292ab2
Frage mich nur, was hier fehlt, oder falsch ist... Braucht der Kalender noch irgendwelche anderen Daten oder JS-Funktionen?

Verfasst: Mi 21. Jan 2009, 09:42
von Oldperl
Hallo rethus,

Infos zum Kalender und zur Einbindung findest du hier :arrow: http://www.dynarch.com/projects/calendar/

Da hätte aber sicherlich eine kurze Googlesuche oder ein Blick in den Quelltext der JS-Datei geholfen. :roll:

Gruß aus Franken

Ortwin

Verfasst: Mi 21. Jan 2009, 09:56
von rethus
So, erstmal ne kurze rückmeldung...
Das Problem mit dem download-angebot lag daran, das die apache-clogdatei schon über 2GB war.

Gelöscht... nun erhalte ich in den error-logs auch wieder ne rückmeldung...

Und zwar:

Code: Alles auswählen

 file_exists(): open_basedir restriction in effect. File(/LC_MESSAGES/contenido.po) is not within the allowed path(s):
Scheint hier das Problem zu sein, dass hier ein absolutes Basisverzeichnis angegeben wird... also scheinbar wird eine Variable nicht richtig ausgelesen.

Verfasst: Mi 21. Jan 2009, 10:45
von rethus
So, in functions.i18n in Zeile 98 finde ich das hier:

Code: Alles auswählen

if (!file_exists($i18nDomains[$domain].$i18nLanguage."/LC_MESSAGES/".$domain.".po"))
	{
		return $string;
	}
Wenn ich nun file_exists mit einem @ stummschalte, wird der Kalender angezeigt:

Code: Alles auswählen

if (!@file_exists($i18nDomains[$domain].$i18nLanguage."/LC_MESSAGES/".$domain.".po"))
	{
		return $string;
	}
Demnach wird in der Funktion zwar abgefragt, ob die Datei existiert... jedoch wird ein Fehler geworfen, wenn die Datei nicht existiert.

Was allerdings fraglich ist ... warum der Pfad nicht vernünftig gesetzt wird... denn wie angenommen sind die Variablen $i18nDomains[$domain] und $i18nLanguage leer.


Ggf. sollte man diesen Hack (mit dem @) in Bugfixes mit aufnehmen.

--

Und noch einen BUG hab ich gefunden...
Im sich öffnenden Calc-Fenster kann man Tag und Uhrzeit wählen... nach der Auswahl mit grünen Harken bestätigen.

Setzt man aber im Template "keine Uhrzeit" (das geht so:)
var startcal = new calendar1(document.forms['formular'].elements['webc[startdate]']);
startcal.year_scroll = true;
startcal.time_comp = false;
, ist auch kein grüner Harken mehr vorhanden... und das Fenster somit nur noch über die Fenster-Buttons (also kleine X oben rechts) schließbar.

Verfasst: Mi 21. Jan 2009, 13:19
von Oldperl
Hallo rethus,

das sind keine BUGS, daher möchte ich dich bitten den Threadtitel wieder zu ändern.

Der in Contenido vorhandene JSCalendar ist an Contenido angepasst und nur für eine Verwendung im Backend gedacht.
Hierbei ist/war nie an eine Verwendung im Artikeleditor gedacht, sondern nur im reinen Backend, in dem dann auch alle Pfade passen sollten.

Zur Verwendung des Kalenders im Artikeleditorbereich empfehle ich dir den original JSCalendar in den Scriptordner unter cms/js/ zu legen und diesen zu verwenden. Dann stimmen auch alle Pfade und eine .mo-Datei wird nicht benötigt bzw. aufgerufen.

Gruß aus Franken

Ortwin