Merge branch 'master' of github.com:coreos-inc/quay
This commit is contained in:
commit
1b34ea13c9
7 changed files with 86 additions and 33 deletions
|
@ -89,6 +89,8 @@ class QuayDeferredPermissionUser(Identity):
|
||||||
if not self._permissions_loaded:
|
if not self._permissions_loaded:
|
||||||
logger.debug('Loading user permissions after deferring.')
|
logger.debug('Loading user permissions after deferring.')
|
||||||
user_object = model.get_user_by_uuid(self.id)
|
user_object = model.get_user_by_uuid(self.id)
|
||||||
|
if user_object is None:
|
||||||
|
return super(QuayDeferredPermissionUser, self).can(permission)
|
||||||
|
|
||||||
# Add the superuser need, if applicable.
|
# Add the superuser need, if applicable.
|
||||||
if (user_object.username is not None and
|
if (user_object.username is not None and
|
||||||
|
|
|
@ -1347,13 +1347,16 @@ i.toggle-icon:hover {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plan-price:after {
|
|
||||||
content: "/ mo";
|
@media (min-width: 768px) {
|
||||||
position: absolute;
|
.plan-price:after {
|
||||||
bottom: 0px;
|
content: "/ mo";
|
||||||
right: 20px;
|
position: absolute;
|
||||||
font-size: 12px;
|
bottom: 0px;
|
||||||
color: #aaa;
|
right: 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.plans-list .plan .count {
|
.plans-list .plan .count {
|
||||||
|
@ -1516,9 +1519,6 @@ i.toggle-icon:hover {
|
||||||
right: 0px;
|
right: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing-filter.signedin {
|
|
||||||
}
|
|
||||||
|
|
||||||
.landing-content {
|
.landing-content {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
@ -1528,7 +1528,6 @@ i.toggle-icon:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing .call-to-action {
|
.landing .call-to-action {
|
||||||
height: 40px;
|
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
padding-left: 14px;
|
padding-left: 14px;
|
||||||
padding-right: 14px;
|
padding-right: 14px;
|
||||||
|
@ -3547,6 +3546,22 @@ p.editable:hover i {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.plans-table ul {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.plans-table ul li {
|
||||||
|
padding: 4px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plans-table ul li .plan-info {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.repo-breadcrumb-element .crumb {
|
.repo-breadcrumb-element .crumb {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,21 @@
|
||||||
<li><a ng-href="{{ user.organizations.length ? '/organizations/' : '/tour/organizations/' }}" target="{{ appLinkTarget() }}" quay-section="organization">Organizations</a></li>
|
<li><a ng-href="{{ user.organizations.length ? '/organizations/' : '/tour/organizations/' }}" target="{{ appLinkTarget() }}" quay-section="organization">Organizations</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<!-- Phone -->
|
||||||
|
<ul class="nav navbar-nav navbar-right visible-xs" ng-switch on="user.anonymous">
|
||||||
|
<li ng-switch-when="false">
|
||||||
|
<a href="/user/" class="user-view" target="{{ appLinkTarget() }}">
|
||||||
|
<span class="avatar" size="32" hash="user.avatar"></span>
|
||||||
|
{{ user.username }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li ng-switch-default>
|
||||||
|
<a class="user-view" href="/signin/" target="{{ appLinkTarget() }}">Sign in</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<ul class="nav navbar-nav navbar-right" ng-switch on="user.anonymous">
|
<!-- Normal -->
|
||||||
|
<ul class="nav navbar-nav navbar-right hidden-xs" ng-switch on="user.anonymous">
|
||||||
<li>
|
<li>
|
||||||
<form class="navbar-form navbar-left" role="search">
|
<form class="navbar-form navbar-left" role="search">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
@ -31,11 +31,16 @@
|
||||||
ng-show="!planLoading"></div>
|
ng-show="!planLoading"></div>
|
||||||
|
|
||||||
<!-- Plans Table -->
|
<!-- Plans Table -->
|
||||||
|
<div class="visible-xs" style="margin-top: 10px"></div>
|
||||||
|
|
||||||
<table class="table table-hover plans-list-table" ng-show="!planLoading">
|
<table class="table table-hover plans-list-table" ng-show="!planLoading">
|
||||||
<thead>
|
<thead>
|
||||||
<td>Plan</td>
|
<td>Plan</td>
|
||||||
<td>Private Repositories</td>
|
<td>
|
||||||
<td style="min-width: 64px">Price</td>
|
<span class="hidden-xs">Private Repositories</span>
|
||||||
|
<span class="visible-xs"><i class="fa fa-hdd-o"></i></span>
|
||||||
|
</td>
|
||||||
|
<td style="min-width: 64px"><span class="hidden-xs">Price</span><span class="visible-xs">$/mo</span></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,41 @@
|
||||||
<div class="plans-table-element">
|
<div class="plans-table-element">
|
||||||
<table class="table table-hover plans-table-table" ng-show="plans">
|
<ul class="plans-table-list visible-xs">
|
||||||
<thead>
|
<li ng-repeat="plan in plans" ng-class="currentPlan == plan ? 'active' : ''">
|
||||||
<th>Plan</th>
|
|
||||||
<th>Private Repositories</th>
|
|
||||||
<th style="min-width: 85px">Price</th>
|
|
||||||
<th></th>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tr ng-repeat="plan in plans" ng-class="currentPlan == plan ? 'active' : ''">
|
|
||||||
<td>{{ plan.title }}</td>
|
|
||||||
<td>{{ plan.privateRepos }}</td>
|
|
||||||
<td><div class="plan-price">${{ plan.price / 100 }}</div></td>
|
|
||||||
<td class="controls">
|
|
||||||
<a class="btn" href="javascript:void(0)"
|
<a class="btn" href="javascript:void(0)"
|
||||||
ng-class="currentPlan == plan ? 'btn-primary' : 'btn-default'"
|
ng-class="currentPlan == plan ? 'btn-primary' : 'btn-default'"
|
||||||
ng-click="setPlan(plan)">
|
ng-click="setPlan(plan)">
|
||||||
{{ currentPlan == plan ? 'Selected' : 'Choose' }}
|
{{ plan.title }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
|
||||||
</tr>
|
<div class="plan-info">
|
||||||
</table>
|
${{ plan.price / 100 }} / month -
|
||||||
|
{{ plan.privateRepos }} repositories
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="hidden-xs">
|
||||||
|
<table class="table table-hover plans-table-table" ng-show="plans">
|
||||||
|
<thead>
|
||||||
|
<th>Plan</th>
|
||||||
|
<th>Private Repositories</th>
|
||||||
|
<th style="min-width: 85px">Price</th>
|
||||||
|
<th></th>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tr ng-repeat="plan in plans" ng-class="currentPlan == plan ? 'active' : ''">
|
||||||
|
<td>{{ plan.title }}</td>
|
||||||
|
<td>{{ plan.privateRepos }}</td>
|
||||||
|
<td><div class="plan-price">${{ plan.price / 100 }}</div></td>
|
||||||
|
<td class="controls">
|
||||||
|
<a class="btn" href="javascript:void(0)"
|
||||||
|
ng-class="currentPlan == plan ? 'btn-primary' : 'btn-default'"
|
||||||
|
ng-click="setPlan(plan)">
|
||||||
|
{{ currentPlan == plan ? 'Selected' : 'Choose' }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2645,7 +2645,7 @@ quayApp.directive('focusablePopoverContent', ['$timeout', '$popover', function (
|
||||||
|
|
||||||
if (!scope) { return; }
|
if (!scope) { return; }
|
||||||
scope.$apply(function() {
|
scope.$apply(function() {
|
||||||
if (!scope) { return; }
|
if (!scope || !$scope.$hide) { return; }
|
||||||
scope.$hide();
|
scope.$hide();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,14 +54,14 @@
|
||||||
<input id="orgName" name="orgName" type="text" class="form-control" placeholder="Organization Name"
|
<input id="orgName" name="orgName" type="text" class="form-control" placeholder="Organization Name"
|
||||||
ng-model="org.name" required autofocus data-trigger="manual" data-content="{{ createError }}"
|
ng-model="org.name" required autofocus data-trigger="manual" data-content="{{ createError }}"
|
||||||
data-placement="bottom" data-container="body" ng-pattern="/^[a-z0-9_]{4,30}$/">
|
data-placement="bottom" data-container="body" ng-pattern="/^[a-z0-9_]{4,30}$/">
|
||||||
<span class="description">This will also be the namespace for your repositories</span>
|
<span class="description">This will also be the namespace for your repositories. Must be alphanumeric and all lowercase.</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group nested">
|
<div class="form-group nested">
|
||||||
<label for="orgName">Organization Email</label>
|
<label for="orgName">Organization Email</label>
|
||||||
<input id="orgEmail" name="orgEmail" type="email" class="form-control" placeholder="Organization Email"
|
<input id="orgEmail" name="orgEmail" type="email" class="form-control" placeholder="Organization Email"
|
||||||
ng-model="org.email" required>
|
ng-model="org.email" required>
|
||||||
<span class="description">This address must be different from your account's email</span>
|
<span class="description">This address must be different from your account's email.</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Plans Table -->
|
<!-- Plans Table -->
|
||||||
|
|
Reference in a new issue