mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update docs
This commit is contained in:
parent
5d1ff60f3d
commit
59d8a3a853
11 changed files with 78 additions and 214 deletions
|
@ -12,7 +12,6 @@
|
|||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" class="ui-btn-active">${TabGeneral}</a>
|
||||
<a href="dashboardhosting.html" data-role="button">${TabHosting}</a>
|
||||
<a href="serversecurity.html" data-role="button">${TabSecurity}</a>
|
||||
</div>
|
||||
<form class="advancedConfigurationForm">
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
var self = this;
|
||||
|
||||
self.upload = function (file, name, url) {
|
||||
self.upload = function (file, mimeType, name, url) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
|
|
@ -113,7 +113,10 @@
|
|||
|
||||
Logger.log('Uploading file to ' + url);
|
||||
|
||||
new MediaBrowser.FileUpload().upload(file, name, url).done(function () {
|
||||
// TODO: Need to get this from cordova file api instead of trying to infer the content type from the path
|
||||
var mimeType = file.toLowerCase().indexOf('mp4') != -1 || file.toLowerCase().indexOf('m4v') != -1 ? 'video/mp4' : (file.toLowerCase().indexOf('png') != -1 ? 'image/png' : 'image/jpg');
|
||||
|
||||
new MediaBrowser.FileUpload().upload(file, mimeType, name, url).done(function () {
|
||||
|
||||
Logger.log('File upload succeeded');
|
||||
deferred.resolve();
|
||||
|
|
|
@ -8,10 +8,63 @@
|
|||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
reportOfflineActions(apiClient).done(function () {
|
||||
|
||||
// Do the first data sync
|
||||
syncData(apiClient, false).done(function () {
|
||||
|
||||
// Download new content
|
||||
getNewMedia(apiClient).done(function () {
|
||||
|
||||
// Do the second data sync
|
||||
syncData(apiClient, false).done(function () {
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
}).fail(getOnFail(deferred));
|
||||
|
||||
}).fail(getOnFail(deferred));
|
||||
|
||||
}).fail(getOnFail(deferred));
|
||||
|
||||
}).fail(getOnFail(deferred));
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
function reportOfflineActions(apiClient) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
function syncData(apiClient, syncUserItemAccess) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
function getNewMedia(apiClient) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
deferred.resolve();
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
function getOnFail(deferred) {
|
||||
return function () {
|
||||
|
||||
deferred.reject();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (!globalScope.MediaBrowser) {
|
||||
|
|
4
dashboard-ui/cordova/fileupload.js
vendored
4
dashboard-ui/cordova/fileupload.js
vendored
|
@ -4,7 +4,7 @@
|
|||
|
||||
var self = this;
|
||||
|
||||
self.upload = function (file, name, url) {
|
||||
self.upload = function (file, mimeType, name, url) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
var options = new FileUploadOptions();
|
||||
options.fileKey = "file";
|
||||
options.fileName = name;
|
||||
options.mimeType = 'image/jpg';
|
||||
options.mimeType = mimeType;
|
||||
|
||||
var params = {};
|
||||
options.params = params;
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="advanced.html" data-role="button">${TabGeneral}</a>
|
||||
<a href="#" data-role="button" class="ui-btn-active">${TabHosting}</a>
|
||||
<a href="serversecurity.html" data-role="button">${TabSecurity}</a>
|
||||
</div>
|
||||
|
||||
<form class="dashboardHostingForm">
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
var elem = document.documentElement;
|
||||
elem.classList.remove('backdropContainer');
|
||||
elem.removeAttribute('data-url');
|
||||
elem.style.backgroundImage = '';
|
||||
}
|
||||
|
||||
|
@ -81,6 +82,11 @@
|
|||
|
||||
function setBackdropImage(elem, url) {
|
||||
|
||||
if (url == elem.getAttribute('data-url')) {
|
||||
return;
|
||||
}
|
||||
|
||||
elem.setAttribute('data-url', url);
|
||||
ImageLoader.lazyImage(elem, url);
|
||||
}
|
||||
|
||||
|
@ -119,7 +125,9 @@
|
|||
|
||||
function setDefault(page) {
|
||||
|
||||
getElement().style.backgroundImage = "url(css/images/splash.jpg)";
|
||||
var elem = getElement();
|
||||
elem.style.backgroundImage = "url(css/images/splash.jpg)";
|
||||
elem.setAttribute('data-url', 'css/images/splash.jpg');
|
||||
page = $(page)[0];
|
||||
page.classList.add('backdropPage');
|
||||
page.classList.add('staticBackdropPage');
|
||||
|
|
|
@ -39,7 +39,9 @@
|
|||
|
||||
$('.activityItems', page).activityLogList();
|
||||
|
||||
$('.swaggerLink', page).attr('href', apiClient.getUrl('swagger-ui/index.html'));
|
||||
$('.swaggerLink', page).attr('href', apiClient.getUrl('swagger-ui/index.html', {
|
||||
api_key: ApiClient.accessToken()
|
||||
}));
|
||||
},
|
||||
|
||||
onPageHide: function () {
|
||||
|
|
|
@ -595,9 +595,12 @@
|
|||
|
||||
setImageUrl(page, url);
|
||||
|
||||
if (item) {
|
||||
|
||||
// This should be outside of the IF
|
||||
// But for now, if you change songs but keep the same artist, the backdrop will flicker because in-between songs it clears out the image
|
||||
Backdrops.setBackdropUrl(page, backdropUrl);
|
||||
|
||||
if (item) {
|
||||
ApiClient.getItem(Dashboard.getCurrentUserId(), item.Id).done(function (fullItem) {
|
||||
page.querySelector('.nowPlayingPageUserDataButtons').innerHTML = LibraryBrowser.getUserDataIconsHtml(fullItem, false);
|
||||
});
|
||||
|
|
|
@ -1,143 +0,0 @@
|
|||
(function ($, document) {
|
||||
|
||||
function revoke(page, key) {
|
||||
|
||||
Dashboard.confirm(Globalize.translate('MessageConfirmRevokeApiKey'), Globalize.translate('HeaderConfirmRevokeApiKey'), function (result) {
|
||||
|
||||
if (result) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "DELETE",
|
||||
url: ApiClient.getUrl('Auth/Keys' + key)
|
||||
|
||||
}).done(function () {
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderKeys(page, keys, users) {
|
||||
|
||||
var rows = keys.map(function (item) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<tr>';
|
||||
|
||||
html += '<td>';
|
||||
html += '<button data-token="' + item.AccessToken + '" class="btnRevoke" data-mini="true" title="' + Globalize.translate('ButtonRevoke') + '" style="margin:0;">' + Globalize.translate('ButtonRevoke') + '</button>';
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.AccessToken);
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.AppName || '');
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
html += (item.DeviceName || '');
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
|
||||
var user = users.filter(function (u) {
|
||||
|
||||
return u.Id == item.UserId;
|
||||
})[0];
|
||||
|
||||
if (user) {
|
||||
html += user.Name;
|
||||
}
|
||||
|
||||
html += '</td>';
|
||||
|
||||
html += '<td style="vertical-align:middle;">';
|
||||
|
||||
var date = parseISO8601Date(item.DateCreated, { toLocal: true });
|
||||
|
||||
html += date.toLocaleDateString() + ' ' + LibraryBrowser.getDisplayTime(date);
|
||||
|
||||
html += '</td>';
|
||||
|
||||
html += '</tr>';
|
||||
|
||||
return html;
|
||||
|
||||
}).join('');
|
||||
|
||||
var elem = $('.resultBody', page).html(rows).parents('.tblApiKeys').table("refresh").trigger('create');
|
||||
|
||||
$('.btnRevoke', elem).on('click', function () {
|
||||
|
||||
revoke(page, this.getAttribute('data-token'));
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function loadData(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.getUsers().done(function (users) {
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl('Auth/Keys')).done(function (result) {
|
||||
|
||||
renderKeys(page, result.Items, users);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function onSubmit() {
|
||||
var form = this;
|
||||
var page = $(form).parents('.page');
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ApiClient.ajax({
|
||||
type: "POST",
|
||||
url: ApiClient.getUrl('Auth/Keys', {
|
||||
|
||||
App: $('#txtAppName', form).val()
|
||||
|
||||
})
|
||||
|
||||
}).done(function () {
|
||||
|
||||
$('.newKeyPanel', page).panel('close');
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#serverSecurityPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.btnNewKey', page).on('click', function () {
|
||||
|
||||
$('.newKeyPanel', page).panel('toggle');
|
||||
|
||||
$('#txtAppName', page).val('').focus();
|
||||
|
||||
});
|
||||
|
||||
$('.newKeyForm').off('submit', onSubmit).on('submit', onSubmit);
|
||||
|
||||
}).on('pageshowready', "#serverSecurityPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
loadData(page);
|
||||
});
|
||||
|
||||
})(jQuery, document);
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>${TitleAdvanced}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="serverSecurityPage" data-role="page" class="page type-interior advancedConfigurationPage" data-require="jqmpanel,jqmtable,scripts/serversecurity,detailtablecss">
|
||||
|
||||
<div data-role="content">
|
||||
<div class="content-primary">
|
||||
|
||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="advanced.html" data-role="button">${TabGeneral}</a>
|
||||
<a href="dashboardhosting.html" data-role="button">${TabHosting}</a>
|
||||
<a href="#" data-role="button" class="ui-btn-active">${TabSecurity}</a>
|
||||
</div>
|
||||
|
||||
<h2>
|
||||
<span>${HeaderApiKeys}</span>
|
||||
<button class="btnNewKey" style="margin: -4px 0 0 2em; vertical-align: top;" data-icon="plus" data-mini="true" data-inline="true" type="button">${ButtonNew}</button>
|
||||
</h2>
|
||||
<p>${HeaderApiKeysHelp}</p>
|
||||
<br />
|
||||
<table data-role="table" data-mode="reflow" class="tblApiKeys stripedTable ui-responsive table-stroke" style="display: table;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>${HeaderApiKey}</th>
|
||||
<th>${HeaderApp}</th>
|
||||
<th>${HeaderDevice}</th>
|
||||
<th>${HeaderUser}</th>
|
||||
<th>${HeaderDateIssued}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="resultBody"></tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="panel" class="newKeyPanel" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||
<form class="newKeyForm">
|
||||
|
||||
<h3>${HeaderNewApiKey}</h3>
|
||||
|
||||
<p>${HeaderNewApiKeyHelp}</p>
|
||||
<div>
|
||||
<label for="txtAppName">${LabelAppName}</label>
|
||||
<input type="text" id="txtAppName" required="required" />
|
||||
<div class="fieldDescription">${LabelAppNameExample}</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<p>
|
||||
<button type="submit" data-icon="plus" data-mini="true" data-theme="b">${ButtonCreate}</button>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue