mirror of https://github.com/ghostfolio/ghostfolio
5 changed files with 158 additions and 224 deletions
@ -1,183 +1,181 @@ |
|||||
<footer class="justify-content-center overflow-hidden py-4 w-100"> |
<div class="container"> |
||||
<div class="container"> |
<div class="mb-3 row"> |
||||
<div class="mb-3 row"> |
<div class="col-sm"> |
||||
<div class="col-sm"> |
<a [routerLink]="['/']"><gf-logo /></a> |
||||
<a [routerLink]="['/']"><gf-logo /></a> |
</div> |
||||
</div> |
<div class="col-sm"> |
||||
<div class="col-sm"> |
<div class="h6 mt-2" i18n>Personal Finance</div> |
||||
<div class="h6 mt-2" i18n>Personal Finance</div> |
<ul class="list-unstyled"> |
||||
<ul class="list-unstyled"> |
@if (hasPermissionToAccessFearAndGreedIndex) { |
||||
@if (hasPermissionToAccessFearAndGreedIndex) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkMarkets">Markets</a> |
|
||||
</li> |
|
||||
} |
|
||||
<li><a i18n [routerLink]="routerLinkResources">Resources</a></li> |
|
||||
</ul> |
|
||||
</div> |
|
||||
<div class="col-sm"> |
|
||||
<div class="h6 mt-2">Ghostfolio</div> |
|
||||
<ul class="list-unstyled"> |
|
||||
<li><a i18n [routerLink]="routerLinkAbout">About</a></li> |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkBlog">Blog</a> |
|
||||
</li> |
|
||||
} |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkAboutChangelog">Changelog</a> |
|
||||
</li> |
|
||||
<li><a i18n [routerLink]="routerLinkFeatures">Features</a></li> |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkFaq" |
|
||||
>Frequently Asked Questions (FAQ)</a |
|
||||
> |
|
||||
</li> |
|
||||
} |
|
||||
@if (!hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkAboutLicense">License</a> |
|
||||
</li> |
|
||||
} |
|
||||
@if (hasPermissionForStatistics) { |
|
||||
<li> |
|
||||
<a [routerLink]="routerLinkOpenStartup">Open Startup</a> |
|
||||
</li> |
|
||||
} |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkPricing">Pricing</a> |
|
||||
</li> |
|
||||
} |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkAboutPrivacyPolicy" |
|
||||
>Privacy Policy</a |
|
||||
> |
|
||||
</li> |
|
||||
} |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a i18n [routerLink]="routerLinkAboutTermsOfService" |
|
||||
>Terms of Service</a |
|
||||
> |
|
||||
</li> |
|
||||
} |
|
||||
@if (hasPermissionForSubscription) { |
|
||||
<li> |
|
||||
<a |
|
||||
class="align-items-baseline d-flex" |
|
||||
href="https://status.ghostfol.io" |
|
||||
target="_blank" |
|
||||
title="Ghostfolio Status" |
|
||||
>Status<ion-icon class="ml-1" name="open-outline" |
|
||||
/></a> |
|
||||
</li> |
|
||||
} |
|
||||
</ul> |
|
||||
</div> |
|
||||
<div class="col-sm"> |
|
||||
<div class="h6 mt-2" i18n>Community</div> |
|
||||
<ul class="list-unstyled"> |
|
||||
<li> |
|
||||
<a |
|
||||
class="align-items-baseline d-flex" |
|
||||
href="https://github.com/ghostfolio/ghostfolio" |
|
||||
target="_blank" |
|
||||
title="Find Ghostfolio on GitHub" |
|
||||
>GitHub<ion-icon class="ml-1" name="open-outline" |
|
||||
/></a> |
|
||||
</li> |
|
||||
<li> |
|
||||
<a |
|
||||
class="align-items-baseline d-flex" |
|
||||
href="https://linkedin.com/company/ghostfolio" |
|
||||
target="_blank" |
|
||||
title="Follow Ghostfolio on LinkedIn" |
|
||||
>LinkedIn<ion-icon class="ml-1" name="open-outline" |
|
||||
/></a> |
|
||||
</li> |
|
||||
<li> |
|
||||
<a |
|
||||
class="align-items-baseline d-flex" |
|
||||
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
|
||||
target="_blank" |
|
||||
title="Join the Ghostfolio Slack community" |
|
||||
>Slack<ion-icon class="ml-1" name="open-outline" |
|
||||
/></a> |
|
||||
</li> |
|
||||
<li> |
<li> |
||||
<a |
<a i18n [routerLink]="routerLinkMarkets">Markets</a> |
||||
class="align-items-baseline d-flex" |
|
||||
href="https://x.com/ghostfolio_" |
|
||||
target="_blank" |
|
||||
title="Follow Ghostfolio on X (formerly Twitter)" |
|
||||
>X (formerly Twitter)<ion-icon class="ml-1" name="open-outline" |
|
||||
/></a> |
|
||||
</li> |
</li> |
||||
<li> </li> |
} |
||||
<!-- |
<li><a i18n [routerLink]="routerLinkResources">Resources</a></li> |
||||
<li> |
</ul> |
||||
<a href="../ca" title="Ghostfolio en català">Català</a> |
</div> |
||||
</li> |
<div class="col-sm"> |
||||
--> |
<div class="h6 mt-2">Ghostfolio</div> |
||||
|
<ul class="list-unstyled"> |
||||
|
<li><a i18n [routerLink]="routerLinkAbout">About</a></li> |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../zh" title="Ghostfolio in Chinese">Chinese</a> |
<a i18n [routerLink]="routerLinkBlog">Blog</a> |
||||
</li> |
</li> |
||||
|
} |
||||
|
<li> |
||||
|
<a i18n [routerLink]="routerLinkAboutChangelog">Changelog</a> |
||||
|
</li> |
||||
|
<li><a i18n [routerLink]="routerLinkFeatures">Features</a></li> |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../de" title="Ghostfolio in Deutsch">Deutsch</a> |
<a i18n [routerLink]="routerLinkFaq" |
||||
|
>Frequently Asked Questions (FAQ)</a |
||||
|
> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (!hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../en" title="Ghostfolio in English">English</a> |
<a i18n [routerLink]="routerLinkAboutLicense">License</a> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (hasPermissionForStatistics) { |
||||
<li> |
<li> |
||||
<a href="../es" title="Ghostfolio in Español">Español</a> |
<a [routerLink]="routerLinkOpenStartup">Open Startup</a> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../fr" title="Ghostfolio en Français">Français</a> |
<a i18n [routerLink]="routerLinkPricing">Pricing</a> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../it" title="Ghostfolio in Italiano">Italiano</a> |
<a i18n [routerLink]="routerLinkAboutPrivacyPolicy" |
||||
|
>Privacy Policy</a |
||||
|
> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../nl" title="Ghostfolio in Nederlands">Nederlands</a> |
<a i18n [routerLink]="routerLinkAboutTermsOfService" |
||||
|
>Terms of Service</a |
||||
|
> |
||||
</li> |
</li> |
||||
|
} |
||||
|
@if (hasPermissionForSubscription) { |
||||
<li> |
<li> |
||||
<a href="../pl" title="Ghostfolio in Polski">Polski</a> |
<a |
||||
|
class="align-items-baseline d-flex" |
||||
|
href="https://status.ghostfol.io" |
||||
|
target="_blank" |
||||
|
title="Ghostfolio Status" |
||||
|
>Status<ion-icon class="ml-1" name="open-outline" |
||||
|
/></a> |
||||
</li> |
</li> |
||||
|
} |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="col-sm"> |
||||
|
<div class="h6 mt-2" i18n>Community</div> |
||||
|
<ul class="list-unstyled"> |
||||
|
<li> |
||||
|
<a |
||||
|
class="align-items-baseline d-flex" |
||||
|
href="https://github.com/ghostfolio/ghostfolio" |
||||
|
target="_blank" |
||||
|
title="Find Ghostfolio on GitHub" |
||||
|
>GitHub<ion-icon class="ml-1" name="open-outline" |
||||
|
/></a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a |
||||
|
class="align-items-baseline d-flex" |
||||
|
href="https://linkedin.com/company/ghostfolio" |
||||
|
target="_blank" |
||||
|
title="Follow Ghostfolio on LinkedIn" |
||||
|
>LinkedIn<ion-icon class="ml-1" name="open-outline" |
||||
|
/></a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a |
||||
|
class="align-items-baseline d-flex" |
||||
|
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
||||
|
target="_blank" |
||||
|
title="Join the Ghostfolio Slack community" |
||||
|
>Slack<ion-icon class="ml-1" name="open-outline" |
||||
|
/></a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a |
||||
|
class="align-items-baseline d-flex" |
||||
|
href="https://x.com/ghostfolio_" |
||||
|
target="_blank" |
||||
|
title="Follow Ghostfolio on X (formerly Twitter)" |
||||
|
>X (formerly Twitter)<ion-icon class="ml-1" name="open-outline" |
||||
|
/></a> |
||||
|
</li> |
||||
|
<li> </li> |
||||
|
<!-- |
||||
<li> |
<li> |
||||
<a href="../pt" title="Ghostfolio in Português">Português</a> |
<a href="../ca" title="Ghostfolio en català">Català</a> |
||||
</li> |
</li> |
||||
|
--> |
||||
|
<li> |
||||
|
<a href="../zh" title="Ghostfolio in Chinese">Chinese</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../de" title="Ghostfolio in Deutsch">Deutsch</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../en" title="Ghostfolio in English">English</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../es" title="Ghostfolio in Español">Español</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../fr" title="Ghostfolio en Français">Français</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../it" title="Ghostfolio in Italiano">Italiano</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../nl" title="Ghostfolio in Nederlands">Nederlands</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../pl" title="Ghostfolio in Polski">Polski</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../pt" title="Ghostfolio in Português">Português</a> |
||||
|
</li> |
||||
|
<li> |
||||
|
<a href="../tr" title="Ghostfolio in Türkçe">Türkçe</a> |
||||
|
</li> |
||||
|
<!-- |
||||
<li> |
<li> |
||||
<a href="../tr" title="Ghostfolio in Türkçe">Türkçe</a> |
<a href="../uk" title="Ghostfolio in Українська">Українська</a> |
||||
</li> |
</li> |
||||
<!-- |
--> |
||||
<li> |
</ul> |
||||
<a href="../uk" title="Ghostfolio in Українська">Українська</a> |
|
||||
</li> |
|
||||
--> |
|
||||
</ul> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="mb-2 row text-center"> |
|
||||
<div class="col"> |
|
||||
© 2021 - {{ currentYear }} |
|
||||
<a href="https://ghostfol.io">Ghostfolio</a> |
|
||||
</div> |
|
||||
</div> |
</div> |
||||
<div class="row text-center text-muted"> |
</div> |
||||
<div class="col"> |
<div class="mb-2 row text-center"> |
||||
<small class="d-block" i18n |
<div class="col"> |
||||
>The risk of loss in trading can be substantial. It is not advisable |
© 2021 - {{ currentYear }} |
||||
to invest money you may need in the short term.</small |
<a href="https://ghostfol.io">Ghostfolio</a> |
||||
> |
|
||||
</div> |
|
||||
</div> |
</div> |
||||
</div> |
</div> |
||||
<div class="container d-none d-md-block mt-5"> |
<div class="row text-center text-muted"> |
||||
<div class="row justify-content-center"> |
<div class="col"> |
||||
<div class="font-weight-bold line-height-1 logotype">Ghostfolio</div> |
<small class="d-block" i18n |
||||
|
>The risk of loss in trading can be substantial. It is not advisable to |
||||
|
invest money you may need in the short term.</small |
||||
|
> |
||||
</div> |
</div> |
||||
</div> |
</div> |
||||
</footer> |
</div> |
||||
|
<div class="container d-none d-md-block mt-5"> |
||||
|
<div class="row justify-content-center"> |
||||
|
<div class="font-weight-bold line-height-1 logotype">Ghostfolio</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|||||
@ -1,32 +0,0 @@ |
|||||
import { GfFooterComponent } from './footer.component'; |
|
||||
|
|
||||
// TODO: Fix Jest configuration for Ionic components
|
|
||||
describe.skip('GfFooterComponent', () => { |
|
||||
let component: GfFooterComponent; |
|
||||
|
|
||||
beforeEach(() => { |
|
||||
component = new GfFooterComponent(); |
|
||||
}); |
|
||||
|
|
||||
it('should create', () => { |
|
||||
expect(component).toBeTruthy(); |
|
||||
}); |
|
||||
|
|
||||
it('should have current year property', () => { |
|
||||
expect(component.currentYear).toBe(new Date().getFullYear()); |
|
||||
}); |
|
||||
|
|
||||
it('should have router links defined', () => { |
|
||||
expect(component.routerLinkAbout).toBeDefined(); |
|
||||
expect(component.routerLinkFeatures).toBeDefined(); |
|
||||
expect(component.routerLinkResources).toBeDefined(); |
|
||||
}); |
|
||||
|
|
||||
it('should initialize permission properties', () => { |
|
||||
component.ngOnChanges(); |
|
||||
|
|
||||
expect(component.hasPermissionForStatistics).toBeDefined(); |
|
||||
expect(component.hasPermissionForSubscription).toBeDefined(); |
|
||||
expect(component.hasPermissionToAccessFearAndGreedIndex).toBeDefined(); |
|
||||
}); |
|
||||
}); |
|
||||
Loading…
Reference in new issue