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

enable user device access

This commit is contained in:
Luke Pulverenti 2014-12-29 15:18:48 -05:00
parent 1784c702e6
commit faf35ed3d7
7 changed files with 99 additions and 20 deletions

View file

@ -6,7 +6,7 @@
html += '<fieldset data-role="controlgroup">';
html += '<legend>' + Globalize.translate('HeaderMediaFolders') + '</legend>';
html += '<legend>' + Globalize.translate('HeaderLibraryAccess') + '</legend>';
for (var i = 0, length = mediaFolders.length; i < length; i++) {
@ -31,7 +31,7 @@
html += '<fieldset data-role="controlgroup">';
html += '<legend>' + Globalize.translate('HeaderChannels') + '</legend>';
html += '<legend>' + Globalize.translate('HeaderChannelAccess') + '</legend>';
for (var i = 0, length = channels.length; i < length; i++) {
@ -56,7 +56,37 @@
}
}
function loadUser(page, user, loggedInUser, mediaFolders, channels) {
function loadDevices(page, user, devices) {
var html = '';
html += '<fieldset data-role="controlgroup">';
html += '<legend>' + Globalize.translate('HeaderSelectDevices') + '</legend>';
for (var i = 0, length = devices.length; i < length; i++) {
var device = devices[i];
var id = 'device' + i;
var checkedAttribute = user.Policy.EnableAllDevices || user.Policy.EnabledDevices.indexOf(device.Id) != -1 ? ' checked="checked"' : '';
html += '<input class="chkDevice" data-deviceid="' + device.Id + '" type="checkbox" id="' + id + '"' + checkedAttribute + ' />';
html += '<label for="' + id + '">' + device.Name;
html += '<br/><span style="font-weight:normal;font-size: 90%;">' + device.AppName + '</span>';
html += '</label>';
}
html += '</fieldset>';
$('.deviceAccess', page).show().html(html).trigger('create');
$('#chkEnableAllDevices', page).checked(user.Policy.EnableAllDevices).checkboxradio('refresh').trigger('change');
}
function loadUser(page, user, loggedInUser, mediaFolders, channels, devices) {
$(page).trigger('userloaded', [user]);
@ -64,6 +94,7 @@
loadChannels(page, user, channels);
loadMediaFolders(page, user, mediaFolders);
loadDevices(page, user, devices);
Dashboard.hideLoadingMsg();
}
@ -89,6 +120,16 @@
}).get();
user.Policy.EnableAllDevices = $('#chkEnableAllDevices', page).checked();
user.Policy.EnabledDevices = user.Policy.EnableAllDevices ?
[] :
$('.chkDevice:checked', page).map(function () {
return this.getAttribute('data-deviceid');
}).get();
ApiClient.updateUserPolicy(user.Id, user.Policy).done(function () {
onSaveComplete(page);
});
@ -113,7 +154,21 @@
}
};
$(document).on('pageshow', "#userLibraryAccessPage", function () {
$(document).on('pageinit', "#userLibraryAccessPage", function () {
var page = this;
$('#chkEnableAllDevices', page).on('change', function () {
if (this.checked) {
$('.deviceAccessListContainer', page).hide();
} else {
$('.deviceAccessListContainer', page).show();
}
});
}).on('pageshow', "#userLibraryAccessPage", function () {
var page = this;
@ -138,14 +193,15 @@
}
var promise2 = Dashboard.getCurrentUser();
var promise4 = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { IsHidden: false }));
var promise5 = ApiClient.getJSON(ApiClient.getUrl("Channels"));
var promise6 = ApiClient.getJSON(ApiClient.getUrl('Devices', {
SupportsUniqueIdentifier: true
}));
$.when(promise1, promise2, promise4, promise5).done(function (response1, response2, response4, response5) {
$.when(promise1, promise2, promise4, promise5, promise6).done(function (response1, response2, response4, response5, response6) {
loadUser(page, response1[0] || response1, response2[0], response4[0].Items, response5[0].Items);
loadUser(page, response1[0] || response1, response2[0], response4[0].Items, response5[0].Items, response6[0].Items);
});
});