2006-12-22 18:45:32 +00:00
< ? php
/*
+ ----------------------------------------------------------------------------+
| e107 website system - Tiny MCE controller file .
|
2011-06-07 12:57:55 +00:00
| $URL $
| $Id $
2006-12-22 18:45:32 +00:00
+----------------------------------------------------------------------------+
*/
2012-05-28 13:06:09 +00:00
require_once ( " ../../class2.php " );
ob_start ();
ob_implicit_flush ( 0 );
header ( " last-modified: " . gmdate ( " D, d M Y H:i:s " , mktime ( 0 , 0 , 0 , 15 , 2 , 2004 )) . " GMT " );
header ( 'Content-type: text/javascript' , TRUE );
2006-12-22 18:45:32 +00:00
2009-09-21 16:33:32 +00:00
2012-05-28 13:06:09 +00:00
$wy = new wysiwyg ();
echo_gzipped_page ();
2009-10-12 06:38:01 +00:00
class wysiwyg
2009-09-21 16:33:32 +00:00
{
2009-10-12 06:38:01 +00:00
var $js ;
var $config = array ();
2009-11-10 01:21:05 +00:00
var $configName ;
2011-06-07 12:57:55 +00:00
function __construct ( $config = FALSE )
2009-10-12 06:38:01 +00:00
{
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$this -> getConfig ( $config );
2006-12-22 18:45:32 +00:00
2009-07-01 02:52:11 +00:00
2011-06-07 12:57:55 +00:00
$pref = e107 :: getConfig ();
2009-10-12 06:38:01 +00:00
/*
if ( strstr ( varset ( $_SERVER [ " HTTP_ACCEPT_ENCODING " ], " " ), " gzip " ) && ( ini_get ( " zlib.output_compression " ) == false ) && file_exists ( e_PLUGIN . " tinymce/tiny_mce_gzip.php " ))
2009-07-02 00:13:14 +00:00
{
2011-06-07 12:57:55 +00:00
//unset($tinymce_plugins[7]); // 'zoom' causes an error with the gzip version.
2009-10-12 06:38:01 +00:00
$text = " <script type='text/javascript' src=' " . e_PLUGIN_ABS . " tinymce/tiny_mce_gzip.js'></script>
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
< script type = 'text/javascript' >
tinyMCE_GZ . init ({
plugins : '".implode(",",$tinymce_plugins)."' ,
themes : 'advanced' ,
languages : '".$tinylang[$lang]."' ,
disk_cache : false ,
debug : false
});
</ script >
" ;
2009-07-02 00:13:14 +00:00
}
2009-10-12 06:38:01 +00:00
else
{ */
2012-05-28 13:06:09 +00:00
// $text = "<script type='text/javascript' src='".e_PLUGIN_ABS."tinymce/tiny_mce.js'></script>\n";
2009-10-12 06:38:01 +00:00
//}
2011-06-07 12:57:55 +00:00
2012-05-28 13:06:09 +00:00
// $text .= "<script type='text/javascript'>\n";
2009-11-10 01:21:05 +00:00
$text .= " \n /* TinyMce Config: " . $this -> configName . " */ " ;
2009-10-12 06:38:01 +00:00
$text .= $this -> tinyMce_config ();
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$text .= " \t \t start_tinyMce(); \n
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
function tinymce_e107Paths ( type , source ) {
" ;
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$tp = e107 :: getParser ();
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$paths = array (
e107 :: getFolder ( 'images' ),
e107 :: getFolder ( 'plugins' ),
e107 :: getFolder ( 'media_images' ),
e107 :: getFolder ( 'media_files' ),
e107 :: getFolder ( 'media_videos' )
);
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$text .= "
2009-10-12 06:38:01 +00:00
switch ( type ) {
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
case 'get_from_editor' :
// Convert HTML to e107-BBcode
source = source . replace ( / target = \ " _blank \" /, 'rel= \" external \" ');
2012-05-28 13:06:09 +00:00
// source = source.replace(/^\s*|\s*$/g,'');
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
" ;
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
// Convert TinyMce Paths to e107 paths.
foreach ( $paths as $k => $path )
{
//echo "<br />$path = ".$tp->createConstants($path);
2011-06-07 12:57:55 +00:00
$text .= " \t \t source = source.replace(/( \" |]) " . str_replace ( " / " , " \ / " , $path ) . " /g,' $ 1 " . $tp -> createConstants ( $path ) . " '); \n " ;
}
2011-05-10 12:41:22 +00:00
$text .= "
break ;
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
case 'insert_to_editor' : // Convert e107Paths for TinyMce
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
source = source . replace ( / rel = \ " external \" /, 'target= \" _blank \" ');
2012-05-01 09:42:20 +00:00
2011-05-10 12:41:22 +00:00
" ;
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
// Convert e107 paths to TinyMce Paths.
foreach ( $paths as $k => $path )
{
$const = str_replace ( " } " , " \ } " , $tp -> createConstants ( $path ));
2011-06-07 12:57:55 +00:00
$text .= " \t \t source = source.replace(/ " . $const . " /gi,' " . $path . " '); \n " ;
2011-05-10 12:41:22 +00:00
}
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$text .= "
break ;
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
return source ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
// ]]>
function triggerSave ()
2009-07-02 00:13:14 +00:00
{
2009-10-12 06:38:01 +00:00
tinyMCE . triggerSave ();
2009-07-02 00:13:14 +00:00
}
2011-06-07 12:57:55 +00:00
2009-07-01 02:52:11 +00:00
" ;
2012-05-28 13:06:09 +00:00
//$text .= "</script>\n";
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$this -> js = $text ;
2012-05-28 13:06:09 +00:00
$this -> render ();
2011-06-07 12:57:55 +00:00
2009-07-01 04:19:55 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function tinymce_lang ()
2009-07-02 00:13:14 +00:00
{
2009-10-12 06:38:01 +00:00
$lang = e_LANGUAGE ;
$tinylang = array (
" Arabic " => " ar " ,
" Danish " => " da " ,
" Dutch " => " nl " ,
" English " => " en " ,
" Farsi " => " fa " ,
" French " => " fr " ,
" German " => " de " ,
" Greek " => " el " ,
" Hebrew " => " " ,
" Hungarian " => " hu " ,
" Italian " => " it " ,
" Japanese " => " ja " ,
" Korean " => " ko " ,
" Norwegian " => " nb " ,
" Polish " => " pl " ,
" Russian " => " ru " ,
" Slovak " => " sk " ,
" Spanish " => " es " ,
" Swedish " => " sv "
);
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
if ( ! $tinylang [ $lang ])
{
$tinylang [ $lang ] = " en " ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
return $tinylang [ $lang ];
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function tinyMce_config ()
{
2009-10-26 10:55:46 +00:00
$text = "
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function start_tinyMce ()
{
//<![CDATA[
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
tinyMCE . init ({ \n\n " ;
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$newConfig = array ();
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
foreach ( $this -> config as $key => $val )
2011-05-10 12:41:22 +00:00
{
2011-03-12 11:01:07 +00:00
if ( $val != 'true' && $val != 'false' )
{
$val = " ' " . $val . " ' " ;
}
2011-05-10 12:41:22 +00:00
$newConfig [] = " \t \t " . $key . " : " . $val ;
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
// foreach($this->config as $key=>$val)
2011-06-07 12:57:55 +00:00
// {
2011-05-10 12:41:22 +00:00
// if($val != 'true' && $val !='false')
// {
// $val = "'".$val."'";
// }
// $text .= "\t\t ".$key." : '".$val."',\n";
// }
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
$text .= implode ( " , \n " , $newConfig );
2011-06-07 12:57:55 +00:00
2009-10-26 10:55:46 +00:00
/*
2009-10-12 06:38:01 +00:00
if ( $tinyMcePrefs [ 'customjs' ])
{
$text .= " \n ,
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
// Start Custom TinyMce JS -----
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
" . $pref['tinymce'] ['customjs']. "
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
// End Custom TinyMce JS ---
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
" ;
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
}
2009-10-26 10:55:46 +00:00
*/
2009-10-12 06:38:01 +00:00
$text .= "
});
2011-06-07 12:57:55 +00:00
2009-07-02 00:13:14 +00:00
}
2011-06-07 12:57:55 +00:00
" ;
2009-10-12 06:38:01 +00:00
return $text ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function getConfig ( $config = FALSE )
{
$sql = e107 :: getDb ();
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
if ( $config )
{
2011-06-07 12:57:55 +00:00
$query = " SELECT * FROM #tinymce WHERE tinymce_id = " . $config . " LIMIT 1 " ;
2009-10-12 06:38:01 +00:00
}
else
{
2011-06-07 12:57:55 +00:00
$query = " SELECT * FROM #tinymce WHERE tinymce_userclass REGEXP ' " . e_CLASS_REGEXP . " ' AND NOT (tinymce_userclass REGEXP '(^|,)( " . str_replace ( " , " , " | " , e_UC_NOBODY ) . " )(,| $ )') ORDER BY Field(tinymce_userclass,250,254,253) LIMIT 1 " ;
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$sql -> db_Select_gen ( $query );
$config = $sql -> db_Fetch ();
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
//TODO Cache!
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$plug_array = explode ( " , " , $config [ 'tinymce_plugins' ]);
2009-11-10 01:21:05 +00:00
$this -> configName = $config [ 'tinymce_name' ];
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$this -> config = array (
'language' => $this -> tinymce_lang (),
'mode' => 'textareas' ,
'editor_selector' => 'e-wysiwyg' ,
'editor_deselector' => 'e-wysiwyg-off' ,
'theme' => 'advanced' ,
'plugins' => $this -> filter_plugins ( $config [ 'tinymce_plugins' ])
);
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$this -> config += array (
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
'theme_advanced_buttons1' => $config [ 'tinymce_buttons1' ],
'theme_advanced_buttons2' => $config [ 'tinymce_buttons2' ],
'theme_advanced_buttons3' => $config [ 'tinymce_buttons3' ],
'theme_advanced_buttons4' => $config [ 'tinymce_buttons4' ],
2012-04-29 08:59:24 +00:00
'theme_advanced_toolbar_location' => 'top' ,
'theme_advanced_toolbar_align' => 'left' ,
'theme_advanced_blockformats' => 'p,h2,blockquote,code' ,
2012-05-28 13:06:09 +00:00
'dialog_type' => " modal " ,
2012-04-29 08:59:24 +00:00
2009-10-12 06:38:01 +00:00
// 'theme_advanced_statusbar_location' => 'bottom',
'theme_advanced_resizing' => 'true' ,
2012-06-09 04:42:32 +00:00
'remove_linebreaks' => 'true' ,
2009-10-12 06:38:01 +00:00
'extended_valid_elements' => '' ,
2012-06-09 04:42:32 +00:00
'apply_source_formatting' => 'false' ,
2009-10-12 06:38:01 +00:00
'invalid_elements' => 'p,font,align,script,applet,iframe' ,
'auto_cleanup_word' => 'true' ,
'convert_fonts_to_spans' => 'true' ,
'trim_span_elements' => 'true' ,
'inline_styles' => 'true' ,
2009-11-10 01:21:05 +00:00
'auto_resize' => 'true' ,
2009-10-12 06:38:01 +00:00
'debug' => 'false' ,
2012-05-01 09:42:20 +00:00
'force_br_newlines' => 'true' ,
2009-10-12 06:38:01 +00:00
'forced_root_block' => '' ,
2012-06-09 04:42:32 +00:00
'convert_newlines_to_brs' => 'true' , // will break [list] if set to true
2009-10-12 06:38:01 +00:00
'force_p_newlines' => 'false' ,
'entity_encoding' => 'raw' ,
'convert_fonts_to_styles' => 'true' ,
'remove_script_host' => 'true' ,
'relative_urls' => 'true' ,
2012-05-01 09:42:20 +00:00
'preformatted' => 'true' ,
2009-10-12 06:38:01 +00:00
'document_base_url' => SITEURL ,
'theme_advanced_styles' => 'border=border;fborder=fborder;tbox=tbox;caption=caption;fcaption=fcaption;forumheader=forumheader;forumheader3=forumheader3' ,
'verify_css_classes' => 'false'
);
2011-06-07 12:57:55 +00:00
2011-05-10 12:41:22 +00:00
// if(!in_array('e107bbcode',$plug_array))
2009-10-12 06:38:01 +00:00
{
2011-06-07 12:57:55 +00:00
$this -> config [ 'cleanup_callback' ] = 'tinymce_e107Paths' ;
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-26 10:55:46 +00:00
$paste_plugin = ( strpos ( $config [ 'tinymce_plugins' ], 'paste' ) !== FALSE ) ? TRUE : FALSE ;
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
if ( $paste_plugin )
{
$this -> config += array (
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
'remove_linebreaks' => 'false' , // remove line break stripping by tinyMCE so that we can read the HTML
'paste_create_paragraphs' => 'false' , // for paste plugin - double linefeeds are converted to paragraph elements
'paste_create_linebreaks' => 'false' , // for paste plugin - single linefeeds are converted to hard line break elements
'paste_use_dialog' => 'true' , // for paste plugin - Mozilla and MSIE will present a paste dialog if true
'paste_auto_cleanup_on_paste' => 'true' , // for paste plugin - word paste will be executed when the user copy/paste content
'paste_convert_middot_lists' => 'false' , // for paste plugin - middot lists are converted into UL lists
'paste_unindented_list_class' => 'unindentedList' , // for paste plugin - specify what class to assign to the UL list of middot cl's
'paste_convert_headers_to_strong' => 'true' , // for paste plugin - converts H1-6 elements to strong elements on paste
'paste_insert_word_content_callback' => 'convertWord' , // for paste plugin - This callback is executed when the user pastes word content
2011-06-07 12:57:55 +00:00
'auto_cleanup_word' => 'false' // auto clean pastes from Word
2009-10-12 06:38:01 +00:00
);
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
if ( ADMIN )
{
2011-06-07 12:57:55 +00:00
$this -> config [ 'external_link_list_url' ] = e_PLUGIN_ABS . " tiny_mce/filelist.php " ;
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function filter_plugins ( $plugs )
{
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$smile_pref = e107 :: getConfig () -> getPref ( 'smiley_activate' );
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$admin_only = array ( " ibrowser " , " code " );
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$plug_array = explode ( " , " , $plugs );
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
foreach ( $plug_array as $val )
{
if ( in_array ( $val , $admin_only ) && ! ADMIN )
{
continue ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
if ( ! $smile_pref && ( $val == " emoticons " ))
{
continue ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
$tinymce_plugins [] = $val ;
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
return implode ( " , " , $tinymce_plugins );
}
2011-06-07 12:57:55 +00:00
2009-10-12 06:38:01 +00:00
function render ()
{
echo $this -> js ;
}
2006-12-22 18:45:32 +00:00
}
2009-10-12 06:38:01 +00:00
?>