| | |
| | | else { |
| | | $.extend(conf, { |
| | | plugins: 'autolink charmap code colorpicker directionality emoticons link image media nonbreaking' |
| | | + ' paste table tabfocus textcolor searchreplace' + (config.spellcheck ? ' spellchecker' : ''), |
| | | + ' paste table tabfocus textcolor searchreplace spellchecker', |
| | | toolbar: 'bold italic underline | alignleft aligncenter alignright alignjustify' |
| | | + ' | bullist numlist outdent indent ltr rtl blockquote | forecolor backcolor | fontselect fontsizeselect' |
| | | + ' | link unlink table | emoticons charmap image media | code searchreplace undo redo', |
| | |
| | | file_browser_callback_types: 'image media' |
| | | }); |
| | | } |
| | | |
| | | // disable TinyMCE plugins/buttons from Roundcube plugin |
| | | $.each(config.disabled_plugins || [], function() { |
| | | conf.plugins = conf.plugins.replace(this, ''); |
| | | }); |
| | | $.each(config.disabled_buttons || [], function() { |
| | | conf.toolbar = conf.toolbar.replace(this, ''); |
| | | }); |
| | | conf.toolbar = conf.toolbar.replace(/\|\s+\|/g, '|'); |
| | | |
| | | // support external configuration settings e.g. from skin |
| | | if (window.rcmail_editor_settings) |
| | |
| | | return; |
| | | } |
| | | |
| | | var area = $('#' + this.id), |
| | | height = $('div.mce-toolbar-grp:first', area.parent()).height(); |
| | | |
| | | // the editor might be still not fully loaded, making the editing area |
| | | // inaccessible, wait and try again (#1490310) |
| | | if (height > 200 || height > area.height()) { |
| | | return setTimeout(function () { ref.init_callback(event); }, 300); |
| | | } |
| | | |
| | | var css = {}, |
| | | elem = rcube_find_object('_from'), |
| | | fe = rcmail.env.compose_focus_elem; |
| | |
| | | |
| | | // Focus previously focused element |
| | | if (fe && fe.id != this.id) { |
| | | // use setTimeout() for IE9 (#1488541) |
| | | window.setTimeout(function() { |
| | | window.focus(); // for WebKit (#1486674) |
| | | fe.focus(); |
| | | rcmail.env.compose_focus_elem = null; |
| | | }, 10); |
| | | window.focus(); // for WebKit (#1486674) |
| | | fe.focus(); |
| | | rcmail.env.compose_focus_elem = null; |
| | | } |
| | | } |
| | | |
| | | window.setTimeout(function() { |
| | | // set tabIndex and set focus to element that was focused before |
| | | ref.tabindex(fe && fe.id == ref.id); |
| | | // Trigger resize (needed for proper editor resizing in some browsers) |
| | | $(window).resize(); |
| | | }, 100); |
| | | // set tabIndex and set focus to element that was focused before |
| | | ref.tabindex(fe && fe.id == ref.id); |
| | | // Trigger resize (needed for proper editor resizing in some browsers) |
| | | $(window).resize(); |
| | | }; |
| | | |
| | | // set tabIndex on tinymce editor |
| | |
| | | input.val(data); |
| | | tinymce.execCommand('mceAddEditor', false, ref.id); |
| | | |
| | | setTimeout(function() { |
| | | if (ref.editor) { |
| | | var body = $(ref.editor.getBody()); |
| | | if (rcmail.env.default_font) |
| | | body.css('font-family', rcmail.env.default_font); |
| | | // #1486593 |
| | | ref.tabindex(true); |
| | | // put cursor on start of the compose body |
| | | ref.editor.selection.setCursorLocation(body.children().first().get(0)); |
| | | } |
| | | }, 500); |
| | | if (ref.editor) { |
| | | var body = $(ref.editor.getBody()); |
| | | // #1486593 |
| | | ref.tabindex(true); |
| | | // put cursor on start of the compose body |
| | | ref.editor.selection.setCursorLocation(body.children().first().get(0)); |
| | | } |
| | | }; |
| | | |
| | | // convert to html |
| | |
| | | sig = rcmail.env.signatures[id].text; |
| | | sig = sig.replace(/\r\n/g, '\n'); |
| | | |
| | | if (rcmail.env.top_posting) { |
| | | if (p >= 0) { // in place of removed signature |
| | | message = message.substring(0, p) + sig + message.substring(p, message.length); |
| | | cursor_pos = p - 1; |
| | | } |
| | | else if (!message) { // empty message |
| | | cursor_pos = 0; |
| | | message = '\n\n' + sig; |
| | | } |
| | | else if (pos = rcmail.get_caret_pos(input_message.get(0))) { // at cursor position |
| | | // in place of removed signature |
| | | if (p >= 0) { |
| | | message = message.substring(0, p) + sig + message.substring(p, message.length); |
| | | cursor_pos = p - 1; |
| | | } |
| | | // empty message |
| | | else if (!message) { |
| | | message = '\n\n' + sig; |
| | | cursor_pos = 0; |
| | | } |
| | | else if (rcmail.env.top_posting && !rcmail.env.sig_below) { |
| | | // at cursor position |
| | | if (pos = rcmail.get_caret_pos(input_message.get(0))) { |
| | | message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length); |
| | | cursor_pos = pos; |
| | | } |
| | | else { // on top |
| | | cursor_pos = 0; |
| | | // on top |
| | | else { |
| | | message = '\n\n' + sig + '\n\n' + message.replace(/^[\r\n]+/, ''); |
| | | cursor_pos = 0; |
| | | } |
| | | } |
| | | else { |
| | | message = message.replace(/[\r\n]+$/, ''); |
| | | cursor_pos = !rcmail.env.top_posting && message.length ? message.length+1 : 0; |
| | | cursor_pos = !rcmail.env.top_posting && message.length ? message.length + 1 : 0; |
| | | message += '\n\n' + sig; |
| | | } |
| | | } |
| | | else |
| | | else { |
| | | cursor_pos = rcmail.env.top_posting ? 0 : message.length; |
| | | } |
| | | |
| | | input_message.val(message); |
| | | |
| | |
| | | sigElem = doc.createElement('div'); |
| | | sigElem.setAttribute('id', '_rc_sig'); |
| | | |
| | | if (rcmail.env.top_posting) { |
| | | // if no existing sig and top posting then insert at caret pos |
| | | if (rcmail.env.top_posting && !rcmail.env.sig_below) { |
| | | this.editor.getWin().focus(); // correct focus in IE & Chrome |
| | | |
| | | var node = this.editor.selection.getNode(); |
| | | if (node.nodeName == 'BODY') { |
| | | // no real focus, insert at start |
| | | body.insertBefore(sigElem, body.firstChild); |
| | | body.insertBefore(doc.createElement('br'), body.firstChild); |
| | | } |
| | | else { |
| | | body.insertBefore(sigElem, node.nextSibling); |
| | | body.insertBefore(doc.createElement('br'), node.nextSibling); |
| | | } |
| | | |
| | | // insert at start or at cursor position if found |
| | | body.insertBefore(sigElem, node.nodeName == 'BODY' ? body.firstChild : node.nextSibling); |
| | | body.insertBefore(doc.createElement('p'), sigElem); |
| | | } |
| | | else { |
| | | body.appendChild(sigElem); |
| | | position_element = $(sigElem).prev(); |
| | | position_element = rcmail.env.top_posting ? body.firstChild : $(sigElem).prev(); |
| | | } |
| | | } |
| | | |
| | | if (rcmail.env.signatures[id]) { |
| | | sigElem.innerHTML = rcmail.env.signatures[id].html; |
| | | } |
| | | sigElem.innerHTML = rcmail.env.signatures[id] ? rcmail.env.signatures[id].html : ''; |
| | | } |
| | | else if (!rcmail.env.top_posting) { |
| | | position_element = $(this.editor.getBody()).children().last(); |