mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-10 19:43:04 +00:00
[DURACOM-152] Section visibility read-only
This commit is contained in:
@@ -249,6 +249,8 @@ describe('SubmissionSectionFormComponent test suite', () => {
|
|||||||
formConfigService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(testFormConfiguration));
|
formConfigService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(testFormConfiguration));
|
||||||
sectionsServiceStub.getSectionData.and.returnValue(observableOf(sectionData));
|
sectionsServiceStub.getSectionData.and.returnValue(observableOf(sectionData));
|
||||||
sectionsServiceStub.getSectionServerErrors.and.returnValue(observableOf([]));
|
sectionsServiceStub.getSectionServerErrors.and.returnValue(observableOf([]));
|
||||||
|
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
|
||||||
|
|
||||||
spyOn(comp, 'initForm');
|
spyOn(comp, 'initForm');
|
||||||
spyOn(comp, 'subscriptions');
|
spyOn(comp, 'subscriptions');
|
||||||
|
|
||||||
|
@@ -118,6 +118,12 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
|||||||
protected subs: Subscription[] = [];
|
protected subs: Subscription[] = [];
|
||||||
|
|
||||||
protected submissionObject: SubmissionObject;
|
protected submissionObject: SubmissionObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A flag representing if this section is readonly
|
||||||
|
*/
|
||||||
|
protected isSectionReadonly = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The FormComponent reference
|
* The FormComponent reference
|
||||||
*/
|
*/
|
||||||
@@ -175,13 +181,15 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
|||||||
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType),
|
this.sectionService.getSectionData(this.submissionId, this.sectionData.id, this.sectionData.sectionType),
|
||||||
this.submissionObjectService.findById(this.submissionId, true, false, followLink('item')).pipe(
|
this.submissionObjectService.findById(this.submissionId, true, false, followLink('item')).pipe(
|
||||||
getFirstSucceededRemoteData(),
|
getFirstSucceededRemoteData(),
|
||||||
getRemoteDataPayload())
|
getRemoteDataPayload()),
|
||||||
|
this.sectionService.isSectionReadOnly(this.submissionId, this.sectionData.id, this.submissionService.getSubmissionScope())
|
||||||
])),
|
])),
|
||||||
take(1))
|
take(1))
|
||||||
.subscribe(([sectionData, submissionObject]: [WorkspaceitemSectionFormObject, SubmissionObject]) => {
|
.subscribe(([sectionData, submissionObject, isSectionReadOnly]: [WorkspaceitemSectionFormObject, SubmissionObject, boolean]) => {
|
||||||
if (isUndefined(this.formModel)) {
|
if (isUndefined(this.formModel)) {
|
||||||
// this.sectionData.errorsToShow = [];
|
// this.sectionData.errorsToShow = [];
|
||||||
this.submissionObject = submissionObject;
|
this.submissionObject = submissionObject;
|
||||||
|
this.isSectionReadonly = isSectionReadOnly;
|
||||||
// Is the first loading so init form
|
// Is the first loading so init form
|
||||||
this.initForm(sectionData);
|
this.initForm(sectionData);
|
||||||
this.sectionData.data = sectionData;
|
this.sectionData.data = sectionData;
|
||||||
@@ -286,11 +294,11 @@ export class SubmissionSectionFormComponent extends SectionModelComponent {
|
|||||||
this.formConfig,
|
this.formConfig,
|
||||||
this.collectionId,
|
this.collectionId,
|
||||||
sectionData,
|
sectionData,
|
||||||
this.submissionService.getSubmissionScope()
|
this.submissionService.getSubmissionScope(),
|
||||||
|
this.isSectionReadonly
|
||||||
);
|
);
|
||||||
const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig);
|
const sectionMetadata = this.sectionService.computeSectionConfiguredMetadata(this.formConfig);
|
||||||
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata);
|
this.sectionService.updateSectionData(this.submissionId, this.sectionData.id, sectionData, this.sectionData.errorsToShow, this.sectionData.serverValidationErrors, sectionMetadata);
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString();
|
const msg: string = this.translate.instant('error.submission.sections.init-form-error') + e.toString();
|
||||||
const sectionError: SubmissionSectionError = {
|
const sectionError: SubmissionSectionError = {
|
||||||
|
@@ -334,8 +334,9 @@ export class SectionsService {
|
|||||||
filter((sectionObj) => hasValue(sectionObj)),
|
filter((sectionObj) => hasValue(sectionObj)),
|
||||||
map((sectionObj: SubmissionSectionObject) => {
|
map((sectionObj: SubmissionSectionObject) => {
|
||||||
return isNotEmpty(sectionObj.visibility)
|
return isNotEmpty(sectionObj.visibility)
|
||||||
&& sectionObj.visibility.other === 'READONLY'
|
&& ((sectionObj.visibility.other === 'READONLY' && submissionScope !== SubmissionScopeType.WorkspaceItem)
|
||||||
&& submissionScope !== SubmissionScopeType.WorkspaceItem;
|
|| (sectionObj.visibility.main === 'READONLY' && submissionScope === SubmissionScopeType.WorkspaceItem)
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
distinctUntilChanged());
|
distinctUntilChanged());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user