151 lines
4.5 KiB
PHP
Raw Normal View History

2015-08-27 02:05:59 -03:00
<?php
class pluginsimpleMDE extends Plugin {
2017-08-06 00:52:00 +02:00
private $loadOnController = array(
2017-10-02 22:42:18 +02:00
'new-content',
'edit-content'
2015-08-27 02:05:59 -03:00
);
2015-09-03 21:46:17 -03:00
public function init()
{
$this->dbFields = array(
'tabSize'=>'2',
2017-08-10 19:55:50 +02:00
'toolbar'=>'"bold", "italic", "heading", "|", "quote", "unordered-list", "|", "link", "image", "code", "horizontal-rule", "|", "preview", "side-by-side", "fullscreen"',
2017-10-04 23:42:14 +02:00
'autosave'=>false,
2017-07-02 22:46:05 +02:00
'spellChecker'=>true
2015-09-03 21:46:17 -03:00
);
}
public function form()
2015-08-27 02:05:59 -03:00
{
global $Language;
2015-09-03 21:46:17 -03:00
$html = '<div>';
$html .= '<label>'.$Language->get('toolbar').'</label>';
2015-09-03 21:46:17 -03:00
$html .= '<input name="toolbar" id="jstoolbar" type="text" value="'.$this->getDbField('toolbar').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$Language->get('tab-size').'</label>';
2015-09-03 21:46:17 -03:00
$html .= '<input name="tabSize" id="jstabSize" type="text" value="'.$this->getDbField('tabSize').'">';
$html .= '</div>';
2016-01-30 20:01:04 -03:00
$html .= '<div>';
$html .= '<label>'.$Language->get('autosave').'</label>';
2017-07-02 22:46:05 +02:00
$html .= '<select name="autosave">';
$html .= '<option value="true" '.($this->getValue('autosave')===true?'selected':'').'>'.$Language->get('enabled').'</option>';
$html .= '<option value="false" '.($this->getValue('autosave')===false?'selected':'').'>'.$Language->get('disabled').'</option>';
2017-07-02 22:46:05 +02:00
$html .= '</select>';
2016-01-30 20:01:04 -03:00
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$Language->get('spell-checker').'</label>';
2017-07-02 22:46:05 +02:00
$html .= '<select name="spellChecker">';
$html .= '<option value="true" '.($this->getValue('spellChecker')===true?'selected':'').'>'.$Language->get('enabled').'</option>';
$html .= '<option value="false" '.($this->getValue('spellChecker')===false?'selected':'').'>'.$Language->get('disabled').'</option>';
2017-07-02 22:46:05 +02:00
$html .= '</select>';
$html .= '</div>';
2016-01-30 20:01:04 -03:00
2015-09-03 21:46:17 -03:00
return $html;
}
public function adminHead()
{
2017-08-06 00:52:00 +02:00
if (in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) {
$html = '';
2015-08-27 02:05:59 -03:00
2015-09-03 21:46:17 -03:00
// Path plugin.
2015-08-27 02:05:59 -03:00
$pluginPath = $this->htmlPath();
2015-11-03 21:28:11 -03:00
// SimpleMDE css
2015-08-29 02:02:09 -03:00
$html .= '<link rel="stylesheet" href="'.$pluginPath.'css/simplemde.min.css">';
2015-11-03 21:28:11 -03:00
// SimpleMDE js
2015-09-03 21:46:17 -03:00
$html .= '<script src="'.$pluginPath.'js/simplemde.min.js"></script>';
2015-08-29 02:02:09 -03:00
2015-09-03 21:46:17 -03:00
// Hack for Bludit
$html .= '<style>
2016-05-28 16:47:54 -03:00
.editor-toolbar { background: #f1f1f1; border-radius: 0 !important; }
2015-09-03 21:46:17 -03:00
.editor-toolbar::before { margin-bottom: 2px !important }
.editor-toolbar::after { margin-top: 2px !important }
2016-05-28 16:47:54 -03:00
.CodeMirror, .CodeMirror-scroll { min-height: 400px !important; border-radius: 0 !important; }
2015-09-03 21:46:17 -03:00
</style>';
2015-08-27 02:05:59 -03:00
2017-08-06 00:52:00 +02:00
return $html;
2015-08-27 02:05:59 -03:00
}
2017-08-06 00:52:00 +02:00
return false;
2015-08-27 02:05:59 -03:00
}
public function adminBodyEnd()
{
2017-08-06 00:52:00 +02:00
if (in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) {
2016-01-30 20:01:04 -03:00
// Autosave
2017-08-06 00:52:00 +02:00
global $Page;
global $Language;
$autosaveID = $GLOBALS['ADMIN_CONTROLLER'];
2016-01-30 20:01:04 -03:00
$autosaveEnable = $this->getDbField('autosave')?'true':'false';
2017-08-06 00:52:00 +02:00
if (!empty($Page)) {
$autosaveID = $Page->key();
2016-01-30 20:01:04 -03:00
}
// Spell Checker
$spellCheckerEnable = $this->getDbField('spellChecker')?'true':'false';
2015-08-27 02:05:59 -03:00
$pluginPath = $this->htmlPath();
2015-10-18 19:45:58 -03:00
$html = '<script>'.PHP_EOL;
$html .= 'var simplemde = null;'.PHP_EOL;
$html .= 'function addContentSimpleMDE(content) {
var text = simplemde.value();
simplemde.value(text + content + "\n");
}'.PHP_EOL;
// This function is necesary on each Editor, it is used by Bludit Images v8.
$html .= 'function editorAddImage(filename) {
addContentSimpleMDE("!['.$Language->get('Image description').']("+filename+")");
}'.PHP_EOL;
2015-10-18 19:45:58 -03:00
$html .= '$(document).ready(function() { '.PHP_EOL;
$html .= 'simplemde = new SimpleMDE({
2015-08-27 02:05:59 -03:00
element: document.getElementById("jscontent"),
2015-08-29 02:02:09 -03:00
status: false,
2015-08-27 02:05:59 -03:00
toolbarTips: true,
toolbarGuideIcon: true,
2015-08-29 15:07:47 -03:00
autofocus: false,
placeholder: "'.$Language->get('content-here-supports-markdown-and-html-code').'",
2015-09-07 21:51:48 -03:00
lineWrapping: true,
2015-11-03 21:28:11 -03:00
autoDownloadFontAwesome: false,
2015-08-27 02:05:59 -03:00
indentWithTabs: true,
2015-09-03 21:46:17 -03:00
tabSize: '.$this->getDbField('tabSize').',
spellChecker: '.$spellCheckerEnable.',
2016-01-30 20:01:04 -03:00
autosave: {
enabled: '.$autosaveEnable.',
uniqueId: "'.$autosaveID.'",
delay: 1000,
},
2017-08-10 19:55:50 +02:00
toolbar: ['.Sanitize::htmlDecode($this->getDbField('toolbar')).',
"|",
{
name: "pageBreak",
action: function addPageBreak(editor){
var cm = editor.codemirror;
output = "\n'.PAGE_BREAK.'\n";
cm.replaceSelection(output);
},
className: "fa fa-scissors",
2017-08-10 19:55:50 +02:00
title: "'.$Language->get('Pagebreak').'",
}]
2015-11-04 23:54:22 -03:00
});';
2015-11-03 21:28:11 -03:00
2015-08-27 02:05:59 -03:00
$html .= '}); </script>';
2017-08-06 00:52:00 +02:00
return $html;
2015-08-27 02:05:59 -03:00
}
2017-08-06 00:52:00 +02:00
return false;
2015-08-27 02:05:59 -03:00
}
2017-10-16 11:11:07 +02:00
}