[3.3] [Fork] Recent Topics NG

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
chris1278
Mitglied
Beiträge: 3563
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von chris1278 »

Luke auf dein Beispiel zu kommen das hier:

$ext_list_order = $config_text['order'] ?? [];

Das heißt entweder ist in dem Array text_list_order der eintrag der in der $config_text['order'] enthalten drinne oder der bleibt leer.

Sprich das ?? stet für oder bezogen auf die if Abfrage struktur.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17407
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von Dr.Death »

Code: Alles auswählen

$ext_list_order = $config_text['order'] ?? [];
Die Variable $ext_list_order wird gefüllt mit:
wenn vorhanden bzw, definiert mit dem Inhalt von $config_text['order'], wenn nicht, dann mit []
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2197
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von LukeWCS »

@chris1278
Der NCO ist eine Kombination von isset() und einem normalen Ternary. Wird vielleicht verständlicher, wenn man das mit einem normalen Ternary notiert und beides übereinander stellt:

Code: Alles auswählen

$ext_list_order = $config_text['order'] ?? [];					// NCO
$ext_list_order = isset($config_text['order']) ? $config_text['order'] : [];	// Ternary
Da wird der NCO genutzt um abzufragen, ob die Variable - in dem Fall ein Array-Element - überhaupt vorhanden ist.

Im ConfirmBox JS nutze ich den NCO, um mir umständliche if/else zu sparen, weil ich der betreffenden Funktion im Prinzip nur true/false übergeben muss, aber zusätzlich noch einen dritten Zustand brauche:

https://github.com/IMC-GER/RecentTopics ... ics.js#L72

Da wird der NCO also nicht genutzt um abzufragen ob die Variable existiert, sondern ob die Variable den Wert null hat.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 549
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von IMC »

Dem wäre noch hinzuzufügen das der NCO mehrfach verkettet werden kann. Der erste Wert der nicht null ist wird der Variablen zugewiesen.

In einer Extension von mir habe ich ein dreifach if / else if Konstrukt. Mit dem NCO hätte ich nur eine Zeile benötigt.
var = eleExist ?? eleExist ?? eleExist;
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2197
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von LukeWCS »

IMC hat geschrieben: 25.11.2023 17:50 Das neue Releases mache ich am Montag.
Kollege, warte bitte noch damit. Beim Einbau der neuen ConfirmBox Klasse ist mir im Template etwas aufgefallen, das aber zwischenzeitlich kurz wieder in Vergessenheit geriet.

Thema PullDown's im ACP und UCP, das wurde ein bisschen umständlich realisiert. Zum einen wird im PHP zuerst pro Menü ein Array gebildet, welches dann mit einer Schleife abgearbeitet wird. Das ist unnötig, weil wir im Template eh schon eine Twig Schleife haben. Also einmal Schleife reicht, da kann man alles erledigen. ^^ Des Weiteren wird in PHP ein HTML Attribut gesetzt, nämlich selected, genau das fiel mir im Template auf, weil es dort fehlte in unserem Makro. HTML im PHP sehen die Valis eh nicht gerne, sowas gehört ins Template. Sowas macht man nur, wenn's anderweitig (im Template) gar nicht oder nur sehr umständlich ginge.

https://github.com/IMC-GER/RecentTopics ... #L100-L130

Ich würde da die EMP Methode nehmen: a) weniger Code (13 statt 31 Zeilen), b) alles da wo es hingehört und c) trotzdem einfach zu ändern/erweitern. Und so nebenbei passt das select() Makro dann auch zum switch() Makro bez. Parameter.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 549
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von IMC »

LukeWCS hat geschrieben: 27.11.2023 16:09... warte bitte noch damit.
Das kann ich.
LukeWCS hat geschrieben: 27.11.2023 16:09 HTML im PHP sehen die Valis eh nicht gerne, sowas gehört ins Template. Sowas macht man nur, wenn's anderweitig (im Template) gar nicht oder nur sehr umständlich ginge.
So etwas ein ähnliches Sachverhalt habe ich im Moment. Da muss im ACP eine Benutzereingabe an einer Stelle eingefügt werden, an der es kein Event dazu gibt.
Da bleibt mir nur ein Element zu erstellen und mit JS zu positionieren bzw. HTML-Code an der entsprechenden Stelle mit JS einzufügen.
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2197
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von LukeWCS »

Des Weiteren habe ich auch <input type="number"... und <input type="text"... durch Standard Makros von WWH ersetzt. Ausserdem hatten wir bei RT switch() und select() redundant sowohl im ACP als auch im UCP Template. Stattdessen habe ich die beiden bisherigen Makros und die beiden neuen als eine Art Makro Library eingerichtet, so das man diese universell in allen Frontends ACP/MCP/UCP inkludieren kann. Somit fällt die Redundanz weg und man kann zentral in nur einer Datei die ganzen Input Elemente anpassen.
IMC hat geschrieben: 27.11.2023 17:55 So etwas ein ähnliches Sachverhalt habe ich im Moment. Da muss im ACP eine Benutzereingabe an einer Stelle eingefügt werden, an der es kein Event dazu gibt.
Da bleibt mir nur ein Element zu erstellen und mit JS zu positionieren bzw. HTML-Code an der entsprechenden Stelle mit JS einzufügen.
Hmm, aber da hab ich was im Hinterkopf gespeichert. Meines Wissens gibt es für die ACP Seiten eine standardisierte Methode, zusätzliche Optionen und Elemente einfügen zu können. Also bevor du mit JS irgendwelche DOM Injections versuchst, recherchiere mal danach.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 549
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von IMC »

LukeWCS hat geschrieben: 27.11.2023 18:55 Hmm, aber da hab ich was im Hinterkopf gespeichert. Meines Wissens gibt es für die ACP Seiten eine standardisierte Methode, zusätzliche Optionen und Elemente einfügen zu können. Also bevor du mit JS irgendwelche DOM Injections versuchst, recherchiere mal danach.
Ich kenne die Möglichkeit über die Events. Ich habe auch schon Arrays gesehen aus denen die ACP Seite generiert wird.
Da wo ich rein will gibt es nach meiner Recherche nur die Event Methode.

Bei den folgenden Code muss ich in der Datei acp_forums.html in das fieldset von #forum_cat_options. Ich bin mir sicher, dass dies nur über den DOM funktioniert. Lasse mich aber auch gern eines besseren belehren.

Code: Alles auswählen

	</dl>
	<!-- EVENT acp_forums_main_settings_append -->
	</fieldset>

	<div id="forum_cat_options">
		<fieldset>
			<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
		<dl>
			<dt><label for="display_active">{L_DISPLAY_ACTIVE_TOPICS}{L_COLON}</label><br /><span>{L_DISPLAY_ACTIVE_TOPICS_EXPLAIN}</span></dt>
			<dd><label><input type="radio" class="radio" name="display_active" value="1"<!-- IF S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
				<label><input type="radio" class="radio" name="display_active" value="0"<!-- IF not S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
		</dl>
		</fieldset>
	</div>

	<div id="forum_post_options">
		<fieldset>
			<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
		<!-- EVENT acp_forums_normal_settings_prepend -->
		<dl>
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2197
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von LukeWCS »

IMC hat geschrieben: 27.11.2023 20:42 Da wo ich rein will gibt es nach meiner Recherche nur die Event Methode.
Falls du HTML Events meinst, da biste nicht auf dem richtigen Gleis, hier sind die PHP Events relevant.

Inzwischen hab ich das wiedergefunden, das war die Ext Light Box wo ich das gesehen habe:

https://www.phpbb.com/customise/db/extension/lightbox/

Guckst du dort: event\listener.php ab dem Kommentar "Add Lightbox settings to the ACP".
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 549
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.2] [3.3][Fork] Recent Topics

Beitrag von IMC »

Genau das meinte ich mit meiner Aussage.
Ich habe auch schon Arrays gesehen aus denen die ACP Seite generiert wird.
Die Seite Forum bearbeiten :: xxx funkioniert so nicht. Dort gibt es auch nicht das Event core.acp_board_config_edit_add. Die ist sozusagen, altbacken.
Gruß, Thorsten
Antworten

Zurück zu „Extensions in Entwicklung“