diff --git a/src/app.config.json b/src/app.config.json index c5b410bf8..9bbfb77b6 100644 --- a/src/app.config.json +++ b/src/app.config.json @@ -11,7 +11,8 @@ "experimental": { "libraries": false, "comments": false, - "cardview": false + "cardview": false, + "share": false }, "headerColor": "#2196F3", "languagePicker": false, diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 74d5e6aa4..6023365bb 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -30,7 +30,13 @@ import { AuthenticationService, AlfrescoApiService } from '@alfresco/adf-core'; import { Store } from '@ngrx/store'; import { AppStore } from './store/states/app.state'; -import { SetHeaderColorAction, SetAppNameAction, SetLogoPathAction, SetLanguagePickerAction } from './store/actions'; +import { + SetHeaderColorAction, + SetAppNameAction, + SetLogoPathAction, + SetLanguagePickerAction, + SetSharedUrlAction +} from './store/actions'; @Component({ selector: 'app-root', @@ -94,5 +100,8 @@ export class AppComponent implements OnInit { } const languagePicker = this.config.get('languagePicker'); this.store.dispatch(new SetLanguagePickerAction(languagePicker)); + + const sharedPreviewUrl = this.config.get('ecmHost') + '/#/preview/s/'; + this.store.dispatch(new SetSharedUrlAction(sharedPreviewUrl)); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f5f07237d..d12bb6a24 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -53,6 +53,7 @@ import { SidenavComponent } from './components/sidenav/sidenav.component'; import { AboutComponent } from './components/about/about.component'; import { LocationLinkComponent } from './components/location-link/location-link.component'; import { CustomDlRowComponent } from './components/custom-dl-row/custom-dl-row.component'; +import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; import { NodeCopyDirective } from './common/directives/node-copy.directive'; import { NodeDeleteDirective } from './common/directives/node-delete.directive'; import { NodeMoveDirective } from './common/directives/node-move.directive'; @@ -69,6 +70,7 @@ import { SearchComponent } from './components/search/search.component'; import { SettingsComponent } from './components/settings/settings.component'; import { PageTitleService as AcaPageTitleService } from './common/services/page-title.service'; import { ProfileResolver } from './common/services/profile.resolver'; +import { ExperimentalGuard } from './common/services/experimental-guard.service'; import { InfoDrawerComponent } from './components/info-drawer/info-drawer.component'; import { EditFolderDirective } from './directives/edit-folder.directive'; @@ -128,6 +130,7 @@ import { ContentApiService } from './services/content-api.service'; SearchComponent, SettingsComponent, InfoDrawerComponent, + SharedLinkViewComponent, EditFolderDirective, CreateFolderDirective, DownloadNodesDirective, @@ -151,6 +154,7 @@ import { ContentApiService } from './services/content-api.service'; NodeActionsService, NodePermissionService, ProfileResolver, + ExperimentalGuard, ContentApiService ], entryComponents: [ diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 0a4b610a0..c285b155e 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -25,6 +25,7 @@ import { Routes } from '@angular/router'; import { AuthGuardEcm } from '@alfresco/adf-core'; +import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component'; import { LayoutComponent } from './components/layout/layout.component'; @@ -43,6 +44,7 @@ import { SearchComponent } from './components/search/search.component'; import { SettingsComponent } from './components/settings/settings.component'; import { ProfileResolver } from './common/services/profile.resolver'; +import { ExperimentalGuard } from './common/services/experimental-guard.service'; export const APP_ROUTES: Routes = [ { @@ -59,6 +61,15 @@ export const APP_ROUTES: Routes = [ title: 'Settings' } }, + { + path: 'preview/s/:id', + component: SharedLinkViewComponent, + canActivate: [ ExperimentalGuard ], + data: { + ifExperimentalKey: 'share', + title: 'APP.PREVIEW.TITLE', + } + }, { path: '', component: LayoutComponent, diff --git a/src/app/common/services/experimental-guard.service.ts b/src/app/common/services/experimental-guard.service.ts new file mode 100644 index 000000000..5750f5fa4 --- /dev/null +++ b/src/app/common/services/experimental-guard.service.ts @@ -0,0 +1,20 @@ +import { CanActivate, ActivatedRouteSnapshot } from '@angular/router'; +import { Injectable } from '@angular/core'; +import { AppConfigService } from '@alfresco/adf-core'; +import { environment } from '../../../environments/environment'; + +@Injectable() +export class ExperimentalGuard implements CanActivate { + constructor(private config: AppConfigService) {} + + canActivate(route: ActivatedRouteSnapshot) { + const key = `experimental.${route.data.ifExperimentalKey}`; + const value = this.config.get(key); + + if (!environment.production) { + return value === true || value === 'true'; + } + + return false; + } +} diff --git a/src/app/components/favorites/favorites.component.html b/src/app/components/favorites/favorites.component.html index 113755bba..8e44beb9a 100644 --- a/src/app/components/favorites/favorites.component.html +++ b/src/app/components/favorites/favorites.component.html @@ -44,6 +44,17 @@ info_outline + + + + + + + + + + + + + + + +