Dieses Plugin ist nun im Grunde entwickelt und getestet.
Funktionen
Ich mag es nicht wirklich, seine Funktionen zu erklären, daher habe ich mich entschieden, Bilder zu verwenden, um zu veranschaulichen, was es tun kann.
Benutzer
Es fügt einen Button direkt nach dem topic-admin-button für den Ersteller eines öffentlichen Themas hinzu
PM wird nicht unterstützt, da ich es nicht für notwendig halte.
Befolgen Sie nach der Installation unbedingt die folgenden Anweisungen, bevor Sie das Plugin aktivieren
Bevor Sie dieses Plugin aktivieren, müssen Sie ein Konto erstellen, das als “User Assistant Bot” verwendet wird. Obwohl dieses Plugin automatisch einen Bot-Benutzer erstellen oder den vorhandenen @Discobot verwenden kann, empfehle ich dies nicht, da die vom Plugin erstellten Bot-Benutzer nicht im Admin-Panel geändert werden können. Sie können ihm beliebige Berechtigungen erteilen, da der relevante Code speziell geschrieben ist, damit der Bot immer als Admin agiert. Ich schlage jedoch vor, ihm am besten Admin- oder Moderationsrechte zu erteilen. Während der Entwicklung treten manchmal unbekannte Fehler auf, die ich nicht stabil reproduzieren kann, weil dies der Grund ist.
Anschließend müssen Sie ein Thema erstellen, das eine private Nachricht oder ein öffentliches Thema sein kann. Füllen Sie dessen topic_id in SiteSetting.topic_op_admin_logger_topic ein. Wenn topic_op_admin_enable_topic_log aktiviert ist, erstellt der oben genannte Bot detailliertere Protokollbeiträge innerhalb des Themas.
Nach der Erstellung des User Assistant Bots notieren Sie dessen Benutzer-ID und füllen Sie diese dann in SiteSetting.topic_op_admin_bot_user_id oben ein.
Das Öffnen bestimmter Einstellungen ohne korrekte Befolgung der obigen Schritte kann zu Fehlern oder sogar zum Absturz Ihrer Website führen
Haben Sie in Erwägung gezogen, zu prüfen, ob der Bot mit der Kategorie-Mod-Gruppe verknüpft werden kann? Als vollständiger Mod/Admin ist es meiner Meinung nach riskant.
Es gibt ein paar Plugins, die in der Plugin-Kategorie als experimentell gekennzeichnet waren, bis sie als aus der Entwicklungsphase heraus betrachtet wurden, wie z. B. Who’s Online.
Vielleicht kann sich @Canapin die Kategorie ansehen und mit Ihnen darüber sprechen.
Plugins sind Code, der neben Discourse läuft. Es ist kein Problem für den Bot, beliebige Berechtigungen zu haben, von Admin bis TL0, da er tatsächlich nur ein Objekt von Codeoperationen ist und unbegrenzte Berechtigungen hat.
Tatsächlich habe ich diesen Teil des Plugins nun fertig entwickelt. Ich wäre jedoch vorsichtig, dieses Plugin unter Plugin zu veröffentlichen, angesichts der katastrophaleren Folgen, wenn ein Plugin (anstelle einer Theme-Komponente) fehlschlägt.
Ich werde es offiziell veröffentlichen, nachdem das Plugin auf meinem Forum gestartet wurde und nach einer Überprüfungsphase.
@Lhc_fl das sieht super nützlich aus, aber erlaubt es dem OP, in seinem eigenen Thema zu posten, während es geschlossen ist, so wie es ein Moderator oder Administrator könnte? Für uns scheint das ein viel besserer Ablauf zu sein, als es zu entsperren, zu posten und dann wieder zu sperren.
Ich plane, diese Funktion hinzuzufügen – aber ich war in letzter Zeit beschäftigt und habe nicht viel Zeit, mir mein Plugin anzusehen. Jeder, der interessiert ist, kann einen Pull-Request einreichen.
Ist es möglich, dies zu einer Theme-Komponente zu machen? Mehr Leute können dies nutzen,
wir haben keine Berechtigung, Plugins auf der Instanz zu installieren, könnten aber Theme-Komponenten installieren.
Könnten Sie „Themen aufteilen und zusammenführen“ zur Berechtigungsliste hinzufügen?
Danke…
Es tut mir leid, dass dieses Plugin aufgrund des Upgrades von Ember.js nicht mit der neuen Version von Discourse kompatibel ist, aber ich bin jetzt zu beschäftigt, um es zu beheben. Wenn jemand bereit ist, es zu beheben, bitte PR es auf Github.
chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
SyntaxError: Unerwartetes Token '<', „< !DOCTYPE „... ist kein gültiges JSON
at D.parse [als parseJSON] (<unbekannt>)
at l (chunk.7b3110aa5b5be8…1d8cd9.js:393:63167)
at p (chunk.7b3110aa5b5be8…1d8cd9.js:393:63847)
at k (chunk.7b3110aa5b5be8…41d8cd9.js:308:3688)
at w (chunk.7b3110aa5b5be8…41d8cd9.js:308:3581)
at f (chunk.7b3110aa5b5be8…41d8cd9.js:308:3077)
at invoke (chunk.7b3110aa5b5be8…1d8cd9.js:121:10063)
at m.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:9140)
at g.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:11012)
at q._end (chunk.7b3110aa5b5be8…41d8cd9.js:121:16062)
at q.end (chunk.7b3110aa5b5be8…41d8cd9.js:121:13189)
at q._run (chunk.7b3110aa5b5be8…41d8cd9.js:121:16576)
at q.run (chunk.7b3110aa5b5be8…41d8cd9.js:121:13722)
at c (chunk.7b3110aa5b5be8…41d8cd9.js:161:53419)
at t.error (chunk.7b3110aa5b5be8…d8cd9.js:302:131483)
at l (chunk.7b3110aa5b5be8…1d8cd9.js:191:58317)
at Object.fireWith [als rejectWith] (chunk.7b3110aa5b5be8…1d8cd9.js:191:59062)
at C (chunk.7b3110aa5b5be8…41d8cd9.js:194:5783)
at XMLHttpRequest.<unbekannt> (chunk.7b3110aa5b5be8…41d8cd9.js:194:8211)
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
p @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
k @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
w @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
f @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
c @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
t.error @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
fireWith @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
C @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
XMLHttpRequest.send
send @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
ajax @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
o @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
e @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
D @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
submit @ request-op-admin-form.js:106
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_runExpiredTimers @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
setTimeout
setTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_installTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_reinstallTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
T @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
_triggerAction @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
click @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421