mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
move metadata language to per library
This commit is contained in:
parent
60f00b55e9
commit
befa669bc5
15 changed files with 252 additions and 278 deletions
|
@ -1,52 +1,38 @@
|
|||
define(['historyManager', 'jQuery'], function (historyManager, $) {
|
||||
define(['loading'], function (loading) {
|
||||
'use strict';
|
||||
|
||||
var currentItemId;
|
||||
function reload(context, itemId) {
|
||||
|
||||
function reload(page) {
|
||||
|
||||
page = $(page)[0];
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var itemId = MetadataEditor.getCurrentItemId();
|
||||
currentItemId = itemId;
|
||||
loading.show();
|
||||
|
||||
if (itemId) {
|
||||
require(['metadataEditor'], function (metadataEditor) {
|
||||
|
||||
metadataEditor.embed(page.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id);
|
||||
metadataEditor.embed(context.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id);
|
||||
});
|
||||
} else {
|
||||
page.querySelector('.editPageInnerContent').innerHTML = '';
|
||||
Dashboard.hideLoadingMsg();
|
||||
context.querySelector('.editPageInnerContent').innerHTML = '';
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#editItemMetadataPage", function () {
|
||||
return function (view, params) {
|
||||
|
||||
var page = this;
|
||||
view.addEventListener('viewshow', function () {
|
||||
reload(this, MetadataEditor.getCurrentItemId());
|
||||
});
|
||||
|
||||
MetadataEditor.setCurrentItemId(null);
|
||||
|
||||
$('.libraryTree', page).on('itemclicked', function (event, data) {
|
||||
view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) {
|
||||
|
||||
if (data.id != currentItemId) {
|
||||
var data = event.detail;
|
||||
|
||||
if (data.id != MetadataEditor.getCurrentItemId()) {
|
||||
|
||||
MetadataEditor.setCurrentItemId(data.id);
|
||||
reload(page);
|
||||
reload(view, data.id);
|
||||
}
|
||||
});
|
||||
|
||||
}).on('pageshow', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
|
||||
}).on('pagebeforehide', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
});
|
||||
|
||||
};
|
||||
});
|
||||
|
|
|
@ -14,7 +14,10 @@
|
|||
selected: selected
|
||||
},
|
||||
|
||||
li_attr: {}
|
||||
li_attr: {
|
||||
serveritemtype: item.Type,
|
||||
collectiontype: item.CollectionType
|
||||
}
|
||||
};
|
||||
|
||||
if (item.IsFolder) {
|
||||
|
@ -272,11 +275,18 @@
|
|||
|
||||
var eventData = {
|
||||
id: node.id,
|
||||
itemType: node.li_attr.itemtype
|
||||
itemType: node.li_attr.itemtype,
|
||||
serverItemType: node.li_attr.serveritemtype,
|
||||
collectionType: node.li_attr.collectiontype
|
||||
};
|
||||
|
||||
if (eventData.itemType != 'livetv' && eventData.itemType != 'mediafolders') {
|
||||
$(this).trigger('itemclicked', [eventData]);
|
||||
if (eventData.itemType != 'livetv' && eventData.itemType != 'mediafolders' && eventData.serverItemType != 'UserView' && eventData.serverItemType != 'CollectionFolder' && !eventData.collectionType) {
|
||||
|
||||
this.dispatchEvent(new CustomEvent('itemclicked', {
|
||||
detail: eventData,
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -443,6 +443,14 @@
|
|||
href: 'librarydisplay.html',
|
||||
name: Globalize.translate('TabDisplay')
|
||||
},
|
||||
{
|
||||
href: 'metadataimages.html',
|
||||
name: Globalize.translate('TabMetadata')
|
||||
},
|
||||
{
|
||||
href: 'metadatanfo.html',
|
||||
name: Globalize.translate('TabNfoSettings')
|
||||
},
|
||||
{
|
||||
href: 'librarysettings.html',
|
||||
name: Globalize.translate('TabAdvanced')
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
define(['jQuery', 'fnchecked'], function ($) {
|
||||
'use strict';
|
||||
|
||||
function load(page, config, allCultures, allCountries) {
|
||||
if (!config || !allCultures || !allCountries) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('#selectLanguage', page).val(config.PreferredMetadataLanguage);
|
||||
$('#selectCountry', page).val(config.MetadataCountryCode);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
var form = this;
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (config) {
|
||||
|
||||
config.PreferredMetadataLanguage = $('#selectLanguage', form).val();
|
||||
config.MetadataCountryCode = $('#selectCountry', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).then(function() {
|
||||
Dashboard.processServerConfigurationUpdateResult();
|
||||
|
||||
showConfirmMessage(config);
|
||||
});
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
function showConfirmMessage(config) {
|
||||
|
||||
var msg = [];
|
||||
|
||||
msg.push(Globalize.translate('MetadataSettingChangeHelp'));
|
||||
|
||||
if (config.DownloadImagesInAdvance) {
|
||||
msg.push(Globalize.translate('DownloadImagesInAdvanceWarning'));
|
||||
}
|
||||
|
||||
if (!msg.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
require(['alert'], function (alert) {
|
||||
alert({
|
||||
text: msg.join('<br/><br/>')
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'metadata.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
},
|
||||
{
|
||||
href: 'metadataimages.html',
|
||||
name: Globalize.translate('TabServices')
|
||||
},
|
||||
{
|
||||
href: 'metadatanfo.html',
|
||||
name: Globalize.translate('TabNfoSettings')
|
||||
}];
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#metadataConfigurationPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
$('.metadataConfigurationForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshow', "#metadataConfigurationPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('metadata', 0, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
var config;
|
||||
var allCultures;
|
||||
var allCountries;
|
||||
|
||||
ApiClient.getServerConfiguration().then(function (result) {
|
||||
|
||||
config = result;
|
||||
load(page, config, allCultures, allCountries);
|
||||
});
|
||||
|
||||
function populateLanguages(select, languages) {
|
||||
|
||||
var html = "";
|
||||
|
||||
html += "<option value=''></option>";
|
||||
|
||||
for (var i = 0, length = languages.length; i < length; i++) {
|
||||
|
||||
var culture = languages[i];
|
||||
|
||||
html += "<option value='" + culture.TwoLetterISOLanguageName + "'>" + culture.DisplayName + "</option>";
|
||||
}
|
||||
|
||||
select.innerHTML = html;
|
||||
}
|
||||
|
||||
function populateCountries(select, allCountries) {
|
||||
|
||||
var html = "";
|
||||
|
||||
html += "<option value=''></option>";
|
||||
|
||||
for (var i = 0, length = allCountries.length; i < length; i++) {
|
||||
|
||||
var culture = allCountries[i];
|
||||
|
||||
html += "<option value='" + culture.TwoLetterISORegionName + "'>" + culture.DisplayName + "</option>";
|
||||
}
|
||||
|
||||
select.innerHTML = html;
|
||||
}
|
||||
|
||||
ApiClient.getCultures().then(function (result) {
|
||||
|
||||
populateLanguages(page.querySelector('#selectLanguage'), result);
|
||||
|
||||
allCultures = result;
|
||||
load(page, config, allCultures, allCountries);
|
||||
});
|
||||
|
||||
ApiClient.getCountries().then(function (result) {
|
||||
|
||||
populateCountries(page.querySelector('#selectCountry'), result);
|
||||
|
||||
allCountries = result;
|
||||
load(page, config, allCultures, allCountries);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -3,6 +3,44 @@
|
|||
|
||||
var currentType;
|
||||
|
||||
function populateLanguages(select) {
|
||||
|
||||
return ApiClient.getCultures().then(function (languages) {
|
||||
|
||||
var html = "";
|
||||
|
||||
html += "<option value=''></option>";
|
||||
|
||||
for (var i = 0, length = languages.length; i < length; i++) {
|
||||
|
||||
var culture = languages[i];
|
||||
|
||||
html += "<option value='" + culture.TwoLetterISOLanguageName + "'>" + culture.DisplayName + "</option>";
|
||||
}
|
||||
|
||||
select.innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
function populateCountries(select) {
|
||||
|
||||
return ApiClient.getCountries().then(function (allCountries) {
|
||||
|
||||
var html = "";
|
||||
|
||||
html += "<option value=''></option>";
|
||||
|
||||
for (var i = 0, length = allCountries.length; i < length; i++) {
|
||||
|
||||
var culture = allCountries[i];
|
||||
|
||||
html += "<option value='" + culture.TwoLetterISORegionName + "'>" + culture.DisplayName + "</option>";
|
||||
}
|
||||
|
||||
select.innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
function loadTabs(page, tabs) {
|
||||
|
||||
var html = '';
|
||||
|
@ -363,6 +401,19 @@
|
|||
|
||||
function loadPage(page) {
|
||||
|
||||
var promises = [
|
||||
ApiClient.getServerConfiguration(),
|
||||
populateLanguages(page.querySelector('#selectLanguage')),
|
||||
populateCountries(page.querySelector('#selectCountry'))
|
||||
];
|
||||
|
||||
Promise.all(promises).then(function (responses) {
|
||||
|
||||
var config = responses[0];
|
||||
page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || '';
|
||||
page.querySelector('#selectCountry').value = config.MetadataCountryCode || '';
|
||||
});
|
||||
|
||||
loadTabs(page, [
|
||||
|
||||
{ name: 'OptionMovies', type: 'Movie' },
|
||||
|
@ -473,6 +524,9 @@
|
|||
|
||||
if (metadataOptions) {
|
||||
|
||||
config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value;
|
||||
config.MetadataCountryCode = form.querySelector('#selectCountry').value;
|
||||
|
||||
saveSettingsIntoConfig(form, metadataOptions);
|
||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
|
||||
|
@ -496,16 +550,24 @@
|
|||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'metadata.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
href: 'library.html',
|
||||
name: Globalize.translate('HeaderLibraries')
|
||||
},
|
||||
{
|
||||
href: 'librarydisplay.html',
|
||||
name: Globalize.translate('TabDisplay')
|
||||
},
|
||||
{
|
||||
href: 'metadataimages.html',
|
||||
name: Globalize.translate('TabServices')
|
||||
name: Globalize.translate('TabMetadata')
|
||||
},
|
||||
{
|
||||
href: 'metadatanfo.html',
|
||||
name: Globalize.translate('TabNfoSettings')
|
||||
},
|
||||
{
|
||||
href: 'librarysettings.html',
|
||||
name: Globalize.translate('TabAdvanced')
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -551,7 +613,7 @@
|
|||
|
||||
}).on('pageshow', "#metadataImagesConfigurationPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('metadata', 1, getTabs);
|
||||
LibraryMenu.setTabs('metadata', 2, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
|
|
@ -62,16 +62,24 @@
|
|||
function getTabs() {
|
||||
return [
|
||||
{
|
||||
href: 'metadata.html',
|
||||
name: Globalize.translate('TabSettings')
|
||||
href: 'library.html',
|
||||
name: Globalize.translate('HeaderLibraries')
|
||||
},
|
||||
{
|
||||
href: 'librarydisplay.html',
|
||||
name: Globalize.translate('TabDisplay')
|
||||
},
|
||||
{
|
||||
href: 'metadataimages.html',
|
||||
name: Globalize.translate('TabServices')
|
||||
name: Globalize.translate('TabMetadata')
|
||||
},
|
||||
{
|
||||
href: 'metadatanfo.html',
|
||||
name: Globalize.translate('TabNfoSettings')
|
||||
},
|
||||
{
|
||||
href: 'librarysettings.html',
|
||||
name: Globalize.translate('TabAdvanced')
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -81,7 +89,7 @@
|
|||
|
||||
}).on('pageshow', "#metadataNfoPage", function () {
|
||||
|
||||
LibraryMenu.setTabs('metadata', 2, getTabs);
|
||||
LibraryMenu.setTabs('metadata', 3, getTabs);
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
|
|
@ -466,15 +466,9 @@ var Dashboard = {
|
|||
divider: true,
|
||||
name: Globalize.translate('TabLibrary'),
|
||||
href: "library.html",
|
||||
pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage'],
|
||||
pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage', 'metadataImagesConfigurationPage', 'metadataNfoPage'],
|
||||
icon: 'folder',
|
||||
color: '#38c'
|
||||
}, {
|
||||
name: Globalize.translate('TabMetadata'),
|
||||
href: "metadata.html",
|
||||
pageIds: ['metadataConfigurationPage', 'metadataImagesConfigurationPage', 'metadataNfoPage'],
|
||||
icon: 'insert_drive_file',
|
||||
color: '#FF9800'
|
||||
}, {
|
||||
name: Globalize.translate('TabSubtitles'),
|
||||
href: "metadatasubtitles.html",
|
||||
|
@ -1704,6 +1698,7 @@ var AppInfo = {};
|
|||
defineRoute({
|
||||
path: '/edititemmetadata.html',
|
||||
dependencies: [],
|
||||
controller: 'scripts/edititemmetadata',
|
||||
autoFocus: false
|
||||
});
|
||||
|
||||
|
@ -1909,13 +1904,6 @@ var AppInfo = {};
|
|||
controller: 'scripts/loginpage'
|
||||
});
|
||||
|
||||
defineRoute({
|
||||
path: '/metadata.html',
|
||||
dependencies: [],
|
||||
autoFocus: false,
|
||||
roles: 'admin'
|
||||
});
|
||||
|
||||
defineRoute({
|
||||
path: '/metadataadvanced.html',
|
||||
dependencies: [],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue