mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 20:58:30 +01:00
888 lines
25 KiB
PHP
888 lines
25 KiB
PHP
<?php
|
|
/*
|
|
+ ----------------------------------------------------------------------------+
|
|
| e107 website system - Tiny MCE controller file.
|
|
|
|
|
| $URL$
|
|
| $Id$
|
|
+----------------------------------------------------------------------------+
|
|
*/
|
|
$_E107['no_online'] = true;
|
|
$_E107['no_forceuserupdate'] = true;
|
|
$_E107['no_menus'] = true;
|
|
$_E107['no_maintenance'] = true;
|
|
require_once("../../class2.php");
|
|
|
|
/*
|
|
echo '
|
|
|
|
|
|
tinymce.init({
|
|
"selector": ".e-wysiwyg",
|
|
"theme": "modern",
|
|
"plugins": "advlist autolink lists link image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking save table contextmenu directionality emoticons template paste textcolor",
|
|
"language": "en",
|
|
"menubar": "edit view format insert table tools",
|
|
"toolbar1": "undo redo | styleselect | bold italic forecolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | e107-image e107-video e107-glyph | preview",
|
|
"external_plugins": {"e107":"/e107_plugins/tinymce4/plugins/e107/plugin.js","example":"/e107_plugins/tinymce4/plugins/example/plugin.js"},
|
|
"image_advtab": true,
|
|
"extended_valid_elements": "i[*], object[*],embed[*],bbcode[*]",
|
|
"convert_fonts_to_spans": false,
|
|
"content_css": "http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css",
|
|
"relative_urls": false,
|
|
"preformatted": true,
|
|
// "document_base_url": "http://eternal.technology/"
|
|
});
|
|
';
|
|
exit;
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
echo 'tinymce.init({
|
|
selector: ".e-wysiwyg",
|
|
theme: "modern",
|
|
plugins: "template",
|
|
toolbar: "template",
|
|
// template_cdate_classes: "cdate creationdate",
|
|
// template_mdate_classes: "mdate modifieddate",
|
|
// template_selected_content_classes: "selcontent",
|
|
// template_cdate_format: "%m/%d/%Y : %H:%M:%S",
|
|
// template_mdate_format: "%m/%d/%Y : %H:%M:%S",
|
|
// template_replace_values: {
|
|
// username : "Jack Black",
|
|
// staffid : "991234"
|
|
// },
|
|
templates : [
|
|
{
|
|
title: "Editor Details",
|
|
url: "editor_details.htm",
|
|
description: "Adds Editor Name and Staff ID"
|
|
},
|
|
{
|
|
title: "Timestamp",
|
|
content: "Some Content goes here. ",
|
|
description: "Adds an editing timestamp."
|
|
}
|
|
]
|
|
});';
|
|
*/
|
|
|
|
// exit;
|
|
|
|
|
|
|
|
/*
|
|
$text = <<<TMPL
|
|
|
|
|
|
tinymce.init({
|
|
selector: ".e-wysiwyg",
|
|
theme: "modern",
|
|
plugins: [
|
|
"advlist autolink lists link image charmap print preview hr anchor pagebreak",
|
|
"searchreplace wordcount visualblocks visualchars code fullscreen",
|
|
"insertdatetime media nonbreaking save table contextmenu directionality",
|
|
"emoticons template paste textcolor "
|
|
],
|
|
external_plugins: {
|
|
"example": "{e_PLUGIN_ABS}tinymce4/plugins/example/plugin.min.js",
|
|
"e107" : "{e_PLUGIN_ABS}tinymce4/plugins/e107/plugin.js"
|
|
},
|
|
menubar: "edit view format insert table tools",
|
|
|
|
toolbar1: "undo redo | styleselect | bold italic forecolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | e107-image e107-video e107-glyph | preview",
|
|
|
|
image_advtab: true,
|
|
extended_valid_elements: 'span[*],i[*],iframe[*]',
|
|
trim_span_elements: false,
|
|
content_css: 'http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css',
|
|
templates: [
|
|
{title: 'Test template 1', content: 'Test 1'},
|
|
{title: 'Test template 2', content: 'Test 2'}
|
|
]
|
|
});
|
|
|
|
|
|
TMPL;
|
|
|
|
$output = str_replace("{e_PLUGIN_ABS}", e_PLUGIN_ABS, $text);
|
|
*/
|
|
|
|
|
|
$wy = new wysiwyg();
|
|
|
|
$gen = $wy->renderConfig();
|
|
|
|
define('USE_GZIP', true);
|
|
|
|
|
|
if(ADMIN && e_QUERY == 'debug')
|
|
{
|
|
define('e_IFRAME', true);
|
|
require_once(HEADERF);
|
|
|
|
echo "<table class='table'><tr><td>";
|
|
|
|
print_a($output);
|
|
|
|
echo "</td>
|
|
<td>
|
|
".print_a($gen,true)."
|
|
</td>
|
|
</tr></table>";
|
|
|
|
require_once(FOOTERF);
|
|
|
|
}
|
|
elseif(USE_GZIP === true)
|
|
{
|
|
header('Content-type: text/javascript', TRUE);
|
|
header('Content-Encoding: gzip');
|
|
|
|
$minified = e107::minify($gen);
|
|
$gzipoutput = gzencode($minified,6);
|
|
|
|
header('Content-Length: '.strlen($gzipoutput));
|
|
echo $gzipoutput;
|
|
}
|
|
else
|
|
{
|
|
ob_start();
|
|
ob_implicit_flush(0);
|
|
header('Content-type: text/javascript', TRUE);
|
|
echo $gen;
|
|
}
|
|
|
|
exit;
|
|
|
|
|
|
|
|
|
|
|
|
// echo_gzipped_page();
|
|
|
|
class wysiwyg
|
|
{
|
|
var $js;
|
|
var $config = array();
|
|
var $configName;
|
|
|
|
function renderConfig($config='')
|
|
{
|
|
$this->getConfig($config);
|
|
$text = "\n /* TinyMce Config: ".$this->configName." */\n\n";
|
|
$text .= "tinymce.init({\n";
|
|
/*
|
|
$text .= "save_onsavecallback: function() {console.log('Save'); },\n";
|
|
|
|
$text .= "setup: function (editor) {
|
|
editor.on('blur', function () {
|
|
editor.save();
|
|
});
|
|
},\n";
|
|
*/
|
|
|
|
$text .= $this->config; // Moc: temporary fix for BC with PHP 5.3: https://github.com/e107inc/e107/issues/614
|
|
|
|
$text .= "\n});";
|
|
|
|
|
|
|
|
return stripslashes($text);
|
|
}
|
|
|
|
|
|
|
|
function __construct($config=FALSE)
|
|
{
|
|
|
|
}
|
|
|
|
function tinymce_lang()
|
|
{
|
|
$lang = 'English'; //Quick Fix e_LANGUAGE
|
|
$tinylang = array(
|
|
"Arabic" => "ar",
|
|
"Bulgarian" => "bg",
|
|
"Danish" => "da",
|
|
"Dutch" => "nl",
|
|
"English" => "en",
|
|
"Persian" => "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"
|
|
);
|
|
|
|
if(!$tinylang[$lang])
|
|
{
|
|
$tinylang[$lang] = "en";
|
|
}
|
|
|
|
return $tinylang[$lang];
|
|
}
|
|
|
|
|
|
|
|
function getExternalPlugins($data)
|
|
{
|
|
if(empty($data))
|
|
{
|
|
return;
|
|
}
|
|
|
|
$tmp = explode(" ",$data);
|
|
|
|
if(e107::pref('core','smiley_activate',false))
|
|
{
|
|
$tmp[] = "smileys";
|
|
}
|
|
|
|
$ext = array();
|
|
|
|
foreach($tmp as $val)
|
|
{
|
|
$ext[$val] = e_PLUGIN_ABS."tinymce4/plugins/".$val."/plugin.js";
|
|
}
|
|
|
|
|
|
|
|
|
|
return json_encode($ext);
|
|
}
|
|
|
|
|
|
|
|
function convertBoolean($string)
|
|
{
|
|
|
|
if(substr($string,0,1) == '{' || substr($string,0,1) == '[' || substr($string,0,9) == 'function(')
|
|
{
|
|
return $string;
|
|
}
|
|
|
|
if(is_numeric($string))
|
|
{
|
|
return $string;
|
|
}
|
|
|
|
if(is_string($string))
|
|
{
|
|
$string = trim($string);
|
|
$string = str_replace("\n","",$string);
|
|
}
|
|
|
|
if($string === true)
|
|
{
|
|
return 'true';
|
|
}
|
|
|
|
if($string === false)
|
|
{
|
|
return 'false';
|
|
}
|
|
|
|
if($string === 'true' || $string === 'false' || $string[0] == '[')
|
|
{
|
|
return $string;
|
|
}
|
|
|
|
return '"'.$string.'"';
|
|
}
|
|
|
|
|
|
|
|
function getConfig($config=false)
|
|
{
|
|
$tp = e107::getParser();
|
|
$fl = e107::getFile();
|
|
|
|
|
|
if(getperms('0'))
|
|
{
|
|
$template = "mainadmin.xml";
|
|
}
|
|
elseif(ADMIN)
|
|
{
|
|
$template = "admin.xml";
|
|
}
|
|
elseif(USER)
|
|
{
|
|
$template = "member.xml";
|
|
}
|
|
else
|
|
{
|
|
$template = "public.xml";
|
|
}
|
|
|
|
$configPath = (is_readable(THEME."templates/tinymce/".$template)) ? THEME."templates/tinymce/".$template : e_PLUGIN."tinymce4/templates/".$template;
|
|
$config = e107::getXml()->loadXMLfile($configPath, true);
|
|
|
|
//TODO Cache!
|
|
|
|
$this->configName = $config['@attributes']['name'];
|
|
|
|
unset($config['@attributes']);
|
|
|
|
$ret = array(
|
|
'selector' => '.e-wysiwyg',
|
|
// 'editor_selector' => 'advancedEditor',
|
|
'language' => $this->tinymce_lang()
|
|
|
|
);
|
|
|
|
// if(e_ADMIN_AREA)
|
|
{
|
|
// $ret['skin_url'] = e_PLUGIN_ABS.'tinymce4/skins/eskin';
|
|
}
|
|
|
|
// Loop thru XML parms.
|
|
foreach($config as $k=>$xml)
|
|
{
|
|
if($k == 'plugins')
|
|
{
|
|
$ret[$k] = $this->filter_plugins($xml);
|
|
}
|
|
else
|
|
{
|
|
$ret[$k] = $xml;
|
|
}
|
|
|
|
}
|
|
|
|
$tPref = e107::pref('tinymce4');
|
|
|
|
if(!empty($tPref['paste_as_text']))
|
|
{
|
|
$ret['paste_as_text'] = true;
|
|
}
|
|
|
|
|
|
if(!empty($tPref['browser_spellcheck']))
|
|
{
|
|
$ret['browser_spellcheck'] = true;
|
|
}
|
|
|
|
if(!empty($tPref['visualblocks']))
|
|
{
|
|
$ret['visualblocks_default_state'] = true;
|
|
}
|
|
|
|
$ret['autosave_ask_before_unload'] = true;
|
|
$ret['autosave_retention'] = "30m";
|
|
$ret['autosave_interval'] = "3s";
|
|
$ret['autosave_prefix'] = "tinymce-autosave-{path}{query}-{id}-";
|
|
$ret['verify_html'] = false;
|
|
|
|
|
|
// plugins: "visualblocks",
|
|
|
|
|
|
/*
|
|
$formats = array(
|
|
'hilitecolor' => array('inline'=> 'span', 'classes'=> 'hilitecolor', 'styles'=> array('backgroundColor'=> '%value'))
|
|
// block : 'h1', attributes : {title : "Header"}, styles : {color : red}
|
|
);*/
|
|
|
|
//@see http://www.tinymce.com/wiki.php/Configuration:formats
|
|
|
|
$formats = "[
|
|
{title: 'Headers', items: [
|
|
{title: 'Heading 1', block: 'h1'},
|
|
{title: 'Heading 2', block: 'h2'},
|
|
{title: 'Heading 3', block: 'h3'},
|
|
{title: 'Heading 4', block: 'h4'},
|
|
{title: 'Heading 5', block: 'h5'},
|
|
{title: 'Heading 6', block: 'h6'}
|
|
]},
|
|
|
|
{title: 'Inline', items: [
|
|
{title: 'Bold', inline: 'b', icon: 'bold'},
|
|
{title: 'Italic', inline: 'em', icon: 'italic'},
|
|
{title: 'Underline', inline: 'span', styles : {textDecoration : 'underline'}, icon: 'underline'},
|
|
{title: 'Strikethrough', inline: 'span', styles : {textDecoration : 'line-through'}, icon: 'strikethrough'},
|
|
{title: 'Superscript', inline: 'sup', icon: 'superscript'},
|
|
{title: 'Subscript', inline: 'sub', icon: 'subscript'},
|
|
{title: 'Code', inline: 'code', icon: 'code'},
|
|
{title: 'Small', inline: 'small', icon: ''},
|
|
]},
|
|
|
|
{title: 'Blocks', items: [
|
|
{title: 'Paragraph', block: 'p'},
|
|
{title: 'Blockquote', block: 'blockquote'},
|
|
{title: 'Div', block: 'div'},
|
|
|
|
{title: 'Pre', block: 'pre'},
|
|
{title: 'Code Highlighted', block: 'pre', classes: 'prettyprint linenums' }
|
|
]},
|
|
|
|
{title: 'Alignment', items: [
|
|
{title: 'Left', block: 'div', classes: 'text-left', icon: 'alignleft'},
|
|
{title: 'Center', block: 'div',classes: 'text-center', icon: 'aligncenter'},
|
|
{title: 'Right', block: 'div', classes: 'text-right', icon: 'alignright'},
|
|
{title: 'Justify', block: 'div', classes: 'text-justify', icon: 'alignjustify'},
|
|
{title: 'No Text-Wrap', block: 'div', classes: 'text-nowrap', icon: ''},
|
|
{title: 'Clear Float', block: 'div', classes: 'clearfix'},
|
|
{title: 'Image Left', selector: 'img', classes: 'pull-left', styles: {'margin': '0 10px 5px 0' }, icon: 'alignleft'},
|
|
{title: 'Image Right', selector: 'img', classes: 'pull-right', styles: { 'margin': '0 0 5px 10px'}, icon: 'alignright'}
|
|
|
|
]},
|
|
|
|
{title: 'Bootstrap Inline', items: [
|
|
{title: 'Label (Default)', inline: 'span', classes: 'label label-default'},
|
|
{title: 'Label (Primary)', inline: 'span', classes: 'label label-primary'},
|
|
{title: 'Label (Success)', inline: 'span', classes: 'label label-success'},
|
|
{title: 'Label (Info)', inline: 'span', classes: 'label label-info'},
|
|
{title: 'Label (Warning)', inline: 'span', classes: 'label label-warning'},
|
|
{title: 'Label (Danger)', inline: 'span', classes: 'label label-danger'},
|
|
{title: 'Muted', inline: 'span', classes: 'text-muted'},
|
|
]},
|
|
|
|
{title: 'Bootstrap Blocks', items: [
|
|
{title: 'Alert (Success)', block: 'div', classes: 'alert alert-success'},
|
|
{title: 'Alert (Info)', block: 'div', classes: 'alert alert-info'},
|
|
{title: 'Alert (Warning)', block: 'div', classes: 'alert alert-warning'},
|
|
{title: 'Alert (Danger)', block: 'div', classes: 'alert alert-block alert-danger'},
|
|
{title: 'Lead', block: 'p', classes: 'lead'},
|
|
{title: 'Well', block: 'div', classes: 'well'},
|
|
{title: 'Row', block: 'div', classes: 'row'},
|
|
{title: '1/4 Width Block', block: 'div', classes: 'col-md-3 col-sm-12'},
|
|
{title: '3/4 Width Block', block: 'div', classes: 'col-md-9 col-sm-12'},
|
|
{title: '1/3 Width Block', block: 'div', classes: 'col-md-4 col-sm-12'},
|
|
{title: '2/3 Width Block', block: 'div', classes: 'col-md-8 col-sm-12'},
|
|
{title: '1/2 Width Block', block: 'div', classes: 'col-md-6 col-sm-12'},
|
|
]},
|
|
|
|
{title: 'Bootstrap Buttons', items: [
|
|
{title: 'Button (Default)', selector: 'a', classes: 'btn btn-default'},
|
|
{title: 'Button (Primary)', selector: 'a', classes: 'btn btn-primary'},
|
|
{title: 'Button (Success)', selector: 'a', classes: 'btn btn-success'},
|
|
{title: 'Button (Info)', selector: 'a', classes: 'btn btn-info'},
|
|
{title: 'Button (Warning)', selector: 'a', classes: 'btn-warning'},
|
|
{title: 'Button (Danger)', selector: 'a', classes: 'btn-danger'},
|
|
]},
|
|
|
|
{title: 'Bootstrap Images', items: [
|
|
{title: 'Responsive (recommended)', selector: 'img', classes: 'img-responsive'},
|
|
{title: 'Rounded', selector: 'img', classes: 'img-rounded'},
|
|
{title: 'Circle', selector: 'img', classes: 'img-circle'},
|
|
{title: 'Thumbnail', selector: 'img', classes: 'img-thumbnail'},
|
|
]},
|
|
|
|
{title: 'Bootstrap Tables', items: [
|
|
{title: 'Bordered', selector: 'table', classes: 'table-bordered'},
|
|
{title: 'Condensed', selector: 'table', classes: 'table-condensed'},
|
|
{title: 'Hover', selector: 'table', classes: 'table-hover'},
|
|
{title: 'Striped', selector: 'table', classes: 'table-striped'},
|
|
]},
|
|
|
|
|
|
]";
|
|
|
|
|
|
|
|
|
|
// $ret['style_formats_merge'] = true;
|
|
|
|
// $ret['visualblocks_default_state'] = true; //pref
|
|
$ret['style_formats'] = $formats; // json_encode($formats);
|
|
$ret['link_class_list'] = "[
|
|
{title: 'None', value: ''},
|
|
{title: 'Link', value: 'btn btn-link'},
|
|
{title: 'Alert Link', value: 'alert-link'},
|
|
{title: 'Button (Default)', value: 'btn btn-default'},
|
|
{title: 'Button (Primary)', value: 'btn btn-primary'},
|
|
{title: 'Button (Success)', value: 'btn btn-success'},
|
|
{title: 'Button (Info)', value: 'btn btn-info'},
|
|
{title: 'Button (Warning)', value: 'btn btn-warning'},
|
|
{title: 'Button (Danger)', value: 'btn btn-danger'}
|
|
]";
|
|
|
|
/* $ret['setup'] = "function(ed) {
|
|
ed.addMenuItem('test', {
|
|
text: 'Clear Floats',
|
|
context: 'insert',
|
|
icon: false,
|
|
onclick: function() {
|
|
ed.insertContent('<div class=\"clearfix\" ></div>');
|
|
}
|
|
});
|
|
}";*/
|
|
// https://github.com/valtlfelipe/TinyMCE-LocalAutoSave
|
|
|
|
|
|
/*
|
|
$ret['setup'] = "function(ed) {
|
|
ed.addMenuItem('test', {
|
|
text: 'Clear Floats',
|
|
context: 'insert',
|
|
icon: false,
|
|
onclick: function() {
|
|
ed.insertContent('<br class=\"clearfix\" />');
|
|
}
|
|
});
|
|
}";
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
// e107 Bbcodes.
|
|
/*
|
|
|
|
$ret['setup'] = "function(ed) {
|
|
ed.addButton('e107-bbcode', {
|
|
text: 'bbcode',
|
|
icon: 'emoticons',
|
|
onclick: function() {
|
|
// Open window
|
|
|
|
ed.windowManager.open({
|
|
title: 'Example plugin',
|
|
body: [
|
|
{type: 'listbox', name: 'code', label: 'BbCode', values: [
|
|
{text: 'Left', value: 'left'},
|
|
{text: 'Right', value: 'right'},
|
|
{text: 'Center', value: 'center'}
|
|
]},
|
|
{type: 'textbox', name: 'parm', label: 'Parameters'}
|
|
],
|
|
onsubmit: function(e) {
|
|
|
|
var selected = ed.selection.getContent({format : 'text'});
|
|
|
|
// alert(selected);
|
|
// Insert content when the window form is submitted
|
|
ed.insertContent('[' + e.data.code + ']' + selected + '[/' + e.data.code + ']');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}";
|
|
*/
|
|
|
|
|
|
// Emoticon Support @see //https://github.com/nhammadi/Smileys
|
|
if(e107::pref('core','smiley_activate',false))
|
|
{
|
|
|
|
$emo = e107::getConfig("emote")->getPref();
|
|
$pack = e107::pref('core','emotepack');
|
|
|
|
$emotes = array();
|
|
$i = 0;
|
|
$c = 0;
|
|
foreach($emo as $path=>$co)
|
|
{
|
|
$codes = explode(" ",$co);
|
|
$url = SITEURLBASE.e_IMAGE_ABS."emotes/" . $pack . "/" . str_replace("!",".",$path);
|
|
$emotes[$i][] = array('shortcut'=>$codes, 'url'=>$url, 'title'=>ucfirst($path));
|
|
|
|
if($c == 6)
|
|
{
|
|
$i++;
|
|
$c = 0;
|
|
}
|
|
else
|
|
{
|
|
$c++;
|
|
}
|
|
}
|
|
|
|
// print_r($emotes);
|
|
|
|
$ret['extended_smileys'] = json_encode($emotes);
|
|
}
|
|
|
|
// $ret['skin'] = 'e107admin';
|
|
// $ret['skin_url'] = SITEURLBASE.e_PLUGIN_ABS.'tinymce4/skins/e107admin';
|
|
|
|
|
|
|
|
$ret['convert_fonts_to_spans'] = false;
|
|
|
|
$editorCSS = array(
|
|
|
|
'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css',
|
|
'http://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css',
|
|
e_PLUGIN_ABS.'tinymce4/editor.css',
|
|
);
|
|
|
|
|
|
$ret['content_css'] = json_encode($editorCSS);
|
|
$ret['content_style'] = "div.clearfix { border-top:1px solid red } ";
|
|
|
|
// $ret['content_css'] = e_WEB_ABS."js/bootstrap/css/bootstrap.min.css";
|
|
|
|
$ret['relative_urls'] = false; //Media Manager prefers it like this.
|
|
$ret['preformatted'] = true;
|
|
$ret['document_base_url'] = SITEURL;
|
|
$ret['schema'] = "html5";
|
|
$ret['element_format'] = "html";
|
|
|
|
// $ret['table_default_attributes'] = json_encode(array('class'=>'table table-striped' ));
|
|
|
|
|
|
if(!empty($ret['templates']))
|
|
{
|
|
$ret['templates'] = $tp->replaceConstants($ret['templates'],'abs'); // $this->getTemplates();
|
|
}
|
|
|
|
if(ADMIN)
|
|
{
|
|
$ret['templates'] = $this->getSnippets();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// $this->config['verify_css_classes'] = 'false';
|
|
|
|
$text = array();
|
|
foreach($ret as $k=>$v)
|
|
{
|
|
if($k == 'external_plugins')
|
|
{
|
|
$text[] = 'external_plugins: '. $this->getExternalPlugins($v);
|
|
continue;
|
|
}
|
|
$text[] = $k.': '.$this->convertBoolean($v);
|
|
}
|
|
|
|
|
|
|
|
$this->config = implode(",\n",$text);
|
|
|
|
|
|
return;
|
|
|
|
// -------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
$cssFiles = $fl->get_files(THEME,"\.css",'',2);
|
|
|
|
|
|
foreach($cssFiles as $val)
|
|
{
|
|
$css[] = str_replace(THEME,THEME_ABS,$val['path'].$val['fname']);
|
|
}
|
|
$css[] = "{e_WEB_ABS}js/bootstrap/css/bootstrap.min.css";
|
|
$content_css = vartrue($config['content_css'], implode(",",$css));
|
|
|
|
$content_styles = array('Bootstrap Button' => 'btn btn-primary', 'Bootstrap Table' => 'table');
|
|
|
|
|
|
|
|
$this->config += array(
|
|
|
|
// 'theme_advanced_buttons1' => $config['tinymce_buttons1'],
|
|
// 'theme_advanced_buttons2' => vartrue($config['tinymce_buttons2']),
|
|
// 'theme_advanced_buttons3' => vartrue($config['tinymce_buttons3']),
|
|
// 'theme_advanced_buttons4' => vartrue($config['tinymce_buttons4']),
|
|
// 'theme_advanced_toolbar_location' => vartrue($config['theme_advanced_toolbar_location'],'top'),
|
|
// 'theme_advanced_toolbar_align' => 'left',
|
|
// 'theme_advanced_blockformats' => 'p,h2,h3,h4,h5,h6,blockquote,pre,code',
|
|
// 'theme_advanced_styles' => str_replace(array("+")," ",http_build_query($content_styles)), //'Bootstrap Button=btn btn-primary;Bootstrap Table=table;border=border;fborder=fborder;tbox=tbox;caption=caption;fcaption=fcaption;forumheader=forumheader;forumheader3=forumheader3',
|
|
|
|
// 'theme_advanced_resize_vertical' => 'true',
|
|
'dialog_type' => "modal",
|
|
// 'theme_advanced_source_editor_height' => '400',
|
|
|
|
// ------------- html5 Stuff.
|
|
|
|
// 'visualblocks_default_state' => 'true',
|
|
|
|
// Schema is HTML5 instead of default HTML4
|
|
// 'schema' => "html5",
|
|
|
|
// End container block element when pressing enter inside an empty block
|
|
// 'end_container_on_empty_block' => true,
|
|
|
|
// HTML5 formats
|
|
/*
|
|
'style_formats' => "[
|
|
{title : 'h1', block : 'h1'},
|
|
{title : 'h2', block : 'h2'},
|
|
{title : 'h3', block : 'h3'},
|
|
{title : 'h4', block : 'h4'},
|
|
{title : 'h5', block : 'h5'},
|
|
{title : 'h6', block : 'h6'},
|
|
{title : 'p', block : 'p'},
|
|
{title : 'div', block : 'div'},
|
|
{title : 'pre', block : 'pre'},
|
|
{title : 'section', block : 'section', wrapper: true, merge_siblings: false},
|
|
{title : 'article', block : 'article', wrapper: true, merge_siblings: false},
|
|
{title : 'blockquote', block : 'blockquote', wrapper: true},
|
|
{title : 'hgroup', block : 'hgroup', wrapper: true},
|
|
{title : 'aside', block : 'aside', wrapper: true},
|
|
{title : 'figure', block : 'figure', wrapper: true}
|
|
]",
|
|
*/
|
|
// --------------------------------
|
|
|
|
|
|
// 'theme_advanced_statusbar_location' => 'bottom',
|
|
'theme_advanced_resizing' => 'true',
|
|
'remove_linebreaks' => 'false',
|
|
'extended_valid_elements' => vartrue($config['extended_valid_elements']),
|
|
// 'pagebreak_separator' => "[newpage]",
|
|
'apply_source_formatting' => 'true',
|
|
'invalid_elements' => 'font,align,script,applet',
|
|
'auto_cleanup_word' => 'true',
|
|
// 'cleanup' => 'true',
|
|
'convert_fonts_to_spans' => 'true',
|
|
// 'content_css' => $tp->replaceConstants($content_css),
|
|
'popup_css' => 'false',
|
|
|
|
'trim_span_elements' => 'true',
|
|
'inline_styles' => 'true',
|
|
'auto_resize' => 'false',
|
|
'debug' => 'true',
|
|
'force_br_newlines' => 'true',
|
|
'media_strict' => 'false',
|
|
'width' => vartrue($config['width'],'100%'),
|
|
// 'height' => '90%', // higher causes padding at the top?
|
|
'forced_root_block' => 'false', //remain as false or it will mess up some theme layouts.
|
|
|
|
'convert_newlines_to_brs' => 'true', // will break [list] if set to true
|
|
// 'force_p_newlines' => 'false',
|
|
'entity_encoding' => 'raw',
|
|
'convert_fonts_to_styles' => 'true',
|
|
'remove_script_host' => 'true',
|
|
'relative_urls' => 'false', //Media Manager prefers it like this.
|
|
'preformatted' => 'true',
|
|
'document_base_url' => SITEURL,
|
|
'verify_css_classes' => 'false'
|
|
|
|
);
|
|
|
|
// if(!in_array('e107bbcode',$plug_array))
|
|
{
|
|
// $this->config['cleanup_callback'] = 'tinymce_e107Paths';
|
|
}
|
|
|
|
$paste_plugin = false; // (strpos($config['tinymce_plugins'],'paste')!==FALSE) ? TRUE : FALSE;
|
|
|
|
if($paste_plugin)
|
|
{
|
|
$this->config += array(
|
|
|
|
'paste_text_sticky' => 'true',
|
|
'paste_text_sticky_default' => 'true',
|
|
'paste_text_linebreaktype' => 'br',
|
|
|
|
'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' => 'true', // 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
|
|
'auto_cleanup_word' => 'true' // auto clean pastes from Word
|
|
);
|
|
}
|
|
|
|
if(ADMIN)
|
|
{
|
|
// $this->config['external_link_list_url'] = e_PLUGIN_ABS."tiny_mce/filelist.php";
|
|
}
|
|
}
|
|
|
|
|
|
function getTemplates()
|
|
{
|
|
$templatePath = (is_readable(THEME."templates/tinymce/".$template)) ? THEME."templates/tinymce/".$template : e_PLUGIN."tinymce4/templates/".$template;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
private function getSnippets()
|
|
{
|
|
$files = e107::getFile()->get_files(e_PLUGIN."tinymce4/snippets");
|
|
|
|
$ret = array();
|
|
foreach($files as $f)
|
|
{
|
|
$content = file_get_contents($f['path'].$f['fname'], null, null, null, 140);
|
|
|
|
preg_match('/<!--[^\w]*Title:[\s]([^\r\n]*)[\s]*Info: ?([^\r\n]*)/is', $content, $m);
|
|
if(!empty($m[1]))
|
|
{
|
|
$url = e_PLUGIN_ABS."tinymce4/snippets/".$f['fname'];
|
|
$ret[] = array('title'=>trim($m[1]), 'url'=>$url, 'description'=>trim($m[2]));
|
|
}
|
|
}
|
|
|
|
return json_encode($ret);
|
|
|
|
}
|
|
|
|
|
|
function filter_plugins($plugs)
|
|
{
|
|
|
|
$smile_pref = e107::getConfig()->getPref('smiley_activate');
|
|
|
|
$admin_only = array("ibrowser");
|
|
|
|
$plug_array = explode(" ",$plugs);
|
|
|
|
$tinymce_plugins = array();
|
|
|
|
foreach($plug_array as $val)
|
|
{
|
|
if(in_array($val,$admin_only) && !ADMIN)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!$smile_pref && ($val=="emoticons"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!empty($val))
|
|
{
|
|
$tinymce_plugins[$val] = trim($val);
|
|
}
|
|
}
|
|
|
|
|
|
$tPref = e107::pref('tinymce4');
|
|
|
|
|
|
if(!empty($tPref['visualblocks']))
|
|
{
|
|
$tinymce_plugins['visualblocks'] = 'visualblocks';
|
|
}
|
|
|
|
// print_a($tinymce_plugins);
|
|
|
|
return implode(" ",$tinymce_plugins);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
?>
|