1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update now playing

This commit is contained in:
Luke Pulverenti 2015-09-26 10:51:26 -04:00
parent ad38cf4783
commit b5a723314b
23 changed files with 229 additions and 66 deletions

View file

@ -665,6 +665,19 @@
return deferred.promise(); return deferred.promise();
} }
self.getSavedServers = function () {
var credentials = credentialProvider.credentials();
var servers = credentials.Servers.slice(0);
servers.sort(function (a, b) {
return (b.DateLastAccessed || 0) - (a.DateLastAccessed || 0);
});
return servers;
};
self.getAvailableServers = function () { self.getAvailableServers = function () {
logger.log('Begin getAvailableServers'); logger.log('Begin getAvailableServers');

View file

@ -10,25 +10,6 @@
var apiClient = connectionManager.getApiClient(server.Id); var apiClient = connectionManager.getApiClient(server.Id);
apiClient.getDevicesOptions().done(function (devicesOptions) {
if (!devicesOptions.EnabledCameraUploadDevices || devicesOptions.EnabledCameraUploadDevices.indexOf(apiClient.deviceId()) == -1) {
Logger.log("Camera upload is not enabled for this device.");
deferred.reject();
}
else {
uploadImagesInternal(server, apiClient, deferred);
}
}).fail(function () {
deferred.reject();
});
return deferred.promise();
};
function uploadImagesInternal(server, apiClient, deferred) {
apiClient.getContentUploadHistory().done(function (result) { apiClient.getContentUploadHistory().done(function (result) {
uploadImagesWithHistory(server, result, apiClient, deferred); uploadImagesWithHistory(server, result, apiClient, deferred);
@ -36,7 +17,9 @@
}).fail(function () { }).fail(function () {
deferred.reject(); deferred.reject();
}); });
}
return deferred.promise();
};
function uploadImagesWithHistory(server, uploadHistory, apiClient, deferred) { function uploadImagesWithHistory(server, uploadHistory, apiClient, deferred) {

View file

@ -49,7 +49,13 @@
options = options || {}; options = options || {};
if (options.uploadPhotos === false) { var uploadPhotos = options.uploadPhotos !== false;
if (options.cameraUploadServers && options.cameraUploadServers.indexOf(server.Id) == -1) {
uploadPhotos = false;
}
if (!uploadPhotos) {
nextAction(); nextAction();
return; return;
} }

View file

@ -25,14 +25,14 @@
"web-component-tester": "*", "web-component-tester": "*",
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
}, },
"homepage": "https://github.com/polymerelements/iron-meta", "homepage": "https://github.com/PolymerElements/iron-meta",
"_release": "1.0.3", "_release": "1.0.3",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.0.3", "tag": "v1.0.3",
"commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04" "commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
}, },
"_source": "git://github.com/polymerelements/iron-meta.git", "_source": "git://github.com/PolymerElements/iron-meta.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "polymerelements/iron-meta" "_originalSource": "PolymerElements/iron-meta"
} }

View file

@ -42,7 +42,7 @@
"tag": "v1.0.4", "tag": "v1.0.4",
"commit": "a7ac7fbdb79b4d82416ec9b41613575386d0d226" "commit": "a7ac7fbdb79b4d82416ec9b41613575386d0d226"
}, },
"_source": "git://github.com/PolymerElements/paper-behaviors.git", "_source": "git://github.com/polymerelements/paper-behaviors.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-behaviors" "_originalSource": "polymerelements/paper-behaviors"
} }

View file

@ -30,14 +30,14 @@
"web-component-tester": "*", "web-component-tester": "*",
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
}, },
"homepage": "https://github.com/PolymerElements/paper-ripple", "homepage": "https://github.com/polymerelements/paper-ripple",
"_release": "1.0.2", "_release": "1.0.2",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.0.2", "tag": "v1.0.2",
"commit": "b546dbe6ad0b1f58cac80caec3136cf3232e12fc" "commit": "b546dbe6ad0b1f58cac80caec3136cf3232e12fc"
}, },
"_source": "git://github.com/PolymerElements/paper-ripple.git", "_source": "git://github.com/polymerelements/paper-ripple.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-ripple" "_originalSource": "polymerelements/paper-ripple"
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "velocity", "name": "velocity",
"version": "1.2.2", "version": "1.2.3",
"homepage": "http://velocityjs.org", "homepage": "http://velocityjs.org",
"authors": [ "authors": [
{ {
@ -38,14 +38,13 @@
"type": "git", "type": "git",
"url": "http://github.com/julianshapiro/velocity.git" "url": "http://github.com/julianshapiro/velocity.git"
}, },
"_release": "1.2.2", "_release": "1.2.3",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.2.2", "tag": "1.2.3",
"commit": "6b227928631aab5694255df3c219736c4c02449d" "commit": "1ad0a8196fa973f96e347a9b7f5bdaf7498ed1a6"
}, },
"_source": "git://github.com/julianshapiro/velocity.git", "_source": "git://github.com/julianshapiro/velocity.git",
"_target": "~1.2.2", "_target": "~1.2.2",
"_originalSource": "velocity", "_originalSource": "velocity"
"_direct": true
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "velocity", "name": "velocity",
"version": "1.2.2", "version": "1.2.3",
"homepage": "http://velocityjs.org", "homepage": "http://velocityjs.org",
"authors": [ "authors": [
{ "name" : "Julian Shapiro", { "name" : "Julian Shapiro",

View file

@ -42,7 +42,6 @@
<script> <script>
// Needed tests: // Needed tests:
// - "finish"
// - new stop behvaior // - new stop behvaior
// - e/p/o shorthands // - e/p/o shorthands
@ -986,6 +985,62 @@
}, asyncCheckDuration); }, asyncCheckDuration);
}); });
/******************
Command: Finish
******************/
QUnit.asyncTest("Command: Finish / FinishAll", function() {
expect(9);
var $target1 = getTarget();
/* Ensure an error isn't thrown when "finish" is called on a $target that isn't animating. */
Velocity($target1, "finish");
/* Animate to defaultProperties, and then "finish" to jump to the end of it. */
Velocity($target1, defaultProperties, Velocity.Utilities.extend({}, defaultOptions, { delay: 1000}));
Velocity($target1, "finish");
setTimeout(function() {
/* Ensure "finish" has removed all queued animations. */
/* We're using the element's queue length as a proxy. 0 and 1 both mean that the element's queue has been cleared -- a length of 1 just indicates that the animation is in progress. */
equal(Velocity.Utilities.queue($target1).length <= 1, true, "Queue cleared.");
/* End result of the animation should be applied */
equal(parseFloat(Velocity.CSS.getPropertyValue($target1, "width")), defaultProperties.width, "Standard end value #1 was set.");
equal(parseFloat(Velocity.CSS.getPropertyValue($target1, "opacity")), defaultProperties.opacity, "Standard end value #2 was set.");
}, asyncCheckDuration);
var $target2 = getTarget();
Velocity($target2, { opacity: 0 }, Velocity.Utilities.extend({}, defaultOptions, { delay: 1000 }));
Velocity($target2, { width: 0 }, defaultOptions);
Velocity($target2, "finish");
var $target3 = getTarget();
Velocity($target3, { opacity: 0, width: 50 }, Velocity.Utilities.extend({}, defaultOptions, { delay: 1000 }));
Velocity($target3, { width: 0 }, defaultOptions);
Velocity($target3, { width: 100 }, defaultOptions);
Velocity($target3, "finish", true);
var $target4 = getTarget();
Velocity($target4, { opacity: 0, width: 50 }, Velocity.Utilities.extend({}, defaultOptions, { delay: 1000 }));
Velocity($target4, { width: 0 }, defaultOptions);
Velocity($target4, { width: 100 }, defaultOptions);
Velocity($target4, "finishAll", true);
setTimeout(function() {
equal(Data($target2, pluginName).tweensContainer.opacity, undefined, "Active call stopped.");
notEqual(Data($target2, pluginName).tweensContainer.width, undefined, "Next queue item started.");
equal(Velocity.Utilities.queue($target3, "").length, 0, "Full queue array cleared.");
equal(parseFloat(Velocity.CSS.getPropertyValue($target3, "width")), 50, "Just the first call's width was applied.");
equal(Velocity.Utilities.queue($target4, "").length, 0, "Full queue array cleared.");
equal(parseFloat(Velocity.CSS.getPropertyValue($target4, "width")), 100, "The last call's width was applied.");
start();
}, asyncCheckDuration);
});
/*********************** /***********************
Feature: Redirects Feature: Redirects
***********************/ ***********************/

View file

@ -1,4 +1,4 @@
/*! VelocityJS.org (1.2.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ /*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */
/************************* /*************************
Velocity jQuery Shim Velocity jQuery Shim
@ -2074,7 +2074,7 @@ return function (global, window, document, undefined) {
/* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]). /* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]).
Overloading is detected by checking for the absence of an object being passed into options. */ Overloading is detected by checking for the absence of an object being passed into options. */
/* Note: The stop and finish actions do not accept animation options, and are therefore excluded from this check. */ /* Note: The stop and finish actions do not accept animation options, and are therefore excluded from this check. */
if (!/^(stop|finish)$/i.test(propertiesMap) && !$.isPlainObject(options)) { if (!/^(stop|finish|finishAll)$/i.test(propertiesMap) && !$.isPlainObject(options)) {
/* The utility function shifts all arguments one position to the right, so we adjust for that offset. */ /* The utility function shifts all arguments one position to the right, so we adjust for that offset. */
var startingArgumentPosition = argumentIndex + 1; var startingArgumentPosition = argumentIndex + 1;
@ -2140,6 +2140,7 @@ return function (global, window, document, undefined) {
break; break;
case "finish": case "finish":
case "finishAll":
case "stop": case "stop":
/******************* /*******************
Action: Stop Action: Stop
@ -2158,6 +2159,22 @@ return function (global, window, document, undefined) {
delete Data(element).delayTimer; delete Data(element).delayTimer;
} }
/* If we want to finish everything in the queue, we have to iterate through it
and call each function. This will make them active calls below, which will
cause them to be applied via the duration setting. */
if (propertiesMap === "finishAll" && (options === true || Type.isString(options))) {
/* Iterate through the items in the element's queue. */
$.each($.queue(element, Type.isString(options) ? options : ""), function(_, item) {
/* The queue array can contain an "inprogress" string, which we skip. */
if (Type.isFunction(item)) {
item();
}
});
/* Clearing the $.queue() array is achieved by resetting it to []. */
$.queue(element, Type.isString(options) ? options : "", []);
}
}); });
var callsToStop = []; var callsToStop = [];
@ -2193,7 +2210,8 @@ return function (global, window, document, undefined) {
$.each(elements, function(l, element) { $.each(elements, function(l, element) {
/* Check that this call was applied to the target element. */ /* Check that this call was applied to the target element. */
if (element === activeElement) { if (element === activeElement) {
/* Optionally clear the remaining queued calls. */ /* Optionally clear the remaining queued calls. If we're doing "finishAll" this won't find anything,
due to the queue-clearing above. */
if (options === true || Type.isString(options)) { if (options === true || Type.isString(options)) {
/* Iterate through the items in the element's queue. */ /* Iterate through the items in the element's queue. */
$.each($.queue(element, Type.isString(options) ? options : ""), function(_, item) { $.each($.queue(element, Type.isString(options) ? options : ""), function(_, item) {
@ -2221,7 +2239,7 @@ return function (global, window, document, undefined) {
} }
callsToStop.push(i); callsToStop.push(i);
} else if (propertiesMap === "finish") { } else if (propertiesMap === "finish" || propertiesMap === "finishAll") {
/* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that /* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that
they finish upon the next rAf tick then proceed with normal call completion logic. */ they finish upon the next rAf tick then proceed with normal call completion logic. */
activeCall[2].duration = 1; activeCall[2].duration = 1;

File diff suppressed because one or more lines are too long

View file

@ -168,7 +168,6 @@
.searchResultsOverlay { .searchResultsOverlay {
position: fixed; position: fixed;
background: rgba(34, 34, 34, 1);
top: 50px; top: 50px;
left: 0; left: 0;
right: 0; right: 0;

View file

@ -31,6 +31,19 @@
</div> </div>
</div> </div>
<br />
<h1>
${HeaderCameraUpload}
</h1>
<div class="detailSectionContent">
<p>${SelectCameraUploadServers}</p>
<br />
<div class="paperCheckboxList uploadServerList">
</div>
</div>
<br /> <br />
<br /> <br />
<button type="submit" data-role="none" class="clearButton"> <button type="submit" data-role="none" class="clearButton">

View file

@ -4,16 +4,14 @@
<title>Emby</title> <title>Emby</title>
</head> </head>
<body> <body>
<div id="nowPlayingPage" data-role="page" class="page libraryPage nowPlayingPage noSecondaryNavPage" data-contextname="${TitleRemoteControl}" data-theme="b" data-require="jqmcollapsible,scripts/nowplayingpage,paperbuttonstyle"> <div id="nowPlayingPage" data-role="page" class="page libraryPage nowPlayingPage noSecondaryNavPage" data-contextname="${TitleRemoteControl}" data-theme="b" data-require="jqmcollapsible,scripts/nowplayingpage">
<div class="libraryViewNav"> <div class="libraryViewNav">
<paper-tabs class="nowPlayingPagePaperTabs" hidescrollbuttons noink> <div>
<a href="#" data-index="0">${TabNowPlaying}</a>
<paper-tab>${TabNowPlaying}</paper-tab> <a href="#" data-index="1">${TabControls}</a>
<paper-tab>${TabControls}</paper-tab> <a href="#" data-index="2">${TabPlaylist}</a>
<paper-tab>${TabPlaylist}</paper-tab> </div>
</paper-tabs>
</div> </div>
<div data-role="content" style="overflow:visible;"> <div data-role="content" style="overflow:visible;">
@ -27,7 +25,7 @@
</div> </div>
</div> </div>
<neon-animated-pages selected="{{selected}}"> <neon-animated-pages>
<neon-animatable> <neon-animatable>
<div style="text-align:center;"> <div style="text-align:center;">
@ -167,6 +165,13 @@
</div> </div>
</div> </div>
<paper-tabs class="nowPlayingPagePaperTabs" hidescrollbuttons noink>
<paper-tab>${TabNowPlaying}</paper-tab>
<paper-tab>${TabControls}</paper-tab>
<paper-tab>${TabPlaylist}</paper-tab>
</paper-tabs>
</div> </div>
</body> </body>
</html> </html>

View file

@ -98,6 +98,21 @@
return appStorage.getItem('displayLanguage') || 'en-US'; return appStorage.getItem('displayLanguage') || 'en-US';
}, },
cameraUploadServers: function (val) {
if (val != null) {
update('cameraUploadServers', val.join(','));
}
val = appStorage.getItem('cameraUploadServers');
if (val) {
return val.split(',');
}
return [];
},
displayPreferencesKey: function () { displayPreferencesKey: function () {
if (AppInfo.isNativeApp) { if (AppInfo.isNativeApp) {
return 'Emby Mobile'; return 'Emby Mobile';

View file

@ -633,6 +633,18 @@
}); });
} }
function enableScrollX() {
return $.browser.mobile && AppInfo.enableAppLayouts;
}
function getPortraitShape() {
return enableScrollX() ? 'overflowPortrait' : 'detailPagePortrait';
}
function getSquareShape() {
return enableScrollX() ? 'overflowSquare' : 'detailPageSquare';
}
function renderSimilarItems(page, item, context) { function renderSimilarItems(page, item, context) {
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "Series" || item.Type == "Program" || item.Type == "Recording" || item.Type == "Game" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "ChannelVideoItem") { if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "Series" || item.Type == "Program" || item.Type == "Recording" || item.Type == "Game" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "ChannelVideoItem") {
@ -643,7 +655,7 @@
return; return;
} }
var shape = item.Type == "MusicAlbum" || item.Type == "MusicArtist" ? "detailPageSquare" : "detailPagePortrait"; var shape = item.Type == "MusicAlbum" || item.Type == "MusicArtist" ? getSquareShape() : getPortraitShape();
var screenWidth = $(window).width(); var screenWidth = $(window).width();
var screenHeight = $(window).height(); var screenHeight = $(window).height();
@ -657,6 +669,10 @@
options.limit *= 2; options.limit *= 2;
} }
if (enableScrollX()) {
options.limit = 12;
}
ApiClient.getSimilarItems(item.Id, options).done(function (result) { ApiClient.getSimilarItems(item.Id, options).done(function (result) {
if (!result.Items.length) { if (!result.Items.length) {
@ -669,7 +685,14 @@
$('.similiarHeader', elem).html(Globalize.translate('HeaderIfYouLikeCheckTheseOut', item.Name)); $('.similiarHeader', elem).html(Globalize.translate('HeaderIfYouLikeCheckTheseOut', item.Name));
var html = LibraryBrowser.getPosterViewHtml({ var html = '';
if (enableScrollX()) {
html += '<div class="hiddenScrollX itemsContainer">';
} else {
html += '<div class="itemsContainer">';
}
html += LibraryBrowser.getPosterViewHtml({
items: result.Items, items: result.Items,
shape: shape, shape: shape,
showParentTitle: item.Type == "MusicAlbum", showParentTitle: item.Type == "MusicAlbum",
@ -682,6 +705,7 @@
coverImage: item.Type == "MusicAlbum" || item.Type == "MusicArtist", coverImage: item.Type == "MusicAlbum" || item.Type == "MusicArtist",
overlayPlayButton: true overlayPlayButton: true
}); });
html += '</div>';
$('#similarContent', page).html(html).lazyChildren().createCardMenus(); $('#similarContent', page).html(html).lazyChildren().createCardMenus();
}); });

View file

@ -24,6 +24,8 @@
options.enableBackgroundTransfer = true; options.enableBackgroundTransfer = true;
} }
options.cameraUploadServers = AppSettings.cameraUploadServers();
syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync(options).done(function () { syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync(options).done(function () {
syncPromise = null; syncPromise = null;

View file

@ -6,6 +6,17 @@
page.querySelector('#chkWifi').checked = AppSettings.syncOnlyOnWifi(); page.querySelector('#chkWifi').checked = AppSettings.syncOnlyOnWifi();
page.querySelector('#chkSyncLosslessAudio').checked = AppSettings.syncLosslessAudio(); page.querySelector('#chkSyncLosslessAudio').checked = AppSettings.syncLosslessAudio();
var uploadServers = AppSettings.cameraUploadServers();
page.querySelector('.uploadServerList').innerHTML = ConnectionManager.getSavedServers().map(function (s) {
var checkedHtml = uploadServers.indexOf(s.Id) == -1 ? '' : ' checked';
var html = '<paper-checkbox' + checkedHtml + ' class="chkUploadServer" data-id="' + s.Id + '">' + s.Name + '</paper-checkbox>';
return html;
}).join('');
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
} }

View file

@ -775,20 +775,37 @@
var tabs = page.querySelector('paper-tabs'); var tabs = page.querySelector('paper-tabs');
if (AppInfo.enableNowPlayingPageBottomTabs) { if (AppInfo.enableNowPlayingPageBottomTabs) {
tabs.alignBottom = true; tabs.classList.remove('hide');
tabs.classList.add('bottom');
//page.classList.add('noSecondaryNavPage'); //page.classList.add('noSecondaryNavPage');
} else { } else {
tabs.classList.remove('bottom'); tabs.classList.add('hide');
//page.classList.remove('noSecondaryNavPage'); //page.classList.remove('noSecondaryNavPage');
} }
tabs.classList.add('bottom');
tabs.alignBottom = true;
LibraryBrowser.configureSwipeTabs(page, tabs, page.querySelectorAll('neon-animated-pages')[0]); LibraryBrowser.configureSwipeTabs(page, tabs, page.querySelectorAll('neon-animated-pages')[0]);
$(tabs).on('iron-select', function () { $(tabs).on('iron-select', function () {
page.querySelector('neon-animated-pages').selected = this.selected; page.querySelector('neon-animated-pages').selected = this.selected;
}); });
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
var btn = page.querySelector('.libraryViewNav a.ui-btn-active');
if (btn) {
btn.classList.remove('ui-btn-active');
}
page.querySelector('.libraryViewNav a[data-index=\'' + this.selected + '\']').classList.add('ui-btn-active');
});
$(page.querySelectorAll('.libraryViewNav a')).on('click', function () {
var newSelected = this.getAttribute('data-index');
tabs.selected = newSelected;
page.querySelector('neon-animated-pages').selected = newSelected;
});
$(MediaController).on('playerchange', function () { $(MediaController).on('playerchange', function () {
updateCastIcon(page); updateCastIcon(page);
}); });

View file

@ -147,7 +147,7 @@
if (createIfNeeded && !elem) { if (createIfNeeded && !elem) {
var html = '<div class="searchResultsOverlay ui-body-b smoothScrollY">'; var html = '<div class="searchResultsOverlay ui-body-b smoothScrollY background-theme-b">';
html += '<div class="searchResultsContainer"><div class="itemsContainer"></div></div></div>'; html += '<div class="searchResultsContainer"><div class="itemsContainer"></div></div></div>';

View file

@ -1729,6 +1729,7 @@ var AppInfo = {};
AppInfo.enableCustomHomeSections = true; AppInfo.enableCustomHomeSections = true;
AppInfo.enableHomeTabs = true; AppInfo.enableHomeTabs = true;
AppInfo.enableNowPlayingPageBottomTabs = true; AppInfo.enableNowPlayingPageBottomTabs = true;
AppInfo.enableNowPlayingPageBottomTabs = false;
AppInfo.enableAppStorePolicy = isCordova; AppInfo.enableAppStorePolicy = isCordova;
@ -1776,7 +1777,6 @@ var AppInfo = {};
AppInfo.enableMovieTrailersTab = true; AppInfo.enableMovieTrailersTab = true;
} }
AppInfo.enableAppLayouts = true;
if (isCordova) { if (isCordova) {
AppInfo.enableAppLayouts = true; AppInfo.enableAppLayouts = true;
AppInfo.hasKnownExternalPlayerSupport = true; AppInfo.hasKnownExternalPlayerSupport = true;
@ -1946,6 +1946,7 @@ var AppInfo = {};
Dashboard.importCss('themes/ios.css'); Dashboard.importCss('themes/ios.css');
} }
} }
Dashboard.importCss('themes/ios.css');
if ($.browser.msie && $.browser.tv && ($.browser.version || 11) <= 10) { if ($.browser.msie && $.browser.tv && ($.browser.version || 11) <= 10) {
Dashboard.importCss('thirdparty/paper-ie10.css'); Dashboard.importCss('thirdparty/paper-ie10.css');

View file

@ -1544,5 +1544,7 @@
"LabelHardwareVideoDecoderHelp": "Available on supported systems only.", "LabelHardwareVideoDecoderHelp": "Available on supported systems only.",
"ButtonServerDashboard": "Server Dashboard", "ButtonServerDashboard": "Server Dashboard",
"HeaderAdmin": "Admin", "HeaderAdmin": "Admin",
"ButtonSignOut": "Sign out" "ButtonSignOut": "Sign out",
"HeaderCameraUpload": "Camera Upload",
"SelectCameraUploadServers": "Upload camera photos to the following servers:"
} }

View file

@ -231,5 +231,5 @@ paper-tab {
} }
.nowPlayingPage { .nowPlayingPage {
padding-top: 40px !important; padding-top: 50px !important;
} }