99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav GlassYUI.add('editor-para-ie', function(Y) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass /**
60c539309fbe4309d779f7fecd9af50beae463a9Dav Glass * Extends EditorParaBase with IE support
60c539309fbe4309d779f7fecd9af50beae463a9Dav Glass * @class Plugin.EditorParaIE
60c539309fbe4309d779f7fecd9af50beae463a9Dav Glass * @extends Plugin.EditorParaBase
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @constructor
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @module editor
60c539309fbe4309d779f7fecd9af50beae463a9Dav Glass * @submodule editor-para-ie
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass */
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var EditorParaIE = function() {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass EditorParaIE.superclass.constructor.apply(this, arguments);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }, HOST = 'host', BODY = 'body', NODE_CHANGE = 'nodeChange', PARENT_NODE = 'parentNode',
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass FIRST_P = BODY + ' > p', P = 'p', BR = '<br>', FC = 'firstChild', LI = 'li';
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass Y.extend(EditorParaIE, Y.Plugin.EditorParaBase, {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass /**
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * nodeChange handler to handle fixing an empty document.
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @private
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @method _onNodeChange
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass */
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass _onNodeChange: function(e) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var host = this.get(HOST), inst = host.getInstance(),
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass html, txt, par , d, sel, btag = inst.EditorSelection.DEFAULT_BLOCK_TAG,
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass inHTML, txt2, childs, aNode, index, node2, top, n, sib,
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass ps, br, item, p, imgs, t, LAST_CHILD = ':last-child';
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass switch (e.changedType) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass case 'enter-up':
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var para = ((this._lastPara) ? this._lastPara : e.changedNode),
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass b = para.one('br.yui-cursor');
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (this._lastPara) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass delete this._lastPara;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (b) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (b.previous() || b.next()) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (b.ancestor(P)) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass b.remove();
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (!para.test(btag)) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var para2 = para.ancestor(btag);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (para2) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass para = para2;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass para2 = null;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (para.test(btag)) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var prev = para.previous(), lc, lc2, found = false;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (prev) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass lc = prev.one(LAST_CHILD);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass while (!found) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (lc) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass lc2 = lc.one(LAST_CHILD);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (lc2) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass lc = lc2;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass } else {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass found = true;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass } else {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass found = true;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (lc) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass host.copyStyles(lc, para);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass break;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass case 'enter':
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (e.changedNode.test('br')) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass e.changedNode.remove();
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass } else if (e.changedNode.test('p, span')) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var b = e.changedNode.one('br.yui-cursor');
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (b) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass b.remove();
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass break;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass },
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass initializer: function() {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass var host = this.get(HOST);
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass if (host.editorBR) {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass Y.error('Can not plug EditorPara and EditorBR at the same time.');
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass return;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass host.on(NODE_CHANGE, Y.bind(this._onNodeChange, this));
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }, {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass /**
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * editorPara
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @static
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @property NAME
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass */
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass NAME: 'editorPara',
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass /**
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * editorPara
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @static
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass * @property NS
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass */
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass NS: 'editorPara',
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass ATTRS: {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass host: {
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass value: false
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass }
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass });
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass Y.namespace('Plugin');
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass Y.Plugin.EditorPara = EditorParaIE;
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass
99c4d05a4bdb506516f0dca00fc8bf4b86c93bd1Dav Glass}, '@VERSION@' ,{skinnable:false, requires:['editor-para-base']});