// *************************************************************** // Plush main code as follows, by pairofdimes (see LICENSE-CC.txt) jQuery(function($) { // safely invoke $ selector $.plush = { // object definition /******************************************** ********************************************* Plush defaults ********************************************* ********************************************/ refreshRate: $.cookie('refreshRate') ? $.cookie('refreshRate') : 30, // refresh rate in seconds queuePerPage: $.cookie('queuePerPage') ? $.cookie('queuePerPage') : 10, // pagination - nzbs per page histPerPage: $.cookie('histPerPage') ? $.cookie('histPerPage') : 10, // pagination - nzbs per page confirmDeleteQueue: $.cookie('confirmDeleteQueue') == 0 ? false : true, // confirm queue nzb removal confirmDeleteHistory: $.cookie('confirmDeleteHistory') == 0 ? false : true, // confirm history nzb removal blockRefresh: $.cookie('blockRefresh') == 0 ? false : true, // prevent refreshing when hovering queue /******************************************** ********************************************* $.plush.refreshQueue() -- fetch HTML data from queue.tmpl, make updates throughout interface ********************************************* ********************************************/ refreshQueue : function(page) { // Skip refresh if cursor hovers queue, to prevent annoyance if ($.plush.blockRefresh && $.plush.skipRefresh) { $('#manual_refresh_wrapper').addClass('refresh_skipped'); return false; } // no longer a need for a pending queue refresh (associated with nzb deletions) $.plush.pendingQueueRefresh = false; // Deal with pagination for start/limit if (typeof( page ) == 'undefined' || page == "ok\n" || page < 0 ) page = $.plush.queuecurpage; else if (page != $.plush.queuecurpage) $.plush.queuecurpage = page; // Refresh state notification $('#manual_refresh_wrapper').removeClass('refresh_skipped').addClass('refreshing'); // Fetch updated content from queue.tmpl $.ajax({ type: "POST", url: "queue/", data: {start: ( page * $.plush.queuePerPage ), limit: $.plush.queuePerPage}, success: function(result){ // Replace queue contents with queue.tmpl -- this file also sets several stat vars via javascript $('#queue').html(result); // Refresh state notification $('#manual_refresh_wrapper').removeClass('refreshing'); // Tooltips $('#time-left').attr('title',$.plush.eta); $('#time-left, #queueTable tr .download-title a').tooltip({ extraClass: "tooltip", showURL: false, track: true }); // Speed limit selector if ($("#maxSpeed-option").val() != $.plush.speedlimit && !$.plush.focusedOnSpeedChanger) $("#maxSpeed-option").val($.plush.speedlimit); // Completion script selector if ($("#onQueueFinish-option").val() != $.plush.finishaction) $("#onQueueFinish-option").val($.plush.finishaction); // Pause/resume button state if ( $.plush.paused && !$('#pause_resume').hasClass('sprite_q_pause_on') ) $('#pause_resume').removeClass('sprite_q_pause').addClass('sprite_q_pause_on'); else if ( !$.plush.paused && !$('#pause_resume').hasClass('sprite_q_pause') ) $('#pause_resume').removeClass('sprite_q_pause_on').addClass('sprite_q_pause'); // Pause interval ($.plush.pause_int == "0") ? $('#pause_int').html("") : $('#pause_int').html($.plush.pause_int); // ETA/speed stats at top of queue if ($.plush.queuenoofslots < 1) $('#stats_speed, #stats_eta').html('—'); else if ($.plush.kbpersec < 1 && $.plush.paused) $('#stats_speed, #stats_eta').html('—'); else { $('#stats_speed').html($.plush.speed+"B/s"); $('#stats_eta').html($.plush.timeleft); } // Update bottom right stats $('#queue_stats').html($.plush.queuestats); // Update warnings count/latest warning text in main menu $('#have_warnings').html('('+$.plush.have_warnings+')'); $('#last_warning').attr('title',$.plush.last_warning).tooltip({ extraClass: "tooltip", track: true, showURL: false }); // Remove spinner graphic from pagination $('#queue-pagination span').removeClass('loading'); // *** don't forget the live() & livequery() methods defined in $.plush.initEvents() *** }, error: function() { // Failed refresh notification $('#manual_refresh_wrapper').addClass('refresh_skipped'); } }); }, // end $.plush.refreshQueue() /******************************************** ********************************************* $.plush.refreshHistory() -- fetch HTML data from history.tmpl ********************************************* ********************************************/ refreshHistory : function(page) { if ($.plush.modalOpen) // Skip refreshing when modal is open, which destroys colorbox rel prev/next return; // Deal with pagination for start/limit if (typeof( page ) == 'undefined') page = $.plush.histcurpage; else if (page != $.plush.histcurpage) $.plush.histcurpage = page; $.ajax({ type: "POST", url: "history/", data: {start: ( page * $.plush.histPerPage ), limit: $.plush.histPerPage}, success: function(result){ // Replace history contents with history.tmpl -- this file sets a couple stat vars via javascript $('#history').html(result); // Update bottom right stats $('#history_stats').html($.plush.histstats); // Tooltips for verbose notices $('#history .icon_history_verbose').tooltip({ extraClass: "tooltip", track: true }); // Remove spinner graphic from pagination $('#history-pagination span').removeClass('loading'); // *** don't forget the live() & livequery() methods defined in $.plush.initEvents() *** } }); }, // end $.plush.refreshHistory() /******************************************** ********************************************* $.plush.refresh() triggers refreshQueue & refreshHistory then loops (calls itself) after $.plush.refreshRate seconds accepts 'force' boolean, used by manual refresh event (in event of refresh otherwise disabled) ********************************************* ********************************************/ refresh : function(force) { // Clear timeout in case multiple refreshes are triggered clearTimeout($.plush.timeout); if (force || $.plush.refreshRate > 0) { // no longer a need for a pending history refresh (associated with nzb deletions) // (queue var reset in $.plush.refreshQueue() due to possible blocking $.plush.pendingHistoryRefresh = false; $.plush.refreshQueue(); $.plush.refreshHistory(); // Loop $.plush.timeout = setTimeout("$.plush.refresh()", $.plush.refreshRate*1000); } else if (!$.plush.histstats) { // Initial load if refresh rate saved as "Disabled" $.plush.refreshQueue(); $.plush.refreshHistory(); } }, // end $.plush.refresh() /******************************************** ********************************************* $.plush.initEvents() -- initialize all the UI events ********************************************* ********************************************/ initEvents : function() { /******************************************** ********************************************* "Add NZB" Methods ********************************************* ********************************************/ // Fetch NZB by URL/Newzbin Report ID $('#addID').click(function(){ // also works when hitting enter because of