settings: Extract code for opening user-info edit modal into a function.

This commit is contained in:
Sahil Batra
2021-11-26 17:15:14 +05:30
committed by Tim Abbott
parent 2c70302e19
commit 2836879767

View File

@@ -514,83 +514,83 @@ function handle_reactivation(tbody, status_field) {
});
}
export function show_edit_user_info_modal(user_id, status_field) {
const person = people.get_by_user_id(user_id);
if (!person) {
return;
}
let user_email = settings_data.email_for_user_settings(person);
if (!user_email) {
// When email_address_visibility is "Nobody", we still
// want to show the fake email address in the edit form.
//
// We may in the future want to just hide the form field
// for this situation, once we display user IDs.
user_email = person.email;
}
const html_body = render_admin_human_form({
user_id,
email: user_email,
full_name: person.full_name,
user_role_values: settings_config.user_role_values,
disable_role_dropdown: person.is_owner && !page_params.is_owner,
});
let fields_user_pills;
function set_role_dropdown_and_fields_user_pills() {
$("#user-role-select").val(person.role);
if (!page_params.is_owner) {
$("#user-role-select")
.find(`option[value="${CSS.escape(settings_config.user_role_values.owner.code)}"]`)
.hide();
}
const element = "#edit-user-form .custom-profile-field-form";
$(element).html("");
settings_account.append_custom_profile_fields(element, user_id);
settings_account.initialize_custom_date_type_fields(element);
fields_user_pills = settings_account.initialize_custom_user_type_fields(
element,
user_id,
true,
false,
);
}
function submit_user_details() {
const role = Number.parseInt($("#user-role-select").val().trim(), 10);
const full_name = $("#edit-user-form").find("input[name='full_name']");
const profile_data = get_human_profile_data(fields_user_pills);
const url = "/json/users/" + encodeURIComponent(user_id);
const data = {
full_name: full_name.val(),
role: JSON.stringify(role),
profile_data: JSON.stringify(profile_data),
};
settings_ui.do_settings_change(channel.patch, url, data, status_field);
dialog_widget.close_modal();
}
dialog_widget.launch({
html_heading: $t_html({defaultMessage: "Manage user"}),
html_body,
on_click: submit_user_details,
post_render: set_role_dropdown_and_fields_user_pills,
});
}
function handle_human_form(tbody, status_field) {
tbody.on("click", ".open-user-form", (e) => {
e.stopPropagation();
e.preventDefault();
const user_id = Number.parseInt($(e.currentTarget).attr("data-user-id"), 10);
const person = people.get_by_user_id(user_id);
if (!person) {
return;
}
let user_email = settings_data.email_for_user_settings(person);
if (!user_email) {
// When email_address_visibility is "Nobody", we still
// want to show the fake email address in the edit form.
//
// We may in the future want to just hide the form field
// for this situation, once we display user IDs.
user_email = person.email;
}
const html_body = render_admin_human_form({
user_id,
email: user_email,
full_name: person.full_name,
user_role_values: settings_config.user_role_values,
disable_role_dropdown: person.is_owner && !page_params.is_owner,
});
let fields_user_pills;
function set_role_dropdown_and_fields_user_pills() {
$("#user-role-select").val(person.role);
if (!page_params.is_owner) {
$("#user-role-select")
.find(
`option[value="${CSS.escape(
settings_config.user_role_values.owner.code,
)}"]`,
)
.hide();
}
const element = "#edit-user-form .custom-profile-field-form";
$(element).html("");
settings_account.append_custom_profile_fields(element, user_id);
settings_account.initialize_custom_date_type_fields(element);
fields_user_pills = settings_account.initialize_custom_user_type_fields(
element,
user_id,
true,
false,
);
}
function submit_user_details() {
const role = Number.parseInt($("#user-role-select").val().trim(), 10);
const full_name = $("#edit-user-form").find("input[name='full_name']");
const profile_data = get_human_profile_data(fields_user_pills);
const url = "/json/users/" + encodeURIComponent(user_id);
const data = {
full_name: full_name.val(),
role: JSON.stringify(role),
profile_data: JSON.stringify(profile_data),
};
settings_ui.do_settings_change(channel.patch, url, data, status_field);
dialog_widget.close_modal();
}
dialog_widget.launch({
html_heading: $t_html({defaultMessage: "Manage user"}),
html_body,
on_click: submit_user_details,
post_render: set_role_dropdown_and_fields_user_pills,
});
show_edit_user_info_modal(user_id, status_field);
});
}