diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index c7910d2192..6e181428ec 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -1,14 +1,22 @@
{
- "title": "DSpace",
- "nav": {
- "home": "Home"
- },
"example": {
"with": {
"data": "{{greeting}}, {{recipient}}!"
}
},
+ "footer": {
+ "copyright": "copyright © 2002-{{ year }}",
+ "link.dspace": "DSpace software",
+ "link.duraspace": "DuraSpace"
+ },
+
+ "nav": {
+ "home": "Home"
+ },
+
+ "title": "DSpace",
+
"404": {
"help": "We can't find the page you're looking for. The page may have been moved or deleted. You can use the button below to get back to the home page. ",
"page-not-found": "page not found",
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 7db769997d..3fb7748dd6 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,11 +1,17 @@
-
+
+
+
-
-
- {{ 'example.with.data' | translate:data }}
- {{ example }}
- development
- production
-
-
+
+
+
{{ 'example.with.data' | translate:data }}
+
{{ example }}
+
development
+
production
+
+
+
+
+
+
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index bdca6b73b2..db23a4c263 100755
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,6 +1,7 @@
import { NgModule } from '@angular/core';
-import { HomeModule } from './home/home.module';
+import { CoreModule } from './core/core.module';
+import { HomeModule } from './home/home.module';
import { SharedModule } from './shared/shared.module';
@@ -24,6 +25,7 @@ import { effects } from './app.effects';
],
imports: [
SharedModule,
+ CoreModule,
HomeModule,
AppRoutingModule,
/**
@@ -55,6 +57,7 @@ import { effects } from './app.effects';
effects
],
+ exports: [SharedModule],
providers: [
]
})
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
new file mode 100644
index 0000000000..2d7a39562e
--- /dev/null
+++ b/src/app/core/core.module.ts
@@ -0,0 +1,18 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+import { SharedModule } from '../shared/shared.module';
+
+import { FooterComponent } from './footer/footer.component';
+
+@NgModule({
+ imports: [
+ CommonModule, // we use ngFor
+ SharedModule
+ ],
+ exports: [FooterComponent],
+ declarations: [FooterComponent],
+ providers: []
+})
+
+export class CoreModule { }
diff --git a/src/app/core/footer/footer.component.html b/src/app/core/footer/footer.component.html
new file mode 100644
index 0000000000..c7f41a07a3
--- /dev/null
+++ b/src/app/core/footer/footer.component.html
@@ -0,0 +1,9 @@
+
diff --git a/src/app/core/footer/footer.component.scss b/src/app/core/footer/footer.component.scss
new file mode 100644
index 0000000000..7bf635070e
--- /dev/null
+++ b/src/app/core/footer/footer.component.scss
@@ -0,0 +1,11 @@
+@import '../../../styles/variables.scss';
+
+.footer {
+ /* just for demo */
+ background-color: #F8F8F8;
+ border-top: 1px solid #E7E7E7;
+ text-align:center;
+ padding:20px;
+ /* just for demo */
+
+}
diff --git a/src/app/core/footer/footer.component.spec.ts b/src/app/core/footer/footer.component.spec.ts
new file mode 100644
index 0000000000..1a4b26510b
--- /dev/null
+++ b/src/app/core/footer/footer.component.spec.ts
@@ -0,0 +1,60 @@
+// ... test imports
+import {
+ async,
+ ComponentFixture,
+ inject,
+ TestBed
+} from '@angular/core/testing';
+import {
+ CUSTOM_ELEMENTS_SCHEMA,
+ DebugElement
+} from "@angular/core";
+import { By } from '@angular/platform-browser';
+import { TranslateModule, TranslateLoader } from "ng2-translate";
+import { Store, StoreModule } from "@ngrx/store";
+
+// Load the implementations that should be tested
+import { FooterComponent } from './footer.component';
+
+import { CommonModule } from '@angular/common';
+import { MockTranslateLoader } from "../../shared/testing/mock-translate-loader";
+
+let comp: FooterComponent;
+let fixture: ComponentFixture
;
+let de: DebugElement;
+let el: HTMLElement;
+
+describe('Footer component', () => {
+
+ // async beforeEach
+ beforeEach(async(() => {
+ return TestBed.configureTestingModule({
+ imports: [CommonModule, StoreModule.provideStore({}), TranslateModule.forRoot({
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ })],
+ declarations: [FooterComponent], // declare the test component
+ providers: [
+ FooterComponent
+ ],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+ })
+ }));
+
+ // synchronous beforeEach
+ beforeEach(() => {
+ fixture = TestBed.createComponent(FooterComponent);
+
+ comp = fixture.componentInstance; // component test instance
+
+ // query for the title by CSS element selector
+ de = fixture.debugElement.query(By.css('p'));
+ el = de.nativeElement;
+ });
+
+ it('should create footer', inject([FooterComponent], (app: FooterComponent) => {
+ // Perform test using fixture and service
+ expect(app).toBeTruthy();
+ }));
+
+});
diff --git a/src/app/core/footer/footer.component.ts b/src/app/core/footer/footer.component.ts
new file mode 100644
index 0000000000..ef94f48ccd
--- /dev/null
+++ b/src/app/core/footer/footer.component.ts
@@ -0,0 +1,18 @@
+import { Component, OnInit } from "@angular/core";
+
+@Component({
+ selector: 'ds-footer',
+ styleUrls: ['footer.component.css'],
+ templateUrl: 'footer.component.html'
+})
+export class FooterComponent implements OnInit {
+
+ dateObj: number = Date.now();
+
+ constructor() {
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/styles/main.scss b/src/styles/main.scss
index a150af617b..4b7fd3bf1a 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -8,3 +8,22 @@ html {
position: relative;
min-height: 100%;
}
+
+// Sticky Footer
+
+.outer-wrapper {
+ display: flex;
+ margin: 0;
+}
+
+.inner-wrapper {
+ flex: 1 1 auto;
+ flex-flow: column nowrap;
+ display: flex;
+ min-height: 100vh;
+ flex-direction: column;
+}
+
+.main-content {
+ flex: 1 0 auto;
+}