diff --git a/dashboard-ui/playlists.html b/dashboard-ui/playlists.html
index 5c64dda43d..67772848b2 100644
--- a/dashboard-ui/playlists.html
+++ b/dashboard-ui/playlists.html
@@ -1,4 +1,4 @@
-
+
-
+
${MessageNoPlaylistsAvailable}
diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js
index 3dfb98b90f..c80d84665c 100644
--- a/dashboard-ui/scripts/episodes.js
+++ b/dashboard-ui/scripts/episodes.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'listView'], function (events, libraryBrowser, imageLoader, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js
index 4f53c72847..9c71adc774 100644
--- a/dashboard-ui/scripts/itembynamedetailpage.js
+++ b/dashboard-ui/scripts/itembynamedetailpage.js
@@ -1,4 +1,4 @@
-define(['listView'], function (listView) {
+define(['listView', 'emby-itemscontainer'], function (listView) {
function renderItems(page, item) {
@@ -82,7 +82,7 @@
html += '
' + Globalize.translate('ButtonMore') + ' ';
html += '
';
- html += '
';
+ html += '
';
html += '
';
html += '
';
diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js
index e1b7eef0e8..0aa01c942e 100644
--- a/dashboard-ui/scripts/itemlistpage.js
+++ b/dashboard-ui/scripts/itemlistpage.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'alphaPicker', 'listView'], function (libraryBrowser, alphaPicker, listView) {
+define(['libraryBrowser', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (libraryBrowser, alphaPicker, listView) {
return function (view, params) {
diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js
index 445d4dd809..d3de88374e 100644
--- a/dashboard-ui/scripts/librarylist.js
+++ b/dashboard-ui/scripts/librarylist.js
@@ -254,12 +254,15 @@
var displayContextItem = card;
- if (!card.classList.contains('card') && !card.classList.contains('listItem')) {
- card = parentWithAnyClass(card, ['listItem', 'card']);
+ card = parentWithClass(card, 'card');
+
+ if (!card) {
+ return;
}
var itemId = card.getAttribute('data-itemid');
var playlistItemId = card.getAttribute('data-playlistitemid');
+
var commands = card.getAttribute('data-commands').split(',');
var itemType = card.getAttribute('data-itemtype');
var mediaType = card.getAttribute('data-mediatype');
diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js
index ce4f61cda5..164ecf1067 100644
--- a/dashboard-ui/scripts/moviecollections.js
+++ b/dashboard-ui/scripts/moviecollections.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js
index 1f573256ca..d36ba471b7 100644
--- a/dashboard-ui/scripts/movies.js
+++ b/dashboard-ui/scripts/movies.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/movietrailers.js b/dashboard-ui/scripts/movietrailers.js
index 83105fefba..b8fa2085be 100644
--- a/dashboard-ui/scripts/movietrailers.js
+++ b/dashboard-ui/scripts/movietrailers.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js
index f22a8de9b1..7f2a1a1131 100644
--- a/dashboard-ui/scripts/musicalbums.js
+++ b/dashboard-ui/scripts/musicalbums.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js
index f1492c6055..f2c9720d70 100644
--- a/dashboard-ui/scripts/musicartists.js
+++ b/dashboard-ui/scripts/musicartists.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js
index 1b0af4cdf2..0d568f9c62 100644
--- a/dashboard-ui/scripts/playlistedit.js
+++ b/dashboard-ui/scripts/playlistedit.js
@@ -67,37 +67,30 @@
showRemoveFromPlaylist: true,
playFromHere: true,
action: 'playallfromhere',
- smallIcon: true
+ smallIcon: true,
+ dragHandle: true
});
}
var elem = page.querySelector('#childrenContent .itemsContainer');
elem.innerHTML = html;
- var listItems = [];
- var elems = elem.querySelectorAll('.listItem');
- for (var i = 0, length = elems.length; i < length; i++) {
- listItems.push(elems[i]);
- }
+ var listParent = elem;
- var listParent = elem.querySelector('.paperList');
+ require(['sortable'], function (Sortable) {
- if (!AppInfo.isTouchPreferred) {
- require(['sortable'], function (Sortable) {
+ var sortable = new Sortable(listParent, {
- var sortable = new Sortable(listParent, {
+ draggable: ".listItem",
+ handle: '.listViewDragHandle',
- draggable: ".listItem",
+ // dragging ended
+ onEnd: function (/**Event*/evt) {
- // dragging ended
- onEnd: function (/**Event*/evt) {
-
- onDrop(evt, page, item);
- }
- });
+ onDrop(evt, page, item);
+ }
});
- }
-
+ });
ImageLoader.lazyChildren(elem);
LibraryBrowser.createCardMenus(elem);
@@ -117,14 +110,13 @@
function onDrop(evt, page, item) {
+ Dashboard.showLoadingMsg();
+
var el = evt.item;
var newIndex = evt.newIndex;
-
var itemId = el.getAttribute('data-playlistitemid');
- Dashboard.showLoadingMsg();
-
ApiClient.ajax({
url: ApiClient.getUrl('Playlists/' + item.Id + '/Items/' + itemId + '/Move/' + newIndex),
diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js
index bc6bbca87b..9d07586002 100644
--- a/dashboard-ui/scripts/secondaryitems.js
+++ b/dashboard-ui/scripts/secondaryitems.js
@@ -1,4 +1,4 @@
-define(['libraryBrowser', 'listView'], function (libraryBrowser, listView) {
+define(['libraryBrowser', 'listView', 'emby-itemscontainer'], function (libraryBrowser, listView) {
return function (view, params) {
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index a8a8c23d37..c6d65c5fca 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1803,6 +1803,7 @@ var AppInfo = {};
define("emby-collapse", [embyWebComponentsBowerPath + "/emby-collapse/emby-collapse"], returnFirstDependency);
define("emby-button", [embyWebComponentsBowerPath + "/emby-button/emby-button"], returnFirstDependency);
+ define("emby-itemscontainer", [embyWebComponentsBowerPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
define("alphaPicker", [embyWebComponentsBowerPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("paper-icon-button-light", [embyWebComponentsBowerPath + "/emby-button/paper-icon-button-light"]);
@@ -2021,6 +2022,9 @@ var AppInfo = {};
return {
isPlayingVideo: function () {
return false;
+ },
+ play: function (options) {
+ MediaController.play(options);
}
};
});
@@ -2273,7 +2277,7 @@ var AppInfo = {};
var baseUrl = 'bower_components/emby-webcomponents/strings/';
- var languages = ['da', 'de', 'en-US', 'es-MX', 'kk', 'nb', 'nl', 'pt-BR', 'pt-PT', 'ru', 'sv'];
+ var languages = ['da', 'de', 'en-US', 'es-MX', 'kk', 'nb', 'nl', 'pt-BR', 'pt-PT', 'ru', 'sv', 'zh-TW'];
var translations = languages.map(function (i) {
return {
@@ -2566,7 +2570,7 @@ var AppInfo = {};
defineRoute({
path: '/itemdetails.html',
- dependencies: ['emby-button', 'tileitemcss', 'scripts/livetvcomponents', 'paper-icon-button-light', 'listViewStyle'],
+ dependencies: ['emby-button', 'tileitemcss', 'scripts/livetvcomponents', 'paper-icon-button-light', 'emby-itemscontainer'],
controller: 'scripts/itemdetailpage',
autoFocus: false,
transition: 'fade'
@@ -2836,7 +2840,7 @@ var AppInfo = {};
defineRoute({
path: '/nowplaying.html',
- dependencies: ['paper-icon-button-light', 'emby-slider', 'emby-button', 'emby-input'],
+ dependencies: ['paper-icon-button-light', 'emby-slider', 'emby-button', 'emby-input', 'emby-itemscontainer'],
controller: 'scripts/nowplayingpage',
autoFocus: false,
transition: 'fade'
diff --git a/dashboard-ui/scripts/songs.js b/dashboard-ui/scripts/songs.js
index 3a0ad05215..21ca9fd8d3 100644
--- a/dashboard-ui/scripts/songs.js
+++ b/dashboard-ui/scripts/songs.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'listView'], function (events, libraryBrowser, imageLoader, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js
index cb7dbe1302..f8d52c567d 100644
--- a/dashboard-ui/scripts/tvshows.js
+++ b/dashboard-ui/scripts/tvshows.js
@@ -1,4 +1,4 @@
-define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
+define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView) {
return function (view, params, tabContent) {
diff --git a/dashboard-ui/secondaryitems.html b/dashboard-ui/secondaryitems.html
index a2f595d35b..2f55f833f8 100644
--- a/dashboard-ui/secondaryitems.html
+++ b/dashboard-ui/secondaryitems.html
@@ -5,7 +5,7 @@