diff --git a/plugins/create/action.php b/plugins/create/action.php index e3b70939e..5751c1b07 100644 --- a/plugins/create/action.php +++ b/plugins/create/action.php @@ -23,6 +23,12 @@ public function store() $this->strip(); return($cache->set($this)); } + public function delete($trk) + { + $cache = new rCache(); + $this->list = array_diff($this->list,$trk); + return($cache->set($this)); + } public function get() { $ret = array(); @@ -34,7 +40,19 @@ public function strip() { global $recentTrackersMaxCount; $this->list = array_values( array_unique($this->list) ); - $cnt = count($this->list)-$recentTrackersMaxCount; + $cnt = count($this->list); + $arr = array_values($this->list); + $lastAnn = self::getTrackerDomain(end($arr)); + $i = 0; + foreach( $this->list as $ann ) + { + if( ($i + 1) === $cnt ) + break; + if( self::getTrackerDomain($ann) === $lastAnn ) + array_splice($this->list,$i,1); + $i = $i + 1; + } + $cnt = $cnt-$recentTrackersMaxCount; if($cnt>0) array_splice($this->list,0,$cnt); } @@ -70,6 +88,23 @@ static public function getTrackerDomain($announce) $ret = $rt->get(); break; } + case "rtdelete": + { + if(isset($_REQUEST['trackers'])) + { + $rt = recentTrackers::load(); + $trk = array(); + $arr = explode("\r",$_REQUEST['trackers']); + foreach( $arr as $key => $value ) + { + $value = trim($value); + if(strlen($value)) + $trk[] = $value; + } + $ret = $rt->delete($trk); + } + break; + } case "create": { $error = "Invalid parameters"; @@ -81,7 +116,7 @@ static public function getTrackerDomain($announce) if(rTorrentSettings::get()->correctDirectory($path_edit)) { $rt = recentTrackers::load(); - $trackers = array(); + $trackers = array(); $announce_list = ''; if(isset($_REQUEST['trackers'])) { @@ -114,18 +149,15 @@ static public function getTrackerDomain($announce) $pathToCreatetorrent = $useExternal; if($useExternal=="mktorrent") $piece_size = log($piece_size,2); - else - if(isset($_REQUEST['hybrid'])) $hybrid = TRUE; - if($useExternal===false) $useExternal = "inner"; $task = new rTask( array - ( + ( 'arg' => getFileName($path_edit), 'requester'=>'create', - 'name'=>'create', + 'name'=>'create', 'path_edit'=>$_REQUEST['path_edit'], 'trackers'=>$_REQUEST['trackers'], 'comment'=>$_REQUEST['comment'], @@ -133,7 +165,7 @@ static public function getTrackerDomain($announce) 'start_seeding'=>$_REQUEST['start_seeding'], 'piece_size'=>$_REQUEST['piece_size'], 'private'=>$_REQUEST['private'], - 'hybrid'=>$_REQUEST['hybrid'], + 'hybrid'=>$_REQUEST['hybrid'] ) ); $commands = array(); @@ -146,10 +178,10 @@ static public function getTrackerDomain($announce) escapeshellarg(getUser())." ". escapeshellarg(rTask::formatPath($task->id))." ". escapeshellarg($hybrid); - + $commands[] = '{'; $commands[] = 'chmod a+r "${dir}"/result.torrent'; - $commands[] = '}'; + $commands[] = '}'; $ret = $task->start($commands, 0); break; } diff --git a/plugins/create/create.css b/plugins/create/create.css index 8d50d227c..ea1fd6866 100644 --- a/plugins/create/create.css +++ b/plugins/create/create.css @@ -14,3 +14,4 @@ div#tcreate iframe {border-width: 1px; width:170px; height:200px; visibility:hid #browse_path {width: 30px;} #recentTrackers { float: left; width: 130px } +#deleteFromRecentTrackers {float: left; text-align: left} diff --git a/plugins/create/init.js b/plugins/create/init.js index cf72a3bb8..5db44893c 100644 --- a/plugins/create/init.js +++ b/plugins/create/init.js @@ -12,16 +12,16 @@ theWebUI.checkCreate = function() var trk = ''; for( var i in arr ) trk+=($.trim(arr[i])+'\r'); - this.startConsoleTask( "create", plugin.name, - { - "piece_size" : $('#piece_size').val(), + this.startConsoleTask( "create", plugin.name, + { + "piece_size" : $('#piece_size').val(), "trackers" : trk, - "path_edit" : $.trim($("#path_edit").val()), + "path_edit" : $.trim($("#path_edit").val()), "comment" : $.trim($("#comment").val()), "source" : $.trim($("#source").val()), "private" : $('#private').prop('checked') ? 1 : 0, "start_seeding" : $('#start_seeding').prop('checked') ? 1 : 0, - "hybrid" : $('#hybrid').prop('checked') ? 1 : 0, + "hybrid" : $('#hybrid').prop('checked') ? 1 : 0 }, { noclose: true @@ -35,25 +35,37 @@ plugin.onTaskFinished = function(task,fromBackground) $("#xtaskno").val(task.no); if(!task.status) $('#xcsave').show(); - } + } theWebUI.request('?action=rtget',[plugin.getRecentTrackers, plugin]); } rTorrentStub.prototype.rtget = function() { this.content = "cmd=rtget"; - this.contentType = "application/x-www-form-urlencoded"; + this.contentType = "application/x-www-form-urlencoded"; + this.mountPoint = "plugins/create/action.php"; + this.dataType = "json"; +} + +rTorrentStub.prototype.rtdelete = function() +{ + this.content = "cmd=rtdelete&trackers="+plugin.deleteFromRecentTrackers; + this.contentType = "application/x-www-form-urlencoded"; this.mountPoint = "plugins/create/action.php"; this.dataType = "json"; } theWebUI.showCreate = function() { + if( $("#trackers").val().trim().length < 1 ) + $("#deleteFromRecentTrackers").addClass("disabled"); + else + $("#deleteFromRecentTrackers").removeClass("disabled"); $('#start_seeding').prop('disabled',!theWebUI.systemInfo.rTorrent.started); if(theWebUI.systemInfo.rTorrent.started) $('#lbl_start_seeding').removeClass('disabled'); - else - $('#lbl_start_seeding').addClass('disabled'); + else + $('#lbl_start_seeding').addClass('disabled'); theDialogManager.show('tcreate'); } @@ -68,6 +80,7 @@ plugin.getRecentTrackers = function( data ) theWebUI.addTrackerToBox = function(ann) { + $("#deleteFromRecentTrackers").removeClass("disabled"); var val = $('#trackers').val(); if(val.length) val+='\r\n'; @@ -87,6 +100,22 @@ theWebUI.showRecentTrackers = function() } } +theWebUI.deleteFromRecentTrackers = function() +{ + $("#deleteFromRecentTrackers").addClass("disabled"); + var trklist = $('#trackers').val(); + if(!trklist) + return(false); + var arr = trklist.split("\n"); + $('#trackers').val(''); + var trk = ''; + for( var i in arr ) + trk+=($.trim(arr[i])+'\r'); + plugin.deleteFromRecentTrackers = trk; + theWebUI.request('?action=rtdelete'); + theWebUI.request('?action=rtget',[plugin.getRecentTrackers, plugin]); +} + plugin.onLangLoaded = function() { var plg = thePlugins.get("_task"); @@ -100,7 +129,7 @@ plugin.onLangLoaded = function() ); plugin.addButtonToToolbar("create",theUILang.mnu_create,"theWebUI.showCreate()","remove"); plugin.addSeparatorToToolbar("remove"); - var pieceSize = + var pieceSize = ""+ ""; if(plugin.hidePieceSize) - pieceSize = ""; + pieceSize = ""; - var hybridTorrent = + var hybridTorrent = ""; - + if(plugin.hideHybrid) - hybridTorrent = ""; + hybridTorrent = ""; theDialogManager.make("tcreate",theUILang.CreateNewTorrent, "