jellyfin-web/dashboard-ui/scripts/edituserpage.js

236 lines
6.7 KiB
JavaScript
Raw Normal View History

(function ($, window, document) {
2013-02-20 18:33:05 -07:00
function populateLanguages(select, allCultures) {
2013-02-20 18:33:05 -07:00
var html = "";
2013-02-20 18:33:05 -07:00
html += "<option value=''>None</option>";
2013-02-20 18:33:05 -07:00
for (var i = 0, length = allCultures.length; i < length; i++) {
2013-02-20 18:33:05 -07:00
var culture = allCultures[i];
2013-02-20 18:33:05 -07:00
html += "<option value='" + culture.ThreeLetterISOLanguageName + "'>" + culture.DisplayName + "</option>";
2013-02-20 18:33:05 -07:00
}
select.html(html).selectmenu("refresh");
}
2013-02-20 18:33:05 -07:00
function populateRatings(allParentalRatings, page) {
2013-02-20 18:33:05 -07:00
var html = "";
2013-02-20 18:33:05 -07:00
html += "<option value=''>None</option>";
2013-03-28 20:50:46 -07:00
var ratings = [];
var i, length, rating;
2013-02-20 18:33:05 -07:00
for (i = 0, length = allParentalRatings.length; i < length; i++) {
rating = allParentalRatings[i];
if (ratings.length) {
var lastRating = ratings[ratings.length - 1];
if (lastRating.Value === rating.Value) {
lastRating.Name += "/" + rating.Name;
continue;
}
}
ratings.push({ Name: rating.Name, Value: rating.Value });
}
for (i = 0, length = ratings.length; i < length; i++) {
rating = ratings[i];
2013-02-20 18:33:05 -07:00
html += "<option value='" + rating.Value + "'>" + rating.Name + "</option>";
}
2013-02-20 18:33:05 -07:00
$('#selectMaxParentalRating', page).html(html).selectmenu("refresh");
}
function loadUser(page, user, loggedInUser, parentalRatingsPromise, allCulturesPromise) {
2013-02-20 18:33:05 -07:00
if (!loggedInUser.Configuration.IsAdministrator || user.Id == loggedInUser.Id) {
$('#fldIsAdmin', page).hide();
$('#fldMaxParentalRating', page).hide();
} else {
$('#fldIsAdmin', page).show();
$('#fldMaxParentalRating', page).show();
}
Dashboard.setPageTitle(user.Name || "Add User");
$('#txtUserName', page).val(user.Name);
parentalRatingsPromise.done(function (allParentalRatings) {
populateRatings(allParentalRatings, page);
var ratingValue = "";
if (user.Configuration.MaxParentalRating) {
for (var i = 0, length = allParentalRatings.length; i < length; i++) {
var rating = allParentalRatings[i];
if (user.Configuration.MaxParentalRating >= rating.Value) {
ratingValue = rating.Value;
}
}
}
$('#selectMaxParentalRating', page).val(ratingValue).selectmenu("refresh");
});
2013-02-20 18:33:05 -07:00
allCulturesPromise.done(function (allCultures) {
populateLanguages($('#selectAudioLanguage', page), allCultures);
populateLanguages($('#selectSubtitleLanguage', page), allCultures);
$('#selectAudioLanguage', page).val(user.Configuration.AudioLanguagePreference || "").selectmenu("refresh");
$('#selectSubtitleLanguage', page).val(user.Configuration.SubtitleLanguagePreference || "").selectmenu("refresh");
});
2013-02-20 18:33:05 -07:00
$('#chkForcedSubtitlesOnly', page).checked(user.Configuration.UseForcedSubtitlesOnly || false).checkboxradio("refresh");
$('#chkIsAdmin', page).checked(user.Configuration.IsAdministrator || false).checkboxradio("refresh");
Dashboard.hideLoadingMsg();
}
2013-02-20 18:33:05 -07:00
function onSaveComplete(page) {
2013-02-20 18:33:05 -07:00
Dashboard.hideLoadingMsg();
2013-02-20 18:33:05 -07:00
var userId = getParameterByName("userId");
2013-02-20 18:33:05 -07:00
Dashboard.validateCurrentUser(page);
2013-02-20 18:33:05 -07:00
if (userId) {
Dashboard.alert("Settings saved.");
} else {
Dashboard.navigate("userprofiles.html");
2013-02-20 18:33:05 -07:00
}
}
2013-02-20 18:33:05 -07:00
function saveUser(user, page) {
2013-02-20 18:33:05 -07:00
user.Name = $('#txtUserName', page).val();
user.Configuration.MaxParentalRating = $('#selectMaxParentalRating', page).val() || null;
user.Configuration.IsAdministrator = $('#chkIsAdmin', page).checked();
user.Configuration.AudioLanguagePreference = $('#selectAudioLanguage', page).val();
user.Configuration.SubtitleLanguagePreference = $('#selectSubtitleLanguage', page).val();
user.Configuration.UseForcedSubtitlesOnly = $('#chkForcedSubtitlesOnly', page).checked();
var userId = getParameterByName("userId");
if (userId) {
ApiClient.updateUser(user).done(function () {
onSaveComplete(page);
});
2013-02-20 18:33:05 -07:00
} else {
ApiClient.createUser(user).done(function () {
onSaveComplete(page);
});
2013-02-20 18:33:05 -07:00
}
}
2013-02-20 18:33:05 -07:00
function editUserPage() {
2013-02-20 18:33:05 -07:00
var self = this;
2013-02-20 18:33:05 -07:00
self.onSubmit = function () {
2013-02-20 18:33:05 -07:00
var page = $(this).parents('.page');
Dashboard.showLoadingMsg();
var userId = getParameterByName("userId");
if (!userId) {
saveUser({
Configuration: {}
}, page);
} else {
ApiClient.getUser(userId).done(function (result) {
saveUser(result, page);
});
}
// Disable default form submission
return false;
};
}
window.EditUserPage = new editUserPage();
2013-02-20 18:33:05 -07:00
2013-04-18 12:09:07 -07:00
$(document).on('pagebeforeshow', "#editUserPage", function () {
var page = this;
2013-02-20 18:33:05 -07:00
var userId = getParameterByName("userId");
if (userId) {
$('#userProfileNavigation', page).show();
} else {
$('#userProfileNavigation', page).hide();
}
2013-04-18 12:09:07 -07:00
Dashboard.getCurrentUser().done(function (loggedInUser) {
if (loggedInUser.Configuration.IsAdministrator) {
$('.lnkMediaLibrary', page).show().prev().removeClass('ui-last-child');
} else {
$('.lnkMediaLibrary', page).hide().prev().addClass('ui-last-child');
}
});
}).on('pageshow', "#editUserPage", function () {
var page = this;
Dashboard.showLoadingMsg();
var userId = getParameterByName("userId");
var promise1;
2013-02-20 18:33:05 -07:00
if (!userId) {
var deferred = $.Deferred();
deferred.resolveWith(null, [{
2013-02-20 18:33:05 -07:00
Configuration: {}
}]);
promise1 = deferred.promise();
2013-02-20 18:33:05 -07:00
} else {
promise1 = ApiClient.getUser(userId);
2013-02-20 18:33:05 -07:00
}
var promise2 = Dashboard.getCurrentUser();
var parentalRatingsPromise = ApiClient.getParentalRatings();
var allCulturesPromise = ApiClient.getCultures();
$.when(promise1, promise2).done(function (response1, response2) {
loadUser(page, response1[0] || response1, response2[0], parentalRatingsPromise, allCulturesPromise);
});
$("#editUserProfileForm input:first").focus();
});
2013-02-20 18:33:05 -07:00
})(jQuery, window, document);