Skip to content

Commit 5cf389a

Browse files
committed
Merge branch 'main' into multiple-pagination
2 parents 5fd06d9 + d453105 commit 5cf389a

File tree

146 files changed

+3445
-3134
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+3445
-3134
lines changed

.github/workflows/docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
# Use the reusable-docker-build.yml script from DSpace/DSpace repo to build our Docker image
2929
uses: DSpace/DSpace/.github/workflows/reusable-docker-build.yml@main
3030
with:
31-
build_id: dspace-angular
31+
build_id: dspace-angular-dev
3232
image_name: dspace/dspace-angular
3333
dockerfile_path: ./Dockerfile
3434
secrets:

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/.angular/cache
2+
/.nx
23
/__build__
34
/__server_build__
45
/node_modules

angular.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,22 +109,22 @@
109109
"serve": {
110110
"builder": "@angular-builders/custom-webpack:dev-server",
111111
"options": {
112-
"browserTarget": "dspace-angular:build",
112+
"buildTarget": "dspace-angular:build",
113113
"port": 4000
114114
},
115115
"configurations": {
116116
"development": {
117-
"browserTarget": "dspace-angular:build:development"
117+
"buildTarget": "dspace-angular:build:development"
118118
},
119119
"production": {
120-
"browserTarget": "dspace-angular:build:production"
120+
"buildTarget": "dspace-angular:build:production"
121121
}
122122
}
123123
},
124124
"extract-i18n": {
125125
"builder": "@angular-devkit/build-angular:extract-i18n",
126126
"options": {
127-
"browserTarget": "dspace-angular:build"
127+
"buildTarget": "dspace-angular:build"
128128
}
129129
},
130130
"test": {
@@ -217,23 +217,23 @@
217217
}
218218
},
219219
"serve-ssr": {
220-
"builder": "@nguniversal/builders:ssr-dev-server",
220+
"builder": "@angular-devkit/build-angular:ssr-dev-server",
221221
"options": {
222-
"browserTarget": "dspace-angular:build",
222+
"buildTarget": "dspace-angular:build",
223223
"serverTarget": "dspace-angular:server",
224224
"port": 4000
225225
},
226226
"configurations": {
227227
"production": {
228-
"browserTarget": "dspace-angular:build:production",
228+
"buildTarget": "dspace-angular:build:production",
229229
"serverTarget": "dspace-angular:server:production"
230230
}
231231
}
232232
},
233233
"prerender": {
234-
"builder": "@nguniversal/builders:prerender",
234+
"builder": "@angular-devkit/build-angular:prerender",
235235
"options": {
236-
"browserTarget": "dspace-angular:build:production",
236+
"buildTarget": "dspace-angular:build:production",
237237
"serverTarget": "dspace-angular:server:production",
238238
"routes": [
239239
"/"

config/config.example.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,10 +407,11 @@ mediaViewer:
407407

408408
# Whether the end user agreement is required before users use the repository.
409409
# If enabled, the user will be required to accept the agreement before they can use the repository.
410-
# And whether the privacy statement should exist or not.
410+
# And whether the privacy statement/COAR notify support page should exist or not.
411411
info:
412412
enableEndUserAgreement: true
413413
enablePrivacyStatement: true
414+
enableCOARNotifySupport: true
414415

415416
# Whether to enable Markdown (https://commonmark.org/) and MathJax (https://www.mathjax.org/)
416417
# display in supported metadata fields. By default, only dc.description.abstract is supported.

cypress/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
"**/*.ts"
55
],
66
"compilerOptions": {
7+
"sourceMap": false,
78
"types": [
89
"cypress",
910
"cypress-axe",
1011
"node"
1112
]
1213
}
13-
}
14+
}

docker/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ the Docker compose scripts in this 'docker' folder.
2020

2121
### Dockerfile
2222

23-
This Dockerfile is used to build a *development* DSpace 7 Angular UI image, published as 'dspace/dspace-angular'
23+
This Dockerfile is used to build a *development* DSpace Angular UI image, published as 'dspace/dspace-angular'
2424

2525
```
2626
docker build -t dspace/dspace-angular:latest .
@@ -46,11 +46,11 @@ A default/demo version of this image is built *automatically*.
4646

4747
## 'docker' directory
4848
- docker-compose.yml
49-
- Starts DSpace Angular with Docker Compose from the current branch. This file assumes that a DSpace 7 REST instance will also be started in Docker.
49+
- Starts DSpace Angular with Docker Compose from the current branch. This file assumes that a DSpace REST instance will also be started in Docker.
5050
- docker-compose-rest.yml
51-
- Runs a published instance of the DSpace 7 REST API - persists data in Docker volumes
51+
- Runs a published instance of the DSpace REST API - persists data in Docker volumes
5252
- docker-compose-ci.yml
53-
- Runs a published instance of the DSpace 7 REST API for CI testing. The database is re-populated from a SQL dump on each startup.
53+
- Runs a published instance of the DSpace REST API for CI testing. The database is re-populated from a SQL dump on each startup.
5454
- cli.yml
5555
- Docker compose file that provides a DSpace CLI container to work with a running DSpace REST container.
5656
- cli.assetstore.yml
@@ -71,7 +71,7 @@ docker-compose -f docker/docker-compose.yml build
7171

7272
This command provides a quick way to start both the frontend & backend from this single codebase
7373
```
74-
docker-compose -p d7 -f docker/docker-compose.yml -f docker/docker-compose-rest.yml up -d
74+
docker-compose -p d8 -f docker/docker-compose.yml -f docker/docker-compose-rest.yml up -d
7575
```
7676

7777
Keep in mind, you may also start the backend by cloning the 'DSpace/DSpace' GitHub repository separately. See the next section.
@@ -86,14 +86,14 @@ _The system will be started in 2 steps. Each step shares the same docker network
8686

8787
From 'DSpace/DSpace' clone (build first as needed):
8888
```
89-
docker-compose -p d7 up -d
89+
docker-compose -p d8 up -d
9090
```
9191

9292
NOTE: More detailed instructions on starting the backend via Docker can be found in the [Docker Compose instructions for the Backend](https://github.com/DSpace/DSpace/blob/main/dspace/src/main/docker-compose/README.md).
9393

9494
From 'DSpace/dspace-angular' clone (build first as needed)
9595
```
96-
docker-compose -p d7 -f docker/docker-compose.yml up -d
96+
docker-compose -p d8 -f docker/docker-compose.yml up -d
9797
```
9898

9999
At this point, you should be able to access the UI from http://localhost:4000,
@@ -107,38 +107,38 @@ This allows you to run the Angular UI in *production* mode, pointing it at the d
107107
```
108108
docker-compose -f docker/docker-compose-dist.yml pull
109109
docker-compose -f docker/docker-compose-dist.yml build
110-
docker-compose -p d7 -f docker/docker-compose-dist.yml up -d
110+
docker-compose -p d8 -f docker/docker-compose-dist.yml up -d
111111
```
112112

113113
## Ingest test data from AIPDIR
114114

115115
Create an administrator
116116
```
117-
docker-compose -p d7 -f docker/cli.yml run --rm dspace-cli create-administrator -e test@test.edu -f admin -l user -p admin -c en
117+
docker-compose -p d8 -f docker/cli.yml run --rm dspace-cli create-administrator -e test@test.edu -f admin -l user -p admin -c en
118118
```
119119

120120
Load content from AIP files
121121
```
122-
docker-compose -p d7 -f docker/cli.yml -f ./docker/cli.ingest.yml run --rm dspace-cli
122+
docker-compose -p d8 -f docker/cli.yml -f ./docker/cli.ingest.yml run --rm dspace-cli
123123
```
124124

125125
## Alternative Ingest - Use Entities dataset
126126
_Delete your docker volumes or use a unique project (-p) name_
127127

128128
Start DSpace with Database Content from a database dump
129129
```
130-
docker-compose -p d7 -f docker/docker-compose.yml -f docker/docker-compose-rest.yml -f docker/db.entities.yml up -d
130+
docker-compose -p d8 -f docker/docker-compose.yml -f docker/docker-compose-rest.yml -f docker/db.entities.yml up -d
131131
```
132132

133133
Load assetstore content and trigger a re-index of the repository
134134
```
135-
docker-compose -p d7 -f docker/cli.yml -f docker/cli.assetstore.yml run --rm dspace-cli
135+
docker-compose -p d8 -f docker/cli.yml -f docker/cli.assetstore.yml run --rm dspace-cli
136136
```
137137

138138
## End to end testing of the REST API (runs in GitHub Actions CI).
139139
_In this instance, only the REST api runs in Docker using the Entities dataset. GitHub Actions will perform CI testing of Angular using Node to drive the tests. See `.github/workflows/build.yml` for more details._
140140

141141
This command is only really useful for testing our Continuous Integration process.
142142
```
143-
docker-compose -p d7ci -f docker/docker-compose-ci.yml up -d
143+
docker-compose -p d8ci -f docker/docker-compose-ci.yml up -d
144144
```

docker/docker-compose-ci.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ services:
3333
# Tell Statistics to commit all views immediately instead of waiting on Solr's autocommit.
3434
# This allows us to generate statistics in e2e tests so that statistics pages can be tested thoroughly.
3535
solr__D__statistics__P__autoCommit: 'false'
36+
LOGGING_CONFIG: /dspace/config/log4j2-container.xml
3637
image: "${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-latest-test}"
3738
depends_on:
3839
- dspacedb
@@ -60,15 +61,19 @@ services:
6061
# NOTE: This is customized to use our loadsql image, so that we are using a database with existing test data
6162
dspacedb:
6263
container_name: dspacedb
64+
image: "${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest-loadsql}"
6365
environment:
6466
# This LOADSQL should be kept in sync with the LOADSQL in
6567
# https://github.com/DSpace/DSpace/blob/main/dspace/src/main/docker-compose/db.entities.yml
6668
# This SQL is available from https://github.com/DSpace-Labs/AIP-Files/releases/tag/demo-entities-data
6769
LOADSQL: https://github.com/DSpace-Labs/AIP-Files/releases/download/demo-entities-data/dspace7-entities-data.sql
6870
PGDATA: /pgdata
69-
image: dspace/dspace-postgres-pgcrypto:loadsql
71+
POSTGRES_PASSWORD: dspace
7072
networks:
7173
- dspacenet
74+
ports:
75+
- published: 5432
76+
target: 5432
7277
stdin_open: true
7378
tty: true
7479
volumes:
@@ -105,6 +110,8 @@ services:
105110
cp -r /opt/solr/server/solr/configsets/statistics/* statistics
106111
precreate-core qaevent /opt/solr/server/solr/configsets/qaevent
107112
cp -r /opt/solr/server/solr/configsets/qaevent/* qaevent
113+
precreate-core suggestion /opt/solr/server/solr/configsets/suggestion
114+
cp -r /opt/solr/server/solr/configsets/suggestion/* suggestion
108115
exec solr -f
109116
volumes:
110117
assetstore:

docker/docker-compose-rest.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ services:
2929
# __D__ => "-" (e.g. google__D__metadata => google-metadata)
3030
# dspace.dir, dspace.server.url, dspace.ui.url and dspace.name
3131
dspace__P__dir: /dspace
32-
dspace__P__server__P__url: http://localhost:8080/server
33-
dspace__P__ui__P__url: http://localhost:4000
32+
# Uncomment to set a non-default value for dspace.server.url or dspace.ui.url
33+
# dspace__P__server__P__url: http://localhost:8080/server
34+
# dspace__P__ui__P__url: http://localhost:4000
3435
dspace__P__name: 'DSpace Started with Docker Compose'
3536
# db.url: Ensure we are using the 'dspacedb' image for our database
3637
db__P__url: 'jdbc:postgresql://dspacedb:5432/dspace'
@@ -39,6 +40,7 @@ services:
3940
# proxies.trusted.ipranges: This setting is required for a REST API running in Docker to trust requests
4041
# from the host machine. This IP range MUST correspond to the 'dspacenet' subnet defined above.
4142
proxies__P__trusted__P__ipranges: '172.23.0'
43+
LOGGING_CONFIG: /dspace/config/log4j2-container.xml
4244
image: "${DOCKER_OWNER:-dspace}/dspace:${DSPACE_VER:-latest-test}"
4345
depends_on:
4446
- dspacedb
@@ -50,6 +52,7 @@ services:
5052
stdin_open: true
5153
tty: true
5254
volumes:
55+
# Keep DSpace assetstore directory between reboots
5356
- assetstore:/dspace/assetstore
5457
# Ensure that the database is ready BEFORE starting tomcat
5558
# 1. While a TCP connection to dspacedb port 5432 is not available, continue to sleep
@@ -65,9 +68,11 @@ services:
6568
# DSpace database container
6669
dspacedb:
6770
container_name: dspacedb
71+
# Uses a custom Postgres image with pgcrypto installed
72+
image: "${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest}"
6873
environment:
6974
PGDATA: /pgdata
70-
image: "${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest}"
75+
POSTGRES_PASSWORD: dspace
7176
networks:
7277
- dspacenet
7378
ports:
@@ -113,6 +118,8 @@ services:
113118
cp -r /opt/solr/server/solr/configsets/statistics/* statistics
114119
precreate-core qaevent /opt/solr/server/solr/configsets/qaevent
115120
cp -r /opt/solr/server/solr/configsets/qaevent/* qaevent
121+
precreate-core suggestion /opt/solr/server/solr/configsets/suggestion
122+
cp -r /opt/solr/server/solr/configsets/suggestion/* suggestion
116123
exec solr -f
117124
volumes:
118125
assetstore:

package.json

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,28 @@
5555
"ts-node": "10.2.1"
5656
},
5757
"dependencies": {
58-
"@angular/animations": "^16.2.12",
59-
"@angular/cdk": "^16.2.12",
60-
"@angular/common": "^16.2.12",
61-
"@angular/compiler": "^16.2.12",
62-
"@angular/core": "^16.2.12",
63-
"@angular/forms": "^16.2.12",
64-
"@angular/localize": "16.2.12",
65-
"@angular/platform-browser": "^16.2.12",
66-
"@angular/platform-browser-dynamic": "^16.2.12",
67-
"@angular/platform-server": "^16.2.12",
68-
"@angular/router": "^16.2.12",
58+
"@angular/animations": "^17.3.4",
59+
"@angular/cdk": "^17.3.4",
60+
"@angular/common": "^17.3.4",
61+
"@angular/compiler": "^17.3.4",
62+
"@angular/core": "^17.3.4",
63+
"@angular/forms": "^17.3.4",
64+
"@angular/localize": "17.3.4",
65+
"@angular/platform-browser": "^17.3.4",
66+
"@angular/platform-browser-dynamic": "^17.3.4",
67+
"@angular/platform-server": "^17.3.4",
68+
"@angular/router": "^17.3.4",
69+
"@angular/ssr": "^17.3.0",
6970
"@babel/runtime": "7.21.0",
7071
"@kolkov/ngx-gallery": "^2.0.1",
7172
"@material-ui/core": "^4.11.0",
7273
"@material-ui/icons": "^4.11.3",
7374
"@ng-bootstrap/ng-bootstrap": "^11.0.0",
7475
"@ng-dynamic-forms/core": "^16.0.0",
7576
"@ng-dynamic-forms/ui-ng-bootstrap": "^16.0.0",
76-
"@ngrx/effects": "^16.3.0",
77-
"@ngrx/router-store": "^16.3.0",
78-
"@ngrx/store": "^16.3.0",
79-
"@nguniversal/express-engine": "^16.2.0",
77+
"@ngrx/effects": "^17.1.1",
78+
"@ngrx/router-store": "^17.1.1",
79+
"@ngrx/store": "^17.1.1",
8080
"@ngx-translate/core": "^14.0.0",
8181
"@nicky-lenaers/ngx-scroll-to": "^14.0.0",
8282
"@types/grecaptcha": "^3.0.4",
@@ -130,24 +130,23 @@
130130
"sortablejs": "1.15.0",
131131
"uuid": "^8.3.2",
132132
"webfontloader": "1.6.28",
133-
"zone.js": "~0.13.3"
133+
"zone.js": "~0.14.4"
134134
},
135135
"devDependencies": {
136-
"@angular-builders/custom-webpack": "~16.0.0",
137-
"@angular-devkit/build-angular": "^16.2.12",
138-
"@angular-eslint/builder": "16.3.1",
139-
"@angular-eslint/eslint-plugin": "16.3.1",
140-
"@angular-eslint/eslint-plugin-template": "16.3.1",
141-
"@angular-eslint/schematics": "16.3.1",
142-
"@angular-eslint/template-parser": "16.3.1",
143-
"@angular/cli": "^16.2.12",
144-
"@angular/compiler-cli": "^16.2.12",
145-
"@angular/language-service": "^16.2.12",
136+
"@angular-builders/custom-webpack": "~17.0.1",
137+
"@angular-devkit/build-angular": "^17.3.0",
138+
"@angular-eslint/builder": "17.2.1",
139+
"@angular-eslint/eslint-plugin": "17.2.1",
140+
"@angular-eslint/eslint-plugin-template": "17.2.1",
141+
"@angular-eslint/schematics": "17.2.1",
142+
"@angular-eslint/template-parser": "17.2.1",
143+
"@angular/cli": "^17.3.0",
144+
"@angular/compiler-cli": "^17.3.4",
145+
"@angular/language-service": "^17.3.4",
146146
"@cypress/schematic": "^1.5.0",
147147
"@fortawesome/fontawesome-free": "^6.4.0",
148-
"@ngrx/store-devtools": "^16.3.0",
148+
"@ngrx/store-devtools": "^17.1.1",
149149
"@ngtools/webpack": "^16.2.12",
150-
"@nguniversal/builders": "^16.2.0",
151150
"@types/deep-freeze": "0.1.2",
152151
"@types/ejs": "^3.1.2",
153152
"@types/express": "^4.17.17",
@@ -159,6 +158,7 @@
159158
"@typescript-eslint/eslint-plugin": "^5.59.1",
160159
"@typescript-eslint/parser": "^5.59.1",
161160
"axe-core": "^4.7.2",
161+
"browser-sync": "^3.0.0",
162162
"compression-webpack-plugin": "^9.2.0",
163163
"copy-webpack-plugin": "^6.4.1",
164164
"cross-env": "^7.0.3",
@@ -200,10 +200,10 @@
200200
"sass-loader": "^12.6.0",
201201
"sass-resources-loader": "^2.2.5",
202202
"ts-node": "^8.10.2",
203-
"typescript": "~4.9.3",
203+
"typescript": "~5.3.3",
204204
"webpack": "5.76.1",
205205
"webpack-bundle-analyzer": "^4.8.0",
206206
"webpack-cli": "^4.2.0",
207207
"webpack-dev-server": "^4.13.3"
208208
}
209-
}
209+
}

0 commit comments

Comments
 (0)