mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #722 from grafixeyehero/Deminify-part-4
Deminify part 4
This commit is contained in:
commit
e85ea5fe1c
7 changed files with 596 additions and 298 deletions
|
@ -1,37 +1,44 @@
|
||||||
define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function(loading, dialogHelper, dom, $, libraryoptionseditor) {
|
define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function onAddLibrary() {
|
function onAddLibrary() {
|
||||||
if (isCreating) return false;
|
if (isCreating) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (pathInfos.length == 0) {
|
if (pathInfos.length == 0) {
|
||||||
require(["alert"], function(alert) {
|
require(["alert"], function (alert) {
|
||||||
alert({
|
alert({
|
||||||
text: Globalize.translate("PleaseAddAtLeastOneFolder"),
|
text: Globalize.translate("PleaseAddAtLeastOneFolder"),
|
||||||
type: "error"
|
type: "error"
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
isCreating = true;
|
isCreating = true;
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var dlg = dom.parentWithClass(this, "dlg-librarycreator");
|
var dlg = dom.parentWithClass(this, "dlg-librarycreator");
|
||||||
var name = $("#txtValue", dlg).val();
|
var name = $("#txtValue", dlg).val();
|
||||||
var type = $("#selectCollectionType", dlg).val();
|
var type = $("#selectCollectionType", dlg).val();
|
||||||
if (type == "mixed") type = null;
|
|
||||||
|
if (type == "mixed") {
|
||||||
|
type = null;
|
||||||
|
}
|
||||||
|
|
||||||
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));
|
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));
|
||||||
libraryOptions.PathInfos = pathInfos;
|
libraryOptions.PathInfos = pathInfos;
|
||||||
ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() {
|
ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
isCreating = false;
|
isCreating = false;
|
||||||
loading.hide();
|
loading.hide();
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
}, function() {
|
}, function () {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
||||||
});
|
});
|
||||||
|
|
||||||
isCreating = false;
|
isCreating = false;
|
||||||
loading.hide();
|
loading.hide();
|
||||||
});
|
});
|
||||||
|
@ -39,16 +46,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCollectionTypeOptionsHtml(collectionTypeOptions) {
|
function getCollectionTypeOptionsHtml(collectionTypeOptions) {
|
||||||
return collectionTypeOptions.map(function(i) {
|
return collectionTypeOptions.map(function (i) {
|
||||||
return '<option value="' + i.value + '">' + i.name + "</option>";
|
return '<option value="' + i.value + '">' + i.name + "</option>";
|
||||||
}).join("");
|
}).join("");
|
||||||
}
|
}
|
||||||
|
|
||||||
function initEditor(page, collectionTypeOptions) {
|
function initEditor(page, collectionTypeOptions) {
|
||||||
$("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() {
|
$("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function () {
|
||||||
var value = this.value;
|
var value = this.value;
|
||||||
var dlg = $(this).parents(".dialog")[0];
|
var dlg = $(this).parents(".dialog")[0];
|
||||||
libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value);
|
libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value);
|
||||||
|
|
||||||
if (value) {
|
if (value) {
|
||||||
dlg.querySelector(".libraryOptions").classList.remove("hide");
|
dlg.querySelector(".libraryOptions").classList.remove("hide");
|
||||||
} else {
|
} else {
|
||||||
|
@ -57,17 +65,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
|
|
||||||
if (value != "mixed") {
|
if (value != "mixed") {
|
||||||
var index = this.selectedIndex;
|
var index = this.selectedIndex;
|
||||||
|
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
var name = this.options[index].innerHTML.replace("*", "").replace("&", "&");
|
var name = this.options[index].innerHTML.replace("*", "").replace("&", "&");
|
||||||
$("#txtValue", dlg).val(name);
|
$("#txtValue", dlg).val(name);
|
||||||
var folderOption = collectionTypeOptions.filter(function(i) {
|
var folderOption = collectionTypeOptions.filter(function (i) {
|
||||||
return i.value == value
|
return i.value == value;
|
||||||
})[0];
|
})[0];
|
||||||
$(".collectionTypeFieldDescription", dlg).html(folderOption.message || "")
|
$(".collectionTypeFieldDescription", dlg).html(folderOption.message || "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick);
|
page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick);
|
||||||
page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary);
|
page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary);
|
||||||
page.querySelector(".folderList").addEventListener("click", onRemoveClick);
|
page.querySelector(".folderList").addEventListener("click", onRemoveClick);
|
||||||
|
@ -81,40 +89,65 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
|
|
||||||
function onAddButtonClick() {
|
function onAddButtonClick() {
|
||||||
var page = dom.parentWithClass(this, "dlg-librarycreator");
|
var page = dom.parentWithClass(this, "dlg-librarycreator");
|
||||||
require(["directorybrowser"], function(directoryBrowser) {
|
|
||||||
var picker = new directoryBrowser;
|
require(["directorybrowser"], function (directoryBrowser) {
|
||||||
|
var picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
enableNetworkSharePath: true,
|
enableNetworkSharePath: true,
|
||||||
callback: function(path, networkSharePath) {
|
callback: function (path, networkSharePath) {
|
||||||
path && addMediaLocation(page, path, networkSharePath);
|
if (path) {
|
||||||
|
addMediaLocation(page, path, networkSharePath);
|
||||||
|
}
|
||||||
|
|
||||||
picker.close();
|
picker.close();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFolderHtml(pathInfo, index) {
|
function getFolderHtml(pathInfo, index) {
|
||||||
var html = "";
|
var html = "";
|
||||||
return html += '<div class="listItem listItem-border lnkPath" style="padding-left:.5em;">', html += '<div class="' + (pathInfo.NetworkPath ? "listItemBody two-line" : "listItemBody") + '">', html += '<div class="listItemBodyText">' + pathInfo.Path + "</div>", pathInfo.NetworkPath && (html += '<div class="listItemBodyText secondary">' + pathInfo.NetworkPath + "</div>"), html += "</div>", html += '<button type="button" is="paper-icon-button-light"" class="listItemButton btnRemovePath" data-index="' + index + '"><i class="md-icon">remove_circle</i></button>', html += "</div>"
|
html += '<div class="listItem listItem-border lnkPath" style="padding-left:.5em;">';
|
||||||
|
html += '<div class="' + (pathInfo.NetworkPath ? "listItemBody two-line" : "listItemBody") + '">';
|
||||||
|
html += '<div class="listItemBodyText">' + pathInfo.Path + "</div>";
|
||||||
|
|
||||||
|
if (pathInfo.NetworkPath) {
|
||||||
|
html += '<div class="listItemBodyText secondary">' + pathInfo.NetworkPath + "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
html += "</div>";
|
||||||
|
html += '<button type="button" is="paper-icon-button-light"" class="listItemButton btnRemovePath" data-index="' + index + '"><i class="md-icon">remove_circle</i></button>';
|
||||||
|
html += "</div>";
|
||||||
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderPaths(page) {
|
function renderPaths(page) {
|
||||||
var foldersHtml = pathInfos.map(getFolderHtml).join("");
|
var foldersHtml = pathInfos.map(getFolderHtml).join("");
|
||||||
var folderList = page.querySelector(".folderList");
|
var folderList = page.querySelector(".folderList");
|
||||||
folderList.innerHTML = foldersHtml;
|
folderList.innerHTML = foldersHtml;
|
||||||
foldersHtml ? folderList.classList.remove("hide") : folderList.classList.add("hide");
|
|
||||||
|
if (foldersHtml) {
|
||||||
|
folderList.classList.remove("hide");
|
||||||
|
} else {
|
||||||
|
folderList.classList.add("hide");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMediaLocation(page, path, networkSharePath) {
|
function addMediaLocation(page, path, networkSharePath) {
|
||||||
var pathLower = path.toLowerCase();
|
var pathLower = path.toLowerCase();
|
||||||
var pathFilter = pathInfos.filter(function(p) {
|
var pathFilter = pathInfos.filter(function (p) {
|
||||||
return p.Path.toLowerCase() == pathLower;
|
return p.Path.toLowerCase() == pathLower;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!pathFilter.length) {
|
if (!pathFilter.length) {
|
||||||
var pathInfo = {
|
var pathInfo = {
|
||||||
Path: path
|
Path: path
|
||||||
};
|
};
|
||||||
networkSharePath && (pathInfo.NetworkPath = networkSharePath);
|
|
||||||
|
if (networkSharePath) {
|
||||||
|
pathInfo.NetworkPath = networkSharePath;
|
||||||
|
}
|
||||||
|
|
||||||
pathInfos.push(pathInfo);
|
pathInfos.push(pathInfo);
|
||||||
renderPaths(page);
|
renderPaths(page);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +158,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
var index = parseInt(button.getAttribute("data-index"));
|
var index = parseInt(button.getAttribute("data-index"));
|
||||||
var location = pathInfos[index].Path;
|
var location = pathInfos[index].Path;
|
||||||
var locationLower = location.toLowerCase();
|
var locationLower = location.toLowerCase();
|
||||||
pathInfos = pathInfos.filter(function(p) {
|
pathInfos = pathInfos.filter(function (p) {
|
||||||
return p.Path.toLowerCase() != locationLower;
|
return p.Path.toLowerCase() != locationLower;
|
||||||
});
|
});
|
||||||
renderPaths(dom.parentWithClass(button, "dlg-librarycreator"));
|
renderPaths(dom.parentWithClass(button, "dlg-librarycreator"));
|
||||||
|
@ -136,21 +169,22 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
}
|
}
|
||||||
|
|
||||||
function initLibraryOptions(dlg) {
|
function initLibraryOptions(dlg) {
|
||||||
libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function() {
|
libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function () {
|
||||||
$("#selectCollectionType", dlg).trigger("change");
|
$("#selectCollectionType", dlg).trigger("change");
|
||||||
onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced"));
|
onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced"));
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function editor() {
|
function editor() {
|
||||||
this.show = function(options) {
|
this.show = function (options) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
currentOptions = options;
|
currentOptions = options;
|
||||||
currentResolve = resolve;
|
currentResolve = resolve;
|
||||||
hasChanges = false;
|
hasChanges = false;
|
||||||
var xhr = new XMLHttpRequest;
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true);
|
xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true);
|
||||||
xhr.onload = function(e) {
|
|
||||||
|
xhr.onload = function (e) {
|
||||||
var template = this.response;
|
var template = this.response;
|
||||||
var dlg = dialogHelper.createDialog({
|
var dlg = dialogHelper.createDialog({
|
||||||
size: "medium-tall",
|
size: "medium-tall",
|
||||||
|
@ -166,24 +200,23 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
|
||||||
initEditor(dlg, options.collectionTypeOptions);
|
initEditor(dlg, options.collectionTypeOptions);
|
||||||
dlg.addEventListener("close", onDialogClosed);
|
dlg.addEventListener("close", onDialogClosed);
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
dlg.querySelector(".btnCancel").addEventListener("click", function() {
|
dlg.querySelector(".btnCancel").addEventListener("click", function () {
|
||||||
dialogHelper.close(dlg)
|
dialogHelper.close(dlg);
|
||||||
});
|
});
|
||||||
pathInfos = [];
|
pathInfos = [];
|
||||||
renderPaths(dlg);
|
renderPaths(dlg);
|
||||||
initLibraryOptions(dlg);
|
initLibraryOptions(dlg);
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var pathInfos = [];
|
var pathInfos = [];
|
||||||
var currentResolve;
|
var currentResolve;
|
||||||
var currentOptions;
|
var currentOptions;
|
||||||
|
|
||||||
var hasChanges = false;
|
var hasChanges = false;
|
||||||
var isCreating = false;
|
var isCreating = false;
|
||||||
|
return editor;
|
||||||
return editor
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function(jQuery, loading, dialogHelper, dom, libraryoptionseditor) {
|
define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function onEditLibrary() {
|
function onEditLibrary() {
|
||||||
if (isCreating) return false;
|
if (isCreating) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
isCreating = true;
|
isCreating = true;
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var dlg = dom.parentWithClass(this, "dlg-libraryeditor");
|
var dlg = dom.parentWithClass(this, "dlg-libraryeditor");
|
||||||
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));
|
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));
|
||||||
libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions);
|
libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions);
|
||||||
|
ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function () {
|
||||||
ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function() {
|
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
isCreating = false;
|
isCreating = false;
|
||||||
loading.hide();
|
loading.hide();
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
}, function() {
|
}, function () {
|
||||||
isCreating = false;
|
isCreating = false;
|
||||||
loading.hide();
|
loading.hide();
|
||||||
});
|
});
|
||||||
|
@ -26,11 +26,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
function addMediaLocation(page, path, networkSharePath) {
|
function addMediaLocation(page, path, networkSharePath) {
|
||||||
var virtualFolder = currentOptions.library;
|
var virtualFolder = currentOptions.library;
|
||||||
var refreshAfterChange = currentOptions.refresh;
|
var refreshAfterChange = currentOptions.refresh;
|
||||||
ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function() {
|
ApiClient.addMediaPath(virtualFolder.Name, path, networkSharePath, refreshAfterChange).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
refreshLibraryFromServer(page);
|
refreshLibraryFromServer(page);
|
||||||
}, function() {
|
}, function () {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -41,11 +41,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
ApiClient.updateMediaPath(virtualFolder.Name, {
|
ApiClient.updateMediaPath(virtualFolder.Name, {
|
||||||
Path: path,
|
Path: path,
|
||||||
NetworkPath: networkSharePath
|
NetworkPath: networkSharePath
|
||||||
}).then(function() {
|
}).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
refreshLibraryFromServer(page);
|
refreshLibraryFromServer(page);
|
||||||
}, function() {
|
}, function () {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -54,19 +54,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
function onRemoveClick(btnRemovePath, location) {
|
function onRemoveClick(btnRemovePath, location) {
|
||||||
var button = btnRemovePath;
|
var button = btnRemovePath;
|
||||||
var virtualFolder = currentOptions.library;
|
var virtualFolder = currentOptions.library;
|
||||||
require(["confirm"], function(confirm) {
|
|
||||||
|
require(["confirm"], function (confirm) {
|
||||||
confirm({
|
confirm({
|
||||||
title: Globalize.translate("HeaderRemoveMediaLocation"),
|
title: Globalize.translate("HeaderRemoveMediaLocation"),
|
||||||
text: Globalize.translate("MessageConfirmRemoveMediaLocation"),
|
text: Globalize.translate("MessageConfirmRemoveMediaLocation"),
|
||||||
confirmText: Globalize.translate("ButtonDelete"),
|
confirmText: Globalize.translate("ButtonDelete"),
|
||||||
primary: "delete"
|
primary: "delete"
|
||||||
}).then(function() {
|
}).then(function () {
|
||||||
var refreshAfterChange = currentOptions.refresh;
|
var refreshAfterChange = currentOptions.refresh;
|
||||||
ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function() {
|
ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function () {
|
||||||
hasChanges = true;
|
hasChanges = true;
|
||||||
refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor"));
|
refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor"));
|
||||||
}, function() {
|
}, function () {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("DefaultErrorMessage"));
|
toast(Globalize.translate("DefaultErrorMessage"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -76,13 +77,19 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
|
|
||||||
function onListItemClick(e) {
|
function onListItemClick(e) {
|
||||||
var listItem = dom.parentWithClass(e.target, "listItem");
|
var listItem = dom.parentWithClass(e.target, "listItem");
|
||||||
|
|
||||||
if (listItem) {
|
if (listItem) {
|
||||||
var index = parseInt(listItem.getAttribute("data-index"));
|
var index = parseInt(listItem.getAttribute("data-index"));
|
||||||
var pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || [];
|
var pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || [];
|
||||||
var pathInfo = null == index ? {} : pathInfos[index] || {};
|
var pathInfo = null == index ? {} : pathInfos[index] || {};
|
||||||
var originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]);
|
var originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]);
|
||||||
var btnRemovePath = dom.parentWithClass(e.target, "btnRemovePath");
|
var btnRemovePath = dom.parentWithClass(e.target, "btnRemovePath");
|
||||||
if (btnRemovePath) return void onRemoveClick(btnRemovePath, originalPath);
|
|
||||||
|
if (btnRemovePath) {
|
||||||
|
onRemoveClick(btnRemovePath, originalPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
showDirectoryBrowser(dom.parentWithClass(listItem, "dlg-libraryeditor"), originalPath, pathInfo.NetworkPath);
|
showDirectoryBrowser(dom.parentWithClass(listItem, "dlg-libraryeditor"), originalPath, pathInfo.NetworkPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,9 +101,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
html += '<h3 class="listItemBodyText">';
|
html += '<h3 class="listItemBodyText">';
|
||||||
html += pathInfo.Path;
|
html += pathInfo.Path;
|
||||||
html += "</h3>";
|
html += "</h3>";
|
||||||
|
|
||||||
if (pathInfo.NetworkPath) {
|
if (pathInfo.NetworkPath) {
|
||||||
html += '<div class="listItemBodyText secondary">' + pathInfo.NetworkPath + "</div>";
|
html += '<div class="listItemBodyText secondary">' + pathInfo.NetworkPath + "</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="listItemButton btnRemovePath" data-index="' + index + '"><i class="md-icon">remove_circle</i></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="listItemButton btnRemovePath" data-index="' + index + '"><i class="md-icon">remove_circle</i></button>';
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
|
@ -104,10 +113,11 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshLibraryFromServer(page) {
|
function refreshLibraryFromServer(page) {
|
||||||
ApiClient.getVirtualFolders().then(function(result) {
|
ApiClient.getVirtualFolders().then(function (result) {
|
||||||
var library = result.filter(function(f) {
|
var library = result.filter(function (f) {
|
||||||
return f.Name === currentOptions.library.Name
|
return f.Name === currentOptions.library.Name;
|
||||||
})[0];
|
})[0];
|
||||||
|
|
||||||
if (library) {
|
if (library) {
|
||||||
currentOptions.library = library;
|
currentOptions.library = library;
|
||||||
renderLibrary(page, currentOptions);
|
renderLibrary(page, currentOptions);
|
||||||
|
@ -117,16 +127,21 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
|
|
||||||
function renderLibrary(page, options) {
|
function renderLibrary(page, options) {
|
||||||
var pathInfos = (options.library.LibraryOptions || {}).PathInfos || [];
|
var pathInfos = (options.library.LibraryOptions || {}).PathInfos || [];
|
||||||
pathInfos.length || (pathInfos = options.library.Locations.map(function(p) {
|
|
||||||
|
if (!pathInfos.length) {
|
||||||
|
pathInfos = options.library.Locations.map(function (p) {
|
||||||
return {
|
return {
|
||||||
Path: p
|
Path: p
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}));
|
|
||||||
if (options.library.CollectionType === 'boxsets') {
|
if (options.library.CollectionType === 'boxsets') {
|
||||||
page.querySelector(".folders").classList.add("hide");
|
page.querySelector(".folders").classList.add("hide");
|
||||||
} else {
|
} else {
|
||||||
page.querySelector(".folders").classList.remove("hide");
|
page.querySelector(".folders").classList.remove("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
page.querySelector(".folderList").innerHTML = pathInfos.map(getFolderHtml).join("");
|
page.querySelector(".folderList").innerHTML = pathInfos.map(getFolderHtml).join("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,24 +150,31 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
}
|
}
|
||||||
|
|
||||||
function showDirectoryBrowser(context, originalPath, networkPath) {
|
function showDirectoryBrowser(context, originalPath, networkPath) {
|
||||||
require(["directorybrowser"], function(directoryBrowser) {
|
require(["directorybrowser"], function (directoryBrowser) {
|
||||||
var picker = new directoryBrowser;
|
var picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
enableNetworkSharePath: !0,
|
enableNetworkSharePath: true,
|
||||||
pathReadOnly: null != originalPath,
|
pathReadOnly: null != originalPath,
|
||||||
path: originalPath,
|
path: originalPath,
|
||||||
networkSharePath: networkPath,
|
networkSharePath: networkPath,
|
||||||
callback: function(path, networkSharePath) {
|
callback: function (path, networkSharePath) {
|
||||||
path && (originalPath ? updateMediaLocation(context, originalPath, networkSharePath) : addMediaLocation(context, path, networkSharePath));
|
if (path) {
|
||||||
|
if (originalPath) {
|
||||||
|
updateMediaLocation(context, originalPath, networkSharePath);
|
||||||
|
} else {
|
||||||
|
addMediaLocation(context, path, networkSharePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
picker.close();
|
picker.close();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onToggleAdvancedChange() {
|
function onToggleAdvancedChange() {
|
||||||
var dlg = dom.parentWithClass(this, "dlg-libraryeditor");
|
var dlg = dom.parentWithClass(this, "dlg-libraryeditor");
|
||||||
libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked)
|
libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
function initEditor(dlg, options) {
|
function initEditor(dlg, options) {
|
||||||
|
@ -161,7 +183,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
dlg.querySelector(".folderList").addEventListener("click", onListItemClick);
|
dlg.querySelector(".folderList").addEventListener("click", onListItemClick);
|
||||||
dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange);
|
dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange);
|
||||||
dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary);
|
dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary);
|
||||||
libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function() {
|
libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function () {
|
||||||
onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced"));
|
onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -171,14 +193,15 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
}
|
}
|
||||||
|
|
||||||
function editor() {
|
function editor() {
|
||||||
this.show = function(options) {
|
this.show = function (options) {
|
||||||
var deferred = jQuery.Deferred();
|
var deferred = jQuery.Deferred();
|
||||||
currentOptions = options;
|
currentOptions = options;
|
||||||
currentDeferred = deferred;
|
currentDeferred = deferred;
|
||||||
hasChanges = false;
|
hasChanges = false;
|
||||||
var xhr = new XMLHttpRequest;
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open("GET", "components/medialibraryeditor/medialibraryeditor.template.html", true);
|
xhr.open("GET", "components/medialibraryeditor/medialibraryeditor.template.html", true);
|
||||||
xhr.onload = function(e) {
|
|
||||||
|
xhr.onload = function (e) {
|
||||||
var template = this.response;
|
var template = this.response;
|
||||||
var dlg = dialogHelper.createDialog({
|
var dlg = dialogHelper.createDialog({
|
||||||
size: "medium-tall",
|
size: "medium-tall",
|
||||||
|
@ -195,21 +218,20 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
|
||||||
initEditor(dlg, options);
|
initEditor(dlg, options);
|
||||||
dlg.addEventListener("close", onDialogClosed);
|
dlg.addEventListener("close", onDialogClosed);
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
dlg.querySelector(".btnCancel").addEventListener("click", function() {
|
dlg.querySelector(".btnCancel").addEventListener("click", function () {
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
});
|
});
|
||||||
refreshLibraryFromServer(dlg);
|
refreshLibraryFromServer(dlg);
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr.send();
|
xhr.send();
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentDeferred;
|
var currentDeferred;
|
||||||
var currentOptions;
|
var currentOptions;
|
||||||
|
|
||||||
var hasChanges = false;
|
var hasChanges = false;
|
||||||
var isCreating = false;
|
var isCreating = false;
|
||||||
|
|
||||||
return editor;
|
return editor;
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser, dom) {
|
define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) {
|
||||||
"use strict";
|
"use strict";
|
||||||
return function(options) {
|
|
||||||
|
return function (options) {
|
||||||
function getTouches(e) {
|
function getTouches(e) {
|
||||||
return e.changedTouches || e.targetTouches || e.touches;
|
return e.changedTouches || e.targetTouches || e.touches;
|
||||||
}
|
}
|
||||||
|
@ -9,14 +10,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
options.target.classList.remove("transition");
|
options.target.classList.remove("transition");
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
|
|
||||||
menuTouchStartX = touch.clientX;
|
menuTouchStartX = touch.clientX;
|
||||||
menuTouchStartY = touch.clientY;
|
menuTouchStartY = touch.clientY;
|
||||||
menuTouchStartTime = (new Date).getTime();
|
menuTouchStartTime = new Date().getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
function setVelocity(deltaX) {
|
function setVelocity(deltaX) {
|
||||||
var time = (new Date).getTime() - (menuTouchStartTime || 0);
|
var time = new Date().getTime() - (menuTouchStartTime || 0);
|
||||||
velocity = Math.abs(deltaX) / time;
|
velocity = Math.abs(deltaX) / time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,21 +28,36 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
var endY = touch.clientY || 0;
|
var endY = touch.clientY || 0;
|
||||||
var deltaX = endX - (menuTouchStartX || 0);
|
var deltaX = endX - (menuTouchStartX || 0);
|
||||||
var deltaY = endY - (menuTouchStartY || 0);
|
var deltaY = endY - (menuTouchStartY || 0);
|
||||||
setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos())
|
setVelocity(deltaX);
|
||||||
|
|
||||||
|
if (isOpen && 1 !== dragMode && deltaX > 0) {
|
||||||
|
dragMode = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) {
|
||||||
|
dragMode = 1;
|
||||||
|
scrollContainer.addEventListener("scroll", disableEvent);
|
||||||
|
self.showMask();
|
||||||
|
} else if (0 === dragMode && Math.abs(deltaY) >= 5) {
|
||||||
|
dragMode = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 === dragMode) {
|
||||||
|
newPos = currentPos + deltaX;
|
||||||
|
self.changeMenuPos();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMenuTouchEnd(e) {
|
function onMenuTouchEnd(e) {
|
||||||
options.target.classList.add("transition");
|
options.target.classList.add("transition");
|
||||||
scrollContainer.removeEventListener("scroll", disableEvent);
|
scrollContainer.removeEventListener("scroll", disableEvent);
|
||||||
dragMode = 0;
|
dragMode = 0;
|
||||||
|
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
var endX = touch.clientX || 0;
|
var endX = touch.clientX || 0;
|
||||||
var endY = touch.clientY || 0;
|
var endY = touch.clientY || 0;
|
||||||
var deltaX = endX - (menuTouchStartX || 0);
|
var deltaX = endX - (menuTouchStartX || 0);
|
||||||
var deltaY = endY - (menuTouchStartY || 0);
|
var deltaY = endY - (menuTouchStartY || 0);
|
||||||
|
|
||||||
currentPos = deltaX;
|
currentPos = deltaX;
|
||||||
self.checkMenuState(deltaX, deltaY);
|
self.checkMenuState(deltaX, deltaY);
|
||||||
}
|
}
|
||||||
|
@ -53,10 +68,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
} else {
|
} else {
|
||||||
if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) {
|
if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) {
|
||||||
isPeeking = true;
|
isPeeking = true;
|
||||||
|
|
||||||
if (e.type === "touchstart") {
|
if (e.type === "touchstart") {
|
||||||
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||||
dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
onMenuTouchStart(e);
|
onMenuTouchStart(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,38 +82,52 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
function onEdgeTouchMove(e) {
|
function onEdgeTouchMove(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
onEdgeTouchStart(e);
|
onEdgeTouchStart(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEdgeTouchEnd(e) {
|
function onEdgeTouchEnd(e) {
|
||||||
isPeeking && (isPeeking = !1, dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}), onMenuTouchEnd(e))
|
if (isPeeking) {
|
||||||
|
isPeeking = false;
|
||||||
|
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||||
|
onMenuTouchEnd(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function disableEvent(e) {
|
function disableEvent(e) {
|
||||||
e.preventDefault(), e.stopPropagation()
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onBackgroundTouchStart(e) {
|
function onBackgroundTouchStart(e) {
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime()
|
backgroundTouchStartX = touch.clientX;
|
||||||
|
backgroundTouchStartTime = new Date().getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onBackgroundTouchMove(e) {
|
function onBackgroundTouchMove(e) {
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
var endX = touch.clientX || 0;
|
var endX = touch.clientX || 0;
|
||||||
|
|
||||||
if (endX <= options.width && self.isVisible) {
|
if (endX <= options.width && self.isVisible) {
|
||||||
countStart++;
|
countStart++;
|
||||||
var deltaX = endX - (backgroundTouchStartX || 0);
|
var deltaX = endX - (backgroundTouchStartX || 0);
|
||||||
if (1 === countStart && (startPoint = deltaX), deltaX < 0 && 2 !== dragMode) {
|
|
||||||
dragMode = 1, newPos = deltaX - startPoint + options.width, self.changeMenuPos();
|
if (countStart == 1) {
|
||||||
var time = (new Date).getTime() - (backgroundTouchStartTime || 0);
|
startPoint = deltaX;
|
||||||
velocity = Math.abs(deltaX) / time
|
}
|
||||||
|
if (deltaX < 0 && dragMode !== 2) {
|
||||||
|
dragMode = 1;
|
||||||
|
newPos = deltaX - startPoint + options.width;
|
||||||
|
self.changeMenuPos();
|
||||||
|
var time = new Date().getTime() - (backgroundTouchStartTime || 0);
|
||||||
|
velocity = Math.abs(deltaX) / time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e.preventDefault(), e.stopPropagation()
|
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onBackgroundTouchEnd(e) {
|
function onBackgroundTouchEnd(e) {
|
||||||
|
@ -104,13 +135,18 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
var endX = touch.clientX || 0;
|
var endX = touch.clientX || 0;
|
||||||
var deltaX = endX - (backgroundTouchStartX || 0);
|
var deltaX = endX - (backgroundTouchStartX || 0);
|
||||||
self.checkMenuState(deltaX), countStart = 0
|
self.checkMenuState(deltaX);
|
||||||
|
countStart = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMaskTransitionEnd() {
|
function onMaskTransitionEnd() {
|
||||||
var classList = mask.classList;
|
var classList = mask.classList;
|
||||||
classList.contains("backdrop") || classList.add("hide")
|
|
||||||
|
if (!classList.contains("backdrop")) {
|
||||||
|
classList.add("hide");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var self;
|
var self;
|
||||||
var defaults;
|
var defaults;
|
||||||
var mask;
|
var mask;
|
||||||
|
@ -123,83 +159,195 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
|
||||||
var dragMode = 0;
|
var dragMode = 0;
|
||||||
var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer");
|
var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer");
|
||||||
scrollContainer.classList.add("scrollY");
|
scrollContainer.classList.add("scrollY");
|
||||||
var TouchMenuLA = function() {
|
|
||||||
self = this, defaults = {
|
var TouchMenuLA = function () {
|
||||||
|
self = this;
|
||||||
|
defaults = {
|
||||||
width: 260,
|
width: 260,
|
||||||
handleSize: 10,
|
handleSize: 10,
|
||||||
disableMask: !1,
|
disableMask: false,
|
||||||
maxMaskOpacity: 0.5
|
maxMaskOpacity: 0.5
|
||||||
}, this.isVisible = !1, this.initialize()
|
|
||||||
};
|
};
|
||||||
TouchMenuLA.prototype.initElements = function() {
|
this.isVisible = false;
|
||||||
options.target.classList.add("touch-menu-la"), options.target.style.width = options.width + "px", options.target.style.left = -options.width + "px", options.disableMask || (mask = document.createElement("div"), mask.className = "tmla-mask hide", document.body.appendChild(mask), dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, {
|
this.initialize();
|
||||||
passive: !0
|
|
||||||
}))
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.initElements = function () {
|
||||||
|
options.target.classList.add("touch-menu-la");
|
||||||
|
options.target.style.width = options.width + "px";
|
||||||
|
options.target.style.left = -options.width + "px";
|
||||||
|
|
||||||
|
if (!options.disableMask) {
|
||||||
|
mask = document.createElement("div");
|
||||||
|
mask.className = "tmla-mask hide";
|
||||||
|
document.body.appendChild(mask);
|
||||||
|
dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var menuTouchStartX;
|
var menuTouchStartX;
|
||||||
var menuTouchStartY;
|
var menuTouchStartY;
|
||||||
var menuTouchStartTime;
|
var menuTouchStartTime;
|
||||||
var edgeContainer = document.querySelector(".mainDrawerHandle");
|
var edgeContainer = document.querySelector(".mainDrawerHandle");
|
||||||
var isPeeking = false;
|
var isPeeking = false;
|
||||||
TouchMenuLA.prototype.animateToPosition = function(pos) {
|
|
||||||
requestAnimationFrame(function() {
|
TouchMenuLA.prototype.animateToPosition = function (pos) {
|
||||||
options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none"
|
requestAnimationFrame(function () {
|
||||||
})
|
options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none";
|
||||||
}, TouchMenuLA.prototype.changeMenuPos = function() {
|
});
|
||||||
newPos <= options.width && this.animateToPosition(newPos)
|
|
||||||
}, TouchMenuLA.prototype.clickMaskClose = function() {
|
|
||||||
mask.addEventListener("click", function() {
|
|
||||||
self.close()
|
|
||||||
})
|
|
||||||
}, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) {
|
|
||||||
velocity >= 0.4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close()
|
|
||||||
}, TouchMenuLA.prototype.open = function() {
|
|
||||||
this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange)
|
|
||||||
}, TouchMenuLA.prototype.close = function() {
|
|
||||||
this.animateToPosition(0), currentPos = 0, self.isVisible = !1, options.target.classList.remove("drawer-open"), self.hideMask(), self.invoke(options.onChange)
|
|
||||||
}, TouchMenuLA.prototype.toggle = function() {
|
|
||||||
self.isVisible ? self.close() : self.open()
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.changeMenuPos = function () {
|
||||||
|
if (newPos <= options.width) {
|
||||||
|
this.animateToPosition(newPos);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.clickMaskClose = function () {
|
||||||
|
mask.addEventListener("click", function () {
|
||||||
|
self.close();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.checkMenuState = function (deltaX, deltaY) {
|
||||||
|
if (velocity >= 0.4) {
|
||||||
|
if (deltaX >= 0 || Math.abs(deltaY || 0) >= 70) {
|
||||||
|
self.open();
|
||||||
|
} else {
|
||||||
|
self.close();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (newPos >= 100) {
|
||||||
|
self.open();
|
||||||
|
} else {
|
||||||
|
if (newPos) {
|
||||||
|
self.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.open = function () {
|
||||||
|
this.animateToPosition(options.width);
|
||||||
|
currentPos = options.width;
|
||||||
|
this.isVisible = true;
|
||||||
|
options.target.classList.add("drawer-open");
|
||||||
|
self.showMask();
|
||||||
|
self.invoke(options.onChange);
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.close = function () {
|
||||||
|
this.animateToPosition(0);
|
||||||
|
currentPos = 0;
|
||||||
|
self.isVisible = false;
|
||||||
|
options.target.classList.remove("drawer-open");
|
||||||
|
self.hideMask();
|
||||||
|
self.invoke(options.onChange);
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.toggle = function () {
|
||||||
|
if (self.isVisible) {
|
||||||
|
self.close();
|
||||||
|
} else {
|
||||||
|
self.open();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var backgroundTouchStartX;
|
var backgroundTouchStartX;
|
||||||
var backgroundTouchStartTime;
|
var backgroundTouchStartTime;
|
||||||
TouchMenuLA.prototype.showMask = function() {
|
|
||||||
mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop")
|
TouchMenuLA.prototype.showMask = function () {
|
||||||
}, TouchMenuLA.prototype.hideMask = function() {
|
mask.classList.remove("hide");
|
||||||
mask.classList.remove("backdrop")
|
mask.offsetWidth;
|
||||||
}, TouchMenuLA.prototype.invoke = function(fn) {
|
mask.classList.add("backdrop");
|
||||||
fn && fn.apply(self)
|
|
||||||
};
|
};
|
||||||
var _edgeSwipeEnabled;
|
|
||||||
return TouchMenuLA.prototype.setEdgeSwipeEnabled = function(enabled) {
|
TouchMenuLA.prototype.hideMask = function () {
|
||||||
options.disableEdgeSwipe || browser.touch && (enabled ? _edgeSwipeEnabled || (_edgeSwipeEnabled = !0, dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
mask.classList.add("hide");
|
||||||
passive: !0
|
mask.classList.remove("backdrop");
|
||||||
}), dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
};
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
TouchMenuLA.prototype.invoke = function (fn) {
|
||||||
passive: !0
|
if (fn) {
|
||||||
})) : _edgeSwipeEnabled && (_edgeSwipeEnabled = !1, dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
fn.apply(self);
|
||||||
passive: !0
|
|
||||||
}), dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
})))
|
|
||||||
}, TouchMenuLA.prototype.initialize = function() {
|
|
||||||
options = Object.assign(defaults, options || {}), browser.edge && (options.disableEdgeSwipe = !0), self.initElements(), browser.touch && (dom.addEventListener(options.target, "touchstart", onMenuTouchStart, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(options.target, "touchmove", onMenuTouchMove, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(options.target, "touchend", onMenuTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}), dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
}), dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, {
|
|
||||||
passive: !0
|
|
||||||
})), self.clickMaskClose()
|
|
||||||
}, new TouchMenuLA
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _edgeSwipeEnabled;
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.setEdgeSwipeEnabled = function (enabled) {
|
||||||
|
if (!options.disableEdgeSwipe) {
|
||||||
|
if (browser.touch) {
|
||||||
|
if (enabled) {
|
||||||
|
if (!_edgeSwipeEnabled) {
|
||||||
|
_edgeSwipeEnabled = true;
|
||||||
|
dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (_edgeSwipeEnabled) {
|
||||||
|
_edgeSwipeEnabled = false;
|
||||||
|
dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TouchMenuLA.prototype.initialize = function () {
|
||||||
|
options = Object.assign(defaults, options || {});
|
||||||
|
|
||||||
|
if (browser.edge) {
|
||||||
|
options.disableEdgeSwipe = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.initElements();
|
||||||
|
|
||||||
|
if (browser.touch) {
|
||||||
|
dom.addEventListener(options.target, "touchstart", onMenuTouchStart, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(options.target, "touchmove", onMenuTouchMove, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(options.target, "touchend", onMenuTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {});
|
||||||
|
dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, {
|
||||||
|
passive: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
self.clickMaskClose();
|
||||||
|
};
|
||||||
|
|
||||||
|
return new TouchMenuLA();
|
||||||
|
};
|
||||||
});
|
});
|
|
@ -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";
|
"use strict";
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
|
|
||||||
function authenticateUserByName(page, apiClient, username, password) {
|
function authenticateUserByName(page, apiClient, username, password) {
|
||||||
loading.show();
|
loading.show();
|
||||||
apiClient.authenticateUserByName(username, password).then(function(result) {
|
apiClient.authenticateUserByName(username, password).then(function (result) {
|
||||||
var user = result.User;
|
var user = result.User;
|
||||||
var serverId = getParameterByName("serverid");
|
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();
|
loading.hide();
|
||||||
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
||||||
Dashboard.navigate(newUrl);
|
Dashboard.navigate(newUrl);
|
||||||
}, function(response) {
|
}, function (response) {
|
||||||
page.querySelector("#txtManualName").value = "";
|
page.querySelector("#txtManualName").value = "";
|
||||||
page.querySelector("#txtManualPassword").value = "";
|
page.querySelector("#txtManualPassword").value = "";
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
if (response.status === 401) {
|
if (response.status === 401) {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("MessageInvalidUser"));
|
toast(Globalize.translate("MessageInvalidUser"));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -34,8 +42,18 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
context.querySelector(".manualLoginForm").classList.remove("hide");
|
context.querySelector(".manualLoginForm").classList.remove("hide");
|
||||||
context.querySelector(".visualLoginForm").classList.add("hide");
|
context.querySelector(".visualLoginForm").classList.add("hide");
|
||||||
context.querySelector(".btnManual").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"];
|
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) {
|
if (str) {
|
||||||
var character = String(str.substr(0, 1).charCodeAt());
|
var character = String(str.substr(0, 1).charCodeAt());
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
|
|
||||||
for (var i = 0; i < character.length; i++) {
|
for (var i = 0; i < character.length; i++) {
|
||||||
sum += parseInt(character.charAt(i));
|
sum += parseInt(character.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
var index = String(sum).substr(-1);
|
var index = String(sum).substr(-1);
|
||||||
return metroColors[index];
|
return metroColors[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
return getRandomMetroColor();
|
return getRandomMetroColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadUserList(context, apiClient, users) {
|
function loadUserList(context, apiClient, users) {
|
||||||
var html = "";
|
var html = "";
|
||||||
|
|
||||||
for (var i = 0; i < users.length; i++) {
|
for (var i = 0; i < users.length; i++) {
|
||||||
var user = users[i];
|
var user = users[i];
|
||||||
|
|
||||||
// TODO move card creation code to Card component
|
// TODO move card creation code to Card component
|
||||||
|
|
||||||
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
||||||
|
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
|
@ -76,13 +97,13 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
}
|
}
|
||||||
|
|
||||||
var cardBoxCssClass = "cardBox cardBox-bottompadded";
|
var cardBoxCssClass = "cardBox cardBox-bottompadded";
|
||||||
|
|
||||||
html += '<button type="button" class="' + cssClass + '">';
|
html += '<button type="button" class="' + cssClass + '">';
|
||||||
html += '<div class="' + cardBoxCssClass + '">';
|
html += '<div class="' + cardBoxCssClass + '">';
|
||||||
html += '<div class="cardScalable">';
|
html += '<div class="cardScalable">';
|
||||||
html += '<div class="cardPadder cardPadder-square"></div>';
|
html += '<div class="cardPadder cardPadder-square"></div>';
|
||||||
html += '<div class="cardContent" data-haspw="' + user.HasPassword + '" data-username="' + user.Name + '" data-userid="' + user.Id + '">';
|
html += '<div class="cardContent" data-haspw="' + user.HasPassword + '" data-username="' + user.Name + '" data-userid="' + user.Id + '">';
|
||||||
var imgUrl;
|
var imgUrl;
|
||||||
|
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
imgUrl = apiClient.getUserImageUrl(user.Id, {
|
imgUrl = apiClient.getUserImageUrl(user.Id, {
|
||||||
width: 300,
|
width: 300,
|
||||||
|
@ -95,6 +116,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
imgUrl = "assets/img/avatar.png";
|
imgUrl = "assets/img/avatar.png";
|
||||||
html += '<div class="cardImageContainer coveredImage coveredImage-noScale" style="background-image:url(\'' + imgUrl + "');background-color:" + background + ';"></div>';
|
html += '<div class="cardImageContainer coveredImage coveredImage-noScale" style="background-image:url(\'' + imgUrl + "');background-color:" + background + ';"></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||||
|
@ -103,13 +125,19 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += "</button>";
|
html += "</button>";
|
||||||
}
|
}
|
||||||
|
|
||||||
context.querySelector("#divUsers").innerHTML = html;
|
context.querySelector("#divUsers").innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
return function(view, params) {
|
return function (view, params) {
|
||||||
function getApiClient() {
|
function getApiClient() {
|
||||||
var serverId = params.serverid;
|
var serverId = params.serverid;
|
||||||
return serverId ? connectionManager.getOrCreateApiClient(serverId) : ApiClient;
|
|
||||||
|
if (serverId) {
|
||||||
|
return connectionManager.getOrCreateApiClient(serverId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ApiClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showVisualForm() {
|
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 card = dom.parentWithClass(e.target, "card");
|
||||||
var cardContent = card ? card.querySelector(".cardContent") : null;
|
var cardContent = card ? card.querySelector(".cardContent") : null;
|
||||||
|
|
||||||
if (cardContent) {
|
if (cardContent) {
|
||||||
var context = view;
|
var context = view;
|
||||||
var id = cardContent.getAttribute("data-userid");
|
var id = cardContent.getAttribute("data-userid");
|
||||||
var name = cardContent.getAttribute("data-username");
|
var name = cardContent.getAttribute("data-username");
|
||||||
var haspw = cardContent.getAttribute("data-haspw");
|
var haspw = cardContent.getAttribute("data-haspw");
|
||||||
|
|
||||||
if (id === 'manual') {
|
if (id === 'manual') {
|
||||||
context.querySelector("#txtManualName").value = "";
|
context.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(context, true);
|
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);
|
appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);
|
||||||
var apiClient = getApiClient();
|
var apiClient = getApiClient();
|
||||||
authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value);
|
authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
view.querySelector(".btnForgotPassword").addEventListener("click", function () {
|
||||||
view.querySelector(".btnForgotPassword").addEventListener("click", function() {
|
|
||||||
Dashboard.navigate("forgotpassword.html");
|
Dashboard.navigate("forgotpassword.html");
|
||||||
});
|
});
|
||||||
|
|
||||||
view.querySelector(".btnCancel").addEventListener("click", showVisualForm);
|
view.querySelector(".btnCancel").addEventListener("click", showVisualForm);
|
||||||
|
view.querySelector(".btnManual").addEventListener("click", function () {
|
||||||
view.querySelector(".btnManual").addEventListener("click", function() {
|
|
||||||
view.querySelector("#txtManualName").value = "";
|
view.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(view, true);
|
showManualForm(view, true);
|
||||||
});
|
});
|
||||||
|
view.addEventListener("viewshow", function (e) {
|
||||||
view.addEventListener("viewshow", function(e) {
|
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
if (!appHost.supports('multiserver')) {
|
if (!appHost.supports('multiserver')) {
|
||||||
view.querySelector(".btnSelectServer").classList.add("hide");
|
view.querySelector(".btnSelectServer").classList.add("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
var apiClient = getApiClient();
|
var apiClient = getApiClient();
|
||||||
apiClient.getPublicUsers().then(function(users) {
|
apiClient.getPublicUsers().then(function (users) {
|
||||||
if (users.length) {
|
if (users.length) {
|
||||||
showVisualForm();
|
showVisualForm();
|
||||||
loadUserList(view, apiClient, users);
|
loadUserList(view, apiClient, users);
|
||||||
|
@ -176,13 +203,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
view.querySelector("#txtManualName").value = "";
|
view.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(view, false, false);
|
showManualForm(view, false, false);
|
||||||
}
|
}
|
||||||
}).catch().then(function() {
|
}).catch().then(function () {
|
||||||
loading.hide();
|
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 || "";
|
view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || "";
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
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";
|
"use strict";
|
||||||
|
|
||||||
function loadPage(page, config, languageOptions, systemInfo) {
|
function loadPage(page, config, languageOptions, systemInfo) {
|
||||||
page.querySelector("#txtServerName").value = systemInfo.ServerName;
|
page.querySelector("#txtServerName").value = systemInfo.ServerName;
|
||||||
$("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp);
|
$("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp);
|
||||||
|
|
||||||
if (systemInfo.CanLaunchWebBrowser) {
|
if (systemInfo.CanLaunchWebBrowser) {
|
||||||
page.querySelector("#fldAutoRunWebApp").classList.remove("hide");
|
page.querySelector("#fldAutoRunWebApp").classList.remove("hide");
|
||||||
} else {
|
} else {
|
||||||
page.querySelector("#fldAutoRunWebApp").classList.add("hide");
|
page.querySelector("#fldAutoRunWebApp").classList.add("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
page.querySelector("#txtCachePath").value = systemInfo.CachePath || "";
|
page.querySelector("#txtCachePath").value = systemInfo.CachePath || "";
|
||||||
$("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || "");
|
$("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || "");
|
||||||
$("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || "");
|
$("#txtMetadataNetworkPath", page).val(systemInfo.MetadataNetworkPath || "");
|
||||||
$("#selectLocalizationLanguage", page).html(languageOptions.map(function(language) {
|
$("#selectLocalizationLanguage", page).html(languageOptions.map(function (language) {
|
||||||
return '<option value="' + language.Value + '">' + language.Name + "</option>"
|
return '<option value="' + language.Value + '">' + language.Name + "</option>";
|
||||||
})).val(config.UICulture);
|
})).val(config.UICulture);
|
||||||
currentLanguage = config.UICulture;
|
currentLanguage = config.UICulture;
|
||||||
if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) {
|
if (systemInfo.CanSelfRestart || systemInfo.CanSelfUpdate) {
|
||||||
|
@ -21,6 +23,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
|
||||||
} else {
|
} else {
|
||||||
$(".autoUpdatesContainer", page).addClass("hide");
|
$(".autoUpdatesContainer", page).addClass("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.hide();
|
loading.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,90 +31,94 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
|
||||||
loading.show();
|
loading.show();
|
||||||
var form = this;
|
var form = this;
|
||||||
$(form).parents(".page");
|
$(form).parents(".page");
|
||||||
return ApiClient.getServerConfiguration().then(function(config) {
|
ApiClient.getServerConfiguration().then(function (config) {
|
||||||
config.ServerName = $("#txtServerName", form).val();
|
config.ServerName = $("#txtServerName", form).val();
|
||||||
config.UICulture = $("#selectLocalizationLanguage", form).val();
|
config.UICulture = $("#selectLocalizationLanguage", form).val();
|
||||||
config.CachePath = form.querySelector("#txtCachePath").value;
|
config.CachePath = form.querySelector("#txtCachePath").value;
|
||||||
config.MetadataPath = $("#txtMetadataPath", form).val();
|
config.MetadataPath = $("#txtMetadataPath", form).val();
|
||||||
config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val();
|
config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val();
|
||||||
var requiresReload = (config.UICulture !== currentLanguage);
|
var requiresReload = config.UICulture !== currentLanguage;
|
||||||
config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked();
|
config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked();
|
||||||
ApiClient.updateServerConfiguration(config).then(function() {
|
ApiClient.updateServerConfiguration(config).then(function() {
|
||||||
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) {
|
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) {
|
||||||
brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value;
|
brandingConfig.LoginDisclaimer = form.querySelector("#txtLoginDisclaimer").value;
|
||||||
brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value;
|
brandingConfig.CustomCss = form.querySelector("#txtCustomCss").value;
|
||||||
|
|
||||||
if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) {
|
if (currentBrandingOptions && brandingConfig.CustomCss !== currentBrandingOptions.CustomCss) {
|
||||||
requiresReload = true;
|
requiresReload = true;
|
||||||
}
|
}
|
||||||
ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function() {
|
|
||||||
|
ApiClient.updateNamedConfiguration(brandingConfigKey, brandingConfig).then(function () {
|
||||||
Dashboard.processServerConfigurationUpdateResult();
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
|
|
||||||
if (requiresReload && !AppInfo.isNativeApp) {
|
if (requiresReload && !AppInfo.isNativeApp) {
|
||||||
window.location.reload(true);
|
window.location.reload(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}), !1
|
});
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentBrandingOptions;
|
var currentBrandingOptions;
|
||||||
var currentLanguage;
|
var currentLanguage;
|
||||||
var brandingConfigKey = "branding";
|
var brandingConfigKey = "branding";
|
||||||
|
return function (view, params) {
|
||||||
return function(view, params) {
|
$("#btnSelectCachePath", view).on("click.selectDirectory", function () {
|
||||||
$("#btnSelectCachePath", view).on("click.selectDirectory", function() {
|
require(["directorybrowser"], function (directoryBrowser) {
|
||||||
require(["directorybrowser"], function(directoryBrowser) {
|
var picker = new directoryBrowser();
|
||||||
var picker = new directoryBrowser;
|
|
||||||
picker.show({
|
picker.show({
|
||||||
callback: function(path) {
|
callback: function (path) {
|
||||||
if (path) {
|
if (path) {
|
||||||
view.querySelector("#txtCachePath").value = path;
|
view.querySelector("#txtCachePath").value = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
picker.close();
|
picker.close();
|
||||||
},
|
},
|
||||||
validateWriteable: true,
|
validateWriteable: true,
|
||||||
header: Globalize.translate("HeaderSelectServerCachePath"),
|
header: Globalize.translate("HeaderSelectServerCachePath"),
|
||||||
instruction: Globalize.translate("HeaderSelectServerCachePathHelp")
|
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();
|
var picker = new directoryBrowser();
|
||||||
picker.show({
|
picker.show({
|
||||||
path: $("#txtMetadataPath", view).val(),
|
path: $("#txtMetadataPath", view).val(),
|
||||||
networkSharePath: $("#txtMetadataNetworkPath", view).val(),
|
networkSharePath: $("#txtMetadataNetworkPath", view).val(),
|
||||||
callback: function(path, networkPath) {
|
callback: function (path, networkPath) {
|
||||||
if (path) {
|
if (path) {
|
||||||
$("#txtMetadataPath", view).val(path);
|
$("#txtMetadataPath", view).val(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkPath) {
|
if (networkPath) {
|
||||||
$("#txtMetadataNetworkPath", view).val(networkPath);
|
$("#txtMetadataNetworkPath", view).val(networkPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
picker.close();
|
picker.close();
|
||||||
},
|
},
|
||||||
validateWriteable: true,
|
validateWriteable: true,
|
||||||
header: Globalize.translate("HeaderSelectMetadataPath"),
|
header: Globalize.translate("HeaderSelectMetadataPath"),
|
||||||
instruction: Globalize.translate("HeaderSelectMetadataPathHelp"),
|
instruction: Globalize.translate("HeaderSelectMetadataPathHelp"),
|
||||||
enableNetworkSharePath: true
|
enableNetworkSharePath: true
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
$(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit);
|
$(".dashboardGeneralForm", view).off("submit", onSubmit).on("submit", onSubmit);
|
||||||
view.addEventListener("viewshow", function() {
|
view.addEventListener("viewshow", function () {
|
||||||
var promiseConfig = ApiClient.getServerConfiguration();
|
var promiseConfig = ApiClient.getServerConfiguration();
|
||||||
var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options"));
|
var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl("Localization/Options"));
|
||||||
var promiseSystemInfo = ApiClient.getSystemInfo();
|
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]);
|
loadPage(view, responses[0], responses[1], responses[2]);
|
||||||
});
|
});
|
||||||
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config) {
|
ApiClient.getNamedConfiguration(brandingConfigKey).then(function (config) {
|
||||||
currentBrandingOptions = config;
|
currentBrandingOptions = config;
|
||||||
view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || "";
|
view.querySelector("#txtLoginDisclaimer").value = config.LoginDisclaimer || "";
|
||||||
view.querySelector("#txtCustomCss").value = config.CustomCss || "";
|
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";
|
"use strict";
|
||||||
|
|
||||||
function onSubmit(e) {
|
function onSubmit(e) {
|
||||||
var form = this;
|
var form = this;
|
||||||
var localAddress = form.querySelector("#txtLocalAddress").value;
|
var localAddress = form.querySelector("#txtLocalAddress").value;
|
||||||
var enableUpnp = form.querySelector("#chkEnableUpnp").checked;
|
var enableUpnp = form.querySelector("#chkEnableUpnp").checked;
|
||||||
confirmSelections(localAddress, enableUpnp, function() {
|
confirmSelections(localAddress, enableUpnp, function () {
|
||||||
var validationResult = getValidationAlert(form);
|
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();
|
loading.show();
|
||||||
ApiClient.getServerConfiguration().then(function(config) {
|
ApiClient.getServerConfiguration().then(function (config) {
|
||||||
config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function(s) {
|
config.LocalNetworkSubnets = form.querySelector("#txtLanNetworks").value.split(",").map(function (s) {
|
||||||
return s.trim()
|
return s.trim();
|
||||||
}).filter(function(s) {
|
}).filter(function (s) {
|
||||||
return s.length > 0
|
return s.length > 0;
|
||||||
});
|
});
|
||||||
|
config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function (s) {
|
||||||
config.RemoteIPFilter = form.querySelector("#txtExternalAddressFilter").value.split(",").map(function(s) {
|
return s.trim();
|
||||||
return s.trim()
|
}).filter(function (s) {
|
||||||
}).filter(function(s) {
|
return s.length > 0;
|
||||||
return s.length > 0
|
|
||||||
});
|
});
|
||||||
|
|
||||||
config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value;
|
config.IsRemoteIPFilterBlacklist = "blacklist" === form.querySelector("#selectExternalAddressFilterMode").value;
|
||||||
config.PublicPort = form.querySelector("#txtPublicPort").value;
|
config.PublicPort = form.querySelector("#txtPublicPort").value;
|
||||||
config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value;
|
config.PublicHttpsPort = form.querySelector("#txtPublicHttpsPort").value;
|
||||||
var httpsMode = form.querySelector("#selectHttpsMode").value;
|
var httpsMode = form.querySelector("#selectHttpsMode").value;
|
||||||
|
|
||||||
switch (httpsMode) {
|
switch (httpsMode) {
|
||||||
case "proxy":
|
case "proxy":
|
||||||
config.EnableHttps = true;
|
config.EnableHttps = true;
|
||||||
config.RequireHttps = false;
|
config.RequireHttps = false;
|
||||||
config.IsBehindProxy = true;
|
config.IsBehindProxy = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "required":
|
case "required":
|
||||||
config.EnableHttps = true;
|
config.EnableHttps = true;
|
||||||
config.RequireHttps = true;
|
config.RequireHttps = true;
|
||||||
config.IsBehindProxy = false;
|
config.IsBehindProxy = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "enabled":
|
case "enabled":
|
||||||
config.EnableHttps = true;
|
config.EnableHttps = true;
|
||||||
config.RequireHttps = false;
|
config.RequireHttps = false;
|
||||||
config.IsBehindProxy = false;
|
config.IsBehindProxy = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
config.EnableHttps = false;
|
config.EnableHttps = false;
|
||||||
config.RequireHttps = false;
|
config.RequireHttps = false;
|
||||||
config.IsBehindProxy = false;
|
config.IsBehindProxy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value;
|
config.HttpsPortNumber = form.querySelector("#txtHttpsPort").value;
|
||||||
config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value;
|
config.HttpServerPortNumber = form.querySelector("#txtPortNumber").value;
|
||||||
config.EnableUPnP = enableUpnp;
|
config.EnableUPnP = enableUpnp;
|
||||||
|
@ -57,47 +65,66 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
|
||||||
config.CertificatePassword = form.querySelector("#txtCertPassword").value || null;
|
config.CertificatePassword = form.querySelector("#txtCertPassword").value || null;
|
||||||
config.LocalNetworkAddresses = localAddress ? [localAddress] : [];
|
config.LocalNetworkAddresses = localAddress ? [localAddress] : [];
|
||||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
|
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}), e.preventDefault()
|
});
|
||||||
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
function triggerChange(select) {
|
function triggerChange(select) {
|
||||||
var evt = document.createEvent("HTMLEvents");
|
var evt = document.createEvent("HTMLEvents");
|
||||||
evt.initEvent("change", !1, !0), select.dispatchEvent(evt)
|
evt.initEvent("change", false, true);
|
||||||
|
select.dispatchEvent(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getValidationAlert(form) {
|
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) {
|
function validateHttps(form) {
|
||||||
var certPath = form.querySelector("#txtCertificatePath").value || null;
|
var certPath = form.querySelector("#txtCertificatePath").value || null;
|
||||||
var httpsMode = form.querySelector("#selectHttpsMode").value;
|
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({
|
return alertText({
|
||||||
title: globalize.translate("TitleHostingSettings"),
|
title: globalize.translate("TitleHostingSettings"),
|
||||||
text: globalize.translate("HttpsRequiresCert")
|
text: globalize.translate("HttpsRequiresCert")
|
||||||
}).then(reject, reject)
|
}).then(reject, reject);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function alertText(options) {
|
function alertText(options) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
require(["alert"], function(alert) {
|
require(["alert"], function (alert) {
|
||||||
alert(options).then(resolve, reject)
|
alert(options).then(resolve, reject);
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function confirmSelections(localAddress, enableUpnp, callback) {
|
function confirmSelections(localAddress, enableUpnp, callback) {
|
||||||
localAddress || !enableUpnp ? alertText({
|
if (localAddress || !enableUpnp) {
|
||||||
|
alertText({
|
||||||
title: globalize.translate("TitleHostingSettings"),
|
title: globalize.translate("TitleHostingSettings"),
|
||||||
text: globalize.translate("SettingsWarning")
|
text: globalize.translate("SettingsWarning")
|
||||||
}).then(callback) : callback()
|
}).then(callback);
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return function(view, params) {
|
return function (view, params) {
|
||||||
function loadPage(page, config) {
|
function loadPage(page, config) {
|
||||||
page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber;
|
page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber;
|
||||||
page.querySelector("#txtPublicPort").value = config.PublicPort;
|
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("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist";
|
||||||
page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
|
page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
|
||||||
var selectHttpsMode = page.querySelector("#selectHttpsMode");
|
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("#txtHttpsPort").value = config.HttpsPortNumber;
|
||||||
page.querySelector("#txtBaseUrl").value = config.BaseUrl || "";
|
page.querySelector("#txtBaseUrl").value = config.BaseUrl || "";
|
||||||
var txtCertificatePath = page.querySelector("#txtCertificatePath");
|
var txtCertificatePath = page.querySelector("#txtCertificatePath");
|
||||||
|
@ -119,27 +156,50 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
|
||||||
loading.hide();
|
loading.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
view.querySelector("#chkRemoteAccess").addEventListener("change", function() {
|
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"))
|
if (this.checked) {
|
||||||
}), view.querySelector("#btnSelectCertPath").addEventListener("click", function() {
|
view.querySelector(".fldExternalAddressFilter").classList.remove("hide");
|
||||||
require(["directorybrowser"], function(directoryBrowser) {
|
view.querySelector(".fldExternalAddressFilterMode").classList.remove("hide");
|
||||||
var picker = new directoryBrowser;
|
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({
|
picker.show({
|
||||||
includeFiles: !0,
|
includeFiles: true,
|
||||||
includeDirectories: !0,
|
includeDirectories: true,
|
||||||
callback: function(path) {
|
callback: function (path) {
|
||||||
path && (view.querySelector("#txtCertificatePath").value = path), picker.close()
|
if (path) {
|
||||||
|
view.querySelector("#txtCertificatePath").value = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
picker.close();
|
||||||
},
|
},
|
||||||
header: globalize.translate("HeaderSelectCertificatePath")
|
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();
|
loading.show();
|
||||||
ApiClient.getServerConfiguration().then(function(config) {
|
ApiClient.getServerConfiguration().then(function (config) {
|
||||||
loadPage(view, config);
|
loadPage(view, config);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,38 @@
|
||||||
define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "scripts/imagehelper", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) {
|
define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "scripts/imagehelper", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
function renderHeader() {
|
||||||
|
var html = "";
|
||||||
|
html += '<div class="flex align-items-center flex-grow headerTop">';
|
||||||
|
html += '<div class="headerLeft">';
|
||||||
|
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerButtonLeft headerBackButton hide"><i class="md-icon">' + (browser.safari ? "chevron_left" : "arrow_back") + "</i></button>";
|
||||||
|
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerHomeButton hide barsMenuButton headerButtonLeft"><i class="md-icon">home</i></button>';
|
||||||
|
html += '<button type="button" is="paper-icon-button-light" class="headerButton mainDrawerButton barsMenuButton headerButtonLeft hide"><i class="md-icon">menu</i></button>';
|
||||||
|
html += '<h3 class="pageTitle"></h3>';
|
||||||
|
html += "</div>";
|
||||||
|
html += '<div class="headerRight">';
|
||||||
|
html += '<span class="headerSelectedPlayer"></span>';
|
||||||
|
html += '<button is="paper-icon-button-light" class="headerCastButton castButton headerButton headerButtonRight hide"><i class="md-icon">cast</i></button>';
|
||||||
|
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerButtonRight headerSearchButton hide"><i class="md-icon">search</i></button>';
|
||||||
|
html += '<button is="paper-icon-button-light" class="headerButton headerButtonRight headerUserButton hide"><i class="md-icon">person</i></button>';
|
||||||
|
html += "</div>";
|
||||||
|
html += "</div>";
|
||||||
|
html += '<div class="headerTabs sectionTabs hide">';
|
||||||
|
html += "</div>";
|
||||||
|
|
||||||
|
skinHeader.classList.add("skinHeader-withBackground");
|
||||||
|
skinHeader.classList.add("skinHeader-blurred");
|
||||||
|
skinHeader.innerHTML = html;
|
||||||
|
|
||||||
|
headerHomeButton = skinHeader.querySelector(".headerHomeButton");
|
||||||
|
headerUserButton = skinHeader.querySelector(".headerUserButton");
|
||||||
|
headerCastButton = skinHeader.querySelector(".headerCastButton");
|
||||||
|
headerSearchButton = skinHeader.querySelector(".headerSearchButton");
|
||||||
|
|
||||||
|
lazyLoadViewMenuBarImages();
|
||||||
|
bindMenuEvents();
|
||||||
|
}
|
||||||
|
|
||||||
function getCurrentApiClient() {
|
function getCurrentApiClient() {
|
||||||
if (currentUser && currentUser.localUser) {
|
if (currentUser && currentUser.localUser) {
|
||||||
return connectionManager.getApiClient(currentUser.localUser.ServerId);
|
return connectionManager.getApiClient(currentUser.localUser.ServerId);
|
||||||
|
@ -840,37 +872,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
|
||||||
updateLibraryNavLinks(page);
|
updateLibraryNavLinks(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
(function () {
|
renderHeader();
|
||||||
var html = "";
|
|
||||||
html += '<div class="flex align-items-center flex-grow headerTop">';
|
|
||||||
html += '<div class="headerLeft">';
|
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerButtonLeft headerBackButton hide"><i class="md-icon">' + (browser.safari ? "chevron_left" : "arrow_back") + "</i></button>";
|
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerHomeButton hide barsMenuButton headerButtonLeft"><i class="md-icon">home</i></button>';
|
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="headerButton mainDrawerButton barsMenuButton headerButtonLeft hide"><i class="md-icon">menu</i></button>';
|
|
||||||
html += '<h3 class="pageTitle"></h3>';
|
|
||||||
html += "</div>";
|
|
||||||
html += '<div class="headerRight">';
|
|
||||||
html += '<span class="headerSelectedPlayer"></span>';
|
|
||||||
html += '<button is="paper-icon-button-light" class="headerCastButton castButton headerButton headerButtonRight hide"><i class="md-icon">cast</i></button>';
|
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="headerButton headerButtonRight headerSearchButton hide"><i class="md-icon">search</i></button>';
|
|
||||||
html += '<button is="paper-icon-button-light" class="headerButton headerButtonRight headerUserButton hide"><i class="md-icon">person</i></button>';
|
|
||||||
html += "</div>";
|
|
||||||
html += "</div>";
|
|
||||||
html += '<div class="headerTabs sectionTabs hide">';
|
|
||||||
html += "</div>";
|
|
||||||
|
|
||||||
skinHeader.classList.add("skinHeader-withBackground");
|
|
||||||
skinHeader.classList.add("skinHeader-blurred");
|
|
||||||
skinHeader.innerHTML = html;
|
|
||||||
|
|
||||||
headerHomeButton = skinHeader.querySelector(".headerHomeButton");
|
|
||||||
headerUserButton = skinHeader.querySelector(".headerUserButton");
|
|
||||||
headerCastButton = skinHeader.querySelector(".headerCastButton");
|
|
||||||
headerSearchButton = skinHeader.querySelector(".headerSearchButton");
|
|
||||||
|
|
||||||
lazyLoadViewMenuBarImages();
|
|
||||||
bindMenuEvents();
|
|
||||||
})();
|
|
||||||
|
|
||||||
events.on(connectionManager, "localusersignedin", function (e, user) {
|
events.on(connectionManager, "localusersignedin", function (e, user) {
|
||||||
currentDrawerType = null;
|
currentDrawerType = null;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue