Ticket #4993: 0001-Added-change-download-location-functionality-to-web-.patch

File 0001-Added-change-download-location-functionality-to-web-.patch, 7.6 KB (added by joehillen, 7 years ago)

change download location

  • web/index.html

    From 152cf64bb91bc70ff6c4df13137fdcee8f4c746d Mon Sep 17 00:00:00 2001
    From: Joe Hillenbrand <joehillen@gmail.com>
    Date: Mon, 27 Feb 2012 02:26:29 -0800
    Subject: [PATCH] Added change download location functionality to web
     interface.
    
    ---
     web/index.html                     |   18 ++++++++++++++
     web/javascript/dialog.js           |    1 +
     web/javascript/remote.js           |    7 ++++++
     web/javascript/torrent.js          |    2 +-
     web/javascript/transmission.js     |   48 +++++++++++++++++++++++++++++++++---
     web/style/transmission/common.css  |    4 +++
     web/style/transmission/common.scss |    6 +++++
     7 files changed, 82 insertions(+), 4 deletions(-)
    
    diff --git a/web/index.html b/web/index.html
    index 1ea7cf5..0ade41a 100755
    a b  
    304304                        </div>
    305305                </div>
    306306
     307                <div class="dialog_container" id="move_container" style="display:none;">
     308                        <div class="dialog_top_bar"></div>
     309                        <div class="dialog_window">
     310                                <div class="dialog_logo" id="move_dialog_logo"></div>
     311                                <h2 class="dialog_heading">Set Location</h2>
     312                                <form action="#" method="post" id="torrent_move_form"
     313                                        enctype="multipart/form-data" target="torrent_move_frame">
     314                                        <div class="dialog_message">
     315                                                <label for="torrent_path">Location:</label>
     316                                                <input type="text" id="torrent_path"/>
     317                                        </div>
     318                                        <a href="#move" id="move_confirm_button">Apply</a>
     319                                        <a href="#cancel" id="move_cancel_button">Cancel</a>
     320                                </form>
     321                        </div>
     322                </div>
     323
    307324                <div class="torrent_footer">
    308325                        <ul id="settings_menu" title="Settings Menu">
    309326                                <li id="button">&nbsp;
     
    394411                                <li id="context_removedata">Trash Data & Remove From List...</li>
    395412                                <li class="separator"></li>
    396413                                <li id="context_verify">Verify Local Data</li>
     414                                <li id="context_move">Set Location...</li>
    397415                                <li class="separator"></li>
    398416                                <li id="context_reannounce">Ask tracker for more peers</li>
    399417                                <li class="separator"></li>
  • web/javascript/dialog.js

    diff --git a/web/javascript/dialog.js b/web/javascript/dialog.js
    index f937104..bdff4c3 100644
    a b Dialog.prototype = { 
    103103                setTextContent(this._cancel_button[0], cancel_button_label);
    104104                // Just in case
    105105                $('#upload_container').hide();
     106                $('#move_container').hide();
    106107                $('body').addClass('dialog_showing');
    107108                transmission.updateButtonStates();
    108109                if (isMobileDevice)
  • web/javascript/remote.js

    diff --git a/web/javascript/remote.js b/web/javascript/remote.js
    index ddefb22..dcd0668 100644
    a b TransmissionRemote.prototype = 
    157157        stopTorrents: function(torrent_ids, callback, context) {
    158158                this.sendTorrentActionRequests('torrent-stop', torrent_ids, callback, context);
    159159        },
     160
     161        moveTorrents: function(torrent_ids, new_location, callback, context) {
     162                var remote = this;
     163                this.sendTorrentSetRequests( 'torrent-set-location', torrent_ids,
     164                        {"move": true, "location": new_location}, callback, context);
     165        },
     166
    160167        removeTorrents: function(torrent_ids, callback, context) {
    161168                this.sendTorrentActionRequests('torrent-remove', torrent_ids, callback, context);
    162169        },
  • web/javascript/torrent.js

    diff --git a/web/javascript/torrent.js b/web/javascript/torrent.js
    index 49ba20c..757dc98 100644
    a b Torrent.Fields.Stats = [ 
    7676        'sizeWhenDone',
    7777        'status',
    7878        'trackers',
     79        'downloadDir',
    7980        'uploadedEver',
    8081        'uploadRatio'
    8182];
    Torrent.Fields.StatsExtra = [ 
    9798        'activityDate',
    9899        'corruptEver',
    99100        'desiredAvailable',
    100         'downloadDir',
    101101        'downloadedEver',
    102102        'fileStats',
    103103        'haveUnchecked',
  • web/javascript/transmission.js

    diff --git a/web/javascript/transmission.js b/web/javascript/transmission.js
    index f5b36c9..5586638 100644
    a b Transmission.prototype = 
    5353
    5454                $('#upload_confirm_button').click($.proxy(this.confirmUploadClicked,this));
    5555                $('#upload_cancel_button').click($.proxy(this.hideUploadDialog,this));
     56
     57                $('#move_confirm_button').click($.proxy(this.confirmMoveClicked,this));
     58                $('#move_cancel_button').click($.proxy(this.hideMoveDialog,this));
     59
    5660                $('#turtle-button').click($.proxy(this.toggleTurtleClicked,this));
    5761                $('#compact-button').click($.proxy(this.toggleCompactClicked,this));
    5862
    Transmission.prototype = 
    176180                        context_pause_selected:       function() { tr.stopSelectedTorrents(); },
    177181                        context_resume_selected:      function() { tr.startSelectedTorrents(false); },
    178182                        context_resume_now_selected:  function() { tr.startSelectedTorrents(true); },
     183                        context_move:                 function() { tr.moveSelectedTorrents(false); },
    179184                        context_remove:               function() { tr.removeSelectedTorrents(); },
    180185                        context_removedata:           function() { tr.removeSelectedTorrentsAndData(); },
    181186                        context_verify:               function() { tr.verifySelectedTorrents(); },
    Transmission.prototype = 
    500505        drop: function(ev)
    501506        {
    502507                var i, uri, uris=null,
    503                     types = ["text/uri-list", "text/plain"];
     508                    types = ["text/uri-list", "text/plain"],
    504509                    paused = this.shouldAddedTorrentsStart();
    505510
    506511                if (!ev.dataTransfer || !ev.dataTransfer.types)
    Transmission.prototype = 
    532537                this.hideUploadDialog();
    533538        },
    534539
     540        hideMoveDialog: function() {
     541                $('#move_container').hide();
     542                this.updateButtonStates();
     543        },
     544
     545        confirmMoveClicked: function() {
     546                this.moveSelectedTorrents(true);
     547                this.hideUploadDialog();
     548        },
     549
    535550        removeClicked: function(ev) {
    536551                if (this.isButtonEnabled(ev)) {
    537552                        this.removeSelectedTorrents();
    Transmission.prototype = 
    887902                }
    888903        },
    889904
     905        promptSetLocation: function(confirmed, torrents) {
     906                if (! confirmed) {
     907                        var path;
     908                        if (torrents.length === 1) {
     909                                path = torrents[0].getDownloadDir();
     910                        } else {
     911                                path = $("#download-dir").val();
     912                        }
     913                        $('input#torrent_path').attr('value', path);
     914                        $('#move_container').show();
     915                        $('#torrent_path').focus();
     916                } else {
     917                        var ids = this.getTorrentIds(torrents);
     918                        this.remote.moveTorrents(
     919                                ids,
     920                                $("input#torrent_path").val(),
     921                                this.refreshTorrents,
     922                                this);
     923                        $('#move_container').hide();
     924                }
     925        },
     926
     927        moveSelectedTorrents: function(confirmed) {
     928                var torrents = this.getSelectedTorrents();
     929                if (torrents.length)
     930                        this.promptSetLocation(confirmed, torrents);
     931        },
     932
    890933        removeSelectedTorrents: function() {
    891934                var torrents = this.getSelectedTorrents();
    892935                if (torrents.length)
    Transmission.prototype = 
    899942                        this.promptToRemoveTorrentsAndData(torrents);
    900943        },
    901944
    902         promptToRemoveTorrents:function(torrents)
    903         {
     945        promptToRemoveTorrents: function(torrents) {
    904946                if (torrents.length === 1)
    905947                {
    906948                        var torrent = torrents[0],
  • web/style/transmission/common.css

    diff --git a/web/style/transmission/common.css b/web/style/transmission/common.css
    index 88b74d2..2ee9587 100644
    a b div.dialog_container div.dialog_window form { 
    10831083  margin: 0;
    10841084  padding: 0px; }
    10851085
     1086div#move_container input#torrent_path {
     1087  width: 286px;
     1088  padding: 2px; }
     1089
    10861090iframe#torrent_upload_frame {
    10871091  display: block;
    10881092  /* Don't change this : safari forms won't target hidden frames (they open a new window) */
  • web/style/transmission/common.scss

    diff --git a/web/style/transmission/common.scss b/web/style/transmission/common.scss
    index 581b8da..7aaacbc 100644
    a b div.dialog_container div.dialog_window form { 
    933933        padding: 0px;
    934934}
    935935
     936div#move_container input#torrent_path {
     937        width: 286px;
     938        padding: 2px;
     939}
     940
     941
    936942iframe#torrent_upload_frame {
    937943        display: block; /* Don't change this : safari forms won't target hidden frames (they open a new window) */
    938944        position: absolute;