Problem: XH-Suche / Glossaire / Syntaxhighlighter

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by frase » Tue May 24, 2022 9:33 am

Hat man auf eine Website Code mit dem Plugin "Syntaxhighlighter" gestellt und vielleicht noch zufällig das Plugin "Glossaire" aktiv und sucht dann vielleicht auch noch mit der XH-Suche nach einem Wort das genau in diesem Code vorkommt, dann geschehen eigenartige Dinge.

Na ja, so eigenartig sind die Dinge gar nicht - eigentlich ganz logisch:
Glossaire versucht das gefundene Wort mit einem<a>-Tag zu markieren.
Die XH-Suche versucht es Gelb hervorzuheben.
Beide "schmuggeln" also ihre eigenen CSS-Klassen ein.
"Syntaxhighlighter" macht nun das Unpassendste, was es tun kann - es zeigt den Code als Code an.

Hier ein Beispiel mit allen Bedingungen, wie oben beschrieben und dem Suchwort "template":
syntaxhl-search-glossaire.png
Hat irgendwer eine Idee, wie man das verhindern könnte?

Wahrscheinlich bleibt nichts anderes, als auf "Syntaxhighlighter" zu verzichten und alles in einen code-Div zu packen - denn dort passiert das nicht.
You do not have the required permissions to view the files attached to this post.

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by olape » Tue May 24, 2022 11:51 am

frase wrote:
Tue May 24, 2022 9:33 am
"Syntaxhighlighter" macht nun das Unpassendste, was es tun kann - es zeigt den Code als Code an.
Na sowas ;)
Das ist natürlich schon ein wenig Sch...
frase wrote:
Tue May 24, 2022 9:33 am
Hat irgendwer eine Idee, wie man das verhindern könnte?
Nicht wirklich.
Wahrscheinlich ein Problem der Reihenfolge.
Aber die wird sich nicht ändern lassen (denke ich).

Der Syntaxhighlighter müsste also wissen, dass er <span class="xh_find"> und <a class="gpop" href="#gpop2"> ignorieren soll.
Aber da muss ich passen. Das ganze Plugin scheint mir auch etwas überholungsbedürftig.

3.0.83 (July 02 2010)
v3.0.90

script type="text/javascript"

./plugins/syntaxhighlighter//lib/styles/shCoreXH.css" (doppelter /)

Das wird an der Sache natürlich sehr wahrscheinlich nichts ändern.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by frase » Tue May 24, 2022 12:03 pm

olape wrote:
Tue May 24, 2022 11:51 am
Wahrscheinlich ein Problem der Reihenfolge.
Aber die wird sich nicht ändern lassen (denke ich).
Ja, das denke ich auch.
Syntaxhighlighter müsste als erstes ausgeführt werden, und erst danach die XH-Suche und Glossaire über den Inhalt laufen.
Geht das nicht irgendwie?
olape wrote:
Tue May 24, 2022 11:51 am
... Das ganze Plugin scheint mir auch etwas überholungsbedürftig.

3.0.83 (July 02 2010)
v3.0.90
Ja schon, aber eigentlich ist es ja noch nutzbar - wenn die o.g. Probleme nicht wären.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by cmb » Tue May 24, 2022 12:25 pm

frase wrote:
Tue May 24, 2022 12:03 pm
Syntaxhighlighter müsste als erstes ausgeführt werden, und erst danach die XH-Suche und Glossaire über den Inhalt laufen.
Geht das nicht irgendwie?
Bezüglich Glossaire bin ich nicht sicher, aber das Highlighting der XH-Suche passiert serverseitig, während der Syntax-Highlighter clientseitig arbeitet, also immer erst später ausgeführt wird.

Aber das eigentlich Problem ist, dass weder die XH-Suche noch Glossaire irgendetwas in <pre> Elementen ändern sollten; schließlich handelt es sich dabei um vorformatierten Text, und den bringt man so eben durcheinander. Für XH_highlightSearchWords() müssten wir da aber weg von regulären Ausdrücken; wird einfach zu komplex.
olape wrote:
Tue May 24, 2022 11:51 am
Das ganze Plugin scheint mir auch etwas überholungsbedürftig.
ACK.
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by frase » Tue May 24, 2022 12:32 pm

olape wrote:
Tue May 24, 2022 11:51 am
...
cmb wrote:
Tue May 24, 2022 12:25 pm
...
Und nun?

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by olape » Tue May 24, 2022 12:42 pm

cmb wrote:
Tue May 24, 2022 12:25 pm
Für XH_highlightSearchWords() müssten wir da aber weg von regulären Ausdrücken; wird einfach zu komplex.
https://github.com/cmsimple-xh/cmsimple ... .php#L2468

Code: Select all

            $patterns[] = '/(?:<(?:"[^"]*?"|[^>]*?)*>|(' . preg_quote($word, '/') . ')|&[^;]*;)/isu';
Ich bekomme es mit nachlesen schon kaum zusammen. :oops:

Man könnte aber aus $text die Bereiche <pre> ... </pre> vor dem Ersetzen kopieren und hinterher damit wieder ersetzen, damit blieben diese im Ergebnis unverändert.
frase wrote:
Tue May 24, 2022 12:32 pm
Und nun?
An dieser Stelle erst mal abwarten, vielleicht finden wir ja eine Lösung.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by cmb » Tue May 24, 2022 2:18 pm

frase wrote:
Tue May 24, 2022 12:32 pm
Und nun?
Als schnellen Workaround entscheiden ob Syntaxhighlighting oder Suchbegriffhervorhebung und Glossar wichtiger sind, und dann den inkompatiblen Rest deaktivieren. Um die Suchbegriffhervorhebung zu deaktivieren, einfach die Definition ändern:

Code: Select all

function XH_highlightSearchWords(array $words, $text)
{
    return $text;
}
olape wrote:
Tue May 24, 2022 12:42 pm
https://github.com/cmsimple-xh/cmsimple ... .php#L2468

Code: Select all

            $patterns[] = '/(?:<(?:"[^"]*?"|[^>]*?)*>|(' . preg_quote($word, '/') . ')|&[^;]*;)/isu';
Ich bekomme es mit nachlesen schon kaum zusammen. :oops:
Jupp, ist jetzt schon zu komplex. Wir hatten vor einer ganzen Weile darüber diskutiert (ich denke im Forum, kann es aber auf die Schnelle nicht finden). Da wurde jedenfalls schon nachgedacht, ob man statt regulärer Ausdrücke doch besser das DOM nutzt.
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by frase » Tue May 24, 2022 3:08 pm

cmb wrote:
Tue May 24, 2022 2:18 pm
Als schnellen Workaround entscheiden ob Syntaxhighlighting oder Suchbegriffhervorhebung und Glossar wichtiger sind ...
Na ja, im konkreten Fall habe ich mich eigentlich schon entschieden (nur, was machen alle anderen?).

http://fhs.bplaced.net/xh-wiki/?fuer-en ... h=template

Ich denke, Syntaxhighlighter wird wohl rausfliegen und ein pseudo-Highlighting per CSS reinkommen - was wirklich schade ist.
In einem normalen DIV machen die Suche und auch Glossaire nix schlimmes (siehe Beispiel-Adresse).
Jetzt wäre es noch schön, wenn man per Script (meinetwegen per jQuery) wenigstens alle Dinge, die in '...' stehen (oder in [...]) mit einer CSS-Klasse hervorheben könnte.
Im Beispiel gibt es noch einen Haken: beim Code-Kopieren bekommt man (ungünstige) Zeilenschaltungen mit.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by cmb » Tue May 24, 2022 4:36 pm

frase wrote:
Tue May 24, 2022 3:08 pm
Na ja, im konkreten Fall habe ich mich eigentlich schon entschieden (nur, was machen alle anderen?).
Viele wird es ohnehin nicht geben, die Syntaxhighlighter_XH auf ihrer Website verwenden. Aber ich denke, es gibt doch noch eine brauchbare Lösung: bevor der Syntaxhighlighter initialisiert wird, könnte man das zusätzliche (unerwünschte) Markup per JS entfernen. Je nachdem wie man es sieht, könnte man durchaus auch argumentieren, dass zumindest .xh_find entfernt werden muss (ansonsten Bug in Syntaxhightlighter_XH); das Glossaire-Markup, und Markup von anderen Plugins ist unklarer (woher soll Syntaxhighlighter_XH wissen, was andere Plugins so treiben?)

Na ja, ich schau mir das zeitnah genauer an (spätestens am Donnerstag sollte ich etwas Zeit finden).
frase wrote:
Tue May 24, 2022 3:08 pm
Jetzt wäre es noch schön, wenn man per Script (meinetwegen per jQuery) wenigstens alle Dinge, die in '...' stehen (oder in [...]) mit einer CSS-Klasse hervorheben könnte.
Sorry, verstehe ich nicht – stehe wohl auf dem Schlauch.
frase wrote:
Tue May 24, 2022 3:08 pm
Im Beispiel gibt es noch einen Haken: beim Code-Kopieren bekommt man (ungünstige) Zeilenschaltungen mit.
Was meinst du damit? Geht es um den Syntaxhighligher_XH, oder um die "normalen" Bereiche?
Christoph M. Becker – Plugins for CMSimple_XH

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Problem: XH-Suche / Glossaire / Syntaxhighlighter

Post by frase » Tue May 24, 2022 4:57 pm

cmb wrote:
Tue May 24, 2022 4:36 pm
Sorry, verstehe ich nicht – stehe wohl auf dem Schlauch.
cmb wrote:
Tue May 24, 2022 4:36 pm
Was meinst du damit? Geht es um den Syntaxhighligher_XH, oder um die "normalen" Bereiche?
In beiden Fällen meinte ich meine Version ohne Syntaxhighlighter.

Um den Code bzw. wenigstens ein paar Parameter hervorheben zu können, wollte ich per JS dort drin Text finden, der entweder innerhalb von '...' oder innerhalb von [...] oder innerhalb von "..." steht. Einen CSS-Selector gibt es dafür nicht - oder?
Den gefundenen Text mit einer Klasse umgeben, damit man es stylen kann.
Das könnte man natürlich auch im Editor händisch machen - ist aber sehr mühselig.

Das Andere war, dass man ja oft solchen Code von einer Website kopieren möchte (dazu macht man es ja - meistens).
Wenn man den Code, so wie es jetzt in meinem Beispiel ohne Syntaxhighlighter ist, kopiert, dann erhält man beim Einfügen (im eigenen Editor ...) nach jeder Zeile zweimal CR LF.
Das liegt womöglich daran, dass ich jede Zeile als <p> definiert habe.
Vielleicht klappt das besser, wenn ich da <div> nehme. Mal sehen.
Das ist sowieso alles ziemlich fummelig im TinyMCE zu schreiben (da weigert sich sogar meine Analoge Halluzinelle, das zu tun). Mit Syntaxhighlighter wäre das alles komfortabler, aber dann geht wieder die Suche oder Glossaire nicht.

Post Reply