175 lines
7.7 KiB
HTML
175 lines
7.7 KiB
HTML
<div class="loading" ng-show="loading">
|
|
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
|
</div>
|
|
|
|
<div class="loading" ng-show="!loading && !user">
|
|
No matching user found
|
|
</div>
|
|
|
|
<div class="user-admin container" ng-show="!loading && user">
|
|
<div class="row">
|
|
<div class="organization-header-element">
|
|
<img src="//www.gravatar.com/avatar/{{ user.gravatar }}?s=24&d=identicon">
|
|
<span class="organization-name">
|
|
{{ user.username }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" ng-show="askForPassword">
|
|
<div class="col-md-12">
|
|
<div class="alert alert-warning">Your account does not currently have a password. You will need to create a password before you will be able to <strong>push</strong> or <strong>pull</strong> repositories.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Side tabs -->
|
|
<div class="col-md-2">
|
|
<ul class="nav nav-pills nav-stacked">
|
|
<li class="active"><a href="javascript:void(0)" data-toggle="tab" data-target="#plan">Plan and Usage</a></li>
|
|
<li><a href="javascript:void(0)" data-toggle="tab" data-target="#password">Set Password</a></li>
|
|
<li><a href="javascript:void(0)" data-toggle="tab" data-target="#migrate" id="migrateTab">Convert to Organization</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- Content -->
|
|
<div class="col-md-10">
|
|
<div class="tab-content">
|
|
<!-- Plans tab -->
|
|
<div id="plan" class="tab-pane active">
|
|
<div class="plan-manager" user="user.username" ready-for-plan="readyForPlan()"></div>
|
|
</div>
|
|
|
|
<!-- Change password tab -->
|
|
<div id="password" class="tab-pane">
|
|
<div class="loading" ng-show="updatingUser">
|
|
<i class="fa fa-spinner fa-spin fa-3x"></i>
|
|
</div>
|
|
<div class="row">
|
|
<form class="form-change-pw col-md-6" name="changePasswordForm" ng-submit="changePassword()" data-trigger="manual"
|
|
data-content="{{ changePasswordError }}" data-placement="right" ng-show="!awaitingConfirmation && !registering">
|
|
<input type="password" class="form-control" placeholder="Your new password" ng-model="user.password" required>
|
|
<input type="password" class="form-control" placeholder="Verify your new password" ng-model="user.repeatPassword"
|
|
match="user.password" required>
|
|
<button class="btn btn-danger" ng-disabled="changePasswordForm.$invalid" type="submit"
|
|
analytics-on analytics-event="register">Change Password</button>
|
|
<span class="help-block" ng-show="changePasswordSuccess">Password changed successfully</span>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Convert to organization tab -->
|
|
<div id="migrate" class="tab-pane">
|
|
<!-- Step 0 -->
|
|
<div class="panel" ng-show="convertStep == 0">
|
|
<div class="panel-body" ng-show="user.organizations.length > 0">
|
|
<div class="alert alert-info">
|
|
Cannot convert this account into an organization, as it is a member of {{user.organizations.length}} other
|
|
organization{{user.organizations.length > 1 ? 's' : ''}}. Please leave
|
|
{{user.organizations.length > 1 ? 'those organizations' : 'that organization'}} first.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body" ng-show="user.organizations.length == 0">
|
|
<div class="alert alert-danger">
|
|
Converting a user account into an organization <b>cannot be undone</b>.<br> Here be many fire-breathing dragons!
|
|
</div>
|
|
|
|
<button class="btn btn-danger" ng-click="showConvertForm()">Start conversion process</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Step 1 -->
|
|
<div class="convert-form" ng-show="convertStep == 1">
|
|
<h3>Convert to organization</h3>
|
|
|
|
<form method="post" name="convertForm" id="convertForm" ng-submit="convertToOrg()">
|
|
<div class="form-group">
|
|
<label for="orgName">Organization Name</label>
|
|
<div class="existing-data">
|
|
<img src="//www.gravatar.com/avatar/{{ user.gravatar }}?s=24&d=identicon">
|
|
{{ user.username }}</div>
|
|
<span class="description">This will continue to be the namespace for your repositories</span>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="orgName">Admin User</label>
|
|
<input id="adminUsername" name="adminUsername" type="text" class="form-control" placeholder="Admin Username"
|
|
ng-model="org.adminUser" required autofocus>
|
|
<input id="adminPassword" name="adminPassword" type="password" class="form-control" placeholder="Admin Password"
|
|
ng-model="org.adminPassword" required>
|
|
<span class="description">The username and password for an <b>existing account</b> that will become administrator of the organization</span>
|
|
</div>
|
|
|
|
<div class="button-bar">
|
|
<button class="btn btn-large btn-danger" type="submit" ng-disabled="convertForm.$invalid">
|
|
Convert To Organization
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Modal message dialog -->
|
|
<div class="modal fade" id="cannotconvertModal">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title">Cannot convert account</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
Your account could not be converted. Please try again in a moment.
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div><!-- /.modal-content -->
|
|
</div><!-- /.modal-dialog -->
|
|
</div><!-- /.modal -->
|
|
|
|
|
|
<!-- Modal message dialog -->
|
|
<div class="modal fade" id="invalidadminModal">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title">Username or password invalid</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
The username or password specified for the admin account is not valid.
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div><!-- /.modal-content -->
|
|
</div><!-- /.modal-dialog -->
|
|
</div><!-- /.modal -->
|
|
|
|
|
|
<!-- Modal message dialog -->
|
|
<div class="modal fade" id="reallyconvertModal">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title">Convert to organization?</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="alert alert-danger">You will not be able to login to this account once converted</div>
|
|
<div>Are you <b>absolutely sure</b> you would like to convert this account to an organization? Once done, there is no going back.</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-danger" data-dismiss="modal" ng-click="reallyConvert()">Absolutely: Convert Now</button>
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
</div>
|
|
</div><!-- /.modal-content -->
|
|
</div><!-- /.modal-dialog -->
|
|
</div><!-- /.modal -->
|