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.
130 lines
6.1 KiB
130 lines
6.1 KiB
<sqx-title message="{app} | {schema} | Contents" parameter1="app" parameter2="schema" [value1]="appsState.appDisplayName" [value2]="schema.displayName"></sqx-title>
|
|
|
|
<sqx-panel desiredWidth="*" minWidth="50rem" contentClass="grid" showSidebar="true">
|
|
<ng-container title>
|
|
Contents
|
|
</ng-container>
|
|
|
|
<ng-container menu>
|
|
<div class="row no-gutters pl-1">
|
|
<div class="col-auto ml-8">
|
|
<sqx-shortcut keys="ctrl+shift+r" (trigger)="reload()"></sqx-shortcut>
|
|
|
|
<button type="button" class="btn btn-text-secondary" (click)="reload()" title="Refresh Contents (CTRL + SHIFT + R)">
|
|
<i class="icon-reset"></i> Refresh
|
|
</button>
|
|
</div>
|
|
<div class="col pl-1">
|
|
<sqx-search-form formClass="form" placeholder="Search for content"
|
|
[query]="contentsState.contentsQuery | async"
|
|
[queries]="queries"
|
|
[queryModel]="queryModel"
|
|
(queryChange)="search($event)"
|
|
enableShortcut="true">
|
|
</sqx-search-form>
|
|
</div>
|
|
<div class="col-auto pl-1" *ngIf="languages.length > 1">
|
|
<sqx-language-selector class="languages-buttons" (selectedLanguageChange)="selectLanguage($event)" [languages]="languages.mutableValues"></sqx-language-selector>
|
|
</div>
|
|
<div class="col-auto pl-1">
|
|
<button type="button" class="btn btn-success" #newButton routerLink="new" title="New Content (CTRL + SHIFT + G)" [disabled]="(contentsState.canCreateAny | async) === false">
|
|
<i class="icon-plus"></i> New
|
|
</button>
|
|
|
|
<sqx-shortcut keys="ctrl+shift+g" (trigger)="newButton.click()"></sqx-shortcut>
|
|
</div>
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container content>
|
|
<div class="grid-header">
|
|
<table class="table table-items table-fixed" [style.minWidth]="minWidth" #header>
|
|
<thead>
|
|
<tr>
|
|
<th class="cell-select">
|
|
<input type="checkbox" class="form-check" [ngModel]="selectedAll" (ngModelChange)="selectAll($event)" />
|
|
</th>
|
|
<th class="cell-actions cell-actions-left">
|
|
Actions
|
|
</th>
|
|
<th class="cell-user">
|
|
<sqx-table-header text="By"></sqx-table-header>
|
|
</th>
|
|
<th class="cell-auto cell-content" *ngFor="let field of schema.listFields">
|
|
<sqx-table-header [text]="field.displayName"
|
|
[sortable]="field.properties.isSortable"
|
|
[field]="field"
|
|
[query]="contentsState.contentsQuery | async"
|
|
(queryChange)="search($event)"
|
|
[language]="language">
|
|
</sqx-table-header>
|
|
</th>
|
|
<th class="cell-time">
|
|
<sqx-table-header text="Updated"
|
|
[sortable]="true"
|
|
[field]="'lastModified'"
|
|
[query]="contentsState.contentsQuery | async"
|
|
(queryChange)="search($event)"
|
|
[language]="language">
|
|
</sqx-table-header>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="selection" *ngIf="selectionCount > 0">
|
|
{{selectionCount}} items selected
|
|
|
|
<button type="button" class="btn btn-secondary mr-1" *ngFor="let status of nextStatuses" (click)="changeSelectedStatus(status)">
|
|
Status to {{status}}
|
|
</button>
|
|
|
|
<button type="button" class="btn btn-danger" *ngIf="selectionCanDelete"
|
|
(sqxConfirmClick)="deleteSelected()"
|
|
confirmTitle="Delete content"
|
|
confirmText="Do you really want to delete the selected content items?">
|
|
Delete
|
|
</button>
|
|
</div>
|
|
|
|
<div class="grid-content" [sqxSyncScrolling]="header">
|
|
<div class="table-container" sqxIgnoreScrollbar>
|
|
<table class="table table-items table-fixed" [style.minWidth]="minWidth">
|
|
<tbody *ngFor="let content of contentsState.contents | async; trackBy: trackByContent">
|
|
<tr [sqxContent]="content"
|
|
(delete)="delete(content)"
|
|
[selected]="isItemSelected(content)"
|
|
(selectedChange)="selectItem(content, $event)"
|
|
(statusChange)="changeStatus(content, $event)"
|
|
(clone)="clone(content)"
|
|
[language]="language"
|
|
[canClone]="contentsState.snapshot.canCreate"
|
|
[routerLink]="[content.id]"
|
|
[routerLinkActive]="'active'"
|
|
[schema]="schema"
|
|
[schemaFields]="schema.listFields">
|
|
</tr>
|
|
<tr class="spacer"></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid-footer">
|
|
<sqx-pager [pager]="contentsState.contentsPager | async" (prevPage)="goPrev()" (nextPage)="goNext()"></sqx-pager>
|
|
</div>
|
|
</ng-container>
|
|
|
|
<ng-container sidebar>
|
|
<div class="panel-nav">
|
|
<a class="panel-link" routerLink="filters" routerLinkActive="active" title="Filters" titlePosition="left">
|
|
<i class="icon-filter"></i>
|
|
</a>
|
|
</div>
|
|
</ng-container>
|
|
</sqx-panel>
|
|
|
|
<router-outlet></router-outlet>
|
|
|
|
<sqx-due-time-selector #dueTimeSelector></sqx-due-time-selector>
|