~justizin/zope.html/id_marker_lp_569541

« back to all changes in this revision

Viewing changes to src/zope/html/ckeditor/3.0/ckeditor/_source/tests/plugins/list/list.html

  • Committer: achapman
  • Date: 2009-09-04 12:44:32 UTC
  • Revision ID: svn-v4:62d5b8a3-27da-0310-9561-8e5933582275:zope.html/trunk:103534
Ckeditor 3.0 widget added. Keeping Fckeditor for backward compatability

Show diffs side-by-side

added added

removed removed

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