JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
99198a2e58132342f98a6d5468e3c46e861f1342
[ckeditor.git] / _tests / plugins / list / list.html
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
3 <head>\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
9         //<![CDATA[\r
10 /**\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
17  */\r
18 function prepareEditor( elementId, mode, config, callback, context )\r
19 {\r
20         CKEDITOR.on( 'instanceReady',\r
21                 function( evt )\r
22                 {\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
27                         if ( isMe )\r
28                         {\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
33                         }\r
34                 }, this );\r
35 \r
36         mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;\r
37         switch( mode )\r
38         {\r
39                 case CKEDITOR.ELEMENT_MODE_REPLACE :\r
40                         CKEDITOR.replace( elementId, config );\r
41                         break;\r
42                 case CKEDITOR.ELEMENT_MODE_APPENDTO :\r
43                         CKEDITOR.appendTo( elementId, config );\r
44                         break;\r
45         }\r
46 }\r
47 \r
48 /**\r
49  * IE always returning CRLF for line-feed, so remove it when retrieving\r
50  * pre-formated text from text area.\r
51  */\r
52 function getTextAreaValue( id )\r
53 {\r
54         return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );\r
55 }\r
56 \r
57 CKEDITOR.test.addTestCase( ( function()\r
58         {\r
59 \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
65 \r
66                 /**\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
71                  */\r
72                 function setRange( range, startPosition, endPositoin )\r
73                 {\r
74                         var bm = {\r
75                                 end : null,\r
76                                 start : null,\r
77                                 is2: true,\r
78                                 startOffset : 0,\r
79                                 endoffset : 0\r
80                         };\r
81                         bm.start = startPosition.slice( 0, startPosition.length - 1 );\r
82                         bm.startOffset = startPosition[ startPosition.length -1];\r
83                         if( endPositoin === true )\r
84                         {\r
85                                 bm.end = bm.start.slice();\r
86                                 bm.endOffset = bm.startOffset;\r
87                         }\r
88                         else\r
89                         {\r
90                                 bm.end = endPositoin.slice( 0, endPositoin.length - 1 );\r
91                                 bm.endOffset = endPositoin[ endPositoin.length -1 ];\r
92                         }\r
93                         range.moveToBookmark( bm );\r
94                 }\r
95 \r
96                 return  {\r
97 \r
98                         /**\r
99                          *  Test remove numbered list with 'enterMode = BR'.\r
100                          */\r
101                         test_ticket_3151 : function()\r
102                         {\r
103                                 prepareEditor( 'test_ticket_3151_editor', null,\r
104                                         { enterMode : CKEDITOR.ENTER_BR },\r
105                                         function( editor )\r
106                                         {\r
107                                                 this.resume( function()\r
108                                                 {\r
109                                                         editor.focus();\r
110 \r
111                                                         var doc = editor.document,\r
112                                                                 range = new CKEDITOR.dom.range( doc );\r
113 \r
114                                                         setRange( range, [ 1, 0, 0, 0, 0 ], true );\r
115                                                         var sel = editor.getSelection();\r
116                                                         sel.selectRanges( [ range ] );\r
117 \r
118                                                         // Waiting for 'comand state' effected.\r
119                                                         this.wait( function(){\r
120                                                                 // Remove list.\r
121                                                                 editor.execCommand( 'numberedlist' );\r
122                                                                 assert.areSame( getTextAreaValue( 'test_ticket_3151_result' ),\r
123                                                                         editor.getData(),\r
124                                                                         'Remove list result not correct.' );\r
125                                                         }, 1000 );\r
126 \r
127                                                 } );\r
128                                         }, this );\r
129                                         this.wait();\r
130                         },\r
131 \r
132                         /**\r
133                          *  Test merge newlist with previous list.\r
134                          */\r
135                         test_ticket_3820 : function()\r
136                         {\r
137                                 prepareEditor( 'test_ticket_3820_editor', null,\r
138                                         { enterMode : CKEDITOR.ENTER_BR },\r
139                                         function( editor )\r
140                                         {\r
141                                                 this.resume( function()\r
142                                                 {\r
143                                                         editor.focus();\r
144 \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
150 \r
151                                                         // Waiting for 'comand state' effected.\r
152                                                         this.wait( function(){\r
153                                                                 // Remove list.\r
154                                                                 editor.execCommand( 'bulletedlist' );\r
155                                                                 assert.areSame( getTextAreaValue( 'test_ticket_3820_result' ),\r
156                                                                         editor.getData(),\r
157                                                                         'Merge list result not correct.' );\r
158                                                         }, 1000 );\r
159 \r
160                                                 } );\r
161                                         }, this );\r
162                                         this.wait();\r
163                         },\r
164 \r
165                         /**\r
166                          *  Test remove list first list item not merging with previous text node.\r
167                          */\r
168                         test_ticket_3836 : function()\r
169                         {\r
170                                 prepareEditor( 'test_ticket_3836_editor', null,\r
171                                         { enterMode : CKEDITOR.ENTER_BR },\r
172                                         function( editor )\r
173                                         {\r
174                                                 this.resume( function()\r
175                                                 {\r
176                                                         this.wait( function ()\r
177                                                         {\r
178                                                                 editor.focus();\r
179 \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
185 \r
186                                                                 // Waiting for 'comand state' effected.\r
187                                                                 this.wait( function(){\r
188                                                                         // Remove list.\r
189                                                                         editor.execCommand( 'bulletedlist' );\r
190                                                                         assert.areSame( getTextAreaValue( 'test_ticket_3836_result' ),\r
191                                                                                 editor.getData(),\r
192                                                                                 'Remove list result not correct.' );\r
193                                                                 }, 1000 );\r
194                                                         }, 1000 );\r
195 \r
196                                                 } );\r
197                                         }, this );\r
198                                         this.wait();\r
199                         },\r
200 \r
201                         name :document.title\r
202                 };\r
203         } )() );\r
204         //]]>\r
205         </script>\r
206 </head>\r
207 <body>￘\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
216 </body>\r
217 </html>\r