| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | 
							- /**
 
-  * 段落样式
 
-  * @file
 
-  * @since 1.2.6.1
 
-  */
 
- /**
 
-  * 段落格式
 
-  * @command paragraph
 
-  * @method execCommand
 
-  * @param { String } cmd 命令字符串
 
-  * @param {String}   style               标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'
 
-  * @param {Object}   attrs               标签的属性
 
-  * @example
 
-  * ```javascript
 
-  * editor.execCommand( 'Paragraph','h1','{
 
-  *     class:'test'
 
-  * }' );
 
-  * ```
 
-  */
 
- /**
 
-  * 返回选区内节点标签名
 
-  * @command paragraph
 
-  * @method queryCommandValue
 
-  * @param { String } cmd 命令字符串
 
-  * @return { String } 节点标签名
 
-  * @example
 
-  * ```javascript
 
-  * editor.queryCommandValue( 'Paragraph' );
 
-  * ```
 
-  */
 
- UE.plugins['paragraph'] = function() {
 
-     var me = this,
 
-         block = domUtils.isBlockElm,
 
-         notExchange = ['TD','LI','PRE'],
 
-         doParagraph = function(range,style,attrs,sourceCmdName){
 
-             var bookmark = range.createBookmark(),
 
-                 filterFn = function( node ) {
 
-                     return   node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' &&  !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace( node );
 
-                 },
 
-                 para;
 
-             range.enlarge( true );
 
-             var bookmark2 = range.createBookmark(),
 
-                 current = domUtils.getNextDomNode( bookmark2.start, false, filterFn ),
 
-                 tmpRange = range.cloneRange(),
 
-                 tmpNode;
 
-             while ( current && !(domUtils.getPosition( current, bookmark2.end ) & domUtils.POSITION_FOLLOWING) ) {
 
-                 if ( current.nodeType == 3 || !block( current ) ) {
 
-                     tmpRange.setStartBefore( current );
 
-                     while ( current && current !== bookmark2.end && !block( current ) ) {
 
-                         tmpNode = current;
 
-                         current = domUtils.getNextDomNode( current, false, null, function( node ) {
 
-                             return !block( node );
 
-                         } );
 
-                     }
 
-                     tmpRange.setEndAfter( tmpNode );
 
-                     
 
-                     para = range.document.createElement( style );
 
-                     if(attrs){
 
-                         domUtils.setAttributes(para,attrs);
 
-                         if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){
 
-                             para.style.cssText = attrs.style;
 
-                         }
 
-                     }
 
-                     para.appendChild( tmpRange.extractContents() );
 
-                     //需要内容占位
 
-                     if(domUtils.isEmptyNode(para)){
 
-                         domUtils.fillChar(range.document,para);
 
-                         
 
-                     }
 
-                     tmpRange.insertNode( para );
 
-                     var parent = para.parentNode;
 
-                     //如果para上一级是一个block元素且不是body,td就删除它
 
-                     if ( block( parent ) && !domUtils.isBody( para.parentNode ) && utils.indexOf(notExchange,parent.tagName)==-1) {
 
-                         //存储dir,style
 
-                         if(!(sourceCmdName && sourceCmdName == 'customstyle')){
 
-                             parent.getAttribute('dir') && para.setAttribute('dir',parent.getAttribute('dir'));
 
-                             //trace:1070
 
-                             parent.style.cssText && (para.style.cssText = parent.style.cssText + ';' + para.style.cssText);
 
-                             //trace:1030
 
-                             parent.style.textAlign && !para.style.textAlign && (para.style.textAlign = parent.style.textAlign);
 
-                             parent.style.textIndent && !para.style.textIndent && (para.style.textIndent = parent.style.textIndent);
 
-                             parent.style.padding && !para.style.padding && (para.style.padding = parent.style.padding);
 
-                         }
 
-                         //trace:1706 选择的就是h1-6要删除
 
-                         if( attrs && /h\d/i.test(parent.tagName) && !/h\d/i.test(para.tagName) ){
 
-                             domUtils.setAttributes(parent,attrs);
 
-                             if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){
 
-                                 parent.style.cssText = attrs.style;
 
-                             }
 
-                             domUtils.remove(para.parentNode,true);
 
-                             para = parent;
 
-                         }else{
 
-                             domUtils.remove( para.parentNode, true );
 
-                         }
 
-                     }
 
-                     if(  utils.indexOf(notExchange,parent.tagName)!=-1){
 
-                         current = parent;
 
-                     }else{
 
-                        current = para;
 
-                     }
 
-                     current = domUtils.getNextDomNode( current, false, filterFn );
 
-                 } else {
 
-                     current = domUtils.getNextDomNode( current, true, filterFn );
 
-                 }
 
-             }
 
-             return range.moveToBookmark( bookmark2 ).moveToBookmark( bookmark );
 
-         };
 
-     me.setOpt('paragraph',{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''});
 
-     me.commands['paragraph'] = {
 
-         execCommand : function( cmdName, style,attrs,sourceCmdName ) {
 
-             var range = this.selection.getRange();
 
-              //闭合时单独处理
 
-             if(range.collapsed){
 
-                 var txt = this.document.createTextNode('p');
 
-                 range.insertNode(txt);
 
-                 //去掉冗余的fillchar
 
-                 if(browser.ie){
 
-                     var node = txt.previousSibling;
 
-                     if(node && domUtils.isWhitespace(node)){
 
-                         domUtils.remove(node);
 
-                     }
 
-                     node = txt.nextSibling;
 
-                     if(node && domUtils.isWhitespace(node)){
 
-                         domUtils.remove(node);
 
-                     }
 
-                 }
 
-             }
 
-             range = doParagraph(range,style,attrs,sourceCmdName);
 
-             if(txt){
 
-                 range.setStartBefore(txt).collapse(true);
 
-                 pN = txt.parentNode;
 
-                 domUtils.remove(txt);
 
-                 if(domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)){
 
-                     domUtils.fillNode(this.document,pN);
 
-                 }
 
-             }
 
-             if(browser.gecko && range.collapsed && range.startContainer.nodeType == 1){
 
-                 var child = range.startContainer.childNodes[range.startOffset];
 
-                 if(child && child.nodeType == 1 && child.tagName.toLowerCase() == style){
 
-                     range.setStart(child,0).collapse(true);
 
-                 }
 
-             }
 
-             //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了
 
-             range.select();
 
-             return true;
 
-         },
 
-         queryCommandValue : function() {
 
-             var node = domUtils.filterNodeList(this.selection.getStartElementPath(),'p h1 h2 h3 h4 h5 h6');
 
-             return node ? node.tagName.toLowerCase() : '';
 
-         }
 
-     };
 
- };
 
 
  |