Aleksander Machniak
2015-03-11 a172f39ff75da0aee00bbfb993c356d0aeba1df0
program/js/editor.js
@@ -65,6 +65,15 @@
    }
  }
  // secure spellchecker requests with Roundcube token
  // Note: must be registered only once (#1490311)
  if (!tinymce.registered_request_token) {
    tinymce.registered_request_token = true;
    tinymce.util.XHR.on('beforeSend', function(e) {
      e.xhr.setRequestHeader('X-Roundcube-Request', rcmail.env.request_token);
    });
  }
  // minimal editor
  if (config.mode == 'identity') {
    $.extend(conf, {
@@ -107,10 +116,6 @@
    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
@@ -127,6 +132,15 @@
    if (rcmail.env.action != 'compose') {
      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 = {},
@@ -149,21 +163,16 @@
      // 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
@@ -235,17 +244,13 @@
        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