[% WRAPPER layout.tt title=(create ? "Add new user" : "Editing user $user.username") %]
[% PROCESS common.tt %]

[% BLOCK roleoption %]
  [% checked = false %]
  [% FOREACH r IN user.userroles %]
    [% checked = r.role == role %]
    [% BREAK IF checked %]
  [% END %]
  <input
    type="checkbox"
    name="roles"
    [% IF checked %]
      checked="checked"
    [% END %]
    [% IF !mutable %]
      disabled="disabled"
    [% END %]
    [% HTML.attributes(id => "role-${role}", value => role) %] />
  <label [% HTML.attributes(for => "role-${role}") %]> [% HTML.escape(role) %]</label><br />
  [% END %]

<form>

  [% IF create %]
  <div class="form-group row">
    <label class="col-sm-3" for="userusername">User name</label>
    <div class="col-sm-9">
      <input type="text" class="form-control" id="userusername" name="username" [% HTML.attributes(value => username) %]/>
    </div>
  </div>
  [% END %]

  <div class="form-group row">
    <label class="col-sm-3" for="userfullname">Full name</label>
    <div class="col-sm-9">
      <input type="text" class="form-control" id="userfullname" name="fullname" [% HTML.attributes(value => create ? '' : user.fullname) %]/>
    </div>
  </div>

  [% IF create || user.type == 'hydra' %]
  <div class="form-group row">
    <label class="col-sm-3" for="userpassword">Password</label>
    <div class="col-sm-9">
      <input type="password" class="form-control" id="userpassword" name="password" value=""/>
    </div>
  </div>

  <div class="form-group row">
    <label class="col-sm-3" for="userpassword2">Confirm password</label>
    <div class="col-sm-9">
      <input type="password" class="form-control" id="userpassword2" name="password2" value=""/>
    </div>
  </div>
  [% END %]

  <div class="form-group row">
    <label class="col-sm-3" for="useremailaddress">Email</label>
    <div class="col-sm-9">
      <input type="text" class="form-control" id="useremailaddress" name="emailaddress" [% IF !create && user.username.search('@') %]disabled="disabled"[% END %] [%+ HTML.attributes(value => user.emailaddress) %]/>
    </div>
  </div>

  <div class="form-group row">
    <label class="col-sm-3" for="useremailonerror">Receive evaluation error notifications</label>
    <div class="col-sm-9">
      <input type="checkbox" name="emailonerror" [% IF !create && user.emailonerror; 'checked="checked"'; END %]/>
    </div>
  </div>

  <div class="form-group row">
    <label class="col-sm-3" for="userpublicdashboard">Public dashboard</label>
    <div class="col-sm-9">
      <input type="checkbox" name="publicdashboard" [% IF !create && user.publicdashboard; 'checked="checked"'; END %]/>
    </div>
  </div>

  [% IF !create || c.check_user_roles('admin') %]
    [% mutable = c.check_user_roles('admin') %]
    <div class="form-group row card [% mutable ? "border-danger" : "border-light" %]">
      <div class="card-header">User Roles</div>
      <div class="card-body [% mutable ? "text-danger" : "" %]">
        [% IF mutable %]
          <h5 class="card-title">Take care, you're allowed to change [% HTML.escape(user.fullname || user.emailaddress || "this user") %]'s roles.</h5>
        [% ELSE %]
          <h5 class="card-title">[% HTML.escape(user.fullname || user.emailaddress || "this user") %]'s roles.</h5>
        [% END %]
        <p class="card-text">
          [% INCLUDE roleoption mutable=mutable role="admin" %]
          [% INCLUDE roleoption mutable=mutable role="create-projects" %]
          [% INCLUDE roleoption mutable=mutable role="restart-jobs" %]
          [% INCLUDE roleoption mutable=mutable role="bump-to-front" %]
          [% INCLUDE roleoption mutable=mutable role="cancel-build" %]
          [% INCLUDE roleoption mutable=mutable role="eval-jobset" %]
        </p>
      </div>
    </div>
  [% END %]

  [% IF create && !c.check_user_roles('admin') %]
    <div class="form-group row">
      <label class="col-sm-3"></label>
      <div class="col-sm-9">
        <img src="[% c.uri_for('/captcha') %]" alt="CAPTCHA">
      </div>
    </div>
    <div class="form-group row">
      <label class="col-sm-3" for="usercaptcha">Type the digits shown in the image above</label>
      <div class="col-sm-9">
        <input type="text" class="form-control" id="usercaptcha" name="captcha" value="">
      </div>
    </div>
  [% END %]

  <button id="submit-user" class="btn btn-primary">
    <i class="fas fa-check"></i>
    [%IF create %]Create[% ELSE %]Apply changes[% END %]
  </button>
  [% IF !create && c.check_user_roles('admin') && user.type == 'hydra' %]
    <button id="reset-password" class="btn btn-warning">
      <i class="fas fa-lock"></i>
      Reset password
    </button>
  [% END %]
  [% IF !create %]
    <button id="delete-user" class="btn btn-danger">
      <i class="fas fa-trash"></i>
      Delete this user
    </button>
  [% END %]
</form>

<script>
  $("#submit-user").click(function() {
    requestJSON({
      [% IF create %]
        url: "[% c.uri_for(c.controller('User').action_for('register')) %]",
      [% ELSE %]
        url: "[% c.uri_for(c.controller('User').action_for('edit'), c.req.captures) %]",
      [% END %]
      data: $(this).parents("form").serialize(),
      type: 'PUT',
      success: backToReferrer
    });
    return false;
  });

  $("#reset-password").click(function() {
    bootbox.confirm(
      'Are you sure you want to reset the password for this user?',
      function(c) {
        if (!c) return;
        requestJSON({
          url: "[% c.uri_for(c.controller('User').action_for('reset_password'), [user.username]) %]",
          type: 'POST',
          success: backToReferrer
        });
      });
    return false;
  });

  $("#delete-user").click(function() {
    bootbox.confirm(
      'Are you sure you want to delete this user?',
      function(c) {
        if (!c) return;
        requestJSON({
          url: "[% c.uri_for(c.controller('User').action_for('edit'), c.req.captures) %]",
          type: 'DELETE',
          success: backToReferrer
        });
      });
    return false;
  });
</script>

[% END %]
