diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8e3613acae2..9c637079991 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,9 +38,10 @@ jobs: NODE_OPTIONS: '--max-old-space-size=4096' # Project name to use when running "docker compose" prior to e2e tests COMPOSE_PROJECT_NAME: 'ci' - # Docker Registry to use for Docker compose scripts below. - # We use GitHub's Container Registry to avoid aggressive rate limits at DockerHub. - DOCKER_REGISTRY: ghcr.io + # Docker images: uses upstream DSpace images from DockerHub (docker.io/dspace/*). + # Upstream CI uses GHCR (ghcr.io) which requires authentication via GITHUB_TOKEN. + # This fork uses the default DockerHub registry instead (no auth needed). + # DOCKER_REGISTRY: ghcr.io strategy: # Create a matrix of Node versions to test against (in parallel) matrix: @@ -112,21 +113,18 @@ jobs: # Upload code coverage report to artifact (for one version of Node only), # so that it can be shared with the 'codecov' job (see below) # NOTE: Angular CLI only supports code coverage for specs. See https://github.com/angular/angular-cli/issues/6286 + # NOTE: Coverage is disabled in CI due to Chrome OOM, so this step will be skipped - name: Upload code coverage report to Artifact uses: actions/upload-artifact@v4 if: matrix.node-version == '18.x' with: name: coverage-report-${{ matrix.node-version }} path: 'coverage/dspace-angular/lcov.info' + if-no-files-found: ignore retention-days: 14 - # Login to our Docker registry, so that we can access private Docker images using "docker compose" below. - - name: Login to ${{ env.DOCKER_REGISTRY }} - uses: docker/login-action@v3 - with: - registry: ${{ env.DOCKER_REGISTRY }} - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} + # DataShare fork: DockerHub images are public, no login needed. + # Upstream uses GHCR login here, but those images are private to the DSpace org. # Using "docker compose" start backend using CI configuration # and load assetstore from a cached copy @@ -189,14 +187,14 @@ jobs: done echo "App started successfully." - # Get homepage and verify that the tag includes "DSpace". + # Get homepage and verify that the tag includes "DataShare". # If it does, then SSR is working, as this tag is created by our MetadataService. # This step also prints entire HTML of homepage for easier debugging if grep fails. - name: Verify SSR (server-side rendering) on Homepage run: | result=$(wget -O- -q http://127.0.0.1:4000/home) echo "$result" - echo "$result" | grep -oE "]*>" | grep DSpace + echo "$result" | grep -oE "]*>" | grep DataShare # Get a specific community in our test data and verify that the "
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
We care about data privacy and security. Please review our Privacy Policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use.
+We care about data privacy and security. Please review our Privacy Policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use.
Please be advised the Site is hosted in {{ 'info.end-user-agreement.hosting-country' | translate }}. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in {{ 'info.end-user-agreement.hosting-country' | translate }}, then through your continued use of the Site, you are transferring your data to {{ 'info.end-user-agreement.hosting-country' | translate }}, and you agree to have your data transferred to and processed in {{ 'info.end-user-agreement.hosting-country' | translate }}.
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
-[a] The DSpace software used to run this site is open source. Options for reuse and reproduction of the DSpace software is governed by its open source license: https://github.com/DSpace/DSpace/blob/main/LICENSE
\ No newline at end of file +[a] The DSpace software used to run this site is open source. Options for reuse and reproduction of the DSpace software is governed by its open source license: https://github.com/DSpace/DSpace/blob/main/LICENSE
\ No newline at end of file diff --git a/src/app/info/info-routes.ts b/src/app/info/info-routes.ts index 39a441cf8ee..e7ea804ca8b 100644 --- a/src/app/info/info-routes.ts +++ b/src/app/info/info-routes.ts @@ -8,27 +8,27 @@ import { i18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.reso import { notifyInfoGuard } from '../core/coar-notify/notify-info/notify-info.guard'; import { feedbackGuard } from '../core/feedback/feedback.guard'; import { hasValue } from '../shared/empty.util'; +// CUSTOMISED +import { ThemedAboutComponent } from './about/themed-about.component'; import { AccessibilitySettingsComponent } from './accessibility-settings/accessibility-settings.component'; +import { ThemedAccessibilityStatementComponent } from './accessibility-statement/themed-accessibility-statement.component'; +import { ThemedCopyrightComponent } from './copyright/themed-copyright.component'; import { ThemedEndUserAgreementComponent } from './end-user-agreement/themed-end-user-agreement.component'; import { ThemedFeedbackComponent } from './feedback/themed-feedback.component'; import { + ABOUT_PATH, ACCESSIBILITY_SETTINGS_PATH, + ACCESSIBILITY_STATEMENT_PATH, COAR_NOTIFY_SUPPORT, + COPYRIGHT_PATH, END_USER_AGREEMENT_PATH, FEEDBACK_PATH, + ORGANISED_PATH, PRIVACY_PATH, - ABOUT_PATH, - ACCESSIBILITY_STATEMENT_PATH, - COPYRIGHT_PATH, - ORGANISED_PATH } from './info-routing-paths'; import { NotifyInfoComponent } from './notify-info/notify-info.component'; -import { ThemedPrivacyComponent } from './privacy/themed-privacy.component'; -// CUSTOMISED -import { ThemedAboutComponent } from './about/themed-about.component'; -import { ThemedAccessibilityStatementComponent } from './accessibility-statement/themed-accessibility-statement.component'; -import { ThemedCopyrightComponent } from './copyright/themed-copyright.component'; import { ThemedOrganisedComponent } from './organised/themed-organised.component'; +import { ThemedPrivacyComponent } from './privacy/themed-privacy.component'; @@ -74,25 +74,25 @@ export const ROUTES: Routes = [ path: ABOUT_PATH, component: ThemedAboutComponent, resolve: { breadcrumb: i18nBreadcrumbResolver }, - data: { title: 'info.about.title', breadcrumbKey: 'info.about' } + data: { title: 'info.about.title', breadcrumbKey: 'info.about' }, }, { path: ACCESSIBILITY_STATEMENT_PATH, component: ThemedAccessibilityStatementComponent, resolve: { breadcrumb: i18nBreadcrumbResolver }, - data: { title: 'info.accessibility-statement.title', breadcrumbKey: 'info.accessibility-statement' } + data: { title: 'info.accessibility-statement.title', breadcrumbKey: 'info.accessibility-statement' }, }, { path: COPYRIGHT_PATH, component: ThemedCopyrightComponent, resolve: { breadcrumb: i18nBreadcrumbResolver }, - data: { title: 'info.copyright.title', breadcrumbKey: 'info.copyright' } + data: { title: 'info.copyright.title', breadcrumbKey: 'info.copyright' }, }, { path: ORGANISED_PATH, component: ThemedOrganisedComponent, resolve: { breadcrumb: i18nBreadcrumbResolver }, - data: { title: 'info.organised.title', breadcrumbKey: 'info.organised' } - } + data: { title: 'info.organised.title', breadcrumbKey: 'info.organised' }, + }, ].filter((route: Route) => hasValue(route)); diff --git a/src/app/info/organised/organised.component.spec.ts b/src/app/info/organised/organised.component.spec.ts index 5eb31f92cca..1091eab6b42 100644 --- a/src/app/info/organised/organised.component.spec.ts +++ b/src/app/info/organised/organised.component.spec.ts @@ -1,7 +1,12 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { OrganisedComponent } from './organised.component'; -import { TranslateModule } from '@ngx-translate/core'; import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { + ComponentFixture, + TestBed, + waitForAsync, +} from '@angular/core/testing'; +import { TranslateModule } from '@ngx-translate/core'; + +import { OrganisedComponent } from './organised.component'; describe('OrganisedComponent', () => { let component: OrganisedComponent; @@ -9,9 +14,8 @@ describe('OrganisedComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot()], - declarations: [OrganisedComponent], - schemas: [NO_ERRORS_SCHEMA] + imports: [TranslateModule.forRoot(), OrganisedComponent], + schemas: [NO_ERRORS_SCHEMA], }).compileComponents(); })); diff --git a/src/app/info/organised/organised.component.ts b/src/app/info/organised/organised.component.ts index 427855b9a64..b3e7940c061 100644 --- a/src/app/info/organised/organised.component.ts +++ b/src/app/info/organised/organised.component.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; @Component({ - selector: 'ds-organised', + selector: 'ds-base-organised', templateUrl: './organised.component.html', styleUrls: ['./organised.component.scss'], standalone: true, diff --git a/src/app/info/organised/themed-organised.component.ts b/src/app/info/organised/themed-organised.component.ts index 28b93d2a647..5f55add10b8 100644 --- a/src/app/info/organised/themed-organised.component.ts +++ b/src/app/info/organised/themed-organised.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; + import { ThemedComponent } from '../../shared/theme-support/themed.component'; import { OrganisedComponent } from './organised.component'; @@ -6,11 +7,12 @@ import { OrganisedComponent } from './organised.component'; * Themed wrapper for Component */ @Component({ + // eslint-disable-next-line dspace-angular-ts/themed-component-selectors selector: 'ds-themed-organised', styleUrls: [], templateUrl: '../../shared/theme-support/themed.component.html', standalone: true, - imports: [OrganisedComponent] + imports: [OrganisedComponent], }) export class ThemedOrganisedComponent extends ThemedComponent
-
-
-
Edinburgh DataShare is a digital repository of research data produced
diff --git a/src/themes/datashare/app/home-page/home-news/home-news.component.ts b/src/themes/datashare/app/home-page/home-news/home-news.component.ts
index 1a00da208a0..98870e16fab 100644
--- a/src/themes/datashare/app/home-page/home-news/home-news.component.ts
+++ b/src/themes/datashare/app/home-page/home-news/home-news.component.ts
@@ -1,8 +1,7 @@
import { Component } from '@angular/core';
-import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component';
-import { DepositButtonComponent } from '../../datashare/deposit-button/deposit-button.component';
import { ThemedDepositButtonComponent } from '../../../../../app/datashare/deposit-button/themed-deposit-button.component';
+import { HomeNewsComponent as BaseComponent } from '../../../../../app/home-page/home-news/home-news.component';
@Component({
selector: 'ds-themed-home-news',
diff --git a/src/themes/datashare/app/info/about/about.component.ts b/src/themes/datashare/app/info/about/about.component.ts
index 562df2f172c..20a4298dc44 100644
--- a/src/themes/datashare/app/info/about/about.component.ts
+++ b/src/themes/datashare/app/info/about/about.component.ts
@@ -1,14 +1,15 @@
import { Component } from '@angular/core';
+
import { AboutComponent as BaseComponent } from '../../../../../app/info/about/about.component';
import { ThemedAboutComponent } from '../../../../../app/info/about/themed-about.component';
@Component({
- selector: 'ds-about',
+ selector: 'ds-themed-about',
styleUrls: ['./about.component.scss'],
templateUrl: './about.component.html',
standalone: true,
- imports: [ThemedAboutComponent]
+ imports: [ThemedAboutComponent],
})
diff --git a/src/themes/datashare/app/info/accessibility-statement/accessibility-statement.component.ts b/src/themes/datashare/app/info/accessibility-statement/accessibility-statement.component.ts
index aa7e2a25c09..bdcc1c84fd1 100644
--- a/src/themes/datashare/app/info/accessibility-statement/accessibility-statement.component.ts
+++ b/src/themes/datashare/app/info/accessibility-statement/accessibility-statement.component.ts
@@ -1,9 +1,10 @@
import { Component } from '@angular/core';
+
import { AccessibilityStatementComponent as BaseComponent } from '../../../../../app/info/accessibility-statement/accessibility-statement.component';
@Component({
- selector: 'ds-accessibility-statement',
+ selector: 'ds-themed-accessibility-statement',
styleUrls: ['./accessibility-statement.component.scss'],
templateUrl: './accessibility-statement.component.html',
standalone: true,
diff --git a/src/themes/datashare/app/info/copyright/copyright.component.ts b/src/themes/datashare/app/info/copyright/copyright.component.ts
index b72787ad1e8..29f94395c87 100644
--- a/src/themes/datashare/app/info/copyright/copyright.component.ts
+++ b/src/themes/datashare/app/info/copyright/copyright.component.ts
@@ -1,10 +1,11 @@
import { Component } from '@angular/core';
+
import { CopyrightComponent as BaseComponent } from '../../../../../app/info/copyright/copyright.component';
import { ThemedCopyrightComponent } from '../../../../../app/info/copyright/themed-copyright.component';
@Component({
- selector: 'ds-copyright',
+ selector: 'ds-themed-copyright',
styleUrls: ['./copyright.component.scss'],
templateUrl: './copyright.component.html',
standalone: true,
diff --git a/src/themes/datashare/app/info/organised/organised.component.ts b/src/themes/datashare/app/info/organised/organised.component.ts
index bd42b8b6f3c..57ebfd25d9b 100644
--- a/src/themes/datashare/app/info/organised/organised.component.ts
+++ b/src/themes/datashare/app/info/organised/organised.component.ts
@@ -1,14 +1,15 @@
import { Component } from '@angular/core';
+
import { OrganisedComponent as BaseComponent } from '../../../../../app/info/organised/organised.component';
import { ThemedOrganisedComponent } from '../../../../../app/info/organised/themed-organised.component';
@Component({
- selector: 'ds-organised',
+ selector: 'ds-themed-organised',
styleUrls: ['./organised.component.scss'],
templateUrl: './organised.component.html',
standalone: true,
- imports: [ThemedOrganisedComponent]
+ imports: [ThemedOrganisedComponent],
})
/**
diff --git a/src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.html b/src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.html
index cd68bdbbffe..efe3340df62 100644
--- a/src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.html
+++ b/src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.html
@@ -11,12 +11,12 @@