diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json
index b18bf2bd01..53ae8b770c 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json
@@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
- "version": "1.3.65",
- "_release": "1.3.65",
+ "version": "1.3.70",
+ "_release": "1.3.70",
"_resolution": {
"type": "version",
- "tag": "1.3.65",
- "commit": "8a512f0acee81e973007eb43566b7d3aebb7a613"
+ "tag": "1.3.70",
+ "commit": "5430fc4c71fcc8e5929ee2e12120e2dc7e8c9011"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0",
diff --git a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js
index fa63a886f1..5a939d6712 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/collectioneditor/collectioneditor.js
@@ -89,7 +89,7 @@
dialogHelper.close(dlg);
require(['toast'], function (toast) {
- toast(globalize.translate('MessageItemsAdded'));
+ toast(globalize.translate('sharedcomponents#MessageItemsAdded'));
});
});
}
@@ -118,7 +118,7 @@
var html = '';
- html += '';
+ html += '';
html += result.Items.map(function (i) {
@@ -201,7 +201,7 @@
}
});
- content.querySelector('.btnSubmit').addEventListener('submit', function () {
+ content.querySelector('.btnSubmit').addEventListener('click', function () {
// Do a fake form submit this the button isn't a real submit button
var fakeSubmit = document.createElement('input');
fakeSubmit.setAttribute('type', 'submit');
@@ -216,7 +216,7 @@
}, 500);
});
- content.querySelector('.newCollectionForm').addEventListener('submit', onSubmit);
+ content.querySelector('form').addEventListener('submit', onSubmit);
content.querySelector('.fldSelectedItemIds', content).value = items.join(',');
diff --git a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
index 06270feae6..e03b51d86d 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/dialoghelper/dialoghelper.js
@@ -3,15 +3,12 @@
var globalOnOpenCallback;
function enableAnimation() {
+
if (browser.animate) {
return true;
}
- if (browser.mobile || browser.tv) {
- return false;
- }
-
- return true;
+ return false;
}
function dialogHashHandler(dlg, hash, resolve) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css
index 483579441a..867b08e8a2 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css
+++ b/dashboard-ui/bower_components/emby-webcomponents/emby-select/emby-select.css
@@ -16,7 +16,7 @@
font-family: inherit;
font-weight: inherit;
color: inherit;
- padding: .6em .8em .3em 0;
+ padding: .35em .8em .3em 0;
cursor: pointer;
outline: none !important;
width: 100%;
diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js
index 7913209747..911078e397 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js
@@ -1,4 +1,4 @@
-define(['apphost', 'globalize', 'connectionManager'], function (appHost, globalize, connectionManager) {
+define(['apphost', 'globalize', 'connectionManager', 'itemHelper'], function (appHost, globalize, connectionManager, itemHelper) {
function getCommands(options) {
@@ -11,10 +11,19 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali
var commands = [];
- commands.push({
- name: globalize.translate('sharedcomponents#AddToCollection'),
- id: 'addtocollection'
- });
+ if (itemHelper.supportsAddingToCollection(item)) {
+ commands.push({
+ name: globalize.translate('sharedcomponents#AddToCollection'),
+ id: 'addtocollection'
+ });
+ }
+
+ if (itemHelper.supportsAddingToPlaylist(item)) {
+ commands.push({
+ name: globalize.translate('sharedcomponents#AddToPlaylist'),
+ id: 'addtoplaylist'
+ });
+ }
if (item.CanDelete) {
commands.push({
@@ -71,6 +80,18 @@ define(['apphost', 'globalize', 'connectionManager'], function (appHost, globali
});
break;
}
+ case 'addtoplaylist':
+ {
+ require(['playlistEditor'], function (playlistEditor) {
+
+ new playlistEditor().show({
+ items: [itemId],
+ serverId: serverId
+
+ }).then(reject, reject);
+ });
+ break;
+ }
case 'download':
{
require(['fileDownloader'], function (fileDownloader) {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
index 6bb706adbd..b7f0a6448a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js
@@ -48,7 +48,25 @@ define([], function () {
return name;
}
+ function supportsAddingToCollection(item) {
+ var invalidTypes = ['Person', 'Genre', 'MusicGenre', 'Studio', 'GameGenre', 'BoxSet', 'Playlist', 'UserView', 'CollectionFolder', 'Audio', 'Episode', 'TvChannel', 'Program', 'MusicAlbum', 'Timer'];
+
+ return !item.CollectionType && invalidTypes.indexOf(item.Type) == -1 && item.MediaType != 'Photo';
+ }
+
+ function supportsAddingToPlaylist(item) {
+ if (item.Type == 'Program') {
+ return false;
+ }
+ if (item.Type == 'Timer') {
+ return false;
+ }
+ return item.RunTimeTicks || item.IsFolder || item.Type == "Genre" || item.Type == "MusicGenre" || item.Type == "MusicArtist";
+ }
+
return {
- getDisplayName: getDisplayName
+ getDisplayName: getDisplayName,
+ supportsAddingToCollection: supportsAddingToCollection,
+ supportsAddingToPlaylist: supportsAddingToPlaylist
};
});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/playlisteditor/playlisteditor.js b/dashboard-ui/bower_components/emby-webcomponents/playlisteditor/playlisteditor.js
new file mode 100644
index 0000000000..a423a07ce9
--- /dev/null
+++ b/dashboard-ui/bower_components/emby-webcomponents/playlisteditor/playlisteditor.js
@@ -0,0 +1,279 @@
+define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'paper-checkbox', 'paper-input', 'paper-icon-button-light', 'emby-select', 'html!./../icons/nav.html', 'css!./../formdialog'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) {
+
+ var lastPlaylistId = '';
+ var currentServerId;
+
+ function parentWithClass(elem, className) {
+
+ while (!elem.classList || !elem.classList.contains(className)) {
+ elem = elem.parentNode;
+
+ if (!elem) {
+ return null;
+ }
+ }
+
+ return elem;
+ }
+
+ function onSubmit(e) {
+
+ loading.show();
+
+ var panel = parentWithClass(this, 'dialog');
+
+ var playlistId = panel.querySelector('#selectPlaylistToAddTo').value;
+ var apiClient = connectionManager.getApiClient(currentServerId);
+
+ if (playlistId) {
+ lastPlaylistId = playlistId;
+ addToPlaylist(apiClient, panel, playlistId);
+ } else {
+ createPlaylist(apiClient, panel);
+ }
+
+ e.preventDefault();
+ return false;
+ }
+
+ function createPlaylist(apiClient, dlg) {
+
+ var url = apiClient.getUrl("Playlists", {
+
+ Name: dlg.querySelector('#txtNewPlaylistName').value,
+ Ids: dlg.querySelector('.fldSelectedItemIds').value || '',
+ userId: apiClient.getCurrentUserId()
+
+ });
+
+ apiClient.ajax({
+ type: "POST",
+ url: url,
+ dataType: "json"
+
+ }).then(function (result) {
+
+ loading.hide();
+
+ var id = result.Id;
+
+ dialogHelper.close(dlg);
+ redirectToPlaylist(apiClient, id);
+ });
+ }
+
+ function redirectToPlaylist(apiClient, id) {
+
+ apiClient.getItem(apiClient.getCurrentUserId(), id).then(function (item) {
+
+ embyRouter.showItem(item);
+ });
+ }
+
+ function addToPlaylist(apiClient, dlg, id) {
+
+ var url = apiClient.getUrl("Playlists/" + id + "/Items", {
+
+ Ids: dlg.querySelector('.fldSelectedItemIds').value || '',
+ userId: apiClient.getCurrentUserId()
+ });
+
+ apiClient.ajax({
+ type: "POST",
+ url: url
+
+ }).then(function () {
+
+ loading.hide();
+
+ dialogHelper.close(dlg);
+
+ require(['toast'], function (toast) {
+ toast(globalize.translate('sharedcomponents#MessageItemsAdded'));
+ });
+ });
+ }
+
+ function triggerChange(select) {
+ select.dispatchEvent(new CustomEvent('change', {}));
+ }
+
+ function populatePlaylists(panel) {
+
+ var select = panel.querySelector('#selectPlaylistToAddTo');
+
+ loading.hide();
+
+ panel.querySelector('.newPlaylistInfo').classList.add('hide');
+
+ var options = {
+
+ Recursive: true,
+ IncludeItemTypes: "Playlist",
+ SortBy: 'SortName'
+ };
+
+ var apiClient = connectionManager.getApiClient(currentServerId);
+ apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) {
+
+ var html = '';
+
+ html += '';
+
+ html += result.Items.map(function (i) {
+
+ return '';
+ });
+
+ select.innerHTML = html;
+ select.value = lastPlaylistId || '';
+ triggerChange(select);
+
+ loading.hide();
+ });
+ }
+
+ function getEditorHtml() {
+
+ var html = '';
+
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
+
+ return html;
+ }
+
+ function initEditor(content, items) {
+
+ content.querySelector('#selectPlaylistToAddTo').addEventListener('change', function () {
+ if (this.value) {
+ content.querySelector('.newPlaylistInfo').classList.add('hide');
+ content.querySelector('#txtNewPlaylistName').removeAttribute('required');
+ } else {
+ content.querySelector('.newPlaylistInfo').classList.remove('hide');
+ content.querySelector('#txtNewPlaylistName').setAttribute('required', 'required');
+ }
+ });
+
+ populatePlaylists(content);
+
+ content.querySelector('.btnSubmit').addEventListener('click', function () {
+ // Do a fake form submit this the button isn't a real submit button
+ var fakeSubmit = document.createElement('input');
+ fakeSubmit.setAttribute('type', 'submit');
+ fakeSubmit.style.display = 'none';
+ var form = content.querySelector('form');
+ form.appendChild(fakeSubmit);
+ fakeSubmit.click();
+
+ // Seeing issues in smart tv browsers where the form does not get submitted if the button is removed prior to the submission actually happening
+ setTimeout(function () {
+ form.removeChild(fakeSubmit);
+ }, 500);
+ });
+
+ content.querySelector('form').addEventListener('submit', onSubmit);
+
+ content.querySelector('.fldSelectedItemIds', content).value = items.join(',');
+
+ if (items.length) {
+ content.querySelector('.fldSelectPlaylist').classList.remove('hide');
+ populatePlaylists(content);
+ } else {
+ content.querySelector('.fldSelectPlaylist').classList.add('hide');
+
+ var selectPlaylistToAddTo = content.querySelector('#selectPlaylistToAddTo');
+ selectPlaylistToAddTo.innerHTML = '';
+ selectPlaylistToAddTo.value = '';
+ triggerChange(selectPlaylistToAddTo);
+ }
+ }
+
+ function playlisteditor() {
+
+ var self = this;
+
+ self.show = function (options) {
+
+ var items = options.items || {};
+ currentServerId = options.serverId;
+
+ var dialogOptions = {
+ removeOnClose: true,
+ scrollY: false
+ };
+
+ if (layoutManager.tv) {
+ dialogOptions.size = 'fullscreen';
+ } else {
+ dialogOptions.size = 'small';
+ }
+
+ var dlg = dialogHelper.createDialog(dialogOptions);
+
+ dlg.classList.add('formDialog');
+
+ var html = '';
+ var title = globalize.translate('sharedcomponents#AddToPlaylist');
+
+ html += '';
+
+ html += getEditorHtml();
+
+ dlg.innerHTML = html;
+ document.body.appendChild(dlg);
+
+ initEditor(dlg, items);
+
+ dlg.querySelector('.btnCancel').addEventListener('click', function () {
+
+ dialogHelper.close(dlg);
+ });
+
+ if (layoutManager.tv) {
+ scrollHelper.centerFocus.on(dlg.querySelector('.dialogContent'), false);
+ }
+
+ return new Promise(function (resolve, reject) {
+
+ dlg.addEventListener('close', resolve);
+ dialogHelper.open(dlg);
+ });
+ };
+ }
+
+ return playlisteditor;
+});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json
index 5f8d5214ed..df48e73a80 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-US.json
@@ -62,5 +62,9 @@
"NewCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.",
"SearchForCollectionInternetMetadata": "Search the internet for artwork and metadata",
"LabelName": "Name:",
- "NewCollectionNameExample": "Example: Star Wars Collection"
+ "NewCollectionNameExample": "Example: Star Wars Collection",
+ "MessageItemsAdded": "Items added.",
+ "OptionNew": "New...",
+ "LabelPlaylist": "Playlist:",
+ "AddToPlaylist": "Add to Playlist"
}
\ No newline at end of file
diff --git a/dashboard-ui/components/playlisteditor/playlisteditor.js b/dashboard-ui/components/playlisteditor/playlisteditor.js
deleted file mode 100644
index 8f90e9a03e..0000000000
--- a/dashboard-ui/components/playlisteditor/playlisteditor.js
+++ /dev/null
@@ -1,236 +0,0 @@
-define(['dialogHelper', 'jQuery', 'paper-input', 'paper-icon-button-light'], function (dialogHelper, $) {
-
- var lastPlaylistId = '';
-
- function redirectToPlaylist(id) {
-
- var context = getParameterByName('context');
-
- ApiClient.getItem(Dashboard.getCurrentUserId(), id).then(function (item) {
-
- Dashboard.navigate(LibraryBrowser.getHref(item, context));
-
- });
- }
-
- function onAddToPlaylistFormSubmit() {
-
- Dashboard.showLoadingMsg();
-
- var panel = $(this).parents('.dialog')[0];
-
- var playlistId = $('#selectPlaylistToAddTo', panel).val();
-
- if (playlistId) {
- lastPlaylistId = playlistId;
- addToPlaylist(panel, playlistId);
- } else {
- createPlaylist(panel);
- }
-
- return false;
- }
-
- function createPlaylist(dlg) {
-
- var url = ApiClient.getUrl("Playlists", {
-
- Name: $('#txtNewPlaylistName', dlg).val(),
- Ids: $('.fldSelectedItemIds', dlg).val() || '',
- userId: Dashboard.getCurrentUserId()
-
- });
-
- ApiClient.ajax({
- type: "POST",
- url: url,
- dataType: "json"
-
- }).then(function (result) {
-
- Dashboard.hideLoadingMsg();
-
- var id = result.Id;
-
- dialogHelper.close(dlg);
- redirectToPlaylist(id);
- });
- }
-
- function addToPlaylist(dlg, id) {
-
- var url = ApiClient.getUrl("Playlists/" + id + "/Items", {
-
- Ids: $('.fldSelectedItemIds', dlg).val() || '',
- userId: Dashboard.getCurrentUserId()
- });
-
- ApiClient.ajax({
- type: "POST",
- url: url
-
- }).then(function () {
-
- Dashboard.hideLoadingMsg();
-
- dialogHelper.close(dlg);
- require(['toast'], function (toast) {
- toast(Globalize.translate('MessageAddedToPlaylistSuccess'));
- });
-
- });
- }
-
- function onDialogClosed() {
-
- $(this).remove();
- Dashboard.hideLoadingMsg();
- }
-
- function populatePlaylists(panel) {
-
- var select = $('#selectPlaylistToAddTo', panel);
-
- if (!select.length) {
-
- $('#txtNewPlaylistName', panel).val('').focus();
- return;
- }
-
- Dashboard.showLoadingMsg();
-
- $('.newPlaylistInfo', panel).hide();
-
- var options = {
-
- Recursive: true,
- IncludeItemTypes: "Playlist",
- SortBy: 'SortName'
- };
-
- ApiClient.getItems(Dashboard.getCurrentUserId(), options).then(function (result) {
-
- var html = '';
-
- html += '';
-
- html += result.Items.map(function (i) {
-
- return '';
- });
-
- select.html(html).val(lastPlaylistId || '').trigger('change');
-
- Dashboard.hideLoadingMsg();
- });
- }
-
- function getEditorHtml() {
-
- var html = '';
-
- html += '';
-
- return html;
- }
-
- function initEditor(content, items) {
-
- $('#selectPlaylistToAddTo', content).on('change', function () {
-
- if (this.value) {
- $('.newPlaylistInfo', content).hide();
- $('input', content).removeAttr('required');
- } else {
- $('.newPlaylistInfo', content).show();
- $('input', content).attr('required', 'required');
- }
-
- }).trigger('change');
-
- populatePlaylists(content);
-
- $('form', content).on('submit', onAddToPlaylistFormSubmit);
-
- $('.fldSelectedItemIds', content).val(items.join(','));
-
- if (items.length) {
- $('.fldSelectPlaylist', content).show();
- populatePlaylists(content);
- } else {
- $('.fldSelectPlaylist', content).hide();
- $('#selectPlaylistToAddTo', content).html('').val('').trigger('change');
- }
- }
-
- function playlisteditor() {
-
- var self = this;
-
- self.show = function (items) {
-
- items = items || [];
-
- var dlg = dialogHelper.createDialog({
- size: 'small'
- });
-
- dlg.classList.add('ui-body-b');
- dlg.classList.add('background-theme-b');
-
- var html = '';
-
- var title = Globalize.translate('HeaderAddToPlaylist');
-
- html += '';
-
- html += getEditorHtml();
-
- dlg.innerHTML = html;
- document.body.appendChild(dlg);
-
- initEditor(dlg, items);
-
- $(dlg).on('close', onDialogClosed);
-
- dialogHelper.open(dlg);
-
- $('.btnCancel', dlg).on('click', function () {
-
- dialogHelper.close(dlg);
- });
- };
- }
-
- return playlisteditor;
-});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 21fffed159..b359ead742 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -1,4 +1,4 @@
-define(['playlistManager', 'scrollHelper', 'appSettings', 'appStorage', 'apphost', 'datetime', 'jQuery', 'itemHelper', 'mediaInfo', 'scrollStyles'], function (playlistManager, scrollHelper, appSettings, appStorage, appHost, datetime, $, itemHelper, mediaInfo) {
+define(['scrollHelper', 'appSettings', 'appStorage', 'apphost', 'datetime', 'jQuery', 'itemHelper', 'mediaInfo', 'scrollStyles'], function (scrollHelper, appSettings, appStorage, appHost, datetime, $, itemHelper, mediaInfo) {
function parentWithClass(elem, className) {
@@ -670,11 +670,11 @@
var commands = [];
- if (LibraryBrowser.supportsAddingToCollection(item)) {
+ if (itemHelper.supportsAddingToCollection(item)) {
commands.push('addtocollection');
}
- if (playlistManager.supportsPlaylists(item)) {
+ if (itemHelper.supportsAddingToPlaylist(item)) {
commands.push('playlist');
}
@@ -938,9 +938,11 @@
});
break;
case 'playlist':
- require(['playlistManager'], function (playlistManager) {
-
- playlistManager.showPanel([itemId]);
+ require(['playlistEditor'], function (playlistEditor) {
+ new playlistEditor().show({
+ items: items,
+ serverId: serverId
+ });
});
break;
case 'delete':
@@ -1561,13 +1563,6 @@
return html;
},
- supportsAddingToCollection: function (item) {
-
- var invalidTypes = ['Person', 'Genre', 'MusicGenre', 'Studio', 'GameGenre', 'BoxSet', 'Playlist', 'UserView', 'CollectionFolder', 'Audio', 'Episode', 'TvChannel', 'Program', 'MusicAlbum', 'Timer'];
-
- return !item.CollectionType && invalidTypes.indexOf(item.Type) == -1 && item.MediaType != 'Photo';
- },
-
enableSync: function (item, user) {
if (AppInfo.isNativeApp && !Dashboard.capabilities().SupportsSync) {
return false;
@@ -1604,7 +1599,7 @@
itemCommands.push('shuffle');
}
- if (playlistManager.supportsPlaylists(item)) {
+ if (itemHelper.supportsAddingToPlaylist(item)) {
if (options.showRemoveFromPlaylist) {
itemCommands.push('removefromplaylist');
@@ -1614,7 +1609,7 @@
}
if (options.showAddToCollection !== false) {
- if (LibraryBrowser.supportsAddingToCollection(item)) {
+ if (itemHelper.supportsAddingToCollection(item)) {
itemCommands.push('addtocollection');
}
}
diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js
index 88d6865d52..12a6441fa6 100644
--- a/dashboard-ui/scripts/librarylist.js
+++ b/dashboard-ui/scripts/librarylist.js
@@ -503,9 +503,11 @@
});
break;
case 'playlist':
- require(['playlistManager'], function (playlistManager) {
-
- playlistManager.showPanel([itemId]);
+ require(['playlistEditor'], function (playlistEditor) {
+ new playlistEditor().show({
+ items: [itemId],
+ serverId: serverId
+ });
});
break;
case 'delete':
@@ -1244,11 +1246,13 @@
hideSelections();
break;
case 'playlist':
- require(['playlistManager'], function (playlistManager) {
-
- playlistManager.showPanel(items);
- hideSelections();
+ require(['playlistEditor'], function (playlistEditor) {
+ new playlistEditor().show({
+ items: items,
+ serverId: serverId
+ });
});
+ hideSelections();
break;
case 'delete':
LibraryBrowser.deleteItems(items).then(function () {
diff --git a/dashboard-ui/scripts/playlistmanager.js b/dashboard-ui/scripts/playlistmanager.js
deleted file mode 100644
index a97624832e..0000000000
--- a/dashboard-ui/scripts/playlistmanager.js
+++ /dev/null
@@ -1,23 +0,0 @@
-define([], function () {
-
- return {
-
- showPanel: function (items) {
-
- require(['playlisteditor'], function (playlisteditor) {
- new playlisteditor().show(items);
- });
- },
-
- supportsPlaylists: function (item) {
-
- if (item.Type == 'Program') {
- return false;
- }
- if (item.Type == 'Timer') {
- return false;
- }
- return item.RunTimeTicks || item.IsFolder || item.Type == "Genre" || item.Type == "MusicGenre" || item.Type == "MusicArtist";
- }
- };
-});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 364098912e..7e140ea28d 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1769,6 +1769,7 @@ var AppInfo = {};
define("emby-select", [embyWebComponentsBowerPath + "/emby-select/emby-select"], returnFirstDependency);
define("collectionEditor", [embyWebComponentsBowerPath + "/collectioneditor/collectioneditor"], returnFirstDependency);
+ define("playlistEditor", [embyWebComponentsBowerPath + "/playlisteditor/playlisteditor"], returnFirstDependency);
define("recordingCreator", [embyWebComponentsBowerPath + "/recordingcreator/recordingcreator"], returnFirstDependency);
define("recordingEditor", [embyWebComponentsBowerPath + "/recordingcreator/recordingeditor"], returnFirstDependency);
define("mediaInfo", [embyWebComponentsBowerPath + "/mediainfo/mediainfo"], returnFirstDependency);
@@ -1804,7 +1805,6 @@ var AppInfo = {};
paths.appStorage = apiClientBowerPath + "/appstorage";
}
- paths.playlistManager = "scripts/playlistmanager";
paths.syncDialog = "scripts/sync";
var sha1Path = bowerPath + "/cryptojslib/components/sha1-min";