[AAE-11695] move version compatibility directive and service (#8038)

* [AAE-11695] move version compatibility directive

* [AAE-11695] remove spare readme section
This commit is contained in:
Kasia Biernat 2022-12-12 11:19:31 +01:00 committed by GitHub
parent 8425831c5d
commit 5edc1186a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 122 additions and 55 deletions

View File

@ -2,10 +2,10 @@
Title: Version Compatibility Directive
Added: v3.9.0
Status: Active
Last reviewed: 2020-23-06
Last reviewed: 2022-07-12
---
# [Version Compatibility Directive](lib/core/src/lib/directives/version-compatibility.directive.ts "Defined in version-compatibility.directive.ts")
# [Version Compatibility Directive](lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts "Defined in version-compatibility.directive.ts")
Enables/disables components based on ACS version in use.
@ -33,7 +33,7 @@ The directive takes the version specified in the html and compares it to the ver
This will allow certain features to be only present under specific versions.
#### Major version
### Major version
```html
<button *adf-acs-version="'7'">
@ -41,7 +41,7 @@ This will allow certain features to be only present under specific versions.
</button>
```
#### Major and minor version
### Major and minor version
```html
<button *adf-acs-version="'6.2'">
@ -49,7 +49,7 @@ This will allow certain features to be only present under specific versions.
</button>
```
#### Major, minor and patch version
### Major, minor and patch version
```html
<button *adf-acs-version="'6.0.1'">
@ -61,4 +61,6 @@ It can be set to match major, minor and patches of ACS versions. Fox example, if
If the minimum version required is not matched the component will not be initialized and will disappear from the DOM tree.
```text
Note, if you dont place the * in front, the app wont be able to inject the TemplateRef and ViewContainerRef required for this directive to work.
```

View File

@ -11,7 +11,7 @@ Being a standard Angular application, the lifecycle and the tasks described for
The command to be used is the same of any Angular application
npm nstall
npm install
## Applications and distributions
@ -86,7 +86,3 @@ In case of ADW, update the `apps/content-ee/src/app/extensions.module.ts` file a
Once built, the compiled ADF-based application is available as a collection of files directly in the `dist` folder. The promotion of the distribution of the application in a different environment can be done simply by copying the files in the target server.
Also in this case, nothing differs from a standard Angular application and the same tips and best practices can be followed.
# Conclusions
In this content you learned the most common and basic tasks for ADW and any ADF-based application.

View File

@ -17,9 +17,10 @@
import { Component, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';
import { Node } from '@alfresco/js-api';
import { ContentService, AllowableOperationsEnum, VersionCompatibilityService } from '@alfresco/adf-core';
import { ContentService, AllowableOperationsEnum } from '@alfresco/adf-core';
import { NodeAspectService } from '../../../aspect-list/services/node-aspect.service';
import { PresetConfig } from '../../interfaces/content-metadata.interfaces';
import { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service';
@Component({
selector: 'adf-content-metadata-card',
templateUrl: './content-metadata-card.component.html',

View File

@ -17,12 +17,13 @@
import { TestBed } from '@angular/core/testing';
import { ContentTypePropertiesService } from './content-type-property.service';
import { CardViewItem, CardViewSelectItemModel, CardViewTextItemModel, setupTestBed, VersionCompatibilityService } from '@alfresco/adf-core';
import { CardViewItem, CardViewSelectItemModel, CardViewTextItemModel, setupTestBed } from '@alfresco/adf-core';
import { ContentTestingModule } from '../../testing/content.testing.module';
import { TranslateModule } from '@ngx-translate/core';
import { ContentTypeService } from '../../content-type';
import { of } from 'rxjs';
import { Node, TypeEntry } from '@alfresco/js-api';
import { VersionCompatibilityService } from '../../version-compatibility/version-compatibility.service';
describe('ContentTypePropertyService', () => {

View File

@ -17,7 +17,7 @@
import { Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { CardViewItem, CardViewSelectItemModel, CardViewSelectItemOption, CardViewTextItemModel, VersionCompatibilityService } from '@alfresco/adf-core';
import { CardViewItem, CardViewSelectItemModel, CardViewSelectItemOption, CardViewTextItemModel } from '@alfresco/adf-core';
import { Observable, of, Subject, zip } from 'rxjs';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { ContentTypeDialogComponent } from '../../content-type/content-type-dialog.component';
@ -25,6 +25,7 @@ import { ContentTypeDialogComponentData } from '../../content-type/content-type-
import { ContentTypeService } from '../../content-type/content-type.service';
import { Node, Property, TypeEntry } from '@alfresco/js-api';
import { PropertyGroupTranslatorService } from './property-groups-translator.service';
import { VersionCompatibilityService } from '../../version-compatibility/version-compatibility.service';
@Injectable({
providedIn: 'root'

View File

@ -16,7 +16,7 @@
*/
import { CommonModule } from '@angular/common';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CoreModule, TRANSLATION_PROVIDER } from '@alfresco/adf-core';
@ -41,6 +41,9 @@ import { PermissionManagerModule } from './permission-manager/permission-manager
import { TreeViewModule } from './tree-view/tree-view.module';
import { ContentTypeModule } from './content-type/content-type.module';
import { AspectListModule } from './aspect-list/aspect-list.module';
import { VersionCompatibilityModule } from './version-compatibility/version-compatibility.module';
import { versionCompatibilityFactory } from './version-compatibility/version-compatibility-factory';
import { VersionCompatibilityService } from './version-compatibility/version-compatibility.service';
@NgModule({
imports: [
@ -67,7 +70,8 @@ import { AspectListModule } from './aspect-list/aspect-list.module';
VersionManagerModule,
TreeViewModule,
ContentTypeModule,
AspectListModule
AspectListModule,
VersionCompatibilityModule
],
providers: [
{
@ -98,7 +102,8 @@ import { AspectListModule } from './aspect-list/aspect-list.module';
VersionManagerModule,
TreeViewModule,
AspectListModule,
ContentTypeModule
ContentTypeModule,
VersionCompatibilityModule
]
})
export class ContentModule {
@ -113,6 +118,12 @@ export class ContentModule {
name: 'adf-content-services',
source: 'assets/adf-content-services'
}
},
{
provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory,
deps: [VersionCompatibilityService],
multi: true
}
]
};

View File

@ -24,9 +24,10 @@ import {
SitesApi
} from '@alfresco/js-api';
import { BehaviorSubject, from, Observable } from 'rxjs';
import { VersionCompatibilityService, SitesService, AlfrescoApiService } from '@alfresco/adf-core';
import { SitesService, AlfrescoApiService } from '@alfresco/adf-core';
import { LibraryMembershipToggleEvent } from '../interfaces/library-membership-toggle-event.interface';
import { LibraryMembershipErrorEvent} from '../interfaces/library-membership-error-event.interface';
import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';
@Directive({
selector: '[adf-library-membership]',

View File

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { NgModule } from '@angular/core';
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { RouterTestingModule } from '@angular/router/testing';
import {
@ -31,6 +31,8 @@ import {
} from '@alfresco/adf-core';
import { ContentModule } from '../content.module';
import { TranslateModule } from '@ngx-translate/core';
import { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory';
import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';
@NgModule({
imports: [
@ -44,7 +46,13 @@ import { TranslateModule } from '@ngx-translate/core';
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ provide: CookieService, useClass: CookieServiceMock }
{ provide: CookieService, useClass: CookieServiceMock },
{
provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory,
deps: [ VersionCompatibilityService ],
multi: true
}
],
exports: [
NoopAnimationsModule,

View File

@ -0,0 +1,18 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './public-api';

View File

@ -0,0 +1,20 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './version-compatibility.directive';
export * from './version-compatibility.service';
export * from './version-compatibility.module';

View File

@ -19,10 +19,10 @@ import { Component } from '@angular/core';
import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core';
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { setupTestBed } from '../testing/setup-test-bed';
import { CoreTestingModule } from '../testing/core.testing.module';
import { VersionCompatibilityService } from '../services/version-compatibility.service';
import { setupTestBed, CoreTestingModule } from '@alfresco/adf-core';
import { VersionCompatibilityService } from './version-compatibility.service';
import { VersionInfo } from '@alfresco/js-api';
import { VersionCompatibilityModule } from './version-compatibility.module';
@Component({
template: `
@ -62,7 +62,8 @@ describe('VersionCompatibilityDirective', () => {
setupTestBed({
imports: [
TranslateModule.forRoot(),
CoreTestingModule
CoreTestingModule,
VersionCompatibilityModule
],
declarations: [TestComponent]
});

View File

@ -16,7 +16,7 @@
*/
import { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core';
import { VersionCompatibilityService } from '../services/version-compatibility.service';
import { VersionCompatibilityService } from './version-compatibility.service';
import { take } from 'rxjs/operators';
@Directive({

View File

@ -0,0 +1,27 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { VersionCompatibilityDirective } from './version-compatibility.directive';
@NgModule({
imports: [CommonModule],
exports: [VersionCompatibilityDirective],
declarations: [VersionCompatibilityDirective]
})
export class VersionCompatibilityModule {}

View File

@ -15,14 +15,12 @@
* limitations under the License.
*/
import { TestBed } from '@angular/core/testing';
import { DiscoveryApiService } from './discovery-api.service';
import { setupTestBed } from '../testing/setup-test-bed';
import { CoreTestingModule } from '../testing/core.testing.module';
import { VersionCompatibilityService } from './version-compatibility.service';
import { BehaviorSubject } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core';
import { CoreTestingModule, DiscoveryApiService, setupTestBed } from '@alfresco/adf-core';
import { RepositoryInfo } from '@alfresco/js-api';
import { TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { BehaviorSubject } from 'rxjs';
import { VersionCompatibilityService } from './version-compatibility.service';
describe('VersionCompatibilityService', () => {
let versionCompatibilityService: VersionCompatibilityService;

View File

@ -19,7 +19,7 @@ import { Injectable } from '@angular/core';
import { filter } from 'rxjs/operators';
import { ReplaySubject } from 'rxjs';
import { VersionInfo, RepositoryInfo } from '@alfresco/js-api';
import { DiscoveryApiService } from './discovery-api.service';
import { DiscoveryApiService } from '@alfresco/adf-core';
@Injectable({
providedIn: 'root'

View File

@ -24,6 +24,7 @@ import { VersionUploadComponent } from './version-upload.component';
import { VersionManagerComponent } from './version-manager.component';
import { VersionListComponent } from './version-list.component';
import { UploadModule } from '../upload/upload.module';
import { VersionCompatibilityModule } from '../version-compatibility/version-compatibility.module';
import { CoreModule } from '@alfresco/adf-core';
import { VersionComparisonComponent } from './version-comparison.component';
@ -33,6 +34,7 @@ import { VersionComparisonComponent } from './version-comparison.component';
MaterialModule,
CoreModule,
UploadModule,
VersionCompatibilityModule,
FormsModule
],
exports: [

View File

@ -37,5 +37,6 @@ export * from './lib/aspect-list/index';
export * from './lib/content-type/index';
export * from './lib/new-version-uploader';
export * from './lib/interfaces/index';
export * from './lib/version-compatibility/index';
export * from './lib/content.module';

View File

@ -58,8 +58,6 @@ import { ExtensionsModule } from '@alfresco/adf-extensions';
import { directionalityConfigFactory } from './services/directionality-config-factory';
import { DirectionalityConfigService } from './services/directionality-config.service';
import { SearchTextModule } from './search-text/search-text-input.module';
import { versionCompatibilityFactory } from './services/version-compatibility-factory';
import { VersionCompatibilityService } from './services/version-compatibility.service';
import { AlfrescoJsClientsModule } from '@alfresco/adf-core/api';
import { AuthenticationInterceptor, Authentication } from '@alfresco/adf-core/auth';
import { LegacyApiClientModule } from './api-factories/legacy-api-client.module';
@ -171,12 +169,6 @@ export class CoreModule {
deps: [DirectionalityConfigService],
multi: true
},
{
provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory,
deps: [VersionCompatibilityService],
multi: true
},
{ provide: HTTP_INTERCEPTORS, useClass: AuthenticationInterceptor, multi: true },
{ provide: Authentication, useClass: AuthenticationService },
{

View File

@ -23,7 +23,6 @@ import { HighlightDirective } from './highlight.directive';
import { LogoutDirective } from './logout.directive';
import { UploadDirective } from './upload.directive';
import { NodeDownloadDirective } from './node-download.directive';
import { VersionCompatibilityDirective } from './version-compatibility.directive';
import { TooltipCardDirective } from './tooltip-card/tooltip-card.directive';
import { OverlayModule } from '@angular/cdk/overlay';
import { TooltipCardComponent } from './tooltip-card/tooltip-card.component';
@ -40,7 +39,6 @@ import { InfiniteSelectScrollDirective } from './infinite-select-scroll.directiv
LogoutDirective,
NodeDownloadDirective,
UploadDirective,
VersionCompatibilityDirective,
TooltipCardDirective,
TooltipCardComponent,
InfiniteSelectScrollDirective
@ -50,7 +48,6 @@ import { InfiniteSelectScrollDirective } from './infinite-select-scroll.directiv
LogoutDirective,
NodeDownloadDirective,
UploadDirective,
VersionCompatibilityDirective,
TooltipCardDirective,
InfiniteSelectScrollDirective
]

View File

@ -19,7 +19,6 @@ export * from './highlight.directive';
export * from './logout.directive';
export * from './node-download.directive';
export * from './upload.directive';
export * from './version-compatibility.directive';
export * from './tooltip-card/tooltip-card.directive';
export * from './infinite-select-scroll.directive';

View File

@ -61,7 +61,6 @@ export * from './ecm-user.service';
export * from './identity-user.service';
export * from './identity-group.service';
export * from './identity-role.service';
export * from './version-compatibility.service';
export * from './auth-bearer.interceptor';
export * from './oauth2.service';
export * from './language.service';

View File

@ -32,8 +32,6 @@ import { CookieServiceMock } from '../mock/cookie.service.mock';
import { HttpClientModule } from '@angular/common/http';
import { directionalityConfigFactory } from '../services/directionality-config-factory';
import { DirectionalityConfigService } from '../services/directionality-config.service';
import { versionCompatibilityFactory } from '../services/version-compatibility-factory';
import { VersionCompatibilityService } from '../services/version-compatibility.service';
@NgModule({
imports: [
@ -54,12 +52,6 @@ import { VersionCompatibilityService } from '../services/version-compatibility.s
useFactory: directionalityConfigFactory,
deps: [ DirectionalityConfigService ],
multi: true
},
{
provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory,
deps: [ VersionCompatibilityService ],
multi: true
}
],
exports: [

View File

@ -39,12 +39,12 @@ import {
setupTestBed,
TRANSLATION_PROVIDER,
WidgetVisibilityService,
VersionCompatibilityService,
FormService,
UploadWidgetContentLinkModel,
ContentLinkModel,
AlfrescoApiService
} from '@alfresco/adf-core';
import { VersionCompatibilityService } from '@alfresco/adf-content-services';
import { ProcessServiceCloudTestingModule } from '../../testing/process-service-cloud.testing.module';
import { FormCloudService } from '../services/form-cloud.service';
import { FormCloudComponent } from './form-cloud.component';