PluginProbe
YeeMail — Email Template Builder & Customizer / trunk
YeeMail — Email Template Builder & Customizer vtrunk
3.0.1 2.2.1 3.0.0 2.2.0 trunk 2.0.0 2.0.3 2.0.5 2.0.8 2.1.6 2.1.7 2.1.8
yeemail / backend / src / tinymce-ace.js

tinymce-ace.js in YeeMail — Email Template Builder & Customizer trunk, at backend/src/tinymce-ace.js

82 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * TinyMCE Ace code editor
3 * MIT License Copyright (c) 2017 Akshay Raje
4 * @link https://github.com/akshayraje/tinymce-ace-code-editor
5 * @author https://github.com/akshayraje/
6 */
7 (function($) {
8 "use strict";
9 tinymce.PluginManager.add('code_toggle', function(editor, url) {
10 editor.addButton('code_toggle', {
11 icon: 'code',
12 text: 'Code',
13 tooltip: 'Code',
14 onclick: function (e) {
15 $(".builder__editor--item-html textarea").val(editor.getContent());
16 toggleCode(this, editor);
17 }
18 });
19
20 var toggleCode = function(elem, editor){
21 elem.active( !elem.active() );
22 var state = elem.active();
23 var self = elem.$el;
24 var tinymce = $(self).closest('.mce-tinymce');
25 var aceID = 'ace-editor-'+editor.id;
26 if (state){
27 // Code mode
28 tinymce.find('.mce-widget.mce-btn').each(function(){
29 if($(this).attr('id') !== $(elem.$el).attr('id')){
30 $(this).css({
31 'pointer-events': 'none',
32 'opacity': '0.4'
33 });
34 }
35 });
36 tinymce.find('.mce-edit-area').hide();
37 $('#'+editor.id)
38 .css('height', $(editor.getDoc()).height()+'px')
39 .show();
40 if(typeof ace !== 'undefined'){
41 var textarea = $('#'+editor.id).hide();
42 $('#'+editor.id).after('<div id="'+aceID+'"></div>');
43 var aceEditor = ace.edit(aceID);
44 aceEditor.$blockScrolling = 'Infinity';
45 aceEditor.setTheme("ace/theme/chrome");
46 aceEditor.session.setMode("ace/mode/html_ruby");
47 aceEditor.setValue(textarea.val(), 1);
48 aceEditor.setOptions({
49 wrap: true,
50 displayIndentGuides: true,
51 highlightActiveLine: false,
52 showPrintMargin: false,
53 minLines: Math.round(300 / 17),
54 maxLines: Math.round(300 / 17)
55 });
56 aceEditor.on('change', function () {
57 textarea.val(aceEditor.getValue()).trigger('keyup');
58 editor.setContent(aceEditor.getValue());
59 });
60 }
61 } else {
62 // Editor mode
63 tinymce.find('.mce-widget.mce-btn').each(function(){
64 if($(this).attr('id') !== $(elem.$el).attr('id')) {
65 $(this).css({
66 'pointer-events': 'auto',
67 'opacity': '1'
68 });
69 }
70 });
71 tinymce.find('.mce-edit-area').show();
72 $('#'+editor.id)
73 .hide();
74 if(typeof ace !== 'undefined'){
75 var aceEditor = ace.edit(aceID);
76 aceEditor.destroy();
77 $('#'+aceID).remove();
78 }
79 }
80 };
81 });
82 })(jQuery);