includes/clientside/tinymce/plugins/safari/editor_plugin_src.js
changeset 395 fa4c5ecb7c9a
parent 335 67bd3121a12e
child 459 31c23016ab62
equal deleted inserted replaced
394:fbfdcea634a7 395:fa4c5ecb7c9a
     1 /**
     1 /**
     2  * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
     2  * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
     3  *
     3  *
     4  * @author Moxiecode
     4  * @author Moxiecode
     5  * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
     5  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
     6  */
     6  */
     7 
     7 
     8 (function() {
     8 (function() {
     9 	var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;
     9 	var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;
    10 
    10 
    41 				ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');
    41 				ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');
    42 				ed.selection.select(ed.dom.get('_mce_tmp'));
    42 				ed.selection.select(ed.dom.get('_mce_tmp'));
    43 				ed.getDoc().execCommand("Delete", false, ' ');
    43 				ed.getDoc().execCommand("Delete", false, ' ');
    44 			});
    44 			});
    45 
    45 
    46 			// Workaround for List ID bug, http://bugs.webkit.org/show_bug.cgi?id=16004
    46 			// Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
    47 /*			function addList(c) {
    47 			ed.onKeyPress.add(function(ed, e) {
    48 				var cb = Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {
    48 				if (e.keyCode == 13 && e.shiftKey) {
    49 					e = e.target;
    49 					t._insertBR(ed);
    50 
    50 					Event.cancel(e);
    51 					if (e.nodeName == 'OL' || e.nodeName == 'UL')
    51 				}
    52 						e.id = '';
    52 			});
    53 				});
       
    54 
       
    55 				ed.getDoc().execCommand(c, false, false);
       
    56 				Event.remove(ed.getDoc(), 'DOMNodeInserted', cb);
       
    57 			};
       
    58 
       
    59 			ed.addCommand('InsertUnorderedList', function() {addList('InsertUnorderedList');});
       
    60 			ed.addCommand('InsertOrderedList', function() {addList('InsertOrderedList');});*/
       
    61 
    53 
    62 			// Safari returns incorrect values
    54 			// Safari returns incorrect values
    63 			ed.addQueryValueHandler('FontSize', function(u, v) {
    55 			ed.addQueryValueHandler('FontSize', function(u, v) {
    64 				var e, v;
    56 				var e, v;
    65 
    57 
   390 					each(b.childNodes, function(n) {
   382 					each(b.childNodes, function(n) {
   391 						r.insertNode(n.cloneNode(true));
   383 						r.insertNode(n.cloneNode(true));
   392 					});
   384 					});
   393 				}
   385 				}
   394 			};
   386 			};
       
   387 		},
       
   388 
       
   389 		_insertBR : function(ed) {
       
   390 			var dom = ed.dom, s = ed.selection, r = s.getRng(), br;
       
   391 
       
   392 			// Insert BR element
       
   393 			r.insertNode(br = dom.create('br'));
       
   394 
       
   395 			// Place caret after BR
       
   396 			r.setStartAfter(br);
       
   397 			r.setEndAfter(br);
       
   398 			s.setRng(r);
       
   399 
       
   400 			// Could not place caret after BR then insert an nbsp entity and move the caret
       
   401 			if (s.getSel().focusNode == br.previousSibling) {
       
   402 				s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
       
   403 				s.collapse(1);
       
   404 			}
       
   405 
       
   406 			// Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
       
   407 			ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y);
   395 		}
   408 		}
   396 	});
   409 	});
   397 
   410 
   398 	// Register plugin
   411 	// Register plugin
   399 	tinymce.PluginManager.add('safari', tinymce.plugins.Safari);
   412 	tinymce.PluginManager.add('safari', tinymce.plugins.Safari);