]>
Commit | Line | Data |
---|---|---|
6702a1b2 C |
1 | <div class="toggle-plugin-type"> |
2 | <p-selectButton [options]="pluginTypeOptions" [(ngModel)]="pluginType" (ngModelChange)="reloadPlugins()"></p-selectButton> | |
3 | </div> | |
4 | ||
5 | <div class="search-bar"> | |
9df52d66 | 6 | <input type="text" (input)="onSearchChange($event)" i18n-placeholder placeholder="Search..." myAutofocus /> |
6702a1b2 C |
7 | </div> |
8 | ||
89c344db C |
9 | <div class="alert alert-info" i18n *ngIf="pluginInstalled"> |
10 | To load your new installed plugins or themes, refresh the page. | |
11 | </div> | |
12 | ||
6702a1b2 C |
13 | <div class="result-title" *ngIf="!isSearching"> |
14 | <ng-container *ngIf="!search"> | |
adcf9212 | 15 | <my-global-icon iconName="trending" aria-hidden="true"></my-global-icon> |
6702a1b2 C |
16 | <ng-container i18n>Popular</ng-container> |
17 | </ng-container> | |
18 | ||
ae8b8faf | 19 | <ng-container *ngIf="!!search"> |
6702a1b2 C |
20 | <my-global-icon iconName="search"></my-global-icon> |
21 | ||
22 | <ng-container i18n> | |
ce4b4495 | 23 | {{ pagination.totalItems }} {pagination.totalItems, plural, =1 {result} other {results}} for "{{ search }}" |
a3caabe2 | 24 | </ng-container> |
6702a1b2 C |
25 | </ng-container> |
26 | </div> | |
27 | ||
28 | <div class="no-results" i18n *ngIf="pagination.totalItems === 0"> | |
29 | No results. | |
30 | </div> | |
31 | ||
dd24f1bb | 32 | <div class="plugins" myInfiniteScroller (nearOfBottom)="onNearOfBottom()" [dataObservable]="onDataSubject.asObservable()"> |
6702a1b2 C |
33 | <div class="card plugin" *ngFor="let plugin of plugins"> |
34 | <div class="card-body"> | |
35 | <div class="first-row"> | |
36 | <span class="plugin-name">{{ plugin.name }}</span> | |
37 | ||
38 | <span class="plugin-version">{{ plugin.latestVersion }}</span> | |
89c344db | 39 | |
d6d951dd | 40 | <a class="plugin-icon" target="_blank" rel="noopener noreferrer" [href]="plugin.homepage" i18n-title title="Plugin homepage (new window)"> |
03efb141 RK |
41 | <my-global-icon iconName="home"></my-global-icon> |
42 | </a> | |
6702a1b2 | 43 | |
078b4716 | 44 | <a class="plugin-icon" target="_blank" rel="noopener noreferrer" [href]="getPluginOrThemeHref(plugin.name)" i18n-title title="Plugin npm package (new window)"> |
03efb141 RK |
45 | <my-global-icon iconName="npm"></my-global-icon> |
46 | </a> | |
6702a1b2 | 47 | |
03efb141 | 48 | <span *ngIf="plugin.installed" class="badge badge-success">Installed</span> |
6702a1b2 | 49 | |
61cc1c03 C |
50 | |
51 | <span *ngIf="plugin.official" class="badge badge-primary" i18n i18n-title title="This plugin is developed by Framasoft"> | |
52 | Official | |
53 | </span> | |
54 | ||
03efb141 | 55 | <div class="buttons"> |
faf7eab7 C |
56 | <my-edit-button |
57 | *ngIf="plugin.installed === true && !isThemeSearch()" [routerLink]="getShowRouterLink(plugin)" | |
58 | label="Settings" i18n-label [responsiveLabel]="true" | |
59 | ></my-edit-button> | |
c96e457b | 60 | |
faf7eab7 C |
61 | <my-button |
62 | class="update-button" *ngIf="plugin.installed === false" (click)="install(plugin)" | |
63 | [loading]="isInstalling(plugin)" label="Install" [responsiveLabel]="true" | |
64 | icon="cloud-download" [attr.disabled]="isInstalling(plugin)" | |
6702a1b2 C |
65 | ></my-button> |
66 | </div> | |
67 | </div> | |
03efb141 RK |
68 | |
69 | <div class="second-row"> | |
70 | <div class="description">{{ plugin.description }}</div> | |
71 | </div> | |
6702a1b2 C |
72 | </div> |
73 | </div> | |
74 | </div> |