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