app/views/users/edit.html.haml
:javascript
jQuery(document).ready(function() {
jQuery('#user_info').on('submit', function (event) {
event.preventDefault()
let admin_checkbox = jQuery('input[id=user_admin]')
if(admin_checkbox.attr('checked') && !admin_checkbox.hasClass('admin')){
alertify.confirm('Are you sure you want to make this user an admin?', (e) => {
if(e){
this.submit()
}else {
jQuery('input[type="submit"]').prop('disabled',false)
}
})
} else if (!admin_checkbox.attr('checked') && admin_checkbox.hasClass('admin')){
alertify.confirm('Are you sure you want to revoke admin privileges for this user?', (e) => {
if(e){
this.submit()
}else {
jQuery('input[type="submit"]').prop('disabled',false)
}
})
}else {
this.submit()
}
})
});
%div.container
%div.edit-user-info
= form_with scope: :user, url: user_path(@user.username), method: 'put', id: 'user_info', class: 'my-4' do |f|
- if @errors.present?
.enable-lists
Errors updating account:
%ul
- for error in @errors
%li= error
%h2.mb-4 Edit account
%div.mb-3
= f.label :firstName, 'First name', class: 'form-label'
= f.text_field :firstName, class: 'form-control', required: 'true'
%div.mb-3
= f.label :lastName, 'Last name', class: 'form-label'
= f.text_field :lastName, class: 'form-control'
%div.mb-3
= f.label :username, class: 'form-label'
= f.text_field :username, class: 'form-control', disabled: 'true'
%div.mb-3
= f.label :email, 'Email address', class: 'form-label'
= f.email_field :email, class: 'form-control', required: 'true'
%div.mb-3
= f.label :githubId, 'GitHub username', class: 'form-label'
= f.text_field :githubId, class: 'form-control', 'aria-describedby': 'githubUsernameHelp',
pattern: '[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}',
title: 'Characters: only alphanumeric and single hyphens. Length: 1-39'
%div.form-text{id: 'githubUsernameHelp'}
User handle on GitHub, for example: 'octocat'
%div.mb-3
= f.label :orcidId, 'ORCID iD', class: 'form-label'
= f.text_field :orcidId, class: 'form-control', 'aria-describedby': 'orcidHelp',
pattern: '\d{4}-\d{4}-\d{4}-\d{4}', title: 'Format: XXXX-XXXX-XXXX-XXXX'
%div.form-text{id: 'orcidHelp'}
16-digit ORCID, for example: 0000-1234-5678-9101
- if session[:user].admin?
%div.form-check.mb-3
= f.check_box :admin?, class: (@user.admin? ? 'admin form-check-input' : 'form-check-input')
= f.label :admin, 'Grant admin privileges', class: 'form-check-label'
%div.mb-5
= submit_tag('Update', class: 'btn btn-primary me-1')
= link_to 'Cancel', user_path(@user.username), class: 'btn btn-primary'