EditUserPage.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. var EditUserPage = {
  2. onPageShow: function () {
  3. Dashboard.showLoadingMsg();
  4. var userId = getParameterByName("userId");
  5. if (userId) {
  6. $('#userProfileNavigation', this).show();
  7. } else {
  8. $('#userProfileNavigation', this).hide();
  9. }
  10. var promise4 = ApiClient.getCultures();
  11. var promise3 = ApiClient.getParentalRatings();
  12. var promise1;
  13. if (!userId) {
  14. var deferred = $.Deferred();
  15. deferred.resolveWith(null, [{
  16. Configuration: {}
  17. }]);
  18. promise1 = deferred.promise();
  19. } else {
  20. promise1 = ApiClient.getUser(userId);
  21. }
  22. var promise2 = Dashboard.getCurrentUser();
  23. $.when(promise1, promise2, promise3, promise4).done(function (response1, response2, response3, response4) {
  24. EditUserPage.loadUser(response1[0] || response1, response2[0], response3[0], response4[0]);
  25. });
  26. },
  27. loadUser: function (user, loggedInUser, allParentalRatings, allCultures) {
  28. var page = $($.mobile.activePage);
  29. EditUserPage.populateLanguages($('#selectAudioLanguage', page), allCultures);
  30. EditUserPage.populateLanguages($('#selectSubtitleLanguage', page), allCultures);
  31. EditUserPage.populateRatings(allParentalRatings, page);
  32. if (!loggedInUser.Configuration.IsAdministrator || user.Id == loggedInUser.Id) {
  33. $('#fldIsAdmin', page).hide();
  34. $('#fldMaxParentalRating', page).hide();
  35. } else {
  36. $('#fldIsAdmin', page).show();
  37. $('#fldMaxParentalRating', page).show();
  38. }
  39. Dashboard.setPageTitle(user.Name || "Add User");
  40. $('#txtUserName', page).val(user.Name);
  41. var ratingValue = "";
  42. if (user.Configuration.MaxParentalRating) {
  43. for (var i = 0, length = allParentalRatings.length; i < length; i++) {
  44. var rating = allParentalRatings[i];
  45. if (user.Configuration.MaxParentalRating >= rating.Value) {
  46. ratingValue = rating.Value;
  47. }
  48. }
  49. }
  50. $('#selectMaxParentalRating', page).val(ratingValue).selectmenu("refresh");
  51. $('#selectAudioLanguage', page).val(user.Configuration.AudioLanguagePreference || "").selectmenu("refresh");
  52. $('#selectSubtitleLanguage', page).val(user.Configuration.SubtitleLanguagePreference || "").selectmenu("refresh");
  53. $('#chkForcedSubtitlesOnly', page).checked(user.Configuration.UseForcedSubtitlesOnly || false).checkboxradio("refresh");
  54. $('#chkIsAdmin', page).checked(user.Configuration.IsAdministrator || false).checkboxradio("refresh");
  55. Dashboard.hideLoadingMsg();
  56. },
  57. populateLanguages: function (select, allCultures) {
  58. var html = "";
  59. html += "<option value=''>None</option>";
  60. for (var i = 0, length = allCultures.length; i < length; i++) {
  61. var culture = allCultures[i];
  62. html += "<option value='" + culture.ThreeLetterISOLanguageName + "'>" + culture.DisplayName + "</option>";
  63. }
  64. select.html(html).selectmenu("refresh");
  65. },
  66. populateRatings: function (allParentalRatings, page) {
  67. var html = "";
  68. html += "<option value=''>None</option>";
  69. for (var i = 0, length = allParentalRatings.length; i < length; i++) {
  70. var rating = allParentalRatings[i];
  71. html += "<option value='" + rating.Value + "'>" + rating.Name + "</option>";
  72. }
  73. $('#selectMaxParentalRating', page).html(html).selectmenu("refresh");
  74. },
  75. saveUser: function (user) {
  76. var page = $($.mobile.activePage);
  77. user.Name = $('#txtUserName', page).val();
  78. user.Configuration.MaxParentalRating = $('#selectMaxParentalRating', page).val() || null;
  79. user.Configuration.IsAdministrator = $('#chkIsAdmin', page).checked();
  80. user.Configuration.AudioLanguagePreference = $('#selectAudioLanguage', page).val();
  81. user.Configuration.SubtitleLanguagePreference = $('#selectSubtitleLanguage', page).val();
  82. user.Configuration.UseForcedSubtitlesOnly = $('#chkForcedSubtitlesOnly', page).checked();
  83. var userId = getParameterByName("userId");
  84. if (userId) {
  85. ApiClient.updateUser(user).done(EditUserPage.saveComplete);
  86. } else {
  87. ApiClient.createUser(user).done(EditUserPage.saveComplete);
  88. }
  89. },
  90. saveComplete: function () {
  91. Dashboard.hideLoadingMsg();
  92. var userId = getParameterByName("userId");
  93. Dashboard.validateCurrentUser();
  94. if (userId) {
  95. Dashboard.alert("Settings saved.");
  96. } else {
  97. Dashboard.navigate("userProfiles.html");
  98. }
  99. },
  100. onSubmit: function () {
  101. Dashboard.showLoadingMsg();
  102. var userId = getParameterByName("userId");
  103. if (!userId) {
  104. EditUserPage.saveUser({
  105. Configuration: {}
  106. });
  107. } else {
  108. ApiClient.getUser(userId).done(EditUserPage.saveUser);
  109. }
  110. // Disable default form submission
  111. return false;
  112. }
  113. };
  114. $(document).on('pageshow', "#editUserPage", EditUserPage.onPageShow);