dialog-torrent-changeDownloadDir.html 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <div class="easyui-layout" data-options="fit:true" style="width:100%;height:100%;">
  2. <div data-options="region:'center'" style="padding:3px;border:0px;">
  3. <div id="" class="dialog" style="width:100%;padding:0px;">
  4. <table style="width:100%;">
  5. <tr>
  6. <td width="20%" class="title"><span id="dialog-torrent-changeDownloadDir-old-download-dir"></span></td>
  7. <td width="80%">
  8. <span id="old-download-dir"></span>
  9. </td>
  10. </tr>
  11. <tr>
  12. <td class="title"><span id="dialog-torrent-changeDownloadDir-new-download-dir"></span></td>
  13. <td>
  14. <select id="download-dir" style="width:400px;"></select>
  15. </td>
  16. </tr>
  17. <tr>
  18. <td class="title"></td>
  19. <td>
  20. <input type="checkbox" id="move-data" style="width:20px;"/><label for="move-data" id="dialog-torrent-changeDownloadDir-move-data"></label>
  21. </td>
  22. </tr>
  23. <tr>
  24. <td class="title"></td>
  25. <td>
  26. <input type="checkbox" id="recheck-data" style="width:20px;"/><label for="recheck-data" id="dialog-torrent-changeDownloadDir-recheck-data"></label>
  27. </td>
  28. </tr>
  29. <tr>
  30. <td colspan="2"><hr/></td>
  31. </tr>
  32. </table>
  33. </div>
  34. </div>
  35. <div data-options="region:'south',border:false" style="text-align:right;padding:6px;">
  36. <span id="text-nochange" style="display:none;"></span>
  37. <span id="text-count"></span>
  38. <a id="torrent-button-ok" class="easyui-linkbutton" data-options="iconCls:'icon-ok',plain:true" href="javascript:void(0);">Ok</a>
  39. <a id="torrent-button-cancel" class="easyui-linkbutton" data-options="iconCls:'icon-cancel',plain:true" href="javascript:void(0);">Cancel</a>
  40. </div>
  41. </div>
  42. <script type="text/javascript">
  43. (function(thisDialog){
  44. var title = "old-download-dir,new-download-dir,move-data,recheck-data".split(",");
  45. var ids = thisDialog.data("ids");
  46. var allIds = new Array();
  47. var issimple = false;
  48. var torrent = null;
  49. var recheck = false;
  50. if (typeof(ids)=="object")
  51. {
  52. torrent = transmission.torrents.all[ids[0]];
  53. }
  54. else
  55. {
  56. torrent = transmission.torrents.all[ids];
  57. issimple = true;
  58. }
  59. if (!torrent)
  60. {
  61. thisDialog.dialog("close");
  62. return;
  63. }
  64. $.each(title, function(i, item){
  65. thisDialog.find("#dialog-torrent-changeDownloadDir-"+item).html(system.lang.dialog["torrent-changeDownloadDir"][item]);
  66. });
  67. thisDialog.find("#text-count").text("");
  68. title = "button-ok,button-cancel".split(",");
  69. $.each(title, function(i, item){
  70. thisDialog.find("#torrent-"+item).html(system.lang.dialog["public"][item]);
  71. });
  72. thisDialog.find("#text-nochange").html(system.lang.dialog["public"]["text-nochange"]);
  73. thisDialog.find("#old-download-dir").text(torrent.downloadDir);
  74. thisDialog.find("#download-dir").val(torrent.downloadDir);
  75. $.each(transmission.downloadDirs, function(i, item){
  76. $("<option/>").text(item).val(item).attr("selected",(item==torrent.downloadDir?true:false)).appendTo(thisDialog.find("#download-dir"));
  77. });
  78. if (transmission.downloadDirs.length==0)
  79. {
  80. $("<option/>").text(torrent.downloadDir).val(torrent.downloadDir).attr("selected",true).appendTo(thisDialog.find("#download-dir"));
  81. }
  82. thisDialog.find("#download-dir").combobox();
  83. // 确认
  84. thisDialog.find("#torrent-button-ok").click(function()
  85. {
  86. var dir = thisDialog.find("#download-dir").combobox("getValue");
  87. var olddir = torrent.downloadDir;
  88. var isnewdir =olddir!=dir;
  89. var movedata = thisDialog.find("#move-data").prop("checked");
  90. var button = $(this);
  91. var icon = button.linkbutton("options").iconCls;
  92. recheck = thisDialog.find("#recheck-data").prop("checked");
  93. // 新目录
  94. if (isnewdir)
  95. {
  96. button.linkbutton({disabled:true,iconCls:"icon-loading"});
  97. if (issimple)
  98. {
  99. // 开始设置参数
  100. transmission.exec(
  101. {
  102. method:"torrent-set-location"
  103. ,arguments:{
  104. ids:torrent.id
  105. ,location:dir
  106. ,move:movedata
  107. }
  108. }
  109. ,function(data){
  110. button.linkbutton({iconCls:icon,disabled:false});
  111. if (data.result=="success")
  112. {
  113. system.getTorrentInfos(torrent.id);
  114. torrent.downloadDir = dir;
  115. if (recheck)
  116. {
  117. transmission.exec({
  118. method:"torrent-verify"
  119. ,arguments:{
  120. ids:torrent.id
  121. }
  122. }
  123. ,function(data){
  124. system.control.torrentlist.datagrid("uncheckAll");
  125. system.reloadTorrentBaseInfos();
  126. }
  127. );
  128. }
  129. thisDialog.dialog("close");
  130. }
  131. else
  132. {
  133. $.messager.alert("",system.lang.error["data-post-error"]+": "+data.result,'error');
  134. }
  135. }
  136. );
  137. }
  138. else
  139. {
  140. doSetFolder(ids,ids.length,button,icon,dir,movedata);
  141. }
  142. }
  143. else
  144. {
  145. thisDialog.find("#text-nochange").fadeInAndOut();
  146. }
  147. });
  148. function doSetFolder(ids,count,button,icon,dir,movedata)
  149. {
  150. //var id = ids;
  151. var index = count-ids.length;
  152. var id = ids.shift();
  153. if (!id)
  154. {
  155. button.linkbutton({iconCls:icon,disabled:false});
  156. system.control.torrentlist.datagrid("uncheckAll");
  157. if (recheck)
  158. {
  159. transmission.exec({
  160. method:"torrent-verify"
  161. ,arguments:{
  162. ids:allIds
  163. }
  164. }
  165. ,function(data){
  166. system.control.torrentlist.datagrid("uncheckAll");
  167. system.reloadTorrentBaseInfos();
  168. }
  169. );
  170. }
  171. thisDialog.dialog("close");
  172. return;
  173. }
  174. allIds.push(id);
  175. var torrent = transmission.torrents.all[id];
  176. thisDialog.find("#text-count").text("-> "+torrent.name + " [" + (index+1)+"/"+count + "] ");
  177. if (torrent.downloadDir==dir)
  178. {
  179. doSetFolder(ids,count,button,icon,dir,movedata);
  180. return;
  181. }
  182. // 开始设置参数
  183. transmission.exec(
  184. {
  185. method:"torrent-set-location"
  186. ,arguments:{
  187. ids:id
  188. ,location:dir
  189. ,move:movedata
  190. }
  191. }
  192. ,function(data){
  193. if (data.result=="success")
  194. {
  195. doSetFolder(ids,count,button,icon,dir,movedata);
  196. torrent.downloadDir = dir;
  197. }
  198. else
  199. {
  200. button.linkbutton({iconCls:icon,disabled:false});
  201. $.messager.alert("",system.lang.error["data-post-error"]+": "+data.result,'error');
  202. }
  203. }
  204. );
  205. }
  206. thisDialog.find("#torrent-button-cancel").click(function()
  207. {
  208. thisDialog.dialog("close");
  209. });
  210. })($("#dialog-torrent-changeDownloadDir"));
  211. </script>