SeewolfPK hat geschrieben: 19.06.2023 09:48
Entschuldigung, da ich im Startbeitrag erwähnte, das die EXT ja auch hier verwendet wird, war mir nicht klar, das trotzdem noch der Link erforderlich ist. M.E. gibt es nur diese eine EXT für den Zweck. Habe meinen Erstbeitrag jetzt editiert.
Alles gut Paul. Wenn wir öffentlich verfügbare Exts im Einsatz haben, dann ist es nicht ungewöhnlich, wenn wir modifizierte Varianten davon verwenden. Bei der KB Ext z.B. nutzen wir nicht das Original, sondern einen Fork bei dem mehrere Team Mitglieder (Crizzo, Dr.Death, Mike-on-Tour und ich) Änderungen und Fixes eingebaut haben. Alleine schon mal deswegen, scheidet das Kriterium "hat phpBB.de auch im Einsatz" aus. Des Weiteren antworten hier ja nicht nur Team Mitglieder bei Support Anfragen, sondern auch Benutzer und die können nicht immer wissen, ob wir diese und jene Ext im Einsatz haben und in welcher Form. Zudem haben bei uns im Team ja auch nur Admins Zugriff auf die Exts und das sind bei uns in erster Linie Crizzo und Mungo. Ergo weiss ein Supporter (oder andere Team Gruppen) nicht automatisch, welche Ext gemeint ist.
Das ist in meinem Fall auch schon etliche Jahre her, als ich mich mit dem Thema zuletzt befasst habe und ich habe mindestens 3 Exts in Erinnerung. Eine weitere wäre z.B. die hier:
https://www.phpbb.com/community/viewtopic.php?t=2209726
Da gabs aber mindestens noch eine weitere. Wie du jetzt an meiner Reaktion bemerkt hast, können Missverständnisse entstehen, wenn die Ext, um die es geht, nicht klar benannt wird. Es hat seinen Grund, warum es diese Regel gibt: um von vorneherein unnötige Klärungs-Gespräche (wie dieses hier) sowie unnötige Sucherei nach der besagten Ext zu vermeiden, damit man sich direkt mit der Lösung eines Problems beschäftigen kann und vor allem auch alle Beteiligten von exakt der gleichen Ext sprechen.
Die Quick&Dirty Lösung würde völlig ausreichen.
Mit der Editiermöglichkeit und dem Entfernen kann ich leben. Die User wollen ja in dem neu zu schaffendem Forum Hilfe für eine bestimmte Software haben. Also ist das Interesse, die Vorgabe der Versionsnummer richtig und dauerhaft einzugeben, wohl vorauszusetzen.
Alles klar, dann sind alle Details geklärt und wir können loslegen. Zuerst meine anfänglich erwähnte winzige Änderung:
Editiere:
ext\phpbb\topicprefixes\styles\all\template\event\posting_editor_subject_before.html
Suche:
Ersetze mit:
Code: Alles auswählen
<select name="topic_prefix" id="topic_prefix" required>
Mit dieser winzigen Änderung aktivieren wir beim Browser dessen Formularprüfung für dieses eine Steuerelement. Das heisst der Browser weigert sich, das Formular an phpBB zu senden, solange nicht die Bedingungen erfüllt sind. In dem Fall also, solange der Benutzer kein Element aus der Liste ausgewählt hat. Diese winzige Änderung war wie erwähnt möglich, weil das HTML schon direkt so gestaltet wurde, dass es die nötigen Voraussetzungen dafür erfüllt.
Jetzt durch deine letzte Antwort war dann auch klar, dass das Ganze überhaupt in der Form bei dir Verwendung finden kann. Darum gebe ich dir natürlich auch gleich meine erwähnte "Komfort-Variante" mit:
Code: Alles auswählen
{% if PREFIXES and S_NEW_MESSAGE and not S_PRIVMSGS %}
{% set prefix_forum_ids = [1, 2, 4] %}
{% INCLUDEJS '@phpbb_topicprefixes/js/topic_prefixes.js' %}
<dl style="clear: left;">
<dt><label for="topic_prefix">{{ lang('TOPIC_PREFIX') ~ lang('COLON') }}</label></dt>
<dd>
<select name="topic_prefix" id="topic_prefix"{{ S_FORUM_ID in prefix_forum_ids ? ' required' }}>
<option value="">-----</option>
{% for prefix in PREFIXES %}
<option value="{{ prefix.prefix_id }}"{% if SELECTED_PREFIX == prefix.prefix_tag %} selected{% endif %}>{{ prefix.prefix_tag }}</option>
{% endfor %}
</select>
</dd>
</dl>
{% endif %}
Damit du weisst, wo genau ich etwas geändert habe: In Zeile 2 ist eine neue Zeile, in der kannst du festlegen, für welche Foren (IDs) das gelten soll. In Zeile 7 ist eine geänderte Zeile, mit der wir die Formularprüfung beim Browser erzwingen, aber in Abhängigkeit der Positiv-Liste.
Wenn du bei der Positiv-Liste lieber eine vertikale Listen-Notierung hättest, auch kein Problem, dann kannst du das alternativ so machen:
Code: Alles auswählen
{% if PREFIXES and S_NEW_MESSAGE and not S_PRIVMSGS %}
{%
set prefix_forum_ids = [
1,
2,
4,
]
%}
{% INCLUDEJS '@phpbb_topicprefixes/js/topic_prefixes.js' %}
<dl style="clear: left;">
<dt><label for="topic_prefix">{{ lang('TOPIC_PREFIX') ~ lang('COLON') }}</label></dt>
<dd>
<select name="topic_prefix" id="topic_prefix"{{ S_FORUM_ID in prefix_forum_ids ? ' required' }}>
<option value="">-----</option>
{% for prefix in PREFIXES %}
<option value="{{ prefix.prefix_id }}"{% if SELECTED_PREFIX == prefix.prefix_tag %} selected{% endif %}>{{ prefix.prefix_tag }}</option>
{% endfor %}
</select>
</dd>
</dl>
{% endif %}
Da wäre die Liste übersichtlicher und einfacher wartbar. Wenn du nur ein paar Foren hast, wo das greifen soll, dann reicht auch der Einzeiler der Liste, wie im ersten Code gezeigt. Übrigens habe ich den Code bewusst neutral gestaltet und die Liste ist als Positiv-Liste definiert. Das heisst, das Präfix wird nur bei Foren erzwungen, die explizit in der Liste aufgeführt sind. Wenn du lieber eine Negativ-Liste hättest, auch kein Problem. Dann müsstest du in Zeile 7 statt
S_FORUM_ID in prefix_forum_ids
das hier notieren:
S_FORUM_ID not in prefix_forum_ids
. Dann würde der Präfix-Zwang immer bei allen Foren gelten, die NICHT explizit in der Liste aufgeführt sind.
Die Foren-IDs musst du natürlich durch deine eigenen ersetzen. Das Beispiel stammt von meinem lokalen TB. Teste das mal und gib Bescheid, ob das so reicht.