diff --git a/data/interfaces/default/history.html b/data/interfaces/default/history.html
index 59cbce86..1ba96806 100644
--- a/data/interfaces/default/history.html
+++ b/data/interfaces/default/history.html
@@ -122,7 +122,6 @@
});
function loadHistoryTable(media_type, selected_user_id) {
- console.log(selected_user_id)
history_table_options.ajax = {
url: 'get_history',
type: 'post',
@@ -150,7 +149,6 @@
$('#history-user').on('change', function () {
selected_user_id = $(this).val() || null;
- console.log(selected_user_id)
history_table.draw();
});
}
diff --git a/data/interfaces/default/js/script.js b/data/interfaces/default/js/script.js
index c163b855..30f85a4e 100644
--- a/data/interfaces/default/js/script.js
+++ b/data/interfaces/default/js/script.js
@@ -1,181 +1,179 @@
function initConfigCheckbox(elem) {
- var config = $(elem).parent().next();
- if ( $(elem).is(":checked") ) {
- config.show();
- } else {
- config.hide();
- }
- $(elem).click(function(){
- var config = $(this).parent().next();
- if ( $(this).is(":checked") ) {
- config.slideDown();
- } else {
- config.slideUp();
- }
- });
-}
-
-function refreshTab() {
- var url = $(location).attr('href');
- var tabId = $('.ui-tabs-panel:visible').attr("id");
- $('.ui-tabs-panel:visible').load(url + " #"+ tabId, function() {
- initThisPage();
- });
+ var config = $(elem).closest('div').next();
+ config.css('overflow', 'hidden');
+ if ($(elem).is(":checked")) {
+ config.show();
+ } else {
+ config.hide();
+ }
+ $(elem).click(function () {
+ var config = $(this).closest('div').next();
+ if ($(this).is(":checked")) {
+ config.slideDown();
+ } else {
+ config.slideUp();
+ }
+ });
}
-function showMsg(msg,loader,timeout,ms,error) {
- var feedback = $("#ajaxMsg");
- update = $("#updatebar");
- if ( update.is(":visible") ) {
- var height = update.height() + 35;
- feedback.css("bottom",height + "px");
- } else {
- feedback.removeAttr("style");
- }
- var message = $("
" + msg + "
");
- if (loader) {
- var message = $(" " + msg + "");
- feedback.css("padding","14px 10px")
- }
- if (error) {
- feedback.css("background-color", "rgba(255,0,0,0.5)");
- }
- $(feedback).html(message);
- feedback.fadeIn();
+function refreshTab() {
+ var url = $(location).attr('href');
+ var tabId = $('.ui-tabs-panel:visible').attr("id");
+ $('.ui-tabs-panel:visible').load(url + " #" + tabId, function () {
+ initThisPage();
+ });
+}
- if (timeout) {
- setTimeout(function(){
- message.fadeOut(function(){
- $(this).remove();
- feedback.fadeOut();
- feedback.css("background-color", "");
- });
- },ms);
- }
+function showMsg(msg, loader, timeout, ms, error) {
+ var feedback = $("#ajaxMsg");
+ update = $("#updatebar");
+ if (update.is(":visible")) {
+ var height = update.height() + 35;
+ feedback.css("bottom", height + "px");
+ } else {
+ feedback.removeAttr("style");
+ }
+ var message = $("" + msg + "
");
+ if (loader) {
+ var message = $(" " + msg + "");
+ feedback.css("padding", "14px 10px")
+ }
+ if (error) {
+ feedback.css("background-color", "rgba(255,0,0,0.5)");
+ }
+ $(feedback).html(message);
+ feedback.fadeIn();
+ if (timeout) {
+ setTimeout(function () {
+ message.fadeOut(function () {
+ $(this).remove();
+ feedback.fadeOut();
+ feedback.css("background-color", "");
+ });
+ }, ms);
+ }
}
function doAjaxCall(url, elem, reload, form, callback) {
- // Set Message
- feedback = $("#ajaxMsg");
- update = $("#updatebar");
- if ( update.is(":visible") ) {
- var height = update.height() + 35;
- feedback.css("bottom",height + "px");
- } else {
- feedback.removeAttr("style");
- }
-
- feedback.fadeIn();
- // Get Form data
- var formID = "#"+url;
- if ( form == true ) {
- var dataString = $(formID).serialize();
- }
- // Loader Image
- var loader = $("");
- // Data Success Message
- var dataSucces = $(elem).data('success');
- if (typeof dataSucces === "undefined") {
- // Standard Message when variable is not set
- var dataSucces = "Success!";
- }
- // Data Errror Message
- var dataError = $(elem).data('error');
- if (typeof dataError === "undefined") {
- // Standard Message when variable is not set
- var dataError = "There was an error";
- }
- // Get Success & Error message from inline data, else use standard message
- var succesMsg = $(" " + dataSucces + "
");
- var errorMsg = $(" " + dataError + "
");
-
- // Check if checkbox is selected
- if ( form ) {
- if ( $('td#select input[type=checkbox]').length > 0 && !$('td#select input[type=checkbox]').is(':checked') || $('#importLastFM #username:visible').length > 0 && $("#importLastFM #username" ).val().length === 0 ) {
- feedback.addClass('error')
- $(feedback).prepend(errorMsg);
- setTimeout(function(){
- errorMsg.fadeOut(function(){
- $(this).remove();
- feedback.fadeOut(function(){
- feedback.removeClass('error');
- });
- })
- $(formID + " select").children('option[disabled=disabled]').attr('selected','selected');
- },2000);
- return false;
- }
- }
-
- // Ajax Call
- $.ajax({
- url: url,
- data: dataString,
- type: 'post',
- beforeSend: function(jqXHR, settings) {
- // Start loader etc.
- feedback.prepend(loader);
- },
- error: function(jqXHR, textStatus, errorThrown) {
- feedback.addClass('error')
- feedback.prepend(errorMsg);
- setTimeout(function(){
- errorMsg.fadeOut(function(){
- $(this).remove();
- feedback.fadeOut(function(){
- feedback.removeClass('error')
- });
- })
- },2000);
- },
- success: function(data,jqXHR) {
- feedback.prepend(succesMsg);
- feedback.addClass('success')
- setTimeout(function(e){
- succesMsg.fadeOut(function(){
- $(this).remove();
- feedback.fadeOut(function(){
- feedback.removeClass('success');
- });
- if ( reload == true ) refreshSubmenu();
- if ( reload == "table") {
- console.log('refresh'); refreshTable();
- }
- if ( reload == "tabs") refreshTab();
- if ( reload == "page") location.reload();
- if ( reload == "submenu&table") {
- refreshSubmenu();
- refreshTable();
- }
- if ( form ) {
- // Change the option to 'choose...'
- $(formID + " select").children('option[disabled=disabled]').attr('selected','selected');
- }
- })
- },2000);
- },
- complete: function(jqXHR, textStatus) {
- // Remove loaders and stuff, ajax request is complete!
- loader.remove();
- if (typeof callback === "function") {
- callback();
- }
- }
- });
+ // Set Message
+ feedback = $("#ajaxMsg");
+ update = $("#updatebar");
+ if (update.is(":visible")) {
+ var height = update.height() + 35;
+ feedback.css("bottom", height + "px");
+ } else {
+ feedback.removeAttr("style");
+ }
+ feedback.fadeIn();
+ // Get Form data
+ var formID = "#" + url;
+ if (form == true) {
+ var dataString = $(formID).serialize();
+ }
+ // Loader Image
+ var loader = $("");
+ // Data Success Message
+ var dataSucces = $(elem).data('success');
+ if (typeof dataSucces === "undefined") {
+ // Standard Message when variable is not set
+ var dataSucces = "Success!";
+ }
+ // Data Errror Message
+ var dataError = $(elem).data('error');
+ if (typeof dataError === "undefined") {
+ // Standard Message when variable is not set
+ var dataError = "There was an error";
+ }
+ // Get Success & Error message from inline data, else use standard message
+ var succesMsg = $(" " + dataSucces + "
");
+ var errorMsg = $(" " + dataError + "
");
+ // Check if checkbox is selected
+ if (form) {
+ if ($('td#select input[type=checkbox]').length > 0 && !$('td#select input[type=checkbox]').is(':checked') ||
+ $('#importLastFM #username:visible').length > 0 && $("#importLastFM #username").val().length === 0) {
+ feedback.addClass('error')
+ $(feedback).prepend(errorMsg);
+ setTimeout(function () {
+ errorMsg.fadeOut(function () {
+ $(this).remove();
+ feedback.fadeOut(function () {
+ feedback.removeClass('error');
+ });
+ })
+ $(formID + " select").children('option[disabled=disabled]').attr('selected', 'selected');
+ }, 2000);
+ return false;
+ }
+ }
+ // Ajax Call
+ $.ajax({
+ url: url,
+ data: dataString,
+ type: 'post',
+ beforeSend: function (jqXHR, settings) {
+ // Start loader etc.
+ feedback.prepend(loader);
+ },
+ error: function (jqXHR, textStatus, errorThrown) {
+ feedback.addClass('error')
+ feedback.prepend(errorMsg);
+ setTimeout(function () {
+ errorMsg.fadeOut(function () {
+ $(this).remove();
+ feedback.fadeOut(function () {
+ feedback.removeClass('error')
+ });
+ })
+ }, 2000);
+ },
+ success: function (data, jqXHR) {
+ feedback.prepend(succesMsg);
+ feedback.addClass('success')
+ setTimeout(function (e) {
+ succesMsg.fadeOut(function () {
+ $(this).remove();
+ feedback.fadeOut(function () {
+ feedback.removeClass('success');
+ });
+ if (reload == true) refreshSubmenu();
+ if (reload == "table") {
+ refreshTable();
+ }
+ if (reload == "tabs") refreshTab();
+ if (reload == "page") location.reload();
+ if (reload == "submenu&table") {
+ refreshSubmenu();
+ refreshTable();
+ }
+ if (form) {
+ // Change the option to 'choose...'
+ $(formID + " select").children('option[disabled=disabled]').attr(
+ 'selected', 'selected');
+ }
+ })
+ }, 2000);
+ },
+ complete: function (jqXHR, textStatus) {
+ // Remove loaders and stuff, ajax request is complete!
+ loader.remove();
+ if (typeof callback === "function") {
+ callback();
+ }
+ }
+ });
}
function doSimpleAjaxCall(url) {
- $.ajax(url);
+ $.ajax(url);
}
-function resetFilters(text){
- if ( $(".dataTables_filter").length > 0 ) {
- $(".dataTables_filter input").attr("placeholder","filter " + text + "");
- }
+function resetFilters(text) {
+ if ($(".dataTables_filter").length > 0) {
+ $(".dataTables_filter input").attr("placeholder", "filter " + text + "");
+ }
}
function getPlatformImagePath(platformName) {
-
if (platformName.indexOf("Roku") > -1) {
return 'images/platforms/roku.png';
} else if (platformName.indexOf("Apple TV") > -1) {
@@ -230,7 +228,7 @@ function getPlatformImagePath(platformName) {
return 'images/platforms/win8.png';
} else if (platformName.indexOf("Windows phone") > -1) {
return 'images/platforms/wp.png';
- } else if (platformName.indexOf("Plex Media Player") > -1) {
+ } else if (platformName.indexOf("Plex Media Player") > -1) {
return 'images/platforms/pmp.png';
} else {
return 'images/platforms/default.png';
@@ -242,10 +240,9 @@ function isPrivateIP(ip_address) {
// get IPv4 mapped address (xxx.xxx.xxx.xxx) from IPv6 addresss (::ffff:xxx.xxx.xxx.xxx)
var parts = ip_address.split(":");
var parts = parts[parts.length - 1].split('.');
- if ((parts[0] === '127' && parts[1] === '0' && parts[2] === '0' && parts[3] === '1') ||
- (parts[0] === '10') ||
- (parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) ||
- (parts[0] === '192' && parts[1] === '168')) {
+ if ((parts[0] === '127' && parts[1] === '0' && parts[2] === '0' && parts[3] === '1') || (parts[0] === '10') ||
+ (parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) || (parts[0] ===
+ '192' && parts[1] === '168')) {
return true;
}
return false;
@@ -256,16 +253,18 @@ function isPrivateIP(ip_address) {
function humanTime(seconds) {
if (seconds >= 86400) {
- text = '' + Math.floor(moment.duration(seconds, 'seconds').asDays()) + '
days
' +
- '' + Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '
hrs
' +
- '' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '
mins
';
+ text = '' + Math.floor(moment.duration(seconds, 'seconds').asDays()) + '
days
' + '' +
+ Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '
hrs
' + '' +
+ Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '
mins
';
return text;
} else if (seconds >= 3600) {
text = '' + Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + '
hrs
' +
- '' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '
mins
';
+ '' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) +
+ '
mins
';
return text;
} else if (seconds >= 60) {
- text = '' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + '
mins
';
+ text = '' + Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) +
+ '
mins
';
return text;
} else {
text = '0
mins
';
@@ -275,13 +274,13 @@ function humanTime(seconds) {
function humanTimeClean(seconds) {
if (seconds >= 86400) {
- text = Math.floor(moment.duration(seconds, 'seconds').asDays()) + ' days ' +
- Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' +
- Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins';
+ text = Math.floor(moment.duration(seconds, 'seconds').asDays()) + ' days ' + Math.floor(moment.duration((
+ seconds % 86400), 'seconds').asHours()) + ' hrs ' + Math.floor(moment.duration(
+ ((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins';
return text;
} else if (seconds >= 3600) {
- text = Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' +
- Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins';
+ text = Math.floor(moment.duration((seconds % 86400), 'seconds').asHours()) + ' hrs ' + Math.floor(moment.duration(
+ ((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins';
return text;
} else if (seconds >= 60) {
text = Math.floor(moment.duration(((seconds % 86400) % 3600), 'seconds').asMinutes()) + ' mins';
@@ -291,37 +290,35 @@ function humanTimeClean(seconds) {
return text;
}
}
-
String.prototype.toProperCase = function () {
- return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
+ return this.replace(/\w\S*/g, function (txt) {
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+ });
};
function millisecondsToMinutes(ms, roundToMinute) {
-
- if (ms > 0) {
- seconds = ms / 1000;
- minutes = seconds / 60;
-
- if (roundToMinute) {
- output = Math.round(minutes, 0)
- } else {
- minutesFloor = Math.floor(minutes);
- secondsReal = Math.round((seconds - (minutesFloor * 60)),0);
- if (secondsReal < 10) {
- secondsReal = '0' + secondsReal;
- }
- output = minutesFloor + ':' + secondsReal;
- }
- return output;
- } else {
- if (roundToMinute) {
- return '0';
- } else {
- return '0:00';
- }
- }
+ if (ms > 0) {
+ seconds = ms / 1000;
+ minutes = seconds / 60;
+ if (roundToMinute) {
+ output = Math.round(minutes, 0)
+ } else {
+ minutesFloor = Math.floor(minutes);
+ secondsReal = Math.round((seconds - (minutesFloor * 60)), 0);
+ if (secondsReal < 10) {
+ secondsReal = '0' + secondsReal;
+ }
+ output = minutesFloor + ':' + secondsReal;
+ }
+ return output;
+ } else {
+ if (roundToMinute) {
+ return '0';
+ } else {
+ return '0:00';
+ }
+ }
}
-
// Our countdown plugin takes a callback, a duration, and an optional message
$.fn.countdown = function (callback, duration, message) {
// If no message is provided, we use an empty string
@@ -334,68 +331,65 @@ $.fn.countdown = function (callback, duration, message) {
if (--duration) {
// Update our container's message
container.html(duration + message);
- // Otherwise
+ // Otherwise
} else {
// Clear the countdown interval
clearInterval(countdown);
// And fire the callback passing our container as `this`
callback.call(container);
}
- // Run interval every 1000ms (1 second)
+ // Run interval every 1000ms (1 second)
}, 1000);
-
};
function setCookie(cname, cvalue, exdays) {
var d = new Date();
- d.setTime(d.getTime() + (exdays*24*60*60*1000));
- var expires = "expires="+d.toUTCString();
+ d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
+ var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
- for(var i=0; i')
- .after('')
- $('#clear-search-' + tableName).click(function() {
+ $('#' + tableName + '_filter').find('input[type=search]').wrap(
+ '').after(
+ '')
+ $('#clear-search-' + tableName).click(function () {
table.search('').draw();
});
}
-
// Taken from https://github.com/Hellowlol/HTPC-Manager
window.onerror = function (message, file, line) {
var e = {
@@ -404,7 +398,5 @@ window.onerror = function (message, file, line) {
'file': file,
'line': line
};
-
- $.post("log_js_errors", e, function (data) {
- });
+ $.post("log_js_errors", e, function (data) { });
};
\ No newline at end of file
diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html
index 72005c55..1c9c5e48 100644
--- a/data/interfaces/default/settings.html
+++ b/data/interfaces/default/settings.html
@@ -2071,13 +2071,13 @@ $(document).ready(function() {
$('#restart-modal').modal('show');
}
$("#http_hashed_password").val($("#http_hash_password").is(":checked") ? 1 : 0)
+ getSchedulerTable();
}
var configForm = $("#configUpdate");
function saveSettings() {
if (configForm.parsley().validate()) {
- doAjaxCall('configUpdate', $(this), 'tabs', true, getSchedulerTable);
- postSaveChecks();
+ doAjaxCall('configUpdate', $(this), 'tabs', true, postSaveChecks);
return false;
} else {
showMsg(' Please verify your settings.', false, true, 5000, true)
@@ -2092,6 +2092,12 @@ $(document).ready(function() {
}
});
+ initConfigCheckbox('#api_enabled');
+ initConfigCheckbox('#enable_https');
+ initConfigCheckbox('#https_create_cert');
+ initConfigCheckbox('#check_github');
+ initConfigCheckbox('#notify_upload_posters');
+
$("#menu_link_shutdown").click(function() {
$("#confirm-message").text("Are you sure you want to shutdown PlexPy?");
$('#confirm-modal').modal();
@@ -2120,6 +2126,18 @@ $(document).ready(function() {
window.location.href = "restart";
});
+ function getSchedulerTable() {
+ $.ajax({
+ url: 'get_scheduler_table',
+ cache: false,
+ async: true,
+ complete: function(xhr, status) {
+ $("#plexpy-scheduler-table").html(xhr.responseText);
+ }
+ });
+ }
+ getSchedulerTable();
+
$("#backup_database").click(function () {
$("#confirm-message").text("Are you sure you want to create a backup of the PlexPy database?");
$('#confirm-modal').modal();
@@ -2180,86 +2198,17 @@ $(document).ready(function() {
});
});
- if ($("#api_enabled").is(":checked")) {
- $("#apioptions").show();
- } else {
- $("#apioptions").hide();
- }
-
- $("#api_enabled").click(function(){
- if ($("#api_enabled").is(":checked")) {
- $("#apioptions").slideDown();
- } else {
- $("#apioptions").slideUp();
- }
- });
$('#api_key').click(function(){ $('#api_key').select() });
- $("#generate_api").click(function() {
- $.get('generateAPI',
- function(data){
- if (data.error != undefined) {
- alert(data.error);
- return;
- }
- $('#api_key').val(data);
- });
+ $("#generate_api").click(function() {
+ $.get('generateAPI',
+ function(data){
+ if (data.error != undefined) {
+ alert(data.error);
+ return;
+ }
+ $('#api_key').val(data);
});
-
- if ($("#enable_https").is(":checked")) {
- $("#https_options").show();
- } else {
- $("#https_options").hide();
- }
-
- $("#enable_https").click(function(){
- if ($("#enable_https").is(":checked")) {
- $("#https_options").slideDown();
- } else {
- $("#https_options").slideUp();
- }
- });
-
- if ($("#https_create_cert").is(":checked")) {
- $("#https_options_self-signed").show();
- } else {
- $("#https_options_self-signed").hide();
- }
-
- $("#https_create_cert").click(function(){
- if ($("#https_create_cert").is(":checked")) {
- $("#https_options_self-signed").slideDown();
- } else {
- $("#https_options_self-signed").slideUp();
- }
- });
-
- if ($("#check_github").is(":checked")) {
- $("#git_update_options").show();
- } else {
- $("#git_update_options").hide();
- }
-
- $("#check_github").click(function(){
- if ($("#check_github").is(":checked")) {
- $("#git_update_options").slideDown();
- } else {
- $("#git_update_options").slideUp();
- }
- });
-
- if ($("#notify_upload_posters").is(":checked")) {
- $("#imgur_upload_options").show();
- } else {
- $("#imgur_upload_options").hide();
- }
-
- $("#notify_upload_posters").click(function(){
- if ($("#notify_upload_posters").is(":checked")) {
- $("#imgur_upload_options").slideDown();
- } else {
- $("#imgur_upload_options").slideUp();
- }
});
$( ".http-settings" ).change(function() {
@@ -2342,8 +2291,8 @@ $(document).ready(function() {
$("#pms-token-status").html(' Fetching token...');
if (($("#pms_username").val() !== '') || ($("#pms_password").val() !== '')) {
$.ajax({
- type: "post",
- url: "https://plex.tv/users/sign_in.xml",
+ type: 'POST',
+ url: 'https://plex.tv/users/sign_in.xml',
dataType: 'xml',
async: true,
headers: {'Content-Type': 'application/xml; charset=utf-8',
@@ -2595,18 +2544,6 @@ $(document).ready(function() {
$(this).on('focus keyup input', function() { resizeTextarea(this); }).removeAttr('data-autoresize');
});
- function getSchedulerTable() {
- $.ajax({
- url: 'get_scheduler_table',
- cache: false,
- async: true,
- complete: function(xhr, status) {
- $("#plexpy-scheduler-table").html(xhr.responseText);
- }
- });
- }
- getSchedulerTable();
-
$("#notify_recently_added_grandparent").change(function () {
var c = this.checked ? '#eb8600' : '#737373';
$('#notify_recently_added_grandparent_note').css('color', c);