/******************************************************************************* 
 | 
* KindEditor - WYSIWYG HTML Editor for Internet 
 | 
* Copyright (C) 2006-2011 kindsoft.net 
 | 
* 
 | 
* @author Roddy <luolonghao@gmail.com> 
 | 
* @site http://www.kindsoft.net/ 
 | 
* @licence http://www.kindsoft.net/license.php 
 | 
*******************************************************************************/ 
 | 
  
 | 
KindEditor.plugin('quickformat', function(K) { 
 | 
    var self = this, name = 'quickformat', 
 | 
        blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); 
 | 
    function getFirstChild(knode) { 
 | 
        var child = knode.first(); 
 | 
        while (child && child.first()) { 
 | 
            child = child.first(); 
 | 
        } 
 | 
        return child; 
 | 
    } 
 | 
    self.clickToolbar(name, function() { 
 | 
        self.focus(); 
 | 
        var doc = self.edit.doc, 
 | 
            range = self.cmd.range, 
 | 
            child = K(doc.body).first(), next, 
 | 
            nodeList = [], subList = [], 
 | 
            bookmark = range.createBookmark(true); 
 | 
        while(child) { 
 | 
            next = child.next(); 
 | 
            var firstChild = getFirstChild(child); 
 | 
            if (!firstChild || firstChild.name != 'img') { 
 | 
                if (blockMap[child.name]) { 
 | 
                    child.html(child.html().replace(/^(\s| | )+/ig, '')); 
 | 
                    child.css('text-indent', '2em'); 
 | 
                } else { 
 | 
                    subList.push(child); 
 | 
                } 
 | 
                if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { 
 | 
                    if (subList.length > 0) { 
 | 
                        nodeList.push(subList); 
 | 
                    } 
 | 
                    subList = []; 
 | 
                } 
 | 
            } 
 | 
            child = next; 
 | 
        } 
 | 
        K.each(nodeList, function(i, subList) { 
 | 
            var wrapper = K('<p style="text-indent:2em;"></p>', doc); 
 | 
            subList[0].before(wrapper); 
 | 
            K.each(subList, function(i, knode) { 
 | 
                wrapper.append(knode); 
 | 
            }); 
 | 
        }); 
 | 
        range.moveToBookmark(bookmark); 
 | 
        self.addBookmark(); 
 | 
    }); 
 | 
}); 
 | 
  
 | 
/** 
 | 
-------------------------- 
 | 
abcd<br /> 
 | 
1234<br /> 
 | 
  
 | 
to 
 | 
  
 | 
<p style="text-indent:2em;"> 
 | 
    abcd<br /> 
 | 
    1234<br /> 
 | 
</p> 
 | 
  
 | 
-------------------------- 
 | 
  
 | 
  abcd<img>1233 
 | 
<p>1234</p> 
 | 
  
 | 
to 
 | 
  
 | 
<p style="text-indent:2em;">abcd<img>1233</p> 
 | 
<p style="text-indent:2em;">1234</p> 
 | 
  
 | 
-------------------------- 
 | 
*/ 
 |