Ticket #5692: 5692.patch

File 5692.patch, 3.4 KB (added by garry.yao, 5 years ago)
  • _source/plugins/dropfile/plugin.js

     
     1/*
     2Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
     3For licensing, see LICENSE.html or http://ckeditor.com/license
     4*/
     5
     6CKEDITOR.plugins.add( 'dropfile',
     7{
     8        init : function( editor )
     9        {
     10                // Only works for browers that support dropping desktop file into RTE.
     11                if ( !( CKEDITOR.env.gecko || CKEDITOR.env.webkit ) )
     12                        return;
     13
     14                var localImageFileRegexp = /^file:\/\/.*?\.(jpg|jpeg|png|gif)$/;
     15                function handleDrop( evt )
     16                {
     17                        var target = evt.data.getTarget(),
     18                                        candidateUrl,
     19                                        imageFileUrl;
     20
     21                        candidateUrl = target.type == CKEDITOR.NODE_ELEMENT ?
     22                                ( target.is( 'img' ) ? target.getAttribute( 'src' )
     23                                        : target.is( 'a' )? target.getAttribute( 'href' ) : null ) : null;
     24
     25                        if ( candidateUrl && candidateUrl.match( localImageFileRegexp ) )
     26                                imageFileUrl = candidateUrl;
     27
     28                        imageFileUrl && setTimeout( function ()
     29                                {
     30                                        editor.fire( 'dropDesktopImage', { url : imageFileUrl, node : target } );
     31                                }, 0 );
     32                }
     33
     34                editor.on( 'contentDom', function ( evt )
     35                {
     36                        var isDragging;
     37                        function removeDropListener()
     38                        {
     39                                if ( isDragging )
     40                                {
     41                                        isDragging = 0;
     42                                        doc.removeListener( 'DOMNodeInserted', handleDrop );
     43                                }
     44                        }
     45               
     46                        function addDropListener()
     47                        {
     48                                if ( !isDragging )
     49                                {
     50                                        isDragging = 1;
     51                                        doc.on( 'DOMNodeInserted', handleDrop );
     52                                }
     53                        }
     54
     55                        var doc =  editor.document,
     56                                        outerDoc = CKEDITOR.document;
     57                        doc.on( 'dragenter', addDropListener );
     58                        outerDoc.on( 'mousemove', removeDropListener );
     59                        outerDoc.on( 'dragenter', removeDropListener );
     60                });
     61        }
     62});
  • _source/plugins/image/plugin.js

     
    5151                                        return { image : CKEDITOR.TRISTATE_OFF };
    5252                                });
    5353                }
     54
     55                // Open dialog with the dropped image file path as url from desktop.
     56                editor.on( 'dropDesktopImage', function( evt )
     57                {
     58                        var url = evt.data.url,
     59                                        node = evt.data.node;
     60
     61                        // Remove the default node created by browser on drop.
     62                        var range = new CKEDITOR.dom.range( editor.document );
     63                        range.setStartBefore( node );
     64                        range.setEndAfter( node );
     65                        range.extractContents();
     66                        range.select();
     67
     68                        editor.openDialog( 'image', function()
     69                        {
     70                                var dialog = this;
     71                                // Defer until dialog is shown.
     72                                setTimeout( function ()
     73                                {
     74                                        dialog.selectPage( 'Upload' );
     75                                        window.prompt( editor.lang.image.copyUploadUrlPrompt, url );
     76                                }, 1000 );
     77                        });
     78                })
     79
    5480        }
    5581} );
    5682
  • _source/lang/en.js

     
    425425                validateHeight  : 'Height must be a whole number.',
    426426                validateBorder  : 'Border must be a whole number.',
    427427                validateHSpace  : 'HSpace must be a whole number.',
    428                 validateVSpace  : 'VSpace must be a whole number.'
     428                validateVSpace  : 'VSpace must be a whole number.',
     429                copyUploadUrlPrompt: 'You may want to copy the URL of image to upload.'
    429430        },
    430431
    431432        // Flash Dialog
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy