WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 24.04.2020 15:45:56

hansklok
Mitglied

Hilfe bei Modul-Erstellung

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

#2 24.04.2020 15:52:03

bernd
Developer

Re: Hilfe bei Modul-Erstellung

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

#3 24.04.2020 16:13:26

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

bernd schrieb:

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

#4 24.04.2020 16:46:38

klawin
Mitglied

Re: Hilfe bei Modul-Erstellung

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

#5 24.04.2020 16:52:50

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

klawin schrieb:

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

#6 24.04.2020 17:43:30

bernd
Developer

Re: Hilfe bei Modul-Erstellung

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

#7 24.04.2020 18:18:12

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

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

#8 24.04.2020 18:43:19

klawin
Mitglied

Re: Hilfe bei Modul-Erstellung

hansklok schrieb:

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

#9 24.04.2020 18:47:26

bernd
Developer

Re: Hilfe bei Modul-Erstellung

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

#10 24.04.2020 19:51:40

florian
Administrator

Re: Hilfe bei Modul-Erstellung

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

#11 24.04.2020 20:28:16

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

klawin schrieb:

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.

bernd schrieb:

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;
florian schrieb:

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

#12 24.04.2020 20:40:06

bernd
Developer

Re: Hilfe bei Modul-Erstellung

@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

#13 24.04.2020 20:47:49

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

bernd schrieb:

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

#14 24.04.2020 20:52:12

florian
Administrator

Re: Hilfe bei Modul-Erstellung

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

#15 24.04.2020 21:00:13

bernd
Developer

Re: Hilfe bei Modul-Erstellung

@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

Liked by:

hansklok

#16 24.04.2020 21:01:29

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

Im Admin Bereich werden im Code2 Editor nach dem Speichern auch sämtliche Leerzeilen entfernt.

Offline

#17 24.04.2020 21:02:55

florian
Administrator

Re: Hilfe bei Modul-Erstellung

Leerzeilen!=Zeilenumbrüche. Das liegt definitiv am Outputfilter, siehe verlinkter Thread!


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#18 24.04.2020 21:09:43

bernd
Developer

Re: Hilfe bei Modul-Erstellung

Leerzeilen!=Zeilenumbrüche

Danke! jetzt hab auch ich es verstanden  ops


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#19 24.04.2020 21:10:39

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

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

#20 24.04.2020 21:17:58

bernd
Developer

Re: Hilfe bei Modul-Erstellung

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

#21 24.04.2020 21:20:02

florian
Administrator

Re: Hilfe bei Modul-Erstellung

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

#22 24.04.2020 21:20:05

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

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

#23 24.04.2020 21:25:10

florian
Administrator

Re: Hilfe bei Modul-Erstellung

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

Liked by:

hansklok

#24 24.04.2020 21:25:12

hansklok
Mitglied

Re: Hilfe bei Modul-Erstellung

Nachdem ich in der "view.php" von Code2 wieder das "nl2br" entfernt habe, wird alles korrekt angezeigt.  angel

Offline

Liked by:

florian

#25 27.04.2020 11:38:01

klawin
Mitglied

Re: Hilfe bei Modul-Erstellung

@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

Liked by:

hansklok

Fußzeile des Forums

up