{{ 'plugins.store.title' | translate }}

{{ 'plugins.store.summary' | translate : { installed: installedCount(), scope: store.installScopeLabel(), available: totalSourcePlugins(), sources: sourceCount() } }}

@if (sourceError()) {

{{ sourceError() }}

}
{{ 'plugins.store.shown' | translate: { count: filteredPlugins().length } }}
@if (actionError()) {

{{ actionError() }}

} @if (readmeError()) {

{{ readmeError() }}

} @if (filteredPlugins().length > 0) {
@for (plugin of filteredPlugins(); track trackPlugin($index, plugin)) {
@if (plugin.imageUrl && !hasBrokenImage(plugin)) { } @else { }

{{ plugin.title }}

{{ plugin.author || ('plugins.store.unknownAuthor' | translate) }} · v{{ plugin.version }}

@if (getPluginInstallState(plugin) === 'updateAvailable') { {{ 'plugins.store.updateBadge' | translate }} } @if (getPluginInstallState(plugin) === 'installed') { {{ 'plugins.store.installedBadge' | translate }} }

{{ plugin.description }}

{{ plugin.id }} {{ plugin.sourceTitle || plugin.sourceUrl }}
@if (plugin.readmeUrl) { } @if (plugin.githubUrl) { }
}
} @else {

{{ 'plugins.store.emptyTitle' | translate }}

{{ (sourceCount() ? 'plugins.store.emptyWithSources' : 'plugins.store.emptyNoSources') | translate }}

}
@if (readme()) { }
@if (serverInstallDialog(); as dialog) { }