diff --git a/src/bower_components/apiclient/apiclientcore.js b/src/bower_components/apiclient/apiclientcore.js index 2ee75beb2..ea4d05d0a 100644 --- a/src/bower_components/apiclient/apiclientcore.js +++ b/src/bower_components/apiclient/apiclientcore.js @@ -1190,15 +1190,13 @@ define(["events", "appStorage"], function(events, appStorage) { data: JSON.stringify(info), contentType: "application/json" }) - }, ApiClient.prototype.createUser = function(name) { + }, ApiClient.prototype.createUser = function(user) { var url = this.getUrl("Users/New"); return this.ajax({ type: "POST", url: url, - data: { - Name: name - }, - dataType: "json" + data: JSON.stringify(user), + contentType: "application/json" }) }, ApiClient.prototype.updateUser = function(user) { if (!user) throw new Error("null user"); diff --git a/src/controllers/usernew.js b/src/controllers/usernew.js index a9119a4ae..10fa6fc4f 100644 --- a/src/controllers/usernew.js +++ b/src/controllers/usernew.js @@ -3,74 +3,113 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox"], function($, loading) function loadMediaFolders(page, mediaFolders) { var html = ""; - html += '

' + Globalize.translate("HeaderLibraries") + "

", html += '
'; - for (var i = 0, length = mediaFolders.length; i < length; i++) { + html += '

' + Globalize.translate("HeaderLibraries") + "

"; + html += '
'; + for (var i = 0; i < mediaFolders.length; i++) { var folder = mediaFolders[i]; - html += '" + html += '"; } - html += "
", $(".folderAccess", page).html(html).trigger("create"), $("#chkEnableAllFolders", page).checked(!0).trigger("change") + html += "
"; + $(".folderAccess", page).html(html).trigger("create"); + $("#chkEnableAllFolders", page).checked(true).trigger("change"); } function loadChannels(page, channels) { var html = ""; - html += '

' + Globalize.translate("HeaderChannels") + "

", html += '
'; - for (var i = 0, length = channels.length; i < length; i++) { + html += '

' + Globalize.translate("HeaderChannels") + "

"; + html += '
'; + for (var i = 0; i < channels.length; i++) { var folder = channels[i]; - html += '" + html += '"; } - html += "
", $(".channelAccess", page).show().html(html).trigger("create"), channels.length ? $(".channelAccessContainer", page).show() : $(".channelAccessContainer", page).hide(), $("#chkEnableAllChannels", page).checked(!0).trigger("change") + html += "
"; + $(".channelAccess", page).show().html(html).trigger("create"); + if (channels.length) { + $(".channelAccessContainer", page).show(); + } else { + $(".channelAccessContainer", page).hide(); + } + $("#chkEnableAllChannels", page).checked(true).trigger("change"); } function loadUser(page) { - $("#txtUserName", page).val(""), loading.show(); - var promise4 = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { - IsHidden: !1 - })), - promise5 = ApiClient.getJSON(ApiClient.getUrl("Channels")); - Promise.all([promise4, promise5]).then(function(responses) { - loadMediaFolders(page, responses[0].Items), loadChannels(page, responses[1].Items), loading.hide() + $("#txtUsername", page).val(""); + $("#txtPassword", page).val(""); + loading.show(); + var promiseFolders = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { + IsHidden: false + })); + var promiseChannels = ApiClient.getJSON(ApiClient.getUrl("Channels")); + Promise.all([promiseFolders, promiseChannels]).then(function(responses) { + loadMediaFolders(page, responses[0].Items); + loadChannels(page, responses[1].Items); + loading.hide(); }) } function saveUser(page) { - var name = $("#txtUserName", page).val(); - ApiClient.createUser(name).then(function(user) { - user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(), user.Policy.EnabledFolders = user.Policy.EnableAllFolders ? [] : $(".chkFolder", page).get().filter(function(i) { - return i.checked - }).map(function(i) { - return i.getAttribute("data-id") - }), user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(), user.Policy.EnabledChannels = user.Policy.EnableAllChannels ? [] : $(".chkChannel", page).get().filter(function(i) { - return i.checked - }).map(function(i) { - return i.getAttribute("data-id") - }), ApiClient.updateUserPolicy(user.Id, user.Policy).then(function() { - Dashboard.navigate("useredit.html?userId=" + user.Id) - }) + var user = {}; + user.Name = $("#txtUsername", page).val(); + user.Password = $("#txtPassword", page).val(); + ApiClient.createUser(user).then(function(user) { + user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(); + user.Policy.EnabledFolders = []; + if (!user.Policy.EnableAllFolders) { + user.Policy.EnabledFolders = $(".chkFolder", page).get().filter(function(i) { + return i.checked + }).map(function(i) { + return i.getAttribute("data-id"); + }); + } + user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(); + user.Policy.EnabledChannels = []; + if (!user.Policy.EnableAllChannels) { + user.Policy.EnabledChannels = $(".chkChannel", page).get().filter(function(i) { + return i.checked + }).map(function(i) { + return i.getAttribute("data-id"); + }); + } + ApiClient.updateUserPolicy(user.Id, user.Policy).then(function() { + Dashboard.navigate("useredit.html?userId=" + user.Id); + }); }, function(response) { - 400 == response.status ? Dashboard.alert({ - message: page.querySelector(".labelNewUserNameHelp").innerHTML - }) : require(["toast"], function(toast) { - toast(Globalize.translate("DefaultErrorMessage")) - }), loading.hide() - }) + require(["toast"], function(toast) { + toast(Globalize.translate("DefaultErrorMessage")); + }); + loading.hide(); + }); } function onSubmit() { var page = $(this).parents(".page")[0]; - return loading.show(), saveUser(page), !1 + loading.show(); + saveUser(page); + return false; } function loadData(page) { - loadUser(page) + loadUser(page); } + $(document).on("pageinit", "#newUserPage", function() { var page = this; $("#chkEnableAllChannels", page).on("change", function() { - this.checked ? $(".channelAccessListContainer", page).hide() : $(".channelAccessListContainer", page).show() - }), $("#chkEnableAllFolders", page).on("change", function() { - this.checked ? $(".folderAccessListContainer", page).hide() : $(".folderAccessListContainer", page).show() - }), $(".newUserProfileForm").off("submit", onSubmit).on("submit", onSubmit) + if (this.checked) { + $(".channelAccessListContainer", page).hide(); + } else { + $(".channelAccessListContainer", page).show(); + } + }); + $("#chkEnableAllFolders", page).on("change", function() { + if (this.checked) { + $(".folderAccessListContainer", page).hide(); + } else { + $(".folderAccessListContainer", page).show(); + } + }); + $(".newUserProfileForm").off("submit", onSubmit).on("submit", onSubmit); }).on("pageshow", "#newUserPage", function() { - loadData(this) - }) + loadData(this); + }); }); \ No newline at end of file diff --git a/src/usernew.html b/src/usernew.html index f53bc60b9..207a68ffe 100644 --- a/src/usernew.html +++ b/src/usernew.html @@ -1,8 +1,6 @@
-
-
@@ -11,7 +9,11 @@
- + +
+ +
+
@@ -29,6 +31,7 @@
+