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