--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+ <title>Plugin: link</title>\r
+ <link rel="stylesheet" type="text/css" href="../../test.css" />\r
+ <script type="text/javascript" src="../../../ckeditor.js"></script>\r
+ <script type="text/javascript" src="../../test.js"></script>\r
+ <script type="text/javascript">\r
+ //<![CDATA[\r
+/**\r
+ * Load the editor and wait for fully interactable.\r
+ * @param {Object} elementId\r
+ * @parma {Object} mode\r
+ * @param {Object} config\r
+ * @param {Object} callback Continuation with {@param editor}.\r
+ * @param {Object} context\r
+ */\r
+function prepareEditor( elementId, mode, config, callback, context )\r
+{\r
+ CKEDITOR.on( 'instanceReady',\r
+ function( evt )\r
+ {\r
+ var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?\r
+ evt.editor.name == elementId\r
+ : evt.editor.element.$ ==\r
+ document.getElementById( elementId );\r
+ if ( isMe )\r
+ {\r
+ var editor = evt.editor;\r
+ // Force result data unformatted.\r
+ editor.dataProcessor.writer._.rules = {};\r
+ // Force remove tail br.\r
+ editor.dataProcessor.htmlFilter.addRules( {\r
+ elements : {\r
+ 'br' : function( br ){\r
+ var parent = br.parent,\r
+ length = parent.children.length,\r
+ lastChild = parent.children[ length - 1 ];\r
+ if( lastChild == br )\r
+ return false;\r
+ }\r
+ }\r
+ } );\r
+ callback.call( context, editor );\r
+ }\r
+ }, this );\r
+\r
+ mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;\r
+ switch( mode )\r
+ {\r
+ case CKEDITOR.ELEMENT_MODE_REPLACE :\r
+ CKEDITOR.replace( elementId, config );\r
+ break;\r
+ case CKEDITOR.ELEMENT_MODE_APPENDTO :\r
+ CKEDITOR.appendTo( elementId, config );\r
+ break;\r
+ }\r
+}\r
+\r
+/**\r
+ * IE always returning CRLF for line-feed, so remove it when retrieving\r
+ * pre-formated text from text area.\r
+ */\r
+function getTextAreaValue( id )\r
+{\r
+ return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );\r
+}\r
+\r
+CKEDITOR.test.addTestCase( ( function()\r
+ {\r
+\r
+ // Local references.\r
+ var assert = CKEDITOR.test.assert,\r
+ doc = CKEDITOR.document,\r
+ action = YAHOO.util.UserAction,\r
+ selector = YAHOO.util.Selector;\r
+\r
+ return {\r
+\r
+ /**\r
+ * Test remove numbered list with 'enterMode = BR'.\r
+ */\r
+ test_create_link : function()\r
+ {\r
+ prepareEditor( 'test_create_link_editor', null,\r
+ null,\r
+ function( editor )\r
+ {\r
+ this.resume( function()\r
+ {\r
+ editor.focus();\r
+ editor.execCommand( 'link' );\r
+ // waiting for dialog to open.\r
+ this.wait( function()\r
+ {\r
+ var dialog = editor._.storedDialogs[ 'link' ];\r
+ var urlField = dialog.getContentElement( 'info', 'url' );\r
+ urlField.setValue( 'svn.fckeditor.net' );\r
+\r
+ dialog.fire( 'ok' );\r
+ dialog.hide();\r
+\r
+ var result = editor.getData();\r
+ assert.areEqual(\r
+ '<p><a href="http://svn.fckeditor.net">http://svn.fckeditor.net</a></p>',\r
+ result, 'Created link element doesn\'t match.' );\r
+\r
+ }, 1000 );\r
+ } );\r
+ }, this );\r
+ this.wait();\r
+ },\r
+\r
+ name :document.title\r
+ };\r
+ } )() );\r
+ //]]>\r
+ </script>\r
+</head>\r
+<body>\r
+<textarea id="test_create_link_editor"></textarea>\r
+</body>\r
+</html>\r