[BETA][3.2][3.3] Kalender

In diesem Forum können Extension-Autoren ihre Extensions vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von oxpus »

Es gibt ein Problem im Zusammenspiel mit meiner Download Extension:
Beide erstellen Beiträge, die Download Extension bricht aber beim Versuch ab, weil genau an dieser Stelle auch das Event für den Kalender zündet.

Möglich Lösung:
Da der Kalender wohl nicht prüft, dass ein Beitrag ein Kalendereintrag sein soll, habe ich im Event dennoch folgende Änderungen gemacht:
Finde in hjw/calendar/event/event_listener.php

Code: Alles auswählen

	public function send_data_to_table($event)
	{
		global $phpbb_root_path, $phpbb_extension_manager, $phpbb_path_helper, $template, $db, $phpEx, $user, $data, $_POST;

		$this->root_path = $phpbb_root_path . 'ext/hjw/calendar/';
		include($this->root_path . 'includes/constants.' . $phpEx);
		$post_id = $data['post_id'];
Und ersetze dort

Code: Alles auswählen

		$post_id = $data['post_id'];
durch

Code: Alles auswählen

		$post_id = $event['data']['post_id'];
Danach können beide Erweiterungen sauber Beiträge/Themen erstellen, ohne dass sie sich gegenseitig stören.

Ich bitte daher, dieses zu prüfen und in der nächsten Version mit aufzunehmen.

Hinweis:
$data ist in diesem Event bereits im Array $event enthalten und muss daher nicht erst mit global übernommen werden.
In Gegenteil: Durch global wird $data nicht "rechtzeitig" aktualisiert und dem Kalender fehlt an dieser Stelle dann die geforderte Post-ID.
Über $event ist aber genau das gegeben, da $event ja immer aktuell ist (wird ja nach jedem Event aktualisiert) und jedem neuen Event wieder erneut übergeben wird.

Danke.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von HJW »

Hallo oxpus,

danke für den Hinweis. Werde ich sofort machen. Da deine Download-Extension ein unverzichtbarer Bestandteil unserer Vereins-Homepage ist, wird mir da auch nichts anderes übrigbleiben. :grin:
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von oxpus »

Keine Ursache.

Den Fehler machen aber diverse Autoren, beim Speichern eines Beitrags nicht korrekt zu prüfen, ob auch für die eigene Anwendung alle Daten zur Verfügung stehen.
Und bei Extensions passiert das wohl noch schneller...

Das war leider auch schon in den Mods für das phpbb 3.0 so...

Das soll aber jetzt kein Vorwurf sein.
Ich helfe ja gerne mit, Inkompatibilitäten auszubügeln.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von HJW »

Version 0.3.1 ist zum Download bereit.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von oxpus »

HJW hat geschrieben:Version 0.3.1 ist zum Download bereit.
1a!

An dieser Stelle ein erster Verbesserungsvorschlag zu deinem Kalender allgemein:

Du beschreibst in einem Modul, welche Template-Dateien ein Forenbetreiber wie ändern soll, damit diverse Blöcke nicht oder an anderere Stelle angezeigt werden.
Das ist für eine Beta-Version okay, aber das lässt sich auch mit Einstellungen in einem Exstension-ACP-Modul auch steuern. Und zwar:
Option erstellen, ob und wenn ja wo ein Block angezeigt werden soll.
Dann im Listener diese Option in Bedingungen verwenden und entsprechende Daten an das Template-System übergeben.
Die Template-Datenen für die Template-Events kann man dann allesamt erstellen, diese aber komplett mit

Code: Alles auswählen

<!-- IF S_FILE_ON -->
// Inhalt des Template-Files
<!-- ENDIF -->
entsprechend anzeigen oder nicht.

Beispiel:
Im ACP wurde (mit eben einer neuen Optionsseite) angegeben, dass die aktuelle Woche als Kalenderzeile angezeigt werden soll. Sagen wir mal mit dem Konfig-EIntrag 'hjw_cal_weekblock_on', welche in der Board-Config dann gespeichert wird.
Im Event Listener steht die Board-Konfig über $this->config (für alle enthaltenen Methoden im Listener) zur Verfügung wenn man zumindst den Listener so definiert:

Code: Alles auswählen

	public function __construct($root_path, $php_ext, $table_prefix, \phpbb\extension\manager $phpbb_extension_manager, \phpbb\path_helper $phpbb_path_helper, Container $phpbb_container, \phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\auth\auth $auth, \phpbb\template\template $template, \phpbb\user $user)
	{
		$this->root_path				= $root_path;
		$this->php_ext 					= $php_ext;
		$this->table_prefix 			= $table_prefix;
		$this->phpbb_extension_manager	= $phpbb_extension_manager;
		$this->phpbb_path_helper		= $phpbb_path_helper;
		$this->phpbb_container 			= $phpbb_container;
		$this->db 						= $db;
		$this->config 					= $config;
		$this->helper 					= $helper;
		$this->auth						= $auth;
		$this->template 				= $template;
		$this->user 					= $user;
	}
(Enthalten sind jetzt auch diverse andere Objekte, ist eben das Beispiel aus der Download Extension).
Damit lässt sich das meiste, was das Forum bereitstellen kann, schon ohne den Befehl global in allen Listener-Methoden (Funktionen) verwenden.

$this->config beinhaltet dabei nun auch den (neuen) Konfig-Wert für 'hjw_cal_weekblock_on', also

Code: Alles auswählen

$this->config['hjw_cal_weekblock_on']
Somit lässt sich dann steuern, dass der Kalenderblock angezeigt wird oder nicht, in dem man folgendes schreibt:

Code: Alles auswählen

if ($this->config['hjw_cal_weekblock_on'])
{
	$this->template->assign_var('S_HJW_CAL_WEEK_ON', true);
}
Und im betreffenden Event-Template kommt dann an den Anfang der Daten

Code: Alles auswählen

<!-- IF S_HJW_CAL_WEEK_ON -->
und an das Ende nach allem anderen HTML-Code

Code: Alles auswählen

<!-- ENDIF -->
Damit wäre die Daten dann per Option sichtbar oder unsichtbar.

Und auch steuern liese sich, wo der Block angezeigt werden soll.
Nehmen wir man an, über dem Board, unter der Board-Navi im Board-Kopf, über dem Board-Fuß oder unter dem Board (sofern es alle Events gibt, das habe ich jetzt nicht geprüft).
Dann könnte man das als 2. Option dem Admin zur Auswahl geben (Dropdown bietet sich hier an).
Die 2. Option würde dann z. B. lauten: 'hjw_cal_weekblock_position'
Und dazu auch die passende Bedingung in Listener:

Code: Alles auswählen

if ($this->config['hjw_cal_weekblock_on'])
{
	switch($this->config['hjw_cal_weekblock_position'])
	{
		case 1:
			$this->template->assign_var('S_HJW_CAL_WEEK_TOP', true);
		break;
		case 2:
			$this->template->assign_var('S_HJW_CAL_WEEK_NAVI', true);
		break;
		case 3:
			$this->template->assign_var('S_HJW_CAL_WEEK_FOOTER', true);
		break;
		case 4:
			$this->template->assign_var('S_HJW_CAL_WEEK_BOTTOM', true);
		break;
	}
}
Dann wären auch alle 4 Event-Template-Dateien zu erstellen (mit jeweils selben Inhalt, aber halt den entsprechenden Dateinamen für die Template-Events) und in jeder dieser 4 Event-Template-Dateien dann der bereits zuvor genannte Switch nur eben wie folgt:

Code: Alles auswählen

<!-- IF S_S_HJW_CAL_WEEK_TOP -->
// Inhalt der Template-Datei
<!-- ENDIF -->
Hier mal nur das Beispiel für die Anzeige der Kalenderwoche oberhalb des Forums. Der Rest sollte nun verständlich sein.

Klar müssten dann immer alle 4 Template-Dateien vorhanden sein und bei Änderungen müsste man alle 4 Dateien gleichermaßen bearbeiten, je nach verwendeter Entwicklungsumgebung/Testeditor geht das aber dennoch recht zügig.
Vorteil: Der Admin muss nicht die Template-Dateien selber anpassen, wenn er etwas nicht oder woanders angezeigt bekommen will und im Falle eines Extension-Updates wäre ggf. eh wieder alles auf Standard zurückgesetzt und der Admin müsste erneut die Dateien anpassen.

Das nur mal als Vorschlag von mir.
Ich weiß, der Kalender hat Beta-Status und ist aktuell schon sehr gut geworden, aber mit der zuvor genannten Erweiterung könnte man das Leben des Admins deutlich erleichern, auch wenn man beim Programmieren klar mehr Aufwand hat.
Und wenn diese Einstellungsseite auch mit eigenen Zugriffsrechten versieht, könnte man die Anzeigepositionen der Kalenderelemente auch noch gezielt bestimmten Personen erlauben (z. B. nur Forengründer oder einem User, der für das Forumlayout als solches zuständig ist). Das aber nur mal am Rande erwähnt...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von HJW »

Hallo oxpus,

das Problem war oder ist, dass es für die Stelle, für die ich die Wochenübersicht eingeplant hatte, es noch kein Template-Event gab.
In der 3.1.3 wird es da einen geben.
Aber die Idee mit dem ein und ausschalten der verschiedenen Blocks im ACP hat was.
Dann wird auch die Anleitung kürzer :wink:
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5390
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von oxpus »

HJW hat geschrieben:Hallo oxpus,

das Problem war oder ist, dass es für die Stelle, für die ich die Wochenübersicht eingeplant hatte, es noch kein Template-Event gab.
Ich hatte noch nicht geschaut, wo es überall Events gibt.
Aber danke für den Hinweis.
HJW hat geschrieben:Aber die Idee mit dem ein und ausschalten der verschiedenen Blocks im ACP hat was.
Dann wird auch die Anleitung kürzer
Keine Ursache.
Vielleicht kannst du ja die komplette Anleitung durch eben die Optionen ersetzen und den verbleibenden Teil der Anleitung dort mit aufführen.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
Bobbele1984
Mitglied
Beiträge: 3
Registriert: 04.03.2009 15:59

Re: [Beta] Kalender

Beitrag von Bobbele1984 »

Hallöchen,

ich habe mal testweise die Kalender-EXT auf unserem Testboard aufgesetzt. Bisher macht das Ganze einen schon recht ausgegorenen Eindruck auf mich.
Was mir allerdings bisher fehlt (vielleicht habe ich es bisher auch einfach übersehen), ist die Möglichkeit, verschiedene unterschiedliche Termine auf einen Tag zu legen.

Da das von mir betreute Internetradio bisher die Kalender-MOD von alightner nutzte,
wo mehrere unterschiedliche Termine, z.T. auch mit wiederkehrenden Ereignissen angelegt werden können,
würde ich mich riiiiesig freuen, wenn die Nachfolge-EXT diese Punkte aufweist. :)
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von HJW »

Hallo,

du meinst die Tagesübersicht? Tut mir Leid, aber ich kann mir im Moment nicht vorstellen, dass ich das machen werde.
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: [Beta] Kalender

Beitrag von HJW »

Neue Version:
0.4.0: Einstellung im ACP wo bzw. ob die Wochenübersicht angezeigt wird.

Edit: Bitte noch nicht nutzen. Mir ist gerade noch ein Fehler aufgefallen.

Edit2: Fehler behoben.
Antworten

Zurück zu „Extensions in Entwicklung“