diff --git a/package.json b/package.json
index 627100aad7..be1265b691 100644
--- a/package.json
+++ b/package.json
@@ -118,6 +118,7 @@
"src/components/itemidentifier/itemidentifier.js",
"src/components/itemMediaInfo/itemMediaInfo.js",
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
+ "src/components/mediainfo/mediainfo.js",
"src/components/multiSelect/multiSelect.js",
"src/components/maintabsmanager.js",
"src/components/mediaLibraryCreator/mediaLibraryCreator.js",
@@ -163,6 +164,8 @@
"src/controllers/dashboard/dashboard.js",
"src/controllers/dashboard/encodingsettings.js",
"src/controllers/dashboard/logs.js",
+ "src/controllers/user/menu.js",
+ "src/controllers/user/profile.js",
"src/controllers/user/subtitles.js",
"src/controllers/dashboard/general.js",
"src/controllers/dashboard/librarydisplay.js",
@@ -228,6 +231,11 @@
"src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js",
"src/plugins/photoPlayer/plugin.js",
+ "src/scripts/alphanumericshortcuts.js",
+ "src/scripts/autoBackdrops.js",
+ "src/scripts/settings/appSettings.js",
+ "src/scripts/settings/userSettings.js",
+ "src/scripts/settings/webSettings.js",
"src/scripts/datetime.js",
"src/scripts/deleteHelper.js",
"src/scripts/dfnshelper.js",
@@ -237,13 +245,19 @@
"src/scripts/imagehelper.js",
"src/scripts/inputManager.js",
"src/plugins/backdropScreensaver/plugin.js",
+ "src/plugins/youtubePlayer/plugin.js",
"src/components/filterdialog/filterdialog.js",
"src/components/fetchhelper.js",
+ "src/scripts/editorsidebar.js",
+ "src/scripts/globalize.js",
+ "src/scripts/playlists.js",
"src/scripts/keyboardNavigation.js",
- "src/scripts/settings/appSettings.js",
- "src/scripts/settings/userSettings.js",
+ "src/scripts/taskbutton.js",
+ "src/scripts/touchHelper.js",
"src/scripts/themeLoader.js",
- "src/scripts/settings/webSettings.js"
+ "src/plugins/backdropScreensaver/plugin.js",
+ "src/components/filterdialog/filterdialog.js",
+ "src/components/fetchhelper.js"
],
"plugins": [
"@babel/plugin-transform-modules-amd",
diff --git a/src/components/accessSchedule/accessSchedule.js b/src/components/accessSchedule/accessSchedule.js
index 10530ca22c..edfef3a06c 100644
--- a/src/components/accessSchedule/accessSchedule.js
+++ b/src/components/accessSchedule/accessSchedule.js
@@ -66,7 +66,7 @@ import 'formDialogStyle';
});
dlg.classList.add('formDialog');
let html = '';
- html += globalize.translateDocument(template);
+ html += globalize.translateHtml(template);
dlg.innerHTML = html;
populateHours(dlg);
loadSchedule(dlg, options.schedule);
diff --git a/src/components/appRouter.js b/src/components/appRouter.js
index 03fcb76564..ace35ac851 100644
--- a/src/components/appRouter.js
+++ b/src/components/appRouter.js
@@ -465,7 +465,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
function loadContent(ctx, route, html, request) {
- html = globalize.translateDocument(html, route.dictionary);
+ html = globalize.translateHtml(html, route.dictionary);
request.view = html;
viewManager.loadView(request);
diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js
index 041fa82e76..df17c19dec 100644
--- a/src/components/filterdialog/filterdialog.js
+++ b/src/components/filterdialog/filterdialog.js
@@ -412,7 +412,7 @@ import 'css!./style.css';
dlg.classList.add('background-theme-a');
dlg.classList.add('formDialog');
dlg.classList.add('filterDialog');
- dlg.innerHTML = globalize.translateDocument(template);
+ dlg.innerHTML = globalize.translateHtml(template);
setVisibility(dlg, this.options);
dialogHelper.open(dlg);
dlg.addEventListener('close', resolve);
diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js
index c189856e7b..936e2b0407 100644
--- a/src/components/filtermenu/filtermenu.js
+++ b/src/components/filtermenu/filtermenu.js
@@ -286,7 +286,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost',
html += template;
- dlg.innerHTML = globalize.translateDocument(html, 'core');
+ dlg.innerHTML = globalize.translateHtml(html, 'core');
var settingElements = dlg.querySelectorAll('.viewSetting');
for (var i = 0, length = settingElements.length; i < length; i++) {
diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js
index 7409a7e943..77a3637251 100644
--- a/src/components/guide/guide-settings.js
+++ b/src/components/guide/guide-settings.js
@@ -114,7 +114,7 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio
var html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js
index 223d3a2063..4ae2041223 100644
--- a/src/components/guide/guide.js
+++ b/src/components/guide/guide.js
@@ -1151,7 +1151,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
context.classList.add('tvguide');
- context.innerHTML = globalize.translateDocument(template, 'core');
+ context.innerHTML = globalize.translateHtml(template, 'core');
programGrid = context.querySelector('.programGrid');
var timeslotHeaders = context.querySelector('.timeslotHeaders');
diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js
index 5e7d6b4c51..6d6c26fce4 100644
--- a/src/components/homeScreenSettings/homeScreenSettings.js
+++ b/src/components/homeScreenSettings/homeScreenSettings.js
@@ -464,7 +464,7 @@ import 'emby-checkbox';
template = template.replace(`{section${i}label}`, globalize.translate('LabelHomeScreenSectionValue', i));
}
- options.element.innerHTML = globalize.translateDocument(template, 'core');
+ options.element.innerHTML = globalize.translateHtml(template, 'core');
options.element.querySelector('.viewOrderList').addEventListener('click', onSectionOrderListClick);
options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js
index a3965279cf..fbe98c532f 100644
--- a/src/components/imageDownloader/imageDownloader.js
+++ b/src/components/imageDownloader/imageDownloader.js
@@ -339,7 +339,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
var dlg = dialogHelper.createDialog(dialogOptions);
- dlg.innerHTML = globalize.translateDocument(template, 'core');
+ dlg.innerHTML = globalize.translateHtml(template, 'core');
if (layoutManager.tv) {
scrollHelper.centerFocus.on(dlg, false);
diff --git a/src/components/imageOptionsEditor/imageOptionsEditor.js b/src/components/imageOptionsEditor/imageOptionsEditor.js
index 257921dfa2..22dcf57dc2 100644
--- a/src/components/imageOptionsEditor/imageOptionsEditor.js
+++ b/src/components/imageOptionsEditor/imageOptionsEditor.js
@@ -92,7 +92,7 @@ define(['globalize', 'dom', 'dialogHelper', 'emby-checkbox', 'emby-select', 'emb
scrollY: false
});
dlg.classList.add('formDialog');
- dlg.innerHTML = globalize.translateDocument(template);
+ dlg.innerHTML = globalize.translateHtml(template);
dlg.addEventListener('close', function () {
saveValues(dlg, options);
});
diff --git a/src/components/imageUploader/imageUploader.js b/src/components/imageUploader/imageUploader.js
index 3783b8faff..3cf7aa000d 100644
--- a/src/components/imageUploader/imageUploader.js
+++ b/src/components/imageUploader/imageUploader.js
@@ -161,7 +161,7 @@ import 'css!./style';
dlg.classList.add('formDialog');
- dlg.innerHTML = globalize.translateDocument(template, 'core');
+ dlg.innerHTML = globalize.translateHtml(template, 'core');
if (layoutManager.tv) {
scrollHelper.centerFocus.on(dlg, false);
diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js
index 93495eec0d..0a873fa4c7 100644
--- a/src/components/imageeditor/imageeditor.js
+++ b/src/components/imageeditor/imageeditor.js
@@ -464,7 +464,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
dlg.classList.add('formDialog');
- dlg.innerHTML = globalize.translateDocument(template, 'core');
+ dlg.innerHTML = globalize.translateHtml(template, 'core');
if (layoutManager.tv) {
scrollHelper.centerFocus.on(dlg, false);
diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js
index 9c2c8c9664..c3fd9e0d0a 100644
--- a/src/components/itemMediaInfo/itemMediaInfo.js
+++ b/src/components/itemMediaInfo/itemMediaInfo.js
@@ -150,7 +150,7 @@ import 'flexStyles';
const dlg = dialogHelper.createDialog(dialogOptions);
dlg.classList.add('formDialog');
let html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
if (layoutManager.tv) {
dlg.querySelector('.formDialogContent');
diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js
index 6f638dc271..11e164dede 100644
--- a/src/components/itemidentifier/itemidentifier.js
+++ b/src/components/itemidentifier/itemidentifier.js
@@ -382,7 +382,7 @@ import 'cardStyle';
dlg.classList.add('recordingDialog');
let html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
@@ -464,7 +464,7 @@ import 'cardStyle';
dlg.classList.add('recordingDialog');
let html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js
index 832a6ffc5e..6aea530d15 100644
--- a/src/components/libraryoptionseditor/libraryoptionseditor.js
+++ b/src/components/libraryoptionseditor/libraryoptionseditor.js
@@ -359,7 +359,7 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
xhr.open('GET', 'components/libraryoptionseditor/libraryoptionseditor.template.html', true);
xhr.onload = function(e) {
var template = this.response;
- parent.innerHTML = globalize.translateDocument(template);
+ parent.innerHTML = globalize.translateHtml(template);
populateRefreshInterval(parent.querySelector('#selectAutoRefreshInterval'));
var promises = [populateLanguages(parent), populateCountries(parent.querySelector('#selectCountry'))];
Promise.all(promises).then(function() {
diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js
index c1b7453ca9..4e0d7b026c 100644
--- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js
+++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js
@@ -211,7 +211,7 @@ export class showEditor {
dlg.classList.add('background-theme-a');
dlg.classList.add('dlg-librarycreator');
dlg.classList.add('formDialog');
- dlg.innerHTML = globalize.translateDocument(template);
+ dlg.innerHTML = globalize.translateHtml(template);
initEditor(dlg, options.collectionTypeOptions);
dlg.addEventListener('close', onDialogClosed);
dialogHelper.open(dlg);
diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js
index 4577b67131..1cee6984d9 100644
--- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js
+++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js
@@ -226,7 +226,7 @@ export class showEditor {
dlg.classList.add('ui-body-a');
dlg.classList.add('background-theme-a');
dlg.classList.add('formDialog');
- dlg.innerHTML = globalize.translateDocument(template);
+ dlg.innerHTML = globalize.translateHtml(template);
dlg.querySelector('.formDialogHeaderTitle').innerHTML = options.library.Name;
initEditor(dlg, options);
dlg.addEventListener('close', onDialogClosed);
diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js
index 7de11c42f7..71acc5bbce 100644
--- a/src/components/mediainfo/mediainfo.js
+++ b/src/components/mediainfo/mediainfo.js
@@ -1,9 +1,18 @@
-define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'material-icons', 'css!./mediainfo.css', 'programStyles', 'emby-button'], function (datetime, globalize, appRouter, itemHelper, indicators) {
- 'use strict';
+import datetime from 'datetime';
+import globalize from 'globalize';
+import appRouter from 'appRouter';
+import itemHelper from 'itemHelper';
+import indicators from 'indicators';
+import 'material-icons';
+import 'css!./mediainfo.css';
+import 'programStyles';
+import 'emby-button';
+
+/* eslint-disable indent */
function getTimerIndicator(item) {
- var status;
+ let status;
if (item.Type === 'SeriesTimer') {
return '';
@@ -30,11 +39,11 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
}
function getProgramInfoHtml(item, options) {
- var html = '';
+ let html = '';
- var miscInfo = [];
- var text;
- var date;
+ const miscInfo = [];
+ let text;
+ let date;
if (item.StartDate && options.programTime !== false) {
@@ -48,35 +57,35 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text += datetime.toLocaleDateString(date, { weekday: 'short', month: 'short', day: 'numeric' });
}
- text += ' ' + datetime.getDisplayTime(date);
+ text += ` ${datetime.getDisplayTime(date)}`;
if (item.EndDate) {
date = datetime.parseISO8601Date(item.EndDate);
- text += ' - ' + datetime.getDisplayTime(date);
+ text += ` - ${datetime.getDisplayTime(date)}`;
}
miscInfo.push(text);
} catch (e) {
- console.error('error parsing date: ' + item.StartDate);
+ console.error('error parsing date:', item.StartDate);
}
}
if (item.ChannelNumber) {
- miscInfo.push('CH ' + item.ChannelNumber);
+ miscInfo.push(`CH ${item.ChannelNumber}`);
}
if (item.ChannelName) {
if (options.interactive && item.ChannelId) {
miscInfo.push({
- html: '' + item.ChannelName + ''
+ })}">${item.ChannelName}`
});
} else {
miscInfo.push(item.ChannelName);
@@ -84,7 +93,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
}
if (options.timerIndicator !== false) {
- var timerHtml = getTimerIndicator(item);
+ const timerHtml = getTimerIndicator(item);
if (timerHtml) {
miscInfo.push({
html: timerHtml
@@ -92,24 +101,24 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
}
}
- html += miscInfo.map(function (m) {
+ html += miscInfo.map(m => {
return getMediaInfoItem(m);
}).join('');
return html;
}
- function getMediaInfoHtml(item, options) {
- var html = '';
+ export function getMediaInfoHtml(item, options) {
+ let html = '';
- var miscInfo = [];
+ const miscInfo = [];
options = options || {};
- var text;
- var date;
- var minutes;
- var count;
+ let text;
+ let date;
+ let minutes;
+ let count;
- var showFolderRuntime = item.Type === 'MusicAlbum' || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre';
+ const showFolderRuntime = item.Type === 'MusicAlbum' || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre';
if (showFolderRuntime) {
@@ -143,7 +152,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text = datetime.toLocaleDateString(date);
miscInfo.push(text);
} catch (e) {
- console.error('error parsing date: ' + item.PremiereDate);
+ console.error('error parsing date:', item.PremiereDate);
}
}
}
@@ -176,7 +185,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
miscInfo.push(text);
}
} catch (e) {
- console.error('error parsing date: ' + item.StartDate);
+ console.error('error parsing date:', item.StartDate);
}
}
@@ -193,14 +202,14 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
try {
- var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear();
+ const endYear = datetime.parseISO8601Date(item.EndDate).getFullYear();
if (endYear !== item.ProductionYear) {
- text += '-' + datetime.parseISO8601Date(item.EndDate).getFullYear();
+ text += `-${datetime.parseISO8601Date(item.EndDate).getFullYear()}`;
}
} catch (e) {
- console.error('error parsing date: ' + item.EndDate);
+ console.error('error parsing date:', item.EndDate);
}
}
@@ -213,19 +222,19 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (options.programIndicator !== false) {
if (item.IsLive) {
miscInfo.push({
- html: '
' + globalize.translate('Live') + '
'
+ html: `${globalize.translate('Live')}
`
});
} else if (item.IsPremiere) {
miscInfo.push({
- html: '' + globalize.translate('Premiere') + '
'
+ html: `${globalize.translate('Premiere')}
`
});
} else if (item.IsSeries && !item.IsRepeat) {
miscInfo.push({
- html: '' + globalize.translate('AttributeNew') + '
'
+ html: `${globalize.translate('AttributeNew')}
`
});
} else if (item.IsSeries && item.IsRepeat) {
miscInfo.push({
- html: '' + globalize.translate('Repeat') + '
'
+ html: `${globalize.translate('Repeat')}
`
});
}
}
@@ -248,7 +257,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date));
miscInfo.push(text);
} catch (e) {
- console.error('error parsing date: ' + item.PremiereDate);
+ console.error('error parsing date:', item.PremiereDate);
}
} else if (item.ProductionYear) {
miscInfo.push(item.ProductionYear);
@@ -267,7 +276,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text = datetime.parseISO8601Date(item.PremiereDate).getFullYear();
miscInfo.push(text);
} catch (e) {
- console.error('error parsing date: ' + item.PremiereDate);
+ console.error('error parsing date:', item.PremiereDate);
}
}
}
@@ -284,7 +293,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
minutes = minutes || 1;
- miscInfo.push(Math.round(minutes) + ' mins');
+ miscInfo.push(`${Math.round(minutes)} mins`);
}
}
@@ -300,14 +309,14 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
}
if (item.MediaType === 'Photo' && item.Width && item.Height) {
- miscInfo.push(item.Width + 'x' + item.Height);
+ miscInfo.push(`${item.Width}x${item.Height}`);
}
if (options.container !== false && item.Type === 'Audio' && item.Container) {
miscInfo.push(item.Container);
}
- html += miscInfo.map(function (m) {
+ html += miscInfo.map(m => {
return getMediaInfoItem(m);
}).join('');
@@ -320,15 +329,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.CriticRating && options.criticRating !== false) {
if (item.CriticRating >= 60) {
- html += '' + item.CriticRating + '
';
+ html += `${item.CriticRating}
`;
} else {
- html += '' + item.CriticRating + '
';
+ html += `${item.CriticRating}
`;
}
}
if (options.endsAt !== false) {
- var endsAt = getEndsAt(item);
+ const endsAt = getEndsAt(item);
if (endsAt) {
html += getMediaInfoItem(endsAt, 'endsAt');
}
@@ -339,15 +348,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return html;
}
- function getEndsAt(item) {
+ export function getEndsAt(item) {
if (item.MediaType === 'Video' && item.RunTimeTicks) {
if (!item.StartDate) {
- var endDate = new Date().getTime() + (item.RunTimeTicks / 10000);
+ let endDate = new Date().getTime() + (item.RunTimeTicks / 10000);
endDate = new Date(endDate);
- var displayTime = datetime.getDisplayTime(endDate);
+ const displayTime = datetime.getDisplayTime(endDate);
return globalize.translate('EndsAtValue', displayTime);
}
}
@@ -355,12 +364,12 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return null;
}
- function getEndsAtFromPosition(runtimeTicks, positionTicks, includeText) {
+ export function getEndsAtFromPosition(runtimeTicks, positionTicks, includeText) {
- var endDate = new Date().getTime() + ((runtimeTicks - (positionTicks || 0)) / 10000);
+ let endDate = new Date().getTime() + ((runtimeTicks - (positionTicks || 0)) / 10000);
endDate = new Date(endDate);
- var displayTime = datetime.getDisplayTime(endDate);
+ const displayTime = datetime.getDisplayTime(endDate);
if (includeText === false) {
return displayTime;
@@ -370,8 +379,8 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
function getMediaInfoItem(m, cssClass) {
- cssClass = cssClass ? (cssClass + ' mediaInfoItem') : 'mediaInfoItem';
- var mediaInfoText = m;
+ cssClass = cssClass ? (`${cssClass} mediaInfoItem`) : 'mediaInfoItem';
+ let mediaInfoText = m;
if (typeof (m) !== 'string' && typeof (m) !== 'number') {
@@ -379,13 +388,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return m.html;
}
mediaInfoText = m.text;
- cssClass += ' ' + m.cssClass;
+ cssClass += ` ${m.cssClass}`;
}
- return '' + mediaInfoText + '
';
+ return `${mediaInfoText}
`;
}
function getStarIconsHtml(item) {
- var html = '';
+ let html = '';
if (item.CommunityRating) {
html += '';
@@ -400,7 +409,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
function dynamicEndTime(elem, item) {
- var interval = setInterval(function () {
+ const interval = setInterval(() => {
if (!document.body.contains(elem)) {
@@ -413,15 +422,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
}, 60000);
}
- function fillPrimaryMediaInfo(elem, item, options) {
- var html = getPrimaryMediaInfoHtml(item, options);
+ export function fillPrimaryMediaInfo(elem, item, options) {
+ const html = getPrimaryMediaInfoHtml(item, options);
elem.innerHTML = html;
afterFill(elem, item, options);
}
- function fillSecondaryMediaInfo(elem, item, options) {
- var html = getSecondaryMediaInfoHtml(item, options);
+ export function fillSecondaryMediaInfo(elem, item, options) {
+ const html = getSecondaryMediaInfoHtml(item, options);
elem.innerHTML = html;
afterFill(elem, item, options);
@@ -430,13 +439,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
function afterFill(elem, item, options) {
if (options.endsAt !== false) {
- var endsAtElem = elem.querySelector('.endsAt');
+ const endsAtElem = elem.querySelector('.endsAt');
if (endsAtElem) {
dynamicEndTime(endsAtElem, item);
}
}
- var lnkChannel = elem.querySelector('.lnkChannel');
+ const lnkChannel = elem.querySelector('.lnkChannel');
if (lnkChannel) {
lnkChannel.addEventListener('click', onChannelLinkClick);
}
@@ -444,8 +453,8 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
function onChannelLinkClick(e) {
- var channelId = this.getAttribute('data-id');
- var serverId = this.getAttribute('data-serverid');
+ const channelId = this.getAttribute('data-id');
+ const serverId = this.getAttribute('data-serverid');
appRouter.showItem(channelId, serverId);
@@ -453,7 +462,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return false;
}
- function getPrimaryMediaInfoHtml(item, options) {
+ export function getPrimaryMediaInfoHtml(item, options) {
options = options || {};
if (options.interactive == null) {
@@ -463,7 +472,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return getMediaInfoHtml(item, options);
}
- function getSecondaryMediaInfoHtml(item, options) {
+ export function getSecondaryMediaInfoHtml(item, options) {
options = options || {};
if (options.interactive == null) {
@@ -476,10 +485,10 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return '';
}
- function getResolutionText(i) {
+ export function getResolutionText(i) {
- var width = i.Width;
- var height = i.Height;
+ const width = i.Width;
+ const height = i.Height;
if (width && height) {
@@ -522,28 +531,28 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
return null;
}
- var mediaSource = item.MediaSources[0];
+ const mediaSource = item.MediaSources[0];
if (!mediaSource) {
return null;
}
- return (mediaSource.MediaStreams || []).filter(function (i) {
+ return (mediaSource.MediaStreams || []).filter(i => {
return i.Type === 'Audio' && (i.Index === mediaSource.DefaultAudioStreamIndex || mediaSource.DefaultAudioStreamIndex == null);
})[0];
}
- function getMediaInfoStats(item, options) {
+ export function getMediaInfoStats(item, options) {
options = options || {};
- var list = [];
+ const list = [];
- var mediaSource = (item.MediaSources || [])[0] || {};
+ const mediaSource = (item.MediaSources || [])[0] || {};
- var videoStream = (mediaSource.MediaStreams || []).filter(function (i) {
+ const videoStream = (mediaSource.MediaStreams || []).filter(i => {
return i.Type === 'Video';
})[0] || {};
- var audioStream = getAudioStreamForDisplay(item) || {};
+ const audioStream = getAudioStreamForDisplay(item) || {};
if (item.VideoType === 'Dvd') {
list.push({
@@ -563,7 +572,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
// html += '
' + mediaSource.Container + '
';
//}
- var resolutionText = getResolutionText(videoStream);
+ const resolutionText = getResolutionText(videoStream);
if (resolutionText) {
list.push({
type: 'mediainfo',
@@ -578,8 +587,8 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
});
}
- var channels = audioStream.Channels;
- var channelText;
+ const channels = audioStream.Channels;
+ let channelText;
if (channels === 8) {
@@ -605,7 +614,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
});
}
- var audioCodec = (audioStream.Codec || '').toLowerCase();
+ const audioCodec = (audioStream.Codec || '').toLowerCase();
if ((audioCodec === 'dca' || audioCodec === 'dts') && audioStream.Profile) {
list.push({
@@ -621,27 +630,27 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) {
- var dateCreated = datetime.parseISO8601Date(item.DateCreated);
+ const dateCreated = datetime.parseISO8601Date(item.DateCreated);
list.push({
type: 'added',
- text: globalize.translate('AddedOnValue', datetime.toLocaleDateString(dateCreated) + ' ' + datetime.getDisplayTime(dateCreated))
+ text: globalize.translate('AddedOnValue', `${datetime.toLocaleDateString(dateCreated)} ${datetime.getDisplayTime(dateCreated)}`)
});
}
return list;
}
- return {
- getMediaInfoHtml: getPrimaryMediaInfoHtml,
- fill: fillPrimaryMediaInfo,
- getEndsAt: getEndsAt,
- getEndsAtFromPosition: getEndsAtFromPosition,
- getPrimaryMediaInfoHtml: getPrimaryMediaInfoHtml,
- getSecondaryMediaInfoHtml: getSecondaryMediaInfoHtml,
- fillPrimaryMediaInfo: fillPrimaryMediaInfo,
- fillSecondaryMediaInfo: fillSecondaryMediaInfo,
- getMediaInfoStats: getMediaInfoStats,
- getResolutionText: getResolutionText
- };
-});
+/* eslint-enable indent */
+
+export default {
+ getMediaInfoHtml: getPrimaryMediaInfoHtml,
+ getEndsAt: getEndsAt,
+ getEndsAtFromPosition: getEndsAtFromPosition,
+ getPrimaryMediaInfoHtml: getPrimaryMediaInfoHtml,
+ getSecondaryMediaInfoHtml: getSecondaryMediaInfoHtml,
+ fillPrimaryMediaInfo: fillPrimaryMediaInfo,
+ fillSecondaryMediaInfo: fillSecondaryMediaInfo,
+ getMediaInfoStats: getMediaInfoStats,
+ getResolutionText: getResolutionText
+};
diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js
index c65d4a66fe..28bc8a6dae 100644
--- a/src/components/metadataEditor/metadataEditor.js
+++ b/src/components/metadataEditor/metadataEditor.js
@@ -1064,7 +1064,7 @@ import 'flexStyles';
let html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
@@ -1104,7 +1104,7 @@ import 'flexStyles';
require(['text!./metadataEditor.template.html'], function (template) {
- elem.innerHTML = globalize.translateDocument(template, 'core');
+ elem.innerHTML = globalize.translateHtml(template, 'core');
elem.querySelector('.formDialogFooter').classList.remove('formDialogFooter');
elem.querySelector('.btnHeaderSave').classList.remove('hide');
diff --git a/src/components/metadataEditor/personEditor.js b/src/components/metadataEditor/personEditor.js
index 8ab7d94702..028cea9d80 100644
--- a/src/components/metadataEditor/personEditor.js
+++ b/src/components/metadataEditor/personEditor.js
@@ -39,7 +39,7 @@ import 'css!./../formdialog';
let html = '';
let submitted = false;
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js
index 846efe1fd4..9c7e20f9e1 100644
--- a/src/components/playbackSettings/playbackSettings.js
+++ b/src/components/playbackSettings/playbackSettings.js
@@ -302,7 +302,7 @@ import 'emby-checkbox';
return import('text!./playbackSettings.template.html').then(({default: template}) => {
- options.element.innerHTML = globalize.translateDocument(template, 'core');
+ options.element.innerHTML = globalize.translateHtml(template, 'core');
options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js
index ae26d0debc..d18d5fcb6c 100644
--- a/src/components/recordingcreator/recordingcreator.js
+++ b/src/components/recordingcreator/recordingcreator.js
@@ -156,7 +156,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
var html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js
index 86c731ad26..c3f40fcddb 100644
--- a/src/components/recordingcreator/recordingeditor.js
+++ b/src/components/recordingcreator/recordingeditor.js
@@ -116,7 +116,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
var html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js
index b4cbdfab0a..84348fcfbc 100644
--- a/src/components/recordingcreator/recordingfields.js
+++ b/src/components/recordingcreator/recordingfields.js
@@ -219,7 +219,7 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loa
require(['text!./recordingfields.template.html'], function (template) {
var options = self.options;
var context = options.parent;
- context.innerHTML = globalize.translateDocument(template, 'core');
+ context.innerHTML = globalize.translateHtml(template, 'core');
context.querySelector('.singleRecordingButton').addEventListener('click', onRecordChange.bind(self));
context.querySelector('.seriesRecordingButton').addEventListener('click', onRecordSeriesChange.bind(self));
diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js
index 62accd5b63..a101ce53ec 100644
--- a/src/components/recordingcreator/seriesrecordingeditor.js
+++ b/src/components/recordingcreator/seriesrecordingeditor.js
@@ -168,7 +168,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
var dlg = options.context;
dlg.classList.add('hide');
- dlg.innerHTML = globalize.translateDocument(template, 'core');
+ dlg.innerHTML = globalize.translateHtml(template, 'core');
dlg.querySelector('.formDialogHeader').classList.add('hide');
dlg.querySelector('.formDialogFooter').classList.add('hide');
@@ -221,7 +221,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
var html = '';
- html += globalize.translateDocument(template, 'core');
+ html += globalize.translateHtml(template, 'core');
dlg.innerHTML = html;
diff --git a/src/components/search/searchfields.js b/src/components/search/searchfields.js
index 1e77586768..b0c59dcf4a 100644
--- a/src/components/search/searchfields.js
+++ b/src/components/search/searchfields.js
@@ -72,7 +72,7 @@ import 'css!./searchfields';
import('text!./searchfields.template.html').then(({default: template}) => {
- let html = globalize.translateDocument(template, 'core');
+ let html = globalize.translateHtml(template, 'core');
if (browser.tizen || browser.orsay) {
html = html.replace('
{
options.element.classList.add('subtitlesettings');
- options.element.innerHTML = globalize.translateDocument(template, 'core');
+ options.element.innerHTML = globalize.translateHtml(template, 'core');
options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self));
diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js
index 4aac2f747d..d40faef5dc 100644
--- a/src/components/tabbedview/itemstab.js
+++ b/src/components/tabbedview/itemstab.js
@@ -331,7 +331,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
}
if (this.enableAlphaNumericShortcuts !== false) {
- this.alphaNumericShortcuts = new AlphaNumericShortcuts({
+ this.alphaNumericShortcuts = new AlphaNumericShortcuts.default({
itemsContainer: this.itemsContainer
});
}
@@ -561,7 +561,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
var alphaNumericShortcuts = this.alphaNumericShortcuts;
if (alphaNumericShortcuts) {
- alphaNumericShortcuts.destroy();
+ alphaNumericShortcuts.default.destroy();
this.alphaNumericShortcuts = null;
}
};
diff --git a/src/components/viewSettings/viewSettings.js b/src/components/viewSettings/viewSettings.js
index 087ba3e373..28a9854c34 100644
--- a/src/components/viewSettings/viewSettings.js
+++ b/src/components/viewSettings/viewSettings.js
@@ -84,7 +84,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne
html += template;
- dlg.innerHTML = globalize.translateDocument(html, 'core');
+ dlg.innerHTML = globalize.translateHtml(html, 'core');
var settingElements = dlg.querySelectorAll('.viewSetting');
for (var i = 0, length = settingElements.length; i < length; i++) {
diff --git a/src/controllers/dashboard/mediaLibrary.js b/src/controllers/dashboard/mediaLibrary.js
index 22d9c4259b..0b01a9488f 100644
--- a/src/controllers/dashboard/mediaLibrary.js
+++ b/src/controllers/dashboard/mediaLibrary.js
@@ -380,6 +380,7 @@ import 'emby-itemrefreshindicator';
});
pageIdOn('pageshow', 'mediaLibraryPage', function () {
libraryMenu.setTabs('librarysetup', 0, getTabs);
+
const page = this;
taskButton({
mode: 'on',
@@ -389,6 +390,7 @@ import 'emby-itemrefreshindicator';
});
});
pageIdOn('pagebeforehide', 'mediaLibraryPage', function () {
+
const page = this;
taskButton({
mode: 'off',
diff --git a/src/controllers/list.js b/src/controllers/list.js
index 73ca93c71c..a988695784 100644
--- a/src/controllers/list.js
+++ b/src/controllers/list.js
@@ -803,7 +803,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle);
}
- this.alphaNumericShortcuts = new AlphaNumericShortcuts({
+ this.alphaNumericShortcuts = new AlphaNumericShortcuts.default({
itemsContainer: self.itemsContainer
});
});
@@ -817,7 +817,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
var alphaNumericShortcuts = self.alphaNumericShortcuts;
if (alphaNumericShortcuts) {
- alphaNumericShortcuts.destroy();
+ alphaNumericShortcuts.default.destroy();
self.alphaNumericShortcuts = null;
}
});
diff --git a/src/controllers/livetvguideprovider.js b/src/controllers/livetvguideprovider.js
index e83036992b..8f8b9f91c7 100644
--- a/src/controllers/livetvguideprovider.js
+++ b/src/controllers/livetvguideprovider.js
@@ -17,7 +17,7 @@ define(['events', 'loading', 'globalize'], function (events, loading, globalize)
function loadTemplate(page, type, providerId) {
require(['text!./components/tvproviders/' + type + '.template.html'], function (html) {
- page.querySelector('.providerTemplate').innerHTML = globalize.translateDocument(html);
+ page.querySelector('.providerTemplate').innerHTML = globalize.translateHtml(html);
init(page, type, providerId);
});
}
diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js
index bca8a60280..84ea006fd9 100644
--- a/src/controllers/livetvstatus.js
+++ b/src/controllers/livetvstatus.js
@@ -303,7 +303,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
}).on('pageshow', '#liveTvStatusPage', function () {
var page = this;
reload(page);
- taskButton({
+ taskButton.default({
mode: 'on',
progressElem: page.querySelector('.refreshGuideProgress'),
taskKey: 'RefreshGuide',
@@ -311,7 +311,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
});
}).on('pagehide', '#liveTvStatusPage', function () {
var page = this;
- taskButton({
+ taskButton.default({
mode: 'off',
progressElem: page.querySelector('.refreshGuideProgress'),
taskKey: 'RefreshGuide',
diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js
index 88f6ec6d9c..94fbcf5df3 100644
--- a/src/controllers/playback/videoosd.js
+++ b/src/controllers/playback/videoosd.js
@@ -1533,7 +1533,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
if (browser.touch) {
(function () {
require(['touchHelper'], function (TouchHelper) {
- self.touchHelper = new TouchHelper(view, {
+ self.touchHelper = new TouchHelper.default(view, {
swipeYThreshold: 30,
triggerOnMove: true,
preventDefaultOnMove: true,
diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js
index 586cd6744c..ef4b3b21c8 100644
--- a/src/controllers/user/menu.js
+++ b/src/controllers/user/menu.js
@@ -1,58 +1,60 @@
-define(['apphost', 'connectionManager', 'layoutManager', 'listViewStyle', 'emby-button'], function(appHost, connectionManager, layoutManager) {
- 'use strict';
+import appHost from 'apphost';
+import connectionManager from 'connectionManager';
+import layoutManager from 'layoutManager';
+import 'listViewStyle';
+import 'emby-button';
- return function(view, params) {
- view.querySelector('.btnLogout').addEventListener('click', function() {
- Dashboard.logout();
- });
+export default function (view, params) {
+ view.querySelector('.btnLogout').addEventListener('click', function () {
+ Dashboard.logout();
+ });
- view.querySelector('.selectServer').addEventListener('click', function () {
- Dashboard.selectServer();
- });
+ view.querySelector('.selectServer').addEventListener('click', function () {
+ Dashboard.selectServer();
+ });
- view.querySelector('.clientSettings').addEventListener('click', function () {
- window.NativeShell.openClientSettings();
- });
+ view.querySelector('.clientSettings').addEventListener('click', function () {
+ window.NativeShell.openClientSettings();
+ });
- view.addEventListener('viewshow', function() {
- // this page can also be used by admins to change user preferences from the user edit page
- var userId = params.userId || Dashboard.getCurrentUserId();
- var page = this;
+ view.addEventListener('viewshow', function () {
+ // this page can also be used by admins to change user preferences from the user edit page
+ const userId = params.userId || Dashboard.getCurrentUserId();
+ const page = this;
- page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId);
- page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId);
- page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
- page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId);
- page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId);
+ page.querySelector('.lnkMyProfile').setAttribute('href', 'myprofile.html?userId=' + userId);
+ page.querySelector('.lnkDisplayPreferences').setAttribute('href', 'mypreferencesdisplay.html?userId=' + userId);
+ page.querySelector('.lnkHomePreferences').setAttribute('href', 'mypreferenceshome.html?userId=' + userId);
+ page.querySelector('.lnkPlaybackPreferences').setAttribute('href', 'mypreferencesplayback.html?userId=' + userId);
+ page.querySelector('.lnkSubtitlePreferences').setAttribute('href', 'mypreferencessubtitles.html?userId=' + userId);
- if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) {
- page.querySelector('.clientSettings').classList.remove('hide');
- } else {
- page.querySelector('.clientSettings').classList.add('hide');
- }
+ if (window.NativeShell && window.NativeShell.AppHost.supports('clientsettings')) {
+ page.querySelector('.clientSettings').classList.remove('hide');
+ } else {
+ page.querySelector('.clientSettings').classList.add('hide');
+ }
- if (appHost.supports('multiserver')) {
- page.querySelector('.selectServer').classList.remove('hide');
- } else {
- page.querySelector('.selectServer').classList.add('hide');
- }
+ if (appHost.supports('multiserver')) {
+ page.querySelector('.selectServer').classList.remove('hide');
+ } else {
+ page.querySelector('.selectServer').classList.add('hide');
+ }
- // hide the actions if user preferences are being edited for a different user
- if (params.userId && params.userId !== Dashboard.getCurrentUserId) {
- page.querySelector('.userSection').classList.add('hide');
+ // hide the actions if user preferences are being edited for a different user
+ if (params.userId && params.userId !== Dashboard.getCurrentUserId) {
+ 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');
}
-
- 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);
+ });
+ });
+}
diff --git a/src/controllers/user/profile.js b/src/controllers/user/profile.js
index 9f56de8440..631253d019 100644
--- a/src/controllers/user/profile.js
+++ b/src/controllers/user/profile.js
@@ -1,106 +1,109 @@
-define(['controllers/dashboard/users/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) {
- 'use strict';
+import UserPasswordPage from 'controllers/dashboard/users/userpasswordpage';
+import loading from 'loading';
+import libraryMenu from 'libraryMenu';
+import appHost from 'apphost';
+import globalize from 'globalize';
+import 'emby-button';
- function reloadUser(page) {
- var userId = getParameterByName('userId');
- loading.show();
- ApiClient.getUser(userId).then(function (user) {
- page.querySelector('.username').innerHTML = user.Name;
- libraryMenu.setTitle(user.Name);
+function reloadUser(page) {
+ const userId = getParameterByName('userId');
+ loading.show();
+ ApiClient.getUser(userId).then(function (user) {
+ page.querySelector('.username').innerHTML = 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) {
- imageUrl = ApiClient.getUserImageUrl(user.Id, {
- tag: user.PrimaryImageTag,
- type: 'Primary'
- });
+ page.querySelector('#btnAddImage').classList.add('hide');
+ 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');
}
+ });
+ loading.hide();
+ });
+}
- var userImage = page.querySelector('#image');
- userImage.style.backgroundImage = 'url(' + imageUrl + ')';
-
- Dashboard.getCurrentUser().then(function (loggedInUser) {
- if (user.PrimaryImageTag) {
- page.querySelector('#btnAddImage').classList.add('hide');
- 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');
- }
+function onFileReaderError(evt) {
+ loading.hide();
+ switch (evt.target.error.code) {
+ case evt.target.error.NOT_FOUND_ERR:
+ import('toast').then(({default: toast}) => {
+ toast(globalize.translate('FileNotFound'));
});
+ 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();
- });
- }
-
- 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.default(view, params);
- view.querySelector('#btnDeleteImage').addEventListener('click', function () {
- require(['confirm'], function (confirm) {
- confirm.default(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);
+ reloadUser(page);
});
};
-});
+
+ 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);
+ });
+}
diff --git a/src/plugins/youtubePlayer/plugin.js b/src/plugins/youtubePlayer/plugin.js
index 5b5e1b1a3c..fc7c33f87f 100644
--- a/src/plugins/youtubePlayer/plugin.js
+++ b/src/plugins/youtubePlayer/plugin.js
@@ -1,199 +1,204 @@
-define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) {
- 'use strict';
- /* globals YT */
+import require from 'require';
+import events from 'events';
+import browser from 'browser';
+import appRouter from 'appRouter';
+import loading from 'loading';
- function zoomIn(elem, iterations) {
- var keyframes = [
- { transform: 'scale3d(.2, .2, .2) ', opacity: '.6', offset: 0 },
- { transform: 'none', opacity: '1', offset: 1 }
- ];
+/* globals YT */
- var timing = { duration: 240, iterations: iterations };
- return elem.animate(keyframes, timing);
- }
+function zoomIn(elem, iterations) {
+ const keyframes = [
+ { transform: 'scale3d(.2, .2, .2) ', opacity: '.6', offset: 0 },
+ { transform: 'none', opacity: '1', offset: 1 }
+ ];
- function createMediaElement(instance, options) {
+ const timing = { duration: 240, iterations: iterations };
+ return elem.animate(keyframes, timing);
+}
- return new Promise(function (resolve, reject) {
+function createMediaElement(instance, options) {
- var dlg = document.querySelector('.youtubePlayerContainer');
+ return new Promise(function (resolve, reject) {
- if (!dlg) {
+ const dlg = document.querySelector('.youtubePlayerContainer');
- require(['css!./style'], function () {
+ if (!dlg) {
- loading.show();
+ import('css!./style').then(() => {
- var dlg = document.createElement('div');
+ loading.show();
- dlg.classList.add('youtubePlayerContainer');
+ const dlg = document.createElement('div');
- if (options.fullscreen) {
- dlg.classList.add('onTop');
- }
+ dlg.classList.add('youtubePlayerContainer');
- dlg.innerHTML = '
';
- var videoElement = dlg.querySelector('#player');
-
- document.body.insertBefore(dlg, document.body.firstChild);
- instance.videoDialog = dlg;
-
- if (options.fullscreen && dlg.animate && !browser.slow) {
- zoomIn(dlg, 1).onfinish = function () {
- resolve(videoElement);
- };
- } else {
- resolve(videoElement);
- }
-
- });
-
- } else {
- resolve(dlg.querySelector('#player'));
- }
- });
- }
-
- function onVideoResize() {
- var instance = this;
- var player = instance.currentYoutubePlayer;
- var dlg = instance.videoDialog;
- if (player && dlg) {
- player.setSize(dlg.offsetWidth, dlg.offsetHeight);
- }
- }
-
- function clearTimeUpdateInterval(instance) {
- if (instance.timeUpdateInterval) {
- clearInterval(instance.timeUpdateInterval);
- }
- instance.timeUpdateInterval = null;
- }
-
- function onEndedInternal(instance) {
-
- clearTimeUpdateInterval(instance);
- var resizeListener = instance.resizeListener;
- if (resizeListener) {
- window.removeEventListener('resize', resizeListener);
- window.removeEventListener('orientationChange', resizeListener);
- instance.resizeListener = null;
- }
-
- var stopInfo = {
- src: instance._currentSrc
- };
-
- events.trigger(instance, 'stopped', [stopInfo]);
-
- instance._currentSrc = null;
- if (instance.currentYoutubePlayer) {
- instance.currentYoutubePlayer.destroy();
- }
- instance.currentYoutubePlayer = null;
- }
-
- // 4. The API will call this function when the video player is ready.
- function onPlayerReady(event) {
- event.target.playVideo();
- }
-
- function onTimeUpdate(e) {
-
- events.trigger(this, 'timeupdate');
- }
-
- function onPlaying(instance, playOptions, resolve) {
-
- if (!instance.started) {
-
- instance.started = true;
- resolve();
- clearTimeUpdateInterval(instance);
- instance.timeUpdateInterval = setInterval(onTimeUpdate.bind(instance), 500);
-
- if (playOptions.fullscreen) {
-
- appRouter.showVideoOsd().then(function () {
- instance.videoDialog.classList.remove('onTop');
- });
-
- } else {
- appRouter.setTransparency('backdrop');
- instance.videoDialog.classList.remove('onTop');
- }
-
- require(['loading'], function (loading) {
-
- loading.hide();
- });
- }
- }
-
- function setCurrentSrc(instance, elem, options) {
-
- return new Promise(function (resolve, reject) {
-
- require(['queryString'], function (queryString) {
-
- instance._currentSrc = options.url;
- var params = queryString.parse(options.url.split('?')[1]);
- // 3. This function creates an