Smilies bearbeiten

 
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Smilies bearbeiten

 · 
Gepostet: 29.06.2017 - 15:12 Uhr  ·  #1
Hallo,

ich möchte den Code für einen Smilie bearbeiten. Der Code lautet bislang
Code
:daumen-runter:
. Wenn ich nun auf "Bearbeiten" gehe, kann ich auch den Code ändern und speichern. Allerdings passiert nach dem Speichern nichts mehr. Keine Fehlermeldung, aber auch keine Änderung. Es wird der Smilie mit dem ursprünglichen Code angezeigt.
Ist das ein Bug oder funktioniert die Änderung nur bei mir nicht?

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Smilies bearbeiten

 · 
Gepostet: 29.06.2017 - 15:53 Uhr  ·  #2
Hi Ansgar,

da hast Du tatsächlich einen kleinen Bug gefunden, da haut die strengere CF4 Sicherheits Policy der Forms rein. Wird im nächsten Update gefixt. :)


Um die Funktion jetzt schon bei Dir gangbar zu machen:

ÖFFNE:
classes/acp/ACPPosts.class

FINDE:
Code
else if ( $Core->get(POST, 'editsave') )


ERSETZE MIT:
Code
else if ( $Core->get(POST, 'editsave', true) )



Dann sollte alles wieder gehen. :)
Das wird dann auch der Fix fürs nächste Update. :)

LG,
Chris
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Re: Smilies bearbeiten

 · 
Gepostet: 30.06.2017 - 10:30 Uhr  ·  #3
Vielen Dank!

Hat wunderbar funktioniert!

Aufgefallen ist uns dieses Problem durch ein weiteres.... Vielleicht ist da ja auch noch ein Bug vorahnden:

Wir haben einen Smilie1 mit der Bezeichnung

Code
:Daumen-runter:


und einen weiteren Smilie2 mit der Bezeichnung

Code
:D


Wenn jetzt der Smilie "Daumen runter" ausgewählt wird, bekommen wir folgendes Ergebnis:

Die Grafik von Similie2 wird gefolgt von Text "aumen-runter:".

Das System scheint nur
Code
:D
auszuwerden und dann direkt den Smilie zu schreiben und nicht drauf zu achten, dass noch ein Text hinter
Code
:D
steht.

Viele Grüße

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Smilies bearbeiten

 · 
Gepostet: 30.06.2017 - 14:27 Uhr  ·  #4
Hi Ansgar,

super, dass das funktioniert hat. :)

Das zweite ist allerdings kein Bug, da müsstet Ihr schon selbst auf möglicherweise überlappende Smiliecodes aufpassen. Smilies werden ja recht direkt interpretiert, denn sie werden ja vom User relativ "willkürlich" verwendet. Es gibt also nicht wirklich ganz eindeutige Start- und Endzeichen (wie z.B. bei einem BBCode) die man als Richtwert nehmen könnte. Als Smiliecode kannst Du ja im Grunde alles einstellen was Du möchtest. Diese Smiliecodes werden dann nicht einzeln, sondern als Ganzes bzw. Gruppe interpretiert, sodass eben nicht zu viele Schleifen bei der Erkennung von Smilies und neuerdings eben auch Emojicodes über einen Post laufen müssen. Gerade die Anzahl an Emojicodes ist ja auch nochmal eine riesen Latte die im Hintergrund durch Emojione hinzugefügt wird. Das alles in einer Schleife zu erkennen und mit dem längsten möglichen zu beginnen wäre natürlich richtig übel für die Geschwindigkeit.

Wenn da ein Smiliecode einen anderen überlappt nimmt preg_match natürlich das was er als erstes zu erkennen scheint. Er wüsste ja auch wenn zwei Codes möglich wären nicht, für was er sich dann im Endeffekt entscheiden sollte. Eben weil Smiliecodes auch recht willkürlich definiert sein können.

Bei den Codes selbst musst Du also ein bisschen aufpassen, damit diese auch eindeutig sind. Als mögliche Lösung könntest Du Textcodes von Smilies ja immer z.B. mit 2 Doppelpunkten beginnen, dann kann es mit den paar "kurz-Smilies" nicht überlappen. :)

Übrigens innerhalb von Beiträgen ist der Algorithmus für Smilies schon recht schlau, er erkennt nämlich auch, wie die Smiliecodes verwendet werden. Also wenn ich einen Smiliecode innerhalb eines Wortes verwenden würde wie z.B. "Test:Dwort" also sprich: "Test:Dwort", dann würde er da keinen :D draus machen. Diesen ersetzt er nur, wenn er getrennt bzw. am Zeilenende oder blank innerhalb eines BBCodes usw. steht. Nur bei den Codes selbst für die Erkennung dürfen natürlich keine Parallelen vorhanden sein, er nimmt natürlich immer das erste was kommt wenn es grundlegend als möglicher Smiliekandidat erkannt wird. In Deinem Fall wird daher der längere Code auch als Smiliekandidat gefunden (ist ja ein Smiliecode) aber dann wird die erste Ersetzung (:D) drauf angewendet, weil Du eine Überlappung in Deinen Codes hast.

LG,
Chris
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.