mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-16 18:13:06 +00:00
Compare commits
264
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0447a30b38 | ||
|
|
b6e6237b45 | ||
|
|
6dd3fc61fc | ||
|
|
a39480bc48 | ||
|
|
9863149a28 | ||
|
|
41f9974919 | ||
|
|
997fa81c59 | ||
|
|
8db863219c | ||
|
|
29132ec5c8 | ||
|
|
3711eecca4 | ||
|
|
f4a8084f0c | ||
|
|
dd91f2eeb6 | ||
|
|
cb69f34aa7 | ||
|
|
63886d5262 | ||
|
|
8567b147be | ||
|
|
52a733d2a2 | ||
|
|
ad150bf610 | ||
|
|
77fde1ab65 | ||
|
|
005b26c54f | ||
|
|
97253bba85 | ||
|
|
1049de9825 | ||
|
|
5d92a08f1e | ||
|
|
8ab4e15daf | ||
|
|
99db02b9db | ||
|
|
b156e866b2 | ||
|
|
aa6b5089bb | ||
|
|
fc224713f2 | ||
|
|
2bc74f012d | ||
|
|
c890999c80 | ||
|
|
713320b01d | ||
|
|
2f3c9f1658 | ||
|
|
b5310f6b89 | ||
|
|
7028910616 | ||
|
|
d26593e4d8 | ||
|
|
25d85c7890 | ||
|
|
2dccde9e6b | ||
|
|
7d02ea61a2 | ||
|
|
33d7fca2cf | ||
|
|
e7bb097be6 | ||
|
|
90c8cb3add | ||
|
|
8625a49df7 | ||
|
|
d412579836 | ||
|
|
fbccbb5a98 | ||
|
|
bac4d786bc | ||
|
|
0d4049b333 | ||
|
|
69689876af | ||
|
|
55ec15e174 | ||
|
|
c89714be83 | ||
|
|
6e7b1808cc | ||
|
|
8e3d5a9b9f | ||
|
|
02dcd4fb48 | ||
|
|
477d49eaee | ||
|
|
b876102098 | ||
|
|
f76e10ff09 | ||
|
|
4aa2e0eb87 | ||
|
|
058cd9e01c | ||
|
|
2062d4744c | ||
|
|
6cd6eefc92 | ||
|
|
561f8c38d4 | ||
|
|
f8f6d145f3 | ||
|
|
c00c7643b1 | ||
|
|
05e2033633 | ||
|
|
384628197e | ||
|
|
f18fd94085 | ||
|
|
41f135df0f | ||
|
|
9014a85eda | ||
|
|
96075ae456 | ||
|
|
c5710c0e61 | ||
|
|
54bb8e24e5 | ||
|
|
275d30b043 | ||
|
|
a1ec61f857 | ||
|
|
3b7ac02098 | ||
|
|
0ba076722f | ||
|
|
bcfa488940 | ||
|
|
b1311c6966 | ||
|
|
6e99dd663a | ||
|
|
5ce8553901 | ||
|
|
d2f9523053 | ||
|
|
99015fee87 | ||
|
|
e16bed611c | ||
|
|
5d2dddee28 | ||
|
|
cae2d70637 | ||
|
|
d873306c7c | ||
|
|
dd1feeec6e | ||
|
|
08b4cc7939 | ||
|
|
7c6ce0a5fe | ||
|
|
b9c53e586d | ||
|
|
cd84be9712 | ||
|
|
1a00249f6a | ||
|
|
4c7e500ea8 | ||
|
|
c12b4284ef | ||
|
|
a0333b1d9c | ||
|
|
857f9bd2b4 | ||
|
|
e59176d393 | ||
|
|
49c6cb5ad3 | ||
|
|
65e0c2405a | ||
|
|
d50aa91922 | ||
|
|
e0dfc9a8e9 | ||
|
|
3f8293b64c | ||
|
|
e8a3d109d4 | ||
|
|
4043d55fc4 | ||
|
|
52520bb61e | ||
|
|
afb22bbc02 | ||
|
|
ca49693bd6 | ||
|
|
a720edd2cf | ||
|
|
1f450c0593 | ||
|
|
0ab39e28fd | ||
|
|
11c3a02acc | ||
|
|
4f25426c25 | ||
|
|
89b79c9e45 | ||
|
|
71e7fc0bf6 | ||
|
|
d6e8e7a3b3 | ||
|
|
49237fee2d | ||
|
|
2d386c5890 | ||
|
|
2a45c1e7a3 | ||
|
|
b503773475 | ||
|
|
efb2558c3f | ||
|
|
266d3aa9b0 | ||
|
|
b6cf14c844 | ||
|
|
4a3bc568ad | ||
|
|
42dbfe25ac | ||
|
|
2c248a611f | ||
|
|
588ffe0fa0 | ||
|
|
61a3e30c31 | ||
|
|
facc4f6b03 | ||
|
|
3df6bcea26 | ||
|
|
f02272ac68 | ||
|
|
1746fcf653 | ||
|
|
011f78ac43 | ||
|
|
46717cdd4b | ||
|
|
d71eb6291a | ||
|
|
ad9ffeb17d | ||
|
|
44538015fa | ||
|
|
4f7f5b0afb | ||
|
|
a5a9a1e45b | ||
|
|
570bfb235c | ||
|
|
491d16f562 | ||
|
|
eb8bad1f96 | ||
|
|
35721b0279 | ||
|
|
59df5c661d | ||
|
|
bd9127d960 | ||
|
|
32e4564e14 | ||
|
|
cc33c5dec1 | ||
|
|
6138c16f42 | ||
|
|
a412b45300 | ||
|
|
b99a574f94 | ||
|
|
616ae95c23 | ||
|
|
bbee01a809 | ||
|
|
067d4e9369 | ||
|
|
db38ccda7a | ||
|
|
8a2f73ec2f | ||
|
|
55b146044e | ||
|
|
73e1953418 | ||
|
|
0b9fb82de2 | ||
|
|
f654fdf008 | ||
|
|
34e5508076 | ||
|
|
9d143cf945 | ||
|
|
fe65f7c201 | ||
|
|
f6fd813a29 | ||
|
|
93edda2263 | ||
|
|
3ab91806c3 | ||
|
|
2bf1832fec | ||
|
|
9f77d4187b | ||
|
|
e7624f031a | ||
|
|
c4dbda49eb | ||
|
|
1791534ec6 | ||
|
|
fd6f881eab | ||
|
|
28b20afc16 | ||
|
|
01678a4fc7 | ||
|
|
a564176cb7 | ||
|
|
c2ff725f0c | ||
|
|
029caf9010 | ||
|
|
a6e35deb71 | ||
|
|
a772c0a319 | ||
|
|
48cadfaa27 | ||
|
|
8392e7cf7d | ||
|
|
0d294ce720 | ||
|
|
b14d701ca9 | ||
|
|
10d49f4582 | ||
|
|
198c230086 | ||
|
|
f5b78bd573 | ||
|
|
5e11eaf609 | ||
|
|
80e4434f8a | ||
|
|
ec2f349465 | ||
|
|
14c6e6fa1f | ||
|
|
f48cd30756 | ||
|
|
a0aab47090 | ||
|
|
6f6af8cd4e | ||
|
|
aa37cad995 | ||
|
|
b9e0221ca2 | ||
|
|
f7fdc5c92a | ||
|
|
8a56a6d1fb | ||
|
|
71c4e718b0 | ||
|
|
f932337b8c | ||
|
|
46d7721aaf | ||
|
|
0d82ebccfa | ||
|
|
e534763475 | ||
|
|
91d511dee5 | ||
|
|
4da74f1c07 | ||
|
|
85429b4cf1 | ||
|
|
0560197898 | ||
|
|
eeda06131b | ||
|
|
df340f2bb2 | ||
|
|
b48248fae7 | ||
|
|
00dfd7c5d9 | ||
|
|
093b1e8a67 | ||
|
|
ae126475f7 | ||
|
|
b0561a2453 | ||
|
|
1855d8899d | ||
|
|
0cb21d61a8 | ||
|
|
310b04919e | ||
|
|
bc7c052059 | ||
|
|
2207156f3f | ||
|
|
a535af667b | ||
|
|
eb27d38eba | ||
|
|
0c4d48e2e9 | ||
|
|
5af3eb821f | ||
|
|
d29ec85b19 | ||
|
|
d6e97a672c | ||
|
|
169e59e4ce | ||
|
|
e3a785583c | ||
|
|
57ea636d3a | ||
|
|
266d30041a | ||
|
|
3864aaf9cb | ||
|
|
9077572199 | ||
|
|
7fa5c0faa6 | ||
|
|
bbf5174b1d | ||
|
|
d5592b9e01 | ||
|
|
02578dcdc5 | ||
|
|
8d074e8b33 | ||
|
|
a73526ef8a | ||
|
|
280684c3ab | ||
|
|
d27a3476f7 | ||
|
|
70e6d642f3 | ||
|
|
812352ecdc | ||
|
|
7f24d72ecc | ||
|
|
8efbd70679 | ||
|
|
d476f16a0d | ||
|
|
d42f332d33 | ||
|
|
69f0419ffd | ||
|
|
17f469bef0 | ||
|
|
38520c9e2b | ||
|
|
f094ace1c7 | ||
|
|
c1cffa9cfb | ||
|
|
ef278bde79 | ||
|
|
0cb1c502c0 | ||
|
|
5edc1186a4 | ||
|
|
8425831c5d | ||
|
|
914fc66c5a | ||
|
|
d89e3c8065 | ||
|
|
a84a89e8ec | ||
|
|
c567054ce5 | ||
|
|
5a557f999a | ||
|
|
95880dd5f8 | ||
|
|
f11bf262f8 | ||
|
|
e343de5c13 | ||
|
|
e5489363a1 | ||
|
|
6e9234af4f | ||
|
|
70c6a1095a | ||
|
|
97e6129b6e | ||
|
|
740e3cef9b | ||
|
|
d7ad1f9ad9 | ||
|
|
dea5f21894 | ||
|
|
ec6ede4fc5 |
@@ -17,7 +17,6 @@ demo-shell/resources/
|
||||
/angular.json
|
||||
/desktop.ini
|
||||
/cspell.json
|
||||
/.travis.yml
|
||||
/CODE_OF_CONDUCT.md
|
||||
/.stylelintignore
|
||||
/ALFRESCOCORS.md
|
||||
|
||||
@@ -13,6 +13,14 @@ trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.yaml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
name: "before-install"
|
||||
description: "launch before_install.sh and then parse env vars"
|
||||
inputs:
|
||||
act:
|
||||
description: 'enable act debug'
|
||||
required: false
|
||||
type: boolean
|
||||
default: 'false'
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Before install
|
||||
if: ${{ ! env.ACT }}
|
||||
shell: bash
|
||||
run: |
|
||||
pip install --user --quiet awscli
|
||||
|
||||
- name: base vars
|
||||
shell: bash
|
||||
run: |
|
||||
{
|
||||
echo "GIT_HASH=$(git rev-parse HEAD)";
|
||||
echo "BASE_HASH=$(git merge-base origin/${GITHUB_BASE_REF} HEAD)";
|
||||
echo "HEAD_HASH=HEAD";
|
||||
echo "HEAD_COMMIT_HASH=${GH_COMMIT}";
|
||||
echo "NX_CALCULATION_FLAGS=--all";
|
||||
echo "BUILD_OPTS=--configuration production";
|
||||
echo CI_FORCE_RUN=false;
|
||||
echo NODE_VERSION=$(node -v);
|
||||
} >> $GITHUB_ENV
|
||||
|
||||
- name: affected:* flag parser
|
||||
shell: bash
|
||||
if: ${{ contains(github.event.head_commit.message , '[affected:*]') }}
|
||||
run: |
|
||||
echo "Setting up CI to run with commit flag [affected:*] flag."
|
||||
echo "BREAK_ACTION=true" >> $GITHUB_ENV
|
||||
|
||||
- name: ci:force flag parser
|
||||
shell: bash
|
||||
if: ${{ contains(github.event.head_commit.message , '[ci:force]') }}
|
||||
run: |
|
||||
echo "Forcing CI to run with commit flag [ci:force]."
|
||||
echo CI_FORCE_RUN=true >> $GITHUB_ENV
|
||||
echo "BREAK_ACTION=true" >> $GITHUB_ENV
|
||||
|
||||
- name: PULL_REQUEST event
|
||||
if: ${{ env.BREAK_ACTION == false && github.event_name == 'pull_request' && !github.event.pull_request.merged }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Setting up CI flags for Pull Request event"
|
||||
NX_CALCULATION_FLAGS="--base=origin/${GITHUB_BASE_REF} --head=$HEAD_HASH"
|
||||
{
|
||||
echo "NX_CALCULATION_FLAGS=$NX_CALCULATION_FLAGS";
|
||||
echo "BASE_HASH=origin/${GITHUB_BASE_REF}";
|
||||
echo "BREAK_ACTION=true";
|
||||
} >> $GITHUB_ENV
|
||||
|
||||
- name: RELEASE on master/develop patch branch
|
||||
if: ${{ env.BREAK_ACTION == false && github.event.pull_request.merged }}
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ "${{ github.ref_name }}" =~ ^master(-patch.*)?$ ]]; then
|
||||
# into master(-patch*)
|
||||
echo "Setting up CI flags for Push on master patch"
|
||||
elif [[ "${{ github.ref_name }}" =~ ^develop-patch.*$ ]]; then
|
||||
# into develop-patch*
|
||||
echo "Setting up CI flags for Push develop patch"
|
||||
else
|
||||
echo "Setting up CI flags for Push on develop branch"
|
||||
base=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
echo "NX_CALCULATION_FLAGS=--base=$base --head=$HEAD_HASH" >> $GITHUB_ENV
|
||||
fi
|
||||
echo "BREAK_ACTION=true" >> $GITHUB_ENV
|
||||
|
||||
- name: SCHEDULE event
|
||||
if: ${{ github.event_name == 'schedule' }}
|
||||
shell: bash
|
||||
env:
|
||||
EV_NAME: ${{ github.event_name }}
|
||||
run: |
|
||||
echo "Setting up CI to run on SCHEDULE"
|
||||
echo "NX_CALCULATION_FLAGS=--all" >> $GITHUB_ENV
|
||||
@@ -0,0 +1,27 @@
|
||||
name: "Download build artifacts"
|
||||
description: "Download build artifacts"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: download and extract artifacts from s3
|
||||
shell: bash
|
||||
env:
|
||||
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
|
||||
run: |
|
||||
packages=( dist nxcache node_modules )
|
||||
for i in "${packages[@]}"; do
|
||||
time aws s3 cp --no-progress s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz $i.tar.gz
|
||||
du -h $i.tar.gz
|
||||
time tar xzf $i.tar.gz
|
||||
done
|
||||
- name: show files
|
||||
shell: bash
|
||||
run: |
|
||||
pwd
|
||||
ls -lha
|
||||
echo "====DIST===="
|
||||
find dist -maxdepth 1 -type d
|
||||
echo "====NXCACHE===="
|
||||
find nxcache -maxdepth 1 -type d
|
||||
echo "====ADF===="
|
||||
find node_modules/@alfresco/ -maxdepth 1 -type d
|
||||
@@ -0,0 +1,172 @@
|
||||
name: "e2e"
|
||||
description: "e2e"
|
||||
inputs:
|
||||
e2e-test-id:
|
||||
description: "Test id"
|
||||
required: true
|
||||
e2e-test-folder:
|
||||
description: "Test folder"
|
||||
required: true
|
||||
e2e-test-provider:
|
||||
description: "Test provider"
|
||||
required: true
|
||||
e2e-test-auth:
|
||||
description: "Test auth"
|
||||
required: true
|
||||
output:
|
||||
description: "Output path"
|
||||
required: true
|
||||
check-cs-env:
|
||||
required: true
|
||||
description: check cs env
|
||||
default: "false"
|
||||
check-ps-env:
|
||||
required: true
|
||||
description: check ps env
|
||||
default: "false"
|
||||
check-external-cs-env:
|
||||
required: true
|
||||
description: check external cs env
|
||||
default: "false"
|
||||
check-ps-cloud-env:
|
||||
required: true
|
||||
description: check ps cloud env
|
||||
default: "false"
|
||||
e2e-tar-name: #
|
||||
required: false
|
||||
default: e2e.tar.gz
|
||||
apa-proxy: #
|
||||
description: "proxy host"
|
||||
required: true
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: use APA as PROXY host if apa-proxy is set
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ -n "${{ inputs.apa-proxy }}" ]]; then
|
||||
echo "APA proxy set."
|
||||
echo "PROXY_HOST_BPM=${E2E_HOST_APA}" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: install aws cli
|
||||
shell: bash
|
||||
run: pip install awscli
|
||||
- name: download smartrunner test results from s3 bucket if they exist
|
||||
shell: bash
|
||||
env:
|
||||
REMOTE_PATH: smart-runner/${{ github.run_id}}/${{ inputs.e2e-test-folder }}-${{ inputs.e2e-test-id}}/e2e.tar.gz
|
||||
run: |
|
||||
set -u;
|
||||
mkdir -p "${SMART_RUNNER_PATH}"
|
||||
if [[ $(aws s3 ls "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}" > /dev/null; echo $?) -eq 0 ]]; then
|
||||
echo "downloading test files"
|
||||
aws s3 cp "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}" .;
|
||||
tar xzf ${{ inputs.e2e-tar-name }};
|
||||
else
|
||||
echo "nothing to download";
|
||||
fi
|
||||
|
||||
- name: check EXTERNAL-CS is UP
|
||||
shell: bash
|
||||
if: ${{ inputs.check-external-cs-env == 'true' }}
|
||||
run: |
|
||||
set -u;
|
||||
./node_modules/@alfresco/adf-cli/bin/adf-cli \
|
||||
check-cs-env \
|
||||
--host "$EXTERNAL_ACS_HOST" \
|
||||
-u "$E2E_USERNAME" \
|
||||
-p "$E2E_PASSWORD" || exit 1
|
||||
|
||||
- name: Check CS is UP
|
||||
shell: bash
|
||||
if: ${{ inputs.check-cs-env == 'true' }}
|
||||
run: |
|
||||
set -u;
|
||||
./node_modules/@alfresco/adf-cli/bin/adf-cli \
|
||||
check-cs-env \
|
||||
--host "$E2E_HOST" \
|
||||
-u "$E2E_USERNAME" \
|
||||
-p "$E2E_PASSWORD" || exit 1
|
||||
|
||||
- name: check PS is UP
|
||||
shell: bash
|
||||
if: ${{ inputs.check-ps-env == 'true' }}
|
||||
run: |
|
||||
set -u;
|
||||
./node_modules/@alfresco/adf-cli/bin/adf-cli init-aps-env \
|
||||
--host "$E2E_HOST" \
|
||||
-u "$E2E_USERNAME" \
|
||||
-p "$E2E_PASSWORD" \
|
||||
--license "$AWS_S3_BUCKET_ACTIVITI_LICENSE" || exit 1
|
||||
|
||||
- name: check PS-CLOUD is UP
|
||||
shell: bash
|
||||
if: ${{ inputs.check-ps-cloud-env == 'true' }}
|
||||
run: |
|
||||
set -u;
|
||||
./node_modules/@alfresco/adf-cli/bin/adf-cli init-aae-env \
|
||||
--oauth "$E2E_HOST" \
|
||||
--host "$E2E_HOST_APA" \
|
||||
--modelerUsername "$E2E_MODELER_USERNAME" \
|
||||
--modelerPassword "$E2E_MODELER_PASSWORD" \
|
||||
--devopsUsername "$E2E_DEVOPS_USERNAME" \
|
||||
--devopsPassword "$E2E_DEVOPS_PASSWORD" \
|
||||
--clientId 'alfresco' || exit 1
|
||||
|
||||
- name: variables sanification
|
||||
env:
|
||||
FOLDER: "${{ inputs.e2e-test-folder }}"
|
||||
PROVIDER: "${{ inputs.e2e-test-provider }}"
|
||||
AUTH_TYPE: "${{ inputs.e2e-test-auth }}"
|
||||
E2E_TEST_ID: "${{ inputs.e2e-test-id }}"
|
||||
shell: bash
|
||||
run: |
|
||||
set -u;
|
||||
echo $PROXY_HOST_BPM
|
||||
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||
|
||||
- name: run test with retries
|
||||
id: retry_run
|
||||
env:
|
||||
FOLDER: "${{ inputs.e2e-test-folder }}"
|
||||
PROVIDER: "${{ inputs.e2e-test-provider }}"
|
||||
AUTH_TYPE: "${{ inputs.e2e-test-auth }}"
|
||||
E2E_TEST_ID: "${{ inputs.e2e-test-id }}"
|
||||
|
||||
uses: nick-fields/retry@v2.8.2
|
||||
with:
|
||||
timeout_minutes: 40
|
||||
max_attempts: 2
|
||||
retry_wait_seconds: 30
|
||||
shell: bash
|
||||
command: |
|
||||
set -u;
|
||||
export GH_ACTION_RETRY_COUNT=$(cat ${GITHUB_OUTPUT} | grep -E '^[0-9]{1,2}$' | tail -n1)
|
||||
echo "RETRY GH_ACTION_RETRY_COUNT = <$GH_ACTION_RETRY_COUNT>"
|
||||
if [[ ${{ inputs.e2e-test-folder }} == 'content-services/upload' ]]; then
|
||||
export DISPLAY=:99
|
||||
chromedriver --url-base=/wd/hub &
|
||||
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
|
||||
bash ./scripts/github/e2e/e2e.sh "$E2E_TEST_ID" "browser" || exit 1
|
||||
else
|
||||
bash ./scripts/github/e2e/e2e.sh "$E2E_TEST_ID" || exit 1
|
||||
fi
|
||||
|
||||
- name: upload artifacts on gh
|
||||
id: upload_gh
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: e2e-artifact-output
|
||||
path: /home/runner/work/alfresco-ng2-components/alfresco-ng2-components/e2e-output-*
|
||||
|
||||
- name: upload smart-runner tests results on s3 to cache tests
|
||||
shell: bash
|
||||
if: always()
|
||||
env:
|
||||
REMOTE_PATH: "smart-runner/${{ github.run_id}}/${{ inputs.e2e-test-folder }}-${{ inputs.e2e-test-id}}/e2e.tar.gz"
|
||||
# description: always upload newer results
|
||||
run: |
|
||||
tar czf "${{ inputs.e2e-tar-name }}" "${SMART_RUNNER_PATH}"
|
||||
aws s3 cp "${{ inputs.e2e-tar-name }}" "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}"
|
||||
@@ -0,0 +1,30 @@
|
||||
name: 'enable dryrun'
|
||||
description: 'check if must run pipeline in dryrun mode'
|
||||
|
||||
inputs:
|
||||
dry-run-flag:
|
||||
description: 'enable dryrun'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
outputs:
|
||||
dryrun:
|
||||
description: "long sha of the tag"
|
||||
value: ${{ steps.dryrun.outputs.dryrun }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
|
||||
steps:
|
||||
- name: set dryrun flag to TRUE
|
||||
shell: bash
|
||||
id: dryrun
|
||||
run: |
|
||||
if [[ '${{ inputs.dry-run-flag }}' == 'true' ]]; then
|
||||
echo "dryrun=--dryrun" >> $GITHUB_OUTPUT;
|
||||
echo "enabling dryrun"
|
||||
else
|
||||
echo "dryrun=" >> $GITHUB_OUTPUT;
|
||||
echo "dryrun NOT enabled"
|
||||
fi
|
||||
@@ -0,0 +1,19 @@
|
||||
name: 'Get tag sha'
|
||||
description: 'get the sha of the latest or a specific tag'
|
||||
|
||||
outputs:
|
||||
tag_sha:
|
||||
description: "long sha of the tag"
|
||||
value: ${{ steps.sha_out.outputs.tag_sha }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
|
||||
steps:
|
||||
- name: get tag short sha
|
||||
shell: bash
|
||||
id: sha_out
|
||||
run: |
|
||||
tag_sha=$(git rev-list -n 1 $(git tag --sort=-creatordate | head -n 1))
|
||||
echo "tag_sha=$tag_sha" >> $GITHUB_OUTPUT
|
||||
echo $tag_sha
|
||||
@@ -0,0 +1,28 @@
|
||||
name: 'Check NPM bundle'
|
||||
description: 'check npm bundle'
|
||||
|
||||
inputs:
|
||||
branch_name:
|
||||
description: "override GITHUB_REF_NAME"
|
||||
required: false
|
||||
default: $GITHUB_REF_NAME
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
|
||||
steps:
|
||||
- name: load "NPM TAG"
|
||||
uses: ./.github/actions/set-npm-tag
|
||||
with:
|
||||
branch_name: ${{ inputs.branch_name }}
|
||||
- name: check npm bundle
|
||||
shell: bash
|
||||
id: sha_out
|
||||
run: |
|
||||
if [[ -z $TAG_NPM ]]; then
|
||||
echo "TAG_NPM not set, aborting"
|
||||
exit 1
|
||||
fi
|
||||
ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
|
||||
echo "check bundle on TAG_NPM='${TAG_NPM}' and ADF_VERSION='${ADF_VERSION}'"
|
||||
./scripts/github/build/npm-check-bundles.sh -v ${ADF_VERSION}
|
||||
@@ -0,0 +1,37 @@
|
||||
name: "set npm tag"
|
||||
description: "se NPM tag"
|
||||
|
||||
inputs:
|
||||
event_name:
|
||||
description: "override github.event_name"
|
||||
required: false
|
||||
default: ${{ github.event_name }}
|
||||
branch_name:
|
||||
description: "override GITHUB_REF_NAME"
|
||||
required: false
|
||||
default: $GITHUB_REF_NAME
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
|
||||
- name: set TAG_NPM
|
||||
shell: bash
|
||||
run: |
|
||||
TAG_NPM="alpha"
|
||||
VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version)
|
||||
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
|
||||
if [[ ${{ inputs.branch_name }} =~ ^master(-patch.*)?$ ]]; then
|
||||
# Pre-release versions
|
||||
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]];
|
||||
then
|
||||
TAG_NPM=next
|
||||
# Stable major versions
|
||||
else
|
||||
TAG_NPM=latest
|
||||
fi
|
||||
fi
|
||||
if [[ ${{ inputs.branch_name }} =~ ^develop(-patch.*)?$ ]]; then
|
||||
TAG_NPM=alpha
|
||||
fi
|
||||
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
|
||||
@@ -0,0 +1,13 @@
|
||||
name: 'Install Google Chrome'
|
||||
description: 'Install Google Chrome'
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Install google chrome
|
||||
shell: bash
|
||||
run: |
|
||||
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
sudo apt install ./google-chrome-stable_current_amd64.deb
|
||||
sudo ln -s /usr/bin/google-chrome /usr/bin/chrome
|
||||
chrome --version
|
||||
@@ -0,0 +1,61 @@
|
||||
name: 'Setup'
|
||||
description: 'Initialize cache, env var load'
|
||||
inputs:
|
||||
enable-cache:
|
||||
description: 'enable caching'
|
||||
required: false
|
||||
type: boolean
|
||||
default: 'true'
|
||||
enable-node-modules-cache:
|
||||
description: 'enable caching for node modules'
|
||||
required: false
|
||||
type: boolean
|
||||
default: 'true'
|
||||
act:
|
||||
description: 'enable act debug'
|
||||
required: false
|
||||
type: boolean
|
||||
default: 'false'
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: install NPM
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
cache-dependency-path: package-lock.json
|
||||
- name: get latest tag sha
|
||||
id: tag-sha
|
||||
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@v1.29.0
|
||||
# CACHE
|
||||
- name: Node Modules cache
|
||||
id: node-modules-cache
|
||||
if: ${{ inputs.enable-node-modules-cache == 'true' }}
|
||||
uses: actions/cache@v3
|
||||
env:
|
||||
cache-name: node-modules-cache
|
||||
with:
|
||||
path: |
|
||||
node_modules
|
||||
key: .npm-${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
node_modules-${{ runner.os }}-build-${{ env.cache-name }}-
|
||||
node_modules-${{ runner.os }}-build-
|
||||
node_modules-${{ runner.os }}-
|
||||
- name: pip cache
|
||||
uses: actions/cache@v3
|
||||
if: ${{ inputs.enable-cache == 'true' }}
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: ${{ runner.os }}-pip-
|
||||
restore-keys: |
|
||||
${{ runner.os }}
|
||||
- name: load "NPM TAG"
|
||||
uses: ./.github/actions/set-npm-tag
|
||||
- name: before install script
|
||||
uses: ./.github/actions/before-install
|
||||
with:
|
||||
act: ${{ inputs.act }}
|
||||
- name: link nx executable
|
||||
run: sudo ln -s $(npm bin)/nx /usr/bin/nx
|
||||
shell: bash
|
||||
@@ -1,28 +0,0 @@
|
||||
# TRAVIS_EVENT_TYPE= Indicates how the build was triggered. One of push, pull_request, api, cron
|
||||
name: "travis-event-type-env-var"
|
||||
description: "Mimic loading of a TRAVIS_EVENT_TYPE env var"
|
||||
|
||||
inputs:
|
||||
event_name:
|
||||
description: "override github.event_name"
|
||||
required: false
|
||||
default: ${{ github.event_name }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Parse env global
|
||||
run: |
|
||||
EVENT_TYPE=""
|
||||
REGEX="(repository|workflow)_dispatch"
|
||||
if [[ "${{ inputs.event_name }}" == "schedule" ]]; then
|
||||
EVENT_TYPE="cron";
|
||||
elif [[ "${{ inputs.event_name }}" == "pull_request" ]]; then
|
||||
EVENT_TYPE="pull_request";
|
||||
elif [[ "${{ inputs.event_name }}" == "push" ]]; then
|
||||
EVENT_TYPE="push";
|
||||
elif [[ "${{ inputs.event_name }}" =~ $REGEX ]]; then
|
||||
EVENT_TYPE="api";
|
||||
fi
|
||||
echo "TRAVIS_EVENT_TYPE=${EVENT_TYPE}" >> $GITHUB_ENV
|
||||
echo "exporting TRAVIS_EVENT_TYPE=${EVENT_TYPE}"
|
||||
shell: bash
|
||||
@@ -0,0 +1,19 @@
|
||||
name: "Upload build artifacts"
|
||||
description: "Upload build artifacts"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: tar and upload artifacts
|
||||
shell: bash
|
||||
env:
|
||||
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
|
||||
run: |
|
||||
packages=( dist nxcache node_modules )
|
||||
for i in "${packages[@]}"; do
|
||||
time tar czf $i.tar.gz $i
|
||||
du -h $i.tar.gz
|
||||
time aws s3 cp --no-progress $i.tar.gz "s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz"
|
||||
done
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ updates:
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "sunday"
|
||||
time: "07:00"
|
||||
open-pull-requests-limit: 5
|
||||
target-branch: develop
|
||||
ignore:
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
name: "upstream adf"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
repo_to_update:
|
||||
description: Repository to update
|
||||
type: string
|
||||
required: false
|
||||
default: alfresco-applications
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
cluster_operation:
|
||||
description: trigger adf test
|
||||
type: choice
|
||||
required: true
|
||||
options:
|
||||
- TRIGGER_ALPHA_ADF
|
||||
default: TRIGGER_ALPHA_ADF
|
||||
repo_to_update:
|
||||
description: Repository to update
|
||||
type: choice
|
||||
required: true
|
||||
options:
|
||||
- all
|
||||
- alfresco-content-app
|
||||
- alfresco-applications
|
||||
- alfresco-apps
|
||||
default: all
|
||||
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: ${{ secrets.URL_HOST_ADF }}
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
|
||||
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
GH_PACKAGES_READ_ONLY_TOKEN: ${{ secrets.HYLAND_GH_PACKAGES_READ_ONLY_TOKEN }}
|
||||
|
||||
jobs:
|
||||
trigger_adf:
|
||||
name: trigger adf
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: install NPM
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
cache-dependency-path: package-lock.json
|
||||
# - name: Debug on failure
|
||||
# uses: mxschmitt/action-tmate@v3
|
||||
# with:
|
||||
# timeout-minutes: 60
|
||||
# limit-access-to-actor: true
|
||||
- name: Trigger Alpha ADF child build
|
||||
shell: bash
|
||||
if: ${{ contains(github.event.head_commit.message, '[trigger adf]') || inputs.cluster_operation == 'TRIGGER_ALPHA_ADF' || github.event.schedule == '0 12 * * *' }}
|
||||
run: |
|
||||
npm install github-api
|
||||
./scripts/github/update/update-project.sh -p $GH_BUILD_NUMBER -t $GH_TOKEN -v alpha -c $GH_COMMIT -r ${{ inputs.repo_to_update }}
|
||||
@@ -16,20 +16,15 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
uses: github/codeql-action/init@v2
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
with:
|
||||
languages: javascript
|
||||
@@ -37,7 +32,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -51,4 +46,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
uses: github/codeql-action/analyze@v2
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
name: "cron e2e daily"
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 12 * * *'
|
||||
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
HEAD_REF: ${{ github.head_ref }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: "http://localhost:4200"
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
SMART_RUNNER_PATH: ".protractor-smartrunner"
|
||||
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
|
||||
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
REPO_OWNER: "Alfresco"
|
||||
REPO_NAME: "alfresco-ng2-components"
|
||||
DEMO_SHELL_DIR: "./dist/demo-shell"
|
||||
STORYBOOK_DIR: "./dist/storybook/stories"
|
||||
BUILT_LIBS_DIR: "./dist/libs"
|
||||
NODE_MODULES_DIR: "./node_modules"
|
||||
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
|
||||
SAVE_SCREENSHOT: true
|
||||
REDIRECT_URI: /
|
||||
BROWSER_RUN: false
|
||||
MAXINSTANCES: 2
|
||||
PLAYWRIGHT_WORKERS: 2
|
||||
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
|
||||
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
|
||||
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
|
||||
|
||||
jobs:
|
||||
run-e2e:
|
||||
name: run e2e
|
||||
uses: ./.github/workflows/pull-request.yml
|
||||
secrets: inherit
|
||||
@@ -0,0 +1,27 @@
|
||||
name: "cron upstream daily"
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 12 * * *'
|
||||
|
||||
jobs:
|
||||
adf-upstream-alpha-alfresco-aca:
|
||||
name: trigger upstream alpha for alfresco-content-app
|
||||
uses: ./.github/workflows/adf_alpha.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
repo_to_update: alfresco-content-app
|
||||
|
||||
adf-upstream-alpha-alfresco-apps:
|
||||
name: trigger upstream alpha for alfresco-applications
|
||||
uses: ./.github/workflows/adf_alpha.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
repo_to_update: alfresco-applications
|
||||
|
||||
adf-upstream-alpha-hxp:
|
||||
name: trigger upstream alpha for hxp monorepo
|
||||
uses: ./.github/workflows/adf_alpha.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
repo_to_update: alfresco-apps
|
||||
@@ -0,0 +1,16 @@
|
||||
name: pr-workflow
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "devops/*"
|
||||
|
||||
|
||||
jobs:
|
||||
|
||||
adf-upstream-alpha-hxp:
|
||||
name: trigger upstream alpha for hxp monorepo
|
||||
uses: ./.github/workflows/adf_alpha.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
repo_to_update: alfresco-apps
|
||||
@@ -0,0 +1,111 @@
|
||||
name: "git-tag"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
dry-run-release:
|
||||
description: 'enable dry-run on artifact push'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- master-patch-*
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
HEAD_REF: ${{ github.head_ref }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: "http://localhost:4200"
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
SMART_RUNNER_PATH: ".protractor-smartrunner"
|
||||
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
|
||||
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
|
||||
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||
REPO_OWNER: "Alfresco"
|
||||
REPO_NAME: "alfresco-ng2-components"
|
||||
DEMO_SHELL_DIR: "./dist/demo-shell"
|
||||
STORYBOOK_DIR: "./dist/storybook/stories"
|
||||
BUILT_LIBS_DIR: "./dist/libs"
|
||||
NODE_MODULES_DIR: "./node_modules"
|
||||
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
|
||||
SAVE_SCREENSHOT: true
|
||||
REDIRECT_URI: /
|
||||
BROWSER_RUN: false
|
||||
MAXINSTANCES: 2
|
||||
PLAYWRIGHT_WORKERS: 2
|
||||
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
|
||||
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
|
||||
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
|
||||
|
||||
jobs:
|
||||
|
||||
release:
|
||||
uses: ./.github/workflows/release.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
dry-run-release: false
|
||||
|
||||
setup:
|
||||
needs: release
|
||||
timeout-minutes: 20
|
||||
name: "Release tag"
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
GITHUB_TOKEN: $GH_TOKEN
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- id: set-dryrun
|
||||
uses: ./.github/actions/enable-dryrun
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-release }}
|
||||
- name: install NPM
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14
|
||||
- name: "Release tag"
|
||||
run: |
|
||||
git fetch --all --quiet
|
||||
BRANCH=${GITHUB_REF##*/} ./scripts/github/release/git-tag.sh ${{ steps.set-dryrun.outputs.dryrun }}
|
||||
|
||||
@@ -0,0 +1,413 @@
|
||||
name: "pull-request"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
dry-run-release:
|
||||
description: 'enable dry-run on artifact push'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
devel:
|
||||
description: 'devel'
|
||||
required: false
|
||||
type: string
|
||||
default: false
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
branches:
|
||||
- develop
|
||||
- master
|
||||
- develop-patch*
|
||||
- master-patch*
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
HEAD_REF: ${{ github.head_ref }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: "http://localhost:4200"
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
SMART_RUNNER_PATH: ".protractor-smartrunner"
|
||||
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
|
||||
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
REPO_OWNER: "Alfresco"
|
||||
REPO_NAME: "alfresco-ng2-components"
|
||||
DEMO_SHELL_DIR: "./dist/demo-shell"
|
||||
STORYBOOK_DIR: "./dist/storybook/stories"
|
||||
BUILT_LIBS_DIR: "./dist/libs"
|
||||
NODE_MODULES_DIR: "./node_modules"
|
||||
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
|
||||
SAVE_SCREENSHOT: true
|
||||
REDIRECT_URI: /
|
||||
BROWSER_RUN: false
|
||||
MAXINSTANCES: 2
|
||||
PLAYWRIGHT_WORKERS: 2
|
||||
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
|
||||
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
|
||||
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
|
||||
|
||||
|
||||
|
||||
jobs:
|
||||
check-package-lock:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Check package-lock.json version
|
||||
run: |
|
||||
if [[ $(jq '.lockfileVersion == 2' package-lock.json) == "true" ]] ; then
|
||||
echo -e "\033[31mpackage-lock must be version 1\033[0m"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\033[32mpackage-lock.json has a correct version\033[0m"
|
||||
fi
|
||||
|
||||
check-if-pr-is-approved:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Check if PR is approved
|
||||
id: action
|
||||
if: ${{ github.event_name != 'schedule' }}
|
||||
uses: kamatama41/get-pr-number-action@5c77b38a1b4974ebf8a9521a689f38a5898eadd6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: check if pr is approved
|
||||
env:
|
||||
DEVEL_FLAG: ${{ inputs.devel }}
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
skip_check: "false"
|
||||
run: |
|
||||
if [ "${{ github.actor }}" == "dependabot[bot]" ] || [ "${{ github.actor }}" == "alfresco-build" ]; then
|
||||
echo -e "\033[32mCommit by ${{ github.actor }}. No need for approval.\033[0m"
|
||||
skip_check="true"
|
||||
fi
|
||||
|
||||
if [ "${{ github.event_name }}" == "schedule" ]; then
|
||||
echo -e "\033[32mSchedule event\033[0m"
|
||||
skip_check="true"
|
||||
fi
|
||||
|
||||
if [[ "$DEVEL_FLAG" == "true" ]]; then
|
||||
echo -e "\033[32mDevel flag\033[0m"
|
||||
skip_check="true"
|
||||
fi
|
||||
|
||||
if [ "$skip_check" == "false" ]; then
|
||||
echo "Checking PR approval"
|
||||
prNumber=${{ steps.action.outputs.number }}
|
||||
checkApproval=$(gh api /repos/Alfresco/alfresco-ng2-components/pulls/$prNumber/reviews | jq '.[] | select(.state == "APPROVED") | .user.login')
|
||||
if [[ $checkApproval ]]; then
|
||||
echo -e "\033[32mPR approved\033[0m"
|
||||
else
|
||||
echo -e "\033[31mPR NOT approved\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
setup:
|
||||
# long timeout required when cache has to be recreated
|
||||
timeout-minutes: 30
|
||||
name: "Setup"
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [check-if-pr-is-approved, check-package-lock]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all tags and branches
|
||||
- uses: ./.github/actions/setup
|
||||
- name: install
|
||||
run: |
|
||||
npm ci
|
||||
nx run cli:bundle
|
||||
nx run testing:bundle
|
||||
- run: nx print-affected $NX_CALCULATION_FLAGS
|
||||
- uses: ./.github/actions/upload-node-modules-and-artifacts
|
||||
|
||||
unit-tests:
|
||||
timeout-minutes: 30
|
||||
name: "Unit tests: ${{ matrix.unit-tests.name }}"
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [setup]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
# max-parallel: 4
|
||||
matrix:
|
||||
unit-tests:
|
||||
- name: content-services
|
||||
exclude: "insights,core,extensions,process-services,process-services-cloud"
|
||||
- name: core
|
||||
exclude: "insights,content-services,process-services,process-services-cloud"
|
||||
- name: insights and process-services
|
||||
exclude: "core,extensions,content-services,process-services-cloud"
|
||||
- name: process-cloud
|
||||
exclude: "insights,core,extensions,content-services,process-services"
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all tags and branches
|
||||
- uses: ./.github/actions/setup
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: Run unit tests
|
||||
run: |
|
||||
/usr/bin/xvfb-run --auto-servernum nx affected:test $NX_CALCULATION_FLAGS --exclude=${{ matrix.unit-tests.exclude }}
|
||||
|
||||
lint:
|
||||
# long timeout required when cache has to be recreated
|
||||
timeout-minutes: 30
|
||||
name: "Lint"
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [setup]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all tags and branches
|
||||
- uses: ./.github/actions/setup
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- run: nx affected --target=lint $NX_CALCULATION_FLAGS
|
||||
|
||||
build-libs:
|
||||
# long timeout required when cache has to be recreated
|
||||
timeout-minutes: 30
|
||||
name: "Build libs"
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [setup]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all tags and branches
|
||||
- uses: ./.github/actions/setup
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- run: nx affected:build $NX_CALCULATION_FLAGS --prod
|
||||
- run: nx build demoshell --configuration production
|
||||
- run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci
|
||||
- uses: ./.github/actions/upload-node-modules-and-artifacts
|
||||
|
||||
e2e-storybook:
|
||||
timeout-minutes: 20
|
||||
name: "e2e: storybook"
|
||||
needs: [build-libs, lint, unit-tests]
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all
|
||||
- uses: ./.github/actions/setup
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: Process Cloud Storybook Playwright
|
||||
run: |
|
||||
npx playwright install chromium
|
||||
sudo sysctl -w fs.inotify.max_user_watches=524288
|
||||
npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1
|
||||
- uses: ./.github/actions/upload-node-modules-and-artifacts
|
||||
|
||||
e2e:
|
||||
timeout-minutes: 90
|
||||
name: "e2e: ${{ matrix.e2e-test.description }}"
|
||||
needs: [build-libs, lint, unit-tests]
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
# max-parallel: 4
|
||||
matrix:
|
||||
e2e-test:
|
||||
- description: "Core"
|
||||
test-id: "core"
|
||||
folder: "core"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
check-cs-env: "true"
|
||||
check-ps-env: "true"
|
||||
- description: "Content: Components"
|
||||
test-id: "content-services"
|
||||
folder: "content-services/components"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Content: Directives"
|
||||
test-id: "content-services"
|
||||
folder: "content-services/directives"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Content: Document List"
|
||||
test-id: "content-services"
|
||||
folder: "content-services/document-list"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Content: Metadata"
|
||||
test-id: "content-services"
|
||||
folder: "content-services/metadata"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Content: Upload and Versioning"
|
||||
test-id: "content-services"
|
||||
folder: "content-services/upload"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Search"
|
||||
test-id: "content-services"
|
||||
folder: "search"
|
||||
provider: "ECM"
|
||||
auth: "BASIC"
|
||||
check-cs-env: "true"
|
||||
- description: "Process: Form"
|
||||
test-id: "process-services"
|
||||
folder: "process-services/form"
|
||||
provider: "BPM"
|
||||
auth: "OAUTH"
|
||||
check-ps-env: "true"
|
||||
check-external-cs-env: "true"
|
||||
- description: "Process: Process"
|
||||
test-id: "process-services"
|
||||
folder: "process-services/process"
|
||||
provider: "BPM"
|
||||
auth: "OAUTH"
|
||||
check-ps-env: "true"
|
||||
check-external-cs-env: "true"
|
||||
- description: "Process: Tasks"
|
||||
test-id: "process-services"
|
||||
folder: "process-services/tasks"
|
||||
provider: "BPM"
|
||||
auth: "OAUTH"
|
||||
check-ps-env: "true"
|
||||
check-external-cs-env: "true"
|
||||
- description: "Process: Widget"
|
||||
test-id: "process-services"
|
||||
folder: "process-services/widgets"
|
||||
provider: "BPM"
|
||||
auth: "OAUTH"
|
||||
check-ps-env: "true"
|
||||
check-external-cs-env: "true"
|
||||
- description: "Process Cloud: Form"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/form-field"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
- description: "Process Cloud: People"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/people"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
- description: "Process Cloud: Process"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/process"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
- description: "Process Cloud: Start Task"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/start-task"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
- description: "Process Cloud: Tasks List"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/task-list"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # Fetch all history for all
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: "true"
|
||||
enable-node-modules-cache: "true"
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: setup chrome
|
||||
uses: ./.github/actions/setup-chrome
|
||||
- name: e2e
|
||||
uses: ./.github/actions/e2e
|
||||
with:
|
||||
e2e-test-id: ${{ matrix.e2e-test.test-id }}
|
||||
e2e-test-folder: ${{ matrix.e2e-test.folder }}
|
||||
e2e-test-provider: ${{ matrix.e2e-test.provider }}
|
||||
e2e-test-auth: ${{ matrix.e2e-test.auth }}
|
||||
check-cs-env: ${{ matrix.e2e-test.check-cs-env }}
|
||||
check-ps-env: ${{ matrix.e2e-test.check-ps-env }}
|
||||
check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }}
|
||||
check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }}
|
||||
apa-proxy: ${{ matrix.e2e-test.apa-proxy }}
|
||||
|
||||
finalize:
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
name: Final Results
|
||||
needs: [check-if-pr-is-approved, check-package-lock, unit-tests, build-libs, e2e, e2e-storybook]
|
||||
steps:
|
||||
- name: workflow failure
|
||||
run: exit 1
|
||||
if: ${{ contains(needs.*.result, 'failure') }}
|
||||
- name: workflow canceled
|
||||
run: exit 1
|
||||
if: ${{ contains(needs.*.result, 'cancelled') }}
|
||||
- name: workflow success
|
||||
run: exit 0
|
||||
if: ${{ contains(needs.*.result, 'success') }}
|
||||
@@ -1,4 +1,4 @@
|
||||
on:
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
name: Automatic Rebase
|
||||
@@ -9,10 +9,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@1.3.1
|
||||
uses: cirrus-actions/rebase@1.8
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
name: "release"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
dry-run-release:
|
||||
description: 'enable dry-run on artifact push'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
pull_request:
|
||||
types: [closed]
|
||||
branches:
|
||||
- develop
|
||||
- master
|
||||
- develop-patch*
|
||||
- master-patch*
|
||||
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
HEAD_REF: ${{ github.head_ref }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
#USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: "http://localhost:4200"
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
SMART_RUNNER_PATH: ".protractor-smartrunner"
|
||||
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
|
||||
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||
REPO_OWNER: "Alfresco"
|
||||
REPO_NAME: "alfresco-ng2-components"
|
||||
DEMO_SHELL_DIR: "./dist/demo-shell"
|
||||
STORYBOOK_DIR: "./dist/storybook/stories"
|
||||
BUILT_LIBS_DIR: "./dist/libs"
|
||||
NODE_MODULES_DIR: "./node_modules"
|
||||
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
|
||||
SAVE_SCREENSHOT: true
|
||||
REDIRECT_URI: /
|
||||
BROWSER_RUN: false
|
||||
MAXINSTANCES: 2
|
||||
PLAYWRIGHT_WORKERS: 2
|
||||
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
|
||||
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
|
||||
|
||||
jobs:
|
||||
setup:
|
||||
timeout-minutes: 20
|
||||
if: github.event.pull_request.merged || ${{ inputs.dry-run-release }}
|
||||
name: "Setup"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
- name: install
|
||||
run: |
|
||||
npm ci
|
||||
nx run cli:bundle
|
||||
nx run testing:bundle
|
||||
- uses: ./.github/actions/upload-node-modules-and-artifacts
|
||||
|
||||
release-demoshell:
|
||||
needs: [setup]
|
||||
timeout-minutes: 15
|
||||
if: github.event.pull_request.merged || ${{ inputs.dry-run-release }}
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- run: git fetch --all
|
||||
- id: set-dryrun
|
||||
uses: ./.github/actions/enable-dryrun
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-release }}
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: release Demoshell docker
|
||||
run: |
|
||||
nx build demoshell --configuration production
|
||||
. ./scripts/github/release/docker-tag.sh
|
||||
./scripts/github/release/release-demoshell-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
|
||||
|
||||
release-storybook:
|
||||
needs: [setup]
|
||||
timeout-minutes: 15
|
||||
if: github.event.pull_request.merged || ${{ inputs.dry-run-release }}
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- run: git fetch --all
|
||||
- id: set-dryrun
|
||||
uses: ./.github/actions/enable-dryrun
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-release }}
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
act: ${{ inputs.dry-run-release }}
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: release Storybook docker
|
||||
run: |
|
||||
nx run stories:build-storybook --configuration ci
|
||||
. ./scripts/github/release/docker-tag.sh
|
||||
./scripts/github/release/release-storybook-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
|
||||
|
||||
release-npm:
|
||||
needs: [setup]
|
||||
timeout-minutes: 15
|
||||
if: github.event.pull_request.merged == true || ${{ inputs.dry-run-release }}
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
- id: set-dryrun
|
||||
uses: ./.github/actions/enable-dryrun
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-release }}
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: check PR number
|
||||
id: action
|
||||
uses: kamatama41/get-pr-number-action@v0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: save PR number
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "PR_NUMBER=${{ steps.action.outputs.number }}" >> $GITHUB_ENV
|
||||
- name: build libraries
|
||||
run: |
|
||||
set -u;
|
||||
./scripts/github/build/bumpversion.sh
|
||||
nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" --skip-nx-cache
|
||||
nx affected $NX_CALCULATION_FLAGS --target=pretheme
|
||||
- uses: actions/setup-node@v3
|
||||
name: release libraries GH registry
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: 'https://npm.pkg.github.com'
|
||||
scope: '@alfresco'
|
||||
- run: nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=$TAG_NPM || exit 1
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: actions/setup-node@v3
|
||||
name: release libraries Npm registry
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}'
|
||||
scope: '@alfresco'
|
||||
- run: nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=$TAG_NPM || exit 1
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
|
||||
|
||||
npm-check-bundle:
|
||||
needs: [release-npm]
|
||||
timeout-minutes: 15
|
||||
if: github.event.pull_request.merged == true || ${{ inputs.dry-run-release }}
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- uses: ./.github/actions/npm-check-bundle
|
||||
@@ -1,20 +0,0 @@
|
||||
pull_request_rules:
|
||||
- name: automatic merge for Dependabot pull requests
|
||||
conditions:
|
||||
- author=dependabot-preview[bot]
|
||||
- status-success=continuous-integration/travis-ci/pr
|
||||
- status-success=security/snyk - package.json (eromano (GitHub marketplace))
|
||||
actions:
|
||||
merge:
|
||||
method: merge
|
||||
- name: merge when all requested reviews are valid
|
||||
conditions:
|
||||
- status-success=continuous-integration/travis-ci/pr
|
||||
- status-success=security/snyk - package.json (eromano (GitHub marketplace))
|
||||
- '#approved-reviews-by>=1'
|
||||
- '#changes-requested-reviews-by=0'
|
||||
- '#commented-reviews-by=0'
|
||||
- label!="do not merge"
|
||||
actions:
|
||||
merge:
|
||||
method: merge
|
||||
-622
@@ -1,622 +0,0 @@
|
||||
import:
|
||||
- source: Alfresco/alfresco-build-tools:.travis.docker_hub_login.yml@v1.1.1
|
||||
|
||||
git:
|
||||
depth: false
|
||||
quiet: true
|
||||
|
||||
language: node_js
|
||||
arch: arm64-graviton2
|
||||
dist: bionic
|
||||
node_js:
|
||||
- '14'
|
||||
|
||||
before_install: . ./scripts/ci/job_hooks/before_install.sh
|
||||
install: ./scripts/ci/job_hooks/install.sh
|
||||
|
||||
env:
|
||||
global:
|
||||
# REPOSITORY
|
||||
- REPO_OWNER="Alfresco"
|
||||
- REPO_NAME="alfresco-ng2-components"
|
||||
|
||||
- S3_DBP_PATH="s3://alfresco-travis-builds/adf"
|
||||
- DEMO_SHELL_DIR="./dist/demo-shell"
|
||||
- STORYBOOK_DIR="./dist/storybook/stories"
|
||||
- BUILT_LIBS_DIR="./dist/libs"
|
||||
- NODE_MODULES_DIR="./node_modules"
|
||||
- SMART_RUNNER_DIRECTORY=".protractor-smartrunner"
|
||||
#E2E VARIABLES
|
||||
- SAVE_SCREENSHOT=true
|
||||
- REDIRECT_URI=/
|
||||
- BROWSER_RUN=false
|
||||
- MAXINSTANCES=2
|
||||
- PROXY_HOST_ECM=$E2E_HOST
|
||||
- PROXY_HOST_BPM=$E2E_HOST
|
||||
- HOST_SSO=$HOST_SSO
|
||||
- USERNAME_ADF=$E2E_USERNAME
|
||||
- PASSWORD_ADF=$E2E_PASSWORD
|
||||
- IDENTITY_ADMIN_EMAIL=$E2E_ADMIN_EMAIL_IDENTITY
|
||||
- IDENTITY_ADMIN_PASSWORD=$E2E_ADMIN_PASSWORD_IDENTITY
|
||||
- URL_HOST_ADF="http://localhost:4200"
|
||||
#PLAYWRIGHT VARIABLES
|
||||
- PLAYWRIGHT_WORKERS=2
|
||||
- PLAYWRIGHT_STORYBOOK_E2E_HOST=http://localhost
|
||||
- PLAYWRIGHT_STORYBOOK_E2E_PORT=4400
|
||||
|
||||
branches:
|
||||
only:
|
||||
- /^master(-patch.*)?$/
|
||||
- /^develop(-patch.*)?$/
|
||||
- master
|
||||
- develop
|
||||
- /.*old-env.*/
|
||||
- /.*next-release.*/
|
||||
- /.*beta.*/
|
||||
|
||||
stages:
|
||||
- name: Prerequisite
|
||||
- name: Setup
|
||||
- name: "Build"
|
||||
if: tag IS blank AND (type = pull_request OR type = cron OR type = api)
|
||||
- name: "Trigger Alpha ADF child build"
|
||||
if: type = cron OR (type = api AND commit_message =~ /\[trigger adf\]/)
|
||||
- name: "Release"
|
||||
if: type = push
|
||||
- name: "Unit test Lib"
|
||||
if: type = pull_request OR type = cron OR type = api
|
||||
- name: "e2e Test"
|
||||
if: type = pull_request OR type = cron OR type = api
|
||||
- name: "Release tag"
|
||||
if: branch =~ /^master(-patch.*)?$/
|
||||
- name: "Check bundle"
|
||||
if: type = push AND tag IS blank OR (type = cron || type = api)
|
||||
- name: "Deprecate develop builds"
|
||||
if: branch =~ /^master(-patch.*)?$/
|
||||
|
||||
addons:
|
||||
chrome: stable
|
||||
before_script:
|
||||
- export GIT_HASH=`git rev-parse HEAD`
|
||||
services:
|
||||
- xvfb
|
||||
|
||||
jobs:
|
||||
include:
|
||||
# Big Bang ===================
|
||||
- stage: Prerequisite
|
||||
name: "Before anything unnece$$ary happens..."
|
||||
if: type == pull_request
|
||||
language: python
|
||||
python: 3.8
|
||||
install: echo "no install here"
|
||||
script: ./scripts/ci/jobs/dbpci-build-guard-check $TRAVIS_PULL_REQUEST || exit 1
|
||||
|
||||
# Setup ======================
|
||||
- stage: Setup
|
||||
name: "Node modules cache preparation"
|
||||
script: echo "Only here for setting up the shared node_modules"
|
||||
workspaces:
|
||||
create:
|
||||
name: node_modules_cache
|
||||
paths:
|
||||
- "$NODE_MODULES_DIR"
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Build"
|
||||
name: "Lib::Build"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell"
|
||||
|
||||
workspaces:
|
||||
create:
|
||||
name: built_libs_cache
|
||||
paths:
|
||||
- "$BUILT_LIBS_DIR"
|
||||
- "$NODE_MODULES_DIR"
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Build"
|
||||
name: "Lint"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:lint $NX_CALCULATION_FLAGS --parallel=5
|
||||
workspaces:
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Build"
|
||||
name: "Demo Shell::Build"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx build demoshell --configuration production
|
||||
workspaces:
|
||||
create:
|
||||
name: built_demo_shell_cache
|
||||
paths:
|
||||
- "$DEMO_SHELL_DIR"
|
||||
use:
|
||||
- node_modules_cache
|
||||
|
||||
- stage: "Build"
|
||||
name: "Storybook::Build"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx run stories:build-storybook --configuration ci
|
||||
workspaces:
|
||||
create:
|
||||
name: built_storybook_cache
|
||||
paths:
|
||||
- "$STORYBOOK_DIR"
|
||||
use:
|
||||
- node_modules_cache
|
||||
|
||||
- stage: "Unit test Lib"
|
||||
name: "content::unit"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,core,extensions,process-services,process-services-cloud"
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
- stage: "Unit test Lib"
|
||||
name: "core-extension::unit"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,content-services,process-services,process-services-cloud"
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
- stage: "Unit test Lib"
|
||||
name: "process-insights::unit"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="core,extensions,content-services,process-services-cloud"
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
- stage: "Unit test Lib"
|
||||
name: "process-cloud::unit"
|
||||
install: echo "no install"
|
||||
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,core,extensions,content-services,process-services"
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
- stage: "Trigger Alpha ADF child build"
|
||||
name: "Trigger Alpha ADF child build"
|
||||
script: ./scripts/travis/update/update-project.sh -p $TRAVIS_BUILD_NUMBER -t $GITHUB_TOKEN -v alpha -c $TRAVIS_COMMIT
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
- stage: "Release"
|
||||
name: "release libs::npm"
|
||||
install: echo "no install"
|
||||
script:
|
||||
- ./scripts/travis/build/bumpversion.sh || travis_terminate 1
|
||||
- $(npm bin)/nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" || travis_terminate 1
|
||||
- $(npm bin)/nx affected $NX_CALCULATION_FLAGS --target=pretheme || travis_terminate 1
|
||||
- ./scripts/travis/release/release-npm.sh || travis_terminate 1
|
||||
workspaces:
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Release"
|
||||
name: "release demoshell::docker"
|
||||
install: echo "no install"
|
||||
script:
|
||||
- $(npm bin)/nx build demoshell --configuration production || travis_terminate 1
|
||||
- . ./scripts/travis/release/docker-tag.sh || travis_terminate 1
|
||||
- ./scripts/travis/release/release-demoshell-docker.sh
|
||||
workspaces:
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Release"
|
||||
name: "release storybook::docker"
|
||||
install: echo "no install"
|
||||
script:
|
||||
- $(npm bin)/nx run stories:build-storybook --configuration ci || travis_terminate 1
|
||||
- . ./scripts/travis/release/docker-tag.sh || travis_terminate 1
|
||||
- ./scripts/travis/release/release-storybook-docker.sh || travis_terminate 1
|
||||
workspaces:
|
||||
use: node_modules_cache
|
||||
|
||||
- stage: "Release tag"
|
||||
script: ./scripts/travis/release/git-tag.sh
|
||||
|
||||
- stage: "Deprecate develop builds"
|
||||
script:
|
||||
- ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
|
||||
- ./scripts/travis/release/deprecate-develop-build.sh -v ${ADF_VERSION}
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud: Storybook Playwright"
|
||||
install: echo "no install"
|
||||
before_script: ./scripts/ci/jobs/dbpci-before-playwright
|
||||
script: ./scripts/travis/storybook-testing/storybook-test.sh
|
||||
workspaces:
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Core"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "core"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="core"
|
||||
- PROVIDER='ALL'
|
||||
- AUTH_TYPE='OAUTH'
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Content: Components"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="content-services/components"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Content: Directives"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="content-services/directives"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Content: Document List"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="content-services/document-list"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Content: Metadata"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="content-services/metadata"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Content: Upload and Versioning"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services" "browser"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="content-services/upload"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Search"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "content-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="search"
|
||||
- PROVIDER="ECM"
|
||||
- AUTH_TYPE="BASIC"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process: Form"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services/form"
|
||||
- PROVIDER="BPM"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process: Process"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services/process"
|
||||
- PROVIDER="BPM"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process: Tasks"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services/tasks"
|
||||
- PROVIDER="BPM"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process: Widgets"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services/widgets"
|
||||
- PROVIDER="BPM"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud : Form"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services-cloud/form-field"
|
||||
- PROVIDER="ALL"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
- PROXY_HOST_BPM=$E2E_HOST_APA
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud : People"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services-cloud/people"
|
||||
- PROVIDER="ALL"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
- PROXY_HOST_BPM=$E2E_HOST_APA
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud : Process"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services-cloud/process"
|
||||
- PROVIDER="ALL"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
- PROXY_HOST_BPM=$E2E_HOST_APA
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud : Start Task"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services-cloud/start-task"
|
||||
- PROVIDER="ALL"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
- PROXY_HOST_BPM=$E2E_HOST_APA
|
||||
|
||||
- stage: "e2e Test"
|
||||
name: "Process Cloud : Tasks List"
|
||||
install: echo "no install"
|
||||
before_script:
|
||||
- ./scripts/ci/job_hooks/before_e2e.sh
|
||||
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
|
||||
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
|
||||
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
|
||||
after_script: ./scripts/ci/job_hooks/after_e2e.sh
|
||||
workspaces:
|
||||
create:
|
||||
name: e2e_cache
|
||||
paths:
|
||||
- "$SMART_RUNNER_DIRECTORY"
|
||||
use:
|
||||
- built_libs_cache
|
||||
- built_demo_shell_cache
|
||||
- e2e_cache
|
||||
env:
|
||||
- FOLDER="process-services-cloud/task-list"
|
||||
- PROVIDER="ALL"
|
||||
- AUTH_TYPE="OAUTH"
|
||||
- PROXY_HOST_BPM=$E2E_HOST_APA
|
||||
|
||||
- stage: Check bundle
|
||||
install: echo "no install"
|
||||
script:
|
||||
- ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
|
||||
- ./scripts/travis/build/npm-check-bundles.sh -v ${ADF_VERSION}
|
||||
workspaces:
|
||||
use: built_libs_cache
|
||||
|
||||
notifications:
|
||||
slack:
|
||||
on_pull_requests: false
|
||||
rooms:
|
||||
secure: "qcTP/+rhVweMSZZAQMPz4sW7boS8XC0RX1SPYgg7hIfxBr9747WpRLkJ1sirkVaXI/6XfYAyl42CTfPmTuJxIC+co/NSnEDknwVsnKZd0O/ykTpo+mxIN4BTZX8dm+gELR5IEYQPs+Yki3ZnD9b+0mCK1yD8JallKCQeE2U9BhzZhP/Fn0ce35EulybNp3QQDaox0XC+7gadMdxlvK8mzP1scw76wRLtx25QLxxV+OwEw0bzyh8y3onfjHfnoDcUQWRTNdnjapzmgf1LNdC202A5kwp5sJggfSDr+ActRqaMvv4BbMsFpdan34B6zPQJfyZL1r8IB8O8BEKcAaOUVcTjnZAOom8kHS8F07/mo5xnNYmV8oNX2/egr1CiG4U0EAGF2XGqM+vetYnF88LTEzy84kVxmSwKGVfzlGOyTplMXJ1iCENndtfWm1AXhAFj5RSsSAZg6IStTM+mcpnC75moEwQtj8bTenwehHz1HQAjQX7xeTQo27SxDc7oqp1ReyXCllMjKxckjVGmp2j6yxn1Jl55kivBj57vluLtEtziOGluVELP5E2fV0VAuErNhnjLm4LJARVN76PQaTOXYwATVVJJDhb/77TesvxQsr3VfiROEKm7QB7IDFjghjLLisSX67JQ5+7K/qMlqf9+9hNw4n0v1eMylVjt+gyxspc="
|
||||
on_failure: always
|
||||
on_success: change
|
||||
template:
|
||||
- "Repo `%{repository_slug}` *%{result}* build (<%{build_url}|#%{build_number}>) for commit (<%{compare_url}|%{commit}>) on branch `%{branch}`."
|
||||
- "Author: %{author} Execution time: *%{duration}*"
|
||||
- "Message: %{message}"
|
||||
|
||||
cache:
|
||||
npm: false
|
||||
directories:
|
||||
- tmp
|
||||
Vendored
+1
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"lucono.karma-test-explorer"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
| branch | status |
|
||||
| --- | --- |
|
||||
| master | [](https://travis-ci.com/Alfresco/alfresco-ng2-components) |
|
||||
| develop | [](https://travis-ci.com/Alfresco/alfresco-ng2-components) |
|
||||
| master | [](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/git-tag.yml) |
|
||||
| develop | [](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/cron.yml)|
|
||||
|
||||
[](https://www.codacy.com/app/Alfresco/alfresco-ng2-components?utm_source=github.com&utm_medium=referral&utm_content=Alfresco/alfresco-ng2-components&utm_campaign=badger)
|
||||
[](https://gitter.im/Alfresco/alfresco-ng2-components?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
@@ -39,8 +39,8 @@ ADF Libraries list:
|
||||
- [Insights](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/insights)
|
||||
- [Process Service Cloud](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services-cloud)
|
||||
- [Process service](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services)
|
||||
- [Stories](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/stories)
|
||||
|
||||
- [Stories](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/stories)
|
||||
|
||||
## Demo Application
|
||||
|
||||
A separate application showcasing integration of components can be found
|
||||
@@ -49,7 +49,7 @@ The app has examples of basic interaction for both APS and ACS components.
|
||||
|
||||
## Yeoman generators
|
||||
|
||||
To speed up the development of your ADF application, use the
|
||||
To speed up the development of your ADF application, use the
|
||||
[Yeoman Generator](https://github.com/Alfresco/generator-ng2-alfresco-app).
|
||||
This will create a full working project with all the right libraries and tools.
|
||||
|
||||
@@ -69,6 +69,6 @@ All components are supported in the following browsers:
|
||||
|Edge |13, 14 |
|
||||
|Internet Explorer |11 |
|
||||
|
||||
* Due to a [known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880) in Firefox, the Alfresco Upload Component does not currently support folder upload functionality on Firefox.
|
||||
* Due to a [known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880) in Firefox, the Alfresco Upload Component does not currently support folder upload functionality on Firefox.
|
||||
|
||||
See the [Browser Support](BROWSER-SUPPORT.md) article for more details.
|
||||
|
||||
+175
-17
@@ -167,7 +167,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
],
|
||||
"scripts": [
|
||||
"node_modules/pdfjs-dist/build/pdf.js",
|
||||
@@ -204,6 +205,14 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"canary": {
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "demo-shell/src/environments/environment.ts",
|
||||
"with": "demo-shell/src/environments/environment.canary.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"e2e": {
|
||||
"budgets": [
|
||||
{
|
||||
@@ -241,6 +250,9 @@
|
||||
"production": {
|
||||
"browserTarget": "demoshell:build:production"
|
||||
},
|
||||
"canary": {
|
||||
"browserTarget": "demoshell:build:canary"
|
||||
},
|
||||
"e2e": {
|
||||
"browserTarget": "demoshell:build:e2e"
|
||||
}
|
||||
@@ -357,7 +369,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -378,7 +391,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -422,10 +436,25 @@
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "$(npm bin)/webpack -- --config ./lib/config/webpack.style.js --progress --profile --bail && rm ./dist/libs/core/lib/prebuilt-themes/*.js"
|
||||
"command": "$(npm bin)/webpack -- --config ./lib/config/webpack.style.js --progress --profile --bail"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/core",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -446,7 +475,8 @@
|
||||
"project": "lib/content-services/ng-package.json",
|
||||
"tsConfig": "lib/content-services/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
@@ -478,7 +508,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -499,7 +530,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -527,6 +559,21 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/content-services",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -547,7 +594,8 @@
|
||||
"project": "lib/process-services/ng-package.json",
|
||||
"tsConfig": "lib/process-services/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
@@ -596,6 +644,21 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/process-services",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -616,7 +679,8 @@
|
||||
"project": "lib/process-services-cloud/ng-package.json",
|
||||
"tsConfig": "lib/process-services-cloud/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
@@ -648,7 +712,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -669,7 +734,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -678,6 +744,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"e2e-playwright": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "$(npm bin)/playwright test --config='e2e-playwright/playwright.config.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -697,6 +774,21 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/process-services-cloud",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -717,7 +809,8 @@
|
||||
"project": "lib/insights/ng-package.json",
|
||||
"tsConfig": "lib/insights/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
@@ -756,6 +849,21 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/insights",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -775,7 +883,8 @@
|
||||
"production": {
|
||||
"tsConfig": "lib/extensions/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
@@ -805,6 +914,21 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/extensions",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -837,7 +961,8 @@
|
||||
"generatePackageJson" : true,
|
||||
"tsConfig": "lib/testing/tsconfig.lib.prod.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@nrwl/linter:eslint",
|
||||
@@ -876,6 +1001,21 @@
|
||||
"target": "build"
|
||||
}
|
||||
]
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/testing",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -896,7 +1036,8 @@
|
||||
"production": {
|
||||
"tsConfig": "lib/cli/tsconfig.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"bundle": {
|
||||
"executor": "nx:run-commands",
|
||||
@@ -935,6 +1076,21 @@
|
||||
"lib/cli/**/*.html"
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
"executor": "nx:run-commands",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "dist/libs/cli",
|
||||
"commands": [
|
||||
{
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -955,7 +1111,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
@@ -976,7 +1133,8 @@
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css"
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
},
|
||||
"configurations": {
|
||||
|
||||
+6
-2
@@ -27,6 +27,7 @@
|
||||
"CSRF",
|
||||
"datacolumn",
|
||||
"datarow",
|
||||
"Datasource",
|
||||
"datatable",
|
||||
"dateitem",
|
||||
"datepicker",
|
||||
@@ -62,9 +63,11 @@
|
||||
"highlightable",
|
||||
"hotfix",
|
||||
"imgpreview",
|
||||
"Inplace",
|
||||
"intitem",
|
||||
"jira",
|
||||
"jsons",
|
||||
"jwks",
|
||||
"keycodes",
|
||||
"keyvaluepairs",
|
||||
"keyvaluepairsitem",
|
||||
@@ -76,15 +79,15 @@
|
||||
"mincount",
|
||||
"minlength",
|
||||
"minmax",
|
||||
"jsons",
|
||||
"Inplace",
|
||||
"MLTEXT",
|
||||
"mousedrag",
|
||||
"mouseenter",
|
||||
"multiselect",
|
||||
"mysites",
|
||||
"nginx",
|
||||
"numbervisibilityprocess",
|
||||
"OAUTHCONFIG",
|
||||
"oidc",
|
||||
"pdfjs",
|
||||
"penta",
|
||||
"printf",
|
||||
@@ -121,6 +124,7 @@
|
||||
"uncheck",
|
||||
"Unclaim",
|
||||
"unfavorite",
|
||||
"unlisten",
|
||||
"unshare",
|
||||
"UPDATEPERMISSIONS",
|
||||
"uploader",
|
||||
|
||||
@@ -50,7 +50,7 @@ module.exports = function (config) {
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
browsers: ['ChromeHeadless'],
|
||||
singleRun: false
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Alfresco-ADF-Angular-Demo",
|
||||
"description": "Demo shell for Alfresco Angular components",
|
||||
"version": "5.1.0",
|
||||
"version": "6.0.0-A.3",
|
||||
"author": "Alfresco Software, Ltd.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "نوع المصادقة",
|
||||
"BASIC": "مصادقة أساسية",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "تدفق ضمني",
|
||||
"PROVIDER": "موفر",
|
||||
"REQUIRED": "هذا الحقل مطلوب",
|
||||
"CS_URL_ERROR": "لا يتطابق عنوان Content Services مع تنسيق URL",
|
||||
"PS_URL_ERROR": "لا يتطابق عنوان Process Services مع تنسيق URL",
|
||||
"TITLE": "الإعدادات",
|
||||
"CS-HOST": "عنوان URL لـ Content Services",
|
||||
"BP-HOST": "عنوان URL لـ Process Services",
|
||||
"BACK": "عودة",
|
||||
"APPLY": "تطبيق",
|
||||
"NOT_VALID": "لم يتم التعرف على http(s)://host|ip:port(/path)، جرّب عنوان URL مختلفًا.",
|
||||
"REDIRECT": "إعادة توجيه URI",
|
||||
"REDIRECT_LOGOUT": "إعادة توجيه خروج URI",
|
||||
"SILENT": "دخول صامت",
|
||||
"SCOPE": "نطاق",
|
||||
"CLIENT": "معرف العميل",
|
||||
"PUBLIC_URLS": "عناوين url العامة لتسجيل الدخول الصامت",
|
||||
"SECRET": "سر"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "وضع التطوير"
|
||||
},
|
||||
@@ -44,7 +67,7 @@
|
||||
"VERSION": {
|
||||
"NO_PERMISSION": "ليس لديك إذن لإدارة إصدارات هذا المحتوى",
|
||||
"NO_PERMISSION_EVENT": "ليس لديك إذن ${event.permission} ل${event.action} ${event.type}",
|
||||
"CHOOSE_FILE": "تحديد ملف لرؤية إصداراته",
|
||||
"CHOOSE_FILE": "حدد ملف لرؤية إصداراته",
|
||||
"DIALOG": {
|
||||
"CLOSE": "إغلاق",
|
||||
"TITLE": "إدارة الإصدارات"
|
||||
@@ -112,7 +135,7 @@
|
||||
"CONFIRM-DIALOG": "مربع حوار التأكيد",
|
||||
"COMMUNITY": "Community",
|
||||
"SERVICE_TASK_LIST": "قائمة مهام الخدمات",
|
||||
"RICH_TEXT_EDITOR": "افتح محرر النص المنسق"
|
||||
"RICH_TEXT_EDITOR": "محرر نص منسق"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
@@ -164,7 +187,7 @@
|
||||
"DELETE": "حذف",
|
||||
"FAVORITES": "إضافة إلى المفضلات",
|
||||
"SHARE": "مشاركة",
|
||||
"THEME": "تحديد نسق",
|
||||
"THEME": "حدد نسق",
|
||||
"SHOW_VERSION": "إظهار الإصدار",
|
||||
"HIDE_VERSION": "إخفاء الإصدار",
|
||||
"LISTVIEW": "وضع عرض القائمة",
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "نوع الإجراء"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "افتراضي"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "تم إنشاء زر مجلد جديد",
|
||||
"EDIT_NODE_LABEL": "زر تحرير العقدة",
|
||||
"DELETE_NODE_LABEL": "زر حذف أيقونة العقدة"
|
||||
},
|
||||
"DEFAULT_SEARCH": "افتراضي",
|
||||
"OPEN_DIALOG": "فتح الحوار",
|
||||
"SHOW_LIST_LABEL": "انقر لعرض القائمة"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Typ ověřování",
|
||||
"BASIC": "Základní ověřování",
|
||||
"SSO": "Jednotné přihlášení",
|
||||
"IMPLICIT-FLOW": "Implicitní tok",
|
||||
"PROVIDER": "Poskytovatel",
|
||||
"REQUIRED": "Toto pole je povinné",
|
||||
"CS_URL_ERROR": "Adresa Content Services neodpovídá formátu adresy URL",
|
||||
"PS_URL_ERROR": "Adresa Process Services neodpovídá formátu adresy URL",
|
||||
"TITLE": "Nastavení",
|
||||
"CS-HOST": "Adresa URL pro Content Services",
|
||||
"BP-HOST": "Adresa URL pro Process Services",
|
||||
"BACK": "Zpět",
|
||||
"APPLY": "Použít",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) nelze rozeznat. Použijte jinou adresu URL.",
|
||||
"REDIRECT": "URI pro přesměrování",
|
||||
"REDIRECT_LOGOUT": "URI pro přesměrování (odhlášení)",
|
||||
"SILENT": "Přihlášení na pozadí",
|
||||
"SCOPE": "Rozsah",
|
||||
"CLIENT": "ID klienta",
|
||||
"PUBLIC_URLS": "Veřejné adresy URL pro přihlášení na pozadí",
|
||||
"SECRET": "Tajné"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Režim pro vývojáře"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Typ akce"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Výchozí"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Vytvořit tlačítko pro novou složku",
|
||||
"EDIT_NODE_LABEL": "Upravit tlačítko uzlu",
|
||||
"DELETE_NODE_LABEL": "Odebrat tlačítko ikony uzlu"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Výchozí",
|
||||
"OPEN_DIALOG": "Otevřít dialogové okno",
|
||||
"SHOW_LIST_LABEL": "Na seznam pro zobrazení klikněte"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Godkendelsestype",
|
||||
"BASIC": "Grundlæggende godkendelse",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Implicit flow",
|
||||
"PROVIDER": "Udbyder",
|
||||
"REQUIRED": "Dette felt er påkrævet",
|
||||
"CS_URL_ERROR": "Content Services-adressen matcher ikke URL-formatet",
|
||||
"PS_URL_ERROR": "Process Services-adressen matcher ikke URL-adresseformatet",
|
||||
"TITLE": "Indstillinger",
|
||||
"CS-HOST": "Content Services-URL",
|
||||
"BP-HOST": "Process Services-URL",
|
||||
"BACK": "Tilbage",
|
||||
"APPLY": "Anvend",
|
||||
"NOT_VALID": "http(s)://vært|ip-adresse:port(/sti) blev ikke genkendt. Prøv en anden URL-adresse.",
|
||||
"REDIRECT": "URI til omdirigering",
|
||||
"REDIRECT_LOGOUT": "Omdiriger URI til aflogning",
|
||||
"SILENT": "Uovervåget login",
|
||||
"SCOPE": "Omfang",
|
||||
"CLIENT": "Klient-id",
|
||||
"PUBLIC_URLS": "Uovervåget login til offentlige URL-adresser",
|
||||
"SECRET": "Hemmelig"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Udv. model"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Handlingstype"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Knap Opret en ny mappe",
|
||||
"EDIT_NODE_LABEL": "Knap Redigér knude",
|
||||
"DELETE_NODE_LABEL": "Knap Slet knudeikon"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard",
|
||||
"OPEN_DIALOG": "Åbn dialog",
|
||||
"SHOW_LIST_LABEL": "Klik for at vise listen"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Authentifizierungstyp",
|
||||
"BASIC": "Basisauthentifizierung",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Impliziter Fluss",
|
||||
"PROVIDER": "Provider",
|
||||
"REQUIRED": "Dieses Feld ist erforderlich",
|
||||
"CS_URL_ERROR": "Content Services-Adresse nicht im richtigen URL-Format",
|
||||
"PS_URL_ERROR": "Process Services-Adresse nicht im richtigen URL-Format",
|
||||
"TITLE": "Einstellungen",
|
||||
"CS-HOST": "URL für Content Services",
|
||||
"BP-HOST": "URL für Process Services",
|
||||
"BACK": "Zurück",
|
||||
"APPLY": "Anwenden",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) nicht erkannt. Probieren Sie es mit einer anderen URL.",
|
||||
"REDIRECT": "Umleitungs-URI",
|
||||
"REDIRECT_LOGOUT": "Umleitungs-URI zum Abmelden",
|
||||
"SILENT": "Automatische Anmeldung",
|
||||
"SCOPE": "Bereich",
|
||||
"CLIENT": "Client-ID",
|
||||
"PUBLIC_URLS": "Öffentliche URLs für automatische Anmeldung",
|
||||
"SECRET": "Geheimnis"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Entwicklermodus"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Aktionstyp"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Schaltfläche für einen neuen Ordner erstellen",
|
||||
"EDIT_NODE_LABEL": "Schaltfläche Node bearbeiten",
|
||||
"DELETE_NODE_LABEL": "Schaltfläche für Node-Symbol löschen"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard",
|
||||
"OPEN_DIALOG": "Dialog öffnen",
|
||||
"SHOW_LIST_LABEL": "Klicken Sie, um die Liste anzuzeigen"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Authentication type",
|
||||
"BASIC": "Basic Authentication",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Implicit Flow",
|
||||
"PROVIDER": "Provider",
|
||||
"REQUIRED": "This field is required",
|
||||
"CS_URL_ERROR": "Content Services address doesn't match the URL format",
|
||||
"PS_URL_ERROR": "Process Services address doesn't match the URL format",
|
||||
"TITLE": "Settings",
|
||||
"CS-HOST": "Content Services URL",
|
||||
"BP-HOST": "Process Services URL",
|
||||
"BACK": "Back",
|
||||
"APPLY": "APPLY",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) not recognized, try a different URL.",
|
||||
"REDIRECT": "Redirect URI",
|
||||
"REDIRECT_LOGOUT": "Redirect URI Logout",
|
||||
"SILENT": "Silent Login",
|
||||
"SCOPE": "Scope",
|
||||
"CLIENT": "Client ID",
|
||||
"PUBLIC_URLS": "Public urls silent Login",
|
||||
"SECRET": "Secret"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT":"Dev Mode"
|
||||
},
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
"CONFIRM-DIALOG": "Cuadro de diálogo de confirmación",
|
||||
"COMMUNITY": "Community",
|
||||
"SERVICE_TASK_LIST": "Lista de tareas de servicio",
|
||||
"RICH_TEXT_EDITOR": "Abrir el editor de texto enriquecido"
|
||||
"RICH_TEXT_EDITOR": "Editor de texto enriquecido"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
@@ -358,5 +358,12 @@
|
||||
"ACTION_TYPE": "Tipo de acción"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Predeterminado"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Crear un nuevo botón de carpeta",
|
||||
"EDIT_NODE_LABEL": "Editar botón de nodo",
|
||||
"DELETE_NODE_LABEL": "Eliminar el botón del icono del nodo"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Predeterminado",
|
||||
"OPEN_DIALOG": "Abrir cuadro de diálogo",
|
||||
"SHOW_LIST_LABEL": "Hacer clic para mostrar la lista"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Todennustyyppi",
|
||||
"BASIC": "Perustodennus",
|
||||
"SSO": "Kertakirjautuminen",
|
||||
"IMPLICIT-FLOW": "Epäsuora kulku",
|
||||
"PROVIDER": "Palvelu",
|
||||
"REQUIRED": "Tämä kenttä on pakollinen",
|
||||
"CS_URL_ERROR": "Content Services -osoite ei täsmää URL-muodon kanssa",
|
||||
"PS_URL_ERROR": "Process Services -osoite ei täsmää URL-muodon kanssa",
|
||||
"TITLE": "Asetukset",
|
||||
"CS-HOST": "Content Servicesin URL-osoite",
|
||||
"BP-HOST": "Process Servicesin URL-osoite",
|
||||
"BACK": "Takaisin",
|
||||
"APPLY": "Käytä",
|
||||
"NOT_VALID": "Osoitetta http(s)://host|ip:port(/path) ei tunnisteta. Kokeile toista URL-osoitetta.",
|
||||
"REDIRECT": "Uudelleenohjauksen URI-osoite",
|
||||
"REDIRECT_LOGOUT": "Uudelleenohjauksen URI-osoite – uloskirjautuminen",
|
||||
"SILENT": "Hiljainen kirjautuminen",
|
||||
"SCOPE": "Laajuus",
|
||||
"CLIENT": "Asiakastunnus",
|
||||
"PUBLIC_URLS": "Yleisten url-osoitteiden hiljainen sisäänkirjaus",
|
||||
"SECRET": "Salainen"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Kehitystapa"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Toiminnon tyyppi"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Oletus"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Luo uusi kansio -painike",
|
||||
"EDIT_NODE_LABEL": "Muokkaa solmua -painike",
|
||||
"DELETE_NODE_LABEL": "Poista solmukuvake -painike"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Oletus",
|
||||
"OPEN_DIALOG": "Avaa valintaikkuna",
|
||||
"SHOW_LIST_LABEL": "Näytä luettelo napsauttamalla"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Type d'authentification",
|
||||
"BASIC": "Authentification de base",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Flux implicite",
|
||||
"PROVIDER": "Fournisseur",
|
||||
"REQUIRED": "Ce champ est obligatoire",
|
||||
"CS_URL_ERROR": "L'adresse Content Services ne correspond pas au format d'URL",
|
||||
"PS_URL_ERROR": "L'adresse Process Services ne correspond pas au format d'URL",
|
||||
"TITLE": "Paramètres",
|
||||
"CS-HOST": "URL de Content Services",
|
||||
"BP-HOST": "URL de Process Services",
|
||||
"BACK": "Retour",
|
||||
"APPLY": "Appliquer",
|
||||
"NOT_VALID": "Adresse http(s)://host|ip:port(/path) non reconnue, essayez une autre URL.",
|
||||
"REDIRECT": "URI de redirection",
|
||||
"REDIRECT_LOGOUT": "Déconnexion URI de redirection",
|
||||
"SILENT": "Connexion en mode silencieux",
|
||||
"SCOPE": "Etendue",
|
||||
"CLIENT": "ID client",
|
||||
"PUBLIC_URLS": "URL publiques pour connexion en mode silencieux",
|
||||
"SECRET": "Secret"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Mode développement"
|
||||
},
|
||||
@@ -83,7 +106,7 @@
|
||||
"FORM_LOADING": "Chargement du formulaire",
|
||||
"UPLOADER": "Chargeur",
|
||||
"WEBSCRIPT": "Script Web",
|
||||
"TAG": "Balise",
|
||||
"TAG": "Tag",
|
||||
"PIPES": "Tuyaux",
|
||||
"TRASHCAN": "Corbeille",
|
||||
"SOCIAL": "Réseaux sociaux",
|
||||
@@ -146,7 +169,7 @@
|
||||
"COLUMNS": {
|
||||
"DISPLAY_NAME": "Nom affiché",
|
||||
"IS_LOCKED": "Verrouiller",
|
||||
"TAG": "Balise",
|
||||
"TAG": "Tag",
|
||||
"NODE_ID": "ID du nœud",
|
||||
"CREATED_BY": "Créé par",
|
||||
"CREATED_ON": "Créé le",
|
||||
@@ -271,9 +294,9 @@
|
||||
"RATING": "Composant d'évaluation"
|
||||
},
|
||||
"TAG": {
|
||||
"LIST": "Liste de balises Content Services",
|
||||
"LIST": "Liste des tags Content Services",
|
||||
"INSERT": "Insérer l'ID du nœud",
|
||||
"NODE_LIST": "Liste de balises par ID de nœud"
|
||||
"NODE_LIST": "Liste des tags par ID de nœud"
|
||||
},
|
||||
"DEMO_PERMISSION": {
|
||||
"INHERIT_PERMISSION_BUTTON": "Hériter des droits d'accès",
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Type d'action"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Par défaut"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Bouton Créer un nouveau dossier",
|
||||
"EDIT_NODE_LABEL": "Bouton Modifier le nœud",
|
||||
"DELETE_NODE_LABEL": "Bouton Supprimer l'icône du nœud"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Par défaut",
|
||||
"OPEN_DIALOG": "Boîte de dialogue Ouvrir",
|
||||
"SHOW_LIST_LABEL": "Cliquer pour afficher la liste"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Tipo di autenticazione",
|
||||
"BASIC": "Autenticazione di base",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Flusso implicito",
|
||||
"PROVIDER": "Fornitore",
|
||||
"REQUIRED": "Questo campo è obbligatorio",
|
||||
"CS_URL_ERROR": "L'indirizzo Content Services non corrisponde al formato dell'URL",
|
||||
"PS_URL_ERROR": "L'indirizzo Process Services non corrisponde al formato dell'URL",
|
||||
"TITLE": "Impostazioni",
|
||||
"CS-HOST": "URL Content Services",
|
||||
"BP-HOST": "URL Process Services",
|
||||
"BACK": "Indietro",
|
||||
"APPLY": "Applica",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) non riconosciuto, provare un URL diverso.",
|
||||
"REDIRECT": "Reindirizza URI",
|
||||
"REDIRECT_LOGOUT": "Reindirizza logout URI",
|
||||
"SILENT": "Login invisibile",
|
||||
"SCOPE": "Ambito",
|
||||
"CLIENT": "ID client",
|
||||
"PUBLIC_URLS": "URL pubblici per login invisibile",
|
||||
"SECRET": "Segreto"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Modalità sviluppo"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Tipo di azione"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Predefinito"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Crea pulsante nuova cartella",
|
||||
"EDIT_NODE_LABEL": "Modifica pulsante nodo",
|
||||
"DELETE_NODE_LABEL": "Elimina icona nodo"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Predefinito",
|
||||
"OPEN_DIALOG": "Apri finestra di dialogo",
|
||||
"SHOW_LIST_LABEL": "Fai clic per mostrare l'elenco"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "認証タイプ",
|
||||
"BASIC": "基本認証",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "暗黙的フロー",
|
||||
"PROVIDER": "プロバイダ",
|
||||
"REQUIRED": "このフィールドは必須です",
|
||||
"CS_URL_ERROR": "Content Services のアドレスが URL 形式と一致しません",
|
||||
"PS_URL_ERROR": "Process Services のアドレスが URL 形式と一致しません",
|
||||
"TITLE": "設定",
|
||||
"CS-HOST": "Content Services の URL",
|
||||
"BP-HOST": "Process Services の URL",
|
||||
"BACK": "戻る",
|
||||
"APPLY": "適用",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) が認識されません。別の URL を指定してください。",
|
||||
"REDIRECT": "リダイレクト URI",
|
||||
"REDIRECT_LOGOUT": "リダイレクト URI のログアウト",
|
||||
"SILENT": "サイレントログイン",
|
||||
"SCOPE": "範囲",
|
||||
"CLIENT": "クライアント ID",
|
||||
"PUBLIC_URLS": "サイレントログインのパブリック URL",
|
||||
"SECRET": "シークレット"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "開発モード"
|
||||
},
|
||||
@@ -248,7 +271,7 @@
|
||||
"RESULTS": "検索結果",
|
||||
"NO_RESULT": "一致するアイテムはありません",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:種類",
|
||||
"TYPE": "1:タイプ",
|
||||
"SIZE": "2:サイズ",
|
||||
"CREATOR": "3:作成者",
|
||||
"MODIFIER": "4:変更者",
|
||||
@@ -257,7 +280,7 @@
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "あなたのファセットクエリ",
|
||||
"CREATED_THIS_YEAR": "1.今年作成",
|
||||
"MIMETYPE": "2.種類: HTML",
|
||||
"MIMETYPE": "2.タイプ: HTML",
|
||||
"XTRASMALL": "3.サイズ: 極小",
|
||||
"SMALL": "4.サイズ: 小",
|
||||
"MEDIUM": "5.サイズ: 中",
|
||||
@@ -293,7 +316,7 @@
|
||||
},
|
||||
"PROCESS_LIST_DEMO": {
|
||||
"ERROR_MESSAGE": {
|
||||
"APP_ID_REQUIRED_ERROR": "アプリケーション ID を挿入してください",
|
||||
"APP_ID_REQUIRED_ERROR": "アプリケーション ID を挿入する",
|
||||
"APP_ID_TYPE_ERROR": "アプリケーション ID は数字でなければなりません",
|
||||
"NUMBER_GREATER_THAN": "値は {{ value }} 以上でなければなりません"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "処理のタイプ"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "デフォルト"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "新しいフォルダボタンの作成",
|
||||
"EDIT_NODE_LABEL": "ノードボタンの編集",
|
||||
"DELETE_NODE_LABEL": "ノードアイコンボタンの削除"
|
||||
},
|
||||
"DEFAULT_SEARCH": "デフォルト",
|
||||
"OPEN_DIALOG": "ダイアログを開く",
|
||||
"SHOW_LIST_LABEL": "クリックしてリストを表示"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Godkjenningstype",
|
||||
"BASIC": "Grunnleggende godkjenning",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Implisitt flyt",
|
||||
"PROVIDER": "Leverandør",
|
||||
"REQUIRED": "Dette feltet er påkrevd",
|
||||
"CS_URL_ERROR": "Adressen til innholdstjenesten stemmer ikke med URL-formatet",
|
||||
"PS_URL_ERROR": "Adressen til prosesstjenestene stemmer ikke med URL-formatet",
|
||||
"TITLE": "Innstillinger",
|
||||
"CS-HOST": "URL tinnholdstjenester",
|
||||
"BP-HOST": "URL prosesstjenester",
|
||||
"BACK": "Tilbake",
|
||||
"APPLY": "Bruk",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) ikke gjenkjent, prøv en annen URL.",
|
||||
"REDIRECT": "Omdirigerings-URI",
|
||||
"REDIRECT_LOGOUT": "Omdirigerings-URI avlogging",
|
||||
"SILENT": "Stille pålogging",
|
||||
"SCOPE": "Område",
|
||||
"CLIENT": "Klient-ID",
|
||||
"PUBLIC_URLS": "Offentlige URL-er for stille pålogging",
|
||||
"SECRET": "Hemmelig"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Utvikl.modus"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Handlingstype"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Opprett en ny mappe-knapp",
|
||||
"EDIT_NODE_LABEL": "Rediger node-knapp",
|
||||
"DELETE_NODE_LABEL": "Slett nodeikon-knapp"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard",
|
||||
"OPEN_DIALOG": "Åpne dialog",
|
||||
"SHOW_LIST_LABEL": "Klikk for å vise listen"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Verificatietype",
|
||||
"BASIC": "Basisverificatie",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Impliciete stroom",
|
||||
"PROVIDER": "Provider",
|
||||
"REQUIRED": "Dit veld is vereist",
|
||||
"CS_URL_ERROR": "Content Services-adres komt niet overeen met de URL-indeling",
|
||||
"PS_URL_ERROR": "Process Services-adres komt niet overeen met de URL-indeling",
|
||||
"TITLE": "Instellingen",
|
||||
"CS-HOST": "Content Services-URL",
|
||||
"BP-HOST": "Process Services-URL",
|
||||
"BACK": "Terug",
|
||||
"APPLY": "Toepassen",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) niet herkend, probeer een andere URL.",
|
||||
"REDIRECT": "Omleidings-URI",
|
||||
"REDIRECT_LOGOUT": "Omleidings-URI afmelden",
|
||||
"SILENT": "Stille aanmelding",
|
||||
"SCOPE": "Bereik",
|
||||
"CLIENT": "Client-id",
|
||||
"PUBLIC_URLS": "Openbare URL's voor stille aanmelding",
|
||||
"SECRET": "Geheim"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Ontwikkelaarsmodus"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Actietype"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standaard"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Knop Nieuwe map maken",
|
||||
"EDIT_NODE_LABEL": "Knop Node bewerken",
|
||||
"DELETE_NODE_LABEL": "Pictogramknop Node verwijderen"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standaard",
|
||||
"OPEN_DIALOG": "Dialoogvenster Openen",
|
||||
"SHOW_LIST_LABEL": "Klik om de lijst weer te geven"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Typ uwierzytelnienia",
|
||||
"BASIC": "Uwierzytelnienie podstawowe",
|
||||
"SSO": "Logowanie jednokrotne",
|
||||
"IMPLICIT-FLOW": "Niejawny przepływ",
|
||||
"PROVIDER": "Dostawca",
|
||||
"REQUIRED": "To pole jest wymagane.",
|
||||
"CS_URL_ERROR": "Adres usług Content Services jest niezgodny z formatem adresu URL.",
|
||||
"PS_URL_ERROR": "Adres usług Process Services jest niezgodny z formatem adresu URL.",
|
||||
"TITLE": "Ustawienia",
|
||||
"CS-HOST": "Adres URL usług Content Services",
|
||||
"BP-HOST": "Adres URL usług Process Services",
|
||||
"BACK": "Wstecz",
|
||||
"APPLY": "Zastosuj",
|
||||
"NOT_VALID": "Nie rozpoznano adresu http(s)://host|ip:port(/path). Spróbuj użyć innego adresu URL.",
|
||||
"REDIRECT": "Identyfikator URI przekierowania",
|
||||
"REDIRECT_LOGOUT": "Identyfikator URI przekierowania — wylogowanie",
|
||||
"SILENT": "Ciche logowanie",
|
||||
"SCOPE": "Zakres",
|
||||
"CLIENT": "Identyfikator klienta",
|
||||
"PUBLIC_URLS": "Publiczne URL do cichego logowania",
|
||||
"SECRET": "Klucz tajny"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Tryb progr."
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Typ czynności"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Domyślne"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Przycisk Utwórz nowy folder",
|
||||
"EDIT_NODE_LABEL": "Przycisk Edytuj węzeł",
|
||||
"DELETE_NODE_LABEL": "Przycisk Usuń ikonę węzła"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Domyślne",
|
||||
"OPEN_DIALOG": "Otwórz okno dialogowe",
|
||||
"SHOW_LIST_LABEL": "Kliknij, aby wyświetlić listę"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Tipo de autenticação",
|
||||
"BASIC": "Autenticação básica",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Fluxo implícito",
|
||||
"PROVIDER": "Provedor",
|
||||
"REQUIRED": "Este campo é obrigatório",
|
||||
"CS_URL_ERROR": "O endereço do Content Services não corresponde ao formato de URL",
|
||||
"PS_URL_ERROR": "O endereço do Process Services não corresponde ao formato de URL",
|
||||
"TITLE": "Configurações",
|
||||
"CS-HOST": "URL do Content Services",
|
||||
"BP-HOST": "URL do Process Services",
|
||||
"BACK": "Voltar",
|
||||
"APPLY": "Aplicar",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) não reconhecida, tente uma URL diferente.",
|
||||
"REDIRECT": "Redirecionar URI",
|
||||
"REDIRECT_LOGOUT": "Redirecionar logout de URI",
|
||||
"SILENT": "Login silencioso",
|
||||
"SCOPE": "Escopo",
|
||||
"CLIENT": "ID de cliente",
|
||||
"PUBLIC_URLS": "Login silencioso de URLs públicas",
|
||||
"SECRET": "Segredo"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Modo de desenvolvimento"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Tipo de ação"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Padrão"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Criar um novo botão de pasta",
|
||||
"EDIT_NODE_LABEL": "Editar botão de nó",
|
||||
"DELETE_NODE_LABEL": "Excluir botão de ícone de nó"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Padrão",
|
||||
"OPEN_DIALOG": "Abrir caixa de diálogo",
|
||||
"SHOW_LIST_LABEL": "Clique para mostrar a lista"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Тип авторизации",
|
||||
"BASIC": "Базовая авторизация",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Неявный поток",
|
||||
"PROVIDER": "Поставщик",
|
||||
"REQUIRED": "Поле обязательно для заполнения",
|
||||
"CS_URL_ERROR": "Адрес Content Services не соответствует формату URL",
|
||||
"PS_URL_ERROR": "Адрес Process Services не соответствует формату URL",
|
||||
"TITLE": "Параметры",
|
||||
"CS-HOST": "URL-адрес Content Services",
|
||||
"BP-HOST": "URL-адрес Process Services",
|
||||
"BACK": "Назад",
|
||||
"APPLY": "Применить",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) не распознан, используйте другой URL-адрес.",
|
||||
"REDIRECT": "URI перенаправления",
|
||||
"REDIRECT_LOGOUT": "Выход URI перенаправления",
|
||||
"SILENT": "Автоматический вход",
|
||||
"SCOPE": "Область применения",
|
||||
"CLIENT": "Идентификатор клиента",
|
||||
"PUBLIC_URLS": "Общедоступные URL-адреса с автоматическим входом",
|
||||
"SECRET": "Секретный"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Режим разработки"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Тип действия"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "По умолчанию"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Кнопка \"Создать новую папку\"",
|
||||
"EDIT_NODE_LABEL": "Кнопка \"Редактировать узел\"",
|
||||
"DELETE_NODE_LABEL": "Кнопка \"Удалить значок узла\""
|
||||
},
|
||||
"DEFAULT_SEARCH": "По умолчанию",
|
||||
"OPEN_DIALOG": "Открыть диалог",
|
||||
"SHOW_LIST_LABEL": "Нажмите для отображения списка"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "Autentiseringstyp",
|
||||
"BASIC": "Grundläggande autentisering",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "Implicit flöde",
|
||||
"PROVIDER": "Leverantör",
|
||||
"REQUIRED": "Detta fält krävs",
|
||||
"CS_URL_ERROR": "Content Services-adressen matchar inte URL-formatet",
|
||||
"PS_URL_ERROR": "Process Services-adressen matchar inte URL-formatet",
|
||||
"TITLE": "Inställningar",
|
||||
"CS-HOST": "Content Services-URL",
|
||||
"BP-HOST": "Process Services-URL",
|
||||
"BACK": "Tillbaka",
|
||||
"APPLY": "Tillämpa",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) kändes inte igen, testa annan URL.",
|
||||
"REDIRECT": "Omdirigera URI",
|
||||
"REDIRECT_LOGOUT": "Omdirigera URI-utloggning",
|
||||
"SILENT": "Tyst inloggning",
|
||||
"SCOPE": "Definitionsområde",
|
||||
"CLIENT": "Klient-ID",
|
||||
"PUBLIC_URLS": "Offentliga url:er för tyst inloggning",
|
||||
"SECRET": "Hemlig"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Utvecklarläge"
|
||||
},
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "Åtgärdstyp"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "Knappen Skapa en ny mapp",
|
||||
"EDIT_NODE_LABEL": "Knappen Redigera nod",
|
||||
"DELETE_NODE_LABEL": "Knappen Radera nodikon"
|
||||
},
|
||||
"DEFAULT_SEARCH": "Standard",
|
||||
"OPEN_DIALOG": "Öppna dialogruta",
|
||||
"SHOW_LIST_LABEL": "Klicka för att visa listan"
|
||||
}
|
||||
@@ -1,5 +1,28 @@
|
||||
{
|
||||
"APP": {
|
||||
"HOST_SETTINGS": {
|
||||
"TYPE-AUTH": "身份验证类型",
|
||||
"BASIC": "基本身份验证",
|
||||
"SSO": "SSO",
|
||||
"IMPLICIT-FLOW": "隐式流",
|
||||
"PROVIDER": "提供程序",
|
||||
"REQUIRED": "此字段为必填字段",
|
||||
"CS_URL_ERROR": "Content Services 地址与 URL 格式不匹配",
|
||||
"PS_URL_ERROR": "Process Services 地址与 URL 格式不匹配",
|
||||
"TITLE": "设置",
|
||||
"CS-HOST": "Content Services URL",
|
||||
"BP-HOST": "Process Services URL",
|
||||
"BACK": "返回",
|
||||
"APPLY": "应用",
|
||||
"NOT_VALID": "http(s)://host|ip:port(/path) 无法识别,请使用其他 URL。",
|
||||
"REDIRECT": "重定向 URI",
|
||||
"REDIRECT_LOGOUT": "重定向 URI 注销",
|
||||
"SILENT": "静默登录",
|
||||
"SCOPE": "范围",
|
||||
"CLIENT": "客户端 ID",
|
||||
"PUBLIC_URLS": "用于静默登录的公共 URL",
|
||||
"SECRET": "机密"
|
||||
},
|
||||
"ABOUT": {
|
||||
"DEVELOPMENT": "Dev 模式"
|
||||
},
|
||||
@@ -83,7 +106,7 @@
|
||||
"FORM_LOADING": "表单加载",
|
||||
"UPLOADER": "上传程序",
|
||||
"WEBSCRIPT": "Webscript",
|
||||
"TAG": "标签",
|
||||
"TAG": "标记",
|
||||
"PIPES": "管道",
|
||||
"TRASHCAN": "垃圾桶",
|
||||
"SOCIAL": "社交",
|
||||
@@ -103,7 +126,7 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "人员/一组云",
|
||||
"TASK_HEADER_CLOUD": {
|
||||
"COMPONENT_NAME": "云的任务标题",
|
||||
"APP_NAME_INPUT": "应用程序名称",
|
||||
"APP_NAME_INPUT": "App 名称",
|
||||
"TASK_ID_INPUT": "任务 id",
|
||||
"FIND_TASK_BUTTON": "查找任务"
|
||||
},
|
||||
@@ -281,8 +304,8 @@
|
||||
},
|
||||
"TASK_LIST_DEMO": {
|
||||
"ERROR_MESSAGE": {
|
||||
"APP_ID_REQUIRED_ERROR": "插入应用程序 ID",
|
||||
"APP_ID_TYPE_ERROR": "应用程序 ID 必须为数字",
|
||||
"APP_ID_REQUIRED_ERROR": "插入 App ID",
|
||||
"APP_ID_TYPE_ERROR": "App ID 必须为数字",
|
||||
"NUMBER_TYPE_ERROR": "值必须是数字",
|
||||
"NUMBER_GREATER_THAN": "值必须大于或等于 {{ value }}"
|
||||
},
|
||||
@@ -293,8 +316,8 @@
|
||||
},
|
||||
"PROCESS_LIST_DEMO": {
|
||||
"ERROR_MESSAGE": {
|
||||
"APP_ID_REQUIRED_ERROR": "插入应用程序 ID",
|
||||
"APP_ID_TYPE_ERROR": "应用程序 ID 必须为数字",
|
||||
"APP_ID_REQUIRED_ERROR": "插入 App ID",
|
||||
"APP_ID_TYPE_ERROR": "App ID 必须为数字",
|
||||
"NUMBER_GREATER_THAN": "值必须大于或等于 {{ value }}"
|
||||
},
|
||||
"PROCESS_CONTEXT_MENU": "流程列表上下文菜单"
|
||||
@@ -358,5 +381,12 @@
|
||||
"ACTION_TYPE": "操作类型"
|
||||
}
|
||||
},
|
||||
"DEFAULT_SEARCH": "默认值"
|
||||
"BREADCRUMB_DEMO": {
|
||||
"NEW_FOLDER_LABEL": "创建一个新文件夹按钮",
|
||||
"EDIT_NODE_LABEL": "编辑节点按钮",
|
||||
"DELETE_NODE_LABEL": "删除节点图标按钮"
|
||||
},
|
||||
"DEFAULT_SEARCH": "默认值",
|
||||
"OPEN_DIALOG": "打开对话框",
|
||||
"SHOW_LIST_LABEL": "单击以显示列表"
|
||||
}
|
||||
@@ -1327,6 +1327,15 @@
|
||||
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.LAST_MODIFIED",
|
||||
"sortable": true,
|
||||
"format": "timeAgo"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"key": "description",
|
||||
"type": "text",
|
||||
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.DESCRIPTION",
|
||||
"sortable": false,
|
||||
"draggable": false,
|
||||
"isHidden": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||
import { ChartsModule } from 'ng2-charts';
|
||||
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import {
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
DebugAppConfigService,
|
||||
CoreModule,
|
||||
CoreAutomationService,
|
||||
AuthBearerInterceptor
|
||||
AuthModule
|
||||
} from '@alfresco/adf-core';
|
||||
import { ExtensionsModule } from '@alfresco/adf-extensions';
|
||||
import { AppComponent } from './app.component';
|
||||
@@ -115,6 +115,7 @@ import localeSv from '@angular/common/locales/sv';
|
||||
import { setupAppNotifications } from './services/app-notifications-factory';
|
||||
import { AppNotificationsService } from './services/app-notifications.service';
|
||||
import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component';
|
||||
import { UserInfoComponent } from './components/app-layout/user-info/user-info.component';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
registerLocaleData(localeDe);
|
||||
@@ -139,6 +140,7 @@ registerLocaleData(localeSv);
|
||||
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
|
||||
ReactiveFormsModule,
|
||||
RouterModule.forRoot(appRoutes, { useHash: true, relativeLinkResolution: 'legacy' }),
|
||||
...(environment.oidc ? [AuthModule.forRoot({ useHash: true })] : []),
|
||||
FormsModule,
|
||||
HttpClientModule,
|
||||
MaterialModule,
|
||||
@@ -159,6 +161,7 @@ registerLocaleData(localeSv);
|
||||
AppComponent,
|
||||
LogoutComponent,
|
||||
AppLayoutComponent,
|
||||
UserInfoComponent,
|
||||
HomeComponent,
|
||||
SearchBarComponent,
|
||||
SearchResultComponent,
|
||||
@@ -209,10 +212,6 @@ registerLocaleData(localeSv);
|
||||
SearchFilterChipsComponent
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: HTTP_INTERCEPTORS, useClass:
|
||||
AuthBearerInterceptor, multi: true
|
||||
},
|
||||
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
|
||||
{
|
||||
provide: TRANSLATION_PROVIDER,
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
|
||||
<div class="app-header-delimiexpandedSidenavter"></div>
|
||||
|
||||
<adf-userinfo [menuPositionX]="'before'" [menuPositionY]="'above'">
|
||||
</adf-userinfo>
|
||||
<app-shell-user-info [menuPositionX]="'before'" [menuPositionY]="'above'"></app-shell-user-info>
|
||||
|
||||
<app-theme-picker></app-theme-picker>
|
||||
<button data-automation-id="language-menu-button" mat-icon-button [matMenuTriggerFor]="langMenu">
|
||||
|
||||
@@ -127,7 +127,7 @@ export class AppLayoutComponent implements OnInit, OnDestroy {
|
||||
this.color = color;
|
||||
} else {
|
||||
this.color = undefined;
|
||||
document.documentElement.style.setProperty('--adf-header-background-color', color);
|
||||
document.documentElement.style.setProperty('--theme-primary-color', color);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -138,7 +138,7 @@ export class AppLayoutComponent implements OnInit, OnDestroy {
|
||||
this.headerService.headerTextColor
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(headerTextColor => {
|
||||
document.documentElement.style.setProperty('--adf-header-text-color', headerTextColor);
|
||||
document.documentElement.style.setProperty('--theme-primary-color-default-contrast', headerTextColor);
|
||||
});
|
||||
|
||||
this.headerService.logo
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<ng-container>
|
||||
<adf-content-user-info
|
||||
*ngIf="mode === userInfoMode.CONTENT || mode === userInfoMode.CONTENT_SSO"
|
||||
[ecmUser]="ecmUser$ | async"
|
||||
[identityUser]="identityUser$ | async"
|
||||
[isLoggedIn]="isLoggedIn"
|
||||
[mode]="mode"
|
||||
></adf-content-user-info>
|
||||
<adf-identity-user-info
|
||||
*ngIf="mode === userInfoMode.SSO"
|
||||
[identityUser]="identityUser$ | async"
|
||||
[isLoggedIn]="isLoggedIn"
|
||||
></adf-identity-user-info>
|
||||
<adf-process-user-info
|
||||
*ngIf="mode === userInfoMode.PROCESS || mode === userInfoMode.ALL"
|
||||
[bpmUser]="bpmUser$ | async"
|
||||
[ecmUser]="ecmUser$ | async"
|
||||
[isLoggedIn]="isLoggedIn"
|
||||
[mode]="mode"
|
||||
></adf-process-user-info>
|
||||
</ng-container>
|
||||
+15
-73
@@ -15,34 +15,16 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, Input, OnInit, ViewEncapsulation, ViewChild, OnDestroy } from '@angular/core';
|
||||
import { AuthenticationService } from '../../services/authentication.service';
|
||||
import { BpmUserModel } from '../../models/bpm-user.model';
|
||||
import { EcmUserModel } from '../../models/ecm-user.model';
|
||||
import { IdentityUserModel } from '../../models/identity-user.model';
|
||||
import { BpmUserService } from '../../services/bpm-user.service';
|
||||
import { IdentityUserService } from '../../services/identity-user.service';
|
||||
import { of, Observable, Subject } from 'rxjs';
|
||||
import { MatMenuTrigger, MenuPositionX, MenuPositionY } from '@angular/material/menu';
|
||||
import { PeopleContentService } from '../../services/people-content.service';
|
||||
import { AuthenticationService, BpmUserModel, BpmUserService, EcmUserModel, IdentityUserModel, IdentityUserService, PeopleContentService, UserInfoMode } from '@alfresco/adf-core';
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { MenuPositionX, MenuPositionY } from '@angular/material/menu';
|
||||
import { Observable, of } from 'rxjs';
|
||||
|
||||
@Component({
|
||||
selector: 'adf-userinfo',
|
||||
templateUrl: './user-info.component.html',
|
||||
styleUrls: ['./user-info.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
selector: 'app-shell-user-info',
|
||||
templateUrl: './user-info.component.html'
|
||||
})
|
||||
export class UserInfoComponent implements OnInit, OnDestroy {
|
||||
|
||||
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
|
||||
|
||||
/** Custom path for the background banner image for ACS users. */
|
||||
@Input()
|
||||
ecmBackgroundImage: string = './assets/images/ecm-background.png';
|
||||
|
||||
/** Custom path for the background banner image for APS users. */
|
||||
@Input()
|
||||
bpmBackgroundImage: string = './assets/images/bpm-background.png';
|
||||
export class UserInfoComponent implements OnInit {
|
||||
|
||||
/** Custom choice for opening the menu at the bottom. Can be `before` or `after`. */
|
||||
@Input()
|
||||
@@ -52,23 +34,12 @@ export class UserInfoComponent implements OnInit, OnDestroy {
|
||||
@Input()
|
||||
menuPositionY: MenuPositionY = 'below';
|
||||
|
||||
/** Shows/hides the username next to the user info button. */
|
||||
@Input()
|
||||
showName: boolean = true;
|
||||
|
||||
/** When the username is shown, this defines its position relative to the user info button.
|
||||
* Can be `right` or `left`.
|
||||
*/
|
||||
@Input()
|
||||
namePosition: string = 'right';
|
||||
|
||||
mode: string;
|
||||
|
||||
mode: UserInfoMode;
|
||||
ecmUser$: Observable<EcmUserModel>;
|
||||
bpmUser$: Observable<BpmUserModel>;
|
||||
identityUser$: Observable<IdentityUserModel>;
|
||||
selectedIndex: number;
|
||||
private destroy$ = new Subject();
|
||||
userInfoMode = UserInfoMode;
|
||||
|
||||
constructor(private peopleContentService: PeopleContentService,
|
||||
private bpmUserService: BpmUserService,
|
||||
@@ -80,40 +51,26 @@ export class UserInfoComponent implements OnInit, OnDestroy {
|
||||
this.getUserInfo();
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.destroy$.next(true);
|
||||
this.destroy$.complete();
|
||||
}
|
||||
|
||||
getUserInfo() {
|
||||
if (this.authService.isOauth()) {
|
||||
this.loadIdentityUserInfo();
|
||||
this.mode = 'SSO';
|
||||
this.mode = UserInfoMode.SSO;
|
||||
|
||||
if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {
|
||||
this.mode = UserInfoMode.CONTENT_SSO;
|
||||
this.loadEcmUserInfo();
|
||||
}
|
||||
|
||||
} else if (this.isAllLoggedIn()) {
|
||||
this.loadEcmUserInfo();
|
||||
this.loadBpmUserInfo();
|
||||
this.mode = 'ALL';
|
||||
this.mode = UserInfoMode.ALL;
|
||||
} else if (this.isEcmLoggedIn()) {
|
||||
this.loadEcmUserInfo();
|
||||
this.mode = 'CONTENT';
|
||||
this.mode = UserInfoMode.CONTENT;
|
||||
} else if (this.isBpmLoggedIn()) {
|
||||
this.loadBpmUserInfo();
|
||||
this.mode = 'PROCESS';
|
||||
}
|
||||
}
|
||||
|
||||
onKeyPress(event: KeyboardEvent) {
|
||||
this.closeUserModal(event);
|
||||
}
|
||||
|
||||
private closeUserModal($event: KeyboardEvent) {
|
||||
if ($event.keyCode === 27) {
|
||||
this.trigger.closeMenu();
|
||||
this.mode = UserInfoMode.PROCESS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,20 +104,5 @@ export class UserInfoComponent implements OnInit, OnDestroy {
|
||||
private isEcmLoggedIn() {
|
||||
return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
|
||||
}
|
||||
|
||||
stopClosing(event: Event) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
|
||||
getEcmAvatar(avatarId: any): string {
|
||||
return this.peopleContentService.getUserProfileImage(avatarId);
|
||||
}
|
||||
|
||||
getBpmUserImage(): string {
|
||||
return this.bpmUserService.getCurrentUserProfileImage();
|
||||
}
|
||||
|
||||
get showOnRight(): boolean {
|
||||
return this.namePosition === 'right';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
<adf-viewer
|
||||
[overlayMode]="true"
|
||||
<adf-alfresco-viewer
|
||||
[nodeId]="nodeId">
|
||||
</adf-viewer>
|
||||
</adf-alfresco-viewer>
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ import {
|
||||
} from '@angular/core';
|
||||
import { NodeEntry, Node } from '@alfresco/js-api';
|
||||
import { BehaviorSubject, Subject } from 'rxjs';
|
||||
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||
import { NodesApiService } from '@alfresco/adf-core';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
@@ -52,12 +52,12 @@ export class NameColumnComponent implements OnInit, OnDestroy {
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(private element: ElementRef, private alfrescoApiService: AlfrescoApiService) {}
|
||||
constructor(private element: ElementRef, private nodesApiService: NodesApiService) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.updateValue();
|
||||
|
||||
this.alfrescoApiService.nodeUpdated
|
||||
this.nodesApiService.nodeUpdated
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((node: Node) => {
|
||||
const row = this.context.row;
|
||||
|
||||
@@ -1,336 +1,382 @@
|
||||
<ng-container *ngIf="nodeId || content">
|
||||
<ng-container *ngIf="nodeId">
|
||||
|
||||
<ng-template let-node="node" #sidebarRightTemplate>
|
||||
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.COMMENTS">
|
||||
<adf-comments [nodeId]="nodeId" [readOnly]="!isCommentEnabled"></adf-comments>
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.PROPERTIES">
|
||||
<adf-content-metadata-card *ngIf="isPreset" [node]="node"
|
||||
[multi]="multi"
|
||||
[preset]="customPreset"
|
||||
[readOnly]="isReadOnly"
|
||||
[displayAspect]="showAspect"
|
||||
[displayDefaultProperties]="displayDefaultProperties"
|
||||
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
|
||||
|
||||
<adf-content-metadata-card *ngIf="!isPreset" [node]="node"
|
||||
[multi]="multi"
|
||||
[readOnly]="isReadOnly"
|
||||
[displayAspect]="showAspect"
|
||||
[displayDefaultProperties]="displayDefaultProperties"
|
||||
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-default-properties"
|
||||
[color]="'primary'"
|
||||
(change)="toggleDisplayProperties()"
|
||||
[checked]="displayDefaultProperties">
|
||||
Display Default Properties
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-empty"
|
||||
[color]="'primary'"
|
||||
(change)="toggleEmptyMetadata()"
|
||||
[checked]="displayEmptyMetadata">
|
||||
Display Empty Metadata
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-multi"
|
||||
[color]="'primary'"
|
||||
(change)="toggleMulti()"
|
||||
[checked]="multi">
|
||||
Multi accordion
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-readonly"
|
||||
[color]="'primary'"
|
||||
(change)="toggleReadOnly()"
|
||||
[checked]="isReadOnly">
|
||||
Read Only
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-toggle-custom-preset"
|
||||
[color]="'primary'"
|
||||
(change)="togglePreset()"
|
||||
[checked]="isPreset">
|
||||
Custom preset
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Display Aspect"
|
||||
[(ngModel)]="desiredAspect">
|
||||
</mat-form-field>
|
||||
|
||||
<button mat-raised-button (click)="applyAspect()" color="primary">
|
||||
Apply Aspect
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="isPreset">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Custom Preset"
|
||||
[(ngModel)]="customPreset"
|
||||
data-automation-id="adf-text-custom-preset">
|
||||
</mat-form-field>
|
||||
|
||||
<button mat-raised-button id="adf-metadata-aplly" (click)="applyCustomPreset()" color="primary">
|
||||
Apply
|
||||
</button>
|
||||
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.VERSIONS">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<adf-version-manager [node]="node"
|
||||
(uploadError)="onUploadError($event)"
|
||||
(viewVersion)="onViewVersion($event)">
|
||||
</adf-version-manager>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
|
||||
<ng-template let-node="node" #sidebarLeftTemplate>
|
||||
<adf-info-drawer [title]="'Viewer Options'">
|
||||
|
||||
<adf-info-drawer-tab label="Settings">
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-custoname"
|
||||
[color]="'primary'"
|
||||
(change)="toggleCustomName()"
|
||||
[checked]="customName">
|
||||
Custom Name
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="customName">
|
||||
<mat-form-field floatLabel="never">
|
||||
<input matInput
|
||||
placeholder="Custom Name"
|
||||
[(ngModel)]="displayName"
|
||||
data-automation-id="adf-text-custom-name">
|
||||
</mat-form-field>
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-fileurl"
|
||||
[color]="'primary'"
|
||||
(change)="toggleFileUrl()"
|
||||
[checked]="fileUrlSwitch">
|
||||
Url File
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="fileUrlSwitch">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Url File"
|
||||
[(ngModel)]="urlFile"
|
||||
data-automation-id="adf-text-file-url">
|
||||
</mat-form-field>
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-toolbar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowToolbar()"
|
||||
[checked]="showToolbar">
|
||||
Show Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-goback"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowGoBack()"
|
||||
[checked]="allowGoBack">
|
||||
Allow GoBack
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-openwith"
|
||||
[color]="'primary'"
|
||||
(change)="toggleOpenWith()"
|
||||
[checked]="openWith">
|
||||
Open With
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactions"
|
||||
[color]="'primary'"
|
||||
(change)="toggleOpenMoreActions()"
|
||||
[checked]="moreActions">
|
||||
More Actions
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactionsmenu"
|
||||
[color]="'primary'"
|
||||
(change)="toggleMoreActionsMenu()"
|
||||
[checked]="moreActionsMenu">
|
||||
More Actions Menu
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-download"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowDownload()"
|
||||
[checked]="allowDownload">
|
||||
Allow Download
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-print"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowPrint()"
|
||||
[checked]="allowPrint">
|
||||
Allow Print
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowsidebar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowRightSidebar()"
|
||||
[checked]="allowRightSidebar">
|
||||
Allow Right Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowLeftSidebar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowLeftSidebar()"
|
||||
[checked]="allowLeftSidebar">
|
||||
Allow Left Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-toggle-custom-toolbar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleToolbar()"
|
||||
[checked]="customToolbar">
|
||||
Custom Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-tab-with-icon"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowTabWithIcon()"
|
||||
[checked]="showTabWithIcon">
|
||||
Show tab with icon
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-icon-and-label-tab"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowTabWithIconAndLabel()"
|
||||
[checked]="showTabWithIconAndLabel">
|
||||
Show tab with icon and label
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
|
||||
color="primary">
|
||||
Toggle Right Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
|
||||
color="primary">
|
||||
Hide Left Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIcon"
|
||||
[label]=""
|
||||
[icon]="'face'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIconAndLabel"
|
||||
[label]="'Comments'"
|
||||
[icon]="'comment'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
<adf-viewer
|
||||
[blobFile]="content"
|
||||
<adf-alfresco-viewer
|
||||
(showViewerChange)="onViewerClosed()"
|
||||
[nodeId]="nodeId"
|
||||
[versionId]="versionId"
|
||||
[showRightSidebar]="showRightSidebar"
|
||||
[showLeftSidebar]="showLeftSidebar"
|
||||
[allowGoBack]="allowGoBack"
|
||||
[displayName]="displayName"
|
||||
[showToolbar]="showToolbar"
|
||||
[allowPrint]="allowPrint"
|
||||
[allowDownload]="allowDownload"
|
||||
[allowRightSidebar]="allowRightSidebar"
|
||||
[allowLeftSidebar]="allowLeftSidebar"
|
||||
[urlFile]="urlFile"
|
||||
(showViewerChange)="onViewerVisibilityChanged()"
|
||||
[sidebarLeftTemplate]="sidebarLeftTemplate"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
|
||||
<adf-viewer-toolbar *ngIf="customToolbar" data-automation-id="adf-viewer-custom-toolbar">
|
||||
<h1>My custom toolbar</h1>
|
||||
</adf-viewer-toolbar>
|
||||
|
||||
<adf-viewer-toolbar-actions *ngIf="moreActions">
|
||||
<button mat-icon-button id="adf-viewer-time">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-upload">
|
||||
<mat-icon>backup</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
</button>
|
||||
</adf-viewer-toolbar-actions>
|
||||
|
||||
<adf-viewer-more-actions *ngIf="moreActionsMenu">
|
||||
<button mat-menu-item id="adf-viewer-more-menu-alarm">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
<span>Alarm</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-backup">
|
||||
<mat-icon>backup</mat-icon>
|
||||
<span>Backup</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
<span>Bug report</span>
|
||||
</button>
|
||||
</adf-viewer-more-actions>
|
||||
|
||||
<ng-container *ngIf="openWith">
|
||||
<adf-viewer-open-with>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>dialpad</mat-icon>
|
||||
<span>Option 1</span>
|
||||
</button>
|
||||
<button mat-menu-item disabled>
|
||||
<mat-icon>voicemail</mat-icon>
|
||||
<span>Option 2</span>
|
||||
</button>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>notifications_off</mat-icon>
|
||||
<span>Option 3</span>
|
||||
</button>
|
||||
</adf-viewer-open-with>
|
||||
</ng-container>
|
||||
</adf-alfresco-viewer>
|
||||
|
||||
</ng-container>
|
||||
|
||||
|
||||
<ng-template let-node="node" #sidebarRightTemplate>
|
||||
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.COMMENTS">
|
||||
<adf-node-comments
|
||||
[nodeId]="nodeId"
|
||||
[readOnly]="!isCommentEnabled"
|
||||
>
|
||||
</adf-node-comments>
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.PROPERTIES">
|
||||
<adf-content-metadata-card *ngIf="isPreset" [node]="node"
|
||||
[multi]="multi"
|
||||
[preset]="customPreset"
|
||||
[readOnly]="isReadOnly"
|
||||
[displayAspect]="showAspect"
|
||||
[displayDefaultProperties]="displayDefaultProperties"
|
||||
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
|
||||
|
||||
<adf-content-metadata-card *ngIf="!isPreset" [node]="node"
|
||||
[multi]="multi"
|
||||
[readOnly]="isReadOnly"
|
||||
[displayAspect]="showAspect"
|
||||
[displayDefaultProperties]="displayDefaultProperties"
|
||||
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-default-properties"
|
||||
[color]="'primary'"
|
||||
(change)="toggleDisplayProperties()"
|
||||
[checked]="displayDefaultProperties">
|
||||
Display Default Properties
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-empty"
|
||||
[color]="'primary'"
|
||||
(change)="toggleEmptyMetadata()"
|
||||
[checked]="displayEmptyMetadata">
|
||||
Display Empty Metadata
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-multi"
|
||||
[color]="'primary'"
|
||||
(change)="toggleMulti()"
|
||||
[checked]="multi">
|
||||
Multi accordion
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-metadata-readonly"
|
||||
[color]="'primary'"
|
||||
(change)="toggleReadOnly()"
|
||||
[checked]="isReadOnly">
|
||||
Read Only
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-toggle-custom-preset"
|
||||
[color]="'primary'"
|
||||
(change)="togglePreset()"
|
||||
[checked]="isPreset">
|
||||
Custom preset
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Display Aspect"
|
||||
[(ngModel)]="desiredAspect">
|
||||
</mat-form-field>
|
||||
|
||||
<button mat-raised-button (click)="applyAspect()" color="primary">
|
||||
Apply Aspect
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="isPreset">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Custom Preset"
|
||||
[(ngModel)]="customPreset"
|
||||
data-automation-id="adf-text-custom-preset">
|
||||
</mat-form-field>
|
||||
|
||||
<button mat-raised-button id="adf-metadata-aplly" (click)="applyCustomPreset()" color="primary">
|
||||
Apply
|
||||
</button>
|
||||
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab label="APP.INFO_DRAWER.VERSIONS">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<adf-version-manager [node]="node"
|
||||
(uploadError)="onUploadError($event)"
|
||||
(viewVersion)="onViewVersion($event)">
|
||||
</adf-version-manager>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #sidebarLeftTemplate>
|
||||
<adf-info-drawer [title]="'Viewer Options'">
|
||||
|
||||
<adf-info-drawer-tab label="Settings">
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-fileurl"
|
||||
[color]="'primary'"
|
||||
(change)="toggleFileUrl()"
|
||||
[checked]="fileUrlSwitch">
|
||||
Url File
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="fileUrlSwitch">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Url File"
|
||||
[(ngModel)]="urlFile"
|
||||
data-automation-id="adf-text-file-url">
|
||||
</mat-form-field>
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-toolbar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowToolbar()"
|
||||
[checked]="showToolbar">
|
||||
Show Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-goback"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowGoBack()"
|
||||
[checked]="allowGoBack">
|
||||
Allow GoBack
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-openwith"
|
||||
[color]="'primary'"
|
||||
(change)="toggleOpenWith()"
|
||||
[checked]="openWith">
|
||||
Open With
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactions"
|
||||
[color]="'primary'"
|
||||
(change)="toggleOpenMoreActions()"
|
||||
[checked]="moreActions">
|
||||
More Actions
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactionsmenu"
|
||||
[color]="'primary'"
|
||||
(change)="toggleMoreActionsMenu()"
|
||||
[checked]="moreActionsMenu">
|
||||
More Actions Menu
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-download"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowDownload()"
|
||||
[checked]="allowDownload">
|
||||
Allow Download
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-print"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowPrint()"
|
||||
[checked]="allowPrint">
|
||||
Allow Print
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowsidebar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowRightSidebar()"
|
||||
[checked]="allowRightSidebar">
|
||||
Allow Right Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowLeftSidebar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleAllowLeftSidebar()"
|
||||
[checked]="allowLeftSidebar">
|
||||
Allow Left Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-toggle-custom-toolbar"
|
||||
[color]="'primary'"
|
||||
(change)="toggleToolbar()"
|
||||
[checked]="customToolbar">
|
||||
Custom Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-tab-with-icon"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowTabWithIcon()"
|
||||
[checked]="showTabWithIcon">
|
||||
Show tab with icon
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-icon-and-label-tab"
|
||||
[color]="'primary'"
|
||||
(change)="toggleShowTabWithIconAndLabel()"
|
||||
[checked]="showTabWithIconAndLabel">
|
||||
Show tab with icon and label
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
|
||||
color="primary">
|
||||
Toggle Right Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
|
||||
color="primary">
|
||||
Hide Left Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIcon"
|
||||
[label]=""
|
||||
[icon]="'face'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIconAndLabel"
|
||||
[label]="'Comments'"
|
||||
[icon]="'comment'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
<ng-container *ngIf="blobFile">
|
||||
<adf-viewer
|
||||
[blobFile]="blobFile"
|
||||
[fileName]="fileName"
|
||||
[showRightSidebar]="showRightSidebar"
|
||||
[showLeftSidebar]="showLeftSidebar"
|
||||
[allowGoBack]="allowGoBack"
|
||||
[showToolbar]="showToolbar"
|
||||
[allowRightSidebar]="allowRightSidebar"
|
||||
[allowLeftSidebar]="allowLeftSidebar"
|
||||
(showViewerChange)="onViewerClosed()"
|
||||
[sidebarLeftTemplate]="sidebarLeftTemplate"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
|
||||
@@ -382,36 +428,5 @@
|
||||
</adf-viewer-open-with>
|
||||
</ng-container>
|
||||
|
||||
<!--
|
||||
<adf-viewer-extension [supportedExtensions]="['json']">
|
||||
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
|
||||
<h1>JSON VIEWER</h1>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<adf-viewer-extension [supportedExtensions]="['png']">
|
||||
<ng-template>
|
||||
<h1>PNG Viewer</h1>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<adf-viewer-extension [supportedExtensions]="['pdf']">
|
||||
<ng-template>
|
||||
<h1>PDF Viewer</h1>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<extension-viewer [supportedExtensions]="['obj','3DS']" #extension>
|
||||
<ng-template let-urlFileContent="urlFileContent" let-extension="extension" >
|
||||
<threed-viewer [urlFile]="urlFileContent" [extension]="extension" ></threed-viewer>
|
||||
</ng-template>
|
||||
</extension-viewer>
|
||||
-->
|
||||
</adf-viewer>
|
||||
</ng-container>
|
||||
|
||||
@@ -45,7 +45,6 @@ export class FileViewComponent implements OnInit {
|
||||
customPreset: string = null;
|
||||
displayDefaultProperties = true;
|
||||
showToolbar = true;
|
||||
displayName = null;
|
||||
urlFile = null;
|
||||
allowGoBack = true;
|
||||
openWith = false;
|
||||
@@ -55,7 +54,6 @@ export class FileViewComponent implements OnInit {
|
||||
allowLeftSidebar = true;
|
||||
moreActions = true;
|
||||
moreActionsMenu = false;
|
||||
customName = false;
|
||||
fileUrlSwitch = false;
|
||||
showLeftSidebar = null;
|
||||
showRightSidebar = false;
|
||||
@@ -65,8 +63,9 @@ export class FileViewComponent implements OnInit {
|
||||
showTabWithIconAndLabel = false;
|
||||
desiredAspect: string = null;
|
||||
showAspect: string = null;
|
||||
content: Blob;
|
||||
name: string;
|
||||
fileName: string;
|
||||
blobFile: Blob;
|
||||
|
||||
constructor(private router: Router,
|
||||
private route: ActivatedRoute,
|
||||
@@ -93,9 +92,9 @@ export class FileViewComponent implements OnInit {
|
||||
},
|
||||
() => this.router.navigate(['/files', id])
|
||||
);
|
||||
} else if (this.preview.content) {
|
||||
this.content = this.preview.content;
|
||||
this.displayName = this.preview.name;
|
||||
} else if (this.preview?.content) {
|
||||
this.blobFile = this.preview.content;
|
||||
this.fileName = this.preview.name;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -104,7 +103,7 @@ export class FileViewComponent implements OnInit {
|
||||
this.preview.showResource(this.nodeId, versionId);
|
||||
}
|
||||
|
||||
onViewerVisibilityChanged() {
|
||||
onViewerClosed() {
|
||||
const primaryUrl = this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
|
||||
this.router.navigateByUrl(primaryUrl);
|
||||
}
|
||||
@@ -182,14 +181,6 @@ export class FileViewComponent implements OnInit {
|
||||
this.showTabWithIconAndLabel = !this.showTabWithIconAndLabel;
|
||||
}
|
||||
|
||||
toggleCustomName() {
|
||||
this.customName = !this.customName;
|
||||
|
||||
if (!this.customName) {
|
||||
this.displayName = null;
|
||||
}
|
||||
}
|
||||
|
||||
toggleFileUrl() {
|
||||
this.fileUrlSwitch = !this.fileUrlSwitch;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CoreModule, InfoDrawerModule } from '@alfresco/adf-core';
|
||||
import { ContentDirectiveModule, VersionManagerModule, ContentMetadataModule } from '@alfresco/adf-content-services';
|
||||
import { ContentModule, ContentDirectiveModule, VersionManagerModule, ContentMetadataModule } from '@alfresco/adf-content-services';
|
||||
import { FileViewComponent } from './file-view.component';
|
||||
|
||||
const routes: Routes = [
|
||||
@@ -34,7 +34,9 @@ const routes: Routes = [
|
||||
CommonModule,
|
||||
RouterModule.forChild(routes),
|
||||
CoreModule,
|
||||
ContentModule,
|
||||
InfoDrawerModule,
|
||||
ContentModule,
|
||||
ContentDirectiveModule,
|
||||
ContentMetadataModule,
|
||||
VersionManagerModule
|
||||
|
||||
@@ -15,16 +15,48 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, Input, OnInit, OnChanges, OnDestroy, Optional, EventEmitter, ViewChild, SimpleChanges, Output, ViewEncapsulation } from '@angular/core';
|
||||
import {
|
||||
Component,
|
||||
Input,
|
||||
OnInit,
|
||||
OnChanges,
|
||||
OnDestroy,
|
||||
Optional,
|
||||
EventEmitter,
|
||||
ViewChild,
|
||||
SimpleChanges,
|
||||
Output,
|
||||
ViewEncapsulation
|
||||
} from '@angular/core';
|
||||
import { Location } from '@angular/common';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { MinimalNodeEntity, NodePaging, Pagination, MinimalNodeEntryEntity, SiteEntry, SearchEntry, NodeEntry } from '@alfresco/js-api';
|
||||
import {
|
||||
AlfrescoApiService, AuthenticationService, AppConfigService, AppConfigValues, ContentService, FolderCreatedEvent, LogService, NotificationService,
|
||||
UploadService, DataRow, UserPreferencesService,
|
||||
PaginationComponent, FormValues, DisplayMode, ShowHeaderMode, InfinitePaginationComponent,
|
||||
SharedLinksApiService,
|
||||
MinimalNodeEntity,
|
||||
NodePaging,
|
||||
Pagination,
|
||||
MinimalNodeEntryEntity,
|
||||
SiteEntry,
|
||||
SearchEntry,
|
||||
NodeEntry
|
||||
} from '@alfresco/js-api';
|
||||
import {
|
||||
AlfrescoApiService,
|
||||
AuthenticationService,
|
||||
AppConfigService,
|
||||
AppConfigValues,
|
||||
ContentService,
|
||||
FolderCreatedEvent,
|
||||
LogService,
|
||||
NotificationService,
|
||||
UploadService,
|
||||
DataRow,
|
||||
UserPreferencesService,
|
||||
PaginationComponent,
|
||||
FormValues,
|
||||
DisplayMode,
|
||||
ShowHeaderMode,
|
||||
InfinitePaginationComponent,
|
||||
FormRenderingService,
|
||||
FileUploadEvent,
|
||||
NodesApiService
|
||||
@@ -38,7 +70,8 @@ import {
|
||||
LibraryDialogComponent,
|
||||
ContentMetadataService,
|
||||
FilterSearch,
|
||||
DialogAspectListService
|
||||
DialogAspectListService,
|
||||
SharedLinksApiService
|
||||
} from '@alfresco/adf-content-services';
|
||||
|
||||
import { SelectAppsDialogComponent, ProcessFormRenderingService } from '@alfresco/adf-process-services';
|
||||
@@ -58,7 +91,7 @@ const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
||||
styleUrls: ['./files.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None,
|
||||
providers: [
|
||||
{ provide: FormRenderingService, useClass: ProcessFormRenderingService }
|
||||
{provide: FormRenderingService, useClass: ProcessFormRenderingService}
|
||||
]
|
||||
})
|
||||
export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@@ -80,9 +113,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
toolbarColor: ThemePalette;
|
||||
|
||||
selectionModes = [
|
||||
{ value: 'none', viewValue: 'None' },
|
||||
{ value: 'single', viewValue: 'Single' },
|
||||
{ value: 'multiple', viewValue: 'Multiple' }
|
||||
{value: 'none', viewValue: 'None'},
|
||||
{value: 'single', viewValue: 'Single'},
|
||||
{value: 'multiple', viewValue: 'Multiple'}
|
||||
];
|
||||
|
||||
// The identifier of a node. You can also use one of these well-known aliases: -my- | -shared- | -root-
|
||||
@@ -195,13 +228,13 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Output()
|
||||
deleteElementSuccess: EventEmitter<any> = new EventEmitter();
|
||||
|
||||
@ViewChild('documentList', { static: true })
|
||||
@ViewChild('documentList', {static: true})
|
||||
documentList: DocumentListComponent;
|
||||
|
||||
@ViewChild('standardPagination')
|
||||
standardPagination: PaginationComponent;
|
||||
|
||||
@ViewChild(InfinitePaginationComponent, { static: true })
|
||||
@ViewChild(InfinitePaginationComponent, {static: true})
|
||||
infinitePaginationComponent: InfinitePaginationComponent;
|
||||
|
||||
permissionsStyle: PermissionStyleModel[] = [];
|
||||
@@ -281,31 +314,31 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
}
|
||||
|
||||
this.uploadService.fileUploadComplete
|
||||
.pipe(
|
||||
debounceTime(300),
|
||||
scan((files, currentFile) => [...files, currentFile], []),
|
||||
takeUntil(this.onDestroy$)
|
||||
)
|
||||
.subscribe((value: any[]) => {
|
||||
let selectedNodes: NodeEntry[] = [];
|
||||
.pipe(
|
||||
debounceTime(300),
|
||||
scan((files, currentFile) => [...files, currentFile], []),
|
||||
takeUntil(this.onDestroy$)
|
||||
)
|
||||
.subscribe((value: any[]) => {
|
||||
let selectedNodes: NodeEntry[] = [];
|
||||
|
||||
if (this.preselectNodes) {
|
||||
if (value && value.length > 0 ) {
|
||||
if (this.selectionMode === 'single') {
|
||||
selectedNodes = [...[value[value.length - 1]].map((uploadedFile) => uploadedFile.data)];
|
||||
} else {
|
||||
selectedNodes = [...value.map((uploadedFile) => uploadedFile.data)];
|
||||
if (this.preselectNodes) {
|
||||
if (value && value.length > 0) {
|
||||
if (this.selectionMode === 'single') {
|
||||
selectedNodes = [...[value[value.length - 1]].map((uploadedFile) => uploadedFile.data)];
|
||||
} else {
|
||||
selectedNodes = [...value.map((uploadedFile) => uploadedFile.data)];
|
||||
}
|
||||
this.selectedNodes = [...selectedNodes];
|
||||
}
|
||||
this.selectedNodes = [...selectedNodes];
|
||||
}
|
||||
}
|
||||
|
||||
this.onFileUploadEvent(value[0]);
|
||||
});
|
||||
this.onFileUploadEvent(value[0]);
|
||||
});
|
||||
|
||||
this.uploadService.fileUploadDeleted
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFileUploadEvent(value));
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFileUploadEvent(value));
|
||||
|
||||
this.contentService.folderCreated
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
@@ -364,7 +397,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
getCurrentDocumentListNode(): MinimalNodeEntity[] {
|
||||
if (this.documentList.folderNode) {
|
||||
return [{ entry: this.documentList.folderNode }];
|
||||
return [{entry: this.documentList.folderNode}];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
@@ -464,7 +497,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
if (this.contentService.hasAllowableOperations(contentEntry, 'update')) {
|
||||
this.dialog.open(VersionManagerDialogAdapterComponent, {
|
||||
data: { contentEntry, showComments, allowDownload },
|
||||
data: {contentEntry, showComments, allowDownload},
|
||||
panelClass: 'adf-version-manager-dialog',
|
||||
width: '630px'
|
||||
});
|
||||
@@ -475,7 +508,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
onAspectUpdate(event: any) {
|
||||
this.dialogAspectListService.openAspectListDialog(event.value.entry.id).subscribe((aspectList) => {
|
||||
this.nodeService.updateNode(event.value.entry.id, {aspectNames : [...aspectList]}).subscribe(() => {
|
||||
this.nodeService.updateNode(event.value.entry.id, {aspectNames: [...aspectList]}).subscribe(() => {
|
||||
this.openSnackMessageInfo('Node Aspects Updated');
|
||||
});
|
||||
});
|
||||
@@ -687,9 +720,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
onFilterSelected(activeFilters: FilterSearch[]) {
|
||||
if (activeFilters.length) {
|
||||
this.navigateToFilter(activeFilters);
|
||||
this.navigateToFilter(activeFilters);
|
||||
} else {
|
||||
this.clearFilterNavigation();
|
||||
this.clearFilterNavigation();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -705,7 +738,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
objectFromMap[filter.key] = paramValue;
|
||||
});
|
||||
|
||||
this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });
|
||||
this.router.navigate([], {relativeTo: this.route, queryParams: objectFromMap});
|
||||
}
|
||||
|
||||
clearFilterNavigation() {
|
||||
|
||||
+8
-15
@@ -15,26 +15,19 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Observable, of, Subject } from 'rxjs';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
import {
|
||||
AlfrescoApiService,
|
||||
EcmModelService,
|
||||
LogService,
|
||||
FormService,
|
||||
FormOutcomeEvent
|
||||
} from '@alfresco/adf-core';
|
||||
TaskFormService
|
||||
} from '@alfresco/adf-process-services';
|
||||
import { AlfrescoApiService, LogService } from '@alfresco/adf-core';
|
||||
|
||||
@Injectable()
|
||||
export class FakeFormService extends FormService {
|
||||
executeOutcome = new Subject<FormOutcomeEvent>();
|
||||
export class FakeTaskFormService extends TaskFormService {
|
||||
|
||||
constructor(
|
||||
ecmModelService: EcmModelService,
|
||||
apiService: AlfrescoApiService,
|
||||
protected logService: LogService
|
||||
) {
|
||||
super(ecmModelService, apiService, logService);
|
||||
constructor(apiService: AlfrescoApiService, logService: LogService) {
|
||||
super(apiService, logService);
|
||||
}
|
||||
|
||||
public getRestFieldValues(
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
import { Component, ViewChild, OnDestroy, OnInit } from '@angular/core';
|
||||
import { FormModel, FormService, LogService, FormOutcomeEvent } from '@alfresco/adf-core';
|
||||
import { FormComponent } from '@alfresco/adf-process-services';
|
||||
import { FormComponent, EditorService } from '@alfresco/adf-process-services';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
@@ -42,7 +42,7 @@ export class FormListComponent implements OnInit, OnDestroy {
|
||||
showValidationIcon = false;
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(private formService: FormService, private logService: LogService) {
|
||||
constructor(private formService: FormService, private editorService: EditorService, private logService: LogService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -63,7 +63,7 @@ export class FormListComponent implements OnInit, OnDestroy {
|
||||
onRowDblClick(event: CustomEvent<any>) {
|
||||
const rowForm = event.detail.value.obj;
|
||||
|
||||
this.formService.getFormDefinitionById(rowForm.id).subscribe((formModel) => {
|
||||
this.editorService.getFormDefinitionById(rowForm.id).subscribe((formModel) => {
|
||||
const form = this.formService.parseForm(formModel.formDefinition);
|
||||
this.form = form;
|
||||
});
|
||||
|
||||
@@ -22,8 +22,11 @@ import {
|
||||
FormOutcomeEvent,
|
||||
CoreAutomationService
|
||||
} from '@alfresco/adf-core';
|
||||
import {
|
||||
TaskFormService
|
||||
} from '@alfresco/adf-process-services';
|
||||
import { InMemoryFormService } from '../../services/in-memory-form.service';
|
||||
import { FakeFormService } from './fake-form.service';
|
||||
import { FakeTaskFormService } from './fake-tak-form.service';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
@@ -31,7 +34,7 @@ import { takeUntil } from 'rxjs/operators';
|
||||
selector: 'app-form-loading',
|
||||
templateUrl: './form-loading.component.html',
|
||||
styleUrls: ['./form-loading.component.scss'],
|
||||
providers: [{ provide: FormService, useClass: FakeFormService }]
|
||||
providers: [{ provide: FakeTaskFormService, useClass: TaskFormService }]
|
||||
})
|
||||
export class FormLoadingComponent implements OnInit, OnDestroy {
|
||||
form: FormModel;
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
(preview)="showPreview($event)">
|
||||
</adf-document-list>
|
||||
|
||||
<adf-viewer
|
||||
<adf-alfresco-viewer
|
||||
[(showViewer)]="showViewer"
|
||||
[overlayMode]="isOverlay"
|
||||
[nodeId]="nodeId">
|
||||
</adf-viewer>
|
||||
</adf-alfresco-viewer>
|
||||
|
||||
@@ -35,8 +35,7 @@ import {
|
||||
ScriptFilesApi
|
||||
} from '@alfresco/js-api';
|
||||
import {
|
||||
FORM_FIELD_VALIDATORS, FormRenderingService, FormService,
|
||||
DynamicTableRow, ValidateDynamicTableRowEvent, AppConfigService, PaginationComponent, UserPreferenceValues,
|
||||
FORM_FIELD_VALIDATORS, FormRenderingService, FormService, AppConfigService, PaginationComponent, UserPreferenceValues,
|
||||
AlfrescoApiService, UserPreferencesService, LogService, DataCellEvent, NotificationService
|
||||
} from '@alfresco/adf-core';
|
||||
|
||||
@@ -54,10 +53,12 @@ import {
|
||||
TaskFiltersComponent,
|
||||
TaskListComponent,
|
||||
ProcessFormRenderingService,
|
||||
APP_LIST_LAYOUT_LIST
|
||||
APP_LIST_LAYOUT_LIST,
|
||||
ValidateDynamicTableRowEvent,
|
||||
DynamicTableRow
|
||||
} from '@alfresco/adf-process-services';
|
||||
import { Subject } from 'rxjs';
|
||||
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
|
||||
import { CustomStencil01 } from './custom-editor/custom-editor.component';
|
||||
import { DemoFieldValidator } from './demo-field-validator';
|
||||
import { PreviewService } from '../../services/preview.service';
|
||||
import { Location } from '@angular/common';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<div fxFlex="50" class="app-rich-text-editor-col app-rich-text-editor-col-sx">
|
||||
<h1 class="app-rich-text-editor-col-title">Rich Text Editor</h1>
|
||||
<adf-rich-text-editor [data]="sampleData" #textEditor></adf-rich-text-editor>
|
||||
<adf-cloud-rich-text-editor [data]="sampleData" #textEditor></adf-cloud-rich-text-editor>
|
||||
</div>
|
||||
<div fxFlex="50" class="app-rich-text-editor-col app-rich-text-editor-col-rx">
|
||||
<h1 class="app-rich-text-editor-col-title">Output Data</h1>
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
||||
import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';
|
||||
import { OutputData } from '@editorjs/editorjs';
|
||||
import { RichTextEditorComponent as AdfRichTextEditorComponent } from '@alfresco/adf-core';
|
||||
import { RichTextEditorComponent as AdfRichTextEditorComponent } from '@alfresco/adf-process-services-cloud';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { Subject } from 'rxjs';
|
||||
|
||||
@@ -26,7 +26,7 @@ import { Subject } from 'rxjs';
|
||||
templateUrl: './rich-text-editor.component.html',
|
||||
styleUrls: ['./rich-text-editor.component.scss']
|
||||
})
|
||||
export class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||
export class RichTextEditorComponent implements AfterViewInit, OnDestroy {
|
||||
|
||||
@ViewChild('textEditor')
|
||||
textEditor: AdfRichTextEditorComponent;
|
||||
@@ -91,11 +91,6 @@ export class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy
|
||||
]
|
||||
};
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit(): void {
|
||||
}
|
||||
|
||||
ngAfterViewInit(): void {
|
||||
this.textEditor.outputData$.pipe(
|
||||
takeUntil(this.onDestroy$)
|
||||
|
||||
@@ -19,6 +19,7 @@ import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { RichTextEditorComponent } from './rich-text-editor.component';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
import { RichTextEditorModule } from '@alfresco/adf-process-services-cloud';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||
@@ -37,7 +38,8 @@ const routes: Routes = [
|
||||
CoreModule,
|
||||
RouterModule.forChild(routes),
|
||||
ContentModule.forChild(),
|
||||
FlexLayoutModule
|
||||
FlexLayoutModule,
|
||||
RichTextEditorModule
|
||||
]
|
||||
})
|
||||
export class AppRichTextEditorModule { }
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { QueryBody } from '@alfresco/js-api';
|
||||
import { SearchConfigurationInterface } from '@alfresco/adf-core';
|
||||
import { SearchConfigurationInterface } from '@alfresco/adf-content-services';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
|
||||
import { Pagination, QueryBody, MinimalNodeEntity } from '@alfresco/js-api';
|
||||
import { SearchComponent } from '@alfresco/adf-content-services';
|
||||
import { ThumbnailService, SearchService, SearchConfigurationService } from '@alfresco/adf-core';
|
||||
import { ThumbnailService } from '@alfresco/adf-core';
|
||||
import { SearchService, SearchConfigurationService, SearchComponent } from '@alfresco/adf-content-services';
|
||||
import { TestSearchConfigurationService } from './search-config-test.service';
|
||||
|
||||
@Component({
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { Pagination, ResultSetPaging } from '@alfresco/js-api';
|
||||
import { SearchConfiguration, SearchForm, SearchQueryBuilderService } from '@alfresco/adf-content-services';
|
||||
import { SearchService, ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { SearchConfiguration, SearchForm, SearchQueryBuilderService, SearchService } from '@alfresco/adf-content-services';
|
||||
import { ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { combineLatest, Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||
import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { Pagination, ResultSetPaging } from '@alfresco/js-api';
|
||||
import { SearchForm, SearchQueryBuilderService } from '@alfresco/adf-content-services';
|
||||
import { SearchService, ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { SearchForm, SearchQueryBuilderService, SearchService } from '@alfresco/adf-content-services';
|
||||
import { ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { combineLatest, Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
|
||||
+40
-37
@@ -1,7 +1,4 @@
|
||||
<div class="adf-setting-container">
|
||||
<mat-toolbar color="primary" class="adf-setting-toolbar">
|
||||
<h3>{{'CORE.HOST_SETTINGS.TITLE' | translate}}</h3>
|
||||
</mat-toolbar>
|
||||
<mat-card class="adf-setting-card">
|
||||
<form id="host-form" [formGroup]="form" (submit)="onSubmit(form.value)" (keydown)="keyDownFunction($event)">
|
||||
|
||||
@@ -14,11 +11,11 @@
|
||||
</mat-form-field>
|
||||
|
||||
<div class="adf-authentication-type">
|
||||
<div> {{'CORE.HOST_SETTINGS.TYPE-AUTH' | translate }} : </div>
|
||||
<div> {{'APP.HOST_SETTINGS.TYPE-AUTH' | translate }} : </div>
|
||||
<mat-radio-group formControlName="authType" >
|
||||
<mat-radio-button value="BASIC">{{'CORE.HOST_SETTINGS.BASIC' | translate }}
|
||||
<mat-radio-button value="BASIC">{{'APP.HOST_SETTINGS.BASIC' | translate }}
|
||||
</mat-radio-button>
|
||||
<mat-radio-button value="OAUTH">{{'CORE.HOST_SETTINGS.SSO' | translate }}
|
||||
<mat-radio-button value="OAUTH">{{'APP.HOST_SETTINGS.SSO' | translate }}
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
</div>
|
||||
@@ -26,14 +23,14 @@
|
||||
<ng-container *ngIf="isALL() || isECM()">
|
||||
<mat-card-content>
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{'CORE.HOST_SETTINGS.CS-HOST' | translate }}</mat-label>
|
||||
<mat-label>{{'APP.HOST_SETTINGS.CS-HOST' | translate }}</mat-label>
|
||||
<input matInput [formControl]="ecmHost" data-automation-id="ecmHost" type="text"
|
||||
id="ecmHost" placeholder="http(s)://host|ip:port(/path)">
|
||||
<mat-error *ngIf="ecmHost.hasError('pattern')">
|
||||
{{ 'CORE.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
</mat-error>
|
||||
<mat-error *ngIf="ecmHost.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<p>
|
||||
@@ -43,14 +40,14 @@
|
||||
<ng-container *ngIf="isALL() || isBPM()">
|
||||
<mat-card-content>
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{'CORE.HOST_SETTINGS.BP-HOST' | translate }}</mat-label>
|
||||
<mat-label>{{'APP.HOST_SETTINGS.BP-HOST' | translate }}</mat-label>
|
||||
<input matInput [formControl]="bpmHost" data-automation-id="bpmHost" type="text"
|
||||
id="bpmHost" placeholder="http(s)://host|ip:port(/path)">
|
||||
<mat-error *ngIf="bpmHost.hasError('pattern')">
|
||||
{{ 'CORE.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
</mat-error>
|
||||
<mat-error *ngIf="bpmHost.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</mat-card-content>
|
||||
@@ -63,10 +60,10 @@
|
||||
<input matInput name="identityHost" id="identityHost" formControlName="identityHost"
|
||||
placeholder="http(s)://host|ip:port(/path)">
|
||||
<mat-error *ngIf="identityHost.hasError('pattern')">
|
||||
{{ 'CORE.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
</mat-error>
|
||||
<mat-error *ngIf="identityHost.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</mat-card-content>
|
||||
@@ -79,81 +76,87 @@
|
||||
<input matInput name="host" id="oauthHost" formControlName="host"
|
||||
placeholder="http(s)://host|ip:port(/path)">
|
||||
<mat-error *ngIf="host.hasError('pattern')">
|
||||
{{ 'CORE.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.NOT_VALID'| translate }}
|
||||
</mat-error>
|
||||
<mat-error *ngIf="host.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.CLIENT'| translate }}</mat-label>
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.CLIENT'| translate }}</mat-label>
|
||||
<input matInput name="clientId" id="clientId" formControlName="clientId"
|
||||
placeholder="Client Id">
|
||||
<mat-error *ngIf="clientId.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.SCOPE'| translate }}</mat-label>
|
||||
<input matInput name="{{ 'CORE.HOST_SETTINGS.SCOPE'| translate }}"
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.SCOPE'| translate }}</mat-label>
|
||||
<input matInput name="{{ 'APP.HOST_SETTINGS.SCOPE'| translate }}"
|
||||
formControlName="scope" placeholder="Scope Id">
|
||||
<mat-error *ngIf="scope.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.SECRET'| translate }}</mat-label>
|
||||
<input matInput name="{{ 'CORE.HOST_SETTINGS.SECRET'| translate }}"
|
||||
formControlName="secret" placeholder="{{ 'CORE.HOST_SETTINGS.SECRET'| translate }}">
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.SECRET'| translate }}</mat-label>
|
||||
<input matInput name="{{ 'APP.HOST_SETTINGS.SECRET'| translate }}"
|
||||
formControlName="secret" placeholder="{{ 'APP.HOST_SETTINGS.SECRET'| translate }}">
|
||||
<mat-error *ngIf="secret.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<label for="silentLogin">{{ 'CORE.HOST_SETTINGS.SILENT'| translate }}</label>
|
||||
<label for="silentLogin">{{ 'APP.HOST_SETTINGS.SILENT'| translate }}</label>
|
||||
<mat-slide-toggle class="adf-full-width" name="silentLogin" [color]="'primary'"
|
||||
formControlName="silentLogin">
|
||||
</mat-slide-toggle>
|
||||
|
||||
<label for="implicitFlow">{{ 'CORE.HOST_SETTINGS.IMPLICIT-FLOW'| translate }}</label>
|
||||
<label for="implicitFlow">{{ 'APP.HOST_SETTINGS.IMPLICIT-FLOW'| translate }}</label>
|
||||
<mat-slide-toggle class="adf-full-width" name="implicitFlow" [color]="'primary'"
|
||||
formControlName="implicitFlow">
|
||||
</mat-slide-toggle>
|
||||
|
||||
<ng-container *ngIf="supportsCodeFlow">
|
||||
<label for="codeFlow">{{ 'CORE.HOST_SETTINGS.CODE-FLOW'| translate }}</label>
|
||||
<mat-slide-toggle class="adf-full-width" name="codeFlow" [color]="'primary'"
|
||||
formControlName="codeFlow">
|
||||
</mat-slide-toggle>
|
||||
</ng-container>
|
||||
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.REDIRECT'| translate }}</mat-label>
|
||||
<input matInput placeholder="{{ 'CORE.HOST_SETTINGS.REDIRECT'| translate }}"
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.REDIRECT'| translate }}</mat-label>
|
||||
<input matInput placeholder="{{ 'APP.HOST_SETTINGS.REDIRECT'| translate }}"
|
||||
name="redirectUri" formControlName="redirectUri">
|
||||
<mat-error *ngIf="redirectUri.hasError('required')">
|
||||
{{ 'CORE.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
{{ 'APP.HOST_SETTINGS.REQUIRED'| translate }}
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.REDIRECT_LOGOUT'| translate }}</mat-label>
|
||||
<input id="logout-url" matInput placeholder="{{ 'CORE.HOST_SETTINGS.REDIRECT_LOGOUT'| translate }}"
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.REDIRECT_LOGOUT'| translate }}</mat-label>
|
||||
<input id="logout-url" matInput placeholder="{{ 'APP.HOST_SETTINGS.REDIRECT_LOGOUT'| translate }}"
|
||||
name="redirectUriLogout" formControlName="redirectUriLogout">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="adf-full-width">
|
||||
<mat-label>{{ 'CORE.HOST_SETTINGS.PUBLIC_URLS'| translate }}</mat-label>
|
||||
<input id="public-url" matInput placeholder="{{ 'CORE.HOST_SETTINGS.PUBLIC_URLS'| translate }}"
|
||||
<mat-label>{{ 'APP.HOST_SETTINGS.PUBLIC_URLS'| translate }}</mat-label>
|
||||
<input id="public-url" matInput placeholder="{{ 'APP.HOST_SETTINGS.PUBLIC_URLS'| translate }}"
|
||||
name="publicUrls" formControlName="publicUrls">
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
</ng-container>
|
||||
<mat-card-actions class="adf-actions">
|
||||
<mat-card-actions align="end">
|
||||
<button mat-button (click)="onCancel()" color="primary">
|
||||
{{'CORE.HOST_SETTINGS.BACK' | translate }}
|
||||
{{'APP.HOST_SETTINGS.BACK' | translate }}
|
||||
</button>
|
||||
<button type="submit" id="host-button" class="adf-login-button" mat-raised-button
|
||||
color="primary" data-automation-id="host-button"
|
||||
[disabled]="!form.valid">
|
||||
{{'CORE.HOST_SETTINGS.APPLY' | translate }}
|
||||
{{'APP.HOST_SETTINGS.APPLY' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
</form>
|
||||
-18
@@ -16,24 +16,6 @@
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.adf-setting-card-padding {
|
||||
width: 50%;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.adf-settings-link-icon {
|
||||
position: relative;
|
||||
top: 6px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.adf-settings-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.adf-full-width {
|
||||
width: 100%;
|
||||
}
|
||||
+20
-11
@@ -17,10 +17,7 @@
|
||||
|
||||
import { Component, EventEmitter, Output, ViewEncapsulation, OnInit, Input } from '@angular/core';
|
||||
import { Validators, UntypedFormGroup, UntypedFormBuilder, UntypedFormControl } from '@angular/forms';
|
||||
import { AppConfigService, AppConfigValues } from '../app-config/app-config.service';
|
||||
import { StorageService } from '../services/storage.service';
|
||||
import { AlfrescoApiService } from '../services/alfresco-api.service';
|
||||
import { OauthConfigModel } from '../models/oauth-config.model';
|
||||
import { AppConfigService, AppConfigValues, StorageService, AlfrescoApiService, OauthConfigModel, AuthenticationService } from '@alfresco/adf-core';
|
||||
import { ENTER } from '@angular/cdk/keycodes';
|
||||
|
||||
export const HOST_REGEX = '^(http|https):\/\/.*[^/]$';
|
||||
@@ -47,8 +44,8 @@ export class HostSettingsComponent implements OnInit {
|
||||
form: UntypedFormGroup;
|
||||
|
||||
/** Emitted when the URL is invalid. */
|
||||
// eslint-disable-next-line @angular-eslint/no-output-native
|
||||
@Output()
|
||||
// eslint-disable-next-line @angular-eslint/no-output-native
|
||||
error = new EventEmitter<string>();
|
||||
|
||||
/** Emitted when the user cancels the changes. */
|
||||
@@ -56,15 +53,17 @@ export class HostSettingsComponent implements OnInit {
|
||||
cancel = new EventEmitter<boolean>();
|
||||
|
||||
/** Emitted when the changes are successfully applied. */
|
||||
// eslint-disable-next-line @angular-eslint/no-output-native
|
||||
@Output()
|
||||
// eslint-disable-next-line @angular-eslint/no-output-native
|
||||
success = new EventEmitter<boolean>();
|
||||
|
||||
constructor(private formBuilder: UntypedFormBuilder,
|
||||
private storageService: StorageService,
|
||||
private alfrescoApiService: AlfrescoApiService,
|
||||
private appConfig: AppConfigService) {
|
||||
}
|
||||
constructor(
|
||||
private formBuilder: UntypedFormBuilder,
|
||||
private storageService: StorageService,
|
||||
private alfrescoApiService: AlfrescoApiService,
|
||||
private appConfig: AppConfigService,
|
||||
private auth: AuthenticationService
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
if (this.providers.length === 1) {
|
||||
@@ -149,6 +148,7 @@ export class HostSettingsComponent implements OnInit {
|
||||
secret: oauth.secret,
|
||||
silentLogin: oauth.silentLogin,
|
||||
implicitFlow: oauth.implicitFlow,
|
||||
codeFlow: oauth.codeFlow,
|
||||
publicUrls: [oauth.publicUrls]
|
||||
});
|
||||
}
|
||||
@@ -188,6 +188,7 @@ export class HostSettingsComponent implements OnInit {
|
||||
this.storageService.setItem(AppConfigValues.AUTHTYPE, values.authType);
|
||||
|
||||
this.alfrescoApiService.reset();
|
||||
this.auth.reset();
|
||||
this.alfrescoApiService.getInstance().invalidateSession();
|
||||
this.success.emit(true);
|
||||
}
|
||||
@@ -231,6 +232,10 @@ export class HostSettingsComponent implements OnInit {
|
||||
return this.form.get('authType').value === 'OAUTH';
|
||||
}
|
||||
|
||||
get supportsCodeFlow(): boolean {
|
||||
return this.auth.supportCodeFlow;
|
||||
}
|
||||
|
||||
get providersControl(): UntypedFormControl {
|
||||
return this.form.get('providersControl') as UntypedFormControl;
|
||||
}
|
||||
@@ -267,6 +272,10 @@ export class HostSettingsComponent implements OnInit {
|
||||
return this.oauthConfig.get('implicitFlow') as UntypedFormControl;
|
||||
}
|
||||
|
||||
get codeFlow(): UntypedFormControl {
|
||||
return this.oauthConfig.get('codeFlow') as UntypedFormControl;
|
||||
}
|
||||
|
||||
get silentLogin(): UntypedFormControl {
|
||||
return this.oauthConfig.get('silentLogin') as UntypedFormControl;
|
||||
}
|
||||
@@ -1,2 +1 @@
|
||||
This component is only for internal use
|
||||
<adf-host-settings (cancel)="onCancel()" (success)="onSuccess()" (error)="onError($event)"></adf-host-settings>
|
||||
|
||||
@@ -20,6 +20,8 @@ import { SettingsComponent } from './settings.component';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { HostSettingsComponent } from './host-settings.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
@@ -32,8 +34,13 @@ const routes: Routes = [
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild(routes),
|
||||
CoreModule
|
||||
CoreModule,
|
||||
FormsModule,
|
||||
ReactiveFormsModule
|
||||
],
|
||||
declarations: [SettingsComponent]
|
||||
declarations: [
|
||||
SettingsComponent,
|
||||
HostSettingsComponent
|
||||
]
|
||||
})
|
||||
export class AppSettingsModule {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<ng-container *ngIf="sharedLinkId">
|
||||
<adf-viewer
|
||||
<adf-alfresco-viewer
|
||||
(invalidSharedLink)="redirectTo404()"
|
||||
[sharedLinkId]="sharedLinkId"
|
||||
[allowGoBack]="false">
|
||||
</adf-viewer>
|
||||
</adf-alfresco-viewer>
|
||||
</ng-container>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { AppConfigService, AlfrescoApiService, EcmModelService, LogService,
|
||||
import { AppConfigService, LogService,
|
||||
FormFieldOption, FormService, FormValues, FormModel,
|
||||
FormOutcomeModel, FormOutcomeEvent } from '@alfresco/adf-core';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
@@ -43,10 +43,8 @@ export class InMemoryFormService extends FormService {
|
||||
executeOutcome = new Subject<FormOutcomeEvent>();
|
||||
|
||||
constructor(appConfig: AppConfigService,
|
||||
ecmModelService: EcmModelService,
|
||||
apiService: AlfrescoApiService,
|
||||
protected logService: LogService) {
|
||||
super(ecmModelService, apiService, logService);
|
||||
super();
|
||||
this.data = appConfig.get<ProcessServiceData>('activiti');
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
@use '@angular/material' as mat;
|
||||
@import '../../lib/core/src/lib/styles/index';
|
||||
@include mat.core($alfresco-typography);
|
||||
@import '../../lib/core/src/lib/styles/typography';
|
||||
@include mat.core;
|
||||
|
||||
$primary: mat.define-palette($alfresco-accent-orange);
|
||||
$accent: mat.define-palette($alfresco-accent-purple);
|
||||
@@ -10,21 +11,25 @@ $theme: mat.define-light-theme(
|
||||
color: (
|
||||
primary: $primary,
|
||||
accent: $accent,
|
||||
)
|
||||
warn: $warn
|
||||
),
|
||||
typography: $alfresco-typography
|
||||
)
|
||||
);
|
||||
|
||||
@include mat.all-component-themes($theme);
|
||||
@include alfresco-material-theme($theme);
|
||||
|
||||
$typography: map-get($theme, typography);
|
||||
|
||||
body,
|
||||
html {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
font-size: mat.font-size($alfresco-typography, body-1);
|
||||
font-family: mat.font-family($alfresco-typography);
|
||||
line-height: mat.line-height($alfresco-typography, body-1);
|
||||
font-size: mat.font-size($typography, body-1);
|
||||
font-family: mat.font-family($typography);
|
||||
line-height: mat.line-height($typography, body-1);
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2019 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export const environment = {
|
||||
production: true,
|
||||
e2e: false,
|
||||
oidc: true
|
||||
};
|
||||
@@ -17,5 +17,6 @@
|
||||
|
||||
export const environment = {
|
||||
production: false,
|
||||
e2e: true
|
||||
e2e: true,
|
||||
oidc: false
|
||||
};
|
||||
|
||||
@@ -17,5 +17,6 @@
|
||||
|
||||
export const environment = {
|
||||
production: true,
|
||||
e2e: false
|
||||
e2e: false,
|
||||
oidc: false
|
||||
};
|
||||
|
||||
@@ -22,5 +22,6 @@
|
||||
|
||||
export const environment = {
|
||||
production: false,
|
||||
e2e: false
|
||||
e2e: false,
|
||||
oidc: false
|
||||
};
|
||||
|
||||
+136
-122
@@ -82,65 +82,61 @@ for more information about installing and using the source code.
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [About Application Modules Component](core/components/about-application.component.md)  | Shows which ADF libraries and plugins an application is using. | [Source](../lib/core/about/about-application-modules/about-application-modules.component.ts) |
|
||||
| [About GitHub Link Component](core/components/about-github-link.component.md)  | Shows which version of the application is running based on the latest GitHub commit, as well as the server settings for the application. | [Source](../lib/core/about/about-github-link/about-github-link.component.ts) |
|
||||
| [About Product Version Component](core/components/about-product-version.component.md)  | Shows which version of Process Services (BPM) and Content Services (ECM) an application is running. It also shows the relevant license information, application status and Alfresco modules running in an application. | [Source](../lib/core/about/about-product-version/about-product-version.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/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/components/comment-list.component.md) | Shows a list of comments. | [Source](../lib/core/comments/comment-list.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/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/components/datatable.component.md) | Displays data as a table with customizable columns and presentation. | [Source](../lib/core/datatable/components/datatable/datatable.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) |
|
||||
| [Empty list component](core/components/empty-list.component.md) | Displays a message indicating that a list is empty. | [Source](../lib/core/datatable/components/empty-list/empty-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 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) |
|
||||
| [Form List Component](core/components/form-list.component.md) | Shows forms as a list. | [Source](../lib/core/form/components/form-list.component.ts) |
|
||||
| [Header component](core/components/header.component.md) | Reusable header for Alfresco applications. | [Source](../lib/core/layout/components/header/header.component.ts) |
|
||||
| [Host settings component](core/components/host-settings.component.md)  | Validates the URLs for ACS and APS and saves them in the user's local storage | [Source](../lib/core/settings/host-settings.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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [Json Cell component](core/components/json-cell.component.md) | Shows a JSON-formatted value inside a datatable component. | [Source](../lib/core/datatable/components/json-cell/json-cell.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 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 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) |
|
||||
| [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/login/components/login.component.ts) |
|
||||
| [About Application Modules Component](core/components/about-application.component.md)  | Shows which ADF libraries and plugins an application is using. | [Source](../lib/core/src/lib/about/about-application-modules/about-application-modules.component.ts) |
|
||||
| [About GitHub Link Component](core/components/about-github-link.component.md)  | Shows which version of the application is running based on the latest GitHub commit, as well as the server settings for the application. | [Source](../lib/core/src/lib/about/about-github-link/about-github-link.component.ts) |
|
||||
| [About Product Version Component](core/components/about-product-version.component.md)  | Shows which version of Process Services (BPM) and Content Services (ECM) an application is running. It also shows the relevant license information, application status and Alfresco modules running in an application. | [Source](../lib/core/src/lib/about/about-product-version/about-product-version.component.ts) |
|
||||
| [About Component](core/components/about.component.md) | Presentational component to display About information as a set of collapsible panels. | [Source](../lib/core/src/lib/about/about.component.ts) |
|
||||
| [Buttons Menu Component](core/components/buttons-menu.component.md) | Displays buttons on a responsive menu. | [Source](../lib/core/src/lib/buttons-menu/buttons-menu.component.ts) |
|
||||
| [Card View component](core/components/card-view.component.md) | Displays a configurable property list renderer. | [Source](../lib/core/src/lib/card-view/components/card-view/card-view.component.ts) |
|
||||
| [Comment list component](core/components/comment-list.component.md) | Shows a list of comments. | [Source](../lib/core/src/lib/comments/comment-list.component.ts) |
|
||||
| [Comments Component](core/components/comments.component.md) | Displays comments from users involved in a specified environment and allows an involved user to add a comment to a environment. | [Source](../lib/core/src/lib/comments/comments.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/src/lib/datatable/data-column/data-column.component.ts) |
|
||||
| [DataTable component](core/components/datatable.component.md) | Displays data as a table with customizable columns and presentation. | [Source](../lib/core/src/lib/datatable/components/datatable/datatable.component.ts) |
|
||||
| [Empty Content Component](core/components/empty-content.component.md) | Provides a generic "Empty Content" placeholder for components. | [Source](../lib/core/src/lib/templates/empty-content/empty-content.component.ts) |
|
||||
| [Empty list component](core/components/empty-list.component.md) | Displays a message indicating that a list is empty. | [Source](../lib/core/src/lib/datatable/components/empty-list/empty-list.component.ts) |
|
||||
| [Error Content Component](core/components/error-content.component.md) | Displays info about a specific error. | [Source](../lib/core/src/lib/templates/error-content/error-content.component.ts) |
|
||||
| [Form field component](core/components/form-field.component.md) | Represents a UI field in a form. | [Source](../lib/core/src/lib/form/components/form-field/form-field.component.ts) |
|
||||
| [Form List Component](core/components/form-list.component.md) | Shows forms as a list. | [Source](../lib/process-services/src/lib/form/form-list/form-list.component.ts) |
|
||||
| [Header component](core/components/header.component.md) | Reusable header for Alfresco applications. | [Source](../lib/core/src/lib/layout/components/header/header.component.ts) |
|
||||
| [Host settings component](core/components/host-settings.component.md)  | Validates the URLs for ACS and APS and saves them in the user's local storage | [Source](../lib/core/src/lib/settings/host-settings.component.ts) |
|
||||
| [Icon Component](core/components/icon.component.md) | Provides a universal way of rendering registered and named icons. | [Source](../lib/core/src/lib/icon/icon.component.ts) |
|
||||
| [Infinite Pagination component](core/components/infinite-pagination.component.md) | Adds "infinite" pagination to the component it is used with. | [Source](../lib/core/src/lib/pagination/infinite-pagination.component.ts) |
|
||||
| [Info drawer layout component](core/components/info-drawer-layout.component.md) | Displays a sidebar-style information panel. | [Source](../lib/core/src/lib/info-drawer/info-drawer-layout.component.ts) |
|
||||
| [Info Drawer Tab component](core/components/info-drawer-tab.component.md) | Renders tabs in a Info drawer component. | [Source](../lib/core/src/lib/info-drawer/info-drawer.component.ts) |
|
||||
| [Info Drawer component](core/components/info-drawer.component.md) | Displays a sidebar-style information panel with tabs. | [Source](../lib/core/src/lib/info-drawer/info-drawer.component.ts) |
|
||||
| [Json Cell component](core/components/json-cell.component.md) | Shows a JSON-formatted value inside a datatable component. | [Source](../lib/core/src/lib/datatable/components/json-cell/json-cell.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/src/lib/language-menu/language-menu.component.ts) |
|
||||
| [Login Dialog Panel component](core/components/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/src/lib/login/components/login-dialog-panel.component.ts) |
|
||||
| [Login Dialog component](core/components/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/src/lib/login/components/login-dialog.component.ts) |
|
||||
| [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/src/lib/login/components/login.component.ts) |
|
||||
| [Notification History component](core/components/notification-history.component.md)  | This component is in the current status just an experimental component. | |
|
||||
| The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/notifications/components/notification-history.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) |
|
||||
| [Rich Text Editor Component](core/components/rich-text-editor.md) | Displays a rich text editor that allows users to add formatted text | [Source](lib/core/src/lib/rich-text-editor/rich-text-editor.component.ts) |
|
||||
| [Search Text Input Component](core/components/search-text-input.component.md) | Displays a input text that supports autocompletion | [Source](../lib/core/search-text/search-text-input.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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [Snackbar Content Component](core/components/snackbar-content.component.md) | Custom content for Snackbar which allows use icon as action.| [Source](../lib/core/src/lib/snackbar-content/snackbar-content.component.ts) |
|
||||
| The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/src/lib/notifications/components/notification-history.component.ts) | |
|
||||
| [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/src/lib/pagination/pagination.component.ts) |
|
||||
| [Rich Text Editor component](docs/process-services-cloud/rich-text-editor.md) | Wrap Editor.js element to show a Rich Text editor allows to add formatted text. | [Source](lib/process-services-cloud/src/lib/rich-text-editor/rich-text-editor.component.ts) |
|
||||
| [Search Text Input Component](core/components/search-text-input.component.md) | Displays a input text that supports autocompletion | [Source](../lib/core/src/lib/search-text/search-text-input.component.ts) |
|
||||
| [Sidebar action menu component](core/components/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.ts) |
|
||||
| [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.ts) |
|
||||
| [Snackbar Content Component](core/components/snackbar-content.component.md) | Custom content for Snackbar which allows use icon as action. | [Source](../lib/core/src/lib/snackbar-content/snackbar-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/src/lib/sorting-picker/sorting-picker.component.ts) |
|
||||
| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/process-services/src/lib/form/start-form.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 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 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) |
|
||||
| [Toolbar Component](core/components/toolbar.component.md) | Simple container for headers, titles, actions and breadcrumbs. | [Source](../lib/core/toolbar/toolbar.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) |
|
||||
| [Text Mask directive](core/components/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/src/lib/form/components/widgets/text/text-mask.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/src/lib/toolbar/toolbar-divider.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/src/lib/toolbar/toolbar-title.component.ts) |
|
||||
| [Toolbar Component](core/components/toolbar.component.md) | Simple container for headers, titles, actions and breadcrumbs. | [Source](../lib/core/src/lib/toolbar/toolbar.component.ts) |
|
||||
| [User Info component](core/components/user-info.component.md) | Shows user information. | [Source](../lib/core/src/lib/userinfo/components/user-info.component.ts) |
|
||||
| [Viewer component](core/components/viewer.component.md) | Displays content from an ACS repository. | [Source](../lib/core/src/lib/viewer/components/viewer.component.ts) |
|
||||
|
||||
### Directives
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [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) |
|
||||
| [Clipboard directive](core/directives/clipboard.directive.md) | Copies text to the clipboard. | [Source](../lib/core/clipboard/clipboard.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) |
|
||||
| [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) |
|
||||
| [Infinite Select Scroll directive](core/directives/infinite-select-scroll.directive.md) | Load more options to select component if API returns more items | [Source](../lib/core/directives/infinite-select-scroll.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 Delete directive](core/directives/node-delete.directive.md) | Deletes multiple files and folders. | [Source](../lib/core/directives/node-delete.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 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/directives/node-restore.directive.md) | Restores deleted nodes to their original location. | [Source](../lib/core/directives/node-restore.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) |
|
||||
| [Version Compatibility Directive](core/directives/version-compatibility.directive.md) | Enables/disables components based on ACS version in use. | [Source](../lib/core/directives/version-compatibility.directive.ts) |
|
||||
| [Clipboard directive](core/directives/clipboard.directive.md) | Copies text to the clipboard. | [Source](../lib/core/src/lib/clipboard/clipboard.directive.ts) |
|
||||
| [Context Menu directive](core/directives/context-menu.directive.md)  | Adds a context menu to a component. | [Source](../lib/core/src/lib/context-menu/context-menu.directive.ts) |
|
||||
| [Highlight directive](core/directives/highlight.directive.md) | Adds highlighting to selected sections of an HTML element's content. | [Source](../lib/core/src/lib/directives/highlight.directive.ts) |
|
||||
| [Infinite Select Scroll directive](core/directives/infinite-select-scroll.directive.md) | Load more options to select component if API returns more items | [Source](../lib/core/src/lib/directives/infinite-select-scroll.directive.ts) |
|
||||
| [Logout directive](core/directives/logout.directive.md) | Logs the user out when the decorated element is clicked. | [Source](../lib/core/src/lib/directives/logout.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/src/lib/directives/node-download.directive.ts) |
|
||||
| [Upload Directive](core/directives/upload.directive.md) | Uploads content in response to file drag and drop. | [Source](../lib/core/src/lib/directives/upload.directive.ts) |
|
||||
|
||||
### Dialogs
|
||||
|
||||
@@ -152,97 +148,100 @@ for more information about installing and using the source code.
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [Base Card View Update Interface](core/interfaces/base-card-view-update.interface.md) | Specifies required properties and methods for Card View Update service. | [Source](../lib/core/src/lib/card-view/interfaces/base-card-view-update.interface.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/src/lib/card-view/interfaces/card-view-item.interface.ts) |
|
||||
| [Click Notification Interface](core/interfaces/click-notification.interface.md) | | [Source](../lib/core/src/lib/card-view/interfaces/click-notification.interface.ts) |
|
||||
| [DataTableAdapter interface](core/interfaces/datatable-adapter.interface.md) | Defines how table data is supplied to DataTable and Tasklist components. | [Source](../lib/core/src/lib/datatable/data/datatable-adapter.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/src/lib/form/components/widgets/core/form-field-validator.ts) |
|
||||
| [Search Configuration interface](core/interfaces/search-configuration.interface.md) | Provides fine control of parameters to a search. | [Source](../lib/core/src/lib/interface/search-configuration.interface.ts) |
|
||||
| [Update Notification Interface](core/interfaces/update-notification.interface.md) | | [Source](../lib/core/src/lib/card-view/interfaces/update-notification.interface.ts) |
|
||||
|
||||
### Models
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [Bpm User model](core/models/bpm-user.model.md) | Contains information about a Process Services user. | [Source](../lib/core/models/bpm-user.model.ts) |
|
||||
| [Ecm User model](core/models/ecm-user.model.md) | Contains information about a Content Services user. | [Source](../lib/core/models/ecm-user.model.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) |
|
||||
| [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) |
|
||||
| [User Process model](core/models/user-process.model.md) | Represents a Process Services user. | [Source](../lib/core/models/user-process.model.ts) |
|
||||
| [Bpm User model](core/models/bpm-user.model.md) | Contains information about a Process Services user. | [Source](../lib/core/src/lib/models/bpm-user.model.ts) |
|
||||
| [Ecm User model](core/models/ecm-user.model.md) | Contains information about a Content Services user. | [Source](../lib/core/src/lib/models/ecm-user.model.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/src/lib/form/components/widgets/core/form-field.model.ts) |
|
||||
| [Product Version model](core/models/product-version.model.md) | Contains version and license information classes for Alfresco products. | [Source](../lib/core/src/lib/models/product-version.model.ts) |
|
||||
| [User Process model](core/models/user-process.model.md) | Represents a Process Services user. | [Source](../lib/core/src/lib/models/user-process.model.ts) |
|
||||
|
||||
### Pipes
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [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) |
|
||||
| [Decimal Number Pipe](core/pipes/decimal-number.pipe.md) | Transforms a number to have a certain amount of digits in its integer part and also in its decimal part. | [Source](../lib/core/pipes/decimal-number.pipe.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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [Localized Date pipe](core/pipes/localized-date.pipe.md) | Converts a date to a given format and locale. | [Source](../lib/core/pipes/localized-date.pipe.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) |
|
||||
| [Multi Value Pipe](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is the comma , however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [App Config Pipe](core/pipes/app-config.pipe.md) | Retrieves values from the application configuration file directly. | [Source](../lib/core/src/lib/app-config/app-config.pipe.ts) |
|
||||
| [Decimal Number Pipe](core/pipes/decimal-number.pipe.md) | Transforms a number to have a certain amount of digits in its integer part and also in its decimal part. | [Source](../lib/core/src/lib/pipes/decimal-number.pipe.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/src/lib/pipes/file-size.pipe.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/src/lib/pipes/format-space.pipe.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/src/lib/pipes/full-name.pipe.ts) |
|
||||
| [Localized Date pipe](core/pipes/localized-date.pipe.md) | Converts a date to a given format and locale. | [Source](../lib/core/src/lib/pipes/localized-date.pipe.ts) |
|
||||
| [Mime Type Icon pipe](core/pipes/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/src/lib/pipes/mime-type-icon.pipe.ts) |
|
||||
| [Multi Value Pipe](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is the comma , however, you can set your own separator in the params of the pipe. | [Source](../lib/core/src/lib/pipes/multi-value.pipe.ts) |
|
||||
| [Node Name Tooltip pipe](core/pipes/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/content-services/src/lib/pipes/node-name-tooltip.pipe.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/src/lib/pipes/text-highlight.pipe.ts) |
|
||||
| [Time Ago pipe](core/pipes/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/src/lib/pipes/time-ago.pipe.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/src/lib/pipes/user-initial.pipe.ts) |
|
||||
|
||||
### Services
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [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/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) |
|
||||
| [Clipboard service](core/services/clipboard.service.md) | Copies text to the clipboard. | [Source](../lib/core/clipboard/clipboard.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/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) |
|
||||
| [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/process-services/src/lib/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/src/lib/services/alfresco-api.service.ts) |
|
||||
| [App Config service](core/services/app-config.service.md) | Supports app configuration settings, stored server side. | [Source](../lib/core/src/lib/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/process-services/src/lib/app-list/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/src/lib/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/src/lib/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/src/lib/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/src/lib/services/auth-guard.service.ts) |
|
||||
| [Authentication Service](core/services/authentication.service.md) | Provides authentication to ACS and APS. | [Source](../lib/core/src/lib/services/authentication.service.ts) |
|
||||
| [Bpm User service](core/services/bpm-user.service.md) | Gets information about the current Process Services user. | [Source](../lib/core/src/lib/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/src/lib/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. | |
|
||||
| Implements BaseCardViewUpdate. | [Source](../lib/core/src/lib/card-view/services/card-view-update.service.ts) | |
|
||||
| [Clipboard service](core/services/clipboard.service.md) | Copies text to the clipboard. | [Source](../lib/core/src/lib/clipboard/clipboard.service.ts) |
|
||||
| [Comment Content service](core/services/comment-content.service.md) | Adds and retrieves comments for nodes in Content Services. | [Source](../lib/core/src/lib/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/src/lib/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/src/lib/services/content.service.ts) |
|
||||
| [Cookie service](core/services/cookie.service.md) | Stores key-value data items as browser cookies. | [Source](../lib/core/src/lib/common/services/cookie.service.ts) |
|
||||
| [DataTable service](core/services/datatable.service.md) | | [Source](<>) |
|
||||
| [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/src/lib/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/src/lib/services/discovery-api.service.ts) |
|
||||
| [Download zip service](core/services/download-zip.service.md) | Creates and manages downloads. | [Source](../lib/core/src/lib/services/download-zip.service.ts) |
|
||||
| [Ecm User service](core/services/ecm-user.service.md) | Gets information about a Content Services user. | [Source](../lib/core/src/lib/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/content-services/src/lib/common/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 Group service](core/services/identity-group.service.md) | Performs CRUD operations on identity groups. | [Source](../lib/core/services/identity-group.service.ts) |
|
||||
| [Identity role service](core/services/identity-role.service.md) | Provides APIs for working with the Roles in Identity Services. | [Source](../lib/core/services/identity-role.service.ts) |
|
||||
| [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. | [Source](../lib/core/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) | use Nodes Api service instead of this. | [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/notifications/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 access service](core/services/user-access.service.md) | Checks the global and application access of a user | [Source](../lib/core/services/user-access.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) |
|
||||
| [Form service](core/services/form.service.md) | Implements Process Services form methods | [Source](../lib/core/src/lib/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/src/lib/common/services/highlight-transform.service.ts) |
|
||||
| [Identity Group service](core/services/identity-group.service.md) | Performs CRUD operations on identity groups. | [Source](../lib/process-services-cloud/src/lib/group/services/identity-group.service.ts) |
|
||||
| [Identity role service](core/services/identity-role.service.md) | Provides APIs for working with the Roles in Identity Services. | [Source](../lib/core/src/lib/auth/services/identity-role.service.ts) |
|
||||
| [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. | [Source](../lib/process-services-cloud/src/lib/people/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/src/lib/auth/services/jwt-helper.service.ts) |
|
||||
| [Log Service](core/services/log.service.md) | Provides log functionality. | [Source](../lib/core/src/lib/common/services/log.service.ts) |
|
||||
| [Login Dialog service](core/services/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/src/lib/services/login-dialog.service.ts) |
|
||||
| [Nodes Api service](core/services/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/core/src/lib/services/nodes-api.service.ts) |
|
||||
| [Notification Service](core/services/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/src/lib/notifications/services/notification.service.ts) |
|
||||
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](lib/core/src/lib/common/services/page-title.service.ts) |
|
||||
| [People Content service](core/services/people-content.service.md) | Gets information about a Content Services user. | [Source](../lib/core/src/lib/services/people-content.service.ts) |
|
||||
| [People Process service](core/services/people-process.service.md) | Gets information about Process Services users. | [Source](../lib/core/src/lib/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/process-services/src/lib/form/services/process-content.service.ts) |
|
||||
| [Renditions service](core/services/renditions.service.md) | Manages prearranged conversions of content to different formats. | [Source](../lib/core/src/lib/services/renditions.service.ts) |
|
||||
| [Search Configuration service](core/services/search-configuration.service.md) | Provides fine control of parameters to a search. | [Source](../lib/core/src/lib/services/search-configuration.service.ts) |
|
||||
| [Search service](core/services/search.service.md) | Accesses the Content Services Search API. | [Source](../lib/core/src/lib/services/search.service.ts) |
|
||||
| [Shared Links Api service](core/services/shared-links-api.service.md) | Finds shared links to Content Services items. | [Source](lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts) |
|
||||
| [Storage service](core/services/storage.service.md) | Stores items in the form of key-value pairs. | [Source](../lib/core/src/lib/services/storage.service.ts) |
|
||||
| [Thumbnail service](core/services/thumbnail.service.md) | Retrieves an SVG thumbnail image to represent a document type. | [Source](lib/core/src/lib/common/services/thumbnail.service.ts) |
|
||||
| [Translation service](core/services/translation.service.md) | Supports localisation. | [Source](lib/core/src/lib/translation/translation.service.ts) |
|
||||
| [Upload Service](core/services/upload.service.md) | Provides access to various APIs related to file upload features. | [Source](../lib/core/src/lib/services/upload.service.ts) |
|
||||
| [User access service](core/services/user-access.service.md) | Checks the global and application access of a user | [Source](../lib/core/src/lib/services/user-access.service.ts) |
|
||||
| [User Preferences Service](core/services/user-preferences.service.md) | Stores preferences for the app and for individual components. | [Source](../lib/core/src/lib/common/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) |
|
||||
| [APS Content Component](core/widgets/content.widget.md) | Shows the content preview. | [Source](../lib/process-services/src/lib/form/widgets/document/content.widget.ts) |
|
||||
|
||||
<!--core end-->
|
||||
|
||||
@@ -277,6 +276,7 @@ for more information about installing and using the source code.
|
||||
| [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/src/lib/breadcrumb/dropdown-breadcrumb.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/src/lib/upload/components/file-uploading-dialog.component.ts) |
|
||||
| [Like component](content-services/components/like.component.md) | Allows a user to add "likes" to an item. | [Source](../lib/content-services/src/lib/social/like.component.ts) |
|
||||
| [Node Comments Component](content-services/components/node-comments.component.md) | Displays comments from users involved in a specified content and allows an involved user to add a comment to a content. | [Source](../lib/content-services/src/lib/node-comments/node-comments.component.ts) |
|
||||
| [Permission List Component](content-services/components/permission-list.component.md) | Shows node permissions as a table. | [Source](../lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.ts) |
|
||||
| [Rating component](content-services/components/rating.component.md) | Allows a user to add and remove rating to an item. | [Source](../lib/content-services/src/lib/social/rating.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/src/lib/search/components/search-check-list/search-check-list.component.ts) |
|
||||
@@ -311,14 +311,20 @@ for more information about installing and using the source code.
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [Auto Focus directive](content-services/directives/auto-focus.directive.md) | Automatically focuses HTML element after content is initialized. | [Source](../lib/content-services/src/lib/directives/auto-focus.directive.ts) |
|
||||
| [Check Allowable Operation directive](content-services/directives/check-allowable-operation.directive.md) | Selectively disables an HTML element or Angular component. | [Source](../lib/content-services/src/lib/directives/check-allowable-operation.directive.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/src/lib/content-node-share/content-node-share.directive.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/src/lib/upload/directives/file-draggable.directive.ts) |
|
||||
| [Folder Create directive](content-services/directives/folder-create.directive.md) | Creates folders. | [Source](../lib/content-services/src/lib/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/src/lib/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/src/lib/permission-manager/components/inherited-button.directive.ts) |
|
||||
| [Node Counter directive](content-services/directives/node-counter.directive.md) | Appends a counter to an element. | [Source](../lib/content-services/src/lib/directives/node-counter.directive.ts) |
|
||||
| [Node Delete directive](content-services/directives/node-delete.directive.md) | Deletes multiple files and folders. | [Source](../lib/content-services/src/lib/directives/node-delete.directive.ts) |
|
||||
| [Node Favorite directive](content-services/directives/node-favorite.directive.md) | Selectively toggles nodes as favorites. | [Source](../lib/content-services/src/lib/directives/node-favorite.directive.ts) |
|
||||
| [Node Lock directive](content-services/directives/node-lock.directive.md) | Locks or unlocks a node. | [Source](../lib/content-services/src/lib/directives/node-lock.directive.ts) |
|
||||
| [Node Restore directive](content-services/directives/node-restore.directive.md) | Restores deleted nodes to their original location. | [Source](../lib/content-services/src/lib/directives/node-restore.directive.ts) |
|
||||
| [Toggle Icon directive](content-services/directives/toggle-icon.directive.md) | Toggle icon on mouse or keyboard event for a selectable element. | [Source](../lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts) |
|
||||
| [Version Compatibility Directive](content-services/directives/version-compatibility.directive.md) | Enables/disables components based on ACS version in use. | [Source](../lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts) |
|
||||
|
||||
### Dialogs
|
||||
|
||||
@@ -331,6 +337,8 @@ for more information about installing and using the source code.
|
||||
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [Base Card View Content Update interface](content-services/interfaces/base-card-view-content-update.interface.md) | Specifies required properties and methods for Card View Content Update service. | |
|
||||
| Extends from BaseCardViewUpdate. | [Source](../lib/content-services/src/lib/interfaces/base-card-view-content-update.interface.ts) | |
|
||||
| [Search widget interface](content-services/interfaces/search-widget.interface.md) | Specifies required properties for Search filter component widgets. | [Source](../lib/content-services/src/lib/search/models/search-widget.interface.ts) |
|
||||
|
||||
### Models
|
||||
@@ -352,18 +360,23 @@ for more information about installing and using the source code.
|
||||
| Name | Description | Source link |
|
||||
| ---- | ----------- | ----------- |
|
||||
| [Audit Service](content-services/services/audit.service.md) | Manages Audit apps and entries. | [Source](../lib/content-services/src/lib/audit/audit.service.ts) |
|
||||
| [Card View Content Update Service](content-services/services/card-view-content-update.service.md) | Manages Card View properties in the content services environment. | |
|
||||
| Implements BaseCardViewContentUpdate. | [Source](lib/content-services/src/lib/common/services/card-view-content-update.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/src/lib/content-node-selector/content-node-dialog.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/src/lib/document-list/services/custom-resources.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/src/lib/document-list/services/document-actions.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/src/lib/document-list/services/document-list.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/src/lib/document-list/services/folder-actions.service.ts) |
|
||||
| [New Version Uploader service](content-services/services/new-version-uploader.dialog.service.md) | Display a dialog that allows to upload new file version or to manage the current node versions. | [Source](../lib/content-services/src/lib/new-version-uploader/new-version-uploader.service.ts) |
|
||||
| [Node Comments Service](content-services/services/node-comments.service.md) | Adds and retrieves comments for nodes in Content Services. | [Source](../lib/content-services/src/lib/node-comments/services/node-comments.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/src/lib/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/src/lib/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/src/lib/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/src/lib/search/services/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/src/lib/search/services/search-query-builder.service.ts) |
|
||||
| [Sites service](content-services/services/sites.service.md) | Accesses and manipulates sites from a Content Services repository. | [Source](../lib/content-services/src/lib/services/sites.service.ts) |
|
||||
| [Tag service](content-services/services/tag.service.md) | Manages tags in Content Services. | [Source](../lib/content-services/src/lib/tag/services/tag.service.ts) |
|
||||
| [Task Comments service](content-services/services/task-comments.service.md) | Adds and retrieves comments for task and process instances in Process Services. | [Source](../lib/process-services/src/lib/task-comments/services/task-comments.service.ts) |
|
||||
|
||||
<!--content-services end-->
|
||||
|
||||
@@ -403,6 +416,7 @@ for more information about installing and using the source code.
|
||||
| [Start Process component](process-services/components/start-process.component.md) | Starts a process. | [Source](../lib/process-services/src/lib/process-list/components/start-process.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/src/lib/task-list/components/start-task.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/src/lib/attachment/task-attachment-list.component.ts) |
|
||||
| [Task Comments Component](process-services/components/task-comments.component.md) | Displays comments from users involved in a specified task and allows an involved user to add a comment to a task. | [Source](../lib/process-services/src/lib/task-comments/task-comments.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/src/lib/task-list/components/task-details.component.ts) |
|
||||
| [Task Filters component](process-services/components/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/src/lib/task-list/components/task-filters.component.ts) |
|
||||
| [Task Form component](process-services/components/task-form.component.md) | Shows a form for a task. | [Source](../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts) |
|
||||
|
||||
@@ -25,7 +25,7 @@ This document lists all the deprecated ADF v2.x components that were removed for
|
||||
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/src/lib/dialogs/download-zip/download-zip.dialog.ts)
|
||||
- [PR ADF-1443](https://github.com/Alfresco/alfresco-ng2-components/pull/4028): [`DownloadZipDialogComponent`](../../lib/core/src/lib/dialogs/download-zip/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.
|
||||
|
||||
@@ -48,10 +48,10 @@ This document lists all the deprecated ADF v2.x components that were removed for
|
||||
(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/src/lib/models/comment.model.ts) in v2.3.0. Now you
|
||||
can only import it from [`CoreModule`](lib/core/src/lib/core.module.ts).
|
||||
- [`CommentsModule`](lib/core/src/lib/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/src/lib/process.module.ts) but now from [`CoreModule`](lib/core/src/lib/core.module.ts). The old usage was deprecated in v2.3.0.
|
||||
- `CommentProcessModel` was moved into the Core library with the name [`CommentModel`](../../lib/core/src/lib/models/comment.model.ts) in v2.3.0. Now you
|
||||
can only import it from [`CoreModule`](../../lib/core/src/lib/core.module.ts).
|
||||
- [`CommentsModule`](../../lib/core/src/lib/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/src/lib/process.module.ts) but now from [`CoreModule`](../../lib/core/src/lib/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/src/lib/upload/components/base-upload/upload-base.ts) class (emitted when a folder was
|
||||
|
||||
@@ -0,0 +1,474 @@
|
||||
---
|
||||
Title: Alfresco Viewer component
|
||||
Added: 6.0.0
|
||||
Status: Active
|
||||
---
|
||||
|
||||
# [Alfresco Viewer component](../../../lib/content-services/src/lib/viewer/components/alfresco-viewer.component.ts "Defined in alfresco-viewer.component.ts")
|
||||
|
||||
Displays content from an ACS repository.
|
||||
|
||||
See it live: [Viewer Quickstart](https://embed.plnkr.co/iTuG1lFIXfsP95l6bDW6/)
|
||||
|
||||
## Contents
|
||||
|
||||
- [Basic usage](#basic-usage)
|
||||
- [Transclusions](#transclusions)
|
||||
- [Class members](#class-members)
|
||||
- [Properties](#properties)
|
||||
- [Events](#events)
|
||||
- [Keyboard shortcuts](#keyboard-shortcuts)
|
||||
- [Details](#details)
|
||||
- [Integrating with the Document List component](#integrating-with-the-document-list-component)
|
||||
- [Supported file formats](#supported-file-formats)
|
||||
- [Content Renditions](#content-renditions)
|
||||
- [Configuring PDF.js library](#configuring-pdfjs-library)
|
||||
- [Extending the Viewer](#extending-the-viewer)
|
||||
- [Custom layout](#custom-layout)
|
||||
- [Printing](#printing)
|
||||
- [See also](#see-also)
|
||||
|
||||
## Basic usage
|
||||
|
||||
Using with node id:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer
|
||||
[showViewer]="true"
|
||||
[overlayMode]="true"
|
||||
[nodeId]="'d367023a-7ebe-4f3a-a7d0-4f27c43f1045'">
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
Using with shared link:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer
|
||||
[overlayMode]="true"
|
||||
[sharedLinkId]="'WWDg_afiTU6lHEgr4fAbQA'">
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
Note that if you have a URL which contains a shared link ID, you should extract the
|
||||
ID portion and use it with the `sharedLinkId` property rather than using the whole
|
||||
URL with `urlFile`.
|
||||
|
||||
### [Transclusions](../../user-guide/transclusion.md)
|
||||
|
||||
The [Alfresco Viewer component](viewer.component.md) lets you transclude content for the toolbar (and toolbar buttons),
|
||||
the sidebar, thumbnails, and the "Open with" and "More actions" menus.
|
||||
See the [Custom layout](#custom-layout) section for full details of all available tranclusions.
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| allowDownload | `boolean` | true | Toggles downloading. |
|
||||
| allowGoBack | `boolean` | true | Allows `back` navigation |
|
||||
| allowLeftSidebar | `boolean` | false | Allow the left the sidebar. |
|
||||
| allowNavigate | `boolean` | false | Toggles before/next navigation. You can use the arrow buttons to navigate between documents in the collection. |
|
||||
| allowPrint | `boolean` | false | Toggles printing. |
|
||||
| allowRightSidebar | `boolean` | false | Allow the right sidebar. |
|
||||
| canNavigateBefore | `boolean` | true | Toggles the "before" ("<") button. Requires `allowNavigate` to be enabled. |
|
||||
| canNavigateNext | `boolean` | true | Toggles the next (">") button. Requires `allowNavigate` to be enabled. |
|
||||
| maxRetries | `number` | 30 | Number of times the Viewer will retry fetching content Rendition. There is a delay of at least one second between attempts. |
|
||||
| nodeId | `string` | null | Node Id of the file to load. |
|
||||
| overlayMode | `boolean` | false | If `true` then show the Viewer as a full page over the current content. Otherwise fit inside the parent div. |
|
||||
| sharedLinkId | `string` | null | Shared link id (to display shared file). |
|
||||
| showLeftSidebar | `boolean` | false | Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. |
|
||||
| showRightSidebar | `boolean` | false | Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. |
|
||||
| showToolbar | `boolean` | true | Hide or show the toolbar |
|
||||
| showViewer | `boolean` | true | Hide or show the viewer |
|
||||
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded node data. |
|
||||
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded node data. |
|
||||
| versionId | `string` | null | Version Id of the file to load. |
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| close | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when the viewer close |
|
||||
| invalidSharedLink | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the shared link used is not valid. |
|
||||
| navigateBefore | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Before' ("<") button. |
|
||||
| navigateNext | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Next' (">") button. |
|
||||
|
||||
## Keyboard shortcuts
|
||||
|
||||
| Name | Description |
|
||||
| ---- | ----------- |
|
||||
| Esc | Close the viewer (overlay mode only). |
|
||||
| Left | Invoke 'Navigate before' action. |
|
||||
| Right | Invoke 'Navigate next' action. |
|
||||
| Ctrl+F | Activate full-screen mode. |
|
||||
|
||||
## Details
|
||||
|
||||
### Integrating with the Document List component
|
||||
|
||||
Below is the most simple integration of the Viewer and
|
||||
[Document List](../../content-services/components/document-list.component.md) components within your custom component:
|
||||
|
||||
```html
|
||||
<adf-document-list
|
||||
currentFolderId="-my-"
|
||||
(preview)="showPreview($event)">
|
||||
</adf-document-list>
|
||||
|
||||
<adf-alfresco-viewer
|
||||
[(showViewer)]="showViewer"
|
||||
[overlayMode]="true"
|
||||
[nodeId]="nodeId">
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
The component controller class implementation might look like the following:
|
||||
|
||||
```ts
|
||||
export class OverlayViewerComponent {
|
||||
|
||||
@Input()
|
||||
showViewer: boolean = false;
|
||||
|
||||
nodeId: string;
|
||||
|
||||
showPreview(event) {
|
||||
if (event.value.entry.isFile) {
|
||||
this.nodeId = event.value.entry.id;
|
||||
this.showViewer = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Supported file formats
|
||||
|
||||
The [Alfresco Viewer component](viewer.component.md) consists of separate Views that handle particular file types or type families based on either a file extension or a mime type:
|
||||
|
||||
- PDF View
|
||||
- application/pdf
|
||||
- \*.pdf
|
||||
- Image View
|
||||
- image/png
|
||||
- image/jpeg
|
||||
- image/gif
|
||||
- image/bmp
|
||||
- image/svg+xml
|
||||
- \*.png
|
||||
- \*.jpg
|
||||
- \*.jpeg
|
||||
- \*.gif
|
||||
- \*.bpm
|
||||
- \*.svg
|
||||
- Text View
|
||||
- text/plain
|
||||
- text/csv
|
||||
- text/xml
|
||||
- text/html
|
||||
- application/x-javascript
|
||||
- \*.txt
|
||||
- \*.xml
|
||||
- \*.js
|
||||
- \*.html
|
||||
- \*.json
|
||||
- \*.ts
|
||||
- Media View
|
||||
- video/mp4
|
||||
- video/webm
|
||||
- video/ogg
|
||||
- audio/mpeg
|
||||
- audio/ogg
|
||||
- audio/wav
|
||||
- \*.wav
|
||||
- \*.mp4
|
||||
- \*.mp3
|
||||
- \*.webm
|
||||
- \*.ogg
|
||||
|
||||
### Content Renditions
|
||||
|
||||
For those extensions and mime types that cannot be natively displayed in the browser, the Viewer will try to fetch the corresponding rendition using the [renditions service api](../services/renditions.service.md).
|
||||
|
||||
For the full list of supported types please refer to: [File types that support preview and thumbnail generation](http://docs.alfresco.com/5.2/references/valid-transformations-preview.html).
|
||||
|
||||
### Configuring PDF.js library
|
||||
|
||||
Configure your webpack-enabled application with the PDF.js library as follows.
|
||||
|
||||
1. Install pdfjs-dist
|
||||
|
||||
```sh
|
||||
npm install pdfjs-dist
|
||||
```
|
||||
|
||||
2. Update `vendors.ts` by appending the following code. This will enable the [Alfresco Viewer component](viewer.component.md)
|
||||
and compatibility mode for all browsers. It will also configure the web worker for the PDF.js
|
||||
library to render PDF files in the background:
|
||||
|
||||
```ts
|
||||
// PDF.js
|
||||
require('pdfjs-dist/web/compatibility.js');
|
||||
const pdfjsLib = require('pdfjs-dist');
|
||||
pdfjsLib.PDFJS.workerSrc = './pdf.worker.js';
|
||||
require('pdfjs-dist/web/pdf_viewer.js');
|
||||
```
|
||||
|
||||
3. Update the `plugins` section of the `webpack.common.js` file with the following lines:
|
||||
|
||||
```js
|
||||
new CopyWebpackPlugin([
|
||||
...
|
||||
{
|
||||
from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
|
||||
to: 'pdf.worker.js'
|
||||
}
|
||||
])
|
||||
```
|
||||
|
||||
### Extending the Viewer
|
||||
|
||||
#### Internal extension mechanism
|
||||
|
||||
The Viewer supports dynamically-loaded viewer preview extensions, to know more about it [Preview Extension component](../../extensions/components/preview-extension.component.md). This
|
||||
|
||||
#### Code extension mechanism]
|
||||
|
||||
You can define your own custom handler to handle other file formats that are not yet supported by
|
||||
the [Alfresco Viewer component](viewer.component.md). Below is an example that shows how to use the `adf-viewer-extension`
|
||||
to handle 3D data files:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [nodeId]="nodeId">
|
||||
|
||||
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
|
||||
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
|
||||
<threed-viewer
|
||||
[urlFile]="urlFileContent"
|
||||
[extension]="extension">
|
||||
</threed-viewer>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
Note: you need to add the `ng2-3d-editor` dependency to your `package.json` file to make the example above work.
|
||||
|
||||
You can define multiple `adf-viewer-extension` templates if required:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [nodeId]="nodeId">
|
||||
|
||||
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
|
||||
<ng-template let-urlFileContent="urlFileContent">
|
||||
<my-custom-xls-component
|
||||
urlFileContent="urlFileContent">
|
||||
</my-custom-xls-component>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
|
||||
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
|
||||
<ng-template let-urlFileContent="urlFileContent" >
|
||||
<my-custom-txt-component
|
||||
urlFileContent="urlFileContent">
|
||||
</my-custom-txt-component>
|
||||
</ng-template>
|
||||
</adf-viewer-extension>
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
### Custom layout
|
||||
|
||||
The [Alfresco Viewer Component](viewer.component.md) lets you transclude custom content in several different places as
|
||||
explained in the sections below.
|
||||
|
||||
#### Custom toolbar
|
||||
|
||||
You can replace the standard viewer toolbar with your own custom implementation:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer>
|
||||
<adf-alfresco-viewer-toolbar>
|
||||
<h1>toolbar</h1>
|
||||
</adf-alfresco-viewer-toolbar>
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
Everything you put inside the "adf-alfresco-viewer-toolbar" tags will be rendered instead of the
|
||||
standard toolbar.
|
||||
|
||||
#### Custom toolbar buttons
|
||||
|
||||
If you are happy with the custom toolbar's behaviour but want to add some extra buttons
|
||||
then you can do so as shown in the following example:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer>
|
||||
<adf-alfresco-viewer-toolbar-actions>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>alarm</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>backup</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
</button>
|
||||
</adf-alfresco-viewer-toolbar-actions>
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
The result should look like this:
|
||||
|
||||

|
||||
|
||||
#### Custom sidebar
|
||||
|
||||
The [Alfresco Viewer Component](viewer.component.md) also supports custom sidebar components and layouts.
|
||||
Set the `allowRightSidebar` property to `true` to enable this feature.
|
||||
|
||||
The custom sidebar can be injected in two different ways. The first way is to use
|
||||
transclusion, which will display all content placed inside the `<adf-alfresco-viewer-sidebar>` element:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [allowRightSidebar]="true">
|
||||
<adf-alfresco-viewer-sidebar>
|
||||
<h1>My info</h1>
|
||||
</adf-alfresco-viewer-sidebar>
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
The second way to customize the sidebar is to use template injection but note that this only works
|
||||
when using the viewer with `nodeId`.
|
||||
|
||||
```html
|
||||
<ng-template let-node="node" #sidebarTemplate>
|
||||
<adf-content-metadata-card [node]="node"></adf-content-metadata-card>
|
||||
</ng-template>
|
||||
<adf-alfresco-viewer [allowRightSidebar]="true" [sidebarRightTemplate]="sidebarTemplate"></adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
#### Custom thumbnails
|
||||
|
||||
The PDF viewer comes with its own default list of thumbnails but you can replace this
|
||||
by providing a custom template and binding to the context property `viewer` to access the PDFJS.PDFViewer
|
||||
instance.
|
||||
|
||||

|
||||
|
||||
Provide the custom template as in the following example:
|
||||
|
||||
```javascript
|
||||
import { Component, Input } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'custom-thumbnails',
|
||||
template: '<p> Custom Thumbnails Component </p>'
|
||||
})
|
||||
export class CustomThumbnailsComponent {
|
||||
@Input() pdfViewer: any;
|
||||
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
```html
|
||||
<ng-template #customThumbnailsTemplate let-pdfViewer="viewer">
|
||||
<custom-thumbnails [pdfViewer]="pdfViewer"></custom-thumbnails>
|
||||
</ng-template>
|
||||
|
||||
<adf-alfresco-viewer [thumbnailsTemplate]="customThumbnailsTemplate"></adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
#### Custom "Open With" menu
|
||||
|
||||
You can enable a custom "Open With" menu by providing at least one action inside the
|
||||
`adf-alfresco-viewer-open-with` tag:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [nodeId]="nodeId">
|
||||
|
||||
<adf-alfresco-viewer-open-with>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>dialpad</mat-icon>
|
||||
<span>Option 1</span>
|
||||
</button>
|
||||
<button mat-menu-item disabled>
|
||||
<mat-icon>voicemail</mat-icon>
|
||||
<span>Option 2</span>
|
||||
</button>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>notifications_off</mat-icon>
|
||||
<span>Option 3</span>
|
||||
</button>
|
||||
</adf-alfresco-viewer-open-with>
|
||||
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||

|
||||
|
||||
#### Custom "More actions" menu
|
||||
|
||||
You can enable a custom "More actions" menu by providing at least one action inside the `adf-alfresco-viewer-more-actions` tag:
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [nodeId]="nodeId">
|
||||
|
||||
<adf-alfresco-viewer-more-actions>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>dialpad</mat-icon>
|
||||
<span>Action One</span>
|
||||
</button>
|
||||
<button mat-menu-item disabled>
|
||||
<mat-icon>voicemail</mat-icon>
|
||||
<span>Action Two</span>
|
||||
</button>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>notifications_off</mat-icon>
|
||||
<span>Action Three</span>
|
||||
</button>
|
||||
</adf-alfresco-viewer-more-actions>
|
||||
|
||||
</adv-viewer>
|
||||
```
|
||||
|
||||

|
||||
|
||||
#### Custom zoom scaling
|
||||
|
||||
You can set a default zoom scaling value for pdf viewer by adding the following code in `app.config.json`.
|
||||
Note: For the pdf viewer the value has to be within the range of 25 - 1000.
|
||||
|
||||
"adf-alfresco-viewer": {
|
||||
"pdf-viewer-scaling": 150
|
||||
}
|
||||
|
||||
In the same way you can set a default zoom scaling value for the image viewer by adding the following code in `app.config.json`.
|
||||
|
||||
"adf-alfresco-viewer": {
|
||||
"image-viewer-scaling": 150
|
||||
}
|
||||
|
||||
By default the viewer's zoom scaling is set to 100%.
|
||||
|
||||
### Printing
|
||||
|
||||
You can configure the Viewer to let the user print the displayed content. The
|
||||
component will show a "Print" button if the `allowPrint` property is set to
|
||||
true.
|
||||
|
||||
```html
|
||||
<adf-alfresco-viewer [allowPrint]="true">
|
||||
...
|
||||
</adf-alfresco-viewer>
|
||||
```
|
||||
|
||||
You can also use the `print` event to get notification when the user prints some
|
||||
content.
|
||||
|
||||
## See also
|
||||
|
||||
- [Document List component](../../content-services/components/document-list.component.md)
|
||||
- [Preview Extension component](../../extensions/components/preview-extension.component.md)
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
Title: Content User Info component
|
||||
Added: v6.0.0
|
||||
Status: Active
|
||||
Last reviewed: 2023-01-24
|
||||
---
|
||||
|
||||
# [Content User Info component](../../../lib/content-services/src/lib/content-user-info/content-user-info.component.ts "Defined in content-user-info.component.ts")
|
||||
|
||||
Shows user information for `CONTENT` and `CONTENT_SSO` mode.
|
||||
|
||||
## Basic usage
|
||||
|
||||
```html
|
||||
<adf-content-user-info></adf-content-user-info>
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| isLoggedIn | `boolean` | Is user logged in |
|
||||
| EcmUser | `EcmUserModel` | Ecm user model. |
|
||||
| identityUser | `IdentityUserModel` | Identity user model. |
|
||||
| mode | `UserInfoMode` | `UserInfoMode.CONTENT` | current mode. |
|
||||
| bpmBackgroundImage | `string` | | Custom path for the background banner image for APS users. |
|
||||
| EcmBackgroundImage | `string` | | Custom path for the background banner image for ACS users. |
|
||||
| menuPositionX | [`MenuPositionX`](https://github.com/angular/components/blob/master/src/material/menu/menu-positions.ts) | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. |
|
||||
| menuPositionY | [`MenuPositionY`](https://github.com/angular/components/blob/master/src/material/menu/menu-positions.ts) | "below" | Custom choice for opening the menu at the bottom. Can be `above` or `below`. |
|
||||
| namePosition | `string` | "right" | When the username is shown, this defines its position relative to the user info button. Can be `right` or `left`. |
|
||||
| showName | `boolean` | true | Shows/hides the username next to the user info button. |
|
||||
|
||||
## Details
|
||||
|
||||
The component shows a round icon for the user and will show extra information about
|
||||
the user when clicked.
|
||||
@@ -57,7 +57,7 @@ Displays the documents from a repository.
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| additionalSorting | [`DataSorting`](lib/core/src/lib/datatable/data/data-sorting.model.ts) | | Defines default sorting. The format is an array of strings `[key direction, otherKey otherDirection]` i.e. `['name desc', 'nodeType asc']` or `['name asc']`. Set this value if you want a base rule to be added to the sorting apart from the one driven by the header. |
|
||||
| additionalSorting | [`DataSorting`](../../../lib/core/src/lib/datatable/data/data-sorting.model.ts) | | Defines default sorting. The format is an array of strings `[key direction, otherKey otherDirection]` i.e. `['name desc', 'nodeType asc']` or `['name asc']`. Set this value if you want a base rule to be added to the sorting apart from the one driven by the header. |
|
||||
| allowDropFiles | `boolean` | false | When true, this enables you to drop files directly into subfolders shown as items in the list or into another file to trigger updating it's version. When false, the dropped file will be added to the current folder (ie, the one containing all the items shown in the list). See the [Upload directive](../../core/directives/upload.directive.md) for further details about how the file drop is handled. |
|
||||
| contentActions | `boolean` | false | Toggles content actions for each row |
|
||||
| contentActionsPosition | `string` | "right" | Position of the content actions dropdown menu. Can be set to "left" or "right". |
|
||||
@@ -82,7 +82,7 @@ Displays the documents from a repository.
|
||||
| rowStyleClass | `string` | | The CSS class to apply to every row |
|
||||
| selectionMode | `string` | "single" | Row selection mode. Can be null, `single` or `multiple`. For `multiple` mode, you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows. |
|
||||
| showHeader | `ShowHeaderMode` | | Toggles the header |
|
||||
| sorting | `string[] \| `[`DataSorting`](../../../lib/core/datatable/data/data-sorting.model.ts) | ['name', 'asc'] | Defines default sorting. The format is an array of 2 strings `[key, direction]` i.e. `['name', 'desc']` or `['name', 'asc']`. Set this value only if you want to override the default sorting detected by the component based on columns. |
|
||||
| sorting | `string[] \| `[`DataSorting`](../../../lib/core/src/lib/datatable/data/data-sorting.model.ts) | ['name', 'asc'] | Defines default sorting. The format is an array of 2 strings `[key, direction]` i.e. `['name', 'desc']` or `['name', 'asc']`. Set this value only if you want to override the default sorting detected by the component based on columns. |
|
||||
| sortingMode | `"server" \| "client"` | "server" | Defines sorting mode. Can be either `client` (items in the list are sorted client-side) or `server` (the ordering supplied by the server is used without further client-side sorting). Note that the `server` option _does not_ request the server to sort the data before delivering it. |
|
||||
| stickyHeader | `boolean` | false | Toggles the sticky header mode. |
|
||||
| thumbnails | `boolean` | false | Show document thumbnails rather than icons |
|
||||
@@ -99,7 +99,7 @@ Displays the documents from a repository.
|
||||
| nodeClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user clicks a list node |
|
||||
| nodeDblClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user double-clicks a list node |
|
||||
| nodeSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`[]>` | Emitted when the node selection change |
|
||||
| preview | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user acts upon files with either single or double click (depends on `navigation-mode`). Useful for integration with the [Viewer component](../../core/components/viewer.component.md). |
|
||||
| preview | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user acts upon files with either single or double click (depends on `navigation-mode`). Useful for integration with the Viewer component. |
|
||||
| ready | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/content-rest-api/docs/NodePaging.md)`>` | Emitted when the Document List has loaded all items and is ready for use |
|
||||
|
||||
## Details
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
Title: Node Comments Component
|
||||
Added: v5.1.0
|
||||
Status: Active
|
||||
---
|
||||
|
||||
# [Node Comments Component](../../../lib/content-services/src/lib/node-comments/node-comments.component.ts "Defined in node-comments.component.ts")
|
||||
|
||||
Displays comments from users involved in a specified content and allows an involved user to add a comment to a content.
|
||||
|
||||

|
||||
|
||||
## Basic Usage Task
|
||||
|
||||
```html
|
||||
<adf-node-comments
|
||||
[nodeId]="YOUR_NODE_ID"
|
||||
[readOnly]="YOUR_READ_ONLY_FLAG">
|
||||
</adf-node-comments>
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| nodeId | `string` | | The numeric ID of the node. |
|
||||
| readOnly | `boolean` | | Are the comments read only? |
|
||||
@@ -27,9 +27,23 @@ Shows tags for a node.
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| nodeId | `string` | | The identifier of a node. |
|
||||
| showDelete | `boolean` | true | Show delete button |
|
||||
| limitTagsDisplayed | `boolean` | false | Should limit number of tags displayed to as much as fits into container |
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| results | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when a tag is selected. |
|
||||
|
||||
## Details
|
||||
### Limit number of tags displayed initially
|
||||
|
||||
To limit number of tags initially displayed set `limitTagsDisplayed` to `true`.
|
||||
|
||||
```html
|
||||
<adf-tag-node-list
|
||||
[nodeId]="nodeId"
|
||||
[limitTagsDisplayed]="true">
|
||||
</adf-tag-node-list>
|
||||
```
|
||||
Now when tag chips will exceed the size of the container number of displayed chips will be limited to as much as fits together with view more button. At least one tag will always be displayed, when one tag and view more button won't fit into one line the button will be displayed under the tag.
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
---
|
||||
Title: Tree component
|
||||
Added: v6.0.0.0
|
||||
Status: Active
|
||||
Last reviewed: 2023-01-25
|
||||
---
|
||||
|
||||
# [Tree component](../../../lib/content-services/src/lib/tree/components/tree.component.ts "Defined in tree.component.ts")
|
||||
|
||||
Shows the nodes in tree structure, each node containing children is collapsible/expandable. Can be integrated with any datasource extending [Tree service](../../../lib/content-services//src/lib/tree/services/tree.service.ts).
|
||||
|
||||

|
||||
|
||||
## Basic Usage
|
||||
|
||||
```html
|
||||
<adf-tree
|
||||
[displayName]="'Tree display name'"
|
||||
[loadMoreSuffix]="'subnodes'"
|
||||
[emptyContentTemplate]="emptyContentTemplate"
|
||||
[nodeActionsMenuTemplate]="nodeActionsMenuTemplate"
|
||||
(paginationChanged)="onPaginationChanged($event)">
|
||||
</adf-tree>
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- |---------------| --------- | ----------- |
|
||||
| emptyContentTemplate | `TemplateRef` | | Template that will be rendered when no nodes are loaded. |
|
||||
| nodeActionsMenuTemplate | `TemplateRef` | | Template that will be rendered when context menu for given node is opened. |
|
||||
| stickyHeader | `boolean` | false | If set to true header will be sticky. |
|
||||
| selectableNodes | `boolean` | false | If set to true nodes will be selectable. |
|
||||
| displayName | `string` | | Display name for tree title. |
|
||||
| loadMoreSuffix | `string` | | Suffix added to `Load more` string inside load more node. |
|
||||
| expandIcon | `string` | `chevron_right` | Icon shown when node is collapsed. |
|
||||
| collapseIcon | `string` | `expand_more` | Icon showed when node is expanded. |
|
||||
| contextMenuOptions | `any[]` | | Array of context menu options which should be displayed for each row. |
|
||||
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- |----------------------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| paginationChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<PaginationModel>` | Emitted when during loading additional nodes pagination changes. |
|
||||
| contextMenuOptionSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<TreeContextMenuResult<T>>` | Emitted when any context menu option is selected. |
|
||||
|
||||
## Details
|
||||
|
||||
### Defining your own custom datasource
|
||||
|
||||
First of all create custom node interface extending [`TreeNode`](../../../lib/content-services/src/lib/tree/models/tree-node.interface.ts) interface or use [`TreeNode`](../../../lib/content-services/src/lib/tree/models/tree-node.interface.ts) when none extra properties are required.
|
||||
|
||||
```ts
|
||||
export interface CustomNode extends TreeNode
|
||||
```
|
||||
|
||||
Next create custom datasource service extending [`TreeService`](../../../lib/content-services/src/lib/tree/services/tree.service.ts). Datasource service must implement `getSubNodes` method. It has to be able to provide both root level nodes as well as subnodes. If there are more subnodes to load for a given node it should add node with `LoadMoreNode` node type. Example of custom datasource service can be found in [`Category tree datasource service`](../services/category-tree-datasource.service.md).
|
||||
|
||||
```ts
|
||||
@Injectable({...})
|
||||
export class CustomTreeDatasourceService extends TreeService<TreeNode> {
|
||||
...
|
||||
public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number): Observable<TreeResponse<TreeNode>> {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Final step is to provide your custom datasource service as tree service in component using `TreeComponent`.
|
||||
|
||||
```ts
|
||||
providers: [
|
||||
{
|
||||
provide: TreeService,
|
||||
useClass: CustomTreeDatasourceService,
|
||||
},
|
||||
]
|
||||
```
|
||||
|
||||
### Enabling nodes selection and listening to selection changes
|
||||
|
||||
First step is to provide necessary input value.
|
||||
```html
|
||||
<adf-tree
|
||||
[displayName]="'Tree display name'"
|
||||
[loadMoreSuffix]="'subnodes'"
|
||||
[selectableNodes]="true"
|
||||
[emptyContentTemplate]="emptyContentTemplate"
|
||||
[nodeActionsMenuTemplate]="nodeActionsMenuTemplate"
|
||||
(paginationChanged)="onPaginationChanged($event)">
|
||||
</adf-tree>
|
||||
```
|
||||
|
||||
Next inside your component get the `TreeComponent`
|
||||
|
||||
```ts
|
||||
@ViewChild(TreeComponent)
|
||||
public treeComponent: TreeComponent<TreeNode>;
|
||||
```
|
||||
|
||||
and listen to selection changes.
|
||||
|
||||
```ts
|
||||
this.treeComponent.treeNodesSelection.changed.subscribe(
|
||||
(selectionChange: SelectionChange<TreeNode>) => {
|
||||
this.onTreeSelectionChange(selectionChange);
|
||||
}
|
||||
);
|
||||
```
|
||||
@@ -48,7 +48,7 @@ Activates a file upload.
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| beginUpload | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`UploadFilesEvent`](../../../lib/content-services/src/lib/upload/components/upload-files.event.ts)`>` | Emitted when the upload begins. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| permissionEvent | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`PermissionModel`](../../../lib/content-services/src/lib/document-list/models/permissions.model.ts)`>` | Emitted when create permission is missing. |
|
||||
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the file is uploaded successfully. |
|
||||
| updateFileVersion | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<CustomEvent<any>>` | Emitted when dropping a file over another file to update the version. |
|
||||
|
||||
@@ -75,7 +75,7 @@ as the drag/drop target:
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| beginUpload | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`UploadFilesEvent`](../../../lib/content-services/src/lib/upload/components/upload-files.event.ts)`>` | Emitted when the upload begins. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the file is uploaded successfully. |
|
||||
| updateFileVersion | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<CustomEvent<any>>` | Emitted when dropping a file over another file to update the version. |
|
||||
|
||||
@@ -87,7 +87,7 @@ You can intercept the upload process using the `beginUpload` event.
|
||||
|
||||
The event has a type of [`UploadFilesEvent`](../../../lib/content-services/src/lib/upload/components/upload-files.event.ts) and provides the following APIs:
|
||||
|
||||
- **files**: accesses the [`FileInfo`](lib/core/src/lib/utils/file-utils.ts) objects that are prepared for the upload
|
||||
- **files**: accesses the [`FileInfo`](../../../lib/core/src/lib/common/utils/file-utils.ts) objects that are prepared for the upload
|
||||
- **pauseUpload**: pauses the upload and performs additional tasks, like showing the confirmation dialog
|
||||
- **resumeUpload**: resumes the upload process
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ to enrich the features and decrease the restrictions currently applied to node v
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| beginUpload | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`UploadFilesEvent`](../../../lib/content-services/src/lib/upload/components/upload-files.event.ts)`>` | Emitted when the upload begins. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| permissionEvent | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`PermissionModel`](../../../lib/content-services/src/lib/document-list/models/permissions.model.ts)`>` | Emitted when create permission is missing. |
|
||||
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the file is uploaded successfully. |
|
||||
| updateFileVersion | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<CustomEvent<any>>` | Emitted when dropping a file over another file to update the version. |
|
||||
|
||||
@@ -40,7 +40,7 @@ Displays the version history of a node with the ability to upload a new version.
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| uploadCancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when an cancelling during upload. |
|
||||
| uploadError | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when an error occurs during upload. |
|
||||
| uploadError | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when an error occurs during upload. |
|
||||
| uploadSuccess | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<Node>` | Emitted when a file is uploaded successfully. |
|
||||
| viewVersion | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when viewing a version. |
|
||||
|
||||
|
||||
@@ -33,9 +33,9 @@ Displays the new version's minor/major changes and the optional comment of a nod
|
||||
| ---- | ---- | ----------- |
|
||||
| cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an cancelling during upload. |
|
||||
| commentChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the comment is changed. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadErrorEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when an error occurs. |
|
||||
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the file is uploaded successfully. |
|
||||
| uploadStarted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadEvent`](../../../lib/core/events/file.event.ts)`>` | Emitted when the upload starts |
|
||||
| uploadStarted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FileUploadEvent`](../../../lib/core/src/lib/events/file.event.ts)`>` | Emitted when the upload starts |
|
||||
| versionChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when the version is changed. |
|
||||
|
||||
## Details
|
||||
|
||||
@@ -16,5 +16,3 @@ Automatically focuses HTML element after content is initialized.
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
+8
-6
@@ -2,10 +2,10 @@
|
||||
Title: Version Compatibility Directive
|
||||
Added: v3.9.0
|
||||
Status: Active
|
||||
Last reviewed: 2020-23-06
|
||||
Last reviewed: 2022-07-12
|
||||
---
|
||||
|
||||
# [Version Compatibility Directive](lib/core/src/lib/directives/version-compatibility.directive.ts "Defined in version-compatibility.directive.ts")
|
||||
# [Version Compatibility Directive](../../../lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts "Defined in version-compatibility.directive.ts")
|
||||
|
||||
Enables/disables components based on ACS version in use.
|
||||
|
||||
@@ -33,7 +33,7 @@ The directive takes the version specified in the html and compares it to the ver
|
||||
|
||||
This will allow certain features to be only present under specific versions.
|
||||
|
||||
#### Major version
|
||||
### Major version
|
||||
|
||||
```html
|
||||
<button *adf-acs-version="'7'">
|
||||
@@ -41,7 +41,7 @@ This will allow certain features to be only present under specific versions.
|
||||
</button>
|
||||
```
|
||||
|
||||
#### Major and minor version
|
||||
### Major and minor version
|
||||
|
||||
```html
|
||||
<button *adf-acs-version="'6.2'">
|
||||
@@ -49,7 +49,7 @@ This will allow certain features to be only present under specific versions.
|
||||
</button>
|
||||
```
|
||||
|
||||
#### Major, minor and patch version
|
||||
### Major, minor and patch version
|
||||
|
||||
```html
|
||||
<button *adf-acs-version="'6.0.1'">
|
||||
@@ -61,4 +61,6 @@ It can be set to match major, minor and patches of ACS versions. Fox example, if
|
||||
|
||||
If the minimum version required is not matched the component will not be initialized and will disappear from the DOM tree.
|
||||
|
||||
Note, if you don’t place the * in front, the app won’t be able to inject the TemplateRef and ViewContainerRef required for this directive to work.
|
||||
```text
|
||||
Note, if you don’t place the * in front, the app won’t be able to inject the TemplateRef and ViewContainerRef required for this directive to work.
|
||||
```
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
Title: Base Card View Content Update interface
|
||||
Added: v6.0.0
|
||||
Status: Active
|
||||
Last reviewed: 2022-11-25
|
||||
---
|
||||
|
||||
# [Base Card View Content Update interface](../../../lib/content-services/src/lib/interfaces/base-card-view-content-update.interface.ts "Defined in base-card-view-content-update.interface.ts")
|
||||
|
||||
Specifies required properties and methods for [Card View Content Update service](lib/content-services/src/lib/common/services/card-view-content-update.service.ts).
|
||||
Extends from [`BaseCardViewUpdate`](../../../lib/core/src/lib/card-view/interfaces/base-card-view-update.interface.ts).
|
||||
|
||||
## Basic usage
|
||||
|
||||
```ts
|
||||
export interface BaseCardViewContentUpdate {
|
||||
itemUpdated$: Subject<UpdateNotification>;
|
||||
updatedAspect$: Subject<MinimalNode>;
|
||||
|
||||
update(property: CardViewBaseItemModel, newValue: any);
|
||||
updateElement(notification: CardViewBaseItemModel);
|
||||
updateNodeAspect(node: MinimalNode);
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| itemUpdated$ | [`Subject`](http://reactivex.io/documentation/subject.html)`<`[`UpdateNotification`](../../../lib/core/src/lib/card-view/interfaces/update-notification.interface.ts)`>` | | The current updated item. |
|
||||
| updatedAspect$ | [`Subject`](http://reactivex.io/documentation/subject.html)`<`[`MinimalNode`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeMinimalEntry.md)`>`(@alfresco/js-api) | | [`Subject`](http://reactivex.io/documentation/subject.html) holding the current node |
|
||||
|
||||
### Methods
|
||||
|
||||
- **update**(property: [`CardViewBaseItemModel`](../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts), newValue: `any`)<br/>
|
||||
Update itemUpdated$ property.
|
||||
|
||||
- property:\_ [`CardViewBaseItemModel`](../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts) - The property.
|
||||
- newValue:\_ `any` - new value.
|
||||
|
||||
- **updateElement**(notification: [`CardViewBaseItemModel`](../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts))<br/>
|
||||
Update updateItem$ observable.
|
||||
|
||||
- notification:\_ [`CardViewBaseItemModel`](../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts) - The notification.
|
||||
|
||||
- **updateNodeAspect**(node: [`MinimalNode`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeMinimalEntry.md))<br/>
|
||||
Update node aspect observable.
|
||||
- node:\_ [`MinimalNode`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeMinimalEntry.md) - The node.
|
||||
|
||||
## See also
|
||||
|
||||
- [CardViewContentUpdate service](../services/card-view-content-update.service.md)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user