diff --git a/README.md b/README.md
index dd4fa20b90..e23949a325 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,10 @@ npm start
```
Then go to [http://localhost:3000](http://localhost:3000) in your browser
+NOTE: currently there's not much to see at that URL. We really do need your help. If you're interested in jumping in, and you've made it this far, please look at the [the project board (waffle.io)](https://waffle.io/DSpace/dspace-angular), grab a card, and get to work. Thanks!
+
+Not sure where to start? watch the training videos linked in the [Introduction to the technology](#introduction-to-the-technology) section below.
+
## Table of Contents
* [Introduction to the technology](#introduction-to-the-technology)
* [Requirements](#requirements)
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.component.scss b/src/app/app.component.scss
index 8b13789179..5a9b8df543 100644
--- a/src/app/app.component.scss
+++ b/src/app/app.component.scss
@@ -1 +1,18 @@
+// 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;
+}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 71bda6648e..e65c2a2c41 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';
@@ -15,7 +16,6 @@ import { StoreDevtoolsModule } from "@ngrx/store-devtools";
import { rootReducer } from './app.reducers';
import { effects } from './app.effects';
-import { CoreModule } from "./core/core.module";
@NgModule({
declarations: [
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index 3a688f53bd..724dc969fb 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -2,16 +2,19 @@ import { NgModule, Optional, SkipSelf, ModuleWithProviders } from '@angular/core
import { CommonModule } from '@angular/common';
import { SharedModule } from "../shared/shared.module";
import { isNotEmpty } from "../shared/empty.util";
+import { FooterComponent } from "./footer/footer.component";
const IMPORTS = [
CommonModule,
+ SharedModule
];
const DECLARATIONS = [
-
+ FooterComponent
];
const EXPORTS = [
+ FooterComponent
];
const PROVIDERS = [
@@ -33,7 +36,7 @@ export class CoreModule {
static forRoot(): ModuleWithProviders {
return {
- ngModule: SharedModule,
+ ngModule: CoreModule,
providers: [
...PROVIDERS
]
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..697d24b8e7
--- /dev/null
+++ b/src/app/core/footer/footer.component.scss
@@ -0,0 +1,17 @@
+@import '../../../styles/variables.scss';
+@import '../../../../node_modules/bootstrap/scss/_variables.scss';
+
+$footer-bg: $gray-lighter;
+$footer-border: 1px solid darken($footer-bg, 10%);
+$footer-padding: $spacer * 1.5;
+
+.footer {
+ background-color: $footer-bg;
+ border-top: $footer-border;
+ text-align:center;
+ padding: $footer-padding;
+
+ p {
+ margin: 0;
+ }
+}
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 {
+ }
+
+}