diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index efae182e4e..20e4ed4f5d 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1284,14 +1284,18 @@ var Dashboard = { initializeApiClient(apiClient); }); - if (Dashboard.serverAddress() && Dashboard.getCurrentUserId() && Dashboard.getAccessToken() && !Dashboard.isServerlessPage()) { - window.ApiClient = new MediaBrowser.ApiClient(Dashboard.serverAddress(), appName, appVersion, deviceName, deviceId, capabilities); + if (!Dashboard.isServerlessPage()) { + if (Dashboard.serverAddress() && Dashboard.getCurrentUserId() && Dashboard.getAccessToken()) { + window.ApiClient = new MediaBrowser.ApiClient(Dashboard.serverAddress(), appName, appVersion, deviceName, deviceId, capabilities); - ApiClient.setCurrentUserId(Dashboard.getCurrentUserId(), Dashboard.getAccessToken()); + ApiClient.setCurrentUserId(Dashboard.getCurrentUserId(), Dashboard.getAccessToken()); - initializeApiClient(ApiClient); + initializeApiClient(ApiClient); - ConnectionManager.addApiClient(ApiClient, true).fail(Dashboard.logout); + ConnectionManager.addApiClient(ApiClient, true).fail(Dashboard.logout); + } else { + Dashboard.logout(); + } } } else { diff --git a/dashboard-ui/scripts/sync.js b/dashboard-ui/scripts/sync.js index 818d0c769f..8bb5a92eb3 100644 --- a/dashboard-ui/scripts/sync.js +++ b/dashboard-ui/scripts/sync.js @@ -227,6 +227,12 @@ function showSyncButtonsPerUser(page) { + var apiClient = ConnectionManager.currentApiClient(); + + if (!apiClient) { + return; + } + Dashboard.getCurrentUser().done(function (user) { if (user.Policy.EnableSync) { diff --git a/dashboard-ui/scripts/userlibraryaccess.js b/dashboard-ui/scripts/userlibraryaccess.js index 60b02a43d4..5347342148 100644 --- a/dashboard-ui/scripts/userlibraryaccess.js +++ b/dashboard-ui/scripts/userlibraryaccess.js @@ -6,7 +6,7 @@ html += '
'; - html += '' + Globalize.translate('HeaderMediaFolders') + ''; + html += '' + Globalize.translate('HeaderLibraryAccess') + ''; for (var i = 0, length = mediaFolders.length; i < length; i++) { @@ -31,7 +31,7 @@ html += '
'; - html += '' + Globalize.translate('HeaderChannels') + ''; + html += '' + Globalize.translate('HeaderChannelAccess') + ''; 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 += '
'; + + html += '' + Globalize.translate('HeaderSelectDevices') + ''; + + 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 += ''; + html += ''; + } + + html += '
'; + + $('.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); }); }); diff --git a/dashboard-ui/useredit.html b/dashboard-ui/useredit.html index dbee7eb823..956121d0d5 100644 --- a/dashboard-ui/useredit.html +++ b/dashboard-ui/useredit.html @@ -11,7 +11,7 @@ @@ -87,9 +87,6 @@ - diff --git a/dashboard-ui/userlibraryaccess.html b/dashboard-ui/userlibraryaccess.html index b0ff92bde7..b9dd1141f7 100644 --- a/dashboard-ui/userlibraryaccess.html +++ b/dashboard-ui/userlibraryaccess.html @@ -10,7 +10,7 @@
+ +
+
${HeaderDeviceAccess}
+
+ + +
+
+
+
+
+
${DeviceAccessHelp}
+
+
+
+