mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-17 10:58:20 -07:00
normalize rating to fsk
This commit is contained in:
parent
1f57d9b231
commit
2971ec0e69
@ -27,7 +27,7 @@
|
||||
|
||||
<p id="btnInstallDiv" class="hide">
|
||||
<button is="emby-button" type="submit" id="btnInstall" class="raised button-submit block">
|
||||
<i class="md-icon">check</i><span>${Install}</span>
|
||||
<span>${Install}</span>
|
||||
</button>
|
||||
</p>
|
||||
<p id="nonServerMsg"></p>
|
||||
@ -65,7 +65,6 @@
|
||||
<input type="hidden" name="notify_url" value="https://mb3admin.com/admin/service/services/ppipn.php">
|
||||
<input type="hidden" name="return" id="paypalReturnUrl" value="#">
|
||||
<button is="emby-button" type="submit" id="ppButton" class="raised block button-submit" style="background-color: #179BD7;color:#fff;">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${RegisterWithPayPal}</span>
|
||||
</button>
|
||||
|
||||
|
@ -154,7 +154,7 @@
|
||||
<div class="fieldDescription checkboxFieldDescription">${LabelDeleteEmptyFoldersHelp}</div>
|
||||
</div>
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -14,12 +14,12 @@
|
||||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.4.253",
|
||||
"_release": "1.4.253",
|
||||
"version": "1.4.254",
|
||||
"_release": "1.4.254",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.4.253",
|
||||
"commit": "858cc490a36d41641aed43e556944f803d5f083a"
|
||||
"tag": "1.4.254",
|
||||
"commit": "261edde431045d80a709a5ac89a8307e7e012f31"
|
||||
},
|
||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||
"_target": "^1.2.1",
|
||||
|
@ -4,10 +4,12 @@
|
||||
padding: 0;
|
||||
border: none;
|
||||
max-height: 84%;
|
||||
border-radius: 1px !important;
|
||||
}
|
||||
|
||||
.actionsheet-fullscreen {
|
||||
max-height: none;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.actionSheetContent-centered {
|
||||
|
@ -15,15 +15,15 @@ define(['dialog', 'globalize'], function (dialog, globalize) {
|
||||
var items = [];
|
||||
|
||||
items.push({
|
||||
name: globalize.translate('sharedcomponents#ButtonOk'),
|
||||
id: 'ok',
|
||||
type: 'submit'
|
||||
name: options.cancelText || globalize.translate('sharedcomponents#ButtonCancel'),
|
||||
id: 'cancel',
|
||||
type: options.primary == 'cancel' ? 'submit' : 'cancel'
|
||||
});
|
||||
|
||||
items.push({
|
||||
name: globalize.translate('sharedcomponents#ButtonCancel'),
|
||||
id: 'cancel',
|
||||
type: 'cancel'
|
||||
name: options.confirmText || globalize.translate('sharedcomponents#ButtonOk'),
|
||||
id: 'ok',
|
||||
type: options.primary == 'cancel' ? 'cancel' : 'submit'
|
||||
});
|
||||
|
||||
options.buttons = items;
|
||||
|
@ -1,21 +1,5 @@
|
||||
define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, dom, layoutManager, scrollHelper, globalize, require) {
|
||||
|
||||
function showTvDialog(options) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['actionsheet'], function (actionSheet) {
|
||||
|
||||
actionSheet.show({
|
||||
|
||||
title: options.text,
|
||||
items: options.buttons,
|
||||
timeout: options.timeout
|
||||
|
||||
}).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showDialog(options, template) {
|
||||
|
||||
var dialogOptions = {
|
||||
@ -23,7 +7,9 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
scrollY: false
|
||||
};
|
||||
|
||||
if (layoutManager.tv) {
|
||||
var enableTvLayout = layoutManager.tv;
|
||||
|
||||
if (enableTvLayout) {
|
||||
dialogOptions.size = 'fullscreen';
|
||||
} else {
|
||||
//dialogOptions.size = 'mini';
|
||||
@ -35,10 +21,17 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
|
||||
dlg.innerHTML = globalize.translateHtml(template, 'sharedcomponents');
|
||||
|
||||
if (layoutManager.tv) {
|
||||
scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false);
|
||||
if (enableTvLayout) {
|
||||
dlg.style['align-items'] = 'center';
|
||||
dlg.style['justify-content'] = 'center';
|
||||
var formDialogContent = dlg.querySelector('.formDialogContent');
|
||||
formDialogContent.style['flex-grow'] = 'initial';
|
||||
formDialogContent.style['max-width'] = '50%';
|
||||
formDialogContent.style['max-height'] = '60%';
|
||||
scrollHelper.centerFocus.on(formDialogContent, false);
|
||||
} else {
|
||||
dlg.querySelector('.dialogContentInner').classList.add('dialogContentInner-mini');
|
||||
var minWidth = (Math.min(options.buttons.length * 150, dom.getWindowSize().innerWidth - 50));
|
||||
dlg.style.maxWidth = (minWidth + 200) + 'px';
|
||||
}
|
||||
|
||||
//dlg.querySelector('.btnCancel').addEventListener('click', function (e) {
|
||||
@ -56,7 +49,7 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
var item = options.buttons[i];
|
||||
var autoFocus = i == 0 ? ' autofocus' : '';
|
||||
|
||||
var buttonClass = 'btnOption raised block formDialogFooterItem';
|
||||
var buttonClass = 'btnOption raised formDialogFooterItem formDialogFooterItem-autosize';
|
||||
|
||||
if (item.type) {
|
||||
buttonClass += ' button-' + item.type;
|
||||
@ -65,8 +58,6 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
html += '<button is="emby-button" type="button" class="' + buttonClass + '" data-id="' + item.id + '"' + autoFocus + '>' + item.name + '</button>';
|
||||
}
|
||||
|
||||
dlg.style.minWidth = (Math.min(options.buttons.length * 150, dom.getWindowSize().innerWidth - 50)) + 'px';
|
||||
|
||||
dlg.querySelector('.formDialogFooter').innerHTML = html;
|
||||
|
||||
var dialogResult;
|
||||
@ -82,7 +73,7 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
|
||||
return dialogHelper.open(dlg).then(function () {
|
||||
|
||||
if (layoutManager.tv) {
|
||||
if (enableTvLayout) {
|
||||
scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false);
|
||||
}
|
||||
|
||||
@ -106,10 +97,6 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
|
||||
options = text;
|
||||
}
|
||||
|
||||
if (layoutManager.tv) {
|
||||
return showTvDialog(options);
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['text!./dialog.template.html'], function (template) {
|
||||
showDialog(options, template).then(resolve, reject);
|
||||
|
@ -1,16 +1,15 @@
|
||||
<div class="formDialogHeader">
|
||||
<h3 class="formDialogHeaderTitle" style="margin-left:.75em;"></h3>
|
||||
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1" style="visibility:hidden;"><i class="md-icon"></i></button>
|
||||
<div class="formDialogHeader formDialogHeader-clear" style="justify-content:center;">
|
||||
<h1 class="formDialogHeaderTitle" style="margin-left:0;margin-top: .5em;"></h1>
|
||||
</div>
|
||||
|
||||
<div class="formDialogContent smoothScrollY">
|
||||
<div class="dialogContentInner dialog-content-centered" style="padding-top:2em;">
|
||||
<div class="dialogContentInner dialog-content-centered" style="padding-top:2em;padding-bottom: 2em; text-align: center;">
|
||||
|
||||
<div class="text">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="formDialogFooter">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="formDialogFooter formDialogFooter-clear formDialogFooter-flex" style="padding-bottom: 1.5em;">
|
||||
</div>
|
@ -13,7 +13,7 @@
|
||||
|
||||
.dialog {
|
||||
margin: 0;
|
||||
border-radius: 1px;
|
||||
border-radius: 4px;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4);
|
||||
border: 0;
|
||||
|
@ -26,7 +26,6 @@
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
/* Disable webkit tap highlighting */
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
|
||||
|
@ -15,6 +15,10 @@
|
||||
background-color: #222326;
|
||||
}
|
||||
|
||||
.formDialogHeader-clear, .formDialogFooter-clear {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.formDialogHeaderTitle {
|
||||
margin-left: .25em;
|
||||
/* In case of h1, h2, h3 */
|
||||
@ -57,6 +61,10 @@
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.formDialogFooter-flex {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.formDialogFooterItem {
|
||||
margin-left: .5em !important;
|
||||
margin-right: .5em !important;
|
||||
@ -65,6 +73,13 @@
|
||||
flex-basis: 0;
|
||||
}
|
||||
|
||||
.formDialogFooterItem-autosize {
|
||||
flex-basis: initial;
|
||||
flex-grow: initial;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
}
|
||||
|
||||
@media all and (min-width: 800px) {
|
||||
|
||||
.formDialogFooterItem {
|
||||
|
@ -192,7 +192,13 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(globalize.translate('sharedcomponents#ConfirmDeleteImage')).then(afterConfirm);
|
||||
confirm({
|
||||
|
||||
text: globalize.translate('sharedcomponents#ConfirmDeleteImage'),
|
||||
confirmText: globalize.translate('sharedcomponents#Delete'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(afterConfirm);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -37,10 +37,18 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
|
||||
}
|
||||
|
||||
if (item.CanDelete) {
|
||||
commands.push({
|
||||
name: globalize.translate('sharedcomponents#Delete'),
|
||||
id: 'delete'
|
||||
});
|
||||
|
||||
if (item.Type == 'Playlist' || item.Type == 'BoxSet') {
|
||||
commands.push({
|
||||
name: globalize.translate('sharedcomponents#Delete'),
|
||||
id: 'delete'
|
||||
});
|
||||
} else {
|
||||
commands.push({
|
||||
name: globalize.translate('sharedcomponents#DeleteMedia'),
|
||||
id: 'delete'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (itemHelper.canEdit(user, item.Type)) {
|
||||
@ -383,7 +391,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
|
||||
}
|
||||
case 'delete':
|
||||
{
|
||||
deleteItem(apiClient, itemId).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id));
|
||||
deleteItem(apiClient, item).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id));
|
||||
break;
|
||||
}
|
||||
case 'share':
|
||||
@ -550,16 +558,25 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
|
||||
});
|
||||
}
|
||||
|
||||
function deleteItem(apiClient, itemId) {
|
||||
function deleteItem(apiClient, item) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
var itemId = item.Id;
|
||||
|
||||
var msg = globalize.translate('sharedcomponents#ConfirmDeleteItem');
|
||||
var title = globalize.translate('sharedcomponents#HeaderDeleteItem');
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(msg, title).then(function () {
|
||||
confirm({
|
||||
|
||||
title: title,
|
||||
text: msg,
|
||||
confirmText: globalize.translate('sharedcomponents#Delete'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
apiClient.deleteItem(itemId).then(function () {
|
||||
resolve(true);
|
||||
|
@ -409,26 +409,18 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var msg = globalize.translate('sharedcomponents#TheSelectedItemsWillBeGrouped');
|
||||
loading.show();
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
apiClient.ajax({
|
||||
|
||||
confirm(msg, globalize.translate('sharedcomponents#GroupVersions')).then(function () {
|
||||
type: "POST",
|
||||
url: apiClient.getUrl("Videos/MergeVersions", { Ids: selection.join(',') })
|
||||
|
||||
loading.show();
|
||||
}).then(function () {
|
||||
|
||||
apiClient.ajax({
|
||||
|
||||
type: "POST",
|
||||
url: apiClient.getUrl("Videos/MergeVersions", { Ids: selection.join(',') })
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loading.hide();
|
||||
hideSelections();
|
||||
dispatchNeedsRefresh();
|
||||
});
|
||||
});
|
||||
loading.hide();
|
||||
hideSelections();
|
||||
dispatchNeedsRefresh();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,15 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(globalize.translate('sharedcomponents#MessageConfirmRecordingCancellation'), globalize.translate('sharedcomponents#HeaderConfirmRecordingCancellation')).then(function () {
|
||||
confirm({
|
||||
|
||||
title: globalize.translate('sharedcomponents#HeaderConfirmRecordingCancellation'),
|
||||
text: globalize.translate('sharedcomponents#MessageConfirmRecordingCancellation'),
|
||||
confirmText: globalize.translate('sharedcomponents#HeaderCancelRecording'),
|
||||
cancelText: globalize.translate('sharedcomponents#HeaderKeepRecording'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loading.show();
|
||||
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\u0414\u043e\u0431\u0430\u0432\u0438",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Afegeix",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "P\u0159idat",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Del",
|
||||
"Add": "Tilf\u00f8j",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"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.",
|
||||
"HeaderConvertYourRecordings": "Konvertiere deine Aufnahmen",
|
||||
"HeaderLearnMore": "Erfahre mehr",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Teilen",
|
||||
"Add": "Hinzuf\u00fcgen",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
@ -64,7 +69,7 @@
|
||||
"NewCollection": "New Collection",
|
||||
"LabelCollection": "Collection:",
|
||||
"Help": "Help",
|
||||
"NewCollectionHelp": "Collections allow you to create personalized groupings of movies and other library content.",
|
||||
"NewCollectionHelp": "Collections allow you to create personalised groupings of movies and other library content.",
|
||||
"SearchForCollectionInternetMetadata": "Search the internet for artwork and metadata",
|
||||
"LabelName": "Name:",
|
||||
"NewCollectionNameExample": "Example: Star Wars Collection",
|
||||
@ -94,7 +99,7 @@
|
||||
"HeaderSaySomethingLike": "Say Something Like...",
|
||||
"ButtonTryAgain": "Try Again",
|
||||
"HeaderYouSaid": "You Said...",
|
||||
"MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognize that command.",
|
||||
"MessageWeDidntRecognizeCommand": "We're sorry, we didn't recognise that command.",
|
||||
"MessageIfYouBlockedVoice": "If you denied voice access to the app you'll need to reconfigure before trying again.",
|
||||
"ValueDiscNumber": "Disc {0}",
|
||||
"Unrated": "Unrated",
|
||||
@ -205,7 +210,7 @@
|
||||
"Continuing": "Continuing",
|
||||
"Ended": "Ended",
|
||||
"HeaderEnabledFields": "Enabled Fields",
|
||||
"HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent it's data from being changed.",
|
||||
"HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.",
|
||||
"Backdrops": "Backdrops",
|
||||
"Images": "Images",
|
||||
"Keywords": "Keywords",
|
||||
@ -245,7 +250,7 @@
|
||||
"ValueMusicVideoCount": "{0} music videos",
|
||||
"ValueMinutes": "{0} min",
|
||||
"HeaderIdentifyItemHelp": "Enter one or more search criteria. Remove criteria to increase search results.",
|
||||
"PleaseEnterNameOrId": "Please enter a name or an external Id.",
|
||||
"PleaseEnterNameOrId": "Please enter a name or an external ID.",
|
||||
"MessageItemSaved": "Item saved.",
|
||||
"SearchResults": "Search Results",
|
||||
"SyncToOtherDevice": "Sync to other device",
|
||||
@ -279,7 +284,7 @@
|
||||
"Settings": "Settings",
|
||||
"ShowIndicatorsFor": "Show indicators for:",
|
||||
"NewEpisodes": "New episodes",
|
||||
"HDPrograms": "HD programs",
|
||||
"HDPrograms": "HD programmes",
|
||||
"LiveBroadcasts": "Live broadcasts",
|
||||
"Premieres": "Premieres",
|
||||
"RepeatEpisodes": "Repeat episodes",
|
||||
|
@ -48,7 +48,7 @@
|
||||
"MessageActiveSubscriptionRequiredSeriesRecordings": "An active Emby Premiere subscription is required in order to create automated series recordings.",
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"Record": "Record",
|
||||
"Save": "Save",
|
||||
"Edit": "Edit",
|
||||
@ -124,7 +124,6 @@
|
||||
"MarkUnplayed": "Mark unplayed",
|
||||
"GroupVersions": "Group versions",
|
||||
"PleaseSelectTwoItems": "Please select at least two items.",
|
||||
"TheSelectedItemsWillBeGrouped": "The selected videos will be grouped into one virtual item. Emby apps will automatically choose which version to play based on device and network performance. Are you sure you wish to continue?",
|
||||
"TryMultiSelect": "Try Multi-Select",
|
||||
"TryMultiSelectMessage": "To edit multiple media items, just click and hold any poster and select the items you want to manage. Try it!",
|
||||
"HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation",
|
||||
@ -285,5 +284,7 @@
|
||||
"RepeatEpisodes": "Repeat episodes",
|
||||
"DvrSubscriptionRequired": "Emby DVR requires an active Emby Premiere subscription.",
|
||||
"HeaderCancelRecording": "Cancel Recording",
|
||||
"HeaderLearnMore": "Learn More"
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"DeleteMedia": "Delete media"
|
||||
}
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Especial - {0}",
|
||||
"Share": "Compartir",
|
||||
"Add": "Agregar",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Compartir",
|
||||
"Add": "A\u00f1adir",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Sp\u00e9cial - {0}",
|
||||
"Share": "Partager",
|
||||
"Add": "Ajouter",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\u05d4\u05d5\u05e1\u05e3",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Dodaj",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Megoszt\u00e1s",
|
||||
"Add": "Hozz\u00e1ad",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Aggiungi",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Emby Premiere \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443\u0493\u0430 \u043e\u04a3\u0430\u0439 \u043f\u0456\u0448\u0456\u043d\u0434\u0435 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443. \u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440 Emby Server \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435, \u043d\u0430\u049b\u0442\u044b \u0443\u0430\u049b\u044b\u0442\u0442\u0430 MP4 \u043d\u0435\u043c\u0435\u0441\u0435 MKV \u043f\u0456\u0448\u0456\u043c\u0456\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0435\u0434\u0456.",
|
||||
"HeaderConvertYourRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443",
|
||||
"HeaderLearnMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}",
|
||||
"Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443",
|
||||
"Add": "\u04ae\u0441\u0442\u0435\u0443",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\ucd94\uac00",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Spesial - {0}",
|
||||
"Share": "Del",
|
||||
"Add": "Legg til",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Speciaal - {0}",
|
||||
"Share": "Delen",
|
||||
"Add": "Toevoegen",
|
||||
@ -13,7 +18,7 @@
|
||||
"ValueSeriesYearToPresent": "{0}-Heden",
|
||||
"ReleaseYearValue": "Jaar van uitgifte: {0}",
|
||||
"OriginalAirDateValue": "Originele uitzenddatum: {0}",
|
||||
"EndsAtValue": "Eindigt om: {0}",
|
||||
"EndsAtValue": "Eindigt om {0}",
|
||||
"OptionSundayShort": "Zo",
|
||||
"OptionMondayShort": "Ma",
|
||||
"OptionTuesdayShort": "Di",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Dodaj",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"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.",
|
||||
"HeaderConvertYourRecordings": "Converter suas Grava\u00e7\u00f5es",
|
||||
"HeaderLearnMore": "Saiba Mais",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Especial - {0}",
|
||||
"Share": "Compartilhar",
|
||||
"Add": "Adicionar",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Especial - {0}",
|
||||
"Share": "Partilhar",
|
||||
"Add": "Adicionar",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Emby Premiere. \u0417\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 MP4 \u0438\u043b\u0438 MKV, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Emby Server.",
|
||||
"HeaderConvertYourRecordings": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439",
|
||||
"HeaderLearnMore": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435...",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}",
|
||||
"Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f",
|
||||
"Add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Specialavsnitt - {0}",
|
||||
"Share": "Dela",
|
||||
"Add": "L\u00e4gg till",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Ekle",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Add",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "Th\u00eam",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\u6dfb\u52a0",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "Share",
|
||||
"Add": "\u65b0\u589e",
|
||||
|
@ -1,4 +1,9 @@
|
||||
{
|
||||
"PromoConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format with Emby Premiere. Recordings will be converted on the fly to MP4 or MKV, based on Emby server settings.",
|
||||
"HeaderConvertYourRecordings": "Convert Your Recordings",
|
||||
"HeaderLearnMore": "Learn More",
|
||||
"HeaderKeepRecording": "Keep Recording",
|
||||
"DeleteMedia": "Delete media",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Share": "\u5206\u4eab",
|
||||
"Add": "\u6dfb\u52a0",
|
||||
|
@ -68,7 +68,14 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(msg, globalize.translate('sharedcomponents#ConfirmDeletion')).then(function () {
|
||||
confirm({
|
||||
|
||||
title: globalize.translate('sharedcomponents#ConfirmDeletion'),
|
||||
text: msg,
|
||||
confirmText: globalize.translate('sharedcomponents#Delete'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
loading.show();
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "requirejs",
|
||||
"version": "2.3.1",
|
||||
"version": "2.3.2",
|
||||
"ignore": [],
|
||||
"homepage": "http://requirejs.org",
|
||||
"authors": [
|
||||
@ -14,11 +14,11 @@
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"_release": "2.3.1",
|
||||
"_release": "2.3.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "2.3.1",
|
||||
"commit": "94785e8633448b668f292009fd2c31e3338a0074"
|
||||
"tag": "2.3.2",
|
||||
"commit": "5b5d3ea2c754898b645cfeaa8871bb92ba4f2790"
|
||||
},
|
||||
"_source": "https://github.com/jrburke/requirejs-bower.git",
|
||||
"_target": "^2.1.22",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "requirejs",
|
||||
"version": "2.3.1",
|
||||
"version": "2.3.2",
|
||||
"ignore": [],
|
||||
"homepage": "http://requirejs.org",
|
||||
"authors": [
|
||||
|
@ -1,5 +1,5 @@
|
||||
/** vim: et:ts=4:sw=4:sts=4
|
||||
* @license RequireJS 2.3.1 Copyright jQuery Foundation and other contributors.
|
||||
* @license RequireJS 2.3.2 Copyright jQuery Foundation and other contributors.
|
||||
* Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE
|
||||
*/
|
||||
//Not using strict: uneven strict support in browsers, #392, and causes
|
||||
@ -11,7 +11,7 @@ var requirejs, require, define;
|
||||
(function (global, setTimeout) {
|
||||
var req, s, head, baseElement, dataMain, src,
|
||||
interactiveScript, currentlyAddingScript, mainScript, subPath,
|
||||
version = '2.3.1',
|
||||
version = '2.3.2',
|
||||
commentRegExp = /\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/mg,
|
||||
cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
|
||||
jsSuffixRegExp = /\.js$/,
|
||||
@ -2139,4 +2139,4 @@ var requirejs, require, define;
|
||||
|
||||
//Set up with config info.
|
||||
req(cfg);
|
||||
}(this, setTimeout));
|
||||
}(this, (typeof setTimeout === 'undefined' ? undefined : setTimeout)));
|
||||
|
@ -6,10 +6,15 @@
|
||||
z-index: 1;
|
||||
bottom: 0;
|
||||
transition: transform 180ms linear;
|
||||
|
||||
contain: layout style;
|
||||
}
|
||||
|
||||
.appfooter.headroom--unpinned {
|
||||
transform: translateY(100%);
|
||||
}
|
||||
.appfooter-blurred {
|
||||
background: rgba(28,28,28,.92);
|
||||
-webkit-backdrop-filter: blur(5px);
|
||||
backdrop-filter: blur(5px);
|
||||
}
|
||||
|
||||
.appfooter.headroom--unpinned {
|
||||
transform: translateY(100%);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
define(['css!./appfooter'], function () {
|
||||
define(['browser', 'css!./appfooter'], function (browser) {
|
||||
|
||||
function render(options) {
|
||||
|
||||
@ -6,6 +6,10 @@
|
||||
|
||||
elem.classList.add('appfooter');
|
||||
|
||||
if (browser.safari) {
|
||||
elem.classList.add('appfooter-blurred');
|
||||
}
|
||||
|
||||
document.body.appendChild(elem);
|
||||
|
||||
return elem;
|
||||
|
@ -39,6 +39,9 @@
|
||||
case 'manageserver':
|
||||
Dashboard.navigate('dashboard.html');
|
||||
break;
|
||||
case 'remotecontrol':
|
||||
Dashboard.navigate('nowplaying.html');
|
||||
break;
|
||||
case 'sync':
|
||||
Dashboard.navigate('mysync.html');
|
||||
break;
|
||||
@ -115,6 +118,11 @@
|
||||
});
|
||||
}
|
||||
|
||||
commands.push({
|
||||
name: globalize.translate('ButtonRemoteControl'),
|
||||
id: 'remotecontrol'
|
||||
});
|
||||
|
||||
if (Dashboard.isConnectMode()) {
|
||||
commands.push({
|
||||
name: globalize.translate('HeaderSelectServer'),
|
||||
|
@ -42,7 +42,6 @@
|
||||
</label>
|
||||
<br />
|
||||
<button is="emby-button" type="submit" class="raised submit block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonOk}</span>
|
||||
</button>
|
||||
<input id="hfResultId" type="hidden" />
|
||||
|
@ -28,7 +28,6 @@
|
||||
</select>
|
||||
</div>
|
||||
<button is="emby-button" type="submit" class="raised submit block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonUpload}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -34,7 +34,14 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmRemoveMediaLocation'), Globalize.translate('HeaderRemoveMediaLocation')).then(function () {
|
||||
confirm({
|
||||
|
||||
title: Globalize.translate('HeaderRemoveMediaLocation'),
|
||||
text: Globalize.translate('MessageConfirmRemoveMediaLocation'),
|
||||
confirmText: Globalize.translate('sharedcomponents#ButtonDelete'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
var refreshAfterChange = currentOptions.refresh;
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
<input is="emby-input" class="txtPass" label="${LabelPassword}" required="required" autocomplete="off" type="password"/>
|
||||
</div>
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -62,8 +62,8 @@
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSubmitListingsContainer btnSubmitListings hide"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel hide" onclick="history.back();"><i class="md-icon">close</i><span>${ButtonCancel}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSubmitListingsContainer btnSubmitListings hide"><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel hide" onclick="history.back();"><span>${ButtonCancel}</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -45,7 +45,7 @@
|
||||
<a class="lnkPremiere" href="https://emby.media/premiere">${ButtonLearnMore}</a>
|
||||
</div><br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSubmitListings hide"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel hide" onclick="history.back();"><i class="md-icon">close</i><span>${ButtonCancel}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSubmitListings hide"><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel hide" onclick="history.back();"><span>${ButtonCancel}</span></button>
|
||||
</div>
|
||||
</form>
|
@ -62,11 +62,9 @@
|
||||
<br />
|
||||
|
||||
<button is="emby-button" type="submit" class="raised button-submit block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonConnect}</span>
|
||||
</button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancelManualServer">
|
||||
<i class="md-icon">close</i>
|
||||
<span>${ButtonCancel}</span>
|
||||
</button>
|
||||
</form>
|
||||
|
@ -23,7 +23,7 @@
|
||||
<div class="fieldDescription">${LabelCameraUploadPathHelp}</div>
|
||||
</div>
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -329,10 +329,10 @@
|
||||
<br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block">
|
||||
<i class="md-icon">check</i><span>${ButtonSave}</span>
|
||||
<span>${ButtonSave}</span>
|
||||
</button>
|
||||
<button is="emby-button" type="button" class="button-cancel raised block" onclick="Dashboard.navigate('dlnaprofiles.html');">
|
||||
<i class="md-icon">close</i><span>${ButtonCancel}</span>
|
||||
<span>${ButtonCancel}</span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
@ -14,12 +14,10 @@
|
||||
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised submit block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSubmit}</span>
|
||||
</button>
|
||||
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();">
|
||||
<i class="md-icon">close</i>
|
||||
<span>${ButtonCancel}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -13,12 +13,10 @@
|
||||
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised submit block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSubmit}</span>
|
||||
</button>
|
||||
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();">
|
||||
<i class="md-icon">close</i>
|
||||
<span>${ButtonCancel}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -36,8 +36,8 @@
|
||||
<div class="detailUserDataIcons userDataIcons"></div>
|
||||
</div>
|
||||
<div class="syncLocalContainer hide" style="margin-top:1em; display: inline-flex; padding: 0 .5em;">
|
||||
<label class="checkboxContainer" style="margin:0;">
|
||||
<input type="checkbox" is="emby-checkbox" class="chkOffline" />
|
||||
<label class="toggleContainer" style="margin:0;">
|
||||
<input type="checkbox" is="emby-toggle" class="chkOffline" />
|
||||
<span>${MakeAvailableOffline}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -68,9 +68,9 @@
|
||||
</div>
|
||||
|
||||
<div class="hide">
|
||||
<button is="emby-button" type="submit" class="raised submit block btnSubmit"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised submit block btnSubmit"><span>${ButtonSave}</span></button>
|
||||
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();"><i class="md-icon">close</i><span>${ButtonCancel}</span></button>
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();"><span>${ButtonCancel}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="scheduleTab"></div>
|
||||
|
@ -95,7 +95,7 @@
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -15,8 +15,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel" onclick="history.back();"><i class="md-icon">close</i><span>${ButtonCancel}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnCancel" onclick="history.back();"><span>${ButtonCancel}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -63,8 +63,8 @@
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();"><i class="md-icon">close</i><span>${ButtonCancel}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised submit block"><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" class="raised cancel block btnCancel" onclick="history.back();"><span>${ButtonCancel}</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -87,7 +87,7 @@
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<div><button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button></div>
|
||||
<div><button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button></div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
</label>
|
||||
<div class="fieldDescription checkboxFieldDescription">${LabelKodiMetadataEnableExtraThumbsHelp}</div>
|
||||
</div>
|
||||
<div><button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button></div>
|
||||
<div><button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button></div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
@ -88,7 +88,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSave}</span>
|
||||
</button>
|
||||
</form>
|
||||
|
@ -112,7 +112,6 @@
|
||||
|
||||
</div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSave}</span>
|
||||
</button>
|
||||
</form>
|
||||
|
@ -95,7 +95,6 @@
|
||||
</div>
|
||||
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSave}</span>
|
||||
</button>
|
||||
</form>
|
||||
|
@ -61,7 +61,7 @@
|
||||
<input is="emby-input" type="password" id="txtNewPasswordConfirm" label="${LabelNewPasswordConfirm}" autocomplete="off" />
|
||||
</div>
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><i class="md-icon">check</i><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${ButtonSave}</span></button>
|
||||
<button is="emby-button" type="button" id="btnResetPassword" class="raised cancel block hide">
|
||||
<i class="md-icon">lock</i>
|
||||
<span>${ButtonResetPassword}</span>
|
||||
|
@ -1016,7 +1016,14 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmRestart'), Globalize.translate('HeaderRestart')).then(function () {
|
||||
confirm({
|
||||
|
||||
title: Globalize.translate('HeaderRestart'),
|
||||
text: Globalize.translate('MessageConfirmRestart'),
|
||||
confirmText: Globalize.translate('ButtonRestart'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
$('#btnRestartServer').buttonEnabled(false);
|
||||
$('#btnShutdown').buttonEnabled(false);
|
||||
@ -1029,7 +1036,14 @@
|
||||
|
||||
require(['confirm'], function (confirm) {
|
||||
|
||||
confirm(Globalize.translate('MessageConfirmShutdown'), Globalize.translate('HeaderShutdown')).then(function () {
|
||||
confirm({
|
||||
|
||||
title: Globalize.translate('HeaderShutdown'),
|
||||
text: Globalize.translate('MessageConfirmShutdown'),
|
||||
confirmText: Globalize.translate('ButtonShutdown'),
|
||||
primary: 'cancel'
|
||||
|
||||
}).then(function () {
|
||||
|
||||
$('#btnRestartServer').buttonEnabled(false);
|
||||
$('#btnShutdown').buttonEnabled(false);
|
||||
|
@ -1,4 +1,4 @@
|
||||
define(['layoutManager', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'userdataButtons', 'dom', 'indicators', 'apphost', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox'], function (layoutManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, userdataButtons, dom, indicators, appHost) {
|
||||
define(['layoutManager', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'userdataButtons', 'dom', 'indicators', 'apphost', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-toggle'], function (layoutManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, userdataButtons, dom, indicators, appHost) {
|
||||
|
||||
var currentItem;
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
<div class="addServer" style="margin:0 0 1em;">
|
||||
<a href="connectlogin.html?mode=manualserver" class="clearLink">
|
||||
<button is="emby-button" type="button" class="raised cancel block">
|
||||
<i class="md-icon">add</i>
|
||||
<span>${ButtonAddServer}</span>
|
||||
</button>
|
||||
</a>
|
||||
@ -33,7 +32,6 @@
|
||||
<div class="connectLogin hide" style="margin:1em 0;">
|
||||
<a href="connectlogin.html?mode=connect" class="clearLink">
|
||||
<button is="emby-button" type="button" class="raised button-accent block">
|
||||
<i class="md-icon">check</i>
|
||||
<span>${ButtonSignInWithConnect}</span>
|
||||
</button>
|
||||
</a>
|
||||
|
Loading…
Reference in New Issue
Block a user