1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
/*
+-----------------------------------------------------------------------+
| Roundcube editor js library |
| |
| This file is part of the Roundcube web development suite |
| Copyright (C) 2006, The Roundcube Dev Team |
| Licensed under the GNU GPL |
| |
+-----------------------------------------------------------------------+
| Author: Eric Stadtherr <estadtherr@gmail.com> |
+-----------------------------------------------------------------------+
$Id: editor.js 000 2006-05-18 19:12:28Z roundcube $
*/
// Initialize HTML editor
function rcmail_editor_init(config)
{
var ret, conf = {
mode: 'textareas',
editor_selector: 'mce_editor',
apply_source_formatting: true,
theme: 'advanced',
language: config.lang,
content_css: config.skin_path + '/editor_content.css',
theme_advanced_toolbar_location: 'top',
theme_advanced_toolbar_align: 'left',
theme_advanced_buttons3: '',
extended_valid_elements: 'font[face|size|color|style],span[id|class|align|style]',
relative_urls: false,
remove_script_host: false,
gecko_spellcheck: true,
convert_urls: false, // #1486944
external_image_list_url: 'program/js/editor_images.js',
rc_client: rcmail
};
if (config.mode == 'identity')
$.extend(conf, {
plugins: 'paste,tabfocus',
theme_advanced_buttons1: 'bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,charmap,hr,link,unlink,code,forecolor',
theme_advanced_buttons2: ',fontselect,fontsizeselect'
});
else // mail compose
$.extend(conf, {
plugins: 'paste,emotions,media,nonbreaking,table,searchreplace,visualchars,directionality,tabfocus' + (config.spellcheck ? ',spellchecker' : ''),
theme_advanced_buttons1: 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,outdent,indent,ltr,rtl,blockquote,|,forecolor,backcolor,fontselect,fontsizeselect',
theme_advanced_buttons2: 'link,unlink,table,|,emotions,charmap,image,media,|,code,search' + (config.spellcheck ? ',spellchecker' : '') + ',undo,redo',
spellchecker_languages: (rcmail.env.spellcheck_langs ? rcmail.env.spellcheck_langs : 'Dansk=da,Deutsch=de,+English=en,Espanol=es,Francais=fr,Italiano=it,Nederlands=nl,Polski=pl,Portugues=pt,Suomi=fi,Svenska=sv'),
spellchecker_rpc_url: '?_task=utils&_action=spell_html',
spellchecker_enable_learn_rpc: config.spelldict,
accessibility_focus: false,
oninit: 'rcmail_editor_callback'
});
// support external configuration settings e.g. from skin
if (window.rcmail_editor_settings)
$.extend(conf, window.rcmail_editor_settings);
tinyMCE.init(conf);
}
// react to real individual tinyMCE editor init
function rcmail_editor_callback()
{
var elem = rcube_find_object('_from'),
fe = rcmail.env.compose_focus_elem;
if (elem && elem.type == 'select-one') {
rcmail.change_identity(elem);
// Focus previously focused element
if (fe && fe.id != rcmail.env.composebody) {
window.focus(); // for WebKit (#1486674)
fe.focus();
}
}
// set tabIndex and set focus to element that was focused before
rcmail_editor_tabindex(fe && fe.id == rcmail.env.composebody);
// Trigger resize (needed for proper editor resizing in some browsers using default skin)
$(window).resize();
}
// set tabIndex on tinyMCE editor
function rcmail_editor_tabindex(focus)
{
if (rcmail.env.task == 'mail') {
var editor = tinyMCE.get(rcmail.env.composebody);
if (editor) {
var textarea = editor.getElement();
var node = editor.getContentAreaContainer().childNodes[0];
if (textarea && node)
node.tabIndex = textarea.tabIndex;
if (focus)
editor.getWin().focus();
}
}
}
// switch html/plain mode
function rcmail_toggle_editor(select, textAreaId, flagElement)
{
var flag, ishtml;
if (select.tagName != 'SELECT')
ishtml = select.checked;
else
ishtml = select.value == 'html';
var res = rcmail.command('toggle-editor', {id:textAreaId, mode:ishtml?'html':'plain'});
if (ishtml) {
// #1486593
setTimeout("rcmail_editor_tabindex(true);", 500);
if (flagElement && (flag = rcube_find_object(flagElement)))
flag.value = '1';
}
else if (res) {
if (flagElement && (flag = rcube_find_object(flagElement)))
flag.value = '0';
if (rcmail.env.composebody)
rcube_find_object(rcmail.env.composebody).focus();
}
else { // !res
if (select.tagName == 'SELECT')
select.value = 'html';
else if (select.tagName == 'INPUT')
select.checked = true;
}
}
|