phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] [18551] switch to YUI for RTE widget


From: Dave Hall
Subject: [Phpgroupware-cvs] [18551] switch to YUI for RTE widget
Date: Sun, 01 Jun 2008 00:55:46 +0000

Revision: 18551
          
http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=18551
Author:   skwashd
Date:     2008-06-01 00:55:45 +0000 (Sun, 01 Jun 2008)

Log Message:
-----------
switch to YUI for RTE widget

Modified Paths:
--------------
    trunk/phpgwapi/inc/class.richtext.inc.php

Modified: trunk/phpgwapi/inc/class.richtext.inc.php
===================================================================
--- trunk/phpgwapi/inc/class.richtext.inc.php   2008-06-01 00:54:45 UTC (rev 
18550)
+++ trunk/phpgwapi/inc/class.richtext.inc.php   2008-06-01 00:55:45 UTC (rev 
18551)
@@ -18,247 +18,97 @@
        * @package phpgwapi
        * @subpackage gui
        */
-       class richtext
+       class phpgwapi_richtext
        {
                /**
                 * @var the base URL for all links, defaults to phpgw url
                 */
-                var $base_url;
+                protected $_base_url;
                 
                /**
                * @var string $rte which rich text editor will be used
                */
-               var $rte;
+               protected $_rte;
 
                /**
                * @var array $targets the targets which will be replaced by the 
rich text editor
                */
-               var $targets = array();
+               protected $_targets = array();
                
                /**
                * Constructor
+               *
+               * @return void
                */
-               function richtext()
+               public function __construct()
                {
-                       $this->base_url = 
$GLOBALS['phpgw_info']['server']['webserver_url'];
-                       $this->rte = '';
-                       if(!is_object($GLOBALS['phpgw']->js))
-                       {
-                               $GLOBALS['phpgw']->js = 
createObject('phpgwapi.javascript');
-                       }
+                       $this->_base_url = 
$GLOBALS['phpgw_info']['server']['webserver_url'];
+                       $this->_rte = '';
                        $this->_init_head();
                }
 
                /**
                * Generate the dynamic script content for the header
+               *
+               * @return void
                */
-               function generate_script()
+               public function generate_script()
                {
-                       if ( count($this->targets) )
+                       $js = '';
+                       
+                       foreach ( array_keys($this->_targets) as $target )
                        {
-                               switch($this->rte)
-                               {
-                                       case 'fckeditor':
-                                               
$this->_generate_script_fckeditor();
-                                               break;
-                                       
-                                       case 'tinymce':
-                                               
$this->_generate_script_tinymce();
-                                               break;
-                                       default:
-                                               //do nothing
-                               }
+                               $js .= <<<SCRIPT
+                       (function() {
+                               var Dom = YAHOO.util.Dom,
+                               Event = YAHOO.util.Event;
+                               
+                               var editorConfig = {
+                                       width: '100em',
+                                       height: '10em',
+                                       dompath: true,
+                                       animate: true
+                               };
+                               
+                               var editorWidget = new 
YAHOO.widget.Editor('{$target}', editorConfig);
+                               editorWidget.render();
+                               })();
+                               
+SCRIPT;
                        }
+
+                       $GLOBALS['phpgw']->js->add_event('load', $js);
                }
 
                /**
                * Replaces an element with a rich text editor instance
+               *
+               * @return void
                */
-               function replace_element($html_id)
+               public function replace_element($html_id)
                {
-                       $this->targets[$html_id] = true; //stops duplicates :)
+                       $this->_targets[$html_id] = true; // stops duplicates
                }
 
                /**
                 * Set the base URL for all links
+                *
+                * @return void
                 */
-                function set_base_url($url)
+                public function set_base_url($url)
                 {
-                       $this->base_url = $url;
+                       $this->_base_url = $url;
                 }
 
                /**
-                * Generate the js needed for FCKeditor to function properly 
-                */
-                function _generate_script_fckeditor()
-                {
-                       $str = '';
-                       
-                       foreach ( $this->targets as $target => $crap )
-                       {
-                               $str .=  "var oFCKeditor_{$target} = new 
FCKeditor( '{$target}' ) ;\n" .
-                                               
"\toFCKeditor_{$target}.AutoDetectLanguage = false;\n" .
-                                               
"\toFCKeditor_{$target}.BaseHref = '{$this->base_url}';\n" .
-                                               
"\toFCKeditor_{$target}.BasePath = 
'{$GLOBALS['phpgw_info']['server']['webserver_url']}/phpgwapi/js/fckeditor/';\n"
 .
-                                               
"\toFCKeditor_{$target}.DefaultLanguage = 
'{$GLOBALS['phpgw_info']['user']['preferences']['common']['lang']}';\n" .
-                                               
"\toFCKeditor_{$target}.GeckoUseSPAN = false;\n" .
-                                               
"\toFCKeditor_{$target}.SpellChecker = '" . (extension_loaded('pspell') ? 
'SpellerPages' : 'ieSpell') . "';\n" .
-                                               
"\toFCKeditor_{$target}.ReplaceTextarea();\n\n";
-                       }
-                       $GLOBALS['phpgw']->js->add_event('load', $str);
-                }
-
-               /**
-                * Generate the js needed for tiny to function properly 
-                */
-               function _generate_script_tinymce()
-               {
-                       $GLOBALS['phpgw_info']['flags']['java_script'] .= 
-                       "<script type=\"text/javascript\">\n//<![CDATA[\n" .
-                               //"tinyMCE.baseURL = 
'{$GLOBALS['phpgw_info']['server']['webserver_url']}/phpgwapi/js/tinymce/';\n" .
-                               "tinyMCE.init({\n" .
-                                       "\t\tdocument_base_url : 
'{$this->base_url}',\n" .
-                                       "\t\tinline_styles : false,\n" .
-                                       "\t\tlanguage : 
'{$GLOBALS['phpgw_info']['user']['preferences']['common']['lang']}',\n" .
-                                       "\t\tmode : 'none',\n" .
-                                       "\t\ttheme : 'advanced',\n" .
-                                       "\t\ttheme_advanced_toolbar_align : 
'left',\n" .
-                                       "\t\ttheme_advanced_toolbar_location : 
'top',\n" .
-                                       //FIXME make this more configrable 
(using array? and unset?)
-                                       "\t\tvalid_elements : ''" . '
-+"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name|rel|rev|shape<circle?default?poly?rect|tabindex|title|target|type],"
-+"abbr[class|dir<ltr?rtl|id|lang|title],"
-+"acronym[class|dir<ltr?rtl|id|id|lang|title],"
-+"address[class|align|dir<ltr?rtl|id|lang|title],"
-+"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref|shape<circle?default?poly?rect|tabindex|title|target],"
-+"bdo[class|dir<ltr?rtl|id|lang|title],"
-+"big[class|dir<ltr?rtl|id|lang|title],"
-+"blockquote[dir|cite|class|dir<ltr?rtl|id|lang|title],"
-+"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|title|text|vlink],"
-+"br[class|clear<all?left?none?right|id|title],"
-+"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|tabindex|title|type|value],"
-+"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|title],"
-+"cite[class|dir<ltr?rtl|id|lang|title],"
-+"code[class|dir<ltr?rtl|id|lang|title],"
-+"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|title|valign<baseline?bottom?middle?top|width],"
-+"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|span|title|valign<baseline?bottom?middle?top|width],"
-+"dd[class|dir<ltr?rtl|id|lang|title],"
-+"del[cite|class|datetime|dir<ltr?rtl|id|lang|title],"
-+"dfn[class|dir<ltr?rtl|id|lang|title],"
-+"dir[class|compact<compact|dir<ltr?rtl|id|lang|title],"
-+"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"dl[class|compact<compact|dir<ltr?rtl|id|lang|title],"
-+"dt[class|dir<ltr?rtl|id|lang|title],"
-+"em/i[class|dir<ltr?rtl|id|lang|title],"
-+"fieldset[class|dir<ltr?rtl|id|lang|title],"
-+"font[class|color|dir<ltr?rtl|face|id|lang|size|title],"
-+"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang|method<get?post|name|title|target],"
-+"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|size|title|width],"
-+"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height|hspace|id|ismap<ismap|lang|longdesc|name|src|title|usemap|vspace|width],"
-+"input[accept|accesskey|align<bottom?left?middle?right?top|alt|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang|maxlength|name|readonly<readonly|size|src|tabindex|title|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text|usemap|value],"
-+"ins[cite|class|datetime|dir<ltr?rtl|id|lang|title],"
-+"isindex[class|dir<ltr?rtl|id|lang|prompt|title],"
-+"kbd[class|dir<ltr?rtl|id|lang|title],"
-+"label[accesskey|class|dir<ltr?rtl|for|id|lang|title],"
-+"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang|title],"
-+"li[class|dir<ltr?rtl|id|lang|title|type|value],"
-+"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|rel|rev|title|target|type],"
-+"map[class|dir<ltr?rtl|id|lang|name|title],"
-+"menu[class|compact<compact|dir<ltr?rtl|id|lang|title],"
-+"object[align<bottom?left?middle?right?top|archive|border|class|classid|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name|standby|tabindex|title|type|usemap|vspace|width],"
-+"ol[class|compact<compact|dir<ltr?rtl|id|lang|start|title|type],"
-+"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|title],"
-+"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|selected<selected|title|value],"
-+"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"param[id|name|type|value|valuetype<DATA?OBJECT?REF],"
-+"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|title|width],"
-+"q[cite|class|dir<ltr?rtl|id|lang|title],"
-+"s[class|dir<ltr?rtl|id|lang|title],"
-+"samp[class|dir<ltr?rtl|id|lang|title],"
-+"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name|size|tabindex|title],"
-+"small[class|dir<ltr?rtl|id|lang|title],"
-+"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|title],"
-+"strike[class|class|dir<ltr?rtl|id|lang|title],"
-+"strong/b[class|dir<ltr?rtl|id|lang|title],"
-+"style[dir<ltr?rtl|lang|media|title|type],"
-+"sub[class|dir<ltr?rtl|id|lang|title],"
-+"sup[class|dir<ltr?rtl|id|lang|title],"
-+"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class|dir<ltr?rtl|frame|height|id|lang|rules|summary|title|width],"
-+"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id|lang|title|valign<baseline?bottom?middle?top],"
-+"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|title|valign<baseline?bottom?middle?top|width],"
-+"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name|readonly<readonly|rows|tabindex|title],"
-+"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|title|valign<baseline?bottom?middle?top],"
-+"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|rowspan|scope<col?colgroup?row?rowgroup|title|valign<baseline?bottom?middle?top|width],"
-+"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id|lang|title|valign<baseline?bottom?middle?top],"
-+"title[dir<ltr?rtl|lang],"
-+"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class|rowspan|dir<ltr?rtl|id|lang|title|valign<baseline?bottom?middle?top],"
-+"tt[class|dir<ltr?rtl|id|lang|title],"
-+"u[class|dir<ltr?rtl|id|lang|title],"
-+"ul[class|compact<compact|dir<ltr?rtl|id|lang|title|type],"
-+"var[class|dir<ltr?rtl|id|lang|title]"'
-                                       . "});\n"
-                                       .  "\n//]]>\n</script>\n\n";
-                       
-                       foreach ( $this->targets as $target => $crap )
-                       {
-                               $GLOBALS['phpgw']->js->add_event('load', 
"tinyMCE.execCommand('mceAddControl', true, '{$target}');");
-                       }
-               }
-
-               /**
                * Add the appropriate <script>s to the <head> section
                *
                * @access private
                */
-               function _init_head()
+               protected function _init_head()
                {
-                       if ( 
!isset($GLOBALS['phpgw_info']['user']['preferences']['common']['rteditor'])
-                               || 
$GLOBALS['phpgw_info']['user']['preferences']['common']['rteditor'] == 'none' )
-                       {
-                               //nothing to do here as the user doesn't want 
to use a rte
-                               return true;
-                       }
-                       $rte_name = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['rteditor'];
-                       
-                       if ( isset($GLOBALS['phpgw_info']['server']['enable_' . 
$rte_name]) )
-                       {
-                               //now that we know that the user is allowed to 
use it we init it
-                               switch($rte_name)
-                               {
-                                       case 'fckeditor':
-                                               $this->_init_fckeditor();
-                                               break;
-                                       case 'tinymce':
-                                               $this->_init_tinymce();
-                                               break;
-                                       default:
-                                               //do nothing
-                               }
-                       }
+                       
$GLOBALS['phpgw']->css->add_external_file('phpgwapi/js/yahoo/editor/assets/skins/sam/editor.css');
+                       phpgw::import_class('phpgwapi.yui');
+                       phpgwapi_yui::load_widget('editor');
                }
-
-               /**
-               * Prepare FCKeditor to be used in a page
-               */
-               function _init_fckeditor()
-               {
-                       $GLOBALS['phpgw']->js->validate_file('fckeditor', 
'fckeditor');
-                       $this->rte = 'fckeditor';
-               }
-
-               /**
-               * Prepare tinymce to be used in a page
-               */
-               function _init_tinymce()
-               {
-                       $GLOBALS['phpgw']->js->validate_file('tinymce', 
'tiny_mce');
-                       $this->rte = 'tinymce';
-               }
        }
-?>






reply via email to

[Prev in Thread] Current Thread [Next in Thread]