Plugin-Entwicklung-Das-Close-Old-Threads-Plugin
| Designvorlagen |
Im folgenden Beispiel wird die Entwicklung des Plugins "Close Old Threads" beschrieben. 0) AnforderungenOft passiert es, dass gerade neue Mitglieder ein altes Thmea über die Suchfunktion auffinden und dort posten, obwohl bereits eine lange Zeit kein Beitrag mehr in diese mThema geschrieben wurde. Für den Administrator ist es aber unzumutbar, ständig das Forum zu kontrollieren, um alte Beiträge zu schließen. Das neue Plugin soll dem Admin diese Arbeit abnehmen und beim Aufruf eines Themas automatisch prüfen, ob ein Thema zu alt ist oder nicht.<br> Für Themen die ein bestimmtes Alter überschritten haben, kann ein Warnhinweis angegeben werden, für noch ältere Themen werden komplett geschlossen. Der Administrator soll festlegen können, nach wie vielen Tagen eine Warnung bzw. eine Schließung erfolgt. Außerdem solle es möglich sein Gruppen zu definieren, die von der Schließung nicht betroffen sind. 1) Neues Plugin erstellenIn der Foren-Administration unter Plugins->Plugin Entwicklung können neue Plugins erstellt werden. Plugin ID & Plugin Name Die ersten beiden Werte, die bei der Erstellung eines Plugins angegeben werden müssen sind die Plugin ID und der Plugin Name. Die ID ist der interne Name des Plugins. Er darf keine Sonderzeichen enthalten. Der Pugin Name ist der Name des Plugins, den später der Endbenutzer zu sehen bekommt. [codeexample] Plugin ID: threadautoclose Plugin Name: Close Old Threads [/codeexample] 2) Elemente des Plugins definierenEin Plugin besteht aus folgenden Elementen: [xul] [xli]Content-Element Template-Elemente, Javascript oder HTML-Dateien [/xli] [xli]Config-Variablen Einstellungen für das Plugin [/xli] [xli]Daten Variablen In diesen Variablen werden Werte und Daten gespeichert, die das Plugin benötigt. Datenvaraiblen werden immer einer Quelle (Origin) zugeordnet. Wir eine Variable z.B. dem Benutzerprofil zugeordnet, stehen die gespeicherten Werte später immer zur Verfügung, wenn ein benutzerprofil geöffnet ist. [/xli] [xli]Globale Variablen Funktionieren genau wie Daten-Variablen, allerdings stehen die hier gespeicherten Werte später auf allen Seiten des Forums zur Verfügung. Dies kann die Performanz negativ beeinflusssen und sollte daher vorsichtig eingesetzt werden. [/xli] [/xul] [codeexample] Für das Close Old Threads Plugin benötigen wir keine Variablen, die Daten speichern. Allerdings möchten wir dem Administartor einige Einstellungen ermöglichen, daher legen wir drei Config-Variablen an: Variablen 1) maxdays_messageage_warning Nach X Tagen soll eine Warnung angezeigt werden, dass das Thema schon alt ist. Die Variable ist von Typ int und bekommt den Standardwert 180 2) maxdays_messageage_close Nach X Tagen soll das Thema ganz geschlossen werden. Die Variable ist von Typ int und bekommt den Standardwert 360 3) plugin_exceptions Hier können Gruppen angegeben werden, welche auch nach dem erreichen von maxdays_messageage_close noch antworten können. Die Variable ist von Typ grouprightsund bekommt den Standardwert administrator Templates Das Plugin soll später an zunächst 2 Stellen im Forum aktiv werden: Einmal beim Schreiben eines Beitrags, und einmal in der Themenansicht. Wir benötigen daher 2 neue Template-Elemente: Plugin Template Element "New Message" ![]() Wir ordnen unser neues Element dem Foren-Template "Neuen Beitrag Schreiben" zu und erreichen damit, dass der Code des Templates immer ausgeführt wird, wenn das Template "Neuen Beitrag Schreiben" aufgerufen wird. [/codeexample] Desweiteren können wir festlegen, wann genau das Plugin Template ausgeführt werden soll: Header -> das Plugin-Template wird direkt VOR dem Foren-Template ausgeführt. Footer -> das Plugin-Template wird direkt NACH dem Foren-Template ausgeführt. Inline-Element -> Die ermöglich die Ausführung der Plugin-Codes innerhalbt des Foren-Templates. Hierzu gibt es in den Foren-Templates Markierungen. Im "Neuen Beitrag Schreiben"-Template gibt es eine solche Markierung z.B. innerhalb des "Beitrag Schreiben" Formulars. Zu den Markierungen in den Template -Elementen wird es in Kürze noch ein eigenes Tutorial geben. [codeexample] Unsere Einstellungen für das Element "New Message" lauten also: Template: Neuen Beitrag Schreiben Inline-Element: "new_message_in_form" (Name der Markierung im Foren Template) Template Name: new_message Analog dazu wird auch das Template "topic" angelegt: Template: Themen Ansicht Header: JA - das Plugin-Template soll vor dem Laden der Beiträge angezeigt werden. Template Name: topic [/codeexample] 3) Plugin Elemente schreibenWir haben nun alle Elemente des Plugins definiert und den jeweiligen Foren-Templates zugeordnet. Im nächsten Schritt schreiben wir nun den Code des Plugins Plugin-Templates funktionieren fast genau wie normale Foren-Templates. Es stehen alle Foren-Variablen zur Verfügung, die auch im verknüpften Template-Element verwencet werden. Außerdem stehen die Variablen des Plugins zur Verfügung. Auf den Wert der Variablen maxdays_messageage_warningzum Beispiel kann im Plugin Template mit {{plugin_threadautoclose_config_maxdays_messageage_warning}} zugegriffen werden. Für Rechtevariablen erzeugt das System automatisch eine zusätzliche boolean-Variable. D.h während die Variable {{plugin_threadautoclose_config_plugin_exceptions}} die Gruppen-Ids der Gruppen enthält, die von der Themenschließung nicht betroffen sind, enthält {{plugin_threadautoclose_config_plugin_exceptions_boolean}} einen true/false Wert, der für den aktuellen Benutzer angepasst wird. [codeexample] Das Element new_message setzt folgendes um: Beim laden von "Neuen Beitrag Schreiben" prüfen wir ob 1) Das maximale Themenalter erreicht wurde 1a) Falls ja: Prüfen Ob das Mitglied in der "Ausnahmen"-Gruppe ist. 1aa) Falls ja: Warnhinweis anzeigen, dass das Thema eigentlich geschlossen wäre 1ab) Falls nein: Thema als geschlossen anzeigen, Laden des "Beitrag schreiben" Templates unterbinden 2) Das Themenalter für eine Warnung reicht: 2a) Falls ja: Warnung anzeigen Das könnte dann z.B. so aussehen: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 Das Element "topic" wird auf der Themen Ansicht geladen. Für die erste Version des Plugins beschränken wir uns darauf, die Schnellantwort auszublenden, wenn das Limit überschritten wurde (da Mitglieder ja sonst auf diesem Wege dennoch Beiträge schreiben könnten). {{secs_since_message.startint}}{{server_time}}-{{thread_lastmessage_ts}}{{secs_since_message.end}} {{days_inactive.startint}}{{secs_since_message}}/60/60/24{{days_inactive.end}} {{limitreached.start}}0{{limitreached.end}} {{days_inactive>plugin_threadautoclose_config_maxdays_messageage_close.start}} {{plugin_threadautoclose_config_plugin_exceptions_boolean==true.start}} {{limitreached.start}}1{{limitreached.end}} {{plugin_threadautoclose_config_plugin_exceptions_boolean==true.else}} {{reply_quick.start}}0{{reply_quick.end}} {{plugin_threadautoclose_config_plugin_exceptions_boolean==true.end}} {{days_inactive>plugin_threadautoclose_config_maxdays_messageage_close.end}} 4) TestenWenn alles klappt, sollten nun beim beantworten alter Themen keine Antwort mehr möglich sein. ![]() 5) VeröffentlichenAn dieser Stelle ist die erste Version des Plugins fertig für die Veröffentlichung im Plugin-Store. Dazu geben wir in den Plugin-Einstellungen die gewünschte Versionsnummer an (Falls bereits eine Version des Plugins veröffentlicht wurde muss die versionsnummer höher sein als zuvor!) und klicken auf "In Plugin Store veröffentlichen. Da wir bei den Plugin-Einstellungen festgelegt haben, dass das Plugin sichtbar für alle ist (Public Store) erscheint das Plugin nun im öffentlichen Plugin Store, sobald ein Xobor Mitarbeiter den Code überprüft und für gut befunden hat. Ist das Plugin erst einmal im Plugin Store, kann es von allen Xobor Foren mit einem Klick installiert und verwendet werden. 6) ErweiternDie Arbeit hört hier natürlich nicht auf. Man könnte noch Variablen hinzufügen, die dem Admin erlauben, selbst die angezeigten Texte festzulegen. Oder man fügt bei der Themen-Ansicht gleich das "Thema geschlossen"-Icon ein wenn das Antworten nicht gestattet ist. Nachdem ein Plugin verändert wurde, muss eine neue Versionsnummer angegeben werden, bevor es im Plugin Store veröffentlicht werden kann. Ist eine neue Version verfügbar, können alle Foren das Update mit einem Klick installieren. |
Login
BliBla Blubb news
😀 😃 😄 😁 😆 😅 äöüöüäöü ?$§ß
01.06.2026 13:48

iggy hat 3 neue Kommentare zum Bild Professional_Mode_A_vlog_style_video_of_a_slightly erstellt.
adasd
29.05.2026 23:001780088438

iggy hat einen Kommentar zum Bild Master_Mode_A_dynamic_vlog_style_video_of_a_ _1_ erstellt.
mit utf-8 und ümlaut 😀 😀 😀
29.05.2026 22:591780088375

iggy hat 2 neue Kommentare zum Bild Professional_Mode_A_realistic_vlog_style_video_at_ erstellt.
BLABLABLA
28.05.2026 10:401779957617

iggy hat einen Kommentar zum Bild Master_Mode_A_dynamic_vlog_style_video_of_a_ _1_ erstellt.
asdasd
öäüdfasd
21.05.2026 23:251779398734

iggy und 2 Gäste haben 3 neue Beiträge im Thema Haat € und äüöl geschrieben.
öäüä
asdöä. äöüöü asda s
21.05.2026 23:241779398653

iggy und 31 Gäste haben 32 neue Beiträge im Thema MenÃŒ-Farbe Àndern ohne alles zu verhunzen? geschrieben.
asdasd äöüü asdasd
%usernames% findet das Top 👍
😀 😀 😀 asdfadasdfasdasdaasdasd
27.04.2026 17:561777305395

iggy hat einen neuen Beitrag im Thema MenÌ-Farbe Àndern ohne alles zu verhunzen? geschrieben.
asdasdsad 😉
13.02.2026 10:141770974086

Angeliclaw Mirana hat das Thema MenÌ-Farbe Àndern ohne alles zu verhunzen? erstellt
Hey zusammen,ich habe gestern mein kleines Schrauberforum erstellt und spiele gerade mit den Designfarben rum. Ich will eigentlich nur, dass das MenÌ oben dunkelblau wird und die Links im Inhalt hellgrau bleiben. Sobald ich aber unter "Design anpassen" bei den Farben etwas Àndere, fÀrbt Xobor Ìb...
11.02.2026 19:271770834443

Angeliclaw Mirana, iggy und ein Gast haben 5 neue Beiträge im Thema Skill builder test topic geschrieben.
Reply+test+after+limit+increase.%0A-+Step+1%3A+GET+reply+form+to+grab+unique+token.%0A-+Step+2%3A+POST+with+writemessage%3D1+%2B+unique+token+using+same+session.%0AWorks+now+that+daily+limit+reset.%0A
Test body
Automated test post while figuring out how to control Xobor via curl. This will get cleaned up after the agent skill is ready.
09.02.2026 11:251770632708

Ein Gast hat einen Kommentar zum Bild Professional_Mode_A_realistic_vlog_style_video_at_ erstellt.
asdasd
%usernames% hat sich bedankt!
%usernames% hat sich bedankt!
ghmnfhjm
asdasd
16.09.2025 08:091758002976

iggy hat einen Kommentar zum Bild Master_Mode_A_dynamic_vlog_style_video_of_a_ _1_ erstellt.
jo
16.09.2025 08:091758002970

iggy hat einen Kommentar zum Bild Master_Mode_A_dynamic_vlog_style_video_of_a_ _1_ erstellt.
jo
23.06.2025 12:451750675554

iggy hat das Video replicate-prediction-nrb5vz7cedrmc0cqkffb1m8cqc in der Galerie hochgeladen.
sdasdasd[[File:Work.mp4]]
sdasdasdyxc[[File:replicate-prediction-nrb5vz7cedrmc0cqkffb1m8cqc.mp4]]sasdasd
16.06.2025 14:471750078026

iggy hat das Video Master_Mode_A_vlog_style_video_of_a_slightly in der Galerie hochgeladen.
%usernames% hat sich bedankt!
%usernames% findet das nicht gut!
%usernames% hat sich bedankt!
13.06.2025 09:561749801372

iggy hat das Video ssstik.io_@koalogs_1749515153855 in der Galerie hochgeladen.
sdfsddfsdf
dsfsadas<da
sdfsdfsdf
KOKO wants to fly Fly
asdasdasd
dasdasdasdasd
asdasdasd
11.10.2024 10:571728637077

iggy hat die Wiki-Seite Anleitung | Blog | Neuen Beitrag erstellen bearbeitet
[[File:spotify.JPG|none|auto]]asdadadsadsadadasdadadsadasdasdasdasasdasdasdasdfasdasdaadasdadsasdasdadsdgfsfd
asdasdad
asdasdads
sadasdasda
asdasdad
24.06.2024 13:081719227320

iggy hat einen Kommentar zum Bild f11769157t538580p7341263n2_bChDTupK erstellt.
asdasdasd
%usernames% hat sich bedankt!
%usernames% hat sich bedankt!
Wer ist Online?
0 Mitglieder und 2 Gäste sind OnlineBesucher Statistiken
2 Aktive User
0 Mitglieder und 2 Gäste sind Online
0 Mitglieder und 2 Gäste sind Online
Besucherrekord
227 Benutzer gleichzeitig online (20.03.2025 22:15)
Besucherzähler
Heute waren 2 Gäste online.
Forum Statistiken
| Themen | 1319 |
| Beiträge | 16797 |
| Mitglieder | 353 |
| Neuestes Mitglied | 😃😄😁😆😅😂 |

