diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 565935611b..5f22c1e6dd 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -26,7 +26,7 @@ runs: cache-dependency-path: package-lock.json - name: get latest tag sha id: tag-sha - uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae # v8.20.0 + uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@95f68dc050fba62b3331d9b47bc659526cdfb343 # v8.21.1 # CACHE - name: Node Modules cache id: node-modules-cache diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 52167d3362..dc6d0e522b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -30,7 +30,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 # Override language selection by uncommenting this and choosing your languages with: languages: javascript @@ -39,7 +39,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -53,4 +53,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17 + uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 6d9de373d8..30db96352c 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -64,7 +64,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Ensure SHA pinned actions - uses: zgosalvez/github-actions-ensure-sha-pinned-actions@2d6823da4039243036c86d76f503c84e2ded2517 # v3.0.24 + uses: zgosalvez/github-actions-ensure-sha-pinned-actions@fc87bb5b5a97953d987372e74478de634726b3e5 # v3.0.25 - name: Check package-lock.json version run: | @@ -84,10 +84,10 @@ jobs: fetch-depth: 0 - name: Get branch name - uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae # v8.20.0 + uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@95f68dc050fba62b3331d9b47bc659526cdfb343 # v8.21.1 - name: Save commit message - uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae # v8.20.0 + uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@95f68dc050fba62b3331d9b47bc659526cdfb343 # v8.21.1 - name: ci:force flag parser shell: bash diff --git a/docs/content-services/services/tag.service.md b/docs/content-services/services/tag.service.md index 966449438e..108f5e56c7 100644 --- a/docs/content-services/services/tag.service.md +++ b/docs/content-services/services/tag.service.md @@ -23,10 +23,10 @@ Manages tags in Content Services. - _nodeId:_ `string` - Id of node to which tags should be assigned. - _tags:_ `TagBody[]` - List of tags to create and assign or just assign if they already exist. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagPaging`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagPaging.md)`|`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`>` - Just linked tags to node or single tag if linked only one tag. -- **createTags**(tags: `TagBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`[]>`
+- **createTags**(tags: `TagBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagEntry) `|` [`TagPaging`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagPaging)`>`
Creates tags. - _tags:_ `TagBody[]` - list of tags to create. - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`[]>` - Created tags. + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagEntry) `|` [`TagPaging`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagPaging)`>` - Created tags. - **deleteTag**(tagId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Deletes a tag with tagId. This will cause the tag to be removed from all nodes. You must have admin rights to delete a tag. - _tagId:_ `string` - of the tag to be deleted diff --git a/e2e/resources/activiti7/simpleapp.zip b/e2e/resources/activiti7/simpleapp.zip index 01e9fd77bb..457f8af159 100644 Binary files a/e2e/resources/activiti7/simpleapp.zip and b/e2e/resources/activiti7/simpleapp.zip differ diff --git a/lib/content-services/src/lib/tag/services/tag.service.spec.ts b/lib/content-services/src/lib/tag/services/tag.service.spec.ts index b22d3b6196..c89767e9fc 100644 --- a/lib/content-services/src/lib/tag/services/tag.service.spec.ts +++ b/lib/content-services/src/lib/tag/services/tag.service.spec.ts @@ -89,7 +89,7 @@ describe('TagService', () => { describe('createTags', () => { it('should call createTags on tagsApi', () => { - spyOn(service.tagsApi, 'createTags').and.returnValue(Promise.resolve([])); + spyOn(service.tagsApi, 'createTags').and.returnValue(Promise.resolve({})); const tag1 = new TagBody(); tag1.tag = 'Some tag 1'; const tag2 = new TagBody(); @@ -101,19 +101,17 @@ describe('TagService', () => { }); it('should emit refresh when tags creation is success', async () => { - const tags: TagEntry[] = [ - { - entry: { - id: 'Some id 1', - tag: 'Some tag 1' - } + const tag: TagEntry = { + entry: { + id: 'Some id 1', + tag: 'Some tag 1' } - ]; + }; spyOn(service.refresh, 'emit'); - spyOn(service.tagsApi, 'createTags').and.returnValue(Promise.resolve(tags)); + spyOn(service.tagsApi, 'createTags').and.returnValue(Promise.resolve(tag)); await service.createTags([]).toPromise(); - expect(service.refresh.emit).toHaveBeenCalledWith(tags); + expect(service.refresh.emit).toHaveBeenCalledWith(tag); }); }); diff --git a/lib/content-services/src/lib/tag/services/tag.service.ts b/lib/content-services/src/lib/tag/services/tag.service.ts index b7b18254c3..0679595fbb 100644 --- a/lib/content-services/src/lib/tag/services/tag.service.ts +++ b/lib/content-services/src/lib/tag/services/tag.service.ts @@ -99,7 +99,7 @@ export class TagService { * @param tags list of tags to create. * @returns Created tags. */ - createTags(tags: TagBody[]): Observable { + createTags(tags: TagBody[]): Observable { return from(this.tagsApi.createTags(tags)).pipe(tap((tagEntries) => this.refresh.emit(tagEntries))); } diff --git a/lib/core/src/lib/common/utils/date-fns-utils.spec.ts b/lib/core/src/lib/common/utils/date-fns-utils.spec.ts index 46c353e8cf..c7793ec5c2 100644 --- a/lib/core/src/lib/common/utils/date-fns-utils.spec.ts +++ b/lib/core/src/lib/common/utils/date-fns-utils.spec.ts @@ -78,7 +78,6 @@ describe('DateFnsUtils', () => { it('should parse alternative ISO datetime', () => { const result = DateFnsUtils.parseDate('1982-03-13T10:00:000Z', `yyyy-MM-dd'T'HH:mm:sssXXX`); - expect(result.toISOString()).toBe('1982-03-13T10:00:00.000Z'); }); diff --git a/lib/core/src/lib/form/components/widgets/core/form.model.ts b/lib/core/src/lib/form/components/widgets/core/form.model.ts index 800bafd480..2b1a763b9f 100644 --- a/lib/core/src/lib/form/components/widgets/core/form.model.ts +++ b/lib/core/src/lib/form/components/widgets/core/form.model.ts @@ -358,7 +358,7 @@ export class FormModel implements ProcessFormModel { this.handleSectionField(field, formFieldModel); } else if (this.isContainerField(field)) { this.handleContainerField(field, formFieldModel); - } else { + } else if (this.isFormField(field)) { this.handleSingleField(field, formFieldModel); } }); @@ -368,6 +368,10 @@ export class FormModel implements ProcessFormModel { return field instanceof ContainerModel; } + private isFormField(field: ContainerModel | FormFieldModel): field is FormFieldModel { + return field instanceof FormFieldModel; + } + private isSectionField(field: ContainerModel | FormFieldModel): field is FormFieldModel { return field.type === FormFieldTypes.SECTION; } diff --git a/lib/core/src/lib/i18n/de.json b/lib/core/src/lib/i18n/de.json index 85c32a1af0..f9703196a4 100644 --- a/lib/core/src/lib/i18n/de.json +++ b/lib/core/src/lib/i18n/de.json @@ -18,7 +18,7 @@ "COMPLETE": "Abschließen", "CANCEL": "Abbrechen", "CLAIM": "Beanspruchen", - "UNCLAIM": "Anspruch aufheben", + "UNCLAIM": "Freigeben ", "START PROCESS": "Prozess starten", "DATA_LOADING": "Daten werden geladen", "CLOSE": "Schließen", diff --git a/lib/js-api/src/api/content-rest-api/api/tags.api.ts b/lib/js-api/src/api/content-rest-api/api/tags.api.ts index f726f6257b..ccbadb5ebf 100644 --- a/lib/js-api/src/api/content-rest-api/api/tags.api.ts +++ b/lib/js-api/src/api/content-rest-api/api/tags.api.ts @@ -209,9 +209,9 @@ export class TagsApi extends BaseApi { /** * Create specified by **tags** list of tags. * @param tags List of tags to create. - * @returns Promise + * @returns Promise */ - createTags(tags: TagBody[]): Promise { + createTags(tags: TagBody[]): Promise { throwIfNotDefined(tags, 'tags'); return this.post({ diff --git a/lib/js-api/src/api/content-rest-api/docs/TagsApi.md b/lib/js-api/src/api/content-rest-api/docs/TagsApi.md index cf3915921b..e172606f84 100644 --- a/lib/js-api/src/api/content-rest-api/docs/TagsApi.md +++ b/lib/js-api/src/api/content-rest-api/docs/TagsApi.md @@ -240,7 +240,7 @@ Create specified by **tags** list of tags. |----------|-----------------------|-------------------------| | **tags** | [TagBody[]](#TagBody) | List of tags to create. | -**Return type**: [TagEntry[]](#TagEntry) +**Return type**: [TagEntry](#TagEntry) | [TagPaging](#TagPaging) **Example** diff --git a/lib/js-api/test/content-services/tagApi.spec.ts b/lib/js-api/test/content-services/tagApi.spec.ts index 6cf98ce6e3..bac4108d9e 100644 --- a/lib/js-api/test/content-services/tagApi.spec.ts +++ b/lib/js-api/test/content-services/tagApi.spec.ts @@ -16,7 +16,7 @@ */ import assert from 'assert'; -import { AlfrescoApi, TagBody, TagEntry, TagsApi } from '../../src'; +import { AlfrescoApi, TagBody, TagEntry, TagPaging, TagsApi } from '../../src'; import { EcmAuthMock, TagMock } from '../mockObjects'; describe('Tags', () => { @@ -105,10 +105,10 @@ describe('Tags', () => { describe('createTags', () => { it('should return created tags', (done) => { tagMock.createTags201Response(); - tagsApi.createTags([new TagBody(), new TagBody()]).then((tags) => { - assert.equal(tags.length, 2); - assert.equal(tags[0].entry.tag, 'tag-test-1'); - assert.equal(tags[1].entry.tag, 'tag-test-2'); + tagsApi.createTags([new TagBody(), new TagBody()]).then((tags: TagPaging) => { + assert.equal(tags.list.entries.length, 2); + assert.equal(tags.list.entries[0].entry.tag, 'tag-test-1'); + assert.equal(tags.list.entries[1].entry.tag, 'tag-test-2'); done(); }); }); diff --git a/lib/js-api/test/mockObjects/content-services/tag.mock.ts b/lib/js-api/test/mockObjects/content-services/tag.mock.ts index 45ea219932..ba3362c1b3 100644 --- a/lib/js-api/test/mockObjects/content-services/tag.mock.ts +++ b/lib/js-api/test/mockObjects/content-services/tag.mock.ts @@ -65,7 +65,7 @@ export class TagMock extends BaseMock { createTags201Response(): void { nock(this.host, { encodedQueryParams: true }) .post('/alfresco/api/-default-/public/alfresco/versions/1/tags') - .reply(201, [this.mockTagEntry(), this.mockTagEntry('tag-test-2', 'd79bdbd0-9f55-45bb-9521-811e15bf48f6')]); + .reply(201, this.getPaginatedListOfTags()); } get201ResponseForAssigningTagsToNode(body: TagBody[]): void { diff --git a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html index 3225f098a6..7e012915fd 100644 --- a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html +++ b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html @@ -96,6 +96,7 @@ mat-button [disabled]="!isOutcomeButtonEnabled(outcome)" [class.adf-form-hide-button]="!isOutcomeButtonVisible(outcome, form.readOnly)" + class="adf-cloud-form-custom-outcome-button" (click)="onOutcomeClicked(outcome)" > {{ outcome.name | translate | uppercase }} diff --git a/lib/process-services-cloud/src/lib/i18n/de.json b/lib/process-services-cloud/src/lib/i18n/de.json index 7148861492..94c2f1f8fe 100644 --- a/lib/process-services-cloud/src/lib/i18n/de.json +++ b/lib/process-services-cloud/src/lib/i18n/de.json @@ -312,7 +312,7 @@ "ADF_CLOUD_TASK_HEADER": { "BUTTON": { "CLAIM": "Beanspruchen", - "RELEASE": "Anspruch aufheben" + "RELEASE": "Freigeben" }, "PROPERTIES": { "TASK_NAME": "Aufgabe", @@ -373,7 +373,7 @@ "COMPLETE": "Abschließen", "CANCEL": "Abbrechen", "CLAIM": "Beanspruchen", - "UNCLAIM": "Anspruch aufheben" + "UNCLAIM": "Freigeben " } }, "ERROR": { diff --git a/lib/process-services/src/lib/i18n/de.json b/lib/process-services/src/lib/i18n/de.json index 0aa5c81a66..6aeb82cd96 100644 --- a/lib/process-services/src/lib/i18n/de.json +++ b/lib/process-services/src/lib/i18n/de.json @@ -73,7 +73,7 @@ "BUTTON": { "COMPLETE": "Abschließen", "CLAIM": "Beanspruchen", - "UNCLAIM": "Anspruch aufheben", + "UNCLAIM": "Freigeben ", "DRAG-ATTACHMENT": "Dateien zum Hochladen ablegen", "UPLOAD-ATTACHMENT": "Anhang hochladen" }, @@ -343,7 +343,7 @@ "COMPLETE": "Abschließen", "CANCEL": "Abbrechen", "CLAIM": "Beanspruchen", - "UNCLAIM": "Anspruch aufheben" + "UNCLAIM": "Freigeben " } }, "COMPLETED_TASK": {