1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-08-13 16:53:54 -04:00
SickRage/gui/slick/js/configProviders.js
echel0n e96035ff4f Added per-provider options search mode and search fallback.
Search mode allows you to choose season packs only or episodes only which controls how backlogs search for data.

Search fallback if selected will attempt a 2nd search this time using the alternative search mode to see if it can get results if the previous attempt failed.

Provider settings are now read and stored dynamically instead of always having to retrieve them by there static names, this will allow for dropping in new provider modules easier to intergrate with existing options already present.

Fixed search code to not perform dupe searches by mistake.

Cache stores a list of shows we have rejected so that next time around we don't have to process them to know we don't like em.
2014-05-16 22:29:44 -07:00

493 lines
15 KiB
JavaScript

$(document).ready(function(){
$.fn.showHideProviders = function() {
$('.providerDiv').each(function(){
var providerName = $(this).attr('id');
var selectedProvider = $('#editAProvider :selected').val();
if (selectedProvider+'Div' == providerName)
$(this).show();
else
$(this).hide();
});
}
$.fn.addProvider = function (id, name, url, key, isDefault, showProvider) {
url = $.trim(url);
if (!url)
return;
if (!/^https?:\/\//i.test(url))
url = "http://" + url;
if (url.match('/$') == null)
url = url + '/';
var newData = [isDefault, [name, url, key]];
newznabProviders[id] = newData;
if (!isDefault){
$('#editANewznabProvider').addOption(id, name);
$(this).populateNewznabSection();
}
if ($('#provider_order_list > #'+id).length == 0 && showProvider != false) {
var toAdd = '<li class="ui-state-default" id="'+id+'"> <input type="checkbox" id="enable_'+id+'" class="provider_enabler" CHECKED> <a href="'+url+'" class="imgLink" target="_new"><img src="'+sbRoot+'/images/providers/newznab.png" alt="'+name+'" width="16" height="16"></a> '+name+'</li>'
$('#provider_order_list').append(toAdd);
$('#provider_order_list').sortable("refresh");
}
$(this).makeNewznabProviderString();
}
$.fn.addTorrentRssProvider = function (id, name, url) {
var newData = [name, url];
torrentRssProviders[id] = newData;
$('#editATorrentRssProvider').addOption(id, name);
$(this).populateTorrentRssSection();
if ($('#provider_order_list > #'+id).length == 0) {
var toAdd = '<li class="ui-state-default" id="'+id+'"> <input type="checkbox" id="enable_'+id+'" class="provider_enabler" CHECKED> <a href="'+url+'" class="imgLink" target="_new"><img src="'+sbRoot+'/images/providers/torrentrss.png" alt="'+name+'" width="16" height="16"></a> '+name+'</li>'
$('#provider_order_list').append(toAdd);
$('#provider_order_list').sortable("refresh");
}
$(this).makeTorrentRssProviderString();
}
$.fn.updateProvider = function (id, url, key, search_mode, search_fallback) {
newznabProviders[id][1][1] = url;
newznabProviders[id][1][2] = key;
newznabProviders[id][1][3] = search_mode;
newznabProviders[id][1][4] = search_fallback;
$(this).populateNewznabSection();
$(this).makeNewznabProviderString();
}
$.fn.deleteProvider = function (id) {
$('#editANewznabProvider').removeOption(id);
delete newznabProviders[id];
$(this).populateNewznabSection();
$('li').remove('#'+id);
$(this).makeNewznabProviderString();
}
$.fn.updateTorrentRssProvider = function (id, url) {
torrentRssProviders[id][1] = url;
$(this).populateTorrentRssSection();
$(this).makeTorrentRssProviderString();
}
$.fn.deleteTorrentRssProvider = function (id) {
$('#editATorrentRssProvider').removeOption(id);
delete torrentRssProviders[id];
$(this).populateTorrentRssSection();
$('li').remove('#'+id);
$(this).makeTorrentRssProviderString();
}
$.fn.populateNewznabSection = function() {
var selectedProvider = $('#editANewznabProvider :selected').val();
if (selectedProvider == 'addNewznab') {
var data = ['','',''];
var isDefault = 0;
$('#newznab_add_div').show();
$('#newznab_update_div').hide();
} else {
var data = newznabProviders[selectedProvider][1];
var isDefault = newznabProviders[selectedProvider][0];
$('#newznab_add_div').hide();
$('#newznab_update_div').show();
}
$('#newznab_name').val(data[0]);
$('#newznab_url').val(data[1]);
$('#newznab_key').val(data[2]);
if (selectedProvider == 'addNewznab') {
$('#newznab_name').removeAttr("disabled");
$('#newznab_url').removeAttr("disabled");
} else {
$('#newznab_name').attr("disabled", "disabled");
if (isDefault) {
$('#newznab_url').attr("disabled", "disabled");
$('#newznab_delete').attr("disabled", "disabled");
} else {
$('#newznab_url').removeAttr("disabled");
$('#newznab_delete').removeAttr("disabled");
}
}
}
$.fn.makeNewznabProviderString = function() {
var provStrings = new Array();
for (var id in newznabProviders) {
provStrings.push(newznabProviders[id][1].join('|'));
}
$('#newznab_string').val(provStrings.join('!!!'))
}
$.fn.populateTorrentRssSection = function() {
var selectedProvider = $('#editATorrentRssProvider :selected').val();
if (selectedProvider == 'addTorrentRss') {
var data = ['','','',''];
$('#torrentrss_add_div').show();
$('#torrentrss_update_div').hide();
} else {
var data = torrentRssProviders[selectedProvider];
$('#torrentrss_add_div').hide();
$('#torrentrss_update_div').show();
}
$('#torrentrss_name').val(data[0]);
$('#torrentrss_url').val(data[1]);
$('#torrentrss_uname').val(data[2]);
$('#torrentrss_passw').val(data[3]);
if (selectedProvider == 'addTorrentRss') {
$('#torrentrss_name').removeAttr("disabled");
$('#torrentrss_url').removeAttr("disabled");
$('#torrentrss_uname').removeAttr("disabled");
$('#torrentrss_passw').removeAttr("disabled");
} else {
$('#torrentrss_name').attr("disabled", "disabled");
$('#torrentrss_url').removeAttr("disabled");
$('#torrentrss_uname').removeAttr("disabled");
$('#torrentrss_passw').removeAttr("disabled")
$('#torrentrss_delete').removeAttr("disabled");
}
}
$.fn.makeTorrentRssProviderString = function() {
var provStrings = new Array();
for (var id in torrentRssProviders) {
provStrings.push(torrentRssProviders[id].join('|'));
}
$('#torrentrss_string').val(provStrings.join('!!!'))
}
$.fn.refreshProviderList = function() {
var idArr = $("#provider_order_list").sortable('toArray');
var finalArr = new Array();
$.each(idArr, function(key, val) {
var checked = + $('#enable_'+val).prop('checked') ? '1' : '0';
finalArr.push(val + ':' + checked);
});
$("#provider_order").val(finalArr.join(' '));
}
$.fn.hideConfigTab = function () {
$("#config-components").tabs( "disable", 1 );
$("#config-components ul li:eq(1)").hide();
};
$.fn.showProvidersConfig = function () {
$("#provider_order_list li").each(function( index ) {
if ($(this).find("input").attr("checked")) {
$(this).addTip();
} else {
$(this).qtip('destroy');
}
});
};
$.fn.addTip = function() {
var config_id = $(this).find("input").attr('id').replace("enable_", "") + "Div";
var config_form = '<div id="config"><form id="configForm_tip" action="saveProviders" method="post"><fieldset class="component-group-list tip_scale"><div class="providerDiv_tip">' + $("div[id*="+config_id+"]").html() + '</div></fieldset></form></div>'
var provider_name = $.trim($(this).text()).replace('*','')
if ($("div[id*="+config_id+"]").length == 0) {
return false
}
$(this).qtip({
overwrite: true,
position: {
adjust: {
x: 0, y: 0,
},
my: 'left top',
at: 'top right',
},
show: {
event: 'mouseenter', // Show it on click...
target: false,
solo: true,
delay: 90,
effect: true,
},
hide: {
fixed: true,
delay: 900,
},
content: {
text: config_form,
title: {
text: provider_name + ' Config',
button: true
}
},
style: {
border: {
width: 5,
radius: 2,
color: '#e1e1e1'
},
width: 350,
background: '#FFF',
padding: 15,
tip: true, // Give it a speech bubble tip with automatic corner detection
classes: 'qtip-dark qtip-shadow',
},
});
}
var newznabProviders = new Array();
var torrentRssProviders = new Array();
$("#provider_order_list li").on('change', function() {
if ($(this).find("input").attr("checked")) {
$(this).addTip();
$(this).qtip('show');
} else {
$(this).qtip('destroy');
}
});
$(this).on('change', '.newznab_key', function(){
var provider_id = $(this).attr('id');
provider_id = provider_id.substring(0, provider_id.length-'_hash'.length);
var url = $('#'+provider_id+'_url').val();
var key = $(this).val();
var search_mode = $('#'+provider_id+'_search_mode').val();
var search_fallback = $('#'+provider_id+'_search_fallback').val();
$(this).updateProvider(provider_id, url, key, search_mode, search_fallback);
});
$('#newznab_key,#newznab_url').change(function(){
var selectedProvider = $('#editANewznabProvider :selected').val();
if (selectedProvider == "addNewznab")
return;
var url = $('#newznab_url').val();
var key = $('#newznab_key').val();
var search_mode = 'eponly';
var search_fallback = 0;
$(this).updateProvider(selectedProvider, url, key, search_mode, search_fallback);
});
$('#torrentrss_url,#torrentrss_uname,#torrentrss_key').change(function(){
var selectedProvider = $('#editATorrentRssProvider :selected').val();
if (selectedProvider == "addTorrentRss")
return;
var url = $('#torrentrss_url').val();
$(this).updateTorrentRssProvider(selectedProvider, url);
});
$('#editAProvider').change(function(){
$(this).showHideProviders();
});
$('#editANewznabProvider').change(function(){
$(this).populateNewznabSection();
});
$('#editATorrentRssProvider').change(function(){
$(this).populateTorrentRssSection();
});
$(this).on('click', '.provider_enabler', function(){
$(this).refreshProviderList();
});
$('#newznab_add').click(function(){
var selectedProvider = $('#editANewznabProvider :selected').val();
var name = $.trim($('#newznab_name').val());
var url = $.trim($('#newznab_url').val());
var key = $.trim($('#newznab_key').val());
if (!name)
return;
if (!url)
return;
if (!key)
return;
var params = {name: name};
// send to the form with ajax, get a return value
$.getJSON(sbRoot + '/config/providers/canAddNewznabProvider', params,
function(data){
if (data.error != undefined) {
alert(data.error);
return;
}
$(this).addProvider(data.success, name, url, key, 0);
});
});
$('.newznab_delete').click(function(){
var selectedProvider = $('#editANewznabProvider :selected').val();
$(this).deleteProvider(selectedProvider);
});
$('#torrentrss_add').click(function(){
var selectedProvider = $('#editATorrentRssProvider :selected').val();
var name = $('#torrentrss_name').val();
var url = $('#torrentrss_url').val();
var params = { name: name, url: url}
// send to the form with ajax, get a return value
$.getJSON(sbRoot + '/config/providers/canAddTorrentRssProvider', params,
function(data){
if (data.error != undefined) {
alert(data.error);
return;
}
$(this).addTorrentRssProvider(data.success, name, url);
});
});
$('.torrentrss_delete').on('click', function(){
var selectedProvider = $('#editATorrentRssProvider :selected').val();
$(this).deleteTorrentRssProvider(selectedProvider);
});
$(this).on('change', "[class='providerDiv_tip'] input", function(){
$('div .providerDiv ' + "[name=" + $(this).attr('name') + "]").replaceWith($(this).clone());
$('div .providerDiv ' + "[newznab_name=" + $(this).attr('id') + "]").replaceWith($(this).clone());
});
$(this).on('change', "[class='providerDiv_tip'] select", function(){
$(this).find('option').each( function() {
if ($(this).is(':selected')) {
$(this).prop('defaultSelected', true)
} else {
$(this).prop('defaultSelected', false);
}
});
$('div .providerDiv ' + "[name=" + $(this).attr('name') + "]").empty().replaceWith($(this).clone())});
$(this).on('change', '.enabler', function(){
if ($(this).is(':checked')) {
$('.content_'+$(this).attr('id')).each( function() {
$(this).show()
})
} else {
$('.content_'+$(this).attr('id')).each( function() {
$(this).hide()
})
}
});
$(".enabler").each(function(){
if (!$(this).is(':checked')) {
$('.content_'+$(this).attr('id')).hide();
} else {
$('.content_'+$(this).attr('id')).show();
}
});
$.fn.makeTorrentOptionString = function(provider_id) {
var seed_ratio = $('.providerDiv_tip #'+provider_id+'_seed_ratio').prop('value');
var seed_time = $('.providerDiv_tip #'+provider_id+'_seed_time').prop('value');
var process_met = $('.providerDiv_tip #'+provider_id+'_process_method').prop('value');
var option_string = $('.providerDiv_tip #'+provider_id+'_option_string');
option_string.val([seed_ratio, seed_time, process_met].join('|'))
}
$(this).on('change', '.seed_option', function(){
var provider_id = $(this).attr('id').split('_')[0];
$(this).makeTorrentOptionString(provider_id);
});
// initialization stuff
$(this).hideConfigTab();
$(this).showHideProviders();
$(this).showProvidersConfig();
$("#provider_order_list").sortable({
placeholder: 'ui-state-highlight',
update: function (event, ui) {
$(this).refreshProviderList();
ui.item.qtip('reposition');
}
});
$("#provider_order_list").disableSelection();
});