Compare commits
1 Commits
master
...
perfCacheA
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22630a5ce6 |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -55,7 +55,7 @@ package-lock.json @nextcloud/server-dependabot
|
||||
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
|
||||
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
|
||||
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
|
||||
/apps/webhook_listeners/appinfo/info.xml @janepie @julien-nc
|
||||
/apps/webhook_listeners/appinfo/info.xml @come-nc @julien-nc
|
||||
/apps/workflowengine/appinfo/info.xml @blizzz @juliusknorr
|
||||
|
||||
# Files frontend expertise
|
||||
|
||||
11
.github/workflows/autocheckers.yml
vendored
11
.github/workflows/autocheckers.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -74,9 +74,6 @@ jobs:
|
||||
autocheckers:
|
||||
runs-on: ubuntu-latest-low
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.2']
|
||||
@@ -91,7 +88,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -128,4 +125,4 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && (needs.autocheckers.result != 'success' || needs.autoloader.result != 'success') }}; then exit 1; fi
|
||||
run: if ${{ needs.autocheckers.result != 'success' || (needs.changes.outputs.src != 'false' && needs.autoloader.result != 'success') }}; then exit 1; fi
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check requirement
|
||||
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
|
||||
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@@ -37,13 +37,13 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
|
||||
uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
config-file: ./.github/codeql-config.yml
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
|
||||
uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
||||
2
.github/workflows/command-compile.yml
vendored
2
.github/workflows/command-compile.yml
vendored
@@ -124,7 +124,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
cache: npm
|
||||
|
||||
49
.github/workflows/command-pull-3rdparty.yml
vendored
49
.github/workflows/command-pull-3rdparty.yml
vendored
@@ -14,7 +14,6 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
pull-requests: read
|
||||
|
||||
# On pull requests and if the comment starts with `/update-3rdparty`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/update-3rdparty')
|
||||
@@ -28,25 +27,8 @@ jobs:
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: '+1'
|
||||
|
||||
# issue_comment events carry no pull_request context in their payload, so we
|
||||
# must fetch the PR via the API. This also gives us base.ref for free, avoiding
|
||||
# a second API call. The GITHUB_TOKEN needs pull-requests:read (granted above).
|
||||
- name: Get pull request metadata
|
||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||
id: get-pr
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const pull = await github.rest.pulls.get({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: context.issue.number,
|
||||
});
|
||||
core.setOutput('head_repo', pull.data.head.repo?.full_name ?? '');
|
||||
core.setOutput('base_ref', pull.data.base.ref);
|
||||
|
||||
- name: Disabled on forks
|
||||
if: steps.get-pr.outputs.head_repo != github.repository
|
||||
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
|
||||
run: |
|
||||
echo 'Can not execute /update-3rdparty on forks'
|
||||
exit 1
|
||||
@@ -64,17 +46,24 @@ jobs:
|
||||
ref: ${{ steps.comment-branch.outputs.head_ref }}
|
||||
|
||||
- name: Register server reference to fallback to master branch
|
||||
run: |
|
||||
base_ref="${{ steps.get-pr.outputs.base_ref }}"
|
||||
if [[ "$base_ref" == "main" || "$base_ref" == "master" ]]; then
|
||||
echo "server_ref=master" >> "$GITHUB_ENV"
|
||||
echo "Setting server_ref to master"
|
||||
elif [[ "$base_ref" =~ ^stable[0-9]+$ ]]; then
|
||||
echo "server_ref=$base_ref" >> "$GITHUB_ENV"
|
||||
echo "Setting server_ref to $base_ref"
|
||||
else
|
||||
echo "Not based on master/main/stable*, so skipping pull 3rdparty command"
|
||||
fi
|
||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const baseRef = context.payload.pull_request.base.ref
|
||||
if (baseRef === 'main' || baseRef === 'master') {
|
||||
core.exportVariable('server_ref', 'master');
|
||||
console.log('Setting server_ref to master');
|
||||
} else {
|
||||
const regex = /^stable(\d+)$/
|
||||
const match = baseRef.match(regex)
|
||||
if (match) {
|
||||
core.exportVariable('server_ref', match[0]);
|
||||
console.log('Setting server_ref to ' + match[0]);
|
||||
} else {
|
||||
console.log('Not based on master/main/stable*, so skipping pull 3rdparty command');
|
||||
}
|
||||
}
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
|
||||
17
.github/workflows/cypress.yml
vendored
17
.github/workflows/cypress.yml
vendored
@@ -41,6 +41,12 @@ jobs:
|
||||
PUPPETEER_SKIP_DOWNLOAD: true
|
||||
|
||||
steps:
|
||||
- name: Disabled on forks
|
||||
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
|
||||
run: |
|
||||
echo 'Can not run cypress on forks'
|
||||
exit 1
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
@@ -66,7 +72,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -154,7 +160,7 @@ jobs:
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
@@ -165,11 +171,15 @@ jobs:
|
||||
run: ./node_modules/cypress/bin/cypress install
|
||||
|
||||
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
|
||||
uses: cypress-io/github-action@783cb3f07983868532cabaedaa1e6c00ff4786a8 # v7.1.9
|
||||
uses: cypress-io/github-action@bc22e01685c56e89e7813fd8e26f33dc47f87e15 # v7.1.5
|
||||
with:
|
||||
# We already installed the dependencies in the init job
|
||||
install: false
|
||||
component: ${{ matrix.containers == 'component' }}
|
||||
group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}
|
||||
# cypress env
|
||||
ci-build-id: ${{ matrix.use-cypress-cloud && format('{0}-{1}', github.sha, github.run_number) || '' }}
|
||||
tag: ${{ matrix.use-cypress-cloud && github.event_name || '' }}
|
||||
env:
|
||||
# Needs to be prefixed with CYPRESS_
|
||||
CYPRESS_BRANCH: ${{ env.BRANCH }}
|
||||
@@ -178,6 +188,7 @@ jobs:
|
||||
# Needed for some specific code workarounds
|
||||
TESTING: true
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||
SPLIT: ${{ matrix.total-containers }}
|
||||
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
|
||||
SPLIT_RANDOM_SEED: ${{ github.run_id }}
|
||||
|
||||
6
.github/workflows/files-external-ftp.yml
vendored
6
.github/workflows/files-external-ftp.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -115,7 +115,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-ftp
|
||||
|
||||
10
.github/workflows/files-external-s3.yml
vendored
10
.github/workflows/files-external-s3.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -80,7 +80,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -115,7 +115,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
@@ -169,7 +169,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -197,7 +197,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
|
||||
8
.github/workflows/files-external-sftp.yml
vendored
8
.github/workflows/files-external-sftp.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -73,11 +73,11 @@ jobs:
|
||||
- name: Set up sftpd
|
||||
run: |
|
||||
sudo mkdir /tmp/sftp
|
||||
sudo chmod -R 0777 /tmp/sftp
|
||||
sudo chown -R 0777 /tmp/sftp
|
||||
if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -104,7 +104,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-sftp
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
|
||||
6
.github/workflows/files-external-smb.yml
vendored
6
.github/workflows/files-external-smb.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-smb
|
||||
|
||||
6
.github/workflows/files-external-webdav.yml
vendored
6
.github/workflows/files-external-webdav.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -76,7 +76,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -108,7 +108,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-webdav
|
||||
|
||||
6
.github/workflows/files-external.yml
vendored
6
.github/workflows/files-external.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-generic
|
||||
|
||||
@@ -73,7 +73,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Set up php 8.2
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: 8.2
|
||||
|
||||
114
.github/workflows/integration-dav.yml
vendored
114
.github/workflows/integration-dav.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -52,69 +52,69 @@ jobs:
|
||||
name: ${{ matrix.service }} (${{ matrix.endpoint }} endpoint) php${{ matrix.php-versions }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: 'none'
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
coverage: 'none'
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Python
|
||||
uses: LizardByte/actions/actions/setup_python@0affa4f7bcb27562658960eee840eff8ff844578 # v2026.328.161128
|
||||
with:
|
||||
python-version: '2.7'
|
||||
- name: Set up Python
|
||||
uses: LizardByte/actions/actions/setup_python@70bb8d394d1c92f6113aeec6ae9cc959a5763d15 # v2026.227.200013
|
||||
with:
|
||||
python-version: '2.7'
|
||||
|
||||
- name: Set up CalDAVTester
|
||||
run: |
|
||||
git clone --depth=1 https://github.com/apple/ccs-caldavtester.git CalDAVTester
|
||||
git clone --depth=1 https://github.com/apple/ccs-pycalendar.git pycalendar
|
||||
- name: Set up CalDAVTester
|
||||
run: |
|
||||
git clone --depth=1 https://github.com/apple/ccs-caldavtester.git CalDAVTester
|
||||
git clone --depth=1 https://github.com/apple/ccs-pycalendar.git pycalendar
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
# disable the trashbin, so recurrent deletion of the same object works
|
||||
./occ config:app:set dav calendarRetentionObligation --value=0
|
||||
# Prepare users
|
||||
OC_PASS=user01 ./occ user:add --password-from-env user01
|
||||
OC_PASS=user02 ./occ user:add --password-from-env user02
|
||||
# Prepare calendars
|
||||
./occ dav:create-calendar user01 calendar
|
||||
./occ dav:create-calendar user01 shared
|
||||
./occ dav:create-calendar user02 calendar
|
||||
# Prepare address books
|
||||
./occ dav:create-addressbook user01 addressbook
|
||||
./occ dav:create-addressbook user02 addressbook
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
# disable the trashbin, so recurrent deletion of the same object works
|
||||
./occ config:app:set dav calendarRetentionObligation --value=0
|
||||
# Prepare users
|
||||
OC_PASS=user01 ./occ user:add --password-from-env user01
|
||||
OC_PASS=user02 ./occ user:add --password-from-env user02
|
||||
# Prepare calendars
|
||||
./occ dav:create-calendar user01 calendar
|
||||
./occ dav:create-calendar user01 shared
|
||||
./occ dav:create-calendar user02 calendar
|
||||
# Prepare address books
|
||||
./occ dav:create-addressbook user01 addressbook
|
||||
./occ dav:create-addressbook user02 addressbook
|
||||
|
||||
- name: Run Nextcloud
|
||||
run: |
|
||||
php -S localhost:8888 &
|
||||
- name: Run Nextcloud
|
||||
run: |
|
||||
php -S localhost:8888 &
|
||||
|
||||
- name: Run CalDAVTester
|
||||
run: |
|
||||
cp "apps/dav/tests/testsuits/caldavtest/serverinfo-${{ matrix.endpoint }}${{ matrix.endpoint == 'old' && (matrix.service == 'CardDAV' && '-carddav' || '-caldav') || '' }}-endpoint.xml" "apps/dav/tests/testsuits/caldavtest/serverinfo.xml"
|
||||
pushd CalDAVTester
|
||||
PYTHONPATH="../pycalendar/src" python testcaldav.py --print-details-onfail --basedir "../apps/dav/tests/testsuits/caldavtest" -o cdt.txt \
|
||||
"${{ matrix.service }}/current-user-principal.xml" \
|
||||
"${{ matrix.service }}/sync-report.xml" \
|
||||
${{ matrix.endpoint == 'new' && format('{0}/sharing-{1}.xml', matrix.service, matrix.service == 'CalDAV' && 'calendars' || 'addressbooks') || ';' }}
|
||||
popd
|
||||
- name: Run CalDAVTester
|
||||
run: |
|
||||
cp "apps/dav/tests/testsuits/caldavtest/serverinfo-${{ matrix.endpoint }}${{ matrix.endpoint == 'old' && (matrix.service == 'CardDAV' && '-carddav' || '-caldav') || '' }}-endpoint.xml" "apps/dav/tests/testsuits/caldavtest/serverinfo.xml"
|
||||
pushd CalDAVTester
|
||||
PYTHONPATH="../pycalendar/src" python testcaldav.py --print-details-onfail --basedir "../apps/dav/tests/testsuits/caldavtest" -o cdt.txt \
|
||||
"${{ matrix.service }}/current-user-principal.xml" \
|
||||
"${{ matrix.service }}/sync-report.xml" \
|
||||
${{ matrix.endpoint == 'new' && format('{0}/sharing-{1}.xml', matrix.service, matrix.service == 'CalDAV' && 'calendars' || 'addressbooks') || ';' }}
|
||||
popd
|
||||
|
||||
- name: Print Nextcloud logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
- name: Print Nextcloud logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
caldav-integration-summary:
|
||||
permissions:
|
||||
|
||||
4
.github/workflows/integration-litmus.yml
vendored
4
.github/workflows/integration-litmus.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
5
.github/workflows/integration-s3-primary.yml
vendored
5
.github/workflows/integration-s3-primary.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -82,7 +82,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -95,6 +95,7 @@ jobs:
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: Set up Nextcloud
|
||||
|
||||
4
.github/workflows/integration-sqlite.yml
vendored
4
.github/workflows/integration-sqlite.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -121,7 +121,7 @@ jobs:
|
||||
ref: ${{ matrix.activity-versions }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
4
.github/workflows/lint-eslint.yml
vendored
4
.github/workflows/lint-eslint.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
7
.github/workflows/lint-php-cs.yml
vendored
7
.github/workflows/lint-php-cs.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -44,9 +44,6 @@ jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
name: php-cs
|
||||
|
||||
steps:
|
||||
@@ -56,7 +53,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: 8.2
|
||||
|
||||
4
.github/workflows/lint-php.yml
vendored
4
.github/workflows/lint-php.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
45
.github/workflows/lint-stylelint.yml
vendored
45
.github/workflows/lint-stylelint.yml
vendored
@@ -18,37 +18,9 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest-low
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '**/src/**'
|
||||
- '**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- '**.css'
|
||||
- '**.scss'
|
||||
- '**.vue'
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
name: stylelint
|
||||
|
||||
steps:
|
||||
@@ -65,7 +37,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -79,18 +51,3 @@ jobs:
|
||||
|
||||
- name: Lint
|
||||
run: npm run stylelint
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest-low
|
||||
needs: [changes, lint]
|
||||
|
||||
if: always()
|
||||
|
||||
# This is the summary, we just avoid to rename it so that branch protection rules still match
|
||||
name: stylelint
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
|
||||
|
||||
4
.github/workflows/node-test-handlebars.yml
vendored
4
.github/workflows/node-test-handlebars.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -71,7 +71,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
9
.github/workflows/node-test.yml
vendored
9
.github/workflows/node-test.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -83,11 +83,14 @@ jobs:
|
||||
run: |
|
||||
npm ci
|
||||
|
||||
# - name: Test
|
||||
# run: npm run test --if-present
|
||||
|
||||
- name: Test and process coverage
|
||||
run: npm run test:coverage
|
||||
|
||||
- name: Collect coverage
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./coverage/lcov.info,./coverage/legacy/lcov.info
|
||||
|
||||
|
||||
4
.github/workflows/node.yml
vendored
4
.github/workflows/node.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
2
.github/workflows/npm-audit-fix.yml
vendored
2
.github/workflows/npm-audit-fix.yml
vendored
@@ -49,7 +49,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
6
.github/workflows/object-storage-azure.yml
vendored
6
.github/workflows/object-storage-azure.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -117,7 +117,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-azure
|
||||
|
||||
7
.github/workflows/object-storage-s3.yml
vendored
7
.github/workflows/object-storage-s3.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -86,7 +86,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -111,6 +111,7 @@ jobs:
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
@@ -122,7 +123,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-s3
|
||||
|
||||
6
.github/workflows/object-storage-swift.yml
vendored
6
.github/workflows/object-storage-swift.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -83,7 +83,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -113,7 +113,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-swift
|
||||
|
||||
2
.github/workflows/openapi.yml
vendored
2
.github/workflows/openapi.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
|
||||
15
.github/workflows/performance.yml
vendored
15
.github/workflows/performance.yml
vendored
@@ -15,13 +15,7 @@ jobs:
|
||||
performance-testing:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Skip entirely on fork PRs so the job result is 'skipped' rather than
|
||||
# 'failure'. The profiler action uses github.event.pull_request.head.repo.clone_url
|
||||
# and GITHUB_TOKEN in ways that do not work reliably from forks, and a
|
||||
# clean skip is far less confusing for contributors than a mid-run error.
|
||||
if: >-
|
||||
github.repository_owner != 'nextcloud-gmbh' &&
|
||||
github.event.pull_request.head.repo.full_name == github.repository
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
@@ -34,6 +28,11 @@ jobs:
|
||||
name: performance-${{ matrix.php-versions }}
|
||||
|
||||
steps:
|
||||
- name: Disabled on forks
|
||||
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
|
||||
run: |
|
||||
echo 'Can not run performance tests on forks'
|
||||
exit 1
|
||||
|
||||
- name: Checkout server before PR
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
@@ -43,7 +42,7 @@ jobs:
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
1
.github/workflows/phpunit-32bits.yml
vendored
1
.github/workflows/phpunit-32bits.yml
vendored
@@ -9,7 +9,6 @@ on:
|
||||
- ".github/workflows/phpunit-32bits.yml"
|
||||
- "tests/phpunit-autotest.xml"
|
||||
- "lib/private/Snowflake/*"
|
||||
- "tests/lib/Preview/PreviewMapperTest.php"
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "15 1 * * 1-6"
|
||||
|
||||
6
.github/workflows/phpunit-mariadb.yml
vendored
6
.github/workflows/phpunit-mariadb.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mariadb
|
||||
|
||||
6
.github/workflows/phpunit-memcached.yml
vendored
6
.github/workflows/phpunit-memcached.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -78,7 +78,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -104,7 +104,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-memcached
|
||||
|
||||
6
.github/workflows/phpunit-mysql-sharding.yml
vendored
6
.github/workflows/phpunit-mysql-sharding.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -162,7 +162,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mysql
|
||||
|
||||
6
.github/workflows/phpunit-mysql.yml
vendored
6
.github/workflows/phpunit-mysql.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mysql
|
||||
|
||||
6
.github/workflows/phpunit-nodb.yml
vendored
6
.github/workflows/phpunit-nodb.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -110,7 +110,7 @@ jobs:
|
||||
|
||||
- name: Upload nodb code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.nodb.xml
|
||||
flags: phpunit-nodb
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -78,7 +78,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -104,7 +104,7 @@ jobs:
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
run: composer run test:db -- --log-junit junit.xml
|
||||
run: composer run test:db
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
|
||||
6
.github/workflows/phpunit-oci.yml
vendored
6
.github/workflows/phpunit-oci.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -105,7 +105,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -132,7 +132,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-oci
|
||||
|
||||
6
.github/workflows/phpunit-pgsql.yml
vendored
6
.github/workflows/phpunit-pgsql.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-postgres
|
||||
|
||||
6
.github/workflows/phpunit-sqlite.yml
vendored
6
.github/workflows/phpunit-sqlite.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -114,7 +114,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-sqlite
|
||||
|
||||
2
.github/workflows/rector-apply.yml
vendored
2
.github/workflows/rector-apply.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
|
||||
- name: Set up php${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
42
.github/workflows/rector.yml
vendored
42
.github/workflows/rector.yml
vendored
@@ -13,34 +13,10 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest-low
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/lib/**'
|
||||
- '**/tests/**'
|
||||
- '**/vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
strict:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -50,7 +26,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -67,17 +43,3 @@ jobs:
|
||||
- name: Show changes
|
||||
if: always()
|
||||
run: git diff --exit-code -- . ':!lib/composer'
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest-low
|
||||
needs: [changes, strict]
|
||||
|
||||
if: always()
|
||||
|
||||
name: rector-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.strict.result != 'success' }}; then exit 1; fi
|
||||
|
||||
76
.github/workflows/static-code-analysis.yml
vendored
76
.github/workflows/static-code-analysis.yml
vendored
@@ -21,35 +21,10 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest-low
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src }}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- '3rdparty/**'
|
||||
- '**/appinfo/**'
|
||||
- '**/lib/**'
|
||||
- '**/templates/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
|
||||
static-code-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -59,7 +34,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -81,8 +56,7 @@ jobs:
|
||||
static-code-analysis-security:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
permissions:
|
||||
security-events: write
|
||||
@@ -95,7 +69,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -114,15 +88,14 @@ jobs:
|
||||
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v3
|
||||
uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -132,7 +105,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -154,8 +127,7 @@ jobs:
|
||||
static-code-analysis-ncu:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -165,7 +137,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -183,8 +155,7 @@ jobs:
|
||||
static-code-analysis-strict:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -194,7 +165,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -207,28 +178,3 @@ jobs:
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm:strict -- --threads=1 --monochrome --no-progress --output-format=github
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest-low
|
||||
needs: [changes, static-code-analysis, static-code-analysis-security, static-code-analysis-ocp, static-code-analysis-ncu, static-code-analysis-strict]
|
||||
|
||||
if: always()
|
||||
|
||||
name: static-code-analysis-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: |
|
||||
if ${{ needs.changes.outputs.src != 'false' && (
|
||||
needs.static-code-analysis-security.result != 'success' ||
|
||||
(github.event_name != 'push' && (
|
||||
needs.static-code-analysis.result != 'success' ||
|
||||
needs.static-code-analysis-ocp.result != 'success' ||
|
||||
needs.static-code-analysis-ncu.result != 'success' ||
|
||||
needs.static-code-analysis-strict.result != 'success'
|
||||
))
|
||||
) }}; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -115,7 +115,7 @@ jobs:
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: "automated/noid/update-min-supported-desktop-version"
|
||||
branch: "automated/noid/${{ matrix.branches }}-update-min-supported-desktop-version"
|
||||
title: "chore: Update minimum supported desktop version to ${{ steps.extract-version.outputs.VERSION }}"
|
||||
base: "master"
|
||||
body: |
|
||||
|
||||
2
3rdparty
2
3rdparty
Submodule 3rdparty updated: f3f66d0662...e1dc48ae9d
@@ -1,37 +1,32 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"Comments" : "კომენტარები",
|
||||
"You commented" : "თქვენი კომენტარი",
|
||||
"{author} commented" : "{author}-ის კომენტარი",
|
||||
"You commented on %1$s" : "თქვენი კომენტარი %1$s-ზე",
|
||||
"You commented on {file}" : "თქვენი კომენტარი {file}-ზე",
|
||||
"%1$s commented on %2$s" : "%1$s-მა დატოვა კომენტარი %2$s-ზე",
|
||||
"{author} commented on {file}" : "{author}-მა დატოვა კომენტარი {file}-ზე",
|
||||
"<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებისთვის",
|
||||
"Files" : "ფაილები",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "თქვენ გახსენეს \"{file}\"-ის კომენტარში ანგარიშიდან, რომელიც მის შემდეგ წაიშალა",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user}-მა გახსენათ კომენტარში ფაილზე \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files აპის დამატება ფაილებზე კომენტარების დასამატებლად",
|
||||
"Edit comment" : "კომენტარის ჩასწორება",
|
||||
"Delete comment" : "კომენტარის წაშლა",
|
||||
"Cancel edit" : "ჩასწორების გაუქმება",
|
||||
"New comment" : "ახალი კომენტარი",
|
||||
"Write a comment …" : "კომენტარის დაწერა …",
|
||||
"Post comment" : "კომენტარის დაპოსტვა",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ ხსენებისთვის, : ემოჯისთვის, / ჭკვიანი ამრჩევისთვის",
|
||||
"Could not reload comments" : "კომენტარების თავიდან ჩატვირთვა შეუძლებელია",
|
||||
"Failed to mark comments as read" : "კომენტარების წაკითხულად მონიშვნა ჩავარდა",
|
||||
"Unable to load the comments list" : "კომენტარების სიის ჩატვირთვა ჩავარდა",
|
||||
"No comments yet, start the conversation!" : "ჯერ კომენტარები არაა. დაიწყეთ საუბარი!",
|
||||
"No more messages" : "მეტი შეტყობინება აღარაა",
|
||||
"Retry" : "თავიდან ცდა",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 ახალი კომენტარი","{unread} ახალი კომენტარი"],
|
||||
"Comment" : "კომენტარი",
|
||||
"An error occurred while trying to edit the comment" : "კომენტარის ჩასწორებისას აღმოჩენილია შეცდომა",
|
||||
"Comment deleted" : "კომენტარი წაიშალა",
|
||||
"An error occurred while trying to delete the comment" : "კომენტარის წაშლისას აღმოჩენილია შეცდომა",
|
||||
"An error occurred while trying to create the comment" : "კომენტარის შექმნისას აღმოჩენილია შეცდომა",
|
||||
"Write a comment …" : "კომენტარის დაწერა …"
|
||||
"Comments" : "Comments",
|
||||
"You commented" : "You commented",
|
||||
"{author} commented" : "{author} commented",
|
||||
"You commented on %1$s" : "You commented on %1$s",
|
||||
"You commented on {file}" : "You commented on {file}",
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"Post comment" : "Post comment",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
|
||||
"Could not reload comments" : "Could not reload comments",
|
||||
"Failed to mark comments as read" : "Failed to mark comments as read",
|
||||
"Unable to load the comments list" : "Unable to load the comments list",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"No more messages" : "No more messages",
|
||||
"Retry" : "Retry",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
|
||||
"Comment" : "Comment",
|
||||
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
|
||||
"Comment deleted" : "Comment deleted",
|
||||
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
|
||||
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
|
||||
},
|
||||
"nplurals=2; plural=(n!=1);");
|
||||
|
||||
@@ -1,35 +1,30 @@
|
||||
{ "translations": {
|
||||
"Comments" : "კომენტარები",
|
||||
"You commented" : "თქვენი კომენტარი",
|
||||
"{author} commented" : "{author}-ის კომენტარი",
|
||||
"You commented on %1$s" : "თქვენი კომენტარი %1$s-ზე",
|
||||
"You commented on {file}" : "თქვენი კომენტარი {file}-ზე",
|
||||
"%1$s commented on %2$s" : "%1$s-მა დატოვა კომენტარი %2$s-ზე",
|
||||
"{author} commented on {file}" : "{author}-მა დატოვა კომენტარი {file}-ზე",
|
||||
"<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებისთვის",
|
||||
"Files" : "ფაილები",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "თქვენ გახსენეს \"{file}\"-ის კომენტარში ანგარიშიდან, რომელიც მის შემდეგ წაიშალა",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user}-მა გახსენათ კომენტარში ფაილზე \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files აპის დამატება ფაილებზე კომენტარების დასამატებლად",
|
||||
"Edit comment" : "კომენტარის ჩასწორება",
|
||||
"Delete comment" : "კომენტარის წაშლა",
|
||||
"Cancel edit" : "ჩასწორების გაუქმება",
|
||||
"New comment" : "ახალი კომენტარი",
|
||||
"Write a comment …" : "კომენტარის დაწერა …",
|
||||
"Post comment" : "კომენტარის დაპოსტვა",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ ხსენებისთვის, : ემოჯისთვის, / ჭკვიანი ამრჩევისთვის",
|
||||
"Could not reload comments" : "კომენტარების თავიდან ჩატვირთვა შეუძლებელია",
|
||||
"Failed to mark comments as read" : "კომენტარების წაკითხულად მონიშვნა ჩავარდა",
|
||||
"Unable to load the comments list" : "კომენტარების სიის ჩატვირთვა ჩავარდა",
|
||||
"No comments yet, start the conversation!" : "ჯერ კომენტარები არაა. დაიწყეთ საუბარი!",
|
||||
"No more messages" : "მეტი შეტყობინება აღარაა",
|
||||
"Retry" : "თავიდან ცდა",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 ახალი კომენტარი","{unread} ახალი კომენტარი"],
|
||||
"Comment" : "კომენტარი",
|
||||
"An error occurred while trying to edit the comment" : "კომენტარის ჩასწორებისას აღმოჩენილია შეცდომა",
|
||||
"Comment deleted" : "კომენტარი წაიშალა",
|
||||
"An error occurred while trying to delete the comment" : "კომენტარის წაშლისას აღმოჩენილია შეცდომა",
|
||||
"An error occurred while trying to create the comment" : "კომენტარის შექმნისას აღმოჩენილია შეცდომა",
|
||||
"Write a comment …" : "კომენტარის დაწერა …"
|
||||
"Comments" : "Comments",
|
||||
"You commented" : "You commented",
|
||||
"{author} commented" : "{author} commented",
|
||||
"You commented on %1$s" : "You commented on %1$s",
|
||||
"You commented on {file}" : "You commented on {file}",
|
||||
"%1$s commented on %2$s" : "%1$s commented on %2$s",
|
||||
"{author} commented on {file}" : "{author} commented on {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
|
||||
"Edit comment" : "Edit comment",
|
||||
"Delete comment" : "Delete comment",
|
||||
"Cancel edit" : "Cancel edit",
|
||||
"Post comment" : "Post comment",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
|
||||
"Could not reload comments" : "Could not reload comments",
|
||||
"Failed to mark comments as read" : "Failed to mark comments as read",
|
||||
"Unable to load the comments list" : "Unable to load the comments list",
|
||||
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
|
||||
"No more messages" : "No more messages",
|
||||
"Retry" : "Retry",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
|
||||
"Comment" : "Comment",
|
||||
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
|
||||
"Comment deleted" : "Comment deleted",
|
||||
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
|
||||
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
|
||||
},"pluralForm" :"nplurals=2; plural=(n!=1);"
|
||||
}
|
||||
@@ -10,14 +10,14 @@ OC.L10N.register(
|
||||
"{author} commented on {file}" : "{author} reageerde op {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
|
||||
"Files" : "Bestanden",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een reactie van een account dat intussen is verwijderd",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
|
||||
"Edit comment" : "Reactie bewerken",
|
||||
"Delete comment" : "Reactie verwijderen",
|
||||
"Cancel edit" : "Bewerking annuleren",
|
||||
"New comment" : "Nieuwe reactie",
|
||||
"Write a comment …" : "Schrijf een reactie …",
|
||||
"Write a comment …" : "Schrijf een commentaar …",
|
||||
"Post comment" : "Reactie plaatsen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
|
||||
"Could not reload comments" : "Kon reactie niet opnieuw laden",
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
"{author} commented on {file}" : "{author} reageerde op {file}",
|
||||
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
|
||||
"Files" : "Bestanden",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een reactie van een account dat intussen is verwijderd",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
|
||||
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
|
||||
"Edit comment" : "Reactie bewerken",
|
||||
"Delete comment" : "Reactie verwijderen",
|
||||
"Cancel edit" : "Bewerking annuleren",
|
||||
"New comment" : "Nieuwe reactie",
|
||||
"Write a comment …" : "Schrijf een reactie …",
|
||||
"Write a comment …" : "Schrijf een commentaar …",
|
||||
"Post comment" : "Reactie plaatsen",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
|
||||
"Could not reload comments" : "Kon reactie niet opnieuw laden",
|
||||
|
||||
@@ -34,8 +34,7 @@ class LoadSidebarScripts implements IEventListener {
|
||||
$this->commentsManager->load();
|
||||
|
||||
$this->initialState->provideInitialState('activityEnabled', $this->appManager->isEnabledForUser('activity'));
|
||||
// Add comments sidebar tab script/style
|
||||
Util::addStyle(Application::APP_ID, 'comments-tab');
|
||||
// Add comments sidebar tab script
|
||||
Util::addScript(Application::APP_ID, 'comments-tab', 'files');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import type { IFolder, IView } from '@nextcloud/files'
|
||||
|
||||
import { File, Permission } from '@nextcloud/files'
|
||||
import { describe, expect, test, vi } from 'vitest'
|
||||
import logger from '../logger.ts'
|
||||
import logger from '../logger.js'
|
||||
import { action } from './inlineUnreadCommentsAction.ts'
|
||||
|
||||
const view = {
|
||||
|
||||
@@ -8,8 +8,8 @@ import type { IFileAction } from '@nextcloud/files'
|
||||
import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw'
|
||||
import { getSidebar } from '@nextcloud/files'
|
||||
import { n, t } from '@nextcloud/l10n'
|
||||
import logger from '../logger.ts'
|
||||
import { isUsingActivityIntegration } from '../utils/activity.ts'
|
||||
import logger from '../logger.js'
|
||||
import { isUsingActivityIntegration } from '../utils/activity.js'
|
||||
|
||||
export const action: IFileAction = {
|
||||
id: 'comments-unread',
|
||||
|
||||
@@ -4,40 +4,46 @@
|
||||
*/
|
||||
|
||||
import type { INode } from '@nextcloud/files'
|
||||
import type { App } from 'vue'
|
||||
|
||||
import { createPinia } from 'pinia'
|
||||
import { createApp } from 'vue'
|
||||
import logger from './logger.ts'
|
||||
import { getComments } from './services/GetComments.ts'
|
||||
import moment from '@nextcloud/moment'
|
||||
import { createPinia, PiniaVuePlugin } from 'pinia'
|
||||
import Vue, { type ComponentPublicInstance } from 'vue'
|
||||
import logger from './logger.js'
|
||||
import { getComments } from './services/GetComments.js'
|
||||
|
||||
Vue.use(PiniaVuePlugin)
|
||||
|
||||
let ActivityTabPluginView
|
||||
let ActivityTabPluginInstance
|
||||
|
||||
/**
|
||||
* Register the comments plugins for the Activity sidebar
|
||||
*/
|
||||
export function registerCommentsPlugins() {
|
||||
let app: App
|
||||
|
||||
window.OCA.Activity.registerSidebarAction({
|
||||
mount: async (el: HTMLElement, { node, reload }: { node: INode, reload: () => void }) => {
|
||||
const pinia = createPinia()
|
||||
|
||||
if (!app) {
|
||||
if (!ActivityTabPluginView) {
|
||||
const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue')
|
||||
app = createApp(
|
||||
ActivityCommentAction,
|
||||
{
|
||||
reloadCallback: reload,
|
||||
resourceId: node.fileid,
|
||||
},
|
||||
)
|
||||
// @ts-expect-error Types are broken for Vue2
|
||||
ActivityTabPluginView = Vue.extend(ActivityCommentAction)
|
||||
}
|
||||
app.use(pinia)
|
||||
app.mount(el)
|
||||
ActivityTabPluginInstance = new ActivityTabPluginView({
|
||||
el,
|
||||
pinia,
|
||||
propsData: {
|
||||
reloadCallback: reload,
|
||||
resourceId: node.fileid,
|
||||
},
|
||||
})
|
||||
logger.info('Comments plugin mounted in Activity sidebar action', { node })
|
||||
},
|
||||
unmount: () => {
|
||||
// destroy previous instance if available
|
||||
app?.unmount()
|
||||
if (ActivityTabPluginInstance) {
|
||||
ActivityTabPluginInstance.$destroy()
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -51,26 +57,26 @@ export function registerCommentsPlugins() {
|
||||
)
|
||||
logger.debug('Loaded comments', { node, comments })
|
||||
const { default: CommentView } = await import('./views/ActivityCommentEntry.vue')
|
||||
// @ts-expect-error Types are broken for Vue2
|
||||
const CommentsViewObject = Vue.extend(CommentView)
|
||||
|
||||
return comments.map((comment) => ({
|
||||
_CommentsViewInstance: undefined as App | undefined,
|
||||
_CommentsViewInstance: undefined as ComponentPublicInstance | undefined,
|
||||
|
||||
timestamp: Date.parse(comment.props?.creationDateTime as string | undefined ?? ''),
|
||||
timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),
|
||||
|
||||
mount(element: HTMLElement, { reload }) {
|
||||
const app = createApp(
|
||||
CommentView,
|
||||
{
|
||||
this._CommentsViewInstance = new CommentsViewObject({
|
||||
el: element,
|
||||
propsData: {
|
||||
comment,
|
||||
resourceId: node.fileid,
|
||||
reloadCallback: reload,
|
||||
},
|
||||
)
|
||||
app.mount(element)
|
||||
this._CommentsViewInstance = app
|
||||
})
|
||||
},
|
||||
unmount() {
|
||||
this._CommentsViewInstance?.unmount()
|
||||
this._CommentsViewInstance?.$destroy()
|
||||
},
|
||||
}))
|
||||
})
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import logger from './logger.ts'
|
||||
import CommentsInstance from './services/CommentsInstance.ts'
|
||||
import logger from './logger.js'
|
||||
import CommentsInstance from './services/CommentsInstance.js'
|
||||
|
||||
// Init Comments
|
||||
if (window.OCA && !window.OCA.Comments) {
|
||||
@@ -13,7 +13,7 @@
|
||||
<!-- Author -->
|
||||
<NcAvatar
|
||||
class="comment__avatar"
|
||||
:displayName="actorDisplayName"
|
||||
:display-name="actorDisplayName"
|
||||
:user="actorId"
|
||||
:size="32" />
|
||||
</div>
|
||||
@@ -26,7 +26,7 @@
|
||||
<NcActions v-if="isOwnComment && id && !loading" class="comment__actions">
|
||||
<template v-if="!editing">
|
||||
<NcActionButton
|
||||
closeAfterClick
|
||||
close-after-click
|
||||
@click="onEdit">
|
||||
<template #icon>
|
||||
<IconPencilOutline :size="20" />
|
||||
@@ -35,7 +35,7 @@
|
||||
</NcActionButton>
|
||||
<NcActionSeparator />
|
||||
<NcActionButton
|
||||
closeAfterClick
|
||||
close-after-click
|
||||
@click="onDeleteWithUndo">
|
||||
<template #icon>
|
||||
<IconTrashCanOutline :size="20" />
|
||||
@@ -60,7 +60,7 @@
|
||||
v-else-if="creationDateTime"
|
||||
class="comment__timestamp"
|
||||
:timestamp="timestamp"
|
||||
:ignoreSeconds="true" />
|
||||
:ignore-seconds="true" />
|
||||
</div>
|
||||
|
||||
<!-- Message editor -->
|
||||
@@ -68,14 +68,14 @@
|
||||
<div class="comment__editor-group">
|
||||
<NcRichContenteditable
|
||||
ref="editor"
|
||||
v-model="localMessage"
|
||||
:autoComplete
|
||||
:auto-complete="autoComplete"
|
||||
:contenteditable="!loading"
|
||||
:label="editor ? t('comments', 'New comment') : t('comments', 'Edit comment')"
|
||||
:placeholder="t('comments', 'Write a comment …')"
|
||||
:userData
|
||||
:model-value="localMessage"
|
||||
:user-data="userData"
|
||||
aria-describedby="tab-comments__editor-description"
|
||||
@update:modelValue="submitted = false"
|
||||
@update:value="updateLocalMessage"
|
||||
@submit="onSubmit" />
|
||||
<div class="comment__submit">
|
||||
<NcButton
|
||||
@@ -103,8 +103,8 @@
|
||||
:class="{ 'comment__message--expanded': expanded }"
|
||||
:text="richContent.message"
|
||||
:arguments="richContent.mentions"
|
||||
useMarkdown
|
||||
@click="onExpand" />
|
||||
use-markdown
|
||||
@click.native="onExpand" />
|
||||
</div>
|
||||
</component>
|
||||
</template>
|
||||
@@ -113,7 +113,6 @@
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import { translate as t } from '@nextcloud/l10n'
|
||||
import { mapStores } from 'pinia'
|
||||
import { defineAsyncComponent } from 'vue'
|
||||
import NcActionButton from '@nextcloud/vue/components/NcActionButton'
|
||||
import NcActions from '@nextcloud/vue/components/NcActions'
|
||||
import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
|
||||
@@ -126,12 +125,12 @@ import IconArrowRight from 'vue-material-design-icons/ArrowRight.vue'
|
||||
import IconClose from 'vue-material-design-icons/Close.vue'
|
||||
import IconPencilOutline from 'vue-material-design-icons/PencilOutline.vue'
|
||||
import IconTrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue'
|
||||
import CommentMixin from '../mixins/CommentMixin.ts'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'
|
||||
import CommentMixin from '../mixins/CommentMixin.js'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
|
||||
|
||||
// Dynamic loading
|
||||
const NcRichContenteditable = defineAsyncComponent(() => import('@nextcloud/vue/components/NcRichContenteditable'))
|
||||
const NcRichText = defineAsyncComponent(() => import('@nextcloud/vue/components/NcRichText'))
|
||||
const NcRichContenteditable = () => import('@nextcloud/vue/components/NcRichContenteditable')
|
||||
const NcRichText = () => import('@nextcloud/vue/components/NcRichText')
|
||||
|
||||
export default {
|
||||
/* eslint vue/multi-word-component-names: "warn" */
|
||||
|
||||
@@ -4,13 +4,17 @@
|
||||
*/
|
||||
|
||||
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
|
||||
import { getCSPNonce } from '@nextcloud/auth'
|
||||
import { registerSidebarTab } from '@nextcloud/files'
|
||||
import { t } from '@nextcloud/l10n'
|
||||
import { createPinia } from 'pinia'
|
||||
import { defineCustomElement } from 'vue'
|
||||
import wrap from '@vue/web-component-wrapper'
|
||||
import { createPinia, PiniaVuePlugin } from 'pinia'
|
||||
import Vue from 'vue'
|
||||
import { registerCommentsPlugins } from './comments-activity-tab.ts'
|
||||
import { isUsingActivityIntegration } from './utils/activity.ts'
|
||||
|
||||
__webpack_nonce__ = getCSPNonce()
|
||||
|
||||
const tagName = 'comments_files-sidebar-tab'
|
||||
|
||||
if (isUsingActivityIntegration()) {
|
||||
@@ -28,15 +32,17 @@ if (isUsingActivityIntegration()) {
|
||||
async onInit() {
|
||||
const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue')
|
||||
|
||||
const FilesSidebarTabElement = defineCustomElement(FilesSidebarTab, {
|
||||
configureApp(app) {
|
||||
const pinia = createPinia()
|
||||
app.use(pinia)
|
||||
},
|
||||
shadowRoot: false,
|
||||
Vue.use(PiniaVuePlugin)
|
||||
Vue.mixin({ pinia: createPinia() })
|
||||
const webComponent = wrap(Vue, FilesSidebarTab)
|
||||
// In Vue 2, wrap doesn't support disabling shadow. Disable with a hack
|
||||
Object.defineProperty(webComponent.prototype, 'attachShadow', {
|
||||
value() { return this },
|
||||
})
|
||||
|
||||
window.customElements.define(tagName, FilesSidebarTabElement)
|
||||
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
|
||||
get() { return this },
|
||||
})
|
||||
window.customElements.define(tagName, webComponent)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
import { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'
|
||||
import { mapStores } from 'pinia'
|
||||
import logger from '../logger.ts'
|
||||
import DeleteComment from '../services/DeleteComment.ts'
|
||||
import EditComment from '../services/EditComment.ts'
|
||||
import NewComment from '../services/NewComment.ts'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'
|
||||
import logger from '../logger.js'
|
||||
import DeleteComment from '../services/DeleteComment.js'
|
||||
import EditComment from '../services/EditComment.js'
|
||||
import NewComment from '../services/NewComment.js'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
53
apps/comments/src/services/CommentsInstance.js
Normal file
53
apps/comments/src/services/CommentsInstance.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { getCSPNonce } from '@nextcloud/auth'
|
||||
import { n, t } from '@nextcloud/l10n'
|
||||
import { createPinia, PiniaVuePlugin } from 'pinia'
|
||||
import Vue from 'vue'
|
||||
import CommentsApp from '../views/Comments.vue'
|
||||
import logger from '../logger.js'
|
||||
|
||||
Vue.use(PiniaVuePlugin)
|
||||
|
||||
__webpack_nonce__ = getCSPNonce()
|
||||
|
||||
// Add translates functions
|
||||
Vue.mixin({
|
||||
data() {
|
||||
return {
|
||||
logger,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
t,
|
||||
n,
|
||||
},
|
||||
})
|
||||
|
||||
export default class CommentInstance {
|
||||
/**
|
||||
* Initialize a new Comments instance for the desired type
|
||||
*
|
||||
* @param {string} resourceType the comments endpoint type
|
||||
* @param {object} options the vue options (propsData, parent, el...)
|
||||
*/
|
||||
constructor(resourceType = 'files', options = {}) {
|
||||
const pinia = createPinia()
|
||||
|
||||
// Merge options and set `resourceType` property
|
||||
options = {
|
||||
...options,
|
||||
propsData: {
|
||||
...(options.propsData ?? {}),
|
||||
resourceType,
|
||||
},
|
||||
pinia,
|
||||
}
|
||||
// Init Comments component
|
||||
const View = Vue.extend(CommentsApp)
|
||||
return new View(options)
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
/*!
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import type { App, ComponentPublicInstance } from 'vue'
|
||||
|
||||
import { n, t } from '@nextcloud/l10n'
|
||||
import { createPinia } from 'pinia'
|
||||
import { createApp } from 'vue'
|
||||
import CommentsApp from '../views/CommentsApp.vue'
|
||||
import logger from '../logger.ts'
|
||||
|
||||
export interface CommentsInstanceOptions {
|
||||
el?: HTMLElement
|
||||
|
||||
props?: Record<string, unknown>
|
||||
|
||||
/** @deprecated use `props` instead */
|
||||
propsData?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export default class CommentInstance {
|
||||
private app: App
|
||||
private instance: ComponentPublicInstance<typeof CommentsApp> | undefined
|
||||
|
||||
/**
|
||||
* Initialize a new Comments instance for the desired type
|
||||
*
|
||||
* @param resourceType - The comments endpoint type
|
||||
* @param options - The vue options (props, parent, el...)
|
||||
*/
|
||||
constructor(resourceType = 'files', options: CommentsInstanceOptions = {}) {
|
||||
const pinia = createPinia()
|
||||
|
||||
this.app = createApp(
|
||||
CommentsApp,
|
||||
{
|
||||
...(options.propsData ?? {}),
|
||||
...(options.props ?? {}),
|
||||
resourceType,
|
||||
},
|
||||
)
|
||||
|
||||
// Add translates functions
|
||||
this.app.mixin({
|
||||
data() {
|
||||
return {
|
||||
logger,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
t,
|
||||
n,
|
||||
},
|
||||
})
|
||||
|
||||
this.app.use(pinia)
|
||||
if (options.el) {
|
||||
this.instance = this.app.mount(options.el)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mount the Comments instance to a new element.
|
||||
*
|
||||
* @param el - The element to mount the instance on
|
||||
*/
|
||||
$mount(el: HTMLElement | string) {
|
||||
if (this.instance) {
|
||||
this.app.unmount()
|
||||
}
|
||||
this.instance = this.app.mount(el)
|
||||
}
|
||||
|
||||
/**
|
||||
* Unmount the Comments instance from the DOM and destroy it.
|
||||
*/
|
||||
$unmount() {
|
||||
this.app.unmount()
|
||||
this.instance = undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the current resource id.
|
||||
*
|
||||
* @param id - The new resource id to load the comments for
|
||||
*/
|
||||
update(id: string | number) {
|
||||
if (this.instance) {
|
||||
this.instance.update(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
|
||||
import { createClient } from 'webdav'
|
||||
import { getRootPath } from '../utils/davUtils.ts'
|
||||
import { getRootPath } from '../utils/davUtils.js'
|
||||
|
||||
// init webdav client
|
||||
const client = createClient(getRootPath())
|
||||
@@ -3,16 +3,16 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import client from './DavClient.ts'
|
||||
import client from './DavClient.js'
|
||||
|
||||
/**
|
||||
* Delete a comment
|
||||
*
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param commentId the comment iD
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {number} commentId the comment iD
|
||||
*/
|
||||
export default async function(resourceType: string, resourceId: number, commentId: number) {
|
||||
export default async function(resourceType, resourceId, commentId) {
|
||||
const commentPath = ['', resourceType, resourceId, commentId].join('/')
|
||||
|
||||
// Fetch newly created comment data
|
||||
@@ -3,17 +3,17 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import client from './DavClient.ts'
|
||||
import client from './DavClient.js'
|
||||
|
||||
/**
|
||||
* Edit an existing comment
|
||||
*
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param commentId the comment iD
|
||||
* @param message the message content
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {number} commentId the comment iD
|
||||
* @param {string} message the message content
|
||||
*/
|
||||
export default async function(resourceType: string, resourceId: number, commentId: number, message: string) {
|
||||
export default async function(resourceType, resourceId, commentId, message) {
|
||||
const commentPath = ['', resourceType, resourceId, commentId].join('/')
|
||||
|
||||
return await client.customRequest(commentPath, {
|
||||
@@ -8,7 +8,7 @@ import type { DAVResult, FileStat, ResponseDataDetailed } from 'webdav'
|
||||
import { parseXML } from 'webdav'
|
||||
import { processResponsePayload } from 'webdav/dist/node/response.js'
|
||||
import { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js'
|
||||
import client from './DavClient.ts'
|
||||
import client from './DavClient.js'
|
||||
|
||||
export const DEFAULT_LIMIT = 20
|
||||
|
||||
|
||||
@@ -5,24 +5,24 @@
|
||||
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import axios from '@nextcloud/axios'
|
||||
import { getRootPath } from '../utils/davUtils.ts'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'
|
||||
import client from './DavClient.ts'
|
||||
import { getRootPath } from '../utils/davUtils.js'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'
|
||||
import client from './DavClient.js'
|
||||
|
||||
/**
|
||||
* Retrieve the comments list
|
||||
*
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param message the message
|
||||
* @return The new comment
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {string} message the message
|
||||
* @return {object} the new comment
|
||||
*/
|
||||
export default async function(resourceType: string, resourceId: number, message: string) {
|
||||
export default async function(resourceType, resourceId, message) {
|
||||
const resourcePath = ['', resourceType, resourceId].join('/')
|
||||
|
||||
const response = await axios.post(getRootPath() + resourcePath, {
|
||||
actorDisplayName: getCurrentUser()!.displayName,
|
||||
actorId: getCurrentUser()!.uid,
|
||||
actorDisplayName: getCurrentUser().displayName,
|
||||
actorId: getCurrentUser().uid,
|
||||
actorType: 'users',
|
||||
creationDateTime: (new Date()).toUTCString(),
|
||||
message,
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import type { Response } from 'webdav'
|
||||
|
||||
import client from './DavClient.ts'
|
||||
import client from './DavClient.js'
|
||||
|
||||
/**
|
||||
* Mark comments older than the date timestamp as read
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
/**
|
||||
* Creates a cancelable axios 'request object'.
|
||||
*
|
||||
* @param request the axios promise request
|
||||
* @return
|
||||
* @param {Function} request the axios promise request
|
||||
* @return {object}
|
||||
*/
|
||||
function cancelableRequest(request: (url: string, options?: Record<string, unknown>) => Promise<unknown>) {
|
||||
function cancelableRequest(request) {
|
||||
const controller = new AbortController()
|
||||
const signal = controller.signal
|
||||
|
||||
/**
|
||||
* Execute the request
|
||||
*
|
||||
* @param url the url to send the request to
|
||||
* @param [options] optional config for the request
|
||||
* @param {string} url the url to send the request to
|
||||
* @param {object} [options] optional config for the request
|
||||
*/
|
||||
const fetch = async function(url: string, options?: Record<string, unknown>) {
|
||||
const fetch = async function(url, options) {
|
||||
const response = await request(
|
||||
url,
|
||||
{ signal, ...options },
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param value - the string to decode
|
||||
* @param passes - the number of times to decode the string, default is 1
|
||||
* @param {any} value -
|
||||
* @param {any} passes -
|
||||
*/
|
||||
export function decodeHtmlEntities(value: string, passes = 1) {
|
||||
export function decodeHtmlEntities(value, passes = 1) {
|
||||
const parser = new DOMParser()
|
||||
let decoded = value
|
||||
for (let i = 0; i < passes; i++) {
|
||||
@@ -6,11 +6,11 @@
|
||||
<template>
|
||||
<Comment
|
||||
v-bind="editorData"
|
||||
:autoComplete="autoComplete"
|
||||
:resourceType="resourceType"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:editor="true"
|
||||
:userData="userData"
|
||||
:resourceId="resourceId"
|
||||
:user-data="userData"
|
||||
:resource-id="resourceId"
|
||||
class="comments-action"
|
||||
@new="onNewComment" />
|
||||
</template>
|
||||
@@ -20,8 +20,8 @@ import { showError } from '@nextcloud/dialogs'
|
||||
import { t } from '@nextcloud/l10n'
|
||||
import { defineComponent } from 'vue'
|
||||
import Comment from '../components/Comment.vue'
|
||||
import logger from '../logger.ts'
|
||||
import CommentView from '../mixins/CommentView.ts'
|
||||
import logger from '../logger.js'
|
||||
import CommentView from '../mixins/CommentView.js'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
ref="comment"
|
||||
tag="li"
|
||||
v-bind="comment.props"
|
||||
:autoComplete="autoComplete"
|
||||
:resourceType="resourceType"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:message="commentMessage"
|
||||
:resourceId="resourceId"
|
||||
:userData="genMentionsData(comment.props.mentions)"
|
||||
:resource-id="resourceId"
|
||||
:user-data="genMentionsData(comment.props.mentions)"
|
||||
class="comments-activity"
|
||||
@delete="reloadCallback()" />
|
||||
</template>
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
<!-- Editor -->
|
||||
<Comment
|
||||
v-bind="editorData"
|
||||
editor
|
||||
:autoComplete
|
||||
:resourceType
|
||||
:userData
|
||||
:resourceId="currentResourceId"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:editor="true"
|
||||
:user-data="userData"
|
||||
:resource-id="currentResourceId"
|
||||
class="comments__writer"
|
||||
@new="onNewComment" />
|
||||
|
||||
@@ -33,13 +33,13 @@
|
||||
<Comment
|
||||
v-for="comment in comments"
|
||||
:key="comment.props.id"
|
||||
v-model="comment.props.message"
|
||||
tag="li"
|
||||
v-bind="comment.props"
|
||||
:autoComplete
|
||||
:resourceType
|
||||
:resourceId="currentResourceId"
|
||||
:userData="genMentionsData(comment.props.mentions)"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:message.sync="comment.props.message"
|
||||
:resource-id="currentResourceId"
|
||||
:user-data="genMentionsData(comment.props.mentions)"
|
||||
class="comments__list"
|
||||
@delete="onDelete" />
|
||||
</ul>
|
||||
@@ -79,14 +79,15 @@ import IconAlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline
|
||||
import IconMessageReplyTextOutline from 'vue-material-design-icons/MessageReplyTextOutline.vue'
|
||||
import IconRefresh from 'vue-material-design-icons/Refresh.vue'
|
||||
import Comment from '../components/Comment.vue'
|
||||
import logger from '../logger.ts'
|
||||
import logger from '../logger.js'
|
||||
import CommentView from '../mixins/CommentView.ts'
|
||||
import { DEFAULT_LIMIT, getComments } from '../services/GetComments.ts'
|
||||
import { markCommentsAsRead } from '../services/ReadComments.ts'
|
||||
import cancelableRequest from '../utils/cancelableRequest.ts'
|
||||
import cancelableRequest from '../utils/cancelableRequest.js'
|
||||
|
||||
export default {
|
||||
name: 'CommentsApp',
|
||||
/* eslint vue/multi-word-component-names: "warn" */
|
||||
name: 'Comments',
|
||||
|
||||
components: {
|
||||
Comment,
|
||||
@@ -103,8 +104,6 @@ export default {
|
||||
|
||||
mixins: [CommentView],
|
||||
|
||||
expose: ['update'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
error: '',
|
||||
@@ -7,7 +7,7 @@
|
||||
import type { IFolder, INode, IView } from '@nextcloud/files'
|
||||
|
||||
import { computed } from 'vue'
|
||||
import CommentsApp from './CommentsApp.vue'
|
||||
import Comments from './Comments.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
node?: INode
|
||||
@@ -24,9 +24,9 @@ const resourceId = computed(() => props.node?.fileid)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CommentsApp
|
||||
<Comments
|
||||
v-if="resourceId !== undefined"
|
||||
:key="resourceId"
|
||||
:resourceId="resourceId"
|
||||
resourceType="files" />
|
||||
:resource-id="resourceId"
|
||||
resource-type="files" />
|
||||
</template>
|
||||
|
||||
@@ -19,7 +19,7 @@ OC.L10N.register(
|
||||
"Customize" : "Aanpassen",
|
||||
"Edit widgets" : "Widgets bewerken",
|
||||
"Get more widgets from the App Store" : "Haal meer widgets op uit de App Store",
|
||||
"Weather service" : "Weer dienst",
|
||||
"Weather service" : "Weerberichten",
|
||||
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Voor je privacy worden de weergegevens namens jou opgevraagd door je {productName} server, zodat de weer dienst geen persoonlijke informatie ontvangt.",
|
||||
"Weather data from Met.no" : "Weerbericht via Met.no",
|
||||
"geocoding with Nominatim" : "geocoding met Nominatim",
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"Customize" : "Aanpassen",
|
||||
"Edit widgets" : "Widgets bewerken",
|
||||
"Get more widgets from the App Store" : "Haal meer widgets op uit de App Store",
|
||||
"Weather service" : "Weer dienst",
|
||||
"Weather service" : "Weerberichten",
|
||||
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Voor je privacy worden de weergegevens namens jou opgevraagd door je {productName} server, zodat de weer dienst geen persoonlijke informatie ontvangt.",
|
||||
"Weather data from Met.no" : "Weerbericht via Met.no",
|
||||
"geocoding with Nominatim" : "geocoding met Nominatim",
|
||||
|
||||
@@ -202,7 +202,6 @@ class DashboardApiController extends OCSController {
|
||||
#[NoAdminRequired]
|
||||
#[ApiRoute(verb: 'POST', url: '/api/v3/layout')]
|
||||
public function updateLayout(array $layout): DataResponse {
|
||||
$layout = $this->service->sanitizeLayout($layout);
|
||||
$this->userConfig->setValueString($this->userId, 'dashboard', 'layout', implode(',', $layout));
|
||||
return new DataResponse(['layout' => $layout]);
|
||||
}
|
||||
|
||||
@@ -31,30 +31,12 @@ class DashboardService {
|
||||
*/
|
||||
public function getLayout(): array {
|
||||
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
|
||||
return $this->sanitizeLayout(
|
||||
return array_values(array_filter(
|
||||
explode(',', $this->userConfig->getValueString($this->userId, 'dashboard', 'layout', $systemDefault)),
|
||||
fn (string $value) => $value !== '')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<string> $layout
|
||||
* @return list<string>
|
||||
*/
|
||||
public function sanitizeLayout(array $layout): array {
|
||||
$seen = [];
|
||||
$result = [];
|
||||
foreach ($layout as $value) {
|
||||
if ($value === '' || isset($seen[$value])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$seen[$value] = true;
|
||||
$result[] = $value;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
*/
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<template>
|
||||
<main id="app-dashboard">
|
||||
<h2>{{ greeting.text }}</h2>
|
||||
<ul v-if="sortedRegisteredStatus.length > 0" class="statuses">
|
||||
<ul class="statuses">
|
||||
<li
|
||||
v-for="status in sortedRegisteredStatus"
|
||||
:id="'status-' + status"
|
||||
|
||||
@@ -44,25 +44,6 @@ class DashboardServiceTest extends TestCase {
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetLayoutRemovesEmptyAndDuplicateEntries(): void {
|
||||
$this->appConfig->method('getAppValueString')
|
||||
->with('layout', 'recommendations,spreed,mail,calendar')
|
||||
->willReturn('recommendations,spreed,mail,calendar');
|
||||
$this->userConfig->method('getValueString')
|
||||
->with('alice', 'dashboard', 'layout', 'recommendations,spreed,mail,calendar')
|
||||
->willReturn('spreed,,mail,mail,calendar,spreed');
|
||||
|
||||
$layout = $this->service->getLayout();
|
||||
|
||||
$this->assertSame(['spreed', 'mail', 'calendar'], $layout);
|
||||
}
|
||||
|
||||
public function testSanitizeLayoutRemovesEmptyAndDuplicateEntries(): void {
|
||||
$layout = $this->service->sanitizeLayout(['files', 'calendar', 'files', '', 'mail', 'calendar']);
|
||||
|
||||
$this->assertSame(['files', 'calendar', 'mail'], $layout);
|
||||
}
|
||||
|
||||
public function testGetBirthdate(): void {
|
||||
$user = $this->createMock(IUser::class);
|
||||
$this->userManager->method('get')
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\Storage\Wrapper\DirPermissionsMask;
|
||||
use OC\Files\Storage\Wrapper\PermissionsMask;
|
||||
use OC\Files\View;
|
||||
use OCA\DAV\Connector\LegacyPublicAuth;
|
||||
use OCA\DAV\Connector\Sabre\ServerFactory;
|
||||
@@ -98,11 +98,7 @@ $server = $serverFactory->createServer(
|
||||
// FIXME: should not add storage wrappers outside of preSetup, need to find a better way
|
||||
$previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false);
|
||||
Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) {
|
||||
return new DirPermissionsMask([
|
||||
'storage' => $storage,
|
||||
'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE,
|
||||
'path' => 'files'
|
||||
]);
|
||||
return new PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE]);
|
||||
});
|
||||
Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) {
|
||||
return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]);
|
||||
|
||||
@@ -204,7 +204,6 @@ OC.L10N.register(
|
||||
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
|
||||
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
|
||||
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
|
||||
"Failed to get size for : %1$s" : "No se pudo obtener el tamaño para: %1$s",
|
||||
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
|
||||
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
|
||||
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
|
||||
@@ -221,7 +220,6 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Completado el %s",
|
||||
"Due on %s by %s" : "Finaliza el %s por %s",
|
||||
"Due on %s" : "Finaliza el %s",
|
||||
"This is an example contact" : "Este es un contacto de ejemplo",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "¡Bienvenido a Nextcloud Calendar!\n\nEste es un evento de ejemplo - ¡explore la flexibilidad de planear con Nextcloud Calendar editando cuantas veces quiera!\n\nCon Nextcloud Calendar, podrá:\n- Crear, editar, y administrar eventos fácilmente.\n- Crear múltiples calendarios y compartirlos con su equipo de trabajo, amigos, o su familia.\n- Verificar la disponibilidad y mostrar sus tiempos de ocupado a otros.\n- Se integra de manera transparente con otras apps y dispositivos via CalDAV.\n- Personalice su experiencia: Programe eventos recurrentes, ajuste las notificaciones, así como otros ajustes.",
|
||||
"Example event - open me!" : "Evento de ejemplo - ¡ábralo!",
|
||||
"System Address Book" : "Libreta de Direcciones del Sistema",
|
||||
|
||||
@@ -202,7 +202,6 @@
|
||||
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
|
||||
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
|
||||
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
|
||||
"Failed to get size for : %1$s" : "No se pudo obtener el tamaño para: %1$s",
|
||||
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
|
||||
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
|
||||
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
|
||||
@@ -219,7 +218,6 @@
|
||||
"Completed on %s" : "Completado el %s",
|
||||
"Due on %s by %s" : "Finaliza el %s por %s",
|
||||
"Due on %s" : "Finaliza el %s",
|
||||
"This is an example contact" : "Este es un contacto de ejemplo",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "¡Bienvenido a Nextcloud Calendar!\n\nEste es un evento de ejemplo - ¡explore la flexibilidad de planear con Nextcloud Calendar editando cuantas veces quiera!\n\nCon Nextcloud Calendar, podrá:\n- Crear, editar, y administrar eventos fácilmente.\n- Crear múltiples calendarios y compartirlos con su equipo de trabajo, amigos, o su familia.\n- Verificar la disponibilidad y mostrar sus tiempos de ocupado a otros.\n- Se integra de manera transparente con otras apps y dispositivos via CalDAV.\n- Personalice su experiencia: Programe eventos recurrentes, ajuste las notificaciones, así como otros ajustes.",
|
||||
"Example event - open me!" : "Evento de ejemplo - ¡ábralo!",
|
||||
"System Address Book" : "Libreta de Direcciones del Sistema",
|
||||
|
||||
@@ -204,8 +204,6 @@ OC.L10N.register(
|
||||
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
|
||||
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
|
||||
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s (%2$d), fitxategia badagoela dirudi",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s (%2$d), fitxategia ez dagoela dirudi",
|
||||
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
|
||||
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
|
||||
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
|
||||
@@ -222,7 +220,6 @@ OC.L10N.register(
|
||||
"Completed on %s" : "%s-an osatua",
|
||||
"Due on %s by %s" : "%s-(e)an epemuga %s-(e)k",
|
||||
"Due on %s" : "%s-(e)an epemuga",
|
||||
"This is an example contact" : "Hau kontaktu adibide bat da",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ongi etorri Nextcloud Egutegira!\n\nHau gertaera erakusgarria da - aztertu plangintzaren malgutasuna Nextcloud Egutegiarekin nahi dituzun edizioak eginez!\n\nNextcloud Egutegia aukerarekin, hau egin dezakezu:\n- Sortu, editatu eta kudeatu gertaerak esfortzurik gabe.\n- Egutegi ugari sortu eta taldekideekin, lagunekin edo familiarekin partekatu.\n- Egiaztatu libre egotea eta bistaratu zure laneko orduak beste batzuei.\n- Aplikazio eta gailuekin arazorik gabe integratzea CalDAV bidez.\n- Zure esperientzia pertsonalizatu: gertaera errepikariak programatu, jakinarazpenak doitu eta bestelako ezarpenak.",
|
||||
"Example event - open me!" : "Gertaera adibidea - ireki nazazu!",
|
||||
"System Address Book" : "Sistemaren helbide-liburua",
|
||||
|
||||
@@ -202,8 +202,6 @@
|
||||
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
|
||||
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
|
||||
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s (%2$d), fitxategia badagoela dirudi",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s (%2$d), fitxategia ez dagoela dirudi",
|
||||
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
|
||||
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
|
||||
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
|
||||
@@ -220,7 +218,6 @@
|
||||
"Completed on %s" : "%s-an osatua",
|
||||
"Due on %s by %s" : "%s-(e)an epemuga %s-(e)k",
|
||||
"Due on %s" : "%s-(e)an epemuga",
|
||||
"This is an example contact" : "Hau kontaktu adibide bat da",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Ongi etorri Nextcloud Egutegira!\n\nHau gertaera erakusgarria da - aztertu plangintzaren malgutasuna Nextcloud Egutegiarekin nahi dituzun edizioak eginez!\n\nNextcloud Egutegia aukerarekin, hau egin dezakezu:\n- Sortu, editatu eta kudeatu gertaerak esfortzurik gabe.\n- Egutegi ugari sortu eta taldekideekin, lagunekin edo familiarekin partekatu.\n- Egiaztatu libre egotea eta bistaratu zure laneko orduak beste batzuei.\n- Aplikazio eta gailuekin arazorik gabe integratzea CalDAV bidez.\n- Zure esperientzia pertsonalizatu: gertaera errepikariak programatu, jakinarazpenak doitu eta bestelako ezarpenak.",
|
||||
"Example event - open me!" : "Gertaera adibidea - ireki nazazu!",
|
||||
"System Address Book" : "Sistemaren helbide-liburua",
|
||||
|
||||
@@ -72,87 +72,49 @@ OC.L10N.register(
|
||||
"Description: %s" : "Leírás: %s",
|
||||
"Where: %s" : "Hely: %s",
|
||||
"%1$s via %2$s" : "%1$s – %2$s",
|
||||
"In the past on %1$s for the entire day" : "A múltban ekkor: %1$s, a teljes napra",
|
||||
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n perc múlva ekkor: %1$s, a teljes napra","%n perc múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n óra múlva ekkor: %1$s, a teljes napra","%n óra múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n nap múlva ekkor: %1$s, a teljes napra","%n nap múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n hét múlva ekkor: %1$s, a teljes napra","%n hét múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n hónap múlva ekkor: %1$s, a teljes napra","%n hónap múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n év múlva ekkor: %1$s, a teljes napra","%n év múlva ekkor: %1$s, a teljes napra"],
|
||||
"In the past on %1$s between %2$s - %3$s" : "A múltban ekkor: %1$s, %2$s és %3$s között",
|
||||
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["%n perc múlva ekkor: %1$s, %2$s és %3$s között","%n perc múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n óra múlva ekkor: %1$s, %2$s és %3$s között","%n óra múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n nap múlva ekkor: %1$s, %2$s és %3$s között","%n nap múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n hét múlva ekkor: %1$s, %2$s és %3$s között","%n hét múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n hónap múlva ekkor: %1$s, %2$s és %3$s között","%n hónap múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n év múlva ekkor: %1$s, %2$s és %3$s között","%n év múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"Could not generate when statement" : "Nem sikerült előállítani az időfeltételt",
|
||||
"Every Day for the entire day" : "Minden nap a teljes napra",
|
||||
"Every Day for the entire day until %1$s" : "Minden nap a teljes napon eddig: %1$s",
|
||||
"Every Day between %1$s - %2$s" : "Minden nap %1$s és %2$sközött",
|
||||
"Every Day between %1$s - %2$s until %3$s" : "Minden nap %1$s és %2$s között eddig: %3$s",
|
||||
"Every %1$d Days for the entire day" : "Minden %1$d. napon, a teljes napra",
|
||||
"Every %1$d Days for the entire day until %2$s" : "Minden %1$d. napon, a teljes napra eddig: %2$s",
|
||||
"Every %1$d Days between %2$s - %3$s" : "Minden %1$d. napon %2$s és %3$s között",
|
||||
"Every %1$d Days between %2$s - %3$s until %4$s" : "Minden %1$d. napon %2$s és %3$s között eddig: %4$s",
|
||||
"Could not generate event recurrence statement" : "Nem sikerült eseményismétlési utasítást előállítani",
|
||||
"Every Week on %1$s for the entire day" : "Minden héten %1$s, a teljes napra",
|
||||
"Every Week on %1$s for the entire day until %2$s" : "Minden héten %1$s, a teljes napra eddig: %2$s",
|
||||
"Every Week on %1$s between %2$s - %3$s" : "Minden héten %1$s, %2$s és %3$s között",
|
||||
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Minden héten %1$s, %2$s és %3$s között eddig: %4$s",
|
||||
"Every %1$d Weeks on %2$s for the entire day" : "Minden %1$d. héten %2$s, a teljes napra",
|
||||
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Minden %1$d. héten %2$s, a teljes napon eddig: %3$s",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Minden %1$d. héten %2$s, %3$s és %4$s között",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Minden %1$d. héten %2$s, %3$s és %4$s között eddig: %5$s",
|
||||
"Every Month on the %1$s for the entire day" : "Minden hónap %1$s. napján, a teljes napon",
|
||||
"Every Month on the %1$s for the entire day until %2$s" : "Minden hónap %1$s. napján, a teljes napon eddig: %2$s",
|
||||
"Every Month on the %1$s between %2$s - %3$s" : "Minden hónap %1$s. napján %2$s és %3$s között",
|
||||
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Minden hónap %1$s. napján %2$s és %3$s között eddig: %4$s",
|
||||
"Every %1$d Months on the %2$s for the entire day" : "Minden %1$d. hónap %2$s. napján, a teljes napon",
|
||||
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Minden %1$d. hónap %2$s. napján, a teljes napon eddig: %3$s",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Minden %1$d. hónap %2$s. napján %3$s és %4$s között",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Minden %1$d. hónap %2$s. napján %3$s és %4$s között eddig: %5$s",
|
||||
"Every Year in %1$s on the %2$s for the entire day" : "Minden év %1$s hónapja %2$s. napján, a teljes napra",
|
||||
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Minden év %1$s hónapjának %2$s. napján, a teljes napon eddig: %3$s",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Minden év %1$s hónapjának %2$s. napján %3$s és %4$s között",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Minden év %1$s hónapjának %2$s. napján %3$s és %4$s között eddig: %5$s",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Minden %1$d. év %2$s hónapjának %3$s. napján, a teljes napra",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, a teljes napra eddig: %4$s",
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, %4$s és %5$s között",
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, %4$s és %5$s között eddig: %6$s",
|
||||
"On specific dates for the entire day until %1$s" : "Adott dátumokon, a teljes napra eddig: %1$s",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "Megadott dátumokon %1$s és %2$s között, eddig: %3$s",
|
||||
"In the past on %1$s" : "A múltban ekkor: %1$s",
|
||||
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n perc múlva ekkor: %1$s","%n perc múlva ekkor: %1$s"],
|
||||
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n óra múlva ekkor: %1$s","%n óra múlva ekkor: %1$s"],
|
||||
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n nap múlva ekkor: %1$s","%n nap múlva ekkor: %1$s"],
|
||||
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n hét múlva ekkor: %1$s","%n hét múlva ekkor: %1$s"],
|
||||
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n hónap múlva ekkor: %1$s","%n hónap múlva ekkor: %1$s"],
|
||||
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n év múlva ekkor: %1$s","%n év múlva ekkor: %1$s"],
|
||||
"In the past on %1$s then on %2$s" : "A múltban ekkor: %1$s, majd ekkor: %2$s",
|
||||
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n perc múlva ekkor: %1$s, majd ekkor: %2$s","%n perc múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n óra múlva ekkor: %1$s, majd ekkor: %2$s","%n óra múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n nap múlva ekkor: %1$s, majd ekkor: %2$s","%n nap múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n hét múlva ekkor: %1$s, majd ekkor: %2$s","%n hét múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n hónap múlva ekkor: %1$s, majd ekkor: %2$s","%n hónap múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n év múlva ekkor: %1$s, majd ekkor: %2$s","%n év múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"In the past on %1$s then on %2$s and %3$s" : "A múltban ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s",
|
||||
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n perc múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n perc múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n óra múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n óra múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n nap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n nap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n hét múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n hét múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n hónap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n hónap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n év múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n év múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"Could not generate when statement" : "Nem sikerült létrehozni amikor az állítást",
|
||||
"Every Day for the entire day" : "Minden Nap a teljes napra",
|
||||
"Every Day for the entire day until %1$s" : "Minden Nap a teljes napon eddig %1$s",
|
||||
"Every Day between %1$s - %2$s" : "Minden Nap %1$s - %2$sközött",
|
||||
"Every Day between %1$s - %2$s until %3$s" : "Minden Nap %1$s - %2$s között %3$s-ig",
|
||||
"Every %1$d Days for the entire day" : "Minden %1$d Nap az teljes napra",
|
||||
"Every %1$d Days for the entire day until %2$s" : "Minden%1$d Nap a teljes napra %2$s-ig",
|
||||
"Every %1$d Days between %2$s - %3$s" : "Minden%1$d Nap %2$s - %3$s között",
|
||||
"Every %1$d Days between %2$s - %3$s until %4$s" : "Minden%1$d Napon %2$s - %3$s között %4$s-ig",
|
||||
"Could not generate event recurrence statement" : "Nem sikerült megújuló eseményt létrehozni",
|
||||
"Every Week on %1$s for the entire day" : "Minden hét %1$s napon a teljes napja",
|
||||
"Every Week on %1$s for the entire day until %2$s" : "Minden Héten %1$s a teljes napra %2$s-ig",
|
||||
"Every Week on %1$s between %2$s - %3$s" : "Minden Hét %1$s napján %2$s - %3$sközött",
|
||||
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Minden Hét %1$s napján %2$s - %3$s között %4$s-ig",
|
||||
"Every %1$d Weeks on %2$s for the entire day" : "Minden%1$d héten %2$s napon a teljes napra",
|
||||
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Minden%1$d Héten %2$s napján a teljes napon %3$s-ig",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Minden%1$d hét %2$s napján %3$s - %4$sközött",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Minden%1$d héten %2$s napján %3$s - %4$s között eddig %5$s",
|
||||
"Every Month on the %1$s for the entire day" : "Minden hónap %1$s napján a teljes napon",
|
||||
"Every Month on the %1$s for the entire day until %2$s" : "Minden hónap %1$s napján a teljes napon %2$s-ig",
|
||||
"Every Month on the %1$s between %2$s - %3$s" : "Minden hónap %1$s napján %2$sés %3$s között",
|
||||
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Minden hónap %1$s napján %2$sés %3$s között %4$s-ig",
|
||||
"Every %1$d Months on the %2$s for the entire day" : "Minden%1$d Hónap %2$s napján a teljes napon",
|
||||
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Minden%1$d Hónap %2$s napján a teljes napon %3$s-ig",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Minden%1$d Hónap %2$s napján %3$s és %4$s között",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Minden%1$d Hónap %2$s napján %3$s és %4$s között %5$s-ig",
|
||||
"Every Year in %1$s on the %2$s for the entire day" : "Minden év %1$s hónap %2$s napján a teljes napra",
|
||||
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Minden év %1$s hónapjában %2$s napján a teljes napon %3$s-ig",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Minden év %1$s hónapjában %2$s napján %3$s - %4$sközött.",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Minden év %1$s hónapjában %2$s napján %3$s - %4$s között eddig %5$s",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Minden%1$d év %2$s hónapján %3$s napján a teljes napra",
|
||||
"On specific dates for the entire day until %1$s" : "Egy megadott időpontban a teljes napon %1$s-ig ",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "Egy megadott időpontban %1$s és %2$s %3$s-ig",
|
||||
"Could not generate next recurrence statement" : "Nem sikerült a következő megújuló eseményt létrehozni",
|
||||
"Cancelled: %1$s" : "Lemondva: %1$s",
|
||||
"\"%1$s\" has been canceled" : "A következő le lett mondva: „%1$s”",
|
||||
"\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”",
|
||||
"Re: %1$s" : "Vá: %1$s",
|
||||
"%1$s has accepted your invitation" : "%1$s elfogadta a meghívását",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását",
|
||||
"%1$s has declined your invitation" : "%1$s elutasította a meghívását",
|
||||
"%1$s has responded to your invitation" : "%1$s válaszolt a meghívására",
|
||||
"Invitation updated: %1$s" : "Meghívó frissítve: %1$s",
|
||||
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: „%2$s”",
|
||||
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s",
|
||||
"Invitation: %1$s" : "Meghívó: %1$s",
|
||||
"%1$s would like to invite you to \"%2$s\"" : "%1$s meg szeretné hívni a következőre: „%2$s”",
|
||||
"Organizer:" : "Szervező:",
|
||||
@@ -161,40 +123,38 @@ OC.L10N.register(
|
||||
"When:" : "Mikor:",
|
||||
"Location:" : "Hely:",
|
||||
"Link:" : "Hivatkozás:",
|
||||
"Occurring:" : "Előfordulás:",
|
||||
"Occurring:" : "Előforduló",
|
||||
"Accept" : "Elfogadás",
|
||||
"Decline" : "Elutasítás",
|
||||
"More options …" : "További lehetőségek…",
|
||||
"More options at %s" : "További lehetőségek itt: %s",
|
||||
"Monday" : "hétfő",
|
||||
"Tuesday" : "kedd",
|
||||
"Wednesday" : "szerda",
|
||||
"Thursday" : "csütörtök",
|
||||
"Friday" : "péntek",
|
||||
"Saturday" : "szombat",
|
||||
"Sunday" : "vasárnap",
|
||||
"January" : "január",
|
||||
"February" : "február",
|
||||
"March" : "március",
|
||||
"April" : "április",
|
||||
"May" : "május",
|
||||
"June" : "június",
|
||||
"July" : "július",
|
||||
"August" : "augusztus",
|
||||
"September" : "szeptember",
|
||||
"October" : "október",
|
||||
"November" : "november",
|
||||
"December" : "december",
|
||||
"First" : "első",
|
||||
"Second" : "második",
|
||||
"Third" : "harmadik",
|
||||
"Fourth" : "negyedik",
|
||||
"Fifth" : "ötödik",
|
||||
"Last" : "utolsó",
|
||||
"Second Last" : "utolsó előtti",
|
||||
"Third Last" : "hátulról harmadik",
|
||||
"Fourth Last" : "hátulról negyedik",
|
||||
"Fifth Last" : "hátulról ötödik",
|
||||
"Monday" : "Hétfő",
|
||||
"Tuesday" : "Kedd",
|
||||
"Wednesday" : "Szerda",
|
||||
"Thursday" : "Csütörtök",
|
||||
"Friday" : "Péntek",
|
||||
"Saturday" : "Szombat",
|
||||
"Sunday" : "Vasárnap",
|
||||
"January" : "Január",
|
||||
"February" : "Február",
|
||||
"March" : "Március",
|
||||
"April" : "Április",
|
||||
"May" : "Május",
|
||||
"June" : "Június",
|
||||
"July" : "Július",
|
||||
"August" : "Augusztus",
|
||||
"September" : "Szeptember",
|
||||
"October" : "Október",
|
||||
"November" : "November",
|
||||
"December" : "December",
|
||||
"First" : "Első",
|
||||
"Second" : "Másodperc",
|
||||
"Third" : "Harmadik",
|
||||
"Fourth" : "Negyedik",
|
||||
"Last" : "Utolsó",
|
||||
"Second Last" : "Második Utolsó",
|
||||
"Third Last" : "Harmadik Utolsó",
|
||||
"Fourth Last" : "Negyedik Utolsó",
|
||||
"Contacts" : "Névjegyek",
|
||||
"{actor} created address book {addressbook}" : "{actor} létrehozta a következő címjegyzéket: {addressbook}",
|
||||
"You created address book {addressbook}" : "Létrehozta a következő címjegyzéket: {addressbook}",
|
||||
@@ -220,12 +180,10 @@ OC.L10N.register(
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
|
||||
"System address book disabled" : "A rendszercímjegyzék letiltva",
|
||||
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "A rendszercímjegyzék automatikus le lett tiltva a frissítése során. Ez azt jelenti, hogy a címjegyzék nem lesz elérhető a felhasználók számára sem a Névjegyek alkalmazásban, sem más kliensekben. A rendszercímjegyzék azért lett letiltva, mert a nvéjegyek száma túllépte a javasolt maximumot. A korlát a teljesítményproblémák megakadályozása miatt van beállítva. A következő paranccsal újra engedélyezheti a rendszercímjegyzéket: {command}",
|
||||
"Accounts" : "Fiókok",
|
||||
"System address book which holds all accounts" : "A rendszercímjegyzék, amely az összes fiókot tartalmazza",
|
||||
"System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza",
|
||||
"File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
|
||||
"Failed to get storage for file" : "Nem sikerült a tárhely lekérése a fájl számára",
|
||||
"Failed to get storage for file" : "Nem sikerlt a tárhely lekérése a fájl számára",
|
||||
"Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
|
||||
"Could not write file contents" : "A fájl tartalma nem írható",
|
||||
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
|
||||
@@ -234,14 +192,11 @@ OC.L10N.register(
|
||||
"Could not rename part file to final file, canceled by hook" : "A részleges fájl nem nevezhető át a végleges fájllá, a hurok megszakította",
|
||||
"Could not rename part file to final file" : "A részleges fájl nem nevezhető át a végleges fájllá",
|
||||
"Failed to check file size: %1$s" : "A fájlméret nem ellenőrizhető: %1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "A fájl nem nyitható meg: %1$s (%2$d), a fájl létezőnek tűnik",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "A fájl nem nyitható meg: %1$s (%2$d), úgy tűnik, hogy a fájl nem létezik",
|
||||
"Failed to get size for : %1$s" : "Nem sikerült a következő méretének lekérdezése: %1$s",
|
||||
"Encryption not ready: %1$s" : "Nincs kész a titkosítás: %1$s",
|
||||
"Failed to open file: %1$s" : "Nem sikerült a fájl megnyitása: %1$s",
|
||||
"Failed to unlink: %1$s" : "Nem sikerült a hivatkozás eltávolítása: %1$s",
|
||||
"Failed to write file contents: %1$s" : "Nem sikerült a fájl tartalmának kiírása: %1$s",
|
||||
"File not found: %1$s" : "Nem található a fájl: %1$s",
|
||||
"Encryption not ready: %1$s" : "A titkosítás nincs kész: %1$s",
|
||||
"Failed to open file: %1$s" : "A fájl megnyitása sikertelen: %1$s",
|
||||
"Failed to unlink: %1$s" : "A hivatkozás eltávolítása sikertelen: %1$s",
|
||||
"Failed to write file contents: %1$s" : "A fájl tartalmának kiírása sikertelen: %1$s",
|
||||
"File not found: %1$s" : "A fájl nem található: %1$s",
|
||||
"Invalid target path" : "Érvénytelen elérési útvonal",
|
||||
"System is in maintenance mode." : "A rendszer karbantartási módban van.",
|
||||
"Upgrade needed" : "Frissítés szükséges",
|
||||
@@ -253,23 +208,12 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Befejezve: %s",
|
||||
"Due on %s by %s" : "Esedékesség: %s, %s által",
|
||||
"Due on %s" : "Esedékesség: %s",
|
||||
"This is an example contact" : "Ez egy példanévjegy",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Üdvözli a Nextcloud Naptár!\n\nEz egy példaesemény – fedezze fel a tervezés rugalmasságát a Nextcloud Naptárral úgy, hogy kipróbálja az összes olyan szerkesztést, amit szeretne!\n\nA Nextcloud Naptárrál következőket teheti:\n- Erőfeszítés nélkül hozhat létre, szerkeszthet és kezelhet eseményeket.\n- Létrehozhat külön naptárakat a csapattagjai, a barátai és a családja számára.\n- Ellenőrizheti és megjelenítheti az elfoglaltsági idejét másoknak.\n- Zökkenőmentesen integrálhat alkalmazásokat és eszközöket a CalDAV segítségével.\n- Testreszabhatja az élményét: beütemezhet ismétlődő eseményeket, állíthat az értesítéseken és más beállításokon.",
|
||||
"Example event - open me!" : "Példaesemény – nyisson meg!",
|
||||
"System Address Book" : "Rendszercímjegyzék",
|
||||
"The system address book contains contact information for all users in your instance." : "A rendszercímjegyzék a példányon lévő összes felhasználó névjegyadatait tartalmazza.",
|
||||
"Enable System Address Book" : "Rendszercímjegyzék engedélyezése",
|
||||
"DAV system address book" : "DAV rendszercímjegyzék",
|
||||
"No outstanding DAV system address book sync." : "Nincs függőben lévő DAV rendszercímjegyzék-szinkronizálás.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A DAV rendszercímjegyzék-szinkronizációja még nem futott le, mert több, mint 1000 felhasználó található, vagy mert hiba történt. Futtassa kézileg a következő paranccsal: „occ dav:sync-system-addressbook”.",
|
||||
"DAV system address book size" : "DAV rendszercímjegyzék mérete",
|
||||
"The system address book is disabled" : "A rendszercímjegyzék le van tiltva",
|
||||
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "A rendszercímjegyzék engedélyezve van, de a beállított %d névjegyes korlátnál többet tartalmaz",
|
||||
"The system address book is enabled and contains less than the configured limit of %d contacts" : "A rendszercímjegyzék engedélyezve van, és a beállított %d névjegyes korlátnál kevesebbet tartalmaz",
|
||||
"DAV system address book" : "DAV rendszer címjegyzék",
|
||||
"No outstanding DAV system address book sync." : "Nincs kiemelkedő DAV rendszer címjegyzék szinkronizálás.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A DAV rendszer címjegyzék szinkronizációja még nem futott le, mert több, mint 1000 felhasználó található vagy hiba történt. Kérem futtassa manuálisan a következő paranccsal: \"occ dav:sync-system-addressbook\".",
|
||||
"WebDAV endpoint" : "WebDAV végpont",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nem sikerült ellenőrizni, hogy a webkiszolgáló megfelelően van-e beállítva a WebDAV feletti fájlszinkronizáció engedélyezéséhez. Ellenőrizze kézileg.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "A webkiszolgáló nincs megfelelően beállítva a fájlok szinkronizálásához, mert a WebDAV interfész hibásnak tűnik.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "A webkiszolgáló megfelelően van beállítva a WebDAV feletti fájlszinkronizáció engedélyezéséhez.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "A webkisolgáló megfelelően van konfigurálva a WebDAVon keresztüli fájl szinkronizáció engedélyezéséhez.",
|
||||
"Calendars including events, details and attendees" : "Naptárak eseményekkel, részletekkel és résztvevőkkel",
|
||||
"Migrated calendar (%1$s)" : "Átköltöztetett naptár (%1$s)",
|
||||
"Contacts and groups" : "Névjegyek és csoportok",
|
||||
@@ -286,38 +230,23 @@ OC.L10N.register(
|
||||
"Long absence Message" : "Hosszú távolléti állapot",
|
||||
"Save" : "Mentés",
|
||||
"Disable absence" : "Távollét tiltása",
|
||||
"Failed to load availability" : "Nem sikerült az elérhetőség betöltése",
|
||||
"Failed to load availability" : "Az elérhetőség betöltése sikertelen",
|
||||
"Saved availability" : "Elérhetőség mentve",
|
||||
"Failed to save availability" : "Nem sikerült az elérhetőség mentése",
|
||||
"Failed to save availability" : "Az elérhetőség mentése sikertelen",
|
||||
"to" : "–",
|
||||
"Delete slot" : "Idősáv törlése",
|
||||
"No working hours set" : "Nincs munkaidő beállítva",
|
||||
"Add slot" : "Idősáv hozzáadása",
|
||||
"Weekdays" : "Hétköznapok",
|
||||
"Pick a start time for {dayName}" : "Válasszon kezdődátumot ehhez: {dayName}",
|
||||
"Pick a end time for {dayName}" : "Válasszon végdátumot ehhez: {dayName}",
|
||||
"Pick a start time for {dayName}" : "Válassz kezdő dátumot a {dayName}-hoz",
|
||||
"Pick a end time for {dayName}" : "Válassz vége dátumot a {dayName}-hoz",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Az elérhetőségi időn túl, a felhasználói állapot automatikus beállítása „Ne zavarjanak” módba az összes értesítés némításához.",
|
||||
"Cancel" : "Mégse",
|
||||
"Import" : "Importálás",
|
||||
"Error while saving settings" : "Hiba a beállítások mentése során",
|
||||
"Contact reset successfully" : "Névjegy sikeresen visszaállítva",
|
||||
"Error while resetting contact" : "Hiba a névjegy visszaállítása során",
|
||||
"Contact imported successfully" : "Névjegy sikeresen importálva",
|
||||
"Error while importing contact" : "Hiba a névjegy importálása során",
|
||||
"Import contact" : "Névjegy importálása",
|
||||
"Reset to default" : "Visszaállítás az alapértelmezettre",
|
||||
"Import contacts" : "Névjegyek importálása",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Egy új .vcf fájl importálása törölni fogja a meglévő alapértelmezett névjegyet, és lecseréli az újra. Biztos, hogy folytatja?",
|
||||
"Failed to save example event creation setting" : "Nem sikerült az eseménylétrehozási beállítás mentése",
|
||||
"Failed to upload the example event" : "Nem sikerült a példaesemény feltöltése",
|
||||
"Custom example event was saved successfully" : "Az egyéni példaesemény mentése sikeres",
|
||||
"Failed to delete the custom example event" : "Nem sikerült az egyéni példaesemény törlése",
|
||||
"Custom example event was deleted successfully" : "Az egyéni példaesemény törlése sikeres",
|
||||
"Import calendar event" : "Naptáresemény importálása",
|
||||
"Uploading a new event will overwrite the existing one." : "Az új esemény feltöltése felülírja a meglévőt.",
|
||||
"Upload event" : "Esemény feltöltése",
|
||||
"Reset to default" : "Visszaállítás alapértelmezettre",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen}csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail-kiszolgálót{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail kiszolgálót{linkclose}.",
|
||||
"Calendar server" : "Naptárkiszolgáló",
|
||||
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
|
||||
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
|
||||
@@ -328,17 +257,15 @@ OC.L10N.register(
|
||||
"Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva",
|
||||
"Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.",
|
||||
"Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez",
|
||||
"Example content" : "Példatartalom",
|
||||
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "A példatartalom a Nextcloud funkcióinak bemutatására szolgál. Az alapértelmezett tartalom a Nextclouddal együtt kerül szállításra, és egyéni tartalomra cserélhető.",
|
||||
"Availability" : "Elérhetőség",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Ha beállítja a munkaidejét, akkor más emberek a megbeszélések létrehozásakor látni fogják, hogy Ön mikor nem érhető el.",
|
||||
"Absence" : "Távollét",
|
||||
"Configure your next absence period." : "A következő távolléti időszaka beállítása.",
|
||||
"Configure your next absence period." : "A követkeő távolléti periódus beállítása.",
|
||||
"There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.",
|
||||
"Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.",
|
||||
"Are you accepting the invitation?" : "Elfogadja a meghívást?",
|
||||
"Are you accepting the invitation?" : "Elfogadja az meghívást?",
|
||||
"Tentative" : "Feltételes",
|
||||
"Your attendance was updated successfully." : "A részvétele sikeresen frissítve.",
|
||||
"Your attendance was updated successfully." : "A részvétele frissítése sikeres.",
|
||||
"No results." : "Nincs eredmény.",
|
||||
"Start typing." : "Kezdjen gépelni."
|
||||
},
|
||||
|
||||
@@ -70,87 +70,49 @@
|
||||
"Description: %s" : "Leírás: %s",
|
||||
"Where: %s" : "Hely: %s",
|
||||
"%1$s via %2$s" : "%1$s – %2$s",
|
||||
"In the past on %1$s for the entire day" : "A múltban ekkor: %1$s, a teljes napra",
|
||||
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n perc múlva ekkor: %1$s, a teljes napra","%n perc múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n óra múlva ekkor: %1$s, a teljes napra","%n óra múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n nap múlva ekkor: %1$s, a teljes napra","%n nap múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n hét múlva ekkor: %1$s, a teljes napra","%n hét múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n hónap múlva ekkor: %1$s, a teljes napra","%n hónap múlva ekkor: %1$s, a teljes napra"],
|
||||
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n év múlva ekkor: %1$s, a teljes napra","%n év múlva ekkor: %1$s, a teljes napra"],
|
||||
"In the past on %1$s between %2$s - %3$s" : "A múltban ekkor: %1$s, %2$s és %3$s között",
|
||||
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["%n perc múlva ekkor: %1$s, %2$s és %3$s között","%n perc múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n óra múlva ekkor: %1$s, %2$s és %3$s között","%n óra múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n nap múlva ekkor: %1$s, %2$s és %3$s között","%n nap múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n hét múlva ekkor: %1$s, %2$s és %3$s között","%n hét múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n hónap múlva ekkor: %1$s, %2$s és %3$s között","%n hónap múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n év múlva ekkor: %1$s, %2$s és %3$s között","%n év múlva ekkor: %1$s, %2$s és %3$s között"],
|
||||
"Could not generate when statement" : "Nem sikerült előállítani az időfeltételt",
|
||||
"Every Day for the entire day" : "Minden nap a teljes napra",
|
||||
"Every Day for the entire day until %1$s" : "Minden nap a teljes napon eddig: %1$s",
|
||||
"Every Day between %1$s - %2$s" : "Minden nap %1$s és %2$sközött",
|
||||
"Every Day between %1$s - %2$s until %3$s" : "Minden nap %1$s és %2$s között eddig: %3$s",
|
||||
"Every %1$d Days for the entire day" : "Minden %1$d. napon, a teljes napra",
|
||||
"Every %1$d Days for the entire day until %2$s" : "Minden %1$d. napon, a teljes napra eddig: %2$s",
|
||||
"Every %1$d Days between %2$s - %3$s" : "Minden %1$d. napon %2$s és %3$s között",
|
||||
"Every %1$d Days between %2$s - %3$s until %4$s" : "Minden %1$d. napon %2$s és %3$s között eddig: %4$s",
|
||||
"Could not generate event recurrence statement" : "Nem sikerült eseményismétlési utasítást előállítani",
|
||||
"Every Week on %1$s for the entire day" : "Minden héten %1$s, a teljes napra",
|
||||
"Every Week on %1$s for the entire day until %2$s" : "Minden héten %1$s, a teljes napra eddig: %2$s",
|
||||
"Every Week on %1$s between %2$s - %3$s" : "Minden héten %1$s, %2$s és %3$s között",
|
||||
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Minden héten %1$s, %2$s és %3$s között eddig: %4$s",
|
||||
"Every %1$d Weeks on %2$s for the entire day" : "Minden %1$d. héten %2$s, a teljes napra",
|
||||
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Minden %1$d. héten %2$s, a teljes napon eddig: %3$s",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Minden %1$d. héten %2$s, %3$s és %4$s között",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Minden %1$d. héten %2$s, %3$s és %4$s között eddig: %5$s",
|
||||
"Every Month on the %1$s for the entire day" : "Minden hónap %1$s. napján, a teljes napon",
|
||||
"Every Month on the %1$s for the entire day until %2$s" : "Minden hónap %1$s. napján, a teljes napon eddig: %2$s",
|
||||
"Every Month on the %1$s between %2$s - %3$s" : "Minden hónap %1$s. napján %2$s és %3$s között",
|
||||
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Minden hónap %1$s. napján %2$s és %3$s között eddig: %4$s",
|
||||
"Every %1$d Months on the %2$s for the entire day" : "Minden %1$d. hónap %2$s. napján, a teljes napon",
|
||||
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Minden %1$d. hónap %2$s. napján, a teljes napon eddig: %3$s",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Minden %1$d. hónap %2$s. napján %3$s és %4$s között",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Minden %1$d. hónap %2$s. napján %3$s és %4$s között eddig: %5$s",
|
||||
"Every Year in %1$s on the %2$s for the entire day" : "Minden év %1$s hónapja %2$s. napján, a teljes napra",
|
||||
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Minden év %1$s hónapjának %2$s. napján, a teljes napon eddig: %3$s",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Minden év %1$s hónapjának %2$s. napján %3$s és %4$s között",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Minden év %1$s hónapjának %2$s. napján %3$s és %4$s között eddig: %5$s",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Minden %1$d. év %2$s hónapjának %3$s. napján, a teljes napra",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, a teljes napra eddig: %4$s",
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, %4$s és %5$s között",
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Minden %1$d. év %2$s hónapjának %3$s. napján, %4$s és %5$s között eddig: %6$s",
|
||||
"On specific dates for the entire day until %1$s" : "Adott dátumokon, a teljes napra eddig: %1$s",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "Megadott dátumokon %1$s és %2$s között, eddig: %3$s",
|
||||
"In the past on %1$s" : "A múltban ekkor: %1$s",
|
||||
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n perc múlva ekkor: %1$s","%n perc múlva ekkor: %1$s"],
|
||||
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n óra múlva ekkor: %1$s","%n óra múlva ekkor: %1$s"],
|
||||
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n nap múlva ekkor: %1$s","%n nap múlva ekkor: %1$s"],
|
||||
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n hét múlva ekkor: %1$s","%n hét múlva ekkor: %1$s"],
|
||||
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n hónap múlva ekkor: %1$s","%n hónap múlva ekkor: %1$s"],
|
||||
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n év múlva ekkor: %1$s","%n év múlva ekkor: %1$s"],
|
||||
"In the past on %1$s then on %2$s" : "A múltban ekkor: %1$s, majd ekkor: %2$s",
|
||||
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n perc múlva ekkor: %1$s, majd ekkor: %2$s","%n perc múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n óra múlva ekkor: %1$s, majd ekkor: %2$s","%n óra múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n nap múlva ekkor: %1$s, majd ekkor: %2$s","%n nap múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n hét múlva ekkor: %1$s, majd ekkor: %2$s","%n hét múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n hónap múlva ekkor: %1$s, majd ekkor: %2$s","%n hónap múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n év múlva ekkor: %1$s, majd ekkor: %2$s","%n év múlva ekkor: %1$s, majd ekkor: %2$s"],
|
||||
"In the past on %1$s then on %2$s and %3$s" : "A múltban ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s",
|
||||
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n perc múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n perc múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n óra múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n óra múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n nap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n nap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n hét múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n hét múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n hónap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n hónap múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n év múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s","%n év múlva ekkor: %1$s, majd ekkor: %2$s, és ekkor: %3$s"],
|
||||
"Could not generate when statement" : "Nem sikerült létrehozni amikor az állítást",
|
||||
"Every Day for the entire day" : "Minden Nap a teljes napra",
|
||||
"Every Day for the entire day until %1$s" : "Minden Nap a teljes napon eddig %1$s",
|
||||
"Every Day between %1$s - %2$s" : "Minden Nap %1$s - %2$sközött",
|
||||
"Every Day between %1$s - %2$s until %3$s" : "Minden Nap %1$s - %2$s között %3$s-ig",
|
||||
"Every %1$d Days for the entire day" : "Minden %1$d Nap az teljes napra",
|
||||
"Every %1$d Days for the entire day until %2$s" : "Minden%1$d Nap a teljes napra %2$s-ig",
|
||||
"Every %1$d Days between %2$s - %3$s" : "Minden%1$d Nap %2$s - %3$s között",
|
||||
"Every %1$d Days between %2$s - %3$s until %4$s" : "Minden%1$d Napon %2$s - %3$s között %4$s-ig",
|
||||
"Could not generate event recurrence statement" : "Nem sikerült megújuló eseményt létrehozni",
|
||||
"Every Week on %1$s for the entire day" : "Minden hét %1$s napon a teljes napja",
|
||||
"Every Week on %1$s for the entire day until %2$s" : "Minden Héten %1$s a teljes napra %2$s-ig",
|
||||
"Every Week on %1$s between %2$s - %3$s" : "Minden Hét %1$s napján %2$s - %3$sközött",
|
||||
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Minden Hét %1$s napján %2$s - %3$s között %4$s-ig",
|
||||
"Every %1$d Weeks on %2$s for the entire day" : "Minden%1$d héten %2$s napon a teljes napra",
|
||||
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Minden%1$d Héten %2$s napján a teljes napon %3$s-ig",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Minden%1$d hét %2$s napján %3$s - %4$sközött",
|
||||
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Minden%1$d héten %2$s napján %3$s - %4$s között eddig %5$s",
|
||||
"Every Month on the %1$s for the entire day" : "Minden hónap %1$s napján a teljes napon",
|
||||
"Every Month on the %1$s for the entire day until %2$s" : "Minden hónap %1$s napján a teljes napon %2$s-ig",
|
||||
"Every Month on the %1$s between %2$s - %3$s" : "Minden hónap %1$s napján %2$sés %3$s között",
|
||||
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Minden hónap %1$s napján %2$sés %3$s között %4$s-ig",
|
||||
"Every %1$d Months on the %2$s for the entire day" : "Minden%1$d Hónap %2$s napján a teljes napon",
|
||||
"Every %1$d Months on the %2$s for the entire day until %3$s" : "Minden%1$d Hónap %2$s napján a teljes napon %3$s-ig",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s" : "Minden%1$d Hónap %2$s napján %3$s és %4$s között",
|
||||
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Minden%1$d Hónap %2$s napján %3$s és %4$s között %5$s-ig",
|
||||
"Every Year in %1$s on the %2$s for the entire day" : "Minden év %1$s hónap %2$s napján a teljes napra",
|
||||
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Minden év %1$s hónapjában %2$s napján a teljes napon %3$s-ig",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Minden év %1$s hónapjában %2$s napján %3$s - %4$sközött.",
|
||||
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Minden év %1$s hónapjában %2$s napján %3$s - %4$s között eddig %5$s",
|
||||
"Every %1$d Years in %2$s on the %3$s for the entire day" : "Minden%1$d év %2$s hónapján %3$s napján a teljes napra",
|
||||
"On specific dates for the entire day until %1$s" : "Egy megadott időpontban a teljes napon %1$s-ig ",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "Egy megadott időpontban %1$s és %2$s %3$s-ig",
|
||||
"Could not generate next recurrence statement" : "Nem sikerült a következő megújuló eseményt létrehozni",
|
||||
"Cancelled: %1$s" : "Lemondva: %1$s",
|
||||
"\"%1$s\" has been canceled" : "A következő le lett mondva: „%1$s”",
|
||||
"\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”",
|
||||
"Re: %1$s" : "Vá: %1$s",
|
||||
"%1$s has accepted your invitation" : "%1$s elfogadta a meghívását",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását",
|
||||
"%1$s has declined your invitation" : "%1$s elutasította a meghívását",
|
||||
"%1$s has responded to your invitation" : "%1$s válaszolt a meghívására",
|
||||
"Invitation updated: %1$s" : "Meghívó frissítve: %1$s",
|
||||
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: „%2$s”",
|
||||
"%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s",
|
||||
"Invitation: %1$s" : "Meghívó: %1$s",
|
||||
"%1$s would like to invite you to \"%2$s\"" : "%1$s meg szeretné hívni a következőre: „%2$s”",
|
||||
"Organizer:" : "Szervező:",
|
||||
@@ -159,40 +121,38 @@
|
||||
"When:" : "Mikor:",
|
||||
"Location:" : "Hely:",
|
||||
"Link:" : "Hivatkozás:",
|
||||
"Occurring:" : "Előfordulás:",
|
||||
"Occurring:" : "Előforduló",
|
||||
"Accept" : "Elfogadás",
|
||||
"Decline" : "Elutasítás",
|
||||
"More options …" : "További lehetőségek…",
|
||||
"More options at %s" : "További lehetőségek itt: %s",
|
||||
"Monday" : "hétfő",
|
||||
"Tuesday" : "kedd",
|
||||
"Wednesday" : "szerda",
|
||||
"Thursday" : "csütörtök",
|
||||
"Friday" : "péntek",
|
||||
"Saturday" : "szombat",
|
||||
"Sunday" : "vasárnap",
|
||||
"January" : "január",
|
||||
"February" : "február",
|
||||
"March" : "március",
|
||||
"April" : "április",
|
||||
"May" : "május",
|
||||
"June" : "június",
|
||||
"July" : "július",
|
||||
"August" : "augusztus",
|
||||
"September" : "szeptember",
|
||||
"October" : "október",
|
||||
"November" : "november",
|
||||
"December" : "december",
|
||||
"First" : "első",
|
||||
"Second" : "második",
|
||||
"Third" : "harmadik",
|
||||
"Fourth" : "negyedik",
|
||||
"Fifth" : "ötödik",
|
||||
"Last" : "utolsó",
|
||||
"Second Last" : "utolsó előtti",
|
||||
"Third Last" : "hátulról harmadik",
|
||||
"Fourth Last" : "hátulról negyedik",
|
||||
"Fifth Last" : "hátulról ötödik",
|
||||
"Monday" : "Hétfő",
|
||||
"Tuesday" : "Kedd",
|
||||
"Wednesday" : "Szerda",
|
||||
"Thursday" : "Csütörtök",
|
||||
"Friday" : "Péntek",
|
||||
"Saturday" : "Szombat",
|
||||
"Sunday" : "Vasárnap",
|
||||
"January" : "Január",
|
||||
"February" : "Február",
|
||||
"March" : "Március",
|
||||
"April" : "Április",
|
||||
"May" : "Május",
|
||||
"June" : "Június",
|
||||
"July" : "Július",
|
||||
"August" : "Augusztus",
|
||||
"September" : "Szeptember",
|
||||
"October" : "Október",
|
||||
"November" : "November",
|
||||
"December" : "December",
|
||||
"First" : "Első",
|
||||
"Second" : "Másodperc",
|
||||
"Third" : "Harmadik",
|
||||
"Fourth" : "Negyedik",
|
||||
"Last" : "Utolsó",
|
||||
"Second Last" : "Második Utolsó",
|
||||
"Third Last" : "Harmadik Utolsó",
|
||||
"Fourth Last" : "Negyedik Utolsó",
|
||||
"Contacts" : "Névjegyek",
|
||||
"{actor} created address book {addressbook}" : "{actor} létrehozta a következő címjegyzéket: {addressbook}",
|
||||
"You created address book {addressbook}" : "Létrehozta a következő címjegyzéket: {addressbook}",
|
||||
@@ -218,12 +178,10 @@
|
||||
"{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
|
||||
"You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}",
|
||||
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett",
|
||||
"System address book disabled" : "A rendszercímjegyzék letiltva",
|
||||
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "A rendszercímjegyzék automatikus le lett tiltva a frissítése során. Ez azt jelenti, hogy a címjegyzék nem lesz elérhető a felhasználók számára sem a Névjegyek alkalmazásban, sem más kliensekben. A rendszercímjegyzék azért lett letiltva, mert a nvéjegyek száma túllépte a javasolt maximumot. A korlát a teljesítményproblémák megakadályozása miatt van beállítva. A következő paranccsal újra engedélyezheti a rendszercímjegyzéket: {command}",
|
||||
"Accounts" : "Fiókok",
|
||||
"System address book which holds all accounts" : "A rendszercímjegyzék, amely az összes fiókot tartalmazza",
|
||||
"System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza",
|
||||
"File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s",
|
||||
"Failed to get storage for file" : "Nem sikerült a tárhely lekérése a fájl számára",
|
||||
"Failed to get storage for file" : "Nem sikerlt a tárhely lekérése a fájl számára",
|
||||
"Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította",
|
||||
"Could not write file contents" : "A fájl tartalma nem írható",
|
||||
"_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"],
|
||||
@@ -232,14 +190,11 @@
|
||||
"Could not rename part file to final file, canceled by hook" : "A részleges fájl nem nevezhető át a végleges fájllá, a hurok megszakította",
|
||||
"Could not rename part file to final file" : "A részleges fájl nem nevezhető át a végleges fájllá",
|
||||
"Failed to check file size: %1$s" : "A fájlméret nem ellenőrizhető: %1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "A fájl nem nyitható meg: %1$s (%2$d), a fájl létezőnek tűnik",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "A fájl nem nyitható meg: %1$s (%2$d), úgy tűnik, hogy a fájl nem létezik",
|
||||
"Failed to get size for : %1$s" : "Nem sikerült a következő méretének lekérdezése: %1$s",
|
||||
"Encryption not ready: %1$s" : "Nincs kész a titkosítás: %1$s",
|
||||
"Failed to open file: %1$s" : "Nem sikerült a fájl megnyitása: %1$s",
|
||||
"Failed to unlink: %1$s" : "Nem sikerült a hivatkozás eltávolítása: %1$s",
|
||||
"Failed to write file contents: %1$s" : "Nem sikerült a fájl tartalmának kiírása: %1$s",
|
||||
"File not found: %1$s" : "Nem található a fájl: %1$s",
|
||||
"Encryption not ready: %1$s" : "A titkosítás nincs kész: %1$s",
|
||||
"Failed to open file: %1$s" : "A fájl megnyitása sikertelen: %1$s",
|
||||
"Failed to unlink: %1$s" : "A hivatkozás eltávolítása sikertelen: %1$s",
|
||||
"Failed to write file contents: %1$s" : "A fájl tartalmának kiírása sikertelen: %1$s",
|
||||
"File not found: %1$s" : "A fájl nem található: %1$s",
|
||||
"Invalid target path" : "Érvénytelen elérési útvonal",
|
||||
"System is in maintenance mode." : "A rendszer karbantartási módban van.",
|
||||
"Upgrade needed" : "Frissítés szükséges",
|
||||
@@ -251,23 +206,12 @@
|
||||
"Completed on %s" : "Befejezve: %s",
|
||||
"Due on %s by %s" : "Esedékesség: %s, %s által",
|
||||
"Due on %s" : "Esedékesség: %s",
|
||||
"This is an example contact" : "Ez egy példanévjegy",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Üdvözli a Nextcloud Naptár!\n\nEz egy példaesemény – fedezze fel a tervezés rugalmasságát a Nextcloud Naptárral úgy, hogy kipróbálja az összes olyan szerkesztést, amit szeretne!\n\nA Nextcloud Naptárrál következőket teheti:\n- Erőfeszítés nélkül hozhat létre, szerkeszthet és kezelhet eseményeket.\n- Létrehozhat külön naptárakat a csapattagjai, a barátai és a családja számára.\n- Ellenőrizheti és megjelenítheti az elfoglaltsági idejét másoknak.\n- Zökkenőmentesen integrálhat alkalmazásokat és eszközöket a CalDAV segítségével.\n- Testreszabhatja az élményét: beütemezhet ismétlődő eseményeket, állíthat az értesítéseken és más beállításokon.",
|
||||
"Example event - open me!" : "Példaesemény – nyisson meg!",
|
||||
"System Address Book" : "Rendszercímjegyzék",
|
||||
"The system address book contains contact information for all users in your instance." : "A rendszercímjegyzék a példányon lévő összes felhasználó névjegyadatait tartalmazza.",
|
||||
"Enable System Address Book" : "Rendszercímjegyzék engedélyezése",
|
||||
"DAV system address book" : "DAV rendszercímjegyzék",
|
||||
"No outstanding DAV system address book sync." : "Nincs függőben lévő DAV rendszercímjegyzék-szinkronizálás.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A DAV rendszercímjegyzék-szinkronizációja még nem futott le, mert több, mint 1000 felhasználó található, vagy mert hiba történt. Futtassa kézileg a következő paranccsal: „occ dav:sync-system-addressbook”.",
|
||||
"DAV system address book size" : "DAV rendszercímjegyzék mérete",
|
||||
"The system address book is disabled" : "A rendszercímjegyzék le van tiltva",
|
||||
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "A rendszercímjegyzék engedélyezve van, de a beállított %d névjegyes korlátnál többet tartalmaz",
|
||||
"The system address book is enabled and contains less than the configured limit of %d contacts" : "A rendszercímjegyzék engedélyezve van, és a beállított %d névjegyes korlátnál kevesebbet tartalmaz",
|
||||
"DAV system address book" : "DAV rendszer címjegyzék",
|
||||
"No outstanding DAV system address book sync." : "Nincs kiemelkedő DAV rendszer címjegyzék szinkronizálás.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A DAV rendszer címjegyzék szinkronizációja még nem futott le, mert több, mint 1000 felhasználó található vagy hiba történt. Kérem futtassa manuálisan a következő paranccsal: \"occ dav:sync-system-addressbook\".",
|
||||
"WebDAV endpoint" : "WebDAV végpont",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Nem sikerült ellenőrizni, hogy a webkiszolgáló megfelelően van-e beállítva a WebDAV feletti fájlszinkronizáció engedélyezéséhez. Ellenőrizze kézileg.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "A webkiszolgáló nincs megfelelően beállítva a fájlok szinkronizálásához, mert a WebDAV interfész hibásnak tűnik.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "A webkiszolgáló megfelelően van beállítva a WebDAV feletti fájlszinkronizáció engedélyezéséhez.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "A webkisolgáló megfelelően van konfigurálva a WebDAVon keresztüli fájl szinkronizáció engedélyezéséhez.",
|
||||
"Calendars including events, details and attendees" : "Naptárak eseményekkel, részletekkel és résztvevőkkel",
|
||||
"Migrated calendar (%1$s)" : "Átköltöztetett naptár (%1$s)",
|
||||
"Contacts and groups" : "Névjegyek és csoportok",
|
||||
@@ -284,38 +228,23 @@
|
||||
"Long absence Message" : "Hosszú távolléti állapot",
|
||||
"Save" : "Mentés",
|
||||
"Disable absence" : "Távollét tiltása",
|
||||
"Failed to load availability" : "Nem sikerült az elérhetőség betöltése",
|
||||
"Failed to load availability" : "Az elérhetőség betöltése sikertelen",
|
||||
"Saved availability" : "Elérhetőség mentve",
|
||||
"Failed to save availability" : "Nem sikerült az elérhetőség mentése",
|
||||
"Failed to save availability" : "Az elérhetőség mentése sikertelen",
|
||||
"to" : "–",
|
||||
"Delete slot" : "Idősáv törlése",
|
||||
"No working hours set" : "Nincs munkaidő beállítva",
|
||||
"Add slot" : "Idősáv hozzáadása",
|
||||
"Weekdays" : "Hétköznapok",
|
||||
"Pick a start time for {dayName}" : "Válasszon kezdődátumot ehhez: {dayName}",
|
||||
"Pick a end time for {dayName}" : "Válasszon végdátumot ehhez: {dayName}",
|
||||
"Pick a start time for {dayName}" : "Válassz kezdő dátumot a {dayName}-hoz",
|
||||
"Pick a end time for {dayName}" : "Válassz vége dátumot a {dayName}-hoz",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Az elérhetőségi időn túl, a felhasználói állapot automatikus beállítása „Ne zavarjanak” módba az összes értesítés némításához.",
|
||||
"Cancel" : "Mégse",
|
||||
"Import" : "Importálás",
|
||||
"Error while saving settings" : "Hiba a beállítások mentése során",
|
||||
"Contact reset successfully" : "Névjegy sikeresen visszaállítva",
|
||||
"Error while resetting contact" : "Hiba a névjegy visszaállítása során",
|
||||
"Contact imported successfully" : "Névjegy sikeresen importálva",
|
||||
"Error while importing contact" : "Hiba a névjegy importálása során",
|
||||
"Import contact" : "Névjegy importálása",
|
||||
"Reset to default" : "Visszaállítás az alapértelmezettre",
|
||||
"Import contacts" : "Névjegyek importálása",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Egy új .vcf fájl importálása törölni fogja a meglévő alapértelmezett névjegyet, és lecseréli az újra. Biztos, hogy folytatja?",
|
||||
"Failed to save example event creation setting" : "Nem sikerült az eseménylétrehozási beállítás mentése",
|
||||
"Failed to upload the example event" : "Nem sikerült a példaesemény feltöltése",
|
||||
"Custom example event was saved successfully" : "Az egyéni példaesemény mentése sikeres",
|
||||
"Failed to delete the custom example event" : "Nem sikerült az egyéni példaesemény törlése",
|
||||
"Custom example event was deleted successfully" : "Az egyéni példaesemény törlése sikeres",
|
||||
"Import calendar event" : "Naptáresemény importálása",
|
||||
"Uploading a new event will overwrite the existing one." : "Az új esemény feltöltése felülírja a meglévőt.",
|
||||
"Upload event" : "Esemény feltöltése",
|
||||
"Reset to default" : "Visszaállítás alapértelmezettre",
|
||||
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Telepítse a {calendarappstoreopen}Naptár alkalmazást{linkclose}, vagy {calendardocopen}csatlakoztassa asztali számítógépét és mobilját a szinkronizáláshoz ↗{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail-kiszolgálót{linkclose}.",
|
||||
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ne felejtse el megfelelően beállítani az {emailopen}e-mail kiszolgálót{linkclose}.",
|
||||
"Calendar server" : "Naptárkiszolgáló",
|
||||
"Send invitations to attendees" : "Meghívó küldése a résztvevőknek",
|
||||
"Automatically generate a birthday calendar" : "Születésnapokat tartalmazó naptár automatikus létrehozása",
|
||||
@@ -326,17 +255,15 @@
|
||||
"Send reminder notifications to calendar sharees as well" : "Emlékeztető értesítések küldése azoknak is, akikkel a naptár meg van osztva",
|
||||
"Reminders are always sent to organizers and attendees." : "Az értesítések mindig a szervezőknek és a résztvevőknek lesznek elküldve.",
|
||||
"Enable notifications for events via push" : "Leküldéses értesítések engedélyezése az eseményekhez",
|
||||
"Example content" : "Példatartalom",
|
||||
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "A példatartalom a Nextcloud funkcióinak bemutatására szolgál. Az alapértelmezett tartalom a Nextclouddal együtt kerül szállításra, és egyéni tartalomra cserélhető.",
|
||||
"Availability" : "Elérhetőség",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Ha beállítja a munkaidejét, akkor más emberek a megbeszélések létrehozásakor látni fogják, hogy Ön mikor nem érhető el.",
|
||||
"Absence" : "Távollét",
|
||||
"Configure your next absence period." : "A következő távolléti időszaka beállítása.",
|
||||
"Configure your next absence period." : "A követkeő távolléti periódus beállítása.",
|
||||
"There was an error updating your attendance status." : "Hiba történt a részvételi állapotának frissítése során.",
|
||||
"Please contact the organizer directly." : "Vegye fel a kapcsolatot közvetlenül a szervezővel.",
|
||||
"Are you accepting the invitation?" : "Elfogadja a meghívást?",
|
||||
"Are you accepting the invitation?" : "Elfogadja az meghívást?",
|
||||
"Tentative" : "Feltételes",
|
||||
"Your attendance was updated successfully." : "A részvétele sikeresen frissítve.",
|
||||
"Your attendance was updated successfully." : "A részvétele frissítése sikeres.",
|
||||
"No results." : "Nincs eredmény.",
|
||||
"Start typing." : "Kezdjen gépelni."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
||||
@@ -250,10 +250,9 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Completata il %s",
|
||||
"Due on %s by %s" : "Scade il %s per %s",
|
||||
"Due on %s" : "Scade il %s",
|
||||
"This is an example contact" : "Questo è un contatto d'esempio",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Benvenuto nel Calendario Nextcloud!\n\nQuesto è un evento di esempio: scopri la flessibilità della pianificazione con Calendario Nextcloud apportando tutte le modifiche che desideri!\n\nCon il Calendario Nextcloud puoi:\n- Creare, modificare e gestire eventi senza alcuno sforzo.\n- Creare più calendari e condividerli con colleghi, amici o familiari.\n- Verificare la disponibilità e mostrare agli altri i tuoi impegni.\n- Integrare perfettamente app e dispositivi tramite CalDAV.\n- Personalizzare la tua esperienza: pianificare eventi ricorrenti, regolare le notifiche e altre impostazioni.",
|
||||
"Example event - open me!" : "Evento d'esempio - aprimi!",
|
||||
"System Address Book" : "Rubrica di sistema",
|
||||
"System Address Book" : "Rubrica di Sistema",
|
||||
"The system address book contains contact information for all users in your instance." : "La rubrica di sistema contiene le informazioni di contatto di tutti gli utenti della tua istanza.",
|
||||
"Enable System Address Book" : "Abilita rubrica di sistema",
|
||||
"DAV system address book" : "Rubrica di sistema DAV",
|
||||
@@ -325,7 +324,7 @@ OC.L10N.register(
|
||||
"Send reminder notifications to calendar sharees as well" : "Invia notifiche di promemoria anche ai partecipanti al calendario",
|
||||
"Reminders are always sent to organizers and attendees." : "I promemoria vengono sempre inviati agli organizzatori e ai partecipanti.",
|
||||
"Enable notifications for events via push" : "Abilita notifiche per eventi tramite push",
|
||||
"Example content" : "Contenuto di esempio",
|
||||
"Example content" : "Contenuto d'esempio",
|
||||
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Il contenuto di esempio serve a mostrare le funzionalità di Nextcloud. Il contenuto predefinito viene fornito con Nextcloud e può essere sostituito da contenuti personalizzati.",
|
||||
"Availability" : "Disponibilità",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Se imposti il tuo orario di lavoro, le altre persone potranno vedere quando non sei in ufficio per organizzare una riunione.",
|
||||
|
||||
@@ -248,10 +248,9 @@
|
||||
"Completed on %s" : "Completata il %s",
|
||||
"Due on %s by %s" : "Scade il %s per %s",
|
||||
"Due on %s" : "Scade il %s",
|
||||
"This is an example contact" : "Questo è un contatto d'esempio",
|
||||
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Benvenuto nel Calendario Nextcloud!\n\nQuesto è un evento di esempio: scopri la flessibilità della pianificazione con Calendario Nextcloud apportando tutte le modifiche che desideri!\n\nCon il Calendario Nextcloud puoi:\n- Creare, modificare e gestire eventi senza alcuno sforzo.\n- Creare più calendari e condividerli con colleghi, amici o familiari.\n- Verificare la disponibilità e mostrare agli altri i tuoi impegni.\n- Integrare perfettamente app e dispositivi tramite CalDAV.\n- Personalizzare la tua esperienza: pianificare eventi ricorrenti, regolare le notifiche e altre impostazioni.",
|
||||
"Example event - open me!" : "Evento d'esempio - aprimi!",
|
||||
"System Address Book" : "Rubrica di sistema",
|
||||
"System Address Book" : "Rubrica di Sistema",
|
||||
"The system address book contains contact information for all users in your instance." : "La rubrica di sistema contiene le informazioni di contatto di tutti gli utenti della tua istanza.",
|
||||
"Enable System Address Book" : "Abilita rubrica di sistema",
|
||||
"DAV system address book" : "Rubrica di sistema DAV",
|
||||
@@ -323,7 +322,7 @@
|
||||
"Send reminder notifications to calendar sharees as well" : "Invia notifiche di promemoria anche ai partecipanti al calendario",
|
||||
"Reminders are always sent to organizers and attendees." : "I promemoria vengono sempre inviati agli organizzatori e ai partecipanti.",
|
||||
"Enable notifications for events via push" : "Abilita notifiche per eventi tramite push",
|
||||
"Example content" : "Contenuto di esempio",
|
||||
"Example content" : "Contenuto d'esempio",
|
||||
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Il contenuto di esempio serve a mostrare le funzionalità di Nextcloud. Il contenuto predefinito viene fornito con Nextcloud e può essere sostituito da contenuti personalizzati.",
|
||||
"Availability" : "Disponibilità",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Se imposti il tuo orario di lavoro, le altre persone potranno vedere quando non sei in ufficio per organizzare una riunione.",
|
||||
|
||||
@@ -148,7 +148,7 @@ OC.L10N.register(
|
||||
"\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"%1$s has accepted your invitation" : "%1$s aceitou seu convite",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s aceitou seu convite como tentativa",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente seu convite",
|
||||
"%1$s has declined your invitation" : "%1$s recusou seu convite",
|
||||
"%1$s has responded to your invitation" : "%1$s respondeu ao seu convite",
|
||||
"Invitation updated: %1$s" : "Convite atualizado: %1$s",
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
"\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado",
|
||||
"Re: %1$s" : "Re: %1$s",
|
||||
"%1$s has accepted your invitation" : "%1$s aceitou seu convite",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s aceitou seu convite como tentativa",
|
||||
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente seu convite",
|
||||
"%1$s has declined your invitation" : "%1$s recusou seu convite",
|
||||
"%1$s has responded to your invitation" : "%1$s respondeu ao seu convite",
|
||||
"Invitation updated: %1$s" : "Convite atualizado: %1$s",
|
||||
|
||||
@@ -765,7 +765,7 @@ EOF;
|
||||
|
||||
$addresses = $this->getAddressesForPrincipal($calendarNode->getOwner());
|
||||
foreach ($vCal->VEVENT as $vevent) {
|
||||
if (isset($vevent->ORGANIZER) && in_array($vevent->ORGANIZER->getNormalizedValue(), $addresses, true)) {
|
||||
if (in_array($vevent->ORGANIZER->getNormalizedValue(), $addresses, true)) {
|
||||
// User is an organizer => throw the exception
|
||||
throw $e;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class BlockLegacyClientPlugin extends ServerPlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
$minimumSupportedDesktopVersion = $this->config->getSystemValueString('minimum.supported.desktop.version', '3.1.83');
|
||||
$minimumSupportedDesktopVersion = $this->config->getSystemValueString('minimum.supported.desktop.version', '3.1.81');
|
||||
$maximumSupportedDesktopVersion = $this->config->getSystemValueString('maximum.supported.desktop.version', '99.99.99');
|
||||
|
||||
// Check if the client is a desktop client
|
||||
|
||||
@@ -38,12 +38,6 @@ class ZipFolderPlugin extends ServerPlugin {
|
||||
*/
|
||||
private ?Server $server = null;
|
||||
|
||||
/**
|
||||
* Whether handleDownload has fully streamed an archive for the current request.
|
||||
* Used by afterDownload to decide whether to suppress sabre/dav's own response logic.
|
||||
*/
|
||||
private bool $streamed = false;
|
||||
|
||||
public function __construct(
|
||||
private Tree $tree,
|
||||
private LoggerInterface $logger,
|
||||
@@ -97,11 +91,10 @@ class ZipFolderPlugin extends ServerPlugin {
|
||||
* It is possible to filter / limit the files that should be downloaded,
|
||||
* either by passing (multiple) `X-NC-Files: the-file` headers
|
||||
* or by setting a `files=JSON_ARRAY_OF_FILES` URL query.
|
||||
*
|
||||
* @return false|null
|
||||
*/
|
||||
public function handleDownload(Request $request, Response $response): ?false {
|
||||
if ($request->getHeader('X-Sabre-Original-Method') === 'HEAD') {
|
||||
return null;
|
||||
}
|
||||
public function handleDownload(Request $request, Response $response): ?bool {
|
||||
$node = $this->tree->getNodeForPath($request->getPath());
|
||||
if (!($node instanceof Directory)) {
|
||||
// only handle directories
|
||||
@@ -186,23 +179,21 @@ class ZipFolderPlugin extends ServerPlugin {
|
||||
$this->streamNode($streamer, $node, $rootPath);
|
||||
}
|
||||
$streamer->finalize();
|
||||
$this->streamed = true; // archive fully streamed
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tell sabre/dav not to trigger its own response sending logic as the handleDownload will have already sent the response
|
||||
* Tell sabre/dav not to trigger it's own response sending logic as the handleDownload will have already send the response
|
||||
*
|
||||
* @return false|null
|
||||
*/
|
||||
public function afterDownload(Request $request, Response $response): ?false {
|
||||
if ($request->getHeader('X-Sabre-Original-Method') === 'HEAD') {
|
||||
public function afterDownload(Request $request, Response $response): ?bool {
|
||||
$node = $this->tree->getNodeForPath($request->getPath());
|
||||
if (!($node instanceof Directory)) {
|
||||
// only handle directories
|
||||
return null;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$this->streamed) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,7 +343,6 @@ class FileSearchBackend implements ISearchBackend {
|
||||
}, $query->orderBy);
|
||||
|
||||
$limit = $query->limit;
|
||||
$maxResults = $limit->maxResults !== 0 ? (int)$limit->maxResults : 100;
|
||||
$offset = $limit->firstResult;
|
||||
|
||||
$limitHome = false;
|
||||
@@ -371,7 +370,7 @@ class FileSearchBackend implements ISearchBackend {
|
||||
|
||||
return new SearchQuery(
|
||||
$operators,
|
||||
$maxResults,
|
||||
(int)$limit->maxResults,
|
||||
$offset,
|
||||
$orders,
|
||||
$this->user,
|
||||
|
||||
@@ -43,14 +43,6 @@ use Test\TestCase;
|
||||
use Test\Traits\MountProviderTrait;
|
||||
use Test\Traits\UserTrait;
|
||||
|
||||
/**
|
||||
* Internal helper to mock legacy hook receiver.
|
||||
*/
|
||||
interface EventHandlerMock {
|
||||
public function writeCallback(): void;
|
||||
public function postWriteCallback(): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class File
|
||||
*
|
||||
@@ -830,7 +822,9 @@ class FileTest extends TestCase {
|
||||
|
||||
$wasLockedPre = false;
|
||||
$wasLockedPost = false;
|
||||
$eventHandler = $this->createMock(EventHandlerMock::class);
|
||||
$eventHandler = $this->getMockBuilder(\stdclass::class)
|
||||
->addMethods(['writeCallback', 'postWriteCallback'])
|
||||
->getMock();
|
||||
|
||||
// both pre and post hooks might need access to the file,
|
||||
// so only shared lock is acceptable
|
||||
|
||||
@@ -97,7 +97,7 @@ class FileSearchBackendTest extends TestCase {
|
||||
'name',
|
||||
'foo'
|
||||
),
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
[],
|
||||
$this->user
|
||||
@@ -126,7 +126,7 @@ class FileSearchBackendTest extends TestCase {
|
||||
'mimetype',
|
||||
'foo'
|
||||
),
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
[],
|
||||
$this->user
|
||||
@@ -155,7 +155,7 @@ class FileSearchBackendTest extends TestCase {
|
||||
'size',
|
||||
10
|
||||
),
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
[],
|
||||
$this->user
|
||||
@@ -184,7 +184,7 @@ class FileSearchBackendTest extends TestCase {
|
||||
'mtime',
|
||||
10
|
||||
),
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
[],
|
||||
$this->user
|
||||
@@ -213,7 +213,7 @@ class FileSearchBackendTest extends TestCase {
|
||||
'mimetype',
|
||||
FileInfo::MIMETYPE_FOLDER
|
||||
),
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
[],
|
||||
$this->user
|
||||
|
||||
@@ -35,30 +35,21 @@ OC.L10N.register(
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan inte läsa denna filen, troligen är det en delad fil. Vänligen be ägaren att åter dela filen med dig.",
|
||||
"Default Encryption Module" : "Standardmodul för kryptering",
|
||||
"Default encryption module for Nextcloud Server-side Encryption (SSE)" : "Standardkrypteringsmodul för Nextcloud serverbaserad kryptering (SSE)",
|
||||
"This app provides the (default) cryptography implementation for Nextcloud's Server-side Encryption (SSE) feature.\n\n\t\t\t**Encryption Details**\n\t\t\t* **Cipher Mode:** AES-256-CTR (default)\n\t\t\t* **Authentication:** HMAC-SHA256\n\n\t\t\t**Important Warnings**\n\t\t\t* **DANGER:** Do not disable this application until all files have been decrypted (`occ encryption:decrypt-all`).\n\t\t\t* **WARNING**: Reverting to non-encrypted file storage after activation requires command-line access. The action is permanent via the Web UI.\"\n\n\t\t\t**Notes for Existing Files**\n\t\t\t* By default, enabling SSE does not encrypt existing files; only new files will be encrypted.\n\t\t\t* To encrypt all existing files, use the command `occ encryption:encrypt-all`.\n\n\t\t\t**Before You Begin**\n\t\t\t* **Read the Documentation:** Before you enable SSE, encrypt existing files, or disable SSE, it is critical to\n\t\t\t\tread the documentation to understand implications and the appropriate procedures to avoid data loss." : "Denna app tillhandahåller den (standard) kryptografiska implementeringen för Nextclouds funktion för serversidig kryptering (SSE).\n\n**Krypteringsdetaljer**\n* **Krypteringsläge:** AES-256-CTR (standard)\n* **Autentisering:** HMAC-SHA256\n\n**Viktiga varningar**\n* **FARA:** Inaktivera inte denna applikation förrän alla filer har dekrypterats (`occ encryption:decrypt-all`).\n* **VARNING**: För att återgå till icke-krypterad fillagring efter aktivering krävs åtkomst via kommandoraden. Åtgärden är permanent via webbgränssnittet.\n\n**Anmärkningar för befintliga filer**\n* Som standard krypteras inte befintliga filer när SSE aktiveras; endast nya filer krypteras.\n* Använd kommandot `occ encryption:encrypt-all` för att kryptera alla befintliga filer.\n\n**Innan du börjar**\n* **Läs dokumentationen:** Innan du aktiverar SSE, krypterar befintliga filer eller inaktiverar SSE är det viktigt att\nläsa dokumentationen för att förstå konsekvenserna och de lämpliga procedurerna för att undvika dataförlust.",
|
||||
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av det här alternativet krypterar alla filer som är lagrade på huvudlagringsplatsen, annars kommer bara filer på extern lagringsplats att krypteras",
|
||||
"Encrypt the home storage" : "Kryptera alla filer i molnet",
|
||||
"Disable recovery key" : "Inaktivera återställningsnyckel",
|
||||
"Enable recovery key" : "Aktivera återställningsnyckel",
|
||||
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "Återställningsnyckeln är en extra krypteringsnyckel som används för att kryptera filer. Den används för att återställa filer från ett konto om lösenordet glöms bort.",
|
||||
"Recovery key password" : "Ange lösenord",
|
||||
"Passwords fields do not match" : "Lösenorden matchar inte",
|
||||
"Repeat recovery key password" : "Repetera lösenord",
|
||||
"An error occurred while updating the recovery key settings. Please try again." : "Ett fel uppstod vid uppdateringen av inställningarna för återställningsnyckeln. Försök igen.",
|
||||
"Change recovery key password" : "Ändra lösenordet för återställningsnyckeln",
|
||||
"Old recovery key password" : "Gammalt lösenord",
|
||||
"New recovery key password" : "Nytt lösenord",
|
||||
"Repeat new recovery key password" : "Repetera lösenord",
|
||||
"An error occurred while changing the recovery key password. Please try again." : "Ett fel uppstod när lösenordet för återställningsnyckeln skulle ändras. Försök igen.",
|
||||
"Update private key password" : "Uppdatera lösenordet för den privata nyckeln",
|
||||
"Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password." : "Lösenordet till din privata nyckel stämmer inte längre överens med ditt inloggningslösenord. Ändra lösenordet till din privata nyckel så att det blir detsamma som ditt nuvarande inloggningslösenord.",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "Om du inte kommer ihåg ditt gamla lösenord kan du be din administratör att återställa dina filer.",
|
||||
"Old log-in password" : "Gammalt inloggningslösenord",
|
||||
"Current log-in password" : "Nuvarande inloggningslösenord",
|
||||
"Update" : "Uppdatera",
|
||||
"Updating recovery keys. This can take some time…" : "Uppdaterar återställningsnycklar. Det kan ta en stund…",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Om du aktiverar det här alternativet kan du återställa åtkomst till dina krypterade filer vid lösenordsförlust",
|
||||
"Enable password recovery" : "Aktivera återställning av lösenord",
|
||||
"Default encryption module" : "Krypteringsfunktion",
|
||||
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsappen är aktiverad men dina krypteringsnycklar är inte initialiserade, vänligen logga ut och logga in igen.",
|
||||
"Basic encryption module" : "Kryptering",
|
||||
@@ -72,7 +63,6 @@ OC.L10N.register(
|
||||
"Update Private Key Password" : "Uppdatera lösenordet för din privata nyckel",
|
||||
"Enable password recovery:" : "Aktivera lösenordsåterställning:",
|
||||
"Enabled" : "Aktiverad",
|
||||
"Disabled" : "Inaktiverad",
|
||||
"This app provides the (default) cryptography implementation for Nextcloud's Server-side Encryption (SSE) feature.\n\n\t\t\t**Encryption Details**\n\t\t\t* **Cipher Mode:** AES-256-CTR (default)\n\t\t\t* **Authentication:** HMAC-SHA256\n\n\t\t\t**Important Warnings**\n\t\t\t* **DANGER:** Do not disable this application until all files have been decrypted (`occ encryption:decrypt-all`).\n\t\t\t* **WARNING**: Reverting to non-encrypted file storage after activation requires command-line access. The action is permanent via the Web UI.\"\n\n\t\t\t**Notes for Existing Files**\n\t\t\t* By default, enabling SSE does not encrypt existing files; only new files will be encrypted.\n\t\t\t* To encrypt all existing files, use the command `occ encryption:encrypt-all`.\n\n\t\t\t**Before You Begin**\n\t\t\t* **Read the Documentation:** Before you enable SSE, encrypt existing files, or disable SSE, it is critical to \n\t\t\t\tread the documentation to understand implications and the appropriate procedures to avoid data loss." : "Denna app tillhandahåller den (standard) kryptografiska implementeringen för Nextclouds funktion för serversidig kryptering (SSE).\n\n**Krypteringsdetaljer**\n* **Krypteringsläge:** AES-256-CTR (standard)\n* **Autentisering:** HMAC-SHA256\n\n**Viktiga varningar**\n* **FARA:** Inaktivera inte denna applikation förrän alla filer har dekrypterats (`occ encryption:decrypt-all`).\n* **VARNING**: För att återgå till icke-krypterad fillagring efter aktivering krävs åtkomst via kommandoraden. Åtgärden är permanent via webbgränssnittet.\n\n**Anmärkningar för befintliga filer**\n* Som standard krypteras inte befintliga filer när SSE aktiveras; endast nya filer krypteras.\n* Använd kommandot `occ encryption:encrypt-all` för att kryptera alla befintliga filer.\n\n**Innan du börjar**\n* **Läs dokumentationen:** Innan du aktiverar SSE, krypterar befintliga filer eller inaktiverar SSE är det viktigt att \nläsa dokumentationen för att förstå konsekvenserna och de lämpliga procedurerna för att undvika dataförlust."
|
||||
"Disabled" : "Inaktiverad"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user