PHP Classes

File: public/js/tinymce/src/core/src/main/js/init/InitIframe.js

Recommend this page to a friend!
  Classes of Abed Nego Ragil Putra  >  GoLavaCMS  >  public/js/tinymce/src/core/src/main/js/init/InitIframe.js  >  Download  
File: public/js/tinymce/src/core/src/main/js/init/InitIframe.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: GoLavaCMS
Publish content on Web pages with SEO support
Author: By
Last change:
Date: 4 years ago
Size: 4,597 bytes
 

Contents

Class file image Download
/**
 * InitIframe.js
 *
 * Released under LGPL License.
 * Copyright (c) 1999-2017 Ephox Corp. All rights reserved
 *
 * License: http://www.tinymce.com/license
 * Contributing: http://www.tinymce.com/contributing
 */

define(
  'tinymce.core.init.InitIframe',
  [
    'ephox.sugar.api.node.Element',
    'ephox.sugar.api.properties.Attr',
    'ephox.sugar.api.properties.Css',
    'global!document',
    'global!window',
    'tinymce.core.Env',
    'tinymce.core.api.Settings',
    'tinymce.core.dom.DOMUtils',
    'tinymce.core.init.InitContentBody',
    'tinymce.core.util.Uuid'
  ],
  function (Element, Attr, Css, document, window, Env, Settings, DOMUtils, InitContentBody, Uuid) {
    var DOM = DOMUtils.DOM;

    var relaxDomain = function (editor, ifr) {
      // Domain relaxing is required since the user has messed around with document.domain
      // This only applies to IE 11 other browsers including Edge seems to handle document.domain
      if (document.domain !== window.location.hostname && Env.ie && Env.ie < 12) {
        var bodyUuid = Uuid.uuid('mce');

        editor[bodyUuid] = function () {
          InitContentBody.initContentBody(editor);
        };

        /*eslint no-script-url:0 */
        var domainRelaxUrl = 'javascript:(function(){' +
          'document.open();document.domain="' + document.domain + '";' +
          'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' +
          'document.close();ed.' + bodyUuid + '(true);})()';

        DOM.setAttrib(ifr, 'src', domainRelaxUrl);
        return true;
      }

      return false;
    };

    var normalizeHeight = function (height) {
      var normalizedHeight = typeof height === 'number' ? height + 'px' : height;
      return normalizedHeight ? normalizedHeight : '';
    };

    var createIframeElement = function (id, title, height, customAttrs) {
      var iframe = Element.fromTag('iframe');

      Attr.setAll(iframe, customAttrs);

      Attr.setAll(iframe, {
        id: id + '_ifr',
        frameBorder: '0',
        allowTransparency: 'true',
        title: title
      });

      Css.setAll(iframe, {
        width: '100%',
        height: normalizeHeight(height),
        display: 'block' // Important for Gecko to render the iframe correctly
      });

      return iframe;
    };

    var getIframeHtml = function (editor) {
      var bodyId, bodyClass, iframeHTML;

      iframeHTML = Settings.getDocType(editor) + '<html><head>';

      // We only need to override paths if we have to
      // IE has a bug where it remove site absolute urls to relative ones if this is specified
      if (Settings.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {
        iframeHTML += '<base href="' + editor.documentBaseURI.getURI() + '" />';
      }

      iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';

      bodyId = Settings.getBodyId(editor);
      bodyClass = Settings.getBodyClass(editor);

      if (Settings.getContentSecurityPolicy(editor)) {
        iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + Settings.getContentSecurityPolicy(editor) + '" />';
      }

      iframeHTML += '</head><body id="' + bodyId +
        '" class="mce-content-body ' + bodyClass +
        '" data-id="' + editor.id + '"><br></body></html>';

      return iframeHTML;
    };

    var createIframe = function (editor, o) {
      var title = editor.editorManager.translate(
        "Rich Text Area. Press ALT-F9 for menu. " +
        "Press ALT-F10 for toolbar. Press ALT-0 for help"
      );

      var ifr = createIframeElement(editor.id, title, o.height, Settings.getIframeAttrs(editor)).dom();

      ifr.onload = function () {
        ifr.onload = null;
        editor.fire("load");
      };

      var isDomainRelaxed = relaxDomain(editor, ifr);

      editor.contentAreaContainer = o.iframeContainer;
      editor.iframeElement = ifr;
      editor.iframeHTML = getIframeHtml(editor);

      DOM.add(o.iframeContainer, ifr);

      return isDomainRelaxed;
    };

    var init = function (editor, boxInfo) {
      var isDomainRelaxed = createIframe(editor, boxInfo);

      if (boxInfo.editorContainer) {
        DOM.get(boxInfo.editorContainer).style.display = editor.orgDisplay;
        editor.hidden = DOM.isHidden(boxInfo.editorContainer);
      }

      editor.getElement().style.display = 'none';
      DOM.setAttrib(editor.id, 'aria-hidden', true);

      if (!isDomainRelaxed) {
        InitContentBody.initContentBody(editor);
      }
    };

    return {
      init: init
    };
  }
);
For more information send a message to info at phpclasses dot org.