[Inspiration & Experiment] Der „Daishi-Quote-Connector“ (v3)
Hallo zusammen,ich habe mein Zitat-Experiment weiterentwickelt! Da jedes Forum durch unterschiedliche Tarife (vom Gratis-Paket bis zum -Business-Tarif)
und Plugins anders reagiert, habe ich den Code komplett neu aufgebaut.Dies ist ein Lösungsansatz und eine Inspiration für alle, die das "Zitate-Vormerken" auch beim Bearbeiten von Beiträgen nutzen möchten.
Was ist neu in v3?
1.) Diagnose-System: Das Script erkennt nun selbst, wenn das Forum-System den Zugriff blockiert, und gibt eine Info-Meldung aus.
2.) Tarif-Sicherheit: Es nutzt eine stabilere Logik, um Konflikte mit anderen Plugins (besonders in den großen Business-Tarifen) zu vermeiden.
3.) Visualisierung: Die Zitat-Box wird direkt über dem Editor-Feld platziert und farblich hervorgehoben.
<script type="text/javascript"> /** * DAISHI'S QUOTE-CONNECTOR (v3) * Konzeptstudie: Bringt die Zitat-Box in den Bearbeiten-Modus */ (function($) { $(document).ready(function() { // Prüfung: Sind wir im Editor? if (!window.location.href.match(/(editpost|action=edit)/)) return;
console.log("Daishi-System: Analyse startet...");
function renderQuoteBox() { var $box = $('#xQuotesInsertDiv');
if ($box.length > 0) { // Erfolg: Box stylen und über den Editor schieben $box.prependTo("#edit_form, .nx_edit_form"); $box.attr('style', 'display: block !important; background: #fff9c4; border: 2px solid #fbc02d; padding: 20px; margin-bottom: 20px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);');
// Branding if ($('#daishi-tag').length === 0) { $box.append('<div id="daishi-tag" style="font-size:10px; color:#9c7b16; text-align:right; margin-top:10px; font-style:italic;">Experimental-Modus: Daishi-Fix v3</div>'); } } else { // Diagnose-Meldung, falls die Box systemseitig fehlt console.warn("Daishi-Diagnose: Box nicht im System gefunden."); $('<div style="background:#f4f4f4; color:#666; padding:15px; border:1px dashed #ccc; margin-bottom:15px; border-radius:8px;">' + '<strong>Hinweis zum Zitat-Experiment:</strong><br>' + 'Die Zitat-Box konnte aktuell nicht geladen werden. Mögliche Gründe: Keine Zitate vorgemerkt, ' + 'Tarif-Einschränkung des Forums oder die systemseitige quote.js wurde blockiert.</div>') .prependTo("#edit_form, .nx_edit_form"); } }
Da dies eine Konzeptstudie ist, dient sie als Basis für weitere Anpassungen. Falls bei euch die "Hinweis-Box" erscheint, bedeutet das, dass euer Forum (vielleicht durch den Tarif oder Sicherheitseinstellungen) den Zugriff auf die quote.js im Bearbeiten-Modus verweigert.
Das ist eine wertvolle Information für die weitere Entwicklung!Ich freue mich auf sachliches Feedback von allen, die Spaß am Basteln haben.
RE: Neue Zitatfunktion in "Beitrag bearbeiten" Teil 1-3
[Inspiration & Experiment] Der „Daishi-Quote-Connector“ (v4.0 – Business Stable)
Hallo zusammen,nach einer intensiven Entwicklungsphase präsentiere ich euch die finale Version des Quote-Connectors.
Das ProblemIn vielen Xobor-Foren (besonders im Business-Tarif) blockiert das System beim Bearbeiten von Beiträgen den Zugriff auf vorgemerkte Zitate.
Technisch liegt das oft an MIME-Typ-Konflikten oder Sicherheits-Headern, die das Nachladen der Zitat-Logik im Editor-Modus verhindern. Viele Plugins scheitern an dieser "Mauer".
Die Lösung: Der „Uplink-Erzwinger“
Die v4.0 arbeitet völlig autark. Sie nutzt keine externen Dateien, sondern schlägt eine direkte Brücke zum Xobor-Server. Das Ergebnis ist ein schwebendes „Terminal“ im Interface, das eure Zitate in Echtzeit aus dem Systemkern zieht und für den Editor bereitstellt.
Die Installation (Schritt-für-Schritt)
Da Business-Tarife sehr strikt sind, hat sich der Einbau über den Footer als der stabilste Weg erwiesen:
Gehe in den Admin-Bereich.Navigiere zu Design > Layout > Farben & Einstellungen.Scrolle ganz nach unten zum Feld „Footer“.
Kopiere den folgenden Code exakt so hinein und speichere ab:
// 2. Daten-Uplink zum Server var fetchQuotes = function() { var xhr = new XMLHttpRequest(); xhr.open("POST", "/ajax/selectionHandler.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function() { if (xhr.status == 200) { var raw = xhr.responseText.trim(); var stream = document.getElementById('daishi_stream'); if (!stream) return;
if (raw.length > 50) { var out = raw.includes('"html":') ? JSON.parse(raw).html : raw; stream.innerHTML = "<div style='max-height:200px;overflow:auto;background:#050505;padding:5px;border:1px solid #030;'>" + out + "</div><p style='color:yellow;margin-top:5px;font-size:10px;'>[CMD: TEXT MARKIEREN & KOPIEREN]</p>"; } else { stream.innerHTML = "STATUS: IDLE - Bitte Zitate im Thema markieren."; } } }; xhr.send("action=getQuotes"); };
Gehe in ein Thema deiner Wahl und markiere Beiträge über das Sprechblasen-Icon (Zitieren).
Bearbeiten öffnen:
Klicke bei einem beliebigen Beitrag auf „Bearbeiten“ oder „Antworten“.
Synchronisation:
Nach wenigen Sekunden erscheint unten rechts dein schwarzes Terminal.
Transfer:
Deine Zitate werden dort in grüner Schrift angezeigt. Markiere den Text im Terminal einfach mit der Maus, kopiere ihn (Strg+C) und füge ihn unten in dein Editor-Feld ein.
Warum das wichtig ist
Dieses Tool bricht die Isolation des Bearbeiten-Modus auf. Es ist eine Konzeptstudie, die zeigt, dass man mit dem richtigen „Uplink“ technische Hindernisse im Business-Tarif umgehen kann.
Hinweis für alle Tester:
Falls es bei euch nicht sofort erscheint, liegt das oft an individuellen Browsereinstellungen oder speziellen Sicherheitsfiltern eures Forums. Das Script ist genau darauf ausgelegt, diese Blockaden zu umgehen, erfordert aber einen sauberen Einbau im Footer.
Ich versuche nur zu helfen und meine Ideen und Inspirationen preiszugeben.
Ich freue mich über sachliches Feedback!
Beste Grüße
Daishi
Beweis-Log des Interfaces:
testbild wie es ausschaut
"Hinweis für Kritiker: Falls es bei euch im Testforum nicht auf Anhieb erscheint, liegt das meist an einer strengen Content Security Policy oder MIME-Fehlern eures Browsers. Genau dafür ist dieser 'Direct-Uplink'-Code entwickelt worden – er umgeht die defekten Standard-Skripte, an denen normale Plugins scheitern."
Die grüne Box wird zwar angezeigt, aber keine Teil-Zitate gespeichert.
Der "SelectionHandler " Zeile 13 und die grüne Box wollte die Teil-Zitate einfach nicht wiedergeben! Hier die Antwort vom Server: {"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}
Habe ein neues JS mit dem "SelectionHandler " aufgebaut und eine eigene Box mit Lösch- und Einfüge-Button unter dem Editor in "Beitrag bearbeiten " erstellt! Das JS stützt sich auf die Xobor-Zitat-Funktion, nutzt die Xobor-Zitat-Kürzel für Voll-Zitate, hatte Bernd in Beitrag #7 bereits angesprochen und kann ebenso gut mit Teil-Zitaten umgehen. Funktioniert auch im Xobor V6 mit eigener Box! Hat aber auch seine Fehler, wie z.B. bei der Namensvergabe.
Das komplette Skript wird als Plugin unter "Beitrag bearbeiten / Footer" angelegt.
Wichtig! Im Plugin muss rechts oben das "Unterstützte Template " markiert werden, z.B. Business - Template (144) & Mobil - Template (177), Auswahl mit Mausklick oder Strg + Mausklick !
// Username aus "quote_html" function extractMeta(q){const tmp=document.createElement("div");tmp.innerHTML=q.quote_html;const span=tmp.querySelector(".xquotecont");if(!span) return q;const a=span.querySelector("a");if(a) q.username=a.innerText.trim();return q;}
// Zitate vom Server laden function load(){jQuery.post("/ajax/selectionHandler.php",{action:"load"},r=>{quotes=Object.values(r?.quotes||{});render();},"json");}
// Alle Zitate löschen window.xclearAllQuotes=()=>{jQuery.post("/ajax/selectionHandler.php",{action:"clear"},()=>{quotes=[]; render();});};
ich habe versucht die quote??.js einzubinden und damit den Zitatspeicher zu nutzen. Das ist mir für v4 auch einigermaßen gelungen, nur beim V6 arbeitet es noch nicht wunschgemäß.
Ich hatte gehofft, dass Wolfgangs Beitragsspeicher#9 hier schon im Forum eingebunden wäre . Das scheint noch nicht so zu sein - Schade.
ist es eigentlich angedacht hieraus ein Plugin zu machen?
Ich bin schon die ganze Zeit dabei ein Plugin hinzubekommen, aber je mehr man testet, desto mehr Fehler findet man. War schon fast fertig, da stellt sich raus, dass sich mein Voll-Zitat mit Zitat-Kürzel nach einem wiederholten bearbeiten aufhängt! Habe zwei Möglichkeiten gefunden wie man die Zitate zur Anzeige bringen kann, einmal über "fetch" und einmal über "selectionHandler.php + window.xselsaveurl". Bin auf jeden Fall dran, melde mich!
Hallo @Wolfgang,vielen Dank noch mal für deine Mühe und die super Vorlage! Deine technische Umsetzung hat mich sehr geholfen, das System besser zu verstehen.
Da ich ja noch blutiger Anfänger bin, habe ich viel experimentiert und versucht, deine Logik mit meiner ursprünglichen Idee vom „Uplink-Erzwinger“ weiterzuentwickeln.
Ich wollte mal einen etwas anderen Weg gehen und habe das Ganze als ein schwebendes „Terminal“ umgebaut.
Ich habe in diesem Bastelexperiment versucht, eine direkte Vorschau der Zitate, eine Namenserkennung und einen Fix für die Umlaute einzubauen.
Das Tool ist jetzt so eingestellt, dass es sich automatisch zuschaltet, sobald man im Editor-Modus ist (auch bei der new.php).
Ich hänge dir mal einen Screenshot an, wie das jetzt bei mir aussieht.
Mich würde deine ehrliche Meinung als Experten interessieren:
War die Idee so okay oder eher ein Schuss in den Ofen? Ich wollte einfach mal schauen, was man aus der Idee noch rausholen kann, ohne als „Protzer“ rüberkommen zu wollen – ich lerne ja gerade erst, wie man mit der F12-Konsole eigene Lösungen baut.
<script> /* DAISHI_TERMINAL_V4_EVOLUTION */ (function() { // Prüfen, ob wir im Editor-Modus sind const isEditorPage = /msg\.php|editpost|action=edit|action=quote|action=new|new\.php/.test(location.href); if (!isEditorPage) return;
P.S.: Ich habe den Code bei mir direkt im Admin-Bereich unter „Layout > Header & Footer“ Footer eingebaut, damit er global zur Verfügung steht.
Kleiner Nachtrag: Ich möchte mich auch kurz entschuldigen, dass ich momentan nicht jeden Beitrag direkt bewerten oder sofort antworten kann.
Ich arbeite gerade an so vielen neuen Ideen, Umsetzungen und Styles für das Forum gleichzeitig, dass ich bei den vielen offenen Fenstern und Codes manchmal aufpassen muss, nicht den Überblick zu verlieren.
Ich hoffe, ihr habt dafür Verständnis – ich bin mit vollem Herzblut dabei, aber mein Kopf raucht gerade ein bisschen! 😉
Zitatfunktion beim Bearbeiten - Die grüne Zitat-Box von Daishi
Wow, Du hast es in Beitrag #16 hinbekommen, bei mir im Testforum funktioniert es!
Das ist eine feine Sache mit den Xobor-Zitat-Kürzeln, aber sie dürfen nicht leer sein, sonst gibt es nach einer Dauerschleife die Fehlermeldung 504. Das heist, der Fehler tritt auf, wenn man einen bestehenden Beitrag mit einem Voll-Zitat-Kürzel nachbearbeiten will, das leer ist! Ist der Beitrag mit dem Zitat-Kürzel beim ersten Einfügen erstmal abgespeichert, ist alles gut. Will man den Beitrag nachbearbeiten, sucht das Kürzel den Inhalt des Zitates und findet ihn nicht! Kein Wunder, die Funktion war von Xobor ja auch nicht vorgesehen! Was nun?
[quote=|p7686][/quote]
Abhilfe schafft ein unscheinbares leeres JS. Damit Dein JS fehlerfrei läuft, sollte es als Plugin mit dem folgenden Eintrag in "Beitrag bearbeiten - edit_message_footer " eingetragen werden!
1 2 3 4 5 6 7
<script> document.addEventListener("DOMContentLoaded", function () { // Absichtlich leer: JS aktiv, nur Einfüge-Modus Xobor-Zitat-Plugin kann arbeiten, keine Dauerschleife. }); </script>
<script>/**** Dein JavaScript ****/</script>
Habe es auch hinbekommen, muss nur noch den Beitrag schreiben. Kann man hier bereits im Forum über die Xobor Zitat-Funktion und "Beitrag bearbeiten " testen!
Neue Zitatfunktion XXL in "Beitrag bearbeiten" für Voll- & Teil-Zitate -Teil 3(3)
Die Xobor Zitat-Kürzel ([quote=|p7686][/quote] ) sind schon klasse (siehe Beitrag#9), haben es in sich, wenn man etwas Besonderes macht, das Xobor nicht vorgesehen hat! Xobor-Zitat-Kürzeln dürfen nicht leer sein (gemeint ist nicht das Leerzeichen), sonst gibt es nach einer Dauerschleife die Fehlermeldung 504 . Diese Eigenart tritt in bestehenden Beiträgen auf, die man nachbearbeiten will, die einem Voll-Zitat-Kürzel haben, das leer ist! Ist der Beitrag mit dem Voll-Zitat-Kürzel beim ersten Einfügen erstmal abgespeichert, ist alles gut. Will man den Beitrag nachbearbeiten, sucht das Kürzel den Inhalt des Zitates und findet ihn nicht! Kein Wunder, die Funktion war von Xobor ja auch nicht vorgesehen!
Der große Vorteil liegt darin, dass man nicht den ganzen Text eines zu zitierenden Beitrages abbilden muss!
Das Zitat wird originalgetreu abgebildet! Man kann allerdings im Vollzitat nichts nachbearbeiten, verfälschen oder Platzhalter setzen, dafür sind dann die Teil-Zitate mit dem BB-Converter da!
Unter "Beitrag bearbeiten " steht jetzt eine Zitat-Box wie unter "Antworten " zur Verfügung.
Die Zitat-Box ist geschlossen, besonders gut für mobile Endgeräte, zeigt die Anzahl der gespeicherten Zitate an, hat 3 Auswahl-Button, wie "Anzeigen ", "Alle Einfügen " und "Alle Löschen "
In der Zitat-Box kann jedes Zitat als "Voll-Zitat ", in "Kurzform " oder als "Teil-Zitat " mit einem HTML-BB-Converter in die Text-Area eingefügt werden!
Die Zitate sind mit vertikalen Scrollbalken ausgestattet, wobei das Auswahlmenü fixed ist!
Die Zitat-Box ist auch mit einem Reload-Button für den Zitat-Counter ausgestattet, der im geschlossenen Zustand der Zitat-Box und bereits geöffneten Beitrag den Counterstand aktualisiert.
Diese Option muss aktiviert sein: "Admin > Foren > Einstellungen > Erweiterte Zitatfunktion aktivieren ".
Im User-Menü unter "Einstellungen > Forum Einstellungen " muss die Auswahl "Automatische Zitate deaktivieren " auf "nein " stehen.
Unter "Admin > Layout > Farben- & Einstellungen > Funktionen " muss die Option "Zitieren unter jedem Beitrag anzeigen " aktiviert sein.
Alle Beiträge die zitiert werden sollen, werden mit einen Klick auf "Zitat vormerken " gespeichert und im Zitatfenster angezeigt! Der Button "Zitat vormerken " steht unter jedem Beitrag!
Ist nur ein Teil-Zitat notwendig, muss der Teil, der zitiert werden soll, markiert werden. Es erscheint dann ein Button mit der Abfrage "Zitieren ". Der Button wird dann angeklickt, das Teil-Zitat wird automatisch abgespeichert und auch hier im Zitat-Fenster angezeigt.
Diese Zitat-Funktion ist etwas anders. Hier müssen die Zitate vorher bestimmt werden, die eingefügt werden sollen. Wird jetzt "Beitrag bearbeiten " geöffnet, erscheint unter dem Beitrag ein Zitat-Fenster mit den zuvor ausgewählten Zitaten. Jetzt kann entschieden werden, ob ein Voll-Zitat eingefügt werden soll oder nur ein Zitat-Hinweis mit "Username " und "Beitrags-Verlinkung".
⛶
Zitat-Box geöffnet (In "Beitrag bearbeiten")
Installation nur fürs V4 und V6 & Mobil
Das komplette Skript wird als Plugin unter "Beitrag bearbeiten / Footer" angelegt.
Wichtig! Im Plugin muss rechts oben das "Unterstützte Template " markiert werden, z.B. Business - Template (144) & Mobil - Template (177), Auswahl mit Mausklick oder Strg + Mausklick !
Über den Zeilen 2-23 befinden die Formatierungen fürs V4+V6.
In Zeile 25+26 werden mit der vorangegangenen Class ".mbt " nur Formatierungen fürs V6+Mobil angepasst!
In Zeile 30-34 steckt der Xobor-Fix für den "SelectionHandler ".
<script> document.addEventListener("DOMContentLoaded", function () { // Absichtlich leer: JS aktiv, nur Einfüge-Modus Xobor-Plugin kann arbeiten, keine Dauerschleife. }); </script>
Zeit für einen Vergleich wie sie bei mir umgesetzt werden... In Kürze: Bei 1(3) bleibt quote/quote sichtbar, bei 2(3) fehlt die kürzende Zitat-Box, bei Daishi + 3(3) erscheinen die Vorbeiträge gar nicht erst, ob mit oder ohne Topic-Plugin.
Bei 1(3) mit BB-Converter erscheinen die Vorbeiträge und das eingefügte Komplett-Zitat lässt sich bearbeiten, z.B. kürzen. Beim eingefügten Komplett-Zitat mit Links, auch ohne Abänderung, bleibt jedoch quote /quote weiterhin sichtbar, s. meine damalige Anmerkung in #10
Bei 2(3) erscheinen die Vorbeiträge, das komplette Zitat wird wie geplant eingefügt ohne es abändern zu können. Dann allerdings wäre eine kürzende Zitat-Box nötig, mit "Komplettes Zitat anzeigen" wie hier in #9 in der Info-Box dort "Was können die Zitatkürzel alles anzeigen - kommt bei mir aber nicht. Bei eingefügtem Leerzeichen kommt die geplante saubere Verlinkung auf den Beitrag.
Aber bei Daishis und bei 3(3) erscheinen die Vorbeiträge gar nicht erst, ob ich das Topic-Plugin von 1(3) bzw. 2(3) drin lasse oder raus nehme bzw. hier auf h-t-t auch nicht Damit bleibt die Funktion unnötig, denn vorher Voll- und Teil-Zitate gibt es ja schon immer, der Clou ist ja wenn man beim Bearbeiten auf Vorbeiträge zurückgreifen kann...
Wir sind zwar nicht bei Wünsch-Dir-Was... oder ja eigentlich doch... und irgendwann geht bestimmt alles in Erfüllung...
Aber wenn dies (als Einzelzitate) funktionieren würde, wärs tatsächlich eine Funktion, die mir persönlich einiges an Zeit und Nerven schenken würde...!