diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js
index 6fc4cfd886..b0cd078b7a 100644
--- a/src/scripts/librarymenu.js
+++ b/src/scripts/librarymenu.js
@@ -1,101 +1,194 @@
-define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function(dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize) {
+define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize) {
"use strict";
function getCurrentApiClient() {
- return currentUser && currentUser.localUser ? connectionManager.getApiClient(currentUser.localUser.ServerId) : connectionManager.currentApiClient()
+ if (currentUser && currentUser.localUser) {
+ return connectionManager.getApiClient(currentUser.localUser.ServerId);
+ }
+
+ return connectionManager.currentApiClient();
}
function lazyLoadViewMenuBarImages() {
- require(["imageLoader"], function(imageLoader) {
- imageLoader.lazyChildren(skinHeader)
- })
+ require(["imageLoader"], function (imageLoader) {
+ imageLoader.lazyChildren(skinHeader);
+ });
}
function onBackClick() {
- appRouter.back()
+ appRouter.back();
}
function updateUserInHeader(user) {
var hasImage;
+
if (user && user.name) {
if (user.imageUrl) {
var url = user.imageUrl;
- user.supportsImageParams && (url += "&height=" + Math.round(26 * Math.max(window.devicePixelRatio || 1, 2))), updateHeaderUserButton(url), hasImage = !0
+
+ if (user.supportsImageParams) {
+ url += "&height=" + Math.round(26 * Math.max(window.devicePixelRatio || 1, 2));
+ }
+
+ updateHeaderUserButton(url);
+ hasImage = true;
}
- headerUserButton.classList.remove("hide")
- } else headerUserButton.classList.add("hide");
- hasImage || updateHeaderUserButton(null), user && user.localUser ? (headerHomeButton && headerHomeButton.classList.remove("hide"), headerSearchButton && headerSearchButton.classList.remove("hide"), headerSettingsButton && (user.localUser.Policy.IsAdministrator ? headerSettingsButton.classList.remove("hide") : headerSettingsButton.classList.add("hide")), headerCastButton.classList.remove("hide")) : (headerHomeButton.classList.add("hide"), headerCastButton.classList.add("hide"), headerSearchButton && headerSearchButton.classList.add("hide"), headerSettingsButton && headerSettingsButton.classList.add("hide")), requiresUserRefresh = !1
+
+ headerUserButton.classList.remove("hide");
+ } else {
+ headerUserButton.classList.add("hide");
+ }
+
+ if (!hasImage) {
+ updateHeaderUserButton(null);
+ }
+
+ if (user && user.localUser) {
+ if (headerHomeButton) {
+ headerHomeButton.classList.remove("hide");
+ }
+
+ if (headerSearchButton) {
+ headerSearchButton.classList.remove("hide");
+ }
+
+ if (headerSettingsButton) {
+ if (user.localUser.Policy.IsAdministrator) {
+ headerSettingsButton.classList.remove("hide");
+ } else {
+ headerSettingsButton.classList.add("hide");
+ }
+ }
+
+ headerCastButton.classList.remove("hide");
+ } else {
+ headerHomeButton.classList.add("hide");
+ headerCastButton.classList.add("hide");
+
+ if (headerSearchButton) {
+ headerSearchButton.classList.add("hide");
+ }
+
+ if (headerSettingsButton) {
+ headerSettingsButton.classList.add("hide");
+ }
+ }
+
+ requiresUserRefresh = false;
}
function updateHeaderUserButton(src) {
- src ? (headerUserButton.classList.add("headerUserButtonRound"), headerUserButton.innerHTML = '
') : (headerUserButton.classList.remove("headerUserButtonRound"), headerUserButton.innerHTML = '')
+ if (src) {
+ headerUserButton.classList.add("headerUserButtonRound");
+ headerUserButton.innerHTML = '
';
+ } else {
+ headerUserButton.classList.remove("headerUserButtonRound");
+ headerUserButton.innerHTML = '';
+ }
}
function showSearch() {
- inputManager.trigger("search")
+ inputManager.trigger("search");
}
function onHeaderUserButtonClick(e) {
- Dashboard.navigate("mypreferencesmenu.html")
+ Dashboard.navigate("mypreferencesmenu.html");
}
function onSettingsClick(e) {
- Dashboard.navigate("dashboard.html")
+ Dashboard.navigate("dashboard.html");
}
function onHeaderHomeButtonClick() {
- Dashboard.navigate("home.html")
+ Dashboard.navigate("home.html");
}
function bindMenuEvents() {
- (mainDrawerButton = document.querySelector(".mainDrawerButton")) && mainDrawerButton.addEventListener("click", toggleMainDrawer);
+ mainDrawerButton = document.querySelector(".mainDrawerButton");
+ if (mainDrawerButton) {
+ mainDrawerButton.addEventListener("click", toggleMainDrawer);
+ }
+
var headerBackButton = skinHeader.querySelector(".headerBackButton");
- headerBackButton && headerBackButton.addEventListener("click", onBackClick), headerSearchButton && headerSearchButton.addEventListener("click", showSearch), headerUserButton.addEventListener("click", onHeaderUserButtonClick), headerHomeButton.addEventListener("click", onHeaderHomeButtonClick), initHeadRoom(skinHeader), headerCastButton.addEventListener("click", onCastButtonClicked), headerSettingsButton && headerSettingsButton.addEventListener("click", onSettingsClick)
+
+ if (headerBackButton) {
+ headerBackButton.addEventListener("click", onBackClick);
+ }
+
+ if (headerSearchButton) {
+ headerSearchButton.addEventListener("click", showSearch);
+ }
+
+ headerUserButton.addEventListener("click", onHeaderUserButtonClick);
+ headerHomeButton.addEventListener("click", onHeaderHomeButtonClick);
+ initHeadRoom(skinHeader);
+ headerCastButton.addEventListener("click", onCastButtonClicked);
+
+ if (headerSettingsButton) {
+ headerSettingsButton.addEventListener("click", onSettingsClick);
+ }
}
function onCastButtonClicked() {
var btn = this;
- require(["playerSelectionMenu"], function(playerSelectionMenu) {
- playerSelectionMenu.show(btn)
- })
+
+ require(["playerSelectionMenu"], function (playerSelectionMenu) {
+ playerSelectionMenu.show(btn);
+ });
}
function getItemHref(item, context) {
return appRouter.getRouteUrl(item, {
context: context
- })
+ });
}
function toggleMainDrawer() {
- navDrawerInstance.isVisible ? closeMainDrawer() : openMainDrawer()
+ if (navDrawerInstance.isVisible) {
+ closeMainDrawer();
+ } else {
+ openMainDrawer();
+ }
}
function openMainDrawer() {
- navDrawerInstance.open(), lastOpenTime = (new Date).getTime()
+ navDrawerInstance.open();
+ lastOpenTime = new Date().getTime();
}
function onMainDrawerOpened() {
- layoutManager.mobile && document.body.classList.add("bodyWithPopupOpen")
+ if (layoutManager.mobile) {
+ document.body.classList.add("bodyWithPopupOpen");
+ }
}
function closeMainDrawer() {
- navDrawerInstance.close()
+ navDrawerInstance.close();
}
function onMainDrawerSelect(e) {
- navDrawerInstance.isVisible ? onMainDrawerOpened() : document.body.classList.remove("bodyWithPopupOpen")
+ if (navDrawerInstance.isVisible) {
+ onMainDrawerOpened();
+ } else {
+ document.body.classList.remove("bodyWithPopupOpen");
+ }
}
function refreshLibraryInfoInDrawer(user, drawer) {
var html = "";
html += '
';
html += '";
-
- // libraries are added here
+ html += '";
html += '";
-
var localUser = user.localUser;
+
if (localUser && localUser.Policy.IsAdministrator) {
html += '"
+ html += "";
}
html += '";
- // add buttons to navigation drawer
+ html += "";
navDrawerScrollContainer.innerHTML = html;
- // bind logout button click to method
var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout");
- btnLogout && btnLogout.addEventListener("click", onLogoutClick)
+
+ if (btnLogout) {
+ btnLogout.addEventListener("click", onLogoutClick);
+ }
}
function refreshDashboardInfoInDrawer(apiClient) {
- currentDrawerType = "admin", loadNavDrawer(), navDrawerScrollContainer.querySelector(".adminDrawerLogo") ? updateDashboardMenuSelectedItem() : createDashboardMenu(apiClient)
+ currentDrawerType = "admin";
+ loadNavDrawer();
+
+ if (navDrawerScrollContainer.querySelector(".adminDrawerLogo")) {
+ updateDashboardMenuSelectedItem();
+ } else {
+ createDashboardMenu(apiClient);
+ }
}
function isUrlInCurrentView(url) {
- return -1 !== window.location.href.toString().toLowerCase().indexOf(url.toLowerCase())
+ return -1 !== window.location.href.toString().toLowerCase().indexOf(url.toLowerCase());
}
function updateDashboardMenuSelectedItem() {
- for (var links = navDrawerScrollContainer.querySelectorAll(".navMenuOption"), currentViewId = viewManager.currentView().id, i = 0, length = links.length; i < length; i++) {
- var link = links[i],
- selected = !1,
- pageIds = link.getAttribute("data-pageids");
- pageIds && (pageIds = pageIds.split("|"), selected = -1 != pageIds.indexOf(currentViewId));
+ var links = navDrawerScrollContainer.querySelectorAll(".navMenuOption");
+ var currentViewId = viewManager.currentView().id;
+
+ for (var i = 0, length = links.length; i < length; i++) {
+ var link = links[i];
+ var selected = false;
+ var pageIds = link.getAttribute("data-pageids");
+
+ if (pageIds) {
+ pageIds = pageIds.split("|");
+ selected = -1 != pageIds.indexOf(currentViewId);
+ }
+
var pageUrls = link.getAttribute("data-pageurls");
- if (pageUrls && (pageUrls = pageUrls.split("|"), selected = pageUrls.filter(isUrlInCurrentView).length > 0), selected) {
+
+ if (pageUrls) {
+ pageUrls = pageUrls.split("|");
+ selected = pageUrls.filter(isUrlInCurrentView).length > 0;
+ }
+ if (selected) {
link.classList.add("navMenuOption-selected");
var title = "";
link = link.querySelector("span") || link;
- title += (link.innerText || link.textContent).trim(), LibraryMenu.setTitle(title)
- } else link.classList.remove("navMenuOption-selected")
+ title += (link.innerText || link.textContent).trim();
+ LibraryMenu.setTitle(title);
+ } else {
+ link.classList.remove("navMenuOption-selected");
+ }
}
}
@@ -190,297 +308,679 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
href: "encodingsettings.html",
pageIds: ["encodingSettingsPage"]
}];
- return addPluginPagesToMainMenu(links, pluginItems, "server"), links.push({
- divider: !0,
+ addPluginPagesToMainMenu(links, pluginItems, "server");
+ links.push({
+ divider: true,
name: globalize.translate("TabDevices")
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabDevices"),
href: "devices/devices.html",
pageIds: ["devicesPage", "devicePage"],
icon: "tablet"
- }), links.push({
+ });
+ links.push({
name: globalize.translate("HeaderDownloadSync"),
icon: "file_download",
href: "syncactivity.html",
pageIds: ["syncActivityPage", "syncJobPage", "syncSettingsPage"],
color: "#009688"
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabCameraUpload"),
href: "devicesupload.html",
pageIds: ["devicesUploadPage"],
icon: "photo_camera"
- }), links.push({
+ });
+ links.push({
name: globalize.translate("DLNA"),
href: "dlnasettings.html",
pageIds: ["dlnaSettingsPage", "dlnaProfilesPage", "dlnaProfilePage"],
icon: ""
- }), links.push({
- divider: !0,
+ });
+ links.push({
+ divider: true,
name: globalize.translate("TabLiveTV")
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabLiveTV"),
href: "livetvstatus.html",
pageIds: ["liveTvStatusPage", "liveTvTunerPage"],
icon: ""
- }), links.push({
+ });
+ links.push({
name: globalize.translate("DVR"),
href: "livetvsettings.html",
pageIds: ["liveTvSettingsPage"],
icon: "dvr"
- }), links.push({
- divider: !0,
+ });
+ links.push({
+ divider: true,
name: globalize.translate("TabExpert")
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabAdvanced"),
icon: "settings",
href: "dashboardhosting.html",
color: "#F16834",
pageIds: ["dashboardHostingPage", "serverSecurityPage"]
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabLogs"),
href: "log.html",
pageIds: ["logPage"],
icon: "folder_open"
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabNotifications"),
icon: "notifications",
color: "brown",
href: "notificationsettings.html",
pageIds: ["notificationSettingsPage", "notificationSettingPage"]
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabPlugins"),
icon: "add_shopping_cart",
color: "#9D22B1",
href: "plugins.html",
pageIds: ["pluginsPage", "pluginCatalogPage"]
- }), links.push({
+ });
+ links.push({
name: globalize.translate("TabScheduledTasks"),
href: "scheduledtasks.html",
pageIds: ["scheduledTasksPage", "scheduledTaskPage"],
icon: "schedule"
- }), links.push({
+ });
+ links.push({
name: globalize.translate("MetadataManager"),
href: "edititemmetadata.html",
pageIds: [],
icon: "mode_edit"
- }), addPluginPagesToMainMenu(links, pluginItems), links
+ });
+ addPluginPagesToMainMenu(links, pluginItems);
+ return links;
}
function addPluginPagesToMainMenu(links, pluginItems, section) {
for (var i = 0, length = pluginItems.length; i < length; i++) {
var pluginItem = pluginItems[i];
- Dashboard.allowPluginPages(pluginItem.PluginId) && (pluginItem.EnableInMainMenu && pluginItem.MenuSection === section && links.push({
- name: pluginItem.DisplayName,
- icon: pluginItem.MenuIcon || "folder",
- href: Dashboard.getConfigurationPageUrl(pluginItem.Name),
- pageUrls: [Dashboard.getConfigurationPageUrl(pluginItem.Name)]
- }))
+
+ if (Dashboard.allowPluginPages(pluginItem.PluginId)) {
+ if (pluginItem.EnableInMainMenu && pluginItem.MenuSection === section) {
+ links.push({
+ name: pluginItem.DisplayName,
+ icon: pluginItem.MenuIcon || "folder",
+ href: Dashboard.getConfigurationPageUrl(pluginItem.Name),
+ pageUrls: [Dashboard.getConfigurationPageUrl(pluginItem.Name)]
+ });
+ }
+ }
}
}
function getToolsMenuLinks(apiClient) {
- return apiClient.getJSON(apiClient.getUrl("web/configurationpages") + "?pageType=PluginConfiguration&EnableInMainMenu=true").then(createToolsMenuList, function(err) {
- return createToolsMenuList([])
- })
+ return apiClient.getJSON(apiClient.getUrl("web/configurationpages") + "?pageType=PluginConfiguration&EnableInMainMenu=true").then(createToolsMenuList, function (err) {
+ return createToolsMenuList([]);
+ });
}
function getToolsLinkHtml(item) {
- var menuHtml = "",
- pageIds = item.pageIds ? item.pageIds.join("|") : "";
+ var menuHtml = "";
+ var pageIds = item.pageIds ? item.pageIds.join("|") : "";
pageIds = pageIds ? ' data-pageids="' + pageIds + '"' : "";
var pageUrls = item.pageUrls ? item.pageUrls.join("|") : "";
- return pageUrls = pageUrls ? ' data-pageurls="' + pageUrls + '"' : "", menuHtml += '"
+ pageUrls = pageUrls ? ' data-pageurls="' + pageUrls + '"' : "";
+ menuHtml += '";
}
function getToolsMenuHtml(apiClient) {
- return getToolsMenuLinks(apiClient).then(function(items) {
- var i, length, item, menuHtml = "";
- for (menuHtml += '', i = 0, length = items.length; i < length; i++) item = items[i], item.href ? menuHtml += getToolsLinkHtml(item) : item.name && (menuHtml += '");
- return menuHtml += "
"
- })
+ return getToolsMenuLinks(apiClient).then(function (items) {
+ var item;
+ var menuHtml = "";
+
+ menuHtml += '';
+ for (var i = 0; i < items.length; i++) {
+ item = items[i];
+
+ if (item.href) {
+ menuHtml += getToolsLinkHtml(item);
+ }
+ else if (item.name) {
+ menuHtml += '";
+ }
+ }
+
+ return menuHtml + "
";
+ });
}
function createDashboardMenu(apiClient) {
- return getToolsMenuHtml(apiClient).then(function(toolsMenuHtml) {
+ return getToolsMenuHtml(apiClient).then(function (toolsMenuHtml) {
var html = "";
- html += '', html += '
', html += "", html += toolsMenuHtml, navDrawerScrollContainer.innerHTML = html, updateDashboardMenuSelectedItem()
- })
+ html += '';
+ html += '
';
+ html += "";
+ html += toolsMenuHtml;
+ navDrawerScrollContainer.innerHTML = html;
+ updateDashboardMenuSelectedItem();
+ });
}
function onSidebarLinkClick() {
- var section = this.getElementsByClassName("sectionName")[0],
- text = section ? section.innerHTML : this.innerHTML;
- LibraryMenu.setTitle(text)
+ var section = this.getElementsByClassName("sectionName")[0];
+ var text = section ? section.innerHTML : this.innerHTML;
+ LibraryMenu.setTitle(text);
}
function getUserViews(apiClient, userId) {
- return apiClient.getUserViews({}, userId).then(function(result) {
- for (var items = result.Items, list = [], i = 0, length = items.length; i < length; i++) {
+ return apiClient.getUserViews({}, userId).then(function (result) {
+ var items = result.Items;
+ var list = [];
+
+ for (var i = 0, length = items.length; i < length; i++) {
var view = items[i];
- if (list.push(view), "livetv" == view.CollectionType) {
- view.ImageTags = {}, view.icon = "live_tv";
+
+ list.push(view);
+ if ("livetv" == view.CollectionType) {
+ view.ImageTags = {};
+ view.icon = "live_tv";
var guideView = Object.assign({}, view);
- guideView.Name = globalize.translate("ButtonGuide"), guideView.ImageTags = {}, guideView.icon = "dvr", guideView.url = "livetv.html?tab=1", list.push(guideView)
+ guideView.Name = globalize.translate("ButtonGuide");
+ guideView.ImageTags = {};
+ guideView.icon = "dvr";
+ guideView.url = "livetv.html?tab=1";
+ list.push(guideView);
}
}
- return list
- })
+
+ return list;
+ });
}
function showBySelector(selector, show) {
var elem = document.querySelector(selector);
- elem && (show ? elem.classList.remove("hide") : elem.classList.add("hide"))
+
+ if (elem) {
+ if (show) {
+ elem.classList.remove("hide");
+ }
+ else {
+ elem.classList.add("hide");
+ }
+ }
}
function updateLibraryMenu(user) {
- if (!user) return showBySelector(".libraryMenuDownloads", !1), showBySelector(".lnkSyncToOtherDevices", !1), void showBySelector(".userMenuOptions", !1);
- user.Policy.EnableContentDownloading ? showBySelector(".lnkSyncToOtherDevices", !0) : showBySelector(".lnkSyncToOtherDevices", !1), user.Policy.EnableContentDownloading && appHost.supports("sync") ? showBySelector(".libraryMenuDownloads", !0) : showBySelector(".libraryMenuDownloads", !1);
- var userId = Dashboard.getCurrentUserId(),
- apiClient = getCurrentApiClient(),
- libraryMenuOptions = document.querySelector(".libraryMenuOptions");
- libraryMenuOptions && getUserViews(apiClient, userId).then(function(result) {
- var items = result,
- html = "";
- html += '", html += items.map(function(i) {
- var icon = "folder",
- itemId = i.Id;
- "channels" == i.CollectionType ? itemId = "channels" : "livetv" == i.CollectionType && (itemId = "livetv"), "photos" == i.CollectionType ? icon = "photo_library" : "music" == i.CollectionType || "musicvideos" == i.CollectionType ? icon = "library_music" : "books" == i.CollectionType ? icon = "library_books" : "playlists" == i.CollectionType ? icon = "view_list" : "games" == i.CollectionType ? icon = "games" : "movies" == i.CollectionType ? icon = "video_library" : "channels" == i.CollectionType || "Channel" == i.Type ? icon = "videocam" : "tvshows" == i.CollectionType ? icon = "tv" : "livetv" == i.CollectionType && (icon = "live_tv"), icon = i.icon || icon;
- i.onclick && i.onclick;
- return '"
- }).join(""), libraryMenuOptions.innerHTML = html;
- for (var elem = libraryMenuOptions, sidebarLinks = elem.querySelectorAll(".navMenuOption"), i = 0, length = sidebarLinks.length; i < length; i++) sidebarLinks[i].removeEventListener("click", onSidebarLinkClick), sidebarLinks[i].addEventListener("click", onSidebarLinkClick)
- })
+ // FIXME: Potential equivalent might be
+ // showBySelector(".lnkSyncToOtherDevices", !!user.Policy.EnableContentDownloading);
+ if (!user) {
+ showBySelector(".libraryMenuDownloads", false);
+ showBySelector(".lnkSyncToOtherDevices", false);
+ return void showBySelector(".userMenuOptions", false);
+ }
+
+ // FIXME: Potentially the same as above
+ if (user.Policy.EnableContentDownloading) {
+ showBySelector(".lnkSyncToOtherDevices", true);
+ }
+ else {
+ showBySelector(".lnkSyncToOtherDevices", false);
+ }
+
+ if (user.Policy.EnableContentDownloading && appHost.supports("sync")) {
+ showBySelector(".libraryMenuDownloads", true);
+ }
+ else {
+ showBySelector(".libraryMenuDownloads", false);
+ }
+
+ var userId = Dashboard.getCurrentUserId();
+ var apiClient = getCurrentApiClient();
+ var libraryMenuOptions = document.querySelector(".libraryMenuOptions");
+
+ if (libraryMenuOptions) {
+ getUserViews(apiClient, userId).then(function (result) {
+ var items = result;
+ var html = "";
+ html += '";
+ html += items.map(function (i) {
+ var icon = "folder";
+ var itemId = i.Id;
+
+ if ("channels" === i.CollectionType) {
+ itemId = "channels";
+ }
+ else if ("livetv" === i.CollectionType) {
+ itemId = "livetv";
+ }
+
+ else if ("photos" === i.CollectionType) {
+ icon = "photo_library";
+ }
+ else if ("music" === i.CollectionType || "musicvideos" === i.CollectionType) {
+ icon = "library_music";
+ }
+ else if ("books" === i.CollectionType) {
+ icon = "library_books";
+ }
+ else if ("playlists" === i.CollectionType) {
+ icon = "view_list";
+ }
+ else if ("games" === i.CollectionType) {
+ icon = "games";
+ }
+ else if ("movies" === i.CollectionType) {
+ icon = "video_library";
+ }
+ else if ("channels" === i.CollectionType || "Channel" === i.Type) {
+ icon = "videocam";
+ }
+ else if ("tvshows" === i.CollectionType) {
+ icon = "tv";
+ }
+ else if ("livetv" === i.CollectionType) {
+ icon = "live_tv";
+ }
+ icon = i.icon || icon;
+
+ if (i.onclick) {
+ i.onclick;
+ }
+
+ return '";
+ }).join("");
+ libraryMenuOptions.innerHTML = html;
+ var elem = libraryMenuOptions;
+ var sidebarLinks = elem.querySelectorAll(".navMenuOption");
+
+ for (var i = 0, length = sidebarLinks.length; i < length; i++) {
+ sidebarLinks[i].removeEventListener("click", onSidebarLinkClick);
+ sidebarLinks[i].addEventListener("click", onSidebarLinkClick);
+ }
+ });
+ }
}
function getTopParentId() {
- return getParameterByName("topParentId") || null
+ return getParameterByName("topParentId") || null;
}
function onMainDrawerClick(e) {
- dom.parentWithTag(e.target, "A") && setTimeout(closeMainDrawer, 30)
+ if (dom.parentWithTag(e.target, "A")) {
+ setTimeout(closeMainDrawer, 30);
+ }
}
function onLogoutClick() {
- Dashboard.logout()
+ Dashboard.logout();
}
function updateCastIcon() {
- var context = document,
- info = playbackManager.getPlayerInfo(),
- icon = headerCastButton.querySelector("i");
- info && !info.isLocalPlayer ? (icon.innerHTML = "", headerCastButton.classList.add("castButton-active"), context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name) : (icon.innerHTML = "", headerCastButton.classList.remove("castButton-active"), context.querySelector(".headerSelectedPlayer").innerHTML = "")
+ var context = document;
+ var info = playbackManager.getPlayerInfo();
+ var icon = headerCastButton.querySelector("i");
+
+ if (info && !info.isLocalPlayer) {
+ icon.innerHTML = "";
+ headerCastButton.classList.add("castButton-active");
+ context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name;
+ } else {
+ icon.innerHTML = "";
+ headerCastButton.classList.remove("castButton-active");
+ context.querySelector(".headerSelectedPlayer").innerHTML = "";
+ }
}
function updateLibraryNavLinks(page) {
- var i, length, isLiveTvPage = page.classList.contains("liveTvPage"),
- isChannelsPage = page.classList.contains("channelsPage"),
- isEditorPage = page.classList.contains("metadataEditorPage"),
- isMySyncPage = page.classList.contains("mySyncPage"),
- id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains("allLibraryPage") ? "" : getTopParentId() || "",
- elems = document.getElementsByClassName("lnkMediaFolder");
- for (i = 0, length = elems.length; i < length; i++) {
- var lnkMediaFolder = elems[i],
- itemId = lnkMediaFolder.getAttribute("data-itemid");
- isChannelsPage && "channels" == itemId ? lnkMediaFolder.classList.add("navMenuOption-selected") : isLiveTvPage && "livetv" == itemId ? lnkMediaFolder.classList.add("navMenuOption-selected") : isEditorPage && "editor" == itemId ? lnkMediaFolder.classList.add("navMenuOption-selected") : isMySyncPage && "manageoffline" == itemId && -1 != window.location.href.toString().indexOf("mode=download") ? lnkMediaFolder.classList.add("navMenuOption-selected") : isMySyncPage && "syncotherdevices" == itemId && -1 == window.location.href.toString().indexOf("mode=download") ? lnkMediaFolder.classList.add("navMenuOption-selected") : id && itemId == id ? lnkMediaFolder.classList.add("navMenuOption-selected") : lnkMediaFolder.classList.remove("navMenuOption-selected")
+ var i;
+ var length;
+ var isLiveTvPage = page.classList.contains("liveTvPage");
+ var isChannelsPage = page.classList.contains("channelsPage");
+ var isEditorPage = page.classList.contains("metadataEditorPage");
+ var isMySyncPage = page.classList.contains("mySyncPage");
+ var id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains("allLibraryPage") ? "" : getTopParentId() || "";
+ var elems = document.getElementsByClassName("lnkMediaFolder");
+
+ for (var i = 0, length = elems.length; i < length; i++) {
+ var lnkMediaFolder = elems[i];
+ var itemId = lnkMediaFolder.getAttribute("data-itemid");
+
+ if (isChannelsPage && "channels" === itemId) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else if (isLiveTvPage && "livetv" === itemId) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else if (isEditorPage && "editor" === itemId) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else if (isMySyncPage && "manageoffline" === itemId && -1 != window.location.href.toString().indexOf("mode=download")) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else if (isMySyncPage && "syncotherdevices" === itemId && -1 == window.location.href.toString().indexOf("mode=download")) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else if (id && itemId == id) {
+ lnkMediaFolder.classList.add("navMenuOption-selected");
+ }
+ else {
+ lnkMediaFolder.classList.remove("navMenuOption-selected");
+ }
}
}
function updateMenuForPageType(isDashboardPage, isLibraryPage) {
var newPageType = isDashboardPage ? 2 : isLibraryPage ? 1 : 3;
+
if (currentPageType !== newPageType) {
- currentPageType = newPageType, isDashboardPage && !layoutManager.mobile ? skinHeader.classList.add("headroomDisabled") : skinHeader.classList.remove("headroomDisabled");
+ currentPageType = newPageType;
+
+ if (isDashboardPage && !layoutManager.mobile) {
+ skinHeader.classList.add("headroomDisabled");
+ } else {
+ skinHeader.classList.remove("headroomDisabled");
+ }
+
var bodyClassList = document.body.classList;
- isLibraryPage ? (bodyClassList.add("libraryDocument"), bodyClassList.remove("dashboardDocument"), bodyClassList.remove("hideMainDrawer"), navDrawerInstance && navDrawerInstance.setEdgeSwipeEnabled(!0)) : isDashboardPage ? (bodyClassList.remove("libraryDocument"), bodyClassList.add("dashboardDocument"), bodyClassList.remove("hideMainDrawer"), navDrawerInstance && navDrawerInstance.setEdgeSwipeEnabled(!0)) : (bodyClassList.remove("libraryDocument"), bodyClassList.remove("dashboardDocument"), bodyClassList.add("hideMainDrawer"), navDrawerInstance && navDrawerInstance.setEdgeSwipeEnabled(!1))
+
+ if (isLibraryPage) {
+ bodyClassList.add("libraryDocument");
+ bodyClassList.remove("dashboardDocument");
+ bodyClassList.remove("hideMainDrawer");
+
+ if (navDrawerInstance) {
+ navDrawerInstance.setEdgeSwipeEnabled(true);
+ }
+ } else {
+ if (isDashboardPage) {
+ bodyClassList.remove("libraryDocument");
+ bodyClassList.add("dashboardDocument");
+ bodyClassList.remove("hideMainDrawer");
+
+ if (navDrawerInstance) {
+ navDrawerInstance.setEdgeSwipeEnabled(true);
+ }
+ } else {
+ bodyClassList.remove("libraryDocument");
+ bodyClassList.remove("dashboardDocument");
+ bodyClassList.add("hideMainDrawer");
+
+ if (navDrawerInstance) {
+ navDrawerInstance.setEdgeSwipeEnabled(false);
+ }
+ }
+ }
+ }
+
+ if (requiresUserRefresh) {
+ connectionManager.user(getCurrentApiClient()).then(updateUserInHeader);
}
- requiresUserRefresh && connectionManager.user(getCurrentApiClient()).then(updateUserInHeader)
}
function updateTitle(page) {
var title = page.getAttribute("data-title");
- title ? LibraryMenu.setTitle(title) : page.classList.contains("standalonePage") && LibraryMenu.setDefaultTitle()
+
+ if (title) {
+ LibraryMenu.setTitle(title);
+ }
+ else if (page.classList.contains("standalonePage")) {
+ LibraryMenu.setDefaultTitle();
+ }
}
function updateBackButton(page) {
- headerBackButton || (headerBackButton = document.querySelector(".headerBackButton")), headerBackButton && ("false" !== page.getAttribute("data-backbutton") && appRouter.canGoBack() ? headerBackButton.classList.remove("hide") : headerBackButton.classList.add("hide"))
+ var isDashboardPage = page.classList.contains("type-interior");
+
+ if (!headerBackButton) {
+ headerBackButton = document.querySelector(".headerBackButton");
+ }
+
+ if (headerBackButton) {
+ if (page.getAttribute("data-backbutton") && appRouter.canGoBack()) {
+ headerBackButton.classList.remove("hide");
+ } else {
+ headerBackButton.classList.add("hide");
+ }
+ }
}
function initHeadRoom(elem) {
- require(["headroom-window"], function(headroom) {
- headroom.add(elem)
- })
+ require(["headroom-window"], function (headroom) {
+ headroom.add(elem);
+ });
}
function refreshLibraryDrawer(user) {
- loadNavDrawer(), currentDrawerType = "library", (user ? Promise.resolve(user) : connectionManager.user(getCurrentApiClient())).then(function(user) {
- refreshLibraryInfoInDrawer(user), updateLibraryMenu(user.localUser)
- })
+ loadNavDrawer();
+ currentDrawerType = "library";
+ if (user) {
+ Promise.resolve(user);
+ } else {
+ connectionManager.user(getCurrentApiClient()).then(function (user) {
+ refreshLibraryInfoInDrawer(user);
+ updateLibraryMenu(user.localUser);
+ });
+ }
}
function getNavDrawerOptions() {
var drawerWidth = screen.availWidth - 50;
- return drawerWidth = Math.max(drawerWidth, 240), drawerWidth = Math.min(drawerWidth, 320), {
+ drawerWidth = Math.max(drawerWidth, 240);
+ drawerWidth = Math.min(drawerWidth, 320);
+ return {
target: navDrawerElement,
onChange: onMainDrawerSelect,
width: drawerWidth
- }
+ };
}
function loadNavDrawer() {
- return navDrawerInstance ? Promise.resolve(navDrawerInstance) : (navDrawerElement = document.querySelector(".mainDrawer"), navDrawerScrollContainer = navDrawerElement.querySelector(".scrollContainer"), navDrawerScrollContainer.addEventListener("click", onMainDrawerClick), new Promise(function(resolve, reject) {
- require(["navdrawer"], function(navdrawer) {
- navDrawerInstance = new navdrawer(getNavDrawerOptions()), navDrawerElement.classList.remove("hide"), resolve(navDrawerInstance)
- })
- }))
+ if (navDrawerInstance) {
+ return Promise.resolve(navDrawerInstance);
+ }
+
+ navDrawerElement = document.querySelector(".mainDrawer");
+ navDrawerScrollContainer = navDrawerElement.querySelector(".scrollContainer");
+ navDrawerScrollContainer.addEventListener("click", onMainDrawerClick);
+ return new Promise(function (resolve, reject) {
+ require(["navdrawer"], function (navdrawer) {
+ navDrawerInstance = new navdrawer(getNavDrawerOptions());
+ navDrawerElement.classList.remove("hide");
+ resolve(navDrawerInstance);
+ });
+ });
}
- var navDrawerElement, navDrawerScrollContainer, navDrawerInstance, mainDrawerButton, headerHomeButton, currentDrawerType, pageTitleElement, headerBackButton, headerUserButton, currentUser, headerSettingsButton, headerCastButton, headerSearchButton, enableLibraryNavDrawer = !layoutManager.tv,
- skinHeader = document.querySelector(".skinHeader"),
- requiresUserRefresh = !0,
- lastOpenTime = (new Date).getTime();
+
+ var navDrawerElement;
+ var navDrawerScrollContainer;
+ var navDrawerInstance;
+ var mainDrawerButton;
+ var headerHomeButton;
+ var currentDrawerType;
+ var pageTitleElement;
+ var headerBackButton;
+ var headerUserButton;
+ var currentUser;
+ var headerSettingsButton;
+ var headerCastButton;
+ var headerSearchButton;
+ var enableLibraryNavDrawer = !layoutManager.tv;
+ var skinHeader = document.querySelector(".skinHeader");
+ var requiresUserRefresh = true;
+ var lastOpenTime = new Date().getTime();
window.LibraryMenu = {
getTopParentId: getTopParentId,
- onHardwareMenuButtonClick: function() {
- toggleMainDrawer()
+ onHardwareMenuButtonClick: function () {
+ toggleMainDrawer();
},
- setTabs: function(type, selectedIndex, builder) {
- require(["mainTabsManager"], function(mainTabsManager) {
- type ? mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function() {
- return []
- }) : mainTabsManager.setTabs(null)
- })
+ setTabs: function (type, selectedIndex, builder) {
+ require(["mainTabsManager"], function (mainTabsManager) {
+ if (type) {
+ mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function () {
+ return [];
+ });
+ } else {
+ mainTabsManager.setTabs(null);
+ }
+ });
},
- setDefaultTitle: function() {
- pageTitleElement || (pageTitleElement = document.querySelector(".pageTitle")), pageTitleElement && (pageTitleElement.classList.add("pageTitleWithLogo"), pageTitleElement.classList.add("pageTitleWithDefaultLogo"), pageTitleElement.style.backgroundImage = null, pageTitleElement.innerHTML = ""), document.title = "Jellyfin"
+ setDefaultTitle: function () {
+ if (!pageTitleElement) {
+ pageTitleElement = document.querySelector(".pageTitle");
+ }
+
+ if (pageTitleElement) {
+ pageTitleElement.classList.add("pageTitleWithLogo");
+ pageTitleElement.classList.add("pageTitleWithDefaultLogo");
+ pageTitleElement.style.backgroundImage = null;
+ pageTitleElement.innerHTML = "";
+ }
+
+ document.title = "Jellyfin";
},
- setTitle: function(title) {
- if (null == title) return void LibraryMenu.setDefaultTitle();
- "-" === title && (title = "");
+ setTitle: function (title) {
+ if (null == title) {
+ return void LibraryMenu.setDefaultTitle();
+ }
+
+ if ("-" === title) {
+ title = "";
+ }
+
var html = title;
- pageTitleElement || (pageTitleElement = document.querySelector(".pageTitle")), pageTitleElement && (pageTitleElement.classList.remove("pageTitleWithLogo"), pageTitleElement.classList.remove("pageTitleWithDefaultLogo"), pageTitleElement.style.backgroundImage = null, pageTitleElement.innerHTML = html || ""), document.title = title || "Jellyfin"
+
+ if (!pageTitleElement) {
+ pageTitleElement = document.querySelector(".pageTitle");
+ }
+
+ if (pageTitleElement) {
+ pageTitleElement.classList.remove("pageTitleWithLogo");
+ pageTitleElement.classList.remove("pageTitleWithDefaultLogo");
+ pageTitleElement.style.backgroundImage = null;
+ pageTitleElement.innerHTML = html || "";
+ }
+
+ document.title = title || "Jellyfin";
},
- setTransparentMenu: function(transparent) {
- transparent ? skinHeader.classList.add("semiTransparent") : skinHeader.classList.remove("semiTransparent")
+ setTransparentMenu: function (transparent) {
+ if (transparent) {
+ skinHeader.classList.add("semiTransparent");
+ } else {
+ skinHeader.classList.remove("semiTransparent");
+ }
}
};
var currentPageType;
- return pageClassOn("pagebeforeshow", "page", function(e) {
- this.classList.contains("withTabs") || LibraryMenu.setTabs(null)
- }), pageClassOn("pageshow", "page", function(e) {
- var page = this,
- isDashboardPage = page.classList.contains("type-interior"),
- isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage"),
- apiClient = getCurrentApiClient();
- isDashboardPage ? (mainDrawerButton && mainDrawerButton.classList.remove("hide"), refreshDashboardInfoInDrawer(apiClient)) : (mainDrawerButton && (enableLibraryNavDrawer ? mainDrawerButton.classList.remove("hide") : mainDrawerButton.classList.add("hide")), "library" !== currentDrawerType && refreshLibraryDrawer()), updateMenuForPageType(isDashboardPage, isLibraryPage), e.detail.isRestored || window.scrollTo(0, 0), updateTitle(page), updateBackButton(page), updateLibraryNavLinks(page)
- }),
- function() {
- var html = "";
- html += '", html += '", skinHeader.classList.add("skinHeader-withBackground"), skinHeader.innerHTML = html, headerHomeButton = skinHeader.querySelector(".headerHomeButton"), headerUserButton = skinHeader.querySelector(".headerUserButton"), headerSettingsButton = skinHeader.querySelector(".headerSettingsButton"), headerCastButton = skinHeader.querySelector(".headerCastButton"), headerSearchButton = skinHeader.querySelector(".headerSearchButton"), browser.chrome || skinHeader.classList.add("skinHeader-blurred"), lazyLoadViewMenuBarImages(), bindMenuEvents()
- }(), events.on(connectionManager, "localusersignedin", function(e, user) {
- currentDrawerType = null, currentUser = {
- localUser: user
- }, loadNavDrawer(), connectionManager.user(connectionManager.getApiClient(user.ServerId)).then(function(user) {
- currentUser = user, updateUserInHeader(user)
- })
- }), events.on(connectionManager, "localusersignedout", function() {
- currentUser = {}, updateUserInHeader()
- }), events.on(playbackManager, "playerchange", updateCastIcon), loadNavDrawer(), LibraryMenu
+ pageClassOn("pagebeforeshow", "page", function (e) {
+ if (!this.classList.contains("withTabs")) {
+ LibraryMenu.setTabs(null);
+ }
+ });
+ pageClassOn("pageshow", "page", function (e) {
+ var page = this;
+ var isDashboardPage = page.classList.contains("type-interior");
+ var isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage");
+ var apiClient = getCurrentApiClient();
+
+ if (isDashboardPage) {
+ if (mainDrawerButton) {
+ mainDrawerButton.classList.remove("hide");
+ }
+
+ refreshDashboardInfoInDrawer(apiClient);
+ } else {
+ if (mainDrawerButton) {
+ if (enableLibraryNavDrawer) {
+ mainDrawerButton.classList.remove("hide");
+ } else {
+ mainDrawerButton.classList.add("hide");
+ }
+ }
+
+ if ("library" !== currentDrawerType) {
+ refreshLibraryDrawer();
+ }
+ }
+
+ updateMenuForPageType(isDashboardPage, isLibraryPage);
+
+ if (!e.detail.isRestored) {
+ window.scrollTo(0, 0);
+ }
+
+ updateTitle(page);
+ updateBackButton(page);
+ updateLibraryNavLinks(page);
+ });
+
+ (function () {
+ var html = "";
+ html += '";
+ html += '";
+ skinHeader.classList.add("skinHeader-withBackground");
+ skinHeader.innerHTML = html;
+ headerHomeButton = skinHeader.querySelector(".headerHomeButton");
+ headerUserButton = skinHeader.querySelector(".headerUserButton");
+ headerSettingsButton = skinHeader.querySelector(".headerSettingsButton");
+ headerCastButton = skinHeader.querySelector(".headerCastButton");
+ headerSearchButton = skinHeader.querySelector(".headerSearchButton");
+
+ if (!browser.chrome) {
+ skinHeader.classList.add("skinHeader-blurred");
+ }
+
+ lazyLoadViewMenuBarImages();
+ bindMenuEvents();
+ })();
+
+ events.on(connectionManager, "localusersignedin", function (e, user) {
+ currentDrawerType = null;
+ currentUser = {
+ localUser: user
+ };
+ loadNavDrawer();
+ connectionManager.user(connectionManager.getApiClient(user.ServerId)).then(function (user) {
+ currentUser = user;
+ updateUserInHeader(user);
+ });
+ });
+ events.on(connectionManager, "localusersignedout", function () {
+ currentUser = {};
+ updateUserInHeader();
+ });
+ events.on(playbackManager, "playerchange", updateCastIcon);
+ loadNavDrawer();
+ return LibraryMenu;
});