Merge pull request #4520 from Alfresco/development

3.1.0
This commit is contained in:
Eugenio Romano
2019-03-29 16:50:02 +00:00
committed by GitHub
1039 changed files with 30594 additions and 29330 deletions
+57 -55
View File
@@ -15,6 +15,9 @@ branches:
only: only:
- master - master
- development - development
- /.*next-release.*/
- /.*beta.*/
- /.*greenkeeper.*/
# TRAVIS_PULL_REQUEST == false means is running on dev branch and is not a PR # TRAVIS_PULL_REQUEST == false means is running on dev branch and is not a PR
stages: stages:
@@ -39,11 +42,6 @@ before_install:
- sh -e /etc/init.d/xvfb start - sh -e /etc/init.d/xvfb start
- sleep 3 # give xvfb some time to start - sleep 3 # give xvfb some time to start
branches:
only:
- master
- development
jobs: jobs:
include: include:
- stage: Warm Up Cache - stage: Warm Up Cache
@@ -54,145 +52,149 @@ jobs:
- ./scripts/update-version.sh -gnu -alpha || exit 1 - ./scripts/update-version.sh -gnu -alpha || exit 1
- npm install - npm install
- ./scripts/lint.sh || exit 1 - ./scripts/lint.sh || exit 1
- npm run spellcheck || exit 1 - rm -rf tmp && mkdir tmp
- npm run stylelint || exit 1 - git merge-base origin/$TRAVIS_BRANCH HEAD > ./tmp/devhead.txt
- rm -rf tmp && (./scripts/smart-build.sh -b $TRAVIS_BRANCH || exit 1;); - (./scripts/smart-build.sh -b $TRAVIS_BRANCH -gnu || exit 1;);
- npm run build:dist || exit 1 - npm run build:dist || exit 1
- ./scripts/license-list-generator.sh - ./scripts/license-list-generator.sh
- stage: Unit test - stage: Unit test
name: core name: core and extensions
script: script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "core$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "core$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test core --watch=false || exit 1; ng test core --watch=false || exit 1;
fi fi;
- stage: Unit test AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
name: extensions
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "extensions$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "extensions$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test extensions --watch=false || exit 1; ng test extensions --watch=false || exit 1;
fi fi;
- stage: Unit test - stage: Unit test
name: process-services name: process-services and insights
script: script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "process-services$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test process-services --watch=false || exit 1; ng test process-services --watch=false || exit 1;
fi fi;
- stage: Unit test AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
name: insights
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "insights$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "insights$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test insights --watch=false || exit 1; ng test insights --watch=false || exit 1;
fi fi;
- stage: Unit test - stage: Unit test
name: content-services name: content-services
script: script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "content-services$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test content-services --watch=false || exit 1; ng test content-services --watch=false || exit 1;
fi fi;
- stage: Unit test - stage: Unit test
name: process-services-cloud name: process-services-cloud
script: script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
ng test process-services-cloud --watch=false || exit 1; ng test process-services-cloud --watch=false || exit 1;
fi fi;
- stage: Unit test - stage: Unit test
name: demo-shell name: demo-shell
script: if ([ "$TRAVIS_BRANCH" = "master" ]); then script: if ([ "$TRAVIS_BRANCH" = "master" ]); then
(./scripts/start.sh -t -ss || exit 1;); (./scripts/start.sh -t -ss -si || exit 1;);
else else
(./scripts/start.sh -dev -t -ss -vjsapi alpha || exit 1;); (./scripts/start.sh -dev -t -ss -si || exit 1;);
fi fi;
- stage: Update children projects dependency #Update generator-ng2-alfresco-app - stage: Update children projects dependency #Update generator-ng2-alfresco-app
name: Update Generator
if: tag =~ .*beta.* if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n generator-ng2-alfresco-app script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n generator-ng2-alfresco-app
- stage: Update children projects dependency # Test Update alfresco-content-app - stage: Update children projects dependency # Test Update alfresco-content-app
name: Update ACA
if: tag =~ .*beta.* if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-content-app script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-content-app
- stage: Update children projects dependency # Test Update adf-app-manager-ui - stage: Update children projects dependency # Test Update adf-app-manager-ui
name: Update adf-app-manager-ui
if: tag =~ .*beta.* if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n adf-app-manager-ui script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n adf-app-manager-ui
- stage: Update children projects dependency # Test Update aalfresco-ng2-components - stage: Update children projects dependency # Test Update alfresco-ng2-components
name: Update alfresco-ng2-components
if: tag =~ .*beta.* if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-ng2-components script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-ng2-components
- stage: Update children projects dependency # Test Update alfresco-modeler-app - stage: Update children projects dependency # Test Update alfresco-modeler-app
name: Update alfresco modeler app
if: tag =~ .*beta.* if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-modeler-app script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n alfresco-modeler-app
- stage: e2e Test # Test core - stage: e2e Test # Test core
name: core name: core
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "core$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "core$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 --host_sso "$E2E_HOST_SSO" --host_bpm "$E2E_HOST_BPM" --host_identity "$E2E_HOST_IDENTITY" -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder core --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder core --skip-lint -save --use-dist || exit 1;);
fi fi;
- stage: e2e Test # Test process-services - stage: e2e Test # Test process-services
name: process-services name: process-services
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "process-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder process-services --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder process-services --skip-lint --use-dist || exit 1;);
fi fi;
- stage: e2e Test # Test content-services - stage: e2e Test # Test content-services
name: content-services name: content-services
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder content-services --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder content-services --skip-lint --use-dist || exit 1;);
fi fi;
- stage: e2e Test # Test search - stage: e2e Test # Test search
name: search name: search
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder search --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder search --skip-lint --use-dist || exit 1;);
fi fi;
- stage: e2e Test # Test process-services-cloud - stage: e2e Test # Test process-services-cloud
name: process-services-cloud name: process-services-cloud
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 --host_sso "$E2E_HOST_SSO" --host_bpm "$E2E_HOST_BPM" --host_identity "$E2E_HOST_IDENTITY" -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder process-services-cloud --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder process-services-cloud --skip-lint --use-dist || exit 1;);
fi fi;
- stage: e2e Test # Test insights - stage: e2e Test # Test insights
name: insights name: insights
script: script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")"; AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
(./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e $E2E_EMAIL -b --folder insights --skip-lint --use-dist || exit 1;); (./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder insights --skip-lint --use-dist -b || exit 1;);
fi fi;
- stage: Create Docker PR - stage: Create Docker and Deploy Docker PR
script: node ./scripts/move-dist-folder.js --base-href $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1) script:
- stage: Deploy Docker PR - if [ "$TRAVIS_PULL_REQUEST" != "false" ];
script: node --no-deprecation ./scripts/pr-deploy.js -n $TRAVIS_BUILD_NUMBER -u $RANCHER_TOKEN -p $RANCHER_SECRET -s $REPO_RANCHER --image "docker:$REPO_DOCKER/adf/demo-shell:$TRAVIS_BUILD_NUMBER" --env $ENVIRONMENT_NAME -r $ENVIRONMENT_URL || exit 1 then
node ./scripts/move-dist-folder.js --base-href $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1);
fi;
- if [ "$TRAVIS_PULL_REQUEST" != "false" ];
then
(node --no-deprecation ./scripts/pr-deploy.js -n $TRAVIS_BUILD_NUMBER -u $RANCHER_TOKEN -p $RANCHER_SECRET -s $REPO_RANCHER --image "docker:$REPO_DOCKER/adf/demo-shell:$TRAVIS_BUILD_NUMBER" --env $ENVIRONMENT_NAME -r $ENVIRONMENT_URL || exit 1);
fi;
# Send coverage data to codecov # Send coverage data to codecov
after_success: after_success:
bash <(curl -s https://codecov.io/bash) -X gcov bash <(curl -s https://codecov.io/bash) -X gcov
cache: cache:
directories: directories:
- node_modules - node_modules
+37 -2
View File
@@ -1,6 +1,41 @@
FROM nginx:alpine # 1. Generate licenses
COPY demo-shell/nginx.conf /etc/nginx/nginx.conf FROM node:11.9-alpine AS builder
WORKDIR /usr/src/alfresco
COPY package.json package.json
RUN mkdir -p ./licenses && \
yarn licenses list > ./licenses/licenses.txt && \
yarn licenses generate-disclaimer > ./licenses/disclaimer.txt
# 2. Generate image
FROM nginx:stable-alpine
LABEL version="3.0.0"
ARG GROUPNAME=Alfresco
ARG GROUPID=1000
ARG USERNAME=adf
ARG USERID=33011
ARG BUILD_NUMBER
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
COPY ./docker/entrypoint.sh /
WORKDIR /usr/share/nginx/html WORKDIR /usr/share/nginx/html
COPY demo-shell/dist/ . COPY demo-shell/dist/ .
COPY --from=builder /usr/src/alfresco/licenses ./licenses
RUN addgroup -g ${GROUPID} ${GROUPNAME} && \
adduser -S -u ${USERID} -G ${GROUPNAME} -s "/bin/bash" ${USERNAME} && \
chown -R ${USERNAME}:${GROUPNAME} ./${BUILD_NUMBER}/app.config.json && \
chown -R ${USERNAME}:${GROUPNAME} /var/cache/nginx && \
touch /var/run/nginx.pid && \
chown -R ${USERNAME}:${GROUPNAME} /var/run/nginx.pid && \
chmod +x /entrypoint.sh && \
chown -R ${USERNAME}:${GROUPNAME} /entrypoint.sh
EXPOSE 8080
USER ${USERNAME}
ENTRYPOINT [ "/entrypoint.sh" ]
+4 -38
View File
@@ -1,39 +1,5 @@
# Introduction to the Alfresco Application Development Framework # Introduction
The Alfresco Application Development Framework (ADF) is based on the [Angular framework](https://angular.io/).
ADF is provided by Alfresco to make it easy to build custom web applications to manage and view content in the [Alfresco Platform Repository](https://docs.alfresco.com/5.2/concepts/content-repo-about.html).
As you probably know, there is a general user interface called [Alfresco Share](https://docs.alfresco.com/5.2/concepts/gs-intro.html) available out-of-the-box.
Share is usually used as a quick way of getting started with content management in Alfresco. It gives you access to pretty much all
the features provided by the ACS system and a lot of customers customize it for their specific domain.
However, there are use cases that Share does not fit very well, such as:
- Feature-based clients, exposing functionality to perform a specific task(s)
- Role-based clients, exposing functionality based on role
- Clients where the UI layout and style differs significantly from the Share layout and styling
- [Mashup clients](http://whatis.techtarget.com/definition/mash-up)
This is where ADF comes into play. You can use it to create exactly the user interface
(i.e. web client) that you require.
The framework consists of several libraries that can be used to form a customized content management application. The available libraries are:
- [Core](lib/core/README.md)
- [Content Services](lib/content-services/README.md)
- [Process Services](lib/process-services/README.md)
- [Insights](lib/insights/README.md)
You can browse documentation for all the components at the
[ADF Component Catalog](https://alfresco.github.io/adf-component-catalog/).
An overview of the architecture is shown below:
<p align="center">
<img title="alfresco-angular-components-architecture" alt='alfresco' src='assets/alfresco-app-dev-framework-architecture.png'></img>
</p>
Here we can also see that there is an Alfresco JavaScript framework in use that wraps the Alfresco REST API, to make things easier for the client developer.
See the [introduction page](docs/user-guide/adf-introduction.md) in our
[documentation](docs/README.md) for an overview of ADF along with links
to useful starting points.
+43 -8
View File
@@ -540,7 +540,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-ng-packagr:build", "builder": "@angular-devkit/build-ng-packagr:build",
"options": { "options": {
"tsConfig": "lib/core/tsconfig.json", "tsConfig": "lib/core/tsconfig.lib.json",
"project": "lib/core/ng-package.json" "project": "lib/core/ng-package.json"
}, },
"configurations": { "configurations": {
@@ -553,7 +553,7 @@
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
"main": "lib/core/test.ts", "main": "lib/core/test.ts",
"tsConfig": "lib/core/tsconfig.json", "tsConfig": "lib/core/tsconfig.spec.json",
"karmaConfig": "lib/core/karma.conf.js", "karmaConfig": "lib/core/karma.conf.js",
"codeCoverage": true, "codeCoverage": true,
"sourceMap": true "sourceMap": true
@@ -582,7 +582,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-ng-packagr:build", "builder": "@angular-devkit/build-ng-packagr:build",
"options": { "options": {
"tsConfig": "lib/content-services/tsconfig.json", "tsConfig": "lib/content-services/tsconfig.lib.json",
"project": "lib/content-services/ng-package.json" "project": "lib/content-services/ng-package.json"
}, },
"configurations": { "configurations": {
@@ -595,7 +595,7 @@
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
"main": "lib/content-services/test.ts", "main": "lib/content-services/test.ts",
"tsConfig": "lib/content-services/tsconfig.json", "tsConfig": "lib/content-services/tsconfig.spec.json",
"karmaConfig": "lib/content-services/karma.conf.js", "karmaConfig": "lib/content-services/karma.conf.js",
"codeCoverage": true, "codeCoverage": true,
"sourceMap": true "sourceMap": true
@@ -624,7 +624,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-ng-packagr:build", "builder": "@angular-devkit/build-ng-packagr:build",
"options": { "options": {
"tsConfig": "lib/process-services/tsconfig.json", "tsConfig": "lib/process-services/tsconfig.lib.json",
"project": "lib/process-services/ng-package.json" "project": "lib/process-services/ng-package.json"
}, },
"configurations": { "configurations": {
@@ -637,7 +637,7 @@
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
"main": "lib/process-services/test.ts", "main": "lib/process-services/test.ts",
"tsConfig": "lib/process-services/tsconfig.json", "tsConfig": "lib/process-services/tsconfig.spec.json",
"karmaConfig": "lib/process-services/karma.conf.js", "karmaConfig": "lib/process-services/karma.conf.js",
"codeCoverage": true, "codeCoverage": true,
"sourceMap": true "sourceMap": true
@@ -708,7 +708,7 @@
"build": { "build": {
"builder": "@angular-devkit/build-ng-packagr:build", "builder": "@angular-devkit/build-ng-packagr:build",
"options": { "options": {
"tsConfig": "lib/insights/tsconfig.json", "tsConfig": "lib/extensions/tsconfig.lib.json",
"project": "lib/insights/ng-package.json" "project": "lib/insights/ng-package.json"
}, },
"configurations": { "configurations": {
@@ -721,7 +721,7 @@
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
"main": "lib/insights/test.ts", "main": "lib/insights/test.ts",
"tsConfig": "lib/insights/tsconfig.json", "tsConfig": "lib/extensions/tsconfig.spec.json",
"karmaConfig": "lib/insights/karma.conf.js", "karmaConfig": "lib/insights/karma.conf.js",
"codeCoverage": true, "codeCoverage": true,
"sourceMap": true "sourceMap": true
@@ -777,6 +777,41 @@
} }
} }
} }
},
"testing": {
"root": "lib/testing",
"sourceRoot": "lib/testing/src",
"projectType": "library",
"prefix": "adf",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "lib/testing/tsconfig.lib.json",
"project": "lib/testing/ng-package.json"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "lib/testing/src/test.ts",
"tsConfig": "lib/testing/tsconfig.spec.json",
"karmaConfig": "lib/testing/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"lib/testing/tsconfig.lib.json",
"lib/testing/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
} }
}, },
"defaultProject": "dist" "defaultProject": "dist"
+2 -1
View File
@@ -123,7 +123,8 @@
"BASESHAREURL", "BASESHAREURL",
"hardend", "hardend",
"filedata", "filedata",
"uncheck" "uncheck",
"subfolders"
], ],
"dictionaries": [ "dictionaries": [
"html", "html",
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "Alfresco-ADF-Angular-Demo", "name": "Alfresco-ADF-Angular-Demo",
"description": "Demo shell for Alfresco Angular components", "description": "Demo shell for Alfresco Angular components",
"version": "3.0.0", "version": "3.1.0",
"author": "Alfresco Software, Ltd.", "author": "Alfresco Software, Ltd.",
"repository": { "repository": {
"type": "git", "type": "git",
+321
View File
@@ -0,0 +1,321 @@
{
"APP": {
"INFO_DRAWER": {
"TITLE": "التفاصيل",
"COMMENTS": "تعليقات",
"PROPERTIES": "الخصائص",
"VERSIONS": "الإصدارات"
},
"HOME": {
"TITLE": "Alfresco المكونات الزاوّية لـ",
"DOCUMENTATION": "الوثائق"
},
"LOGOUT": {
"TITLE": "صفحة الخروج",
"SUB_TITLE": "تم خروجك الآن",
"LOGIN": "دخول",
"HOME": "رئيسية"
},
"ADF_VERSION_MANAGER": {
"ALLOW_DELETE": "السماح بالحذف",
"SHOW_COMMENTS": "إظهار التعليقات على الإصدارات",
"ALLOW_DOWNLOAD": "تمكين تنزيل الإصدار",
"READ_ONLY": "للقراءة فقط",
"COMMENTS": "إظهار التعليقات"
},
"PERSONAL-FILES": "الملفات الشخصية",
"WARN-MULTIPLE-UPLOADS": "عرض تحذير للتحميلات المتعددة.",
"CUSTOM-PERMISSION-MESSAGE": "تمكين رسالة إذن مخصصة",
"MEDIUM-TIME-FORMAT": "تمكين تنسيق وقت متوسط لقائمة المستندات",
"SEARCH": {
"RADIO": {
"NONE": "بلا",
"ALL": "الكل",
"FOLDER": "مجلد",
"DOCUMENT": "مستند"
}
}
},
"title": "مرحبًا",
"VERSION": {
"NO_PERMISSION": "ليس لديك إذن لإدارة إصدارات هذا المحتوى",
"NO_PERMISSION_EVENT": "ليس لديك إذن ${event.permission} ل${event.action} ${event.type}",
"CHOOSE_FILE": "تحديد ملف لرؤية إصداراته",
"DIALOG": {
"CLOSE": "إغلاق",
"TITLE": "إدارة الإصدارات"
}
},
"METADATA": {
"DIALOG": {
"CLOSE": "إغلاق",
"TITLE": "بيانات تعريف"
}
},
"APP_LAYOUT": {
"APP": "تطبيق",
"APP_NAME": "تطبيق ADF التوضيحي",
"HOME": "رئيسية",
"NODE-SELECTOR": "محدد العقدة",
"CONTENT_SERVICES": "Content Services",
"BREADCRUMB": "مسار التنقل",
"NOTIFICATIONS": "إعلامات",
"TASK_LIST": "قائمة المهام",
"PROCESS_LIST": "مهام عملية",
"PROCESS_CLOUD": "سحابة العملية",
"CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services",
"LOGIN": "دخول",
"CUSTOM_SOURCES": "مصادر مخصصة",
"DATATABLE": "جدول بيانات",
"DATATABLE_LAZY": "جدول بيانات (بطيء)",
"DOCUMENT_LIST": "قائمة المستندات",
"TEMPLATE": "قالب",
"FORM": "نموذج",
"FORM_LIST": "قائمة النماذج",
"FORM_LOADING": "تحميل النموذج",
"UPLOADER": "مُحمِّل",
"WEBSCRIPT": "برنامج الويب النصي",
"TAG": "علامة",
"TRASHCAN": "سلة المحذوفات",
"SOCIAL": "اجتماعي",
"SETTINGS": "إعدادات",
"CONFIG-EDITOR": "محرر التكوين",
"OVERLAY_VIEWER": "عارض مركّب",
"ABOUT": "حول",
"SEARCH": "بحث ممتد",
"EXTENDED_SEARCH_QUERY_BODY": "بحث ممتد بنص الاستعلام",
"WORD_TO_SEARCH": "بحث عن كلمة",
"SEARCH_CREATED_BY": "تم الإنشاء بواسطة",
"SEARCH_SERVICE_APPROACH": "حدد هذا لتعطيل خاصية الإدخال والتكوين باستخدام الخدمة",
"HEADER_DATA": "بيانات العنوان",
"TREE_VIEW": "طريقة عرض الشجرة",
"ICONS": "أيقونات",
"PEOPLE_GROUPS_CLOUD": "سحابة الأشخاص/المجموعة",
"PEOPLE_CLOUD": "مكون سحابة الأشخاص",
"GROUPS_CLOUD": "مكون سحابة المجموعة"
},
"TRASHCAN": {
"ACTIONS": {
"DELETE_PERMANENT": "حذف بشكل دائم",
"RESTORE": "استعادة"
},
"EMPTY_STATE": {
"TITLE": "المهملات فارغة",
"FIRST_TEXT": "تم نقل العناصر المحذوفة إلى المهملات.",
"SECOND_TEXT": "أفرغ المهملات لحذف العناصر بشكل دائم."
}
},
"DOCUMENT_LIST": {
"MULTISELECT_CHECKBOXES": "تحديد متعدد (مع خانات اختيارات)",
"THUMBNAILS": "تمكين الصور المصغرة",
"ALLOW_DROP_FILES": "تمكين إسقاط ملفات في مجلد",
"MULTIPLE_FILE_UPLOAD": "تحميل ملفات متعددة",
"FOLDER_UPLOAD": "تحميل مجلد",
"CUSTOM_FILTER": "عامل تصفية امتدادات مخصص",
"MAX_SIZE": "عامل تصفية الحد الأقصى للحجم",
"ENABLE_VERSIONING": "تمكين تعيين الإصدار",
"DESCRIPTION_UPLOAD": "تمكين التحميل",
"ENABLE_INFINITE_SCROLL": "تمكين التمرير اللانهائي",
"MULTISELECT_DESCRIPTION": "استخدام Cmd (Mac) أو Ctrl (Windows) لتبديل تحديد العناصر المتعددة",
"RECENT": {
"EMPTY_STATE": {
"TITLE": "قائمة أحدث الملفات فارغة"
},
"TITLE": "أحدث الملفات"
},
"COLUMNS": {
"DISPLAY_NAME": "اسم العرض",
"IS_LOCKED": "قفل",
"TAG": "علامة",
"NODE_ID": "معرف العقدة",
"CREATED_BY": "تم الإنشاء بواسطة",
"CREATED_ON": "تم الإنشاء في",
"CREATED": "تم الإنشاء",
"SIZE": "الحجم",
"DELETED_ON": "تم الحذف",
"DELETED_BY": "تم الحذف بواسطة"
},
"TOOLBAR": {
"CARDVIEW": "وضع عرض البطاقة",
"SHARE_EDIT": "إعدادات التحرير",
"NEW_FOLDER": "مجلد جديد",
"EDIT_FOLDER": "تحرير مجلد",
"DOWNLOAD": "تنزيل",
"DELETE": "حذف",
"FAVORITES": "إضافة إلى المفضلات",
"SHARE": "مشاركة",
"THEME": "تحديد نسق",
"SHOW_VERSION": "إظهار الإصدار",
"HIDE_VERSION": "إخفاء الإصدار",
"LISTVIEW": "وضع عرض القائمة",
"CREATE_LIBRARY": "إنشاء مكتبة"
},
"ACTIONS": {
"VERSIONS": "إدارة الإصدارات",
"LOCK": "قفل",
"METADATA": "معلومات",
"DOWNLOAD": "تنزيل",
"PERMISSION": "إذن",
"FOLDER": {
"COPY": "نسخ",
"MOVE": "نقل",
"DELETE": "حذف"
},
"DOCUMENT": {
"COPY": "نسخ",
"MOVE": "نقل",
"DELETE": "حذف",
"PROCESS_ACTION": "بدء العملية"
}
}
},
"DATATABLE": {
"RESET_DEFAULT": "إعادة تعيين إلى افتراضي",
"ADD_ROW": "إضافة صف",
"REPLACE_ROWS": "استبدال صفوف",
"REPLACE_COLUMNS": "استبدال أعمدة",
"LOAD_NODE": "تحميل عقدة",
"MULTISELECT": "تحديد متعدد",
"MULTISELECT_DESCRIPTION": "استخدام Cmd (Mac) أو Ctrl (Windows) لتبديل تحديد العناصر المتعددة"
},
"ANALYTICS_REPORT": {
"NO_REPORT_MESSAGE": "لم يتم تحديد تقرير. اختر تقريرًا من القائمة"
},
"PS-TAB": {
"TASKS-TAB": "المهام",
"PROCESSES-TAB": "العملية",
"REPORTS-TAB": "تقارير",
"SETTINGS-TAB": "إعدادات",
"START-TASK": "بدء مهمة",
"START-PROCESS": "بدء العملية",
"PROCESS-AUDIT-LOG": "سجل تدقيق العملية",
"TASK-AUDIT-LOG": "سجل تدقيق المهمة",
"TASK-SHOW-HEADER": "إظهار تفاصيل العنوان"
},
"PS_CLOUD_TAB": {
"APPS_TAB": "تطبيق",
"SETTINGS_TAB": "إعدادات"
},
"FORM-LIST": {
"STORE": "متجر",
"RESTORE": "استعادة"
},
"FORM-LOADING": {
"FORM_DATA": "بيانات النموذج",
"FORM_DATA_MESSAGE": "إدخال قيم لملء النموذج",
"TYPEAHEAD_PLACEHOLDER": "التنبؤ بالحروف",
"RADIO_PLACEHOLDER": "زر الراديو",
"SELECT_PLACEHOLDER": "القائمة المنسدلة"
},
"LOGIN": {
"CONTENT_SERVICES": "Content Services",
"PROCESS_SERVICES": "Process Services",
"LOGIN_FOOTER": "تذييل الدخول",
"SHOW_REMEMBERME": "إظهار تذكرني",
"SHOW_SUCCESS_ROUTE": "إظهار طريق النجاح",
"CUSTOM_LOGO": "شعار مخصص"
},
"SEARCH": {
"RESULTS": "نتائج البحث",
"NO_RESULT": "لم يتم العثور على نتائج",
"FACET_FIELDS": {
"TYPE": "1:النوع",
"SIZE": "2:الحجم",
"CREATOR": "3:المُنشئ",
"MODIFIER": "4:المُعدل",
"CREATED": "5:تم الإنشاء"
},
"FACET_QUERIES": {
"MY_FACET_QUERIES": "استعلامات واجهتي",
"CREATED_THIS_YEAR": "1.تم الإنشاء هذا العام",
"MIMETYPE": "2.النوع: HTML",
"XTRASMALL": "3.الحجم: فائق الصغر",
"SMALL": "4.الحجم: صغير",
"MEDIUM": "5.الحجم: متوسط",
"LARGE": "6.الحجم: كبير",
"XTRALARGE": "7.الحجم: فائق الكبر",
"XXTRALARGE": "8.الحجم: كبير XX"
}
},
"SOCIAL": {
"LIKE": "مكون الإعجاب",
"RATING": "مكون التقييم"
},
"TAG": {
"LIST": "خدمات محتوى علامات القائمة",
"INSERT": "إدراج معرف العقدة",
"NODE_LIST": "قائمة العلامات حسب معرف العقدة"
},
"DEMO_PERMISSION": {
"INHERIT_PERMISSION_BUTTON": "إذن التوريث",
"INHERITED_PERMISSIONS_BUTTON": "تم توريث الإذن"
},
"TASK_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "إدراج معرف التطبيق",
"APP_ID_TYPE_ERROR": "يجب أن يكون معرف التطبيق رقمًا",
"NUMBER_TYPE_ERROR": "يجب أن تكون القيمة رقمًا",
"NUMBER_GREATER_THAN": "يجب أن تكون القيمة أكبر من {{ value }} أو تساويها"
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "صفحة البدء"
}
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "إدراج معرف التطبيق",
"APP_ID_TYPE_ERROR": "يجب أن يكون معرف التطبيق رقمًا",
"NUMBER_GREATER_THAN": "يجب أن تكون القيمة أكبر من {{ value }} أو تساويها"
}
},
"GROUP-TITLE1-TRANSLATION-KEY": "الترجمة الأولى للعنوان المخصص",
"GROUP-TITLE2-TRANSLATION-KEY": "الترجمة الثانية للعنوان المخصص",
"ERROR_CONTENT": {
"507": {
"TITLE": "قرص ACS ممتلئ",
"DESCRIPTION": "يتجاوز المحتوى حد سعة التخزين المكون للشبكة أو النظام",
"SECONDARY_BUTTON": {
"TEXT": ""
},
"RETURN_BUTTON": {
"TEXT": "عودة إلى الرئيسية"
}
}
},
"PROCESS_LIST_CLOUD_DEMO": {
"TITLE": "العرض التوضيحي لسحابة قائمة العملية",
"CUSTOMIZE_FILTERS": "تخصيص عامل التصفية"
},
"TASK_LIST_CLOUD_DEMO": {
"CUSTOMIZE_FILTERS": "تخصيص عامل التصفية"
},
"PEOPLE_GROUPS_CLOUD": {
"SINGLE": "تحديد واحد",
"MULTI": "تحديد متعدد",
"PRESELECTED_VALUE": "تحديد مسبق: ",
"ROLE": "الأدوار: ",
"APP_NAME": "اسم التطبيق",
"APP_FILTER_MODE": "التصفية حسب اسم التطبيق",
"ROLE_FILTER_MODE": "التصفية حسب الدور",
"PRESELECT_VALIDATION": "التحديد المسبق للتحقق من الصحة"
},
"ABOUT": {
"TITLE": "مكونات إضافية",
"TABLE_HEADERS": {
"ID": "المعرف",
"NAME": "الاسم",
"VERSION": "الإصدار",
"VENDOR": "المورد",
"LICENSE": "الترخيص",
"RUNTIME": "وقت التشغيل",
"DESCRIPTION": "الوصف"
}
},
"SETTINGS_CLOUD": {
"MULTISELECTION": "تحديد متعدد",
"TESTING_MODE": "وضع الاختبار",
"SELECTION_MODE": "وضع التحديد",
"TASK_DETAILS_REDIRECTION": "عرض تفاصيل المهمة عند النقر فوق المهمة"
}
}
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Anwendung",
"APP_NAME": "ADF-Demoanwendung", "APP_NAME": "ADF-Demoanwendung",
"HOME": "Startseite", "HOME": "Startseite",
"NODE-SELECTOR": "Node-Auswahl", "NODE-SELECTOR": "Node-Auswahl",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Benachrichtigungen", "NOTIFICATIONS": "Benachrichtigungen",
"TASK_LIST": "Aufgabenliste", "TASK_LIST": "Aufgabenliste",
"PROCESS_LIST": "Prozessliste", "PROCESS_LIST": "Prozessliste",
"PROCESS_CLOUD": "Prozess-Cloud", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Anmelden", "LOGIN": "Anmelden",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Ihren Filter anpassen" "CUSTOMIZE_FILTERS": "Ihren Filter anpassen"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Einzeln", "SINGLE": "Einzelauswahl",
"MULTI": "Mehrfach", "MULTI": "Mehrfachauswahl",
"PRESELECTED_VALUE": "Vorausgewählter Wert" "PRESELECTED_VALUE": "Vorauswahl: ",
"ROLE": "Rollen: ",
"APP_NAME": "Anwendungsname",
"APP_FILTER_MODE": "Nach Anwendungsname filtern",
"ROLE_FILTER_MODE": "Nach Rolle filtern",
"PRESELECT_VALIDATION": "Vorauswahl-Prüfung"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plugins", "TITLE": "Plugins",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Mehrfachauswahl", "MULTISELECTION": "Mehrfachauswahl",
"TESTING_MODE": "Testmodus", "TESTING_MODE": "Testmodus",
"SELECTION_MODE": "Auswahlmodus" "SELECTION_MODE": "Auswahlmodus",
"TASK_DETAILS_REDIRECTION": "Bei Klicken auf Aufgabe Aufgabendetails einblenden"
} }
} }
+11 -4
View File
@@ -53,9 +53,11 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "App",
"APP_NAME": "ADF Demo Application", "APP_NAME": "ADF Demo Application",
"HOME": "Home", "HOME": "Home",
"NODE-SELECTOR": "Node Selector", "NODE-SELECTOR": "Node Selector",
"SITES": "Sites",
"CONTENT_SERVICES": "Content Services", "CONTENT_SERVICES": "Content Services",
"BREADCRUMB": "Breadcrumb", "BREADCRUMB": "Breadcrumb",
"NOTIFICATIONS": "Notifications", "NOTIFICATIONS": "Notifications",
@@ -293,7 +295,11 @@
"SINGLE": "Single Selection", "SINGLE": "Single Selection",
"MULTI": "Multiple Selection", "MULTI": "Multiple Selection",
"PRESELECTED_VALUE": "Preselect: ", "PRESELECTED_VALUE": "Preselect: ",
"ROLE": "Roles: " "ROLE": "Roles: ",
"APP_NAME": "Application Name",
"APP_FILTER_MODE": "Filter by application name",
"ROLE_FILTER_MODE": "Filter by role",
"PRESELECT_VALIDATION": "Preselect validation"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plugins", "TITLE": "Plugins",
@@ -308,8 +314,9 @@
} }
}, },
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Multiselection", "MULTISELECTION": "Multiselection",
"TESTING_MODE": "Testing Mode", "TESTING_MODE": "Testing Mode",
"SELECTION_MODE": "Selection Mode" "SELECTION_MODE": "Selection Mode",
"TASK_DETAILS_REDIRECTION": "Display task details on task click"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Aplicación",
"APP_NAME": "Aplicación ADF Demo", "APP_NAME": "Aplicación ADF Demo",
"HOME": "Inicio", "HOME": "Inicio",
"NODE-SELECTOR": "Selector de nodo", "NODE-SELECTOR": "Selector de nodo",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Notificaciones", "NOTIFICATIONS": "Notificaciones",
"TASK_LIST": "Lista de tareas", "TASK_LIST": "Lista de tareas",
"PROCESS_LIST": "Lista de procesos", "PROCESS_LIST": "Lista de procesos",
"PROCESS_CLOUD": "Procesos en la nube", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Iniciar sesión", "LOGIN": "Iniciar sesión",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Personalice su filtro" "CUSTOMIZE_FILTERS": "Personalice su filtro"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Individual", "SINGLE": "Selección individual",
"MULTI": "Múltiple", "MULTI": "Selección múltiple",
"PRESELECTED_VALUE": "Valor preseleccionado" "PRESELECTED_VALUE": "Preseleccionar: ",
"ROLE": "Funciones: ",
"APP_NAME": "Nombre de la aplicación",
"APP_FILTER_MODE": "Filtrar por nombre de la aplicación",
"ROLE_FILTER_MODE": "Filtrar por función",
"PRESELECT_VALIDATION": "Preseleccionar validación"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Complementos", "TITLE": "Complementos",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Selección múltiple", "MULTISELECTION": "Selección múltiple",
"TESTING_MODE": "Modo de prueba", "TESTING_MODE": "Modo de prueba",
"SELECTION_MODE": "Modo de selección" "SELECTION_MODE": "Modo de selección",
"TASK_DETAILS_REDIRECTION": "Mostrar detalles de la tarea haciendo clic en la tarea"
} }
} }
+11 -4
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Application",
"APP_NAME": "Application Démo ADF", "APP_NAME": "Application Démo ADF",
"HOME": "Accueil", "HOME": "Accueil",
"NODE-SELECTOR": "Sélecteur de nœud", "NODE-SELECTOR": "Sélecteur de nœud",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Personnaliser votre filtre" "CUSTOMIZE_FILTERS": "Personnaliser votre filtre"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Simple", "SINGLE": "Sélection unique",
"MULTI": "Multi", "MULTI": "Sélection multiple",
"PRESELECTED_VALUE": "Valeur présélectionnée" "PRESELECTED_VALUE": "Présélection : ",
"ROLE": "Rôles : ",
"APP_NAME": "Nom de l'application",
"APP_FILTER_MODE": "Filtrer par nom d'application",
"ROLE_FILTER_MODE": "Filtrer par rôle",
"PRESELECT_VALIDATION": "Validation présélectionnée"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plugins", "TITLE": "Plugins",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Multisélection", "MULTISELECTION": "Multisélection",
"TESTING_MODE": "Mode de test", "TESTING_MODE": "Mode de test",
"SELECTION_MODE": "Mode de sélection" "SELECTION_MODE": "Mode de sélection",
"TASK_DETAILS_REDIRECTION": "Afficher les détails de la tâche en cliquant dessus"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Applicazione",
"APP_NAME": "Applicazione demo ADF", "APP_NAME": "Applicazione demo ADF",
"HOME": "Home", "HOME": "Home",
"NODE-SELECTOR": "Selezione nodo", "NODE-SELECTOR": "Selezione nodo",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Notifiche", "NOTIFICATIONS": "Notifiche",
"TASK_LIST": "Elenco attività", "TASK_LIST": "Elenco attività",
"PROCESS_LIST": "Elenco processi", "PROCESS_LIST": "Elenco processi",
"PROCESS_CLOUD": "Cloud processo", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Login", "LOGIN": "Login",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Personalizza il filtro" "CUSTOMIZE_FILTERS": "Personalizza il filtro"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Singolo", "SINGLE": "Selezione singola",
"MULTI": "Multiplo", "MULTI": "Selezione multipla",
"PRESELECTED_VALUE": "Valore preselezionato" "PRESELECTED_VALUE": "Preselezione: ",
"ROLE": "Ruoli: ",
"APP_NAME": "Nome applicazione",
"APP_FILTER_MODE": "Filtra per nome applicazione",
"ROLE_FILTER_MODE": "Filtra per ruolo",
"PRESELECT_VALIDATION": "Convalida preselezione"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plug-in", "TITLE": "Plug-in",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Selezione multipla", "MULTISELECTION": "Selezione multipla",
"TESTING_MODE": "Modalità di test", "TESTING_MODE": "Modalità di test",
"SELECTION_MODE": "Modalità di selezione" "SELECTION_MODE": "Modalità di selezione",
"TASK_DETAILS_REDIRECTION": "Mostra dettagli compito dopo clic su compito"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "アプリ",
"APP_NAME": "ADF デモアプリケーション", "APP_NAME": "ADF デモアプリケーション",
"HOME": "ホーム", "HOME": "ホーム",
"NODE-SELECTOR": "ノードセレクター", "NODE-SELECTOR": "ノードセレクター",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "通知", "NOTIFICATIONS": "通知",
"TASK_LIST": "タスクリスト", "TASK_LIST": "タスクリスト",
"PROCESS_LIST": "プロセスリスト", "PROCESS_LIST": "プロセスリスト",
"PROCESS_CLOUD": "Process Cloud", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "ログイン", "LOGIN": "ログイン",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "フィルタのカスタマイズ" "CUSTOMIZE_FILTERS": "フィルタのカスタマイズ"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "1 ", "SINGLE": "1 つ選択",
"MULTI": "複数", "MULTI": "複数選択",
"PRESELECTED_VALUE": "事前選択値" "PRESELECTED_VALUE": "事前選択: ",
"ROLE": "役割: ",
"APP_NAME": "アプリケーション名",
"APP_FILTER_MODE": "アプリケーション名でフィルタ",
"ROLE_FILTER_MODE": "役割でフィルタ",
"PRESELECT_VALIDATION": "事前選択の検証"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "プラグイン", "TITLE": "プラグイン",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "複数選択", "MULTISELECTION": "複数選択",
"TESTING_MODE": "テストモード", "TESTING_MODE": "テストモード",
"SELECTION_MODE": "選択モード" "SELECTION_MODE": "選択モード",
"TASK_DETAILS_REDIRECTION": "タスクのクリック時にタスクの詳細を表示"
} }
} }
+11 -4
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "App",
"APP_NAME": "ADF-demoprogam", "APP_NAME": "ADF-demoprogam",
"HOME": "Hjem", "HOME": "Hjem",
"NODE-SELECTOR": "Nodevelger", "NODE-SELECTOR": "Nodevelger",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Tilpass filteret ditt" "CUSTOMIZE_FILTERS": "Tilpass filteret ditt"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Enkel", "SINGLE": "Ett valg",
"MULTI": "Flere", "MULTI": "Flere valg",
"PRESELECTED_VALUE": "Forhåndsvalgt verdi" "PRESELECTED_VALUE": "Forhåndsvelg: ",
"ROLE": "Roller: ",
"APP_NAME": "Programnavn",
"APP_FILTER_MODE": "Filtrer etter programnavn",
"ROLE_FILTER_MODE": "Filtrer etter rolle",
"PRESELECT_VALIDATION": "Forhåndsvelg validering"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plugin-moduler", "TITLE": "Plugin-moduler",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Flervalg", "MULTISELECTION": "Flervalg",
"TESTING_MODE": "Testmodus", "TESTING_MODE": "Testmodus",
"SELECTION_MODE": "Valgmodus" "SELECTION_MODE": "Valgmodus",
"TASK_DETAILS_REDIRECTION": "Vis oppgavedetaljer ved oppgaveklikk"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "App",
"APP_NAME": "ADF-demotoepassing", "APP_NAME": "ADF-demotoepassing",
"HOME": "Home", "HOME": "Home",
"NODE-SELECTOR": "Selectiefunctie voor node", "NODE-SELECTOR": "Selectiefunctie voor node",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Meldingen", "NOTIFICATIONS": "Meldingen",
"TASK_LIST": "Lijst met taken", "TASK_LIST": "Lijst met taken",
"PROCESS_LIST": "Lijst met processen", "PROCESS_LIST": "Lijst met processen",
"PROCESS_CLOUD": "Process Cloud", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Aanmelden", "LOGIN": "Aanmelden",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Uw filter aanpassen" "CUSTOMIZE_FILTERS": "Uw filter aanpassen"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Eén", "SINGLE": "Enkelvoudige selectie",
"MULTI": "Multi", "MULTI": "Meervoudige selectie",
"PRESELECTED_VALUE": "Vooraf geselecteerde waarde" "PRESELECTED_VALUE": "Voorselecteren: ",
"ROLE": "Rollen: ",
"APP_NAME": "Toepassingsnaam",
"APP_FILTER_MODE": "Filteren op toepassingsnaam",
"ROLE_FILTER_MODE": "Filteren op rol",
"PRESELECT_VALIDATION": "Validatie voorselecteren"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plug-ins", "TITLE": "Plug-ins",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Multiselectie", "MULTISELECTION": "Multiselectie",
"TESTING_MODE": "Testmodus", "TESTING_MODE": "Testmodus",
"SELECTION_MODE": "Selectiemodus" "SELECTION_MODE": "Selectiemodus",
"TASK_DETAILS_REDIRECTION": "Taakdetails weergeven bij klikken op taak"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Aplicativo",
"APP_NAME": "Aplicativo Demo ADF", "APP_NAME": "Aplicativo Demo ADF",
"HOME": "Página Inicial", "HOME": "Página Inicial",
"NODE-SELECTOR": "Seletor de nó", "NODE-SELECTOR": "Seletor de nó",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Notificações", "NOTIFICATIONS": "Notificações",
"TASK_LIST": "Lista de tarefas", "TASK_LIST": "Lista de tarefas",
"PROCESS_LIST": "Lista de processos", "PROCESS_LIST": "Lista de processos",
"PROCESS_CLOUD": "Process Cloud", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Login", "LOGIN": "Login",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Personalizar seu filtro" "CUSTOMIZE_FILTERS": "Personalizar seu filtro"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Único", "SINGLE": "Seleção única",
"MULTI": "Múltiplo", "MULTI": "Seleção múltipla",
"PRESELECTED_VALUE": "Valor pré-selecionado" "PRESELECTED_VALUE": "Pré-seleção: ",
"ROLE": "Funções: ",
"APP_NAME": "Nome do aplicativo",
"APP_FILTER_MODE": "Filtrar por nome do aplicativo",
"ROLE_FILTER_MODE": "Filtrar por função",
"PRESELECT_VALIDATION": "Validação de pré-seleção"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Plugins", "TITLE": "Plugins",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Seleção Múltipla", "MULTISELECTION": "Seleção Múltipla",
"TESTING_MODE": "Modo de Teste", "TESTING_MODE": "Modo de Teste",
"SELECTION_MODE": "Modo de Seleção" "SELECTION_MODE": "Modo de Seleção",
"TASK_DETAILS_REDIRECTION": "Exibir detalhes da tarefa ao clicar na tarefa"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "Приложение",
"APP_NAME": "Демонстрационное приложение ADF", "APP_NAME": "Демонстрационное приложение ADF",
"HOME": "Домашняя", "HOME": "Домашняя",
"NODE-SELECTOR": "Селектор узлов", "NODE-SELECTOR": "Селектор узлов",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "Оповещения", "NOTIFICATIONS": "Оповещения",
"TASK_LIST": "Список задач", "TASK_LIST": "Список задач",
"PROCESS_LIST": "Список процессов", "PROCESS_LIST": "Список процессов",
"PROCESS_CLOUD": "Процесс в облаке", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "Войти", "LOGIN": "Войти",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "Настройка фильтра" "CUSTOMIZE_FILTERS": "Настройка фильтра"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "Один", "SINGLE": "Единичный выбор",
"MULTI": "Несколько", "MULTI": "Групповой выбор",
"PRESELECTED_VALUE": "Предустановленное значение" "PRESELECTED_VALUE": "Предварительный выбор: ",
"ROLE": "Роли: ",
"APP_NAME": "Имя приложения",
"APP_FILTER_MODE": "Фильтровать по имени приложения",
"ROLE_FILTER_MODE": "Фильтровать по роли",
"PRESELECT_VALIDATION": "Проверка предварительного выбора"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "Подключаемые модули", "TITLE": "Подключаемые модули",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "Выбор нескольких", "MULTISELECTION": "Выбор нескольких",
"TESTING_MODE": "Режим тестирования", "TESTING_MODE": "Режим тестирования",
"SELECTION_MODE": "Режим выбора" "SELECTION_MODE": "Режим выбора",
"TASK_DETAILS_REDIRECTION": "Отображать подробные сведения о задаче при нажатии на задачу"
} }
} }
+12 -5
View File
@@ -53,6 +53,7 @@
} }
}, },
"APP_LAYOUT": { "APP_LAYOUT": {
"APP": "APP",
"APP_NAME": "ADF 演示应用程序", "APP_NAME": "ADF 演示应用程序",
"HOME": "主页", "HOME": "主页",
"NODE-SELECTOR": "节点选择器", "NODE-SELECTOR": "节点选择器",
@@ -61,7 +62,7 @@
"NOTIFICATIONS": "通知", "NOTIFICATIONS": "通知",
"TASK_LIST": "任务列表", "TASK_LIST": "任务列表",
"PROCESS_LIST": "流程列表", "PROCESS_LIST": "流程列表",
"PROCESS_CLOUD": "Process Cloud", "PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView", "CARD_VIEW": "CardView",
"PROCESS_SERVICES": "Process Services", "PROCESS_SERVICES": "Process Services",
"LOGIN": "登录", "LOGIN": "登录",
@@ -290,9 +291,14 @@
"CUSTOMIZE_FILTERS": "自定义您的筛选器" "CUSTOMIZE_FILTERS": "自定义您的筛选器"
}, },
"PEOPLE_GROUPS_CLOUD": { "PEOPLE_GROUPS_CLOUD": {
"SINGLE": "单个", "SINGLE": "单个选择",
"MULTI": "多", "MULTI": "多重选择",
"PRESELECTED_VALUE": "预选值" "PRESELECTED_VALUE": "预先选择: ",
"ROLE": "角色: ",
"APP_NAME": "应用程序名称",
"APP_FILTER_MODE": "按应用程序名称筛选",
"ROLE_FILTER_MODE": "按角色筛选",
"PRESELECT_VALIDATION": "预先选择验证"
}, },
"ABOUT": { "ABOUT": {
"TITLE": "插件", "TITLE": "插件",
@@ -309,6 +315,7 @@
"SETTINGS_CLOUD": { "SETTINGS_CLOUD": {
"MULTISELECTION": "多重选择", "MULTISELECTION": "多重选择",
"TESTING_MODE": "测试模式", "TESTING_MODE": "测试模式",
"SELECTION_MODE": "选择模式" "SELECTION_MODE": "选择模式",
"TASK_DETAILS_REDIRECTION": "单击任务时显示任务详情"
} }
} }
+61 -8
View File
@@ -70,6 +70,10 @@
{ {
"key": "zh-CN", "key": "zh-CN",
"label": "中文简体" "label": "中文简体"
},
{
"key": "ar",
"label": "عربى"
} }
], ],
"search": { "search": {
@@ -102,6 +106,7 @@
} }
] ]
}, },
"resetButton": true,
"filterQueries": [ "filterQueries": [
{ "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" }, { "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" },
{ "query": "NOT cm:creator:System" } { "query": "NOT cm:creator:System" }
@@ -122,7 +127,7 @@
"expanded": true, "expanded": true,
"mincount": 1, "mincount": 1,
"queries": [ "queries": [
{ "query": "created:2018", "label": "SEARCH.FACET_QUERIES.CREATED_THIS_YEAR" }, { "query": "created:2019", "label": "SEARCH.FACET_QUERIES.CREATED_THIS_YEAR" },
{ "query": "content.mimetype:text/html", "label": "SEARCH.FACET_QUERIES.MIMETYPE", "group":"Type facet queries" }, { "query": "content.mimetype:text/html", "label": "SEARCH.FACET_QUERIES.MIMETYPE", "group":"Type facet queries" },
{ "query": "content.size:[0 TO 10240]", "label": "SEARCH.FACET_QUERIES.XTRASMALL", "group":"Size facet queries"}, { "query": "content.size:[0 TO 10240]", "label": "SEARCH.FACET_QUERIES.XTRASMALL", "group":"Size facet queries"},
{ "query": "content.size:[10240 TO 102400]", "label": "SEARCH.FACET_QUERIES.SMALL", "group":"Size facet queries"}, { "query": "content.size:[10240 TO 102400]", "label": "SEARCH.FACET_QUERIES.SMALL", "group":"Size facet queries"},
@@ -132,6 +137,30 @@
{ "query": "content.size:[134217728 TO MAX]", "label": "SEARCH.FACET_QUERIES.XXTRALARGE", "group":"Size facet queries" } { "query": "content.size:[134217728 TO MAX]", "label": "SEARCH.FACET_QUERIES.XXTRALARGE", "group":"Size facet queries" }
] ]
}, },
"facetIntervals":{
"expanded": true,
"intervals":[
{
"label":"The Created",
"field":"cm:created",
"sets":[
{ "label":"lastYear", "start":"2018", "end":"2019", "endInclusive":false },
{ "label":"currentYear", "start":"NOW/YEAR", "end":"NOW/YEAR+1YEAR" },
{ "label":"earlier", "start":"*", "end":"2018", "endInclusive":false }
]
},
{
"label":"TheModified",
"field":"cm:modified",
"sets":[
{ "label":"2017", "start":"2017", "end":"2018", "endInclusive":false },
{ "label":"2017-2018", "start":"2017", "end":"2018", "endInclusive":true },
{ "label":"currentYear", "start":"NOW/YEAR", "end":"NOW/YEAR+1YEAR" },
{ "label":"earlierThan2017", "start":"*", "end":"2017", "endInclusive":false }
]
}
]
},
"categories": [ "categories": [
{ {
"id": "queryName", "id": "queryName",
@@ -220,7 +249,23 @@
} }
} }
} }
] ],
"highlight": {
"prefix": " ",
"postfix": " ",
"mergeContiguous": true,
"fields": [
{
"field": "cm:title"
},
{
"field": "description",
"prefix": "(",
"postfix": ")"
}
]
}
}, },
"pagination": { "pagination": {
"size": 20, "size": 20,
@@ -542,14 +587,20 @@
} }
}, },
"adf-edit-task-filter": { "adf-edit-task-filter": {
"properties": [ "filterProperties": [ "status", "assignee", "sort", "order" ],
"state", "assignment", "sort", "order" "sortProperties": [ "id", "name", "createdDate", "priority", "processDefinitionId" ],
] "actions": [ "save", "saveAs", "delete" ]
},
"adf-edit-process-filter": {
"filterProperties": [ "status", "sort", "order", "processName" ],
"sortProperties": [ "id", "name", "status", "startDate" ],
"actions": ["save", "saveAs", "delete"]
}, },
"content-metadata": { "content-metadata": {
"presets": { "presets": {
"default": { "default": {
"exif:exif": "*" "exif:exif": "*"
} }
} }
}, },
@@ -564,6 +615,7 @@
"key": "entry.id", "key": "entry.id",
"type": "text", "type": "text",
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.ID", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.ID",
"cssClass": "adf-expand-cell-4",
"sortable": true "sortable": true
}, },
{ {
@@ -571,7 +623,7 @@
"type": "text", "type": "text",
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.NAME", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.NAME",
"sortable": true, "sortable": true,
"cssClass": "full-width name-column ellipsis-cell" "cssClass": "name-column adf-ellipsis-cell"
}, },
{ {
"key": "entry.status", "key": "entry.status",
@@ -632,5 +684,6 @@
} }
] ]
} }
} },
"alfresco-deployed-apps": []
} }
@@ -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 { NgModule } from '@angular/core';
import { AcaMonacoModule } from 'adf-monaco-extension';
@NgModule({
imports: [
AcaMonacoModule
]
})
export class AppExtensionsModule {
}
+4 -2
View File
@@ -1,2 +1,4 @@
<router-outlet></router-outlet> <div [dir]="textOrientation" class="adf-demo-app-container" >
<router-outlet name="overlay"></router-outlet> <router-outlet></router-outlet>
<router-outlet name="overlay"></router-outlet>
</div>
+8 -3
View File
@@ -7,15 +7,20 @@ router-outlet[name='overlay'] + * {
right: 0; right: 0;
} }
.adf-demo-app-container {
height: 100%;
width: 100%;
}
@media (max-width: 425px) { @media (max-width: 425px) {
adf-content-node-selector { adf-content-node-selector {
.adf-content-node-selector-content-list { .adf-content-node-selector-content-list {
.adf-data-table-cell { .adf-datatable-cell {
display: none; display: none;
} }
.adf-data-table-cell:first-child, .adf-datatable-cell:first-child,
.adf-data-table-cell:nth-child(2) { .adf-datatable-cell:nth-child(2) {
display: table-cell; display: table-cell;
} }
} }
+16 -1
View File
@@ -16,7 +16,12 @@
*/ */
import { Component, ViewEncapsulation, OnInit } from '@angular/core'; import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { AuthenticationService, AlfrescoApiService, PageTitleService } from '@alfresco/adf-core'; import {
UserPreferencesService,
AuthenticationService,
AlfrescoApiService,
PageTitleService
} from '@alfresco/adf-core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { MatDialog } from '@angular/material'; import { MatDialog } from '@angular/material';
@@ -28,14 +33,24 @@ import { MatDialog } from '@angular/material';
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
textOrientation: string = 'ltr';
constructor(private pageTitleService: PageTitleService, constructor(private pageTitleService: PageTitleService,
private alfrescoApiService: AlfrescoApiService, private alfrescoApiService: AlfrescoApiService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private userPreferencesService: UserPreferencesService,
private router: Router, private router: Router,
private dialogRef: MatDialog) { private dialogRef: MatDialog) {
this.userPreferencesService.set('textOrientation', this.textOrientation);
} }
ngOnInit() { ngOnInit() {
this.userPreferencesService.select('textOrientation').subscribe((textOrientation) => {
this.textOrientation = textOrientation;
});
this.pageTitleService.setTitle('title'); this.pageTitleService.setTitle('title');
this.alfrescoApiService.getInstance().on('error', (error) => { this.alfrescoApiService.getInstance().on('error', (error) => {
+13 -5
View File
@@ -24,6 +24,7 @@ import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule } from '@alfresco/adf-core'; import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule } from '@alfresco/adf-core';
import { ExtensionsModule } from '@alfresco/adf-extensions';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { MaterialModule } from './material.module'; import { MaterialModule } from './material.module';
import { LoginComponent } from './components/login/login.component'; import { LoginComponent } from './components/login/login.component';
@@ -63,9 +64,8 @@ import { ContentModule } from '@alfresco/adf-content-services';
import { InsightsModule } from '@alfresco/adf-insights'; import { InsightsModule } from '@alfresco/adf-insights';
import { ProcessModule } from '@alfresco/adf-process-services'; import { ProcessModule } from '@alfresco/adf-process-services';
import { AuthBearerInterceptor } from './services'; import { AuthBearerInterceptor } from './services';
import { ProcessServicesCloudModule, GroupCloudModule } from '@alfresco/adf-process-services-cloud'; import { ProcessServicesCloudModule, GroupCloudModule, TaskDirectiveModule } from '@alfresco/adf-process-services-cloud';
import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component'; import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component';
import { AppExtensionsModule } from './extensions/extensions.module';
import { CloudLayoutComponent } from './components/app-layout/cloud/cloud-layout.component'; import { CloudLayoutComponent } from './components/app-layout/cloud/cloud-layout.component';
import { AppsCloudDemoComponent } from './components/app-layout/cloud/apps-cloud-demo.component'; import { AppsCloudDemoComponent } from './components/app-layout/cloud/apps-cloud-demo.component';
import { ProcessesCloudDemoComponent } from './components/app-layout/cloud/processes-cloud-demo.component'; import { ProcessesCloudDemoComponent } from './components/app-layout/cloud/processes-cloud-demo.component';
@@ -78,6 +78,9 @@ import { StartProcessCloudDemoComponent } from './components/app-layout/cloud/st
import { TemplateDemoComponent } from './components/template-list/template-demo.component'; import { TemplateDemoComponent } from './components/template-list/template-demo.component';
import { PeopleGroupCloudDemoComponent } from './components/app-layout/cloud/people-groups-cloud-demo.component'; import { PeopleGroupCloudDemoComponent } from './components/app-layout/cloud/people-groups-cloud-demo.component';
import { CloudSettingsComponent } from './components/app-layout/cloud/cloud-settings.component'; import { CloudSettingsComponent } from './components/app-layout/cloud/cloud-settings.component';
import { AppExtensionsModule } from './app-extension.module';
import { ProcessDetailsCloudDemoComponent } from './components/app-layout/cloud/process-details-cloud-demo.component';
import { NestedMenuPositionDirective } from './components/app-layout/cloud/directives/nested-menu-position.directive';
@NgModule({ @NgModule({
imports: [ imports: [
@@ -88,17 +91,20 @@ import { CloudSettingsComponent } from './components/app-layout/cloud/cloud-sett
FormsModule, FormsModule,
HttpClientModule, HttpClientModule,
MaterialModule, MaterialModule,
AppExtensionsModule,
FlexLayoutModule, FlexLayoutModule,
CoreModule.forRoot(), CoreModule.forRoot(),
ContentModule.forRoot(), ContentModule.forRoot(),
InsightsModule.forRoot(), InsightsModule.forRoot(),
ProcessModule.forRoot(), ProcessModule.forRoot(),
ProcessServicesCloudModule,
ExtensionsModule.forRoot(),
ThemePickerModule, ThemePickerModule,
ChartsModule, ChartsModule,
MonacoEditorModule.forRoot(), MonacoEditorModule.forRoot(),
ProcessServicesCloudModule, ProcessServicesCloudModule,
AppExtensionsModule.forRoot(), GroupCloudModule,
GroupCloudModule TaskDirectiveModule
], ],
declarations: [ declarations: [
AppComponent, AppComponent,
@@ -134,13 +140,15 @@ import { CloudSettingsComponent } from './components/app-layout/cloud/cloud-sett
TasksCloudDemoComponent, TasksCloudDemoComponent,
ProcessesCloudDemoComponent, ProcessesCloudDemoComponent,
TaskDetailsCloudDemoComponent, TaskDetailsCloudDemoComponent,
ProcessDetailsCloudDemoComponent,
StartTaskCloudDemoComponent, StartTaskCloudDemoComponent,
StartProcessCloudDemoComponent, StartProcessCloudDemoComponent,
CloudBreadcrumbsComponent, CloudBreadcrumbsComponent,
CloudFiltersDemoComponent, CloudFiltersDemoComponent,
TemplateDemoComponent, TemplateDemoComponent,
PeopleGroupCloudDemoComponent, PeopleGroupCloudDemoComponent,
CloudSettingsComponent CloudSettingsComponent,
NestedMenuPositionDirective
], ],
providers: [ providers: [
{ {
+24 -2
View File
@@ -17,7 +17,7 @@
import { ModuleWithProviders } from '@angular/core'; import { ModuleWithProviders } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { AuthGuard, AuthGuardEcm, ErrorContentComponent, AuthGuardBpm } from '@alfresco/adf-core'; import { AuthGuard, AuthGuardEcm, ErrorContentComponent, AuthGuardBpm, AuthGuardSsoRoleService } from '@alfresco/adf-core';
import { AppLayoutComponent } from './components/app-layout/app-layout.component'; import { AppLayoutComponent } from './components/app-layout/app-layout.component';
import { LoginComponent } from './components/login/login.component'; import { LoginComponent } from './components/login/login.component';
import { HomeComponent } from './components/home/home.component'; import { HomeComponent } from './components/home/home.component';
@@ -48,6 +48,7 @@ import { StartTaskCloudDemoComponent } from './components/app-layout/cloud/start
import { StartProcessCloudDemoComponent } from './components/app-layout/cloud/start-process-cloud-demo.component'; import { StartProcessCloudDemoComponent } from './components/app-layout/cloud/start-process-cloud-demo.component';
import { TemplateDemoComponent } from './components/template-list/template-demo.component'; import { TemplateDemoComponent } from './components/template-list/template-demo.component';
import { PeopleGroupCloudDemoComponent } from './components/app-layout/cloud/people-groups-cloud-demo.component'; import { PeopleGroupCloudDemoComponent } from './components/app-layout/cloud/people-groups-cloud-demo.component';
import { ProcessDetailsCloudDemoComponent } from './components/app-layout/cloud/process-details-cloud-demo.component';
export const appRoutes: Routes = [ export const appRoutes: Routes = [
{ path: 'login', component: LoginComponent }, { path: 'login', component: LoginComponent },
@@ -118,6 +119,16 @@ export const appRoutes: Routes = [
} }
] ]
}, },
{
path: 'sites',
component: AppLayoutComponent,
children: [
{
path: '',
loadChildren: 'app/components/sites/sites.module#SitesModule'
}
]
},
{ {
path: 'header-data', path: 'header-data',
component: AppLayoutComponent, component: AppLayoutComponent,
@@ -143,6 +154,8 @@ export const appRoutes: Routes = [
}, },
{ {
path: 'cloud', path: 'cloud',
canActivate: [AuthGuardSsoRoleService],
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403'},
children: [ children: [
{ {
path: '', path: '',
@@ -153,7 +166,7 @@ export const appRoutes: Routes = [
component: PeopleGroupCloudDemoComponent component: PeopleGroupCloudDemoComponent
}, },
{ {
path: ':applicationName', path: ':appName',
children: [ children: [
{ {
path: '', path: '',
@@ -180,7 +193,12 @@ export const appRoutes: Routes = [
{ {
path: 'task-details/:taskId', path: 'task-details/:taskId',
component: TaskDetailsCloudDemoComponent component: TaskDetailsCloudDemoComponent
},
{
path: 'process-details/:processInstanceId',
component: ProcessDetailsCloudDemoComponent
} }
] ]
} }
] ]
@@ -359,6 +377,10 @@ export const appRoutes: Routes = [
path: 'error/:id', path: 'error/:id',
component: ErrorContentComponent component: ErrorContentComponent
}, },
{
path: 'error/no-authorization',
component: ErrorContentComponent
},
{ {
path: '**', path: '**',
redirectTo: 'error/404' redirectTo: 'error/404'
@@ -1,51 +1 @@
<h3>{{ 'ABOUT.TITLE' | translate }}</h3>
<div class="adf-extension-details-container">
<mat-table [dataSource]="extensions$ | async">
<!-- $id Column -->
<ng-container matColumnDef="$id">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.ID' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$id}}</mat-cell>
</ng-container>
<!-- $name Column -->
<ng-container matColumnDef="$name">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.NAME' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$name}}</mat-cell>
</ng-container>
<!-- $version Column -->
<ng-container matColumnDef="$version">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.VERSION' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$version}}</mat-cell>
</ng-container>
<!-- $vendor Column -->
<ng-container matColumnDef="$vendor">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.VENDOR' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$vendor}}</mat-cell>
</ng-container>
<!-- $license Column -->
<ng-container matColumnDef="$license">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.LICENSE' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$license}}</mat-cell>
</ng-container>
<!-- $runtime Column -->
<ng-container matColumnDef="$runtime">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.RUNTIME' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$runtime}}</mat-cell>
</ng-container>
<!-- $description Column -->
<ng-container matColumnDef="$description">
<mat-header-cell *matHeaderCellDef>{{ 'ABOUT.TABLE_HEADERS.DESCRIPTION' | translate }}</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.$description}}</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="extensionColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: extensionColumns;"></mat-row>
</mat-table>
</div>
<adf-about></adf-about> <adf-about></adf-about>
@@ -16,9 +16,6 @@
*/ */
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ExtensionRef } from '@alfresco/adf-extensions';
import { AppExtensionService } from '../../extensions/extension.service';
import { Observable } from 'rxjs';
@Component({ @Component({
selector: 'app-about-page', selector: 'app-about-page',
@@ -26,10 +23,8 @@ import { Observable } from 'rxjs';
styleUrls: ['about.component.scss'] styleUrls: ['about.component.scss']
}) })
export class AboutComponent { export class AboutComponent {
extensionColumns: string[] = ['$id', '$name', '$version', '$vendor', '$license', '$runtime', '$description'];
extensions$: Observable<ExtensionRef[]>;
constructor(appExtensions: AppExtensionService) { constructor() {
this.extensions$ = appExtensions.references$;
} }
} }
@@ -1,19 +1,12 @@
<adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="220" [stepOver]="780" [hideSidenav]="hideSidenav" <adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="220" [stepOver]="780" [hideSidenav]="hideSidenav"
[expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [position]="position">
[position]="position">
<adf-sidenav-layout-header> <adf-sidenav-layout-header>
<ng-template let-toggleMenu="toggleMenu"> <ng-template let-toggleMenu="toggleMenu">
<adf-layout-header id="adf-header" <adf-layout-header id="adf-header" [title]="title | translate" [redirectUrl]="redirectUrl" [logo]="logo"
[title]="title | translate" [tooltip]="tooltip | translate" [showSidenavToggle]="showMenu" [color]="color" [position]="position"
[redirectUrl]="redirectUrl" (clicked)=toggleMenu($event)>
[logo]="logo"
[tooltip]="tooltip | translate"
[showSidenavToggle]="showMenu"
[color]="color"
[position]="position"
(clicked)=toggleMenu($event)>
<div class="adf-app-layout-menu-spacer"></div> <div class="adf-app-layout-menu-spacer"></div>
@@ -21,10 +14,7 @@
<div class="adf-header-delimiexpandedSidenavter"></div> <div class="adf-header-delimiexpandedSidenavter"></div>
<adf-userinfo <adf-userinfo class="adf-app-layout-user-profile" [menuPositionX]="'before'" [menuPositionY]="'above'">
class="adf-app-layout-user-profile"
[menuPositionX]="'before'"
[menuPositionY]="'above'">
</adf-userinfo> </adf-userinfo>
<app-theme-picker></app-theme-picker> <app-theme-picker></app-theme-picker>
@@ -42,14 +32,30 @@
<adf-sidenav-layout-navigation> <adf-sidenav-layout-navigation>
<ng-template let-isMenuMinimized="isMenuMinimized"> <ng-template let-isMenuMinimized="isMenuMinimized">
<mat-nav-list class="adf-sidenav-linklist"> <mat-nav-list class="adf-sidenav-linklist">
<a mat-list-item *ngFor="let link of links" [attr.data-automation-id]="link.title | translate"
[routerLink]="link.href" routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }" <ng-container *ngFor="let link of links">
class="adf-sidenav-link"> <a appNestedMenuPosition mat-list-item #appMenuTrigger *ngIf="link.children" [attr.data-automation-id]="link.title | translate"
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon> class="adf-sidenav-link" [matMenuTriggerFor]="nestedMenu" [menuMinimized]="isMenuMinimized()"
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">{{link.title | translate }}</div> [matMenuTriggerData]="{links: link.children}">
</a>
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">
{{link.title | translate }}</div>
<mat-icon class="adf-menu-expand-icon">arrow_right</mat-icon>
</a>
<a mat-list-item *ngIf="!link.children" [attr.data-automation-id]="link.title | translate"
class="adf-sidenav-link" [routerLink]="link.href" routerLinkActive="active"
[routerLinkActiveOptions]="{ exact: true }">
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">
{{link.title | translate }}</div>
</a>
</ng-container>
<a mat-list-item adf-logout [enableRedirect]="enableRedirect" redirectUri="/logout" <a mat-list-item adf-logout [enableRedirect]="enableRedirect" redirectUri="/logout"
class="adf-sidenav-link"> class="adf-sidenav-link">
<mat-icon matListIcon class="adf-sidenav-menu-icon">exit_to_app</mat-icon> <mat-icon matListIcon class="adf-sidenav-menu-icon">exit_to_app</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">Logout</div> <div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">Logout</div>
</a> </a>
@@ -66,3 +72,17 @@
</adf-sidenav-layout> </adf-sidenav-layout>
<app-log></app-log> <app-log></app-log>
<mat-menu #nestedMenu="matMenu" [xPosition]="'before'">
<ng-template matMenuContent let-links="links">
<button mat-menu-item *ngFor="let link of links"
[attr.data-automation-id]="link.title | translate"
routerLinkActive="active"
[routerLink]="link.href"
[routerLinkActiveOptions]="{ exact: true }">
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
{{ link.title | translate }}
</button>
</ng-template>
</mat-menu>
@@ -55,6 +55,7 @@
.adf-sidenav-menu-label { .adf-sidenav-menu-label {
font-size: 14px; font-size: 14px;
white-space: nowrap; white-space: nowrap;
min-width: 120px;
} }
} }
@@ -38,20 +38,27 @@ export class AppLayoutComponent implements OnInit {
{ href: '/card-view', icon: 'view_headline', title: 'APP_LAYOUT.CARD_VIEW' }, { href: '/card-view', icon: 'view_headline', title: 'APP_LAYOUT.CARD_VIEW' },
{ href: '/header-data', icon: 'edit', title: 'APP_LAYOUT.HEADER_DATA' }, { href: '/header-data', icon: 'edit', title: 'APP_LAYOUT.HEADER_DATA' },
{ href: '/node-selector', icon: 'attachment', title: 'APP_LAYOUT.NODE-SELECTOR' }, { href: '/node-selector', icon: 'attachment', title: 'APP_LAYOUT.NODE-SELECTOR' },
{ href: '/sites', icon: 'format_list_bulleted', title: 'APP_LAYOUT.SITES' },
{ href: '/task-list', icon: 'assignment', title: 'APP_LAYOUT.TASK_LIST' }, { href: '/task-list', icon: 'assignment', title: 'APP_LAYOUT.TASK_LIST' },
{ href: '/process-list', icon: 'assignment', title: 'APP_LAYOUT.PROCESS_LIST' }, { href: '/cloud', icon: 'cloud', title: 'APP_LAYOUT.PROCESS_CLOUD', children: [
{ href: '/cloud', icon: 'cloud', title: 'APP_LAYOUT.PROCESS_CLOUD' }, { href: '/cloud/', icon: 'cloud', title: 'APP_LAYOUT.HOME' },
{ href: '/cloud/people-group-cloud', icon: 'group', title: 'APP_LAYOUT.PEOPLE_GROUPS_CLOUD' }, { href: '/cloud/people-group-cloud', icon: 'group', title: 'APP_LAYOUT.PEOPLE_GROUPS_CLOUD' }
{ href: '/activiti', icon: 'device_hub', title: 'APP_LAYOUT.PROCESS_SERVICES' }, ]},
{ href: '/activiti', icon: 'device_hub', title: 'APP_LAYOUT.PROCESS_SERVICES', children: [
{ href: '/activiti', icon: 'vpn_key', title: 'APP_LAYOUT.APP' },
{ href: '/process-list', icon: 'assignment', title: 'APP_LAYOUT.PROCESS_LIST' },
{ href: '/form', icon: 'poll', title: 'APP_LAYOUT.FORM' },
{ href: '/form-list', icon: 'library_books', title: 'APP_LAYOUT.FORM_LIST' },
{ href: '/form-loading', icon: 'cached', title: 'APP_LAYOUT.FORM_LOADING' }
]},
{ href: '/login', icon: 'vpn_key', title: 'APP_LAYOUT.LOGIN' }, { href: '/login', icon: 'vpn_key', title: 'APP_LAYOUT.LOGIN' },
{ href: '/trashcan', icon: 'delete', title: 'APP_LAYOUT.TRASHCAN' }, { href: '/trashcan', icon: 'delete', title: 'APP_LAYOUT.TRASHCAN' },
{ href: '/dl-custom-sources', icon: 'extension', title: 'APP_LAYOUT.CUSTOM_SOURCES' }, { href: '/dl-custom-sources', icon: 'extension', title: 'APP_LAYOUT.CUSTOM_SOURCES' },
{ href: '/datatable', icon: 'view_module', title: 'APP_LAYOUT.DATATABLE' }, { href: '/datatable', icon: 'view_module', title: 'APP_LAYOUT.DATATABLE', children: [
{ href: '/datatable-lazy', icon: 'view_module', title: 'APP_LAYOUT.DATATABLE_LAZY' }, { href: '/datatable', icon: 'view_module', title: 'APP_LAYOUT.DATATABLE' },
{ href: '/datatable-lazy', icon: 'view_module', title: 'APP_LAYOUT.DATATABLE_LAZY' }
]},
{ href: '/template-list', icon: 'list_alt', title: 'APP_LAYOUT.TEMPLATE' }, { href: '/template-list', icon: 'list_alt', title: 'APP_LAYOUT.TEMPLATE' },
{ href: '/form', icon: 'poll', title: 'APP_LAYOUT.FORM' },
{ href: '/form-list', icon: 'library_books', title: 'APP_LAYOUT.FORM_LIST' },
{ href: '/form-loading', icon: 'cached', title: 'APP_LAYOUT.FORM_LOADING' },
{ href: '/webscript', icon: 'extension', title: 'APP_LAYOUT.WEBSCRIPT' }, { href: '/webscript', icon: 'extension', title: 'APP_LAYOUT.WEBSCRIPT' },
{ href: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' }, { href: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' },
{ href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' }, { href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' },
@@ -1,7 +1,7 @@
<adf-toolbar> <adf-toolbar>
<div fxLayout="column" fxLayoutAlign="center"> <div fxLayout="column" fxLayoutAlign="center">
<div fxLayout="row"> <div fxLayout="row">
<div class="adf-app-crumb">{{applicationName + ' >'}} </div> <div class="adf-app-crumb">{{appName + ' >'}} </div>
<div class="adf-filter-crumb"> {{filterName | translate}}</div> <div class="adf-filter-crumb"> {{filterName | translate}}</div>
</div> </div>
</div> </div>
@@ -25,7 +25,7 @@ import { ActivatedRoute } from '@angular/router';
}) })
export class CloudBreadcrumbsComponent implements OnInit { export class CloudBreadcrumbsComponent implements OnInit {
applicationName: string; appName: string;
filterName: string; filterName: string;
constructor(private route: ActivatedRoute) { } constructor(private route: ActivatedRoute) { }
@@ -33,7 +33,7 @@ export class CloudBreadcrumbsComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.route.parent.params.subscribe(( this.route.parent.params.subscribe((
params) => { params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
this.route.queryParams.subscribe((params) => { this.route.queryParams.subscribe((params) => {
if (params.filterName) { if (params.filterName) {
@@ -24,7 +24,7 @@
</button> </button>
</div> </div>
</adf-sidebar-action-menu> </adf-sidebar-action-menu>
<app-cloud-filters-demo [appName]="applicationName"></app-cloud-filters-demo> <app-cloud-filters-demo [appName]="appName"></app-cloud-filters-demo>
</ng-template> </ng-template>
</adf-sidenav-layout-navigation> </adf-sidenav-layout-navigation>
<adf-sidenav-layout-content> <adf-sidenav-layout-content>
@@ -26,7 +26,7 @@ import { CloudLayoutService } from './services/cloud-layout.service';
}) })
export class CloudLayoutComponent implements OnInit { export class CloudLayoutComponent implements OnInit {
displayMenu = true; displayMenu = true;
applicationName: string; appName: string;
constructor( constructor(
private router: Router, private router: Router,
@@ -37,7 +37,7 @@ export class CloudLayoutComponent implements OnInit {
ngOnInit() { ngOnInit() {
let root: string = ''; let root: string = '';
this.route.params.subscribe((params) => { this.route.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
if (this.route.snapshot && this.route.snapshot.firstChild) { if (this.route.snapshot && this.route.snapshot.firstChild) {
@@ -56,10 +56,10 @@ export class CloudLayoutComponent implements OnInit {
} }
onStartTask() { onStartTask() {
this.router.navigate([`/cloud/${this.applicationName}/start-task/`]); this.router.navigate([`/cloud/${this.appName}/start-task/`]);
} }
onStartProcess() { onStartProcess() {
this.router.navigate([`/cloud/${this.applicationName}/start-process/`]); this.router.navigate([`/cloud/${this.appName}/start-process/`]);
} }
} }
@@ -1,11 +1,14 @@
<div fxFlex fxLayout="column" class="adf-settings-container"> <div fxFlex fxLayout="column" class="adf-settings-container">
<mat-checkbox [color]="'primary'" [checked]="multiselect" (change)="toggleMultiselect()" data-automation-id="multiSelection"> <mat-slide-toggle [color]="'primary'" [checked]="multiselect" (change)="toggleMultiselect()" data-automation-id="multiSelection">
{{ 'SETTINGS_CLOUD.MULTISELECTION' | translate }} {{ 'SETTINGS_CLOUD.MULTISELECTION' | translate }}
</mat-checkbox> </mat-slide-toggle>
<mat-checkbox [color]="'primary'" [checked]="testingMode" (change)="toggleTestingMode()" data-automation-id="testingMode"> <mat-slide-toggle [color]="'primary'" [checked]="testingMode" (change)="toggleTestingMode()" data-automation-id="testingMode">
{{ 'SETTINGS_CLOUD.TESTING_MODE' | translate }} {{ 'SETTINGS_CLOUD.TESTING_MODE' | translate }}
</mat-checkbox> </mat-slide-toggle>
<mat-form-field> <mat-slide-toggle [color]="'primary'" [checked]="taskDetailsRedirection" (change)="toggleTaskDetailsRedirection()" data-automation-id="taskDetailsRedirection">
{{ 'SETTINGS_CLOUD.TASK_DETAILS_REDIRECTION' | translate }}
</mat-slide-toggle>
<mat-form-field data-automation-id="selectionMode">
<mat-label> <mat-label>
{{ 'SETTINGS_CLOUD.SELECTION_MODE' | translate }} {{ 'SETTINGS_CLOUD.SELECTION_MODE' | translate }}
</mat-label> </mat-label>
@@ -28,6 +28,7 @@ export class CloudSettingsComponent implements OnInit {
multiselect: boolean; multiselect: boolean;
selectionMode: string; selectionMode: string;
testingMode: boolean; testingMode: boolean;
taskDetailsRedirection: boolean;
selectionModeOptions = [ selectionModeOptions = [
{ value: '', title: 'None' }, { value: '', title: 'None' },
@@ -43,14 +44,11 @@ export class CloudSettingsComponent implements OnInit {
} }
setCurrentSettings(settings) { setCurrentSettings(settings) {
if (settings.multiselect !== undefined) { if (settings) {
this.multiselect = settings.multiselect; this.multiselect = settings.multiselect;
}
if (settings.testingMode !== undefined) {
this.testingMode = settings.testingMode; this.testingMode = settings.testingMode;
}
if (settings.selectionMode !== undefined) {
this.selectionMode = settings.selectionMode; this.selectionMode = settings.selectionMode;
this.taskDetailsRedirection = settings.taskDetailsRedirection;
} }
} }
@@ -64,6 +62,11 @@ export class CloudSettingsComponent implements OnInit {
this.setSetting(); this.setSetting();
} }
toggleTaskDetailsRedirection() {
this.taskDetailsRedirection = !this.taskDetailsRedirection;
this.setSetting();
}
onSelectionModeChange() { onSelectionModeChange() {
this.setSetting(); this.setSetting();
} }
@@ -72,7 +75,8 @@ export class CloudSettingsComponent implements OnInit {
this.cloudLayoutService.setCurrentSettings({ this.cloudLayoutService.setCurrentSettings({
multiselect: this.multiselect, multiselect: this.multiselect,
testingMode: this.testingMode, testingMode: this.testingMode,
selectionMode: this.selectionMode selectionMode: this.selectionMode,
taskDetailsRedirection: this.taskDetailsRedirection
}); });
} }
} }
@@ -0,0 +1,43 @@
/*!
* @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 { Directive, HostListener, Input } from '@angular/core';
@Directive({
selector: '[appNestedMenuPosition]'
})
export class NestedMenuPositionDirective {
@Input()
menuMinimized: string;
nestedMenuLeftPadding: string = '220px';
@HostListener('click', ['$event'])
onClick() {
let overlayContainer = (document.querySelector('.cdk-overlay-connected-position-bounding-box') as HTMLElement);
(document.querySelector('.cdk-overlay-pane') as HTMLElement).style.width = '100%';
if (!this.menuMinimized) {
setTimeout(() => {
overlayContainer.style.left = this.nestedMenuLeftPadding;
});
}
}
}
@@ -6,23 +6,41 @@
<mat-card-content> <mat-card-content>
<br> <br>
<mat-radio-group (change)="onChangePeopleMode($event)"> <mat-radio-group (change)="onChangePeopleMode($event)">
<mat-radio-button checked="true" class="adf-people-single-mode" value="{{ peopleSingleMode }}">{{ <mat-radio-button checked="true" class="adf-people-single-mode" data-automation-id="adf-people-single-mode" value="{{ peopleSingleMode }}">{{
'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button> 'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button>
<mat-radio-button class="adf-people-multiple-mode" value="{{ peopleMultipleMode }}">{{ <mat-radio-button class="adf-people-multiple-mode" data-automation-id="adf-people-multiple-mode" value="{{ peopleMultipleMode }}">{{
'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button> 'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button>
</mat-radio-group> </mat-radio-group>
<div class="people-control-options"> <div class="people-control-options">
<mat-form-field class="adf-preselect-value"> <mat-radio-group (change)="onChangePeopleFilterMode($event)">
<mat-radio-button checked="true" class="adf-people-single-mode" value="appName">{{
'PEOPLE_GROUPS_CLOUD.APP_FILTER_MODE' | translate }}</mat-radio-button>
<mat-radio-button class="adf-people-multiple-mode" data-automation-id="adf-people-filter-role" value="role">{{
'PEOPLE_GROUPS_CLOUD.ROLE_FILTER_MODE' | translate }}</mat-radio-button>
</mat-radio-group>
<mat-form-field *ngIf="!isPeopleAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ['ACTIVITI_ADMIN', "ACTIVITI_USER"]</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ['ACTIVITI_ADMIN', "ACTIVITI_USER"]</mat-label>
<input matInput (input)="setPeopleRoles($event)" /> <input matInput (input)="setPeopleRoles($event)" data-automation-id="adf-people-roles-input" />
</mat-form-field> </mat-form-field>
<mat-form-field class="adf-preselect-value full"> <mat-form-field *ngIf="isPeopleAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label>
<input matInput (input)="setPeopleAppName($event)" />
</mat-form-field>
<mat-form-field class="adf-preselect-value-full">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }}: {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }}: {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label>
<input matInput (input)="setPeoplePreselectValue($event)" /> <input matInput (input)="setPeoplePreselectValue($event)" data-automation-id="adf-people-preselect-input" />
</mat-form-field> </mat-form-field>
<mat-checkbox class="adf-preselect-value" (change)="onChangePeopleValidation($event)">{{
'PEOPLE_GROUPS_CLOUD.PRESELECT_VALIDATION' | translate }}</mat-checkbox>
</div> </div>
<div> <div>
<adf-cloud-people [preSelectUsers]="preSelectUsers" [roles]="peopleRoles" [mode]="peopleMode"></adf-cloud-people> <adf-cloud-people
[preSelectUsers]="preSelectUsers"
[validate]="peoplePreselectValidation"
[appName]="peopleAppName"
[roles]="peopleRoles"
[appName]="peopleAppName"
[mode]="peopleMode"></adf-cloud-people>
</div> </div>
<div class="adf-people-list" *ngIf="canShowPeopleList()"> <div class="adf-people-list" *ngIf="canShowPeopleList()">
@@ -44,24 +62,34 @@
<mat-card-content> <mat-card-content>
<br> <br>
<mat-radio-group (change)="onChangeGroupsMode($event)"> <mat-radio-group (change)="onChangeGroupsMode($event)">
<mat-radio-button checked="true" class="adf-people-single-mode" value="{{ groupSingleMode }}">{{ <mat-radio-button checked="true" class="adf-people-single-mode" data-automation-id="adf-group-single-mode" value="{{ groupSingleMode }}">{{
'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button> 'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button>
<mat-radio-button class="adf-people-multiple-mode" value="{{ groupMultipleMode }}">{{ <mat-radio-button class="adf-people-multiple-mode" data-automation-id="adf-group-multiple-mode" value="{{ groupMultipleMode }}">{{
'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button> 'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button>
</mat-radio-group> </mat-radio-group>
<div class="groups-control-options"> <div class="groups-control-options">
<mat-form-field class="adf-preselect-value"> <mat-radio-group (change)="onChangeGroupsFilterMode($event)">
<mat-radio-button checked="true" class="adf-people-single-mode" value="appName">{{
'PEOPLE_GROUPS_CLOUD.APP_FILTER_MODE' | translate }}</mat-radio-button>
<mat-radio-button class="adf-people-multiple-mode" data-automation-id="adf-group-filter-role" value="role">{{
'PEOPLE_GROUPS_CLOUD.ROLE_FILTER_MODE' | translate }}</mat-radio-button>
</mat-radio-group>
<mat-form-field *ngIf="!isGroupAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ['ACTIVITI_ADMIN', "ACTIVITI_USER"]</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ['ACTIVITI_ADMIN', "ACTIVITI_USER"]</mat-label>
<input matInput (input)="setGroupRoles($event)" /> <input matInput (input)="setGroupRoles($event)" data-automation-id="adf-group-roles-input"/>
</mat-form-field> </mat-form-field>
<mat-form-field class="adf-preselect-value full"> <mat-form-field *ngIf="isGroupAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label>
<input matInput (input)="setGroupAppName($event)" />
</mat-form-field>
<mat-form-field class="adf-preselect-value-full">
<mat-label>Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }}</mat-label> <mat-label>Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }}</mat-label>
<input matInput (input)="setGroupsPreselectValue($event)" /> <input matInput (input)="setGroupsPreselectValue($event)" data-automation-id="adf-group-preselect-input" />
</mat-form-field> </mat-form-field>
</div> </div>
<div> <div>
<adf-cloud-group [mode]="groupMode" [roles]="groupRoles" [preSelectGroups]="preSelectGroup" (selectGroup)="onSelectGroup($event)" <adf-cloud-group [mode]="groupMode" [roles]="groupRoles" [appName]="groupAppName" [preSelectGroups]="preSelectGroup"
(removeGroup)="onRemoveGroup($event)"></adf-cloud-group> (selectGroup)="onSelectGroup($event)" (removeGroup)="onRemoveGroup($event)"></adf-cloud-group>
</div> </div>
<div class="adf-group-list" *ngIf="canShowGroupList()"> <div class="adf-group-list" *ngIf="canShowGroupList()">
@@ -18,9 +18,13 @@
margin-right: 15px; margin-right: 15px;
min-width: 330px; min-width: 330px;
&-full { &-big {
width:60%; width:60%;
} }
&-full {
width:100%;
}
} }
} }
} }
@@ -17,7 +17,7 @@
import { Component, ViewEncapsulation } from '@angular/core'; import { Component, ViewEncapsulation } from '@angular/core';
import { PeopleCloudComponent, GroupCloudComponent, GroupModel } from '@alfresco/adf-process-services-cloud'; import { PeopleCloudComponent, GroupCloudComponent, GroupModel } from '@alfresco/adf-process-services-cloud';
import { MatRadioChange } from '@angular/material'; import { MatRadioChange, MatCheckboxChange } from '@angular/material';
@Component({ @Component({
selector: 'app-people-groups-cloud', selector: 'app-people-groups-cloud',
@@ -27,17 +27,23 @@ import { MatRadioChange } from '@angular/material';
}) })
export class PeopleGroupCloudDemoComponent { export class PeopleGroupCloudDemoComponent {
DEFAULT_FILTER_MODE: string = 'appName';
DEFAULT_GROUP_PLACEHOLDER: string = `[{"id": "1", "name":"activitiUserGroup"}]`; DEFAULT_GROUP_PLACEHOLDER: string = `[{"id": "1", "name":"activitiUserGroup"}]`;
DEFAULT_PEOPLE_PLACEHOLDER: string = `[{"email": "example@alfresco.com", "firstName":"Administrator", "lastName": "ADF"}]`; DEFAULT_PEOPLE_PLACEHOLDER: string = `[{"id": "1", email": "user@user.com", "firstName":"user", "lastName": "lastName", "username": "user"}]`;
peopleMode: string = PeopleCloudComponent.MODE_SINGLE; peopleMode: string = PeopleCloudComponent.MODE_SINGLE;
preSelectUsers: string[] = []; preSelectUsers: string[] = [];
peopleRoles: string[] = []; peopleRoles: string[] = [];
peopleAppName: string;
peopleFilterMode: string = this.DEFAULT_FILTER_MODE;
peoplePreselectValidation: Boolean = false;
groupMode: string = GroupCloudComponent.MODE_SINGLE; groupMode: string = GroupCloudComponent.MODE_SINGLE;
preSelectGroup: GroupModel[] = []; preSelectGroup: GroupModel[] = [];
selectedGroupList: GroupModel[] = []; selectedGroupList: GroupModel[] = [];
groupRoles: string[]; groupRoles: string[];
groupAppName: string;
groupFilterMode: string = this.DEFAULT_FILTER_MODE;
setPeoplePreselectValue(event: any) { setPeoplePreselectValue(event: any) {
this.preSelectUsers = this.getArrayFromString(event.target.value); this.preSelectUsers = this.getArrayFromString(event.target.value);
@@ -55,6 +61,14 @@ export class PeopleGroupCloudDemoComponent {
this.groupRoles = this.getArrayFromString(event.target.value); this.groupRoles = this.getArrayFromString(event.target.value);
} }
setPeopleAppName(event: any) {
this.peopleAppName = event.target.value;
}
setGroupAppName(event: any) {
this.groupAppName = event.target.value;
}
onChangePeopleMode(event: MatRadioChange) { onChangePeopleMode(event: MatRadioChange) {
this.peopleMode = event.value; this.peopleMode = event.value;
this.preSelectUsers = [...this.preSelectUsers]; this.preSelectUsers = [...this.preSelectUsers];
@@ -65,6 +79,45 @@ export class PeopleGroupCloudDemoComponent {
this.preSelectGroup = [...this.preSelectGroup]; this.preSelectGroup = [...this.preSelectGroup];
} }
onChangePeopleFilterMode(event: MatRadioChange) {
this.peopleFilterMode = event.value;
this.resetPeopleFilter();
}
onChangeGroupsFilterMode(event: MatRadioChange) {
this.groupFilterMode = event.value;
this.restGroupFilter();
}
isPeopleAppNameSelected() {
return this.peopleFilterMode === 'appName';
}
isGroupAppNameSelected() {
return this.groupFilterMode === 'appName';
}
resetPeopleFilter() {
if (this.isPeopleAppNameSelected()) {
this.peopleRoles = [];
} else {
this.peopleAppName = '';
}
}
restGroupFilter() {
if (this.isGroupAppNameSelected()) {
this.groupRoles = [];
} else {
this.groupAppName = '';
}
}
onChangePeopleValidation(event: MatCheckboxChange) {
this.peoplePreselectValidation = event.checked;
this.preSelectUsers = [...this.preSelectUsers];
}
isStringArray(str: string) { isStringArray(str: string) {
try { try {
const result = JSON.parse(str); const result = JSON.parse(str);
@@ -0,0 +1,25 @@
<button data-automation-id="go-back" mat-icon-button (click)="onGoBack()">
<mat-icon>arrow_back</mat-icon> Go Back
</button>
<h4 data-automation-id="process-details-header">Simple page to show the process instance: {{ processInstanceId }} of the app: {{ appName }}</h4>
<div class="adf-process-cloud-container">
<adf-cloud-task-list
fxFlex
class="adf-cloud-layout-overflow"
[appName]="appName"
[processInstanceId]="processInstanceId"
(rowClick)="onRowClick($event)"
#taskCloud>
</adf-cloud-task-list>
<adf-cloud-process-header
class="adf-process-cloud-header"
[appName]="appName"
[processInstanceId]="processInstanceId">
</adf-cloud-process-header>
</div>
@@ -0,0 +1,14 @@
.adf {
&-process-cloud-container {
display: flex;
}
&-cloud-layout-overflow {
width:67%;
}
&-process-cloud-header {
margin-left: 10px;
width: 25%;
}
}
@@ -0,0 +1,49 @@
/*!
* @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 { Component } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
@Component({
templateUrl: './process-details-cloud-demo.component.html',
styleUrls: ['./process-details-cloud-demo.component.scss']
})
export class ProcessDetailsCloudDemoComponent {
processInstanceId: string;
appName: string;
constructor(private route: ActivatedRoute, private router: Router) {
this.route.params.subscribe((params) => {
this.processInstanceId = params.processInstanceId;
});
this.route.parent.params.subscribe((params) => {
this.appName = params.appName;
});
}
onGoBack() {
this.router.navigate([`/cloud/${this.appName}/`]);
}
onRowClick(taskId: string) {
if (taskId) {
this.router.navigate([`/cloud/${this.appName}/task-details/${taskId}`]);
}
}
}
@@ -1,26 +1,32 @@
<div fxLayout="column" fxFill fxLayoutGap="2px"> <div fxLayout="column" fxFill fxLayoutGap="2px">
<adf-cloud-edit-process-filter <adf-cloud-edit-process-filter
[appName]="applicationName" [appName]="appName"
[id]="filterId" [id]="filterId"
[filterProperties]="processFilterProperties" [filterProperties]="processFilterProperties.filterProperties"
[sortProperties]="processFilterProperties.sortProperties"
[actions]="processFilterProperties.actions"
(filterChange)="onFilterChange($event)" (filterChange)="onFilterChange($event)"
(action)="onProcessFilterAction($event)"> (action)="onProcessFilterAction($event)">
</adf-cloud-edit-process-filter> </adf-cloud-edit-process-filter>
<div fxLayout="column" fxFlex fxLayoutAlign="space-between" *ngIf="editedFilter"> <div fxLayout="column" fxFlex fxLayoutAlign="space-between" *ngIf="editedFilter">
<adf-cloud-process-list fxFlex class="adf-cloud-layout-overflow" <adf-cloud-process-list #processCloud
[applicationName]="editedFilter.appName" fxFlex
[initiator]="editedFilter.initiator" class="adf-cloud-layout-overflow"
[processDefinitionId]="editedFilter.processDefinitionId" [appName]="editedFilter.appName"
[processDefinitionKey]="editedFilter.processDefinitionKey" [initiator]="editedFilter.initiator"
[id]="editedFilter.processInstanceId" [processDefinitionId]="editedFilter.processDefinitionId"
[status]="editedFilter.state" [processDefinitionKey]="editedFilter.processDefinitionKey"
[name]="editedFilter.processName" [id]="editedFilter.processInstanceId"
[sorting]="sortArray" [status]="editedFilter.status"
[selectionMode]="selectionMode" [name]="editedFilter.processName"
[multiselect]="multiselect" [businessKey]="editedFilter.businessKey"
(rowClick)="onRowClick($event)" [lastModifiedFrom]="editedFilter.lastModifiedFrom"
(rowsSelected)="onRowsSelected($event)" [lastModifiedTo]="editedFilter.lastModifiedTo"
#processCloud> [sorting]="sortArray"
[selectionMode]="selectionMode"
[multiselect]="multiselect"
(rowClick)="onRowClick($event)"
(rowsSelected)="onRowsSelected($event)">
</adf-cloud-process-list> </adf-cloud-process-list>
<adf-pagination <adf-pagination
[target]="processCloud" [target]="processCloud"
@@ -33,8 +33,8 @@ import { CloudLayoutService } from './services/cloud-layout.service';
}) })
export class ProcessesCloudDemoComponent implements OnInit { export class ProcessesCloudDemoComponent implements OnInit {
public static ACTION_SAVE_AS = 'SAVE_AS'; public static ACTION_SAVE_AS = 'saveAs';
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter.properties'; static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
@ViewChild('processCloud') @ViewChild('processCloud')
processCloud: ProcessListCloudComponent; processCloud: ProcessListCloudComponent;
@@ -42,7 +42,7 @@ export class ProcessesCloudDemoComponent implements OnInit {
@ViewChild('processFiltersCloud') @ViewChild('processFiltersCloud')
processFiltersCloud: ProcessFiltersCloudComponent; processFiltersCloud: ProcessFiltersCloudComponent;
applicationName: string = ''; appName: string = '';
isFilterLoaded: boolean; isFilterLoaded: boolean;
filterId: string = ''; filterId: string = '';
@@ -52,7 +52,7 @@ export class ProcessesCloudDemoComponent implements OnInit {
selectionMode: string; selectionMode: string;
selectedRows: string[] = []; selectedRows: string[] = [];
testingMode: boolean; testingMode: boolean;
processFilterProperties: any[] = []; processFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
editedFilter: ProcessFilterCloudModel; editedFilter: ProcessFilterCloudModel;
@@ -71,7 +71,7 @@ export class ProcessesCloudDemoComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.isFilterLoaded = false; this.isFilterLoaded = false;
this.route.parent.params.subscribe((params) => { this.route.parent.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
this.route.queryParams.subscribe((params) => { this.route.queryParams.subscribe((params) => {
@@ -85,13 +85,9 @@ export class ProcessesCloudDemoComponent implements OnInit {
} }
setCurrentSettings(settings) { setCurrentSettings(settings) {
if (settings.multiselect !== undefined) { if (settings) {
this.multiselect = settings.multiselect; this.multiselect = settings.multiselect;
}
if (settings.testingMode !== undefined) {
this.testingMode = settings.testingMode; this.testingMode = settings.testingMode;
}
if (settings.selectionMode !== undefined) {
this.selectionMode = settings.selectionMode; this.selectionMode = settings.selectionMode;
} }
} }
@@ -104,8 +100,8 @@ export class ProcessesCloudDemoComponent implements OnInit {
this.selectedRows = []; this.selectedRows = [];
} }
onRowClick($event) { onRowClick(processInstanceId) {
this.selectedRow = $event; this.router.navigate([`/cloud/${this.appName}/process-details/${processInstanceId}`]);
} }
onFilterChange(query: any) { onFilterChange(query: any) {
@@ -116,7 +112,7 @@ export class ProcessesCloudDemoComponent implements OnInit {
onProcessFilterAction(filterAction: any) { onProcessFilterAction(filterAction: any) {
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id }); this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) { if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) {
this.router.navigate([`/cloud/${this.applicationName}/processes/`], { queryParams: filterAction.filter }); this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filterAction.filter });
} }
} }
@@ -26,6 +26,7 @@ export class CloudLayoutService {
private settings = { private settings = {
multiselect: false, multiselect: false,
testingMode: false, testingMode: false,
taskDetailsRedirection: true,
selectionMode: 'single' selectionMode: 'single'
}; };
@@ -1,5 +1,5 @@
<adf-cloud-start-process <adf-cloud-start-process
[appName]="applicationName" [appName]="appName"
[name]="processName" [name]="processName"
(error)="openSnackMessage($event)" (error)="openSnackMessage($event)"
(success)="onStartProcessSuccess()" (success)="onStartProcessSuccess()"
@@ -19,13 +19,14 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { NotificationService, AppConfigService } from '@alfresco/adf-core'; import { NotificationService, AppConfigService } from '@alfresco/adf-core';
import { CloudLayoutService } from './services/cloud-layout.service'; import { CloudLayoutService } from './services/cloud-layout.service';
@Component({ @Component({
templateUrl: './start-process-cloud-demo.component.html', templateUrl: './start-process-cloud-demo.component.html',
styleUrls: ['./start-process-cloud-demo.component.scss'] styleUrls: ['./start-process-cloud-demo.component.scss']
}) })
export class StartProcessCloudDemoComponent implements OnInit { export class StartProcessCloudDemoComponent implements OnInit {
applicationName; appName;
processName: string; processName: string;
constructor(private appConfig: AppConfigService, constructor(private appConfig: AppConfigService,
@@ -37,7 +38,7 @@ export class StartProcessCloudDemoComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.route.parent.params.subscribe((params) => { this.route.parent.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
this.processName = this.appConfig.get<string>('adf-start-process.name'); this.processName = this.appConfig.get<string>('adf-start-process.name');
@@ -45,12 +46,12 @@ export class StartProcessCloudDemoComponent implements OnInit {
onStartProcessSuccess() { onStartProcessSuccess() {
this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'running-processes' }); this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'running-processes' });
this.router.navigate([`/cloud/${this.applicationName}/processes`]); this.router.navigate([`/cloud/${this.appName}/processes`]);
} }
onCancelStartProcess() { onCancelStartProcess() {
this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'all-processes' }); this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'all-processes' });
this.router.navigate([`/cloud/${this.applicationName}/processes`]); this.router.navigate([`/cloud/${this.appName}/processes`]);
} }
openSnackMessage(event: any) { openSnackMessage(event: any) {
@@ -1,5 +1,5 @@
<adf-cloud-start-task <adf-cloud-start-task
[appName]="applicationName" [appName]="appName"
(error)="openSnackMessage($event)" (error)="openSnackMessage($event)"
(success)="onStartTaskSuccess()" (success)="onStartTaskSuccess()"
(cancel)="onCancelStartTask()"> (cancel)="onCancelStartTask()">
@@ -25,7 +25,7 @@ import { CloudLayoutService } from './services/cloud-layout.service';
}) })
export class StartTaskCloudDemoComponent implements OnInit { export class StartTaskCloudDemoComponent implements OnInit {
applicationName; appName;
constructor( constructor(
private cloudLayoutService: CloudLayoutService, private cloudLayoutService: CloudLayoutService,
@@ -36,18 +36,18 @@ export class StartTaskCloudDemoComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.route.parent.params.subscribe((params) => { this.route.parent.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
} }
onStartTaskSuccess() { onStartTaskSuccess() {
this.cloudLayoutService.setCurrentTaskFilterParam({key: 'my-tasks'}); this.cloudLayoutService.setCurrentTaskFilterParam({key: 'my-tasks'});
this.router.navigate([`/cloud/${this.applicationName}/tasks`]); this.router.navigate([`/cloud/${this.appName}/tasks`]);
} }
onCancelStartTask() { onCancelStartTask() {
this.cloudLayoutService.setCurrentTaskFilterParam({key: 'my-tasks'}); this.cloudLayoutService.setCurrentTaskFilterParam({key: 'my-tasks'});
this.router.navigate([`/cloud/${this.applicationName}/tasks`]); this.router.navigate([`/cloud/${this.appName}/tasks`]);
} }
openSnackMessage(event: any) { openSnackMessage(event: any) {
@@ -1,12 +1,19 @@
<h4 data-automation-id="task-details-header">Simple page to show the taskId: {{ taskId }} of the app: {{ appName }}</h4>
<button data-automation-id="go-back" mat-icon-button (click)="onGoBack()"> <div class="adf-task-detail-container">
<mat-icon>arrow_back</mat-icon> Go Back <div class="adf-task-control">
</button> <button mat-button (click)="goBack()">Cancel</button>
<button mat-button color="primary" *ngIf="canCompleteTask()" adf-cloud-complete-task [appName]="appName" [taskId]="taskId"
(success)="onCompletedTask()">{{ 'ADF_TASK_LIST.DETAILS.BUTTON.COMPLETE' | translate }}</button>
<h4>Simple page to show the taskId: {{ taskId }} of the app: {{ applicationName }}</h4> <button mat-button color="primary" *ngIf="canClaimTask()" adf-cloud-claim-task [appName]="appName" [taskId]="taskId"
(success)="onClaimTask()">{{ 'ADF_TASK_LIST.DETAILS.BUTTON.CLAIM' | translate }}</button>
<adf-cloud-task-header <button mat-button color="primary" *ngIf="canUnClaimTask()" adf-cloud-unclaim-task [appName]="appName" [taskId]="taskId"
[appName]="applicationName" (success)="onUnclaimTask()">{{ 'ADF_TASK_LIST.DETAILS.BUTTON.UNCLAIM' | translate }}</button>
[taskId]="taskId" </div>
[readOnly]="readOnly">
</adf-cloud-task-header> <adf-cloud-task-header class="adf-demop-card-container" [appName]="appName" [taskId]="taskId" [readOnly]="readOnly">
</adf-cloud-task-header>
</div>
@@ -0,0 +1,20 @@
.adf {
&-task-detail-container {
display: flex;
}
&-task-tiitle {
margin-left:15px;
}
&-task-control {
width:70%;
}
&-demop-card-container {
width:30%;
font-family: inherit;
}
}
@@ -15,30 +15,74 @@
* limitations under the License. * limitations under the License.
*/ */
import { Component } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TaskDetailsCloudModel, TaskCloudService } from '@alfresco/adf-process-services-cloud';
@Component({ @Component({
templateUrl: './task-details-cloud-demo.component.html', templateUrl: './task-details-cloud-demo.component.html',
styleUrls: ['./task-details-cloud-demo.component.scss'] styleUrls: ['./task-details-cloud-demo.component.scss']
}) })
export class TaskDetailsCloudDemoComponent { export class TaskDetailsCloudDemoComponent implements OnInit {
taskDetails: TaskDetailsCloudModel;
taskId: string; taskId: string;
applicationName: string; appName: string;
readOnly = false; readOnly = false;
constructor(private route: ActivatedRoute, private router: Router) { constructor(
private route: ActivatedRoute,
private router: Router,
private taskCloudService: TaskCloudService
) {
this.route.params.subscribe((params) => { this.route.params.subscribe((params) => {
this.taskId = params.taskId; this.taskId = params.taskId;
}); });
this.route.parent.params.subscribe((params) => { this.route.parent.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
} }
onGoBack() { ngOnInit() {
this.router.navigate([`/cloud/${this.applicationName}/`]); this.loadTaskDetailsById(this.appName, this.taskId);
}
loadTaskDetailsById(appName: string, taskId: string) {
this.taskCloudService.getTaskById(appName, taskId).subscribe(
(taskDetails: TaskDetailsCloudModel ) => {
this.taskDetails = taskDetails;
});
}
isTaskValid(): boolean {
return this.appName !== undefined && this.taskId !== undefined;
}
canCompleteTask(): boolean {
return this.taskDetails && this.taskCloudService.canCompleteTask(this.taskDetails);
}
canClaimTask(): boolean {
return this.taskDetails && this.taskCloudService.canClaimTask(this.taskDetails);
}
canUnClaimTask(): boolean {
return this.taskDetails && this.taskCloudService.canUnclaimTask(this.taskDetails);
}
goBack() {
this.router.navigate([`/cloud/${this.appName}/`]);
}
onCompletedTask() {
this.goBack();
}
onUnclaimTask() {
this.goBack();
}
onClaimTask() {
this.goBack();
} }
} }
@@ -1,14 +1,18 @@
<div fxLayout="column" fxFill fxLayoutGap="2px"> <div fxLayout="column" fxFill fxLayoutGap="2px">
<adf-cloud-edit-task-filter <adf-cloud-edit-task-filter
[appName]="applicationName" [appName]="appName"
[id]="filterId" [id]="filterId"
[filterProperties]="taskFilterProperties" [filterProperties]="taskFilterProperties.filterProperties"
[sortProperties]="taskFilterProperties.sortProperties"
[actions]="taskFilterProperties.actions"
(action)="onTaskFilterAction($event)" (action)="onTaskFilterAction($event)"
(filterChange)="onFilterChange($event)"> (filterChange)="onFilterChange($event)">
</adf-cloud-edit-task-filter> </adf-cloud-edit-task-filter>
<div fxLayout="column" fxFlex fxLayoutAlign="space-between" *ngIf="editedFilter"> <div fxLayout="column" fxFlex fxLayoutAlign="space-between" *ngIf="editedFilter">
<adf-cloud-task-list #taskCloud <adf-cloud-task-list #taskCloud
[applicationName]="editedFilter.appName" fxFlex
class="adf-cloud-layout-overflow"
[appName]="editedFilter.appName"
[processDefinitionId]="editedFilter.processDefinitionId" [processDefinitionId]="editedFilter.processDefinitionId"
[processInstanceId]="editedFilter.processInstanceId" [processInstanceId]="editedFilter.processInstanceId"
[name]="editedFilter.taskName" [name]="editedFilter.taskName"
@@ -17,18 +21,22 @@
[owner]="editedFilter.owner" [owner]="editedFilter.owner"
[lastModifiedFrom]="editedFilter.lastModifiedFrom" [lastModifiedFrom]="editedFilter.lastModifiedFrom"
[lastModifiedTo]="editedFilter.lastModifiedTo" [lastModifiedTo]="editedFilter.lastModifiedTo"
[status]="editedFilter.state" [status]="editedFilter.status"
[assignee]="editedFilter.assignment" [assignee]="editedFilter.assignee"
[createdDate]="editedFilter.createdDate"
[dueDate]="editedFilter.dueDate"
[sorting]="sortArray" [sorting]="sortArray"
[multiselect]="multiselect" [multiselect]="multiselect"
[selectionMode]="selectionMode" [selectionMode]="selectionMode"
(rowClick)="onRowClick($event)" (rowClick)="onRowClick($event)"
(rowsSelected)="onRowsSelected($event)"> (rowsSelected)="onRowsSelected($event)"
#taskCloud>
</adf-cloud-task-list> </adf-cloud-task-list>
<adf-pagination [target]="taskCloud" <adf-pagination
(changePageSize)="onChangePageSize($event)" [target]="taskCloud"
(nextPage)="resetSelectedRows()" (changePageSize)="onChangePageSize($event)"
(prevPage)="resetSelectedRows()"> (nextPage)="resetSelectedRows()"
(prevPage)="resetSelectedRows()">
</adf-pagination> </adf-pagination>
<div *ngIf="testingMode"> <div *ngIf="testingMode">
Selected rows: Selected rows:
@@ -27,13 +27,13 @@ import { CloudLayoutService } from './services/cloud-layout.service';
}) })
export class TasksCloudDemoComponent implements OnInit { export class TasksCloudDemoComponent implements OnInit {
public static ACTION_SAVE_AS = 'SAVE_AS'; public static ACTION_SAVE_AS = 'saveAs';
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter.properties'; static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
@ViewChild('taskCloud') @ViewChild('taskCloud')
taskCloud: TaskListCloudComponent; taskCloud: TaskListCloudComponent;
applicationName: string = ''; appName: string = '';
isFilterLoaded = false; isFilterLoaded = false;
@@ -41,13 +41,14 @@ export class TasksCloudDemoComponent implements OnInit {
sortArray: TaskListCloudSortingModel[]; sortArray: TaskListCloudSortingModel[];
editedFilter: TaskFilterCloudModel; editedFilter: TaskFilterCloudModel;
taskFilterProperties: any[] = []; taskFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
filterId; filterId;
multiselect: boolean; multiselect: boolean;
selectedRows: string[] = []; selectedRows: string[] = [];
testingMode: boolean; testingMode: boolean;
selectionMode: string; selectionMode: string;
taskDetailsRedirection: boolean;
constructor( constructor(
private cloudLayoutService: CloudLayoutService, private cloudLayoutService: CloudLayoutService,
@@ -65,7 +66,7 @@ export class TasksCloudDemoComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.isFilterLoaded = false; this.isFilterLoaded = false;
this.route.parent.params.subscribe((params) => { this.route.parent.params.subscribe((params) => {
this.applicationName = params.applicationName; this.appName = params.appName;
}); });
this.route.queryParams.subscribe((params) => { this.route.queryParams.subscribe((params) => {
@@ -79,14 +80,11 @@ export class TasksCloudDemoComponent implements OnInit {
} }
setCurrentSettings(settings) { setCurrentSettings(settings) {
if (settings.multiselect !== undefined) { if (settings) {
this.multiselect = settings.multiselect; this.multiselect = settings.multiselect;
}
if (settings.testingMode !== undefined) {
this.testingMode = settings.testingMode; this.testingMode = settings.testingMode;
}
if (settings.selectionMode !== undefined) {
this.selectionMode = settings.selectionMode; this.selectionMode = settings.selectionMode;
this.taskDetailsRedirection = settings.taskDetailsRedirection;
} }
} }
@@ -99,8 +97,8 @@ export class TasksCloudDemoComponent implements OnInit {
} }
onRowClick(taskId) { onRowClick(taskId) {
if (!this.multiselect && this.selectionMode !== 'multiple') { if (!this.multiselect && this.selectionMode !== 'multiple' && this.taskDetailsRedirection) {
this.router.navigate([`/cloud/${this.applicationName}/task-details/${taskId}`]); this.router.navigate([`/cloud/${this.appName}/task-details/${taskId}`]);
} }
} }
@@ -117,7 +115,7 @@ export class TasksCloudDemoComponent implements OnInit {
onTaskFilterAction(filterAction: any) { onTaskFilterAction(filterAction: any) {
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id }); this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) { if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) {
this.router.navigate([`/cloud/${this.applicationName}/tasks/`], { queryParams: filterAction.filter }); this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filterAction.filter });
} }
} }
} }
@@ -48,6 +48,10 @@ export class CardViewComponent implements OnInit {
this.createCard(); this.createCard();
} }
respondToCardClick() {
this.logs.push(`clickable field`);
}
ngOnInit() { ngOnInit() {
this.cardViewUpdateService.itemUpdated$.subscribe(this.onItemChange.bind(this)); this.cardViewUpdateService.itemUpdated$.subscribe(this.onItemChange.bind(this));
} }
@@ -118,6 +122,17 @@ export class CardViewComponent implements OnInit {
value: new Map([['999', 'My Value']]), value: new Map([['999', 'My Value']]),
key: 'map', key: 'map',
default: 'default map value' default: 'default map value'
}),
new CardViewTextItemModel({
label: 'This is clickable ',
value: 'click here',
key: 'click',
default: 'click here',
editable: this.isEditable,
clickable: true,
clickCallBack: () => {
this.respondToCardClick();
}
}) })
]; ];
} }
@@ -42,6 +42,13 @@
</button> </button>
</mat-list-item> </mat-list-item>
<mat-list-item (click)="applicationListCloudConfClick()">
<a matLine id="adf-apps-cloud-conf">Application List Cloud</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="taskListCloudConfClick()"> <mat-list-item (click)="taskListCloudConfClick()">
<a matLine id="adf-task-list-cloud-conf">Task List Cloud</a> <a matLine id="adf-task-list-cloud-conf">Task List Cloud</a>
<button mat-icon-button> <button mat-icon-button>
@@ -69,6 +76,27 @@
<mat-icon>info</mat-icon> <mat-icon>info</mat-icon>
</button> </button>
</mat-list-item> </mat-list-item>
<mat-list-item (click)="infinitePaginationConfClick()">
<a matLine id="adf-infinite-pagination-conf">Infinite pagination</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="supportedPageSizesClick()">
<a matLine id="adf-supported-page-size">Supported Page Sizes </a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="textOrientationClick()">
<a matLine id="adf-page-orientation-conf">Page Orientation</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
</mat-nav-list> </mat-nav-list>
<div> <div>
@@ -16,7 +16,7 @@
*/ */
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { AppConfigService, NotificationService } from '@alfresco/adf-core'; import { AppConfigService, NotificationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
@Component({ @Component({
selector: 'app-config-editor', selector: 'app-config-editor',
@@ -29,6 +29,8 @@ export class ConfigEditorComponent {
code: any; code: any;
field = 'content-metadata'; field = 'content-metadata';
invalidJson = false; invalidJson = false;
isUserPreference = false;
userPreferenceProperty: string;
editorOptions = { editorOptions = {
theme: 'vs-dark', theme: 'vs-dark',
@@ -43,13 +45,19 @@ export class ConfigEditorComponent {
this.indentCode(); this.indentCode();
} }
constructor(private appConfig: AppConfigService, private notificationService: NotificationService) { constructor(private appConfig: AppConfigService,
private userPreferencesService: UserPreferencesService,
private notificationService: NotificationService) {
this.code = JSON.stringify(appConfig.config['content-metadata']); this.code = JSON.stringify(appConfig.config['content-metadata']);
} }
onSave() { onSave() {
try { try {
this.appConfig.config[this.field] = JSON.parse(this.editor.getValue()); if (this.isUserPreference) {
this.userPreferencesService.set(this.userPreferenceProperty, JSON.parse(this.editor.getValue()));
} else {
this.appConfig.config[this.field] = JSON.parse(this.editor.getValue());
}
} catch (error) { } catch (error) {
this.invalidJson = true; this.invalidJson = true;
this.notificationService.openSnackMessage( this.notificationService.openSnackMessage(
@@ -71,65 +79,115 @@ export class ConfigEditorComponent {
} }
fileConfClick() { fileConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['files']); this.code = JSON.stringify(this.appConfig.config['files']);
this.field = 'files'; this.field = 'files';
this.indentCode(); this.indentCode();
} }
textOrientationClick() {
this.isUserPreference = true;
this.userPreferenceProperty = 'textOrientation';
this.userPreferencesService.select( this.userPreferenceProperty).subscribe((textOrientation: number) => {
this.code = JSON.stringify(textOrientation);
this.field = 'textOrientation';
this.indentCode();
});
this.indentCode();
}
searchConfClick() { searchConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['search']); this.code = JSON.stringify(this.appConfig.config['search']);
this.field = 'search'; this.field = 'search';
this.indentCode(); this.indentCode();
} }
metadataConfClick() { metadataConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['content-metadata']); this.code = JSON.stringify(this.appConfig.config['content-metadata']);
this.field = 'content-metadata'; this.field = 'content-metadata';
this.indentCode(); this.indentCode();
} }
taskHeaderConfClick() { taskHeaderConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-task-header']); this.code = JSON.stringify(this.appConfig.config['adf-task-header']);
this.field = 'adf-task-header'; this.field = 'adf-task-header';
this.indentCode(); this.indentCode();
} }
processInstanceHeaderConfClick() { processInstanceHeaderConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-process-instance-header']); this.code = JSON.stringify(this.appConfig.config['adf-process-instance-header']);
this.field = 'adf-process-instance-header'; this.field = 'adf-process-instance-header';
this.indentCode(); this.indentCode();
} }
startProcessConfClick() { startProcessConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-start-process']); this.code = JSON.stringify(this.appConfig.config['adf-start-process']);
this.field = 'adf-start-process'; this.field = 'adf-start-process';
this.indentCode(); this.indentCode();
} }
taskListCloudConfClick() { taskListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-cloud-task-list']); this.code = JSON.stringify(this.appConfig.config['adf-cloud-task-list']);
this.field = 'adf-cloud-task-list'; this.field = 'adf-cloud-task-list';
this.indentCode(); this.indentCode();
} }
editProcessFilterConfClick() { editProcessFilterConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-edit-process-filter']); this.code = JSON.stringify(this.appConfig.config['adf-edit-process-filter']);
this.field = 'adf-edit-process-filter'; this.field = 'adf-edit-process-filter';
this.indentCode(); this.indentCode();
} }
editTaskFilterConfClick() { editTaskFilterConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-edit-task-filter']); this.code = JSON.stringify(this.appConfig.config['adf-edit-task-filter']);
this.field = 'adf-edit-task-filter'; this.field = 'adf-edit-task-filter';
this.indentCode(); this.indentCode();
} }
processListCloudConfClick() { processListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-cloud-process-list']); this.code = JSON.stringify(this.appConfig.config['adf-cloud-process-list']);
this.field = 'adf-cloud-process-list'; this.field = 'adf-cloud-process-list';
this.indentCode(); this.indentCode();
} }
infinitePaginationConfClick() {
this.isUserPreference = true;
this.userPreferenceProperty = UserPreferenceValues.PaginationSize;
this.userPreferencesService.select(this.userPreferenceProperty).subscribe((pageSize: number) => {
this.code = JSON.stringify(pageSize);
this.field = 'adf-infinite-pagination';
this.indentCode();
});
}
supportedPageSizesClick() {
this.isUserPreference = true;
this.userPreferenceProperty = UserPreferenceValues.SupportedPageSizes;
this.userPreferencesService.select(this.userPreferenceProperty).subscribe((supportedPageSizes: number) => {
this.code = JSON.stringify(supportedPageSizes);
this.field = 'adf-supported-page-size';
this.indentCode();
});
}
applicationListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['alfresco-deployed-apps']);
this.field = 'alfresco-deployed-apps';
this.indentCode();
}
indentCode() { indentCode() {
setTimeout(() => { setTimeout(() => {
this.editor.getAction('editor.action.formatDocument').run(); this.editor.getAction('editor.action.formatDocument').run();
@@ -2,28 +2,37 @@
<input id="adf-datatable-filter-input" matInput placeholder="Name filter" [(ngModel)]="data.filterValue"> <input id="adf-datatable-filter-input" matInput placeholder="Name filter" [(ngModel)]="data.filterValue">
</mat-form-field> </mat-form-field>
<adf-datatable <mat-slide-toggle
#dataTable id="adf-toggle-sticky-header"
[data]="data" [color]="'primary'"
[selectionMode]="selectionMode" (change)="toggleStickyHeader()"
[multiselect]="multiselect" [checked]="stickyHeader">
[actions]="true" Sticky header
rowStyleClass="custom-row-style" </mat-slide-toggle>
(showRowActionsMenu)="onShowRowActionsMenu($event)"
(executeRowAction)="onExecuteRowAction($event)" <div style="height: 310px; overflow-y: auto;">
(row-click)="onRowClick($event)" <adf-datatable
(row-dblclick)="onRowDblClick($event)"> #dataTable
<!-- HTML column definition demo --> [data]="data"
<!-- [stickyHeader]="stickyHeader"
<data-columns> [selectionMode]="selectionMode"
<data-column type="image" key="icon" [sortable]="false"></data-column> [multiselect]="multiselect"
<data-column key="id" title="Id"></data-column> [actions]="true"
<data-column key="createdOn" title="Created"></data-column> rowStyleClass="custom-row-style"
<data-column key="name" title="Name" class="adf-full-width name-column"></data-column> (showRowActionsMenu)="onShowRowActionsMenu($event)" (executeRowAction)="onExecuteRowAction($event)"
<data-column key="createdBy.name" title="Created By"></data-column> (row-click)="onRowClick($event)" (row-dblclick)="onRowDblClick($event)">
</data-columns> <!-- HTML column definition demo -->
--> <!--
</adf-datatable> <data-columns>
<data-column type="image" key="icon" [sortable]="false"></data-column>
<data-column key="id" title="Id"></data-column>
<data-column key="createdOn" title="Created"></data-column>
<data-column key="name" title="Name" class="adf-full-width name-column"></data-column>
<data-column key="createdBy.name" title="Created By"></data-column>
</data-columns>
-->
</adf-datatable>
</div>
<div> <div>
Selected items: {{ dataTable.selection?.length }} Selected items: {{ dataTable.selection?.length }}
@@ -54,6 +54,7 @@ export class DataTableComponent {
multiselect = false; multiselect = false;
data: FilteredDataAdapter; data: FilteredDataAdapter;
stickyHeader = false;
@Input() @Input()
selectionMode = 'single'; selectionMode = 'single';
@@ -74,12 +75,18 @@ export class DataTableComponent {
this.reset(); this.reset();
} }
/* spellchecker: disable */
reset() { reset() {
this.data = new FilteredDataAdapter( this.data = new FilteredDataAdapter(
[ [
{ {
id: 1, id: 1,
name: 'Name 1', name: `Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.`,
createdOn: new Date(2016, 6, 2, 15, 8, 1), createdOn: new Date(2016, 6, 2, 15, 8, 1),
createdBy: this._createdBy, createdBy: this._createdBy,
icon: 'material-icons://folder_open' icon: 'material-icons://folder_open'
@@ -100,23 +107,24 @@ export class DataTableComponent {
}, },
{ {
id: 4, id: 4,
name: 'Image 1', name: 'Image 8',
createdOn: new Date(2016, 6, 2, 15, 8, 4), createdOn: new Date(2016, 6, 2, 15, 8, 4),
createdBy: this._createdBy, createdBy: this._createdBy,
icon: this._imageUrl icon: 'material-icons://alarm'
} }
], ],
[ [
{ type: 'image', key: 'icon', title: '', srTitle: 'Thumbnail' }, { type: 'image', key: 'icon', title: '', srTitle: 'Thumbnail' },
{ type: 'text', key: 'id', title: 'Id', sortable: true , cssClass: 'adf-desktop-only'}, { type: 'text', key: 'id', title: 'Id', sortable: true , cssClass: '' },
{ type: 'text', key: 'createdOn', title: 'Created On', sortable: true }, { type: 'text', key: 'createdOn', title: 'Created On', sortable: true, cssClass: 'adf-ellipsis-cell adf-expand-cell-5' },
{ type: 'text', key: 'name', title: 'Name', cssClass: 'adf-full-width adf-name-column', sortable: true }, { type: 'text', key: 'name', title: 'Name', cssClass: 'adf-ellipsis-cell', sortable: true },
{ type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true, cssClass: 'adf-desktop-only'} { type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true, cssClass: ''}
] ]
); );
this.data.setSorting(new DataSorting('id', 'asc')); this.data.setSorting(new DataSorting('id', 'asc'));
} }
/* spellchecker: enable */
addRow() { addRow() {
const id = this.data.getRows().length + 1; const id = this.data.getRows().length + 1;
@@ -199,4 +207,8 @@ export class DataTableComponent {
onRowDblClick(event) { onRowDblClick(event) {
this.logService.log(event); this.logService.log(event);
} }
toggleStickyHeader() {
this.stickyHeader = !this.stickyHeader;
}
} }
@@ -4,7 +4,7 @@
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate"> <adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
<adf-info-drawer-tab [label]="'APP.INFO_DRAWER.COMMENTS' | translate"> <adf-info-drawer-tab [label]="'APP.INFO_DRAWER.COMMENTS' | translate">
<adf-comments [nodeId]="nodeId" [readOnly]="isCommentDisabled"></adf-comments> <adf-comments [nodeId]="nodeId" [readOnly]="!isCommentEnabled"></adf-comments>
</adf-info-drawer-tab> </adf-info-drawer-tab>
<adf-info-drawer-tab [label]="'APP.INFO_DRAWER.PROPERTIES' | translate"> <adf-info-drawer-tab [label]="'APP.INFO_DRAWER.PROPERTIES' | translate">
@@ -1,3 +1,12 @@
.adf-viewer__sidebar { .adf-viewer__sidebar {
width: 380px !important; width: 380px !important;
} }
/* stylelint-disable */
.monaco-scrollable-element {
width: 600px;
}
adf-preview-extension {
width: 600px;
}
@@ -17,7 +17,7 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { ContentService, PermissionsEnum, NodesApiService } from '@alfresco/adf-core'; import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService } from '@alfresco/adf-core';
import { MatSnackBar } from '@angular/material'; import { MatSnackBar } from '@angular/material';
@Component({ @Component({
@@ -52,7 +52,7 @@ export class FileViewComponent implements OnInit {
showLeftSidebar = null; showLeftSidebar = null;
showRightSidebar = false; showRightSidebar = false;
customToolbar = false; customToolbar = false;
isCommentDisabled = false; isCommentEnabled = false;
constructor(private router: Router, constructor(private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
@@ -68,7 +68,8 @@ export class FileViewComponent implements OnInit {
this.nodeApiService.getNode(id).subscribe( this.nodeApiService.getNode(id).subscribe(
(node) => { (node) => {
if (node && node.isFile) { if (node && node.isFile) {
this.isCommentDisabled = this.contentServices.hasPermissions(node, PermissionsEnum.CONSUMER); this.isCommentEnabled = this.contentServices.hasPermissions(node, PermissionsEnum.NOT_CONSUMER) ||
this.contentServices.hasAllowableOperations(node, AllowableOperationsEnum.UPDATE);
this.nodeId = id; this.nodeId = id;
return; return;
} }
@@ -1,10 +1,11 @@
<div class="adf-container"> <div class="adf-container">
<mat-accordion *ngIf="showRecentFiles" class="adf-container-recent"> <mat-accordion *ngIf="showRecentFiles" class="adf-container-recent">
<mat-expansion-panel hideToggle="true"> <mat-expansion-panel hideToggle="true">
<mat-expansion-panel-header > <mat-expansion-panel-header>
<mat-panel-title> <mat-panel-title>
{{ 'DOCUMENT_LIST.RECENT.TITLE' | translate }}<mat-icon>history</mat-icon> {{ 'DOCUMENT_LIST.RECENT.TITLE' | translate }}
<mat-icon>history</mat-icon>
</mat-panel-title> </mat-panel-title>
</mat-expansion-panel-header> </mat-expansion-panel-header>
@@ -31,7 +32,8 @@
</adf-sites-dropdown> </adf-sites-dropdown>
</div> </div>
<div id="document-list-container" class="adf-document-list-container" fxLayout="row" fxLayoutAlign="start stretch" fxLayoutGap="16px"> <div id="document-list-container" class="adf-document-list-container" fxLayout="row" fxLayoutAlign="start stretch"
fxLayoutGap="16px">
<adf-upload-drag-area fxFlex="1 1 auto" <adf-upload-drag-area fxFlex="1 1 auto"
[disabled]="disableDragArea" [disabled]="disableDragArea"
[acceptedFilesType]="getFileFiltering()" [acceptedFilesType]="getFileFiltering()"
@@ -47,7 +49,7 @@
<span class="adf-error-message--text">{{errorMessage}}</span> <span class="adf-error-message--text">{{errorMessage}}</span>
</div> </div>
<adf-toolbar *ngIf="!disableDragArea" [color]="toolbarColor" class="adf-files-toolbar"> <adf-toolbar *ngIf="!disableDragArea" [color]="toolbarColor" class="adf-files-toolbar">
<adf-toolbar-title fxFlex="0 1 auto"> <adf-toolbar-title fxFlex="0 1 auto">
<adf-breadcrumb fxShow fxHide.lt-sm="true" <adf-breadcrumb fxShow fxHide.lt-sm="true"
class="adf-files-breadcrumb" class="adf-files-breadcrumb"
root="APP.PERSONAL-FILES" root="APP.PERSONAL-FILES"
@@ -67,8 +69,12 @@
data-automation-id="document-list-grid-view" data-automation-id="document-list-grid-view"
title="{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}" title="{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}"
(click)="toggleGalleryView()"> (click)="toggleGalleryView()">
<mat-icon *ngIf="displayMode === 'list'" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}">view_comfy</mat-icon> <mat-icon *ngIf="displayMode === 'list'"
<mat-icon *ngIf="displayMode === 'gallery'" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.LISTVIEW' | translate }}">list</mat-icon> matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}">view_comfy
</mat-icon>
<mat-icon *ngIf="displayMode === 'gallery'"
matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.LISTVIEW' | translate }}">list
</mat-icon>
</button> </button>
<button <button
data-automation-id="create-new-folder" data-automation-id="create-new-folder"
@@ -136,7 +142,8 @@
</button> </button>
</div> </div>
<button fxFlex="1 0 auto" mat-icon-button [matMenuTriggerFor]="themePicker" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.THEME' | translate }}"> <button fxFlex="1 0 auto" mat-icon-button [matMenuTriggerFor]="themePicker"
matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.THEME' | translate }}">
<mat-icon>format_color_fill</mat-icon> <mat-icon>format_color_fill</mat-icon>
</button> </button>
@@ -148,8 +155,12 @@
</mat-menu> </mat-menu>
<button mat-icon-button (click)="showVersions = !showVersions" class="adf-show-versions-button"> <button mat-icon-button (click)="showVersions = !showVersions" class="adf-show-versions-button">
<mat-icon *ngIf="!showVersions" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.SHOW_VERSION' | translate }}">chevron_left</mat-icon> <mat-icon *ngIf="!showVersions" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.SHOW_VERSION' | translate }}">
<mat-icon *ngIf="showVersions" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.HIDE_VERSION' | translate }}">chevron_right</mat-icon> chevron_left
</mat-icon>
<mat-icon *ngIf="showVersions" matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.HIDE_VERSION' | translate }}">
chevron_right
</mat-icon>
</button> </button>
<adf-toolbar-divider fxFlex="0 0 auto" fxHide fxShow.lt-sm="true"></adf-toolbar-divider> <adf-toolbar-divider fxFlex="0 0 auto" fxHide fxShow.lt-sm="true"></adf-toolbar-divider>
@@ -160,7 +171,7 @@
<mat-menu #menu="matMenu"> <mat-menu #menu="matMenu">
<button mat-menu-item <button mat-menu-item
(click)="toggleGalleryView()"> (click)="toggleGalleryView()">
<mat-icon *ngIf="displayMode === 'list'" >view_comfy</mat-icon> <mat-icon *ngIf="displayMode === 'list'">view_comfy</mat-icon>
<mat-icon *ngIf="displayMode === 'gallery'">list</mat-icon> <mat-icon *ngIf="displayMode === 'gallery'">list</mat-icon>
<span>{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}</span> <span>{{ 'DOCUMENT_LIST.TOOLBAR.CARDVIEW' | translate }}</span>
</button> </button>
@@ -200,8 +211,10 @@
</mat-menu> </mat-menu>
</adf-toolbar> </adf-toolbar>
<adf-document-list <div class="adf-document-list-container" [ngClass]="{'adf-sticky-document-list': stickyHeader }">
<adf-document-list
#documentList #documentList
class="adf-file-list-container"
[permissionsStyle]="permissionsStyle" [permissionsStyle]="permissionsStyle"
[currentFolderId]="currentFolderId" [currentFolderId]="currentFolderId"
[contextMenuActions]="true" [contextMenuActions]="true"
@@ -216,6 +229,7 @@
[sortingMode]="sortingMode" [sortingMode]="sortingMode"
[showHeader]="showHeader" [showHeader]="showHeader"
[thumbnails]="thumbnails" [thumbnails]="thumbnails"
[stickyHeader]="stickyHeader"
(error)="onNavigationError($event)" (error)="onNavigationError($event)"
(success)="resetError()" (success)="resetError()"
(ready)="emitReadyEvent($event)" (ready)="emitReadyEvent($event)"
@@ -224,27 +238,26 @@
(permissionError)="handlePermissionError($event)" (permissionError)="handlePermissionError($event)"
(name-click)="documentList.onNodeDblClick($event.detail?.node)"> (name-click)="documentList.onNodeDblClick($event.detail?.node)">
<adf-custom-no-permission-template *ngIf="enableCustomPermissionMessage"> <adf-custom-no-permission-template *ngIf="enableCustomPermissionMessage">
<h1>You don't have permissions</h1> <h1>You don't have permissions</h1>
</adf-custom-no-permission-template> </adf-custom-no-permission-template>
<adf-custom-empty-content-template *ngIf="disableDragArea"> <adf-custom-empty-content-template *ngIf="disableDragArea">
<div class="adf-empty_template"> <div class="adf-empty_template">
<div class="adf-no-result-message">{{ 'SEARCH.NO_RESULT' | translate }}</div> <div class="adf-no-result-message">{{ 'SEARCH.NO_RESULT' | translate }}</div>
</div> </div>
</adf-custom-empty-content-template> </adf-custom-empty-content-template>
<data-columns> <data-columns>
<data-column <data-column
key="$thumbnail" key="$thumbnail"
type="image" type="image"
[sortable]="false" [sortable]="false"
class="adf-image-table-cell" class="adf-image-table-cell "
[class.adf-cell-thumbnail]="thumbnails"> [class.adf-cell-thumbnail]="thumbnails">
</data-column> </data-column>
<data-column <data-column
*ngIf="showNameColumn && hyperlinkNavigation" *ngIf="showNameColumn && hyperlinkNavigation"
key="name" key="name"
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
[formatTooltip]="getNodeNameTooltip" [formatTooltip]="getNodeNameTooltip">
class="adf-full-width adf-ellipsis-cell">
<ng-template let-context> <ng-template let-context>
<adf-name-column [context]="context"></adf-name-column> <adf-name-column [context]="context"></adf-name-column>
</ng-template> </ng-template>
@@ -254,7 +267,7 @@
key="name" key="name"
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
[formatTooltip]="getNodeNameTooltip" [formatTooltip]="getNodeNameTooltip"
class="adf-full-width adf-ellipsis-cell"> class="adf-ellipsis-cell adf-expand-cell-5">
</data-column> </data-column>
<!-- Location column demo --> <!-- Location column demo -->
<!-- <!--
@@ -268,7 +281,18 @@
<data-column <data-column
key="content.sizeInBytes" key="content.sizeInBytes"
title="{{'DOCUMENT_LIST.COLUMNS.SIZE' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.SIZE' | translate}}"
type="fileSize"> type="fileSize"
class="adf-desktop-only">
</data-column>
<data-column
*ngIf="searchTerm"
key="search"
title="Search"
class="adf-desktop-only">
<ng-template let-entry="$implicit">
<div [innerHTML]="searchResultsHighlight(entry.row.node.entry.search) | highlight:searchTerm">
</div>
</ng-template>
</data-column> </data-column>
<!-- Notes: has performance overhead due to multiple files/folders causing separate HTTP calls to get tags --> <!-- Notes: has performance overhead due to multiple files/folders causing separate HTTP calls to get tags -->
<!-- <!--
@@ -282,14 +306,14 @@
</data-column> </data-column>
--> -->
<data-column <data-column
class="adf-full-width adf-ellipsis-cell" class="adf-full-width adf-ellipsis-cell adf-desktop-only"
title="{{'DOCUMENT_LIST.COLUMNS.NODE_ID' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.NODE_ID' | translate}}"
key="id"> key="id">
</data-column> </data-column>
<data-column <data-column
class="adf-desktop-only"
title="{{'DOCUMENT_LIST.COLUMNS.IS_LOCKED' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.IS_LOCKED' | translate}}"
key="id"> key="id"
class="adf-desktop-only">
<ng-template let-entry="$implicit"> <ng-template let-entry="$implicit">
<button mat-icon-button [adf-node-lock]="entry.row.node.entry" class="adf-lock-button"> <button mat-icon-button [adf-node-lock]="entry.row.node.entry" class="adf-lock-button">
<mat-icon *ngIf="entry.row.getValue('isLocked')">lock</mat-icon> <mat-icon *ngIf="entry.row.getValue('isLocked')">lock</mat-icon>
@@ -300,14 +324,14 @@
<data-column <data-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_BY' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.CREATED_BY' | translate}}"
key="createdByUser.displayName" key="createdByUser.displayName"
class="adf-desktop-only"> class="adf-desktop-only adf-ellipsis-cell">
</data-column> </data-column>
<data-column <data-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED' | translate}}" title="{{'DOCUMENT_LIST.COLUMNS.CREATED' | translate}}"
key="createdAt" key="createdAt"
type="date" type="date"
[format]="enableMediumTimeFormat ? 'medium' : 'timeAgo'" [format]="enableMediumTimeFormat ? 'medium' : 'timeAgo'"
class="adf-desktop-only"> class="adf-desktop-only adf-ellipsis-cell">
</data-column> </data-column>
</data-columns> </data-columns>
@@ -400,6 +424,7 @@
</content-action> </content-action>
</content-actions> </content-actions>
</adf-document-list> </adf-document-list>
</div>
<adf-pagination <adf-pagination
#standardPagination #standardPagination
*ngIf="!infiniteScrolling" *ngIf="!infiniteScrolling"
@@ -421,7 +446,7 @@
<adf-info-drawer-layout *ngIf="showVersions" class="adf-manage-versions-sidebar" fxFlex="0 0 auto"> <adf-info-drawer-layout *ngIf="showVersions" class="adf-manage-versions-sidebar" fxFlex="0 0 auto">
<div info-drawer-content> <div info-drawer-content>
<adf-info-drawer [title]="'Details'" *ngIf="documentList.selection[0]" > <adf-info-drawer [title]="'Details'" *ngIf="documentList.selection[0]">
<adf-info-drawer-tab [label]="'Properties'"> <adf-info-drawer-tab [label]="'Properties'">
<adf-content-metadata-card <adf-content-metadata-card
[node]="documentList.selection[0].entry" [node]="documentList.selection[0].entry"
@@ -513,7 +538,8 @@
</section> </section>
<section> <section>
<mat-slide-toggle id="adf-extension-filter-upload-switch" [color]="'primary'" [(ngModel)]="acceptedFilesTypeShow"> <mat-slide-toggle id="adf-extension-filter-upload-switch" [color]="'primary'"
[(ngModel)]="acceptedFilesTypeShow">
{{'DOCUMENT_LIST.CUSTOM_FILTER' | translate}} {{'DOCUMENT_LIST.CUSTOM_FILTER' | translate}}
</mat-slide-toggle> </mat-slide-toggle>
</section> </section>
@@ -531,13 +557,14 @@
</section> </section>
<section> <section>
<mat-slide-toggle id="adf-document-list-enable-drop-files" [color]="'primary'" [(ngModel)]="allowDropFiles" (click)="toggleAllowDropFiles()" > <mat-slide-toggle id="adf-document-list-enable-drop-files" [color]="'primary'" [(ngModel)]="allowDropFiles"
(click)="toggleAllowDropFiles()">
{{'DOCUMENT_LIST.ALLOW_DROP_FILES' | translate}} {{'DOCUMENT_LIST.ALLOW_DROP_FILES' | translate}}
</mat-slide-toggle> </mat-slide-toggle>
</section> </section>
<section> <section>
<mat-slide-toggle id="adf-version-upload-switch" [color]="'primary'" [(ngModel)]="versioning"> <mat-slide-toggle id="adf-version-upload-switch" [color]="'primary'" [(ngModel)]="versioning">
{{'DOCUMENT_LIST.ENABLE_VERSIONING' | translate}} {{'DOCUMENT_LIST.ENABLE_VERSIONING' | translate}}
</mat-slide-toggle> </mat-slide-toggle>
</section> </section>
@@ -585,6 +612,12 @@
</mat-slide-toggle> </mat-slide-toggle>
</section> </section>
<section>
<mat-slide-toggle
color="primary" [(ngModel)]="stickyHeader" id="stickyHeader">
Sticky Header
</mat-slide-toggle>
</section>
<h5>Upload</h5> <h5>Upload</h5>
<section *ngIf="acceptedFilesTypeShow"> <section *ngIf="acceptedFilesTypeShow">
@@ -655,4 +688,4 @@
</div> </div>
</div> </div>
<adf-file-uploading-dialog #fileDialog (error)="openSnackMessage($event)" ></adf-file-uploading-dialog> <adf-file-uploading-dialog #fileDialog (error)="openSnackMessage($event)"></adf-file-uploading-dialog>
@@ -1,7 +1,7 @@
@mixin adf-file-component-theme($theme) { @mixin adf-file-component-theme($theme) {
$minimumDocumentListWidth: 900px;
$foreground: map-get($theme, foreground); $foreground: map-get($theme, foreground);
.adf-container { .adf-container {
margin: 10px !important; margin: 10px !important;
} }
@@ -38,9 +38,21 @@
adf-document-list ::ng-deep .adf-datatable-selected > svg { adf-document-list ::ng-deep .adf-datatable-selected > svg {
fill: #00bcd4 !important; fill: #00bcd4 !important;
margin-top: -4px;
margin-left: -4px;
width: 32px;
height: 32px;
} }
.adf-data-table-card .adf-lock-button { .adf-document-list-container {
min-height: 400px;
.adf-datatable-list {
min-height: 400px;
}
}
.adf-datatable-card .adf-lock-button {
top: -10px; top: -10px;
} }
@@ -59,10 +71,6 @@
.adf-toolbar-title { .adf-toolbar-title {
display: flex; display: flex;
width: 100%; width: 100%;
.adf-breadcrumb {
width: 0;
}
} }
} }
@@ -128,46 +136,115 @@
} }
} }
@media (max-device-width: $minimumDocumentListWidth) { @media all {
adf-document-list .adf-data-table { .adf-isLocked-column {
.adf-data-table-cell, max-width: 30px !important;
.adf-datatable-table-cell-header { margin-right: 5px;
display: none;
}
.adf-data-table-cell:first-child,
.adf-datatable-table-cell-header:first-child,
.adf-data-table-cell:nth-child(2),
.adf-datatable-table-cell-header:nth-child(2) {
display: table-cell;
}
} }
.adf-site-container-style { .adf-folder-image-column {
width: 100%; max-width: 28px!important;
display: block;
& ::ng-deep .adf-site-dropdown-list-element {
width: 100%;
}
} }
}
adf-file-uploading-dialog ::ng-deep .adf-upload-dialog { @media (max-width: 768px) {
width: 80%; .adf-createdOn-column {
display: none !important;
}
}
& ::ng-deep adf-file-uploading-list ::ng-deep adf-file-uploading-list-row @media (max-width: 500px) {
.adf-file-uploading-row__group { .adf-datatable-list {
min-width: 0; .adf {
&-display-name-column {
max-width: 50% !important;
}
&-size-column {
display: none !important;
}
&-createdBy-column {
max-width: 45% !important;
}
&-nodeId-column {
display: none !important;
}
} }
} }
} }
@media (max-device-width: 1024px) { @media (max-width: 600px) {
adf-document-list .adf-data-table { .adf-datatable-list {
.adf {
&-display-name-column {
max-width: 35%;
}
&-size-column {
max-width: 8%;
}
&-createdBy-column {
max-width: 35%;
}
&-createdOn-column {
max-width: 15%;
}
&-nodeId-column {
max-width: 10%;
}
&-isLocked-column {
display: none!important;
}
&-standard-breadcrumb {
display: none !important;
}
}
}
}
.adf-data-table-cell:nth-child(5), @media (min-width: 601px) {
.adf-datatable-table-cell-header:nth-child(5) { .adf-datatable-list {
display: none; .adf {
&-display-name-column {
max-width: 30%;
}
&-size-column {
max-width: 10%;
}
&-createdBy-column {
max-width: 30%;
}
&-createdOn-column {
max-width: 15%;
}
&-nodeId-column {
max-width: 12%;
}
&-alternate-breadcrumb {
display: none !important;
}
}
}
}
@media (min-width: 1400px) {
.adf-datatable-list {
.adf {
&-display-name-column {
max-width: 40%;
}
&-size-column {
max-width: 15%;
}
&-createdBy-column {
max-width: 20%;
}
&-createdOn-column {
max-width: 20%;
}
&-nodeId-column {
max-width: 20%;
}
} }
} }
} }
@@ -28,7 +28,7 @@ import {
AlfrescoApiService, AuthenticationService, AppConfigService, AppConfigValues, ContentService, TranslationService, AlfrescoApiService, AuthenticationService, AppConfigService, AppConfigValues, ContentService, TranslationService,
FileUploadEvent, FolderCreatedEvent, LogService, NotificationService, FileUploadEvent, FolderCreatedEvent, LogService, NotificationService,
UploadService, DataColumn, DataRow, UserPreferencesService, UploadService, DataColumn, DataRow, UserPreferencesService,
PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent, HighlightDirective
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { import {
@@ -46,6 +46,7 @@ import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.compon
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { PreviewService } from '../../services/preview.service'; import { PreviewService } from '../../services/preview.service';
import { debounceTime } from 'rxjs/operators'; import { debounceTime } from 'rxjs/operators';
import { SearchEntry } from '@alfresco/js-api';
const DEFAULT_FOLDER_TO_SHOW = '-my-'; const DEFAULT_FOLDER_TO_SHOW = '-my-';
@@ -150,6 +151,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
@Input() @Input()
showNameColumn = true; showNameColumn = true;
@Input()
searchTerm = '';
@Output() @Output()
documentListReady: EventEmitter<any> = new EventEmitter(); documentListReady: EventEmitter<any> = new EventEmitter();
@@ -180,8 +184,12 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
@ViewChild(InfinitePaginationComponent) @ViewChild(InfinitePaginationComponent)
infinitePaginationComponent: InfinitePaginationComponent; infinitePaginationComponent: InfinitePaginationComponent;
@ViewChild(HighlightDirective)
highlighter: HighlightDirective;
permissionsStyle: PermissionStyleModel[] = []; permissionsStyle: PermissionStyleModel[] = [];
infiniteScrolling: boolean; infiniteScrolling: boolean;
stickyHeader: boolean;
warnOnMultipleUploads = false; warnOnMultipleUploads = false;
thumbnails = false; thumbnails = false;
enableCustomPermissionMessage = false; enableCustomPermissionMessage = false;
@@ -581,4 +589,10 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
); );
}); });
} }
searchResultsHighlight(search: SearchEntry): string {
if (search && search.highlight) {
return search.highlight.map((currentHighlight) => currentHighlight.snippets).join(', ');
}
}
} }
@@ -16,8 +16,7 @@
*/ */
import { Component, ViewChild } from '@angular/core'; import { Component, ViewChild } from '@angular/core';
import { FormComponent, FormModel, FormService, LogService } from '@alfresco/adf-core'; import { FormComponent, FormModel, FormService, LogService, FormOutcomeEvent } from '@alfresco/adf-core';
import { FormOutcomeEvent } from '../../../../../lib/core/form/components/widgets/core';
@Component({ @Component({
selector: 'app-form-list', selector: 'app-form-list',
@@ -23,7 +23,7 @@ import { CoreModule } from '@alfresco/adf-core';
describe('HomeComponent', () => { describe('HomeComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CoreModule], imports: [CoreModule.forRoot()],
declarations: [HomeComponent], declarations: [HomeComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}); });
@@ -1,5 +1,5 @@
<header class="adf-logout-background"> <header class="adf-logout-background">
<div class="adf-logout-section"> <div class="adf-logout-section" data-automation-id="adf-logout-section">
<div class="adf-logout-headline"> <div class="adf-logout-headline">
<h1>{{ 'APP.LOGOUT.TITLE' | translate}}</h1> <h1>{{ 'APP.LOGOUT.TITLE' | translate}}</h1>
<h2>{{ 'APP.LOGOUT.SUB_TITLE' | translate}}</h2> <h2>{{ 'APP.LOGOUT.SUB_TITLE' | translate}}</h2>
@@ -63,17 +63,15 @@ export class DemoPermissionComponent implements OnInit {
} }
openAddPermissionDialog(event: Event) { openAddPermissionDialog(event: Event) {
this.nodePermissionDialogService.updateNodePermissionByDialog(this.nodeId).subscribe(() => { this.nodePermissionDialogService.updateNodePermissionByDialog(this.nodeId).subscribe(
this.displayPermissionComponent.reload(); () => this.displayPermissionComponent.reload(),
}, (error) => this.showErrorMessage(error));
(error) => {
this.showErrorMessage(error);
});
} }
showErrorMessage(error) { showErrorMessage(error) {
const message = error.message ? error.message : error;
this.notificationService.openSnackMessage( this.notificationService.openSnackMessage(
error, message,
4000 4000
); );
} }
@@ -71,23 +71,23 @@
} }
.adf-list { .adf-list {
.adf-data-table { .adf-datatable-list {
border: none; border: none;
} }
.adf-data-table tr, .adf-datatable tr,
.adf-data-table td { .adf-datatable td {
height: 36px; height: 36px;
font-size: 14px; font-size: 14px;
} }
.adf-data-table td { .adf-datatable td {
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
border-bottom: none; border-bottom: none;
} }
.adf-data-table th { .adf-datatable th {
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
height: 40px; height: 40px;
@@ -419,7 +419,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
} }
relocateLocationToTask(): void { relocateLocationToTask(): void {
this.location.go(`/activiti/apps/${this.appId || 0}/tasks/${this.taskFilter.id}`); this.location.go(`/activiti/apps/${this.appId || 0}/tasks/${this.taskFilter ? this.taskFilter.id : 0}`);
} }
relocateLocationToReport(): void { relocateLocationToReport(): void {
@@ -484,7 +484,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
name: event.value.name || 'No name', name: event.value.name || 'No name',
created: event.value.created created: event.value.created
}; };
this.activitiFilter.selectFilter(null);
if (this.taskList) { if (this.taskList) {
this.taskList.setCustomDataSource([processTaskDataRow]); this.taskList.setCustomDataSource([processTaskDataRow]);
this.taskList.selectTask(taskId); this.taskList.selectTask(taskId);
@@ -22,10 +22,9 @@ import {
TaskDetailsModel, TaskDetailsModel,
TaskUploadService TaskUploadService
} from '@alfresco/adf-process-services'; } from '@alfresco/adf-process-services';
import { UploadService, AlfrescoApiService, AppConfigService } from '@alfresco/adf-core'; import { UploadService, AlfrescoApiService, AppConfigService, FileUploadCompleteEvent } from '@alfresco/adf-core';
import { PreviewService } from '../../services/preview.service'; import { PreviewService } from '../../services/preview.service';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { FileUploadCompleteEvent } from '../../../../../lib/core/events/file.event';
export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) { export function taskUploadServiceFactory(api: AlfrescoApiService, config: AppConfigService) {
return new TaskUploadService(api, config); return new TaskUploadService(api, config);
@@ -1,5 +1,5 @@
<div class="adf-search-results__facets"> <div class="adf-search-results__facets">
<adf-search-chip-list [searchFilter]="searchFilter"></adf-search-chip-list> <adf-search-chip-list [searchFilter]="searchFilter" [clearAll]="true"></adf-search-chip-list>
</div> </div>
<div class="adf-search-results"> <div class="adf-search-results">
@@ -21,6 +21,7 @@
[nodeResult]="data" [nodeResult]="data"
[disableDragArea]="true" [disableDragArea]="true"
[pagination]="pagination" [pagination]="pagination"
[searchTerm]="searchedWord"
(changedPageSize)="onRefreshPagination($event)" (changedPageSize)="onRefreshPagination($event)"
(changedPageNumber)="onRefreshPagination($event)" (changedPageNumber)="onRefreshPagination($event)"
(turnedNextPage)="onRefreshPagination($event)" (turnedNextPage)="onRefreshPagination($event)"
@@ -0,0 +1,28 @@
<h1>Select Site</h1>
<adf-sites-dropdown (change)="onSiteChange($event)" [relations]="'members'">
</adf-sites-dropdown>
Current Selected Site {{currentSelectedSite}}
<h1>Hide My Files</h1>
<adf-sites-dropdown [hideMyFiles]="true" [relations]="'members'">
</adf-sites-dropdown>
<h1>Select Default Site</h1>
<section>
<mat-form-field>
<label>Insert a Default site ID</label>
<input matInput [(ngModel)]="defaultSite">
</mat-form-field>
</section>
<button (click)="applySite()" mat-button color="primary">Apply</button>
<div *ngIf="showDefaultSite">
<adf-sites-dropdown [relations]="'members'" [value]="defaultSite">
</adf-sites-dropdown>
</div>
@@ -0,0 +1,40 @@
/*!
* @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 { Component } from '@angular/core';
@Component({
selector: 'app-sites',
templateUrl: 'sites.component.html',
styleUrls: ['sites.component.scss']
})
export class SitesComponent {
currentSelectedSite: string;
hideMyFiles: boolean = false;
showDefaultSite: boolean = false;
defaultSite: string;
onSiteChange($event: any) {
this.currentSelectedSite = JSON.stringify($event.entry);
}
applySite() {
this.showDefaultSite = true;
}
}
@@ -0,0 +1,41 @@
/*!
* @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 { NgModule } from '@angular/core';
import { SitesComponent } from './sites.component';
import { Routes, RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { ContentModule } from '@alfresco/adf-content-services';
const routes: Routes = [
{
path: '',
component: SitesComponent
}
];
@NgModule({
imports: [
CommonModule,
RouterModule.forChild(routes),
CoreModule.forChild(),
ContentModule.forChild()
],
declarations: [SitesComponent]
})
export class SitesModule {}
@@ -169,8 +169,16 @@
</data-column> </data-column>
<data-column key="name" title="Name"></data-column> <data-column key="name" title="Name"></data-column>
<data-column key="description" title="Description"></data-column> <data-column key="description" title="Description"></data-column>
<data-column key="created" title="Created"></data-column> <data-column key="created" title="Created">
<data-column key="dueDate" title="Due Date"></data-column> <ng-template let-entry="$implicit">
<div>{{entry.row.obj.created | date:'MMM d, yyyy' }} </div>
</ng-template>
</data-column>
<data-column key="dueDate" title="Due Date" type="date">
<ng-template let-entry="$implicit">
<div>{{entry.row.obj.dueDate | date:'MMM d, yyyy' }} </div>
</ng-template>
</data-column>
<data-column key="processInstanceId" title="Process Instance Id"></data-column> <data-column key="processInstanceId" title="Process Instance Id"></data-column>
<data-column key="processDefinitionId" title="Process Definition Id"></data-column> <data-column key="processDefinitionId" title="Process Definition Id"></data-column>
</data-columns> </data-columns>
@@ -42,8 +42,8 @@
<adf-empty-content <adf-empty-content
icon="delete" icon="delete"
[title]="'TRASHCAN.EMPTY_STATE.TITLE'"> [title]="'TRASHCAN.EMPTY_STATE.TITLE'">
<p class="adf-empty-content__text">{{ 'TRASHCAN.EMPTY_STATE.FIRST_TEXT' | translate }}</p> <div class="adf-empty-content__text">{{ 'TRASHCAN.EMPTY_STATE.FIRST_TEXT' | translate }}</div>
<p class="adf-empty-content__text">{{ 'TRASHCAN.EMPTY_STATE.SECOND_TEXT' | translate }}</p> <div class="adf-empty-content__text">{{ 'TRASHCAN.EMPTY_STATE.SECOND_TEXT' | translate }}</div>
</adf-empty-content> </adf-empty-content>
</adf-custom-empty-content-template> </adf-custom-empty-content-template>
@@ -57,7 +57,7 @@
</data-column> </data-column>
<data-column <data-column
class="adf-data-table-cell--ellipsis__name" class="adf-datatable-cell--ellipsis__name"
key="name" key="name"
title="DOCUMENT_LIST.COLUMNS.DISPLAY_NAME"> title="DOCUMENT_LIST.COLUMNS.DISPLAY_NAME">
<ng-template let-value="value" let-context> <ng-template let-value="value" let-context>
@@ -80,7 +80,7 @@
</data-column> </data-column>
<data-column <data-column
class="adf-data-table-cell--ellipsis" class="adf-datatable-cell--ellipsis"
key="archivedByUser.displayName" key="archivedByUser.displayName"
title="DOCUMENT_LIST.COLUMNS.DELETED_BY"> title="DOCUMENT_LIST.COLUMNS.DELETED_BY">
</data-column> </data-column>
@@ -1,51 +0,0 @@
/*!
* @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 { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { AppExtensionService } from './extension.service';
import { ExtensionsModule } from '@alfresco/adf-extensions';
export function setupExtensions(service: AppExtensionService): Function {
return () => service.load();
}
@NgModule({
imports: [CommonModule, CoreModule.forChild(), ExtensionsModule]
})
export class AppExtensionsModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppExtensionsModule,
providers: [
{
provide: APP_INITIALIZER,
useFactory: setupExtensions,
deps: [AppExtensionService],
multi: true
}
]
};
}
static forChild(): ModuleWithProviders {
return {
ngModule: AppExtensionsModule
};
}
}
+3 -9
View File
@@ -1,15 +1,9 @@
{ {
"$schema": "./extension.schema.json", "$schema": "../../lib/extensions/config/schema/app-extension.schema.json",
"$id": "app.1.0.0",
"$name": "app",
"$version": "1.0.0",
"$vendor": "Alfresco",
"$license": "Apache-2.0",
"$runtime": "2.7.0",
"$description": "base application extensions",
"$references": [ "$references": [
"plugin1.json", "plugin1.json",
"plugin2.json" "plugin2.json",
"monaco-extension.json"
], ],
"$dependencies": [] "$dependencies": []
} }
@@ -0,0 +1,17 @@
{
"$schema": "../../../lib/extensions/config/schema/plugin-extension.schema.json",
"$version": "1.0.0",
"$name": "monaco extension",
"$description": "monaco plugin",
"features": {
"viewer": {
"content": [
{
"id": "dev.tools.viewer",
"fileExtension": "js",
"component": "monaco-extension.main.component"
}
]
}
}
}
+1 -6
View File
@@ -1,16 +1,11 @@
{ {
"$schema": "../extension.schema.json", "$schema": "../../../lib/extensions/config/schema/plugin-extension.schema.json",
"$id": "plugin1.1.0.0",
"$name": "plugin1", "$name": "plugin1",
"$version": "1.0.0", "$version": "1.0.0",
"$vendor": "Alfresco", "$vendor": "Alfresco",
"$license": "Apache-2.0", "$license": "Apache-2.0",
"$runtime": "2.7.0", "$runtime": "2.7.0",
"$description": "example plugin", "$description": "example plugin",
"$dependencies": [
"@some/library1"
],
"features": { "features": {
"custom": { "custom": {
"key": "value" "key": "value"
+1 -6
View File
@@ -1,16 +1,11 @@
{ {
"$schema": "../extension.schema.json", "$schema": "../../../lib/extensions/config/schema/plugin-extension.schema.json",
"$id": "plugin2.1.1.0",
"$name": "plugin2", "$name": "plugin2",
"$version": "1.1.0", "$version": "1.1.0",
"$vendor": "Alfresco", "$vendor": "Alfresco",
"$license": "Apache-2.0", "$license": "Apache-2.0",
"$runtime": "2.7.0", "$runtime": "2.7.0",
"$description": "another example plugin", "$description": "another example plugin",
"$dependencies": [
"@some/library2"
],
"features": { "features": {
"extra": { "extra": {
"key": "value" "key": "value"
+1 -21
View File
@@ -4,27 +4,7 @@
"outDir": "../out-tsc/app", "outDir": "../out-tsc/app",
"module": "es2015", "module": "es2015",
"baseUrl": ".", "baseUrl": ".",
"types": [], "types": []
"paths": {
"@alfresco/adf-extensions": [
"../../lib/extensions"
],
"@alfresco/adf-core": [
"../../lib/core"
],
"@alfresco/adf-process-services-cloud": [
"../../lib/process-services-cloud"
],
"@alfresco/adf-content-services": [
"../../lib/content-services"
],
"@alfresco/adf-process-services": [
"../../lib/process-services"
],
"@alfresco/adf-insights": [
"../../lib/insights"
]
}
}, },
"exclude": [ "exclude": [
"test.ts", "test.ts",
+3
View File
@@ -34,6 +34,9 @@
], ],
"@alfresco/adf-process-services-cloud": [ "@alfresco/adf-process-services-cloud": [
"../../lib/process-services-cloud" "../../lib/process-services-cloud"
],
"@alfresco/adf-testing": [
"../../lib/testing"
] ]
} }
}, },
+60
View File
@@ -0,0 +1,60 @@
#!/bin/sh
if [ -n "${APP_CONFIG_AUTH_TYPE}" ];then
sed -e "s/\"authType\": \".*\"/\"authType\": \"${APP_CONFIG_AUTH_TYPE}\"/g" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_HOST}" ];then
replace="\/"
encoded=${APP_CONFIG_OAUTH2_HOST//\//$replace}
sed -e "s/\"host\": \".*\"/\"host\": \"${encoded}\"/g" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_CLIENTID}" ];then
sed -e "s/\"clientId\": \".*\"/\"clientId\": \"${APP_CONFIG_OAUTH2_CLIENTID}\"/g" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_IMPLICIT_FLOW}" ];then
sed "/implicitFlow/s/true/${APP_CONFIG_OAUTH2_IMPLICIT_FLOW}/" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_SILENT_LOGIN}" ];then
sed "/silentLogin/s/true/${APP_CONFIG_OAUTH2_SILENT_LOGIN}/" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI}" ];then
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI//\//$replace}
sed -e "s/\"redirectSilentIframeUri\": \".*\"/\"redirectSilentIframeUri\": \"${encoded}\"/g" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_LOGIN}" ];then
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_LOGIN//\//$replace}
sed -e "s/\"redirectUri\": \".*\"/\"redirectUri\": \"${encoded}\"/g" \
-i ./app.config.json
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_LOGOUT}" ];then
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_LOGOUT//\//$replace}
sed -e "s/\"redirectUriLogout\": \".*\"/\"redirectUriLogout\": \"${encoded}\"/g" \
-i ./app.config.json
fi
if [[ $ACSURL ]]; then
sed -i s%{protocol}//{hostname}{:port}%"$ACSURL"%g /usr/share/nginx/html/app.config.json
fi
if [ -n "${APP_BASE_SHARE_URL}" ];then
sed -e "s/\"baseShareUrl\": \".*\"/\"baseShareUrl\": \"${APP_BASE_SHARE_URL}\"/g" \
-i ./app.config.json
fi
nginx -g "daemon off;"
+7 -1
View File
@@ -6,7 +6,7 @@ events {
http { http {
server { server {
listen 80; listen 8080;
server_name localhost; server_name localhost;
root /usr/share/nginx/html; root /usr/share/nginx/html;
@@ -22,6 +22,12 @@ http {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
location ~ \.html$ {
add_header Cache-Control "private, no-cache, no-store, must-revalidate";
add_header Expires "Sat, 01 Jan 2000 00:00:00 GMT";
add_header Pragma no-cache;
}
location ~ ^/[a-zA-Z0-9_-]+/ { location ~ ^/[a-zA-Z0-9_-]+/ {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
+273 -254
View File
@@ -36,6 +36,9 @@ A few other pages of information are also available:
contains a preview of features we hope to release in future versions of ADF. contains a preview of features we hope to release in future versions of ADF.
- The [License info](license-info/license-info-v3.0.0.md) section lists the third-party - The [License info](license-info/license-info-v3.0.0.md) section lists the third-party
libraries used by ADF along with links to their Open Source licenses. libraries used by ADF along with links to their Open Source licenses.
- The [Breaking changes](breaking-changes/breaking-change-2.6.0-3.0.0.md) section lists
all breaking changes between major versions, such as removal of deprecated items.
- The [Upgrade guide](upgrade-guide/upgrade26-30.md) explains how to upgrade your project from an earlier version of ADF to the current version.
## Contents ## Contents
@@ -72,146 +75,151 @@ for more information about installing and using the source code.
<!--core start--> <!--core start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [About component](core/about.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows a general version and status overview of the installed ADF library. | [Source](../lib/core/about/about.component.ts) | | [About Component](core/components/about.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows a general version and status overview of the installed ADF library. | [Source](../lib/core/about/about.component.ts) |
| [Buttons menu component](core/buttons-menu.component.md) | Displays buttons on a responsive menu. | [Source](../lib/core/buttons-menu/buttons-menu.component.ts) | | [Buttons Menu Component](core/components/buttons-menu.component.md) | Displays buttons on a responsive menu. | [Source](../lib/core/buttons-menu/buttons-menu.component.ts) |
| [Card view component](core/card-view.component.md) | Displays a configurable property list renderer. | [Source](../lib/core/card-view/components/card-view/card-view.component.ts) | | [Card View component](core/components/card-view.component.md) | Displays a configurable property list renderer. | [Source](../lib/core/card-view/components/card-view/card-view.component.ts) |
| [Comment list component](core/comment-list.component.md) | Shows a list of comments. | [Source](../lib/core/comments/comment-list.component.ts) | | [Comment list component](core/components/comment-list.component.md) | Shows a list of comments. | [Source](../lib/core/comments/comment-list.component.ts) |
| [Comments component](core/comments.component.md) | Displays comments from users involved in a specified task or content and allows an involved user to add a comment to a task or a content. | [Source](../lib/core/comments/comments.component.ts) | | [Comments Component](core/components/comments.component.md) | Displays comments from users involved in a specified task or content and allows an involved user to add a comment to a task or a content. | [Source](../lib/core/comments/comments.component.ts) |
| [Data column component](core/data-column.component.md) | Defines column properties for DataTable, Tasklist, Document List and other components. | [Source](../lib/core/data-column/data-column.component.ts) | | [Data Column Component](core/components/data-column.component.md) | Defines column properties for DataTable, Tasklist, Document List and other components. | [Source](../lib/core/data-column/data-column.component.ts) |
| [Datatable component](core/datatable.component.md) | Displays data as a table with customizable columns and presentation. | [Source](../lib/core/datatable/components/datatable/datatable.component.ts) | | [DataTable component](core/components/datatable.component.md) | Displays data as a table with customizable columns and presentation. | [Source](../lib/core/datatable/components/datatable/datatable.component.ts) |
| [Empty list component](core/empty-list.component.md) | Displays a message indicating that a list is empty. | [Source](../lib/core/datatable/components/datatable/empty-list.component.ts) | | [Empty Content Component](core/components/empty-content.component.md) | Provides a generic "Empty Content" placeholder for components. | [Source](../lib/core/templates/empty-content/empty-content.component.ts) |
| [Form field component](core/form-field.component.md) | Represents a UI field in a form. | [Source](../lib/core/form/components/form-field/form-field.component.ts) | | [Empty list component](core/components/empty-list.component.md) | Displays a message indicating that a list is empty. | [Source](../lib/core/datatable/components/datatable/empty-list.component.ts) |
| [Form list component](core/form-list.component.md) | Shows forms as a list. | [Source](../lib/core/form/components/form-list.component.ts) | | [Error Content Component](core/components/error-content.component.md) | Displays info about a specific error. | [Source](../lib/core/templates/error-content/error-content.component.ts) |
| [Form component](core/form.component.md) | Shows a Form from APS | [Source](../lib/core/form/components/form.component.ts) | | [Form field component](core/components/form-field.component.md) | Represents a UI field in a form. | [Source](../lib/core/form/components/form-field/form-field.component.ts) |
| [Start form component](core/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/core/form/components/start-form.component.ts) | | [Form List Component](core/components/form-list.component.md) | Shows forms as a list. | [Source](../lib/core/form/components/form-list.component.ts) |
| [Text mask component](core/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/form/components/widgets/text/text-mask.component.ts) | | [Form component](core/components/form.component.md) | Shows a Form from APS | [Source](../lib/core/form/components/form.component.ts) |
| [Icon component](core/icon.component.md) | Provides a universal way of rendering registered and named icons. | [Source](../lib/core/icon/icon.component.ts) | | [Header component](core/components/header.component.md) | Reusable header for Alfresco applications. | [Source](../lib/core/layout/components/header/header.component.ts) |
| [Info drawer layout component](core/info-drawer-layout.component.md) | Displays a sidebar-style information panel. | [Source](../lib/core/info-drawer/info-drawer-layout.component.ts) | | [Host settings component](core/components/host-settings.component.md) ![Internal](docassets/images/InternalIcon.png) | Validates the URLs for ACS and APS and saves them in the user's local storage | [Source](../lib/core/settings/host-settings.component.ts) |
| [Info drawer component](core/info-drawer.component.md) | Displays a sidebar-style information panel with tabs. | [Source](../lib/core/info-drawer/info-drawer.component.ts) | | [Icon Component](core/components/icon.component.md) | Provides a universal way of rendering registered and named icons. | [Source](../lib/core/icon/icon.component.ts) |
| [Language menu component](core/language-menu.component.md) | Displays all the languages that are present in "app.config.json" and the default (EN). | [Source](../lib/core/language-menu/language-menu.component.ts) | | [Infinite Pagination component](core/components/infinite-pagination.component.md) | Adds "infinite" pagination to the component it is used with. | [Source](../lib/core/pagination/infinite-pagination.component.ts) |
| [Header component](core/header.component.md) | Reusable header for Alfresco applications. | [Source](../lib/core/layout/components/header/header.component.ts) | | [Info drawer layout component](core/components/info-drawer-layout.component.md) | Displays a sidebar-style information panel. | [Source](../lib/core/info-drawer/info-drawer-layout.component.ts) |
| [Sidebar action menu component](core/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/layout/components/sidebar-action/sidebar-action-menu.component.ts) | | [Info Drawer Tab component](core/components/info-drawer-tab.component.md) | Renders tabs in a Info drawer component. | [Source](../lib/core/info-drawer/info-drawer.component.ts) |
| [Sidenav layout component](core/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/layout/components/sidenav-layout/sidenav-layout.component.ts) | | [Info Drawer component](core/components/info-drawer.component.md) | Displays a sidebar-style information panel with tabs. | [Source](../lib/core/info-drawer/info-drawer.component.ts) |
| [Login dialog panel component](core/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/login/components/login-dialog-panel.component.ts) | | [Language Menu component](core/components/language-menu.component.md) | Displays all the languages that are present in "app.config.json" and the default (EN). | [Source](../lib/core/language-menu/language-menu.component.ts) |
| [Login dialog component](core/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/login/components/login-dialog.component.ts) | | [Login Dialog Panel component](core/components/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/login/components/login-dialog-panel.component.ts) |
| [Login component](core/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/login/components/login.component.ts) | | [Login Dialog component](core/components/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/login/components/login-dialog.component.ts) |
| [Infinite pagination component](core/infinite-pagination.component.md) | Adds "infinite" pagination to the component it is used with. | [Source](../lib/core/pagination/infinite-pagination.component.ts) | | [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/login/components/login.component.ts) |
| [Pagination component](core/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/pagination/pagination.component.ts) | | [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/pagination/pagination.component.ts) |
| [Host settings component](core/host-settings.component.md) ![Internal](docassets/images/InternalIcon.png) | Validates the URLs for ACS and APS and saves them in the user's local storage | [Source](../lib/core/settings/host-settings.component.ts) | | [Sidebar action menu component](core/components/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/layout/components/sidebar-action/sidebar-action-menu.component.ts) |
| [Sorting picker component](core/sorting-picker.component.md) | Selects from a set of predefined sorting definitions and directions. | [Source](../lib/core/sorting-picker/sorting-picker.component.ts) | | [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/layout/components/sidenav-layout/sidenav-layout.component.ts) |
| [Empty content component](core/empty-content.component.md) | Provides a generic "Empty Content" placeholder for components. | [Source](../lib/core/templates/empty-content/empty-content.component.ts) | | [Sorting Picker Component](core/components/sorting-picker.component.md) | Selects from a set of predefined sorting definitions and directions. | [Source](../lib/core/sorting-picker/sorting-picker.component.ts) |
| [Error content component](core/error-content.component.md) | Displays info about a specific error. | [Source](../lib/core/templates/error-content/error-content.component.ts) | | [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/core/form/components/start-form.component.ts) |
| [Toolbar divider component](core/toolbar-divider.component.md) | Divides groups of elements in a Toolbar with a visual separator. | [Source](../lib/core/toolbar/toolbar-divider.component.ts) | | [Text Mask directive](core/components/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/form/components/widgets/text/text-mask.component.ts) |
| [Toolbar title component](core/toolbar-title.component.md) | Supplies custom HTML to be included in a Toolbar component title. | [Source](../lib/core/toolbar/toolbar-title.component.ts) | | [Toolbar Divider Component](core/components/toolbar-divider.component.md) | Divides groups of elements in a Toolbar with a visual separator. | [Source](../lib/core/toolbar/toolbar-divider.component.ts) |
| [Toolbar component](core/toolbar.component.md) | Simple container for headers, titles, actions and breadcrumbs. | [Source](../lib/core/toolbar/toolbar.component.ts) | | [Toolbar Title Component](core/components/toolbar-title.component.md) | Supplies custom HTML to be included in a Toolbar component title. | [Source](../lib/core/toolbar/toolbar-title.component.ts) |
| [User info component](core/user-info.component.md) | Shows user information. | [Source](../lib/core/userinfo/components/user-info.component.ts) | | [Toolbar Component](core/components/toolbar.component.md) | Simple container for headers, titles, actions and breadcrumbs. | [Source](../lib/core/toolbar/toolbar.component.ts) |
| [Viewer component](core/viewer.component.md) | Displays content from an ACS repository. | [Source](../lib/core/viewer/components/viewer.component.ts) | | [User Info component](core/components/user-info.component.md) | Shows user information. | [Source](../lib/core/userinfo/components/user-info.component.ts) |
| [Viewer component](core/components/viewer.component.md) | Displays content from an ACS repository. | [Source](../lib/core/viewer/components/viewer.component.ts) |
## Directives ### Directives
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Context menu directive](core/context-menu.directive.md) | Adds a context menu to a component. | [Source](../lib/core/context-menu/context-menu.directive.ts) | | [Check Allowable Operation directive](core/directives/check-allowable-operation.directive.md) | Selectively disables an HTML element or Angular component. | [Source](../lib/core/directives/check-allowable-operation.directive.ts) |
| [Highlight directive](core/highlight.directive.md) | Adds highlighting to selected sections of an HTML element's content. | [Source](../lib/core/directives/highlight.directive.ts) | | [Context Menu directive](core/directives/context-menu.directive.md) | Adds a context menu to a component. | [Source](../lib/core/context-menu/context-menu.directive.ts) |
| [Logout directive](core/logout.directive.md) | Logs the user out when the decorated element is clicked. | [Source](../lib/core/directives/logout.directive.ts) | | [Highlight directive](core/directives/highlight.directive.md) | Adds highlighting to selected sections of an HTML element's content. | [Source](../lib/core/directives/highlight.directive.ts) |
| [Node delete directive](core/node-delete.directive.md) | Deletes multiple files and folders. | [Source](../lib/core/directives/node-delete.directive.ts) | | [Logout directive](core/directives/logout.directive.md) | Logs the user out when the decorated element is clicked. | [Source](../lib/core/directives/logout.directive.ts) |
| [Node download directive](core/node-download.directive.md) | Allows folders and/or files to be downloaded, with multiple nodes packed as a '.ZIP' archive. | [Source](../lib/core/directives/node-download.directive.ts) | | [Node Delete directive](core/directives/node-delete.directive.md) | Deletes multiple files and folders. | [Source](../lib/core/directives/node-delete.directive.ts) |
| [Node favorite directive](core/node-favorite.directive.md) | Selectively toggles nodes as favorites. | [Source](../lib/core/directives/node-favorite.directive.ts) | | [Node Download directive](core/directives/node-download.directive.md) | Allows folders and/or files to be downloaded, with multiple nodes packed as a '.ZIP' archive. | [Source](../lib/core/directives/node-download.directive.ts) |
| [Node permission directive](core/node-permission.directive.md) | Selectively disables an HTML element or Angular component. | [Source](../lib/core/directives/node-permission.directive.ts) | | [Node Favorite directive](core/directives/node-favorite.directive.md) | Selectively toggles nodes as favorites. | [Source](../lib/core/directives/node-favorite.directive.ts) |
| [Node restore directive](core/node-restore.directive.md) | Restores deleted nodes to their original location. | [Source](../lib/core/directives/node-restore.directive.ts) | | [Node Restore directive](core/directives/node-restore.directive.md) | Restores deleted nodes to their original location. | [Source](../lib/core/directives/node-restore.directive.ts) |
| [Upload directive](core/upload.directive.md) | Uploads content in response to file drag and drop. | [Source](../lib/core/directives/upload.directive.ts) | | [Upload Directive](core/directives/upload.directive.md) | Uploads content in response to file drag and drop. | [Source](../lib/core/directives/upload.directive.ts) |
## Models ### Interfaces
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Form field model](core/form-field.model.md) | Contains the value and metadata for a field of a Form component. | [Source](../lib/core/form/components/widgets/core/form-field.model.ts) | | [Card View Item interface](core/interfaces/card-view-item.interface.md) | Defines the implementation of an item in a Card View component. | [Source](../lib/core/card-view/interfaces/card-view-item.interface.ts) |
| [Product version model](core/product-version.model.md) | Contains version and license information classes for Alfresco products. | [Source](../lib/core/models/product-version.model.ts) | | [DataTableAdapter interface](core/interfaces/datatable-adapter.interface.md) | Defines how table data is supplied to DataTable and Tasklist components. | [Source](../lib/core/datatable/data/datatable-adapter.ts) |
| [User process model](core/user-process.model.md) | Represents a Process Services user. | [Source](../lib/core/models/user-process.model.ts) | | [FormFieldValidator interface](core/interfaces/form-field-validator.interface.md) | Defines how the input fields of Form and Task Details components are validated. | [Source](../lib/core/form/components/widgets/core/form-field-validator.ts) |
| [Bpm user model](core/bpm-user.model.md) | Contains information about a Process Services user. | [Source](../lib/core/userinfo/models/bpm-user.model.ts) | | [Search Configuration interface](core/interfaces/search-configuration.interface.md) | Provides fine control of parameters to a search. | [Source](../lib/core/interface/search-configuration.interface.ts) |
| [Ecm user model](core/ecm-user.model.md) | Contains information about a Content Services user. | [Source](../lib/core/userinfo/models/ecm-user.model.ts) |
## Pipes ### Models
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [File size pipe](core/file-size.pipe.md) | Converts a number of bytes to the equivalent in KB, MB, etc. | [Source](../lib/core/pipes/file-size.pipe.ts) | | [Bpm User model](core/models/bpm-user.model.md) | Contains information about a Process Services user. | [Source](../lib/core/userinfo/models/bpm-user.model.ts) |
| [Format space pipe](core/format-space.pipe.md) | Replaces all the white space in a string with a supplied character. | [Source](../lib/core/pipes/format-space.pipe.ts) | | [Ecm User model](core/models/ecm-user.model.md) | Contains information about a Content Services user. | [Source](../lib/core/userinfo/models/ecm-user.model.ts) |
| [Full name pipe](core/full-name.pipe.md) | Joins the first and last name properties from a UserProcessModel object into a single string. | [Source](../lib/core/pipes/full-name.pipe.ts) | | [Form Field model](core/models/form-field.model.md) | Contains the value and metadata for a field of a Form component. | [Source](../lib/core/form/components/widgets/core/form-field.model.ts) |
| [Mime type icon pipe](core/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/pipes/mime-type-icon.pipe.ts) | | [Product Version model](core/models/product-version.model.md) | Contains version and license information classes for Alfresco products. | [Source](../lib/core/models/product-version.model.ts) |
| [Node name tooltip pipe](core/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/core/pipes/node-name-tooltip.pipe.ts) | | [User Process model](core/models/user-process.model.md) | Represents a Process Services user. | [Source](../lib/core/models/user-process.model.ts) |
| [Text highlight pipe](core/text-highlight.pipe.md) | Adds highlighting to words or sections of text that match a search string. | [Source](../lib/core/pipes/text-highlight.pipe.ts) |
| [Time ago pipe](core/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/pipes/time-ago.pipe.ts) |
| [User initial pipe](core/user-initial.pipe.md) | Takes the name fields of a UserProcessModel object and extracts and formats the initials. | [Source](../lib/core/pipes/user-initial.pipe.ts) |
## Services ### Pipes
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Card item types service](core/card-item-types.service.md) | Maps type names to field component types for the Card View component. | [Source](../lib/core/card-view/services/card-item-types.service.ts) | | [App Config Pipe](core/pipes/app-config.pipe.md) | Retrieves values from the application configuration file directly. | [Source](../lib/core/app-config/app-config.pipe.ts) |
| [Card view update service](core/card-view-update.service.md) | Reports edits and clicks within fields of a Card View component. | [Source](../lib/core/card-view/services/card-view-update.service.ts) | | [File Size pipe](core/pipes/file-size.pipe.md) | Converts a number of bytes to the equivalent in KB, MB, etc. | [Source](../lib/core/pipes/file-size.pipe.ts) |
| [Activiti alfresco service](core/activiti-alfresco.service.md) | Gets Alfresco Repository folder content based on a Repository account configured in Alfresco Process Services (APS). | [Source](../lib/core/form/services/activiti-alfresco.service.ts) | | [Format Space pipe](core/pipes/format-space.pipe.md) | Replaces all the white space in a string with a supplied character. | [Source](../lib/core/pipes/format-space.pipe.ts) |
| [Form rendering service](core/form-rendering.service.md) | Maps a form field type string onto the corresponding form widget component type. | [Source](../lib/core/form/services/form-rendering.service.ts) | | [Full name pipe](core/pipes/full-name.pipe.md) | Joins the first and last name properties from a UserProcessModel object into a single string. | [Source](../lib/core/pipes/full-name.pipe.ts) |
| [Form service](core/form.service.md) | Implements Process Services form methods | [Source](../lib/core/form/services/form.service.ts) | | [Mime Type Icon pipe](core/pipes/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/pipes/mime-type-icon.pipe.ts) |
| [Node service](core/node.service.md) | Gets Alfresco Repository node metadata and creates nodes with metadata. | [Source](../lib/core/form/services/node.service.ts) | | [Node Name Tooltip pipe](core/pipes/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/core/pipes/node-name-tooltip.pipe.ts) |
| [Process content service](core/process-content.service.md) | Manipulates content related to a Process Instance or Task Instance in APS. | [Source](../lib/core/form/services/process-content.service.ts) | | [Text Highlight pipe](core/pipes/text-highlight.pipe.md) | Adds highlighting to words or sections of text that match a search string. | [Source](../lib/core/pipes/text-highlight.pipe.ts) |
| [Alfresco api service](core/alfresco-api.service.md) | Provides access to an initialized **AlfrescoJSApi** instance. | [Source](../lib/core/services/alfresco-api.service.ts) | | [Time Ago pipe](core/pipes/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/pipes/time-ago.pipe.ts) |
| [Apps process service](core/apps-process.service.md) | Gets details of the Process Services apps that are deployed for the user. | [Source](../lib/core/services/apps-process.service.ts) | | [User Initial pipe](core/pipes/user-initial.pipe.md) | Takes the name fields of a UserProcessModel object and extracts and formats the initials. | [Source](../lib/core/pipes/user-initial.pipe.ts) |
| [Auth guard bpm service](core/auth-guard-bpm.service.md) | Adds authentication with Process Services to a route within the app. | [Source](../lib/core/services/auth-guard-bpm.service.ts) |
| [Auth guard ecm service](core/auth-guard-ecm.service.md) | Adds authentication with Content Services to a route within the app. | [Source](../lib/core/services/auth-guard-ecm.service.ts) |
| [Auth guard service](core/auth-guard.service.md) | Adds authentication to a route within the app. | [Source](../lib/core/services/auth-guard.service.ts) |
| [Authentication service](core/authentication.service.md) | Provides authentication to ACS and APS. | [Source](../lib/core/services/authentication.service.ts) |
| [Comment content service](core/comment-content.service.md) | Adds and retrieves comments for nodes in Content Services. | [Source](../lib/core/services/comment-content.service.ts) |
| [Comment process service](core/comment-process.service.md) | Adds and retrieves comments for task and process instances in Process Services. | [Source](../lib/core/services/comment-process.service.ts) |
| [Content service](core/content.service.md) | Accesses app-generated data objects via URLs and file downloads. | [Source](../lib/core/services/content.service.ts) |
| [Cookie service](core/cookie.service.md) | Stores key-value data items as browser cookies. | [Source](../lib/core/services/cookie.service.ts) |
| [Deleted nodes api service](core/deleted-nodes-api.service.md) | Gets a list of Content Services nodes currently in the trash. | [Source](../lib/core/services/deleted-nodes-api.service.ts) |
| [Discovery api service](core/discovery-api.service.md) | Gets version and license information for Process Services and Content Services. | [Source](../lib/core/services/discovery-api.service.ts) |
| [Download zip service](core/download-zip.service.md) | Creates and manages downloads. | [Source](../lib/core/services/download-zip.service.ts) |
| [Favorites api service](core/favorites-api.service.md) | Gets a list of items a user has marked as their favorites. | [Source](../lib/core/services/favorites-api.service.ts) |
| [Highlight transform service](core/highlight-transform.service.md) | Adds HTML to a string to highlight chosen sections. | [Source](../lib/core/services/highlight-transform.service.ts) |
| [Jwt helper service](core/jwt-helper.service.md) | Decodes a JSON Web Token (JWT) to a JavaScript object. | [Source](../lib/core/services/jwt-helper.service.ts) |
| [Log service](core/log.service.md) | Provides log functionality. | [Source](../lib/core/services/log.service.ts) |
| [Login dialog service](core/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/services/login-dialog.service.ts) |
| [Nodes api service](core/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/core/services/nodes-api.service.ts) |
| [Notification service](core/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/services/notification.service.ts) |
| [Page title service](core/page-title.service.md) | Sets the page title. | [Source](../lib/core/services/page-title.service.ts) |
| [People content service](core/people-content.service.md) | Gets information about a Content Services user. | [Source](../lib/core/services/people-content.service.ts) |
| [People process service](core/people-process.service.md) | Gets information about Process Services users. | [Source](../lib/core/services/people-process.service.ts) |
| [Renditions service](core/renditions.service.md) | Manages prearranged conversions of content to different formats. | [Source](../lib/core/services/renditions.service.ts) |
| [Search configuration service](core/search-configuration.service.md) | Provides fine control of parameters to a search. | [Source](../lib/core/services/search-configuration.service.ts) |
| [Search service](core/search.service.md) | Accesses the Content Services Search API. | [Source](../lib/core/services/search.service.ts) |
| [Shared links api service](core/shared-links-api.service.md) | Finds shared links to Content Services items. | [Source](../lib/core/services/shared-links-api.service.ts) |
| [Sites service](core/sites.service.md) | Accesses and manipulates sites from a Content Services repository. | [Source](../lib/core/services/sites.service.ts) |
| [Storage service](core/storage.service.md) | Stores items in the form of key-value pairs. | [Source](../lib/core/services/storage.service.ts) |
| [Thumbnail service](core/thumbnail.service.md) | Retrieves an SVG thumbnail image to represent a document type. | [Source](../lib/core/services/thumbnail.service.ts) |
| [Translation service](core/translation.service.md) | Supports localisation. | [Source](../lib/core/services/translation.service.ts) |
| [Upload service](core/upload.service.md) | Provides access to various APIs related to file upload features. | [Source](../lib/core/services/upload.service.ts) |
| [User preferences service](core/user-preferences.service.md) | Stores preferences for the app and for individual components. | [Source](../lib/core/services/user-preferences.service.ts) |
| [Bpm user service](core/bpm-user.service.md) | Gets information about the current Process Services user. | [Source](../lib/core/userinfo/services/bpm-user.service.ts) |
| [Ecm user service](core/ecm-user.service.md) | Gets information about a Content Services user. | [Source](../lib/core/userinfo/services/ecm-user.service.ts) |
| [Identity user service](core/identity-user.service.md) | Gets OAuth2 personal details and roles for users. | [Source](../lib/core/userinfo/services/identity-user.service.ts) |
## Widgets ### Services
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Content widget](core/content.widget.md) | Shows the content preview. | [Source](../lib/core/form/components/widgets/content/content.widget.ts) | | [APS Alfresco Content Service](core/services/activiti-alfresco.service.md) | Gets Alfresco Repository folder content based on a Repository account configured in Alfresco Process Services (APS). | [Source](../lib/core/form/services/activiti-alfresco.service.ts) |
| [Alfresco Api Service](core/services/alfresco-api.service.md) | Provides access to an initialized AlfrescoJSApi instance. | [Source](../lib/core/services/alfresco-api.service.ts) |
| [App Config service](core/services/app-config.service.md) | Supports app configuration settings, stored server side. | [Source](../lib/core/app-config/app-config.service.ts) |
| [Apps Process service](core/services/apps-process.service.md) | Gets details of the Process Services apps that are deployed for the user. | [Source](../lib/core/services/apps-process.service.ts) |
| [Auth Guard Bpm service](core/services/auth-guard-bpm.service.md) | Adds authentication with Process Services to a route within the app. | [Source](../lib/core/services/auth-guard-bpm.service.ts) |
| [Auth Guard Ecm service](core/services/auth-guard-ecm.service.md) | Adds authentication with Content Services to a route within the app. | [Source](../lib/core/services/auth-guard-ecm.service.ts) |
| [Auth Guard SSO Role service](core/services/auth-guard-sso-role.service.md) | Checks the user roles of a user. | [Source](../lib/core/services/auth-guard-sso-role.service.ts) |
| [Auth Guard service](core/services/auth-guard.service.md) | Adds authentication to a route within the app. | [Source](../lib/core/services/auth-guard.service.ts) |
| [Authentication Service](core/services/authentication.service.md) | Provides authentication to ACS and APS. | [Source](../lib/core/services/authentication.service.ts) |
| [Bpm User service](core/services/bpm-user.service.md) | Gets information about the current Process Services user. | [Source](../lib/core/userinfo/services/bpm-user.service.ts) |
| [Card Item Type service](core/services/card-item-types.service.md) | Maps type names to field component types for the Card View component. | [Source](../lib/core/card-view/services/card-item-types.service.ts) |
| [Card View Update service](core/services/card-view-update.service.md) | Reports edits and clicks within fields of a Card View component. | [Source](../lib/core/card-view/services/card-view-update.service.ts) |
| [Comment Content service](core/services/comment-content.service.md) | Adds and retrieves comments for nodes in Content Services. | [Source](../lib/core/services/comment-content.service.ts) |
| [Comment Process service](core/services/comment-process.service.md) | Adds and retrieves comments for task and process instances in Process Services. | [Source](../lib/core/services/comment-process.service.ts) |
| [Content service](core/services/content.service.md) | Accesses app-generated data objects via URLs and file downloads. | [Source](../lib/core/services/content.service.ts) |
| [Cookie service](core/services/cookie.service.md) | Stores key-value data items as browser cookies. | [Source](../lib/core/services/cookie.service.ts) |
| [Deleted Nodes Api service](core/services/deleted-nodes-api.service.md) | Gets a list of Content Services nodes currently in the trash. | [Source](../lib/core/services/deleted-nodes-api.service.ts) |
| [Discovery Api service](core/services/discovery-api.service.md) | Gets version and license information for Process Services and Content Services. | [Source](../lib/core/services/discovery-api.service.ts) |
| [Download zip service](core/services/download-zip.service.md) | Creates and manages downloads. | [Source](../lib/core/services/download-zip.service.ts) |
| [Ecm User service](core/services/ecm-user.service.md) | Gets information about a Content Services user. | [Source](../lib/core/userinfo/services/ecm-user.service.ts) |
| [Favorites Api service](core/services/favorites-api.service.md) | Gets a list of items a user has marked as their favorites. | [Source](../lib/core/services/favorites-api.service.ts) |
| [Form Rendering service](core/services/form-rendering.service.md) | Maps a form field type string onto the corresponding form widget component type. | [Source](../lib/core/form/services/form-rendering.service.ts) |
| [Form service](core/services/form.service.md) | Implements Process Services form methods | [Source](../lib/core/form/services/form.service.ts) |
| [Highlight Transform service](core/services/highlight-transform.service.md) | Adds HTML to a string to highlight chosen sections. | [Source](../lib/core/services/highlight-transform.service.ts) |
| [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users. | [Source](../lib/process-services-cloud/src/lib/services/identity-user.service.ts) |
| [JWT helper service](core/services/jwt-helper.service.md) | Decodes a JSON Web Token (JWT) to a JavaScript object. | [Source](../lib/core/services/jwt-helper.service.ts) |
| [Log Service](core/services/log.service.md) | Provides log functionality. | [Source](../lib/core/services/log.service.ts) |
| [Login Dialog service](core/services/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/services/login-dialog.service.ts) |
| [Node Service](core/services/node.service.md) | Gets Alfresco Repository node metadata and creates nodes with metadata. | [Source](../lib/core/form/services/node.service.ts) |
| [Nodes Api service](core/services/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/core/services/nodes-api.service.ts) |
| [Notification Service](core/services/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/services/notification.service.ts) |
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](../lib/core/services/page-title.service.ts) |
| [People Content service](core/services/people-content.service.md) | Gets information about a Content Services user. | [Source](../lib/core/services/people-content.service.ts) |
| [People Process service](core/services/people-process.service.md) | Gets information about Process Services users. | [Source](../lib/core/services/people-process.service.ts) |
| [Process Content Service](core/services/process-content.service.md) | Manipulates content related to a Process Instance or Task Instance in APS. | [Source](../lib/core/form/services/process-content.service.ts) |
| [Renditions service](core/services/renditions.service.md) | Manages prearranged conversions of content to different formats. | [Source](../lib/core/services/renditions.service.ts) |
| [Search Configuration service](core/services/search-configuration.service.md) | Provides fine control of parameters to a search. | [Source](../lib/core/services/search-configuration.service.ts) |
| [Search service](core/services/search.service.md) | Accesses the Content Services Search API. | [Source](../lib/core/services/search.service.ts) |
| [Shared Links Api service](core/services/shared-links-api.service.md) | Finds shared links to Content Services items. | [Source](../lib/core/services/shared-links-api.service.ts) |
| [Sites service](core/services/sites.service.md) | Accesses and manipulates sites from a Content Services repository. | [Source](../lib/core/services/sites.service.ts) |
| [Storage service](core/services/storage.service.md) | Stores items in the form of key-value pairs. | [Source](../lib/core/services/storage.service.ts) |
| [Thumbnail service](core/services/thumbnail.service.md) | Retrieves an SVG thumbnail image to represent a document type. | [Source](../lib/core/services/thumbnail.service.ts) |
| [Translation service](core/services/translation.service.md) | Supports localisation. | [Source](../lib/core/services/translation.service.ts) |
| [Upload Service](core/services/upload.service.md) | Provides access to various APIs related to file upload features. | [Source](../lib/core/services/upload.service.ts) |
| [User Preferences Service](core/services/user-preferences.service.md) | Stores preferences for the app and for individual components. | [Source](../lib/core/services/user-preferences.service.ts) |
### Widgets
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [APS Content Component](core/widgets/content.widget.md) | Shows the content preview. | [Source](../lib/core/form/components/widgets/content/content.widget.ts) |
<!--core end--> <!--core end-->
## Other classes and interfaces
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Data Table Adapter interface](core/datatable-adapter.interface.md) | Defines how table data is supplied to DataTable and Tasklist components. | [Source](../lib/core/datatable/data/datatable-adapter.ts) |
| [Form Field Validator interface](core/form-field-validator.interface.md) | Defines how the input fields of [`Form`](../../lib/process-services/task-list/models/form.model.ts) and Task Details components are validated. | [Source](../lib/core/form/components/widgets/core/form-field-validator.ts) |
| [Search Configuration interface](core/search-configuration.interface.md) | Provides fine control of parameters to a search. | [Source](../lib/core/services/search-configuration.service.ts) |
[(Back to Contents)](#contents) [(Back to Contents)](#contents)
## Content Services API ## Content Services API
@@ -223,104 +231,103 @@ for more information about installing and using the source code.
<!--content-services start--> <!--content-services start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Breadcrumb component](content-services/breadcrumb.component.md) | Indicates the current position within a navigation hierarchy. | [Source](../lib/content-services/breadcrumb/breadcrumb.component.ts) | | [Add Permission Dialog Component](content-services/components/add-permission-dialog.component.md) | Displays a dialog to search for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission-dialog.component.ts) |
| [Dropdown breadcrumb component](content-services/dropdown-breadcrumb.component.md) | Indicates the current position within a navigation hierarchy using a dropdown menu. | [Source](../lib/content-services/breadcrumb/dropdown-breadcrumb.component.ts) | | [Add Permission Panel Component](content-services/components/add-permission-panel.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission-panel.component.ts) |
| [Content metadata component](content-services/content-metadata.component.md) | Displays and edits metadata related to a node. | [Source](../lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts) | | [Add Permission Component](content-services/components/add-permission.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission.component.ts) |
| [Content metadata card component](content-services/content-metadata-card.component.md) | Displays and edits metadata related to a node. | [Source](../lib/content-services/content-metadata/components/content-metadata-card/content-metadata-card.component.ts) | | [Breadcrumb Component](content-services/components/breadcrumb.component.md) | Indicates the current position within a navigation hierarchy. | [Source](../lib/content-services/breadcrumb/breadcrumb.component.ts) |
| [Content node selector panel component](content-services/content-node-selector-panel.component.md) | Opens a Content Node Selector in its own dialog window. | [Source](../lib/content-services/content-node-selector/content-node-selector-panel.component.ts) | | [Content Action component](content-services/components/content-action.component.md) | Adds options to a Document List actions menu for a particular content type. | [Source](../lib/content-services/document-list/components/content-action/content-action.component.ts) |
| [Content node selector component](content-services/content-node-selector.component.md) | Allows a user to select items from a Content Services repository. | [Source](../lib/content-services/content-node-selector/content-node-selector.component.ts) | | [Content Metadata Card component](content-services/components/content-metadata-card.component.md) | Displays and edits metadata related to a node. | [Source](../lib/content-services/content-metadata/components/content-metadata-card/content-metadata-card.component.ts) |
| [Content action component](content-services/content-action.component.md) | Adds options to a Document List actions menu for a particular content type. | [Source](../lib/content-services/document-list/components/content-action/content-action.component.ts) | | [Content Node Selector Panel component](content-services/components/content-node-selector-panel.component.md) | Opens a Content Node Selector in its own dialog window. | [Source](../lib/content-services/content-node-selector/content-node-selector-panel.component.ts) |
| [Document list component](content-services/document-list.component.md) | Displays the documents from a repository. | [Source](../lib/content-services/document-list/components/document-list.component.ts) | | [Content Node Selector component](content-services/components/content-node-selector.component.md) | Allows a user to select items from a Content Services repository. | [Source](../lib/content-services/content-node-selector/content-node-selector.component.ts) |
| [Add permission dialog component](content-services/add-permission-dialog.component.md) | Displays a dialog to search for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission-dialog.component.ts) | | [Document List component](content-services/components/document-list.component.md) | Displays the documents from a repository. | [Source](../lib/content-services/document-list/components/document-list.component.ts) |
| [Add permission panel component](content-services/add-permission-panel.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission-panel.component.ts) | | [Dropdown Breadcrumb Component](content-services/components/dropdown-breadcrumb.component.md) | Indicates the current position within a navigation hierarchy using a dropdown menu. | [Source](../lib/content-services/breadcrumb/dropdown-breadcrumb.component.ts) |
| [Add permission component](content-services/add-permission.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../lib/content-services/permission-manager/components/add-permission/add-permission.component.ts) | | [File Uploading Dialog Component](content-services/components/file-uploading-dialog.component.md) | Shows a dialog listing all the files uploaded with the Upload Button or Drag Area components. | [Source](../lib/content-services/upload/components/file-uploading-dialog.component.ts) |
| [Permission list component](content-services/permission-list.component.md) | Shows node permissions as a table. | [Source](../lib/content-services/permission-manager/components/permission-list/permission-list.component.ts) | | [Like component](content-services/components/like.component.md) | Allows a user to add "likes" to an item. | [Source](../lib/content-services/social/like.component.ts) |
| [Search check list component](content-services/search-check-list.component.md) | Implements a checklist widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-check-list/search-check-list.component.ts) | | [Permission List Component](content-services/components/permission-list.component.md) | Shows node permissions as a table. | [Source](../lib/content-services/permission-manager/components/permission-list/permission-list.component.ts) |
| [Search chip list component](content-services/search-chip-list.component.md) | Displays search criteria as a set of "chips". | [Source](../lib/content-services/search/components/search-chip-list/search-chip-list.component.ts) | | [Rating component](content-services/components/rating.component.md) | Allows a user to add ratings to an item. | [Source](../lib/content-services/social/rating.component.ts) |
| [Search control component](content-services/search-control.component.md) | Displays a input text that shows find-as-you-type suggestions. | [Source](../lib/content-services/search/components/search-control.component.ts) | | [Search check list component](content-services/components/search-check-list.component.md) | Implements a checklist widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-check-list/search-check-list.component.ts) |
| [Search date range component](content-services/search-date-range.component.md) | Implements a date range widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-date-range/search-date-range.component.ts) | | [Search Chip List Component](content-services/components/search-chip-list.component.md) | Displays search criteria as a set of "chips". | [Source](../lib/content-services/search/components/search-chip-list/search-chip-list.component.ts) |
| [Search filter component](content-services/search-filter.component.md) | Represents a main container component for custom search and faceted search settings. | [Source](../lib/content-services/search/components/search-filter/search-filter.component.ts) | | [Search control component](content-services/components/search-control.component.md) | Displays a input text that shows find-as-you-type suggestions. | [Source](../lib/content-services/search/components/search-control.component.ts) |
| [Search number range component](content-services/search-number-range.component.md) | Implements a number range widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-number-range/search-number-range.component.ts) | | [Search date range component](content-services/components/search-date-range.component.md) | Implements a date range widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-date-range/search-date-range.component.ts) |
| [Search radio component](content-services/search-radio.component.md) | Implements a radio button list widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-radio/search-radio.component.ts) | | [Search Filter component](content-services/components/search-filter.component.md) | Represents a main container component for custom search and faceted search settings. | [Source](../lib/content-services/search/components/search-filter/search-filter.component.ts) |
| [Search slider component](content-services/search-slider.component.md) | Implements a numeric slider widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-slider/search-slider.component.ts) | | [Search number range component](content-services/components/search-number-range.component.md) | Implements a number range widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-number-range/search-number-range.component.ts) |
| [Search sorting picker component](content-services/search-sorting-picker.component.md) | Provides an ability to select one of the predefined sorting definitions for search results: | [Source](../lib/content-services/search/components/search-sorting-picker/search-sorting-picker.component.ts) | | [Search radio component](content-services/components/search-radio.component.md) | Implements a radio button list widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-radio/search-radio.component.ts) |
| [Search text component](content-services/search-text.component.md) | Implements a text input widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-text/search-text.component.ts) | | [Search slider component](content-services/components/search-slider.component.md) | Implements a numeric slider widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-slider/search-slider.component.ts) |
| [Search component](content-services/search.component.md) | Searches items for supplied search terms. | [Source](../lib/content-services/search/components/search.component.ts) | | [Search Sorting Picker Component](content-services/components/search-sorting-picker.component.md) | Provides an ability to select one of the predefined sorting definitions for search results: | [Source](../lib/content-services/search/components/search-sorting-picker/search-sorting-picker.component.ts) |
| [Sites dropdown component](content-services/sites-dropdown.component.md) | Displays a dropdown menu to show and interact with the sites of the current user. | [Source](../lib/content-services/site-dropdown/sites-dropdown.component.ts) | | [Search text component](content-services/components/search-text.component.md) | Implements a text input widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-text/search-text.component.ts) |
| [Like component](content-services/like.component.md) | Allows a user to add "likes" to an item. | [Source](../lib/content-services/social/like.component.ts) | | [Search component](content-services/components/search.component.md) | Searches items for supplied search terms. | [Source](../lib/content-services/search/components/search.component.ts) |
| [Rating component](content-services/rating.component.md) | Allows a user to add ratings to an item. | [Source](../lib/content-services/social/rating.component.ts) | | [Sites Dropdown component](content-services/components/sites-dropdown.component.md) | Displays a dropdown menu to show and interact with the sites of the current user. | [Source](../lib/content-services/site-dropdown/sites-dropdown.component.ts) |
| [Tag actions component](content-services/tag-actions.component.md) | Shows available actions for tags. | [Source](../lib/content-services/tag/tag-actions.component.ts) | | [Tag Node Actions List component](content-services/components/tag-actions.component.md) | Shows available actions for tags. | [Source](../lib/content-services/tag/tag-actions.component.ts) |
| [Tag list component](content-services/tag-list.component.md) | Shows tags for an item. | [Source](../lib/content-services/tag/tag-list.component.ts) | | [Tag List component](content-services/components/tag-list.component.md) | Shows tags for an item. | [Source](../lib/content-services/tag/tag-list.component.ts) |
| [Tag node list component](content-services/tag-node-list.component.md) | Shows tags for a node. | [Source](../lib/content-services/tag/tag-node-list.component.ts) | | [Tag Node List component](content-services/components/tag-node-list.component.md) | Shows tags for a node. | [Source](../lib/content-services/tag/tag-node-list.component.ts) |
| [Tree view component](content-services/tree-view.component.md) | Shows the folder and subfolders of a node as a tree view. | [Source](../lib/content-services/tree-view/components/tree-view.component.ts) | | [Tree View component](content-services/components/tree-view.component.md) | Shows the folder and subfolders of a node as a tree view. | [Source](../lib/content-services/tree-view/components/tree-view.component.ts) |
| [File uploading dialog component](content-services/file-uploading-dialog.component.md) | Shows a dialog listing all the files uploaded with the Upload Button or Drag Area components. | [Source](../lib/content-services/upload/components/file-uploading-dialog.component.ts) | | [Upload Button Component](content-services/components/upload-button.component.md) | Activates a file upload. | [Source](../lib/content-services/upload/components/upload-button.component.ts) |
| [Upload button component](content-services/upload-button.component.md) | Activates a file upload. | [Source](../lib/content-services/upload/components/upload-button.component.ts) | | [Upload Drag Area Component](content-services/components/upload-drag-area.component.md) | Adds a drag and drop area to upload files to ACS. | [Source](../lib/content-services/upload/components/upload-drag-area.component.ts) |
| [Upload drag area component](content-services/upload-drag-area.component.md) | Adds a drag and drop area to upload files to ACS. | [Source](../lib/content-services/upload/components/upload-drag-area.component.ts) | | [Upload Version Button Component (Workaround)](content-services/components/upload-version-button.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Activates a file version upload. | [Source](../lib/content-services/upload/components/upload-version-button.component.ts) |
| [Upload version button component](content-services/upload-version-button.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Activates a file version upload. | [Source](../lib/content-services/upload/components/upload-version-button.component.ts) | | [Version List component](content-services/components/version-list.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays the version history of a node in a Version Manager component. | [Source](../lib/content-services/version-manager/version-list.component.ts) |
| [Version list component](content-services/version-list.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays the version history of a node in a Version Manager component. | [Source](../lib/content-services/version-manager/version-list.component.ts) | | [Version Manager Component](content-services/components/version-manager.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays the version history of a node with the ability to upload a new version. | [Source](../lib/content-services/version-manager/version-manager.component.ts) |
| [Version manager component](content-services/version-manager.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays the version history of a node with the ability to upload a new version. | [Source](../lib/content-services/version-manager/version-manager.component.ts) | | [Webscript component](content-services/components/webscript.component.md) | Provides access to Webscript features. | [Source](../lib/content-services/webscript/webscript.component.ts) |
| [Webscript component](content-services/webscript.component.md) | Provides access to Webscript features. | [Source](../lib/content-services/webscript/webscript.component.ts) |
## Dialogs ### Directives
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Confirm dialog](content-services/confirm.dialog.md) | Requests a yes/no choice from the user. | [Source](../lib/content-services/dialogs/confirm.dialog.ts) | | [Node Public File Share Directive](content-services/directives/content-node-share.directive.md) | Creates and manages public shared links for files. | [Source](../lib/content-services/content-node-share/content-node-share.directive.ts) |
| [Library dialog](content-services/library.dialog.md) | Creates a new Content Services document library/site. | [Source](../lib/content-services/dialogs/library/library.dialog.ts) | | [File Draggable directive](content-services/directives/file-draggable.directive.md) | Provides drag-and-drop features for an element such as a div. | [Source](../lib/content-services/upload/directives/file-draggable.directive.ts) |
| [Folder Create directive](content-services/directives/folder-create.directive.md) | Creates folders. | [Source](../lib/content-services/folder-directive/folder-create.directive.ts) |
| [Folder Edit directive](content-services/directives/folder-edit.directive.md) | Allows folders to be edited. | [Source](../lib/content-services/folder-directive/folder-edit.directive.ts) |
| [Inherit Permission directive](content-services/directives/inherited-button.directive.md) | Update the current node by adding/removing the inherited permissions. | [Source](../lib/content-services/permission-manager/components/inherited-button.directive.ts) |
| [Node Lock directive](content-services/directives/node-lock.directive.md) | Locks or unlocks a node. | [Source](../lib/content-services/directives/node-lock.directive.ts) |
## Directives ### Dialogs
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Content node share directive](content-services/content-node-share.directive.md) | Creates and manages public shared links for files. | [Source](../lib/content-services/content-node-share/content-node-share.directive.ts) | | [Confirm dialog component](content-services/dialogs/confirm.dialog.md) | Requests a yes/no choice from the user. | [Source](../lib/content-services/dialogs/confirm.dialog.ts) |
| [Node lock directive](content-services/node-lock.directive.md) | Locks or unlocks a node. | [Source](../lib/content-services/directives/node-lock.directive.ts) | | [Library dialog component](content-services/dialogs/library.dialog.md) | Creates a new Content Services document library/site. | [Source](../lib/content-services/dialogs/library/library.dialog.ts) |
| [Folder create directive](content-services/folder-create.directive.md) | Creates folders. | [Source](../lib/content-services/folder-directive/folder-create.directive.ts) |
| [Folder edit directive](content-services/folder-edit.directive.md) | Allows folders to be edited. | [Source](../lib/content-services/folder-directive/folder-edit.directive.ts) |
| [Inherited button directive](content-services/inherited-button.directive.md) | Update the current node by adding/removing the inherited permissions. | [Source](../lib/content-services/permission-manager/components/inherited-button.directive.ts) |
| [File draggable directive](content-services/file-draggable.directive.md) | Provides drag-and-drop features for an element such as a `div`. | [Source](../lib/content-services/upload/directives/file-draggable.directive.ts) |
## Models ### Interfaces
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Image resolver model](content-services/image-resolver.model.md) | Defines the Image Resolver function used by the Document List Component. | [Source](../lib/content-services/document-list/data/image-resolver.model.ts) | | [Search widget interface](content-services/interfaces/search-widget.interface.md) | Specifies required properties for Search filter component widgets. | [Source](../lib/content-services/search/search-widget.interface.ts) |
| [Row filter model](content-services/row-filter.model.md) | Defines the Row Filter function used by the Document List Component. | [Source](../lib/content-services/document-list/data/row-filter.model.ts) |
| [Permissions style model](content-services/permissions-style.model.md) | Sets custom CSS styles for rows of a Document List according to the item's permissions. | [Source](../lib/content-services/document-list/models/permissions-style.model.ts) |
## Pipes ### Models
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [File upload error pipe](content-services/file-upload-error.pipe.md) | Converts an upload error code to an error message. | [Source](../lib/content-services/upload/pipes/file-upload-error.pipe.ts) | | [Image Resolver Model](content-services/models/image-resolver.model.md) | Defines the Image Resolver function used by the Document List Component. | [Source](../lib/content-services/document-list/data/image-resolver.model.ts) |
| [Permission Style model](content-services/models/permissions-style.model.md) | Sets custom CSS styles for rows of a Document List according to the item's permissions. | [Source](../lib/content-services/document-list/models/permissions-style.model.ts) |
| [Row Filter Model](content-services/models/row-filter.model.md) | Defines the Row Filter function used by the Document List Component. | [Source](../lib/content-services/document-list/data/row-filter.model.ts) |
## Services ### Pipes
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Content node dialog service](content-services/content-node-dialog.service.md) | Displays and manages dialogs for selecting content to open, copy or upload. | [Source](../lib/content-services/content-node-selector/content-node-dialog.service.ts) | | [File upload error pipe](content-services/pipes/file-upload-error.pipe.md) | Converts an upload error code to an error message. | [Source](../lib/content-services/upload/pipes/file-upload-error.pipe.ts) |
| [Custom resources service](content-services/custom-resources.service.md) | Manages Document List information that is specific to a user. | [Source](../lib/content-services/document-list/services/custom-resources.service.ts) |
| [Document actions service](content-services/document-actions.service.md) | Implements the document menu actions for the Document List component. | [Source](../lib/content-services/document-list/services/document-actions.service.ts) | ### Services
| [Document list service](content-services/document-list.service.md) | Implements node operations used by the Document List component. | [Source](../lib/content-services/document-list/services/document-list.service.ts) |
| [Folder actions service](content-services/folder-actions.service.md) | Implements the folder menu actions for the Document List component. | [Source](../lib/content-services/document-list/services/folder-actions.service.ts) | | Name | Description | Source link |
| [Node permission dialog service](content-services/node-permission-dialog.service.md) | Displays dialogs to let the user set node permissions. | [Source](../lib/content-services/permission-manager/services/node-permission-dialog.service.ts) | | ---- | ----------- | ----------- |
| [Node permission service](content-services/node-permission.service.md) | Manages role permissions for content nodes. | [Source](../lib/content-services/permission-manager/services/node-permission.service.ts) | | [Content Node Dialog service](content-services/services/content-node-dialog.service.md) | Displays and manages dialogs for selecting content to open, copy or upload. | [Source](../lib/content-services/content-node-selector/content-node-dialog.service.ts) |
| [Search filter service](content-services/search-filter.service.md) | Registers widgets for use with the Search Filter component. | [Source](../lib/content-services/search/components/search-filter/search-filter.service.ts) | | [Custom Resources service](content-services/services/custom-resources.service.md) | Manages Document List information that is specific to a user. | [Source](../lib/content-services/document-list/services/custom-resources.service.ts) |
| [Search query builder service](content-services/search-query-builder.service.md) | Stores information from all the custom search and faceted search widgets, compiles and runs the final search query. | [Source](../lib/content-services/search/search-query-builder.service.ts) | | [Document Actions service](content-services/services/document-actions.service.md) | Implements the document menu actions for the Document List component. | [Source](../lib/content-services/document-list/services/document-actions.service.ts) |
| [Rating service](content-services/rating.service.md) | Manages ratings for items in Content Services. | [Source](../lib/content-services/social/services/rating.service.ts) | | [Document List service](content-services/services/document-list.service.md) | Implements node operations used by the Document List component. | [Source](../lib/content-services/document-list/services/document-list.service.ts) |
| [Tag service](content-services/tag.service.md) | Manages tags in Content Services. | [Source](../lib/content-services/tag/services/tag.service.ts) | | [Folder Actions service](content-services/services/folder-actions.service.md) | Implements the folder menu actions for the Document List component. | [Source](../lib/content-services/document-list/services/folder-actions.service.ts) |
| [Node permission dialog service](content-services/services/node-permission-dialog.service.md) | Displays dialogs to let the user set node permissions. | [Source](../lib/content-services/permission-manager/services/node-permission-dialog.service.ts) |
| [Node Permission service](content-services/services/node-permission.service.md) | Manages role permissions for content nodes. | [Source](../lib/content-services/permission-manager/services/node-permission.service.ts) |
| [Rating service](content-services/services/rating.service.md) | Manages ratings for items in Content Services. | [Source](../lib/content-services/social/services/rating.service.ts) |
| [Search filter service](content-services/services/search-filter.service.md) | Registers widgets for use with the Search Filter component. | [Source](../lib/content-services/search/components/search-filter/search-filter.service.ts) |
| [Search Query Builder service](content-services/services/search-query-builder.service.md) | Stores information from all the custom search and faceted search widgets, compiles and runs the final search query. | [Source](../lib/content-services/search/search-query-builder.service.ts) |
| [Tag service](content-services/services/tag.service.md) | Manages tags in Content Services. | [Source](../lib/content-services/tag/services/tag.service.ts) |
<!--content-services end--> <!--content-services end-->
## Other classes and interfaces
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Search Widget interface](content-services/search-widget.interface.md) | Specifies required properties for [Search filter component](../content-services/search-filter.component.md) widgets. | [Source](../lib/content-services/search/search-widget.interface.ts) |
[(Back to Contents)](#contents) [(Back to Contents)](#contents)
## Process Services API ## Process Services API
@@ -332,55 +339,56 @@ for more information about installing and using the source code.
<!--process-services start--> <!--process-services start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Apps list component](process-services/apps-list.component.md) | Shows all available apps. | [Source](../lib/process-services/app-list/apps-list.component.ts) | | [Apps List Component](process-services/components/apps-list.component.md) | Shows all available apps. | [Source](../lib/process-services/app-list/apps-list.component.ts) |
| [Create process attachment component](process-services/create-process-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified process instance. | [Source](../lib/process-services/attachment/create-process-attachment.component.ts) | | [Attach Form component](process-services/components/attach-form.component.md) | This component can be used when there is no form attached to a task and you want to add one. | [Source](../lib/process-services/task-list/components/attach-form.component.ts) |
| [Create task attachment component](process-services/create-task-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified task. | [Source](../lib/process-services/attachment/create-task-attachment.component.ts) | | [Checklist Component](process-services/components/checklist.component.md) | Shows the checklist task functionality. | [Source](../lib/process-services/task-list/components/checklist.component.ts) |
| [Process attachment list component](process-services/process-attachment-list.component.md) | Displays documents attached to a specified process instance. | [Source](../lib/process-services/attachment/process-attachment-list.component.ts) | | [Create Process Attachment component](process-services/components/create-process-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified process instance. | [Source](../lib/process-services/attachment/create-process-attachment.component.ts) |
| [Task attachment list component](process-services/task-attachment-list.component.md) | Displays documents attached to a specified task. | [Source](../lib/process-services/attachment/task-attachment-list.component.ts) | | [Create Task Attachment Component](process-services/components/create-task-attachment.component.md) | Displays an Upload Component (Drag and Click) to upload the attachment to a specified task. | [Source](../lib/process-services/attachment/create-task-attachment.component.ts) |
| [People component](process-services/people.component.md) | Displays users involved with a specified task | [Source](../lib/process-services/people/components/people/people.component.ts) | | [People list component](process-services/components/people-list.component.md) | Shows a list of users (people). | [Source](../lib/process-services/people/components/people-list/people-list.component.ts) |
| [People list component](process-services/people-list.component.md) | Shows a list of users (people). | [Source](../lib/process-services/people/components/people-list/people-list.component.ts) | | [People Search component](process-services/components/people-search.component.md) | Searches users/people. | [Source](../lib/process-services/people/components/people-search/people-search.component.ts) |
| [People search component](process-services/people-search.component.md) | Searches users/people. | [Source](../lib/process-services/people/components/people-search/people-search.component.ts) | | [People Component](process-services/components/people.component.md) | Displays users involved with a specified task | [Source](../lib/process-services/people/components/people/people.component.ts) |
| [Process comments component](process-services/process-comments.component.md) | Displays comments associated with a particular process instance and allows the user to add new comments. | [Source](../lib/process-services/process-comments/process-comments.component.ts) | | [Process Attachment List component](process-services/components/process-attachment-list.component.md) | Displays documents attached to a specified process instance. | [Source](../lib/process-services/attachment/process-attachment-list.component.ts) |
| [Process filters component](process-services/process-filters.component.md) | Collection of criteria used to filter process instances, which may be customized by users. | [Source](../lib/process-services/process-list/components/process-filters.component.ts) | | [Process Instance Comments component](process-services/components/process-comments.component.md) | Displays comments associated with a particular process instance and allows the user to add new comments. | [Source](../lib/process-services/process-comments/process-comments.component.ts) |
| [Process instance details component](process-services/process-instance-details.component.md) | Displays detailed information about a specified process instance | [Source](../lib/process-services/process-list/components/process-instance-details.component.ts) | | [Process Filters Component](process-services/components/process-filters.component.md) | Collection of criteria used to filter process instances, which may be customized by users. | [Source](../lib/process-services/process-list/components/process-filters.component.ts) |
| [Process instance header component](process-services/process-instance-header.component.md) | Sub-component of the process details component, which renders some general information about the selected process. | [Source](../lib/process-services/process-list/components/process-instance-header.component.ts) | | [Process Details component](process-services/components/process-instance-details.component.md) | Displays detailed information about a specified process instance | [Source](../lib/process-services/process-list/components/process-instance-details.component.ts) |
| [Process instance tasks component](process-services/process-instance-tasks.component.md) | Lists both the active and completed tasks associated with a particular process instance | [Source](../lib/process-services/process-list/components/process-instance-tasks.component.ts) | | [Process Instance Details Header component](process-services/components/process-instance-header.component.md) | Sub-component of the process details component, which renders some general information about the selected process. | [Source](../lib/process-services/process-list/components/process-instance-header.component.ts) |
| [Process list component](process-services/process-list.component.md) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services/process-list/components/process-list.component.ts) | | [Process Instance Tasks component](process-services/components/process-instance-tasks.component.md) | Lists both the active and completed tasks associated with a particular process instance | [Source](../lib/process-services/process-list/components/process-instance-tasks.component.ts) |
| [Start process component](process-services/start-process.component.md) | Starts a process. | [Source](../lib/process-services/process-list/components/start-process.component.ts) | | [Process Instance List](process-services/components/process-list.component.md) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services/process-list/components/process-list.component.ts) |
| [Attach form component](process-services/attach-form.component.md) | This component can be used when there is no form attached to a task and you want to add one. | [Source](../lib/process-services/task-list/components/attach-form.component.ts) | | [Select App Component](process-services/components/select-apps-dialog.component.md) | Shows all available apps and returns the selected app. | [Source](../lib/process-services/app-list/select-apps-dialog-component.ts) |
| [Checklist component](process-services/checklist.component.md) | Shows the checklist task functionality. | [Source](../lib/process-services/task-list/components/checklist.component.ts) | | [Start Process component](process-services/components/start-process.component.md) | Starts a process. | [Source](../lib/process-services/process-list/components/start-process.component.ts) |
| [Start task component](process-services/start-task.component.md) | Creates/Starts a new task for the specified app. | [Source](../lib/process-services/task-list/components/start-task.component.ts) | | [Start Task Component](process-services/components/start-task.component.md) | Creates/Starts a new task for the specified app. | [Source](../lib/process-services/task-list/components/start-task.component.ts) |
| [Task details component](process-services/task-details.component.md) | Shows the details of the task ID passed in as input. | [Source](../lib/process-services/task-list/components/task-details.component.ts) | | [Task Attachment List Component](process-services/components/task-attachment-list.component.md) | Displays documents attached to a specified task. | [Source](../lib/process-services/attachment/task-attachment-list.component.ts) |
| [Task filters component](process-services/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/task-list/components/task-filters.component.ts) | | [Task Details component](process-services/components/task-details.component.md) | Shows the details of the task ID passed in as input. | [Source](../lib/process-services/task-list/components/task-details.component.ts) |
| [Task header component](process-services/task-header.component.md) | Shows all the information related to a task. | [Source](../lib/process-services/task-list/components/task-header.component.ts) | | [Task Filters component](process-services/components/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/task-list/components/task-filters.component.ts) |
| [Task list component](process-services/task-list.component.md) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services/task-list/components/task-list.component.ts) | | [Task Header component](process-services/components/task-header.component.md) | Shows all the information related to a task. | [Source](../lib/process-services/task-list/components/task-header.component.ts) |
| [Task standalone component](process-services/task-standalone.component.md) | This component can be used when the task doesn't belong to any processes. | [Source](../lib/process-services/task-list/components/task-standalone.component.ts) | | [Task List component](process-services/components/task-list.component.md) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services/task-list/components/task-list.component.ts) |
| [Task Standalone component](process-services/components/task-standalone.component.md) | This component can be used when the task doesn't belong to any processes. | [Source](../lib/process-services/task-list/components/task-standalone.component.ts) |
## Directives ### Directives
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Process audit directive](process-services/process-audit.directive.md) | Fetches the Process Audit information in PDF or JSON format. | [Source](../lib/process-services/process-list/components/process-audit.directive.ts) | | [Process Audit Directive](process-services/directives/process-audit.directive.md) | Fetches the Process Audit information in PDF or JSON format. | [Source](../lib/process-services/process-list/components/process-audit.directive.ts) |
| [Task audit directive](process-services/task-audit.directive.md) | Fetches the Task Audit information in PDF or JSON format. | [Source](../lib/process-services/task-list/components/task-audit.directive.ts) | | [Task Audit Directive](process-services/directives/task-audit.directive.md) | Fetches the Task Audit information in PDF or JSON format. | [Source](../lib/process-services/task-list/components/task-audit.directive.ts) |
## Services ### Services
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Process filter service](process-services/process-filter.service.md) | Manage Process Filters, which are pre-configured Process Instance queries. | [Source](../lib/process-services/process-list/services/process-filter.service.ts) | | [Process Filter Service](process-services/services/process-filter.service.md) | Manage Process Filters, which are pre-configured Process Instance queries. | [Source](../lib/process-services/process-list/services/process-filter.service.ts) |
| [Process service](process-services/process.service.md) | Manages Process Instances, Process Variables, and Process Audit Log. | [Source](../lib/process-services/process-list/services/process.service.ts) | | [Process Service](process-services/services/process.service.md) | Manages process instances, process variables, and process audit Log. | [Source](../lib/process-services/process-list/services/process.service.ts) |
| [Task filter service](process-services/task-filter.service.md) | Manage Task Filters, which are pre-configured Task Instance queries. | [Source](../lib/process-services/task-list/services/task-filter.service.ts) | | [Task Filter Service](process-services/services/task-filter.service.md) | Manage Task Filters, which are pre-configured Task Instance queries. | [Source](../lib/process-services/task-list/services/task-filter.service.ts) |
| [Tasklist service](process-services/tasklist.service.md) | Manages Task Instances. | [Source](../lib/process-services/task-list/services/tasklist.service.ts) | | [Tasklist Service](process-services/services/tasklist.service.md) | Manages Task Instances. | [Source](../lib/process-services/task-list/services/tasklist.service.ts) |
<!--process-services end--> <!--process-services end-->
[(Back to Contents)](#contents) [(Back to Contents)](#contents)
# Process Services Cloud API ## Process Services Cloud API
Contains components related to Process Services Cloud. Contains components related to Process Services Cloud.
See the library's See the library's
@@ -389,42 +397,52 @@ for more information about installing and using the source code.
<!--process-services-cloud start--> <!--process-services-cloud start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [App list cloud component](process-services-cloud/app-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all deployed cloud application instances. | [Source](../lib/process-services-cloud/src/lib/app/components/app-list-cloud.component.ts) | | [App List Cloud Component](process-services-cloud/components/app-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all deployed cloud application instances. | [Source](../lib/process-services-cloud/src/lib/app/components/app-list-cloud.component.ts) |
| [Group cloud component](process-services-cloud/group-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) | | [Edit Process Filter Cloud component](process-services-cloud/components/edit-process-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows/edits process filter details. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts) |
| [Edit process filter cloud component](process-services-cloud/edit-process-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows Process Filter Details. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts) | | [Edit Task Filter Cloud component](process-services-cloud/components/edit-task-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Edits task filter details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts) |
| [Process filters cloud component](process-services-cloud/process-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Lists all available process filters and allows to select a filter. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters-cloud.component.ts) | | [Group Cloud component](process-services-cloud/components/group-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) |
| [Process list cloud component](process-services-cloud/process-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts) | | [People Cloud Component](process-services-cloud/components/people-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Allows one or more users to be selected (with auto-suggestion) based on the input parameters. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts) |
| [Start process cloud component](process-services-cloud/start-process-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Starts a process. | [Source](../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts) | | [Process Filters Cloud Component](process-services-cloud/components/process-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Lists all available process filters and allows to select a filter. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters-cloud.component.ts) |
| [People cloud component](process-services-cloud/people-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Allows one or more users to be selected (with auto-suggestion) based on the input parameters. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts) | | [Process Header Cloud Component](process-services-cloud/components/process-header-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all the information related to a process instance. | [Source](../lib/process-services-cloud/src/lib/process/process-header/components/process-header-cloud.component.ts) |
| [Start task cloud component](process-services-cloud/start-task-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Creates/starts a new task for the specified app. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.ts) | | [Process Instance List Cloud component](process-services-cloud/components/process-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Renders a list containing all the process instances matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/process/process-list/components/process-list-cloud.component.ts) |
| [Edit task filter cloud component](process-services-cloud/edit-task-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Edits Task Filter Details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts) | | [Start Process Cloud Component](process-services-cloud/components/start-process-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Starts a process. | [Source](../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts) |
| [Task filters cloud component](process-services-cloud/task-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all available filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts) | | [Start Task Cloud Component](process-services-cloud/components/start-task-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Creates/starts a new task for the specified app. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.ts) |
| [Task header cloud component](process-services-cloud/task-header-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all the information related to a task. | [Source](../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts) | | [Task Filters Cloud component](process-services-cloud/components/task-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all available filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts) |
| [Task list cloud component](process-services-cloud/task-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.ts) | | [Task Header Cloud Component](process-services-cloud/components/task-header-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all the information related to a task. | [Source](../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts) |
| [Task List Cloud component](process-services-cloud/components/task-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.ts) |
## Pipes ### Directives
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Group initial pipe](process-services-cloud/group-initial.pipe.md) | Extracts the initial character from a group name. | [Source](../lib/process-services-cloud/src/lib/group/pipe/group-initial.pipe.ts) | | [Claim Task Directive](process-services-cloud/directives/claim-task.directive.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Claims a task | [Source](../lib/process-services-cloud/src/lib/task/directives/claim-task.directive.ts) |
| [Complete Task Directive](process-services-cloud/directives/complete-task.directive.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Completes a task. | [Source](../lib/process-services-cloud/src/lib/task/directives/complete-task.directive.ts) |
| [Unclaim Task Directive](process-services-cloud/directives/unclaim-task.directive.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Unclaims a task | [Source](../lib/process-services-cloud/src/lib/task/directives/unclaim-task.directive.ts) |
## Services ### Pipes
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Apps process cloud service](process-services-cloud/apps-process-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Gets details of deployed apps for the current user. | [Source](../lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts) | | [Group initial pipe](process-services-cloud/pipes/group-initial.pipe.md) | Extracts the initial character from a group name. | [Source](../lib/process-services-cloud/src/lib/group/pipe/group-initial.pipe.ts) |
| [Group cloud service](process-services-cloud/group-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches and gets information for groups. | [Source](../lib/process-services-cloud/src/lib/group/services/group-cloud.service.ts) |
| [Process filter cloud service](process-services-cloud/process-filter-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manage Process Filters, which are pre-configured Process Instance queries. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts) | ### Services
| [Process list cloud service](process-services-cloud/process-list-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches processes. | [Source](../lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts) |
| [Start process cloud service](process-services-cloud/start-process-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Gets process definitions and starts processes. | [Source](../lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts) | | Name | Description | Source link |
| [Start task cloud service](process-services-cloud/start-task-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Starts standalone tasks. | [Source](../lib/process-services-cloud/src/lib/task/start-task/services/start-task-cloud.service.ts) | | ---- | ----------- | ----------- |
| [Task filter cloud service](process-services-cloud/task-filter-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages task filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts) | | [Apps Process Cloud Service](process-services-cloud/services/apps-process-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Gets details of deployed apps for the current user. | [Source](../lib/process-services-cloud/src/lib/app/services/apps-process-cloud.service.ts) |
| [Task header cloud service](process-services-cloud/task-header-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages cloud tasks. | [Source](../lib/process-services-cloud/src/lib/task/task-header/services/task-header-cloud.service.ts) | | [Group Cloud Service](process-services-cloud/services/group-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches and gets information for groups. | [Source](../lib/process-services-cloud/src/lib/group/services/group-cloud.service.ts) |
| [Task list cloud service](process-services-cloud/task-list-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches tasks. | [Source](../lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts) | | [Process Filter Cloud Service](process-services-cloud/services/process-filter-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manage Process Filters, which are pre-configured Process Instance queries. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts) |
| [Process Header Cloud Service](process-services-cloud/services/process-header-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages cloud process instances. | [Source](../lib/process-services-cloud/src/lib/process/process-header/services/process-header-cloud.service.ts) |
| [Process List Cloud Service](process-services-cloud/services/process-list-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches processes. | [Source](../lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.ts) |
| [Start Process Cloud Service](process-services-cloud/services/start-process-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Gets process definitions and starts processes. | [Source](../lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts) |
| [Start Task Cloud Service](process-services-cloud/services/start-task-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Starts standalone tasks. | [Source](../lib/process-services-cloud/src/lib/task/start-task/services/start-task-cloud.service.ts) |
| [Task Cloud Service](process-services-cloud/services/task-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages task cloud. | [Source](../lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts) |
| [Task Filter Cloud Service](process-services-cloud/services/task-filter-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages task filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts) |
| [Task List Cloud Service](process-services-cloud/services/task-list-cloud.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches tasks. | [Source](../lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts) |
<!--process-services-cloud end--> <!--process-services-cloud end-->
@@ -439,17 +457,18 @@ for more information about installing and using the source code.
<!--extensions start--> <!--extensions start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Dynamic component](extensions/dynamic.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays dynamically-loaded extension components. | [Source](../lib/extensions/src/lib/components/dynamic-component/dynamic.component.ts) | | [Dynamic Component](extensions/components/dynamic.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Displays dynamically-loaded extension components. | [Source](../lib/extensions/src/lib/components/dynamic-component/dynamic.component.ts) |
| [Preview Extension Component](extensions/components/preview-extension.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Supports dynamically-loaded viewer preview extensions. | [Source](../lib/extensions/src/lib/components/viewer/preview-extension.component.ts) |
## Services ### Services
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Extension service](extensions/extension.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages and runs basic extension functionality. | [Source](../lib/extensions/src/lib/services/extension.service.ts) | | [Extension Service](extensions/services/extension.service.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Manages and runs basic extension functionality. | [Source](../lib/extensions/src/lib/services/extension.service.ts) |
<!--extensions end--> <!--extensions end-->
@@ -464,15 +483,15 @@ for more information about installing and using the source code.
<!--insights start--> <!--insights start-->
## Components ### Components
| Name | Description | Source link | | Name | Description | Source link |
| ---- | ----------- | ----------- | | ---- | ----------- | ----------- |
| [Widget component](insights/widget.component.md) | Base class for standard and custom widget classes. | [Source](../lib/insights/analytics-process/components/widgets/widget.component.ts) | | [Analytics Generator Component](insights/components/analytics-generator.component.md) | Generates and shows charts | [Source](../lib/insights/analytics-process/components/analytics-generator.component.ts) |
| [Analytics generator component](insights/analytics-generator.component.md) | Generates and shows charts | [Source](../lib/insights/analytics-process/components/analytics-generator.component.ts) | | [APS Analytics List Component](insights/components/analytics-report-list.component.md) | Shows a list of all available reports | [Source](../lib/insights/analytics-process/components/analytics-report-list.component.ts) |
| [Analytics report list component](insights/analytics-report-list.component.md) | Shows a list of all available reports | [Source](../lib/insights/analytics-process/components/analytics-report-list.component.ts) | | [APS Analytics Component](insights/components/analytics.component.md) | Shows the charts related to the reportId passed as input | [Source](../lib/insights/analytics-process/components/analytics.component.ts) |
| [Analytics component](insights/analytics.component.md) | Shows the charts related to the reportId passed as input | [Source](../lib/insights/analytics-process/components/analytics.component.ts) | | [Diagram Component](insights/components/diagram.component.md) | Displays process diagrams. | [Source](../lib/insights/diagram/components/diagram.component.ts) |
| [Diagram component](insights/diagram.component.md) | Displays process diagrams. | [Source](../lib/insights/diagram/components/diagram.component.ts) | | [Widget component](insights/components/widget.component.md) | Base class for standard and custom widget classes. | [Source](../lib/insights/analytics-process/components/widgets/widget.component.ts) |
<!--insights end--> <!--insights end-->
+43 -6
View File
@@ -14,14 +14,51 @@
- working-with-nodes-js-api.md: 'Working with nodes using the JS-API' - working-with-nodes-js-api.md: 'Working with nodes using the JS-API'
- content-metadata-component.md: 'Content metadata component' - content-metadata-component.md: 'Content metadata component'
- user-guide: 'User guide' - user-guide: 'User guide'
- core: 'Core API' - core:
- content-services: 'Content Services API' title: 'Core API'
- process-services: 'Process Services API' children:
- process-services-cloud: 'Process Services Cloud API' - components: 'Components'
- extensions: 'Extensions API' - directives: 'Directives'
- insights: 'Insights API' - interfaces: 'Interfaces'
- models: 'Models'
- pipes: 'Pipes'
- services: 'Services'
- widgets: 'Widgets'
- content-services:
title: 'Content Services API'
children:
- components: 'Components'
- dialogs: 'Dialogs'
- directives: 'Directives'
- interfaces: 'Interfaces'
- models: 'Models'
- pipes: 'Pipes'
- services: 'Services'
- process-services:
title: 'Process Services API'
children:
- components: 'Components'
- directives: 'Directives'
- services: 'Services'
- process-services-cloud:
title: 'Process Services Cloud API'
children:
- components: 'Components'
- directives: 'Directives'
- pipes: 'Pipes'
- services: 'Services'
- extensions:
title: 'Extensions API'
children:
- components: 'Components'
- services: 'Services'
- insights:
title: 'Insights API'
children:
- components: 'Components'
- roadmap.md: 'Roadmap' - roadmap.md: 'Roadmap'
- versionIndex.md: 'Version index' - versionIndex.md: 'Version index'
- compatibility.md: 'Version compatibility' - compatibility.md: 'Version compatibility'
- release-notes: 'Release notes' - release-notes: 'Release notes'
- upgrade-guide: 'Upgrade Guide'
- license-info: 'License info' - license-info: 'License info'
@@ -0,0 +1,149 @@
---
Title: Breaking changes, 2.6.0 -> 3.0.0
---
# Breaking changes, 2.6.0 -> 3.0.0
This document lists all the deprecated ADF v2.x components that were removed for v3.0.0:
- [PR ADF-3354](https://github.com/Alfresco/alfresco-ng2-components/pull/3980):
The `adf-accordion` component has been removed.
```html
<adf-accordion>
<adf-accordion-group>
...
```
Use the Angular Material [Expansion Panel](https://material.angular.io/components/expansion/api)
as an alternative.
- [PR ADF-3746](https://github.com/Alfresco/alfresco-ng2-components/pull/3975): In order to
prevent our ADF style classes interfering with other projects, a new set of style lint rules has
been added. These rules enforce the use of the **adf-** prefix in all our classes. Please refer
to the PR to see the list of the all styles that were changed. If you have been rewriting any ADF
classes without the **adf-** prefix, you will now need to update them. For example, `.card-view`
is now `.adf-card-view`.
- [PR ADF-1443](https://github.com/Alfresco/alfresco-ng2-components/pull/4028): [`DownloadZipDialogComponent`](../../lib/core/dialogs/download-zip.dialog.ts)
and [`NodeDownloadDirective`](../core/directives/node-download.directive.md) have been moved from the Content Services module to the Core module.
This modification has enabled us to remove some code duplication between the two modules.
- [PR ADF-1873](https://github.com/Alfresco/alfresco-ng2-components/pull/4145):
- `adf-search-control`: The `QueryBody`, and
`customQueryBody` inputs of the [`SearchControlComponent`](../content-services/components/search-control.component.md) have been removed in favor of the
[custom search configuration interface](../core/interfaces/search-configuration.interface.md).
The inputs were deprecated in v2.1.0.
- `<adf-viewer>`: The `fileNodeId` input that supplies the [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) Id of the file to
load has been renamed as `nodeId`.
- `<adf-viewer>`: The `allowShare` input has been removed. Inject the
[Share Directive](../content-services/directives/content-node-share.directive.md) in a
[custom toolbar](../core/components/viewer.component.md#custom-toolbar) to recreate the behavior of the
Share button.
- `<adf-viewer>`: The `allowSidebar` input has now been split into `allowLeftSidebar` and `allowRightSidebar`.
- `<adf-viewer>`: The `showSidebar` input has now been split into `showLeftSidebar` and `showRightSidebar`.
- `<adf-viewer>`: The `sidebarTemplate` input has now been split into `sidebarLeftTemplate` and
`sidebarRightTemplate`.
- `<adf-viewer>`: The `sidebarPosition` input has been removed since it is not needed anymore
(you can now have two sidebars on the left and right at the same time).
- `analytics-report-list` is now `adf-analytics-report-list`.
- `analytics-report-parameters` is now `adf-analytics-report-parameters`.
- `CommentProcessModel` was moved into the Core library with the name [`CommentModel`](../../lib/core/models/comment.model.ts) in v2.3.0. Now you
can only import it from [`CoreModule`](../../lib/core/core.module.ts).
- [`CommentsModule`](../../lib/core/comments/comments.module.ts), [`CommentListComponent`](../core/components/comment-list.component.md), and [`CommentsComponent`](../core/components/comments.component.md) are no longer exported from
[`ProcessModule`](../../lib/process-services/process.module.ts) but now from [`CoreModule`](../../lib/core/core.module.ts). The old usage was deprecated in v2.3.0.
- `<adf-upload-drag-area>`: The `parentId` input has been renamed as `rootFolderId`. The old
name was deprecated in v2.4.0.
- The `createFolder` event of the [`UploadBase`](../../lib/content-services/upload/components/base-upload/upload-base.ts) class (emitted when a folder was
created) was deprecated in v2.4.0 and is no longer used by the framework
Use the `success` event instead.
- `<adf-filters>` is now `<adf-task-filters>`. The old usage was deprecated in v2.4.0.
- `adf-restore`, which was deprecated in v2.4.0, has been removed because it was not
working properly. A new feature to implement this functionality correctly has
been created. See [ADF-3901](https://issues.alfresco.com/jira/browse/ADF-3901)
for more information.
- `<adf-form>`: The `onError` event (emitted when any error occurs) was deprecated
in v2.4.0. It has now been renamed as `error`.
- `context-menu-holder` is now `adf-context-menu-holder`.
- The `file-draggable` event (emitted when one or more files are dragged and dropped
onto the draggable element) was deprecated in v2.4.0 and has now been removed.
Use `filesDropped` instead to get the same effect.
- The [`DocumentListService`](../content-services/services/document-list.service.md)`.hasPermission` method was redundant and has now been removed.
Use [`ContentService`](../core/services/content.service.md)`.hasAllowableOperations` instead.
- The `diagram-sequence-flow` tag has now been renamed as `adf-diagram-sequence-flow`.
The old name was deprecated in v2.3.0.
- The `diagram-alfresco-publish-task` tag has now been renamed as
`adf-diagram-publish-task`. The old name was deprecated in v2.3.0.
- `<adf-login>`: The `disableCsrf` input has been removed. Use the `disableCsrf`
property in `app.config.json` instead.
- `<adf-login>`: The `providers` input has been removed. Use the `providers`
property in `app.config.json` instead.
- `<adf-document-list>`: The `skipCount` input has been removed. You can define
the same value in pagination using the `pageSize` property.
- `<adf-document-list>`: The `enableInfiniteScrolling` input has been removed since
it is not used anymore. To choose the pagination strategy, add either the
[Infinite Pagination Component](../core/components/infinite-pagination.component.md) or the normal [Pagination Component](../core/components/pagination.component.md) and assign
your document list as the `target`.
- `<adf-document-list>`: The `folderNode` input has been removed. Use
the `currentFolderId` and `node` inputs instead.
- `SettingsService` has been removed. This was deprecated in v1.7.0.
- [`FormService`](../core/services/form.service.md): the `addFieldsToAForm` method has been removed.
- `<file-uploading-dialog>` has been renamed to `<adf-file-uploading-dialog>`.
- [PR JS-API](https://github.com/Alfresco/alfresco-ng2-components/pull/4097):
- The name package of the JS-API has been modified to use the namespace and all
**alfresco-js-api** imports need to be modified to **@alfresco/js-api**.
See the official
[JS-API documentation](https://github.com/Alfresco/alfresco-js-api)
for more details on how to use the new v3.0.0
[Legacy Endpoint porting](https://github.com/Alfresco/alfresco-js-api#legacy-endpoint-porting-ver-2xx).
- The JS-API `callApi` method signature has been modified. The `authNames`
parameter has now been removed because the type of authentication is configured
when the JS-API is constructed.
v2.6.1 and before:
```ts
callApi(
path: string,
httpMethod: string,
pathParams?: any,
queryParams?: any,
headerParams?: any,
formParams?: any,
bodyParam?: any,
authNames?: string[],
contentTypes?: string[],
accepts?: string[],
returnType?: any,
contextRoot?: string,
responseType?: string
): Promise<any>;
```
After v3.0.0:
```ts
callApi(
path: string,
httpMethod: string,
pathParams?: any,
queryParams?: any,
headerParams?: any,
formParams?: any,
bodyParam?: any,
contentTypes?: string[],
accepts?: string[],
returnType?: any,
contextRoot?: string,
responseType?: string
): Promise<any>;
```
- [PR ADF-4062](https://github.com/Alfresco/alfresco-ng2-components/pull/4294)
- `adf-node-permission` has been renamed `adf-check-allowable-operation`.
- [`ContentService`](../core/services/content.service.md)`.hasPermission` was actually checking the `allowableOperation` value
and has been renamed as [`ContentService`](../core/services/content.service.md)`.hasAllowableOperations`.
- [`ContentService`](../core/services/content.service.md)`.hasPermissions` is a new method which actually _does_ check
the permissions.
+12 -4
View File
@@ -5,15 +5,23 @@ Title: Version compatibility
# Version compatibility # Version compatibility
The table below shows the versions of Alfresco's backend services that The table below shows the versions of Alfresco's backend services that
have been tested with latest versions of ADF. Note that *smoke testing* have been tested with latest versions of ADF.
means that the version should be safe to use (ie, it won't "catch fire")
but it is not guaranteed to be free of minor issues or missing features. Our goal is to support ADF for *all* versions of Content Services
and Process Services. However, we only test against a subset of those
versions that believe to be representative. If a bug is reported for a
version that we don't test against then the bug will still be fixed in
the next release (ie, the fact that a version is not tested doesn't mean that it isn't supported).
Note that [*smoke testing*](https://en.wikipedia.org/wiki/Smoke_testing_%28software%29) implies that the product will not "go up in smoke" when
used but the tests are quicker and not as thorough as with *full testing*.
You can find further information about released versions of ADF in the You can find further information about released versions of ADF in the
[version index](versionIndex.md) and the [release notes](release-notes/README.md). [version index](versionIndex.md) and the [release notes](release-notes/README.md).
| ADF version | ACS versions | APS versions | | ADF version | Content Services | Process Services |
| -- | -- | -- | | -- | -- | -- |
| [3.1.0](versionIndex.md#v310) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
| [3.0.0](versionIndex.md#v300) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 | | [3.0.0](versionIndex.md#v300) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
| [2.6.0](versionIndex.md#v260) | **Full test:** v6.0.0, v5.2.4 <br/> **Smoke test:** v5.2.3 | **Full test:** v1.9.0 <br/>**Smoke test:** v1.8.1, v1.7.0, v1.6.4 | | [2.6.0](versionIndex.md#v260) | **Full test:** v6.0.0, v5.2.4 <br/> **Smoke test:** v5.2.3 | **Full test:** v1.9.0 <br/>**Smoke test:** v1.8.1, v1.7.0, v1.6.4 |
| [2.5.0](versionIndex.md#v250) | **Full test:** v5.2.3 | **Full test:** v1.6.4 | | [2.5.0](versionIndex.md#v250) | **Full test:** v5.2.3 | **Full test:** v1.6.4 |
-111
View File
@@ -1,111 +0,0 @@
---
Title: Content Services API
Github only: true
---
# Content Services API
Contains components related to Content Services.
See the library's
[README file](../../lib/content-services/README.md)
for more information about installing and using the source code.
<!--content-services start-->
## Components
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Breadcrumb component](breadcrumb.component.md) | Indicates the current position within a navigation hierarchy. | [Source](../../lib/content-services/breadcrumb/breadcrumb.component.ts) |
| [Dropdown breadcrumb component](dropdown-breadcrumb.component.md) | Indicates the current position within a navigation hierarchy using a dropdown menu. | [Source](../../lib/content-services/breadcrumb/dropdown-breadcrumb.component.ts) |
| [Content metadata component](content-metadata.component.md) | Displays and edits metadata related to a node. | [Source](../../lib/content-services/content-metadata/components/content-metadata/content-metadata.component.ts) |
| [Content metadata card component](content-metadata-card.component.md) | Displays and edits metadata related to a node. | [Source](../../lib/content-services/content-metadata/components/content-metadata-card/content-metadata-card.component.ts) |
| [Content node selector panel component](content-node-selector-panel.component.md) | Opens a Content Node Selector in its own dialog window. | [Source](../../lib/content-services/content-node-selector/content-node-selector-panel.component.ts) |
| [Content node selector component](content-node-selector.component.md) | Allows a user to select items from a Content Services repository. | [Source](../../lib/content-services/content-node-selector/content-node-selector.component.ts) |
| [Content action component](content-action.component.md) | Adds options to a Document List actions menu for a particular content type. | [Source](../../lib/content-services/document-list/components/content-action/content-action.component.ts) |
| [Document list component](document-list.component.md) | Displays the documents from a repository. | [Source](../../lib/content-services/document-list/components/document-list.component.ts) |
| [Add permission dialog component](add-permission-dialog.component.md) | Displays a dialog to search for people or groups to add to the current node permissions. | [Source](../../lib/content-services/permission-manager/components/add-permission/add-permission-dialog.component.ts) |
| [Add permission panel component](add-permission-panel.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../../lib/content-services/permission-manager/components/add-permission/add-permission-panel.component.ts) |
| [Add permission component](add-permission.component.md) | Searches for people or groups to add to the current node permissions. | [Source](../../lib/content-services/permission-manager/components/add-permission/add-permission.component.ts) |
| [Permission list component](permission-list.component.md) | Shows node permissions as a table. | [Source](../../lib/content-services/permission-manager/components/permission-list/permission-list.component.ts) |
| [Search check list component](search-check-list.component.md) | Implements a checklist widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-check-list/search-check-list.component.ts) |
| [Search chip list component](search-chip-list.component.md) | Displays search criteria as a set of "chips". | [Source](../../lib/content-services/search/components/search-chip-list/search-chip-list.component.ts) |
| [Search control component](search-control.component.md) | Displays a input text that shows find-as-you-type suggestions. | [Source](../../lib/content-services/search/components/search-control.component.ts) |
| [Search date range component](search-date-range.component.md) | Implements a date range widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-date-range/search-date-range.component.ts) |
| [Search filter component](search-filter.component.md) | Represents a main container component for custom search and faceted search settings. | [Source](../../lib/content-services/search/components/search-filter/search-filter.component.ts) |
| [Search number range component](search-number-range.component.md) | Implements a number range widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-number-range/search-number-range.component.ts) |
| [Search radio component](search-radio.component.md) | Implements a radio button list widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-radio/search-radio.component.ts) |
| [Search slider component](search-slider.component.md) | Implements a numeric slider widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-slider/search-slider.component.ts) |
| [Search sorting picker component](search-sorting-picker.component.md) | Provides an ability to select one of the predefined sorting definitions for search results: | [Source](../../lib/content-services/search/components/search-sorting-picker/search-sorting-picker.component.ts) |
| [Search text component](search-text.component.md) | Implements a text input widget for the Search Filter component. | [Source](../../lib/content-services/search/components/search-text/search-text.component.ts) |
| [Search component](search.component.md) | Searches items for supplied search terms. | [Source](../../lib/content-services/search/components/search.component.ts) |
| [Sites dropdown component](sites-dropdown.component.md) | Displays a dropdown menu to show and interact with the sites of the current user. | [Source](../../lib/content-services/site-dropdown/sites-dropdown.component.ts) |
| [Like component](like.component.md) | Allows a user to add "likes" to an item. | [Source](../../lib/content-services/social/like.component.ts) |
| [Rating component](rating.component.md) | Allows a user to add ratings to an item. | [Source](../../lib/content-services/social/rating.component.ts) |
| [Tag actions component](tag-actions.component.md) | Shows available actions for tags. | [Source](../../lib/content-services/tag/tag-actions.component.ts) |
| [Tag list component](tag-list.component.md) | Shows tags for an item. | [Source](../../lib/content-services/tag/tag-list.component.ts) |
| [Tag node list component](tag-node-list.component.md) | Shows tags for a node. | [Source](../../lib/content-services/tag/tag-node-list.component.ts) |
| [Tree view component](tree-view.component.md) | Shows the folder and subfolders of a node as a tree view. | [Source](../../lib/content-services/tree-view/components/tree-view.component.ts) |
| [File uploading dialog component](file-uploading-dialog.component.md) | Shows a dialog listing all the files uploaded with the Upload Button or Drag Area components. | [Source](../../lib/content-services/upload/components/file-uploading-dialog.component.ts) |
| [Upload button component](upload-button.component.md) | Activates a file upload. | [Source](../../lib/content-services/upload/components/upload-button.component.ts) |
| [Upload drag area component](upload-drag-area.component.md) | Adds a drag and drop area to upload files to ACS. | [Source](../../lib/content-services/upload/components/upload-drag-area.component.ts) |
| [Upload version button component](upload-version-button.component.md) ![Experimental](../docassets/images/ExperimentalIcon.png) | Activates a file version upload. | [Source](../../lib/content-services/upload/components/upload-version-button.component.ts) |
| [Version list component](version-list.component.md) ![Experimental](../docassets/images/ExperimentalIcon.png) | Displays the version history of a node in a Version Manager component. | [Source](../../lib/content-services/version-manager/version-list.component.ts) |
| [Version manager component](version-manager.component.md) ![Experimental](../docassets/images/ExperimentalIcon.png) | Displays the version history of a node with the ability to upload a new version. | [Source](../../lib/content-services/version-manager/version-manager.component.ts) |
| [Webscript component](webscript.component.md) | Provides access to Webscript features. | [Source](../../lib/content-services/webscript/webscript.component.ts) |
## Dialogs
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Confirm dialog](confirm.dialog.md) | Requests a yes/no choice from the user. | [Source](../../lib/content-services/dialogs/confirm.dialog.ts) |
| [Library dialog](library.dialog.md) | Creates a new Content Services document library/site. | [Source](../../lib/content-services/dialogs/library/library.dialog.ts) |
## Directives
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Content node share directive](content-node-share.directive.md) | Creates and manages public shared links for files. | [Source](../../lib/content-services/content-node-share/content-node-share.directive.ts) |
| [Node lock directive](node-lock.directive.md) | Locks or unlocks a node. | [Source](../../lib/content-services/directives/node-lock.directive.ts) |
| [Folder create directive](folder-create.directive.md) | Creates folders. | [Source](../../lib/content-services/folder-directive/folder-create.directive.ts) |
| [Folder edit directive](folder-edit.directive.md) | Allows folders to be edited. | [Source](../../lib/content-services/folder-directive/folder-edit.directive.ts) |
| [Inherited button directive](inherited-button.directive.md) | Update the current node by adding/removing the inherited permissions. | [Source](../../lib/content-services/permission-manager/components/inherited-button.directive.ts) |
| [File draggable directive](file-draggable.directive.md) | Provides drag-and-drop features for an element such as a `div`. | [Source](../../lib/content-services/upload/directives/file-draggable.directive.ts) |
## Models
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Image resolver model](image-resolver.model.md) | Defines the Image Resolver function used by the Document List Component. | [Source](../../lib/content-services/document-list/data/image-resolver.model.ts) |
| [Row filter model](row-filter.model.md) | Defines the Row Filter function used by the Document List Component. | [Source](../../lib/content-services/document-list/data/row-filter.model.ts) |
| [Permissions style model](permissions-style.model.md) | Sets custom CSS styles for rows of a Document List according to the item's permissions. | [Source](../../lib/content-services/document-list/models/permissions-style.model.ts) |
## Pipes
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [File upload error pipe](file-upload-error.pipe.md) | Converts an upload error code to an error message. | [Source](../../lib/content-services/upload/pipes/file-upload-error.pipe.ts) |
## Services
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Content node dialog service](content-node-dialog.service.md) | Displays and manages dialogs for selecting content to open, copy or upload. | [Source](../../lib/content-services/content-node-selector/content-node-dialog.service.ts) |
| [Custom resources service](custom-resources.service.md) | Manages Document List information that is specific to a user. | [Source](../../lib/content-services/document-list/services/custom-resources.service.ts) |
| [Document actions service](document-actions.service.md) | Implements the document menu actions for the Document List component. | [Source](../../lib/content-services/document-list/services/document-actions.service.ts) |
| [Document list service](document-list.service.md) | Implements node operations used by the Document List component. | [Source](../../lib/content-services/document-list/services/document-list.service.ts) |
| [Folder actions service](folder-actions.service.md) | Implements the folder menu actions for the Document List component. | [Source](../../lib/content-services/document-list/services/folder-actions.service.ts) |
| [Node permission dialog service](node-permission-dialog.service.md) | Displays dialogs to let the user set node permissions. | [Source](../../lib/content-services/permission-manager/services/node-permission-dialog.service.ts) |
| [Node permission service](node-permission.service.md) | Manages role permissions for content nodes. | [Source](../../lib/content-services/permission-manager/services/node-permission.service.ts) |
| [Search filter service](search-filter.service.md) | Registers widgets for use with the Search Filter component. | [Source](../../lib/content-services/search/components/search-filter/search-filter.service.ts) |
| [Search query builder service](search-query-builder.service.md) | Stores information from all the custom search and faceted search widgets, compiles and runs the final search query. | [Source](../../lib/content-services/search/search-query-builder.service.ts) |
| [Rating service](rating.service.md) | Manages ratings for items in Content Services. | [Source](../../lib/content-services/social/services/rating.service.ts) |
| [Tag service](tag.service.md) | Manages tags in Content Services. | [Source](../../lib/content-services/tag/services/tag.service.ts) |
<!--content-services end-->
## Other classes and interfaces
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Search Widget interface](search-widget.interface.md) | Specifies required properties for [Search filter component](../content-services/search-filter.component.md) widgets. | [Source](../../lib/content-services/search/search-widget.interface.ts) |
@@ -5,11 +5,11 @@ Status: Active
Last reviewed: 2018-11-13 Last reviewed: 2018-11-13
--- ---
# [Add Permission Dialog Component](../../lib/content-services/permission-manager/components/add-permission/add-permission-dialog.component.ts "Defined in add-permission-dialog.component.ts") # [Add Permission Dialog Component](../../../lib/content-services/permission-manager/components/add-permission/add-permission-dialog.component.ts "Defined in add-permission-dialog.component.ts")
Displays a dialog to search for people or groups to add to the current node permissions. Displays a dialog to search for people or groups to add to the current node permissions.
![Add Permission Component](../docassets/images/add-permission-component.png) ![Add Permission Component](../../docassets/images/add-permission-component.png)
## Basic Usage ## Basic Usage
@@ -29,10 +29,10 @@ import { NodePermissionDialogService } from '@alfresco/adf-content-services';
## Details ## Details
This component extends the [Add permission panel component](../content-services/add-permission-panel.component.md) This component extends the [Add permission panel component](add-permission-panel.component.md)
to apply the chosen selection of permissions when they are accepted. to apply the chosen selection of permissions when they are accepted.
You can open the dialog with the `openAddPermissionDialog` method from the You can open the dialog with the `openAddPermissionDialog` method from the
[Node Permission Dialog Service](../content-services/node-permission-dialog.service.md). [Node Permission Dialog Service](../services/node-permission-dialog.service.md).
This returns an [`Observable`](http://reactivex.io/documentation/observable.html) This returns an [`Observable`](http://reactivex.io/documentation/observable.html)
that you can subscribe to so you can get the details of the node after the update. that you can subscribe to so you can get the details of the node after the update.
Use the `updateNodePermissionByDialog` nethod from the service to update node permissions, as shown in Use the `updateNodePermissionByDialog` nethod from the service to update node permissions, as shown in
@@ -54,5 +54,5 @@ import { NodePermissionDialogService } from '@alfresco/adf-content-services';
## See also ## See also
- [Node permission dialog service](node-permission-dialog.service.md) - [Node permission dialog service](../services/node-permission-dialog.service.md)
- [Add permission panel component](add-permission-panel.component.md) - [Add permission panel component](add-permission-panel.component.md)
@@ -5,11 +5,11 @@ Status: Active
Last reviewed: 2018-11-14 Last reviewed: 2018-11-14
--- ---
# [Add Permission Panel Component](../../lib/content-services/permission-manager/components/add-permission/add-permission-panel.component.ts "Defined in add-permission-panel.component.ts") # [Add Permission Panel Component](../../../lib/content-services/permission-manager/components/add-permission/add-permission-panel.component.ts "Defined in add-permission-panel.component.ts")
Searches for people or groups to add to the current node permissions. Searches for people or groups to add to the current node permissions.
![Add Permission Component](../docassets/images/add-permission-component.png) ![Add Permission Component](../../docassets/images/add-permission-component.png)
## Basic Usage ## Basic Usage
@@ -35,11 +35,11 @@ This component uses a [Search component](search.component.md) to retrieve the
groups and people that could be added to the permission list of the current node. groups and people that could be added to the permission list of the current node.
The `select` event is emitted when a result is clicked from the list. The `select` event is emitted when a result is clicked from the list.
The [Add permission dialog component](../content-services/add-permission-dialog.component.md) The [Add permission dialog component](add-permission-dialog.component.md)
and [Add permission component](../content-services/add-permission.component.md) extend this behavior by applying the chosen and [Add permission component](add-permission.component.md) extend this behavior by applying the chosen
permissions to the node once the selection has been made. permissions to the node once the selection has been made.
## See also ## See also
- [Add permission dialog component](../content-services/add-permission-dialog.component.md) - [Add permission dialog component](add-permission-dialog.component.md)
- [Add permission component](../content-services/add-permission.component.md) - [Add permission component](add-permission.component.md)
@@ -5,11 +5,11 @@ Status: Active
Last reviewed: 2019-01-16 Last reviewed: 2019-01-16
--- ---
# [Add Permission Component](../../lib/content-services/permission-manager/components/add-permission/add-permission.component.ts "Defined in add-permission.component.ts") # [Add Permission Component](../../../lib/content-services/permission-manager/components/add-permission/add-permission.component.ts "Defined in add-permission.component.ts")
Searches for people or groups to add to the current node permissions. Searches for people or groups to add to the current node permissions.
![Add Permission Component](../docassets/images/add-permission-component.png) ![Add Permission Component](../../docassets/images/add-permission-component.png)
## Basic Usage ## Basic Usage
@@ -38,11 +38,11 @@ Searches for people or groups to add to the current node permissions.
## Details ## Details
This component extends the [Add permission panel component](../content-services/add-permission-panel.component.md) This component extends the [Add permission panel component](add-permission-panel.component.md)
to apply the chosen selection of permissions when they are accepted. You can also to apply the chosen selection of permissions when they are accepted. You can also
use the [Add permission dialog component](../content-services/add-permission-dialog.component.md) to perform the same action using a dialog. use the [Add permission dialog component](add-permission-dialog.component.md) to perform the same action using a dialog.
## See also ## See also
- [Add permission panel component](../content-services/add-permission-panel.component.md) - [Add permission panel component](add-permission-panel.component.md)
- [Add permission dialog component](../content-services/add-permission-dialog.component.md) - [Add permission dialog component](add-permission-dialog.component.md)
@@ -5,11 +5,11 @@ Status: Active
Last reviewed: 2019-01-16 Last reviewed: 2019-01-16
--- ---
# [Breadcrumb Component](../../lib/content-services/breadcrumb/breadcrumb.component.ts "Defined in breadcrumb.component.ts") # [Breadcrumb Component](../../../lib/content-services/breadcrumb/breadcrumb.component.ts "Defined in breadcrumb.component.ts")
Indicates the current position within a navigation hierarchy. Indicates the current position within a navigation hierarchy.
![Breadcrumb](../docassets/images/breadcrumb.png) ![Breadcrumb](../../docassets/images/breadcrumb.png)
## Basic Usage ## Basic Usage
@@ -29,7 +29,7 @@ Indicates the current position within a navigation hierarchy.
| maxItems | `number` | | Maximum number of nodes to display before wrapping them with a dropdown element. | | maxItems | `number` | | Maximum number of nodes to display before wrapping them with a dropdown element. |
| root | `string` | null | (optional) Name of the root element of the breadcrumb. You can use this property to rename "Company Home" to "Personal Files" for example. You can use an i18n resource key for the property value. | | root | `string` | null | (optional) Name of the root element of the breadcrumb. You can use this property to rename "Company Home" to "Personal Files" for example. You can use an i18n resource key for the property value. |
| rootId | `string` | null | (optional) The id of the root element. You can use this property to set a custom element the breadcrumb should start with. | | rootId | `string` | null | (optional) The id of the root element. You can use this property to set a custom element the breadcrumb should start with. |
| target | [`DocumentListComponent`](../content-services/document-list.component.md) | | (optional) [Document List component](../content-services/document-list.component.md) to operate with. The list will update when the breadcrumb is clicked. | | target | [`DocumentListComponent`](../../content-services/components/document-list.component.md) | | (optional) [Document List component](../../content-services/components/document-list.component.md) to operate with. The list will update when the breadcrumb is clicked. |
| transform | `Function` | | Transformation to be performed on the chosen/folder node before building the breadcrumb UI. Can be useful when custom formatting is needed for the breadcrumb. You can change the path elements from the node that are used to build the breadcrumb using this function. | | transform | `Function` | | Transformation to be performed on the chosen/folder node before building the breadcrumb UI. Can be useful when custom formatting is needed for the breadcrumb. You can change the path elements from the node that are used to build the breadcrumb using this function. |
### Events ### Events
@@ -43,7 +43,7 @@ Indicates the current position within a navigation hierarchy.
The `maxItems` property sets the maximum number of "crumbs" in the breadcrumb trail. If The `maxItems` property sets the maximum number of "crumbs" in the breadcrumb trail. If
the actual path contains more nodes than this then the earliest items in the path will be the actual path contains more nodes than this then the earliest items in the path will be
removed and kept in a menu as with the removed and kept in a menu as with the
[Dropdown breadcrumb component](../content-services/dropdown-breadcrumb.component.md). [Dropdown breadcrumb component](dropdown-breadcrumb.component.md).
### Using the transform function ### Using the transform function
@@ -53,7 +53,7 @@ the list by altering the node's `path.elements` property.
Below is an example of how you might do this with the Below is an example of how you might do this with the
[Content Node Selector component](content-node-selector.component.md). In this case, you pass the [Content Node Selector component](content-node-selector.component.md). In this case, you pass the
transform function via the `breadcrumbTransform` property of [`ContentNodeSelectorComponentData`](../../lib/content-services/content-node-selector/content-node-selector.component-data.interface.ts) during transform function via the `breadcrumbTransform` property of [`ContentNodeSelectorComponentData`](../../../lib/content-services/content-node-selector/content-node-selector.component-data.interface.ts) during
initialization: initialization:
```ts ```ts
@@ -92,7 +92,7 @@ A transform function to remove the "Sites" folder from the path would look somet
Below, the breadcrumb is shown before and after the transform function is applied: Below, the breadcrumb is shown before and after the transform function is applied:
![Content Node Selector breadcrumbTransform before/after screenshot](../docassets/images/breadcrumbTransform.png) ![Content Node Selector breadcrumbTransform before/after screenshot](../../docassets/images/breadcrumbTransform.png)
## See also ## See also
@@ -5,11 +5,11 @@ Status: Active
Last reviewed: 2019-01-17 Last reviewed: 2019-01-17
--- ---
# [Content Action component](../../lib/content-services/document-list/components/content-action/content-action.component.ts "Defined in content-action.component.ts") # [Content Action component](../../../lib/content-services/document-list/components/content-action/content-action.component.ts "Defined in content-action.component.ts")
Adds options to a Document List actions menu for a particular content type. Adds options to a Document List actions menu for a particular content type.
![Document Actions](../docassets/images/document-actions.png) ![Document Actions](../../docassets/images/document-actions.png)
## Contents ## Contents
@@ -121,7 +121,7 @@ will trigger the same action.) You can also add your own handler by implementing
`execute` event. `execute` event.
Note that you can use _both_ a built-in handler and your own `execute` Note that you can use _both_ a built-in handler and your own `execute`
function in the same action. The `execute` function is passed a [`NodeMinimalEntry`](../../lib/content-services/document-list/models/document-library.model.ts) as its function in the same action. The `execute` function is passed a [`NodeMinimalEntry`](../../../lib/content-services/document-list/models/document-library.model.ts) as its
parameter. For parameter. For
example, with `handler="delete"` you could use `execute` to show a message with the name, example, with `handler="delete"` you could use `execute` to show a message with the name,
type, and other details of the item just deleted: type, and other details of the item just deleted:
@@ -155,7 +155,7 @@ type, and other details of the item just deleted:
} }
``` ```
![Custom delete message screenshot](../docassets/images/ContentActSnackMessage.png) ![Custom delete message screenshot](../../docassets/images/ContentActSnackMessage.png)
### Examples ### Examples
@@ -177,7 +177,7 @@ This action simply executes one of the built-in actions described above:
</adf-document-list> </adf-document-list>
``` ```
![Download document action](../docassets/images/document-action-download.png) ![Download document action](../../docassets/images/document-action-download.png)
#### Custom handler #### Custom handler
@@ -241,13 +241,13 @@ export class MyComponent {
} }
``` ```
![Delete disable action button](../docassets/images/content-action-disable-delete-button.png) ![Delete disable action button](../../docassets/images/content-action-disable-delete-button.png)
#### Permission check #### Permission check
You can also implement the `permissionEvent` to handle permission errors You can also implement the `permissionEvent` to handle permission errors
(to show the user a notification, for example). Subscribe to this event from your component (to show the user a notification, for example). Subscribe to this event from your component
and use the [Notification service](../core/notification.service.md) to show a message. and use the [Notification service](../../core/services/notification.service.md) to show a message.
```html ```html
<adf-document-list [contentActions]="true"...> <adf-document-list [contentActions]="true"...>
@@ -276,7 +276,7 @@ export class MyComponent {
} }
``` ```
![Delete show notification message](../docassets/images/content-action-notification-message.png) ![Delete show notification message](../../docassets/images/content-action-notification-message.png)
#### Copy and move #### Copy and move
@@ -284,7 +284,7 @@ These actions show the destination chooser dialog for copy and move actions. By
the destination chooser lists all the folders of the subject item's parent. However, it won't the destination chooser lists all the folders of the subject item's parent. However, it won't
allow the item being copied/moved to be the destination if it is itself a folder. allow the item being copied/moved to be the destination if it is itself a folder.
![Copy/move dialog](../docassets/images/document-action-copymovedialog.png) ![Copy/move dialog](../../docassets/images/document-action-copymovedialog.png)
```html ```html
<adf-document-list [contentActions]="true"...> <adf-document-list [contentActions]="true"...>
@@ -432,10 +432,10 @@ funcName = (parameters): boolean => {
### Customizing built-in actions ### Customizing built-in actions
The built-in actions are defined in the [Document Actions service](document-actions.service.md) and The built-in actions are defined in the [Document Actions service](../services/document-actions.service.md) and
[Folder Actions service](folder-actions.service.md) but you can register new actions with these services [Folder Actions service](../services/folder-actions.service.md) but you can register new actions with these services
and override the default implementations. See the doc pages for and override the default implementations. See the doc pages for
[Document Actions service](document-actions.service.md) and [Folder Actions service](folder-actions.service.md) [Document Actions service](../services/document-actions.service.md) and [Folder Actions service](../services/folder-actions.service.md)
for details and examples. for details and examples.
### Error, Permission and Success callbacks ### Error, Permission and Success callbacks
@@ -446,10 +446,10 @@ You can define error, permission and success callbacks in much the same way as f
- The success callback's only parameter is the translatable success message string (which could be shown in a snackbar, for example) - The success callback's only parameter is the translatable success message string (which could be shown in a snackbar, for example)
- The `permissionEvent` callback is the same as described above for the delete action - The `permissionEvent` callback is the same as described above for the delete action
![Copy/move document action](../docassets/images/document-action-copymove.png) ![Copy/move document action](../../docassets/images/document-action-copymove.png)
## See also ## See also
- [Document list component](document-list.component.md) - [Document list component](document-list.component.md)
- [Document actions service](document-actions.service.md) - [Document actions service](../services/document-actions.service.md)
- [Folder actions service](folder-actions.service.md) - [Folder actions service](../services/folder-actions.service.md)
@@ -2,14 +2,14 @@
Title: Content Metadata Card component Title: Content Metadata Card component
Added: v2.1.0 Added: v2.1.0
Status: Active Status: Active
Last reviewed: 2019-01-16 Last reviewed: 2019-03-15
--- ---
# [Content Metadata Card component](../../lib/content-services/content-metadata/components/content-metadata-card/content-metadata-card.component.ts "Defined in content-metadata-card.component.ts") # [Content Metadata Card component](../../../lib/content-services/content-metadata/components/content-metadata-card/content-metadata-card.component.ts "Defined in content-metadata-card.component.ts")
Displays and edits metadata related to a node. Displays and edits metadata related to a node.
![Content metadata screenshot](../docassets/images/ContentMetadata.png) ![Content metadata screenshot](../../docassets/images/ContentMetadata.png)
## Basic Usage ## Basic Usage
@@ -38,7 +38,7 @@ Displays and edits metadata related to a node.
## Details ## Details
The component shows metadata related to a given node. It uses the The component shows metadata related to a given node. It uses the
[Card View component](../core/card-view.component.md) to render the properties of metadata aspects. [Card View component](../../core/components/card-view.component.md) to render the properties of metadata aspects.
The different aspects and their properties to be shown can be configured as application config The different aspects and their properties to be shown can be configured as application config
presets (see below). By default the component only shows the basic properties of the node. presets (see below). By default the component only shows the basic properties of the node.
The user can click on the pencil icon at the bottom of the component to edit the metadata The user can click on the pencil icon at the bottom of the component to edit the metadata
@@ -47,8 +47,8 @@ properties.
### Application config presets ### Application config presets
You can define different presets for the metadata component or override the default presets in You can define different presets for the metadata component or override the default presets in
the `app.config.json` file. The **default** preset is "\*" if not set, meaning the component the `app.config.json` file. If nothing else is set, the **default** preset is "\*",
will display every aspect and property of a node without filtering. which will use the "indifferent" config described below.
You can define as many extra presets as you need for your components. You can define as many extra presets as you need for your components.
@@ -68,6 +68,10 @@ The default configuration behaves like the following:
... ...
``` ```
This will display a default set of basic node properties: **name**, **title**,
**creator**, **created date**, **size**, **modifier**, **modified date**,
**mime type**, **author**, **description**.
#### Aspect oriented config #### Aspect oriented config
With this type of configuration you can "whitelist" aspects and properties for a preset, but everything will be grouped by aspects and there is no further way to group properties. Use a With this type of configuration you can "whitelist" aspects and properties for a preset, but everything will be grouped by aspects and there is no further way to group properties. Use a
@@ -126,8 +130,7 @@ A final example shows the same process applied to a custom preset called "kitten
### Layout oriented config ### Layout oriented config
You can also go beyond the aspect oriented configuration if you need to configure the groups and properties in a more detailed way. With this type of configuration any property of any aspect/type You can also go beyond the aspect oriented configuration if you need to configure the groups and properties in a more detailed way. With this type of configuration any property of any aspect/type
can be "cherry picked" and grouped into an accordion drawer, along with a translatable title can be "cherry picked" and grouped into an accordion drawer, along with a translatable title defined in the preset configuration.
defined in the preset configuration.
#### Basic elements #### Basic elements
@@ -213,6 +216,80 @@ The result of this config would be two accordion groups with the following prope
| kitten:favourite-food | | kitten:favourite-food |
| kitten:recommended-food | | kitten:recommended-food |
### Displaying all properties
You can list all the properties by simply adding the `includeAll: boolean` to your config. This config will display all the aspects and properties available for that specific file.
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true
}
}
},
```
Futhermore, you can also exclude specific aspects by adding the `exclude` property. It can be either a string if it's only one aspect or an array if you want to exclude multiple aspects at once:
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true,
"exclude": "exif:exif"
}
}
},
```
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true,
"exclude": ["exif:exif", "owner:parameters"]
}
}
},
```
When using this configuration you can still whitelist aspects and properties as you desire. Let's see more complex examples for each of the config layouts:
##### Aspect oriented config
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true,
"exclude": "exif:exif",
"exif:exif": [ "exif:pixelXDimension", "exif:pixelYDimension"]
}
}
},
```
##### Layout oriented config
```json
"content-metadata": {
"presets": {
"robot-images": [
{
"includeAll": true,
"exclude": ["cm:content", "exif:exif"]
},
{
"title": "Robot Group",
"items": [
{ "aspect": "exif:exif", "properties": [ "exif:pixelXDimension", "exif:pixelYDimension"] }
]
}
]
}
},
```
## What happens when there is a whitelisted aspect in the config but the given node doesn't relate to that aspect ## What happens when there is a whitelisted aspect in the config but the given node doesn't relate to that aspect
Nothing - since this aspect is not related to the node, it will simply be ignored and not Nothing - since this aspect is not related to the node, it will simply be ignored and not

Some files were not shown because too many files have changed in this diff Show More