Code Monkey home page Code Monkey logo

xoutputfilter's Introduction

XOutputFilter-Addon für REDAXO 5

Mit dem Addon XOutputFilter hat man die Möglichkeit über den Extension-Point OUTPUT_FILTER die Ausgabe der REDAXO-Seite zu beeinflussen sowohl im Frontend als auch im Backend.

Die Hauptaufgabe dieses Addons ist die Ersetzung von Markern/Konstanten in der jeweiligen Sprache und die Kennzeichnung von Abkürzungen und Akronymen.

Über eine Programmschnittstelle kann in Modulen und Addons auf die Sprachersetzungen zugegriffen werden.

Zusätzlich können für das Frontend und das Backend verschiedene "Inserts" mit Code-Fragmenten, sonstigem HTML-Code oder auch PHP-Code angelegt werden. Diese Einträge können dann bestimmten Markern und Kategorien/Unterkategorien zugeordnet werden. Der Code wird - je nach Auswahl - entweder vor, hinter oder statt dem vorhandenen Marker im Quelltext ausgegeben beziehungsweise ausgeführt.

Die gewünschten Funktionen des Addons können über Plugins aktiviert und den Benutzern zugeordnet werden.


Verwendung der Sprachersetzungen in Modulen oder Addons

<?php
// Beispiele:
//   $x->get(PLATZHALTER, [Sprache]);
//   xoutputfilter::get(PLATZHALTER, [Sprache]);

$x = new xoutputfilter();
echo $x->get(\'copyright\');
echo $x->get(\'copyright\', 1);
echo $x->get(\'copyright\', rex_clang::getCurrentId());

echo xoutputfilter::get(\'copyright\', rex_clang::getCurrentId());

// Sprachersetzungen auf eigenen HTML-Code anwenden:
$x = new xoutputfilter();
echo $x->replace($my_content, rex_clang::getCurrentId());

echo xoutputfilter::replace($my_content, rex_clang::getCurrentId());
?>

Beispiel: PDF-Dateien, die in einem Editor verlinkt sind, umleiten

Parameter für die Frontend-Ersetzung

Feld Wert
Name download_pdf
Beschreibung `Ersetzt Link-Pfade zu PDFs im Media-Ordner und lässt den Download über den Media Manager laufen
aktiviert ja
Ersetzungstyp PREG_REPLACE
Marker /href=\"((http.*)?\/\/(www\.)?meine-domain\.de)?\/media\/([^"]*)\.pdf\"/iU
Ersetzung href="/media/download/$4.pdf"
aktiv bei allen Kategorien ja
nur einmal einfügen nein

Media-Manager-Profil

Im Media Manager ein Profil namens download anlegen und als Effekt hinzufügen:

Feld Wert
Effektreihenfolge Am Anfang
Effekt header
Download download
Cache-Control no_cache

/cc @phoebusryan


Credits


Idee und Realisierung der ersten Version: Andreas Eberhard / aesoft.de und Peter Bickel / polarpixel.de

xoutputfilter's People

Contributors

aeberhard avatar alxndr-w avatar christophboecker avatar cukabeka avatar dtpop avatar imgbotapp avatar interweave-media avatar nandes2062 avatar pschuchmann avatar schuer avatar skerbis avatar stefan-beyer avatar ynamite avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

xoutputfilter's Issues

Backendersetzungen

Hier wird der Wert, der bei "Ersetzung" eingetragen ist auch in dem Feld "Marker" übernommen,.,..

Backend-Ersetzung PHP - Zugriff auf Redaxo-Klassen

Im Moment ist es so, dass ich auf die rex_yrewrite-Klasse keinen Zugriff bekomme, wenn ich im Backend eine PHP-Ersetzung vornehmen möchte... liegt das daran, dass die Klassen alphabetisch inkludiert werden? Kann XOutputFilter sich einfach erst später einklinken?

Front- und Backend-Ersetzungen

Was ist, wenn ich einen Platzhalter sowohl im backend (bspw. strucutre), als auch im frontend ersetzt sehen will? Muss ich diesen dann doppelt anlegen?

Viele Notice Meldungen

Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 141
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 146
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 150
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 152
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 157
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 159
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 167
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 176
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 184
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 187
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 189
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 194
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 196
Notice: Only variables should be assigned by reference in /Applications/MAMP/htdocs/rex5basic5/redaxo/src/addons/xoutputfilter/plugins/backend/pages/index.php on line 201

Anlegen einer neuen Sprache und Synchronisierung der Sprachen erzeugt riesen Probleme

Hallo zusammen,

wir haben heute einen relativ schweren Bug gefunden.

Wir haben aktuell 4 Sprachen angelegt mit jeweils ca. 250 Einträgen.
Wird nun eine neue Sprache hinzugefügt (5. Sprache) dann synchronisiert der Xoutputfilter die Daten.
Jedoch legt er dann für alle Spachen außer der ersten komplett neue Datensätze an. Kopiert den Inhalt der ersten Sprache in die neue Sprache. Legt aber alle anderen Sprachen dann zusätzlich ohne Inhalt an.

In der Übersicht wird scheinbar anders sortiert, da werden die Inhalte noch angezeigt. Beim editieren werden dann die neuen Datensätze gezogen. Speichern ist dann auch nicht mehr möglich.

Er ist wie folgt reproduzierbar:

2 Sprachen anlegen
neuen Datensatz in der Sprachersetzung erzeugen
3 Sprache anlegen
versuchen den Datensatz zu bearbeiten in der Listenansicht
versuchen den Datensatz zu bearbeiten in der Detailansicht

Ein Blick in die Datenbank zeigt schon was passiert.

Viele Grüße
Ronny

Addon-Name

Gab's dazu schon eine Diskussion in Slack? Bleibt es bei XOutputFilter? Wollte man sich nicht von rex_ und x-Präfixen trennen?

Identische Marker für Ersetzungen für unterschiedliche Kategorien

Wenn ich einen Marker definiere, zB ###MARKER###, und diesen auf eine Kategorie setze, und denselben auf eine andere, gilt nur der erste.

Also:

Ersetzung Frontend:

###FORM### -> Kreis

  • aktiv bei folgenden Kategorien: Runde Sachen Shop
  • inklusive Subkategorien JA
  • oder aktiv bei allen Kategorien NEIN
  • nur einmal einfügen NEIN
    Output: Kreis

###FORM### -> Quadrat

  • aktiv bei folgenden Kategorien: Eckige Sachen Shop
  • inklusive Subkategorien JA
  • oder aktiv bei allen Kategorien NEIN
  • nur einmal einfügen NEIN
    Output: Kreis

Hoffe, das ist verständlich. Ist IMHO ein Bug, oder?

Mit englischem Backend geht speichern nicht mehr

Wenn man als Backendsprache "Englisch" auswählt, kann man weder neue Einträge hinzufügen, noch bestehende bearbeiten.

Der Benutzer hat die Rechte, bekommt die Bearbeiten-Seite gezeigt, aber nach dem "Speichern" bleibt er auf der Seite und die Änderungen werden ignoriert.

Redaxo: 4.7
xoutputfilter: 2.0

Key-Abgleich mit Sprog

Keys, die in XOutputFilter angelegt werden, sollten nicht in der Liste der nicht ersetzten Platzhalter von Sprog auftauchen und vice versa.
@tbaddade

Wunsch: Beta in den Installer

Beim Redaxo-Tag waren wieder ein paar dabei, die nicht wussten, dass es das Addon schon portiert für R5 gibt. Ich finde, die Beta sollte deshalb auch im Installer zu finden sein.

Ich möchte da keinen Druck ausüben, aber in meinen Augen kann man die Version jetzt schon produktiv einsetzen - wenn das Addon den Beta-Status verlässt, wird sich ja grundsätzlich nicht viel ändern.

@aeberhard du bist Lead des FOR-Addons, wärst du damit einverstanden? Was meinen die anderen? @tbaddade du hast es ebenfalls in Verwendung.

PHP 8.1 compatibility

16.08.2022, 18:07:30 Deprecated str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated redaxo/src/addons/xoutputfilter/plugins/frontend/boot.php 11

Tooltip

Tooltip bei den Info-Icons, Layout wie in Bootstrap
data-toggle="tooltip" data-placement="left" title="Tooltip on left"

eigenes Tooltip-Script?

Wunschliste (ist klein)

hallo andi,

danke, dass du hier anfängst :-)

alle dinge die die 4er version schon konnte muss ich jetzt hier nicht auflisten. hätte ich gerne alles wieder :-)

die dinge die ich im out5 addon habe könnte ich ja dann fast alle machen.

lg
oliver

abbrev Plugin: Ersetzung nur einmal + Bereiche ausschliessen

Es wäre super wenn es die Möglichkeit geben würde das ein Begriff nur einmal pro Artikel mit einem Tag versehen wird. Jetzt wird jedes Vorkommen auf einer Seite ersetzt.
Weiterhin wäre es gut, wenn man bestimmte Elemente oder Klassen ausschliessen könnte (z.B. die Navigation oder den Footer).

TODO-Liste für eine neue überarbeitete Version

  • Tabellenstruktur erstmal identisch erhalten
  • Plugins entfernen und in das Basis-Addon
  • (abbrev-Plugin ersatzlos entfernen?)
  • Funktionen nach Möglichkeit in Klassen überführen
  • UI überarbeiten
  • Dokumentation
    • Doku-Plugin entfernen
    • Doku in README
  • Hinweis im Backend "Xoutpufilter ist nicht aktiviert" entfernen
  • vorhandene Issues beachten und evtl. umsetzen
  • .php-cs-fixer.dist.php hinzufügen, Code-Styling
  • Code-Quality mit rexstan
  • Funktionen - bisher plugins - über Rechte zuweisen, Redakteur z.b. nur sprachen+abbrev
  • Sprachübergreifende Frontend-Ersetzungen

Kopierfunktion

Kopieren von Frontend <-> Backend
Frontend -> Frontend -> Sprache

Links nach der Form redaxo://articleID werden nicht ersetzt

Wenn ich in einer Sprachersetzung einen "Redaxo Link" benutze, dann wird dieser im Frontend nicht aufgelöst.

Lorem <a href="redaxo://12">Ipsum</a> quid

Sollte im Frontend zu

Lorem <a href="/impressum.html">Ipsum</a> quid

werden, das passiert aber nicht.

Prio-Feld

Ich würde mir wünschen, dass man die Reihenfolge der Bearbeitung nicht über den key festlegen muss, sondern ein Prio-Feld hat und die Abarbeitung sich danach richtet.

Parameter mit übergeben / Shortcodes

Toll wäre, wenn es möglich wäre, einfache Parameter mit zu übergeben, dann ließen sich Ersetzungen als mini-Templates verwenden.

z.B.

Wir empfehlen [[WICHTIGER-LINK[bla]]] und [[WICHTIGER-LINK[blub]]]

könnte via PHP Ersetzung zu so etwas werden:

Wir empfehlen <a href="/artikel?param=bla">bla</a> und <a href="/artikel?param=blub>bulb</a>

Layout und Labels in "Konfiguration"

Layout-Fehler bei den Platzhaltern:

image

Bei folgenden Seiten-id's nicht ausführen
Alternativvorschlag: Blacklist (Artikel)
Bei folgenden Kategorien nicht ausführen
Alternativvorschlag: Blacklist (Artikel)

Bei folgenden Backend-seiten nicht ausführen
Bitte Wertebeispiel mit <code></code>' liefern, z.B. Bei folgenden Backend-seiten nicht ausführen, bspw. structure,xoutputfilter/config`

Frontend vs. Sprache

Mir ist nicht ganz klar, warum bei "Frontend" überhaupt mehrere Sprachen angezeigt werden:
image
Wenn ich eine änderung in einer Sprache mache oder sie aktivere/deaktiviere, ist das auch in der anderen Sprache so. Dann kann man das doch auch komplett abschalten, oder?

Fehler beim Übernehmen: Angeblich kein key

Gerade hatte ich das Problem, dass ich eine Ersetzung im Bearbeitungsmodus von aktiv auf inaktiv schalten wollte und diese Änderung nicht übernommen werden konnte, da angeblich kein key vergeben worden sei. Ein key war jedoch eingetragen.

Reproduzieren kann ich den Fehler allerdings nicht.

Meldung: Keine Plugins installiert

So lange das Frontend-Plugin nicht installiert ist, erhält man die Meldung es wäre kein Plugin installiert. Ich habe nur das Backend-Plugin installiert und wundere mich über die Meldung.

Doku: Beispiele für Shortcodes

Einen mächtigen Einsatzzweck für XOutputFilter sehe ich in der Verwendung von Shortcodes, wie man sie aus Wordpress, etc. kennt.

Beispiel: [GALLERY images="bild1.jpg,bild2.jpg" effect="fade"] macht mit XOutputFilter daraus

<div class="flexslider">
<ul class="slides">
<li class="slide"><img src="/media/bild1.jpg" /></li>
<li class="slide"><img src="/media/bild2.jpg" /></li>
<li class="slide"><img src="/media/bild3.jpg" /></li>
</ul>
</div>

Dafür sollte es ein Beispiel in XOutputFilter geben.

Duplizieren

Habe oft den Fall, dass ich mehrere sehr ähnlich Ersetzungen anlege. Stelle mir einen einfachen Duplizieren-Button in der Übersicht vor und dann eine vorausgefüllte Input-Maske, mit der ich den Marker und die Ersetzung (und alles andere) editieren kann.

Frontendersetzung innerhalb von Frontendersetzungen

Hey,

kurze Frage zu den Frontendersetzungen. Ich ersetze aktuell einen Platzhalter mit einem Formular. Darin sind einige Sprachersetzungen, die problemlos ersetzt werden. Allerdings ist ein Platzhalter dabei, den ich gerne mit einer weiteren Frontendersetzung austauschen möchte, weil ich an dieser Stelle einen Link brauche, der aus Redaxo kommt. In der Version aus dem Installer wird dieser Platzhalter allerdings nicht ersetzt. Habe ich das unter Umständen einfach nur falsch konfiguriert oder ist das so aktuell (noch) nicht vorgesehen?

Frontend-Ersetzungen > hinzufügen > Labels

Vorschlag:

statt

  • aktiv bei folgenden Kategorien
    ** nein
    ** ja
  • inklusive Sub-Kategorien
  • oder aktiv bei allen Kategorien

erst

  • aktive Kategorien
    ** Opt 1: Alle Kategorien
    ** Opt 2: benutzerdefiniert

und wenn hier Opt 2 "benutzerdefiniert" ausgewählt wird, dann erst das be_category-Feld anzeigen.

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.