1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\r
2 <html xmlns="http://www.w3.org/1999/xhtml">
\r
4 <title>Plugin: list</title>
\r
5 <link rel="stylesheet" type="text/css" href="../../test.css" />
\r
6 <script type="text/javascript" src="../../../ckeditor.js"></script>
\r
7 <script type="text/javascript" src="../../test.js"></script>
\r
8 <script type="text/javascript">
\r
11 * Load the editor and wait for fully interactable.
\r
12 * @param {Object} elementId
\r
13 * @parma {Object} mode
\r
14 * @param {Object} config
\r
15 * @param {Object} callback Continuation with {@param editor}.
\r
16 * @param {Object} context
\r
18 function prepareEditor( elementId, mode, config, callback, context )
\r
20 CKEDITOR.on( 'instanceReady',
\r
23 var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?
\r
24 evt.editor.name == elementId
\r
25 : evt.editor.element.$ ==
\r
26 document.getElementById( elementId );
\r
29 var editor = evt.editor;
\r
30 // Force result data unformatted.
\r
31 editor.dataProcessor.writer._.rules = {};
\r
32 callback.call( context, editor );
\r
36 mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;
\r
39 case CKEDITOR.ELEMENT_MODE_REPLACE :
\r
40 CKEDITOR.replace( elementId, config );
\r
42 case CKEDITOR.ELEMENT_MODE_APPENDTO :
\r
43 CKEDITOR.appendTo( elementId, config );
\r
49 * IE always returning CRLF for line-feed, so remove it when retrieving
\r
50 * pre-formated text from text area.
\r
52 function getTextAreaValue( id )
\r
54 return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
\r
57 CKEDITOR.test.addTestCase( ( function()
\r
60 // Local references.
\r
61 var assert = CKEDITOR.test.assert,
\r
62 doc = CKEDITOR.document,
\r
63 action = YAHOO.util.UserAction,
\r
64 selector = YAHOO.util.Selector;
\r
67 * Set the range with the start/end position specified by the locator, which in form of bookmark2.
\r
68 * @param {Object} range
\r
69 * @param {Array} startPosition range start path including offset
\r
70 * @param {Array|Boolean} endPositoin range end path including offset or is collapsed
\r
72 function setRange( range, startPosition, endPositoin )
\r
81 bm.start = startPosition.slice( 0, startPosition.length - 1 );
\r
82 bm.startOffset = startPosition[ startPosition.length -1];
\r
83 if( endPositoin === true )
\r
85 bm.end = bm.start.slice();
\r
86 bm.endOffset = bm.startOffset;
\r
90 bm.end = endPositoin.slice( 0, endPositoin.length - 1 );
\r
91 bm.endOffset = endPositoin[ endPositoin.length -1 ];
\r
93 range.moveToBookmark( bm );
\r
99 * Test remove numbered list with 'enterMode = BR'.
\r
101 test_ticket_3151 : function()
\r
103 prepareEditor( 'test_ticket_3151_editor', null,
\r
104 { enterMode : CKEDITOR.ENTER_BR },
\r
107 this.resume( function()
\r
111 var doc = editor.document,
\r
112 range = new CKEDITOR.dom.range( doc );
\r
114 setRange( range, [ 1, 0, 0, 0, 0 ], true );
\r
115 var sel = editor.getSelection();
\r
116 sel.selectRanges( [ range ] );
\r
118 // Waiting for 'comand state' effected.
\r
119 this.wait( function(){
\r
121 editor.execCommand( 'numberedlist' );
\r
122 assert.areSame( getTextAreaValue( 'test_ticket_3151_result' ),
\r
124 'Remove list result not correct.' );
\r
133 * Test merge newlist with previous list.
\r
135 test_ticket_3820 : function()
\r
137 prepareEditor( 'test_ticket_3820_editor', null,
\r
138 { enterMode : CKEDITOR.ENTER_BR },
\r
141 this.resume( function()
\r
145 var doc = editor.document,
\r
146 range = new CKEDITOR.dom.range( doc );
\r
147 setRange( range, [ 1, 1, 0 ], true );
\r
148 var sel = editor.getSelection();
\r
149 sel.selectRanges( [ range ] );
\r
151 // Waiting for 'comand state' effected.
\r
152 this.wait( function(){
\r
154 editor.execCommand( 'bulletedlist' );
\r
155 assert.areSame( getTextAreaValue( 'test_ticket_3820_result' ),
\r
157 'Merge list result not correct.' );
\r
166 * Test remove list first list item not merging with previous text node.
\r
168 test_ticket_3836 : function()
\r
170 prepareEditor( 'test_ticket_3836_editor', null,
\r
171 { enterMode : CKEDITOR.ENTER_BR },
\r
174 this.resume( function()
\r
176 this.wait( function ()
\r
180 var doc = editor.document,
\r
181 range = new CKEDITOR.dom.range( doc );
\r
182 setRange( range, [ 1, 1, 0, 0 ], [ 1, 1, 1, 1 ] );
\r
183 var sel = editor.getSelection();
\r
184 sel.selectRanges( [ range ] );
\r
186 // Waiting for 'comand state' effected.
\r
187 this.wait( function(){
\r
189 editor.execCommand( 'bulletedlist' );
\r
190 assert.areSame( getTextAreaValue( 'test_ticket_3836_result' ),
\r
192 'Remove list result not correct.' );
\r
201 name :document.title
\r
208 <textarea id="test_ticket_3151_editor"><ol><li>text</li></ol></textarea>
\r
209 <textarea id="test_ticket_3151_result">text</textarea>
\r
210 <textarea id="test_ticket_3820_editor"><ul><li>bullet line 1</li><li>bullet line 2</li></ul><p>Second line</p></textarea>
\r
211 <textarea id="test_ticket_3820_result"><ul><li>bullet line 1</li><li>bullet line 2</li><li>Second line</li></ul></textarea>
\r
212 <textarea id="test_ticket_3773_editor"><ol><li>line1</li><li>line2</li></ol></textarea>
\r
213 <textarea id="test_ticket_3773_result">line1<br />line2</textarea>
\r
214 <textarea id="test_ticket_3836_editor">line1<ul><li>item1</li><li>item2</li></ul>line2</textarea>
\r
215 <textarea id="test_ticket_3836_result">line1<br />item1<br />item2<br />line2</textarea>
\r