diff --git a/dashboard-ui/scripts/usernew.js b/dashboard-ui/scripts/usernew.js index 204c329e2c..1fa3517739 100644 --- a/dashboard-ui/scripts/usernew.js +++ b/dashboard-ui/scripts/usernew.js @@ -1,16 +1,101 @@ (function ($, window, document) { + function loadMediaFolders(page, user, mediaFolders) { + + var html = ''; + + html += '
'; + + $('.mediaFolderAccess', page).html(html).trigger('create'); + } + + function loadChannels(page, user, channels) { + + var html = ''; + + html += ''; + + $('.channelAccess', page).show().html(html).trigger('create'); + + if (channels.length) { + $('.channelAccessContainer', page).show(); + } else { + $('.channelAccessContainer', page).hide(); + } + } + function loadUser(page, user) { $('#txtUserName', page).val(user.Name); + + Dashboard.showLoadingMsg(); + + var promise4 = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { IsHidden: false })); + + var promise5 = ApiClient.getJSON(ApiClient.getUrl("Channels")); + + $.when(promise4, promise5).done(function (response4, response5) { + + loadMediaFolders(page, user, response4[0].Items); + loadChannels(page, user, response5[0].Items); + + Dashboard.hideLoadingMsg(); + }); } - function saveUser(user, page) { + function saveUser(page) { - user.Name = $('#txtUserName', page).val(); + var name = $('#txtUserName', page).val(); - ApiClient.createUser(user).done(function (newUser) { - Dashboard.navigate("useredit.html?userId=" + newUser.Id); + ApiClient.createUser(name).done(function (user) { + + user.Configuration.BlockedMediaFolders = $('.chkMediaFolder:not(:checked)', page).map(function () { + + return this.getAttribute('data-foldername'); + + }).get(); + + user.Configuration.BlockedChannels = $('.chkChannel:not(:checked)', page).map(function () { + + return this.getAttribute('data-foldername'); + + }).get(); + + ApiClient.updateUser(user).done(function () { + Dashboard.navigate("useredit.html?userId=" + user.Id); + }); }); } @@ -24,7 +109,7 @@ Dashboard.showLoadingMsg(); - saveUser(getUser(), page); + saveUser(page); // Disable default form submission return false; @@ -33,7 +118,12 @@ function getUser() { - return {}; + return { + Configuration: { + BlockedMediaFolders: [], + BlockedChannels: [] + } + }; } function loadData(page) { diff --git a/dashboard-ui/scripts/wizarduserpage.js b/dashboard-ui/scripts/wizarduserpage.js index 4d6dbebef4..243cc34ce5 100644 --- a/dashboard-ui/scripts/wizarduserpage.js +++ b/dashboard-ui/scripts/wizarduserpage.js @@ -51,9 +51,7 @@ } else { - user = { Name: $('#txtUsername', form).val() }; - - ApiClient.createUser(user).done(onSaveComplete); + ApiClient.createUser($('#txtUsername', form).val()).done(onSaveComplete); } }); diff --git a/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js b/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js index fda1ac7ea9..6bb0bf56fb 100644 --- a/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js +++ b/dashboard-ui/thirdparty/apiclient/mediabrowser.apiclient.js @@ -2603,20 +2603,17 @@ * Creates a user * @param {Object} user */ - self.createUser = function (user) { + self.createUser = function (name) { - if (!user) { - throw new Error("null user"); - } - - var url = self.getUrl("Users"); + var url = self.getUrl("Users/New"); return self.ajax({ type: "POST", url: url, - data: JSON.stringify(user), - dataType: "json", - contentType: "application/json" + data: { + Name: name + }, + dataType: "json" }); }; diff --git a/dashboard-ui/userlibraryaccess.html b/dashboard-ui/userlibraryaccess.html index 1701237f1f..5681435ea6 100644 --- a/dashboard-ui/userlibraryaccess.html +++ b/dashboard-ui/userlibraryaccess.html @@ -23,7 +23,7 @@