diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 02fdc13b4d4..1b9f076d39e 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -105,7 +105,7 @@ jobs:
INSTANCE: ${{ env.INSTANCE }}
DATADIR: /opt/dspace-data/clarin-dspace/
- - name: dspace command
+ - name: dspace basic command
run: |
export DNAME=dspace$INSTANCE
docker logs -n 50 $DNAME
@@ -125,6 +125,9 @@ jobs:
echo "dspace checker:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace checker -v -l"
+ - name: dspace healthcheck
+ run: |
+ export DNAME=dspace$INSTANCE
echo "dspace healthcheck:"
docker exec $DNAME /bin/bash -c "cd /dspace/bin && ./dspace healthcheck -v"
diff --git a/cypress/integration/collection-statistics.spec.ts b/cypress/integration/collection-statistics.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/community-list.spec.ts b/cypress/integration/community-list.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/community-statistics.spec.ts b/cypress/integration/community-statistics.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/homepage-statistics.spec.ts b/cypress/integration/homepage-statistics.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/item-page.spec.ts b/cypress/integration/item-page.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/search-navbar.spec.ts b/cypress/integration/search-navbar.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/integration/search-page.spec.ts b/cypress/integration/search-page.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/cypress/support/index.ts b/cypress/support/index.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/app/clarin-licenses/clarin-license-table/modal/define-license-form/define-license-form.component.html b/src/app/clarin-licenses/clarin-license-table/modal/define-license-form/define-license-form.component.html
index 3026dd8378c..e0767951311 100644
--- a/src/app/clarin-licenses/clarin-license-table/modal/define-license-form/define-license-form.component.html
+++ b/src/app/clarin-licenses/clarin-license-table/modal/define-license-form/define-license-form.component.html
@@ -21,7 +21,7 @@
{{'clarin-license.define-license-form.form-name' | trans
diff --git a/src/app/core/data/external-source-data.service.spec.ts b/src/app/core/data/external-source-data.service.spec.ts
index e69de29bb2d..723d7f9bed6 100644
--- a/src/app/core/data/external-source-data.service.spec.ts
+++ b/src/app/core/data/external-source-data.service.spec.ts
@@ -0,0 +1,107 @@
+import { ExternalSourceDataService } from './external-source-data.service';
+import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
+import { createPaginatedList } from '../../shared/testing/utils.test';
+import { ExternalSourceEntry } from '../shared/external-source-entry.model';
+import { of as observableOf } from 'rxjs';
+import { GetRequest } from './request.models';
+import { testSearchDataImplementation } from './base/search-data.spec';
+import { take } from 'rxjs/operators';
+
+describe('ExternalSourceService', () => {
+ let service: ExternalSourceDataService;
+
+ let requestService;
+ let rdbService;
+ let halService;
+
+ const entries = [
+ Object.assign(new ExternalSourceEntry(), {
+ id: '0001-0001-0001-0001',
+ display: 'John Doe',
+ value: 'John, Doe',
+ metadata: {
+ 'dc.identifier.uri': [
+ {
+ value: 'https://orcid.org/0001-0001-0001-0001'
+ }
+ ]
+ }
+ }),
+ Object.assign(new ExternalSourceEntry(), {
+ id: '0001-0001-0001-0002',
+ display: 'Sampson Megan',
+ value: 'Sampson, Megan',
+ metadata: {
+ 'dc.identifier.uri': [
+ {
+ value: 'https://orcid.org/0001-0001-0001-0002'
+ }
+ ]
+ }
+ })
+ ];
+
+ function init() {
+ requestService = jasmine.createSpyObj('requestService', {
+ generateRequestId: 'request-uuid',
+ send: {}
+ });
+ rdbService = jasmine.createSpyObj('rdbService', {
+ buildList: createSuccessfulRemoteDataObject$(createPaginatedList(entries))
+ });
+ halService = jasmine.createSpyObj('halService', {
+ getEndpoint: observableOf('external-sources-REST-endpoint'),
+ });
+ service = new ExternalSourceDataService(requestService, rdbService, undefined, halService);
+ }
+
+ beforeEach(() => {
+ init();
+ });
+
+ describe('composition', () => {
+ const initService = () => new ExternalSourceDataService(null, null, null, null);
+ testSearchDataImplementation(initService);
+ });
+
+ describe('getExternalSourceEntries', () => {
+
+ describe('when no error response is cached', () => {
+ let result;
+ beforeEach(() => {
+ spyOn(service, 'hasCachedErrorResponse').and.returnValue(observableOf(false));
+ result = service.getExternalSourceEntries('test');
+ });
+
+ it('should send a GetRequest', () => {
+ result.pipe(take(1)).subscribe();
+ expect(requestService.send).toHaveBeenCalledWith(jasmine.any(GetRequest), true);
+ });
+
+ it('should return the entries', () => {
+ result.subscribe((resultRD) => {
+ expect(resultRD.payload.page).toBe(entries);
+ });
+ });
+ });
+
+ describe('when an error response is cached', () => {
+ let result;
+ beforeEach(() => {
+ spyOn(service, 'hasCachedErrorResponse').and.returnValue(observableOf(true));
+ result = service.getExternalSourceEntries('test');
+ });
+
+ it('should send a GetRequest', () => {
+ result.pipe(take(1)).subscribe();
+ expect(requestService.send).toHaveBeenCalledWith(jasmine.any(GetRequest), false);
+ });
+
+ it('should return the entries', () => {
+ result.subscribe((resultRD) => {
+ expect(resultRD.payload.page).toBe(entries);
+ });
+ });
+ });
+ });
+});
diff --git a/src/app/core/shared/clarin/clarin-license.resource-type.ts b/src/app/core/shared/clarin/clarin-license.resource-type.ts
index bee038f5e2e..d617f0e2742 100644
--- a/src/app/core/shared/clarin/clarin-license.resource-type.ts
+++ b/src/app/core/shared/clarin/clarin-license.resource-type.ts
@@ -26,16 +26,16 @@ export class ClarinLicenseRequiredInfo {
* Required info possible values.
*/
export const CLARIN_LICENSE_REQUIRED_INFO = {
- SEND_TOKEN: 'Email',
- NAME: 'Name (given name and surname)',
+ SEND_TOKEN: 'The user will receive an email with download instructions.',
+ NAME: 'User Name',
DOB: 'Date of birth',
ADDRESS: 'Address',
COUNTRY: 'Country',
- EXTRA_EMAIL: 'Email',
- ORGANIZATION: 'Organization',
- REQUIRED_ORGANIZATION: 'Organization',
- INTENDED_USE: 'Intended use',
- ACA_ORG_NAME_AND_SEAT: 'Name and seat (address) of your academic institution',
+ EXTRA_EMAIL: 'Ask user for another email address',
+ ORGANIZATION: 'Ask user for organization (optional)',
+ REQUIRED_ORGANIZATION: 'Ask user for organization (mandatory)',
+ INTENDED_USE: 'Ask user for his intentions with the item',
+ ACA_ORG_NAME_AND_SEAT: 'Ask for the name and seat (address) of user\'s academic institution',
};
/**
diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/sponsor-scrollable-dropdown/dynamic-sponsor-scrollable-dropdown.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/sponsor-scrollable-dropdown/dynamic-sponsor-scrollable-dropdown.component.ts
index fece3308784..37b2fcf34f2 100644
--- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/sponsor-scrollable-dropdown/dynamic-sponsor-scrollable-dropdown.component.ts
+++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/sponsor-scrollable-dropdown/dynamic-sponsor-scrollable-dropdown.component.ts
@@ -111,7 +111,10 @@ export class DsDynamicSponsorScrollableDropdownComponent extends DsDynamicScroll
(input as DsDynamicInputModel).value = '';
break;
case DYNAMIC_FORM_CONTROL_TYPE_SCROLLABLE_DROPDOWN:
- (input as DynamicScrollableDropdownModel).value = '';
+ // Remove it only if the funding type is `N/A`
+ if (this.fundingTypeIsNotApplicable(fundingTypeValue)) {
+ (input as DynamicScrollableDropdownModel).value = '';
+ }
break;
default:
break;
@@ -142,10 +145,17 @@ export class DsDynamicSponsorScrollableDropdownComponent extends DsDynamicScroll
}
// if the funding type is `N/A` -> clean inputs
- if (isEqual(fundingTypeValue, this.translateService.instant('autocomplete.suggestion.sponsor.empty'))) {
+ if (this.fundingTypeIsNotApplicable(fundingTypeValue)) {
return true;
}
return false;
}
+
+ /**
+ * Check if the funding type is `N/A`
+ */
+ fundingTypeIsNotApplicable(fundingTypeValue) {
+ return isEqual(fundingTypeValue, this.translateService.instant('autocomplete.suggestion.sponsor.empty'));
+ }
}
diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.spec.ts b/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.spec.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.ts b/src/app/shared/object-collection/shared/mydspace-item-status/my-dspace-item-status.component.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/app/shared/theme-support/themed.component.ts b/src/app/shared/theme-support/themed.component.ts
index 41decc84100..ded83aaf326 100644
--- a/src/app/shared/theme-support/themed.component.ts
+++ b/src/app/shared/theme-support/themed.component.ts
@@ -127,6 +127,7 @@ export abstract class ThemedComponent implements AfterViewInit, OnDestroy, On
}
this.compRef$.next(this.compRef);
this.cdr.markForCheck();
+ this.themedElementContent.nativeElement.remove();
});
}
diff --git a/src/config/theme.model.ts b/src/config/theme.model.ts
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/src/themes/dspace/app/navbar/navbar.component.scss b/src/themes/dspace/app/navbar/navbar.component.scss
index 0a1fc7fc008..bad6f841142 100644
--- a/src/themes/dspace/app/navbar/navbar.component.scss
+++ b/src/themes/dspace/app/navbar/navbar.component.scss
@@ -11,7 +11,19 @@ nav.navbar {
border-top: 1px var(--ds-header-navbar-border-top-color) solid;
border-bottom: 5px var(--ds-header-navbar-border-bottom-color) solid;
align-items: baseline;
- color: var(--ds-header-icon-color);
+
+ .navbar-inner-container {
+ border-top: 1px var(--ds-header-navbar-border-top-color) solid;
+ }
+}
+
+.navbar-nav {
+ background-color: var(--ds-navbar-bg);
+}
+
+.clarin-logo {
+ height: var(--ds-login-logo-height);
+ width: var(--ds-login-logo-width);
}
.clarin-logo {