update recording dialogs

This commit is contained in:
Luke Pulverenti 2016-10-15 18:12:16 -04:00
parent bdfd870584
commit 141344eead
60 changed files with 546 additions and 211 deletions

View File

@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.1.89",
"_release": "1.1.89",
"version": "1.1.90",
"_release": "1.1.90",
"_resolution": {
"type": "version",
"tag": "1.1.89",
"commit": "eb7fd9c48824ee465f324e855025c8f66a37b628"
"tag": "1.1.90",
"commit": "eb52e55b0f856ac89abcea9a71f475595d718627"
},
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "^1.1.51",

View File

@ -1264,7 +1264,7 @@
url: "https://connect.emby.media/service/user/authenticate",
data: {
nameOrEmail: username,
password: password
rawpw: password
},
dataType: "json",
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
@ -1313,7 +1313,7 @@
var data = {
email: email,
userName: username,
password: password
rawpw: password
};
if (options.grecaptcha) {

View File

@ -14,12 +14,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.4.309",
"_release": "1.4.309",
"version": "1.4.311",
"_release": "1.4.311",
"_resolution": {
"type": "version",
"tag": "1.4.309",
"commit": "165fff8c1d63560b3e18190edd7caed2da5d0308"
"tag": "1.4.311",
"commit": "79239f58e5686817ca11b88d3c105d5b887f6292"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1",

View File

@ -264,12 +264,14 @@ define(['browser'], function (browser) {
// Otherwise with HLS and mp3 audio we're seeing some browsers
// safari is lying
if ((videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '') && !browser.safari) || browser.edgeUwp || browser.tizen) {
videoAudioCodecs.push('ac3');
if ((options.disableVideoAudioCodecs || []).indexOf('ac3') == -1) {
videoAudioCodecs.push('ac3');
// This works in edge desktop, but not mobile
// TODO: Retest this on mobile
if (!browser.edge || !browser.touch) {
hlsVideoAudioCodecs.push('ac3');
// This works in edge desktop, but not mobile
// TODO: Retest this on mobile
if (!browser.edge || !browser.touch) {
hlsVideoAudioCodecs.push('ac3');
}
}
}

View File

@ -24,13 +24,131 @@
});
}
function showPeriodicMessage(feature, settingsKey) {
return new Promise(function (resolve, reject) {
appSettings.set(settingsKey, new Date().getTime());
require(['listViewStyle', 'emby-button', 'formDialogStyle'], function () {
var dlg = dialogHelper.createDialog({
size: 'fullscreen-border',
removeOnClose: true,
scrollY: false
});
dlg.classList.add('formDialog');
var html = '';
html += '<div class="formDialogHeader">';
html += '<button is="paper-icon-button-light" class="btnCancelSupporterInfo autoSize" tabindex="-1"><i class="md-icon">&#xE5C4;</i></button>';
html += '<h3 class="formDialogHeaderTitle">';
html += '</h3>';
html += '</div>';
html += '<div class="formDialogContent smoothScrollY">';
html += '<div class="dialogContentInner dialog-content-centered">';
html += '<h1>' + globalize.translate('sharedcomponents#HeaderDiscoverEmbyPremiere') + '</h1>';
html += '<p>' + globalize.translate('sharedcomponents#MessageDidYouKnowCinemaMode') + '</p>';
html += '<p>' + globalize.translate('sharedcomponents#MessageDidYouKnowCinemaMode2') + '</p>';
html += '<h1 style="margin-top:1.5em;">' + globalize.translate('sharedcomponents#HeaderBenefitsEmbyPremiere') + '</h1>';
html += '<div class="paperList">';
html += getSubscriptionBenefits().map(getSubscriptionBenefitHtml).join('');
html += '</div>';
html += '<br/>';
html += '<div class="formDialogFooter">';
html += '<button is="emby-button" type="button" class="raised button-submit block btnGetPremiere formDialogFooterItem" autoFocus><span>' + globalize.translate('sharedcomponents#HeaderBecomeProjectSupporter') + '</span></button>';
html += '<button is="emby-button" type="button" class="raised button-cancel block btnCancelSupporterInfo formDialogFooterItem"><span>' + globalize.translate('sharedcomponents#HeaderPlayMyMedia') + '</span></button>';
html += '</div>';
html += '</div>';
html += '</div>';
dlg.innerHTML = html;
if (layoutManager.tv) {
centerFocus(dlg.querySelector('.formDialogContent'), false, true);
}
// Has to be assigned a z-index after the call to .open()
dlg.addEventListener('close', function (e) {
if (layoutManager.tv) {
centerFocus(dlg.querySelector('.formDialogContent'), false, false);
}
appSettings.set(settingsKey, new Date().getTime());
resolve();
});
dlg.querySelector('.btnGetPremiere').addEventListener('click', showPremiereInfo);
dialogHelper.open(dlg);
var onCancelClick = function () {
dialogHelper.close(dlg);
};
var i, length;
var elems = dlg.querySelectorAll('.btnCancelSupporterInfo');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener('click', onCancelClick);
}
});
});
}
function showPeriodicMessageIfNeeded(feature) {
var intervalMs = iapManager.getPeriodicMessageIntervalMs(feature);
if (intervalMs <= 0) {
return Promise.resolve();
}
var settingsKey = 'periodicmessage-' + feature;
var lastMessage = parseInt(appSettings.get(settingsKey) || '0');
if (!lastMessage) {
// Don't show on the very first playback attempt
appSettings.set(settingsKey, new Date().getTime());
return Promise.resolve();
}
if ((new Date().getTime() - lastMessage) > intervalMs) {
connectionManager.currentApiClient().getPluginSecurityInfo().then(function (regInfo) {
if (regInfo.IsMBSupporter) {
appSettings.set(settingsKey, new Date().getTime());
return Promise.resolve();
}
return showPeriodicMessage(feature, settingsKey);
}, function () {
return showPeriodicMessage(feature, settingsKey);
});
}
return Promise.resolve();
}
function validateFeature(feature, options) {
options = options || {};
console.log('validateFeature: ' + feature);
return iapManager.isUnlockedByDefault(feature).catch(function () {
return iapManager.isUnlockedByDefault(feature).then(function () {
return showPeriodicMessageIfNeeded(feature);
}, function () {
var unlockableFeatureCacheKey = 'featurepurchased-' + feature;
if (appSettings.get(unlockableFeatureCacheKey) == '1') {
@ -157,8 +275,9 @@
html += '</p>';
var hasProduct = false;
var i, length;
for (var i = 0, length = subscriptionOptions.length; i < length; i++) {
for (i = 0, length = subscriptionOptions.length; i < length; i++) {
hasProduct = true;
html += '<p>';
@ -205,7 +324,6 @@
dlg.innerHTML = html;
document.body.appendChild(dlg);
var i, length;
var btnPurchases = dlg.querySelectorAll('.btnPurchase');
for (i = 0, length = btnPurchases.length; i < length; i++) {
btnPurchases[i].addEventListener('click', onPurchaseButtonClick);

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -1,12 +1,12 @@
{
"MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.",
"MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.",
"MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.",
"MessageUnlockAppWithPurchaseOrSupporter": "Schalte diese Funktion mit einer kleinen einmaligen Geb\u00fchr oder einem aktiven Emby Premium Abo frei.",
"MessageUnlockAppWithSupporter": "Schalte diese Funktion mit einem aktiven Emby Premium Abo frei.",
"MessageToValidateSupporter": "Wenn du eine aktive Emby Premiere Mitgliedschaft hast, stelle bitte sicher, dass du diese \u00fcber das Emby Server Dashboard eingerichtet hast (Hauptmenu -> Emby Premiere).",
"ValueSpecialEpisodeName": "Special - {0}",
"Share": "Teilen",
"Add": "Hinzuf\u00fcgen",
"ServerUpdateNeeded": "Dieser Emby Server muss aktualisiert werden. Um die neueste Version herunterzuladen, besuchen sie bitte {0}",
"LiveTvGuideRequiresUnlock": "Ihr TV-Guide ist begrenzt auf {0} Kan\u00e4le. Klicken Sie auf die Freischalten Schaltfl\u00e4che um weitere Informationen zu erhalten.",
"ServerUpdateNeeded": "Dieser Emby Server muss aktualisiert werden. Um die neueste Version herunterzuladen, besuche bitte {0}",
"LiveTvGuideRequiresUnlock": "Dein TV-Guide ist begrenzt auf {0} Kan\u00e4le. Klicke auf die Freischalten Schaltfl\u00e4che um weitere Informationen zu erhalten.",
"AttributeNew": "Neu",
"Premiere": "Premiere",
"Live": "Live",
@ -42,19 +42,19 @@
"Saturday": "Samstag",
"Days": "Tage",
"RecordSeries": "Serie aufnehmen",
"HeaderCinemaMode": "Cinema Mode",
"HeaderCloudSync": "Cloud Sync",
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
"CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
"HeaderCinemaMode": "Kinomodus",
"HeaderCloudSync": "Cloud Synchronisation",
"HeaderOfflineDownloads": "Offline Medien",
"HeaderOfflineDownloadsDescription": "Lade Medien auf deine Ger\u00e4te herunter um sie einfach offline zu nutzen.",
"CloudSyncFeatureDescription": "Synchronisiere deine Medien in die Cloud f\u00fcr ein Backup, eine Archivierung und Konvertierung.",
"CoverArtFeatureDescription": "Cover Art erstellt z.B. lustige Cover und erlaubt dir eine weitergehende pers\u00f6nliche Gestaltung deiner Medienbilder.",
"CoverArt": "Cover Art",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
"HeaderFreeApps": "Free Emby Apps",
"FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.",
"HeaderBecomeProjectSupporter": "Holen Sie Emby Premium",
"CinemaModeFeatureDescription": "Der Cinema Mode bringt das richtige Kinogef\u00fchl mit Trailern und eigenen Intros vor dem Hauptfilm.",
"HeaderFreeApps": "Kostenlose Emby Apps",
"FreeAppsFeatureDescription": "Genie\u00dfe Zugriff auf kostenlose Emby Apps f\u00fcr deine Ger\u00e4te.",
"HeaderBecomeProjectSupporter": "Hol dir Emby Premiere",
"MessageActiveSubscriptionRequiredSeriesRecordings": "Ein aktives Emby Premium Abo wird benn\u00f6tigt um automatische Serienaufnahmen zu erstellen.",
"LabelEmailAddress": "E-mail address:",
"LabelEmailAddress": "E-Mail Adresse:",
"PromoConvertRecordingsToStreamingFormat": "Konvertiere Aufnahmen automatisch in ein Streaming-freundliches Format mit Emby Premiere. Aufnahmen werden, basierend auf den Emby Server-Einstellungen, dynamisch zu MP4 oder MKV konvertiert.",
"FeatureRequiresEmbyPremiere": "Dieses Feature ben\u00f6tigt eine aktive Emby Premiere Mitgliedschaft.",
"HeaderConvertYourRecordings": "Konvertiere deine Aufnahmen",
@ -65,7 +65,7 @@
"Advanced": "Erweitert",
"Delete": "L\u00f6schen",
"HeaderDeleteItem": "L\u00f6sche Element",
"ConfirmDeleteItem": "L\u00f6schen dieses Eintrages bedeutet das L\u00f6schen der Datei und das Entfernen aus der Medien-Bibliothek. M\u00f6chten Sie wirklich fortfahren?",
"ConfirmDeleteItem": "L\u00f6schen dieses Eintrages bedeutet das L\u00f6schen der Datei und das Entfernen aus der Medien-Bibliothek. M\u00f6chtest du wirklich fortfahren?",
"Refresh": "Aktualisieren",
"RefreshQueued": "Warteschlange aktualisieren.",
"AddToCollection": "Zur Sammlung hinzuf\u00fcgen",
@ -100,11 +100,11 @@
"SearchForMissingMetadata": "Suche nach fehlenden Metadaten",
"LabelRefreshMode": "Aktualisierungsmodus:",
"NoItemsFound": "Keine Eintr\u00e4ge gefunden.",
"HeaderSaySomethingLike": "Sagen Sie etwas wie...",
"HeaderSaySomethingLike": "Sage etwas wie...",
"ButtonTryAgain": "Erneut versuchen",
"HeaderYouSaid": "Sie sagten....",
"HeaderYouSaid": "Du sagtest...",
"MessageWeDidntRecognizeCommand": "Entschuldigung, dieses Kommando konnten wir nicht erkennen.",
"MessageIfYouBlockedVoice": "Wenn Sie die Sprachsteuerung f\u00fcr die App nicht erlaubt haben so m\u00fcssen Sie dies zuvor \u00e4ndern bevor Sie es erneut probieren.",
"MessageIfYouBlockedVoice": "Wenn du die Sprachsteuerung f\u00fcr die App nicht erlaubt hast, musst du dies vor einem erneuten Versuch \u00e4ndern.",
"ValueDiscNumber": "Disc {0}",
"Unrated": "Nicht bewertet",
"Favorite": "Favorit",
@ -134,7 +134,7 @@
"GroupVersions": "Gruppiere Versionen",
"PleaseSelectTwoItems": "Bitte w\u00e4hle mindestens zwei Optionen aus.",
"TryMultiSelect": "Versuche Mehrfachauswahl",
"TryMultiSelectMessage": "F\u00fcr eine Mehrfachauswahl klicken und halten Sie ein Poster. W\u00e4hlen Sie die Eintr\u00e4ge die Sie bearbeiten m\u00f6chten. Versuchen SIe es!",
"TryMultiSelectMessage": "F\u00fcr eine Mehrfachauswahl klicke und halte ein Poster. W\u00e4hle die Eintr\u00e4ge die du bearbeiten m\u00f6chten. Versuch es!",
"HeaderConfirmRecordingCancellation": "Best\u00e4tige Aufzeichnungsabbruch",
"MessageConfirmRecordingCancellation": "Bis du dir sicher, diese Aufzeichnung abzubrechen?",
"Error": "Fehler",
@ -145,7 +145,7 @@
"LabelOriginalTitle": "Original Titel:",
"LabelSortTitle": "Sortierungs Titel:",
"LabelDateAdded": "Hinzugef\u00fcgt am:",
"ConfigureDateAdded": "Bestimmen Sie in den Bibliotheks-Einstellungen des Emby Server Dashboards, wie das Feld \"Hinzugef\u00fcgt am\" interpretiert werden soll.",
"ConfigureDateAdded": "Bestimme in den Bibliotheks-Einstellungen des Emby Server Dashboards, wie das Feld \"Hinzugef\u00fcgt am\" interpretiert werden soll.",
"LabelStatus": "Status:",
"LabelArtists": "Interpreten:",
"LabelArtistsHelp": "Trenne mehrere Eintr\u00e4ge durch ;",
@ -213,7 +213,7 @@
"Continuing": "Fortdauernd",
"Ended": "Beendent",
"HeaderEnabledFields": "Aktiviere Felder",
"HeaderEnabledFieldsHelp": "W\u00e4hlen Sie Felder ab um das \u00c4ndern von Daten zu verhindern.",
"HeaderEnabledFieldsHelp": "W\u00e4hle Felder ab um das \u00c4ndern von Daten zu verhindern.",
"Backdrops": "Hintergr\u00fcnde",
"Images": "Bilder",
"Keywords": "Stichworte",
@ -236,7 +236,7 @@
"PackageInstallCompleted": "{0} Installation abgeschlossen",
"PackageInstallFailed": "{0} Installation fehlgeschlagen",
"PackageInstallCancelled": "{0} Installation abgebrochen",
"SeriesYearToPresent": "{0}-heute",
"SeriesYearToPresent": "{0}-Heute",
"ValueOneSong": "1 Lied",
"ValueSongCount": "{0} Lieder",
"ValueOneMovie": "1 Film",
@ -261,13 +261,13 @@
"ServerNameIsRestarting": "Emby Server - {0} startet neu.",
"ServerNameIsShuttingDown": "Emby Server - {0} f\u00e4hrt herunter.",
"HeaderDeleteItems": "L\u00f6sche Objekte",
"ConfirmDeleteItems": "Das L\u00f6schen dieser Objekte l\u00f6scht die Dateien vom Laufwerk und Ihrer Medienbibliothek. Sind Sie sich wirklich sicher?",
"ConfirmDeleteItems": "Das L\u00f6schen dieser Objekte l\u00f6scht die Dateien vom Laufwerk und in deiner Medienbibliothek. Bist du wirklich sicher?",
"PleaseRestartServerName": "Bitte starte Emby Server - {0} neu.",
"SyncJobCreated": "Synchronisations-Aufgabe erstellt.",
"LabelSyncTo": "Synchronisiere mit:",
"LabelSyncJobName": "Synchronisations-Aufgabe:",
"LabelQuality": "Qualit\u00e4t:",
"LabelSyncNoTargetsHelp": "Es sieht so aus als w\u00fcrden Sie aktuell keine Apps verwenden, die Synchronisation unterst\u00fctzen.",
"LabelSyncNoTargetsHelp": "Es sieht so aus als w\u00fcrdest du aktuell keine Apps verwenden, die Synchronisation unterst\u00fctzen.",
"DownloadScheduled": "Download geplant",
"LearnMore": "Erfahre mehr",
"LabelProfile": "Profil:",
@ -277,8 +277,8 @@
"AutomaticallySyncNewContent": "Synchronisiere neue Inhalte automatisch",
"AutomaticallySyncNewContentHelp": "Neu zu diesem Ordner hinzugef\u00fcgte Inhalte werden automatisch mit dem Ger\u00e4t synchronisiert.",
"LabelItemLimit": "Maximale Anzahl:",
"LabelItemLimitHelp": "Optional. Legen Sie die maximale Anzahl der zu synchronisierenden Eintr\u00e4ge fest.",
"PleaseSelectDeviceToSyncTo": "Bitte w\u00e4hlen Sie ein zu synchronisierendes Ger\u00e4t.",
"LabelItemLimitHelp": "Optional. Lege die maximale Anzahl der zu synchronisierenden Eintr\u00e4ge fest.",
"PleaseSelectDeviceToSyncTo": "Bitte w\u00e4hle ein zu synchronisierendes Ger\u00e4t.",
"Screenshots": "Screenshots",
"MoveRight": "Nach rechts bewegen",
"MoveLeft": "Nach links bewegen",
@ -334,17 +334,21 @@
"SortChannelsBy": "Sortiere Kan\u00e4le nach:",
"RecentlyWatched": "K\u00fcrzlich gesehen",
"ChannelNumber": "Kanalnummer",
"HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere",
"ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.",
"HeaderTryPlayback": "Try Playback",
"HowDidYouPay": "How did you pay?",
"IHaveEmbyPremiere": "I have Emby Premiere",
"IPurchasedThisApp": "I purchased this app",
"ButtonRestorePreviousPurchase": "Restore Purchase",
"ButtonUnlockWithPurchase": "Unlock with Purchase",
"ButtonUnlockPrice": "Unlock {0}",
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"HeaderBenefitsEmbyPremiere": "Vorteile von Emby Premiere",
"ThankYouForTryingEnjoyOneMinute": "Genie\u00dfe eine Minute Wiedergabe. Danke, dass du Emby ausprobierst.",
"HeaderTryPlayback": "Wiedergabe ausprobieren",
"HowDidYouPay": "Wie hast Du bezahlt?",
"IHaveEmbyPremiere": "Ich besitze Emby Premiere",
"IPurchasedThisApp": "Ich habe diese App gekauft",
"ButtonRestorePreviousPurchase": "Kauf wiederherstellen",
"ButtonUnlockWithPurchase": "Freischalten durch Kauf",
"ButtonUnlockPrice": "{0} freischalten",
"ButtonAlreadyPaid": "Schon bezahlt?",
"ButtonPlayOneMinute": "Eine Minute wiedergeben",
"PlaceFavoriteChannelsAtBeginning": "Platziere favorisierte Kan\u00e4le am Anfang",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Feature freischalten",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "\u00bfYa esta pagado?",
"ButtonPlayOneMinute": "Reproducir un minuto",
"PlaceFavoriteChannelsAtBeginning": "Colocar canales favoritos al inicio",
"HeaderUnlockFeature": "Desbloquear Caracter\u00edstica"
"HeaderUnlockFeature": "Desbloquear Caracter\u00edstica",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Postavi omiljene kanale na po\u010detak",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "\u04d8\u043b\u0434\u0435\u049b\u0430\u0448\u0430\u043d \u0442\u04e9\u043b\u0435\u043d\u0434\u0456 \u043c\u0435?",
"ButtonPlayOneMinute": "\u0411\u0456\u0440 \u043c\u0438\u043d\u04e9\u0442 \u043e\u0439\u043d\u0430\u0442\u0443",
"PlaceFavoriteChannelsAtBeginning": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0435\u04a3 \u0431\u0430\u0441\u044b\u043d\u0430\u043d \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
"HeaderUnlockFeature": "\u0410\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b \u049b\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443"
"HeaderUnlockFeature": "\u0410\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b \u049b\u04b1\u0440\u0441\u0430\u0443\u044b\u043d \u0431\u043e\u0441\u0430\u0442\u0443",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -1,7 +1,7 @@
{
"MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.",
"MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.",
"MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.",
"MessageUnlockAppWithPurchaseOrSupporter": "Desbloqueie esta funcionalidade com uma pequena compra \u00fanica, ou com uma assinatura ativa do Emby Premiere.",
"MessageUnlockAppWithSupporter": "Desbloqueie esta funcionalidade com uma assinatura ativa do Emby Premiere.",
"MessageToValidateSupporter": "Se tiver uma assinatura ativa do Emby Premiere, assegure-se que configurou o Emby Premiere no Painel do Servidor Emby, que pode ser acessado clicando Emby Premiere no menu principal.",
"ValueSpecialEpisodeName": "Especial - {0}",
"Share": "Compartilhar",
"Add": "Adicionar",
@ -42,19 +42,19 @@
"Saturday": "S\u00e1bado",
"Days": "Dias",
"RecordSeries": "Gravar s\u00e9rie",
"HeaderCinemaMode": "Cinema Mode",
"HeaderCloudSync": "Cloud Sync",
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
"CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
"CoverArt": "Cover Art",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
"HeaderFreeApps": "Free Emby Apps",
"FreeAppsFeatureDescription": "Enjoy free access to Emby apps for your devices.",
"HeaderCinemaMode": "Modo Cinema",
"HeaderCloudSync": "Sincroniza\u00e7\u00e3o na Nuvem",
"HeaderOfflineDownloads": "M\u00eddia Offline",
"HeaderOfflineDownloadsDescription": "Download sua m\u00eddia para seus dispositivos para uso offline f\u00e1cil.",
"CloudSyncFeatureDescription": "Sincronize sua m\u00eddia para a nuvem para backup, arquivamento e convers\u00e3o f\u00e1ceis.",
"CoverArtFeatureDescription": "Arta da Capa cria capas divertidas e d\u00e1 outros tratamentos para ajudar na personaliza\u00e7\u00e3o das imagens da sua m\u00eddia.",
"CoverArt": "Arta da Capa",
"CinemaModeFeatureDescription": "Modo Cinema oferece a voc\u00ea uma verdadeira experi\u00eancia de cinema com trailers e intros customizados antes da funcionalidade.",
"HeaderFreeApps": "Apps Emby gr\u00e1tis",
"FreeAppsFeatureDescription": "Aproveite acesso gr\u00e1tis a apps Emby para seus dispositivos.",
"HeaderBecomeProjectSupporter": "Obter Emby Premiere",
"MessageActiveSubscriptionRequiredSeriesRecordings": "Uma subscri\u00e7\u00e3o ativa do Emby Premiere \u00e9 requerida para criar a grava\u00e7\u00e3o automatizada de s\u00e9ries.",
"LabelEmailAddress": "E-mail address:",
"LabelEmailAddress": "Endere\u00e7o de E-mail:",
"PromoConvertRecordingsToStreamingFormat": "Converter automaticamente grava\u00e7\u00f5es para um formato amig\u00e1vel para streaming com Emby Premiere. Grava\u00e7\u00f5es ser\u00e3o convertidas em tempo real para MP4 ou MKV, baseado nas configura\u00e7\u00f5es do Servidor Emby.",
"FeatureRequiresEmbyPremiere": "Este recurso requer uma subscri\u00e7\u00e3o ativa do Emby Premiere",
"HeaderConvertYourRecordings": "Converter suas Grava\u00e7\u00f5es",
@ -293,7 +293,7 @@
"RepeatEpisodes": "Repetir epis\u00f3dios",
"DvrSubscriptionRequired": "Emby DVR requer uma assinatura ativa do Emby Premiere",
"HeaderCancelRecording": "Cancelar Grava\u00e7\u00e3o",
"CancelRecording": "Cancel recording",
"CancelRecording": "Cancelar grava\u00e7\u00e3o",
"HeaderKeepRecording": "Continuar Gravando",
"HeaderCancelSeries": "Cancelar S\u00e9rie",
"HeaderKeepSeries": "Manter S\u00e9rie",
@ -334,17 +334,21 @@
"SortChannelsBy": "Ordenar canais por:",
"RecentlyWatched": "Assistido recentemente",
"ChannelNumber": "N\u00famero do canal",
"HeaderBenefitsEmbyPremiere": "Benefits of Emby Premiere",
"ThankYouForTryingEnjoyOneMinute": "Please enjoy one minute of playback. Thank you for trying Emby.",
"HeaderTryPlayback": "Try Playback",
"HowDidYouPay": "How did you pay?",
"IHaveEmbyPremiere": "I have Emby Premiere",
"IPurchasedThisApp": "I purchased this app",
"ButtonRestorePreviousPurchase": "Restore Purchase",
"ButtonUnlockWithPurchase": "Unlock with Purchase",
"ButtonUnlockPrice": "Unlock {0}",
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"HeaderBenefitsEmbyPremiere": "Benef\u00edcios do Emby Premiere",
"ThankYouForTryingEnjoyOneMinute": "Por favor aproveite um minuto de reprodu\u00e7\u00e3o. Obrigado por testar Emby.",
"HeaderTryPlayback": "Testar Reprodu\u00e7\u00e3o",
"HowDidYouPay": "Como voc\u00ea pagou?",
"IHaveEmbyPremiere": "Eu tenho Emby Premiere",
"IPurchasedThisApp": "Eu comprei este app",
"ButtonRestorePreviousPurchase": "Recuperar Compra",
"ButtonUnlockWithPurchase": "Desbloquear com Compra",
"ButtonUnlockPrice": "Desbloquear {0}",
"ButtonAlreadyPaid": "J\u00e1 pagou?",
"ButtonPlayOneMinute": "Reproduzir Um Minuto",
"PlaceFavoriteChannelsAtBeginning": "Colocar canais favoritos no in\u00edcio",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Desbloquear Funcionalidade",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "\u0423\u0436\u0435 \u043e\u043f\u043b\u0430\u0442\u0438\u043b\u0438?",
"ButtonPlayOneMinute": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043e\u0434\u043d\u0443 \u043c\u0438\u043d\u0443\u0442\u0443",
"PlaceFavoriteChannelsAtBeginning": "\u0420\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435",
"HeaderUnlockFeature": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443"
"HeaderUnlockFeature": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -346,5 +346,9 @@
"ButtonAlreadyPaid": "Already Paid?",
"ButtonPlayOneMinute": "Play One Minute",
"PlaceFavoriteChannelsAtBeginning": "Place favorite channels at the beginning",
"HeaderUnlockFeature": "Unlock Feature"
"HeaderUnlockFeature": "Unlock Feature",
"MessageDidYouKnowCinemaMode": "Did you know that with Emby Premiere, you can enhance your experience with features like Cinema Mode?",
"MessageDidYouKnowCinemaMode2": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the main feature.",
"HeaderPlayMyMedia": "Play my Media",
"HeaderDiscoverEmbyPremiere": "Discover Emby Premiere"
}

View File

@ -7,4 +7,63 @@
contain: layout style;
/* Can't use will-change because it causes the alpha picker to move when the page scrolls*/
/*will-change: transform;*/
}
@keyframes view-fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes view-fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes view-slideleft {
from {
transform: translate3d(100%, 0, 0);
}
to {
transform: none;
}
}
@keyframes view-slideleft-r {
from {
transform: none;
}
to {
transform: translate3d(-100%, 0, 0);
}
}
@keyframes view-slideright {
from {
transform: translate3d(-100%, 0, 0);
}
to {
transform: none;
}
}
@keyframes view-slideright-r {
from {
transform: none;
}
to {
transform: translate3d(100%, 0, 0);
}
}

View File

@ -116,72 +116,59 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
function slide(newAnimatedPage, oldAnimatedPage, transition, isBack) {
return new Promise(function (resolve, reject) {
var timings = {
duration: 450,
iterations: 1,
easing: 'ease-out',
fill: 'both'
};
var duration = 450;
var animations = [];
if (oldAnimatedPage) {
var destination = isBack ? '100%' : '-100%';
animations.push(oldAnimatedPage.animate([
{ transform: 'none', offset: 0 },
{ transform: 'translate3d(' + destination + ', 0, 0)', offset: 1 }
], timings));
if (isBack) {
oldAnimatedPage.style.animation = 'view-slideright-r ' + duration + 'ms ease-out normal both';
setAnimation(oldAnimatedPage, 'view-slideright-r ' + duration + 'ms ease-out normal both');
} else {
setAnimation(oldAnimatedPage, 'view-slideleft-r ' + duration + 'ms ease-out normal both');
}
animations.push(oldAnimatedPage);
}
var start = isBack ? '-100%' : '100%';
animations.push(newAnimatedPage.animate([
{ transform: 'translate3d(' + start + ', 0, 0)', offset: 0 },
{ transform: 'none', offset: 1 }
], timings));
if (isBack) {
setAnimation(newAnimatedPage, 'view-slideright ' + duration + 'ms ease-out normal both');
} else {
setAnimation(newAnimatedPage, 'view-slideleft ' + duration + 'ms ease-out normal both');
}
animations.push(newAnimatedPage);
currentAnimations = animations;
animations[animations.length - 1].onfinish = resolve;
setTimeout(resolve, duration);
});
}
function fade(newAnimatedPage, oldAnimatedPage, transition, isBack) {
return new Promise(function (resolve, reject) {
var timings = {
duration: 300,
iterations: 1,
easing: 'ease-out',
fill: 'both'
};
var duration = 400;
var animations = [];
if (oldAnimatedPage) {
animations.push(oldAnimatedPage.animate([
{ opacity: 1, offset: 0 },
{ opacity: 0, offset: 1 }
], timings));
setAnimation(oldAnimatedPage, 'view-fadeout ' + duration + 'ms ease-out normal both');
animations.push(oldAnimatedPage);
}
animations.push(newAnimatedPage.animate([
{ opacity: 0, offset: 0 },
{ opacity: 1, offset: 1 }
], timings));
setAnimation(newAnimatedPage, 'view-fadein ' + duration + 'ms ease-in normal both');
animations.push(newAnimatedPage);
currentAnimations = animations;
animations[animations.length - 1].onfinish = resolve;
setTimeout(resolve, duration);
});
}
function setAnimation(elem, value) {
requestAnimationFrame(function () {
elem.style.animation = value;
});
}
@ -190,16 +177,7 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
var animations = currentAnimations;
for (var i = 0, length = animations.length; i < length; i++) {
cancelAnimation(animations[i]);
}
}
function cancelAnimation(animation) {
try {
animation.cancel();
} catch (err) {
console.log('Error canceling animation: ' + err);
animations[i].animation = 'none';
}
}

View File

@ -1,4 +1,4 @@
define(['apphost', 'connectionManager', 'events', 'globalize', 'browser', 'require', 'dom', 'emby-tabs'], function (appHost, connectionManager, events, globalize, browser, require, dom) {
define(['apphost', 'connectionManager', 'events', 'globalize', 'browser', 'require', 'dom', 'embyRouter', 'emby-tabs'], function (appHost, connectionManager, events, globalize, browser, require, dom, embyRouter) {
// Make sure this is pulled in after button and tab css
require(['css!./dockedtabs']);
@ -13,7 +13,7 @@
})[0];
if (view) {
Emby.Page.showItem(view);
embyRouter.showItem(view);
}
}
@ -22,13 +22,13 @@
switch (id) {
case 'settings':
Emby.Page.showSettings();
embyRouter.showSettings();
break;
case 'signout':
Dashboard.logout();
break;
case 'selectserver':
Emby.Page.showSelectServer();
embyRouter.showSelectServer();
break;
case 'reports':
Dashboard.navigate('reports.html');
@ -157,7 +157,7 @@
switch (index) {
case 0:
Emby.Page.goHome();
embyRouter.goHome();
break;
case 1:
showLibrariesMenu(this);
@ -165,10 +165,10 @@
e.stopPropagation();
break;
case 2:
Emby.Page.showLiveTV();
embyRouter.showLiveTV();
break;
case 3:
Emby.Page.showFavorites();
embyRouter.showFavorites();
break;
case 4:
Dashboard.navigate('mysync.html?mode=offline');
@ -217,7 +217,7 @@
var html = '';
var liveTVButtonClass = appHost.supports('sync') ? ' dockedtab-midsize' : '';
html += ' <div is="emby-tabs" class="dockedtabs-tabs" data-selectionbar="false">\
<button is="emby-button" class="dockedtabs-tab-button emby-tab-button emby-tab-button-active" data-index="0">\
<div class="dockedtabs-tab-button-foreground emby-button-foreground"><i class="dockedtabs-tab-button-icon md-icon">home</i><div>' + globalize.translate('TabHome') + '</div></div>\

View File

@ -50,6 +50,15 @@
return globalize.translate('sharedcomponents#ButtonAlreadyPaid');
}
function getPeriodicMessageIntervalMs(feature) {
if (feature == 'playback') {
return 259200000;
}
return 0;
}
return {
getProductInfo: getProductInfo,
beginPurchase: beginPurchase,
@ -57,7 +66,8 @@
getSubscriptionOptions: getSubscriptionOptions,
isUnlockedByDefault: isUnlockedByDefault,
getAdminFeatureName: getAdminFeatureName,
getRestoreButtonText: getRestoreButtonText
getRestoreButtonText: getRestoreButtonText,
getPeriodicMessageIntervalMs: getPeriodicMessageIntervalMs
};
});

View File

@ -124,6 +124,17 @@
}
}
.ehsContent:not(.fullWidth), .ehsContent .pageTabContent {
width: 98%;
}
@media all and (min-width: 1200px) {
.ehsContent:not(.fullWidth), .ehsContent .pageTabContent {
width: 96%;
}
}
.homePageSection h1 {
padding-left: 2vw;
}

View File

@ -16,7 +16,7 @@
</button>
</div>
</div>
<div class="is-active pageTabContent ehsContent" id="homeTab" data-index="0">
<div class="is-active pageTabContent ehsContent fullWidth" id="homeTab" data-index="0">
<div class="ui-bar-b readOnlyContent welcomeMessage hide" style="padding: 2em; border-radius: 10px; margin: 2em auto; font-weight: normal;">
<h1 style="margin-top: 0;" class="tourHeader"></h1>
<p>
@ -26,7 +26,7 @@
<div class="sections"></div>
</div>
<div class="pageTabContent ehsContent" id="nextUpTab" data-index="1">
<div class="pageTabContent ehsContent fullWidth" id="nextUpTab" data-index="1">
<div class="homePageSection">
<div>
<h1 class="listHeader nextUpHeader" style="display: inline-block; vertical-align: middle;">${HeaderNextUp}</h1>
@ -39,10 +39,10 @@
</div>
<p class="noNextUpItems hide">${NoNextUpItemsMessage}</p>
</div>
<div class="pageTabContent ehsContent" id="favoritesTab" data-index="2">
<div class="pageTabContent ehsContent fullWidth" id="favoritesTab" data-index="2">
<div class="favoriteSections"></div>
</div>
<div class="pageTabContent ehsContent" id="upcomingTab" data-index="3">
<div class="pageTabContent ehsContent fullWidth" id="upcomingTab" data-index="3">
<div id="upcomingItems">
</div>
<div class="noItemsMessage hide">

View File

@ -29,7 +29,7 @@
</div>
</div>
<div class="is-active pageTabContent ehsContent" id="suggestionsTab" data-index="0">
<div class="is-active pageTabContent ehsContent fullWidth" id="suggestionsTab" data-index="0">
<div id="activeRecordings" class="homePageSection hide">
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
<div is="emby-itemscontainer" class="recordingItems itemsContainer"></div>
@ -85,7 +85,7 @@
</div>
<div is="emby-itemscontainer" id="items" class="itemsContainer vertical-wrap"></div>
</div>
<div class="pageTabContent ehsContent" id="recordingsTab" data-index="3">
<div class="pageTabContent ehsContent fullWidth" id="recordingsTab" data-index="3">
<div id="activeRecordings" class="homePageSection hide">
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
<div is="emby-itemscontainer" class="recordingItems itemsContainer"></div>
@ -141,7 +141,7 @@
<div id="recordingGroupItems"></div>
</div>
</div>
<div class="pageTabContent ehsContent" id="scheduleTab" data-index="4">
<div class="pageTabContent ehsContent fullWidth" id="scheduleTab" data-index="4">
<div id="activeRecordings" class="homePageSection hide">
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
<div is="emby-itemscontainer" class="recordingItems itemsContainer"></div>

View File

@ -22,7 +22,7 @@
</button>
</div>
</div>
<div class="is-active pageTabContent ehsContent" id="suggestionsTab" data-index="0">
<div class="is-active pageTabContent ehsContent fullWidth" id="suggestionsTab" data-index="0">
<div id="resumableSection" class="homePageSection hide">
<div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1>

View File

@ -26,7 +26,7 @@
</div>
</div>
<div class="pageTabContent is-active pageTabContent ehsContent" id="suggestionsTab" data-index="0">
<div class="pageTabContent is-active pageTabContent ehsContent fullWidth" id="suggestionsTab" data-index="0">
<div class="homePageSection">
<h1 class="listHeader">${HeaderLatestMusic}</h1>

View File

@ -298,13 +298,14 @@
}
});
view.querySelector('.btnCancelSignup').addEventListener('click', function () {
Emby.Page.back();
});
function goBack() {
require(['embyRouter'], function (embyRouter) {
embyRouter.back();
});
}
view.querySelector('.btnCancelManualServer').addEventListener('click', function () {
Emby.Page.back();
});
view.querySelector('.btnCancelSignup').addEventListener('click', goBack);
view.querySelector('.btnCancelManualServer').addEventListener('click', goBack);
view.querySelector('.btnWelcomeNext').addEventListener('click', function () {
Dashboard.navigate('connectlogin.html?mode=connect');

View File

@ -450,7 +450,7 @@
html += '<div style="display:flex;align-items:center;justify-content:center;text-transform:uppercase;">';
var userImage = DashboardPage.getUserImage(session);
if (userImage) {
html += '<img style="border-radius:50px;margin-right:.5em;" src="' + userImage + '" />';
html += '<img style="height:24px;border-radius:50px;margin-right:.5em;" src="' + userImage + '" />';
} else {
html += '<div style="height:24px;"></div>';
}

View File

@ -1,4 +1,4 @@
define(['imageLoader', 'layoutManager', 'viewManager', 'libraryBrowser', 'apphost', 'paper-icon-button-light', 'material-icons'], function (imageLoader, layoutManager, viewManager, libraryBrowser, appHost) {
define(['imageLoader', 'layoutManager', 'viewManager', 'libraryBrowser', 'apphost', 'embyRouter', 'paper-icon-button-light', 'material-icons'], function (imageLoader, layoutManager, viewManager, libraryBrowser, appHost, embyRouter) {
var enableBottomTabs = AppInfo.isNativeApp;
var enableLibraryNavDrawer = !enableBottomTabs;
@ -60,7 +60,7 @@
function onBackClick() {
Emby.Page.back();
embyRouter.back();
}
function updateUserInHeader(user) {
@ -908,7 +908,7 @@
var backButton = document.querySelector('.headerBackButton');
if (backButton) {
if (page.getAttribute('data-backbutton') == 'true' && Emby.Page.canGoBack()) {
if (page.getAttribute('data-backbutton') == 'true' && embyRouter.canGoBack()) {
backButton.classList.remove('hide');
} else {
backButton.classList.add('hide');

View File

@ -157,7 +157,6 @@ define(['appSettings', 'userSettings', 'appStorage', 'datetime'], function (appS
if (!AppInfo.isNativeApp) {
options.enableMkvProgressive = item.RunTimeTicks != null;
options.enableTsProgressive = item.RunTimeTicks != null;
options.enableHls = !browserInfo.firefox || item.RunTimeTicks == null;
options.disableVideoAudioCodecs = disableVideoAudioCodecs;
}

View File

@ -1417,9 +1417,7 @@ var AppInfo = {};
});
// alias
define("historyManager", [], function () {
return Emby.Page;
});
define("historyManager", ['embyRouter'], returnFirstDependency);
define("headroom-window", ['headroom'], createWindowHeadroom);
define("hammer-main", ['hammer'], createMainContentHammer);
@ -2682,7 +2680,6 @@ var AppInfo = {};
window.Emby = {};
window.Emby.Page = pageObjects;
window.Emby.TransparencyLevel = pageObjects.TransparencyLevel;
defineCoreRoutes();
Emby.Page.start({
click: true,

View File

@ -26,7 +26,7 @@
</div>
</div>
<div class="is-active pageTabContent ehsContent" id="suggestionsTab" data-index="0">
<div class="is-active pageTabContent ehsContent fullWidth" id="suggestionsTab" data-index="0">
<div id="resumableSection" class="homePageSection">
<div>
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderResume}</h1>
@ -51,7 +51,7 @@
</div>
<p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p>
</div>
<div class="pageTabContent ehsContent" id="latestTab" data-index="1">
<div class="pageTabContent ehsContent fullWidth" id="latestTab" data-index="1">
<div class="homePageSection">
<div>
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderLatestEpisodes}</h1>
@ -63,7 +63,7 @@
</div>
</div>
</div>
<div class="pageTabContent ehsContent" id="upcomingTab" data-index="2">
<div class="pageTabContent ehsContent fullWidth" id="upcomingTab" data-index="2">
<div id="upcomingItems">
</div>
<div class="noItemsMessage" style="display: none;">