diff --git a/src/dashboard/dashboardgeneral.js b/src/dashboard/dashboardgeneral.js
index f220be4cc0..c0ff217ffe 100644
--- a/src/dashboard/dashboardgeneral.js
+++ b/src/dashboard/dashboardgeneral.js
@@ -2,9 +2,36 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
"use strict";
function loadPage(page, config, languageOptions, systemInfo) {
- systemInfo.CanLaunchWebBrowser ? page.querySelector("#fldRunWebAppAtStartup").classList.remove("hide") : page.querySelector("#fldRunWebAppAtStartup").classList.add("hide"), page.querySelector("#txtCachePath").value = config.CachePath || "", $("#selectLocalizationLanguage", page).html(languageOptions.map(function(l) {
- return '' + l.Name + " "
- })).val(config.UICulture), currentLanguage = config.UICulture, systemInfo.CanSelfUpdate ? page.querySelector(".fldAutomaticUpdates").classList.remove("hide") : page.querySelector(".fldAutomaticUpdates").classList.add("hide"), $("#chkEnableAutomaticServerUpdates", page).checked(config.EnableAutoUpdate), $("#chkEnableAutomaticRestart", page).checked(config.EnableAutomaticRestart), systemInfo.CanSelfRestart ? page.querySelector("#fldEnableAutomaticRestart").classList.remove("hide") : page.querySelector("#fldEnableAutomaticRestart").classList.add("hide"), systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate ? $(".autoUpdatesContainer", page).removeClass("hide") : $(".autoUpdatesContainer", page).addClass("hide"), loading.hide()
+ if (systemInfo.CanLaunchWebBrowser) {
+ page.querySelector("#fldRunWebAppAtStartup").classList.remove("hide");
+ } else {
+ page.querySelector("#fldRunWebAppAtStartup").classList.add("hide");
+ }
+ page.querySelector("#txtCachePath").value = config.CachePath || "";
+ $("#txtMetadataPath", page).val(config.MetadataPath || "");
+ $("#txtMetadataNetworkPath", page).val(config.MetadataNetworkPath || "");
+ $("#selectLocalizationLanguage", page).html(languageOptions.map(function(language) {
+ return '' + language.Name + " "
+ })).val(config.UICulture);
+ currentLanguage = config.UICulture;
+ if (systemInfo.CanSelfUpdate) {
+ page.querySelector(".fldAutomaticUpdates").classList.remove("hide");
+ } else {
+ page.querySelector(".fldAutomaticUpdates").classList.add("hide");
+ }
+ $("#chkEnableAutomaticServerUpdates", page).checked(config.EnableAutoUpdate);
+ $("#chkEnableAutomaticRestart", page).checked(config.EnableAutomaticRestart);
+ if (systemInfo.CanSelfRestart) {
+ page.querySelector("#fldEnableAutomaticRestart").classList.remove("hide");
+ } else {
+ page.querySelector("#fldEnableAutomaticRestart").classList.add("hide");
+ }
+ if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) {
+ $(".autoUpdatesContainer", page).removeClass("hide");
+ } else {
+ $(".autoUpdatesContainer", page).addClass("hide");
+ }
+ loading.hide();
}
function onSubmit() {
@@ -12,40 +39,89 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
var form = this;
$(form).parents(".page");
return ApiClient.getServerConfiguration().then(function(config) {
- config.UICulture = $("#selectLocalizationLanguage", form).val(), config.CachePath = form.querySelector("#txtCachePath").value;
- var requiresReload = !1;
- config.UICulture !== currentLanguage && (requiresReload = !0), config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked(), config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked(), ApiClient.updateServerConfiguration(config).then(function() {
+ config.UICulture = $("#selectLocalizationLanguage", form).val();
+ config.CachePath = form.querySelector("#txtCachePath").value;
+ config.MetadataPath = $("#txtMetadataPath", form).val();
+ config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val();
+ var requiresReload = (config.UICulture !== currentLanguage);
+ config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked();
+ config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked();
+ ApiClient.updateServerConfiguration(config).then(function() {
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) {
- brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value, brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value, currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss && (requiresReload = !0), ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() {
- Dashboard.processServerConfigurationUpdateResult(), requiresReload && !AppInfo.isNativeApp && window.location.reload(!0)
- })
+ brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value;
+ brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value;
+ if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) {
+ requiresReload = true;
+ }
+ ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() {
+ Dashboard.processServerConfigurationUpdateResult();
+ if (requiresReload && !AppInfo.isNativeApp) {
+ window.location.reload(true);
+ }
+ });
})
})
}), !1
}
- var currentBrandingOptions, currentLanguage, brandingConfigKey = "branding";
+
+ var currentBrandingOptions;
+ var currentLanguage;
+ var brandingConfigKey = "branding";
+
return function(view, params) {
$("#btnSelectCachePath", view).on("click.selectDirectory", function() {
require(["directorybrowser"], function(directoryBrowser) {
var picker = new directoryBrowser;
picker.show({
callback: function(path) {
- path && (view.querySelector("#txtCachePath").value = path), picker.close()
+ if (path) {
+ view.querySelector("#txtCachePath").value = path;
+ }
+ picker.close();
},
- validateWriteable: !0,
+ validateWriteable: true,
header: Globalize.translate("HeaderSelectServerCachePath"),
instruction: Globalize.translate("HeaderSelectServerCachePathHelp")
})
})
- }), $(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit), view.addEventListener("viewshow", function() {
- var promise1 = ApiClient.getServerConfiguration(),
- promise2 = ApiClient.getJSON(ApiClient.getUrl("Localization/Options")),
- promise3 = ApiClient.getSystemInfo();
- Promise.all([promise1, promise2, promise3]).then(function(responses) {
- loadPage(view, responses[0], responses[1], responses[2])
- }), ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) {
- currentBrandingOptions = config, view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || "", view.querySelector("#txtCustomCss").value = config.CustomCss || ""
+ });
+
+ $("#btnSelectMetadataPath", view).on("click.selectDirectory", function() {
+ require(["directorybrowser"], function(directoryBrowser) {
+ var picker = new directoryBrowser();
+ picker.show({
+ path: $("#txtMetadataPath", view).val(),
+ networkSharePath: $("#txtMetadataNetworkPath", view).val(),
+ callback: function(path, networkPath) {
+ if (path) {
+ $("#txtMetadataPath", view).val(path);
+ }
+ if (networkPath) {
+ $("#txtMetadataNetworkPath", view).val(networkPath));
+ }
+ picker.close();
+ },
+ validateWriteable: true,
+ header: Globalize.translate("HeaderSelectMetadataPath"),
+ instruction: Globalize.translate("HeaderSelectMetadataPathHelp"),
+ enableNetworkSharePath: true
+ })
})
- })
+ });
+
+ $(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit);
+ view.addEventListener("viewshow", function() {
+ var promiseConfig = ApiClient.getServerConfiguration();
+ var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options"));
+ var promiseSystemInfo = ApiClient.getSystemInfo();
+ Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function(responses) {
+ loadPage(view, responses[0], responses[1], responses[2]);
+ });
+ ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) {
+ currentBrandingOptions = config;
+ view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || "";
+ view.querySelector("#txtCustomCss").value = config.CustomCss || "";
+ });
+ });
}
});
diff --git a/src/dashboard/librarysettings.js b/src/dashboard/librarysettings.js
index afbf033dfb..5e700b6fb0 100644
--- a/src/dashboard/librarysettings.js
+++ b/src/dashboard/librarysettings.js
@@ -2,45 +2,47 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked", "emby-checkbox", "emby-
"use strict";
function loadPage(page, config) {
- config.MergeMetadataAndImagesByName ? $(".fldImagesByName", page).hide() : $(".fldImagesByName", page).show(), $("#chkSaveMetadataHidden", page).checked(config.SaveMetadataHidden), $("#txtMetadataPath", page).val(config.MetadataPath || ""), $("#txtMetadataNetworkPath", page).val(config.MetadataNetworkPath || ""), loading.hide()
+ $("#chkSaveMetadataHidden", page).checked(config.SaveMetadataHidden);
+ loading.hide();
}
function loadMetadataConfig(page, config) {
- $("#selectDateAdded", page).val(config.UseFileCreationTimeForDateAdded ? "1" : "0")
+ $("#selectDateAdded", page).val(config.UseFileCreationTimeForDateAdded ? "1" : "0");
}
function loadFanartConfig(page, config) {
- $("#txtFanartApiKey", page).val(config.UserApiKey || "")
+ $("#txtFanartApiKey", page).val(config.UserApiKey || "");
}
function saveFanart(form) {
ApiClient.getNamedConfiguration("fanart").then(function(config) {
- config.UserApiKey = $("#txtFanartApiKey", form).val(), ApiClient.updateNamedConfiguration("fanart", config)
- })
+ config.UserApiKey = $("#txtFanartApiKey", form).val(), ApiClient.updateNamedConfiguration("fanart", config);
+ });
}
function saveMetadata(form) {
ApiClient.getNamedConfiguration("metadata").then(function(config) {
- config.UseFileCreationTimeForDateAdded = "1" === $("#selectDateAdded", form).val(), ApiClient.updateNamedConfiguration("metadata", config)
+ config.UseFileCreationTimeForDateAdded = "1" === $("#selectDateAdded", form).val(), ApiClient.updateNamedConfiguration("metadata", config);
})
}
function alertText(options) {
require(["alert"], function(alert) {
- alert(options)
- })
- }
-
- function onSubmitFail(response) {
- loading.hide(), response && 404 === response.status ? alertText("The metadata path entered could not be found. Please ensure the path is valid and try again.") : response && 500 === response.status && alertText("The metadata path entered is not valid. Please ensure the path exists and that Jellyfin server has write access to the folder.")
+ alert(options);
+ });
}
function onSubmit() {
loading.show();
var form = this;
- return ApiClient.getServerConfiguration().then(function(config) {
- config.SaveMetadataHidden = $("#chkSaveMetadataHidden", form).checked(), config.EnableTvDbUpdates = $("#chkEnableTvdbUpdates", form).checked(), config.EnableTmdbUpdates = $("#chkEnableTmdbUpdates", form).checked(), config.EnableFanArtUpdates = $("#chkEnableFanartUpdates", form).checked(), config.MetadataPath = $("#txtMetadataPath", form).val(), config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(), config.FanartApiKey = $("#txtFanartApiKey", form).val(), ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, onSubmitFail)
- }), saveMetadata(form), saveFanart(form), !1
+ ApiClient.getServerConfiguration().then(function(config) {
+ config.SaveMetadataHidden = $("#chkSaveMetadataHidden", form).checked();
+ config.FanartApiKey = $("#txtFanartApiKey", form).val();
+ ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
+ });
+ saveMetadata(form);
+ saveFanart(form);
+ return false;
}
function getTabs() {
@@ -61,34 +63,29 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked", "emby-checkbox", "emby-
name: Globalize.translate("TabAdvanced")
}]
}
+
return function(view, params) {
- $("#btnSelectMetadataPath", view).on("click.selectDirectory", function() {
- require(["directorybrowser"], function(directoryBrowser) {
- var picker = new directoryBrowser;
- picker.show({
- path: $("#txtMetadataPath", view).val(),
- networkSharePath: $("#txtMetadataNetworkPath", view).val(),
- callback: function(path, networkPath) {
- path && ($("#txtMetadataPath", view).val(path), $("#txtMetadataNetworkPath", view).val(networkPath)), picker.close()
- },
- validateWriteable: !0,
- header: Globalize.translate("HeaderSelectMetadataPath"),
- instruction: Globalize.translate("HeaderSelectMetadataPathHelp"),
- enableNetworkSharePath: !0
- })
- })
- }), $(".librarySettingsForm").off("submit", onSubmit).on("submit", onSubmit), view.addEventListener("viewshow", function() {
- libraryMenu.setTabs("librarysetup", 4, getTabs), loading.show();
+ $(".librarySettingsForm").off("submit", onSubmit).on("submit", onSubmit);
+ view.addEventListener("viewshow", function() {
+ libraryMenu.setTabs("librarysetup", 4, getTabs);
+ loading.show();
var page = this;
ApiClient.getServerConfiguration().then(function(config) {
loadPage(page, config)
- }), ApiClient.getNamedConfiguration("metadata").then(function(metadata) {
+ });
+ ApiClient.getNamedConfiguration("metadata").then(function(metadata) {
loadMetadataConfig(page, metadata)
- }), ApiClient.getNamedConfiguration("fanart").then(function(metadata) {
+ });
+ ApiClient.getNamedConfiguration("fanart").then(function(metadata) {
loadFanartConfig(page, metadata)
- }), ApiClient.getSystemInfo().then(function(info) {
- "Windows" === info.OperatingSystem ? page.querySelector(".fldSaveMetadataHidden").classList.remove("hide") : page.querySelector(".fldSaveMetadataHidden").classList.add("hide")
- })
- })
+ });
+ ApiClient.getSystemInfo().then(function(info) {
+ if ("Windows" === info.OperatingSystem) {
+ page.querySelector(".fldSaveMetadataHidden").classList.remove("hide");
+ } else {
+ page.querySelector(".fldSaveMetadataHidden").classList.add("hide");
+ }
+ });
+ });
}
});
diff --git a/src/dashboard/livetvtuner.js b/src/dashboard/livetvtuner.js
index b32e01b2d2..8d27093af1 100644
--- a/src/dashboard/livetvtuner.js
+++ b/src/dashboard/livetvtuner.js
@@ -2,31 +2,57 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button
"use strict";
function isM3uVariant(type) {
- return -1 !== ["nextpvr"].indexOf(type || "")
+ return ["nextpvr"].indexOf(type || "") !== -1;
}
function fillTypes(view, currentId) {
- return ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types) {
+ ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types) {
var selectType = view.querySelector(".selectType");
- selectType.innerHTML = types.map(function(t) {
- return '' + t.Name + " "
- }).join("") + '' + globalize.translate("TabOther") + " ", selectType.disabled = null != currentId, selectType.value = "", onTypeChange.call(selectType)
- })
+ var html = "";
+ html += types.map(function(tuner) {
+ return '' + tuner.Name + " ";
+ }).join("");
+ html += '';
+ html += globalize.translate("TabOther");
+ html += " ";
+ selectType.innerHTML = html;
+
+ selectType.disabled = null != currentId;
+ selectType.value = "";
+ onTypeChange.call(selectType);
+ });
}
function reload(view, providerId) {
- view.querySelector(".txtDevicePath").value = "", view.querySelector(".chkFavorite").checked = !1, view.querySelector(".txtDevicePath").value = "", providerId && ApiClient.getNamedConfiguration("livetv").then(function(config) {
- var info = config.TunerHosts.filter(function(i) {
- return i.Id === providerId
- })[0];
- fillTunerHostInfo(view, info)
- })
+ view.querySelector(".txtDevicePath").value = "";
+ view.querySelector(".chkFavorite").checked = false;
+ view.querySelector(".txtDevicePath").value = "";
+ if (providerId) {
+ ApiClient.getNamedConfiguration("livetv").then(function(config) {
+ var info = config.TunerHosts.filter(function(i) {
+ return i.Id === providerId;
+ })[0];
+ fillTunerHostInfo(view, info);
+ });
+ }
}
function fillTunerHostInfo(view, info) {
- var selectType = view.querySelector(".selectType"),
- type = info.Type || "";
- info.Source && isM3uVariant(info.Source) && (type = info.Source), selectType.value = type, onTypeChange.call(selectType), view.querySelector(".txtDevicePath").value = info.Url || "", view.querySelector(".txtFriendlyName").value = info.FriendlyName || "", view.querySelector(".txtUserAgent").value = info.UserAgent || "", view.querySelector(".fldDeviceId").value = info.DeviceId || "", view.querySelector(".chkFavorite").checked = info.ImportFavoritesOnly, view.querySelector(".chkTranscode").checked = info.AllowHWTranscoding, view.querySelector(".chkStreamLoop").checked = info.EnableStreamLooping, view.querySelector(".txtTunerCount").value = info.TunerCount || "0"
+ var selectType = view.querySelector(".selectType");
+ var type = info.Type || "";
+ if (info.Source && isM3uVariant(info.Source)) {
+ type = info.Source;
+ }
+ selectType.value = type;
+ onTypeChange.call(selectType);
+ view.querySelector(".txtDevicePath").value = info.Url || "";
+ view.querySelector(".txtFriendlyName").value = info.FriendlyName || "";
+ view.querySelector(".txtUserAgent").value = info.UserAgent || "";
+ view.querySelector(".fldDeviceId").value = info.DeviceId || "";
+ view.querySelector(".chkFavorite").checked = info.ImportFavoritesOnly;
+ view.querySelector(".chkTranscode").checked = info.AllowHWTranscoding;
+ view.querySelector(".chkStreamLoop").checked = info.EnableStreamLooping;
+ view.querySelector(".txtTunerCount").value = info.TunerCount || "0";
}
function submitForm(page) {
@@ -74,16 +100,6 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button
})
}
- function getTabs() {
- return [{
- href: "livetvstatus.html",
- name: globalize.translate("TabDevices")
- }, {
- href: "appservices.html?context=livetv",
- name: globalize.translate("TabServices")
- }]
- }
-
function onTypeChange() {
var value = this.value,
view = dom.parentWithClass(this, "page"),
@@ -102,7 +118,6 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button
}
return function(view, params) {
params.id || view.querySelector(".btnDetect").classList.remove("hide"), view.addEventListener("viewshow", function() {
- libraryMenu.setTabs("livetvadmin", 0, getTabs);
var currentId = params.id;
fillTypes(view, currentId).then(function() {
reload(view, currentId)
diff --git a/src/dashboardgeneral.html b/src/dashboardgeneral.html
index 16d170e62b..f95246708f 100644
--- a/src/dashboardgeneral.html
+++ b/src/dashboardgeneral.html
@@ -34,7 +34,7 @@