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[/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('');
// 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',