Seite 10 von 164

Re: [Beta] Kalender

Verfasst: 11.01.2015 09:38
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.

Re: [Beta] Kalender

Verfasst: 11.01.2015 10:13
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:

Re: [Beta] Kalender

Verfasst: 11.01.2015 10:32
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.

Re: [Beta] Kalender

Verfasst: 11.01.2015 11:19
von HJW
Version 0.3.1 ist zum Download bereit.

Re: [Beta] Kalender

Verfasst: 11.01.2015 11:21
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...

Re: [Beta] Kalender

Verfasst: 11.01.2015 11:40
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:

Re: [Beta] Kalender

Verfasst: 11.01.2015 13:28
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.

Re: [Beta] Kalender

Verfasst: 12.01.2015 00:03
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. :)

Re: [Beta] Kalender

Verfasst: 12.01.2015 09:50
von HJW
Hallo,

du meinst die Tagesübersicht? Tut mir Leid, aber ich kann mir im Moment nicht vorstellen, dass ich das machen werde.

Re: [Beta] Kalender

Verfasst: 12.01.2015 11:25
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.