| | |
| | | ed.on('keypress', function() { |
| | | rcmail.compose_type_activity++; |
| | | }); |
| | | // secure spellchecker requests with Roundcube token |
| | | tinymce.util.XHR.on('beforeSend', function(e) { |
| | | e.xhr.setRequestHeader('X-Roundcube-Request', rcmail.env.request_token); |
| | | }); |
| | | }; |
| | | |
| | | // textarea identifier |
| | |
| | | var ed = this.editor; |
| | | |
| | | if (ed) { |
| | | if (ed.plugins && ed.plugins.spellchecker && this.spellcheck_active) |
| | | ed.execCommand('mceSpellCheck'); |
| | | if (ed.plugins && ed.plugins.spellchecker && this.spellcheck_active) { |
| | | ed.execCommand('mceSpellCheck', false); |
| | | this.spellcheck_observer(); |
| | | } |
| | | } |
| | | else if (ed = this.spellchecker) { |
| | | if (ed.state && ed.state != 'ready' && ed.state != 'no_error_found') |
| | |
| | | return ed.state != 'ready' && ed.state != 'no_error_found'; |
| | | }; |
| | | |
| | | // resume spellchecking, highlight provided mispellings without new ajax request |
| | | // resume spellchecking, highlight provided mispellings without a new ajax request |
| | | this.spellcheck_resume = function(data) |
| | | { |
| | | var ed = this.editor; |
| | | |
| | | if (ed) { |
| | | ed.settings.spellchecker_callback = function(name, text, done, error) { done(data); }; |
| | | ed.execCommand('mceSpellCheck'); |
| | | ed.settings.spellchecker_callback = null; |
| | | |
| | | this.spellcheck_observer(); |
| | | ed.plugins.spellchecker.markErrors(data); |
| | | } |
| | | else if (ed = this.spellchecker) { |
| | | ed.prepare(false, true); |
| | |
| | | this.hack_file_input(elem, rcmail.gui_objects.uploadform); |
| | | |
| | | // enable drag-n-drop area |
| | | if (rcmail.gui_objects.filedrop && rcmail.env.filedrop && ((window.XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.sendAsBinary) || window.FormData)) { |
| | | rcmail.env.old_file_drop = rcmail.gui_objects.filedrop; |
| | | if ((window.XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.sendAsBinary) || window.FormData) { |
| | | if (!rcmail.env.filedrop) { |
| | | rcmail.env.filedrop = {}; |
| | | } |
| | | if (rcmail.gui_objects.filedrop) { |
| | | rcmail.env.old_file_drop = rcmail.gui_objects.filedrop; |
| | | } |
| | | |
| | | rcmail.gui_objects.filedrop = $('#image-selector-form'); |
| | | rcmail.gui_objects.filedrop.addClass('droptarget') |
| | | .bind('dragover dragleave', function(e) { |
| | |
| | | { |
| | | if (!file.complete || !file.mimetype) { |
| | | return; |
| | | } |
| | | |
| | | if (rcmail.file_upload_id) { |
| | | rcmail.set_busy(false, null, rcmail.file_upload_id); |
| | | } |
| | | |
| | | var rx, img_src; |
| | |
| | | this.hack_file_input = function(elem, clone_form) |
| | | { |
| | | var link = $(elem), |
| | | file = $('<input>').attr('name', '_files[]'), |
| | | file = $('<input>').attr('name', '_file[]'), |
| | | form = $('<form>').attr({method: 'post', enctype: 'multipart/form-data'}), |
| | | offset = link.offset(); |
| | | |