Ticket #4093: peers_tab.patch

File peers_tab.patch, 10.0 KB (added by bb, 11 years ago)

patch to add a peers tab to the web client

Line 
1diff -crB transmission_old/Transmission.app/Contents/Resources/web/index.html transmission_new/Transmission.app/Contents/Resources/web/index.html
2*** transmission_old/Transmission.app/Contents/Resources/web/index.html 2011-03-05 17:31:40.000000000 +0100
3--- transmission_new/Transmission.app/Contents/Resources/web/index.html 2011-03-07 11:32:18.000000000 +0100
4***************
5*** 229,234 ****
6--- 229,235 ----
7                                                <ul>
8                                                        <li id="prefs_tab_general_tab" class="prefs_tab_enabled">General</li>
9                                                        <li id="prefs_tab_speed_tab" class="prefs_tab_disabled">Speed</li>
10+                                                       <li id="prefs_tab_peers_tab" class="prefs_tab_disabled">Peers</li>
11                                                </ul>
12                                                <div id="prefs_tab_general" class="prefs_tab">
13                                                        <div class="preference download_location">
14***************
15*** 321,326 ****
16--- 322,370 ----
17                                                        </div>
18                                                        <div style="clear: both; visibility: hidden;"></div>
19                                                </div>
20+                                               <div id="prefs_tab_peers" class="prefs_tab" style="display: none;">
21+                                                       <div class="preference peers_conn">
22+                                                               <label class="category">Connections:</label>
23+                                                               <div class="formdiv">
24+                                                                       <label for="conn_global" class="item">Global maximum connections:</label>
25+                                                                       <input type="text" name="conn_global" id="conn_global"/>
26+                                                                       <label class="suffix">peers</label>
27+                                                               </div>
28+                                                               <div class="formdiv">
29+                                                                       <label for="conn_torrent" class="item">Maximum connections for new transfers:</label>
30+                                                                       <input type="text" name="conn_torrent" id="conn_torrent"/>
31+                                                                       <label class="suffix">peers</label>
32+                                                               </div>
33+                                                               <div class="formdiv checkbox">
34+                                                                       <input type="checkbox" name="conn_pex" id="conn_pex"/>
35+                                                                       <label for="conn_pex" class="item">Use peer exchange (PEX) for public torrents</label>
36+                                                               </div>
37+                                                               <div class="formdiv checkbox">
38+                                                                       <input type="checkbox" name="conn_dht" id="conn_dht"/>
39+                                                                       <label for="conn_dht" class="item">Use distributed hash table (DHT) for public torrents</label>
40+                                                               </div>
41+                                                               <div class="formdiv checkbox">
42+                                                                       <input type="checkbox" name="conn_lpd" id="conn_lpd"/>
43+                                                                       <label for="conn_lpd" class="item">Use local peer discovery for public torrents</label>
44+                                                               </div>
45+                                                       </div>
46+                                                       <div class="preference block_conn">
47+                                                               <label class="category">Blocklist:</label>
48+                                                               <div class="formdiv checkbox">
49+                                                                       <input type="checkbox" name="block_enable" id="block_enable"/>
50+                                                                       <label for="block_enable" class="item">Prevent peers in blocklist from connecting</label>
51+                                                               </div>
52+                                                               <div class="formdiv block_url">
53+                                                                       <label for="block_url" class="item">URL:</label>
54+                                                                       <input type="text" name="block_url" id="block_url"/>
55+                                                               </div>
56+                                                               <div class="formdiv">
57+                                                                       <input type="button" name="block_update_button" id="block_update_button" value="Update"/>
58+                                                                       <label class="suffix" id="block_size">IP rules in the list</label>
59+                                                               </div>
60+                                                       </div>
61+                                                       <div style="clear: both; visibility: hidden;"></div>
62+                                               </div>
63                                        </div>
64                                        <span id="transmission_version"></span>
65                                        <a href="#save" id="prefs_save_button">Save</a>
66diff -crB transmission_old/Transmission.app/Contents/Resources/web/javascript/transmission.js transmission_new/Transmission.app/Contents/Resources/web/javascript/transmission.js
67*** transmission_old/Transmission.app/Contents/Resources/web/javascript/transmission.js 2011-03-05 17:31:40.000000000 +0100
68--- transmission_new/Transmission.app/Contents/Resources/web/javascript/transmission.js 2011-03-07 11:32:18.000000000 +0100
69***************
70*** 48,53 ****
71--- 48,54 ----
72                  $('#filter_finished_link').parent().bind('click', function(e){ tr.showFinishedClicked(e); });
73                $('#prefs_save_button').bind('click', function(e) { tr.savePrefsClicked(e); return false;});
74                $('#prefs_cancel_button').bind('click', function(e){ tr.cancelPrefsClicked(e); return false; });
75+               $('#block_update_button').bind('click', function(e){ tr.blocklistUpdateClicked(e); return false; });
76                $('#stats_close_button').bind('click', function(e){ tr.closeStatsClicked(e); return false; });
77                $('.inspector_tab').bind('click', function(e){ tr.inspectorTabClicked(e, this); });
78                $('.file_wanted_control').live('click', function(e){ tr.fileWantedClicked(e, this); });
79***************
80*** 60,66 ****
81--- 61,69 ----
82                $('#turtle_button').bind('click', function(e){ tr.toggleTurtleClicked(e); return false; });
83                $('#prefs_tab_general_tab').click(function(e){ changeTab(this, 'prefs_tab_general') });
84                $('#prefs_tab_speed_tab').click(function(e){ changeTab(this, 'prefs_tab_speed') });
85+               $('#prefs_tab_peers_tab').click(function(e){ changeTab(this, 'prefs_tab_peers') });
86          $('#torrent_upload_form').submit(function(){ $('#upload_confirm_button').click(); return false; });
87+               $('#torrent_upload_form').submit(function(){ $('#upload_confirm_button').click(); return false; });
88 
89                if (iPhone) {
90                        $('#inspector_close').bind('click', function(e){ tr.hideInspector(); });
91***************
92*** 189,195 ****
93         */
94        setupPrefConstraints: function() {
95                // only allow integers for speed limit & port options
96!               $('div.preference input[@type=text]:not(#download_location)').blur( function() {
97                        this.value = this.value.replace(/[^0-9]/gi, '');
98                        if (this.value == '') {
99                                if ($(this).is('#refresh_rate')) {
100--- 192,198 ----
101         */
102        setupPrefConstraints: function() {
103                // only allow integers for speed limit & port options
104!               $('div.preference input[@type=text]:not(#download_location,#block_url)').blur( function() {
105                        this.value = this.value.replace(/[^0-9]/gi, '');
106                        if (this.value == '') {
107                                if ($(this).is('#refresh_rate')) {
108***************
109*** 636,641 ****
110--- 639,645 ----
111 
112        savePrefsClicked: function(event)
113        {
114+               
115                // handle the clutch prefs locally
116                var tr = this;
117                var rate = parseInt( $('#prefs_form #refresh_rate')[0].value );
118***************
119*** 669,678 ****
120--- 673,695 ----
121                o[RPC._TurtleTimeEnd]        = parseInt( $('#prefs_form #turtle_end_time').val() );
122                o[RPC._TurtleTimeDay]        = parseInt( $('#prefs_form #turtle_days').val() );
123 
124+
125+               o[RPC._PeerLimitGlobal]      = parseInt( $('#prefs_form #conn_global').val() );
126+               o[RPC._PeerLimitPerTorrent]  = parseInt( $('#prefs_form #conn_torrent').val() );
127+               o[RPC._PexEnabled]           = $('#prefs_form #conn_pex')[0].checked;
128+               o[RPC._DhtEnabled]           = $('#prefs_form #conn_dht')[0].checked;
129+               o[RPC._LpdEnabled]           = $('#prefs_form #conn_lpd')[0].checked;
130+               o[RPC._BlocklistEnabled]     = $('#prefs_form #block_enable')[0].checked;
131+               o[RPC._BlocklistURL]         = $('#prefs_form #block_url').val();
132+
133                tr.remote.savePrefs( o );
134 
135                tr.hidePrefsDialog( );
136        },
137+       blocklistUpdateClicked: function(event){
138+               var tr = this;
139+               tr.remote.updateBlocklist();   
140+       },
141 
142        closeStatsClicked: function(event) {
143                this.hideStatsDialog( );
144***************
145*** 1008,1013 ****
146--- 1025,1039 ----
147                $('select#turtle_days').val(                prefs[RPC._TurtleTimeDay] );
148                $('#transmission_version').text(            prefs[RPC._DaemonVersion] );
149 
150+               $('#conn_global').val(                                          prefs[RPC._PeerLimitGlobal] );
151+               $('#conn_torrent').val(                                         prefs[RPC._PeerLimitPerTorrent] );
152+               $('#conn_pex')[0].checked                                 = prefs[RPC._PexEnabled];
153+               $('#conn_dht')[0].checked                                 = prefs[RPC._DhtEnabled];
154+               $('#conn_lpd')[0].checked                                 = prefs[RPC._LpdEnabled];
155+               $('#block_enable')[0].checked                     = prefs[RPC._BlocklistEnabled];
156+               $('#block_url').val(                                        prefs[RPC._BlocklistURL]);
157+               $('#block_size').text(                                      prefs[RPC._BlocklistSize] + ' IP rules in the list' );
158+
159                if (!iPhone)
160                {
161                        setInnerHTML( $('#limited_download_rate')[0], [ 'Limit (', Transmission.fmt.speed(dn_limit_k), ')' ].join('') );
162diff -crB transmission_old/Transmission.app/Contents/Resources/web/javascript/transmission.remote.js transmission_new/Transmission.app/Contents/Resources/web/javascript/transmission.remote.js
163*** transmission_old/Transmission.app/Contents/Resources/web/javascript/transmission.remote.js  2011-03-05 17:31:40.000000000 +0100
164--- transmission_new/Transmission.app/Contents/Resources/web/javascript/transmission.remote.js  2011-03-07 11:43:05.000000000 +0100
165***************
166*** 28,33 ****
167--- 28,41 ----
168  RPC._TurtleTimeBegin        = 'alt-speed-time-begin';
169  RPC._TurtleTimeEnd          = 'alt-speed-time-end';
170  RPC._TurtleTimeDay          = 'alt-speed-time-day';
171+ RPC._PeerLimitGlobal          = 'peer-limit-global';
172+ RPC._PeerLimitPerTorrent      = 'peer-limit-per-torrent';
173+ RPC._PexEnabled                               = 'pex-enabled';
174+ RPC._DhtEnabled                               = 'dht-enabled';
175+ RPC._LpdEnabled                               = 'lpd-enabled';
176+ RPC._BlocklistEnabled         = 'blocklist-enabled';
177+ RPC._BlocklistURL                     = 'blocklist-url';
178+ RPC._BlocklistSize                    = 'blocklist-size';
179  RPC._StartAddedTorrent      = 'start-added-torrents';
180 
181  function TransmissionRemote( controller )
182***************
183*** 250,255 ****
184--- 258,272 ----
185                        remote._controller.loadDaemonPrefs();
186                } );
187        },
188+       updateBlocklist: function() {
189+               var remote = this;
190+               var o = {
191+                       method: 'blocklist-update',
192+               };
193+               this.sendRequest( o, function() {
194+                       remote._controller.loadDaemonPrefs();
195+               } );
196+       },
197        filesSelectAll: function( torrent_ids, files, callback ) {
198                this.sendTorrentSetRequests( 'torrent-set', torrent_ids, { 'files-wanted': files }, callback );
199        },
200diff -crB transmission_old/Transmission.app/Contents/Resources/web/stylesheets/common.css transmission_new/Transmission.app/Contents/Resources/web/stylesheets/common.css
201*** transmission_old/Transmission.app/Contents/Resources/web/stylesheets/common.css     2011-03-05 17:31:40.000000000 +0100
202--- transmission_new/Transmission.app/Contents/Resources/web/stylesheets/common.css     2011-03-07 11:32:18.000000000 +0100
203***************
204*** 1220,1225 ****
205--- 1220,1229 ----
206        float: left;
207  }
208 
209+ div#prefs_container div.block_url input {
210+       width: 256px !important;
211+ }
212+
213  div#prefs_container div.download_location input {
214        width: 256px !important;
215  }