Entwickler-Ecke
Wünsche, Anregungen & Kritik - Teilzitate
elundril - Sa 12.06.10 19:44
Titel: Teilzitate
Hallo,
ist es möglich die Zitat-Funktion so zu erweitern das man nur das Zitiert was man markiert hat. Wenn nichts markiert ist, dann soll der ganze Beitrag zitiert werden. Das wäre echt praktisch, weil ich gerne Selektiv zitiere.
lg elundril
BenBE - Sa 12.06.10 19:46
Ist glaube nicht so einfach wegen der Selektion.
Du kannst aber gerne: Zitat spalten verwenden und die nicht benötigten Teile entfernen ... So mach ich das dann meist.
Christian S. - Sa 12.06.10 19:46
Der Vorschlag kam schonmal, glaube ich. Ansich wäre das eine prima Sache. Aber: Das Problem ist, dass man dann anhand der Markierung im HTML rausfinden muss, von wo bis wo die denn im BBCode ginge, um ein korrektes Zitat zu erstellen. Und das ist echt knifflig!
Ich denke, das Aufspalten von Zitaten muss da leider genügen.
Greenberet - Sa 12.06.10 20:23
Christian S. hat folgendes geschrieben : |
Der Vorschlag kam schonmal, glaube ich. Ansich wäre das eine prima Sache. Aber: Das Problem ist, dass man dann anhand der Markierung im HTML rausfinden muss, von wo bis wo die denn im BBCode ginge, um ein korrektes Zitat zu erstellen. Und das ist echt knifflig!
Ich denke, das Aufspalten von Zitaten muss da leider genügen. |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| <script language=javascript> function getSelText() { var txt = ''; if (window.getSelection) { txt = window.getSelection(); } else if (document.getSelection) { txt = document.getSelection(); } else if (document.selection) { txt = document.selection.createRange().text; } else return; document.aform.selectedtext.value = txt; } </script> <input type="button" value="Get selection" onmousedown="getSelText()"> |
src:
http://www.codetoad.com/javascript_get_selected_text.asp
und die Sache mit dem BB Code sollte auch nicht so schwer sein.
Vorraussetzung: man selektiert nur texte innerhalb des posts.
Grob zusammengefasst:
1) Suchen des selektierten strings im originaltext
2) Bei ungleichheit auf BBCode checken, BB Code mit in den Reply packen
3) mit den weiteren zeichen bei 1) weitermachen
Christian S. - Sa 12.06.10 20:56
Schau Dir doch z.B. mal den BBCode für ein Zitat an, in dem die Referenz auf den zitierten Beitrag ist. Da ist der kopierte Text ganz anders als der, den Du als BBCode hast.
//edit: Auch wenn Quelltext mit kopiert wird, sind da dann plötzlich die Worte "Quelltext" und "markieren" drin (also das, was über einem Quelltext steht). Vielleicht dann noch der Alt-Text der Grafiken zum ein- und ausklappen von Quelltext. Oder jemand hat den Quelltext eingeklappt und kopiert dann!
F34r0fTh3D4rk - Sa 12.06.10 22:04
Man könnte den Quelltext des Beitrags mit dem markierten Text abgleichen und so feststellen, ob sich ein markierter Teil in einem Tag befindet. Allerdings ist auch das immer noch eine ziemlich knifflige Angelegenheit.
Greenberet - So 13.06.10 11:55
Christian S. hat folgendes geschrieben : |
Schau Dir doch z.B. mal den BBCode für ein Zitat an, in dem die Referenz auf den zitierten Beitrag ist. Da ist der kopierte Text ganz anders als der, den Du als BBCode hast.
//edit: Auch wenn Quelltext mit kopiert wird, sind da dann plötzlich die Worte "Quelltext" und "markieren" drin (also das, was über einem Quelltext steht). Vielleicht dann noch der Alt-Text der Grafiken zum ein- und ausklappen von Quelltext. Oder jemand hat den Quelltext eingeklappt und kopiert dann! |
ja aber wo ist das Problem?
Bsp mit dem Code:
Markiert wurde "Quelltext: ..." das heißt falls dies auftritt müsste ein BBCode im originalpost kommen mit den Daten. Sprich der Teil des originalposts kann übernommen werden und "Quelltext:" wird im markierten übersprungen.
Das gleiche spiel kann man bei Zitaten auch anwenden.
Diese Problematik sollte sich eig mit Regex und einer mapping Table lösen lassen.
Christian S. - So 13.06.10 12:03
Wenn in einem Posting in einem Programmiererforum das Wort "Quelltext:" vorkommt, ist das nun wirklich nicht eindeutig auf einen BBCode zurückzuführen.
Du darfst mir gerne mit mehr als ein paar hingeworfenen Stichworten zeigen, wie einfach das ist. Bis dahin werde ich es mit der Begründung, dass der Aufwand bei weitem nicht lohnt, nicht einbauen. :-)
F34r0fTh3D4rk - So 13.06.10 12:20
Naja man hat ja Zugriff auf den BB kodierten Text, sodass man gucken kann, ob sich an der Stelle wo im markierten Text ein "Quelltext:" steht ein [delphi]-Tag befindet.
Christian S. - So 13.06.10 12:22
Ich muss ja aber erst einmal die passende Stelle finden, bevor ich nachgucken kann.
jaenicke - So 13.06.10 12:24
F34r0fTh3D4rk hat folgendes geschrieben : |
Naja man hat ja Zugriff auf den BB kodierten Text, sodass man gucken kann, ob sich an der Stelle wo im markierten Text ein "Quelltext:" steht ein [delphi]-Tag befindet. |
Mag ja sein, aber so einfach ist es dennoch nicht. Im Grunde müsste man von vorne an die einzelnen Teile mit dem BB-Code abgleichen um so die Worte nacheinander zuzuordnen. Dann muss man noch schauen, dass man die BB-Codes alle korrekt öffnet und schließt, ...
Klar ist es möglich. Aber mit welchem enormen Aufwand für den kleinen Nutzen?
Mal abgesehen davon:
Wenn man jetzt einen Teil markiert und zitiert, dann hat man direkt nur noch einen Fetzen des Originalposts. Insbesondere bei längeren Posts wächst dann die Gefahr von Missverständnissen. Insbesondere, wenn dann doch mal was verrutscht.
Da teile ich lieber das Zitat gezielt dort, wo ich es möchte. Das ist nun wirklich kein Aufwand. ;-)
Yogu - So 13.06.10 12:39
Wenn du dich damit näher beschäftigen willst,
F34r0fTh3D4rk, dann mach das doch :D Dafür brauchst du ja keine Datenbank oder sonstiges Zeug, das nur die EE-Admins haben.
Aber ich denke, Texte abzugleichen ist nicht der richtige Ansatz, er ist viel zu ungenau. Ich würde etwas anderes vorschlagen: Im Firefox geben
window.getSelection().anchorNode und
window.getSelection().focusNode den Anfangs- und Endknoten der Markierung zurück. Was du machen müsstest, wäre, den Posting selbst zu parsen und dabei darauf zu achten, an welcher Stelle der Anfangs- bzw. Endknoten erstellt wird. Diese Positionen merkst du dir. So kann man zwar nicht mitten im Wort trennen, aber zumindest eine Absatzgenaue, sofern BB-Codes verwendet wurde, sogar noch genauere, Markierung wäre möglich.
Für BB-Code ist diese Möglichkeit ziemlich kompliziert, weil BB-Codes normalerweise mit regulären Ausdrücken geparst werden. Aber vielleicht bekommst du es ja hin... ;)
jaenicke - So 13.06.10 12:45
Yogu hat folgendes geschrieben : |
Im Firefox geben window.getSelection().anchorNode und window.getSelection().focusNode den Anfangs- und Endknoten der Markierung zurück. Was du machen müsstest, wäre, den Posting selbst zu parsen und dabei darauf zu achten, an welcher Stelle der Anfangs- bzw. Endknoten erstellt wird. |
Dann muss man den aber immer noch zuordnen. Das heißt man müsste im Grunde jedem Tag eine eigene ID geben. Etwas viel Aufwand, wie gesagt. :D
// EDIT:
Aber wenn jemand ne fertige Lösung anbietet, wird Christian vermutlich nicht abgeneigt sein. ;-)
Ich vermute aber mal das kann gerade niemand anbieten. :mrgreen:
Yogu - So 13.06.10 12:53
jaenicke hat folgendes geschrieben : |
Yogu hat folgendes geschrieben : | Im Firefox geben window.getSelection().anchorNode und window.getSelection().focusNode den Anfangs- und Endknoten der Markierung zurück. Was du machen müsstest, wäre, den Posting selbst zu parsen und dabei darauf zu achten, an welcher Stelle der Anfangs- bzw. Endknoten erstellt wird. | Dann muss man den aber immer noch zuordnen. Das heißt man müsste im Grunde jedem Tag eine eigene ID geben. Etwas viel Aufwand, wie gesagt. :D |
Da gibt's doch XPath, oder wie das heißt? Naja, auf jeden Fall kann jeder Knoten identifiziert werden, indem man die Position im übergeordneten Knoten angibt, und das ganze rekursiv: Bei
<a><b1 /><b2><c /></a> hätte
<c /> dann die ID 0-1-0.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!