Oxlongdesc wird ungewollt gefiltert

Hallo Community,

ich habe folgendes Problem:
Beim Einpflegen von Code im Editor (Ansicht: Quelle) für die Produkt Beschreibung werden gewisse Elemente (>) zu

>

Bei

und anderen HTML Tags gibt es keine Probleme. Da wir gerne zur Vereinfachung der Wartbarkeit von manchen HTML-Snippets, diese per
[{include file=""}]

einbinden möchten und Variablen mit übergeben wollen, müssen wir auf

[{php}][{/php}]

zur Definierung von Arrays zurückgreifen.

Dies sollte wie folgt aussehen:

[{php}]
    $this->assign('agency_banner', [
    [
    'extra_class' => '',
    'h1' => '',
    'h2' => '',
    ],
    ]);
[{/php}]
[{include file="custom/inc/snippet/agency-banner.tpl" agency_banner=$agency_banner}]

Beim ersten speichern auch kein Problem, jedoch wird dann schon in der Anzeige aus

=>

ein

=>

, somit beim erneuten Speichern fehlerhaft in die Datenbank geschoben und bei der Anzeige kommt ein 503er.

Im Admin habe ich keine Einstellung zur Filterung gefunden (oder übersehen), im Template admin/article_longtext.tpl und admin/article_main.tpl habe ich ebenfalls keine Filtermöglichkeit gefunden.

Wo kann ich einstellen das bei diesen Textboxen nichts gefiltert wird?

Shop Version: EE 5.1.6

Danke schonmal für eine Lösung!

lG michael

Das solltest du am besten dem Oxid Support melden, wir haben hier nur CEs ohne den fancy PE/EE Editor

Ah okay, dachte der Editor wäre gleiche. Also sieht jedenfalls gleiche wie in CE aus.
Nutzen (noch) nicht dieses Virtual-CMS.

das Ding, das im Demoshop zu sehen ist?
Das ist leider das normale Verhalten von diesem Ding. Ist im Demoshop auch noch so.

Theoretisch müsste man den Inhalt des Textfeldes beim Speichern überarbeiten und > zurück zu > verarbeiten, aber sowas habe ich bisher nur für CE gebaut.

Genau der, scheint wysiwygPro zu heißen.

Ich kenne von z.B. tinyMCE das man Filter anpassen kann, dies scheint laut wysiwygPro Hilfe auch zu funktionieren. Nur wo genau dies in Oxid angepasst werden könnte ist mir nicht klar. Oder ob dies sogar von Oxid bei der Anzeigegenerierung kommt und gar nicht von wysiwygPro.
Wie hattest du dies für die CE gemacht?

in der javascript Funktion copyLongDesc() habe ich das hier eingebaut:

content = content.getContent().replace(/\[{([^\]]*?)}\]/g, function(m) { return m.replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&")

damit werden alle $gt; $lt; und & zwischen [{ und }] Tags wieder zurück in < > & umgewandelt.

in dem PE Code könnte man das aber in cleanupLongDesc() unterbringen

Danke, ich habe es ausprobiert, leider funktioniert es nicht:

Ich habe

.replace(/\[{([^\]]*?)}\]/g, function(m) { return m.replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&")

in der application/views/admin/tpl/headitem.tpl bei der Funktion cleanupLongDesc hinzugfügt:

function cleanupLongDesc( sValue )
        {
            if ( sValue == '<br>' || sValue == '<br />' ) {
                return '';
            }
            return sValue.replace(/\[{([^\]]*?)}\]/g, function(m) { return m.replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&");
        }

Jedoch kommt dann direkt von PHPStorm schon: “Unterminated statement” und beim Aufruf des admins funktioniert nichts.
In copyLongDesc habe ich den part mit getContent() nirgends gefunden, bin ich in der falschen Datei?

ups, habe }); aus der nächsten Zeile vergessen.
der Code ist aus meinem TinyMCE, dieses getContent() kommt davon.

hier zur Sicherheit die komplette cleanupLongDesc() Funktion:


function cleanupLongDesc( sValue )
{
    if ( sValue == '<br>' || sValue == '<br />' ) {
        return '';
    }
    [{literal}]
    return sValue.replace(/\[{([^\]]*?)}\]/g, function(m) { return m.replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&"); });
    [{/literal}]
}

Und durch die literal kommt auch kein Fehler mehr^^

Habe es ohne Regex bei uns eingepflegt, da es bei uns überall ersetzen darf.
Klappt, danke!

return sValue.replace(/>/g, ">").replace(/</g, "<").replace(/&/g, "&");