Compare commits
325 Commits
fix/share-
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16867587d3 | ||
|
|
f8dbe2349a | ||
|
|
0b74ccd426 | ||
|
|
a2bb782f66 | ||
|
|
b2fef6a112 | ||
|
|
a8345b1da7 | ||
|
|
43c5fd3f76 | ||
|
|
d407cdd861 | ||
|
|
0c5e1b2ee3 | ||
|
|
8fad0ceffc | ||
|
|
c181720a89 | ||
|
|
4841e6ee63 | ||
|
|
52ce67b799 | ||
|
|
3c3cbd16b5 | ||
|
|
14472cb8cc | ||
|
|
033e78e587 | ||
|
|
909ff0e4f1 | ||
|
|
8ea3fba96e | ||
|
|
f445c14b76 | ||
|
|
17c223efbf | ||
|
|
94774ca5c3 | ||
|
|
c96099183e | ||
|
|
00609572e4 | ||
|
|
3cd3c6dd90 | ||
|
|
e96a89e630 | ||
|
|
1219c8e152 | ||
|
|
e3e499a63a | ||
|
|
9ff0adf239 | ||
|
|
d6ee1eafa3 | ||
|
|
c835064a6b | ||
|
|
5b7ea4e858 | ||
|
|
d3ef95c78f | ||
|
|
e761005e52 | ||
|
|
415ecb1cf5 | ||
|
|
a30653c6cb | ||
|
|
48c3933cb6 | ||
|
|
d02df72efe | ||
|
|
9fd6c4abc1 | ||
|
|
680ddd93c2 | ||
|
|
72812b2b07 | ||
|
|
2d91bdd74c | ||
|
|
053f725f98 | ||
|
|
0b5ce4e78a | ||
|
|
2fd8961b85 | ||
|
|
9d70509221 | ||
|
|
29628eba33 | ||
|
|
b060efaca4 | ||
|
|
13583e8c6b | ||
|
|
0526c18ac2 | ||
|
|
239c8ccfe1 | ||
|
|
b9e4a2a115 | ||
|
|
1ed4f74551 | ||
|
|
66881a7cc9 | ||
|
|
a58a2961f3 | ||
|
|
044f4f076e | ||
|
|
3f6d0c4192 | ||
|
|
c61b17f4a0 | ||
|
|
bb0841b81e | ||
|
|
3f52005674 | ||
|
|
51cde1a57a | ||
|
|
c20fcccfa6 | ||
|
|
3f539d78e3 | ||
|
|
f34d7bef6a | ||
|
|
faff52dff2 | ||
|
|
5852eaae0b | ||
|
|
67deefe3fb | ||
|
|
14ae3f1a65 | ||
|
|
83e464c3e8 | ||
|
|
ed51f10b73 | ||
|
|
763a52e2fc | ||
|
|
58ad5b1a80 | ||
|
|
c5e3677d28 | ||
|
|
b012e5cc16 | ||
|
|
52d092da64 | ||
|
|
bf729c53d7 | ||
|
|
1afeb1c2d3 | ||
|
|
9a24eaa275 | ||
|
|
fc18ce9cae | ||
|
|
137e94bec2 | ||
|
|
8c55673a25 | ||
|
|
645350d4b2 | ||
|
|
1b241388ee | ||
|
|
71aa36860f | ||
|
|
92e4c882fc | ||
|
|
b7d6822592 | ||
|
|
ae45f67a75 | ||
|
|
521e61828f | ||
|
|
708fa13428 | ||
|
|
5a8292fe43 | ||
|
|
c0cab68f8b | ||
|
|
1a2d36af39 | ||
|
|
60d71a99e2 | ||
|
|
532ba405cf | ||
|
|
ca3f77bea2 | ||
|
|
95e94556e1 | ||
|
|
28724fe496 | ||
|
|
f637e1c6a2 | ||
|
|
c5f4ac1253 | ||
|
|
baec1727b3 | ||
|
|
b3fa62fc3d | ||
|
|
d3e5a764ba | ||
|
|
456684f138 | ||
|
|
04c12502d1 | ||
|
|
1bbceea598 | ||
|
|
661739c9d7 | ||
|
|
03c318d730 | ||
|
|
0317e002f3 | ||
|
|
3539476d12 | ||
|
|
966db54089 | ||
|
|
b76cdd09cc | ||
|
|
921ee17026 | ||
|
|
7eae0e5f8c | ||
|
|
b7150ad88c | ||
|
|
eedd8dce3c | ||
|
|
ac9c17c7b8 | ||
|
|
78098c8325 | ||
|
|
d03604a887 | ||
|
|
e8c47cf3ec | ||
|
|
324ebd144c | ||
|
|
e26588d78c | ||
|
|
c56ebcecb2 | ||
|
|
3aa22804e1 | ||
|
|
4edf863803 | ||
|
|
b87d71c4e5 | ||
|
|
99a8e6c3c4 | ||
|
|
bb1ad1ca15 | ||
|
|
7eb0ba9feb | ||
|
|
530b635cea | ||
|
|
84112d8fc7 | ||
|
|
f6379da3a1 | ||
|
|
560ea9abe7 | ||
|
|
e0c1b74419 | ||
|
|
047a758a31 | ||
|
|
d5cc1ad2ca | ||
|
|
36e4de2552 | ||
|
|
5a9fa36bb1 | ||
|
|
9e9cccd9ec | ||
|
|
533125defc | ||
|
|
6ba57a70a9 | ||
|
|
266dfbce24 | ||
|
|
820e0915e9 | ||
|
|
1c33307a59 | ||
|
|
22c75f5b25 | ||
|
|
0cd74df34e | ||
|
|
6e88edb0a6 | ||
|
|
33e35afad2 | ||
|
|
6d26c71b48 | ||
|
|
19b0c911aa | ||
|
|
af8cb33a40 | ||
|
|
d6e6525861 | ||
|
|
5acf3878f3 | ||
|
|
810d8b4c98 | ||
|
|
545a9c1c73 | ||
|
|
32a264842f | ||
|
|
7ccc7a69f7 | ||
|
|
85b851a7df | ||
|
|
330ae40ecf | ||
|
|
b400f1b93b | ||
|
|
78513504ca | ||
|
|
d89da91a56 | ||
|
|
7040916f96 | ||
|
|
9756097e28 | ||
|
|
5ce08e9704 | ||
|
|
f573285040 | ||
|
|
b119cace4f | ||
|
|
2c560b0837 | ||
|
|
4e0217ef13 | ||
|
|
17d60a4af0 | ||
|
|
3a5c445c78 | ||
|
|
04ee3aff1a | ||
|
|
3aa2e130cd | ||
|
|
b71661a38b | ||
|
|
5b86c7a402 | ||
|
|
e2dc439c71 | ||
|
|
c86e2d1e67 | ||
|
|
f5faddaf31 | ||
|
|
99a26b0a97 | ||
|
|
aaf2ded381 | ||
|
|
c8dbc73017 | ||
|
|
a71584ee96 | ||
|
|
bf24b24841 | ||
|
|
f8cc0adefb | ||
|
|
d1fd735698 | ||
|
|
1e2f273c09 | ||
|
|
9b504039f4 | ||
|
|
0ff7ad3535 | ||
|
|
8f7b0b4264 | ||
|
|
c08592de28 | ||
|
|
005b2b04e8 | ||
|
|
63a4778744 | ||
|
|
ca245b4cc6 | ||
|
|
309d12abe1 | ||
|
|
7e9e1269a0 | ||
|
|
861f9bdb31 | ||
|
|
a375265111 | ||
|
|
7fe3d1c6a0 | ||
|
|
0cf140e903 | ||
|
|
3d27f8d288 | ||
|
|
52dac4be2b | ||
|
|
252e24b83d | ||
|
|
b7bdd76731 | ||
|
|
00100427be | ||
|
|
2ae66ff888 | ||
|
|
6594d54476 | ||
|
|
9b125a7605 | ||
|
|
eb06a5628f | ||
|
|
2a5e57d2f4 | ||
|
|
9b605de474 | ||
|
|
48ce8c3fa1 | ||
|
|
3925176b49 | ||
|
|
981978d960 | ||
|
|
282e6b707a | ||
|
|
5bcac61c73 | ||
|
|
8225ab726f | ||
|
|
62f3ea390e | ||
|
|
d677a3a5e2 | ||
|
|
04d9f79985 | ||
|
|
8fa69c1c29 | ||
|
|
f2c73ebffd | ||
|
|
5a7d38b22c | ||
|
|
e4c2a1d218 | ||
|
|
e367c5a928 | ||
|
|
5c935429ef | ||
|
|
c88a1d3961 | ||
|
|
9b84a0ec19 | ||
|
|
b256928385 | ||
|
|
8032ad83b3 | ||
|
|
6b49aa792b | ||
|
|
cd2d09de64 | ||
|
|
2c068f3683 | ||
|
|
1398c598cf | ||
|
|
614afec231 | ||
|
|
3fcb3a962d | ||
|
|
5961eba6a1 | ||
|
|
6f7961f5ce | ||
|
|
69db28c7ec | ||
|
|
18f03f69b4 | ||
|
|
f34513d8ad | ||
|
|
9beed5c8fe | ||
|
|
50c37e300c | ||
|
|
730db45c26 | ||
|
|
eec757fc2e | ||
|
|
5bc0ba6a51 | ||
|
|
1ed0769d4c | ||
|
|
cde3780f01 | ||
|
|
4a88f9316b | ||
|
|
e17f7aa92d | ||
|
|
9d8bab02fc | ||
|
|
8bd63c5fe2 | ||
|
|
e53c124ecc | ||
|
|
5f658d9eae | ||
|
|
bd0784e056 | ||
|
|
23569000a8 | ||
|
|
4b2a77b1ff | ||
|
|
6346b9c884 | ||
|
|
6a88c86a54 | ||
|
|
9da1e46def | ||
|
|
24550e5aac | ||
|
|
1c1bd469b8 | ||
|
|
fafc55c039 | ||
|
|
f5040be492 | ||
|
|
ce009c4f95 | ||
|
|
c1251e0292 | ||
|
|
753e6ee442 | ||
|
|
df0f570802 | ||
|
|
c107cd4555 | ||
|
|
38278d172f | ||
|
|
7df1d3683d | ||
|
|
4ac7bec175 | ||
|
|
1493d30f14 | ||
|
|
b59fcd4c32 | ||
|
|
9fee8d4dfe | ||
|
|
7434af87c2 | ||
|
|
784a2adb87 | ||
|
|
d0c63a1753 | ||
|
|
5e93c58795 | ||
|
|
7cdbb38d52 | ||
|
|
28bb7305c0 | ||
|
|
c5e9a1598a | ||
|
|
e7f8950d65 | ||
|
|
0cb96fb77d | ||
|
|
9e7e32f0c7 | ||
|
|
5c1b58c380 | ||
|
|
9e65c597fe | ||
|
|
f4c6b26e7b | ||
|
|
e045bb9f2b | ||
|
|
7c61e06b74 | ||
|
|
e4ab89d5b2 | ||
|
|
a51d74407a | ||
|
|
ad5e709f7f | ||
|
|
b1517d8938 | ||
|
|
549b081f2f | ||
|
|
e46b967b53 | ||
|
|
de9852eca4 | ||
|
|
9cc334312b | ||
|
|
118ca6a94b | ||
|
|
95f22bc48d | ||
|
|
7cb4b4bbdb | ||
|
|
2c68e65e19 | ||
|
|
3d0234bb2e | ||
|
|
e01440af96 | ||
|
|
b5d8a97128 | ||
|
|
0af21b72ae | ||
|
|
7eedf9c713 | ||
|
|
85f9a593a4 | ||
|
|
97ceffcbb4 | ||
|
|
43c8d2de30 | ||
|
|
bf58238b5f | ||
|
|
82ee720335 | ||
|
|
7af11b4315 | ||
|
|
f20789fb9d | ||
|
|
0c5feae8d0 | ||
|
|
f01ba2de0f | ||
|
|
db3ff20ce9 | ||
|
|
3f27ba3aac | ||
|
|
3d6d38a2fb | ||
|
|
b964ca5394 | ||
|
|
649f333c89 | ||
|
|
cc99dd8fd9 | ||
|
|
a77040f41e | ||
|
|
5fdebf923c | ||
|
|
4b203e5f7b | ||
|
|
629740d935 | ||
|
|
101819821a | ||
|
|
62ab29960f |
8
.github/CODEOWNERS
vendored
8
.github/CODEOWNERS
vendored
@@ -24,7 +24,7 @@ package.json @nextcloud/server-dependabot @next
|
||||
package-lock.json @nextcloud/server-dependabot
|
||||
|
||||
# App maintainers
|
||||
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
|
||||
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @samin-z
|
||||
/apps/cloud_federation_api/appinfo/info.xml @nfebe @mejo-
|
||||
/apps/comments/appinfo/info.xml @edward-ly @sorbaugh
|
||||
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
|
||||
@@ -46,16 +46,16 @@ package-lock.json @nextcloud/server-dependabot
|
||||
/apps/files_versions/appinfo/info.xml @artonge @icewind1991
|
||||
/apps/oauth2/appinfo/info.xml @julien-nc @ChristophWurst
|
||||
/apps/provisioning_api/appinfo/info.xml @provokateurin @nickvergessen
|
||||
/apps/settings/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
|
||||
/apps/settings/appinfo/info.xml @hweihwang @sorbaugh
|
||||
/apps/sharebymail/appinfo/info.xml @Altahrim @skjnldsv
|
||||
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
|
||||
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
|
||||
/apps/twofactor_backupcodes/appinfo/info.xml @miaulalala @ChristophWurst
|
||||
/apps/updatenotification/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
|
||||
/apps/updatenotification/appinfo/info.xml @enjeck @sorbaugh
|
||||
/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 @come-nc @julien-nc
|
||||
/apps/webhook_listeners/appinfo/info.xml @janepie @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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -74,6 +74,9 @@ jobs:
|
||||
autocheckers:
|
||||
runs-on: ubuntu-latest-low
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.2']
|
||||
@@ -88,7 +91,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -125,4 +128,4 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.autocheckers.result != 'success' || (needs.changes.outputs.src != 'false' && needs.autoloader.result != 'success') }}; then exit 1; fi
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && (needs.autocheckers.result != 'success' || needs.autoloader.result != 'success') }}; then exit 1; fi
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check requirement
|
||||
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
|
||||
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
config-file: ./.github/codeql-config.yml
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
|
||||
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
|
||||
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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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,6 +14,7 @@ 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')
|
||||
@@ -27,8 +28,25 @@ 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: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
|
||||
if: steps.get-pr.outputs.head_repo != github.repository
|
||||
run: |
|
||||
echo 'Can not execute /update-3rdparty on forks'
|
||||
exit 1
|
||||
@@ -46,24 +64,17 @@ jobs:
|
||||
ref: ${{ steps.comment-branch.outputs.head_ref }}
|
||||
|
||||
- name: Register server reference to fallback to master branch
|
||||
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');
|
||||
}
|
||||
}
|
||||
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
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
|
||||
17
.github/workflows/cypress.yml
vendored
17
.github/workflows/cypress.yml
vendored
@@ -41,12 +41,6 @@ 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:
|
||||
@@ -72,7 +66,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -160,7 +154,7 @@ jobs:
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
@@ -171,15 +165,11 @@ jobs:
|
||||
run: ./node_modules/cypress/bin/cypress install
|
||||
|
||||
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
|
||||
uses: cypress-io/github-action@bc22e01685c56e89e7813fd8e26f33dc47f87e15 # v7.1.5
|
||||
uses: cypress-io/github-action@783cb3f07983868532cabaedaa1e6c00ff4786a8 # v7.1.9
|
||||
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 }}
|
||||
@@ -188,7 +178,6 @@ 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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -73,11 +73,11 @@ jobs:
|
||||
- name: Set up sftpd
|
||||
run: |
|
||||
sudo mkdir /tmp/sftp
|
||||
sudo chown -R 0777 /tmp/sftp
|
||||
sudo chmod -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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-sftp
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@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 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 Python
|
||||
uses: LizardByte/actions/actions/setup_python@70bb8d394d1c92f6113aeec6ae9cc959a5763d15 # v2026.227.200013
|
||||
with:
|
||||
python-version: '2.7'
|
||||
- name: Set up Python
|
||||
uses: LizardByte/actions/actions/setup_python@0affa4f7bcb27562658960eee840eff8ff844578 # v2026.328.161128
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -95,7 +95,6 @@ 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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -44,6 +44,9 @@ jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
name: php-cs
|
||||
|
||||
steps:
|
||||
@@ -53,7 +56,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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,9 +18,37 @@ 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:
|
||||
@@ -37,7 +65,7 @@ jobs:
|
||||
fallbackNpm: '^11.3'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -51,3 +79,18 @@ 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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -83,14 +83,11 @@ 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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
|
||||
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
@@ -111,7 +111,6 @@ 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
|
||||
@@ -123,7 +122,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
|
||||
15
.github/workflows/performance.yml
vendored
15
.github/workflows/performance.yml
vendored
@@ -15,7 +15,13 @@ jobs:
|
||||
performance-testing:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
# 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
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
@@ -28,11 +34,6 @@ 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
|
||||
@@ -42,7 +43,7 @@ jobs:
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
3
.github/workflows/phpunit-32bits.yml
vendored
3
.github/workflows/phpunit-32bits.yml
vendored
@@ -9,6 +9,7 @@ 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"
|
||||
@@ -56,4 +57,4 @@ jobs:
|
||||
- name: PHPUnit
|
||||
uses: docker://ghcr.io/nextcloud/continuous-integration-php8.4-32bit:latest
|
||||
with:
|
||||
args: /bin/sh -c "composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness"
|
||||
args: /bin/sh -c "composer run test -- --exclude-group PRIMARY-azure --exclude-group PRIMARY-s3 --exclude-group PRIMARY-swift --exclude-group Memcached --exclude-group Redis --exclude-group RoutingWeirdness"
|
||||
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
with:
|
||||
files: ./clover.nodb.xml
|
||||
flags: phpunit-nodb
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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
|
||||
run: composer run test:db -- --log-junit junit.xml
|
||||
|
||||
- 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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
|
||||
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
||||
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@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.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,10 +13,34 @@ 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
|
||||
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -26,7 +50,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.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
|
||||
@@ -43,3 +67,17 @@ 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,10 +21,35 @@ 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
|
||||
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -34,7 +59,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -56,7 +81,8 @@ jobs:
|
||||
static-code-analysis-security:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
permissions:
|
||||
security-events: write
|
||||
@@ -69,7 +95,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -88,14 +114,15 @@ jobs:
|
||||
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3
|
||||
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v3
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -105,7 +132,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -127,7 +154,8 @@ jobs:
|
||||
static-code-analysis-ncu:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -137,7 +165,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
timeout-minutes: 5
|
||||
with:
|
||||
php-version: '8.2'
|
||||
@@ -155,7 +183,8 @@ jobs:
|
||||
static-code-analysis-strict:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
needs: changes
|
||||
if: ${{ needs.changes.outputs.src != 'false' && github.event_name != 'push' && github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -165,7 +194,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 #v2.36.0
|
||||
uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f #v2.37.0
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -178,3 +207,28 @@ 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/${{ matrix.branches }}-update-min-supported-desktop-version"
|
||||
branch: "automated/noid/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: e1dc48ae9d...f3f66d0662
7
apps/admin_audit/l10n/bn_BD.js
Normal file
7
apps/admin_audit/l10n/bn_BD.js
Normal file
@@ -0,0 +1,7 @@
|
||||
OC.L10N.register(
|
||||
"admin_audit",
|
||||
{
|
||||
"Auditing / Logging" : "নিরীক্ষা",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "নেক্সটক্লাউডের নিরীক্ষামূলক সক্ষমতা প্রদান করে যেমন লগিং ফাইল অ্যাক্সেস বা অন্য কোনো জরুরী পদক্ষেপসমূহ"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
5
apps/admin_audit/l10n/bn_BD.json
Normal file
5
apps/admin_audit/l10n/bn_BD.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{ "translations": {
|
||||
"Auditing / Logging" : "নিরীক্ষা",
|
||||
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "নেক্সটক্লাউডের নিরীক্ষামূলক সক্ষমতা প্রদান করে যেমন লগিং ফাইল অ্যাক্সেস বা অন্য কোনো জরুরী পদক্ষেপসমূহ"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -32,6 +32,6 @@ OC.L10N.register(
|
||||
"Comment deleted" : "Kommentar gelöscht",
|
||||
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
|
||||
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -30,6 +30,6 @@
|
||||
"Comment deleted" : "Kommentar gelöscht",
|
||||
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
|
||||
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -32,6 +32,6 @@ OC.L10N.register(
|
||||
"Comment deleted" : "Kommentar gelöscht",
|
||||
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
|
||||
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
|
||||
"Write a comment …" : "Schreiben Sie einen Kommentar …"
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -30,6 +30,6 @@
|
||||
"Comment deleted" : "Kommentar gelöscht",
|
||||
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
|
||||
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
|
||||
"Write a comment …" : "Schreiben Sie einen Kommentar …"
|
||||
"Write a comment …" : "Einen Kommentar schreiben …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,32 +1,37 @@
|
||||
OC.L10N.register(
|
||||
"comments",
|
||||
{
|
||||
"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"
|
||||
"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 …" : "კომენტარის დაწერა …"
|
||||
},
|
||||
"nplurals=2; plural=(n!=1);");
|
||||
|
||||
@@ -1,30 +1,35 @@
|
||||
{ "translations": {
|
||||
"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"
|
||||
"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 …" : "კომენტარის დაწერა …"
|
||||
},"pluralForm" :"nplurals=2; plural=(n!=1);"
|
||||
}
|
||||
@@ -10,20 +10,28 @@ OC.L10N.register(
|
||||
"{author} commented on {file}" : "{author} pakomentavo {file}",
|
||||
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
|
||||
"Files" : "Failai",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
|
||||
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
|
||||
"Edit comment" : "Taisyti komentarą",
|
||||
"Delete comment" : "Ištrinti komentarą",
|
||||
"Cancel edit" : "Atsisakyti taisymo",
|
||||
"New comment" : "Naujas komentaras",
|
||||
"Write a comment …" : "Rašyti komentarą ...",
|
||||
"Post comment" : "Paskelbti komentarą",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
|
||||
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
|
||||
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
|
||||
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
|
||||
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
|
||||
"No more messages" : "Daugiau jokių pranešimų",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
|
||||
"Comment" : "Komentaras",
|
||||
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
|
||||
"Comment deleted" : "Komentaras ištrintas",
|
||||
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
|
||||
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
|
||||
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
|
||||
"Write a comment …" : "Rašyti komentarą..."
|
||||
},
|
||||
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
|
||||
|
||||
@@ -8,20 +8,28 @@
|
||||
"{author} commented on {file}" : "{author} pakomentavo {file}",
|
||||
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
|
||||
"Files" : "Failai",
|
||||
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
|
||||
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
|
||||
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
|
||||
"Edit comment" : "Taisyti komentarą",
|
||||
"Delete comment" : "Ištrinti komentarą",
|
||||
"Cancel edit" : "Atsisakyti taisymo",
|
||||
"New comment" : "Naujas komentaras",
|
||||
"Write a comment …" : "Rašyti komentarą ...",
|
||||
"Post comment" : "Paskelbti komentarą",
|
||||
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
|
||||
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
|
||||
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
|
||||
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
|
||||
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
|
||||
"No more messages" : "Daugiau jokių pranešimų",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
|
||||
"Comment" : "Komentaras",
|
||||
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
|
||||
"Comment deleted" : "Komentaras ištrintas",
|
||||
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
|
||||
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
|
||||
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
|
||||
"Write a comment …" : "Rašyti komentarą..."
|
||||
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
|
||||
}
|
||||
@@ -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 opmerking 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 reactie 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 commentaar …",
|
||||
"Write a comment …" : "Schrijf een reactie …",
|
||||
"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 opmerking 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 reactie 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 commentaar …",
|
||||
"Write a comment …" : "Schrijf een reactie …",
|
||||
"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,7 +34,8 @@ class LoadSidebarScripts implements IEventListener {
|
||||
$this->commentsManager->load();
|
||||
|
||||
$this->initialState->provideInitialState('activityEnabled', $this->appManager->isEnabledForUser('activity'));
|
||||
// Add comments sidebar tab script
|
||||
// Add comments sidebar tab script/style
|
||||
Util::addStyle(Application::APP_ID, 'comments-tab');
|
||||
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.js'
|
||||
import logger from '../logger.ts'
|
||||
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.js'
|
||||
import { isUsingActivityIntegration } from '../utils/activity.js'
|
||||
import logger from '../logger.ts'
|
||||
import { isUsingActivityIntegration } from '../utils/activity.ts'
|
||||
|
||||
export const action: IFileAction = {
|
||||
id: 'comments-unread',
|
||||
|
||||
@@ -4,46 +4,40 @@
|
||||
*/
|
||||
|
||||
import type { INode } from '@nextcloud/files'
|
||||
import type { App } from 'vue'
|
||||
|
||||
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
|
||||
import { createPinia } from 'pinia'
|
||||
import { createApp } from 'vue'
|
||||
import logger from './logger.ts'
|
||||
import { getComments } from './services/GetComments.ts'
|
||||
|
||||
/**
|
||||
* 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 (!ActivityTabPluginView) {
|
||||
if (!app) {
|
||||
const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue')
|
||||
// @ts-expect-error Types are broken for Vue2
|
||||
ActivityTabPluginView = Vue.extend(ActivityCommentAction)
|
||||
app = createApp(
|
||||
ActivityCommentAction,
|
||||
{
|
||||
reloadCallback: reload,
|
||||
resourceId: node.fileid,
|
||||
},
|
||||
)
|
||||
}
|
||||
ActivityTabPluginInstance = new ActivityTabPluginView({
|
||||
el,
|
||||
pinia,
|
||||
propsData: {
|
||||
reloadCallback: reload,
|
||||
resourceId: node.fileid,
|
||||
},
|
||||
})
|
||||
app.use(pinia)
|
||||
app.mount(el)
|
||||
logger.info('Comments plugin mounted in Activity sidebar action', { node })
|
||||
},
|
||||
unmount: () => {
|
||||
// destroy previous instance if available
|
||||
if (ActivityTabPluginInstance) {
|
||||
ActivityTabPluginInstance.$destroy()
|
||||
}
|
||||
app?.unmount()
|
||||
},
|
||||
})
|
||||
|
||||
@@ -57,26 +51,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 ComponentPublicInstance | undefined,
|
||||
_CommentsViewInstance: undefined as App | undefined,
|
||||
|
||||
timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),
|
||||
timestamp: Date.parse(comment.props?.creationDateTime as string | undefined ?? ''),
|
||||
|
||||
mount(element: HTMLElement, { reload }) {
|
||||
this._CommentsViewInstance = new CommentsViewObject({
|
||||
el: element,
|
||||
propsData: {
|
||||
const app = createApp(
|
||||
CommentView,
|
||||
{
|
||||
comment,
|
||||
resourceId: node.fileid,
|
||||
reloadCallback: reload,
|
||||
},
|
||||
})
|
||||
)
|
||||
app.mount(element)
|
||||
this._CommentsViewInstance = app
|
||||
},
|
||||
unmount() {
|
||||
this._CommentsViewInstance?.$destroy()
|
||||
this._CommentsViewInstance?.unmount()
|
||||
},
|
||||
}))
|
||||
})
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import logger from './logger.js'
|
||||
import CommentsInstance from './services/CommentsInstance.js'
|
||||
import logger from './logger.ts'
|
||||
import CommentsInstance from './services/CommentsInstance.ts'
|
||||
|
||||
// Init Comments
|
||||
if (window.OCA && !window.OCA.Comments) {
|
||||
@@ -13,7 +13,7 @@
|
||||
<!-- Author -->
|
||||
<NcAvatar
|
||||
class="comment__avatar"
|
||||
:display-name="actorDisplayName"
|
||||
:displayName="actorDisplayName"
|
||||
:user="actorId"
|
||||
:size="32" />
|
||||
</div>
|
||||
@@ -26,7 +26,7 @@
|
||||
<NcActions v-if="isOwnComment && id && !loading" class="comment__actions">
|
||||
<template v-if="!editing">
|
||||
<NcActionButton
|
||||
close-after-click
|
||||
closeAfterClick
|
||||
@click="onEdit">
|
||||
<template #icon>
|
||||
<IconPencilOutline :size="20" />
|
||||
@@ -35,7 +35,7 @@
|
||||
</NcActionButton>
|
||||
<NcActionSeparator />
|
||||
<NcActionButton
|
||||
close-after-click
|
||||
closeAfterClick
|
||||
@click="onDeleteWithUndo">
|
||||
<template #icon>
|
||||
<IconTrashCanOutline :size="20" />
|
||||
@@ -60,7 +60,7 @@
|
||||
v-else-if="creationDateTime"
|
||||
class="comment__timestamp"
|
||||
:timestamp="timestamp"
|
||||
:ignore-seconds="true" />
|
||||
:ignoreSeconds="true" />
|
||||
</div>
|
||||
|
||||
<!-- Message editor -->
|
||||
@@ -68,14 +68,14 @@
|
||||
<div class="comment__editor-group">
|
||||
<NcRichContenteditable
|
||||
ref="editor"
|
||||
:auto-complete="autoComplete"
|
||||
v-model="localMessage"
|
||||
:autoComplete
|
||||
:contenteditable="!loading"
|
||||
:label="editor ? t('comments', 'New comment') : t('comments', 'Edit comment')"
|
||||
:placeholder="t('comments', 'Write a comment …')"
|
||||
:model-value="localMessage"
|
||||
:user-data="userData"
|
||||
:userData
|
||||
aria-describedby="tab-comments__editor-description"
|
||||
@update:value="updateLocalMessage"
|
||||
@update:modelValue="submitted = false"
|
||||
@submit="onSubmit" />
|
||||
<div class="comment__submit">
|
||||
<NcButton
|
||||
@@ -103,8 +103,8 @@
|
||||
:class="{ 'comment__message--expanded': expanded }"
|
||||
:text="richContent.message"
|
||||
:arguments="richContent.mentions"
|
||||
use-markdown
|
||||
@click.native="onExpand" />
|
||||
useMarkdown
|
||||
@click="onExpand" />
|
||||
</div>
|
||||
</component>
|
||||
</template>
|
||||
@@ -113,6 +113,7 @@
|
||||
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'
|
||||
@@ -125,12 +126,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.js'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
|
||||
import CommentMixin from '../mixins/CommentMixin.ts'
|
||||
import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'
|
||||
|
||||
// Dynamic loading
|
||||
const NcRichContenteditable = () => import('@nextcloud/vue/components/NcRichContenteditable')
|
||||
const NcRichText = () => import('@nextcloud/vue/components/NcRichText')
|
||||
const NcRichContenteditable = defineAsyncComponent(() => import('@nextcloud/vue/components/NcRichContenteditable'))
|
||||
const NcRichText = defineAsyncComponent(() => import('@nextcloud/vue/components/NcRichText'))
|
||||
|
||||
export default {
|
||||
/* eslint vue/multi-word-component-names: "warn" */
|
||||
|
||||
@@ -4,17 +4,13 @@
|
||||
*/
|
||||
|
||||
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 wrap from '@vue/web-component-wrapper'
|
||||
import { createPinia, PiniaVuePlugin } from 'pinia'
|
||||
import Vue from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import { defineCustomElement } 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()) {
|
||||
@@ -32,17 +28,15 @@ if (isUsingActivityIntegration()) {
|
||||
async onInit() {
|
||||
const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue')
|
||||
|
||||
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 },
|
||||
const FilesSidebarTabElement = defineCustomElement(FilesSidebarTab, {
|
||||
configureApp(app) {
|
||||
const pinia = createPinia()
|
||||
app.use(pinia)
|
||||
},
|
||||
shadowRoot: false,
|
||||
})
|
||||
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
|
||||
get() { return this },
|
||||
})
|
||||
window.customElements.define(tagName, webComponent)
|
||||
|
||||
window.customElements.define(tagName, FilesSidebarTabElement)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
import { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'
|
||||
import { mapStores } from 'pinia'
|
||||
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'
|
||||
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'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
@@ -1,53 +0,0 @@
|
||||
/**
|
||||
* 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)
|
||||
}
|
||||
}
|
||||
94
apps/comments/src/services/CommentsInstance.ts
Normal file
94
apps/comments/src/services/CommentsInstance.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
/*!
|
||||
* 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.js'
|
||||
import { getRootPath } from '../utils/davUtils.ts'
|
||||
|
||||
// init webdav client
|
||||
const client = createClient(getRootPath())
|
||||
@@ -3,16 +3,16 @@
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import client from './DavClient.js'
|
||||
import client from './DavClient.ts'
|
||||
|
||||
/**
|
||||
* Delete a comment
|
||||
*
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {number} commentId the comment iD
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param commentId the comment iD
|
||||
*/
|
||||
export default async function(resourceType, resourceId, commentId) {
|
||||
export default async function(resourceType: string, resourceId: number, commentId: number) {
|
||||
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.js'
|
||||
import client from './DavClient.ts'
|
||||
|
||||
/**
|
||||
* Edit an existing comment
|
||||
*
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {number} commentId the comment iD
|
||||
* @param {string} message the message content
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param commentId the comment iD
|
||||
* @param message the message content
|
||||
*/
|
||||
export default async function(resourceType, resourceId, commentId, message) {
|
||||
export default async function(resourceType: string, resourceId: number, commentId: number, message: string) {
|
||||
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.js'
|
||||
import client from './DavClient.ts'
|
||||
|
||||
export const DEFAULT_LIMIT = 20
|
||||
|
||||
|
||||
@@ -5,24 +5,24 @@
|
||||
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import axios from '@nextcloud/axios'
|
||||
import { getRootPath } from '../utils/davUtils.js'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'
|
||||
import client from './DavClient.js'
|
||||
import { getRootPath } from '../utils/davUtils.ts'
|
||||
import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'
|
||||
import client from './DavClient.ts'
|
||||
|
||||
/**
|
||||
* Retrieve the comments list
|
||||
*
|
||||
* @param {string} resourceType the resource type
|
||||
* @param {number} resourceId the resource ID
|
||||
* @param {string} message the message
|
||||
* @return {object} the new comment
|
||||
* @param resourceType the resource type
|
||||
* @param resourceId the resource ID
|
||||
* @param message the message
|
||||
* @return The new comment
|
||||
*/
|
||||
export default async function(resourceType, resourceId, message) {
|
||||
export default async function(resourceType: string, resourceId: number, message: string) {
|
||||
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.js'
|
||||
import client from './DavClient.ts'
|
||||
|
||||
/**
|
||||
* Mark comments older than the date timestamp as read
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
/**
|
||||
* Creates a cancelable axios 'request object'.
|
||||
*
|
||||
* @param {Function} request the axios promise request
|
||||
* @return {object}
|
||||
* @param request the axios promise request
|
||||
* @return
|
||||
*/
|
||||
function cancelableRequest(request) {
|
||||
function cancelableRequest(request: (url: string, options?: Record<string, unknown>) => Promise<unknown>) {
|
||||
const controller = new AbortController()
|
||||
const signal = controller.signal
|
||||
|
||||
/**
|
||||
* Execute the request
|
||||
*
|
||||
* @param {string} url the url to send the request to
|
||||
* @param {object} [options] optional config for the request
|
||||
* @param url the url to send the request to
|
||||
* @param [options] optional config for the request
|
||||
*/
|
||||
const fetch = async function(url, options) {
|
||||
const fetch = async function(url: string, options?: Record<string, unknown>) {
|
||||
const response = await request(
|
||||
url,
|
||||
{ signal, ...options },
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {any} value -
|
||||
* @param {any} passes -
|
||||
* @param value - the string to decode
|
||||
* @param passes - the number of times to decode the string, default is 1
|
||||
*/
|
||||
export function decodeHtmlEntities(value, passes = 1) {
|
||||
export function decodeHtmlEntities(value: string, 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"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:autoComplete="autoComplete"
|
||||
:resourceType="resourceType"
|
||||
:editor="true"
|
||||
:user-data="userData"
|
||||
:resource-id="resourceId"
|
||||
:userData="userData"
|
||||
:resourceId="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.js'
|
||||
import CommentView from '../mixins/CommentView.js'
|
||||
import logger from '../logger.ts'
|
||||
import CommentView from '../mixins/CommentView.ts'
|
||||
|
||||
export default defineComponent({
|
||||
components: {
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
ref="comment"
|
||||
tag="li"
|
||||
v-bind="comment.props"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:autoComplete="autoComplete"
|
||||
:resourceType="resourceType"
|
||||
:message="commentMessage"
|
||||
:resource-id="resourceId"
|
||||
:user-data="genMentionsData(comment.props.mentions)"
|
||||
:resourceId="resourceId"
|
||||
:userData="genMentionsData(comment.props.mentions)"
|
||||
class="comments-activity"
|
||||
@delete="reloadCallback()" />
|
||||
</template>
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
<!-- Editor -->
|
||||
<Comment
|
||||
v-bind="editorData"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:editor="true"
|
||||
:user-data="userData"
|
||||
:resource-id="currentResourceId"
|
||||
editor
|
||||
:autoComplete
|
||||
:resourceType
|
||||
:userData
|
||||
:resourceId="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"
|
||||
:auto-complete="autoComplete"
|
||||
:resource-type="resourceType"
|
||||
:message.sync="comment.props.message"
|
||||
:resource-id="currentResourceId"
|
||||
:user-data="genMentionsData(comment.props.mentions)"
|
||||
:autoComplete
|
||||
:resourceType
|
||||
:resourceId="currentResourceId"
|
||||
:userData="genMentionsData(comment.props.mentions)"
|
||||
class="comments__list"
|
||||
@delete="onDelete" />
|
||||
</ul>
|
||||
@@ -79,15 +79,14 @@ 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.js'
|
||||
import logger from '../logger.ts'
|
||||
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.js'
|
||||
import cancelableRequest from '../utils/cancelableRequest.ts'
|
||||
|
||||
export default {
|
||||
/* eslint vue/multi-word-component-names: "warn" */
|
||||
name: 'Comments',
|
||||
name: 'CommentsApp',
|
||||
|
||||
components: {
|
||||
Comment,
|
||||
@@ -104,6 +103,8 @@ 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 Comments from './Comments.vue'
|
||||
import CommentsApp from './CommentsApp.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
node?: INode
|
||||
@@ -24,9 +24,9 @@ const resourceId = computed(() => props.node?.fileid)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Comments
|
||||
<CommentsApp
|
||||
v-if="resourceId !== undefined"
|
||||
:key="resourceId"
|
||||
:resource-id="resourceId"
|
||||
resource-type="files" />
|
||||
:resourceId="resourceId"
|
||||
resourceType="files" />
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,8 @@ OC.L10N.register(
|
||||
"contactsinteraction",
|
||||
{
|
||||
"Recently contacted" : "Paskiausiai susisiekta",
|
||||
"Contacts Interaction" : "Sąveika su adresatais"
|
||||
"Contacts Interaction" : "Sąveika su adresatais",
|
||||
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
|
||||
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
|
||||
},
|
||||
"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{ "translations": {
|
||||
"Recently contacted" : "Paskiausiai susisiekta",
|
||||
"Contacts Interaction" : "Sąveika su adresatais"
|
||||
"Contacts Interaction" : "Sąveika su adresatais",
|
||||
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
|
||||
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
|
||||
},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
|
||||
}
|
||||
@@ -3,6 +3,7 @@ OC.L10N.register(
|
||||
{
|
||||
"Dashboard" : "Skydelis",
|
||||
"Dashboard app" : "Skydelio programėlė",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Pradėkite dieną informuotai\n\n„Nextcloud“ ataskaitų sritis yra jūsų dienos atspirties taškas, kuriame pateikiama artėjančių susitikimų, skubių el. laiškų, pokalbių žinučių, gaunamų bilietų, naujausių tviterio žinučių ir daug daugiau apžvalga! Žmonės gali pridėti norimus valdiklius ir pakeisti foną pagal savo skonį.",
|
||||
"Weather" : "Orai",
|
||||
"Status" : "Būsena",
|
||||
"Good morning" : "Labas rytas",
|
||||
@@ -19,6 +20,7 @@ OC.L10N.register(
|
||||
"Edit widgets" : "Taisyti valdiklius",
|
||||
"Get more widgets from the App Store" : "Parsisiųsti įskiepių iš App Store",
|
||||
"Weather service" : "Orų tarnyba",
|
||||
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Dėl jūsų privatumo, {productName} serveris jūsų vardu užklausė orų duomenis, todėl orų tarnyba negauna jokios asmeninės informacijos.",
|
||||
"Weather data from Met.no" : "Orų duomenys iš Met.no",
|
||||
"geocoding with Nominatim" : "geografinis kodavimas naudojant Nominatim",
|
||||
"elevation data from OpenTopoData" : "aukščio duomenys iš OpenTopoData"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Skydelis",
|
||||
"Dashboard app" : "Skydelio programėlė",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Pradėkite dieną informuotai\n\n„Nextcloud“ ataskaitų sritis yra jūsų dienos atspirties taškas, kuriame pateikiama artėjančių susitikimų, skubių el. laiškų, pokalbių žinučių, gaunamų bilietų, naujausių tviterio žinučių ir daug daugiau apžvalga! Žmonės gali pridėti norimus valdiklius ir pakeisti foną pagal savo skonį.",
|
||||
"Weather" : "Orai",
|
||||
"Status" : "Būsena",
|
||||
"Good morning" : "Labas rytas",
|
||||
@@ -17,6 +18,7 @@
|
||||
"Edit widgets" : "Taisyti valdiklius",
|
||||
"Get more widgets from the App Store" : "Parsisiųsti įskiepių iš App Store",
|
||||
"Weather service" : "Orų tarnyba",
|
||||
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Dėl jūsų privatumo, {productName} serveris jūsų vardu užklausė orų duomenis, todėl orų tarnyba negauna jokios asmeninės informacijos.",
|
||||
"Weather data from Met.no" : "Orų duomenys iš Met.no",
|
||||
"geocoding with Nominatim" : "geografinis kodavimas naudojant Nominatim",
|
||||
"elevation data from OpenTopoData" : "aukščio duomenys iš OpenTopoData"
|
||||
|
||||
@@ -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" : "Weerberichten",
|
||||
"Weather service" : "Weer dienst",
|
||||
"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" : "Weerberichten",
|
||||
"Weather service" : "Weer dienst",
|
||||
"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,6 +202,7 @@ 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,12 +31,30 @@ class DashboardService {
|
||||
*/
|
||||
public function getLayout(): array {
|
||||
$systemDefault = $this->appConfig->getAppValueString('layout', 'recommendations,spreed,mail,calendar');
|
||||
return array_values(array_filter(
|
||||
return $this->sanitizeLayout(
|
||||
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 class="statuses">
|
||||
<ul v-if="sortedRegisteredStatus.length > 0" class="statuses">
|
||||
<li
|
||||
v-for="status in sortedRegisteredStatus"
|
||||
:id="'status-' + status"
|
||||
|
||||
@@ -44,6 +44,25 @@ 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\PermissionsMask;
|
||||
use OC\Files\Storage\Wrapper\DirPermissionsMask;
|
||||
use OC\Files\View;
|
||||
use OCA\DAV\Connector\LegacyPublicAuth;
|
||||
use OCA\DAV\Connector\Sabre\ServerFactory;
|
||||
@@ -98,7 +98,11 @@ $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 PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE]);
|
||||
return new DirPermissionsMask([
|
||||
'storage' => $storage,
|
||||
'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE,
|
||||
'path' => 'files'
|
||||
]);
|
||||
});
|
||||
Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) {
|
||||
return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]);
|
||||
|
||||
@@ -210,6 +210,7 @@ return array(
|
||||
'OCA\\DAV\\ConfigLexicon' => $baseDir . '/../lib/ConfigLexicon.php',
|
||||
'OCA\\DAV\\Connector\\LegacyDAVACL' => $baseDir . '/../lib/Connector/LegacyDAVACL.php',
|
||||
'OCA\\DAV\\Connector\\LegacyPublicAuth' => $baseDir . '/../lib/Connector/LegacyPublicAuth.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AddExtraHeadersPlugin' => $baseDir . '/../lib/Connector/Sabre/AddExtraHeadersPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => $baseDir . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AppleQuirksPlugin' => $baseDir . '/../lib/Connector/Sabre/AppleQuirksPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\Auth' => $baseDir . '/../lib/Connector/Sabre/Auth.php',
|
||||
|
||||
@@ -225,6 +225,7 @@ class ComposerStaticInitDAV
|
||||
'OCA\\DAV\\ConfigLexicon' => __DIR__ . '/..' . '/../lib/ConfigLexicon.php',
|
||||
'OCA\\DAV\\Connector\\LegacyDAVACL' => __DIR__ . '/..' . '/../lib/Connector/LegacyDAVACL.php',
|
||||
'OCA\\DAV\\Connector\\LegacyPublicAuth' => __DIR__ . '/..' . '/../lib/Connector/LegacyPublicAuth.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AddExtraHeadersPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AddExtraHeadersPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\AppleQuirksPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AppleQuirksPlugin.php',
|
||||
'OCA\\DAV\\Connector\\Sabre\\Auth' => __DIR__ . '/..' . '/../lib/Connector/Sabre/Auth.php',
|
||||
|
||||
@@ -236,6 +236,7 @@ OC.L10N.register(
|
||||
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) – zdá se, že soubor existuje",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) – zdá se, že soubor neexistuje",
|
||||
"Failed to get size for : %1$s" : "Nepodařilo se získat velikost pro: %1$s",
|
||||
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
|
||||
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
|
||||
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
|
||||
@@ -252,6 +253,7 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Dokončeno %s",
|
||||
"Due on %s by %s" : "Termín do %s od %s",
|
||||
"Due on %s" : "Termín do %s",
|
||||
"This is an example contact" : "Toto je kontakt pro ukázku",
|
||||
"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." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku – prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
|
||||
"Example event - open me!" : "Událost pro ukázku – otevřete ji!",
|
||||
"System Address Book" : "Systémový adresář kontaktů",
|
||||
|
||||
@@ -234,6 +234,7 @@
|
||||
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
|
||||
"Could not open file: %1$s (%2$d), file does seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) – zdá se, že soubor existuje",
|
||||
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s (%2$d) – zdá se, že soubor neexistuje",
|
||||
"Failed to get size for : %1$s" : "Nepodařilo se získat velikost pro: %1$s",
|
||||
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
|
||||
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
|
||||
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
|
||||
@@ -250,6 +251,7 @@
|
||||
"Completed on %s" : "Dokončeno %s",
|
||||
"Due on %s by %s" : "Termín do %s od %s",
|
||||
"Due on %s" : "Termín do %s",
|
||||
"This is an example contact" : "Toto je kontakt pro ukázku",
|
||||
"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." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku – prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
|
||||
"Example event - open me!" : "Událost pro ukázku – otevřete ji!",
|
||||
"System Address Book" : "Systémový adresář kontaktů",
|
||||
|
||||
@@ -204,6 +204,7 @@ 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",
|
||||
@@ -220,6 +221,7 @@ 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",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user