mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update metadata manager
This commit is contained in:
parent
a7ade97b44
commit
5f308d38a0
14 changed files with 216 additions and 116 deletions
|
@ -197,20 +197,34 @@
|
|||
|
||||
.editorTile {
|
||||
display: inline-block;
|
||||
margin: 1em 2em 2em 0;
|
||||
margin: .5em;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.imageEditorTile {
|
||||
width: 256px;
|
||||
padding-bottom: 0;
|
||||
background-color: #282828;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.editorTile h3 {
|
||||
text-transform: uppercase;
|
||||
background: #444;
|
||||
padding: .5em 0;
|
||||
text-align: center;
|
||||
margin-top: 0;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
.editorTile p {
|
||||
margin: .5em 0;
|
||||
}
|
||||
|
||||
.editorTileInner {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
.editorTile .ui-field-contain {
|
||||
margin: 0 0 .5em;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<body>
|
||||
<div id="editItemMetadataPage" data-role="page" class="page libraryPage metadataEditorPage noSecondaryNavPage" data-contextname="${HeaderMetadataManager}" data-require="scripts/editorsidebar,scripts/edititemmetadata,jqmicons,scripts/edititemsubtitles,scripts/editcollectionitems,scripts/edititemimages">
|
||||
<div>
|
||||
<div class="editPageSidebar smoothScrollY">
|
||||
<div class="editPageSidebar" style="overflow:auto;">
|
||||
<div class="libraryTree">
|
||||
<ul></ul>
|
||||
</div>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<form class="editItemMetadataForm editMetadataForm">
|
||||
<div class="metadataFormFields">
|
||||
|
||||
<div style="text-align: center;margin:2em 0 .5em;">
|
||||
<div style="margin:2em 0 .5em;">
|
||||
|
||||
<paper-button raised class="submit">
|
||||
<button class="btnSave clearButton" type="submit" data-role="none" style="display:inline-block;">
|
||||
|
@ -36,8 +36,9 @@
|
|||
</button>
|
||||
</paper-button>
|
||||
|
||||
<paper-button raised class="subdued btnRefresh btnRefreshAdvanced"><iron-icon icon="refresh"></iron-icon><span>${ButtonRefresh}</span></paper-button>
|
||||
<paper-button id="btnIdentify" raised class="subdued"><iron-icon icon="info"></iron-icon><span>${ButtonIdentify}</span></paper-button>
|
||||
<paper-button raised class="subdued btnRefresh btnSimpleRefresh" style="background-color:#673AB7;"><iron-icon icon="refresh"></iron-icon><span>${ButtonRefresh}</span></paper-button>
|
||||
<paper-button id="btnIdentify" raised style="background-color:#009688;"><iron-icon icon="info"></iron-icon><span>${ButtonIdentify}</span></paper-button>
|
||||
<paper-button raised class="subdued notext btnMore"><iron-icon icon="more-vert"></iron-icon></paper-button>
|
||||
</div>
|
||||
|
||||
<div style="padding: 10px 0;">
|
||||
|
@ -425,7 +426,7 @@
|
|||
</neon-animatable>
|
||||
<neon-animatable>
|
||||
<div class="editorTab imageEditorTab">
|
||||
<div style="text-align: center;margin:2em 0 .5em;">
|
||||
<div style="margin:2em 0 .5em;">
|
||||
|
||||
<paper-button raised class="subdued btnBrowseAllImages"><iron-icon icon="cloud"></iron-icon><span>${ButtonBrowseImages}</span></paper-button>
|
||||
<paper-button raised class="subdued btnOpenUploadMenu"><iron-icon icon="add"></iron-icon><span>${ButtonUpload}</span></paper-button>
|
||||
|
@ -737,6 +738,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -265,15 +265,15 @@
|
|||
|
||||
html += '<div class="editorTile imageEditorTile">';
|
||||
|
||||
if (image.ImageType !== "Backdrop" && image.ImageType !== "Screenshot") {
|
||||
html += '<h3>' + image.ImageType + '</h3>';
|
||||
}
|
||||
|
||||
var height = 150;
|
||||
|
||||
html += '<div style="height:' + height + 'px;vertical-align:top;background-repeat:no-repeat;background-position:center center;background-size:contain;background-image:url(\'' + LibraryBrowser.getImageUrl(currentItem, image.ImageType, image.ImageIndex, { height: height }) + '\');"></div>';
|
||||
|
||||
html += '<div>';
|
||||
|
||||
if (image.ImageType !== "Backdrop" && image.ImageType !== "Screenshot") {
|
||||
html += '<p>' + image.ImageType + '</p>';
|
||||
}
|
||||
html += '<div class="editorTileInner">';
|
||||
|
||||
html += '<p>' + image.Width + ' X ' + image.Height + '</p>';
|
||||
|
||||
|
@ -294,12 +294,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
html += '<paper-icon-button icon="delete" onclick="EditItemImagesPage.deleteImage(\'' + image.ImageType + '\', ' + (image.ImageIndex != null ? image.ImageIndex : "null") + ');" title="' + Globalize.translate('Delete') + '"></paper-icon-button>';
|
||||
|
||||
if (imageProviders.length) {
|
||||
html += '<paper-icon-button icon="cloud" onclick="EditItemImagesPage.showDownloadMenu(\'' + image.ImageType + '\');" title="' + Globalize.translate('ButtonBrowseOnlineImages') + '"></paper-icon-button>';
|
||||
}
|
||||
|
||||
html += '<paper-icon-button icon="delete" onclick="EditItemImagesPage.deleteImage(\'' + image.ImageType + '\', ' + (image.ImageIndex != null ? image.ImageIndex : "null") + ');" title="' + Globalize.translate('Delete') + '"></paper-icon-button>';
|
||||
|
||||
html += '</p>';
|
||||
|
||||
html += '</div>';
|
||||
|
|
|
@ -1375,15 +1375,57 @@
|
|||
}
|
||||
}
|
||||
|
||||
function showMoreMenu(page) {
|
||||
|
||||
Dashboard.getCurrentUser().done(function (user) {
|
||||
|
||||
var moreCommands = LibraryBrowser.getMoreCommands(currentItem, user);
|
||||
|
||||
var menuItems = [];
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonAdvancedRefresh'),
|
||||
id: 'refresh',
|
||||
ironIcon: 'refresh'
|
||||
});
|
||||
|
||||
if (moreCommands.indexOf('delete') != -1) {
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonDelete'),
|
||||
id: 'delete',
|
||||
ironIcon: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
require(['actionsheet'], function () {
|
||||
|
||||
ActionSheetElement.show({
|
||||
items: menuItems,
|
||||
callback: function (id) {
|
||||
|
||||
switch (id) {
|
||||
|
||||
case 'refresh':
|
||||
performAdvancedRefresh(page);
|
||||
break;
|
||||
case 'delete':
|
||||
LibraryBrowser.deleteItem(currentItem.Id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.btnRefreshAdvanced', this).on('click', function () {
|
||||
|
||||
performAdvancedRefresh(page);
|
||||
});
|
||||
|
||||
$('.btnSimpleRefresh', this).on('click', function () {
|
||||
|
||||
performSimpleRefresh(page);
|
||||
|
@ -1410,10 +1452,6 @@
|
|||
}
|
||||
});
|
||||
|
||||
$('#btnDelete', this).on('click', function () {
|
||||
LibraryBrowser.deleteItem(currentItem.Id);
|
||||
});
|
||||
|
||||
$('.libraryTree', page).on('itemclicked', function (event, data) {
|
||||
|
||||
if (data.id != currentItem.Id) {
|
||||
|
@ -1458,14 +1496,29 @@
|
|||
loadTab(page, parseInt(this.selected));
|
||||
});
|
||||
|
||||
page.querySelector('.btnMore iron-icon').icon = AppInfo.moreIcon;
|
||||
|
||||
$('.btnMore', page).on('click', function () {
|
||||
showMoreMenu(page);
|
||||
});
|
||||
|
||||
}).on('pageshowready', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$(LibraryBrowser).on('itemdeleting', onItemDeleted);
|
||||
|
||||
page.querySelector('paper-tabs').selected = parseInt(getParameterByName('tab') || '0');
|
||||
page.querySelector('paper-tabs').selected = 0;
|
||||
var selected = parseInt(getParameterByName('tab') || '0');
|
||||
|
||||
if (selected) {
|
||||
|
||||
page.querySelector('paper-tabs').selected = 0;
|
||||
|
||||
// Looks like a bug in paper-tabs. It won't set the tab if we try to do it too quickly
|
||||
setTimeout(function () {
|
||||
page.querySelectorAll('paper-tab')[selected].click();
|
||||
}, 700);
|
||||
}
|
||||
|
||||
}).on('pagebeforehide', "#editItemMetadataPage", function () {
|
||||
|
||||
|
|
|
@ -258,7 +258,7 @@
|
|||
|
||||
if (elem) {
|
||||
// commenting out for now because it's causing the whole window to scroll in chrome
|
||||
//elem.scrollIntoView();
|
||||
elem.scrollIntoView();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,9 @@
|
|||
var duration = this.duration;
|
||||
|
||||
if (duration) {
|
||||
if (time >= duration) {
|
||||
MediaPlayer.nextTrack();
|
||||
if (time >= (duration - 1)) {
|
||||
|
||||
onEnded();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -732,7 +732,7 @@
|
|||
var mainDrawerButton = document.querySelector('.mainDrawerButton');
|
||||
|
||||
if (mainDrawerButton) {
|
||||
if (page.getAttribute('data-menubutton') == 'false') {
|
||||
if (page.getAttribute('data-menubutton') == 'false' && $.browser.mobile) {
|
||||
mainDrawerButton.classList.add('hide');
|
||||
} else {
|
||||
mainDrawerButton.classList.remove('hide');
|
||||
|
@ -789,7 +789,7 @@
|
|||
|
||||
function updateBackButton(page) {
|
||||
|
||||
var canGoBack = !page.classList.contains('homePage');
|
||||
var canGoBack = !page.classList.contains('homePage') && history.length > 0;
|
||||
|
||||
var backButton = document.querySelector('.headerBackButton');
|
||||
|
||||
|
|
|
@ -167,39 +167,43 @@
|
|||
var name = card.attr('data-name');
|
||||
var configHref = $('.cardContent', card).attr('href');
|
||||
|
||||
$('.cardMenu', page).popup("close").remove();
|
||||
|
||||
var html = '<div data-role="popup" class="cardMenu tapHoldMenu" data-theme="a">';
|
||||
|
||||
html += '<ul data-role="listview" style="min-width: 180px;">';
|
||||
html += '<li data-role="list-divider">' + Globalize.translate('HeaderMenu') + '</li>';
|
||||
var menuItems = [];
|
||||
|
||||
if (configHref) {
|
||||
html += '<li><a href="' + configHref + '">' + Globalize.translate('ButtonSettings') + '</a></li>';
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonSettings'),
|
||||
id: 'open',
|
||||
ironIcon: 'mode-edit'
|
||||
});
|
||||
}
|
||||
|
||||
html += '<li><a href="#" class="btnDeletePlugin">' + Globalize.translate('ButtonUninstall') + '</a></li>';
|
||||
|
||||
html += '</ul>';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
$(page).append(html);
|
||||
|
||||
var flyout = $('.cardMenu', page).popup({ positionTo: elem || "window" }).trigger('create').popup("open").on("popupafterclose", function () {
|
||||
|
||||
$(this).off("popupafterclose").remove();
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonUninstall'),
|
||||
id: 'delete',
|
||||
ironIcon: 'delete'
|
||||
});
|
||||
|
||||
$('.btnDeletePlugin', flyout).on('click', function () {
|
||||
require(['actionsheet'], function () {
|
||||
|
||||
$('.cardMenu', page).popup('close');
|
||||
ActionSheetElement.show({
|
||||
items: menuItems,
|
||||
positionTo: card,
|
||||
callback: function (resultId) {
|
||||
|
||||
switch (resultId) {
|
||||
|
||||
case 'open':
|
||||
Dashboard.navigate(configHref);
|
||||
break;
|
||||
case 'delete':
|
||||
deletePlugin(page, id, name);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// jqm won't show a popup while another is in the act of closing
|
||||
setTimeout(function () {
|
||||
deletePlugin(page, id, name);
|
||||
}, 300);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ var Dashboard = {
|
|||
// These are not needed. Nulling them out can help reduce dom querying when pages are loaded
|
||||
$.mobile.nojs = null;
|
||||
$.mobile.degradeInputsWithin = null;
|
||||
$.mobile.keepNative = ":jqmData(role='none')";
|
||||
$.mobile.keepNative = ":jqmData(role='none'),.paper-input";
|
||||
},
|
||||
|
||||
isConnectMode: function () {
|
||||
|
@ -464,22 +464,22 @@ var Dashboard = {
|
|||
|
||||
showLoadingMsg: function () {
|
||||
|
||||
console.log('showLoadingMsg');
|
||||
|
||||
require(['paperbuttonstyle'], function () {
|
||||
var elem = document.getElementById('docspinner');
|
||||
var elem = document.querySelector('.docspinner');
|
||||
|
||||
if (elem) {
|
||||
|
||||
// This is just an attempt to prevent the fade-in animation from running repeating and causing flickering
|
||||
if (!elem.active) {
|
||||
elem.active = true;
|
||||
}
|
||||
elem.active = true;
|
||||
|
||||
} else {
|
||||
|
||||
elem = document.createElement("paper-spinner");
|
||||
elem.id = 'docspinner';
|
||||
elem.classList.add('docspinner');
|
||||
|
||||
document.body.appendChild(elem);
|
||||
|
||||
elem.active = true;
|
||||
}
|
||||
});
|
||||
|
@ -487,14 +487,21 @@ var Dashboard = {
|
|||
|
||||
hideLoadingMsg: function () {
|
||||
|
||||
var elem = document.getElementById('docspinner');
|
||||
console.log('hideLoadingMsg');
|
||||
|
||||
if (elem) {
|
||||
require(['paperbuttonstyle'], function () {
|
||||
|
||||
var elem = document.querySelector('.docspinner');
|
||||
|
||||
if (elem) {
|
||||
|
||||
setTimeout(function () {
|
||||
elem.active = false;
|
||||
}, 100);
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
elem.active = false;
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getModalLoadingMsg: function () {
|
||||
|
@ -2023,7 +2030,7 @@ var AppInfo = {};
|
|||
var drawer = document.querySelector('.mainDrawerPanel');
|
||||
drawer.classList.remove('mainDrawerPanelPreInit');
|
||||
drawer.forceNarrow = true;
|
||||
drawer.drawerWidth = screen.availWidth >= 330 ? "310px" : "270px";
|
||||
drawer.drawerWidth = screen.availWidth >= 350 ? "310px" : screen.availWidth >= 310 ? "290px" : "270px";
|
||||
|
||||
if ($.browser.safari && !AppInfo.isNativeApp) {
|
||||
drawer.disableEdgeSwipe = true;
|
||||
|
@ -2128,7 +2135,7 @@ $(document).on('pagecreate', ".page", function () {
|
|||
current = newTheme;
|
||||
}
|
||||
|
||||
if (current == 'b' && !$.browser.mobile) {
|
||||
if (current != 'a' && !$.browser.mobile) {
|
||||
document.body.classList.add('darkScrollbars');
|
||||
} else {
|
||||
document.body.classList.remove('darkScrollbars');
|
||||
|
|
|
@ -30,61 +30,80 @@
|
|||
|
||||
function deleteUser(page, id) {
|
||||
|
||||
$('.userMenu', page).on("popupafterclose.deleteuser", function () {
|
||||
var msg = Globalize.translate('DeleteUserConfirmation');
|
||||
|
||||
$(this).off('popupafterclose.deleteuser');
|
||||
Dashboard.confirm(msg, Globalize.translate('DeleteUser'), function (result) {
|
||||
|
||||
var msg = Globalize.translate('DeleteUserConfirmation');
|
||||
if (result) {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
Dashboard.confirm(msg, Globalize.translate('DeleteUser'), function (result) {
|
||||
ApiClient.deleteUser(id).done(function () {
|
||||
|
||||
if (result) {
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.deleteUser(id).done(function () {
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}).popup('close');
|
||||
loadData(page);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function showUserMenu(elem) {
|
||||
|
||||
var card = $(elem).parents('.card');
|
||||
var page = $(elem).parents('.page');
|
||||
var userId = card.attr('data-userid');
|
||||
var card = $(elem).parents('.card')[0];
|
||||
var page = $(card).parents('.page')[0];
|
||||
var userId = card.getAttribute('data-userid');
|
||||
|
||||
$('.userMenu', page).popup("close").remove();
|
||||
|
||||
var html = '<div data-role="popup" class="userMenu tapHoldMenu" data-theme="a">';
|
||||
|
||||
html += '<ul data-role="listview" style="min-width: 180px;">';
|
||||
html += '<li data-role="list-divider">' + Globalize.translate('HeaderMenu') + '</li>';
|
||||
|
||||
html += '<li><a href="useredit.html?userid=' + userId + '">' + Globalize.translate('ButtonOpen') + '</a></li>';
|
||||
|
||||
html += '<li><a href="userlibraryaccess.html?userid=' + userId + '">' + Globalize.translate('ButtonLibraryAccess') + '</a></li>';
|
||||
html += '<li><a href="userparentalcontrol.html?userid=' + userId + '">' + Globalize.translate('ButtonParentalControl') + '</a></li>';
|
||||
|
||||
html += '<li><a href="#" class="btnDeleteUser" data-userid="' + userId + '">' + Globalize.translate('ButtonDelete') + '</a></li>';
|
||||
|
||||
html += '</ul>';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
page.append(html);
|
||||
|
||||
var flyout = $('.userMenu', page).popup({ positionTo: elem || "window" }).trigger('create').popup("open").on("popupafterclose", function () {
|
||||
|
||||
$(this).off("popupafterclose").remove();
|
||||
var menuItems = [];
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonOpen'),
|
||||
id: 'open',
|
||||
ironIcon: 'mode-edit'
|
||||
});
|
||||
|
||||
$('.btnDeleteUser', flyout).on('click', function () {
|
||||
deleteUser(page, this.getAttribute('data-userid'));
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonLibraryAccess'),
|
||||
id: 'access',
|
||||
ironIcon: 'lock'
|
||||
});
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonParentalControl'),
|
||||
id: 'parentalcontrol',
|
||||
ironIcon: 'person'
|
||||
});
|
||||
|
||||
menuItems.push({
|
||||
name: Globalize.translate('ButtonDelete'),
|
||||
id: 'delete',
|
||||
ironIcon: 'delete'
|
||||
});
|
||||
|
||||
require(['actionsheet'], function () {
|
||||
|
||||
ActionSheetElement.show({
|
||||
items: menuItems,
|
||||
positionTo: card,
|
||||
callback: function (id) {
|
||||
|
||||
switch (id) {
|
||||
|
||||
case 'open':
|
||||
Dashboard.navigate('useredit.html?userid=' + userId);
|
||||
break;
|
||||
case 'access':
|
||||
Dashboard.navigate('userlibraryaccess.html?userid=' + userId);
|
||||
break;
|
||||
case 'parentalcontrol':
|
||||
Dashboard.navigate('userparentalcontrol.html?userid=' + userId);
|
||||
break;
|
||||
case 'delete':
|
||||
deleteUser(page, userId);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ html, body, .ui-btn, .pageTitle {
|
|||
}
|
||||
|
||||
.libraryViewNav .ui-btn-active, .libraryViewNav .iron-selected, .barsMenuButton .fa, .btnActiveCast, .libraryViewNav a:not(.ui-btn-active):hover {
|
||||
color: #EA3150 !important;
|
||||
color: #E91E63 !important;
|
||||
}
|
||||
|
||||
.libraryViewNav {
|
||||
|
|
|
@ -188,7 +188,7 @@ paper-button.notext {
|
|||
margin-right: 0;
|
||||
}
|
||||
|
||||
#docspinner {
|
||||
.docspinner {
|
||||
display: block;
|
||||
margin-top: -14px;
|
||||
margin-left: -14px;
|
||||
|
|
2
dashboard-ui/thirdparty/paper-ie10.css
vendored
2
dashboard-ui/thirdparty/paper-ie10.css
vendored
|
@ -1,4 +1,4 @@
|
|||
#docspinner {
|
||||
.docspinner {
|
||||
/* It often doesn't disappear so just forget it */
|
||||
display: none !important;
|
||||
}
|
||||
|
|
|
@ -17,4 +17,5 @@
|
|||
<link rel="import" href="bower_components/paper-tabs/paper-tabs.html">
|
||||
<link rel="import" href="bower_components/paper-slider/paper-slider.html">
|
||||
<link rel="import" href="bower_components/paper-menu/paper-menu.html">
|
||||
<link rel="import" href="bower_components/paper-input/paper-input.html">
|
||||
<link rel="import" href="thirdparty/emby-icons.html">
|
Loading…
Add table
Add a link
Reference in a new issue