diff --git a/e107_handlers/bbcode_handler.php b/e107_handlers/bbcode_handler.php index 144cb53da..e9abf05d3 100644 --- a/e107_handlers/bbcode_handler.php +++ b/e107_handlers/bbcode_handler.php @@ -449,9 +449,9 @@ class e_bbcode // NEW bbcode button rendering function. replacing displayHelp(); function renderButtons($template,$id='') { - + $tp = e107::getParser(); - require_once(e107::coreTemplatePath('bbcode')); //correct way to load a core template. + require(e107::coreTemplatePath('bbcode')); //correct way to load a core template. $pref = e107::getPref('e_bb_list'); @@ -481,7 +481,12 @@ class e_bbcode { $BBCODE_TEMPLATE = $temp[$template]; } + else + { + $BBCODE_TEMPLATE = $BBCODE_TEMPLATE; + } + $bbcode_shortcodes = e107::getScBatch('bbcode'); $data = array( @@ -498,6 +503,47 @@ class e_bbcode return "
".$tp->parseTemplate($BBCODE_TEMPLATE,TRUE)."
"; } + /** + * Convert HTML to bbcode. + */ + function htmltoBbcode($text) + { + $convert = array( + array( "\n", '
'), + array( "[list]", ''), + array( "\n[*]", '
  • '), + array( "[h2]", '

    '), // e107 bbcode markup + array( "[h2]", '

    '), + array( "[/h2]", '

    '), + array( "[b]", ''), // Tinymce markup + array( "[b]", ''), // e107 bbcode markup + array( "[/b]", ''), + array( "[i]", ''), // e107 bbcode markup + array( "[i]", ''), + array( "[/i]", ''), + ); + + foreach($convert as $arr) + { + $repl[] = $arr[0]; + $srch[] = $arr[1]; + } + + $text = preg_replace("/(.*?)<\/a>/i","[link=$1]$2[/link]",$text); + $text = preg_replace('/
    ([\s\S]*)<\/div>/i',"[center]$1[/center]",$text); // verified + $text = preg_replace('/
    ([\s\S]*)<\/div>/i',"[$1]$2[/$1]",$text); // left / right / center + $text = preg_replace('//i',"[img style=width:$4px;height:$5px;$1]$2[/img]",$text ); + $text = preg_replace('//i',"[img style=width:$4px;height:$5px;$1]$2[/img]",$text ); + $text = preg_replace('/(.*?)<\/span>/i',"[color=$1]$2[/color]",$text); + + $blank = array('
  • ','width:px;height:px;'); + $text = str_replace($blank,"",$text); // Cleanup + + return str_replace($srch,$repl,$text); + + } + diff --git a/e107_plugins/tinymce/admin_config.php b/e107_plugins/tinymce/admin_config.php index 63a4b880d..7f256c745 100644 --- a/e107_plugins/tinymce/admin_config.php +++ b/e107_plugins/tinymce/admin_config.php @@ -527,35 +527,6 @@ function admin_config_adminmenu() $ef->show_options($action); } -/** - * Handle page DOM within the page header - * - * @return string JS source - */ -function headerjs() -{ - require_once(e_HANDLER.'js_helper.php'); - $ret = " - - - "; - - return $ret; -} - - - - if($_POST['save_settings']) // Needs to be saved before e_meta.php is loaded by auth.php. { @@ -680,19 +651,5 @@ function edit_theme() require_once(e_ADMIN."footer.php"); -/* -function headerjs() -{ - require_once(e_HANDLER.'js_helper.php'); - //FIXME - how exactly to auto-call JS lan? This and more should be solved in Stage II. - $ret = " - - - "; - - // return $ret; -}*/ ?> \ No newline at end of file diff --git a/e107_plugins/tinymce/e_meta.php b/e107_plugins/tinymce/e_meta.php index 45ecab940..e73e35663 100644 --- a/e107_plugins/tinymce/e_meta.php +++ b/e107_plugins/tinymce/e_meta.php @@ -36,18 +36,19 @@ if(e_WYSIWYG || strpos(e_SELF,"tinymce/admin_config.php") ) var id = $(this).attr('id'); // 'e-wysiwyg'; $('#'+id).after('
    Switch to BBCODE
    '); // alert(id); + $('#bbcode-panel-'+id+'--preview').hide(); }); $('a.e-wysiwyg-toggle').toggle(function(){ var id = $(this).attr('id'); // eg. news-body - $('#bbcode-panel-'+id).show(); + $('#bbcode-panel-'+id+'--preview').show(); $(this).text('Switch to WYSIWYG'); tinyMCE.execCommand('mceRemoveControl', false, id); }, function () { var id = $(this).attr('id'); - $('#bbcode-panel-'+id).hide(); + $('#bbcode-panel-'+id+'--preview').hide(); $(this).text('Switch to BBCODE'); tinyMCE.execCommand('mceAddControl', false, id); }); diff --git a/e107_plugins/tinymce/plugins/e107bbcode/editor_plugin.js b/e107_plugins/tinymce/plugins/e107bbcode/editor_plugin.js index 42b68d44d..a65c64b86 100644 --- a/e107_plugins/tinymce/plugins/e107bbcode/editor_plugin.js +++ b/e107_plugins/tinymce/plugins/e107bbcode/editor_plugin.js @@ -11,15 +11,16 @@ var t = this, dialect = ed.getParam('bbcode_dialect', 'e107').toLowerCase(); ed.onBeforeSetContent.add(function(ed, o) { - o.content = t['_' + dialect + '_bbcode2html'](o.content); + + o.content = t['_' + dialect + '_bbcode2html'](o.content,url); }); ed.onPostProcess.add(function(ed, o) { if (o.set) - o.content = t['_' + dialect + '_bbcode2html'](o.content); + o.content = t['_' + dialect + '_bbcode2html'](o.content,url); if (o.get) - o.content = t['_' + dialect + '_html2bbcode'](o.content); + o.content = t['_' + dialect + '_html2bbcode'](o.content,url); }); }, @@ -36,8 +37,26 @@ // Private methods // HTML -> BBCode in PunBB dialect - _e107_html2bbcode : function(s) { + _e107_html2bbcode : function(s,url) { s = tinymce.trim(s); + + + var p = $.ajax({ + type: "POST", + url: url + "/parser.php", + data: { content: s, mode: 'tobbcode' }, + async : false, + + dataType: "html", + success: function(html) { + return html; + } + }).responseText; + + return p; + + + function rep(re, str) { s = s.replace(re, str); @@ -137,10 +156,28 @@ return s; }, - + // BBCode -> HTML from PunBB dialect - _e107_bbcode2html : function(s) { + _e107_bbcode2html : function(s,url) { s = tinymce.trim(s); + + var p = $.ajax({ + type: "POST", + url: url + "/parser.php", + data: { content: s, mode: 'tohtml' }, + async : false, + + dataType: "html", + success: function(html) { + return html; + } + }).responseText; + + return p; + + + return s; + function rep(re, str) { s = s.replace(re, str); diff --git a/e107_plugins/tinymce/plugins/e107bbcode/parser.php b/e107_plugins/tinymce/plugins/e107bbcode/parser.php new file mode 100644 index 000000000..caf464ee5 --- /dev/null +++ b/e107_plugins/tinymce/plugins/e107bbcode/parser.php @@ -0,0 +1,28 @@ +toHtml($_POST['content'],true); +} + +if($_POST['mode'] == 'tobbcode') +{ + //echo $_POST['content']; + echo e107::getBB()->htmltoBbcode($_POST['content']); +} + + + +?> \ No newline at end of file diff --git a/e107_plugins/tinymce/wysiwyg.php b/e107_plugins/tinymce/wysiwyg.php index ac8fdd840..f782eb19d 100644 --- a/e107_plugins/tinymce/wysiwyg.php +++ b/e107_plugins/tinymce/wysiwyg.php @@ -278,9 +278,9 @@ class wysiwyg // 'theme_advanced_statusbar_location' => 'bottom', 'theme_advanced_resizing' => 'true', - 'remove_linebreaks' => 'false', + 'remove_linebreaks' => 'true', 'extended_valid_elements' => '', - 'apply_source_formatting' => 'true', + 'apply_source_formatting' => 'false', 'invalid_elements' => 'p,font,align,script,applet,iframe', 'auto_cleanup_word' => 'true', 'convert_fonts_to_spans' => 'true', @@ -290,7 +290,7 @@ class wysiwyg 'debug' => 'false', 'force_br_newlines' => 'true', 'forced_root_block' => '', - 'convert_newlines_to_brs' => 'false', // will break [list] if set to true + 'convert_newlines_to_brs' => 'true', // will break [list] if set to true 'force_p_newlines' => 'false', 'entity_encoding' => 'raw', 'convert_fonts_to_styles' => 'true',