publiclab/plots2

View on GitHub
app/views/users/_edit_form.html.erb

Summary

Maintainability
Test Coverage
<div style="padding:10px;">
<%= form_for @user, :url => {:controller => 'users', :action => 'update'}, :html => {:class => "row",:id => 'edit-form' } do |f| %>
  <%= hidden_field_tag "user[ui_update]", "true" %>
  <div class="col-md-10">
    <% if @user.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@user.errors.count, "error") %> prohibited this form from being saved:</h2>
        <ul>
          <% @user.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
          <% end %>
        </ul>
      </div>
    <% end %>

      <div class='col-md-12' style="display:flex; justify-content: center;">
        <h3> Link your Public Lab account to providers </h3>
      </div>

      <div class='col-md-12' style="display:flex; justify-content: center;">
        <%= render :partial => "layouts/social_icons" %>
      </div>

      <br style="clear:both;"/>

    <div class="row">

      <div class="form-group col-md-6">
        <label for="username"><%= translation('users._form.username') %></label>
        <%= f.text_field :username, { readonly: true, tabindex: 1, placeholder: "Username", class: 'form-control', id: 'username' , title: 'Username field cannot be changed', disabled: true} %>
        <input type="hidden" name="id" value="<%= @user.username %>" />
      </div>

      <div class="form-group col-md-6">
        <label for="email"><%= translation('users._form.email') %></label>
        <%= f.text_field :email, { tabindex: 3, required: true, placeholder: "you@email.com", class: 'form-control', id: 'new_email'} %>
      </div>

    </div>

    <div class="form-group">
       <label for="current_password"><%= translation('users._form.current_password') %></label>
        <div class="input-group">
          <%= f.password_field :current_password, { placeholder: "Type your current password for verification",
                                                    tabindex: 4,
                                                    class: 'form-control',
                                                    id: 'current-password'
                                                  }
          %>
          <div class="input-group-append">
            <a id="show_password" class="fa fa-eye input-group-text d-flex align-items-center" aria-hidden="true">
            </a>
          </div>
        </div>
    </div>

    <div class="row">
      <div class="form-group col-md-6">
        <% if @user.crypted_password.nil? %>
          <label for="password"><%= translation('users._form.create_password') %></label>
        <% else %>
           <label for="password"><%= translation('users._form.change_password') %></label>
        <% end %>
        <%= f.password_field :password, { placeholder: "Enter your new password",
                                          tabindex: 5,
                                          class: 'form-control',
                                          id: 'new_password',
                                          onpaste: 'return false;' }
        %>
      </div>

      <div class="form-group col-md-6">
        <label for="password_confirmation"><%= translation('users._form.password_confirmation') %></label>
        <%= f.password_field :password_confirmation, { placeholder: I18n.t('users._form.confirm_password'),
                                                       tabindex: 6,
                                                       class: 'form-control',
                                                       id: 'new_password-confirmation',
                                                       onpaste: 'return false;' }
        %>
      </div>
    </div>

    <div class="form-group">
      <label for="user_bio"><%= translation('users._form.bio') %></label>
      <%= f.text_area :bio, { placeholder: I18n.t('users._form.add_bio'),
                                          rows: 8,
                                          class: 'form-control',
                                          tabindex: 7 }
      %>
    </div>

    <div class="form-group form-inline" style="clear:both;padding-top:10px;">

        <!-- button for saving edits for existing users -->
         <button class="btn btn-lg btn-primary btn-save" type="submit" tabindex="8"><%= translation('users._form.save') %></button>

      <script>
        (function() {
          $('.btn-save').click(function onClick(e) {
            if(document.form.new_email.text_field != "" && document.form.new_email.pattern == '[^@]+@[^@]+\.[a-zA-Z]{2,6}')
                   {
                     $(this).addClass("disabled") // disable the button after it is clicked
                     .html("<i class='fa fa-spinner fa-spin'></i>"); // make a spinner that spins when clicked
                   }
            })
        })();
      </script>
    </div>

</div>
<div class="col-md-2">
  <%= render :partial => 'users/photo' %>
</div>

<% end %>
</div>

<style>
.error {
    color: #D34836;
  }
</style> 

<script>
  $("#show_password").on("click", function (e) {
    e.preventDefault();
    var interval_ID = setInterval(hide, 1500);
    // changes type from password to text along with the eye icon
    $("#show_password").toggleClass("fa-eye-slash");
    $("#current-password").attr("type", "text");

    function hide() {
      // changes type from text again to password after 1.5 seconds along with eye-slash icon
      clearInterval(interval_ID);
      $("#current-password").attr("type", "password");
      $("#show_password").toggleClass("fa-eye-slash");
    }
  });
</script>