mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-23 13:25:04 +00:00
872 lines
30 KiB
JavaScript
872 lines
30 KiB
JavaScript
|
/** @namespace JSONData.account_id */
|
|||
|
/** @namespace JSONData.account_name */
|
|||
|
/** @namespace JSONData.error_message */
|
|||
|
/** @namespace JSONData.num_accounts */
|
|||
|
/** @namespace JSONData.chatid */
|
|||
|
$(document).ready(function(){
|
|||
|
var loading = '<img src="' + sbRoot + '/images/loading16' + themeSpinner + '.gif" height="16" width="16" />';
|
|||
|
|
|||
|
$('#test-growl').click(function () {
|
|||
|
var growlHost = $.trim($('#growl-host').val());
|
|||
|
if (!growlHost) {
|
|||
|
$('#test-growl-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#growl-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#growl-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-growl-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-growl',
|
|||
|
{host: growlHost})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-growl-result').html(data);
|
|||
|
$('#test-growl').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-prowl').click(function () {
|
|||
|
var prowlApi = $.trim($('#prowl-api').val());
|
|||
|
var prowlPriority = $('#prowl-priority').val();
|
|||
|
if (!prowlApi) {
|
|||
|
$('#test-prowl-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#prowl-api').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#prowl-api').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-prowl-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-prowl',
|
|||
|
{prowl_api: prowlApi, prowl_priority: prowlPriority})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-prowl-result').html(data);
|
|||
|
$('#test-prowl').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#discover-emby').click(function () {
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#emby-host,#emby-apikey').removeClass('warning');
|
|||
|
$('#test-emby-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/discover-emby')
|
|||
|
.done(function (data) {
|
|||
|
var result = 'Unable to discover a server, is one running?';
|
|||
|
if ('' !== data) {
|
|||
|
$('#emby-host').val(data);
|
|||
|
result = 'Server found.';
|
|||
|
}
|
|||
|
$('#test-emby-result').html(result);
|
|||
|
$('#discover-emby').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-emby').click(function () {
|
|||
|
var host$ = $('#emby-host'), host = $.trim(host$.val());
|
|||
|
var apikey$ = $('#emby-apikey'), apikey = $.trim(apikey$.val());
|
|||
|
if (!host || !apikey) {
|
|||
|
$('#test-emby-result').html('Please fill out the necessary fields above.');
|
|||
|
if (!host) {
|
|||
|
host$.addClass('warning');
|
|||
|
} else {
|
|||
|
host$.removeClass('warning');
|
|||
|
}
|
|||
|
if (!apikey) {
|
|||
|
apikey$.addClass('warning');
|
|||
|
} else {
|
|||
|
apikey$.removeClass('warning');
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#emby-host,#emby-apikey').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-emby-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-emby',
|
|||
|
{host: host, apikey: apikey})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-emby-result').html(data);
|
|||
|
$('#test-emby').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-kodi').click(function () {
|
|||
|
var kodiHost = $.trim($('#kodi-host').val());
|
|||
|
var kodiUsername = $.trim($('#kodi-username').val());
|
|||
|
var kodiPassword = $.trim($('#kodi-password').val());
|
|||
|
if (!kodiHost) {
|
|||
|
$('#test-kodi-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#kodi-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#kodi-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-kodi-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-kodi',
|
|||
|
{host: kodiHost, username: kodiUsername, password: kodiPassword})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-kodi-result').html(data);
|
|||
|
$('#test-kodi').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-xbmc').click(function () {
|
|||
|
var xbmcHost = $.trim($('#xbmc-host').val());
|
|||
|
var xbmcUsername = $.trim($('#xbmc-username').val());
|
|||
|
var xbmcPassword = $.trim($('#xbmc-password').val());
|
|||
|
if (!xbmcHost) {
|
|||
|
$('#test-xbmc-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#xbmc-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#xbmc-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-xbmc-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-xbmc',
|
|||
|
{host: xbmcHost, username: xbmcUsername, password: xbmcPassword})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-xbmc-result').html(data);
|
|||
|
$('#test-xbmc').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
// show instructions for plex when enabled
|
|||
|
$('#use-plex').click(function() {
|
|||
|
if ( $(this).is(':checked') ) {
|
|||
|
$('.plexinfo').removeClass('hide');
|
|||
|
} else {
|
|||
|
$('.plexinfo').addClass('hide');
|
|||
|
}
|
|||
|
});
|
|||
|
if ($('input[id="use-plex"]').is(':checked')) {$('.plexinfo').removeClass('hide')}
|
|||
|
|
|||
|
$('#test-pmc').click(function () {
|
|||
|
var plexHost = $.trim($('#plex-host').val());
|
|||
|
var plexUsername = $.trim($('#plex-username').val());
|
|||
|
var plexPassword = $.trim($('#plex-password').val());
|
|||
|
if (!plexHost) {
|
|||
|
$('#test-pmc-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#plex-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#plex-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-pmc-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-plex',
|
|||
|
{host: plexHost, username: plexUsername, password: plexPassword})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-pmc-result').html(data);
|
|||
|
$('#test-pmc').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-pms').click(function () {
|
|||
|
var plexServerHost = $.trim($('#plex-server-host').val());
|
|||
|
var plexUsername = $.trim($('#plex-username').val());
|
|||
|
var plexPassword = $.trim($('#plex-password').val());
|
|||
|
if (!plexServerHost) {
|
|||
|
$('#test-pms-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#plex-server-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#plex-server-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-pms-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-plex',
|
|||
|
{host: plexServerHost, username: plexUsername, password: plexPassword, server: !0})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-pms-result').html(data);
|
|||
|
$('#test-pms').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-boxcar2').click(function () {
|
|||
|
var boxcarAccesstoken = $.trim($('#boxcar2-access-token').val());
|
|||
|
var boxcarSound = $('#boxcar2-sound').val() || 'default';
|
|||
|
if (!boxcarAccesstoken) {
|
|||
|
$('#test-boxcar2-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#boxcar2-access-token').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#boxcar2-access-token').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-boxcar2-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-boxcar2',
|
|||
|
{access_token: boxcarAccesstoken, sound: boxcarSound})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-boxcar2-result').html(data);
|
|||
|
$('#test-boxcar2').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-pushover').click(function () {
|
|||
|
var pushover$ = $('#pushover-userkey'), pushoverUserkey = $.trim(pushover$.val()),
|
|||
|
pushoverApikey$ = $('#pushover-apikey'), pushoverApikey = $.trim(pushoverApikey$.val()),
|
|||
|
pushoverPriority = $('#pushover-priority').val(),
|
|||
|
pushoverDevice = $('#pushover-device').val(),
|
|||
|
pushoverSound = $('#pushover-sound').val(),
|
|||
|
testResult$ = $('#test-pushover-result');
|
|||
|
|
|||
|
if (!pushoverUserkey || !pushoverApikey) {
|
|||
|
testResult$.html('Please fill out the necessary fields above.');
|
|||
|
if (!pushoverUserkey) {
|
|||
|
pushover$.addClass('warning');
|
|||
|
} else {
|
|||
|
pushover$.removeClass('warning');
|
|||
|
}
|
|||
|
if (!pushoverApikey) {
|
|||
|
pushoverApikey$.addClass('warning');
|
|||
|
} else {
|
|||
|
pushoverApikey$.removeClass('warning');
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#pushover-userkey,#pushover-apikey').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
testResult$.html(loading);
|
|||
|
$.get(sbRoot + '/home/test-pushover',
|
|||
|
{user_key: pushoverUserkey, api_key: pushoverApikey, priority: pushoverPriority,
|
|||
|
device: pushoverDevice, sound: pushoverSound})
|
|||
|
.done(function (data) {
|
|||
|
testResult$.html(data);
|
|||
|
$('#test-pushover').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
function getPushoverDevices (msg) {
|
|||
|
var pushoverUserkey = $.trim($('#pushover-userkey').val());
|
|||
|
var pushoverApikey = $.trim($('#pushover-apikey').val());
|
|||
|
if (!pushoverUserkey || !pushoverApikey) {
|
|||
|
$('#test-pushover-result').html('Please fill out the necessary fields above.');
|
|||
|
if (!pushoverUserkey) {
|
|||
|
$('#pushover-userkey').addClass('warning');
|
|||
|
} else {
|
|||
|
$('#pushover-userkey').removeClass('warning');
|
|||
|
}
|
|||
|
if (!pushoverApikey) {
|
|||
|
$('#pushover-apikey').addClass('warning');
|
|||
|
} else {
|
|||
|
$('#pushover-apikey').removeClass('warning');
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
if (msg) {
|
|||
|
$('#test-pushover-result').html(loading);
|
|||
|
}
|
|||
|
var currentPushoverDevice = $('#pushover-device').val();
|
|||
|
$.get(sbRoot + '/home/get-pushover-devices',
|
|||
|
{user_key: pushoverUserkey, api_key: pushoverApikey})
|
|||
|
.done(function (data) {
|
|||
|
var devices = jQuery.parseJSON(data || '{}').devices;
|
|||
|
$('#pushover-device-list').html('');
|
|||
|
// add default option to send to all devices
|
|||
|
$('#pushover-device-list').append('<option value="all" selected="selected">-- All Devices --</option>');
|
|||
|
if (devices) {
|
|||
|
for (var i = 0; i < devices.length; i++) {
|
|||
|
// if a device in the list matches our current iden, select it
|
|||
|
if (currentPushoverDevice === devices[i]) {
|
|||
|
$('#pushover-device-list').append('<option value="' + devices[i] + '" selected="selected">' + devices[i] + '</option>');
|
|||
|
} else {
|
|||
|
$('#pushover-device-list').append('<option value="' + devices[i] + '">' + devices[i] + '</option>');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$('#get-pushoverDevices').prop('disabled', !1);
|
|||
|
if (msg) {
|
|||
|
$('#test-pushover-result').html(msg);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#pushover-device-list').change(function () {
|
|||
|
$('#pushover-device').val($('#pushover-device-list').val());
|
|||
|
$('#test-pushover-result').html('Don\'t forget to save your new Pushover settings.');
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
$('#get-pushoverDevices').click(function () {
|
|||
|
getPushoverDevices('Device list updated. Select specific device to use.');
|
|||
|
});
|
|||
|
|
|||
|
if ($('#use-pushover').prop('checked')) {
|
|||
|
getPushoverDevices();
|
|||
|
}
|
|||
|
|
|||
|
$('#test-libnotify').click(function() {
|
|||
|
$('#test-libnotify-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-libnotify',
|
|||
|
function (data) { $('#test-libnotify-result').html(data); });
|
|||
|
});
|
|||
|
|
|||
|
$('#settings-nmj').click(function() {
|
|||
|
if (!$('#nmj-host').val()) {
|
|||
|
alert('Please fill in the Popcorn IP address');
|
|||
|
$('#nmj-host').focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#test-nmj-result').html(loading);
|
|||
|
var nmjHost = $('#nmj-host').val();
|
|||
|
|
|||
|
$.get(sbRoot + '/home/settings-nmj',
|
|||
|
{host: nmjHost},
|
|||
|
function (data) {
|
|||
|
if (null === data) {
|
|||
|
$('#nmj-database').removeAttr('readonly');
|
|||
|
$('#nmj-mount').removeAttr('readonly');
|
|||
|
}
|
|||
|
var JSONData = $.parseJSON(data);
|
|||
|
$('#test-nmj-result').html(JSONData.message);
|
|||
|
$('#nmj-database').val(JSONData.database);
|
|||
|
$('#nmj-mount').val(JSONData.mount);
|
|||
|
|
|||
|
if (JSONData.database) {
|
|||
|
$('#nmj-database').attr('readonly', !0);
|
|||
|
} else {
|
|||
|
$('#nmj-database').removeAttr('readonly');
|
|||
|
}
|
|||
|
if (JSONData.mount) {
|
|||
|
$('#nmj-mount').attr('readonly', !0);
|
|||
|
} else {
|
|||
|
$('#nmj-mount').removeAttr('readonly');
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-nmj').click(function () {
|
|||
|
var nmjHost = $.trim($('#nmj-host').val());
|
|||
|
var nmjDatabase = $('#nmj-database').val();
|
|||
|
var nmjMount = $('#nmj-mount').val();
|
|||
|
if (!nmjHost) {
|
|||
|
$('#test-nmj-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#nmj-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#nmj-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-nmj-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-nmj',
|
|||
|
{host: nmjHost, database: nmjDatabase, mount: nmjMount})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-nmj-result').html(data);
|
|||
|
$('#test-nmj').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#settings-nmjv2').click(function() {
|
|||
|
if (!$('#nmjv2-host').val()) {
|
|||
|
alert('Please fill in the Popcorn IP address');
|
|||
|
$('#nmjv2-host').focus();
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#test-nmjv2-result').html(loading);
|
|||
|
var nmjv2Host = $('#nmjv2-host').val();
|
|||
|
var nmjv2Dbloc;
|
|||
|
var radios = document.getElementsByName('nmjv2_dbloc');
|
|||
|
for (var i = 0; i < radios.length; i++) {
|
|||
|
if (radios[i].checked) {
|
|||
|
nmjv2Dbloc=radios[i].value;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var nmjv2Dbinstance=$('#NMJv2db-instance').val();
|
|||
|
$.get(sbRoot + '/home/settings-nmj2',
|
|||
|
{host: nmjv2Host,dbloc: nmjv2Dbloc,instance: nmjv2Dbinstance},
|
|||
|
function (data){
|
|||
|
if (null === data) {
|
|||
|
$('#nmjv2-database').removeAttr('readonly');
|
|||
|
}
|
|||
|
var JSONData = $.parseJSON(data);
|
|||
|
$('#test-nmjv2-result').html(JSONData.message);
|
|||
|
$('#nmjv2-database').val(JSONData.database);
|
|||
|
|
|||
|
if (JSONData.database)
|
|||
|
$('#nmjv2-database').attr('readonly', !0);
|
|||
|
else
|
|||
|
$('#nmjv2-database').removeAttr('readonly');
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-nmjv2').click(function () {
|
|||
|
var nmjv2Host = $.trim($('#nmjv2-host').val());
|
|||
|
if (!nmjv2Host) {
|
|||
|
$('#test-nmjv2-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#nmjv2-host').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#nmjv2-host').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-nmjv2-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-nmj2',
|
|||
|
{host: nmjv2Host})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-nmjv2-result').html(data);
|
|||
|
$('#test-nmjv2').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-pushalot').click(function () {
|
|||
|
var pushalotAuthorizationtoken = $.trim($('#pushalot-authorizationtoken').val());
|
|||
|
if (!pushalotAuthorizationtoken) {
|
|||
|
$('#test-pushalot-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#pushalot-authorizationtoken').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#pushalot-authorizationtoken').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-pushalot-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-pushalot',
|
|||
|
{authorization_token: pushalotAuthorizationtoken})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-pushalot-result').html(data);
|
|||
|
$('#test-pushalot').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-pushbullet').click(function () {
|
|||
|
var pushbulletAccessToken = $.trim($('#pushbullet-access-token').val());
|
|||
|
var pushbulletDeviceIden = $('#pushbullet-device-iden').val();
|
|||
|
if (!pushbulletAccessToken) {
|
|||
|
$('#test-pushbullet-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#pushbullet-access-token').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$('#pushbullet-access-token').removeClass('warning');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-pushbullet-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-pushbullet',
|
|||
|
{access_token: pushbulletAccessToken, device_iden: pushbulletDeviceIden})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-pushbullet-result').html(data);
|
|||
|
$('#test-pushbullet').prop('disabled', !1);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-slack').click(function () {
|
|||
|
var channel = '#slack-channel', slackChannel = $(channel).val(),
|
|||
|
slackAsAuthed = $('#slack-as-authed').prop('checked'),
|
|||
|
slackBotName = $('#slack-bot-name').val(), slackIconUrl = $('#slack-icon-url').val(),
|
|||
|
accessToken = '#slack-access-token', slackAccessToken = $(accessToken).val();
|
|||
|
|
|||
|
$(channel + ', ' + accessToken).removeClass('warning');
|
|||
|
if (!slackChannel || !slackAccessToken) {
|
|||
|
$('#test-slack-result').html('Please fill out the necessary fields above.');
|
|||
|
if (!slackChannel)
|
|||
|
$(channel).addClass('warning');
|
|||
|
if (!slackAccessToken)
|
|||
|
$(accessToken).addClass('warning');
|
|||
|
} else {
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-slack-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-slack',
|
|||
|
{channel: slackChannel, as_authed: slackAsAuthed, bot_name: slackBotName,
|
|||
|
icon_url: slackIconUrl, access_token: slackAccessToken})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-slack-result').html(data);
|
|||
|
$('#test-slack').prop('disabled', !1);
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#test-discord').click(function () {
|
|||
|
var discordAsAuthed = $('#discord-as-authed').prop('checked'),
|
|||
|
discordUsername = $('#discord-username').val(), discordIconUrl = $('#discord-icon-url').val(),
|
|||
|
discordAsTts = $('#discord-as-tts').prop('checked'),
|
|||
|
accessToken = '#discord-access-token', discordAccessToken = $(accessToken).val();
|
|||
|
|
|||
|
$(accessToken).removeClass('warning');
|
|||
|
if (!discordAccessToken) {
|
|||
|
$('#test-discord-result').html('Please fill out the necessary fields above.');
|
|||
|
if (!discordAccessToken)
|
|||
|
$(accessToken).addClass('warning');
|
|||
|
} else {
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-discord-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-discord',
|
|||
|
{as_authed: discordAsAuthed, username: discordUsername, icon_url: discordIconUrl,
|
|||
|
as_tts: discordAsTts, access_token: discordAccessToken})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-discord-result').html(data);
|
|||
|
$('#test-discord').prop('disabled', !1);
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#test-gitter').click(function () {
|
|||
|
var gitterRoom = $('#gitter-room').val(),
|
|||
|
accessToken = '#gitter-access-token', gitterAccessToken = $(accessToken).val();
|
|||
|
|
|||
|
$(accessToken).removeClass('warning');
|
|||
|
if (!gitterAccessToken) {
|
|||
|
$('#test-gitter-result').html('Please fill out the necessary fields above.');
|
|||
|
if (!gitterAccessToken)
|
|||
|
$(accessToken).addClass('warning');
|
|||
|
} else {
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-gitter-result').html(loading);
|
|||
|
$.get(sbRoot + '/home/test-gitter',
|
|||
|
{room_name: gitterRoom, access_token: gitterAccessToken})
|
|||
|
.done(function (data) {
|
|||
|
$('#test-gitter-result').html(data);
|
|||
|
$('#test-gitter').prop('disabled', !1);
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#test-telegram').click(function () {
|
|||
|
var telegramSendImage = $('#telegram-send-image').prop('checked'),
|
|||
|
telegramQuiet = $('#telegram-quiet').prop('checked'),
|
|||
|
accessToken = '#telegram-access-token', telegramAccessToken = $(accessToken).val().replace(/\s/g, ''),
|
|||
|
chatid = '#telegram-chatid', telegramChatid = $(chatid).val().replace(/\s/g, '');
|
|||
|
|
|||
|
$(accessToken + ', ' + chatid).removeClass('warning');
|
|||
|
if (!telegramAccessToken) {
|
|||
|
$('#test-telegram-result').html('Please fill out the necessary fields above.');
|
|||
|
$(accessToken).addClass('warning');
|
|||
|
} else {
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
$('#test-telegram-result').html(loading);
|
|||
|
$.getJSON(sbRoot + '/home/test-telegram',
|
|||
|
{send_icon: telegramSendImage, access_token: telegramAccessToken, chatid: telegramChatid, quiet: telegramQuiet})
|
|||
|
.done(function (JSONdata) {
|
|||
|
$('#test-telegram-result').html(JSONdata.result);
|
|||
|
if ('' === telegramChatid) {
|
|||
|
if ('' === JSONdata.chatid) {
|
|||
|
$(chatid).addClass('warning');
|
|||
|
} else {
|
|||
|
$(chatid).val(JSONdata.chatid);
|
|||
|
}
|
|||
|
}
|
|||
|
$('#test-telegram').prop('disabled', !1);
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('.config_submitter').click(function (e) {
|
|||
|
if ($('#use-telegram').prop('checked')){
|
|||
|
var chatid$ = $('#telegram-chatid');
|
|||
|
if ('' === chatid$.val().replace(/\s/g, '')){
|
|||
|
chatid$.addClass('warning');
|
|||
|
alert('Cannot save, Telegram is enabled and the chat id field needs attention');
|
|||
|
e.preventDefault();
|
|||
|
return !1;
|
|||
|
} else {
|
|||
|
chatid$.removeClass('warning');
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
function getPushbulletDevices (msg) {
|
|||
|
var pushbulletAccessToken = $.trim($('#pushbullet-access-token').val());
|
|||
|
if (!pushbulletAccessToken) {
|
|||
|
$('#test-pushbullet-result').html('Please fill out the necessary fields above.');
|
|||
|
$('#pushbullet-access-token').addClass('warning');
|
|||
|
return;
|
|||
|
}
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
if (msg) {
|
|||
|
$('#test-pushbullet-result').html(loading);
|
|||
|
}
|
|||
|
var currentPushbulletDevice = $('#pushbullet-device-iden').val();
|
|||
|
$.get(sbRoot + '/home/get-pushbullet-devices',
|
|||
|
{access_token: pushbulletAccessToken})
|
|||
|
.done(function (data) {
|
|||
|
var devices = jQuery.parseJSON(data || '{}').devices;
|
|||
|
var error = jQuery.parseJSON(data || '{}').error;
|
|||
|
$('#pushbullet-device-list').html('');
|
|||
|
if (devices) {
|
|||
|
// add default option to send to all devices
|
|||
|
$('#pushbullet-device-list').append('<option value="" selected="selected">-- All Devices --</option>');
|
|||
|
for (var i = 0; i < devices.length; i++) {
|
|||
|
// only list active device targets
|
|||
|
if (!0 === devices[i].active) {
|
|||
|
// if a device in the list matches our current iden, select it
|
|||
|
if (currentPushbulletDevice === devices[i].iden) {
|
|||
|
$('#pushbullet-device-list').append('<option value="' + devices[i].iden + '" selected="selected">' + devices[i].manufacturer + ' ' + devices[i].nickname + '</option>');
|
|||
|
} else {
|
|||
|
$('#pushbullet-device-list').append('<option value="' + devices[i].iden + '">' + devices[i].manufacturer + ' ' + devices[i].nickname + '</option>');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$('#get-pushbulletDevices').prop('disabled', !1);
|
|||
|
if (msg) {
|
|||
|
if (error.message) {
|
|||
|
$('#test-pushbullet-result').html(error.message);
|
|||
|
} else {
|
|||
|
$('#test-pushbullet-result').html(msg);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#pushbullet-device-list').change(function () {
|
|||
|
$('#pushbullet-device-iden').val($('#pushbullet-device-list').val());
|
|||
|
$('#test-pushbullet-result').html('Don\'t forget to save your new Pushbullet settings.');
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
$('#get-pushbulletDevices').click(function () {
|
|||
|
getPushbulletDevices('Device list updated. Select specific device to use.');
|
|||
|
});
|
|||
|
|
|||
|
if ($('#use-pushbullet').prop('checked')) {
|
|||
|
getPushbulletDevices();
|
|||
|
}
|
|||
|
|
|||
|
var elTraktAuth = $('#trakt-authenticate'), elTraktAuthResult = $('#trakt-authentication-result');
|
|||
|
|
|||
|
function traktSendAuth(){
|
|||
|
var elAccountSelect = $('#trakt-accounts'), strCurAccountId = elAccountSelect.find('option:selected').val(),
|
|||
|
elTraktPin = $('#trakt-pin'), strPin = $.trim(elTraktPin.val());
|
|||
|
|
|||
|
elTraktAuthResult.html(loading);
|
|||
|
|
|||
|
$.get(sbRoot + '/home/trakt-authenticate',
|
|||
|
{pin: strPin, account: strCurAccountId})
|
|||
|
.done(function(data) {
|
|||
|
elTraktAuth.prop('disabled', !1);
|
|||
|
elTraktPin.val('');
|
|||
|
|
|||
|
var JSONData = $.parseJSON(data);
|
|||
|
|
|||
|
elTraktAuthResult.html('Success' === JSONData.result
|
|||
|
? JSONData.result + ' account: ' + JSONData.account_name
|
|||
|
: JSONData.result + ' ' + JSONData.error_message);
|
|||
|
|
|||
|
if ('Success' === JSONData.result) {
|
|||
|
var elUpdateRows = $('#trakt-collection').find('tr');
|
|||
|
if ('new' === strCurAccountId) {
|
|||
|
elAccountSelect.append($('<option>', {value: JSONData.account_id, text: JSONData.account_id + ' - ' + JSONData.account_name + ' (ok)'}));
|
|||
|
|
|||
|
if ('Connect New Pin' === elUpdateRows.eq(0).find('th').last().text()) {
|
|||
|
elUpdateRows.eq(0).find('th').last().html('Account');
|
|||
|
elUpdateRows.eq(1).find('th').last().html(JSONData.account_name);
|
|||
|
elUpdateRows.eq(1).find('th').last().addClass('tid-' + JSONData.account_id);
|
|||
|
elUpdateRows.has('td').each(function(nRow) {
|
|||
|
var elCells = $(this).find('td');
|
|||
|
if (!(nRow % 2)) {
|
|||
|
var IdLoc = 'update-trakt-' + JSONData.account_id + '-' + elCells.eq(0).find('span').attr('data-loc');
|
|||
|
elCells.last().html('<input type="checkbox" id="' + IdLoc + '" name="' + IdLoc + '">');
|
|||
|
} else {
|
|||
|
elCells.attr('colspan', 1);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
elUpdateRows.eq(0).find('th').last().html('Trakt accounts');
|
|||
|
elUpdateRows.eq(0).find('th').last().attr('colspan', 1 + parseInt(elUpdateRows.eq(0).find('th').last().attr('colspan'), 10));
|
|||
|
elUpdateRows.eq(1).find('th').last().after('<th>' + JSONData.account_name + '</th>');
|
|||
|
elUpdateRows.eq(1).find('th').last().addClass('tid-' + JSONData.account_id);
|
|||
|
elUpdateRows.has('td').each(function(nRow) {
|
|||
|
var elCells = $(this).find('td');
|
|||
|
if (!(nRow % 2)) {
|
|||
|
var IdLoc = 'update-trakt-' + JSONData.account_id + '-' + elCells.eq(0).find('span').attr('data-loc');
|
|||
|
elCells.last().after('<td class="opt"><input type="checkbox" id="' + IdLoc + '" name="' + IdLoc + '"></td>');
|
|||
|
} else {
|
|||
|
elCells.attr('colspan', 1 + parseInt(elCells.attr('colspan'), 10));
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
elAccountSelect.find('option[value=' + strCurAccountId + ']').html(JSONData.account_id + ' - ' + JSONData.account_name + ' (ok)');
|
|||
|
elUpdateRows.eq(1).find('th[class*="tid-' + JSONData.account_id + '"]').text(JSONData.account_name);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
elTraktAuth.click(function(e) {
|
|||
|
var elTraktPin = $('#trakt-pin');
|
|||
|
|
|||
|
elTraktPin.removeClass('warning');
|
|||
|
if (!$.trim(elTraktPin.val())) {
|
|||
|
elTraktPin.addClass('warning');
|
|||
|
elTraktAuthResult.html('Please enter a required PIN above.');
|
|||
|
} else {
|
|||
|
var elAccountSelect = $('#trakt-accounts'), elSelected = elAccountSelect.find('option:selected');
|
|||
|
$(this).prop('disabled', !0);
|
|||
|
if ('new' !== elSelected.val()) {
|
|||
|
$.confirm({
|
|||
|
'title' : 'Replace Trakt Account',
|
|||
|
'message' : 'Are you sure you want to replace <span class="footerhighlight">' + elSelected.text() + '</span> ?<br /><br />',
|
|||
|
'buttons' : {
|
|||
|
'Yes' : {
|
|||
|
'class' : 'green',
|
|||
|
'action': function() {
|
|||
|
traktSendAuth();
|
|||
|
}
|
|||
|
},
|
|||
|
'No' : {
|
|||
|
'class' : 'red',
|
|||
|
'action': function() {
|
|||
|
e.preventDefault();
|
|||
|
elTraktAuth.prop('disabled', !1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
traktSendAuth();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$('#trakt-accounts').change(function() {
|
|||
|
$('#trakt-delete').prop('disabled', 'new' === $('#trakt-accounts').val());
|
|||
|
});
|
|||
|
|
|||
|
$('#trakt-delete').click(function(e) {
|
|||
|
var elAccountSelect = $('#trakt-accounts'), elSelected = elAccountSelect.find('option:selected'), that = $(this);
|
|||
|
|
|||
|
that.prop('disabled', !0);
|
|||
|
$.confirm({
|
|||
|
'title' : 'Remove Trakt Account',
|
|||
|
'message' : 'Are you sure you want to remove <span class="footerhighlight">' + elSelected.text() + '</span> ?<br /><br />',
|
|||
|
'buttons' : {
|
|||
|
'Yes' : {
|
|||
|
'class' : 'green',
|
|||
|
'action': function() {
|
|||
|
$.get(sbRoot + '/home/trakt-delete',
|
|||
|
{accountid: elSelected.val()})
|
|||
|
.done(function(data) {
|
|||
|
that.prop('disabled', !1);
|
|||
|
var JSONData = $.parseJSON(data);
|
|||
|
if ('Success' === JSONData.result) {
|
|||
|
var elCollection = $('#trakt-collection'), elUpdateRows = elCollection.find('tr'),
|
|||
|
header = elCollection.find('th[class*="tid-' + JSONData.account_id + '"]'),
|
|||
|
numAcc = parseInt(JSONData.num_accounts, 10);
|
|||
|
|
|||
|
elUpdateRows.eq(0).find('th').last().html(!numAcc && '<i>Connect New Pin</i>' ||
|
|||
|
(1 < numAcc ? 'Trakt accounts' : 'Account'));
|
|||
|
elUpdateRows.find('th[colspan]').attr('colspan', 1 < numAcc ? numAcc : 1);
|
|||
|
|
|||
|
!numAcc && header.html('..') || header.remove();
|
|||
|
|
|||
|
var elInputs = elUpdateRows.find('input[id*=update-trakt-' + JSONData.account_id + ']');
|
|||
|
!numAcc && elInputs.parent().html('..') || elInputs.parent().remove();
|
|||
|
|
|||
|
elUpdateRows.find('td[colspan]').each(function() {
|
|||
|
$(this).attr('colspan', (numAcc ? 1 + numAcc : 2))
|
|||
|
});
|
|||
|
|
|||
|
elSelected.remove();
|
|||
|
$('#trakt-accounts').change();
|
|||
|
|
|||
|
elTraktAuthResult.html('Deleted account: ' + JSONData.account_name);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
'No' : {
|
|||
|
'class' : 'red',
|
|||
|
'action': function() {
|
|||
|
e.preventDefault();
|
|||
|
$('#trakt-accounts').change();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
function loadShowNotifyLists() {
|
|||
|
$.get(sbRoot + '/home/load-show-notify-lists', function (data) {
|
|||
|
var list, html, item, len= 0, el;
|
|||
|
list = $.parseJSON(data);
|
|||
|
html = [];
|
|||
|
for (item in list) {
|
|||
|
for (var k in list[item]) {
|
|||
|
if ($.isArray(list[item][k])) {
|
|||
|
len += list[item][k].length;
|
|||
|
html.push('\t<optgroup label="' + k + '">');
|
|||
|
for (var show in list[item][k]) {
|
|||
|
html.push('\t\t<option value="' + list[item][k][show].id + '"'
|
|||
|
+ ' data="' + list[item][k][show].list + '"'
|
|||
|
+ '>' + list[item][k][show].name + '</option>');
|
|||
|
}
|
|||
|
html.push('\t</optgroup>');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (len) {
|
|||
|
el = $('#email-show');
|
|||
|
el.html('<option value="-1">-- Select show --</option>'
|
|||
|
+ html.join('\n'));
|
|||
|
|
|||
|
$('#show-email-list').val('');
|
|||
|
|
|||
|
el.change(function () {
|
|||
|
$('#show-email-list').val(
|
|||
|
$(this).find('option[value="' + $(this).val() + '"]').attr('data'))
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
// Load the per show notify lists everytime this page is loaded
|
|||
|
loadShowNotifyLists();
|
|||
|
|
|||
|
// Update the internal data struct anytime settings are saved to the server
|
|||
|
$('#email-show').bind('notify', function () { loadShowNotifyLists(); });
|
|||
|
|
|||
|
$('#save-show-email').click(
|
|||
|
function(){
|
|||
|
var show = $('#email-show').val();
|
|||
|
if ('-1' === show) {
|
|||
|
$('#test-email-result').html('No show selected for save.');
|
|||
|
return
|
|||
|
}
|
|||
|
$.post(sbRoot + '/home/save-show-email', {
|
|||
|
_xsrf: Cookies.get('_xsrf'),
|
|||
|
show: show,
|
|||
|
emails: $('#show-email-list').val()},
|
|||
|
function (data){
|
|||
|
// Reload the per show notify lists to reflect changes
|
|||
|
loadShowNotifyLists();
|
|||
|
var result = $.parseJSON(data),
|
|||
|
show = $('#email-show').find('option[value="' + result.id + '"]').text();
|
|||
|
$('#test-email-result').html(result.success
|
|||
|
? 'Success. Notify list updated for show "' + show + '". Click below to test.'
|
|||
|
: 'Error saving notify list for show %s' % show);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
$('#test-email').click(function () {
|
|||
|
var status, host, port, tls, from, user, pwd, err, to;
|
|||
|
status = $('#test-email-result');
|
|||
|
status.html(loading);
|
|||
|
host = $('#email-host').val();
|
|||
|
host = host.length > 0 ? host : null;
|
|||
|
port = $('#email-port').val();
|
|||
|
port = port.length > 0 ? port : null;
|
|||
|
tls = $('#email-tls').attr('checked') !== undefined ? 1 : 0;
|
|||
|
from = $('#email-from').val();
|
|||
|
from = from.length > 0 ? from : 'root@localhost';
|
|||
|
user = $('#email-user').val().trim();
|
|||
|
pwd = $('#email-password').val();
|
|||
|
err = [];
|
|||
|
if (null === host) {
|
|||
|
err.push('SMTP server hostname');
|
|||
|
}
|
|||
|
if (null === port) {
|
|||
|
err.push('SMTP server host port');
|
|||
|
} else if (null === port.match(/^\d+$/) || parseInt(port, 10) > 65535) {
|
|||
|
err.push('SMTP server host port must be between 0 and 65535');
|
|||
|
}
|
|||
|
if (0 < err.length) {
|
|||
|
status.html('Required: ' + err.join(', '));
|
|||
|
} else {
|
|||
|
to = prompt('Enter an email address to send the test to:', '');
|
|||
|
if (null === to || 0 === to.length || null === to.match(/.*@.*/)) {
|
|||
|
status.html('Required: A valid address for email test');
|
|||
|
} else {
|
|||
|
$.get(sbRoot + '/home/test-email',
|
|||
|
{host:host, port:port, smtp_from:from, use_tls:tls, user:user, pwd:pwd, to:to},
|
|||
|
function(msg) {$('#test-email-result').html(msg);});
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
});
|