diff --git a/ApiClient.js b/ApiClient.js index 69f3f020c..36476511e 100644 --- a/ApiClient.js +++ b/ApiClient.js @@ -575,6 +575,17 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi }); }; + self.getSeasons = function (itemId, options) { + + var url = self.getUrl("Shows/" + itemId + "/Seasons", options); + + return self.ajax({ + type: "GET", + url: url, + dataType: "json" + }); + }; + self.getSimilarMovies = function (itemId, options) { var url = self.getUrl("Movies/" + itemId + "/Similar", options); diff --git a/dashboard-ui/css/images/userdata/playedoff.png b/dashboard-ui/css/images/userdata/playedoff.png index 250b97931..61925ee6f 100644 Binary files a/dashboard-ui/css/images/userdata/playedoff.png and b/dashboard-ui/css/images/userdata/playedoff.png differ diff --git a/dashboard-ui/css/images/userdata/playedon.png b/dashboard-ui/css/images/userdata/playedon.png index 53f535365..24224004d 100644 Binary files a/dashboard-ui/css/images/userdata/playedon.png and b/dashboard-ui/css/images/userdata/playedon.png differ diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 365a0c78d..182530312 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -27,7 +27,6 @@ .viewMenuBar { background: #444; background-image: linear-gradient(#444,#2d2d2d); - font-size: 13px; font-weight: bold; position: fixed; right: 0; @@ -35,6 +34,7 @@ z-index: 1000; top: 0; border-bottom: 1px solid #111; + font-size: 13px; } .viewSummary { @@ -47,6 +47,7 @@ padding: 7px .5em 6px; display: inline-block; vertical-align: middle; + font-family: Arial; } .viewMenuLink:hover { @@ -348,7 +349,6 @@ a.itemTag:hover { bottom: 0; left: 0; right: 0; - font-size: 13px; background-color: rgba(0,0,0,0.7); } @@ -421,7 +421,7 @@ a.itemTag:hover { color: #000!important; } -.itemName { +.inlineItemName { font-size: 22px; } @@ -782,8 +782,6 @@ a.itemTag:hover { .userDataIcons .itemProgressText { vertical-align: top; - position: relative; - top: 3px; margin-right: 1.5em; } @@ -794,7 +792,6 @@ a.itemTag:hover { } .itemProgressText { - font-size: 12px; color: #ddd; vertical-align: middle; } diff --git a/dashboard-ui/css/metadataeditor.css b/dashboard-ui/css/metadataeditor.css index 5735773bb..1cbcc4430 100644 --- a/dashboard-ui/css/metadataeditor.css +++ b/dashboard-ui/css/metadataeditor.css @@ -72,6 +72,11 @@ height: 180px; } +/* Fixes button running outside of list */ +.btnRemoveFromEditorList .ui-btn-inner { + padding-right: 0!important; +} + @media all and (min-width: 500px) { .availableImagesList { @@ -132,6 +137,14 @@ margin: .5em 0; } +.editorTile .tileContent{ + color: #000; +} + +.editorTile .ui-field-contain{ + margin: 0 0 .5em; +} + @media all and (min-width: 700px) { .availableImagesList { diff --git a/dashboard-ui/css/search.css b/dashboard-ui/css/search.css index 634221ded..35e65c781 100644 --- a/dashboard-ui/css/search.css +++ b/dashboard-ui/css/search.css @@ -6,7 +6,7 @@ .txtSearch { vertical-align: middle; - font: 13px arial,sans-serif; + font-size: 14px; margin: 0 .15em 0 0; width: 80px; padding: 0; @@ -96,7 +96,7 @@ } .searchHintSecondaryText { - font-size: 11px; + font-size: 12px; color: #999; margin-top: 3px; white-space: nowrap; diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 6b7362f2c..3601edd1e 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -1,29 +1,29 @@ @font-face { - font-family: "Open Sans"; - font-style: normal; - font-weight: 700; - src: local("Open Sans Bold"), local("OpenSans-Bold"), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzJ1r3JsPcQLi8jytr04NNhU.woff) format('woff'); -} - -@font-face { - font-family: "Open Sans"; + font-family: 'Open Sans'; font-style: normal; font-weight: 300; - src: local("Open Sans Light"), local("OpenSans-Light"), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTZ1r3JsPcQLi8jytr04NNhU.woff) format('woff'); + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff'); } @font-face { - font-family: "Open Sans"; - font-style: normal; - font-weight: 800; - src: local("Open Sans Extrabold"), local("OpenSans-Extrabold"), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/EInbV5DfGHOiMmvb1Xr-hp1r3JsPcQLi8jytr04NNhU.woff) format('woff'); -} - -@font-face { - font-family: "Open Sans"; + font-family: 'Open Sans'; font-style: normal; font-weight: 400; - src: local("Open Sans"), local("OpenSans"), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/K88pR3goAWT7BTt32Z01mz8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); + src: local('Open Sans'), local('OpenSans'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff'); +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff'); +} + +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: local('Open Sans Extrabold'), local('OpenSans-Extrabold'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/EInbV5DfGHOiMmvb1Xr-hnhCUOGz7vYGh680lGh-uXM.woff) format('woff'); } * { @@ -68,9 +68,12 @@ h2 { font-size: 20pt; } -.libraryPage:not(.metadataEditorPage) h1 a { - font-weight: 200!important; +h1 a { + font-weight: 300!important; text-decoration: none; +} + +.libraryPage:not(.metadataEditorPage) h1 a { color: #fff!important; } @@ -1004,7 +1007,7 @@ input[type="range"]::-ms-fill-upper { } .mediaFlyoutOptionSecondaryText { - font-size: 11px; + font-size: 12px; color: #999; margin-top: 3px; white-space: nowrap; diff --git a/dashboard-ui/edititemmetadata.html b/dashboard-ui/edititemmetadata.html index 3e4bac8ec..208e354d5 100644 --- a/dashboard-ui/edititemmetadata.html +++ b/dashboard-ui/edititemmetadata.html @@ -37,7 +37,7 @@
@@ -152,7 +152,7 @@ - Add + Add
@@ -291,7 +291,7 @@
- Add + Add
@@ -301,7 +301,7 @@
- Add + Add
@@ -311,7 +311,7 @@
- Add + Add
diff --git a/dashboard-ui/edititempeople.html b/dashboard-ui/edititempeople.html index 56a98bc2f..360532894 100644 --- a/dashboard-ui/edititempeople.html +++ b/dashboard-ui/edititempeople.html @@ -21,7 +21,7 @@ Images
diff --git a/dashboard-ui/itembynamedetails.html b/dashboard-ui/itembynamedetails.html index 0321c03bc..57086c44a 100644 --- a/dashboard-ui/itembynamedetails.html +++ b/dashboard-ui/itembynamedetails.html @@ -123,7 +123,7 @@
-

+

diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 447eff25e..1f353a065 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -114,7 +114,7 @@ -

+

diff --git a/dashboard-ui/library.html b/dashboard-ui/library.html index fff51b064..7252e449d 100644 --- a/dashboard-ui/library.html +++ b/dashboard-ui/library.html @@ -32,7 +32,7 @@

-

Read media library wiki.

+

Refer to media library wiki.

Configure images and sort orders by browsing and editing.

diff --git a/dashboard-ui/livetvchannel.html b/dashboard-ui/livetvchannel.html index a18f5af87..366c0d738 100644 --- a/dashboard-ui/livetvchannel.html +++ b/dashboard-ui/livetvchannel.html @@ -19,7 +19,7 @@
-

+

diff --git a/dashboard-ui/scripts/Itemdetailpage.js b/dashboard-ui/scripts/Itemdetailpage.js index 50511229a..c4d18a3be 100644 --- a/dashboard-ui/scripts/Itemdetailpage.js +++ b/dashboard-ui/scripts/Itemdetailpage.js @@ -22,7 +22,7 @@ Dashboard.getCurrentUser().done(function (user) { var imageHref = user.Configuration.IsAdministrator ? "edititemimages.html?id=" + item.Id : ""; - + $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item, imageHref)); setInitialCollapsibleState(page, item, context, user); @@ -509,21 +509,32 @@ var promise; - if (item.Type == "Season" && item.IndexNumber != null) { + if (item.Type == "Series") { - promise = ApiClient.getEpisodes(item.SeriesId, { + promise = ApiClient.getSeasons(item.Id, { - season: item.IndexNumber, userId: Dashboard.getCurrentUserId() }); } + else if (item.Type == "Season" && item.IndexNumber != null) { - else if (item.Type == "Series" || item.Type == "Season") { - if (!user.Configuration.DisplayMissingEpisodes) { - query.IsMissing = false; - } - if (!user.Configuration.DisplayUnairedEpisodes) { - query.IsVirtualUnaired = false; + if (item.IndexNumber == null) { + + // If there's no known season number, just use generic folder browsing + if (!user.Configuration.DisplayMissingEpisodes) { + query.IsMissing = false; + } + if (!user.Configuration.DisplayUnairedEpisodes) { + query.IsVirtualUnaired = false; + } + } else { + + // Use dedicated episodes endpoint + promise = ApiClient.getEpisodes(item.SeriesId, { + + season: item.IndexNumber, + userId: Dashboard.getCurrentUserId() + }); } } @@ -607,7 +618,7 @@ var html = ''; - var reviews = result.ItemReviews; + var reviews = result.Items; for (var i = 0, length = reviews.length; i < length; i++) { diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js index 26e4103b4..754bf0f9b 100644 --- a/dashboard-ui/scripts/edititemmetadata.js +++ b/dashboard-ui/scripts/edititemmetadata.js @@ -151,18 +151,12 @@ if (node == '-1') { - callback({ attr: { id: 'root', rel: 'folder', itemtype: 'root' }, data: 'Root', state: 'open' }); + loadChildrenOfRootNode(callback); return; } var id = node.attr("id"); - if (id == 'root') { - - loadChildrenOfRootNode(callback); - return; - } - if (id == 'livetv') { loadLiveTvServices(openItems, callback); @@ -989,7 +983,7 @@ } var html = ''; for (var i = 0; i < items.length; i++) { - html += '

  • ' + items[i] + '
  • '; + html += '
  • ' + items[i] + '
  • '; } list.html(html).listview('refresh'); } diff --git a/dashboard-ui/scripts/edititempeople.js b/dashboard-ui/scripts/edititempeople.js index b1e44fbde..6dc46d7f6 100644 --- a/dashboard-ui/scripts/edititempeople.js +++ b/dashboard-ui/scripts/edititempeople.js @@ -47,7 +47,7 @@ } function constructPerson(item, person) { - var html = '
    '; + var html = '
    '; var imgUrl; var name = person.Name || ""; var role = person.Role || ""; @@ -94,7 +94,7 @@ if (item.LocationType !== "Offline") { html += ''; - html += ''; + html += ''; html += ''; } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 7b44a6cea..06e9322fb 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -1504,7 +1504,7 @@ itemId = item.Name; } - if ((item.MediaType || item.IsFolder) && item.Type != "Channel") { + if ((item.MediaType || item.IsFolder) && item.Type != "Channel" && item.Type != "MusicArtist") { if (userData.Played) { html += 'Played'; } else { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index a2390cd73..d1ebb46b1 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -255,7 +255,7 @@ var Dashboard = { showServerRestartWarning: function (systemInfo) { var html = 'Please restart Media Browser Server to finish updating.'; - + if (systemInfo.CanSelfRestart) { html += ''; } @@ -279,7 +279,7 @@ var Dashboard = { reloadPage: function () { var currentUrl = window.location.toString().toLowerCase(); - + // If they're on a plugin config page just go back to the dashboard // The plugin may not have been loaded yet, or could have been uninstalled if (currentUrl.indexOf('configurationpage') != -1) { @@ -644,6 +644,8 @@ var Dashboard = { } } + html += 'Metadata Manager'; + // collapsible html += '
    '; @@ -1121,8 +1123,8 @@ var Dashboard = { return parts.join(':'); }, - - ratePackage: function(link) { + + ratePackage: function (link) { var id = link.getAttribute('data-id'); var name = link.getAttribute('data-name'); var rating = link.getAttribute('data-rating'); @@ -1132,25 +1134,25 @@ var Dashboard = { header: "Rate and review " + name, id: id, rating: rating, - callback: function(review) { + callback: function (review) { console.log(review); dialog.close(); - ApiClient.createPackageReview(review).done(function() { + ApiClient.createPackageReview(review).done(function () { Dashboard.alert("Thank you for your review"); }); } }); }, - - getStoreRatingHtml: function(rating, id, name, noLinks) { + + getStoreRatingHtml: function (rating, id, name, noLinks) { var html = "
    "; if (!rating) rating = 0; for (var i = 1; i <= 5; i++) { var title = noLinks ? rating + " stars" : "Rate " + i + (i > 1 ? " stars" : " star"); - + html += noLinks ? "" : ""; if (rating <= i - 1) { html += "
    "; diff --git a/dashboard-ui/wizardlibrary.html b/dashboard-ui/wizardlibrary.html index d578fa676..871eab8b4 100644 --- a/dashboard-ui/wizardlibrary.html +++ b/dashboard-ui/wizardlibrary.html @@ -23,7 +23,7 @@

    -

    Read media library wiki.

    +

    Refer to media library wiki.