mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Migration of user/menu and user/profile to ES6 modules
This commit is contained in:
parent
09aa721e3d
commit
d01e4a1e2f
3 changed files with 151 additions and 144 deletions
|
@ -141,6 +141,8 @@
|
||||||
"src/controllers/dashboard/dashboard.js",
|
"src/controllers/dashboard/dashboard.js",
|
||||||
"src/controllers/dashboard/encodingsettings.js",
|
"src/controllers/dashboard/encodingsettings.js",
|
||||||
"src/controllers/dashboard/logs.js",
|
"src/controllers/dashboard/logs.js",
|
||||||
|
"src/controllers/user/menu.js",
|
||||||
|
"src/controllers/user/profile.js",
|
||||||
"src/controllers/user/subtitles.js",
|
"src/controllers/user/subtitles.js",
|
||||||
"src/controllers/dashboard/plugins/repositories.js",
|
"src/controllers/dashboard/plugins/repositories.js",
|
||||||
"src/elements/emby-checkbox/emby-checkbox.js",
|
"src/elements/emby-checkbox/emby-checkbox.js",
|
||||||
|
|
|
@ -1,58 +1,60 @@
|
||||||
define(['apphost', 'connectionManager', 'layoutManager', 'listViewStyle', 'emby-button'], function(appHost, connectionManager, layoutManager) {
|
import appHost from 'apphost';
|
||||||
'use strict';
|
import connectionManager from 'connectionManager';
|
||||||
|
import layoutManager from 'layoutManager';
|
||||||
|
import 'listViewStyle';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
return function(view, params) {
|
export default function (view, params) {
|
||||||
view.querySelector('.btnLogout').addEventListener('click', function() {
|
view.querySelector('.btnLogout').addEventListener('click', function () {
|
||||||
Dashboard.logout();
|
Dashboard.logout();
|
||||||
});
|
});
|
||||||
|
|
||||||
view.querySelector('.selectServer').addEventListener('click', function () {
|
view.querySelector('.selectServer').addEventListener('click', function () {
|
||||||
Dashboard.selectServer();
|
Dashboard.selectServer();
|
||||||
});
|
});
|
||||||
|
|
||||||
view.querySelector('.clientSettings').addEventListener('click', function () {
|
view.querySelector('.clientSettings').addEventListener('click', function () {
|
||||||
window.NativeShell.openClientSettings();
|
window.NativeShell.openClientSettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
view.addEventListener('viewshow', function() {
|
view.addEventListener('viewshow', function () {
|
||||||
// this page can also be used by admins to change user preferences from the user edit page
|
// this page can also be used by admins to change user preferences from the user edit page
|
||||||
var userId = params.userId || Dashboard.getCurrentUserId();
|
const userId = params.userId || Dashboard.getCurrentUserId();
|
||||||
var page = this;
|
const page = this;
|
||||||
|
|
||||||
page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId);
|
page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId);
|
||||||
page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId);
|
page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId);
|
||||||
page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
|
page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
|
||||||
page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId);
|
page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId);
|
||||||
page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId);
|
page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId);
|
||||||
|
|
||||||
if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) {
|
if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) {
|
||||||
page.querySelector('.clientSettings').classList.remove('hide');
|
page.querySelector('.clientSettings').classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
page.querySelector('.clientSettings').classList.add('hide');
|
page.querySelector('.clientSettings').classList.add('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appHost.supports('multiserver')) {
|
if (appHost.supports('multiserver')) {
|
||||||
page.querySelector('.selectServer').classList.remove('hide');
|
page.querySelector('.selectServer').classList.remove('hide');
|
||||||
} else {
|
} else {
|
||||||
page.querySelector('.selectServer').classList.add('hide');
|
page.querySelector('.selectServer').classList.add('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
// hide the actions if user preferences are being edited for a different user
|
// hide the actions if user preferences are being edited for a different user
|
||||||
if (params.userId && params.userId !== Dashboard.getCurrentUserId) {
|
if (params.userId && params.userId !== Dashboard.getCurrentUserId) {
|
||||||
page.querySelector('.userSection').classList.add('hide');
|
page.querySelector('.userSection').classList.add('hide');
|
||||||
|
page.querySelector('.adminSection').classList.add('hide');
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.getUser(userId).then(function (user) {
|
||||||
|
page.querySelector('.headerUsername').innerHTML = user.Name;
|
||||||
|
if (!user.Policy.IsAdministrator) {
|
||||||
page.querySelector('.adminSection').classList.add('hide');
|
page.querySelector('.adminSection').classList.add('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
ApiClient.getUser(userId).then(function(user) {
|
|
||||||
page.querySelector('.headerUsername').innerHTML = user.Name;
|
|
||||||
if (!user.Policy.IsAdministrator) {
|
|
||||||
page.querySelector('.adminSection').classList.add('hide');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
require(['autoFocuser'], function (autoFocuser) {
|
|
||||||
autoFocuser.autoFocus(view);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
|
||||||
});
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||||
|
autoFocuser.autoFocus(view);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -1,106 +1,109 @@
|
||||||
define(['controllers/dashboard/users/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) {
|
import UserPasswordPage from 'controllers/dashboard/users/userpasswordpage';
|
||||||
'use strict';
|
import loading from 'loading';
|
||||||
|
import libraryMenu from 'libraryMenu';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import 'emby-button';
|
||||||
|
|
||||||
function reloadUser(page) {
|
function reloadUser(page) {
|
||||||
var userId = getParameterByName('userId');
|
const userId = getParameterByName('userId');
|
||||||
loading.show();
|
loading.show();
|
||||||
ApiClient.getUser(userId).then(function (user) {
|
ApiClient.getUser(userId).then(function (user) {
|
||||||
page.querySelector('.username').innerHTML = user.Name;
|
page.querySelector('.username').innerHTML = user.Name;
|
||||||
libraryMenu.setTitle(user.Name);
|
libraryMenu.setTitle(user.Name);
|
||||||
|
|
||||||
var imageUrl = 'assets/img/avatar.png';
|
let imageUrl = 'assets/img/avatar.png';
|
||||||
|
if (user.PrimaryImageTag) {
|
||||||
|
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||||
|
tag: user.PrimaryImageTag,
|
||||||
|
type: 'Primary'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const userImage = page.querySelector('#image');
|
||||||
|
userImage.style.backgroundImage = 'url(' + imageUrl + ')';
|
||||||
|
|
||||||
|
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
page.querySelector('#btnAddImage').classList.add('hide');
|
||||||
tag: user.PrimaryImageTag,
|
page.querySelector('#btnDeleteImage').classList.remove('hide');
|
||||||
type: 'Primary'
|
} else if (appHost.supports('fileinput') && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
||||||
});
|
page.querySelector('#btnDeleteImage').classList.add('hide');
|
||||||
|
page.querySelector('#btnAddImage').classList.remove('hide');
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
loading.hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var userImage = page.querySelector('#image');
|
function onFileReaderError(evt) {
|
||||||
userImage.style.backgroundImage = 'url(' + imageUrl + ')';
|
loading.hide();
|
||||||
|
switch (evt.target.error.code) {
|
||||||
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
case evt.target.error.NOT_FOUND_ERR:
|
||||||
if (user.PrimaryImageTag) {
|
import('toast').then(({default: toast}) => {
|
||||||
page.querySelector('#btnAddImage').classList.add('hide');
|
toast(globalize.translate('FileNotFound'));
|
||||||
page.querySelector('#btnDeleteImage').classList.remove('hide');
|
|
||||||
} else if (appHost.supports('fileinput') && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
|
||||||
page.querySelector('#btnDeleteImage').classList.add('hide');
|
|
||||||
page.querySelector('#btnAddImage').classList.remove('hide');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
break;
|
||||||
|
case evt.target.error.ABORT_ERR:
|
||||||
|
onFileReaderAbort();
|
||||||
|
break;
|
||||||
|
case evt.target.error.NOT_READABLE_ERR:
|
||||||
|
default:
|
||||||
|
import('toast').then(({default: toast}) => {
|
||||||
|
toast(globalize.translate('FileReadError'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onFileReaderAbort(evt) {
|
||||||
|
loading.hide();
|
||||||
|
import('toast').then(({default: toast}) => {
|
||||||
|
toast(globalize.translate('FileReadCancelled'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFiles(page, files) {
|
||||||
|
const userImage = page.querySelector('#image');
|
||||||
|
const file = files[0];
|
||||||
|
|
||||||
|
if (!file || !file.type.match('image.*')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onerror = onFileReaderError;
|
||||||
|
reader.onabort = onFileReaderAbort;
|
||||||
|
reader.onload = function (evt) {
|
||||||
|
userImage.style.backgroundImage = 'url(' + evt.target.result + ')';
|
||||||
|
const userId = getParameterByName('userId');
|
||||||
|
ApiClient.uploadUserImage(userId, 'Primary', file).then(function () {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
});
|
reloadUser(page);
|
||||||
}
|
|
||||||
|
|
||||||
function onFileReaderError(evt) {
|
|
||||||
loading.hide();
|
|
||||||
switch (evt.target.error.code) {
|
|
||||||
case evt.target.error.NOT_FOUND_ERR:
|
|
||||||
require(['toast'], function (toast) {
|
|
||||||
toast(globalize.translate('FileNotFound'));
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case evt.target.error.ABORT_ERR:
|
|
||||||
onFileReaderAbort();
|
|
||||||
break;
|
|
||||||
case evt.target.error.NOT_READABLE_ERR:
|
|
||||||
default:
|
|
||||||
require(['toast'], function (toast) {
|
|
||||||
toast(globalize.translate('FileReadError'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onFileReaderAbort(evt) {
|
|
||||||
loading.hide();
|
|
||||||
require(['toast'], function (toast) {
|
|
||||||
toast(globalize.translate('FileReadCancelled'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function setFiles(page, files) {
|
|
||||||
var userImage = page.querySelector('#image');
|
|
||||||
var file = files[0];
|
|
||||||
|
|
||||||
if (!file || !file.type.match('image.*')) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var reader = new FileReader();
|
|
||||||
reader.onerror = onFileReaderError;
|
|
||||||
reader.onabort = onFileReaderAbort;
|
|
||||||
reader.onload = function (evt) {
|
|
||||||
userImage.style.backgroundImage = 'url(' + evt.target.result + ')';
|
|
||||||
var userId = getParameterByName('userId');
|
|
||||||
ApiClient.uploadUserImage(userId, 'Primary', file).then(function () {
|
|
||||||
loading.hide();
|
|
||||||
reloadUser(page);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
reader.readAsDataURL(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
return function (view, params) {
|
|
||||||
reloadUser(view);
|
|
||||||
new UserPasswordPage(view, params);
|
|
||||||
view.querySelector('#btnDeleteImage').addEventListener('click', function () {
|
|
||||||
require(['confirm'], function (confirm) {
|
|
||||||
confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () {
|
|
||||||
loading.show();
|
|
||||||
var userId = getParameterByName('userId');
|
|
||||||
ApiClient.deleteUserImage(userId, 'primary').then(function () {
|
|
||||||
loading.hide();
|
|
||||||
reloadUser(view);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
view.querySelector('#btnAddImage').addEventListener('click', function (evt) {
|
|
||||||
view.querySelector('#uploadImage').click();
|
|
||||||
});
|
|
||||||
view.querySelector('#uploadImage').addEventListener('change', function (evt) {
|
|
||||||
setFiles(view, evt.target.files);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function (view, params) {
|
||||||
|
reloadUser(view);
|
||||||
|
new UserPasswordPage(view, params);
|
||||||
|
view.querySelector('#btnDeleteImage').addEventListener('click', function () {
|
||||||
|
import('confirm').then(({default: confirm}) => {
|
||||||
|
confirm(globalize.translate('DeleteImageConfirmation'), globalize.translate('DeleteImage')).then(function () {
|
||||||
|
loading.show();
|
||||||
|
const userId = getParameterByName('userId');
|
||||||
|
ApiClient.deleteUserImage(userId, 'primary').then(function () {
|
||||||
|
loading.hide();
|
||||||
|
reloadUser(view);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
view.querySelector('#btnAddImage').addEventListener('click', function (evt) {
|
||||||
|
view.querySelector('#uploadImage').click();
|
||||||
|
});
|
||||||
|
view.querySelector('#uploadImage').addEventListener('change', function (evt) {
|
||||||
|
setFiles(view, evt.target.files);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue