1
0
Fork 0
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:
Luke Pulverenti 2015-07-15 07:26:47 -04:00
parent a7ade97b44
commit 5f308d38a0
14 changed files with 216 additions and 116 deletions

View file

@ -197,20 +197,34 @@
.editorTile { .editorTile {
display: inline-block; display: inline-block;
margin: 1em 2em 2em 0; margin: .5em;
text-align: center; text-align: center;
vertical-align: middle; vertical-align: middle;
} }
.imageEditorTile { .imageEditorTile {
width: 256px; 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 { .editorTile p {
margin: .5em 0; margin: .5em 0;
} }
.editorTileInner {
padding: 1em;
}
.editorTile .ui-field-contain { .editorTile .ui-field-contain {
margin: 0 0 .5em; margin: 0 0 .5em;
} }

View file

@ -6,7 +6,7 @@
<body> <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 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>
<div class="editPageSidebar smoothScrollY"> <div class="editPageSidebar" style="overflow:auto;">
<div class="libraryTree"> <div class="libraryTree">
<ul></ul> <ul></ul>
</div> </div>
@ -28,7 +28,7 @@
<form class="editItemMetadataForm editMetadataForm"> <form class="editItemMetadataForm editMetadataForm">
<div class="metadataFormFields"> <div class="metadataFormFields">
<div style="text-align: center;margin:2em 0 .5em;"> <div style="margin:2em 0 .5em;">
<paper-button raised class="submit"> <paper-button raised class="submit">
<button class="btnSave clearButton" type="submit" data-role="none" style="display:inline-block;"> <button class="btnSave clearButton" type="submit" data-role="none" style="display:inline-block;">
@ -36,8 +36,9 @@
</button> </button>
</paper-button> </paper-button>
<paper-button raised class="subdued btnRefresh btnRefreshAdvanced"><iron-icon icon="refresh"></iron-icon><span>${ButtonRefresh}</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 class="subdued"><iron-icon icon="info"></iron-icon><span>${ButtonIdentify}</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>
<div style="padding: 10px 0;"> <div style="padding: 10px 0;">
@ -425,7 +426,7 @@
</neon-animatable> </neon-animatable>
<neon-animatable> <neon-animatable>
<div class="editorTab imageEditorTab"> <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 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> <paper-button raised class="subdued btnOpenUploadMenu"><iron-icon icon="add"></iron-icon><span>${ButtonUpload}</span></paper-button>

View file

@ -265,15 +265,15 @@
html += '<div class="editorTile imageEditorTile">'; html += '<div class="editorTile imageEditorTile">';
if (image.ImageType !== "Backdrop" && image.ImageType !== "Screenshot") {
html += '<h3>' + image.ImageType + '</h3>';
}
var height = 150; 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 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>'; html += '<div class="editorTileInner">';
if (image.ImageType !== "Backdrop" && image.ImageType !== "Screenshot") {
html += '<p>' + image.ImageType + '</p>';
}
html += '<p>' + image.Width + ' X ' + image.Height + '</p>'; 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) { 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="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 += '</p>';
html += '</div>'; html += '</div>';

View file

@ -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 () { $(document).on('pageinitdepends', "#editItemMetadataPage", function () {
var page = this; var page = this;
$('.btnRefreshAdvanced', this).on('click', function () {
performAdvancedRefresh(page);
});
$('.btnSimpleRefresh', this).on('click', function () { $('.btnSimpleRefresh', this).on('click', function () {
performSimpleRefresh(page); performSimpleRefresh(page);
@ -1410,10 +1452,6 @@
} }
}); });
$('#btnDelete', this).on('click', function () {
LibraryBrowser.deleteItem(currentItem.Id);
});
$('.libraryTree', page).on('itemclicked', function (event, data) { $('.libraryTree', page).on('itemclicked', function (event, data) {
if (data.id != currentItem.Id) { if (data.id != currentItem.Id) {
@ -1458,15 +1496,30 @@
loadTab(page, parseInt(this.selected)); loadTab(page, parseInt(this.selected));
}); });
page.querySelector('.btnMore iron-icon').icon = AppInfo.moreIcon;
$('.btnMore', page).on('click', function () {
showMoreMenu(page);
});
}).on('pageshowready', "#editItemMetadataPage", function () { }).on('pageshowready', "#editItemMetadataPage", function () {
var page = this; var page = this;
$(LibraryBrowser).on('itemdeleting', onItemDeleted); $(LibraryBrowser).on('itemdeleting', onItemDeleted);
page.querySelector('paper-tabs').selected = parseInt(getParameterByName('tab') || '0'); var selected = parseInt(getParameterByName('tab') || '0');
if (selected) {
page.querySelector('paper-tabs').selected = 0; 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 () { }).on('pagebeforehide', "#editItemMetadataPage", function () {
var page = this; var page = this;

View file

@ -258,7 +258,7 @@
if (elem) { if (elem) {
// commenting out for now because it's causing the whole window to scroll in chrome // commenting out for now because it's causing the whole window to scroll in chrome
//elem.scrollIntoView(); elem.scrollIntoView();
} }
} }

View file

@ -22,8 +22,9 @@
var duration = this.duration; var duration = this.duration;
if (duration) { if (duration) {
if (time >= duration) { if (time >= (duration - 1)) {
MediaPlayer.nextTrack();
onEnded();
return; return;
} }
} }

View file

@ -732,7 +732,7 @@
var mainDrawerButton = document.querySelector('.mainDrawerButton'); var mainDrawerButton = document.querySelector('.mainDrawerButton');
if (mainDrawerButton) { if (mainDrawerButton) {
if (page.getAttribute('data-menubutton') == 'false') { if (page.getAttribute('data-menubutton') == 'false' && $.browser.mobile) {
mainDrawerButton.classList.add('hide'); mainDrawerButton.classList.add('hide');
} else { } else {
mainDrawerButton.classList.remove('hide'); mainDrawerButton.classList.remove('hide');
@ -789,7 +789,7 @@
function updateBackButton(page) { function updateBackButton(page) {
var canGoBack = !page.classList.contains('homePage'); var canGoBack = !page.classList.contains('homePage') && history.length > 0;
var backButton = document.querySelector('.headerBackButton'); var backButton = document.querySelector('.headerBackButton');

View file

@ -167,39 +167,43 @@
var name = card.attr('data-name'); var name = card.attr('data-name');
var configHref = $('.cardContent', card).attr('href'); var configHref = $('.cardContent', card).attr('href');
$('.cardMenu', page).popup("close").remove(); var menuItems = [];
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>';
if (configHref) { 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>'; menuItems.push({
name: Globalize.translate('ButtonUninstall'),
html += '</ul>'; id: 'delete',
ironIcon: 'delete'
html += '</div>';
$(page).append(html);
var flyout = $('.cardMenu', page).popup({ positionTo: elem || "window" }).trigger('create').popup("open").on("popupafterclose", function () {
$(this).off("popupafterclose").remove();
}); });
$('.btnDeletePlugin', flyout).on('click', function () { require(['actionsheet'], function () {
$('.cardMenu', page).popup('close'); ActionSheetElement.show({
items: menuItems,
positionTo: card,
callback: function (resultId) {
// jqm won't show a popup while another is in the act of closing switch (resultId) {
setTimeout(function () {
case 'open':
Dashboard.navigate(configHref);
break;
case 'delete':
deletePlugin(page, id, name); deletePlugin(page, id, name);
}, 300); break;
default:
break;
}
}
});
}); });
} }

View file

@ -67,7 +67,7 @@ var Dashboard = {
// These are not needed. Nulling them out can help reduce dom querying when pages are loaded // These are not needed. Nulling them out can help reduce dom querying when pages are loaded
$.mobile.nojs = null; $.mobile.nojs = null;
$.mobile.degradeInputsWithin = null; $.mobile.degradeInputsWithin = null;
$.mobile.keepNative = ":jqmData(role='none')"; $.mobile.keepNative = ":jqmData(role='none'),.paper-input";
}, },
isConnectMode: function () { isConnectMode: function () {
@ -464,22 +464,22 @@ var Dashboard = {
showLoadingMsg: function () { showLoadingMsg: function () {
console.log('showLoadingMsg');
require(['paperbuttonstyle'], function () { require(['paperbuttonstyle'], function () {
var elem = document.getElementById('docspinner'); var elem = document.querySelector('.docspinner');
if (elem) { if (elem) {
// This is just an attempt to prevent the fade-in animation from running repeating and causing flickering // 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 { } else {
elem = document.createElement("paper-spinner"); elem = document.createElement("paper-spinner");
elem.id = 'docspinner'; elem.classList.add('docspinner');
document.body.appendChild(elem); document.body.appendChild(elem);
elem.active = true; elem.active = true;
} }
}); });
@ -487,14 +487,21 @@ var Dashboard = {
hideLoadingMsg: function () { hideLoadingMsg: function () {
var elem = document.getElementById('docspinner'); console.log('hideLoadingMsg');
require(['paperbuttonstyle'], function () {
var elem = document.querySelector('.docspinner');
if (elem) { if (elem) {
elem.active = false;
setTimeout(function () { setTimeout(function () {
elem.active = false; elem.active = false;
}, 100); }, 100);
} }
});
}, },
getModalLoadingMsg: function () { getModalLoadingMsg: function () {
@ -2023,7 +2030,7 @@ var AppInfo = {};
var drawer = document.querySelector('.mainDrawerPanel'); var drawer = document.querySelector('.mainDrawerPanel');
drawer.classList.remove('mainDrawerPanelPreInit'); drawer.classList.remove('mainDrawerPanelPreInit');
drawer.forceNarrow = true; 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) { if ($.browser.safari && !AppInfo.isNativeApp) {
drawer.disableEdgeSwipe = true; drawer.disableEdgeSwipe = true;
@ -2128,7 +2135,7 @@ $(document).on('pagecreate', ".page", function () {
current = newTheme; current = newTheme;
} }
if (current == 'b' && !$.browser.mobile) { if (current != 'a' && !$.browser.mobile) {
document.body.classList.add('darkScrollbars'); document.body.classList.add('darkScrollbars');
} else { } else {
document.body.classList.remove('darkScrollbars'); document.body.classList.remove('darkScrollbars');

View file

@ -30,10 +30,6 @@
function deleteUser(page, id) { function deleteUser(page, id) {
$('.userMenu', page).on("popupafterclose.deleteuser", function () {
$(this).off('popupafterclose.deleteuser');
var msg = Globalize.translate('DeleteUserConfirmation'); var msg = Globalize.translate('DeleteUserConfirmation');
Dashboard.confirm(msg, Globalize.translate('DeleteUser'), function (result) { Dashboard.confirm(msg, Globalize.translate('DeleteUser'), function (result) {
@ -47,44 +43,67 @@
}); });
} }
}); });
}).popup('close');
} }
function showUserMenu(elem) { function showUserMenu(elem) {
var card = $(elem).parents('.card'); var card = $(elem).parents('.card')[0];
var page = $(elem).parents('.page'); var page = $(card).parents('.page')[0];
var userId = card.attr('data-userid'); var userId = card.getAttribute('data-userid');
$('.userMenu', page).popup("close").remove(); var menuItems = [];
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();
menuItems.push({
name: Globalize.translate('ButtonOpen'),
id: 'open',
ironIcon: 'mode-edit'
});
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;
}
}
}); });
$('.btnDeleteUser', flyout).on('click', function () {
deleteUser(page, this.getAttribute('data-userid'));
}); });
} }

View file

@ -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 { .libraryViewNav .ui-btn-active, .libraryViewNav .iron-selected, .barsMenuButton .fa, .btnActiveCast, .libraryViewNav a:not(.ui-btn-active):hover {
color: #EA3150 !important; color: #E91E63 !important;
} }
.libraryViewNav { .libraryViewNav {

View file

@ -188,7 +188,7 @@ paper-button.notext {
margin-right: 0; margin-right: 0;
} }
#docspinner { .docspinner {
display: block; display: block;
margin-top: -14px; margin-top: -14px;
margin-left: -14px; margin-left: -14px;

View file

@ -1,4 +1,4 @@
#docspinner { .docspinner {
/* It often doesn't disappear so just forget it */ /* It often doesn't disappear so just forget it */
display: none !important; display: none !important;
} }

View file

@ -17,4 +17,5 @@
<link rel="import" href="bower_components/paper-tabs/paper-tabs.html"> <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-slider/paper-slider.html">
<link rel="import" href="bower_components/paper-menu/paper-menu.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"> <link rel="import" href="thirdparty/emby-icons.html">