mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
remove connect in ui
This commit is contained in:
parent
6b3767c880
commit
d19c8ed72b
60 changed files with 215 additions and 565 deletions
|
@ -90,7 +90,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
|
|||
var html = "";
|
||||
html += '<div style="height:.5em;"></div>', html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" href="home.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonHome") + "</span></a>", html += '<div class="libraryMenuDownloads">', html += '<h3 class="sidebarHeader">', html += globalize.translate("sharedcomponents#HeaderMyDownloads"), html += "</h3>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="manageoffline" href="offline/offline.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("sharedcomponents#Browse") + "</span></a>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="manageoffline" href="managedownloads.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("sharedcomponents#Manage") + "</span></a>", html += "</div>", html += '<div class="libraryMenuOptions">', html += "</div>";
|
||||
var localUser = user.localUser;
|
||||
localUser && localUser.Policy.IsAdministrator && (html += '<div class="adminMenuOptions">', html += '<h3 class="sidebarHeader">', html += globalize.translate("HeaderAdmin"), html += "</h3>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkManageServer" data-itemid="dashboard" href="dashboard.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonManageServer") + "</span></a>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder editorViewMenu" data-itemid="editor" href="edititemmetadata.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("MetadataManager") + "</span></a>", html += "</div>"), html += '<div class="userMenuOptions">', user.localUser && (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkMySettings" href="mypreferencesmenu.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSettings") + "</span></a>"), html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkSyncToOtherDevices" data-itemid="syncotherdevices" href="mysync.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("sharedcomponents#Sync") + "</span></a>", Dashboard.isConnectMode() && (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="selectserver.html?showuser=1"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSelectServer") + "</span></a>"), !user.localUser || user.localUser.EnableAutoLogin && !user.connectUser || (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnLogout" data-itemid="logout" href="#"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSignOut") + "</span></a>"), html += "</div>", navDrawerScrollContainer.innerHTML = html;
|
||||
localUser && localUser.Policy.IsAdministrator && (html += '<div class="adminMenuOptions">', html += '<h3 class="sidebarHeader">', html += globalize.translate("HeaderAdmin"), html += "</h3>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkManageServer" data-itemid="dashboard" href="dashboard.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonManageServer") + "</span></a>", html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder editorViewMenu" data-itemid="editor" href="edititemmetadata.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("MetadataManager") + "</span></a>", html += "</div>"), html += '<div class="userMenuOptions">', user.localUser && (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkMySettings" href="mypreferencesmenu.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSettings") + "</span></a>"), html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder lnkSyncToOtherDevices" data-itemid="syncotherdevices" href="mysync.html"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("sharedcomponents#Sync") + "</span></a>", AppInfo.isNativeApp && (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="selectserver.html?showuser=1"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSelectServer") + "</span></a>"), /* TODO cvium user is always localUser I think */!user.localUser || user.localUser.EnableAutoLogin || (html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnLogout" data-itemid="logout" href="#"><i class="md-icon navMenuOptionIcon"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSignOut") + "</span></a>"), html += "</div>", navDrawerScrollContainer.innerHTML = html;
|
||||
var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout");
|
||||
btnLogout && btnLogout.addEventListener("click", onLogoutClick)
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ define(["appSettings", "dom", "connectionManager", "loading", "cardStyle", "emby
|
|||
users.length ? users.length && users[0].EnableAutoLogin ? authenticateUserByName(view, apiClient, users[0].Name, "") : (showVisualForm(), loadUserList(view, apiClient, users)) : (view.querySelector("#txtManualName").value = "", showManualForm(view, !1, !1)), loading.hide()
|
||||
}), apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options) {
|
||||
view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || ""
|
||||
}), Dashboard.isConnectMode() ? view.querySelector(".connectButtons").classList.remove("hide") : view.querySelector(".connectButtons").classList.add("hide")
|
||||
}), AppInfo.isNativeApp ? view.querySelector(".connectButtons").classList.remove("hide") : view.querySelector(".connectButtons").classList.add("hide")
|
||||
})
|
||||
}
|
||||
});
|
|
@ -222,8 +222,6 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu
|
|||
view.addEventListener("viewshow", function(e) {
|
||||
var isRestored = e.detail.isRestored;
|
||||
appRouter.setTitle(null), backdrop.setBackdrop(backdropUrl), isRestored || (loadServers(), loadInvitations())
|
||||
}), view.querySelector(".btnConnect").addEventListener("click", function(e) {
|
||||
appRouter.show("/connectlogin.html?mode=connect")
|
||||
}), view.querySelector(".btnOffline").addEventListener("click", function(e) {
|
||||
appRouter.show("/offline/offline.html")
|
||||
}), view.querySelector(".servers").addEventListener("click", function(e) {
|
||||
|
|
|
@ -32,11 +32,6 @@ function pageIdOn(eventName, id, fn) {
|
|||
})
|
||||
}
|
||||
var Dashboard = {
|
||||
isConnectMode: function() {
|
||||
if (AppInfo.isNativeApp) return !0;
|
||||
var url = window.location.href.toLowerCase();
|
||||
return -1 != url.indexOf("mediabrowser.tv") || -1 != url.indexOf("jellyfin.media")
|
||||
},
|
||||
allowPluginPages: function(pluginId) {
|
||||
var allowedPluginConfigs = ["b0daa30f-2e09-4083-a6ce-459d9fecdd80", "de228f12-e43e-4bd9-9fc0-2830819c3b92", "899c12c7-5b40-4c4e-9afd-afd74a685eb1", "14f5f69e-4c8d-491b-8917-8e90e8317530", "02528C96-F727-44D7-BE87-9EEF040758C3", "dc372f99-4e0e-4c6b-8c18-2b887ca4530c", "830fc68f-b964-4d2f-b139-48e22cd143c", "b9f0c474-e9a8-4292-ae41-eb3c1542f4cd", "7cfbb821-e8fd-40ab-b64e-a7749386a6b2", "4C2FDA1C-FD5E-433A-AD2B-718E0B73E9A9", "cd5a19be-7676-48ef-b64f-a17c98f2b889", "b2ff6a63-303a-4a84-b937-6e12f87e3eb9", "0277E613-3EC0-4360-A3DE-F8AF0AABB5E9", "9464BD84-D30D-4404-B2AD-DFF4E12D5FC5", "9574ac10-bf23-49bc-949f-924f23cfa48f", "66fd72a4-7e8e-4f22-8d1c-022ce4b9b0d5", "4DCB591C-0FA2-4C5D-A7E5-DABE37164C8B", "8e791e2a-058a-4b12-8493-8bf69d92d685", "577f89eb-58a7-4013-be06-9a970ddb1377", "6153FDF0-40CC-4457-8730-3B4A19512BAE", "de228f12-e43e-4bd9-9fc0-2830819c3b92", "6C3B6965-C257-47C2-AA02-64457AE21D91", "2FE79C34-C9DC-4D94-9DF2-2F3F36764414", "0417264b-5a93-4ad0-a1f0-b87569b7cf80", "e711475e-efad-431b-8527-033ba9873a34", "AB95885A-1D0E-445E-BDBF-80C1912C98C5", "F015EA06-B413-47F1-BF15-F049A799658B", "986a7283-205a-4436-862d-23135c067f8a", "8abc6789-fde2-4705-8592-4028806fa343", "2850d40d-9c66-4525-aa46-968e8ef04e97"].map(function(i) {
|
||||
return i.toLowerCase()
|
||||
|
@ -47,7 +42,7 @@ var Dashboard = {
|
|||
return window.ApiClient.getCurrentUser(!1)
|
||||
},
|
||||
serverAddress: function() {
|
||||
if (Dashboard.isConnectMode()) {
|
||||
if (AppInfo.isNativeApp) {
|
||||
var apiClient = window.ApiClient;
|
||||
return apiClient ? apiClient.serverAddress() : null
|
||||
}
|
||||
|
@ -67,15 +62,14 @@ var Dashboard = {
|
|||
},
|
||||
logout: function(logoutWithServer) {
|
||||
function onLogoutDone() {
|
||||
var loginPage;
|
||||
Dashboard.isConnectMode() ? (loginPage = "connectlogin.html", window.ApiClient = null) : loginPage = "login.html", Dashboard.navigate(loginPage)
|
||||
Dashboard.navigate("login.html")
|
||||
}!1 === logoutWithServer ? onLogoutDone() : ConnectionManager.logout().then(onLogoutDone)
|
||||
},
|
||||
getConfigurationPageUrl: function(name) {
|
||||
return Dashboard.isConnectMode() ? "configurationpageext?name=" + encodeURIComponent(name) : "configurationpage?name=" + encodeURIComponent(name)
|
||||
return "configurationpage?name=" + encodeURIComponent(name)
|
||||
},
|
||||
getConfigurationResourceUrl: function(name) {
|
||||
return Dashboard.isConnectMode() ? ApiClient.getUrl("web/ConfigurationPage", {
|
||||
return AppInfo.isNativeApp ? ApiClient.getUrl("web/ConfigurationPage", {
|
||||
name: name
|
||||
}) : Dashboard.getConfigurationPageUrl(name)
|
||||
},
|
||||
|
@ -128,7 +122,7 @@ var Dashboard = {
|
|||
apiClient: apiClient
|
||||
});
|
||||
events.on(dialog, "restarted", function() {
|
||||
Dashboard.isConnectMode() ? apiClient.ensureWebSocket() : window.location.reload(!0)
|
||||
AppInfo.isNativeApp ? apiClient.ensureWebSocket() : window.location.reload(!0)
|
||||
}), dialog.show()
|
||||
})
|
||||
},
|
||||
|
@ -188,7 +182,7 @@ var Dashboard = {
|
|||
capabilities = Dashboard.capabilities(apphost);
|
||||
capabilities.DeviceProfile = deviceProfile;
|
||||
var connectionManager = new ConnectionManager(credentialProviderInstance, apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), capabilities, window.devicePixelRatio);
|
||||
if (defineConnectionManager(connectionManager), bindConnectionManagerEvents(connectionManager, events, userSettings), !Dashboard.isConnectMode()) return console.log("loading ApiClient singleton"), getRequirePromise(["apiclient"]).then(function(apiClientFactory) {
|
||||
if (defineConnectionManager(connectionManager), bindConnectionManagerEvents(connectionManager, events, userSettings), !AppInfo.isNativeApp) return console.log("loading ApiClient singleton"), getRequirePromise(["apiclient"]).then(function(apiClientFactory) {
|
||||
console.log("creating ApiClient singleton");
|
||||
var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), window.devicePixelRatio);
|
||||
apiClient.enableAutomaticNetworking = !1, apiClient.manualAddressOnly = !0, connectionManager.addApiClient(apiClient), window.ApiClient = apiClient, localApiClient = apiClient, console.log("loaded ApiClient singleton"), resolve()
|
||||
|
@ -810,15 +804,7 @@ var Dashboard = {
|
|||
supportsThemeMedia: !0,
|
||||
fullscreen: !0,
|
||||
enableMediaControl: !1
|
||||
}), defineRoute(Dashboard.isConnectMode() ? {
|
||||
path: "/configurationpageext",
|
||||
dependencies: [],
|
||||
autoFocus: !1,
|
||||
enableCache: !1,
|
||||
enableContentQueryString: !0,
|
||||
roles: "admin",
|
||||
contentPath: getPluginPageContentPath
|
||||
} : {
|
||||
}), defineRoute({
|
||||
path: "/configurationpage",
|
||||
dependencies: [],
|
||||
autoFocus: !1,
|
||||
|
@ -879,7 +865,7 @@ var Dashboard = {
|
|||
hashbang: !0
|
||||
});
|
||||
var postInitDependencies = [];
|
||||
!enableNativeGamepadKeyMapping() && isGamepadSupported() && postInitDependencies.push("bower_components/emby-webcomponents/input/gamepadtokey"), postInitDependencies.push("bower_components/emby-webcomponents/thememediaplayer"), postInitDependencies.push("scripts/autobackdrops"), "cordova" !== self.appMode && "android" !== self.appMode || (browser.android ? (postInitDependencies.push("cordova/mediasession"), postInitDependencies.push("cordova/chromecast"), postInitDependencies.push("cordova/appshortcuts")) : browser.safari && (postInitDependencies.push("cordova/mediasession"), postInitDependencies.push("cordova/volume"), postInitDependencies.push("cordova/statusbar"), postInitDependencies.push("cordova/backgroundfetch"))), browser.tv || browser.xboxOne || browser.ps4 || postInitDependencies.push("bower_components/emby-webcomponents/nowplayingbar/nowplayingbar"), appHost.supports("remotecontrol") && (postInitDependencies.push("playerSelectionMenu"), postInitDependencies.push("bower_components/emby-webcomponents/playback/remotecontrolautoplay")), appHost.supports("physicalvolumecontrol") && !browser.touch || browser.edge || postInitDependencies.push("bower_components/emby-webcomponents/playback/volumeosd"), navigator.mediaSession && postInitDependencies.push("mediaSession"), postInitDependencies.push("apiInput"), postInitDependencies.push("mouseManager"), browser.tv || browser.xboxOne || (postInitDependencies.push("bower_components/emby-webcomponents/playback/playbackorientation"), registerServiceWorker(), window.Notification && postInitDependencies.push("bower_components/emby-webcomponents/notifications/notifications")), postInitDependencies.push("playerSelectionMenu"), appHost.supports("fullscreenchange") && (browser.edgeUwp || -1 !== navigator.userAgent.toLowerCase().indexOf("electron")) && require(["fullscreen-doubleclick"]), require(postInitDependencies), appHost.supports("sync") && initLocalSyncEvents(), Dashboard.isConnectMode() || window.ApiClient && require(["css!" + ApiClient.getUrl("Branding/Css")])
|
||||
!enableNativeGamepadKeyMapping() && isGamepadSupported() && postInitDependencies.push("bower_components/emby-webcomponents/input/gamepadtokey"), postInitDependencies.push("bower_components/emby-webcomponents/thememediaplayer"), postInitDependencies.push("scripts/autobackdrops"), "cordova" !== self.appMode && "android" !== self.appMode || (browser.android ? (postInitDependencies.push("cordova/mediasession"), postInitDependencies.push("cordova/chromecast"), postInitDependencies.push("cordova/appshortcuts")) : browser.safari && (postInitDependencies.push("cordova/mediasession"), postInitDependencies.push("cordova/volume"), postInitDependencies.push("cordova/statusbar"), postInitDependencies.push("cordova/backgroundfetch"))), browser.tv || browser.xboxOne || browser.ps4 || postInitDependencies.push("bower_components/emby-webcomponents/nowplayingbar/nowplayingbar"), appHost.supports("remotecontrol") && (postInitDependencies.push("playerSelectionMenu"), postInitDependencies.push("bower_components/emby-webcomponents/playback/remotecontrolautoplay")), appHost.supports("physicalvolumecontrol") && !browser.touch || browser.edge || postInitDependencies.push("bower_components/emby-webcomponents/playback/volumeosd"), navigator.mediaSession && postInitDependencies.push("mediaSession"), postInitDependencies.push("apiInput"), postInitDependencies.push("mouseManager"), browser.tv || browser.xboxOne || (postInitDependencies.push("bower_components/emby-webcomponents/playback/playbackorientation"), registerServiceWorker(), window.Notification && postInitDependencies.push("bower_components/emby-webcomponents/notifications/notifications")), postInitDependencies.push("playerSelectionMenu"), appHost.supports("fullscreenchange") && (browser.edgeUwp || -1 !== navigator.userAgent.toLowerCase().indexOf("electron")) && require(["fullscreen-doubleclick"]), require(postInitDependencies), appHost.supports("sync") && initLocalSyncEvents(), AppInfo.isNativeApp || window.ApiClient && require(["css!" + ApiClient.getUrl("Branding/Css")])
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -889,7 +875,8 @@ var Dashboard = {
|
|||
return navigator.serviceWorker.ready
|
||||
}).then(function(reg) {
|
||||
if (reg && reg.sync) return reg.sync.register("emby-sync").then(function() {
|
||||
window.SyncRegistered = Dashboard.isConnectMode()
|
||||
// TODO cvium: the sync serviceworker is a noop?
|
||||
//window.SyncRegistered = Dashboard.isConnectMode()
|
||||
})
|
||||
})
|
||||
} catch (err) {
|
||||
|
@ -1044,11 +1031,9 @@ var Dashboard = {
|
|||
}, appRouter.showVideoOsd = function() {
|
||||
return Dashboard.navigate("videoosd.html")
|
||||
}, appRouter.showSelectServer = function() {
|
||||
Dashboard.isConnectMode() ? Dashboard.navigate("selectserver.html") : Dashboard.navigate("login.html")
|
||||
AppInfo.isNativeApp ? Dashboard.navigate("selectserver.html") : Dashboard.navigate("login.html")
|
||||
}, appRouter.showWelcome = function() {
|
||||
Dashboard.isConnectMode() ? Dashboard.navigate("connectlogin.html?mode=welcome") : Dashboard.navigate("login.html")
|
||||
}, appRouter.showConnectLogin = function() {
|
||||
Dashboard.navigate("connectlogin.html")
|
||||
Dashboard.navigate("login.html")
|
||||
}, appRouter.showSettings = function() {
|
||||
Dashboard.navigate("mypreferencesmenu.html")
|
||||
}, appRouter.showGuide = function() {
|
||||
|
|
|
@ -1,95 +1,147 @@
|
|||
define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", "cardStyle", "emby-linkbutton", "indicators", "flexStyles"], function(loading, dom, globalize) {
|
||||
define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", "cardStyle", "emby-linkbutton", "indicators", "flexStyles"], function (loading, dom, globalize) {
|
||||
"use strict";
|
||||
|
||||
function deleteUser(page, id) {
|
||||
var msg = globalize.translate("DeleteUserConfirmation");
|
||||
require(["confirm"], function(confirm) {
|
||||
|
||||
require(["confirm"], function (confirm) {
|
||||
confirm({
|
||||
title: globalize.translate("DeleteUser"),
|
||||
text: msg,
|
||||
confirmText: globalize.translate("ButtonDelete"),
|
||||
primary: "cancel"
|
||||
}).then(function() {
|
||||
loading.show(), ApiClient.deleteUser(id).then(function() {
|
||||
loadData(page)
|
||||
})
|
||||
})
|
||||
})
|
||||
}).then(function () {
|
||||
loading.show();
|
||||
ApiClient.deleteUser(id).then(function () {
|
||||
loadData(page);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showUserMenu(elem) {
|
||||
var card = dom.parentWithClass(elem, "card"),
|
||||
page = dom.parentWithClass(card, "page"),
|
||||
userId = card.getAttribute("data-userid"),
|
||||
menuItems = [];
|
||||
var card = dom.parentWithClass(elem, "card");
|
||||
var page = dom.parentWithClass(card, "page");
|
||||
var userId = card.getAttribute("data-userid");
|
||||
var menuItems = [];
|
||||
menuItems.push({
|
||||
name: globalize.translate("ButtonOpen"),
|
||||
id: "open",
|
||||
ironIcon: "mode-edit"
|
||||
}), menuItems.push({
|
||||
});
|
||||
menuItems.push({
|
||||
name: globalize.translate("ButtonLibraryAccess"),
|
||||
id: "access",
|
||||
ironIcon: "lock"
|
||||
}), menuItems.push({
|
||||
});
|
||||
menuItems.push({
|
||||
name: globalize.translate("ButtonParentalControl"),
|
||||
id: "parentalcontrol",
|
||||
ironIcon: "person"
|
||||
}), menuItems.push({
|
||||
});
|
||||
menuItems.push({
|
||||
name: globalize.translate("ButtonDelete"),
|
||||
id: "delete",
|
||||
ironIcon: "delete"
|
||||
}), require(["actionsheet"], function(actionsheet) {
|
||||
});
|
||||
|
||||
require(["actionsheet"], function (actionsheet) {
|
||||
actionsheet.show({
|
||||
items: menuItems,
|
||||
positionTo: card,
|
||||
callback: function(id) {
|
||||
callback: function (id) {
|
||||
switch (id) {
|
||||
case "open":
|
||||
Dashboard.navigate("useredit.html?userId=" + userId);
|
||||
break;
|
||||
|
||||
case "access":
|
||||
Dashboard.navigate("userlibraryaccess.html?userId=" + userId);
|
||||
break;
|
||||
|
||||
case "parentalcontrol":
|
||||
Dashboard.navigate("userparentalcontrol.html?userId=" + userId);
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
deleteUser(page, userId)
|
||||
deleteUser(page, userId);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getUserHtml(user, addConnectIndicator) {
|
||||
var html = "",
|
||||
cssClass = "card squareCard scalableCard squareCard-scalable";
|
||||
user.Policy.IsDisabled && (cssClass += " grayscale"), html += "<div data-userid='" + user.Id + "' class='" + cssClass + "'>", html += '<div class="cardBox visualCardBox">', html += '<div class="cardScalable visualCardBox-cardScalable">', html += '<div class="cardPadder cardPadder-square"></div>', html += '<a is="emby-linkbutton" class="cardContent" href="useredit.html?userId=' + user.Id + '">';
|
||||
var html = "";
|
||||
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
||||
|
||||
if (user.Policy.IsDisabled) {
|
||||
cssClass += " grayscale";
|
||||
}
|
||||
|
||||
html += "<div data-userid='" + user.Id + "' class='" + cssClass + "'>";
|
||||
html += '<div class="cardBox visualCardBox">';
|
||||
html += '<div class="cardScalable visualCardBox-cardScalable">';
|
||||
html += '<div class="cardPadder cardPadder-square"></div>';
|
||||
html += '<a is="emby-linkbutton" class="cardContent" href="useredit.html?userId=' + user.Id + '">';
|
||||
var imgUrl;
|
||||
user.PrimaryImageTag && (imgUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||
width: 300,
|
||||
tag: user.PrimaryImageTag,
|
||||
type: "Primary"
|
||||
}));
|
||||
|
||||
if (user.PrimaryImageTag) {
|
||||
imgUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||
width: 300,
|
||||
tag: user.PrimaryImageTag,
|
||||
type: "Primary"
|
||||
});
|
||||
}
|
||||
|
||||
var imageClass = "cardImage";
|
||||
user.Policy.IsDisabled && (imageClass += " disabledUser"), imgUrl ? html += '<div class="' + imageClass + '" style="background-image:url(\'' + imgUrl + "');\">" : (html += '<div class="' + imageClass + ' flex align-items-center justify-content-center">', html += '<i class="md-icon cardImageIcon">person</i>'), user.ConnectUserId && addConnectIndicator && (html += '<div class="cardIndicators squareCardIndicators"><div title="' + globalize.translate("TooltipLinkedToEmbyConnect") + '" class="playedIndicator indicator"><i class="md-icon indicatorIcon">cloud</i></div></div>'), html += "</div>", html += "</a>", html += "</div>", html += '<div class="cardFooter visualCardBox-cardFooter">', html += '<div class="cardText flex align-items-center">', 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 += "</div>", html += '<div class="cardText cardText-secondary">';
|
||||
|
||||
if (user.Policy.IsDisabled) {
|
||||
imageClass += " disabledUser";
|
||||
}
|
||||
|
||||
if (imgUrl) {
|
||||
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 += "</div>";
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||
html += '<div class="cardText flex align-items-center">';
|
||||
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 += "</div>";
|
||||
html += '<div class="cardText cardText-secondary">';
|
||||
var lastSeen = getLastSeenText(user.LastActivityDate);
|
||||
return html += "" != lastSeen ? lastSeen : " ", html += "</div>", html += "</div>", html += "</div>", html += "</div>"
|
||||
html += "" != lastSeen ? lastSeen : " ";
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
return html + "</div>";
|
||||
}
|
||||
|
||||
function getLastSeenText(lastActivityDate) {
|
||||
return lastActivityDate ? "Last seen " + humane_date(lastActivityDate) : ""
|
||||
if (lastActivityDate) {
|
||||
return "Last seen " + humane_date(lastActivityDate);
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
function getUserSectionHtml(users, addConnectIndicator) {
|
||||
var html = "";
|
||||
return html += users.map(function(u) {
|
||||
return getUserHtml(u, addConnectIndicator)
|
||||
}).join("")
|
||||
return users.map(function (u__q) {
|
||||
return getUserHtml(u__q, addConnectIndicator);
|
||||
}).join("");
|
||||
}
|
||||
|
||||
function renderUsers(page, users) {
|
||||
page.querySelector(".localUsers").innerHTML = getUserSectionHtml(users, !0)
|
||||
page.querySelector(".localUsers").innerHTML = getUserSectionHtml(users, true);
|
||||
}
|
||||
|
||||
function showPendingUserMenu(elem) {
|
||||
|
@ -98,86 +150,114 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
|
|||
name: globalize.translate("ButtonCancel"),
|
||||
id: "delete",
|
||||
ironIcon: "delete"
|
||||
}), require(["actionsheet"], function(actionsheet) {
|
||||
var card = dom.parentWithClass(elem, "card"),
|
||||
page = dom.parentWithClass(card, "page"),
|
||||
id = card.getAttribute("data-id");
|
||||
});
|
||||
|
||||
require(["actionsheet"], function (actionsheet) {
|
||||
var card = dom.parentWithClass(elem, "card");
|
||||
var page = dom.parentWithClass(card, "page");
|
||||
var id = card.getAttribute("data-id");
|
||||
actionsheet.show({
|
||||
items: menuItems,
|
||||
positionTo: card,
|
||||
callback: function(menuItemId) {
|
||||
callback: function (menuItemId) {
|
||||
switch (menuItemId) {
|
||||
case "delete":
|
||||
cancelAuthorization(page, id)
|
||||
cancelAuthorization(page, id);
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getPendingUserHtml(user) {
|
||||
var html = "";
|
||||
html += "<div data-id='" + user.Id + "' class='card squareCard scalableCard squareCard-scalable'>", html += '<div class="cardBox cardBox-bottompadded visualCardBox">', html += '<div class="cardScalable visualCardBox-cardScalable">', html += '<div class="cardPadder cardPadder-square"></div>';
|
||||
return html += '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="#">', user.ImageUrl ? (html += '<div class="cardImage" style="background-image:url(\'' + user.ImageUrl + "');\">", html += "</div>") : html += '<i class="cardImageIcon md-icon"></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 += "</div>", html += '<div class="cardText" style="padding-top:10px;padding-bottom:10px;">', html += user.UserName, html += "</div>", html += "</div>", html += "</div>", html += "</div>"
|
||||
html += "<div data-id='" + user.Id + "' class='card squareCard scalableCard squareCard-scalable'>";
|
||||
html += '<div class="cardBox cardBox-bottompadded visualCardBox">';
|
||||
html += '<div class="cardScalable visualCardBox-cardScalable">';
|
||||
html += '<div class="cardPadder cardPadder-square"></div>';
|
||||
html += '<a class="cardContent cardImageContainer" is="emby-linkbutton" href="#">';
|
||||
|
||||
if (user.ImageUrl) {
|
||||
html += '<div class="cardImage" style="background-image:url(\'' + user.ImageUrl + "');\">";
|
||||
html += "</div>";
|
||||
} else {
|
||||
html += '<i class="cardImageIcon md-icon"></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 += "</div>";
|
||||
html += '<div class="cardText" style="padding-top:10px;padding-bottom:10px;">';
|
||||
html += user.UserName;
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
return html + "</div>";
|
||||
}
|
||||
|
||||
function renderPendingGuests(page, users) {
|
||||
users.length ? page.querySelector(".sectionPendingGuests").classList.remove("hide") : page.querySelector(".sectionPendingGuests").classList.add("hide");
|
||||
var html = users.map(getPendingUserHtml).join("");
|
||||
page.querySelector(".pending").innerHTML = html
|
||||
}
|
||||
if (users.length) {
|
||||
page.querySelector(".sectionPendingGuests").classList.remove("hide");
|
||||
} else {
|
||||
page.querySelector(".sectionPendingGuests").classList.add("hide");
|
||||
}
|
||||
|
||||
page.querySelector(".pending").innerHTML = users.map(getPendingUserHtml).join("");
|
||||
}
|
||||
|
||||
// TODO cvium: maybe reuse for invitation system
|
||||
function cancelAuthorization(page, id) {
|
||||
loading.show(), ApiClient.ajax({
|
||||
loading.show();
|
||||
ApiClient.ajax({
|
||||
type: "DELETE",
|
||||
url: ApiClient.getUrl("Connect/Pending", {
|
||||
Id: id
|
||||
})
|
||||
}).then(function() {
|
||||
loadData(page)
|
||||
})
|
||||
}).then(function () {
|
||||
loadData(page);
|
||||
});
|
||||
}
|
||||
|
||||
function loadData(page) {
|
||||
loading.show(), ApiClient.getUsers().then(function(users) {
|
||||
renderUsers(page, users), loading.hide()
|
||||
}), ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function(pending) {
|
||||
renderPendingGuests(page, pending)
|
||||
})
|
||||
}
|
||||
|
||||
function showLinkUser(page, userId) {
|
||||
require(["components/guestinviter/connectlink"], function(connectlink) {
|
||||
connectlink.show().then(function() {
|
||||
loadData(page)
|
||||
})
|
||||
})
|
||||
loading.show();
|
||||
ApiClient.getUsers().then(function (users) {
|
||||
renderUsers(page, users);
|
||||
loading.hide();
|
||||
});
|
||||
// TODO cvium
|
||||
renderPendingGuests(page, []);
|
||||
// ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function (pending) {
|
||||
//
|
||||
// });
|
||||
}
|
||||
|
||||
function showInvitePopup(page) {
|
||||
Dashboard.getCurrentUser().then(function(user) {
|
||||
if (!user.ConnectUserId) return void showLinkUser(page, user.Id);
|
||||
require(["components/guestinviter/guestinviter"], function(guestinviter) {
|
||||
guestinviter.show().then(function() {
|
||||
loadData(page)
|
||||
})
|
||||
})
|
||||
})
|
||||
require(["components/guestinviter/guestinviter"], function (guestinviter) {
|
||||
guestinviter.show().then(function () {
|
||||
loadData(page);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showNewUserDialog(e) {
|
||||
require(["dialog"], function(dialog) {
|
||||
function showNewUserDialog(e__w) {
|
||||
require(["dialog"], function (dialog) {
|
||||
var items = [];
|
||||
items.push({
|
||||
name: globalize.translate("HeaderAddLocalUser"),
|
||||
id: "manual",
|
||||
type: "submit",
|
||||
description: globalize.translate("AddUserByManually")
|
||||
}), items.push({
|
||||
name: globalize.translate("HeaderInviteWithEmbyConnect"),
|
||||
id: "invite",
|
||||
description: globalize.translate("InviteAnEmbyConnectUser")
|
||||
}), items.push({
|
||||
});
|
||||
// TODO cvium
|
||||
// items.push({
|
||||
// name: globalize.translate("HeaderInviteUser"),
|
||||
// id: "invite",
|
||||
// description: globalize.translate("HeaderInviteUserHelp")
|
||||
// });
|
||||
items.push({
|
||||
name: globalize.translate("sharedcomponents#ButtonCancel"),
|
||||
id: "cancel",
|
||||
type: "cancel"
|
||||
|
@ -186,22 +266,40 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
|
|||
title: globalize.translate("ButtonAddUser"),
|
||||
text: globalize.translate("HowWouldYouLikeToAddUser")
|
||||
};
|
||||
return options.buttons = items, dialog(options).then(function(result) {
|
||||
var view = dom.parentWithClass(e.target, "page");
|
||||
"invite" === result ? showInvitePopup(view) : "manual" === result && Dashboard.navigate("usernew.html")
|
||||
})
|
||||
})
|
||||
options.buttons = items;
|
||||
return dialog(options).then(function (result) {
|
||||
var view = dom.parentWithClass(e__w.target, "page");
|
||||
debugger;
|
||||
if ("invite" === result) {
|
||||
showInvitePopup(view);
|
||||
} else {
|
||||
if ("manual" === result) {
|
||||
Dashboard.navigate("usernew.html");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
pageIdOn("pageinit", "userProfilesPage", function() {
|
||||
|
||||
pageIdOn("pageinit", "userProfilesPage", function () {
|
||||
var page = this;
|
||||
page.querySelector(".btnAddUser").addEventListener("click", showNewUserDialog), page.querySelector(".localUsers").addEventListener("click", function(e) {
|
||||
var btnUserMenu = dom.parentWithClass(e.target, "btnUserMenu");
|
||||
btnUserMenu && showUserMenu(btnUserMenu)
|
||||
}), page.querySelector(".pending").addEventListener("click", function(e) {
|
||||
var btnUserMenu = dom.parentWithClass(e.target, "btnUserMenu");
|
||||
btnUserMenu && showPendingUserMenu(btnUserMenu)
|
||||
})
|
||||
}), pageIdOn("pagebeforeshow", "userProfilesPage", function() {
|
||||
loadData(this)
|
||||
})
|
||||
});
|
||||
page.querySelector(".btnAddUser").addEventListener("click", showNewUserDialog);
|
||||
page.querySelector(".localUsers").addEventListener("click", function (e__e) {
|
||||
var btnUserMenu = dom.parentWithClass(e__e.target, "btnUserMenu");
|
||||
|
||||
if (btnUserMenu) {
|
||||
showUserMenu(btnUserMenu);
|
||||
}
|
||||
});
|
||||
page.querySelector(".pending").addEventListener("click", function (e__r) {
|
||||
var btnUserMenu = dom.parentWithClass(e__r.target, "btnUserMenu");
|
||||
|
||||
if (btnUserMenu) {
|
||||
showPendingUserMenu(btnUserMenu);
|
||||
}
|
||||
});
|
||||
});
|
||||
pageIdOn("pagebeforeshow", "userProfilesPage", function () {
|
||||
loadData(this);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue