mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-03 18:03:37 +00:00
5c6ca57474
Change Config/Search Providers texts and descriptions. Fix display when no providers are visible on Config/Search Providers. Fix failing "Search Settings" link that is shown on Config/Search Providers when Torrents Search is not enabled under that Config/Search Settings/Torrent Search tab. Fix failing "Providers" link on Config/Search Settings/Episode Search tab. Change case of labels in General Config/Interface/Timezone. Split enabled from not enabled providers in the Configure Provider drop down on the Providers Options tab.
586 lines
No EOL
18 KiB
JavaScript
586 lines
No EOL
18 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();
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Gets categories for the provided newznab provider.
|
|
* @param {String} isDefault
|
|
* @param {Array} selectedProvider
|
|
* @return no return data. Function updateNewznabCaps() is run at callback
|
|
*/
|
|
$.fn.getCategories = function (isDefault, selectedProvider) {
|
|
|
|
var name = selectedProvider[0];
|
|
var url = selectedProvider[1];
|
|
var key = selectedProvider[2];
|
|
|
|
if (!name)
|
|
return;
|
|
|
|
if (!url)
|
|
return;
|
|
|
|
if (!key)
|
|
return;
|
|
|
|
var params = {url: url, name: name, key: key};
|
|
var returnData;
|
|
|
|
$.getJSON(sbRoot + '/config/providers/getNewznabCategories', params,
|
|
function(data){
|
|
updateNewznabCaps( data, selectedProvider );
|
|
console.debug(data.tv_categories);
|
|
});
|
|
}
|
|
|
|
$.fn.addProvider = function (id, name, url, key, cat, 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, cat]];
|
|
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="' + anonURL + 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, cookies) {
|
|
|
|
var newData = [name, url, cookies];
|
|
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="' + anonURL + 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, cat) {
|
|
|
|
newznabProviders[id][1][1] = url;
|
|
newznabProviders[id][1][2] = key;
|
|
newznabProviders[id][1][3] = cat;
|
|
|
|
$(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, cookies) {
|
|
torrentRssProviders[id][1] = url;
|
|
torrentRssProviders[id][2] = cookies;
|
|
$(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();
|
|
$('#newznab_cat').attr('disabled','disabled');
|
|
$('#newznab_cap').attr('disabled','disabled');
|
|
|
|
$('#newznab_cat option').each(function() {
|
|
$(this).remove();
|
|
return;
|
|
});
|
|
|
|
$('#newznab_cap option').each(function() {
|
|
$(this).remove();
|
|
return;
|
|
});
|
|
|
|
} else {
|
|
var data = newznabProviders[selectedProvider][1];
|
|
var isDefault = newznabProviders[selectedProvider][0];
|
|
$('#newznab_add_div').hide();
|
|
$('#newznab_update_div').show();
|
|
$('#newznab_cat').removeAttr('disabled');
|
|
$('#newznab_cap').removeAttr('disabled');
|
|
}
|
|
|
|
$('#newznab_name').val(data[0]);
|
|
$('#newznab_url').val(data[1]);
|
|
$('#newznab_key').val(data[2]);
|
|
|
|
//Check if not already array
|
|
if (typeof data[3] === 'string') {
|
|
rrcat = data[3].split(',')
|
|
}
|
|
else {
|
|
rrcat = data[3];
|
|
}
|
|
|
|
// Update the category select box (on the right)
|
|
var newCatOptions = [];
|
|
if (rrcat) {
|
|
rrcat.forEach(function (cat) {
|
|
newCatOptions.push({text : cat, value : cat});
|
|
});
|
|
$('#newznab_cat').replaceOptions(newCatOptions);
|
|
};
|
|
|
|
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');
|
|
|
|
//Get Categories Capabilities
|
|
if (data[0] && data[1] && data[2] && !ifExists($.fn.newznabProvidersCapabilities, data[0])) {
|
|
$(this).getCategories(isDefault, data);
|
|
}
|
|
else {
|
|
updateNewznabCaps( null, data );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ifExists = function(loopThroughArray, searchFor) {
|
|
var found = false;
|
|
|
|
loopThroughArray.forEach(function(rootObject) {
|
|
if (rootObject.name == searchFor) {
|
|
found = true;
|
|
}
|
|
console.log(rootObject.name + ' while searching for: ' + searchFor);
|
|
});
|
|
return found;
|
|
};
|
|
|
|
/**
|
|
* Updates the Global array $.fn.newznabProvidersCapabilities with a combination of newznab prov name
|
|
* and category capabilities. Return
|
|
* @param {Array} newzNabCaps, is the returned object with newzNabprod Name and Capabilities.
|
|
* @param {Array} selectedProvider
|
|
* @return no return data. The multiselect input $("#newznab_cap") is updated, as a result.
|
|
*/
|
|
updateNewznabCaps = function( newzNabCaps, selectedProvider ) {
|
|
|
|
if (newzNabCaps && !ifExists($.fn.newznabProvidersCapabilities, selectedProvider[0])) {
|
|
$.fn.newznabProvidersCapabilities.push({'name' : selectedProvider[0], 'categories' : newzNabCaps.tv_categories});
|
|
}
|
|
|
|
//Loop through the array and if currently selected newznab provider name matches one in the array, use it to
|
|
//update the capabilities select box (on the left).
|
|
if (selectedProvider[0]) {
|
|
$.fn.newznabProvidersCapabilities.forEach(function(newzNabCap) {
|
|
|
|
if (newzNabCap.name && newzNabCap.name == selectedProvider[0] && newzNabCap.categories instanceof Array) {
|
|
var newCapOptions = [];
|
|
newzNabCap.categories.forEach(function(category_set) {
|
|
if (category_set.id && category_set.name) {
|
|
newCapOptions.push({value : category_set.id, text : category_set.name + '(' + category_set.id + ')'});
|
|
};
|
|
});
|
|
$('#newznab_cap').replaceOptions(newCapOptions);
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
$.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_cookies').val(data[2]);
|
|
|
|
if (selectedProvider == 'addTorrentRss') {
|
|
$('#torrentrss_name').removeAttr('disabled');
|
|
$('#torrentrss_url').removeAttr('disabled');
|
|
$('#torrentrss_cookies').removeAttr('disabled');
|
|
} else {
|
|
$('#torrentrss_name').attr('disabled', 'disabled');
|
|
$('#torrentrss_url').removeAttr('disabled');
|
|
$('#torrentrss_cookies').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(' '));
|
|
}
|
|
|
|
var newznabProviders = new Array();
|
|
var torrentRssProviders = new Array();
|
|
|
|
$(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 cat = $('#' + provider_id + '_cat').val();
|
|
var key = $(this).val();
|
|
|
|
$(this).updateProvider(provider_id, url, key, cat);
|
|
|
|
});
|
|
|
|
$('#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 cat = $('#newznab_cat option').map(function(i, opt) {
|
|
return $(opt).text();
|
|
}).toArray().join(',');
|
|
|
|
$(this).updateProvider(selectedProvider, url, key, cat);
|
|
|
|
});
|
|
|
|
$('#torrentrss_url,#torrentrss_cookies').change(function(){
|
|
|
|
var selectedProvider = $('#editATorrentRssProvider :selected').val();
|
|
|
|
if (selectedProvider == 'addTorrentRss')
|
|
return;
|
|
|
|
var url = $('#torrentrss_url').val();
|
|
var cookies = $('#torrentrss_cookies').val();
|
|
|
|
$(this).updateTorrentRssProvider(selectedProvider, url, cookies);
|
|
});
|
|
|
|
|
|
$('#editAProvider').change(function(){
|
|
$(this).showHideProviders();
|
|
});
|
|
|
|
$('#editANewznabProvider').change(function(){
|
|
$(this).populateNewznabSection();
|
|
});
|
|
|
|
$('#editATorrentRssProvider').change(function(){
|
|
$(this).populateTorrentRssSection();
|
|
});
|
|
|
|
$(this).on('click', '.provider_enabler', function(){
|
|
$(this).refreshProviderList();
|
|
});
|
|
|
|
$(this).on('click', '#newznab_cat_update', function(){
|
|
console.debug('Clicked Button');
|
|
|
|
//Maybe check if there is anything selected?
|
|
$('#newznab_cat option').each(function() {
|
|
$(this).remove();
|
|
return;
|
|
});
|
|
|
|
var newOptions = [];
|
|
|
|
// When the update botton is clicked, loop through the capabilities list
|
|
// and copy the selected category id's to the category list on the right.
|
|
$('#newznab_cap option').each(function(){
|
|
if($(this).attr('selected') == 'selected')
|
|
{
|
|
var selected_cat = $(this).val();
|
|
console.debug(selected_cat);
|
|
newOptions.push({text: selected_cat, value: selected_cat})
|
|
};
|
|
});
|
|
|
|
$('#newznab_cat').replaceOptions(newOptions);
|
|
|
|
var selectedProvider = $('#editANewznabProvider :selected').val();
|
|
if (selectedProvider == 'addNewznab')
|
|
return;
|
|
|
|
var url = $('#newznab_url').val();
|
|
var key = $('#newznab_key').val();
|
|
|
|
var cat = $('#newznab_cat option').map(function(i, opt) {
|
|
return $(opt).text();
|
|
}).toArray().join(',');
|
|
|
|
$('#newznab_cat option:not([value])').remove();
|
|
|
|
$(this).updateProvider(selectedProvider, url, key, cat);
|
|
|
|
});
|
|
|
|
|
|
$('#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());
|
|
//var cat = $.trim($('#newznab_cat').val());
|
|
|
|
var cat = $.trim($('#newznab_cat option').map(function(i, opt) {
|
|
return $(opt).text();}).toArray().join(','));
|
|
|
|
|
|
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, cat, 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 cookies = $('#torrentrss_cookies').val();
|
|
var params = { name: name, url: url, cookies: cookies}
|
|
|
|
// 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, cookies);
|
|
});
|
|
});
|
|
|
|
$('.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);
|
|
|
|
});
|
|
|
|
|
|
$.fn.replaceOptions = function(options) {
|
|
var self, $option;
|
|
|
|
this.empty();
|
|
self = this;
|
|
|
|
$.each(options, function(index, option) {
|
|
$option = $('<option></option>')
|
|
.attr('value', option.value)
|
|
.text(option.text);
|
|
self.append($option);
|
|
});
|
|
};
|
|
|
|
// initialization stuff
|
|
|
|
|
|
$.fn.newznabProvidersCapabilities = [];
|
|
|
|
$(this).showHideProviders();
|
|
|
|
$('#provider_order_list').sortable({
|
|
placeholder: 'ui-state-highlight',
|
|
update: function (event, ui) {
|
|
$(this).refreshProviderList();
|
|
}
|
|
});
|
|
|
|
$('#provider_order_list').disableSelection();
|
|
|
|
}); |