Seite 13 von 16

Verfasst: 03.05.2007 10:36
von StanleyG
Hallo,

ich bin hier nochmal.
Also das mit der fehlenden global $db habe ich auch gelöst.
Jetzt kann der Kalender aufgerufen werden.

Aber jetzt bin ich am nächsten Fehler stecken geblieben.
Dieser liegt in der calendar.php ab Zeile 133:

Code: Alles auswählen

while( $row = $db->sql_fetchrow() )
{
	$CATS[$row['cat_id']] = array(
		'id'	=>	$row['cat_id'],
		'name'	=>	$row['cat_name'],
		'read'	=>	get_auth($row['read_user_level'], $row['read_user_ids'], $row['read_group_ids'], $row['read_black_uids']),
		'edit'	=>	get_auth($row['edit_user_level'], $row['edit_user_ids'], $row['edit_group_ids'], $row['edit_black_uids'])
	);
}
Wenn ich den Kalender als Admin aufrufe, wird die Schleife komplett durchlaufen und $CATS richtig als Array gebildet.
Wenn ich aber den Kalender als normaler User aufrufe, dann wird nur die erste Zeile $row gelesen und in $CATS abgelegt. Damit besteht auch das Array nur aus einer Zeile (Daten der 1. Kategorie).
Danach springt die Verarbeitung aus unerklärlichen Gründen aus der Schleife heraus.

Any ideas?

Stanley

Verfasst: 03.05.2007 15:51
von BB-BF-BM
@Euphoria: in calendar.php

Code: Alles auswählen

#
#-----[ FIND ]--------------------
#
		$template->assign_block_vars('event', array(
			'name'	=>	$row['event_name'],
			'desc'	=>	$row['event_desc'],
			'author'	=>	$author,
			'cats'	=>	$cats,
#
#-----[ REPLACE WITH ]--------------------
#
		$template->assign_block_vars('event', array(
			'name'	=>	$row['event_name'],
			'desc'	=>	nl2br(htmlspecialchars($row['event_desc'])),
			'author'	=>	$author,
			'cats'	=>	$cats,
PS: Den Befehl dazu kenn ich auch selbst :roll:


EDIT: @StanleyG:
Fehler meinerseits, hab ich damals anscheinend nur zur Hälfte verbessert. In calendar/functions.php:

Code: Alles auswählen

#
#-----[ FIND ]--------------------
#
	if( !$auth && $group_ids !== '' )
	{
		$sql2 = 'SELECT 1 FROM '.USER_GROUP_TABLE.' WHERE group_id IN ('.$group_ids.') AND user_id = '.$userdata['user_id'].' AND user_pending = 0';
		$result2 = $db->sql_query($sql);
#
#-----[ REPLACE WITH ]--------------------
#
	if( !$auth && $group_ids !== '' )
	{
		$sql2 = 'SELECT 1 FROM '.USER_GROUP_TABLE.' WHERE group_id IN ('.$group_ids.') AND user_id = '.$userdata['user_id'].' AND user_pending = 0';
		$result2 = $db->sql_query($sql2);

Verfasst: 03.05.2007 16:39
von StanleyG
Hallo BB-BF-BM,

da steckt noch ein anderer Fehler drin:
in der calendar.php müssen die Zeilen nach
$CATS = array();

heißen:

Code: Alles auswählen

$result = $db->sql_query($sql);
if( !$result )
{
	message_die(GENERAL_ERROR, 'Could not obtain auth data');
}
while( $row = $db->sql_fetchrow($result) )

Damit wird $row beim Sprung nach get_auth nicht zerstört.
PS: ist mir auch schon passiert, dass ich aus einer $row-Schleife in eine andere gesprungen bin, ohne dass ich sie durch Namen auseinander halten konnte und dadurch die erste Schleife zerstört.
:oops:

Stanley

Verfasst: 03.05.2007 20:00
von BB-BF-BM
Vielen Dank!
Ich warte noch einige Zeit (du scheinst die Modifikation sehr gut zu testen, vielleicht findest du noch einige Fehler :wink: ), dann werde ich Version 0.4.1 auch euch zugänglich machen.

Den Einbau eines Caches habe ich weiter nach hinten verschoben, da er beim Fehler finden stört. Version 0.5.0 wird aber auf jeden Fall bessere Filtermöglichkeiten enthalten. Entweder wird in der Version der Cache bereits enthalten sein (optional ein- oder ausgeschaltet) oder es wird noch eine Version 0.5.1 geben.
Wenn es dann keine größeren Feature Requests gibt, wird diese Version als 1.0.0 veröffentlicht, das heißt, in die phpBB.de-Mod-DB eingereicht.

Verfasst: 03.05.2007 21:43
von StanleyG
Ja, wenn etwas nicht funktioniert, dann suche ich schon manchmal verbissen nach dem Grund. Und da ich seit vorigem Jahr autodidaktisch PHP gelernt habe und schon ziemlich viel davon verstehe, klappt das oft, dass ich den Grund finde.

Aber in Deinem MOD habe ich bisher nichts weiter gefunden.
Ich habe das MOD allerdings schon ein wenig weiterentwickelt, weil es für meinen Bedarf noch nicht ganz rund war.
Ich habe z.B. das Template komplett umgestellt, wenn Du möchtest, kann ich dir ein Screenshot per PN schicken.

Außerdem habe ich den Text auch noch ein wenig weiter bearbeitet.
Ich habe z.B. folgendes gemacht:

Code: Alles auswählen

$message = $data['desc'];
$message = make_clickable($message);
$message = str_replace("\n", "\n<br />\n", $message);
und erst danach $message ans Template übergeben.
Damit sind z.B. Links klickable und öffnen sich im neuen Fenster.

Was ich noch bräuchte, wären zwei verschiedene Datumsformate, einmal mit Wochentag kurz und einmal mit Wochentag lang.
Kannst Du bitte dafür eine weitere Parameterangabe in der config vorsehen?
(ich baue das bei mir schon ein, nur damit das beim Update nicht verloren geht).

Danke
Das MOD ist für mein Forum einfach spitze, weil ich hier mehrere unterschiedliche Gruppen habe, die sich nicht sehen sollen. Mit Deinem Mod kann ich die Lese- und Schreibrechte sehr einfach verwalten (mit den schon für die Foren bestehenden Benutzergruppen).

Stanley

Verfasst: 03.05.2007 21:49
von Surfer90
BB-BF-BM hat geschrieben:Es ist vor allem offensichtlich, dass irgendetwas durcheinandergekommen ist bzgl der Ereignis-Anzeige...
Verlinke mal deine calendar.tpl (KB:datei)

Zu deinem Problem, dass Termine nach dem Ausloggen nicht mehr sichtbar sind: Hast du in den Kategorien die entsprechenden Rechte auch für Gäste gesetzt (ACP => Kalender => Kategorien => Kategorie-Berechtigungen ändern => Lesen der Termine)?


Hallo, danke erstmal für die schnelle Antwort...
Also, dass mit der calendar.tpl kann doch eigentlich nicht sein, da ich doch die daran ja nichts geändert habe. Ich hab diese tpl Datei jetzt grad nochmal vorsichtshalber nochmal mit der calendar.tpl aus der 4.0 Version überschrieben....soll ich die Datei trotzdem nochma zum angucken hochladen? woran könnte das den noch liegen....vllt mysql fehler?


Ich hatte alle Rechte für den Kalendar extra für jeden freigegeben. Als Gast sollte man die Termine also eigentlich lesen können. Wenn man registriert ist, kann man sie auf jedenfall lesen....

und noch ne kurze Frage: Wo bearbeite ich im Kalender nochmal einen Termin?


danke dir, für deine hilfe


Gruß
Surfer90

Verfasst: 03.05.2007 23:40
von StanleyG
Hallo BB-BF-BM,

ich habe noch eine Frage: wie funktioniert eigentlich die Benachrichtigung?
1) muss ich dazu den Kalender in einem bestimmten Modus starten, damit die Benachrichtigungen geschickt werden?

2) werden Benachrichtigungen zu einem Termin an alle User geschickt, die diesen Termin lesen können (d.h. aus allen Benutzergruppen, die darauf Zugriff haben) oder nur an die User, die dies ausdrücklich im Kalender bestellt haben?

Erledigt.
Habe beides gefunden.
Und schon ein Cronjob bei 1und1 eingerichtet.

Danke
Stanley

Verfasst: 04.05.2007 16:14
von BB-BF-BM
StanleyG hat geschrieben:Ich habe z.B. das Template komplett umgestellt, wenn Du möchtest, kann ich dir ein Screenshot per PN schicken.
wäre nett, allerdings denke ich, dass das Template nur das nötigste enthalten soll, da dies jeder selbst verändern soll/kann.
StanleyG hat geschrieben:Außerdem habe ich den Text auch noch ein wenig weiter bearbeitet.
Ich habe z.B. folgendes gemacht:

Code: Alles auswählen

$message = $data['desc'];
$message = make_clickable($message);
$message = str_replace("\n", "\n<br />\n", $message);
und erst danach $message ans Template übergeben.
Damit sind z.B. Links klickable und öffnen sich im neuen Fenster.
Danke; ich arbeite abgesehen von dem Kalender (und selbst der ist sehr eigenständig) gar nicht mit dem phpBB, sodass mir diese Funktion noch nicht bekannt war.
Ich setz es auf die ToDo, morgen kommts dran.
StanleyG hat geschrieben:Was ich noch bräuchte, wären zwei verschiedene Datumsformate, einmal mit Wochentag kurz und einmal mit Wochentag lang.
Kannst Du bitte dafür eine weitere Parameterangabe in der config vorsehen?
(ich baue das bei mir schon ein, nur damit das beim Update nicht verloren geht).
Ich glaube, hier gehen die Geschmäcker stark auseinander. Die Frage ist, wo welches Format gewählt werden soll. Im Endeffekt müsste sonst für jede Ausgabe ein anderes Format angegeben werden können, was definitiv zu komplex ist. Gib mal ein Beispiel, wo du gerne ein anderes Format hättest!
Übrigens kannst du mit guten Editoren auch Dateien miteinander vergleichen und sehen, was ich verändert habe, um auch nur das zu übernehmen.


EDIT
@Surfer90:
Verlinke mal die overall_header.tpl!
Ich habe den Verdacht, dass die Eventlist ebenfalls den Template-Block "event" nutzt (auch wenn ich mir nicht vorstellen kann, wofür).

Cronjob

Verfasst: 05.05.2007 14:29
von StanleyG
Hallo,

ich habe noch einen Hinweis zum Thema Cronjob.
Und zwar hatte ich versucht, bei unserem Provider 1und1 einen Cronjob einzurichten, der die Calendar.php?cronjob aufrufen würde.
Das wollte aber nicht funktionieren.
Dann habe ich den Teil aus Calendar.php, der als Cronjob laufen soll, in eine andere Datei gesteckt (Calendarcron.php), sodass der Cronjob jetzt ohne die Argumentangabe ?cronjob laufen kann.
Und jetzt klappt es bei 1und1 mit dem Cronjob.
Das bedeutet, dass es besser wäre, die Cronjob-Funktion nicht als Teil der Calendar.php zu haben, sondern grundsätzlich als eine gesonderte Datei, die normal aufgerufen werden kann.

Vielleicht kannst Du das standardmäßig berücksichtigen?
Ich weiß nicht, ob es bei anderen Providern auch Probleme gibt, wenn der Cronjob durch Argumentangabe zur Datei aufgerufen werden soll.

Und dann habe ich noch einen Verbesserungsvorschlag:
Die Terminkategorien im Auswahlfenster (bei Terminerfassung und bei den eigenen Kalendereinstellungen) sollten alphabetisch erscheinen, damit man sich besser orientieren kann (bei mir werden es ca. 30 verschiedene Kategorien sein, die ich nicht alle auf einmal alphabetisch erfassen werde).
Dazu reicht es aus, die Abfrage in der Zeile 127 der Calendar.php von

Code: Alles auswählen

$sql = 'SELECT cat_id, cat_name, read_user_level, read_user_ids, read_group_ids, read_black_uids, edit_user_level, edit_user_ids, edit_group_ids, edit_black_uids FROM '.CALENDAR_CAT_TABLE;
zu

Code: Alles auswählen

$sql = 'SELECT cat_id, cat_name, read_user_level, read_user_ids, read_group_ids, read_black_uids, edit_user_level, edit_user_ids, edit_group_ids, edit_black_uids FROM '.CALENDAR_CAT_TABLE .' order by cat_name';
zu ändern.

Danke
PS: Zu den Screenshots hast 'ne PN.
Stanley

Verfasst: 05.05.2007 20:01
von NoLeader
Hallo, ich bins noachmal :)

Bug: Die "Nächste Termine" werden nicht nach aufsteigender Datumsreihenfolge sortiert.

Antstatt:
Sa, 12.5.2007
Di, 8.5.2007
Do, 10.5.2007


Di, 8.5.2007
Do, 10.5.2007
Sa, 12.5.2007


Kannst du mir ausserdem noch einen Tipp geben, wie ich die Kategorien in den "Nachsten Teminen" anzeigen kann?