mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' of https://github.com/jellyfin/jellyfin-web into alphaPicker-tv-mode
# Resolve Conflicts: # src/assets/css/librarybrowser.css # src/components/alphapicker/style.css
This commit is contained in:
commit
5cb141caa3
250 changed files with 6493 additions and 3168 deletions
|
@ -1,23 +1,31 @@
|
|||
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function(appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) {
|
||||
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) {
|
||||
"use strict";
|
||||
|
||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||
|
||||
function authenticateUserByName(page, apiClient, username, password) {
|
||||
loading.show();
|
||||
apiClient.authenticateUserByName(username, password).then(function(result) {
|
||||
apiClient.authenticateUserByName(username, password).then(function (result) {
|
||||
var user = result.User;
|
||||
var serverId = getParameterByName("serverid");
|
||||
var newUrl = user.Policy.IsAdministrator && !serverId ? "dashboard.html" : "home.html";
|
||||
var newUrl;
|
||||
|
||||
if (user.Policy.IsAdministrator && !serverId) {
|
||||
newUrl = "dashboard.html";
|
||||
} else {
|
||||
newUrl = "home.html";
|
||||
}
|
||||
|
||||
loading.hide();
|
||||
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
||||
Dashboard.navigate(newUrl);
|
||||
}, function(response) {
|
||||
}, function (response) {
|
||||
page.querySelector("#txtManualName").value = "";
|
||||
page.querySelector("#txtManualPassword").value = "";
|
||||
loading.hide();
|
||||
|
||||
if (response.status === 401) {
|
||||
require(["toast"], function(toast) {
|
||||
require(["toast"], function (toast) {
|
||||
toast(Globalize.translate("MessageInvalidUser"));
|
||||
});
|
||||
} else {
|
||||
|
@ -34,8 +42,18 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
context.querySelector(".manualLoginForm").classList.remove("hide");
|
||||
context.querySelector(".visualLoginForm").classList.add("hide");
|
||||
context.querySelector(".btnManual").classList.add("hide");
|
||||
focusPassword ? context.querySelector("#txtManualPassword").focus() : context.querySelector("#txtManualName").focus();
|
||||
showCancel ? context.querySelector(".btnCancel").classList.remove("hide") : context.querySelector(".btnCancel").classList.add("hide");
|
||||
|
||||
if (focusPassword) {
|
||||
context.querySelector("#txtManualPassword").focus();
|
||||
} else {
|
||||
context.querySelector("#txtManualName").focus();
|
||||
}
|
||||
|
||||
if (showCancel) {
|
||||
context.querySelector(".btnCancel").classList.remove("hide");
|
||||
} else {
|
||||
context.querySelector(".btnCancel").classList.add("hide");
|
||||
}
|
||||
}
|
||||
|
||||
var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"];
|
||||
|
@ -49,22 +67,25 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
if (str) {
|
||||
var character = String(str.substr(0, 1).charCodeAt());
|
||||
var sum = 0;
|
||||
|
||||
for (var i = 0; i < character.length; i++) {
|
||||
sum += parseInt(character.charAt(i));
|
||||
}
|
||||
|
||||
var index = String(sum).substr(-1);
|
||||
return metroColors[index];
|
||||
}
|
||||
|
||||
return getRandomMetroColor();
|
||||
}
|
||||
|
||||
function loadUserList(context, apiClient, users) {
|
||||
var html = "";
|
||||
|
||||
for (var i = 0; i < users.length; i++) {
|
||||
var user = users[i];
|
||||
|
||||
// TODO move card creation code to Card component
|
||||
|
||||
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
||||
|
||||
if (layoutManager.tv) {
|
||||
|
@ -76,13 +97,13 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
}
|
||||
|
||||
var cardBoxCssClass = "cardBox cardBox-bottompadded";
|
||||
|
||||
html += '<button type="button" class="' + cssClass + '">';
|
||||
html += '<div class="' + cardBoxCssClass + '">';
|
||||
html += '<div class="cardScalable">';
|
||||
html += '<div class="cardPadder cardPadder-square"></div>';
|
||||
html += '<div class="cardContent" data-haspw="' + user.HasPassword + '" data-username="' + user.Name + '" data-userid="' + user.Id + '">';
|
||||
var imgUrl;
|
||||
|
||||
if (user.PrimaryImageTag) {
|
||||
imgUrl = apiClient.getUserImageUrl(user.Id, {
|
||||
width: 300,
|
||||
|
@ -95,6 +116,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
imgUrl = "assets/img/avatar.png";
|
||||
html += '<div class="cardImageContainer coveredImage coveredImage-noScale" style="background-image:url(\'' + imgUrl + "');background-color:" + background + ';"></div>';
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
|
@ -103,13 +125,19 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
html += "</div>";
|
||||
html += "</button>";
|
||||
}
|
||||
|
||||
context.querySelector("#divUsers").innerHTML = html;
|
||||
}
|
||||
|
||||
return function(view, params) {
|
||||
return function (view, params) {
|
||||
function getApiClient() {
|
||||
var serverId = params.serverid;
|
||||
return serverId ? connectionManager.getOrCreateApiClient(serverId) : ApiClient;
|
||||
|
||||
if (serverId) {
|
||||
return connectionManager.getOrCreateApiClient(serverId);
|
||||
}
|
||||
|
||||
return ApiClient;
|
||||
}
|
||||
|
||||
function showVisualForm() {
|
||||
|
@ -122,14 +150,16 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
});
|
||||
}
|
||||
|
||||
view.querySelector("#divUsers").addEventListener("click", function(e) {
|
||||
view.querySelector("#divUsers").addEventListener("click", function (e) {
|
||||
var card = dom.parentWithClass(e.target, "card");
|
||||
var cardContent = card ? card.querySelector(".cardContent") : null;
|
||||
|
||||
if (cardContent) {
|
||||
var context = view;
|
||||
var id = cardContent.getAttribute("data-userid");
|
||||
var name = cardContent.getAttribute("data-username");
|
||||
var haspw = cardContent.getAttribute("data-haspw");
|
||||
|
||||
if (id === 'manual') {
|
||||
context.querySelector("#txtManualName").value = "";
|
||||
showManualForm(context, true);
|
||||
|
@ -142,33 +172,30 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
view.querySelector(".manualLoginForm").addEventListener("submit", function(e) {
|
||||
view.querySelector(".manualLoginForm").addEventListener("submit", function (e) {
|
||||
appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);
|
||||
var apiClient = getApiClient();
|
||||
authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value);
|
||||
e.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
view.querySelector(".btnForgotPassword").addEventListener("click", function() {
|
||||
view.querySelector(".btnForgotPassword").addEventListener("click", function () {
|
||||
Dashboard.navigate("forgotpassword.html");
|
||||
});
|
||||
|
||||
view.querySelector(".btnCancel").addEventListener("click", showVisualForm);
|
||||
|
||||
view.querySelector(".btnManual").addEventListener("click", function() {
|
||||
view.querySelector(".btnManual").addEventListener("click", function () {
|
||||
view.querySelector("#txtManualName").value = "";
|
||||
showManualForm(view, true);
|
||||
});
|
||||
|
||||
view.addEventListener("viewshow", function(e) {
|
||||
view.addEventListener("viewshow", function (e) {
|
||||
loading.show();
|
||||
|
||||
if (!appHost.supports('multiserver')) {
|
||||
view.querySelector(".btnSelectServer").classList.add("hide");
|
||||
}
|
||||
|
||||
var apiClient = getApiClient();
|
||||
apiClient.getPublicUsers().then(function(users) {
|
||||
apiClient.getPublicUsers().then(function (users) {
|
||||
if (users.length) {
|
||||
showVisualForm();
|
||||
loadUserList(view, apiClient, users);
|
||||
|
@ -176,13 +203,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
|||
view.querySelector("#txtManualName").value = "";
|
||||
showManualForm(view, false, false);
|
||||
}
|
||||
}).catch().then(function() {
|
||||
}).catch().then(function () {
|
||||
loading.hide();
|
||||
});
|
||||
|
||||
apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options) {
|
||||
apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function (options) {
|
||||
view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || "";
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -18,7 +18,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu
|
|||
var cardImageContainer;
|
||||
|
||||
if (item.showIcon) {
|
||||
cardImageContainer = '<i class="cardImageIcon md-icon">' + item.icon + "</i>";
|
||||
cardImageContainer = '<i class="cardImageIcon material-icons">' + item.icon + "</i>";
|
||||
} else {
|
||||
cardImageContainer = '<div class="cardImage" style="' + item.cardImageStyle + '"></div>';
|
||||
}
|
||||
|
|
|
@ -303,12 +303,12 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
|
|||
html += '<div class="sessionCardButtons flex align-items-center justify-content-center">';
|
||||
var btnCssClass;
|
||||
btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId() ? "" : " hide";
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionPlayPause paper-icon-button-light ' + btnCssClass + '"><i class="md-icon">pause</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionStop paper-icon-button-light ' + btnCssClass + '"><i class="md-icon">stop</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionPlayPause paper-icon-button-light ' + btnCssClass + '"><i class="material-icons">pause</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionStop paper-icon-button-light ' + btnCssClass + '"><i class="material-icons">stop</i></button>';
|
||||
btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide";
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionInfo paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate("ViewPlaybackInfo") + '"><i class="md-icon">info</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionInfo paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate("ViewPlaybackInfo") + '"><i class="material-icons">info</i></button>';
|
||||
btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide";
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionSendMessage paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate("SendMessage") + '"><i class="md-icon">message</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="sessionCardButton btnSessionSendMessage paper-icon-button-light ' + btnCssClass + '" title="' + globalize.translate("SendMessage") + '"><i class="material-icons">message</i></button>';
|
||||
html += "</div>";
|
||||
html += '<div class="sessionNowPlayingStreamInfo" style="padding:.5em 0 1em;">';
|
||||
html += DashboardPage.getSessionNowPlayingStreamInfo(session);
|
||||
|
@ -361,7 +361,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
|
|||
html += progress + "%";
|
||||
html += "</progress>";
|
||||
html += "<span style='color:#00a4dc;margin-left:5px;margin-right:5px;'>" + progress + "%</span>";
|
||||
html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate("ButtonStop") + '" onclick="DashboardPage.stopTask(this, \'' + task.Id + '\');" class="autoSize"><i class="md-icon">cancel</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate("ButtonStop") + '" onclick="DashboardPage.stopTask(this, \'' + task.Id + '\');" class="autoSize"><i class="material-icons">cancel</i></button>';
|
||||
} else if (task.State === "Cancelling") {
|
||||
html += '<span style="color:#cc0000;">' + globalize.translate("LabelStopping") + "</span>";
|
||||
}
|
||||
|
|
|
@ -1,38 +1,29 @@
|
|||
define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function($, loading) {
|
||||
define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading) {
|
||||
"use strict";
|
||||
|
||||
function loadPage(page, config, languageOptions, systemInfo) {
|
||||
page.querySelector("#txtServerName").value = systemInfo.ServerName;
|
||||
$("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp);
|
||||
|
||||
if (systemInfo.CanLaunchWebBrowser) {
|
||||
page.querySelector("#fldAutoRunWebApp").classList.remove("hide");
|
||||
} else {
|
||||
page.querySelector("#fldAutoRunWebApp").classList.add("hide");
|
||||
}
|
||||
|
||||
page.querySelector("#txtCachePath").value = systemInfo.CachePath || "";
|
||||
$("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || "");
|
||||
$("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || "");
|
||||
$("#selectLocalizationLanguage", page).html(languageOptions.map(function(language) {
|
||||
return '<option value="' + language.Value + '">' + language.Name + "</option>"
|
||||
$("#selectLocalizationLanguage", page).html(languageOptions.map(function (language) {
|
||||
return '<option value="' + language.Value + '">' + language.Name + "</option>";
|
||||
})).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();
|
||||
}
|
||||
|
||||
|
@ -40,92 +31,94 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
|
|||
loading.show();
|
||||
var form = this;
|
||||
$(form).parents(".page");
|
||||
return ApiClient.getServerConfiguration().then(function(config) {
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
config.ServerName = $("#txtServerName", form).val();
|
||||
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);
|
||||
var requiresReload = config.UICulture !== currentLanguage;
|
||||
config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked();
|
||||
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;
|
||||
|
||||
if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) {
|
||||
requiresReload = true;
|
||||
}
|
||||
ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() {
|
||||
|
||||
ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function () {
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
|
||||
if (requiresReload && !AppInfo.isNativeApp) {
|
||||
window.location.reload(true);
|
||||
}
|
||||
});
|
||||
})
|
||||
})
|
||||
}), !1
|
||||
});
|
||||
});
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
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;
|
||||
return function (view, params) {
|
||||
$("#btnSelectCachePath", view).on("click.selectDirectory", function () {
|
||||
require(["directorybrowser"], function (directoryBrowser) {
|
||||
var picker = new directoryBrowser();
|
||||
picker.show({
|
||||
callback: function(path) {
|
||||
callback: function (path) {
|
||||
if (path) {
|
||||
view.querySelector("#txtCachePath").value = path;
|
||||
}
|
||||
|
||||
picker.close();
|
||||
},
|
||||
validateWriteable: true,
|
||||
header: Globalize.translate("HeaderSelectServerCachePath"),
|
||||
instruction: Globalize.translate("HeaderSelectServerCachePathHelp")
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$("#btnSelectMetadataPath", view).on("click.selectDirectory", function() {
|
||||
require(["directorybrowser"], function(directoryBrowser) {
|
||||
$("#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) {
|
||||
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() {
|
||||
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) {
|
||||
Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) {
|
||||
loadPage(view, responses[0], responses[1], responses[2]);
|
||||
});
|
||||
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) {
|
||||
ApiClient.getNamedConfiguration(brandingConfigKey).then(function (config) {
|
||||
currentBrandingOptions = config;
|
||||
view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || "";
|
||||
view.querySelector("#txtCustomCss").value = config.CustomCss || "";
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,53 +1,61 @@
|
|||
define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function(loading, libraryMenu, globalize) {
|
||||
define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], function (loading, libraryMenu, globalize) {
|
||||
"use strict";
|
||||
|
||||
function onSubmit(e) {
|
||||
var form = this;
|
||||
var localAddress = form.querySelector("#txtLocalAddress").value;
|
||||
var enableUpnp = form.querySelector("#chkEnableUpnp").checked;
|
||||
confirmSelections(localAddress, enableUpnp, function() {
|
||||
confirmSelections(localAddress, enableUpnp, function () {
|
||||
var validationResult = getValidationAlert(form);
|
||||
if (validationResult) return void alertText(validationResult);
|
||||
validateHttps(form).then(function() {
|
||||
|
||||
if (validationResult) {
|
||||
alertText(validationResult);
|
||||
return;
|
||||
}
|
||||
|
||||
validateHttps(form).then(function () {
|
||||
loading.show();
|
||||
ApiClient.getServerConfiguration().then(function(config) {
|
||||
config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) {
|
||||
return s.trim()
|
||||
}).filter(function(s) {
|
||||
return s.length > 0
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) {
|
||||
return s.trim();
|
||||
}).filter(function (s) {
|
||||
return s.length > 0;
|
||||
});
|
||||
|
||||
config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) {
|
||||
return s.trim()
|
||||
}).filter(function(s) {
|
||||
return s.length > 0
|
||||
config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function (s) {
|
||||
return s.trim();
|
||||
}).filter(function (s) {
|
||||
return s.length > 0;
|
||||
});
|
||||
|
||||
config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value;
|
||||
config.PublicPort = form.querySelector("#txtPublicPort").value;
|
||||
config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value;
|
||||
var httpsMode = form.querySelector("#selectHttpsMode").value;
|
||||
|
||||
switch (httpsMode) {
|
||||
case "proxy":
|
||||
config.EnableHttps = true;
|
||||
config.RequireHttps = false;
|
||||
config.IsBehindProxy = true;
|
||||
break;
|
||||
|
||||
case "required":
|
||||
config.EnableHttps = true;
|
||||
config.RequireHttps = true;
|
||||
config.IsBehindProxy = false;
|
||||
break;
|
||||
|
||||
case "enabled":
|
||||
config.EnableHttps = true;
|
||||
config.RequireHttps = false;
|
||||
config.IsBehindProxy = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
config.EnableHttps = false;
|
||||
config.RequireHttps = false;
|
||||
config.IsBehindProxy = false;
|
||||
}
|
||||
|
||||
config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value;
|
||||
config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value;
|
||||
config.EnableUPnP = enableUpnp;
|
||||
|
@ -57,47 +65,66 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
|
|||
config.CertificatePassword = form.querySelector("#txtCertPassword").value || null;
|
||||
config.LocalNetworkAddresses = localAddress ? [localAddress] : [];
|
||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
|
||||
})
|
||||
})
|
||||
}), e.preventDefault()
|
||||
});
|
||||
});
|
||||
});
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
function triggerChange(select) {
|
||||
var evt = document.createEvent("HTMLEvents");
|
||||
evt.initEvent("change", !1, !0), select.dispatchEvent(evt)
|
||||
evt.initEvent("change", false, true);
|
||||
select.dispatchEvent(evt);
|
||||
}
|
||||
|
||||
function getValidationAlert(form) {
|
||||
return form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value ? "The public http and https ports must be different." : form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value ? "The http and https ports must be different." : null
|
||||
if (form.querySelector("#txtPublicPort").value === form.querySelector("#txtPublicHttpsPort").value) {
|
||||
return "The public http and https ports must be different.";
|
||||
}
|
||||
|
||||
if (form.querySelector("#txtPortNumber").value === form.querySelector("#txtHttpsPort").value) {
|
||||
return "The http and https ports must be different.";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function validateHttps(form) {
|
||||
var certPath = form.querySelector("#txtCertificatePath").value || null;
|
||||
var httpsMode = form.querySelector("#selectHttpsMode").value;
|
||||
return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) {
|
||||
|
||||
if ("enabled" !== httpsMode && "required" !== httpsMode || certPath) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
return alertText({
|
||||
title: globalize.translate("TitleHostingSettings"),
|
||||
text: globalize.translate("HttpsRequiresCert")
|
||||
}).then(reject, reject)
|
||||
})
|
||||
}).then(reject, reject);
|
||||
});
|
||||
}
|
||||
|
||||
function alertText(options) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
require(["alert"], function(alert) {
|
||||
alert(options).then(resolve, reject)
|
||||
})
|
||||
})
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(["alert"], function (alert) {
|
||||
alert(options).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function confirmSelections(localAddress, enableUpnp, callback) {
|
||||
localAddress || !enableUpnp ? alertText({
|
||||
title: globalize.translate("TitleHostingSettings"),
|
||||
text: globalize.translate("SettingsWarning")
|
||||
}).then(callback) : callback()
|
||||
if (localAddress || !enableUpnp) {
|
||||
alertText({
|
||||
title: globalize.translate("TitleHostingSettings"),
|
||||
text: globalize.translate("SettingsWarning")
|
||||
}).then(callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
return function(view, params) {
|
||||
return function (view, params) {
|
||||
function loadPage(page, config) {
|
||||
page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber;
|
||||
page.querySelector("#txtPublicPort").value = config.PublicPort;
|
||||
|
@ -108,7 +135,17 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
|
|||
page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist";
|
||||
page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
|
||||
var selectHttpsMode = page.querySelector("#selectHttpsMode");
|
||||
config.IsBehindProxy ? selectHttpsMode.value = "proxy" : config.RequireHttps ? selectHttpsMode.value = "required" : config.EnableHttps ? selectHttpsMode.value = "enabled" : selectHttpsMode.value = "disabled";
|
||||
|
||||
if (config.IsBehindProxy) {
|
||||
selectHttpsMode.value = "proxy";
|
||||
} else if (config.RequireHttps) {
|
||||
selectHttpsMode.value = "required";
|
||||
} else if (config.EnableHttps) {
|
||||
selectHttpsMode.value = "enabled";
|
||||
} else {
|
||||
selectHttpsMode.value = "disabled";
|
||||
}
|
||||
|
||||
page.querySelector("#txtHttpsPort").value = config.HttpsPortNumber;
|
||||
page.querySelector("#txtBaseUrl").value = config.BaseUrl || "";
|
||||
var txtCertificatePath = page.querySelector("#txtCertificatePath");
|
||||
|
@ -119,27 +156,50 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
|
|||
loading.hide();
|
||||
}
|
||||
|
||||
view.querySelector("#chkRemoteAccess").addEventListener("change", function() {
|
||||
this.checked ? (view.querySelector(".fldExternalAddressFilter").classList.remove("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide"), view.querySelector(".fldPublicPort").classList.remove("hide"), view.querySelector(".fldPublicHttpsPort").classList.remove("hide"), view.querySelector(".fldCertificatePath").classList.remove("hide"), view.querySelector(".fldCertPassword").classList.remove("hide"), view.querySelector(".fldHttpsMode").classList.remove("hide"), view.querySelector(".fldEnableUpnp").classList.remove("hide")) : (view.querySelector(".fldExternalAddressFilter").classList.add("hide"), view.querySelector(".fldExternalAddressFilterMode").classList.add("hide"), view.querySelector(".fldPublicPort").classList.add("hide"), view.querySelector(".fldPublicHttpsPort").classList.add("hide"), view.querySelector(".fldCertificatePath").classList.add("hide"), view.querySelector(".fldCertPassword").classList.add("hide"), view.querySelector(".fldHttpsMode").classList.add("hide"), view.querySelector(".fldEnableUpnp").classList.add("hide"))
|
||||
}), view.querySelector("#btnSelectCertPath").addEventListener("click", function() {
|
||||
require(["directorybrowser"], function(directoryBrowser) {
|
||||
var picker = new directoryBrowser;
|
||||
view.querySelector("#chkRemoteAccess").addEventListener("change", function () {
|
||||
if (this.checked) {
|
||||
view.querySelector(".fldExternalAddressFilter").classList.remove("hide");
|
||||
view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide");
|
||||
view.querySelector(".fldPublicPort").classList.remove("hide");
|
||||
view.querySelector(".fldPublicHttpsPort").classList.remove("hide");
|
||||
view.querySelector(".fldCertificatePath").classList.remove("hide");
|
||||
view.querySelector(".fldCertPassword").classList.remove("hide");
|
||||
view.querySelector(".fldHttpsMode").classList.remove("hide");
|
||||
view.querySelector(".fldEnableUpnp").classList.remove("hide");
|
||||
} else {
|
||||
view.querySelector(".fldExternalAddressFilter").classList.add("hide");
|
||||
view.querySelector(".fldExternalAddressFilterMode").classList.add("hide");
|
||||
view.querySelector(".fldPublicPort").classList.add("hide");
|
||||
view.querySelector(".fldPublicHttpsPort").classList.add("hide");
|
||||
view.querySelector(".fldCertificatePath").classList.add("hide");
|
||||
view.querySelector(".fldCertPassword").classList.add("hide");
|
||||
view.querySelector(".fldHttpsMode").classList.add("hide");
|
||||
view.querySelector(".fldEnableUpnp").classList.add("hide");
|
||||
}
|
||||
});
|
||||
view.querySelector("#btnSelectCertPath").addEventListener("click", function () {
|
||||
require(["directorybrowser"], function (directoryBrowser) {
|
||||
var picker = new directoryBrowser();
|
||||
picker.show({
|
||||
includeFiles: !0,
|
||||
includeDirectories: !0,
|
||||
callback: function(path) {
|
||||
path && (view.querySelector("#txtCertificatePath").value = path), picker.close()
|
||||
includeFiles: true,
|
||||
includeDirectories: true,
|
||||
callback: function (path) {
|
||||
if (path) {
|
||||
view.querySelector("#txtCertificatePath").value = path;
|
||||
}
|
||||
|
||||
picker.close();
|
||||
},
|
||||
header: globalize.translate("HeaderSelectCertificatePath")
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.addEventListener("viewshow", function(e) {
|
||||
view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit);
|
||||
view.addEventListener("viewshow", function (e) {
|
||||
loading.show();
|
||||
ApiClient.getServerConfiguration().then(function(config) {
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
loadPage(view, config);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"],
|
|||
}
|
||||
itemHtml += '<a class="listItem listItem-border" is="emby-linkbutton" data-ripple="false" href="notificationsetting.html?type=' + notification.Type + '">';
|
||||
if (notification.Enabled) {
|
||||
itemHtml += '<i class="listItemIcon md-icon">notifications_active</i>';
|
||||
itemHtml += '<i class="listItemIcon material-icons">notifications_active</i>';
|
||||
} else {
|
||||
itemHtml += '<i class="listItemIcon md-icon" style="background-color:#999;">notifications_off</i>';
|
||||
itemHtml += '<i class="listItemIcon material-icons" style="background-color:#999;">notifications_off</i>';
|
||||
}
|
||||
itemHtml += '<div class="listItemBody">';
|
||||
itemHtml += '<div class="listItemBodyText">' + notification.Name + "</div>";
|
||||
itemHtml += "</div>";
|
||||
itemHtml += '<button type="button" is="paper-icon-button-light"><i class="md-icon">mode_edit</i></button>';
|
||||
itemHtml += '<button type="button" is="paper-icon-button-light"><i class="material-icons">mode_edit</i></button>';
|
||||
itemHtml += "</a>";
|
||||
return itemHtml;
|
||||
}).join("");
|
||||
|
|
|
@ -103,7 +103,7 @@ define(["loading", "libraryMenu", "globalize", "cardStyle", "emby-button", "emby
|
|||
html += '<div class="cardImage coveredImage" style="background-image:url(\'' + plugin.thumbImage + "');\">";
|
||||
html += "</div>";
|
||||
} else {
|
||||
html += '<i class="cardImageIcon md-icon">folder</i>';
|
||||
html += '<i class="cardImageIcon material-icons">folder</i>';
|
||||
}
|
||||
|
||||
html += "</a>";
|
||||
|
|
|
@ -47,14 +47,14 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button"
|
|||
html += '<div class="cardImage coveredImage" style="background-image:url(\'' + plugin.ImageUrl + "');\">";
|
||||
html += "</div>";
|
||||
} else {
|
||||
html += '<i class="cardImageIcon md-icon">folder</i>';
|
||||
html += '<i class="cardImageIcon material-icons">folder</i>';
|
||||
}
|
||||
|
||||
html += configPageUrl ? "</a>" : "</div>";
|
||||
html += "</div>";
|
||||
html += '<div class="cardFooter">';
|
||||
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">more_horiz</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="material-icons">more_horiz</i></button>';
|
||||
html += "</div>";
|
||||
html += "<div class='cardText'>";
|
||||
html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name;
|
||||
|
|
|
@ -49,7 +49,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby
|
|||
var trigger = task.Triggers[i];
|
||||
|
||||
html += '<div class="listItem listItem-border">';
|
||||
html += '<i class="md-icon listItemIcon">schedule</i>';
|
||||
html += '<i class="material-icons listItemIcon">schedule</i>';
|
||||
if (trigger.MaxRuntimeMs) {
|
||||
html += '<div class="listItemBody two-line">';
|
||||
} else {
|
||||
|
@ -68,7 +68,7 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby
|
|||
}
|
||||
|
||||
html += "</div>";
|
||||
html += '<button class="btnDeleteTrigger" data-index="' + i + '" type="button" is="paper-icon-button-light" title="' + globalize.translate("ButtonDelete") + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button class="btnDeleteTrigger" data-index="' + i + '" type="button" is="paper-icon-button-light" title="' + globalize.translate("ButtonDelete") + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma
|
|||
}
|
||||
html += '<div class="listItem listItem-border scheduledTaskPaperIconItem" data-status="' + task.State + '">';
|
||||
html += "<a is='emby-linkbutton' style='margin:0;padding:0;' class='clearLink listItemIconContainer' href='scheduledtask.html?id=" + task.Id + "'>";
|
||||
html += '<i class="md-icon listItemIcon">schedule</i>';
|
||||
html += '<i class="material-icons listItemIcon">schedule</i>';
|
||||
html += "</a>";
|
||||
html += '<div class="listItemBody two-line">';
|
||||
html += "<a class='clearLink' style='margin:0;padding:0;display:block;text-align:left;' is='emby-linkbutton' href='scheduledtask.html?id=" + task.Id + "'>";
|
||||
|
@ -49,9 +49,9 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma
|
|||
html += "</a>";
|
||||
html += "</div>";
|
||||
if (task.State === "Running") {
|
||||
html += '<button type="button" is="paper-icon-button-light" id="btnTask' + task.Id + '" class="btnStopTask" data-taskid="' + task.Id + '" title="' + globalize.translate("ButtonStop") + '"><i class="md-icon">stop</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" id="btnTask' + task.Id + '" class="btnStopTask" data-taskid="' + task.Id + '" title="' + globalize.translate("ButtonStop") + '"><i class="material-icons">stop</i></button>';
|
||||
} else if (task.State === "Idle") {
|
||||
html += '<button type="button" is="paper-icon-button-light" id="btnTask' + task.Id + '" class="btnStartTask" data-taskid="' + task.Id + '" title="' + globalize.translate("ButtonStart") + '"><i class="md-icon">play_arrow</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" id="btnTask' + task.Id + '" class="btnStartTask" data-taskid="' + task.Id + '" title="' + globalize.translate("ButtonStart") + '"><i class="material-icons">play_arrow</i></button>';
|
||||
}
|
||||
html += "</div>";
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu
|
|||
deviceHtml += '<div class="cardImage" style="background-image:url(\'' + iconUrl + "');background-size: auto 64%;background-position:center center;\">";
|
||||
deviceHtml += "</div>";
|
||||
} else {
|
||||
deviceHtml += '<i class="cardImageIcon md-icon">tablet_android</i>';
|
||||
deviceHtml += '<i class="cardImageIcon material-icons">tablet_android</i>';
|
||||
}
|
||||
|
||||
deviceHtml += "</a>";
|
||||
|
@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu
|
|||
|
||||
if (canEdit || canDelete(device.Id)) {
|
||||
deviceHtml += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||
deviceHtml += '<button type="button" is="paper-icon-button-light" data-id="' + device.Id + '" title="' + globalize.translate("Menu") + '" class="btnDeviceMenu"><i class="md-icon">more_horiz</i></button>';
|
||||
deviceHtml += '<button type="button" is="paper-icon-button-light" data-id="' + device.Id + '" title="' + globalize.translate("Menu") + '" class="btnDeviceMenu"><i class="material-icons">more_horiz</i></button>';
|
||||
deviceHtml += "</div>";
|
||||
}
|
||||
|
||||
|
|
|
@ -76,12 +76,12 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
var index = 0;
|
||||
var html = '<div class="paperList">' + headers.map(function (h) {
|
||||
var li = '<div class="listItem">';
|
||||
li += '<i class="md-icon listItemIcon">info</i>';
|
||||
li += '<i class="material-icons listItemIcon">info</i>';
|
||||
li += '<div class="listItemBody">';
|
||||
li += '<h3 class="listItemBodyText">' + h.Name + ": " + (h.Value || "") + "</h3>";
|
||||
li += '<div class="listItemBodyText secondary">' + (h.Match || "") + "</div>";
|
||||
li += "</div>";
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteIdentificationHeader listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>';
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteIdentificationHeader listItemButton" data-index="' + index + '"><i class="material-icons">delete</i></button>';
|
||||
li += "</div>";
|
||||
index++;
|
||||
return li;
|
||||
|
@ -132,11 +132,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
function renderXmlDocumentAttributes(page, attribute) {
|
||||
var html = '<div class="paperList">' + attribute.map(function (h) {
|
||||
var li = '<div class="listItem">';
|
||||
li += '<i class="md-icon listItemIcon">info</i>';
|
||||
li += '<i class="material-icons listItemIcon">info</i>';
|
||||
li += '<div class="listItemBody">';
|
||||
li += '<h3 class="listItemBodyText">' + h.Name + " = " + (h.Value || "") + "</h3>";
|
||||
li += "</div>";
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteXmlAttribute listItemButton" data-index="0"><i class="md-icon">delete</i></button>';
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteXmlAttribute listItemButton" data-index="0"><i class="material-icons">delete</i></button>';
|
||||
return li += "</div>";
|
||||
}).join("") + "</div>";
|
||||
var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create");
|
||||
|
@ -174,11 +174,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
var index = 0;
|
||||
var html = '<div class="paperList">' + profiles.map(function (h) {
|
||||
var li = '<div class="listItem lnkEditSubProfile" data-index="' + index + '">';
|
||||
li += '<i class="md-icon listItemIcon">info</i>';
|
||||
li += '<i class="material-icons listItemIcon">info</i>';
|
||||
li += '<div class="listItemBody">';
|
||||
li += '<h3 class="listItemBodyText">' + (h.Format || "") + "</h3>";
|
||||
li += "</div>";
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>';
|
||||
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-index="' + index + '"><i class="material-icons">delete</i></button>';
|
||||
li += "</div>";
|
||||
index++;
|
||||
return li;
|
||||
|
@ -270,7 +270,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
}
|
||||
|
||||
html += "</a>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
@ -331,7 +331,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
}
|
||||
|
||||
html += "</a>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
@ -415,7 +415,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
}
|
||||
|
||||
html += "</a>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
@ -487,7 +487,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
}
|
||||
|
||||
html += "</a>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
@ -567,7 +567,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
|
|||
}
|
||||
|
||||
html += "</a>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-profileindex="' + i + '"><i class="material-icons">delete</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby-
|
|||
for (var i = 0, length = profiles.length; i < length; i++) {
|
||||
var profile = profiles[i];
|
||||
html += '<div class="listItem listItem-border">';
|
||||
html += '<i class="listItemIcon md-icon">live_tv</i>';
|
||||
html += '<i class="listItemIcon material-icons">live_tv</i>';
|
||||
html += '<div class="listItemBody two-line">';
|
||||
html += "<a is='emby-linkbutton' style='padding:0;margin:0;' data-ripple='false' class='clearLink' href='dlnaprofile.html?id=" + profile.Id + "'>";
|
||||
html += "<div>" + profile.Name + "</div>";
|
||||
|
@ -40,7 +40,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby-
|
|||
html += "</div>";
|
||||
|
||||
if ("User" == profile.Type) {
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="' + profile.Id + '" title="' + globalize.translate("ButtonDelete") + '"><i class="md-icon">delete</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile" data-profileid="' + profile.Id + '" title="' + globalize.translate("ButtonDelete") + '"><i class="material-icons">delete</i></button>';
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
|
|
|
@ -248,7 +248,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
|
|||
html += '<h2 class="sectionTitle sectionTitle-cards">';
|
||||
html += globalize.translate(section.name);
|
||||
html += "</h2>";
|
||||
html += '<i class="md-icon">chevron_right</i>';
|
||||
html += '<i class="material-icons">chevron_right</i>';
|
||||
html += "</a>";
|
||||
}
|
||||
|
||||
|
|
|
@ -1723,7 +1723,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
|
|||
html += '<h2 class="sectionTitle sectionTitle-cards">';
|
||||
html += "<span>" + type.name + "</span>";
|
||||
html += "</h2>";
|
||||
html += '<button class="btnAddToCollection sectionTitleButton" type="button" is="paper-icon-button-light" style="margin-left:1em;"><i class="md-icon" icon="add">add</i></button>';
|
||||
html += '<button class="btnAddToCollection sectionTitleButton" type="button" is="paper-icon-button-light" style="margin-left:1em;"><i class="material-icons" icon="add">add</i></button>';
|
||||
html += "</div>";
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer collectionItemsContainer vertical-wrap padded-left padded-right">';
|
||||
var shape = "MusicAlbum" == type.type ? getSquareShape(false) : getPortraitShape(false);
|
||||
|
|
|
@ -26,11 +26,11 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo
|
|||
html += '<div class="cardScalable visualCardBox-cardScalable">';
|
||||
html += '<div class="' + padderClass + '"></div>';
|
||||
html += '<div class="cardContent searchImage">';
|
||||
html += '<div class="cardImageContainer coveredImage"><i class="cardImageIcon md-icon">dvr</i></div>';
|
||||
html += '<div class="cardImageContainer coveredImage"><i class="cardImageIcon material-icons">dvr</i></div>';
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions autoSize" data-action="menu"><i class="md-icon">more_horiz</i></button>';
|
||||
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions autoSize" data-action="menu"><i class="material-icons">more_horiz</i></button>';
|
||||
html += '<div class="cardText">' + (device.FriendlyName || getTunerName(device.Type)) + "</div>";
|
||||
html += '<div class="cardText cardText-secondary">';
|
||||
html += device.Url || " ";
|
||||
|
@ -101,7 +101,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo
|
|||
for (var i = 0, length = providers.length; i < length; i++) {
|
||||
var provider = providers[i];
|
||||
html += '<div class="listItem">';
|
||||
html += '<i class="listItemIcon md-icon">dvr</i>';
|
||||
html += '<i class="listItemIcon material-icons">dvr</i>';
|
||||
html += '<div class="listItemBody two-line">';
|
||||
html += '<a is="emby-linkbutton" style="display:block;padding:0;margin:0;text-align:left;" class="clearLink" href="' + getProviderConfigurationUrl(provider.Type) + "&id=" + provider.Id + '">';
|
||||
html += '<h3 class="listItemBodyText">';
|
||||
|
@ -112,7 +112,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo
|
|||
html += "</div>";
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnOptions" data-id="' + provider.Id + '"><i class="md-icon listItemAside">more_horiz</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnOptions" data-id="' + provider.Id + '"><i class="material-icons listItemAside">more_horiz</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
|
|
@ -267,7 +267,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
|
|||
hasCardImageContainer = true;
|
||||
} else if (!virtualFolder.showNameWithIcon) {
|
||||
html += '<div class="cardImageContainer editLibrary" style="cursor:pointer;">';
|
||||
html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
|
||||
html += '<i class="cardImageIcon-small material-icons">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
|
||||
hasCardImageContainer = true;
|
||||
}
|
||||
|
||||
|
@ -280,7 +280,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
|
|||
|
||||
if (!imgUrl && virtualFolder.showNameWithIcon) {
|
||||
html += '<h3 class="cardImageContainer addLibrary" style="position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer;flex-direction:column;">';
|
||||
html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
|
||||
html += '<i class="cardImageIcon-small material-icons">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
|
||||
|
||||
if (virtualFolder.showNameWithIcon) {
|
||||
html += '<div style="margin:1em 0;position:width:100%;">';
|
||||
|
@ -297,7 +297,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
|
|||
|
||||
if (virtualFolder.showMenu !== false) {
|
||||
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">more_horiz</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="material-icons">more_horiz</i></button>';
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
|
|
|
@ -114,7 +114,10 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
|
|||
shape: getPortraitShape(),
|
||||
scalable: true,
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: false
|
||||
allowBottomPadding: true,
|
||||
showTitle: true,
|
||||
centerText: true,
|
||||
showYear: true
|
||||
});
|
||||
}
|
||||
if (result.Items.length >= query.Limit) {
|
||||
|
@ -142,7 +145,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
|
|||
html += '<h2 class="sectionTitle sectionTitle-cards">';
|
||||
html += item.Name;
|
||||
html += "</h2>";
|
||||
html += '<i class="md-icon hide">chevron_right</i>';
|
||||
html += '<i class="material-icons hide">chevron_right</i>';
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
if (enableScrollX()) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
"use strict";
|
||||
|
||||
function enableScrollX() {
|
||||
|
@ -114,18 +114,25 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
|
|||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX padded-left padded-right">';
|
||||
html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true">';
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer scrollSlider focuscontainer-x">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer focuscontainer-x padded-left padded-right vertical-wrap">';
|
||||
}
|
||||
|
||||
html += cardBuilder.getCardsHtml(recommendation.Items, {
|
||||
shape: getPortraitShape(),
|
||||
scalable: true,
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
|
||||
if (enableScrollX()) {
|
||||
html += '</div>';
|
||||
}
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
return html;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) {
|
||||
define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "keyboardnavigation", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!assets/css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings, keyboardnavigation) {
|
||||
"use strict";
|
||||
|
||||
function seriesImageUrl(item, options) {
|
||||
|
@ -437,6 +437,11 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
});
|
||||
currentVisibleMenu = null;
|
||||
toggleSubtitleSync("hide");
|
||||
|
||||
// Firefox does not blur by itself
|
||||
if (document.activeElement) {
|
||||
document.activeElement.blur();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1087,64 +1092,79 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
*/
|
||||
var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"];
|
||||
|
||||
/**
|
||||
* Clicked element.
|
||||
* To skip 'click' handling on Firefox/Edge.
|
||||
*/
|
||||
var clickedElement;
|
||||
|
||||
function onWindowKeyDown(e) {
|
||||
clickedElement = e.srcElement;
|
||||
|
||||
var key = keyboardnavigation.getKeyName(e);
|
||||
|
||||
if (!currentVisibleMenu && 32 === e.keyCode) {
|
||||
playbackManager.playPause(currentPlayer);
|
||||
showOsd();
|
||||
return;
|
||||
}
|
||||
|
||||
if (layoutManager.tv && NavigationKeys.indexOf(e.key) != -1) {
|
||||
if (layoutManager.tv && NavigationKeys.indexOf(key) != -1) {
|
||||
showOsd();
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.key) {
|
||||
switch (key) {
|
||||
case "Enter":
|
||||
showOsd();
|
||||
break;
|
||||
case "Escape":
|
||||
case "Back":
|
||||
// Ignore key when some dialog is opened
|
||||
if (currentVisibleMenu === "osd" && !document.querySelector(".dialogContainer")) {
|
||||
hideOsd();
|
||||
e.stopPropagation();
|
||||
}
|
||||
break;
|
||||
case "k":
|
||||
playbackManager.playPause(currentPlayer);
|
||||
showOsd();
|
||||
break;
|
||||
|
||||
case "l":
|
||||
case "ArrowRight":
|
||||
case "Right":
|
||||
playbackManager.fastForward(currentPlayer);
|
||||
showOsd();
|
||||
break;
|
||||
|
||||
case "j":
|
||||
case "ArrowLeft":
|
||||
case "Left":
|
||||
playbackManager.rewind(currentPlayer);
|
||||
showOsd();
|
||||
break;
|
||||
|
||||
case "f":
|
||||
if (!e.ctrlKey && !e.metaKey) {
|
||||
playbackManager.toggleFullscreen(currentPlayer);
|
||||
showOsd();
|
||||
}
|
||||
break;
|
||||
|
||||
case "m":
|
||||
playbackManager.toggleMute(currentPlayer);
|
||||
showOsd();
|
||||
break;
|
||||
|
||||
case "NavigationLeft":
|
||||
case "GamepadDPadLeft":
|
||||
case "GamepadLeftThumbstickLeft":
|
||||
// Ignores gamepad events that are always triggered, even when not focused.
|
||||
// Ignores gamepad events that are always triggered, even when not focused.
|
||||
if (document.hasFocus()) {
|
||||
playbackManager.rewind(currentPlayer);
|
||||
showOsd();
|
||||
}
|
||||
break;
|
||||
|
||||
case "NavigationRight":
|
||||
case "GamepadDPadRight":
|
||||
case "GamepadLeftThumbstickRight":
|
||||
// Ignores gamepad events that are always triggered, even when not focused.
|
||||
// Ignores gamepad events that are always triggered, even when not focused.
|
||||
if (document.hasFocus()) {
|
||||
playbackManager.fastForward(currentPlayer);
|
||||
showOsd();
|
||||
|
@ -1152,6 +1172,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
}
|
||||
}
|
||||
|
||||
function onWindowMouseDown(e) {
|
||||
clickedElement = e.srcElement;
|
||||
}
|
||||
|
||||
function onWindowTouchStart(e) {
|
||||
clickedElement = e.srcElement;
|
||||
}
|
||||
|
||||
function getImgUrl(item, chapter, index, maxWidth, apiClient) {
|
||||
if (chapter.ImageTag) {
|
||||
return apiClient.getScaledImageUrl(item.Id, {
|
||||
|
@ -1280,6 +1308,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
showOsd();
|
||||
inputManager.on(window, onInputCommand);
|
||||
dom.addEventListener(window, "keydown", onWindowKeyDown, {
|
||||
capture: true
|
||||
});
|
||||
dom.addEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(window, "touchstart", onWindowTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
} catch (e) {
|
||||
|
@ -1294,6 +1328,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
}
|
||||
|
||||
dom.removeEventListener(window, "keydown", onWindowKeyDown, {
|
||||
capture: true
|
||||
});
|
||||
dom.removeEventListener(window, window.PointerEvent ? "pointerdown" : "mousedown", onWindowMouseDown, {
|
||||
passive: true
|
||||
});
|
||||
dom.removeEventListener(window, "touchstart", onWindowTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
stopOsdHideTimer();
|
||||
|
@ -1465,7 +1505,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
|
|||
playbackManager.previousTrack(currentPlayer);
|
||||
});
|
||||
view.querySelector(".btnPause").addEventListener("click", function () {
|
||||
playbackManager.playPause(currentPlayer);
|
||||
// Ignore 'click' if another element was originally clicked (Firefox/Edge issue)
|
||||
if (this.contains(clickedElement)) {
|
||||
playbackManager.playPause(currentPlayer);
|
||||
}
|
||||
});
|
||||
view.querySelector(".btnNextTrack").addEventListener("click", function () {
|
||||
playbackManager.nextTrack(currentPlayer);
|
||||
|
|
|
@ -141,7 +141,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
|
|||
html += '<h2 class="sectionTitle sectionTitle-cards">';
|
||||
html += item.Name;
|
||||
html += "</h2>";
|
||||
html += '<i class="md-icon hide">chevron_right</i>';
|
||||
html += '<i class="material-icons hide">chevron_right</i>';
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
if (enableScrollX()) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (DisplaySettings, userSettingsBuilder, currentUserSettings, autoFocuser) {
|
||||
define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySettings, currentUserSettings, autoFocuser) {
|
||||
"use strict";
|
||||
|
||||
return function (view, params) {
|
||||
|
@ -11,7 +11,7 @@ define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"]
|
|||
var settingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings();
|
||||
view.addEventListener("viewshow", function () {
|
||||
window.addEventListener("beforeunload", onBeforeUnload);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) {
|
||||
define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, dom, globalize, loading, currentUserSettings, autoFocuser) {
|
||||
"use strict";
|
||||
|
||||
return function (view, params) {
|
||||
|
@ -11,7 +11,7 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin
|
|||
var homescreenSettingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings();
|
||||
view.addEventListener("viewshow", function () {
|
||||
window.addEventListener("beforeunload", onBeforeUnload);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) {
|
||||
define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, dom, globalize, loading, currentUserSettings, autoFocuser) {
|
||||
"use strict";
|
||||
|
||||
return function (view, params) {
|
||||
|
@ -11,7 +11,7 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading"
|
|||
var settingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings();
|
||||
view.addEventListener("viewshow", function () {
|
||||
window.addEventListener("beforeunload", onBeforeUnload);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings, autoFocuser) {
|
||||
define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSettings, currentUserSettings, autoFocuser) {
|
||||
"use strict";
|
||||
|
||||
return function (view, params) {
|
||||
|
@ -11,7 +11,7 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"
|
|||
var subtitleSettingsInstance;
|
||||
var hasChanges;
|
||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder();
|
||||
var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettings();
|
||||
view.addEventListener("viewshow", function () {
|
||||
window.addEventListener("beforeunload", onBeforeUnload);
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
|
|||
li += h;
|
||||
li += "</h3>";
|
||||
li += "</div>";
|
||||
li += '<button type="button" is="paper-icon-button-light" class="blockedTag btnDeleteTag listItemButton" data-tag="' + h + '"><i class="md-icon">delete</i></button>';
|
||||
li += '<button type="button" is="paper-icon-button-light" class="blockedTag btnDeleteTag listItemButton" data-tag="' + h + '"><i class="material-icons">delete</i></button>';
|
||||
return li += "</div>";
|
||||
}).join("");
|
||||
|
||||
|
@ -143,7 +143,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
|
|||
itemHtml += "</h3>";
|
||||
itemHtml += '<div class="listItemBodyText secondary">' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "</div>";
|
||||
itemHtml += "</div>";
|
||||
itemHtml += '<button type="button" is="paper-icon-button-light" class="btnDelete listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>';
|
||||
itemHtml += '<button type="button" is="paper-icon-button-light" class="btnDelete listItemButton" data-index="' + index + '"><i class="material-icons">delete</i></button>';
|
||||
itemHtml += "</div>";
|
||||
index++;
|
||||
return itemHtml;
|
||||
|
|
|
@ -104,7 +104,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
|
|||
html += '<div class="' + imageClass + '" style="background-image:url(\'' + imgUrl + "');\">";
|
||||
} else {
|
||||
html += '<div class="' + imageClass + ' flex align-items-center justify-content-center">';
|
||||
html += '<i class="md-icon cardImageIcon">person</i>';
|
||||
html += '<i class="material-icons cardImageIcon">person</i>';
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
|
@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
|
|||
html += '<div class="flex-grow" style="overflow:hidden;text-overflow:ellipsis;">';
|
||||
html += user.Name;
|
||||
html += "</div>";
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu flex-shrink-zero"><i class="md-icon">more_horiz</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu flex-shrink-zero"><i class="material-icons">more_horiz</i></button>';
|
||||
html += "</div>";
|
||||
html += '<div class="cardText cardText-secondary">';
|
||||
var lastSeen = getLastSeenText(user.LastActivityDate);
|
||||
|
@ -181,14 +181,14 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
|
|||
html += '<div class="cardImage" style="background-image:url(\'' + user.ImageUrl + "');\">";
|
||||
html += "</div>";
|
||||
} else {
|
||||
html += '<i class="cardImageIcon md-icon">person</i>';
|
||||
html += '<i class="cardImageIcon material-icons">person</i>';
|
||||
}
|
||||
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
html += '<div class="cardText" style="text-align:right; float:right;padding:0;">';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu"><i class="md-icon">more_horiz</i></button>';
|
||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu"><i class="material-icons">more_horiz</i></button>';
|
||||
html += "</div>";
|
||||
html += '<div class="cardText" style="padding-top:10px;padding-bottom:10px;">';
|
||||
html += user.UserName;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue