New Wiki Launch (#2848)

This commit is contained in:
Joe Milazzo 2024-04-12 16:34:49 -05:00 committed by GitHub
parent 83e493f2ae
commit 4194ec69d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 98 additions and 49 deletions

View File

@ -0,0 +1,22 @@
export enum WikiLink {
Customize = 'https://wiki.kavitareader.com/guides/features/customization',
CustomizeExternalSource = 'https://wiki.kavitareader.com/guides/features/customization#external-source',
ReadingLists = 'https://wiki.kavitareader.com/guides/features/readinglists',
Collections = 'https://wiki.kavitareader.com/guides/features/collections',
SeriesRelationships = 'https://wiki.kavitareader.com/guides/features/relationships',
Bookmarks = 'https://wiki.kavitareader.com/guides/features/bookmarks',
DataCollection = 'https://wiki.kavitareader.com/troubleshooting/faq#q-does-kavita-collect-any-data-on-me',
MediaIssues = 'https://wiki.kavitareader.com/guides/admin-settings/media#media-issues',
KavitaPlusDiscordId = 'https://wiki.kavitareader.com/guides/admin-settings/kavita+#discord-id',
KavitaPlus = 'https://wiki.kavitareader.com/guides/admin-settings/kavita+',
KavitaPlusFAQ = 'https://wiki.kavitareader.com/kavita+/faq',
ReadingListCBL = 'https://wiki.kavitareader.com/guides/features/readinglists#creating-a-reading-list-via-cbl',
Donation = 'https://wiki.kavitareader.com/donating',
Updating = 'https://wiki.kavitareader.com/guides/updating',
ManagingFiles = 'https://wiki.kavitareader.com/guides/scanner/managefiles',
Scanner = 'https://wiki.kavitareader.com/guides/scanner',
ScannerExclude = 'https://wiki.kavitareader.com/guides/admin-settings/libraries#exclude-patterns',
Library = 'https://wiki.kavitareader.com/guides/admin-settings/libraries',
UpdateNative = 'https://wiki.kavitareader.com/guides/updating/updating-native',
UpdateDocker = 'https://wiki.kavitareader.com/guides/updating/updating-docker'
}

View File

@ -7,6 +7,7 @@ import { LibraryService } from '../../../_services/library.service';
import { NgIf, NgFor, NgClass } from '@angular/common';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import {TranslocoDirective} from "@ngneat/transloco";
import {WikiLink} from "../../../_models/wiki";
export interface DirectoryPickerResult {
@ -27,7 +28,7 @@ export class DirectoryPickerComponent implements OnInit {
/**
* Url to give more information about selecting directories. Passing nothing will suppress.
*/
@Input() helpUrl: string = 'https://wiki.kavitareader.com/en/guides/first-time-setup#adding-a-library-to-kavita';
@Input() helpUrl: string = WikiLink.Library;
currentRoot = '';
folders: DirectoryDto[] = [];

View File

@ -34,7 +34,7 @@
<app-manage-tasks-settings></app-manage-tasks-settings>
</ng-container>
<ng-container *ngIf="tab.fragment === TabID.KavitaPlus">
<p>{{t('kavita+-desc-part-1')}} <a href="https://wiki.kavitareader.com/en/kavita-plus" target="_blank" rel="noreferrer nofollow">{{t('kavita+-desc-part-2')}}</a> {{t('kavita+-desc-part-3')}} <a href="https://wiki.kavitareader.com/en/kavita-plus#faq" target="_blank" rel="noreferrer nofollow">FAQ</a></p>
<p>{{t('kavita+-desc-part-1')}} <a [href]="WikiLink.KavitaPlus" target="_blank" rel="noreferrer nofollow">{{t('kavita+-desc-part-2')}}</a> {{t('kavita+-desc-part-3')}} <a [href]="WikiLink.KavitaPlusFAQ" target="_blank" rel="noreferrer nofollow">FAQ</a></p>
<p>{{t('kavita+-requirement')}} <a [routerLink]="'/announcements'">{{t('kavita+-releases')}}</a></p>
<app-license></app-license>
</ng-container>

View File

@ -19,6 +19,7 @@ import {
SideNavCompanionBarComponent
} from '../../sidenav/_components/side-nav-companion-bar/side-nav-companion-bar.component';
import {translate, TranslocoDirective, TranslocoService} from "@ngneat/transloco";
import {WikiLink} from "../../_models/wiki";
enum TabID {
General = '',
@ -51,6 +52,7 @@ export class DashboardComponent implements OnInit {
protected readonly navService = inject(NavService);
private readonly titleService = inject(Title);
protected readonly TabID = TabID;
protected readonly WikiLink = WikiLink;
tabs: Array<{title: string, fragment: string}> = [

View File

@ -83,13 +83,15 @@
<div class="form-group mb-3">
<label for="discordId">{{t('activate-discordId-label')}}</label>
<i class="fa fa-circle-info ms-1" aria-hidden="true" [ngbTooltip]="t('activate-discordId-tooltip')"></i>
<a class="ms-1" href="https://wiki.kavitareader.com/en/kavita-plus#discord-id" target="_blank" rel="noopener noreferrer">Help</a>
<a class="ms-1" [href]="WikiLink.KavitaPlusDiscordId" target="_blank" rel="noopener noreferrer">Help</a>
<input id="discordId" type="text" class="form-control" formControlName="discordId" autocomplete="off" [class.is-invalid]="formGroup.get('discordId')?.invalid && formGroup.get('discordId')?.touched"/>
@if (formGroup.dirty || formGroup.touched) {
<div id="inviteForm-validations" class="invalid-feedback">
<div *ngIf="formGroup.get('discordId')?.errors?.pattern">
{{t('discord-validation')}}
</div>
@if (formGroup.get('discordId')?.errors?.pattern) {
<div>
{{t('discord-validation')}}
</div>
}
</div>
}
</div>

View File

@ -15,6 +15,7 @@ import { NgIf } from '@angular/common';
import {environment} from "../../../environments/environment";
import {translate, TranslocoDirective} from "@ngneat/transloco";
import {catchError} from "rxjs";
import {WikiLink} from "../../_models/wiki";
@Component({
selector: 'app-license',
@ -30,6 +31,7 @@ export class LicenseComponent implements OnInit {
private readonly toastr = inject(ToastrService);
private readonly confirmService = inject(ConfirmService);
protected readonly accountService = inject(AccountService);
protected readonly WikiLink = WikiLink;
formGroup: FormGroup = new FormGroup({});
isViewMode: boolean = true;

View File

@ -1,5 +1,5 @@
<ng-container *transloco="let t; read: 'manage-alerts'">
<p>{{t('description-part-1')}} <a rel="noopener noreferrer" target="_blank" href="https://wiki.kavitareader.com/en/guides/managing-your-files/scanner#media-errors">{{t('description-part-2')}}</a></p>
<p>{{t('description-part-1')}} <a rel="noopener noreferrer" target="_blank" [href]="WikiLink.MediaIssues">{{t('description-part-2')}}</a></p>
<form [formGroup]="formGroup">
<div class="row g-0 mb-3">

View File

@ -21,6 +21,7 @@ import { FilterPipe } from '../../_pipes/filter.pipe';
import { LoadingComponent } from '../../shared/loading/loading.component';
import { NgIf, NgFor } from '@angular/common';
import {TranslocoDirective} from "@ngneat/transloco";
import {WikiLink} from "../../_models/wiki";
@Component({
selector: 'app-manage-alerts',
@ -34,10 +35,12 @@ export class ManageAlertsComponent implements OnInit {
@Output() alertCount = new EventEmitter<number>();
@ViewChildren(SortableHeader<KavitaMediaError>) headers!: QueryList<SortableHeader<KavitaMediaError>>;
private readonly serverService = inject(ServerService);
private readonly messageHub = inject(MessageHubService);
private readonly cdRef = inject(ChangeDetectorRef);
private readonly destroyRef = inject(DestroyRef);
protected readonly WikiLink = WikiLink;
messageHubUpdate$ = this.messageHub.messages$.pipe(takeUntilDestroyed(this.destroyRef), filter(m => m.event === EVENTS.ScanSeries), shareReplay());
currentSort = new BehaviorSubject<SortEvent<KavitaMediaError>>({column: 'extension', direction: 'asc'});
@ -49,9 +52,6 @@ export class ManageAlertsComponent implements OnInit {
filter: new FormControl('', [])
});
constructor() {}
ngOnInit(): void {
this.loadData();

View File

@ -184,7 +184,7 @@
<div class="mb-3 mt-3">
<label for="stat-collection" class="form-label" aria-describedby="collection-info">{{t('allow-stats-label')}}</label>
<p class="accent" id="collection-info">{{t('allow-stats-tooltip-part-1')}}<a href="https://wiki.kavitareader.com/en/faq" rel="noopener noreferrer" target="_blank" referrerpolicy="no-refer">wiki</a> {{t('allow-stats-tooltip-part-2')}}</p>
<p class="accent" id="collection-info">{{t('allow-stats-tooltip-part-1')}}<a [href]="WikiLink.DataCollection" rel="noopener noreferrer" target="_blank" referrerpolicy="no-refer">wiki</a> {{t('allow-stats-tooltip-part-2')}}</p>
<div class="form-check form-switch">
<input id="stat-collection" type="checkbox" aria-label="Stat Collection" class="form-check-input" formControlName="allowStatCollection" role="switch">
<label for="stat-collection" class="form-check-label">{{t('send-data')}}</label>

View File

@ -8,6 +8,7 @@ import {ServerSettings} from '../_models/server-settings';
import {NgbTooltip} from '@ng-bootstrap/ng-bootstrap';
import {NgFor, NgIf, NgTemplateOutlet, TitleCasePipe} from '@angular/common';
import {TranslocoModule, TranslocoService} from "@ngneat/transloco";
import {WikiLink} from "../../_models/wiki";
const ValidIpAddress = /^(\s*((([12]?\d{1,2}\.){3}[12]?\d{1,2})|(([\da-f]{0,4}\:){0,7}([\da-f]{0,4})))\s*\,)*\s*((([12]?\d{1,2}\.){3}[12]?\d{1,2})|(([\da-f]{0,4}\:){0,7}([\da-f]{0,4})))\s*$/i;
@ -21,15 +22,17 @@ const ValidIpAddress = /^(\s*((([12]?\d{1,2}\.){3}[12]?\d{1,2})|(([\da-f]{0,4}\:
})
export class ManageSettingsComponent implements OnInit {
private readonly translocoService = inject(TranslocoService);
private readonly cdRef = inject(ChangeDetectorRef);
private readonly settingsService = inject(SettingsService);
private readonly toastr = inject(ToastrService);
private readonly serverService = inject(ServerService);
protected readonly WikiLink = WikiLink;
serverSettings!: ServerSettings;
settingsForm: FormGroup = new FormGroup({});
taskFrequencies: Array<string> = [];
logLevels: Array<string> = [];
private readonly translocoService = inject(TranslocoService);
private readonly cdRef = inject(ChangeDetectorRef);
constructor(private settingsService: SettingsService, private toastr: ToastrService,
private serverService: ServerService) { }
ngOnInit(): void {
this.settingsService.getTaskFrequencies().pipe(take(1)).subscribe(frequencies => {

View File

@ -25,7 +25,7 @@
</ng-template>
<ng-template #noData>
{{t('no-data')}} <a href="https://wiki.kavitareader.com/en/guides/get-started-using-your-library/bookmarks" rel="noopener noreferrer" target="_blank">{{t('no-data-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>
{{t('no-data')}} <a [href]="WikiLink.Bookmarks" rel="noopener noreferrer" target="_blank">{{t('no-data-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>
</ng-template>
</app-card-detail-layout>
</ng-container>

View File

@ -33,6 +33,7 @@ import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-
import {translate, TranslocoDirective, TranslocoService} from "@ngneat/transloco";
import {SeriesFilterV2} from "../../../_models/metadata/v2/series-filter-v2";
import {Title} from "@angular/platform-browser";
import {WikiLink} from "../../../_models/wiki";
@Component({
selector: 'app-bookmarks',
@ -59,6 +60,8 @@ export class BookmarksComponent implements OnInit {
public readonly bulkSelectionService = inject(BulkSelectionService);
public readonly imageService = inject(ImageService);
protected readonly WikiLink = WikiLink;
bookmarks: Array<PageBookmark> = [];
series: Array<Series> = [];
loadingBookmarks: boolean = false;

View File

@ -2,7 +2,7 @@
<div class="container-fluid">
<p>
{{t('description-part-1')}} <a href="https://wiki.kavitareader.com/en/guides/get-started-using-your-library/series-relationships" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">{{t('description-part-2')}}</a>
{{t('description-part-1')}} <a [href]="WikiLink.SeriesRelationships" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">{{t('description-part-2')}}</a>
</p>
<div class="row g-0" *ngIf="relations.length > 0">

View File

@ -24,6 +24,7 @@ import {TypeaheadComponent} from "../../typeahead/_components/typeahead.componen
import {CommonModule} from "@angular/common";
import {TranslocoModule} from "@ngneat/transloco";
import {RelationshipPipe} from "../../_pipes/relationship.pipe";
import {WikiLink} from "../../_models/wiki";
interface RelationControl {
series: {id: number, name: string} | undefined; // Will add type as well
@ -55,6 +56,7 @@ export class EditSeriesRelationComponent implements OnInit {
private readonly searchService = inject(SearchService);
public readonly imageService = inject(ImageService);
protected readonly RelationKind = RelationKind;
protected readonly WikiLink = WikiLink;
@Input({required: true}) series!: Series;
/**
@ -188,5 +190,4 @@ export class EditSeriesRelationComponent implements OnInit {
this.seriesService.updateRelationships(this.series.id, adaptations, characters, contains, others, prequels, sequels, sideStories, spinOffs, alternativeSettings, alternativeVersions, doujinshis, editions, annuals).subscribe(() => {});
}
}

View File

@ -27,7 +27,7 @@
<ng-template #noData>
{{t('no-data')}}
@if(isAdmin$ | async) {
{{t('create-one-part-1')}} <a href="https://wiki.kavitareader.com/en/guides/get-started-using-your-library/collections" rel="noopener noreferrer" target="_blank">{{t('create-one-part-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>
{{t('create-one-part-1')}} <a [href]="WikiLink.Collections" rel="noopener noreferrer" target="_blank">{{t('create-one-part-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>
}
</ng-template>
</app-card-detail-layout>

View File

@ -41,6 +41,7 @@ import {BulkSelectionService} from "../../../cards/bulk-selection.service";
import {SeriesCardComponent} from "../../../cards/series-card/series-card.component";
import {ActionService} from "../../../_services/action.service";
import {KEY_CODES} from "../../../shared/_services/utility.service";
import {WikiLink} from "../../../_models/wiki";
@Component({
@ -69,6 +70,7 @@ export class AllCollectionsComponent implements OnInit {
public readonly actionService = inject(ActionService);
protected readonly ScrobbleProvider = ScrobbleProvider;
protected readonly WikiLink = WikiLink;
isLoading: boolean = true;
collections: UserCollection[] = [];

View File

@ -22,7 +22,7 @@
</ng-template>
<ng-template #noData>
{{t('no-data')}} {{t('create-one-part-1')}} <a href="https://wiki.kavitareader.com/en/guides/get-started-using-your-library#reading-list" rel="noopener noreferrer" target="_blank">{{t('create-one-part-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>.
{{t('no-data')}} {{t('create-one-part-1')}} <a [href]="WikiLink.ReadingLists" rel="noopener noreferrer" target="_blank">{{t('create-one-part-2')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a>.
</ng-template>
</app-card-detail-layout>

View File

@ -20,6 +20,7 @@ import { SideNavCompanionBarComponent } from '../../../sidenav/_components/side-
import {translate, TranslocoDirective, TranslocoService} from "@ngneat/transloco";
import {CardActionablesComponent} from "../../../_single-module/card-actionables/card-actionables.component";
import {Title} from "@angular/platform-browser";
import {WikiLink} from "../../../_models/wiki";
@Component({
selector: 'app-reading-lists',
@ -31,6 +32,8 @@ import {Title} from "@angular/platform-browser";
})
export class ReadingListsComponent implements OnInit {
protected readonly WikiLink = WikiLink;
lists: ReadingList[] = [];
loadingLists = false;
pagination!: Pagination;

View File

@ -156,7 +156,7 @@
<!-- Spacer -->
<div class="col" aria-hidden="true"></div>
<div class="col-auto">
<a class="btn btn-icon" href="https://wiki.kavitareader.com/en/guides/get-started-using-your-library/reading-lists#creating-a-reading-list-via-cbl" target="_blank" rel="noopener noreferrer">Help</a>
<a class="btn btn-icon" [href]="WikiLink.ReadingListCBL" target="_blank" rel="noopener noreferrer">Help</a>
</div>
<div class="col-auto">
<button type="button" class="btn btn-secondary" (click)="close()">{{t('close')}}</button>

View File

@ -17,6 +17,7 @@ import {SafeHtmlPipe} from "../../../_pipes/safe-html.pipe";
import {CblConflictReasonPipe} from "../../../_pipes/cbl-conflict-reason.pipe";
import {CblImportResultPipe} from "../../../_pipes/cbl-import-result.pipe";
import {translate, TranslocoDirective} from "@ngneat/transloco";
import {WikiLink} from "../../../_models/wiki";
interface FileStep {
fileName: string;
@ -48,6 +49,7 @@ export class ImportCblModalComponent {
protected readonly CblImportResult = CblImportResult;
protected readonly Step = Step;
protected readonly WikiLink = WikiLink;
@ViewChild('fileUpload') fileUpload!: ElementRef<HTMLInputElement>;

View File

@ -4,6 +4,7 @@ import { UpdateVersionEvent } from 'src/app/_models/events/update-version-event'
import {CommonModule} from "@angular/common";
import {SafeHtmlPipe} from "../../_pipes/safe-html.pipe";
import {TranslocoDirective} from "@ngneat/transloco";
import {WikiLink} from "../../_models/wiki";
@Component({
@ -17,15 +18,15 @@ import {TranslocoDirective} from "@ngneat/transloco";
export class UpdateNotificationModalComponent implements OnInit {
@Input({required: true}) updateData!: UpdateVersionEvent;
updateUrl: string = 'https://wiki.kavitareader.com/en/install/windows-install#updating-kavita';
updateUrl: string = WikiLink.UpdateNative;
constructor(public modal: NgbActiveModal) { }
ngOnInit() {
if (this.updateData.isDocker) {
this.updateUrl = 'https://wiki.kavitareader.com/en/install/docker-install#updating-kavita';
this.updateUrl = WikiLink.UpdateDocker;
} else {
this.updateUrl = 'https://wiki.kavitareader.com/en/install/windows-install#updating-kavita';
this.updateUrl = WikiLink.UpdateNative;
}
}

View File

@ -35,7 +35,7 @@
</div>
<div class="modal-footer">
<a class="btn btn-icon" href="https://wiki.kavitareader.com/en/guides/customization" target="_blank" rel="noopener noreferrer">{{t('help')}}</a>
<a class="btn btn-icon" [href]="WikiLink.Customize" target="_blank" rel="noopener noreferrer">{{t('help')}}</a>
<button type="button" class="btn btn-primary" (click)="close()">{{t('close')}}</button>
</div>
</ng-container>

View File

@ -15,6 +15,7 @@ import {CustomizeDashboardStreamsComponent} from "../customize-dashboard-streams
import {CustomizeSidenavStreamsComponent} from "../customize-sidenav-streams/customize-sidenav-streams.component";
import {ManageExternalSourcesComponent} from "../manage-external-sources/manage-external-sources.component";
import {ManageSmartFiltersComponent} from "../manage-smart-filters/manage-smart-filters.component";
import {WikiLink} from "../../../_models/wiki";
enum TabID {
Dashboard = 'dashboard',
@ -35,13 +36,15 @@ enum TabID {
})
export class CustomizeDashboardModalComponent {
activeTab = TabID.SideNav;
private readonly cdRef = inject(ChangeDetectorRef);
public readonly utilityService = inject(UtilityService);
private readonly modal = inject(NgbActiveModal);
protected readonly TabID = TabID;
protected readonly Breakpoint = Breakpoint;
protected readonly WikiLink = WikiLink;
activeTab = TabID.SideNav;
close() {
this.modal.close();

View File

@ -1,7 +1,7 @@
<ng-container *transloco="let t; read: 'manage-external-sources'">
<p>
{{t('description')}}
<a href="https://wiki.kavitareader.com/en/guides/customization#external-source" target="_blank" rel="noopener noreferrer">{{t('help-link')}}</a>
<a [href]="WikiLink.CustomizeExternalSource" target="_blank" rel="noopener noreferrer">{{t('help-link')}}</a>
</p>

View File

@ -10,6 +10,7 @@ import {ExternalSource} from "../../../_models/sidenav/external-source";
import {ExternalSourceService} from "../../../_services/external-source.service";
import {FilterPipe} from "../../../_pipes/filter.pipe";
import {SmartFilter} from "../../../_models/metadata/v2/smart-filter";
import {WikiLink} from "../../../_models/wiki";
@Component({
selector: 'app-manage-external-sources',
@ -24,6 +25,7 @@ export class ManageExternalSourcesComponent {
externalSources: Array<ExternalSource> = [];
private readonly cdRef = inject(ChangeDetectorRef);
private readonly externalSourceService = inject(ExternalSourceService);
protected readonly WikiLink = WikiLink;
listForm: FormGroup = new FormGroup({
'filterQuery': new FormControl('', [])

View File

@ -73,6 +73,6 @@
<div class="side-nav-overlay" (click)="toggleNavBar()" [ngClass]="{'closed' : (navService.sideNavCollapsed$ | async)}"></div>
<div class="bottom" [ngClass]="{'closed' : (navService.sideNavCollapsed$ | async),
'hidden': (navService.sideNavVisibility$ | async) === false || (accountService.hasValidLicense$ | async) === true}">
<app-side-nav-item *ngIf="(accountService.hasValidLicense$ | async) === false" [ngClass]="'donate'" icon="fa-heart" [ngbTooltip]="t('donate-tooltip')" link="https://wiki.kavitareader.com/en/faq#q-i-want-to-donate-what-are-my-options" [external]="true"></app-side-nav-item>
<app-side-nav-item *ngIf="(accountService.hasValidLicense$ | async) === false" [ngClass]="'donate'" icon="fa-heart" [ngbTooltip]="t('donate-tooltip')" [link]="WikiLink.Donation" [external]="true"></app-side-nav-item>
</div>
</ng-container>

View File

@ -33,6 +33,7 @@ import {SideNavStreamType} from "../../../_models/sidenav/sidenav-stream-type.en
import {
ImportMalCollectionModalComponent
} from "../../../collections/_components/import-mal-collection-modal/import-mal-collection-modal.component";
import {WikiLink} from "../../../_models/wiki";
@Component({
selector: 'app-side-nav',
@ -44,8 +45,19 @@ import {
})
export class SideNavComponent implements OnInit {
protected readonly SideNavStreamType = SideNavStreamType;
private readonly router = inject(Router);
private readonly utilityService = inject(UtilityService);
private readonly messageHub = inject(MessageHubService);
private readonly actionService = inject(ActionService);
public readonly navService = inject(NavService);
private readonly cdRef = inject(ChangeDetectorRef);
private readonly ngbModal = inject(NgbModal);
private readonly imageService = inject(ImageService);
public readonly accountService = inject(AccountService);
private readonly destroyRef = inject(DestroyRef);
private readonly actionFactoryService = inject(ActionFactoryService);
protected readonly WikiLink = WikiLink;
cachedData: SideNavStream[] | null = null;
actions: ActionItem<Library>[] = this.actionFactoryService.getLibraryActions(this.handleAction.bind(this));
@ -63,18 +75,6 @@ export class SideNavComponent implements OnInit {
showAll: boolean = false;
totalSize = 0;
protected readonly SideNavStreamType = SideNavStreamType;
private readonly router = inject(Router);
private readonly utilityService = inject(UtilityService);
private readonly messageHub = inject(MessageHubService);
private readonly actionService = inject(ActionService);
public readonly navService = inject(NavService);
private readonly cdRef = inject(ChangeDetectorRef);
private readonly ngbModal = inject(NgbModal);
private readonly imageService = inject(ImageService);
public readonly accountService = inject(AccountService);
private showAllSubject = new BehaviorSubject<boolean>(false);
showAll$ = this.showAllSubject.asObservable();
@ -230,5 +230,4 @@ export class SideNavComponent implements OnInit {
this.cdRef.markForCheck();
this.showAllSubject.next(false);
}
}

View File

@ -74,10 +74,10 @@
</button>
</div>
<div class="row mt-2">
<p>{{t('help-us-part-1')}}<a href="https://wiki.kavitareader.com/en/guides/managing-your-files" rel="noopener noreferrer" target="_blank" referrerpolicy="no-referrer">{{t('help-us-part-2')}}</a> {{t('help-us-part-3')}}</p>
<p>{{t('help-us-part-1')}}<a [href]="WikiLink.ManagingFiles" rel="noopener noreferrer" target="_blank" referrerpolicy="no-referrer">{{t('help-us-part-2')}}</a> {{t('help-us-part-3')}}</p>
</div>
<div class="row mt-2">
<p>{{t('naming-conventions-part-1')}}<a href="https://wiki.kavitareader.com/en/guides/managing-your-files/scanner#introduction" rel="noopener noreferrer" target="_blank" referrerpolicy="no-referrer">{{t('naming-conventions-part-2')}}</a> {{t('naming-conventions-part-3')}}</p>
<p>{{t('naming-conventions-part-1')}}<a [href]="WikiLink.Scanner" rel="noopener noreferrer" target="_blank" referrerpolicy="no-referrer">{{t('naming-conventions-part-2')}}</a> {{t('naming-conventions-part-3')}}</p>
</div>
</ng-template>
</li>
@ -123,7 +123,7 @@
<div ngbAccordionCollapse>
<div ngbAccordionBody>
<ng-template>
<span >{{t('exclude-patterns-tooltip')}}<a class="ms-1" href="https://wiki.kavitareader.com/en/guides/managing-your-files/scanner/excluding-files-folders" rel="noopener noreferrer" target="_blank">{{t('help')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a></span>
<span >{{t('exclude-patterns-tooltip')}}<a class="ms-1" [href]="WikiLink.ScannerExclude" rel="noopener noreferrer" target="_blank">{{t('help')}}<i class="fa fa-external-link-alt ms-1" aria-hidden="true"></i></a></span>
<div class="mt-2">
<app-edit-list [items]="excludePatterns" [label]="t('exclude-patterns-label')" (updateItems)="updateGlobs($event)"></app-edit-list>
</div>

View File

@ -45,6 +45,7 @@ import {DefaultDatePipe} from "../../../_pipes/default-date.pipe";
import {allFileTypeGroup, FileTypeGroup} from "../../../_models/library/file-type-group.enum";
import {FileTypeGroupPipe} from "../../../_pipes/file-type-group.pipe";
import {EditListComponent} from "../../../shared/edit-list/edit-list.component";
import {WikiLink} from "../../../_models/wiki";
enum TabID {
General = 'general-tab',
@ -75,6 +76,7 @@ export class LibrarySettingsModalComponent implements OnInit {
protected readonly LibraryType = LibraryType;
protected readonly Breakpoint = Breakpoint;
protected readonly TabID = TabID;
protected readonly WikiLink = WikiLink;
public readonly utilityService = inject(UtilityService);
public readonly modal = inject(NgbActiveModal);
@ -361,5 +363,4 @@ export class LibrarySettingsModalComponent implements OnInit {
return false; // Advanced are optional
}
}
}

View File

@ -576,7 +576,7 @@
"title": "Nezůstaňte pozadu!",
"subtitle": "Zdá se, že vaše instalace je více než {{počet}} verzí pozadu!",
"description-1": "Zvažte prosím aktualizaci, abyste používali nejnovější verzi systému Kavita.",
"description-2": "Podívejte se na naši <a href='https://wiki.kavitareader.com/guides/updating/' target='_blank' rel='noreferrer noopener'>wiki</a>, kde najdete pokyny k aktualizaci.",
"description-2": "Podívejte se na naši <a href='https://wiki.kavitareader.com/guides/updating' target='_blank' rel='noreferrer noopener'>wiki</a>, kde najdete pokyny k aktualizaci.",
"description-3": "Pokud máte nějaký konkrétní důvod, proč jste ještě neaktualizovali, rádi bychom věděli, co vás drží na zastaralé verzi! Zastavte se na našem discordu a dejte nám vědět, co vám brání v aktualizaci."
},
"book-line-overlay": {

View File

@ -7,7 +7,7 @@
"name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
},
"version": "0.7.14.15"
"version": "0.7.14.16"
},
"servers": [
{