initial commit
This commit is contained in:
192
webroot/js/tinmce_5/init.js
Normal file
192
webroot/js/tinmce_5/init.js
Normal file
@@ -0,0 +1,192 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
var tiny_height = 560;
|
||||
var text_area_class = 'textarea.editable';
|
||||
|
||||
if ($('textarea.editable').attr('height')) {
|
||||
tiny_height = $('textarea.editable').attr('height');
|
||||
}
|
||||
|
||||
if ($('textarea.send-client-email-textarea').attr('height')) {
|
||||
tiny_height = $('textarea.send-client-email-textarea').attr('height');
|
||||
text_area_class += ' ,textarea.send-client-email-textarea';
|
||||
}
|
||||
|
||||
if ($(text_area_class).attr('maxlength')) {
|
||||
var max_chars = $(text_area_class).attr('maxlength');
|
||||
|
||||
tinymce.init({
|
||||
selector: text_area_class,
|
||||
menubar: true,
|
||||
visual: false,
|
||||
height: tiny_height,
|
||||
inline_styles: true,
|
||||
entity_encoding: "numeric",
|
||||
plugins: [
|
||||
"advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
|
||||
"searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
|
||||
"save table directionality emoticons template paste fullpage code legacyoutput"
|
||||
],
|
||||
content_css: "css/content.css",
|
||||
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image fullpage table | forecolor backcolor emoticons | preview | code | pagebreak ",
|
||||
pagebreak_separator: '<pagebreak />',
|
||||
fullpage_default_encoding: "UTF-8",
|
||||
extended_valid_elements: "svg[*],defs[*],pattern[*],desc[*],metadata[*],g[*],mask[*],path[*],line[*],marker[*],rect[*],circle[*],ellipse[*],polygon[*],polyline[*],linearGradient[*],radialGradient[*],stop[*],image[*],view[*],text[*],textPath[*],title[*],tspan[*],glyph[*],symbol[*],switch[*],use[*]",
|
||||
fullpage_default_doctype: "<!DOCTYPE html>",
|
||||
init_instance_callback: function (editor)
|
||||
{
|
||||
//$('#' + this.id).prev().append('<div class="char_count" style="text-align:right"></div>');
|
||||
tinymce_updateCharCounter($('.char-count-text'), tinymce_getContentLength());
|
||||
|
||||
},
|
||||
file_picker_callback: function(cb, value, meta) {
|
||||
var input = document.createElement('input');
|
||||
input.setAttribute('type', 'file');
|
||||
input.setAttribute('accept', 'image/*');
|
||||
input.onchange = function() {
|
||||
var file = this.files[0];
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
var id = 'blobid' + (new Date()).getTime();
|
||||
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
|
||||
var base64 = reader.result.split(',')[1];
|
||||
console.log('tineymce',id,file,base64);
|
||||
var blobInfo = blobCache.create(id, file, base64);
|
||||
blobCache.add(blobInfo);
|
||||
|
||||
// call the callback and populate the Title field with the file name
|
||||
cb(blobInfo.blobUri(), { title: file.name });
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
};
|
||||
|
||||
input.click();
|
||||
},
|
||||
setup: function (ed) {
|
||||
var allowedKeys = [8, 37, 38, 39, 40, 46]; // backspace, delete and cursor keys
|
||||
ed.on('keydown keyup', function (e) {
|
||||
|
||||
var is_ignore = false;
|
||||
if (e.keyCode == 88 && e.ctrlKey){
|
||||
return true;
|
||||
}
|
||||
|
||||
if (allowedKeys.indexOf(e.keyCode) != -1){
|
||||
return true
|
||||
}
|
||||
|
||||
console.log(tinymce_getContentLength(),max_chars,(tinymce_getContentLength() + 1 > max_chars),e.keyCode);
|
||||
|
||||
if ((tinymce_getContentLength() + 1 > max_chars)) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
// ed.on('keypress', function (e) {
|
||||
// console.log(tinymce_getContentLength())
|
||||
// //if (allowedKeys.indexOf(e.keyCode) != -1) return true;
|
||||
// if (tinymce_getContentLength() + 1 > max_chars) {
|
||||
// e.preventDefault();
|
||||
// e.stopPropagation();
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
// });
|
||||
|
||||
},
|
||||
paste_preprocess: function (plugin, args) {
|
||||
if(args.content){
|
||||
var editor = tinymce.get(tinymce.activeEditor.id);
|
||||
var editor_content = editor.getContent({format: 'text'});
|
||||
args.content = args.content.replace(/'/g, "\\'");
|
||||
|
||||
var final_length = parseInt(args.content.length) + parseInt(editor_content.length);
|
||||
if (final_length > max_chars) {
|
||||
alert('Pasting this exceeds the maximum allowed number of ' + max_chars + ' characters.');
|
||||
args.content = '';
|
||||
}else{
|
||||
tinymce_updateCharCounter(editor, args.content.length)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
tinymce.init({
|
||||
selector: "textarea.editable",
|
||||
menubar: true,
|
||||
visual: false,
|
||||
height: tiny_height,
|
||||
inline_styles: true,
|
||||
entity_encoding: "numeric",
|
||||
plugins: [
|
||||
"advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
|
||||
"searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
|
||||
"save table directionality emoticons template paste fullpage code legacyoutput"
|
||||
],
|
||||
content_css: "css/content.css",
|
||||
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image fullpage table | forecolor backcolor emoticons | preview | code | pagebreak ",
|
||||
pagebreak_separator: '<pagebreak />',
|
||||
fullpage_default_encoding: "UTF-8",
|
||||
extended_valid_elements: "svg[*],defs[*],pattern[*],desc[*],metadata[*],g[*],mask[*],path[*],line[*],marker[*],rect[*],circle[*],ellipse[*],polygon[*],polyline[*],linearGradient[*],radialGradient[*],stop[*],image[*],view[*],text[*],textPath[*],title[*],tspan[*],glyph[*],symbol[*],switch[*],use[*]",
|
||||
fullpage_default_doctype: "<!DOCTYPE html>",
|
||||
init_instance_callback: function (editor)
|
||||
{
|
||||
editor.on('Change', function (e) {
|
||||
// if ($('.save-draft').hasClass('disabled')) {
|
||||
// $('.save-draft').removeClass('disabled').text('Save Draft');
|
||||
// }
|
||||
});
|
||||
|
||||
// if (localStorage.getItem(templateID) !== null) {
|
||||
// editor.setContent(localStorage.getItem(templateID));
|
||||
// }
|
||||
|
||||
// setTimeout(function () {
|
||||
// editor.execCommand("mceRepaint");
|
||||
// }, 2000);
|
||||
|
||||
},
|
||||
file_picker_callback: function(cb, value, meta) {
|
||||
var input = document.createElement('input');
|
||||
input.setAttribute('type', 'file');
|
||||
input.setAttribute('accept', 'image/*');
|
||||
input.onchange = function() {
|
||||
var file = this.files[0];
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
var id = 'blobid' + (new Date()).getTime();
|
||||
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
|
||||
var base64 = reader.result.split(',')[1];
|
||||
console.log('tineymce',id,file,base64);
|
||||
var blobInfo = blobCache.create(id, file, base64);
|
||||
blobCache.add(blobInfo);
|
||||
|
||||
// call the callback and populate the Title field with the file name
|
||||
cb(blobInfo.blobUri(), { title: file.name });
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
};
|
||||
|
||||
input.click();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function tinymce_updateCharCounter(el, len) {
|
||||
$('#' + el.id).prev().find('.char-count-text').text(len + '/' + max_chars);
|
||||
}
|
||||
|
||||
function tinymce_getContentLength() {
|
||||
return tinymce.get(tinymce.activeEditor.id).contentDocument.body.innerText.length;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user