You are not logged in.

1

Tuesday, July 10th 2012, 10:37am

Nutzung WYSIWYG-Editor in Plugin

Hallo zusammen,

ich bin dabei ein Plugin zu schreiben, welches eine Kommentarfunktion (wie hier die Beiträge) bietet und auch Smilies und BBCodes unterstützen soll.
Was muss ich wie einbinden, dass es funktionieren würde, die Funktionalität mit dem WYSIWYG-Editor abzudecken?

Vielen Dank schon einstweilen :)

LG
Dominik
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

2

Tuesday, July 10th 2012, 10:56am

Im Template machst du ein {include file="wysiwyg"} und brauchst eine Textarea mit id="text"

3

Tuesday, July 10th 2012, 11:14am

Okay, danke Dir schon einmal.
Damit habe ich aber doch nur das Template eingebunden. Was muss ich PHP-seitig machen, um z.B. Stringüberprüfung zu machen und BBCodes darstellen zu können?
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

  • "frmwrk_123" is male

Posts: 1,119

Location: Hamburg

Occupation: Informatikstudent

  • Send private message

4

Tuesday, July 10th 2012, 12:17pm

Dein Formular muss irgendwann von MessageForm erben.
Mit freundlichen Grüßen
frmwrk_123

Nützliche Plugins zum Selberbauen

5

Tuesday, July 10th 2012, 12:54pm

Okay, dann haben wir das Formular theoretisch damit fertig, wenn ich in das Formular-Template das im Header einbinde:

PHP Source code

1
{include file="wysiwyg"}
und anschließend ein Textfeld mache, welches die ID text hat.
Meine Klasse muss von MessageForm erben und ich kann mit der String(Util)-Klasse den String querchecken, dass keiner einen Code einschleusen kann. Korrekt?

Wie bekomme ich jetzt jedoch in der Ausgabe hin, dass die BBCodes dargestellt werden. Gibt es da eine Klasse, die ich mit einbinden muss? Wenn ja, welche wäre das? Muss eine Methode z.B. zum "Erstellen" der Smilies aufgerufen werden, oder passiert das beim Anlegen eines neuen Objektes?
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

6

Tuesday, July 10th 2012, 11:50pm

Zum Absichern, dass keine SQL Injection durchgeführt wird, reicht es alle Strings, welche du in die Query einbauen willst, mit escapeString($var) zu entschärfen. Alle Integer sollten mit (int) bzw. intval($var) umgewandelt werden.
Für die Ausgabe nutzt du am besten die Klasse MessageParser (WCF_DIR.'lib/data/message/bbcode'). Von dieser erstellst du allerdings keine neue Instanz, sondern nutzt die statische Funktion MessageParser::getInstance().

Schau dir am besten die Form "MessageForm.class" an. Da du sagst, dass du nur eine Kommentarfunktion brauchst, ist diese vielleicht etwas zu umfangreich und es reicht aus eine kleine Form selbst zu schreiben. Zum Thema Kommentarsystem gibt es auch ein gutes Tutorial von Tim W.

7

Wednesday, July 11th 2012, 7:23am

Das würde wohl wahr genügen :) Danke für die Info!
Wenn ich das richtig sehe, macht der SimpleMessageParser aus dem Kommentar/What Ever eine Nachricht, die dargestellt wird, wie hier ein Post (eben mit BBCodes), sehe ich das richtig?
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

8

Tuesday, July 17th 2012, 2:59pm

Hallo zusammen,

ich hab es gemacht, wie hier beschrieben mit dem WYSIWYG-Editor (Template includiert und die Ausgabe über Message-Parser laufen lassen).
Leider habe ich keine Ahnung, was ich falsch mache, jedoch folgendes Szenario: Ab dort, wo ich das Template einbinde, hört die Seite auf :(
Binde ich das Template im Header ein, bleibt die Seite weiß, binde ich es vor der Textarea ein, wird alles bis dahin korrekt dargestellt, aber die Textarea und der Editor nicht.
Brauche ich für den Editor irgendwelche Variablen, die assigned werden müssen, oder außer das Template einbinden und den definierten Text in die Textarea schreiben noch etwas?

Vielen Dank schon einstweilen!

LG
Dominik
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,731

Location: Berlin

  • Send private message

9

Tuesday, July 17th 2012, 3:33pm

In solchen Fällen schaut man als erstes in den Quelltext und scrollt bis nach ganz unten. Wenn eine Exception innerhalb von JavaScript-Tags oder innerhalb von Attributen geworfen wird, zeigen Browser diese nicht direkt an.
Alexander Ebert
Developer WoltLab® GmbH


10

Wednesday, July 18th 2012, 7:33am

Danke für den Hinweis.
Er wollte es (lt. Quelltext) darstellen.
Was ich rauslesen kann, ist, dass ihm die Variable $defaultSmilies fehlt. Hab es jetzt somit geändert, dass ich von der Klasse MessageForm erbe und es jetzt auch funktioniert (Es handelt sich ja schließlich um eine Kommentarfunktion ;)).
Eine kleine Frage bleibt noch: Wie bekomme ich ausschließlich die Smilies unten hin (keine Umfragen, Zitate oder Dateianhänge. Höchstens vielleicht noch die Einstellungen, wobei meines Erachtens auch diese im Kontext irrelevant sind)?

Vielen Dank schon einstweilen!

#edit: Ich hab das Template gefunden, wie die Tabs einzubinden sind. Lediglich die Konfiguration, welche "Dienste" die Tabs anbieten sollen, hab ich noch nicht gefunden (Deswegen wirft er auch den fehler, dass $maxUploadFields nicht gesetzt ist).
Für alle, die das selbe Problem haben - die Tabs bekomme ich so:

HTML

1
2
3
4
5
6
7
8
9
10
11
{* text-area, where the wysiwyg-editor should be placed *}
<div class="editorFrame formElement{if $errorField == 'text'} formError{/if}">
	<div class="formField">
		<textarea name="text" id="text" rows="20" cols="40" tabindex="{counter name='tabindex'}">{$text}</textarea>
			{if $errorField == 'text'}
					
			{/if}
	</div>
</div>
{* include tabs *}
{include file='messageFormTabs'}
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

This post has been edited 5 times, last edit by "dominik4545" (Jul 18th 2012, 7:54am)


0xLeon

Member

  • "0xLeon" is male

Posts: 710

Location: Furtwangen

Occupation: Student (Medieninformatik)

  • Send private message

11

Wednesday, July 18th 2012, 8:08am

PHP Source code

19
20
21
22
23
    public $showSmilies true;
    public $showSettings true;
    public $showAttachments true;
    public $showPoll true;
    public $showSignatureSetting true;
Mit diesen Klassenvariablen kannst du die MessageTabs beeinflussen. Definiert werden diese in MessageForm, also in deiner Klasse einfach überschreiben. Zitate lassen sich aber nicht ohne weiteres ausblenden, diese werden von einem EventListener hinzugefügt.
Meine Pakete
Invitation System – Plugin StoreGithub
Update Files Delete PIP – Plugin StoreGithub
Kein Support via PN oder E-Mail.

12

Monday, July 23rd 2012, 2:55pm

hallo noch einmal,
irgendwie komme ich grade nicht mehr weiter. Es war jetzt eine ganze Zeit, wie ich es mir gewünscht hab: Der Smilies-Tab wurde aufgelistet, der Zitate-Tab ausgegraut dargestellt und nicht anklickbar.
Jetzt hab ich komischerweise drei Tabs:
Obwohl ich das hier in der Klasse mache:

PHP Source code

1
2
3
4
5
6
7
8
9
// configure wysiwyg-editor
        $this->enableBBCodes false;
        $this->enableHtml false;
        $this->showAttachments false;
        $this->showSettings false;
        $this->showPoll false;
        $this->showSignature false;
        $this->showSignatureSetting false;
        $this->showSmilies true;

Könntet ihr mir bitte noch einmal kurz behilflich sein?

LG
Dominik
ich werfe niemandem etwas vor, höchstens hinterher :whistling:

Similar threads