Merge branch 'development' of https://github.com/Alfresco/alfresco-content-app into dev-pionnegru-ACA-2623

This commit is contained in:
pionnegru
2019-12-02 08:40:56 +02:00
75 changed files with 974 additions and 522 deletions
+5
View File
@@ -45,3 +45,8 @@ jobs:
script: npm run build.e2e && SUITE="--suite sharingContent" npm run e2e:docker
- name: Test Suite viewContent&metadata&extensions
script: npm run build.e2e && SUITE="--suite viewer,infoDrawer,extensions" npm run e2e:docker
after_failure:
- alfrescoContainerId=$(docker ps -a | grep 'alfresco-content-repository-community' | awk '{print $1}')
- docker logs $alfrescoContainerId > alfresco.log
- cat alfresco.log
+1 -2
View File
@@ -28,8 +28,7 @@ COPY --from=builder /usr/src/alfresco/licenses ./licenses
RUN addgroup -g ${GROUPID} ${GROUPNAME} && \
adduser -S -u ${USERID} -G ${GROUPNAME} -s "/bin/bash" ${USERNAME} && \
chown -R ${USERNAME}:${GROUPNAME} ./app.config.json && \
chown -R ${USERNAME}:${GROUPNAME} ./index.html && \
chown -R ${USERNAME}:${GROUPNAME} /usr/share/nginx/html && \
chown -R ${USERNAME}:${GROUPNAME} /var/cache/nginx && \
touch /var/run/nginx.pid && \
chown -R ${USERNAME}:${GROUPNAME} /var/run/nginx.pid && \
+8 -7
View File
@@ -30,16 +30,14 @@ There are a number of resources available to help get you started with the Conte
Issues can be raised in [GitHub] or in the Alfresco JIRA project.
Please include a clear description, steps to reproduce and screenshots where appropriate. All issues will be reviewed; bugs will be categorized if reproducible and enhancement/feature suggestions will be considered against existing priorities if the use case serves a general-purpose need.
#### Features added in the latest release
#### What's new in the latest release
- New language translations (Arabic, Czech, Danish, Finnish, Polish and Swedish)
- Automatic display of metadata aspects and properties
- Search result facet improvements
- Various extensibility improvements and enhancements
- Single Log Out
- WCAG AA accessibility improvements
Please refer to the [release notes] for details of all changes.
#### High level feature themes planned for 2019
#### High level feature themes under consideration for future releases
- Extensibility
- Building on the existing framework to further enhance the developer experience
@@ -61,6 +59,7 @@ Read up on our guidelines for [contributing] and then check out one of our issue
| ACA Version | Built with | Tested on |
| ----------- | ---------- | --------- |
| ACA 1.9 | ADF 3.6.0 | ACS 6.2 |
| ACA 1.8 | ADF 3.3.0 | ACS 6.1 |
| ACA 1.7 | ADF 3.0.0 | ACS 6.1 |
| ACA 1.6 | ADF 2.6.1 | ACS 6.1 |
@@ -98,7 +97,9 @@ Read up on our guidelines for [contributing] and then check out one of our issue
| 1.8 | Localizations . | Arabic, Czech, Danish, Finnish, Polish and Swedish |
| 1.8 | Metadata improvements | Automatic display of aspects and properties |
| 1.8 | Search facet improvements | Facet intervals and grouped facet queries |
| 1.8 | Extensibility improvements | Various - see [release notes](https://github.com/Alfresco/alfresco-content-app/releases) for details |
| 1.8 | Extensibility improvements | Various - see [release notes](https://github.com/Alfresco/alfresco-content-app/releases) for details |
| 1.9 | Single Log Out | Users will be automatically logged out from the Content App after logging out from another application in the same browser session |
| 1.9 | Accessibility improvements | Various - see [release notes](https://github.com/Alfresco/alfresco-content-app/releases) for details |
[contributing]: https://github.com/Alfresco/alfresco-content-app/blob/master/CONTRIBUTING.md
[github]: https://github.com/Alfresco/alfresco-content-app/issues
+1 -1
View File
@@ -3,7 +3,7 @@ npm run build.e2e -- --base-href ./
node -e "
const fs = require('fs');
const config = require('./dist/app/app.config.json');
config.baseShareUrl = 'http://localhost:4000/content-app/#/preview/s/';
config.baseShareUrl = 'http://localhost:8080/content-app/#/preview/s/';
fs.writeFileSync(
'./dist/app/app.config.json',
JSON.stringify(config, null, 2)
+2 -1
View File
@@ -64,7 +64,8 @@
"denysvuika",
"submenu",
"submenus",
"dateitem"
"dateitem",
"versionable"
],
"dictionaries": ["html", "en-gb", "en_US"]
}
+1 -1
View File
@@ -190,7 +190,7 @@ services:
- alfresco
- share
ports:
- 4000:80
- 8080:8080
auth:
image: jboss/keycloak:4.8.3.Final
+77 -43
View File
@@ -2,10 +2,10 @@ version: '2'
services:
alfresco:
image: alfresco/alfresco-content-repository-community:6.1.2-ga
image: alfresco/alfresco-content-repository-community:latest
mem_limit: 1500m
depends_on:
- postgres
volumes:
- ./docker/acs-cm:/usr/local/tomcat/shared/classes/alfresco/extension
environment:
JAVA_OPTS: '
-Ddb.driver=org.postgresql.Driver
@@ -17,51 +17,92 @@ services:
-Dsolr.secureComms=none
-Dsolr.base.url=/solr
-Dindex.subsystem.name=solr6
-Dshare.host=localhost
-Dshare.host=127.0.0.1
-Dshare.port=8080
-Dalfresco.host=localhost
-Dalfresco.port=8080
-Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos
-Dmessaging.broker.url="failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true"
-Ddeployment.method=DOCKER_COMPOSE
-Dlocal.transform.service.enabled=true
-DlocalTransform.pdfrenderer.url=http://alfresco-pdf-renderer:8090/
-DlocalTransform.imagemagick.url=http://imagemagick:8090/
-DlocalTransform.libreoffice.url=http://libreoffice:8090/
-DlocalTransform.tika.url=http://tika:8090/
-DlocalTransform.misc.url=http://transform-misc:8090/
-Dlegacy.transform.service.enabled=true
-Dalfresco-pdf-renderer.url=http://alfresco-pdf-renderer:8090/
-Djodconverter.url=http://libreoffice:8090/
-Dimg.url=http://imagemagick:8090/
-Dtika.url=http://tika:8090/
-Dtransform.misc.url=http://transform-misc:8090/
-Dcsrf.filter.enabled=false
-Xms1g -Xmx1g
-Xms1500m -Xmx1500m
'
networks:
- internal
alfresco-pdf-renderer:
image: alfresco/alfresco-pdf-renderer:2.1.0
mem_limit: 1g
environment:
JAVA_OPTS: ' -Xms256m -Xmx512m'
ports:
- 8080:8080 #Browser port
- 8090:8090
imagemagick:
image: alfresco/alfresco-imagemagick:2.1.0
mem_limit: 1g
environment:
JAVA_OPTS: ' -Xms256m -Xmx512m'
ports:
- 8091:8090
libreoffice:
image: alfresco/alfresco-libreoffice:2.1.0
mem_limit: 1g
environment:
JAVA_OPTS: ' -Xms256m -Xmx512m'
ports:
- 8092:8090
tika:
image: alfresco/alfresco-tika:2.1.0
mem_limit: 1g
environment:
JAVA_OPTS: ' -Xms256m -Xmx512m'
ports:
- 8093:8090
transform-misc:
image: alfresco/alfresco-transform-misc:2.1.0
mem_limit: 1g
environment:
JAVA_OPTS: ' -Xms256m -Xmx512m'
ports:
- 8094:8090
share:
image: alfresco/alfresco-share:6.1.0-RC3
image: alfresco/alfresco-share:6.2.0
mem_limit: 1g
depends_on:
- alfresco
environment:
- REPO_HOST=alfresco
- REPO_PORT=8080
- 'CATALINA_OPTS= -Xms500m -Xmx500m'
networks:
- internal
ports:
- 8083:8080
postgres:
image: postgres:10.1
mem_limit: 1500m
image: postgres:11.4
mem_limit: 512m
environment:
- POSTGRES_PASSWORD=alfresco
- POSTGRES_USER=alfresco
- POSTGRES_DB=alfresco
command: postgres -c max_connections=300 -c log_min_messages=LOG
networks:
- internal
ports:
- 5432:5432
solr6:
image: alfresco/alfresco-search-services:1.3.0-RC2
mem_limit: 2500m
depends_on:
- alfresco
image: alfresco/alfresco-search-services:1.4.0
mem_limit: 2g
environment:
#Solr needs to know how to register itself with Alfresco
- SOLR_ALFRESCO_HOST=alfresco
@@ -71,17 +112,15 @@ services:
- SOLR_SOLR_PORT=8983
#Create the default alfresco and archive cores
- SOLR_CREATE_ALFRESCO_DEFAULTS=alfresco,archive
#HTTP by default
- ALFRESCO_SECURE_COMMS=none
- 'SOLR_JAVA_MEM=-Xms2g -Xmx2g'
networks:
- internal
ports:
- 8983:8983 #Browser port
- 8083:8983 #Browser port
activemq:
image: alfresco/alfresco-activemq:5.15.6
mem_limit: 2048m
networks:
- internal
image: alfresco/alfresco-activemq:5.15.8
mem_limit: 1g
ports:
- 8161:8161 # Web Console
- 5672:5672 # AMQP
@@ -93,24 +132,19 @@ services:
build: .
depends_on:
- alfresco
networks:
- internal
ports:
- 4001:8080
# volumes:
# - ./app.config.json:/usr/share/nginx/html/app.config.json
# - ./nginx.conf:/etc/nginx/conf.d/default.conf
proxy:
image: nginx:stable-alpine
image: alfresco/acs-community-ngnix:1.0.0
mem_limit: 128m
depends_on:
- content-app
- alfresco
volumes:
- ./docker/proxy/nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- internal
- ./docker/proxy/nginx.conf:/etc/nginx/nginx.conf
ports:
- 4000:80
networks:
internal:
- 8080:8080
links:
- alfresco
- share
- content-app
+20
View File
@@ -0,0 +1,20 @@
# ACA Docker Image
Docker images are released to [docker hub](https://hub.docker.com/r/alfresco/alfresco-content-app)
## Environment Variables
OAUTH2:
- APP_CONFIG_AUTH_TYPE: ...
- APP_CONFIG_OAUTH2_HOST: ...
- APP_CONFIG_OAUTH2_CLIENTID: ...
- APP_CONFIG_OAUTH2_REDIRECT_LOGIN: ...
- APP_CONFIG_OAUTH2_REDIRECT_LOGOUT: ...
- APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI: ...
APP Misc:
- BASE_PATH: ...
- APP_BASE_SHARE_URL: ...
- SERVER_PATH: Server path (usefull if behind a reverse proxy). E.g.: `/content-app` . Defaults to `/`
+20
View File
@@ -0,0 +1,20 @@
# Custom Node creation instruction
Use the v1 POST node/{nodeId}/children for creating the custom node with a payload like:
```
{
"name":"acme document2.txt",
"nodeType":"acme:document",
"properties": {
"acme:documentId": "DOC001",
"acme:securityClassification":"Public",
"cm:title":"My text"
},
"aspectNames": [
"acme:securityClassified"
]
}
```
Tip: You could use the api explorer with <host-url>/api-explorer/
+13
View File
@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="acme.extension.dictionaryBootstrap"
parent="dictionaryModelBootstrap"
depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/acme-content-model.xml</value>
</list>
</property>
</bean>
</beans>
+66
View File
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<model name="acme:contentModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>Sample Document Model</description>
<author>My Name</author>
<version>1.0</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
</imports>
<namespaces>
<namespace uri="http://www.acme.org/model/content/1.0" prefix="acme"/>
</namespaces>
<constraints>
<constraint name="acme:securityClassificationOptions" type="LIST">
<parameter name="allowedValues">
<list>
<value></value>
<value>Public</value>
<value>Client Confidential</value>
<value>Company Confidential</value>
<value>Strictly Confidential</value>
</list>
</parameter>
</constraint>
</constraints>
<types>
<type name="acme:document">
<title>Sample Document Type</title>
<parent>cm:content</parent>
<properties>
<property name="acme:documentId">
<title>Document Identification Number</title>
<type>d:text</type>
</property>
</properties>
<mandatory-aspects>
<aspect>acme:securityClassified</aspect>
</mandatory-aspects>
</type>
</types>
<aspects>
<aspect name="acme:securityClassified">
<title>ACME Security Classified</title>
<description>Content has been security classified</description>
<properties>
<property name="acme:securityClassification">
<type>d:text</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
<constraints>
<constraint ref="acme:securityClassificationOptions"/>
</constraints>
</property>
</properties>
</aspect>
</aspects>
</model>
+9
View File
@@ -81,4 +81,13 @@ if [ -n "${APP_BASE_SHARE_URL}" ];then
cat /tmp/app.config.json > ./app.config.json
fi
if [[ $SERVER_PATH ]]; then
mkdir -p .$SERVER_PATH
cp -R * .$SERVER_PATH
replace="\/"
encoded=${SERVER_PATH//\//$replace}
sed -ri 's%href=".?/"%href="'$encoded/'"%g' /tmp/index.html && \
cat /tmp/index.html > .$SERVER_PATH/index.html
fi
nginx -g "daemon off;"
+35 -24
View File
@@ -1,33 +1,44 @@
server {
listen *:80;
worker_processes 1;
set $allowOriginSite *;
proxy_pass_request_headers on;
proxy_pass_header Set-Cookie;
events {
worker_connections 1024;
}
access_log off;
http {
server {
listen *:8080;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
client_max_body_size 0;
location / {
proxy_pass http://content-app:8080;
}
set $allowOriginSite *;
proxy_pass_request_headers on;
proxy_pass_header Set-Cookie;
location /alfresco/ {
proxy_pass http://alfresco:8080;
}
# External settings, do not remove
#ENV_ACCESS_LOG
location /api-explorer/ {
proxy_pass http://alfresco:8080/api-explorer;
}
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
location /share/ {
proxy_pass http://share:8080;
location / {
proxy_pass http://content-app:8080;
}
location /alfresco/ {
proxy_pass http://alfresco:8080;
}
location /api-explorer/ {
proxy_pass http://alfresco:8080/api-explorer/;
}
location /share/ {
proxy_pass http://share:8080;
}
}
}
+2 -2
View File
@@ -91,7 +91,7 @@ services:
networks:
- internal
ports:
- 4000:80
- 8080:80
networks:
? internal
internal:
+1
View File
@@ -24,6 +24,7 @@ The documentation is divided into the following sections:
| ACA Version | Built with | Tested on |
| ----------- | ---------- | --------- |
| ACA 1.9 | ADF 3.6.0 | ACS 6.2 |
| ACA 1.8 | ADF 3.3.0 | ACS 6.1 |
| ACA 1.7 | ADF 3.0.0 | ACS 6.1 |
| ACA 1.6 | ADF 2.6.1 | ACS 6.1 |
+1 -1
View File
@@ -20,7 +20,7 @@ npm run build
npm run start:docker
```
The ACA runs on port `4000` when served from within container.
The ACA runs on port `8080` when served from within container.
Use the following command to stop all the containers:
+2 -2
View File
@@ -7,7 +7,7 @@ nav: ja
ACA には ACS 6.0 Community 版が事前構成されています。
アプリケーションは2つのモードで実行されます:
アプリケーションは 2 つのモードで実行されます:
- Development (最新のソースコードを実行し、アプリケーションのビルドが必要)
- Preview (最新の公開されたコンテナー、マスターブランチで実行)
@@ -21,7 +21,7 @@ npm run build
npm run start:docker
```
コンテナ内から提供される場合、ACA は `4000` ポートで実行されます。
コンテナ内から提供される場合、ACA は `8080` ポートで実行されます。
次のコマンドを使用して、すべてのコンテナを停止します:
@@ -100,7 +100,6 @@ export class UploadNewVersionDialog extends Component {
async clickUpload() {
await this.uploadButton.click();
await this.waitForDialogToClose();
}
@@ -422,6 +422,9 @@
"id": "app.toolbar.share",
"type": "custom",
"order": 600,
"data": {
"iconButton": true
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
@@ -517,6 +520,9 @@
"id": "item3",
"type": "custom",
"order": 400,
"data": {
"iconButton": false
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
@@ -538,6 +544,9 @@
"id": "item3",
"type": "custom",
"order": 400,
"data": {
"iconButton": false
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
@@ -586,6 +595,9 @@
"id": "app.context.menu.share",
"type": "custom",
"order": 400,
"data": {
"iconButton": false
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
@@ -805,6 +817,9 @@
"id": "app.viewer.share",
"type": "custom",
"order": 300,
"data": {
"iconButton": true
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
+63 -41
View File
@@ -52,6 +52,8 @@ describe('Upload new version', () => {
const parentFav = `parentFav-${Utils.random()}`; let parentFavId;
const parentSearch = `parentSearch-${Utils.random()}`; let parentSearchId;
const nameConflictMessage = 'New version not uploaded, another file with the same name already exists';
const file = FILES.pdfFile; let fileId;
const fileToUpload1 = FILES.docxFile;
const fileToUpload2 = FILES.xlsxFile;
@@ -116,7 +118,7 @@ describe('Upload new version', () => {
});
afterEach(async (done) => {
// await Utils.pressEscape();
await Utils.pressEscape();
await page.refresh();
done();
});
@@ -147,10 +149,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMajor();
await uploadNewVersionDialog.enterDescription('new major version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('2.0', 'File has incorrect version label');
});
it('file is updated after uploading a new version - minor - [C297546]', async () => {
@@ -163,10 +166,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new minor version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file is not updated when clicking Cancel - [C297547]', async () => {
@@ -181,8 +185,8 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickCancel();
expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('1.0', 'File has incorrect version label');
});
it('upload new version fails when new file name already exists - [C297548]', async () => {
@@ -196,11 +200,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await page.refresh();
const message = await page.getSnackBarMessage();
expect(message).toContain(nameConflictMessage);
expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('1.0', 'File has incorrect version label');
});
it('file is unlocked after uploading a new version - [C297549]', async () => {
@@ -213,11 +218,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed');
expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`);
expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file remains locked after canceling of uploading a new version - [C297550]', async () => {
@@ -294,10 +300,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMajor();
await uploadNewVersionDialog.enterDescription('new major version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('2.0', 'File has incorrect version label');
});
it('file is updated after uploading a new version - minor - [C297553]', async () => {
@@ -310,10 +317,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new minor version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file is not updated when clicking Cancel - [C297554]', async () => {
@@ -328,8 +336,8 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickCancel();
expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('1.0', 'File has incorrect version label');
});
it('upload new version fails when new file name already exists - [C297555]', async () => {
@@ -343,11 +351,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await page.refresh();
const message = await page.getSnackBarMessage();
expect(message).toContain(nameConflictMessage);
expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('1.0', 'File has incorrect version label');
});
it('file is unlocked after uploading a new version - [C297556]', async () => {
@@ -360,11 +369,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed');
expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`);
expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file remains locked after canceling of uploading a new version - [C297557]', async () => {
@@ -440,10 +450,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMajor();
await uploadNewVersionDialog.enterDescription('new major version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload1, parentRF)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('2.0', 'File has incorrect version label');
});
it('file is updated after uploading a new version - minor - [C297560]', async () => {
@@ -456,10 +467,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new minor version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload2, parentRF)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file is not updated when clicking Cancel - [C297561]', async () => {
@@ -474,8 +486,8 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickCancel();
expect(await dataTable.isItemPresent(file3, parentRF)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('1.0', 'File has incorrect version label');
});
it('upload new version fails when new file name already exists - [C297562]', async () => {
@@ -489,11 +501,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await page.refresh();
const message = await page.getSnackBarMessage();
expect(message).toContain(nameConflictMessage);
expect(await dataTable.isItemPresent(file4, parentRF)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('1.0', 'File has incorrect version label');
});
it('file is unlocked after uploading a new version - [C297563]', async () => {
@@ -506,11 +519,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload4, parentRF)).toBe(true, 'File name was not changed');
expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`);
expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file remains locked after canceling of uploading a new version - [C297564]', async () => {
@@ -587,10 +601,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMajor();
await uploadNewVersionDialog.enterDescription('new major version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('2.0', 'File has incorrect version label');
});
it('file is updated after uploading a new version - minor - [C297567]', async () => {
@@ -603,10 +618,11 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new minor version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file is not updated when clicking Cancel - [C297568]', async () => {
@@ -621,8 +637,8 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickCancel();
expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('1.0', 'File has incorrect version label');
});
it('upload new version fails when new file name already exists - [C297569]', async () => {
@@ -636,11 +652,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await page.refresh();
const message = await page.getSnackBarMessage();
expect(message).toContain(nameConflictMessage);
expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('1.0', 'File has incorrect version label');
});
it('file is unlocked after uploading a new version - [C297570]', async () => {
@@ -653,11 +670,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed');
expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`);
expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file remains locked after canceling of uploading a new version - [C297571]', async () => {
@@ -738,11 +756,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMajor();
await uploadNewVersionDialog.enterDescription('new major version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
// TODO: enable when ACA-2329 is fixed
// expect(await dataTable.isItemPresent(fileToUpload1, parentSearch)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(fileSearch1Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch1Id)).toEqual('1.0', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch1Id)).toEqual('2.0', 'File has incorrect version label');
});
it('file is updated after uploading a new version - minor - [C307005]', async () => {
@@ -759,11 +778,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new minor version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
// TODO: enable when ACA-2329 is fixed
// expect(await dataTable.isItemPresent(fileToUpload2, parentSearch)).toBe(true, 'File not updated');
expect(await apis.user.nodes.getFileVersionType(fileSearch2Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch2Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch2Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file is not updated when clicking Cancel - [C307006]', async () => {
@@ -782,8 +802,8 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickCancel();
expect(await dataTable.isItemPresent(fileSearch3, parentSearch)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(fileSearch3Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch3Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(fileSearch3Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch3Id)).toEqual('1.0', 'File has incorrect version label');
});
it('upload new version fails when new file name already exists - [C307007]', async () => {
@@ -801,11 +821,12 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await page.refresh();
const message = await page.getSnackBarMessage();
expect(message).toContain(nameConflictMessage);
expect(await dataTable.isItemPresent(fileSearch4, parentSearch)).toBe(true, 'File was updated');
expect(await apis.user.nodes.getFileVersionType(fileSearch4Id)).toEqual('', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch4Id)).toEqual('', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionType(fileSearch4Id)).toEqual('MAJOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileSearch4Id)).toEqual('1.0', 'File has incorrect version label');
});
it('file is unlocked after uploading a new version - [C307008]', async () => {
@@ -822,12 +843,13 @@ describe('Upload new version', () => {
await uploadNewVersionDialog.clickMinor();
await uploadNewVersionDialog.enterDescription('new version description');
await uploadNewVersionDialog.clickUpload();
await uploadNewVersionDialog.waitForDialogToClose();
// TODO: enable when ACA-2329 is fixed
// expect(await dataTable.isItemPresent(fileToUpload4, parentSearch)).toBe(true, 'File name was not changed');
expect(await apis.user.nodes.isFileLockedWrite(fileLockedSearch1Id)).toBe(false, `${fileLockedSearch1} is still locked`);
expect(await apis.user.nodes.getFileVersionType(fileLockedSearch1Id)).toEqual('MINOR', 'File has incorrect version type');
expect(await apis.user.nodes.getFileVersionLabel(fileLockedSearch1Id)).toEqual('0.1', 'File has incorrect version label');
expect(await apis.user.nodes.getFileVersionLabel(fileLockedSearch1Id)).toEqual('1.1', 'File has incorrect version label');
});
it('file remains locked after canceling of uploading a new version - [C307009]', async () => {
@@ -33,6 +33,7 @@ export class NodeBodyCreate {
public name: string,
public nodeType: string,
public relativePath: string = '/',
public aspectNames?: string[], // workaround for REPO-4772
public properties?: any[]
) {}
}
@@ -35,6 +35,7 @@ export interface NodeContentTree {
export function flattenNodeContentTree(content: NodeContentTree, relativePath: string = '/'): NodeBodyCreate[] {
const { name, files, folders, title, description } = content;
const aspectNames: string[] = ['cm:versionable'];
let data: NodeBodyCreate[] = [];
let properties: any;
@@ -75,7 +76,8 @@ export function flattenNodeContentTree(content: NodeContentTree, relativePath: s
.map((filename: string): NodeBodyCreate => ({
nodeType: NODE_TYPE_FILE,
name: filename,
relativePath
relativePath,
aspectNames
}));
data = data.concat(filesData);
@@ -222,7 +222,8 @@ export class NodesApi extends RepoApi {
'cm:title': title,
'cm:description': description,
'cm:author': author
}
},
aspectNames: ['cm:versionable'] // workaround for REPO-4772
};
if (imageProps) {
nodeBody.properties = Object.assign(nodeBody.properties, imageProps);
@@ -24,10 +24,9 @@
*/
import { RepoApi } from '../repo-api';
import { SiteBody, SiteMemberRoleBody, SiteMemberBody, SiteEntry, SiteMembershipRequestEntry } from '@alfresco/js-api';
import { SiteBody, SiteMemberRoleBody, SiteMemberBody, SiteEntry, SiteMembershipRequestEntry, SitesApi as AdfSiteApi } from '@alfresco/js-api';
import { SITE_VISIBILITY } from '../../../../configs';
import { Utils } from '../../../../utilities/utils';
import { SitesApi as AdfSiteApi } from '@alfresco/js-api';
export class SitesApi extends RepoApi {
sitesApi = new AdfSiteApi(this.alfrescoJsApi);
+53 -34
View File
@@ -5,33 +5,33 @@
"requires": true,
"dependencies": {
"@alfresco/adf-content-services": {
"version": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e.tgz",
"integrity": "sha512-7p5xq+4HLNsWNgCIGDfdpX6/GY31CpOMIEG2sC1H4RTiWxpzWGFANPaTLcvKi7l5J4SbKZcB+2axRhrIxdSxXQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.6.0.tgz",
"integrity": "sha512-npEPJ4eAIalIWd4lmTltYiS3XyLdagzfqDUfC9oHwFz8QfX7y8mUtaSDBVYqTGRm3lZ7vElczfsbuKlknLaxog==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-core": {
"version": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e.tgz",
"integrity": "sha512-odQ0ldG2mw/WyRXZPTYA6u0P7U7WMlojgB8qhj+QkbWqnCvoV+5vuyaqrhdqVkc4V+4Kh5kSaMsohVXDP+2vxw==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.6.0.tgz",
"integrity": "sha512-WlYvxuBpJ6sug5iPfJprdWDZcDtJ7Y6/SFzEchEhan30O4Efb/MgWY+3s1nCsIwX0eYhyv8pj9NHQjHNjPotLw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-extensions": {
"version": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e.tgz",
"integrity": "sha512-/Vv/JaJrTzVOiNrHJOa8IDtzdNTO9rbg5LW+DcfWZaMVrqpsEQ9n43TQVjgrXicJmrucfR6Rdob28X566SwMhQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.6.0.tgz",
"integrity": "sha512-/B2+TKrjQswXsTkkuU7qgK9Ud8Wn02bZRgRuKZiPwUxIo8s4wSMZpgWkfrIw58WDNDiL/MDgDeNiCrpxxrzdow==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/js-api": {
"version": "3.6.0-f44b015f801224c18cf4c8162562ee66551fa8df",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.6.0-f44b015f801224c18cf4c8162562ee66551fa8df.tgz",
"integrity": "sha512-ntll1zGORMFoFuj64mu5YTn8X74kvI4RqshBZuQFkDc9rjQlpDTx/erIScO7njpfcKp8CdP3bsoDWnnrar0Www==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.6.0.tgz",
"integrity": "sha512-aXc4twC3jDTZqyyhrlQX5DvyuSAnsfmZ7LT03itm/II9EqFEHcpXGWzyOA2VyZSyfuYz5e13KuM6v1VqBZxCwQ==",
"requires": {
"event-emitter": "^0.3.5",
"minimatch": "3.0.4",
@@ -4225,12 +4225,12 @@
}
},
"es5-ext": {
"version": "0.10.52",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz",
"integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==",
"version": "0.10.53",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
"integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.2",
"es6-symbol": "~3.1.3",
"next-tick": "~1.0.0"
}
},
@@ -4655,9 +4655,9 @@
}
},
"ext": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz",
"integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.2.1.tgz",
"integrity": "sha512-x+OKKC57tNiLhDW26UmWtvQBpvO+2wxdC/A0jP7RkmjAc4gze9/U98hQyIYJUzo9A+o9ntMHpC+LH3pWMSbrVQ==",
"requires": {
"type": "^2.0.0"
},
@@ -5187,7 +5187,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@@ -5208,12 +5209,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -5228,17 +5231,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -5355,7 +5361,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@@ -5367,6 +5374,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -5381,6 +5389,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -5388,12 +5397,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -5412,6 +5423,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -5492,7 +5504,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -5504,6 +5517,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@@ -5589,7 +5603,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -5625,6 +5640,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5644,6 +5660,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -5687,12 +5704,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
}
}
},
@@ -8981,9 +9000,9 @@
}
},
"node-sass": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz",
"integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==",
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz",
"integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==",
"dev": true,
"requires": {
"async-foreach": "^0.1.3",
@@ -8993,7 +9012,7 @@
"get-stdin": "^4.0.1",
"glob": "^7.0.3",
"in-publish": "^2.0.0",
"lodash": "^4.17.11",
"lodash": "^4.17.15",
"meow": "^3.7.0",
"mkdirp": "^0.5.1",
"nan": "^2.13.2",
+8 -7
View File
@@ -17,9 +17,9 @@
"lint": "ng lint && npm run spellcheck && npm run format:check && npm run e2e.typecheck",
"wd:update": "webdriver-manager update --gecko=false $VERSION_CHROME",
"e2e.typecheck": "tsc -p ./e2e/tsconfig.e2e.typecheck.json",
"e2e": "npm run wd:update && protractor --baseUrl=${TEST_BASE_URL:-http://localhost:4000} $SUITE",
"e2e": "npm run wd:update && protractor --baseUrl=${TEST_BASE_URL:-http://localhost:8080} $SUITE",
"e2e.local": "npm run wd:update && protractor --baseUrl=http://localhost:4200 $SUITE",
"wait:app": "wait-on http://localhost:8080 && wait-on http://localhost:4000",
"wait:app": "wait-on http://localhost:8080/alfresco/ -t 1000000 && wait-on http://localhost:8080 -t 400000",
"start:docker": "docker-compose up -d --build && npm run wait:app",
"stop:docker": "docker-compose stop",
"e2e:docker": "npm run start:docker && npm run e2e && npm run stop:docker",
@@ -29,17 +29,17 @@
"format:fix": "prettier --write \"src/{app,environments}/**/*.{ts,js,css,scss,html}\"",
"build.tomcat": "npm run build.shared && npm run build.extensions && npm run build.app -- --prod --base-href ./ && jar -cvf docker/tomcat/artifacts/content-app.war -C dist/app/ .",
"build.tomcat.e2e": "./build-tomcat-e2e.sh",
"e2e.tomcat": "npm run wd:update && protractor --baseUrl=http://localhost:4000/content-app/ $SUITE",
"e2e.tomcat": "npm run wd:update && protractor --baseUrl=http://localhost:8080/content-app/ $SUITE",
"docker.tomcat.start": "cd docker/tomcat && docker-compose up -d --build && npm run wait:app",
"docker.tomcat.stop": "cd docker/tomcat && docker-compose stop",
"docker.tomcat.e2e": "npm run docker.tomcat.start && npm run e2e.tomcat"
},
"private": true,
"dependencies": {
"@alfresco/adf-content-services": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"@alfresco/adf-core": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"@alfresco/adf-extensions": "3.6.0-58aef5a02986ad0a3e7a31a2805d83018143482e",
"@alfresco/js-api": "3.6.0-f44b015f801224c18cf4c8162562ee66551fa8df",
"@alfresco/adf-content-services": "3.6.0",
"@alfresco/adf-core": "3.6.0",
"@alfresco/adf-extensions": "3.6.0",
"@alfresco/js-api": "3.6.0",
"@angular/animations": "7.2.15",
"@angular/cdk": "^7.3.7",
"@angular/common": "7.2.15",
@@ -97,6 +97,7 @@
"karma-jasmine-html-reporter": "^0.2.2",
"lint-staged": "^8.2.0",
"ng-packagr": "^4.7.1",
"node-sass": "4.13.0",
"node-stream-zip": "1.8.0",
"prettier": "^1.17.1",
"protractor": "5.4.2",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@alfresco/aca-shared",
"version": "1.9.0",
"version": "1.9.1",
"peerDependencies": {
"@angular/common": "^7.2.0",
"@angular/core": "^7.2.0",
@@ -31,7 +31,12 @@ import { RuleContext } from '@alfresco/adf-extensions';
*/
export function isPreview(context: RuleContext): boolean {
const { url } = context.navigation;
return url && (url.includes('viewer:view') || url.includes('/view/'));
return (
url &&
(url.includes('/preview/') ||
url.includes('viewer:view') ||
url.includes('/view/'))
);
}
/**
@@ -165,7 +170,11 @@ export function isNotSearchResults(context: RuleContext): boolean {
*/
export function isSharedPreview(context: RuleContext): boolean {
const { url } = context.navigation;
return url && url.startsWith('/shared') && url.includes('viewer:view');
return (
url &&
(url.startsWith('/shared/preview/') ||
(url.startsWith('/shared') && url.includes('viewer:view')))
);
}
/**
@@ -174,7 +183,11 @@ export function isSharedPreview(context: RuleContext): boolean {
*/
export function isFavoritesPreview(context: RuleContext): boolean {
const { url } = context.navigation;
return url && url.startsWith('/favorites') && url.includes('viewer:view');
return (
url &&
(url.startsWith('/favorites/preview/') ||
(url.startsWith('/favorites') && url.includes('viewer:view')))
);
}
/**
@@ -24,9 +24,8 @@
*/
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { CanActivate, ActivatedRouteSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { ActivatedRouteSnapshot } from '@angular/router';
import { Store } from '@ngrx/store';
import { AppStore, isQuickShareEnabled } from '@alfresco/aca-shared/store';
@@ -1,7 +1,7 @@
{
"$schema": "../../../extension.schema.json",
"$id": "9a635542-d87a-4558-ae64-ffa199d1a364",
"$version": "0.0.7",
"$version": "0.0.8",
"$name": "keensoft.aos.plugin",
"$description": "Extension that provides Office Edit Online Action",
"$vendor": "Keensoft",
@@ -1,6 +1,6 @@
{
"name": "@alfresco/adf-office-services-ext",
"version": "0.0.7",
"version": "0.0.8",
"license": "Apache-2.0",
"homepage": "https://github.com/Alfresco/alfresco-content-app",
"keywords": ["Alfresco", "ADF", "ACA", "Content Application"],
+1 -1
View File
@@ -120,7 +120,7 @@ exports.config = {
directConnect: true,
// baseUrl: 'http://localhost:4000',
// baseUrl: 'http://localhost:8080',
getPageTimeout: 50000,
framework: 'jasmine',
+1
View File
@@ -22,6 +22,7 @@
"logo": "assets/images/alfresco-logo-flower.svg",
"copyright": "APP.COPYRIGHT"
},
"viewer.maxRetries": 1,
"sharedLinkDateTimePickerType": "date",
"headerColor": "#2196F3",
"languagePicker": true,
+8 -1
View File
@@ -73,6 +73,10 @@ import { AppSearchResultsModule } from './components/search/search-results.modul
import { AppLoginModule } from './components/login/login.module';
import { AppHeaderModule } from './components/header/header.module';
import { AppNodeVersionModule } from './components/node-version/node-version.module';
import { FavoritesComponent } from './components/favorites/favorites.component';
import { RecentFilesComponent } from './components/recent-files/recent-files.component';
import { SharedFilesComponent } from './components/shared-files/shared-files.component';
import { environment } from '../environments/environment';
import { registerLocaleData } from '@angular/common';
@@ -151,7 +155,10 @@ registerLocaleData(localeSv);
LibrariesComponent,
FavoriteLibrariesComponent,
NodeVersionUploadDialogComponent,
NodeVersionsDialogComponent
NodeVersionsDialogComponent,
FavoritesComponent,
RecentFilesComponent,
SharedFilesComponent
],
providers: [
{ provide: RouteReuseStrategy, useClass: AppRouteReuseStrategy },
+87 -6
View File
@@ -36,6 +36,9 @@ import {
GenericErrorComponent
} from '@alfresco/aca-shared';
import { AuthGuardEcm, AuthGuard } from '@alfresco/adf-core';
import { FavoritesComponent } from './components/favorites/favorites.component';
import { RecentFilesComponent } from './components/recent-files/recent-files.component';
import { SharedFilesComponent } from './components/shared-files/shared-files.component';
export const APP_ROUTES: Routes = [
{
@@ -92,6 +95,14 @@ export const APP_ROUTES: Routes = [
defaultNodeId: '-my-'
}
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'personal-files'
}
},
{
path: 'view/:nodeId',
outlet: 'viewer',
@@ -119,6 +130,22 @@ export const APP_ROUTES: Routes = [
sortingPreferenceKey: 'personal-files'
}
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'personal-files'
}
},
// deprecated, backwards compatibility with ACA 1.8
{
path: ':folderId/preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'personal-files'
}
},
{
path: 'view/:nodeId',
outlet: 'viewer',
@@ -159,6 +186,14 @@ export const APP_ROUTES: Routes = [
sortingPreferenceKey: 'libraries-files'
}
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'libraries'
}
},
{
path: 'view/:nodeId',
outlet: 'viewer',
@@ -196,8 +231,21 @@ export const APP_ROUTES: Routes = [
children: [
{
path: '',
loadChildren:
'./components/favorites/favorites.module#AppFavoritesModule'
component: FavoritesComponent,
data: {
title: 'APP.BROWSE.FAVORITES.TITLE',
sortingPreferenceKey: 'favorites'
}
// loadChildren:
// './components/favorites/favorites.module#AppFavoritesModule'
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'favorites'
}
},
{
path: 'view/:nodeId',
@@ -223,8 +271,20 @@ export const APP_ROUTES: Routes = [
children: [
{
path: '',
loadChildren:
'./components/recent-files/recent-files.module#AppRecentFilesModule'
component: RecentFilesComponent,
data: {
title: 'APP.BROWSE.RECENT.TITLE'
}
// loadChildren:
// './components/recent-files/recent-files.module#AppRecentFilesModule'
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'recent-files'
}
},
{
path: 'view/:nodeId',
@@ -247,8 +307,21 @@ export const APP_ROUTES: Routes = [
children: [
{
path: '',
loadChildren:
'./components/shared-files/shared-files.module#AppSharedFilesModule'
data: {
title: 'APP.BROWSE.SHARED.TITLE',
sortingPreferenceKey: 'shared-files'
},
component: SharedFilesComponent
// loadChildren:
// './components/shared-files/shared-files.module#AppSharedFilesModule'
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'shared'
}
},
{
path: 'view/:nodeId',
@@ -286,6 +359,14 @@ export const APP_ROUTES: Routes = [
title: 'APP.BROWSE.SEARCH.TITLE'
}
},
// deprecated, backwards compatibility with ACA 1.8
{
path: 'preview/:nodeId',
loadChildren: './components/preview/preview.module#PreviewModule',
data: {
navigateSource: 'search'
}
},
{
path: 'view/:nodeId',
outlet: 'viewer',
@@ -1,14 +1,30 @@
<ng-container *ngIf="selection$ | async as selection">
<button
mat-menu-item
data-automation-id="share-action-button"
(click)="editSharedNode(selection)"
>
<mat-icon>link</mat-icon>
<ng-container *ngIf="isShared(selection); else not_shared">
<span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>
</ng-container>
</button>
<ng-container *ngIf="!data.iconButton">
<button
mat-menu-item
data-automation-id="share-action-button"
(click)="editSharedNode(selection)"
>
<mat-icon>link</mat-icon>
<ng-container *ngIf="isShared(selection); else not_shared">
<span>{{ 'APP.ACTIONS.SHARE_EDIT' | translate }}</span>
</ng-container>
</button>
</ng-container>
<ng-container *ngIf="data.iconButton">
<button
mat-icon-button
data-automation-id="share-action-button"
(click)="editSharedNode(selection)"
[attr.title]="
(isShared(selection) ? 'APP.ACTIONS.SHARE_EDIT' : 'APP.ACTIONS.SHARE')
| translate
"
>
<mat-icon>link</mat-icon>
</button>
</ng-container>
</ng-container>
<ng-template #not_shared>
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';
import { Observable } from 'rxjs';
import { Store } from '@ngrx/store';
import { SelectionState } from '@alfresco/adf-extensions';
@@ -38,6 +38,8 @@ import {
templateUrl: './toggle-shared.component.html'
})
export class ToggleSharedComponent implements OnInit {
@Input() data: any;
selection$: Observable<SelectionState>;
constructor(private store: Store<AppStore>) {}
@@ -28,10 +28,9 @@ import { Overlay } from '@angular/cdk/overlay';
import { Injector } from '@angular/core';
import { Store } from '@ngrx/store';
import { of } from 'rxjs';
import { CoreModule } from '@alfresco/adf-core';
import { CoreModule, UserPreferencesService } from '@alfresco/adf-core';
import { ContextMenuService } from './context-menu.service';
import { ContextMenuModule } from './context-menu.module';
import { UserPreferencesService } from '@alfresco/adf-core';
describe('ContextMenuService', () => {
let contextMenuService;
@@ -25,13 +25,13 @@
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { UserPreferencesService } from '@alfresco/adf-core';
import { Router } from '@angular/router';
import {
AlfrescoApiService,
NodeFavoriteDirective,
DataTableComponent,
AppConfigPipe
AppConfigPipe,
UserPreferencesService
} from '@alfresco/adf-core';
import { DocumentListComponent } from '@alfresco/adf-content-services';
import { FavoriteLibrariesComponent } from './favorite-libraries.component';
@@ -1,66 +0,0 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { NgModule } from '@angular/core';
import { FavoritesComponent } from './favorites.component';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { RouterModule, Routes } from '@angular/router';
import { ContentModule } from '@alfresco/adf-content-services';
import { DirectivesModule } from '../../directives/directives.module';
import { AppCommonModule } from '../common/common.module';
import { AppToolbarModule } from '../toolbar/toolbar.module';
import { ContextMenuModule } from '../context-menu/context-menu.module';
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
import { AppLayoutModule } from '../layout/layout.module';
const routes: Routes = [
{
path: '',
component: FavoritesComponent,
data: {
title: 'APP.BROWSE.FAVORITES.TITLE',
sortingPreferenceKey: 'favorites'
}
}
];
@NgModule({
imports: [
CommonModule,
CoreModule.forChild(),
RouterModule.forChild(routes),
ContentModule.forChild(),
DirectivesModule,
AppCommonModule,
AppToolbarModule,
ContextMenuModule,
AppInfoDrawerModule,
AppLayoutModule
],
declarations: [FavoritesComponent],
exports: [FavoritesComponent]
})
export class AppFavoritesModule {}
+10 -5
View File
@@ -35,11 +35,14 @@ import {
} from '@alfresco/js-api';
import { ContentManagementService } from '../../services/content-management.service';
import { NodeActionsService } from '../../services/node-actions.service';
import { AppStore } from '@alfresco/aca-shared/store';
import { PageComponent } from '../page.component';
import { ContentApiService } from '@alfresco/aca-shared';
import { AppExtensionService } from '../../extensions/extension.service';
import { SetCurrentFolderAction, isAdmin } from '@alfresco/aca-shared/store';
import {
SetCurrentFolderAction,
isAdmin,
AppStore
} from '@alfresco/aca-shared/store';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { debounceTime, takeUntil } from 'rxjs/operators';
import { ShareDataRow } from '@alfresco/adf-content-services';
@@ -51,6 +54,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
isValidPath = true;
isSmallScreen = false;
isAdmin = false;
selectedNode: MinimalNodeEntity;
private nodePath: PathElement[];
@@ -144,6 +148,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
navigateTo(node: MinimalNodeEntity) {
if (node && node.entry) {
this.selectedNode = node;
const { id, isFolder } = node.entry;
if (isFolder) {
@@ -173,7 +178,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
// check root and child nodes
if (node && node.entry && node.entry.parentId === this.getParentNodeId()) {
this.reload();
this.reload(this.selectedNode);
return;
}
@@ -211,7 +216,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
if (alreadyDisplayedParentFolder) {
return;
}
this.reload();
this.reload(this.selectedNode);
}
onContentCopied(nodes: MinimalNodeEntity[]) {
@@ -221,7 +226,7 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy {
);
});
if (newNode) {
this.reload();
this.reload(this.selectedNode);
}
}
@@ -88,18 +88,6 @@ describe('InfoDrawerComponent', () => {
);
});
it('should set displayNode when node is from personal list', () => {
spyOn(contentApiService, 'getNodeInfo');
const nodeMock = <any>{ entry: { id: 'nodeId', aspectNames: [] } };
component.node = nodeMock;
fixture.detectChanges();
component.ngOnChanges();
expect(component.displayNode).toBe(nodeMock.entry);
expect(contentApiService.getNodeInfo).not.toHaveBeenCalled();
});
it('should set displayNode when node is library', async(() => {
spyOn(contentApiService, 'getNodeInfo');
const nodeMock = <any>{
@@ -88,12 +88,8 @@ export class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {
const entry: any = this.node.entry;
if (!entry.aspectNames) {
const id = entry.nodeId || entry.id;
return this.loadNodeInfo(id);
}
this.setDisplayNode(entry);
const id = entry.nodeId || entry.id;
return this.loadNodeInfo(id);
}
}
@@ -29,10 +29,13 @@ import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
import { AppLayoutComponent } from './app-layout.component';
import { AppTestingModule } from '../../../testing/app-testing.module';
import { Store } from '@ngrx/store';
import { AppStore, SetSelectedNodesAction } from '@alfresco/aca-shared/store';
import {
AppStore,
SetSelectedNodesAction,
ResetSelectionAction
} from '@alfresco/aca-shared/store';
import { Router, NavigationStart } from '@angular/router';
import { Subject } from 'rxjs';
import { ResetSelectionAction } from '@alfresco/aca-shared/store';
class MockRouter {
private url = 'some-url';
+6 -2
View File
@@ -44,7 +44,8 @@ import {
isInfoDrawerOpened,
getSharedUrl,
ViewNodeAction,
ViewNodeExtras
ViewNodeExtras,
SetSelectedNodesAction
} from '@alfresco/aca-shared/store';
import { isLocked, isLibrary } from '../utils/node.utils';
@@ -131,8 +132,11 @@ export abstract class PageComponent implements OnInit, OnDestroy {
return null;
}
reload(): void {
reload(selectedNode?: MinimalNodeEntity): void {
this.store.dispatch(new ReloadDocumentListAction());
if (selectedNode) {
this.store.dispatch(new SetSelectedNodesAction([selectedNode]));
}
}
trackByActionId(_: number, action: ContentActionRef) {
@@ -49,9 +49,9 @@ import { Store } from '@ngrx/store';
import {
AppStore,
ClosePreviewAction,
ViewerActionTypes
ViewerActionTypes,
SetSelectedNodesAction
} from '@alfresco/aca-shared/store';
import { SetSelectedNodesAction } from '@alfresco/aca-shared/store';
import { PageComponent } from '../page.component';
import { ContentApiService } from '@alfresco/aca-shared';
import { AppExtensionService } from '../../extensions/extension.service';
@@ -1,65 +0,0 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { RouterModule, Routes } from '@angular/router';
import { ContentModule } from '@alfresco/adf-content-services';
import { DirectivesModule } from '../../directives/directives.module';
import { AppCommonModule } from '../common/common.module';
import { AppToolbarModule } from '../toolbar/toolbar.module';
import { ContextMenuModule } from '../context-menu/context-menu.module';
import { RecentFilesComponent } from './recent-files.component';
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
import { AppLayoutModule } from '../layout/layout.module';
const routes: Routes = [
{
path: '',
component: RecentFilesComponent,
data: {
title: 'APP.BROWSE.RECENT.TITLE'
}
}
];
@NgModule({
imports: [
CommonModule,
CoreModule.forChild(),
RouterModule.forChild(routes),
ContentModule.forChild(),
DirectivesModule,
AppCommonModule,
AppToolbarModule,
ContextMenuModule,
AppInfoDrawerModule,
AppLayoutModule
],
declarations: [RecentFilesComponent],
exports: [RecentFilesComponent]
})
export class AppRecentFilesModule {}
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { NavigateLibraryAction } from '@alfresco/aca-shared/store';
import { NavigateLibraryAction, AppStore } from '@alfresco/aca-shared/store';
import { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
import { Component, OnInit } from '@angular/core';
@@ -31,7 +31,6 @@ import { ActivatedRoute, Params } from '@angular/router';
import { Store } from '@ngrx/store';
import { AppExtensionService } from '../../../extensions/extension.service';
import { ContentManagementService } from '../../../services/content-management.service';
import { AppStore } from '@alfresco/aca-shared/store';
import { PageComponent } from '../../page.component';
import { SearchLibrariesQueryBuilderService } from './search-libraries-query-builder.service';
@@ -1,66 +0,0 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { NgModule } from '@angular/core';
import { SharedFilesComponent } from './shared-files.component';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { RouterModule, Routes } from '@angular/router';
import { ContentModule } from '@alfresco/adf-content-services';
import { DirectivesModule } from '../../directives/directives.module';
import { AppCommonModule } from '../common/common.module';
import { AppToolbarModule } from '../toolbar/toolbar.module';
import { ContextMenuModule } from '../context-menu/context-menu.module';
import { AppInfoDrawerModule } from '../info-drawer/info.drawer.module';
import { AppLayoutModule } from '../layout/layout.module';
const routes: Routes = [
{
path: '',
component: SharedFilesComponent,
data: {
title: 'APP.BROWSE.SHARED.TITLE',
sortingPreferenceKey: 'shared-files'
}
}
];
@NgModule({
imports: [
CommonModule,
CoreModule.forChild(),
RouterModule.forChild(routes),
ContentModule.forChild(),
DirectivesModule,
AppCommonModule,
AppToolbarModule,
ContextMenuModule,
AppInfoDrawerModule,
AppLayoutModule
],
declarations: [SharedFilesComponent],
exports: [SharedFilesComponent]
})
export class AppSharedFilesModule {}
@@ -4,6 +4,7 @@
'right_side--hide': !showRightSide
}"
[displayName]="fileName"
[maxRetries]="'viewer.maxRetries' | adfAppConfig"
[nodeId]="nodeId"
[allowNavigate]="navigateMultiple"
[allowRightSidebar]="true"
@@ -31,10 +31,11 @@ import {
SetSelectedNodesAction,
ClosePreviewAction,
ViewerActionTypes,
ViewNodeAction
ViewNodeAction,
ReloadDocumentListAction
} from '@alfresco/aca-shared/store';
import { ContentActionRef, SelectionState } from '@alfresco/adf-extensions';
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
import { MinimalNodeEntryEntity, SearchRequest } from '@alfresco/js-api';
import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router';
import {
@@ -49,8 +50,6 @@ import { from, Observable, Subject } from 'rxjs';
import { takeUntil, debounceTime } from 'rxjs/operators';
import { AppExtensionService } from '../../extensions/extension.service';
import { Actions, ofType } from '@ngrx/effects';
import { SearchRequest } from '@alfresco/js-api';
import { ReloadDocumentListAction } from '@alfresco/aca-shared/store';
@Component({
selector: 'app-viewer',
templateUrl: './viewer.component.html',
+10 -3
View File
@@ -32,12 +32,14 @@ import { Store } from '@ngrx/store';
import { SetSelectedNodesAction } from '@alfresco/aca-shared/store';
import { takeUntil, filter } from 'rxjs/operators';
import { ContentManagementService } from '../services/content-management.service';
import { MinimalNodeEntity } from '@alfresco/js-api';
@Directive({
selector: '[acaDocumentList]'
})
export class DocumentListDirective implements OnInit, OnDestroy {
private isLibrary = false;
selectedNode: MinimalNodeEntity;
onDestroy$ = new Subject<boolean>();
@@ -88,7 +90,7 @@ export class DocumentListDirective implements OnInit, OnDestroy {
.subscribe(() => this.onReady());
this.content.reload.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
this.reload();
this.reload(this.selectedNode);
});
this.content.reset.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
@@ -119,6 +121,7 @@ export class DocumentListDirective implements OnInit, OnDestroy {
onNodeSelect(event: CustomEvent) {
if (!!event.detail && !!event.detail.node) {
this.updateSelection();
this.selectedNode = event.detail.node;
}
}
@@ -140,9 +143,13 @@ export class DocumentListDirective implements OnInit, OnDestroy {
this.store.dispatch(new SetSelectedNodesAction(selection));
}
private reload() {
private reload(selectedNode?: MinimalNodeEntity) {
this.documentList.resetSelection();
this.store.dispatch(new SetSelectedNodesAction([]));
if (selectedNode) {
this.store.dispatch(new SetSelectedNodesAction([selectedNode]));
} else {
this.store.dispatch(new SetSelectedNodesAction([]));
}
this.documentList.reload();
}
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { ContentApiService } from '@alfresco/aca-shared';
import { ContentApiService, NodePermissionService } from '@alfresco/aca-shared';
import {
AppStore,
DeletedNodeInfo,
@@ -69,7 +69,6 @@ import { NodePermissionsDialogComponent } from '../components/permissions/permis
import { NodeVersionUploadDialogComponent } from '../dialogs/node-version-upload/node-version-upload.dialog';
import { NodeVersionsDialogComponent } from '../dialogs/node-versions/node-versions.dialog';
import { NodeActionsService } from './node-actions.service';
import { NodePermissionService } from '@alfresco/aca-shared';
interface RestoredNode {
status: number;
@@ -215,9 +214,7 @@ export class ContentManagementService {
})
.afterClosed()
.subscribe(deletedSharedLink => {
this.store.dispatch(
new SetSelectedNodesAction([deletedSharedLink || node])
);
this.store.dispatch(new SetSelectedNodesAction([node]));
if (deletedSharedLink) {
this.linksUnshared.next(deletedSharedLink);
}
+1 -2
View File
@@ -58,8 +58,6 @@ $foreground: map-get($custom-theme, foreground);
$warn: map-get($custom-theme, warn);
@mixin custom-theme($theme) {
@include adf-style-fixes($theme);
@include layout-theme($theme);
@include aca-search-input-theme($theme);
@include app-permission-manager-theme($theme);
@@ -70,6 +68,7 @@ $warn: map-get($custom-theme, warn);
@include aca-current-user-theme($theme);
@include aca-context-menu-theme($theme);
@include app-create-menu-theme($theme);
@include adf-style-fixes($theme);
.mat-toolbar {
color: var(--theme-text-color, rgba(0, 0, 0, 0.54));
@@ -3,4 +3,14 @@
@mixin adf-style-fixes($theme) {
// add here all ADF style overrides
// and create a task to move them to ADF
.adf-content-node-selector-content-list {
.adf-content-selector-modified-cell {
display: none;
}
.adf-content-selector-modifier-cell {
display: none;
}
}
}
+13 -34
View File
@@ -197,26 +197,14 @@
},
{
"id": "app.toolbar.share",
"type": "custom",
"order": 100,
"title": "APP.ACTIONS.SHARE",
"icon": "link",
"actions": {
"click": "SHARE_NODE"
"data": {
"iconButton": true
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
}
},
{
"id": "app.toolbar.share.edit",
"order": 101,
"title": "APP.ACTIONS.SHARE_EDIT",
"icon": "link",
"actions": {
"click": "SHARE_NODE"
},
"rules": {
"visible": "app.selection.file.isShared"
"visible": "canToggleSharedLink"
}
},
{
@@ -486,6 +474,9 @@
"id": "app.context.menu.share",
"type": "custom",
"order": 100,
"data": {
"iconButton": false
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "canToggleSharedLink"
@@ -747,26 +738,14 @@
},
{
"id": "app.viewer.share",
"type": "custom",
"order": 200,
"title": "APP.ACTIONS.SHARE",
"icon": "link",
"actions": {
"click": "SHARE_NODE"
"data": {
"iconButton": true
},
"component": "app.shared-link.toggleSharedLink",
"rules": {
"visible": "app.selection.file.canShare"
}
},
{
"id": "app.viewer.share.edit",
"order": 250,
"title": "APP.ACTIONS.SHARE_EDIT",
"icon": "link",
"actions": {
"click": "SHARE_NODE"
},
"rules": {
"visible": "app.selection.file.isShared"
"visible": "canToggleSharedLink"
}
},
{
+20 -1
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "إلغاء طلب الانضمام",
"LEAVE": "مغادرة المكتبة",
"EDIT_OFFLINE": "تحرير دون اتصال بالإنترنت",
"EDIT_OFFLINE_CANCEL": "إلغاء التحرير"
"EDIT_OFFLINE_CANCEL": "إلغاء التحرير",
"LIST_MODE": "عرض القائمة",
"GALLERY_MODE": "عرض المعرض"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "هذا العام"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "خيارات المستخدم"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "تحميل إصدار جديد"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "عرض {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "فتح مجلد {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "مكتبة ملفات",
"BASELINE-LOCK-24PX": "ملف مؤمن"
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Zrušit žádost o připojení",
"LEAVE": "Opustit knihovnu",
"EDIT_OFFLINE": "Upravit offline",
"EDIT_OFFLINE_CANCEL": "Zrušit úpravu"
"EDIT_OFFLINE_CANCEL": "Zrušit úpravu",
"LIST_MODE": "Zobrazit seznam",
"GALLERY_MODE": "Zobrazit galerii"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Letos"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Uživatelské možnosti"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Odeslat novou verzi"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Zobrazit {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Otevřít složku {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "knihovnu souborů",
"BASELINE-LOCK-24PX": "uzamčený soubor"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Annuller anmodning om tilmelding",
"LEAVE": "Forlad bibliotek",
"EDIT_OFFLINE": "Rediger offline",
"EDIT_OFFLINE_CANCEL": "Annuller redigering"
"EDIT_OFFLINE_CANCEL": "Annuller redigering",
"LIST_MODE": "Vis liste",
"GALLERY_MODE": "Vis galleri"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "I år"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Valgmuligheder for bruger"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Upload ny version"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Vis {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Åbn mappen {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "filbibliotek",
"BASELINE-LOCK-24PX": "låst fil"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Beitrittsanfrage zurückziehen",
"LEAVE": "Bibliothek verlassen",
"EDIT_OFFLINE": "Offline bearbeiten",
"EDIT_OFFLINE_CANCEL": "Bearbeitung abbrechen"
"EDIT_OFFLINE_CANCEL": "Bearbeitung abbrechen",
"LIST_MODE": "Liste anzeigen",
"GALLERY_MODE": "Galerie anzeigen"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "dieses Jahr"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Benutzeroptionen"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Neue Version hochladen"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "{{ name }} anzeigen",
"FOLDER_LINK_ARIA_LABEL": "Ordner '{{ name }}' öffnen"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Dateibibliothek",
"BASELINE-LOCK-24PX": "gesperrte Datei"
}
}
}
}
+1 -1
View File
@@ -509,7 +509,7 @@
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "View file {{ name }}",
"FILE_LINK_ARIA_LABEL": "View {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Open {{ name }} folder"
}
},
+20 -1
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Cancelar solicitud de unirse",
"LEAVE": "Abandonar biblioteca",
"EDIT_OFFLINE": "Editar fuera de línea",
"EDIT_OFFLINE_CANCEL": "Cancelar edición"
"EDIT_OFFLINE_CANCEL": "Cancelar edición",
"LIST_MODE": "Ver lista",
"GALLERY_MODE": "Ver galería"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Este año"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Opciones de usuario"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Cargue nueva versión"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Ver {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Abrir carpeta {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Biblioteca de ficheros",
"BASELINE-LOCK-24PX": "fichero bloqueado"
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Peruuta liittymispyyntö",
"LEAVE": "Poistu kirjastosta",
"EDIT_OFFLINE": "Muokkaa offline-tilassa",
"EDIT_OFFLINE_CANCEL": "Peruuta muokkaus"
"EDIT_OFFLINE_CANCEL": "Peruuta muokkaus",
"LIST_MODE": "Tarkastele luetteloa",
"GALLERY_MODE": "Tarkastele galleriaa"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Tänä vuonna"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Käyttäjän valinnat"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Lataa uusi versio"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Tarkastele kohdetta {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Avaa kansio {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "tiedostokirjasto",
"BASELINE-LOCK-24PX": "tiedosto lukittu"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Annuler la demande pour rejoindre",
"LEAVE": "Quitter la bibliothèque",
"EDIT_OFFLINE": "Editer hors-ligne",
"EDIT_OFFLINE_CANCEL": "Annuler l'édition"
"EDIT_OFFLINE_CANCEL": "Annuler l'édition",
"LIST_MODE": "Afficher la liste",
"GALLERY_MODE": "Afficher la galerie"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Cette année"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Options utilisateur"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Importer une nouvelle version"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Afficher {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Ouvrir le dossier {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "bibliothèque de fichiers",
"BASELINE-LOCK-24PX": "fichier verrouillé"
}
}
}
}
+33 -14
View File
@@ -8,7 +8,7 @@
"ID": "ID",
"NAME": "Nome",
"VERSION": "Versione",
"VENDOR": "Fornitore",
"VENDOR": "Venditore",
"LICENSE": "Licenza",
"RUNTIME": "Runtime",
"DESCRIPTION": "Descrizione"
@@ -103,9 +103,9 @@
}
},
"FAVORITE_LIBRARIES": {
"TITLE": "Raccolte preferite",
"TITLE": "Raccolte preferite",
"SIDENAV_LINK": {
"LABEL": "Raccolte preferite",
"LABEL": "Raccolte preferite",
"TOOLTIP": "Accedi alle raccolte preferite"
}
}
@@ -201,7 +201,7 @@
"UNSHARE": "Rimuovi condivisione",
"DETAILS": "Visualizza dettagli",
"VERSIONS": "Gestione versioni",
"UPLOAD_VERSION": "Caricare la nuova versione",
"UPLOAD_VERSION": "Carica la nuova versione",
"TOGGLE-SIDENAV": "Attiva/disattiva barra di navigazione laterale",
"SHARE": "Condividi",
"SHARE_EDIT": "Impostazioni di collegamento condiviso",
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Annulla richiesta di partecipazione",
"LEAVE": "Esci dalla raccolta",
"EDIT_OFFLINE": "Modifica offline",
"EDIT_OFFLINE_CANCEL": "Annulla modifica"
"EDIT_OFFLINE_CANCEL": "Annulla modifica",
"LIST_MODE": "Visualizza elenco",
"GALLERY_MODE": "Visualizza raccolta"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -278,13 +280,13 @@
"JOIN_REQUEST_FAILED": "Impossibile partecipare alla raccolta",
"JOIN_CANCEL_FAILED": "Impossibile annullare la richiesta di partecipazione",
"LEAVE_LIBRARY_FAILED": "Impossibile uscire dalla raccolta",
"INVALID_SENDER_EMAIL": "L'indirizzo email deve essere valido prima della richiesta di accesso.",
"INVALID_RECEIVER_EMAIL": "Indirizzo email del destinatario non valido. Contattare l'IT."
"INVALID_SENDER_EMAIL": "L'indirizzo e-mail deve essere valido prima della richiesta di accesso.",
"INVALID_RECEIVER_EMAIL": "Indirizzo e-mail del destinatario non valido. Contattare l'IT."
},
"UPLOAD": {
"ERROR": {
"GENERIC": "Caricamento non riuscito. Se il problema persiste, contattare l'IT",
"CONFLICT": "Nuova versione non caricata. Esiste già un fil con lo stesso nome.",
"CONFLICT": "Nuova versione non caricata. Esiste già un file con lo stesso nome.",
"500": "Errore interno del server. Riprovare o contattare il supporto IT [500]",
"504": "Timeout del server. Riprovare o contattare il supporto IT [504]",
"403": "Autorizzazioni insufficienti per caricare in questa posizione [403]",
@@ -295,7 +297,7 @@
"TRASH": {
"NODES_PURGE": {
"PLURAL": "{{ number }} elementi eliminati",
"SINGULAR": "Elemento {{ name }} eliminato",
"SINGULAR": "{{ name }} eliminato",
"PARTIAL_SINGULAR": "Elemento {{ name }} eliminato. Impossibile eliminare l'elemento {{ failed }}.",
"PARTIAL_PLURAL": "{{ number }} elementi eliminati, impossibile eliminare {{ failed }}"
},
@@ -306,7 +308,7 @@
},
"NODE_DELETION": {
"SINGULAR": "{{ name }} eliminato",
"PLURAL": "{{ number }} elementi eliminati",
"PLURAL": "Eliminati {{ number }} elementi",
"PARTIAL_SINGULAR": "Elemento {{ success }} eliminato, impossibile eliminare {{ failed }}",
"PARTIAL_PLURAL": "Elementi {{ success }} eliminati, impossibile eliminare {{ failed }}"
},
@@ -343,7 +345,7 @@
"TABS": {
"PROPERTIES": "Proprietà",
"LIBRARY_PROPERTIES": "Informazioni su",
"VERSIONS": "Versione",
"VERSIONS": "Versioni",
"COMMENTS": "Commenti"
}
}
@@ -365,7 +367,7 @@
}
},
"SHARED_LINK": {
"UNSHARE_PERMISSION_ERROR": "Non hai il permesso per rimuovere la condivisione di questo file"
"UNSHARE_PERMISSION_ERROR": "Non si dispone dei permessi per rimuovere la condivisione di questo file"
},
"VERSION": {
"DIALOG_ADF": {
@@ -373,7 +375,7 @@
"CLOSE": "Chiudi"
},
"DIALOG": {
"TITLE": "Utilizza nuova versione",
"TITLE": "Carica la nuova versione",
"CANCEL": "Annulla",
"UPLOAD": "Carica"
},
@@ -475,6 +477,11 @@
"THIS_YEAR": "Quest'anno"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Opzioni utente"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -496,8 +503,20 @@
"ADF_VERSION_LIST": {
"ACTIONS": {
"UPLOAD": {
"TOOLTIP": "Caricare la nuova versione"
"TOOLTIP": "Carica la nuova versione"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Visualizza {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Apri cartella {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Raccolta di file",
"BASELINE-LOCK-24PX": "File bloccato"
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "参加リクエストのキャンセル",
"LEAVE": "ライブラリから脱退",
"EDIT_OFFLINE": "オフライン編集",
"EDIT_OFFLINE_CANCEL": "編集のキャンセル"
"EDIT_OFFLINE_CANCEL": "編集のキャンセル",
"LIST_MODE": "リストを表示",
"GALLERY_MODE": "ギャラリーを表示"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "今年"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "ユーザーオプション"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "新しいバージョンをアップロードします"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "{{ name }} を表示",
"FOLDER_LINK_ARIA_LABEL": "{{ name }} フォルダを開く"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "ファイルライブラリ",
"BASELINE-LOCK-24PX": "ロックされているファイル"
}
}
}
}
+20 -1
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Avbryt forespørsel om tilslutning",
"LEAVE": "Forlat bibliotek",
"EDIT_OFFLINE": "Rediger frakoblet",
"EDIT_OFFLINE_CANCEL": "Avbryt redigering"
"EDIT_OFFLINE_CANCEL": "Avbryt redigering",
"LIST_MODE": "Vis liste",
"GALLERY_MODE": "Vis galleri"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Dette året"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Brukeralternativer"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Last opp ny versjon"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Vis {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Åpne {{ name }}-mappe"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Filbibliotek",
"BASELINE-LOCK-24PX": "låst fil"
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Verzoek om lid te worden annuleren",
"LEAVE": "Bibliotheek verlaten",
"EDIT_OFFLINE": "Offline bewerken",
"EDIT_OFFLINE_CANCEL": "Bewerken annuleren"
"EDIT_OFFLINE_CANCEL": "Bewerken annuleren",
"LIST_MODE": "Lijst weergeven",
"GALLERY_MODE": "Galerie weergeven"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Dit jaar"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Gebruikersopties"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Nieuwe versie uploaden"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "{{ name }} weergeven",
"FOLDER_LINK_ARIA_LABEL": "Map {{ name }} openen"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Bestandsbibliotheek",
"BASELINE-LOCK-24PX": "Vergrendeld bestand"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Anuluj żądanie dołączenia",
"LEAVE": "Opuść bibliotekę",
"EDIT_OFFLINE": "Edytuj w trybie offline",
"EDIT_OFFLINE_CANCEL": "Anuluj edytowanie"
"EDIT_OFFLINE_CANCEL": "Anuluj edytowanie",
"LIST_MODE": "Wyświetl listę",
"GALLERY_MODE": "Wyświetl galerię"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "W tym roku"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Opcje użytkownika"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Prześlij nową wersję"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Wyświetl {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Otwórz folder {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "bibliotekę plików",
"BASELINE-LOCK-24PX": "zablokowany plik"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Cancelar solicitação de ingressar",
"LEAVE": "Sair da biblioteca",
"EDIT_OFFLINE": "Editar offline",
"EDIT_OFFLINE_CANCEL": "Cancelar a edição"
"EDIT_OFFLINE_CANCEL": "Cancelar a edição",
"LIST_MODE": "Exibir lista",
"GALLERY_MODE": "Exibir galeria"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Este ano"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Opções de usuário"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Carregar nova versão"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Exibir {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Abrir pasta {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Biblioteca de arquivo",
"BASELINE-LOCK-24PX": "arquivo bloqueado"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Отменить запрос на присоединение",
"LEAVE": "Покинуть библиотеку",
"EDIT_OFFLINE": "Редактировать в автономном режиме",
"EDIT_OFFLINE_CANCEL": "Отменить редактирование"
"EDIT_OFFLINE_CANCEL": "Отменить редактирование",
"LIST_MODE": "Просмотреть список",
"GALLERY_MODE": "Просмотреть галерею"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "В этом году"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Пользовательские настройки"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Загрузить новую версию"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Просмотреть {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Открыть папку {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "Библиотека файлов",
"BASELINE-LOCK-24PX": "заблокированный файл"
}
}
}
}
+21 -2
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "Avbryt förfrågan om att gå med",
"LEAVE": "Lämna bibliotek",
"EDIT_OFFLINE": "Redigera offline",
"EDIT_OFFLINE_CANCEL": "Avbryt redigering"
"EDIT_OFFLINE_CANCEL": "Avbryt redigering",
"LIST_MODE": "Visa lista",
"GALLERY_MODE": "Visa galleri"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -475,6 +477,11 @@
"THIS_YEAR": "Detta år"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "Användaralternativ"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "Ladda upp ny version"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "Visa {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "Öppna mappen {{ name }}"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "filbibliotek",
"BASELINE-LOCK-24PX": "låst fil"
}
}
}
}
+22 -3
View File
@@ -211,7 +211,9 @@
"CANCEL_JOIN": "取消加入请求",
"LEAVE": "离开库",
"EDIT_OFFLINE": "离线编辑",
"EDIT_OFFLINE_CANCEL": "取消编辑"
"EDIT_OFFLINE_CANCEL": "取消编辑",
"LIST_MODE": "查看列表",
"GALLERY_MODE": "查看图库"
},
"DIALOGS": {
"CONFIRM_PURGE": {
@@ -420,7 +422,7 @@
"ERRORS": {
"GENERIC": "我们遇到一个问题",
"EXISTENT_SITE": "此库 ID 不可用。请尝试使用其他库 ID。",
"CONFLICT": "此库 ID 已被使用。请检查回收站。",
"CONFLICT": "此库 ID 已被使用。请检查垃圾桶。",
"ID_TOO_LONG": "对 URL 名称使用 72 个字符或更少字符",
"DESCRIPTION_TOO_LONG": "对描述使用 512 个字符或更少字符",
"TITLE_TOO_LONG": "对标题使用 256 个字符或更少字符",
@@ -475,6 +477,11 @@
"THIS_YEAR": "今年"
}
},
"AVATAR": {
"ACCESSIBILITY": {
"AVATAR_BUTTON_ARIA_LABEL": "用户选项"
}
},
"CORE": {
"METADATA": {
"ACTIONS": {
@@ -499,5 +506,17 @@
"TOOLTIP": "上传新版本"
}
}
},
"CUSTOM_NAME_COLUMN": {
"ACCESSIBILITY": {
"FILE_LINK_ARIA_LABEL": "查看 {{ name }}",
"FOLDER_LINK_ARIA_LABEL": "打开 {{ name }} 文件夹"
}
},
"ADF-DATATABLE": {
"FILE_TYPE": {
"BOOKS-24PX": "文件库",
"BASELINE-LOCK-24PX": "已锁定文件"
}
}
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
export HOST_IP=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1)
export APP_URL="http://${HOST_IP}:4000"
export APP_URL="http://${HOST_IP}:8080"
export APP_CONFIG_AUTH_TYPE="OAUTH"
export APP_CONFIG_OAUTH2_HOST="http://${HOST_IP}:8085/auth/realms/alfresco"
+1
View File
@@ -36,6 +36,7 @@
"no-console": [true, "debug", "info", "time", "timeEnd", "trace"],
"no-construct": true,
"no-debugger": true,
"no-duplicate-imports": true,
"no-duplicate-super": true,
"no-empty": false,
"no-empty-interface": true,