Commit d7f03dab authored by Brion Vibber's avatar Brion Vibber

Added an option to TinyMCE plugin to restrict the rich-text editor to users...

Added an option to TinyMCE plugin to restrict the rich-text editor to users who have the 'richedit' role. This allows enabling it for a subset of accounts on a site while leaving other users using the regular posting system, which is more stable.
parent 20f21674
...@@ -50,9 +50,14 @@ class TinyMCEPlugin extends Plugin ...@@ -50,9 +50,14 @@ class TinyMCEPlugin extends Plugin
{ {
var $html; var $html;
// By default, TinyMCE editor will be available to all users.
// With restricted on, only users who have been granted the
// "richedit" role get it.
public $restricted = false;
function onEndShowScripts($action) function onEndShowScripts($action)
{ {
if (common_logged_in ()) { if (common_logged_in() && $this->isAllowedRichEdit()) {
$action->script(common_path('plugins/TinyMCE/js/jquery.tinymce.js')); $action->script(common_path('plugins/TinyMCE/js/jquery.tinymce.js'));
$action->inlineScript($this->_inlineScript()); $action->inlineScript($this->_inlineScript());
} }
...@@ -62,7 +67,9 @@ class TinyMCEPlugin extends Plugin ...@@ -62,7 +67,9 @@ class TinyMCEPlugin extends Plugin
function onEndShowStyles($action) function onEndShowStyles($action)
{ {
$action->style('span#notice_data-text_container, span#notice_data-text_parent { float: left }'); if ($this->isAllowedRichEdit()) {
$action->style('span#notice_data-text_container, span#notice_data-text_parent { float: left }');
}
return true; return true;
} }
...@@ -116,7 +123,7 @@ class TinyMCEPlugin extends Plugin ...@@ -116,7 +123,7 @@ class TinyMCEPlugin extends Plugin
*/ */
function onStartSaveNewNoticeWeb($action, $user, &$content, &$options) function onStartSaveNewNoticeWeb($action, $user, &$content, &$options)
{ {
if ($action->arg('richedit')) { if ($action->arg('richedit') && $this->isAllowedRichEdit()) {
$html = $this->sanitizeHtml($content); $html = $this->sanitizeHtml($content);
$options['rendered'] = $html; $options['rendered'] = $html;
$content = $this->stripHtml($html); $content = $this->stripHtml($html);
...@@ -135,7 +142,7 @@ class TinyMCEPlugin extends Plugin ...@@ -135,7 +142,7 @@ class TinyMCEPlugin extends Plugin
*/ */
function onStartSaveNewNoticeAppendAttachment($action, $media, &$content, &$options) function onStartSaveNewNoticeAppendAttachment($action, $media, &$content, &$options)
{ {
if ($action->arg('richedit')) { if ($action->arg('richedit') && $this->isAllowedRichEdit()) {
// See if we've got a placeholder inline image; if so, fill it! // See if we've got a placeholder inline image; if so, fill it!
$dom = new DOMDocument(); $dom = new DOMDocument();
...@@ -320,4 +327,23 @@ END_OF_SCRIPT; ...@@ -320,4 +327,23 @@ END_OF_SCRIPT;
return $scr; return $scr;
} }
/**
* Does the current user have permission to use the rich-text editor?
* Always true unless the plugin's "restricted" setting is on, in which
* case it's limited to users with the "richedit" role.
*
* @fixme make that more sanely configurable :)
*
* @return boolean
*/
private function isAllowedRichEdit()
{
if ($this->restricted) {
$user = common_current_user();
return !empty($user) && $user->hasRole('richedit');
} else {
return true;
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment