WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Hallo liebe Mitglieder,
ich liebe WBCE und nutze es für verschiedenste Seiten. Ich bin jedoch überhaupt nicht "warm" mit der Erstellung eigener Module. Ich weiß, es gibt eine Anleitung dazu im Hilfe Bereich, aber das hilft mir in dem Fall nicht weiter, weil mir das "zu hoch" ist. Ich will ehrlich sein.
Ich möchte gern die Möglichkeit haben, im Admin Bereich einen neuen Abschnitt zu einer Seite hinzuzufügen, der nur aus einem mehrzeiligen Texteingabefeld besteht und später auf der Homepage diesen Code rendert:
<pre><code data-language="meineSprache">
Dies ist der Bereich, den ich im Admin Bereich beim Hinzufügen eines Abschnitts als einfaches
mehrzeiliges Textfeld (welches auch die Zeilenumbrüche beachtet), wie man es
vom Code2 Modul kennt, darstellen und editieren möchte.
</code></pre>
Wenn ein solcher Abschnitt auf einer Seite eingefügt wird, sollen im Footer der HTML Seite die folgenden Zeilen ausgegeben werden:
<script src="./js/rainbow.min.js"></script>
<script src="./js/meineSprache.js"></script>
Im Header soll die folgende Zeile ausgegeben werden:
<link rel="stylesheet" type="text/css" href="./css/rainbow-meineSprache-light.css">
Ich würde mich sehr freuen, wenn mir jemand bitte einen Hinweis gibt, wie ich das entweder selbst erstellen kann, oder gar dieses Modul erstellt.
Vielen Dank und viele Grüße.
Beitrag geändert von hansklok (24.04.2020 16:21:21)
Offline
Bin mir grade nicht ganz sicher ob ich's dein Anliegen richtig verstehe:
Du bräuchtest quasi ein Code2-Modul welches die Eingabe von Plain-Text erlaubt.
Die Ausgabe dieses Textes sollte dann pre/code Formatiert (wie in deinem obigen Beispiel) erfolgen.
?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Bin mir grade nicht ganz sicher ob ich's dein Anliegen richtig verstehe:
Du bräuchtest quasi ein Code2-Modul welches die Eingabe von Plain-Text erlaubt.
Die Ausgabe dieses Textes sollte dann pre/code Formatiert (wie in deinem obigen Beispiel) erfolgen.
?
Ganz genauso meine ich das.
Offline
Hallo Hansklok,
erzeugen einen neuen WYSIWYG-Abschnitt und füge den Textabschnitt über die 'Quellcodeansicht' des Editors ein.
Für die Positionierung der weiteren Resourcen, direkt in die generierte Seite, kannst Du dann ein Droplet in Deinem Abschnitt nutzen.
Erstelle Dir ein neues Droplet und gib ihm einen sinnvollen Namen. Als Inhalt nimmst Du dann:
I::insertCssFile(TEMPLATE_DIR . './css/rainbow-meineSprache-light.css', 'HEAD TOP-');
I::insertJsFile(TEMPLATE_DIR . './js/rainbow.min.js', 'HEAD BTM-');
I::insertJsFile(TEMPLATE_DIR . './js/meineSprache.js', 'HEAD BTM-');
return false;
Möglicherweise musst Du die Pfade noch anpassen. Ich habe das jetzt einfach aus Deiner Nachricht kopiert.
Das Droplet dann einfach oberhalb Deines eingefügten Abschnittes (oder irgendwo auf der Seite in Deinem Text) einfügen.
Gruß
klawin
Beitrag geändert von klawin (24.04.2020 18:48:25)
Egal wie du es machst, du machst es falsch! Also mache es!
Offline
erzeugen einen neuen WYSIWYG-Abschnitt und füge den Textabschnitt über die 'Quellcodeansicht' des Editors ein.
Für die Positionierung der weiteren Resourcen, direkt in die generierte Seite, kannst Du dann ein Droplet in Deinem Abschnitt nutzen.
Hallo Klawin,
danke für Deine Nachricht. Leider ist das keine Option für mich. Ich habe eine API mit sehr vielen Code-Beispielen zu dokumentieren. Von daher ist für mich nur ein Modul eine Option. Dies erleichtert mi r die Arbeit, weil ich wirklich immer nur das Code-Beispiel eingeben muss und nicht noch das Droplet.
Beitrag geändert von hansklok (24.04.2020 16:53:38)
Offline
Ah, ich sehe grade du hast die Anforderungen in deinem 1. Post nochmal erweitert.
Damit fällt meine Idee mit einer editor.styles.js im Template-Verzeichnis auch flach und die Anforderungen an solch ein Modul erhöhen sich auch. Evtl. wäre "OneForAll" mit frei definierbaren Feldern dafür geeignet?
Frage: wie schnell bräuchtest du sowas?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Lieber Bernd,
ich habe mir eben einmal die „OneForAll“ Beschreibung angesehen. Wenn dieses Modul nicht wie ein Droplet genutzt wird, sondern ganz normal wie ein Seitenabschnitt, könnte das passen.
Nochmal zum Thema Modul, eigentlich müsste ich nur wissen, an welcher Stelle im Quelltext von Code2 ich Änderungen vornehmen müsste, um mein eigenes neues Modul daraus machen zu können.
Offline
Dies erleichtert mi r die Arbeit, weil ich wirklich immer nur das Code-Beispiel eingeben muss und nicht noch das Droplet.
die Zeilen müssen nicht immer in den Editor geschrieben werden, sondern sind der einmal zu erfassende Code für das Droplet. In den Editor kommt dann nur der 'Aufruf' für das Droplet selber *einmal* rein.
Nehmen wir Dein Beispiel. Im Editor kommt dann der Aufruf des Droplets (Es heist hier mal 'SpracheBunt') und da drunter dann Dein Codeabschnitt.
[[SpracheBunt]]
<pre><code data-language="meineSprache">
Dies ist der Bereich, den ich im Admin Bereich beim Hinzufügen eines Abschnitts als einfaches
mehrzeiliges Textfeld (welches auch die Zeilenumbrüche beachtet), wie man es
vom Code2 Modul kennt, darstellen und editieren möchte.
</code></pre>
<pre><code data-language="meineSprache">
Weiterer Bereich mit Quellcode zum Dokumentieren.
</code></pre>
Ich nutze diese Vorgehensweise selber für genau dieses Thema. Ich nutze 'prism' für die Darstellung des Codes und benötige auch die .js und .css nur dann, wenn ich einen Codeblock anzeigen will.
Natürlich könnte man dafür ein Modul schreiben. Habe ich mir auch zu Anfang überlegt und gleich wieder verworfen. Das mit dem Droplet ist richtig schön pragmatisch und auch einfach umzusetzen.
Gruß
klawin
Egal wie du es machst, du machst es falsch! Also mache es!
Offline
Ganz grob gesagt könnte es im Code2 evtl. reichen eine der "Kommentar" Ausgaben (case 3 / case 4) in der view.php entsprechend zu verbiegen um deinen Content mit dem gewünschten "pre/code" Geraffel aussenrum auszugeben.
Blieben noch das dynamische Laden von js/css. Könnte funktionieren das an der gleichen Stelle, entprechend der Droplet-Beispiele von klawin, mit in die Ausgabe einzupflanzen.
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Für ein Modul bietet sich WYSIWYG2 als Ausgangspunkt an.
CSS/JS-Aufrufe werden dank I-Klasse automatisch in den <head> verschoben.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Nehmen wir Dein Beispiel. Im Editor kommt dann der Aufruf des Droplets (Es heist hier mal 'SpracheBunt') und da drunter dann Dein Codeabschnitt
Es tut mir leid, ich Glauber ich verstehe Dich nicht. Es geht nicht darum statischen Content auszugeben. Alles zwischen pre/code ist variabel. Kannst Du mir bitte ganz genau aufzeigen, was ich Schritt für Schritt tun muss? Danke.
Ganz grob gesagt könnte es im Code2 evtl. reichen eine der "Kommentar" Ausgaben (case 3 / case 4) in der view.php entsprechend zu verbiegen um deinen Content mit dem gewünschten "pre/code" Geraffel aussenrum auszugeben.
Das habe ich eben einmal ausprobiert. Das funktioniert zwar, aber Leerzeilen im Code Bereich werden entfernt. Das möchte ich nicht. Leerzeilen sollen erhalten bleiben.
Die Zeile im Header und die beiden Zeilen am Ende der Seite baue ich einfach fix in mein Template ein. Damit kann ich leben.
view.php
case 3:
case 4:
// echo ""; //Keine Ausgabe: Kommentar
echo "\n<pre><code data-language=\"meineSprache\">".$content."\n</code></pre>\n";
break;
Für ein Modul bietet sich WYSIWYG2 als Ausgangspunkt an.
CSS/JS-Aufrufe werden dank I-Klasse automatisch in den <head> verschoben.
Kannst Du das bitte genauer erläutern? Ich kenne das Modul nicht.
Beitrag geändert von hansklok (24.04.2020 20:30:39)
Offline
@hansklok:
1. nl2br($content) anstelle des $content, dann sollte es auch mit den Zeilenumbrüchen passen
2. so wie du es jetzt eingebaut hast gilt es halt für beide cases 3 und 4 - besser wäre so
case 3: echo ""; //Keine Ausgabe: Kommentar
break;
case 4: echo "\n<pre><code data-language=\"meineSprache\">".nl2br($content)."\n</code></pre>\n";
break;
Dann hast du den "internen Kommentar" trotzdem noch als das zur Verfügung als das er gedacht ist.
! Admin Abschnitte (case 4) können nur vom Admin bearbeitet werden, wenn andere auch bearbeiten sollen dann halt case 3 dafür nehmen.
Beitrag geändert von bernd (24.04.2020 20:42:13)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
1. nl2br($content) anstelle des $content, dann sollte es auch mit den Zeilenumbrüchen passen
Das gibt mir leider dann den Text "<br>" auf der Leerzeile und an allen Zeilenenden mit Text aus.
Das gebe ich im Admin Bereich ein:
Dim s As String = "Hello World"
For Each c As String In s
MessageBox(c)
Next
Und das wird ausgegeben:
Dim s As String = "Hello World"<br>
<br>
For Each c As String In s<br>
MessageBox(c)<br>
Next
Beitrag geändert von hansklok (24.04.2020 20:53:07)
Offline
Die Leerzeilen werden vom Outputfilter Remove System Placeholders entfernt, siehe die "Diskussion" zum Mocul Frontend Final CSS.
Der Filter muss fürs Backend deaktiviert oder geringfügig modifiziert werden: https://forum.wbce.org/viewtopic.php?pid=30373#p30373
WYSIWYG2 gibts im AOR: https://addons.wbce.org/pages/addons.ph … em&item=41
Das eignet sich ganz gut als Ausgangspunkt für ganz einfache Contentmodule.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
@florian:
denke nicht, dass das am Outputfilter liegt.
Bei mir (im WBCE-zon ohne die extra Scripte) werden die Zeilenumbrüche ausgegeben, glaube eher, das da dieses Quelltext-Formatierungs-Script dazwischen funkt.
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
hansklok
Im Admin Bereich werden im Code2 Editor nach dem Speichern auch sämtliche Leerzeilen entfernt.
Offline
Leerzeilen!=Zeilenumbrüche. Das liegt definitiv am Outputfilter, siehe verlinkter Thread!
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Leerzeilen!=Zeilenumbrüche
Danke! jetzt hab auch ich es verstanden
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Und trete immer noch auf der Stelle. Könnt ihr mir bitte den genauen Pfad nennen, wo ich im FTP-Verzeichnis hinnavigieren muss und welche Datei zu bearbeiten ist?
Beitrag geändert von hansklok (24.04.2020 21:10:52)
Offline
Das wäre in /modules/mod_opf_remove_system_ph/filter.php
Dort reicht es die letzte Zeile mit $content auszukommentieren (Nebenwirkungen? keine Ahnung!)
//$content = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $content);
Bei sowas musst du halt immer im Hinterkopf behalten das die Änderungen bei Upgrades überschrieben werden können!
Den Pfad siehst du übrigens auch wenn du in Admin Tools -> Output Filter Dashboard den jeweiligen Filter (in dem Fall: Remove System PH) anklickst.
Beitrag geändert von bernd (24.04.2020 21:20:20)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Entweder bei Admintools - Outputfilter Dashboard - Erweitert - Remove System PH den Haken bei Alle Seiten - Backend wegnehmen oder in modules/mod_opf_remove_system_ph/filter.php Zeile 38 auskommentieren, das wirkt sich dann aber auch auf den Quellcode im Frontend aus.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Jetzt wird im Admin Bereich alles korrekt ausgegeben, aber auf der Website erscheinen die "<br>" Tags immer noch. Und im gerenderten Template erscheinen nun auch dutzende Leerzeilen.
Ich denke, es hängt mit dem Code2 Modul zusammen. Hach, kompliziert alles.
Beitrag geändert von hansklok (24.04.2020 21:23:51)
Offline
das nl2br aus Post Nr. 12 oben muss wieder raus. Und die Leerzeilen im Frontendcontent sind die bewussten Nebenwirkungen.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
hansklok
Nachdem ich in der "view.php" von Code2 wieder das "nl2br" entfernt habe, wird alles korrekt angezeigt.
Offline
florian
@hansklok Ich habe nun doch ein Modul aus dem Droplet gemacht. Ist zwar für den Prism-Highlighter, aber sicherlich leicht auf den von Dir verwendeten Syntax-Einfärber umzubauen. Kannst es Dir ja mal anschauen. Es ist hier beschrieben.
Egal wie du es machst, du machst es falsch! Also mache es!
Offline
hansklok