1.  
2.  
3.  
4.  
5.  
6.  
7.  
8.  
9.  
10.  
11.  
12.  
13.  
14.  
15.  
16.  
17.  
18.  
19.  
20.  
21.  
22.  
23.  
24.  
25.  
26.  
27.  
28.  
29.  
30.  
31.  
32.  
33.  
34.  
35.  
36.  
37.  
38.  
39.  
40.  
41.  
42.  
43.  
44.  
45.  
46.  
47.  
48.  
49.  
50.  
51.  
52.  
53.  
54.  
55.  
56.  
57.  
58.  
59.  
60.  
61.  
62.  
63.  
64.  
65.  
66.  
67.  
68.  
69.  
70.  
71.  
72.  
73.  
74.  
75.  
76.  
77.  
78.  
79.  
80.  
81.  
82.  
83.  
84.  
85.  
86.  
87.  
88.  
89.  
90.  
91.  
92.  
93.  
94.  
95.  
96.  
97.  
98.  
99.  
100.  
101.  
102.  
103.  
104.  
105.  
106.  
107.  
108.  
109.  
110.  
111.  
112.  
113.  
114.  
  | 1. / 2. / ... 
      /*  
    Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.  
    For licensing, see LICENSE.html or http://ckeditor.com/license  
    */  
      
    /**  
     * @file Plugin for creating Drupal teasers(fake object).   
     */  
    CKEDITOR.plugins.add( 'cspb',  
    {  
            requires  : [ 'fakeobjects', 'htmldataprocessor' ],  
            init : function( editor )  
            {  
                    // Add the style that renders our fake objects.  
                    editor.addCss(  
                            'img.cke_pagebreak, img.cke_drupal_pagebreak,img.cke_drupal_break' +  
                            '{' +  
                                    'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/pagebreak.gif' ) + ');' +  
                                    'background-position: center center;' +  
                                    'background-repeat: repeatx;' +  
                                    'display: inline;' +  
                                    'width: 100%;' +  
                                    'height: 5px;' +  
                                    'vertical-align: middle;' +  
                                    'border: #999999 1px dotted;' +  
                            '}' );  
      
                    editor.ui.addButton( 'cspb',  
                            {  
                                    label : 'CS Seitenwechsel',  
                                    command : 'cspb', 
                                    icon : this.path + 'images/pagebreak.gif' 
                            });  
      
      
                    function insertComment( editor, text )  
                    {  
                            var ranges = editor.getSelection().getRanges(),  
                                    range = ranges[ 0 ],  
                                    bookmark;  
                            range.splitBlock( 'p' );  
                            bookmark = range.createBookmark();  
                            var fakeComment = CKEDITOR.dom.element.createFromHtml( editor.dataProcessor.toHtml( '<!--' + text + '-->' ) );  
                            range.insertNode( fakeComment );  
                            range.moveToElementEditStart( fakeComment.getNext() );  
                            range.select();  
                            return fakeComment;  
                    }  
      
                    editor.addCommand( 'cspb',  
                    {  
                            exec : function( editor )  
                            {  
                                    insertComment( editor, '[pagebreak]' );  
                            }  
                    } );  
      
            },  
      
            afterInit : function( editor )  
            {  
                var dataProcessor = editor.dataProcessor,  
                dataFilter = dataProcessor.dataFilter,  
                htmlFilter1 = dataProcessor.htmlFilter,  
                // Borrow the comment output filters to restore them.  
                commentFilters = htmlFilter1._.comment,  
                filter = commentFilters && ( commentFilters.filter || commentFilters[ 0 ] );  
                 
                if ( dataProcessor && dataFilter )  
                    // DataFilter for creating fake objects from HTML comment.  
                    dataFilter.addRules(  
                            { 
                                    comment : function( name, value )  
                                    { 
                                            var cdata = value;  
                                            // CData instance is received.  
                                            if ( value.value == '[pagebreak]' || value.value == '[pagebreak]<!-- '  )  
                                            {  
                                                    var fakeElement;  
                                                    // Is it actually a comment and match the desired pattern?  
                                                    var displayName = '[pagebreak]';  
                                                    var fakeWrapper = new CKEDITOR.htmlParser.element( '!--' + displayName + '<!-- --', {} );  
                                                    fakeElement = editor.createFakeParserElement(  
                                                                    fakeWrapper,  
                                                                    'cke_pagebreak',  
                                                                    displayName,  
                                                                    false );  
                                                    fakeElement.attributes.contenteditable = "false"; 
                                                    fakeElement.attributes[ 'title' ] = displayName; 
                                                    if ( fakeElement )  
                                                    { 
                                                            delete value.name; 
                                                            return fakeElement;  
                                                    }  
                                            } 
                                            return value.value;  
                                    }  
                            } );  
      
                    // HtmlFilter rules for outputting fake comment.  
                    function fakeCommentFilter( element )  
                    {  
                            delete element.name;  
                    }  
      
                    htmlFilter1.addRules(  
                    {  
                            elements :  
                            {  
                                    'pagebreak': fakeCommentFilter  
                            }  
                    } );  
            }  
    } );   |