81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | /******************************************************************************* | |||
|  | * 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> | |||
|  | 
 | |||
|  | -------------------------- | |||
|  | */ |