1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update shared dialogs

This commit is contained in:
Luke Pulverenti 2016-05-13 14:28:05 -04:00
parent 6e6017eeaf
commit c17d97e0ba
28 changed files with 204 additions and 62 deletions

View file

@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.3.7",
"_release": "1.3.7",
"version": "1.3.18",
"_release": "1.3.18",
"_resolution": {
"type": "version",
"tag": "1.3.7",
"commit": "106e16436f7c13ea1317d2bf98c89eac8fa63668"
"tag": "1.3.18",
"commit": "127ca5da89083c44351fd0664355f3f521313d5d"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0",

View file

@ -1,5 +1,7 @@
define(['historyManager', 'focusManager', 'browser', 'layoutManager', 'inputManager', 'scrollHelper', 'css!./dialoghelper.css', 'scrollStyles'], function (historyManager, focusManager, browser, layoutManager, inputManager, scrollHelper) {
var globalOnOpenCallback;
function dialogHashHandler(dlg, hash, resolve) {
var self = this;
@ -184,6 +186,10 @@
function open(dlg) {
if (globalOnOpenCallback) {
globalOnOpenCallback(dlg);
}
return new Promise(function (resolve, reject) {
new dialogHashHandler(dlg, 'dlg' + new Date().getTime(), resolve);
@ -403,6 +409,9 @@
return {
open: open,
close: close,
createDialog: createDialog
createDialog: createDialog,
setOnOpen: function (val) {
globalOnOpenCallback = val;
}
};
});

View file

@ -21,14 +21,11 @@
.formDialog .dialogContent {
flex-grow: 1;
flex-shrink: 0;
width: 100%;
height: 100%;
}
.formDialog .dialogContentInner {
padding-bottom: 50vh;
padding-top: 1.5em;
padding-top: 1em;
}
@media all and (min-width: 1000px) {

View file

@ -0,0 +1,101 @@
define(['apphost', 'globalize', 'connectionManager'], function (appHost, globalize, connectionManager) {
function getCommands(options) {
var item = options.item;
var serverId = item.ServerId;
var apiClient = connectionManager.getApiClient(serverId);
return apiClient.getCurrentUser().then(function (user) {
var commands = [];
if (item.CanDownload && user.Policy.EnableContentDownloading && appHost.supports('filedownload')) {
commands.push({
name: globalize.translate('sharedcomponents#Download'),
id: 'download'
});
}
if (item.Type != 'Timer' && user.Policy.EnablePublicSharing && appHost.supports('sharing')) {
commands.push({
name: globalize.translate('Share'),
id: 'share'
});
}
return commands;
});
}
function executeCommand(item, id) {
var itemId = item.Id;
var serverId = item.ServerId;
var apiClient = connectionManager.getApiClient(serverId);
return new Promise(function (resolve, reject) {
switch (id) {
case 'download':
{
require(['fileDownloader'], function (fileDownloader) {
var downloadHref = apiClient.getUrl("Items/" + itemId + "/Download", {
api_key: apiClient.accessToken()
});
fileDownloader.download([
{
url: downloadHref,
itemId: itemId,
serverId: serverId
}]);
reject();
});
break;
}
case 'share':
{
require(['sharingmanager'], function (sharingManager) {
sharingManager.showMenu({
serverId: serverId,
itemId: itemId
}).then(reject);
});
break;
}
default:
break;
}
});
}
function show(options) {
return getCommands(options).then(function (commands) {
return new Promise(function (resolve, reject) {
require(['actionsheet'], function (actionSheet) {
actionSheet.show({
items: commands
}).then(function (id) {
executeCommand(options.item, id).then(resolve);
}, reject);
});
});
});
}
return {
getCommands: getCommands,
show: show
};
});

View file

@ -1,4 +1,4 @@
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'scrollStyles', 'paper-checkbox', 'paper-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'html!./../icons/mediainfo.html', 'html!./../icons/nav.html'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'scrollStyles', 'paper-checkbox', 'emby-collapsible', 'paper-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'html!./../icons/mediainfo.html', 'html!./../icons/nav.html'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
var currentProgramId;
var currentServerId;
@ -261,6 +261,12 @@
context.querySelector('#chkConvertRecordings').checked = config.EnableRecordingEncoding;
});
if (layoutManager.tv) {
context.querySelector('.advanced').classList.add('hide');
} else {
context.querySelector('.advanced').classList.remove('hide');
}
}
function selectDays(page, days) {
@ -399,9 +405,7 @@
reload(dlg, itemId);
setTimeout(function () {
dialogHelper.open(dlg);
}, 1000);
});
});
}

View file

@ -43,9 +43,14 @@
<br />
<paper-checkbox id="chkConvertRecordings">${OptionConvertRecordingsToStreamingFormat}</paper-checkbox>
<div class="fieldDescription paperCheckboxFieldDescription">${OptionConvertRecordingsToStreamingFormatHelp}</div>
<div class="fieldDescription paperCheckboxFieldDescription btnSupporterForConverting hide"><a target="_blank" class="accent lnkPremiere">${FeatureRequiresEmbyPremiere}</a></div>
<div class="fieldDescription paperCheckboxFieldDescription btnSupporterForConverting hide">
<a href="#" class="accent lnkPremiere">${FeatureRequiresEmbyPremiere}</a>
</div>
</div>
<div class="advanced hide">
<br />
<br />
<emby-collapsible title="${Advanced}">
<div>
<paper-input type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${PrePaddingMinutes}"></paper-input>
</div>
@ -53,6 +58,9 @@
<div>
<paper-input type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${PostPaddingMinutes}"></paper-input>
</div>
</emby-collapsible>
<br />
</div>
<br />
<div>
<div class="supporterContainer hide">
@ -60,7 +68,7 @@
<p class="supporterTrial hide">${HeaderEnjoyDayTrial}</p>
<a class="clearLink btnSupporter hide" href="http://emby.media/premiere" target="_blank"><paper-button raised class="accent block"><iron-icon icon="nav:check"></iron-icon><span>${HeaderBecomeProjectSupporter}</span></paper-button></a>
</div>
<paper-button raised class="submit btnSubmit block"><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Record}</span></paper-button>
<paper-button raised class="btnSubmit block"><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Record}</span></paper-button>
</div>
<br />
<br />

View file

@ -1,7 +1,5 @@
define(function () {
var importedFiles = [];
return {
load: function (url, req, load, config) {
@ -10,7 +8,9 @@ define(function () {
url = config.baseUrl + url;
}
url = url + "?" + config.urlArgs;
if (config.urlArgs) {
url += config.urlArgs(url, url);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);

View file

@ -8,10 +8,8 @@
// Delete the share since it was cancelled
apiClient.ajax({
type: 'DELETE',
url: apiClient.getUrl('Social/Shares/' + shareId)
});
}
@ -41,7 +39,7 @@
loading.hide();
sharingMenu.showMenu(options).then(function() {
return sharingMenu.showMenu(options).then(function () {
console.log('share success. shareId: ' + options.share.Id);
}, function () {
onSharingCancel(options, apiClient);

View file

@ -0,0 +1,14 @@
define([], function () {
return {
openUrl: function (url) {
window.open(url, '_blank');
},
canExec: false,
exec: function (options) {
// options.path
// options.arguments
return Promise.reject();
}
};
});

View file

@ -45,5 +45,7 @@
"OptionConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format",
"OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MP4 for easy playback on your devices.",
"FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.",
"Record": "Record"
"Record": "Record",
"Download": "Download",
"Advanced": "Advanced"
}

View file

@ -30,14 +30,14 @@
"web-component-tester": "polymer/web-component-tester#^3.4.0"
},
"ignore": [],
"homepage": "https://github.com/PolymerElements/iron-a11y-announcer",
"homepage": "https://github.com/polymerelements/iron-a11y-announcer",
"_release": "1.0.4",
"_resolution": {
"type": "version",
"tag": "v1.0.4",
"commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9"
},
"_source": "git://github.com/PolymerElements/iron-a11y-announcer.git",
"_source": "git://github.com/polymerelements/iron-a11y-announcer.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/iron-a11y-announcer"
"_originalSource": "polymerelements/iron-a11y-announcer"
}

View file

@ -36,7 +36,7 @@
"tag": "v1.5.1",
"commit": "e3e34408fad8f7cde59c4255cf3fe90f7dcf91d8"
},
"_source": "git://github.com/polymerelements/iron-selector.git",
"_source": "git://github.com/PolymerElements/iron-selector.git",
"_target": "^1.0.0",
"_originalSource": "polymerelements/iron-selector"
"_originalSource": "PolymerElements/iron-selector"
}

View file

@ -45,7 +45,7 @@
"tag": "v1.0.11",
"commit": "e3c1ab0c72905b58fb4d9adc2921ea73b5c085a5"
},
"_source": "git://github.com/PolymerElements/paper-behaviors.git",
"_source": "git://github.com/polymerelements/paper-behaviors.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-behaviors"
"_originalSource": "polymerelements/paper-behaviors"
}

View file

@ -32,14 +32,14 @@
"iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0"
},
"ignore": [],
"homepage": "https://github.com/PolymerElements/paper-ripple",
"homepage": "https://github.com/polymerelements/paper-ripple",
"_release": "1.0.5",
"_resolution": {
"type": "version",
"tag": "v1.0.5",
"commit": "d72e7a9a8ab518b901ed18dde492df3b87a93be5"
},
"_source": "git://github.com/PolymerElements/paper-ripple.git",
"_source": "git://github.com/polymerelements/paper-ripple.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-ripple"
"_originalSource": "polymerelements/paper-ripple"
}

View file

@ -201,7 +201,7 @@
var html = '';
var title = items.length ? Globalize.translate('HeaderAddToCollection') : Globalize.translate('HeaderNewCollection');
html += '<div class="dialogHeader">';
html += '<div class="dialogHeader" style="margin:0 0 2em;">';
html += '<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>';
html += '<div class="dialogHeaderTitle">';
html += title;

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
</div>

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
${HeaderInviteUser}

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
</div>

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
${ButtonAddMediaLibrary}

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
${ButtonEdit}

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
${ButtonEdit}

View file

@ -207,7 +207,7 @@
var title = Globalize.translate('HeaderAddToPlaylist');
html += '<div class="dialogHeader">';
html += '<div class="dialogHeader" style="margin:0 0 2em;">';
html += '<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>';
html += '<div class="dialogHeaderTitle">';
html += title;

View file

@ -1,4 +1,4 @@
<div class="dialogHeader">
<div class="dialogHeader" style="margin:0 0 2em;">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle">
${ButtonEdit}

View file

@ -362,7 +362,7 @@
dlg.classList.add('background-theme-b');
var html = '';
html += '<div class="dialogHeader">';
html += '<div class="dialogHeader" style="margin:0 0 2em;">';
html += '<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>';
html += '<div class="dialogHeaderTitle">';
html += item.Name;

View file

@ -2032,6 +2032,8 @@
$('.btnRecord,.btnFloatingRecord', page).on('click', function () {
var id = getParameterByName('id');
Dashboard.showLoadingMsg();
require(['recordingCreator'], function (recordingCreator) {
recordingCreator.show(id, currentItem.ServerId).then(function () {
reload(page);

View file

@ -1833,6 +1833,12 @@ var AppInfo = {};
return viewManager;
});
if (Dashboard.isRunningInCordova() && browserInfo.android) {
define("shell", ["cordova/android/shell"], returnFirstDependency);
} else {
define("shell", [embyWebComponentsBowerPath + "/shell"], returnFirstDependency);
}
define("sharingmanager", [embyWebComponentsBowerPath + "/sharing/sharingmanager"], returnFirstDependency);
if (Dashboard.isRunningInCordova()) {
@ -1979,7 +1985,6 @@ var AppInfo = {};
define("swiper", [bowerPath + "/Swiper/dist/js/swiper.min", "css!" + bowerPath + "/Swiper/dist/css/swiper.min"], returnFirstDependency);
define("dialogHelper", [embyWebComponentsBowerPath + "/dialoghelper/dialoghelper"], returnFirstDependency);
define("toast", [embyWebComponentsBowerPath + "/toast/toast"], returnFirstDependency);
define("scrollHelper", [embyWebComponentsBowerPath + "/scrollhelper"], returnFirstDependency);
@ -2009,6 +2014,12 @@ var AppInfo = {};
return jQuery;
});
define("dialogHelper", [embyWebComponentsBowerPath + "/dialoghelper/dialoghelper"], function (dialoghelper) {
dialoghelper.setOnOpen(onDialogOpen);
return dialoghelper;
});
// alias
define("historyManager", [], function () {
return Emby.Page;
@ -2057,8 +2068,6 @@ var AppInfo = {};
};
});
define('dialogText', ['globalize'], getDialogText());
define("embyRouter", [embyWebComponentsBowerPath + '/router'], function (embyRouter) {
embyRouter.showLocalLogin = function (apiClient, serverId, manualLogin) {
@ -2111,14 +2120,13 @@ var AppInfo = {};
return appSettings;
}
function getDialogText() {
return function (globalize) {
return {
get: function (text) {
return globalize.translate('Button' + text);
function onDialogOpen(dlg) {
if (dlg.classList.contains('formDialog')) {
if (!dlg.classList.contains('background-theme-a')) {
dlg.classList.add('background-theme-b');
dlg.classList.add('ui-body-b');
}
}
};
};
}
function initRequireWithBrowser(browser) {

View file

@ -249,7 +249,7 @@
dlg.classList.add('popupEditor');
var html = '';
html += '<div class="dialogHeader">';
html += '<div class="dialogHeader" style="margin:0 0 2em;">';
html += '<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>';
html += '<div class="dialogHeaderTitle">';
html += Globalize.translate('SyncMedia');

View file

@ -525,7 +525,6 @@ paper-radio-group > * {
}
div.dialogHeader {
margin: 0 0 2em !important;
padding: .35em .5em;
display: flex;
align-items: center;