diff options
Diffstat (limited to 'plugins/TinyMCE/TinyMCEPlugin.php')
-rw-r--r-- | plugins/TinyMCE/TinyMCEPlugin.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/plugins/TinyMCE/TinyMCEPlugin.php b/plugins/TinyMCE/TinyMCEPlugin.php index 1d9d4a288..c0fd8506e 100644 --- a/plugins/TinyMCE/TinyMCEPlugin.php +++ b/plugins/TinyMCE/TinyMCEPlugin.php @@ -49,6 +49,8 @@ if (!defined('STATUSNET')) { class TinyMCEPlugin extends Plugin { + var $html; + function onEndShowScripts($action) { if (common_logged_in()) { @@ -76,6 +78,39 @@ class TinyMCEPlugin extends Plugin return true; } + function onArgsInitialize(&$args) + { + if (!array_key_exists('action', $args) || + $args['action'] != 'newnotice') { + return true; + } + + $raw = $args['status_textarea']; + + require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php'; + + $config = array('safe' => 1, + 'deny_attribute' => 'id,style,on*'); + + $this->html = htmLawed($raw, $config); + + $text = html_entity_decode(strip_tags($this->html)); + + $args['status_textarea'] = $text; + + return true; + } + + function onStartNoticeSave($notice) + { + if (!empty($this->html)) { + // Stomp on any rendering + $notice->rendered = $this->html; + } + + return true; + } + function _inlineScript() { $path = common_path('plugins/TinyMCE/js/tiny_mce.js'); |