diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json
index 64a53a8524..2eb3bf6fa7 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.50",
- "_release": "1.3.50",
+ "version": "1.3.51",
+ "_release": "1.3.51",
"_resolution": {
"type": "version",
- "tag": "1.3.50",
- "commit": "2c09d5bf9a8f9698095956faca9a8fa55886cb42"
+ "tag": "1.3.51",
+ "commit": "0c56ace6eb1ffd23624d7721b3fa8902022e4cc3"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0",
diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css
index 82ef017a31..1da4198430 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css
+++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.css
@@ -53,7 +53,6 @@
.actionSheetScroller {
/* Override default style being applied by polymer */
margin-bottom: 0 !important;
- flex-grow: 1;
}
.layout-tv .actionSheetScroller {
diff --git a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js
index b7da0a093e..e3f7349f53 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/actionsheet/actionsheet.js
@@ -148,15 +148,8 @@
dlg.classList.add('centered');
}
- var enablePaperMenu = !layoutManager.tv;
- enablePaperMenu = false;
var itemTagName = 'paper-button';
- if (enablePaperMenu) {
- html += '';
- itemTagName = 'paper-menu-item';
- }
-
for (var i = 0, length = options.items.length; i < length; i++) {
var option = options.items[i];
@@ -174,10 +167,6 @@
html += '' + itemTagName + '>';
}
- if (enablePaperMenu) {
- html += '';
- }
-
if (options.showCancel) {
html += '
';
html += '
' + globalize.translate('sharedcomponents#ButtonCancel') + '';
diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
index b205787b12..d4e40f5952 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js
@@ -190,7 +190,7 @@
return null;
}
- function getChannelProgramsHtml(context, date, channel, programs) {
+ function getChannelProgramsHtml(context, date, channel, programs, options) {
var html = '';
@@ -255,20 +255,20 @@
html += '
';
- if (program.IsLive) {
+ if (program.IsLive && options.showLiveIndicator) {
html += '' + globalize.translate('sharedcomponents#AttributeLive') + ' ';
}
- else if (program.IsPremiere) {
+ else if (program.IsPremiere && options.showPremiereIndicator) {
html += '' + globalize.translate('sharedcomponents#AttributePremiere') + ' ';
}
- else if (program.IsSeries && !program.IsRepeat) {
+ else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) {
html += '' + globalize.translate('sharedcomponents#AttributeNew') + ' ';
}
html += program.Name;
html += '
';
- if (program.IsHD) {
+ if (program.IsHD && options.showHdIcon) {
html += '
';
}
@@ -295,9 +295,21 @@
var html = [];
+ // Normally we'd want to just let responsive css handle this,
+ // but since mobile browsers are often underpowered,
+ // it can help performance to get them out of the markup
+ var showIndicators = window.innerWidth >= 800;
+
+ var options = {
+ showHdIcon: showIndicators,
+ showLiveIndicator: showIndicators,
+ showPremiereIndicator: showIndicators,
+ showNewIndicator: showIndicators
+ };
+
for (var i = 0, length = channels.length; i < length; i++) {
- html.push(getChannelProgramsHtml(context, date, channels[i], programs));
+ html.push(getChannelProgramsHtml(context, date, channels[i], programs, options));
}
var programGrid = context.querySelector('.programGrid');
@@ -623,7 +635,7 @@
programGrid.addEventListener('focus', onProgramGridFocus, true);
- addEventListenerWithOptions(programGrid, 'scroll', function () {
+ addEventListenerWithOptions(programGrid, 'scroll', function (e) {
onProgramGridScroll(context, this, timeslotHeaders);
}, {
passive: true
diff --git a/dashboard-ui/bower_components/polymer/.bower.json b/dashboard-ui/bower_components/polymer/.bower.json
index 3e8a4009a3..bbad7fe7ba 100644
--- a/dashboard-ui/bower_components/polymer/.bower.json
+++ b/dashboard-ui/bower_components/polymer/.bower.json
@@ -34,6 +34,6 @@
"commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514"
},
"_source": "git://github.com/Polymer/polymer.git",
- "_target": "^1.0.0",
+ "_target": "^1.1.0",
"_originalSource": "Polymer/polymer"
}
\ No newline at end of file
diff --git a/dashboard-ui/scripts/livetvsettings.js b/dashboard-ui/scripts/livetvsettings.js
index b172568f30..cdf7a7de0b 100644
--- a/dashboard-ui/scripts/livetvsettings.js
+++ b/dashboard-ui/scripts/livetvsettings.js
@@ -35,21 +35,49 @@
config.EnableAutoOrganize = $('#chkOrganize', form).checked();
config.EnableRecordingEncoding = $('#chkConvertRecordings', form).checked();
config.EnableOriginalAudioWithEncodedRecordings = $('#chkPreserveAudio', form).checked();
- config.RecordingPath = form.querySelector('#txtRecordingPath').value || null;
- config.MovieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
- config.SeriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
+
+ var recordingPath = form.querySelector('#txtRecordingPath').value || null;
+ var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
+ var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
+
+ var recordingPathChanged = recordingPath != config.RecordingPath ||
+ movieRecordingPath != config.MovieRecordingPath ||
+ seriesRecordingPath != config.SeriesRecordingPath;
+
+ config.RecordingPath = recordingPath;
+ config.MovieRecordingPath = movieRecordingPath;
+ config.SeriesRecordingPath = seriesRecordingPath;
config.PrePaddingSeconds = $('#txtPrePaddingMinutes', form).val() * 60;
config.PostPaddingSeconds = $('#txtPostPaddingMinutes', form).val() * 60;
config.EnableRecordingSubfolders = form.querySelector('#chkEnableRecordingSubfolders').checked;
- ApiClient.updateNamedConfiguration("livetv", config).then(Dashboard.processServerConfigurationUpdateResult);
+ ApiClient.updateNamedConfiguration("livetv", config).then(function () {
+ Dashboard.processServerConfigurationUpdateResult();
+
+ showSaveMessage(recordingPathChanged);
+ });
});
// Disable default form submission
return false;
}
+ function showSaveMessage(recordingPathChanged) {
+
+ var msg = '';
+
+ if (recordingPathChanged) {
+ msg += Globalize.translate('RecordingPathChangeMessage');
+ }
+
+ if (msg) {
+ require(['alert'], function (alert) {
+ alert(msg);
+ });
+ }
+ }
+
function getTabs() {
return [
{
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 8cd8d3a5e5..9aa586326d 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -2296,41 +2296,47 @@ var AppInfo = {};
dependencies: [],
autoFocus: false,
controller: 'scripts/aboutpage',
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/addplugin.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/appservices.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/autoorganizelog.html',
dependencies: [],
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/autoorganizesmart.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/autoorganizetv.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2351,34 +2357,39 @@ var AppInfo = {};
path: '/channelsettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/cinemamodeconfiguration.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/collections.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/connectlogin.html',
dependencies: ['paper-button'],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/dashboard.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2386,7 +2397,8 @@ var AppInfo = {};
dependencies: ['emby-collapsible', 'paper-textarea', 'paper-input', 'paper-checkbox'],
controller: 'scripts/dashboardgeneral',
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2394,56 +2406,64 @@ var AppInfo = {};
dependencies: ['paper-checkbox', 'paper-input', 'paper-button'],
autoFocus: false,
roles: 'admin',
- controller: 'scripts/dashboardhosting'
+ controller: 'scripts/dashboardhosting',
+ transition: 'fade'
});
defineRoute({
path: '/device.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/devices.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/devicesupload.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/dlnaprofile.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/dlnaprofiles.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/dlnaserversettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/dlnasettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2456,57 +2476,66 @@ var AppInfo = {};
path: '/encodingsettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/favorites.html',
dependencies: [],
autoFocus: false,
- controller: 'scripts/favorites'
+ controller: 'scripts/favorites',
+ transition: 'fade'
});
defineRoute({
path: '/forgotpassword.html',
dependencies: [],
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/forgotpasswordpin.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/gamegenres.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/games.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/gamesrecommended.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/gamestudios.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/gamesystems.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
@@ -2550,21 +2579,24 @@ var AppInfo = {};
path: '/library.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/librarypathmapping.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/librarysettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2579,52 +2611,60 @@ var AppInfo = {};
path: '/livetvguideprovider.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/livetvitems.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/livetvrecordinglist.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/livetvseriestimer.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/livetvsettings.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/livetvstatus.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/livetvtunerprovider-hdhomerun.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/livetvtunerprovider-m3u.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2632,14 +2672,16 @@ var AppInfo = {};
dependencies: ['paper-input', 'paper-checkbox'],
autoFocus: false,
roles: 'admin',
- controller: 'scripts/livetvtunerprovider-satip'
+ controller: 'scripts/livetvtunerprovider-satip',
+ transition: 'fade'
});
defineRoute({
path: '/log.html',
dependencies: ['paper-toggle-button'],
roles: 'admin',
- controller: 'scripts/logpage'
+ controller: 'scripts/logpage',
+ transition: 'fade'
});
defineRoute({
@@ -2647,42 +2689,48 @@ var AppInfo = {};
dependencies: ['paper-button', 'humanedate', 'paper-input'],
autoFocus: false,
anonymous: true,
- controller: 'scripts/loginpage'
+ controller: 'scripts/loginpage',
+ transition: 'fade'
});
defineRoute({
path: '/metadata.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/metadataadvanced.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/metadataimages.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/metadatanfo.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/metadatasubtitles.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2760,14 +2808,16 @@ var AppInfo = {};
defineRoute({
path: '/notificationlist.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/notificationsetting.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2775,7 +2825,8 @@ var AppInfo = {};
controller: 'scripts/notificationsettings',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2797,7 +2848,8 @@ var AppInfo = {};
path: '/playbackconfiguration.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
@@ -2811,107 +2863,123 @@ var AppInfo = {};
path: '/plugincatalog.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/plugins.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/reports.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/scheduledtask.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/scheduledtasks.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/search.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/secondaryitems.html',
dependencies: [],
autoFocus: false,
- controller: 'scripts/secondaryitems'
+ controller: 'scripts/secondaryitems',
+ transition: 'fade'
});
defineRoute({
path: '/selectserver.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/serversecurity.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/shared.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/streamingsettings.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/support.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/supporterkey.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/syncactivity.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/syncjob.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/syncsettings.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
@@ -2926,104 +2994,119 @@ var AppInfo = {};
path: '/useredit.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/userlibraryaccess.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/usernew.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/userparentalcontrol.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/userpassword.html',
dependencies: [],
- autoFocus: false
+ autoFocus: false,
+ transition: 'fade'
});
defineRoute({
path: '/userprofiles.html',
dependencies: [],
autoFocus: false,
- roles: 'admin'
+ roles: 'admin',
+ transition: 'fade'
});
defineRoute({
path: '/wizardagreement.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardfinish.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardlibrary.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardlivetvguide.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardlivetvtuner.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardservice.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardsettings.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizardstart.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
path: '/wizarduser.html',
dependencies: [],
autoFocus: false,
- anonymous: true
+ anonymous: true,
+ transition: 'fade'
});
defineRoute({
diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json
index d6b33c7354..a8c8aa9e28 100644
--- a/dashboard-ui/strings/en-US.json
+++ b/dashboard-ui/strings/en-US.json
@@ -2355,5 +2355,6 @@
"CreateCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.",
"AddItemToCollectionHelp": "Add items to collections by searching for them and using their right-click or tap menus to add them to a collection.",
"HeaderHealthMonitor": "Health Monitor",
- "HealthMonitorNoAlerts": "There are no active alerts."
+ "HealthMonitorNoAlerts": "There are no active alerts.",
+ "RecordingPathChangeMessage": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired."
}