diff --git a/site/plugins/admin/app/Controllers/EntriesController.php b/site/plugins/admin/app/Controllers/EntriesController.php index 27c12e1b..8f05bd0b 100644 --- a/site/plugins/admin/app/Controllers/EntriesController.php +++ b/site/plugins/admin/app/Controllers/EntriesController.php @@ -454,25 +454,8 @@ class EntriesController extends Controller break; // A WYSIWYG HTML field. case 'html': - if ($form_value === '' || count($form_value['blocks']) == 0) { - $form_value = JsonParser::decode('{ - "time": 1559727958862, - "blocks": [{ - "type": "paragraph", - "data": { - "text": "" - } - }], - "version": "2.13.0" - }'); - } - $form_element = $this->view->fetch( - 'plugins/admin/views/templates/content/entries/editor.html', - [ - 'form_element' => $element, - 'form_value' => JsonParser::encode($form_value) - ] - ); + $property['attributes']['class'] .= ' js-html-editor'; + $form_element = Form::textarea($element, $form_value, $property['attributes']); break; // Selectbox field case 'select': diff --git a/site/plugins/admin/gulpfile.js b/site/plugins/admin/gulpfile.js index c5b82120..0d0ba84e 100755 --- a/site/plugins/admin/gulpfile.js +++ b/site/plugins/admin/gulpfile.js @@ -44,6 +44,8 @@ gulp.task('admin-css-clean', function() { gulp.task('build-css', function(){ return gulp.src(['node_modules/bootstrap/dist/css/bootstrap.min.css', 'node_modules/animate.css/animate.min.css', + 'node_modules/trumbowyg/dist/ui/trumbowyg.min.css', + 'node_modules/trumbowyg/dist/plugins/table/ui/trumbowyg.table.css', 'node_modules/codemirror/lib/codemirror.css', 'node_modules/messenger-hubspot/build/css/messenger.css', 'node_modules/messenger-hubspot/build/css/messenger-theme-flat.css', @@ -62,6 +64,9 @@ gulp.task('js', function(){ return gulp.src(['node_modules/jquery/dist/jquery.min.js', 'node_modules/popper.js/dist/umd/popper.min.js', 'node_modules/bootstrap/dist/js/bootstrap.min.js', + 'node_modules/trumbowyg/dist/trumbowyg.min.js', + 'node_modules/trumbowyg/dist/plugins/noembed/trumbowyg.noembed.js', + 'node_modules/trumbowyg/dist/plugins/table/trumbowyg.table.js', 'node_modules/codemirror/lib/codemirror.js', 'node_modules/codemirror/mode/htmlmixed/htmlmixed.js', 'node_modules/codemirror/mode/xml/xml.js', @@ -80,6 +85,21 @@ gulp.task('js', function(){ .pipe(gulp.dest('assets/dist/js/')); }); +gulp.task('trumbowyg-fonts', function(){ + return gulp.src(['node_modules/trumbowyg/dist/ui/icons.svg']) + .pipe(gulp.dest('assets/dist/fonts/trumbowyg')); +}); + +gulp.task('trumbowyg-fonts', function(){ + return gulp.src(['node_modules/trumbowyg/dist/ui/icons.svg']) + .pipe(gulp.dest('assets/dist/fonts/trumbowyg')); +}); + +gulp.task('trumbowyg-langs', function(){ + return gulp.src(['node_modules/trumbowyg/dist/*langs/**/*']) + .pipe(gulp.dest('assets/dist/langs/trumbowyg')); +}); + gulp.task('codemirror-theme-monokai', function(){ return gulp.src(['node_modules/codemirror/theme/monokai.css']) .pipe(gulp.dest('assets/dist/css/')); @@ -93,6 +113,8 @@ gulp.task('codemirror-theme-elegant', function(){ gulp.task('default', function(callback) { runSequence('admin-css', ['build-css', + 'trumbowyg-fonts', + 'trumbowyg-langs', 'js'], 'admin-css-clean', 'admin-light-css', diff --git a/site/plugins/admin/package.json b/site/plugins/admin/package.json index 47b3feb3..edc1b559 100755 --- a/site/plugins/admin/package.json +++ b/site/plugins/admin/package.json @@ -17,6 +17,7 @@ "messenger-hubspot": "1.5.0-b2", "popper.js": "^1.14.6", "run-sequence": "^2.2.1", + "trumbowyg": "^2.14.0", "clipboard": "^2.0.4", "bs-custom-file-input": "^1.3.1" } diff --git a/site/plugins/admin/views/partials/base.html b/site/plugins/admin/views/partials/base.html index fba8505d..5b2ae96a 100644 --- a/site/plugins/admin/views/partials/base.html +++ b/site/plugins/admin/views/partials/base.html @@ -60,55 +60,6 @@ } - {% if is_current_path('admin.entries.edit') %} - - - - - - - - - - - - - - - - - {% endif %} - - {{ emmiter_emmit('onAdminThemeHeader') }} {% endblock %} @@ -344,6 +295,32 @@ $(document).ready(function() { + $.trumbowyg.svgPath = '{{base_url()}}/site/plugins/admin/assets/dist/fonts/trumbowyg/icons.svg'; + $('.js-html-editor').trumbowyg({ + btnsDef: { + // Customizables dropdowns + image: { + dropdown: ['insertImage', 'noembed'], + ico: 'insertImage' + } + }, + btns: [ + ['undo', 'redo'], // Only supported in Blink browsers + ['formatting'], + ['strong', 'em', 'del'], + ['link'], + ['image'], + ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'], + ['unorderedList', 'orderedList'], + ['table'], + ['removeformat'], + ['fullscreen'] + ], + lang: '{{ locale }}', + autogrow: false, + removeformatPasted: true + }); + $.flextype.plugins.init(); $('.js-save-form-submit').click(function() { diff --git a/site/plugins/admin/views/templates/content/entries/editor.html b/site/plugins/admin/views/templates/content/entries/editor.html deleted file mode 100644 index a1e71862..00000000 --- a/site/plugins/admin/views/templates/content/entries/editor.html +++ /dev/null @@ -1,105 +0,0 @@ -