JavaScript TinyMCE Plugin: "Paste" [block drop]

innu

Cadet 3rd Year
Registriert
März 2010
Beiträge
56
Hallo Zusammen,

ärger mich mal wieder über meinen TinyMCE. Das Problem ist, dass die User immer Bilder per Drag&Drop in die Textarea ziehen - anscheinend die einzige Möglichkeit meine bisherigen Sperren zu umgehen. Bilder kann ich generell nicht verbieten (eigene Smilies), würde aber gerne dieses Drag&Drop verbieten.

Nach langem Suchen bin ich auf's Plugin "Paste" gestoßen, mit dem man das angeblich unterbinden kann, nämlich mit [paste_block_drop]. Damit scheine ich aber nur zu erreichen, dass man aus der Textarea nichts heraus draggen kann - droppen funktioniert immernoch.

tinyMCE.init({
theme : "advanced",
...
mode : "textareas",
plugins : "paste",
...
paste_block_drop = true,
...
});

Was mache ich verkehrt? Gibt es noch andere Möglichkeiten die (externen) Bilder zu unterdrücken? Vielen Dank im voraus!
Innu
 
Ich nehme an, du hast die Möglichkeit zumindest irgendwo als "verboten" deklariert und deine User machen es halt trotzdem, ne?
Wenn ja, dann solltest du umgehend en Filter mit PHP (oder der Sprache, die du nutzt) einbauen, denn eine JS-Lösung lässt sich immer ohne weiteres umgehen.

Einfach per PHP mit einem regulären Ausdruck alle img Elemente maskieren und rauslöschen. Für Smilies kannste zusätzlich eine Whitelist integrieren, damit diese nicht gefiltert werden.

Wie du mit TinyMCE das genau bewerkstelligen kannst, kann ich dir nicht beantworten, aber sollten die User dann trotzdem noch den Editor "missbrauchen", dann greift die PHP Lösung und filtert alle ungewollten Bilder einfach raus.

PHP: preg_replace()
 
Hallo und Danke für Deinen Lösungsansatz!

Ja, richtig - es geht um PHP. Bislang habe ich dort noch nicht mit Whitelists gearbeitet. Hast Du einen Ansatz, wie sich das realisieren lässt? Ich hatte mir folgendes überlegt, aber dort stoße ich dann auf ein paar Probleme:

PHP:
<?php

$text = $_POST['gbtextarea']; // Text aus dem Gästebuch

$whiteList = array('tinymce/smilie/bild1.gif','tinymce/smilie/bild2.gif','tinymce/smilie/bild3.gif'); // als Array

if (in_array($text,$whiteList)) {

 //Bild einfügen

}
else {
 
 // Bild rausfiltern, also etwa so:

 $pos = strpos($text, '<img');
 while($pos !== false) {
 $text = substr($text, 0, $pos).substr($text, strpos($text, '>', $pos));
 $pos = strpos($text, '<img');
 
 // bzw. mit Stripslash...
 
}  
}
?>

So kann das leider nicht funktionieren, weil ich zwar Bilder einfüge, die aber wieder rausgefiltert werden. Und außerdem geht er ja in diesem Fall nur einmal den Text durch und lässt entweder alles drin, oder wirft alles raus. :freak:

Irgendwo habe ich da einen Denkfehler... kann mir mal bitte jemand auf den Hinterkopf schlagen? Danke!
 
Zurück
Oben