forked from hazza/dspace-angular
Merge pull request #1930 from toniprieto/improve-cc-selector
Fix for Creative Commons jurisdiction chosen is ignored
This commit is contained in:
@@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ds-select *ngIf="field.enums?.length > 5">
|
<ds-select *ngIf="field.enums?.length > 5" [disabled]="field.id === 'jurisdiction' && defaultJurisdiction !== undefined && defaultJurisdiction !== 'none'">
|
||||||
<ng-container class="selection" *ngVar="getSelectedOption(getSelectedCcLicense(), field) as option">
|
<ng-container class="selection" *ngVar="getSelectedOption(getSelectedCcLicense(), field) as option">
|
||||||
<span *ngIf="option">
|
<span *ngIf="option">
|
||||||
{{ option.label }}
|
{{ option.label }}
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
title="accepted"
|
title="accepted"
|
||||||
[checked]="accepted">
|
[checked]="accepted">
|
||||||
<span>{{ 'submission.sections.ccLicense.confirmation' | translate }}</span>
|
<span> {{ 'submission.sections.ccLicense.confirmation' | translate }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -16,6 +16,8 @@ import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/jso
|
|||||||
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
|
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
|
||||||
import { createPaginatedList } from '../../../shared/testing/utils.test';
|
import { createPaginatedList } from '../../../shared/testing/utils.test';
|
||||||
|
import {ConfigurationDataService} from '../../../core/data/configuration-data.service';
|
||||||
|
import {ConfigurationProperty} from '../../../core/shared/configuration-property.model';
|
||||||
|
|
||||||
describe('SubmissionSectionCcLicensesComponent', () => {
|
describe('SubmissionSectionCcLicensesComponent', () => {
|
||||||
|
|
||||||
@@ -156,6 +158,14 @@ describe('SubmissionSectionCcLicensesComponent', () => {
|
|||||||
remove: undefined,
|
remove: undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const configurationDataService = jasmine.createSpyObj('configurationDataService', {
|
||||||
|
findByPropertyName: createSuccessfulRemoteDataObject$({
|
||||||
|
... new ConfigurationProperty(),
|
||||||
|
name: 'cc.license.jurisdiction',
|
||||||
|
values: ['mock-jurisdiction-value'],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
beforeEach(waitForAsync(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -170,6 +180,7 @@ describe('SubmissionSectionCcLicensesComponent', () => {
|
|||||||
{ provide: SubmissionCcLicenseUrlDataService, useValue: submissionCcLicenseUrlDataService },
|
{ provide: SubmissionCcLicenseUrlDataService, useValue: submissionCcLicenseUrlDataService },
|
||||||
{ provide: SectionsService, useValue: sectionService },
|
{ provide: SectionsService, useValue: sectionService },
|
||||||
{ provide: JsonPatchOperationsBuilder, useValue: operationsBuilder },
|
{ provide: JsonPatchOperationsBuilder, useValue: operationsBuilder },
|
||||||
|
{ provide: ConfigurationDataService, useValue: configurationDataService },
|
||||||
{ provide: 'collectionIdProvider', useValue: 'test collection id' },
|
{ provide: 'collectionIdProvider', useValue: 'test collection id' },
|
||||||
{ provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) },
|
{ provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) },
|
||||||
{ provide: 'submissionIdProvider', useValue: 'test submission id' },
|
{ provide: 'submissionIdProvider', useValue: 'test submission id' },
|
||||||
|
@@ -1,7 +1,11 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import { Observable, of as observableOf, Subscription } from 'rxjs';
|
import { Observable, of as observableOf, Subscription } from 'rxjs';
|
||||||
import { Field, Option, SubmissionCcLicence } from '../../../core/submission/models/submission-cc-license.model';
|
import { Field, Option, SubmissionCcLicence } from '../../../core/submission/models/submission-cc-license.model';
|
||||||
import { getFirstSucceededRemoteData, getRemoteDataPayload } from '../../../core/shared/operators';
|
import {
|
||||||
|
getFirstCompletedRemoteData,
|
||||||
|
getFirstSucceededRemoteData,
|
||||||
|
getRemoteDataPayload
|
||||||
|
} from '../../../core/shared/operators';
|
||||||
import { distinctUntilChanged, filter, map, take } from 'rxjs/operators';
|
import { distinctUntilChanged, filter, map, take } from 'rxjs/operators';
|
||||||
import { SubmissionCcLicenseDataService } from '../../../core/submission/submission-cc-license-data.service';
|
import { SubmissionCcLicenseDataService } from '../../../core/submission/submission-cc-license-data.service';
|
||||||
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
|
||||||
@@ -15,6 +19,7 @@ import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder
|
|||||||
import { isNotEmpty } from '../../../shared/empty.util';
|
import { isNotEmpty } from '../../../shared/empty.util';
|
||||||
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
|
||||||
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
|
import { SubmissionCcLicenseUrlDataService } from '../../../core/submission/submission-cc-license-url-data.service';
|
||||||
|
import {ConfigurationDataService} from '../../../core/data/configuration-data.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component represents the submission section to select the Creative Commons license.
|
* This component represents the submission section to select the Creative Commons license.
|
||||||
@@ -60,6 +65,11 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
|
|||||||
*/
|
*/
|
||||||
protected modalRef: NgbModalRef;
|
protected modalRef: NgbModalRef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default jurisdiction configured
|
||||||
|
*/
|
||||||
|
defaultJurisdiction: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Creative Commons link saved in the workspace item.
|
* The Creative Commons link saved in the workspace item.
|
||||||
*/
|
*/
|
||||||
@@ -83,6 +93,7 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
|
|||||||
protected submissionCcLicensesDataService: SubmissionCcLicenseDataService,
|
protected submissionCcLicensesDataService: SubmissionCcLicenseDataService,
|
||||||
protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService,
|
protected submissionCcLicenseUrlDataService: SubmissionCcLicenseUrlDataService,
|
||||||
protected operationsBuilder: JsonPatchOperationsBuilder,
|
protected operationsBuilder: JsonPatchOperationsBuilder,
|
||||||
|
protected configService: ConfigurationDataService,
|
||||||
@Inject('collectionIdProvider') public injectedCollectionId: string,
|
@Inject('collectionIdProvider') public injectedCollectionId: string,
|
||||||
@Inject('sectionDataProvider') public injectedSectionData: SectionDataObject,
|
@Inject('sectionDataProvider') public injectedSectionData: SectionDataObject,
|
||||||
@Inject('submissionIdProvider') public injectedSubmissionId: string
|
@Inject('submissionIdProvider') public injectedSubmissionId: string
|
||||||
@@ -156,6 +167,9 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
|
|||||||
* @param field the field for which to get the selected option value.
|
* @param field the field for which to get the selected option value.
|
||||||
*/
|
*/
|
||||||
getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option {
|
getSelectedOption(ccLicense: SubmissionCcLicence, field: Field): Option {
|
||||||
|
if (field.id === 'jurisdiction' && this.defaultJurisdiction !== undefined && this.defaultJurisdiction !== 'none') {
|
||||||
|
return field.enums.find(option => option.id === this.defaultJurisdiction);
|
||||||
|
}
|
||||||
return this.data.ccLicense.fields[field.id];
|
return this.data.ccLicense.fields[field.id];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,6 +270,17 @@ export class SubmissionSectionCcLicensesComponent extends SectionModelComponent
|
|||||||
).subscribe(
|
).subscribe(
|
||||||
(licenses) => this.submissionCcLicenses = licenses
|
(licenses) => this.submissionCcLicenses = licenses
|
||||||
),
|
),
|
||||||
|
this.configService.findByPropertyName('cc.license.jurisdiction').pipe(
|
||||||
|
getFirstCompletedRemoteData(),
|
||||||
|
getRemoteDataPayload()
|
||||||
|
).subscribe((remoteData) => {
|
||||||
|
if (remoteData === undefined || remoteData.values.length === 0) {
|
||||||
|
// No value configured, use blank value (International jurisdiction)
|
||||||
|
this.defaultJurisdiction = '';
|
||||||
|
} else {
|
||||||
|
this.defaultJurisdiction = remoteData.values[0];
|
||||||
|
}
|
||||||
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user