mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 18:14:17 +00:00
Merge branch 'master' into hal-serializer
This commit is contained in:
@@ -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)
|
||||
|
@@ -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",
|
||||
|
@@ -1,11 +1,17 @@
|
||||
<div class="outer-wrapper">
|
||||
<div class="inner-wrapper">
|
||||
<ds-header></ds-header>
|
||||
|
||||
<main class="main-content">
|
||||
<div class="container-fluid">
|
||||
<main>
|
||||
<p>{{ 'example.with.data' | translate:data }}</p>
|
||||
<p>{{ example }}</p>
|
||||
<h2 *ngIf="!env" style="color:green">development</h2>
|
||||
<h2 *ngIf="env" style="color:red">production</h2>
|
||||
<router-outlet></router-outlet>
|
||||
</main>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<ds-footer></ds-footer>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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: [
|
||||
|
@@ -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
|
||||
]
|
||||
|
9
src/app/core/footer/footer.component.html
Normal file
9
src/app/core/footer/footer.component.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<footer class="footer">
|
||||
<div class="container-fluid content-container-fluid">
|
||||
<p>
|
||||
<a href="http://www.dspace.org/">{{ 'footer.link.dspace' | translate}}</a>
|
||||
{{ 'footer.copyright' | translate:{year : dateObj | date:'y'} }}
|
||||
<a href="http://www.duraspace.org/">{{ 'footer.link.duraspace' | translate}}</a>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
17
src/app/core/footer/footer.component.scss
Normal file
17
src/app/core/footer/footer.component.scss
Normal file
@@ -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;
|
||||
}
|
||||
}
|
60
src/app/core/footer/footer.component.spec.ts
Normal file
60
src/app/core/footer/footer.component.spec.ts
Normal file
@@ -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<FooterComponent>;
|
||||
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 <p> 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();
|
||||
}));
|
||||
|
||||
});
|
18
src/app/core/footer/footer.component.ts
Normal file
18
src/app/core/footer/footer.component.ts
Normal file
@@ -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 {
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user