diff --git a/README.md b/README.md
index a241f72910..466e736de2 100644
--- a/README.md
+++ b/README.md
@@ -239,6 +239,7 @@ dspace-angular
├── config * Folder for configuration files
│ ├── environment.default.js * Default configuration files
│ └── environment.test.js * Test configuration files
+├── docs * Folder for documentation
├── e2e * Folder for e2e test files
│ ├── app.e2e-spec.ts *
│ ├── app.po.ts *
@@ -380,6 +381,11 @@ This project makes use of [`yarn`](https://yarnpkg.com/en/) to ensure that the e
As you can see above, using `yarn` commandline tools means that you should never need to modify the `package.json` manually. *We recommend always using `yarn` to keep dependencies updated / in sync.*
+Further Documentation
+---------------------
+
+See [`./docs`](docs) for further documentation.
+
Frequently asked questions
--------------------------
diff --git a/config/environment.default.js b/config/environment.default.js
index ad7be69b9e..9ec5c05a64 100644
--- a/config/environment.default.js
+++ b/config/environment.default.js
@@ -18,7 +18,8 @@ module.exports = {
// Caching settings
cache: {
// NOTE: how long should objects be cached for by default
- msToLive: 15 * 60 * 1000, // 15 minute
+ msToLive: 15 * 60 * 1000, // 15 minutes
+ // msToLive: 1000, // 15 minutes
control: 'max-age=60' // revalidate browser
},
// Angular Universal settings
@@ -27,6 +28,8 @@ module.exports = {
async: true,
time: false
},
+ // Google Analytics tracking id
+ gaTrackingId: '',
// Log directory
logDirectory: '.',
// NOTE: will log all redux actions and transfers in console
diff --git a/docs/Configuration.md b/docs/Configuration.md
new file mode 100644
index 0000000000..712b1523a0
--- /dev/null
+++ b/docs/Configuration.md
@@ -0,0 +1,10 @@
+# Configuration
+
+## Supporting analytics services other than Google Analytics
+This project makes use of [Angulartics](https://angulartics.github.io/angulartics2/) to track usage events and send them to Google Analytics.
+
+Angulartics can be configured to work with a number of other services besides Google Analytics as well, e.g. [Piwik](https://github.com/angulartics/angulartics2/tree/master/src/lib/providers/piwik), [Google Tag Manager](https://github.com/angulartics/angulartics2/tree/master/src/lib/providers/gtm), or [Azure Application Insights](https://azure.microsoft.com/en-us/services/application-insights/) to name a few.
+
+In order to start using one of these services, select it from the [Angulartics Providers page](https://angulartics.github.io/angulartics2/#providers), and follow the instructions on how to configure it.
+
+The Google Analytics script was added in [`main.browser.ts`](https://github.com/DSpace/dspace-angular/blob/ff04760f4af91ac3e7add5e7424a46cb2439e874/src/main.browser.ts#L33) instead of the `
` tag in `index.html` to ensure events get sent when the page is shown in a client's browser, and not when it's rendered on the universal server. Likely you'll want to do the same when adding a new service.
\ No newline at end of file
diff --git a/karma.conf.js b/karma.conf.js
index 073ce7040b..456c2ecd99 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -51,7 +51,7 @@ module.exports = function (config) {
*/
files: [{
pattern: './spec-bundle.js',
- watched: false
+ watched: false,
}],
/*
diff --git a/nodemon.json b/nodemon.json
index 00313fe368..107ae1a754 100644
--- a/nodemon.json
+++ b/nodemon.json
@@ -4,5 +4,6 @@
"config",
"src/index.html"
],
- "ext": "js ts json html"
+ "ext": "js ts json html",
+ "delay": "50"
}
diff --git a/package.json b/package.json
index f18b941e48..76c1f07a63 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"test:headless": "karma start --single-run --browsers ChromeHeadless",
"test:watch": "karma start --no-single-run --auto-watch",
"webdriver:start": "node node_modules/protractor/bin/webdriver-manager start --seleniumPort 4444",
- "webdriver:update": "node node_modules/protractor/bin/webdriver-manager update --standalone",
+ "webdriver:update": "node node_modules/protractor/bin/webdriver-manager update --standalone --gecko false",
"lint": "tslint \"src/**/*.ts\" && tslint \"e2e/**/*.ts\"",
"docs": "typedoc --options typedoc.json ./src/",
"coverage": "http-server -c-1 -o -p 9875 ./coverage"
@@ -87,6 +87,7 @@
"@ngx-translate/core": "9.1.1",
"@ngx-translate/http-loader": "2.0.1",
"angular-idle-preload": "2.0.4",
+ "angulartics2": "^5.2.0",
"body-parser": "1.18.2",
"bootstrap": "^4.0.0",
"cerialize": "0.1.18",
@@ -118,6 +119,7 @@
"@angular/compiler-cli": "^5.2.5",
"@ngrx/store-devtools": "^5.1.0",
"@ngtools/webpack": "^1.10.0",
+ "@types/acorn": "^4.0.3",
"@types/cookie-parser": "1.4.1",
"@types/deep-freeze": "0.1.1",
"@types/express": "^4.11.1",
diff --git a/resources/i18n/en.json b/resources/i18n/en.json
index 6a08009f8a..edd832d4bf 100644
--- a/resources/i18n/en.json
+++ b/resources/i18n/en.json
@@ -58,6 +58,10 @@
"detail": "{{ range }} of {{ total }}"
}
},
+ "sorting": {
+ "ASC": "Ascending",
+ "DESC": "Descending"
+ },
"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. ",
@@ -82,7 +86,8 @@
"search_dspace": "Search DSpace"
},
"results": {
- "head": "Search Results"
+ "head": "Search Results",
+ "no-results": "There were no results for this search"
},
"sidebar": {
"close": "Back to results",
@@ -119,9 +124,13 @@
"placeholder": "Subject",
"head": "Subject"
},
- "date": {
+ "dateIssued": {
"placeholder": "Date",
"head": "Date"
+ },
+ "has_content_in_original_bundle": {
+ "placeholder": "Has files",
+ "head": "Has files"
}
}
}
diff --git a/src/app/+collection-page/collection-page.component.ts b/src/app/+collection-page/collection-page.component.ts
index de7e9a72d4..4a935b73b9 100644
--- a/src/app/+collection-page/collection-page.component.ts
+++ b/src/app/+collection-page/collection-page.component.ts
@@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription';
-import { SortOptions } from '../core/cache/models/sort-options.model';
+import { SortDirection, SortOptions } from '../core/cache/models/sort-options.model';
import { CollectionDataService } from '../core/data/collection-data.service';
import { ItemDataService } from '../core/data/item-data.service';
import { PaginatedList } from '../core/data/paginated-list';
@@ -48,7 +48,7 @@ export class CollectionPageComponent implements OnInit, OnDestroy {
this.paginationConfig.id = 'collection-page-pagination';
this.paginationConfig.pageSize = 5;
this.paginationConfig.currentPage = 1;
- this.sortConfig = new SortOptions();
+ this.sortConfig = new SortOptions('dc.title', SortDirection.ASC);
}
ngOnInit(): void {
diff --git a/src/app/+community-page/community-page.component.html b/src/app/+community-page/community-page.component.html
index 82939e7743..976e1091e5 100644
--- a/src/app/+community-page/community-page.component.html
+++ b/src/app/+community-page/community-page.component.html
@@ -8,7 +8,7 @@
[logo]="(logoRDObs | async)?.payload"
[alternateText]="'Community Logo'">
-
+
@@ -24,7 +24,7 @@
[content]="communityPayload.copyrightText"
[hasInnerHtml]="true">
-
+
diff --git a/src/app/+community-page/sub-collection-list/community-page-sub-collection-list.component.html b/src/app/+community-page/sub-collection-list/community-page-sub-collection-list.component.html
index 8e2d04c5cd..b04e93ff71 100644
--- a/src/app/+community-page/sub-collection-list/community-page-sub-collection-list.component.html
+++ b/src/app/+community-page/sub-collection-list/community-page-sub-collection-list.component.html
@@ -2,7 +2,7 @@