+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
${LabelAirDays}
+
+
+
${OptionSunday}
+
${OptionMonday}
+
${OptionTuesday}
+
${OptionWednesday}
+
${OptionThursday}
+
${OptionFriday}
+
${OptionSaturday}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${HeaderAlternateEpisodeNumbers}
+
+
-
-
-
${HeaderBackdrops}
-
+
+
+ ${HeaderSpecialEpisodeInfo}
+
+
-
-
-
${Screenshots}
-
+
+
+ ${HeaderExternalIds}
+
+
+
+
+
+ ${HeaderDisplaySettings}
+
+
+
+
+
+
${LabelDisplaySpecialsWithinSeasons}
+
+
+
+
+
+
+
+
+
+
+
+
+
${HeaderPlotKeywords}
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
${HeaderSearchForSubtitles}
+
+
+
+
+
+
+ ${MessageNoSubtitleSearchResultsFound}
+
+
+
+
+
+ ${EditCollectionItemsHelp}
+
+
+
+
+
+
+
+
+
+
+
+
+
${ButtonBrowseImages}
+
+
+
+
+
${HeaderImages}
+
+
+
+
+
+
+
${HeaderBackdrops}
+
+
+
+
+
+
+
diff --git a/dashboard-ui/scripts/editcollectionitems.js b/dashboard-ui/scripts/editcollectionitems.js
index 61e5e1f692..c86fd600f6 100644
--- a/dashboard-ui/scripts/editcollectionitems.js
+++ b/dashboard-ui/scripts/editcollectionitems.js
@@ -254,7 +254,7 @@
$('.collectionItemSearchForm').off('submit', onSearchFormSubmit).on('submit', onSearchFormSubmit);
- $(page.querySelector('neon-animated-pages')).on('tabchange', function () {
+ $(page.querySelector('paper-tabs')).on('tabchange', function () {
if (parseInt(this.selected) == 2) {
var tabContent = page.querySelector('.collectionItemsTabContent');
diff --git a/dashboard-ui/scripts/edititemimages.js b/dashboard-ui/scripts/edititemimages.js
index 6c7316894a..3a2c25bb8c 100644
--- a/dashboard-ui/scripts/edititemimages.js
+++ b/dashboard-ui/scripts/edititemimages.js
@@ -565,7 +565,7 @@
return false;
});
- $(page.querySelector('neon-animated-pages')).on('tabchange', function () {
+ $(page.querySelector('paper-tabs')).on('tabchange', function () {
if (parseInt(this.selected) == 3) {
var tabContent = page.querySelector('.imageEditorTab');
diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js
index 60f9ebd19a..d76619b0b1 100644
--- a/dashboard-ui/scripts/edititemmetadata.js
+++ b/dashboard-ui/scripts/edititemmetadata.js
@@ -47,15 +47,15 @@
fillItemInfo(page, item, metadataEditorInfo.ParentalRatingOptions);
if (item.Type == "BoxSet") {
- $('.collectionItemsTabButton', page).show();
+ page.querySelector('.collectionItemsTabButton').classList.remove('hide');
} else {
- $('.collectionItemsTabButton', page).hide();
+ page.querySelector('.collectionItemsTabButton').classList.add('hide');
}
if (item.MediaType == "Video" && item.LocationType == "FileSystem" && item.Type !== 'TvChannel') {
- $('.subtitleTabButton', page).show();
+ page.querySelector('.subtitleTabButton').classList.remove('hide');
} else {
- $('.subtitleTabButton', page).hide();
+ page.querySelector('.subtitleTabButton').classList.add('hide');
}
if (item.MediaType == 'Photo') {
@@ -1415,6 +1415,11 @@
});
}
+ function showTab(page, index) {
+
+ $('.editorTab', page).addClass('hide')[index].classList.remove('hide');
+ }
+
$(document).on('pageinitdepends', "#editItemMetadataPage", function () {
var page = this;
@@ -1455,7 +1460,7 @@
//$.mobile.urlHistory.ignoreNextHashChange = true;
window.location.hash = 'editItemMetadataPage?id=' + data.id;
- $(page.querySelector('neon-animated-pages')).trigger('tabchange');
+ $(page.querySelector('paper-tabs')).trigger('tabchange');
}
});
@@ -1470,22 +1475,16 @@
$('.popupAdvancedRefreshForm').off('submit', EditItemMetadataPage.onRefreshFormSubmit).on('submit', EditItemMetadataPage.onRefreshFormSubmit);
$('.identifyOptionsForm').off('submit', EditItemMetadataPage.onIdentificationOptionsSubmit).on('submit', EditItemMetadataPage.onIdentificationOptionsSubmit);
- $(page.querySelector('paper-tabs')).on('iron-select', function () {
- page.querySelector('neon-animated-pages').selected = this.selected;
- });
-
var tabs = page.querySelector('paper-tabs');
- var pages = page.querySelector('neon-animated-pages');
- configurePaperLibraryTabs(page, tabs, pages);
+ configurePaperLibraryTabs(page, tabs);
$(tabs).on('iron-select', function () {
+ Events.trigger(this, 'tabchange');
+
+ }).on('tabchange', function () {
var selected = this.selected;
-
- page.querySelector('neon-animated-pages').selected = selected;
- });
-
- $(pages).on('tabchange', function () {
+ showTab(page, selected);
loadTab(page, parseInt(this.selected));
});
@@ -1503,15 +1502,7 @@
var selected = parseInt(getParameterByName('tab') || '0');
- page.querySelector('paper-tabs').selected = 0;
-
- if (selected) {
-
- // Looks like a bug in paper-tabs. It won't set the tab if we try to do it too quickly
- setTimeout(function () {
- page.querySelector('paper-tabs').selected = selected;
- }, 700);
- }
+ page.querySelector('paper-tabs').selected = selected;
}).on('pagebeforehide', "#editItemMetadataPage", function () {
@@ -1522,21 +1513,30 @@
});
- function configurePaperLibraryTabs(ownerpage, tabs, pages) {
+ function configurePaperLibraryTabs(ownerpage, tabs) {
tabs.hideScrollButtons = true;
+ tabs.noSlide = true;
+ tabs.noink = true;
- $(ownerpage).on('pagebeforeshowready', LibraryBrowser.onTabbedPageBeforeShowReady);
+ $(ownerpage).on('pagebeforeshowready', function () {
- $(pages).on('iron-select', function () {
+ var selected = tabs.selected;
- // When transition animations are used, add a content loading delay to allow the animations to finish
- // Otherwise with both operations happening at the same time, it can cause the animation to not run at full speed.
- var delay = 500;
- var pgs = this;
- setTimeout(function () {
- $(pgs).trigger('tabchange');
- }, delay);
+ if (selected == null) {
+
+ Logger.log('selected tab is null, checking query string');
+
+ selected = parseInt(getParameterByName('tab') || '0');
+
+ Logger.log('selected tab will be ' + selected);
+
+ tabs.selected = selected;
+ Events.trigger(tabs, 'tabchange');
+
+ } else {
+ Events.trigger(tabs, 'tabchange');
+ }
});
}
@@ -1548,6 +1548,7 @@
reload(page);
break;
default:
+ reload(page);
break;
}
}
diff --git a/dashboard-ui/scripts/edititemsubtitles.js b/dashboard-ui/scripts/edititemsubtitles.js
index 8610ece6bf..04d869e14f 100644
--- a/dashboard-ui/scripts/edititemsubtitles.js
+++ b/dashboard-ui/scripts/edititemsubtitles.js
@@ -287,7 +287,7 @@
$('.subtitleSearchForm').off('submit', onSearchSubmit).on('submit', onSearchSubmit);
- $(page.querySelector('neon-animated-pages')).on('tabchange', function () {
+ $(page.querySelector('paper-tabs')).on('tabchange', function () {
if (parseInt(this.selected) == 1) {
var tabContent = page.querySelector('.subtitleTabContent');
diff --git a/dashboard-ui/scripts/editorsidebar.js b/dashboard-ui/scripts/editorsidebar.js
index b11e5557b2..ef6daad58a 100644
--- a/dashboard-ui/scripts/editorsidebar.js
+++ b/dashboard-ui/scripts/editorsidebar.js
@@ -402,8 +402,6 @@
}).on('pagebeforeshowready', ".metadataEditorPage", function () {
- window.MetadataEditor = new metadataEditor();
-
var page = this;
Dashboard.getCurrentUser().done(function (user) {
@@ -430,6 +428,7 @@
}).on('pageinitdepends', ".metadataEditorPage", function () {
Dashboard.importCss('css/metadataeditor.css');
+ window.MetadataEditor = new metadataEditor();
}).on('pagebeforehide', ".metadataEditorPage", function () {
@@ -482,7 +481,6 @@
return query;
};
-
self.loadJsTree = function () {
var deferred = DeferredBuilder.Deferred();
diff --git a/dashboard-ui/scripts/htmlmediarenderer.js b/dashboard-ui/scripts/htmlmediarenderer.js
index 3dd71d57ab..c3696d1f90 100644
--- a/dashboard-ui/scripts/htmlmediarenderer.js
+++ b/dashboard-ui/scripts/htmlmediarenderer.js
@@ -336,11 +336,12 @@
requiresSettingStartTimeOnStart = false;
var startTime = getStartTime(val);
+ var playNow = false;
if (elem.tagName.toLowerCase() == 'audio') {
elem.src = val;
- elem.play();
+ playNow = true;
}
else {
@@ -376,10 +377,12 @@
} else {
elem.src = val;
+ elem.autoplay = true;
setTracks(elem, tracks);
$(elem).one("loadedmetadata", onLoadedMetadata);
+ playNow = true;
}
var currentTrackIndex = -1;
@@ -394,6 +397,10 @@
}
currentSrc = val;
+
+ if (playNow) {
+ elem.play();
+ }
};
function setTracks(elem, tracks) {
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 2abd6ff778..64b480f41e 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -563,9 +563,7 @@
}
if (user.Policy.IsAdministrator) {
- if (item.Type != "Recording" && item.Type != "Program") {
- commands.push('edit');
- }
+ commands.push('edit');
}
commands.push('refresh');
@@ -1216,9 +1214,7 @@
// itemCommands.push('playmenu');
//}
- if (item.Type != "Recording" && item.Type != "Program") {
- itemCommands.push('edit');
- }
+ itemCommands.push('edit');
if (item.LocalTrailerCount) {
itemCommands.push('trailer');
diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js
index 1f2b6f6bd5..67f87a12e4 100644
--- a/dashboard-ui/scripts/mediaplayer-video.js
+++ b/dashboard-ui/scripts/mediaplayer-video.js
@@ -946,15 +946,17 @@
// This will start the transcoding process before actually feeding the video url into the player
if ($.browser.safari && !mediaSource.RunTimeTicks) {
- Dashboard.showModalLoadingMsg();
+ Dashboard.showLoadingMsg();
ApiClient.ajax({
type: 'GET',
url: streamInfo.url.replace('master.m3u8', 'live.m3u8')
+ }).always(function () {
+
+ Dashboard.hideLoadingMsg();
+
}).done(function () {
self.playVideoInternal(item, mediaSource, startPosition, streamInfo, callback);
- }).fail(function() {
- Dashboard.hideModalLoadingMsg();
});
} else {
@@ -1057,8 +1059,6 @@
}).one("playing.mediaplayerevent", function () {
- Dashboard.hideModalLoadingMsg();
-
// For some reason this is firing at the start, so don't bind until playback has begun
$(this).on("ended", self.onPlaybackStopped).one('ended', self.playNextAfterEnded);
@@ -1091,7 +1091,6 @@
}).on("error.mediaplayerevent", function () {
- Dashboard.hideModalLoadingMsg();
self.stop();
var errorMsg = Globalize.translate('MessageErrorPlayingVideo');
diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js
index 86f6233acb..42138b5586 100644
--- a/dashboard-ui/scripts/mediaplayer.js
+++ b/dashboard-ui/scripts/mediaplayer.js
@@ -1018,6 +1018,7 @@
function playInternalPostMediaSourceSelection(item, mediaSource, startPosition, callback) {
+ Dashboard.hideModalLoadingMsg();
self.currentMediaSource = mediaSource;
self.currentItem = item;
@@ -1030,7 +1031,6 @@
} else if (item.MediaType === "Audio") {
- Dashboard.hideModalLoadingMsg();
playAudio(item, self.currentMediaSource, startPosition, callback);
}
}
diff --git a/dashboard-ui/scripts/plugincatalogpage.js b/dashboard-ui/scripts/plugincatalogpage.js
index fdf244523a..ea284d2093 100644
--- a/dashboard-ui/scripts/plugincatalogpage.js
+++ b/dashboard-ui/scripts/plugincatalogpage.js
@@ -88,13 +88,6 @@
return -1;
}
- if (a.installs > b.installs) {
- return 1;
- }
- if (b.installs > a.installs) {
- return -1;
- }
-
return 0;
});
@@ -108,7 +101,7 @@
html += '';
var topPlugins = allPlugins.slice(0).sort(function (a, b) {
- if (a.installs > b.installs) {
+ if (a.installs < b.installs) {
return 1;
}
if (b.installs > a.installs) {
@@ -129,6 +122,7 @@
});
var limit = screen.availWidth >= 1920 ? 15 : 12;
+
for (i = 0, length = Math.min(topPlugins.length, limit) ; i < length; i++) {
html += getPluginHtml(topPlugins[i], options, installedPlugins);
}