Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 2x 2x 1x 2x 2x 1x 1x 2x 1x 1x 2x 2x 2x 1x 1x 2x 2x 1x 2x 2x 1x 2x 1x 1x 1x 1x 1x 2x 1x 2x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 1x 2x | <div class="link" [class.remote]="!local"> @if (preview | async; as p) { <a [routerLink]="['/tag', extLink]" [appTitle]="ext">{{ p.name || '#' + p.tag }}</a> } @else { <a [routerLink]="['/tag', extLink]" [appTitle]="ext">{{ ext.name || template?.name || plugin?.name || '#' + ext.tag }}</a> } @if (ext.name) { <span class="host">({{ qualifiedTag }})</span> } @else if (ext.origin) { <span class="host">({{ ext.origin }})</span> } </div> <div class="stack"> <div class="info"> @if (ext.modified) { <span [title]="ext.modified.toISO()" i18n>modified {{ ext.modified.toRelative() }}</span> } @else { <span i18n>not found</span> } @for (icon of icons; track icon) { <span class="icon" (click)="bookmarks.toggleTag(icon.tag)" [title]="icon.tag">{{ icon.config!.view! }}</span> } @if (!local) { <span i18n>on</span> <a [routerLink]="['/tag', ext.origin]">{{ ext.origin || 'default' }}</a> } </div> <div class="actions"> @if (!ext.upload) { @if (parent) { <a [routerLink]="['/tags', parent]" i18n>parent</a> } <a [routerLink]="['/tags', extLink]" i18n>tags</a> @if (!local) { <a class="fake-link" (click)="copy()" i18n>copy</a> } @if (local && writeAccess) { @if (useEditPage) { <a [routerLink]="['/ext/', ext.tag]" i18n>edit</a> } @else { <a class="fake-link" (click)="editing = !editing" i18n>@if (editForm.dirty) {*edit*} @else {edit}</a> } } @else if (useEditPage) { <a [routerLink]="['/ext/', ext.tag]" i18n>source</a> } @else { <a class="fake-link" (click)="viewSource = !viewSource" i18n>source</a> } <a class="fake-link" (click)="download()" i18n>download</a> @if (store.account.mod || writeAccess) { <app-confirm-action #action [action]="delete$" i18n>delete</app-confirm-action> } } @if (store.account.user && ext.upload) { <a class="fake-link" (click)="upload()" i18n>upload</a> @if (parent) { <a [routerLink]="['/tags', parent]" i18n>parent</a> } <a [routerLink]="['/tags', ext.tag]" i18n>tags</a> <a class="fake-link" (click)="editing = !editing" i18n>@if (editForm.dirty) {*edit*} @else {edit}</a> <a class="fake-link" (click)="download()" i18n>download</a> <app-confirm-action #action [action]="delete$" i18n>delete</app-confirm-action> } </div> </div> @if (editing) { <form class="form" [formGroup]="editForm" (ngSubmit)="save()"> <app-ext-form #extForm [group]="editForm"></app-ext-form> @for (e of serverError; track e) { <span><!-- Unexpected Error --></span> <div class="error">{{ e }}</div> } <span><!-- Buttons --></span> <span class="buttons right"> @if (overwritten) { <div class="overwrite warning" i18n-title title="Will drop all unknown configs."> <input id="overwrite" type="checkbox" [checked]="overwrite" (input)="overwrite = !overwrite"> <label for="overwrite" i18n>Overwrite</label> </div> } <button type="submit" [disabled]="submitted && !editForm.valid" i18n>save</button> <button type="button" (click)="editing = false" i18n>cancel</button> </span> </form> } @else if (viewSource) { <form class="form" [formGroup]="editForm"> <app-ext-form #extForm [group]="editForm"></app-ext-form> </form> } @else { @for (e of serverError; track e) { <div class="error">{{ e }}</div> } } |