Changeset 12475


Ignore:
Timestamp:
May 30, 2011, 3:12:42 PM (10 years ago)
Author:
jordan
Message:

(trunk libT) #4004 "allow drag-and-drop links into the web client" -- implemented via a patch from Mook

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/javascript/transmission.js

    r12432 r12475  
    6565                $('#prefs_tab_network_tab').click(function(e){ changeTab(this, 'prefs_tab_network');});
    6666        $('#torrent_upload_form').submit(function(){ $('#upload_confirm_button').click(); return false; });
     67                $('#torrent_container').bind('dragover', function(e){ return tr.dragenter(e); });
     68                $('#torrent_container').bind('dragenter', function(e){ return tr.dragenter(e); });
     69                $('#torrent_container').bind('drop', function(e){ return tr.drop(e); });
     70                // tell jQuery to copy the dataTransfer property from events over if it exists
     71                jQuery.event.props.push("dataTransfer");
     72
    6773                $('#torrent_upload_form').submit(function(){ $('#upload_confirm_button').click(); return false; });
    6874
     
    625631                }
    626632                tr.updateButtonStates();
     633        },
     634
     635        dragenter: function( event ) {
     636                if( event.dataTransfer && event.dataTransfer.types ) {
     637                        var types = ["text/uri-list", "text/plain"];
     638                        for( var i = 0; i < types.length; ++i ) {
     639                                if( event.dataTransfer.types.contains(types[i]) ) {
     640                                        // it would be better to actually look at the links here;
     641                                        // sadly, (at least with Firefox,) trying would throw.
     642                                        event.stopPropagation();
     643                                        event.preventDefault();
     644                                        event.dropEffect = "copy";
     645                                        return false;
     646                                }
     647                        }
     648                }
     649                else if (event.dataTransfer) {
     650                        event.dataTransfer.dropEffect = "none";
     651                }
     652                return true;
     653        },
     654
     655        drop: function( event ) {
     656                if( !event.dataTransfer || !event.dataTransfer.types ) {
     657                        return true;
     658                }
     659                event.preventDefault();
     660                var uris = null;
     661                var types = ["text/uri-list", "text/plain"];
     662                for( var i = 0; i < types.length; ++i ) {
     663                        if( event.dataTransfer.types.contains(types[i]) ) {
     664                                uris = event.dataTransfer.getData( types[i] ).split("\n");
     665                                break;
     666                        }
     667                }
     668                var paused = $('#prefs_form #auto_start')[0].checked;
     669                for( i = 0; i < uris.length; ++i ) {
     670                        var uri = uris[i];
     671                        if( /^#/.test(uri) ) {
     672                                // lines which start with "#" are comments
     673                                continue;
     674                        }
     675                        if( /^[a-z-]+:/i.test(uri) ) {
     676                                // close enough to a url
     677                                this.remote.addTorrentByUrl( uri, paused );
     678                        }
     679                }
     680                return false;
    627681        },
    628682
Note: See TracChangeset for help on using the changeset viewer.