bludit/bl-plugins/simplemde/plugin.php

137 lines
3.5 KiB
PHP
Raw Normal View History

2015-08-27 07:05:59 +02:00
<?php
class pluginsimpleMDE extends Plugin {
private $loadWhenController = array(
'new-post',
'new-page',
'edit-post',
'edit-page'
);
2015-09-04 02:46:17 +02:00
public function init()
{
$this->dbFields = array(
'tabSize'=>'2',
2016-01-31 00:01:04 +01:00
'toolbar'=>'"bold", "italic", "heading", "|", "quote", "unordered-list", "|", "link", "image", "code", "horizontal-rule", "|", "preview", "side-by-side", "fullscreen", "guide"',
'autosave'=>false
2015-09-04 02:46:17 +02:00
);
}
public function form()
2015-08-27 07:05:59 +02:00
{
global $Language;
2015-09-04 02:46:17 +02:00
$html = '<div>';
$html .= '<label>'.$Language->get('Toolbar').'</label>';
$html .= '<input name="toolbar" id="jstoolbar" type="text" value="'.$this->getDbField('toolbar').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$Language->get('Tab size').'</label>';
$html .= '<input name="tabSize" id="jstabSize" type="text" value="'.$this->getDbField('tabSize').'">';
$html .= '</div>';
2016-01-31 00:01:04 +01:00
$html .= '<div>';
$html .= '<input name="autosave" id="jsautosave" type="checkbox" value="true" '.($this->getDbField('autosave')?'checked':'').'>';
$html .= '<label class="forCheckbox" for="jsautosave">'.$Language->get('Autosave').'</label>';
$html .= '</div>';
2015-09-04 02:46:17 +02:00
return $html;
}
public function adminHead()
{
2015-08-27 07:05:59 +02:00
global $layout;
$html = '';
// Load CSS and JS only on Controllers in array.
if(in_array($layout['controller'], $this->loadWhenController))
{
2015-09-04 02:46:17 +02:00
// Path plugin.
2015-08-27 07:05:59 +02:00
$pluginPath = $this->htmlPath();
2015-11-04 01:28:11 +01:00
// SimpleMDE css
2015-08-29 07:02:09 +02:00
$html .= '<link rel="stylesheet" href="'.$pluginPath.'css/simplemde.min.css">';
2015-11-04 01:28:11 +01:00
// Font-awesome is a dependency of SimpleMDE
2016-01-17 01:45:16 +01:00
$html .= '<link rel="stylesheet" href="'.HTML_PATH_ADMIN_THEME_CSS.'font-awesome.min.css">';
2015-11-04 01:28:11 +01:00
// SimpleMDE js
2015-09-04 02:46:17 +02:00
$html .= '<script src="'.$pluginPath.'js/simplemde.min.js"></script>';
2015-08-29 07:02:09 +02:00
2015-09-04 02:46:17 +02:00
// Hack for Bludit
$html .= '<style>
2015-10-19 00:45:58 +02:00
.editor-toolbar { background: #f1f1f1; }
2015-09-04 02:46:17 +02:00
.editor-toolbar::before { margin-bottom: 2px !important }
.editor-toolbar::after { margin-top: 2px !important }
2015-10-19 00:45:58 +02:00
.CodeMirror, .CodeMirror-scroll { min-height: 400px !important; }
2015-09-04 02:46:17 +02:00
</style>';
2015-08-27 07:05:59 +02:00
}
return $html;
}
public function adminBodyEnd()
{
global $layout;
$html = '';
// Load CSS and JS only on Controllers in array.
if(in_array($layout['controller'], $this->loadWhenController))
{
2016-01-31 00:01:04 +01:00
// Autosave
global $_Page, $_Post;
$autosaveID = $layout['controller'];
$autosaveEnable = $this->getDbField('autosave')?'true':'false';
if(isset($_Page)) {
$autosaveID = $_Page->key();
}
if(isset($_Post)) {
$autosaveID = $_Post->key();
}
2015-08-27 07:05:59 +02:00
$pluginPath = $this->htmlPath();
2015-10-19 00:45:58 +02: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;
$html .= 'function editorAddImage(filename) {
addContentSimpleMDE("![alt text]("+filename+")");
}'.PHP_EOL;
2015-10-19 00:45:58 +02:00
$html .= '$(document).ready(function() { '.PHP_EOL;
$html .= 'simplemde = new SimpleMDE({
2015-08-27 07:05:59 +02:00
element: document.getElementById("jscontent"),
2015-08-29 07:02:09 +02:00
status: false,
2015-08-27 07:05:59 +02:00
toolbarTips: true,
toolbarGuideIcon: true,
2015-08-29 20:07:47 +02:00
autofocus: false,
2015-09-08 02:51:48 +02:00
lineWrapping: true,
2015-11-04 01:28:11 +01:00
autoDownloadFontAwesome: false,
2015-08-27 07:05:59 +02:00
indentWithTabs: true,
2015-09-04 02:46:17 +02:00
tabSize: '.$this->getDbField('tabSize').',
spellChecker: false,
2016-01-31 00:01:04 +01:00
autosave: {
enabled: '.$autosaveEnable.',
uniqueId: "'.$autosaveID.'",
delay: 1000,
},
2015-09-04 02:46:17 +02:00
toolbar: ['.Sanitize::htmlDecode($this->getDbField('toolbar')).']
2015-11-05 03:54:22 +01:00
});';
2015-11-04 01:28:11 +01:00
2015-08-27 07:05:59 +02:00
$html .= '}); </script>';
}
return $html;
}
}