mirror of https://github.com/Squidex/squidex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
4.2 KiB
86 lines
4.2 KiB
<sqx-title message="i18n:common.contributors"></sqx-title>
|
|
|
|
<sqx-panel desiredWidth="50rem" showSidebar="true" grid="true" closeQueryParamsHandling="none">
|
|
<ng-container title>
|
|
{{ 'common.contributors' | sqxTranslate }}
|
|
</ng-container>
|
|
|
|
<ng-container menu>
|
|
<sqx-notifo topic="apps/{{contributorsState.appId}}/settings/contributors"></sqx-notifo>
|
|
|
|
<button type="button" class="btn btn-text-secondary mr-2" (click)="reload()" title="i18n:contributors.refreshTooltip">
|
|
<i class="icon-reset"></i> {{ 'common.refresh' | sqxTranslate }}
|
|
</button>
|
|
|
|
<sqx-shortcut keys="ctrl+shift+r" (trigger)="reload()"></sqx-shortcut>
|
|
|
|
<div class="form-inline">
|
|
<input class="form-control" placeholder="{{ 'contributors.search' | sqxTranslate }}" [ngModel]="contributorsState.query | async" (ngModelChange)="search($event)">
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container content>
|
|
<sqx-list-view [isLoading]="contributorsState.isLoading | async">
|
|
<ng-container topHeader>
|
|
<ng-container *ngIf="rolesState.roles | async; let roles">
|
|
<ng-container *ngIf="contributorsState.maxContributors | async; let maxContributors">
|
|
<div class="panel-alert panel-alert-success" *ngIf="maxContributors > 0">
|
|
{{ 'contributors.planHint' | sqxTranslate: { maxContributors: maxContributors } }}
|
|
</div>
|
|
</ng-container>
|
|
<ng-container *ngIf="contributorsState.canCreate | async">
|
|
<sqx-contributor-add-form [roles]="roles">
|
|
</sqx-contributor-add-form>
|
|
</ng-container>
|
|
<div class="import-hint">
|
|
<sqx-form-hint class="text-right">
|
|
{{ 'contributors.importHintg' | sqxTranslate }} <a class="force" (click)="importDialog.show()">{{ 'contributors.importButton' | sqxTranslate }}</a>
|
|
</sqx-form-hint>
|
|
</div>
|
|
</ng-container>
|
|
</ng-container>
|
|
|
|
<div content>
|
|
<ng-container *ngIf="contributorsState.contributorsPaged | async; let contributors">
|
|
<ng-container *ngIf="rolesState.roles | async; let roles">
|
|
<ng-container *ngIf="contributors.length > 0; else noContributors">
|
|
<table class="table table-items table-fixed">
|
|
<tbody *ngFor="let contributor of contributors; trackBy: trackByContributor" [sqxContributor]="contributor" [search]="contributorsState.queryRegex | async" [roles]="roles">
|
|
</tbody>
|
|
</table>
|
|
</ng-container>
|
|
|
|
<ng-template #noContributors>
|
|
<div class="table-items-row table-items-row-empty">
|
|
{{ 'contributors.empty' | sqxTranslate }}
|
|
</div>
|
|
</ng-template>
|
|
</ng-container>
|
|
</ng-container>
|
|
</div>
|
|
|
|
<ng-container footer>
|
|
<sqx-pager [pager]="contributorsState.contributorsPager | async" (pagerChange)="contributorsState.setPager($event)"></sqx-pager>
|
|
</ng-container>
|
|
</sqx-list-view>
|
|
</ng-container>
|
|
|
|
<ng-container sidebar>
|
|
<div class="panel-nav">
|
|
<a class="panel-link" routerLink="history" routerLinkActive="active" queryParamsHandling="preserve" queryParamsHandling="preserve" title="i18n:common.history" titlePosition="left">
|
|
<i class="icon-time"></i>
|
|
</a>
|
|
|
|
<a class="panel-link" routerLink="help" routerLinkActive="active" queryParamsHandling="preserve" queryParamsHandling="preserve" title="i18n:common.help" titlePosition="left">
|
|
<i class="icon-help2"></i>
|
|
</a>
|
|
</div>
|
|
</ng-container>
|
|
</sqx-panel>
|
|
|
|
<ng-container *sqxModal="importDialog">
|
|
<sqx-import-contributors-dialog [roles]="rolesState.roles | async" (close)="importDialog.hide()">
|
|
</sqx-import-contributors-dialog>
|
|
</ng-container>
|
|
|
|
<router-outlet></router-outlet>
|