Skip to content

Commit 1e6a013

Browse files
authored
Merge pull request DSpace#1930 from toniprieto/improve-cc-selector
Fix for Creative Commons jurisdiction chosen is ignored
2 parents dc4b4ff + 9c05a11 commit 1e6a013

3 files changed

Lines changed: 39 additions & 3 deletions

File tree

src/app/submission/sections/cc-license/submission-section-cc-licenses.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ <h5>
8181

8282
</ng-template>
8383

84-
<ds-select *ngIf="field.enums?.length > 5">
84+
<ds-select *ngIf="field.enums?.length > 5" [disabled]="field.id === 'jurisdiction' && defaultJurisdiction !== undefined && defaultJurisdiction !== 'none'">
8585
<ng-container class="selection" *ngVar="getSelectedOption(getSelectedCcLicense(), field) as option">
8686
<span *ngIf="option">
8787
{{ option.label }}
@@ -136,7 +136,7 @@ <h5>
136136
<input type="checkbox"
137137
title="accepted"
138138
[checked]="accepted">
139-
<span>{{ 'submission.sections.ccLicense.confirmation' | translate }}</span>
139+
<span> {{ 'submission.sections.ccLicense.confirmation' | translate }}</span>
140140
</div>
141141
</div>
142142
</div>

src/app/submission/sections/cc-license/submission-section-cc-licenses.component.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso
1616
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
1717
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
1818
import { createPaginatedList } from '../../../shared/testing/utils.test';
19+
import {ConfigurationDataService} from '../../../core/data/configuration-data.service';
20+
import {ConfigurationProperty} from '../../../core/shared/configuration-property.model';
1921

2022
describe('SubmissionSectionCcLicensesComponent', () => {
2123

@@ -156,6 +158,14 @@ describe('SubmissionSectionCcLicensesComponent', () => {
156158
remove: undefined,
157159
});
158160

161+
const configurationDataService = jasmine.createSpyObj('configurationDataService', {
162+
findByPropertyName: createSuccessfulRemoteDataObject$({
163+
... new ConfigurationProperty(),
164+
name: 'cc.license.jurisdiction',
165+
values: ['mock-jurisdiction-value'],
166+
}),
167+
});
168+
159169
beforeEach(waitForAsync(() => {
160170
TestBed.configureTestingModule({
161171
imports: [
@@ -170,6 +180,7 @@ describe('SubmissionSectionCcLicensesComponent', () => {
170180
{ provide: SubmissionCcLicenseUrlDataService, useValue: submissionCcLicenseUrlDataService },
171181
{ provide: SectionsService, useValue: sectionService },
172182
{ provide: JsonPatchOperationsBuilder, useValue: operationsBuilder },
183+
{ provide: ConfigurationDataService, useValue: configurationDataService },
173184
{ provide: 'collectionIdProvider', useValue: 'test collection id' },
174185
{ provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) },
175186
{ provide: 'submissionIdProvider', useValue: 'test submission id' },

src/app/submission/sections/cc-license/submission-section-cc-licenses.component.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { Component, Inject } from '@angular/core';
22
import { Observable, of as observableOf, Subscription } from 'rxjs';
33
import { Field, Option, SubmissionCcLicence } from '../../../core/submission/models/submission-cc-license.model';
4-
import { getFirstSucceededRemoteData, getRemoteDataPayload } from '../../../core/shared/operators';
4+
import {
5+
getFirstCompletedRemoteData,
6+
getFirstSucceededRemoteData,
7+
getRemoteDataPayload
8+
} from '../../../core/shared/operators';
59
import { distinctUntilChanged, filter, map, take } from 'rxjs/operators';
610
import { SubmissionCcLicenseDataService } from '../../../core/submission/submission-cc-license-data.service';
711
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
@@ -15,6 +19,7 @@ import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder
1519
import { isNotEmpty } from '../../../shared/empty.util';
1620
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
1721
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
22+
import {ConfigurationDataService} from '../../../core/data/configuration-data.service';
1823

1924
/**
2025
* This component represents the submission section to select the Creative Commons license.
@@ -60,6 +65,11 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
6065
*/
6166
protected modalRef: NgbModalRef;
6267

68+
/**
69+
* Default jurisdiction configured
70+
*/
71+
defaultJurisdiction: string;
72+
6373
/**
6474
* The Creative Commons link saved in the workspace item.
6575
*/
@@ -83,6 +93,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
8393
protected submissionCcLicensesDataService: SubmissionCcLicenseDataService,
8494
protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService,
8595
protected operationsBuilder: JsonPatchOperationsBuilder,
96+
protected configService: ConfigurationDataService,
8697
@Inject('collectionIdProvider') public injectedCollectionId: string,
8798
@Inject('sectionDataProvider') public injectedSectionData: SectionDataObject,
8899
@Inject('submissionIdProvider') public injectedSubmissionId: string
@@ -156,6 +167,9 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
156167
* @param field the field for which to get the selected option value.
157168
*/
158169
getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option {
170+
if (field.id === 'jurisdiction' && this.defaultJurisdiction !== undefined && this.defaultJurisdiction !== 'none') {
171+
return field.enums.find(option => option.id === this.defaultJurisdiction);
172+
}
159173
return this.data.ccLicense.fields[field.id];
160174
}
161175

@@ -256,6 +270,17 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
256270
).subscribe(
257271
(licenses) => this.submissionCcLicenses = licenses
258272
),
273+
this.configService.findByPropertyName('cc.license.jurisdiction').pipe(
274+
getFirstCompletedRemoteData(),
275+
getRemoteDataPayload()
276+
).subscribe((remoteData) => {
277+
if (remoteData === undefined || remoteData.values.length === 0) {
278+
// No value configured, use blank value (International jurisdiction)
279+
this.defaultJurisdiction = '';
280+
} else {
281+
this.defaultJurisdiction = remoteData.values[0];
282+
}
283+
})
259284
);
260285
}
261286

0 commit comments

Comments
 (0)