Compare commits

..

1 Commits

Author SHA1 Message Date
Git'Fellow 3040762a2b feat(updater): Allow to defined locked apps
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-09-13 15:30:41 +02:00
4248 changed files with 97620 additions and 139250 deletions
+44 -46
View File
@@ -4,35 +4,33 @@ ARG DEBIAN_FRONTEND=noninteractive
# PHP
RUN apt-get update -y && \
apt install -y apache2 vim software-properties-common sudo nano gnupg2 wget curl git \
lsb-release ca-certificates apt-transport-https && \
add-apt-repository ppa:ondrej/php -y && \
apt-get update -y
apt install -y apache2 vim software-properties-common sudo nano gnupg2
RUN apt-get install --no-install-recommends -y \
php8.4 \
php8.4-common \
php8.4-gd \
php8.4-zip \
php8.4-curl \
php8.4-xml \
php8.4-xmlrpc \
php8.4-mbstring \
php8.4-sqlite \
php8.4-xdebug \
php8.4-pgsql \
php8.4-intl \
php8.4-imagick \
php8.4-gmp \
php8.4-apcu \
php8.4-bcmath \
php8.4-redis \
php8.4-soap \
php8.4-imap \
php8.4-opcache \
php8.4-cli \
php8.4-dev \
php8.3 \
php8.3-common \
php8.3-gd \
php8.3-zip \
php8.3-curl \
php8.3-xml \
php8.3-xmlrpc \
php8.3-mbstring \
php8.3-sqlite \
php8.3-xdebug \
php8.3-pgsql \
php8.3-intl \
php8.3-imagick \
php8.3-gmp \
php8.3-apcu \
php8.3-bcmath \
php8.3-redis \
php8.3-soap \
php8.3-imap \
php8.3-opcache \
php8.3-cli \
php8.3-dev \
libmagickcore-6.q16-7-extra \
curl \
lsof \
make \
unzip
@@ -44,39 +42,39 @@ RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
rm /tmp/composer-setup.php /tmp/composer-setup.sig
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.4/cli/conf.d/20-apcu.ini
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.3/cli/conf.d/20-apcu.ini
# Autostart XDebug for apache
RUN { \
echo "xdebug.mode=debug"; \
echo "xdebug.start_with_request=yes"; \
} >> /etc/php/8.4/apache2/conf.d/20-xdebug.ini
} >> /etc/php/8.3/apache2/conf.d/20-xdebug.ini
# Increase PHP memory limit to 512mb
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4/apache2/php.ini
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.3/apache2/php.ini
# Docker CLI only (for controlling host Docker via socket)
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
# Docker
RUN apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable" && \
apt-get update -y && \
apt-get install -y docker-ce-cli && \
apt-get install -y docker-ce docker-ce-cli containerd.io && \
ln -s /var/run/docker-host.sock /var/run/docker.sock
# Dedicated DevContainer user runs Apache
ENV APACHE_RUN_USER=devcontainer
ENV APACHE_RUN_GROUP=devcontainer
# Delete any existing user/group with UID/GID 1000 first
RUN (getent passwd 1000 && userdel -r $(getent passwd 1000 | cut -d: -f1)) || true && \
(getent group 1000 && groupdel $(getent group 1000 | cut -d: -f1)) || true && \
groupadd -g 1000 ${APACHE_RUN_GROUP} && \
useradd -u 1000 -g 1000 -ms /bin/bash ${APACHE_RUN_USER} && \
RUN useradd -ms /bin/bash ${APACHE_RUN_USER} && \
adduser ${APACHE_RUN_USER} sudo && \
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
sed -ri "s/^export APACHE_RUN_USER=.*$/export APACHE_RUN_USER=${APACHE_RUN_USER}/" "/etc/apache2/envvars" && \
@@ -86,6 +84,6 @@ USER devcontainer
# NVM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 22'
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16'
WORKDIR /var/www/html
+1
View File
@@ -1,5 +1,6 @@
# SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
version: '3'
services:
nextclouddev:
build: .
+1 -6
View File
@@ -5,9 +5,4 @@
#
# Set git safe.directory
git config --global --add safe.directory /var/www/html
git config --global --add safe.directory /var/www/html/3rdparty
# Ensure devcontainer user has access to docker socket
if [ -S /var/run/docker.sock ]; then
sudo chmod 666 /var/run/docker.sock
fi
git config --global --add safe.directory /var/www/html/3rdparty
+14
View File
@@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
# Ignoring folders for eslint
node_modules/
3rdparty/
**/vendor/
**/l10n/
**/js/*
*.config.js
tests/lib/
apps-extra
# TODO: remove when comments files is not using handlebar templates anymore
apps/comments/src/templates.js
+60
View File
@@ -0,0 +1,60 @@
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
module.exports = {
globals: {
__webpack_nonce__: true,
_: true,
$: true,
dayNames: true,
escapeHTML: true,
firstDay: true,
moment: true,
oc_userconfig: true,
sinon: true,
},
plugins: [
'cypress',
],
extends: [
'@nextcloud/eslint-config/typescript',
'plugin:cypress/recommended',
],
rules: {
'comma-dangle': 'error',
'no-tabs': 'warn',
// TODO: make sure we fix this as this is bad vue coding style.
// Use proper sync modifier
'vue/no-mutating-props': 'warn',
'vue/custom-event-name-casing': ['error', 'kebab-case', {
// allows custom xxxx:xxx events formats
ignores: ['/^[a-z]+(?:-[a-z]+)*:[a-z]+(?:-[a-z]+)*$/u'],
}],
'vue/html-self-closing': 'error',
},
settings: {
jsdoc: {
mode: 'typescript',
},
'import/resolver': {
typescript: {}, // this loads <rootdir>/tsconfig.json to eslint
},
},
overrides: [
// Allow any in tests
{
files: ['**/*.spec.ts'],
rules: {
'@typescript-eslint/no-explicit-any': 'warn',
},
},
{
files: ['*.vue'],
rules: {
'no-irregular-whitespace': 'off',
'vue/no-irregular-whitespace': 'error',
},
},
],
}
-4
View File
@@ -19,7 +19,3 @@ af6de04e9e141466dc229e444ff3f146f4a34765
b06f5ba4c47450f355a8903c1a93ac68e8c6cfc2
# Update to coding-standard 1.4.0
5981b7eb512aa411f51cad541d01c5c6e93476f0
# Migrate `and` `or` operators to logical `&&` `||` operators
660f3f6fd1ae5539b8f74bfa48859d1b9f1e6abf
# Migrate to ESLint v9 enforced code style
91f3b6b4ee60e0f8bb6e21f92d5bc52e4cebe657
+11 -13
View File
@@ -15,8 +15,6 @@
**/js @nextcloud/server-frontend
**/src @nextcloud/server-frontend
*.js @nextcloud/server-frontend
*.cjs @nextcloud/server-frontend
*.mjs @nextcloud/server-frontend
*.ts @nextcloud/server-frontend
# dependency management
@@ -31,9 +29,9 @@ package-lock.json @nextcloud/server-dependabot
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
/apps/dashboard/appinfo/info.xml @julien-nc @juliusknorr
/apps/dav/lib/CalDAV @ChristophWurst @SebastianKrupinski @tcitworld
/apps/dav/lib/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/lib/CardDAV @hamza221 @SebastianKrupinski
/apps/dav/tests/unit/CalDAV @ChristophWurst @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CardDAV @hamza221 @SebastianKrupinski
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
@@ -50,7 +48,7 @@ package-lock.json @nextcloud/server-dependabot
/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/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
@@ -72,9 +70,9 @@ package-lock.json @nextcloud/server-dependabot
# Two-Factor Authentication
# https://github.com/nextcloud/wg-two-factor-authentication#members
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen @st3iny
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen @st3iny
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen @st3iny
# Limit login to IP
# Watch login routes for https://github.com/nextcloud/limit_login_to_ip
@@ -96,16 +94,16 @@ ResponseDefinitions.php @provokateurin @nextcloud/server-backend
*/Notifications/* @nickvergessen @nextcloud/talk-backend
# Groupware team
/build/integration/dav_features/caldav.feature @ChristophWurst @SebastianKrupinski @tcitworld
/build/integration/dav_features/caldav.feature @st3iny @SebastianKrupinski @tcitworld
/build/integration/dav_features/carddav.feature @hamza221 @SebastianKrupinski
/lib/private/Calendar @ChristophWurst @SebastianKrupinski @tcitworld
/lib/private/Calendar @st3iny @SebastianKrupinski @tcitworld
/lib/private/Contacts @hamza221 @SebastianKrupinski
/lib/public/Calendar @ChristophWurst @SebastianKrupinski @tcitworld
/lib/public/Calendar @st3iny @SebastianKrupinski @tcitworld
/lib/public/Contacts @hamza221 @SebastianKrupinski
# Desktop client teamn
/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php @nextcloud/desktop
# Personal interest
*/Activity/* @nickvergessen @nextcloud/server-backend
/apps/workflowengine/lib @nickvergessen @blizzz
*/Activity/* @nickvergessen @nextcloud/server-backend
/apps/workflowengine/lib @nickvergessen @blizzz
+42 -4
View File
@@ -38,10 +38,7 @@ updates:
# Main master npm frontend dependencies
- package-ecosystem: npm
directories:
- "/"
- "/build/frontend"
- "/build/frontend-legacy"
directory: "/"
schedule:
interval: weekly
day: saturday
@@ -124,6 +121,28 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
- package-ecosystem: composer
target-branch: stable30
directories:
- "/"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# frontend dependencies
- package-ecosystem: npm
target-branch: stable31
@@ -143,3 +162,22 @@ updates:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
- package-ecosystem: npm
target-branch: stable30
directory: "/"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
-2
View File
@@ -21,5 +21,3 @@
- [ ] Screenshots before/after for front-end changes
- [ ] Documentation ([manuals](https://github.com/nextcloud/documentation/) or wiki) has been updated or is not required
- [ ] [Backports requested](https://github.com/nextcloud/backportbot/#usage) where applicable (ex: critical bugfixes)
- [ ] [Labels added](https://github.com/nextcloud/server/labels) where applicable (ex: bug/enhancement, `3. to review`, feature component)
- [ ] [Milestone added](https://github.com/nextcloud/server/milestones) for target branch/version (ex: 32.x for `stable32`)
+2 -2
View File
@@ -46,7 +46,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
name: PHP checkers
@@ -75,7 +75,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
name: Translation and Files checkers
+3 -5
View File
@@ -32,18 +32,16 @@ jobs:
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
uses: actions/checkout@v5
- name: Initialize CodeQL
uses: github/codeql-action/init@5d5cd550d3e189c569da8f16ea8de2d821c9bf7a # v3.31.2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql-config.yml
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@5d5cd550d3e189c569da8f16ea8de2d821c9bf7a # v3.31.2
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
+1 -1
View File
@@ -124,7 +124,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
cache: npm
+14 -14
View File
@@ -72,7 +72,7 @@ jobs:
fallbackNpm: "^10"
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -102,8 +102,8 @@ jobs:
matrix:
# Run multiple copies of the current job in parallel
# Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
containers: ['setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the "setup" and GitHub does not allow math expressions
containers: ['component', 'setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the component and GitHub does not allow math expressions
# Always align this number with the total of e2e runners (max. index + 1)
total-containers: [10]
@@ -163,7 +163,7 @@ jobs:
path: ./
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.init.outputs.nodeVersion }}
@@ -194,7 +194,6 @@ jobs:
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 }}
SETUP_TESTING: ${{ matrix.containers == 'setup' && 'true' || '' }}
- name: Upload snapshots and videos
@@ -206,19 +205,20 @@ jobs:
cypress/snapshots
cypress/videos
- name: Show logs
- name: Extract NC logs
if: failure() && matrix.containers != 'component'
run: |
for id in $(docker ps -aq); do
docker container inspect "$id" --format '=== Logs for container {{.Name}} ==='
docker logs "$id" >> nextcloud.log
done
echo '=== Nextcloud server logs ==='
docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} cat data/nextcloud.log
run: docker logs nextcloud-cypress-tests_${{ env.APP_NAME }} > nextcloud.log
- name: Upload NC logs
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: failure() && matrix.containers != 'component'
with:
name: nc_logs_${{ matrix.containers }}
path: nextcloud.log
- name: Create data dir archive
if: failure() && matrix.containers != 'component'
run: docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} tar -cvjf - data > data.tar
run: docker exec nextcloud-cypress-tests_${{ env.APP_NAME }} tar -cvjf - data > data.tar
- name: Upload data dir archive
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+2 -2
View File
@@ -45,10 +45,10 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2', '8.4']
php-versions: ['8.1', '8.4']
ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
include:
- php-versions: '8.2'
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
+2 -2
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2', '8.4']
php-versions: ['8.1', '8.2', '8.4']
include:
- php-versions: '8.3'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -134,7 +134,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.2', '8.4']
php-versions: ['8.1', '8.2', '8.4']
include:
- php-versions: '8.3'
coverage: ${{ github.event_name != 'pull_request' }}
+2 -2
View File
@@ -45,10 +45,10 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2', '8.4']
php-versions: ['8.1', '8.4']
sftpd: ['openssh']
include:
- php-versions: '8.2'
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
name: php${{ matrix.php-versions }}-${{ matrix.sftpd }}
@@ -67,10 +67,10 @@ jobs:
- name: Pull images
run: |
docker pull ghcr.io/icewind1991/samba-krb-test-dc
docker pull ghcr.io/icewind1991/samba-krb-test-apache-gssapi:8.4
docker pull ghcr.io/icewind1991/samba-krb-test-apache
docker pull ghcr.io/icewind1991/samba-krb-test-client
docker tag ghcr.io/icewind1991/samba-krb-test-dc icewind1991/samba-krb-test-dc
docker tag ghcr.io/icewind1991/samba-krb-test-apache-gssapi:8.4 icewind1991/samba-krb-test-apache-gssapi
docker tag ghcr.io/icewind1991/samba-krb-test-apache icewind1991/samba-krb-test-apache
docker tag ghcr.io/icewind1991/samba-krb-test-client icewind1991/samba-krb-test-client
- name: Setup AD-DC
+2 -1
View File
@@ -45,8 +45,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.1']
include:
- php-versions: '8.2'
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
name: php${{ matrix.php-versions }}-smb
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.1', '8.2', '8.3', '8.4']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
+1 -1
View File
@@ -44,7 +44,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.1', '8.2', '8.3', '8.4']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
endpoint: ['old', 'new']
service: ['CalDAV', 'CardDAV']
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
endpoint: ['webdav', 'dav']
name: Litmus WebDAV ${{ matrix.endpoint }}
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
key: ['objectstore', 'objectstore_multibucket']
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
+2 -3
View File
@@ -73,7 +73,7 @@ jobs:
- 'theming_features'
- 'videoverification_features'
php-versions: ['8.4']
php-versions: ['8.1']
spreed-versions: ['main']
activity-versions: ['master']
@@ -84,10 +84,9 @@ jobs:
ports:
- 6379:6379/tcp
openldap:
image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-8 # zizmor: ignore[unpinned-images]
image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7 # zizmor: ignore[unpinned-images]
ports:
- 389:389
- 636:636
env:
SLAPD_DOMAIN: nextcloud.ci
SLAPD_ORGANIZATION: Nextcloud
+1 -1
View File
@@ -68,7 +68,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+1 -1
View File
@@ -47,7 +47,7 @@ jobs:
strategy:
matrix:
php-versions: [ '8.2', '8.3', '8.4' ]
php-versions: [ '8.1', '8.2', '8.3', '8.4' ]
name: php-lint
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+33 -4
View File
@@ -90,7 +90,7 @@ jobs:
persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -114,6 +114,35 @@ jobs:
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
jsunit:
runs-on: ubuntu-latest
needs: [versions, changes]
if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
env:
CYPRESS_INSTALL_BINARY: 0
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ needs.versions.outputs.npmVersion }}'
- name: Install dependencies
run: npm ci
- name: Test
run: npm run test:jsunit
handlebars:
runs-on: ubuntu-latest
needs: [versions, changes]
@@ -131,7 +160,7 @@ jobs:
persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -148,7 +177,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, test, handlebars]
needs: [changes, test, jsunit, handlebars]
if: always()
@@ -156,4 +185,4 @@ jobs:
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && (needs.test.result != 'success' || needs.handlebars.result != 'success') }}; then exit 1; fi
run: if ${{ needs.changes.outputs.src != 'false' && (needs.test.result != 'success' || needs.jsunit.result != 'success' || needs.handlebars.result != 'success') }}; then exit 1; fi
+1 -1
View File
@@ -68,7 +68,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+2 -2
View File
@@ -49,9 +49,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2', '8.3']
php-versions: ['8.1', '8.2']
include:
- php-versions: '8.4'
- php-versions: '8.3'
coverage: true
name: php${{ matrix.php-versions }}-azure
+1 -1
View File
@@ -49,7 +49,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1', '8.2']
include:
- php-versions: '8.3'
coverage: true
+1 -1
View File
@@ -49,7 +49,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1', '8.2']
include:
- php-versions: '8.3'
coverage: true
+1 -1
View File
@@ -33,7 +33,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 # v2.35.4
with:
php-version: '8.2'
php-version: '8.1'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
coverage: none
ini-file: development
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
name: performance-${{ matrix.php-versions }}
+7 -7
View File
@@ -5,10 +5,9 @@ name: PHPUnit 32bits
on:
pull_request:
paths:
- "version.php"
- ".github/workflows/phpunit-32bits.yml"
- "tests/phpunit-autotest.xml"
- "lib/private/Snowflake/*"
- 'version.php'
- '.github/workflows/phpunit-32bits.yml'
- 'tests/phpunit-autotest.xml'
workflow_dispatch:
schedule:
- cron: "15 1 * * 1-6"
@@ -31,7 +30,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ["8.2", "8.3", "8.4"]
php-versions: ['8.1','8.3']
steps:
- name: Checkout server
@@ -52,7 +51,8 @@ jobs:
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, apcu, ldap
coverage: none
ini-file: development
ini-values: apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
ini-values:
apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -68,4 +68,4 @@ jobs:
php -f tests/enable_all.php
- name: PHPUnit
run: composer run test -- --exclude-group PRIMARY-azure --exclude-group PRIMARY-s3 --exclude-group PRIMARY-swift --exclude-group Memcached --exclude-group Redis --exclude-group RoutingWeirdness
run: composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
mariadb-versions: ['10.3', '10.6', '10.11', '11.4', '11.8']
include:
- php-versions: '8.3'
+2 -2
View File
@@ -56,7 +56,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.1', '8.3', '8.4']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -99,7 +99,7 @@ jobs:
php -f tests/enable_all.php
- name: PHPUnit memcached tests
run: composer run test -- --group Memcache --group Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
run: composer run test -- --group Memcache,Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
mysql-versions: ['8.4']
name: Sharding - MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
mysql-versions: ['8.0', '8.4']
include:
- mysql-versions: '8.0'
+2 -2
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.1', '8.3', '8.4']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -105,7 +105,7 @@ jobs:
php -f tests/enable_all.php
- name: PHPUnit nodb testsuite
run: composer run test -- --exclude-group DB --exclude-group SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }}
run: composer run test -- --exclude-group DB,SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }}
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
@@ -49,7 +49,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
key: ['s3', 's3-multibucket']
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
+2 -2
View File
@@ -61,9 +61,9 @@ jobs:
matrix:
include:
- oracle-versions: '11'
php-versions: '8.2'
php-versions: '8.1'
- oracle-versions: '18'
php-versions: '8.2'
php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
- oracle-versions: '21'
php-versions: '8.2'
+5 -5
View File
@@ -59,15 +59,15 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
php-versions: ['8.1']
# To keep the matrix smaller we ignore PostgreSQL versions in between as we already test the minimum and the maximum
postgres-versions: ['14', '18']
postgres-versions: ['13', '17']
include:
- php-versions: '8.3'
postgres-versions: '18'
postgres-versions: '17'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
postgres-versions: '18'
postgres-versions: '17'
name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -86,7 +86,7 @@ jobs:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --mount type=tmpfs,destination=/var/lib/postgresql --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Checkout server
+2 -2
View File
@@ -59,9 +59,9 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.2', '8.3', '8.4']
include:
- php-versions: '8.2'
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
name: SQLite (PHP ${{ matrix.php-versions }})
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
issues: write
steps:
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v9
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9
with:
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
stale-issue-message: >
+4 -4
View File
@@ -36,7 +36,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 #v2.35.4
with:
php-version: '8.2'
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
@@ -67,7 +67,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 #v2.35.4
with:
php-version: '8.2'
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
@@ -102,7 +102,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 #v2.35.4
with:
php-version: '8.2'
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
@@ -133,7 +133,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@ec406be512d7077f68eed36e63f4d91bc006edc4 #v2.35.4
with:
php-version: '8.2'
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
+8 -1
View File
@@ -11,7 +11,7 @@
/apps/inc.php
/assets
/.htaccess
node_modules/
/node_modules
/translationfiles
/translationtool.phar
@@ -55,6 +55,10 @@ node_modules/
/apps/files_external/3rdparty/irodsphp/prods/test*
/apps/files_external/tests/config.*.php
# apps modules
/apps/*/node_modules
# ignore themes except the example and the README
/themes/*
!/themes/example
@@ -127,6 +131,9 @@ nbproject
# Tests
/tests/phpunit.xml
# Node Modules
/build/node_modules/
# nodejs
/build/bin
/build/lib/
-1
View File
@@ -252,7 +252,6 @@ Michael Monreal <michael.monreal@gmail.com>
Michael Roitzsch <reactorcontrol@icloud.com>
michag86 <micha_g@arcor.de>
Michiel de Jong <michiel@unhosted.org> Michiel@unhosted <michiel@unhosted.org>
Micke Nordin <kano@sunet.se> Mikael Nordin <mickenordin@users.noreply.github.com>
Miguel Prokop <miguel.prokop@vtu.com>
miicha <pfitzner@physik.hu-berlin.de>
Miquel Rodríguez Telep / Michael Rodríguez-Torrent <miquel@designunbound.co.uk>
+1
View File
@@ -338,6 +338,7 @@
- Mickey Knox <mickey@netfreaks.org>
- Miguel Prokop <miguel.prokop@vtu.com>
- Mikael Hammarin <mikael@try2.se>
- Mikael Nordin <mickenordin@users.noreply.github.com>
- Mikael Saarinen <mikaels@iki.fi>
- Mikhail Sazanov <m@sazanof.ru>
- Mitar <mitar.git@tnode.com>
+7 -7
View File
@@ -178,7 +178,7 @@ SPDX-FileCopyrightText = "2020 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
[[annotations]]
path = ["cypress/tsconfig.json", "cypress/fixtures/appstore/apps.json", "dist/*.css"]
path = ["cypress/tsconfig.json", "dist/icons.css"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2022 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
@@ -250,7 +250,7 @@ SPDX-FileCopyrightText = "2023 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
[[annotations]]
path = ["apps/dav/lib/ExampleContentFiles/exampleContact.vcf", "tests/data/testvideo-remote-file.mp4", "tests/lib/AppFramework/Middleware/Mock/UseSessionController.php", "tests/lib/AppFramework/Middleware/Security/Mock/BruteForceMiddlewareController.php", "tests/lib/AppFramework/Middleware/Security/Mock/RateLimitingMiddlewareController.php"]
path = ["apps/dav/lib/ExampleContentFiles/exampleContact.vcf", "tests/data/testvideo-remote-file.mp4"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
@@ -328,19 +328,19 @@ SPDX-FileCopyrightText = "2016-2024 Collabora Ltd."
SPDX-License-Identifier = "LicenseRef-CollaboraTrademarks"
[[annotations]]
path = ["core/img/x.svg", "core/img/x-dark.svg", "core/img/x-light.svg", "core/img/twitter.svg", "core/img/actions/twitter.svg", "apps/federatedfilesharing/img/social-twitter.svg"]
path = ["core/img/x.svg", "core/img/twitter.svg", "core/img/actions/twitter.svg", "apps/federatedfilesharing/img/social-twitter.svg"]
precedence = "aggregate"
SPDX-FileCopyrightText = "X Corp."
SPDX-License-Identifier = "LicenseRef-XTrademarks"
[[annotations]]
path = ["core/img/bluesky.svg", "core/img/bluesky-light.svg", "core/img/actions/bluesky.svg"]
path = ["core/img/bluesky.svg", "core/img/actions/bluesky.svg"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2012-2024 Fonticons, Inc."
SPDX-License-Identifier = "CC-BY-4.0"
[[annotations]]
path = ["core/img/facebook.svg", "core/img/facebook-light.svg", "apps/federatedfilesharing/img/social-facebook.svg"]
path = ["core/img/facebook.svg", "apps/federatedfilesharing/img/social-facebook.svg"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2024 Meta"
SPDX-License-Identifier = "LicenseRef-FacebookTrademarks"
@@ -352,7 +352,7 @@ SPDX-FileCopyrightText = "2024 Diaspora"
SPDX-License-Identifier = "LicenseRef-DiasporaTrademarks"
[[annotations]]
path = ["core/img/mastodon.svg", "core/img/mastodon-light.svg", "core/img/actions/mastodon.svg"]
path = ["core/img/mastodon.svg", "core/img/actions/mastodon.svg"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2024 Mastodon gGmbH"
SPDX-License-Identifier = "LicenseRef-MastodonTrademarks"
@@ -400,7 +400,7 @@ SPDX-FileCopyrightText = "2019 Fabian Wiktor <https://www.pexels.com/photo/green
SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
path = ["openapi.json", ".envrc", "flake.nix", "flake.lock", "build/eslint-baseline.json"]
path = ["openapi.json", ".envrc", "flake.nix", "flake.lock"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
+3 -4
View File
@@ -2,8 +2,7 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
export function getCurrentUser() {
export const getCurrentUser = function() {
return {
uid: 'test',
displayName: 'Test',
@@ -11,8 +10,8 @@ export function getCurrentUser() {
}
}
export function getRequestToken() {
export const getRequestToken = function() {
return 'test-token-1234'
}
export function onRequestTokenUpdate() {}
export const onRequestTokenUpdate = function() {}
+2 -3
View File
@@ -2,10 +2,9 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Capabilities } from '../../apps/files/src/types'
import type { Capabilities } from '../../apps/files/src/types.ts'
export function getCapabilities(): Capabilities {
export const getCapabilities = (): Capabilities => {
return {
files: {
bigfilechunking: true,
+1 -1
View File
@@ -3,6 +3,6 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
export function loadState(app: string, key: string, fallback?: any) {
export const loadState = function(app: string, key: string, fallback?: any) {
return fallback
}
+3 -4
View File
@@ -2,10 +2,9 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
export function createClient() {}
export function getPatcher() {
export const createClient = () => {}
export const getPatcher = () => {
return {
patch: () => {},
patch: () => {}
}
}
+11 -4
View File
@@ -2,11 +2,11 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import mime from 'mime'
import { basename } from 'node:path'
import mime from 'mime'
class FileSystemEntry {
private _isFile: boolean
private _fullPath: string
@@ -26,9 +26,11 @@ class FileSystemEntry {
get name() {
return basename(this._fullPath)
}
}
export class FileSystemFileEntry extends FileSystemEntry {
private _contents: string
private _lastModified: number
@@ -44,9 +46,11 @@ export class FileSystemFileEntry extends FileSystemEntry {
const type = mime.getType(this.name) || ''
success(new File([this._contents], this.name, { lastModified, type }))
}
}
export class FileSystemDirectoryEntry extends FileSystemEntry {
private _entries: FileSystemEntry[]
constructor(fullPath: string, entries: FileSystemEntry[]) {
@@ -66,6 +70,7 @@ export class FileSystemDirectoryEntry extends FileSystemEntry {
},
}
}
}
/**
@@ -74,6 +79,7 @@ export class FileSystemDirectoryEntry extends FileSystemEntry {
* File API in the same test suite.
*/
export class DataTransferItem {
private _type: string
private _entry: FileSystemEntry
@@ -98,7 +104,7 @@ export class DataTransferItem {
return this._type
}
getAsFile(): File | null {
getAsFile(): File|null {
if (this._entry.isFile && this._entry instanceof FileSystemFileEntry) {
let file: File | null = null
this._entry.file((f) => {
@@ -110,9 +116,10 @@ export class DataTransferItem {
// The browser will return an empty File object if the entry is a directory
return new File([], this._entry.name, { type: '' })
}
}
export function fileSystemEntryToDataTransferItem(entry: FileSystemEntry, isFileSystemAPIAvailable = true): DataTransferItem {
export const fileSystemEntryToDataTransferItem = (entry: FileSystemEntry, isFileSystemAPIAvailable = true): DataTransferItem => {
return new DataTransferItem(
entry.isFile ? 'text/plain' : 'httpd/unix-directory',
entry,
-1
View File
@@ -2,7 +2,6 @@
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
export function setup() {
process.env.TZ = 'UTC'
}
-1
View File
@@ -2,6 +2,5 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
import 'core-js/stable/index.js'
+4 -1
View File
@@ -14,7 +14,10 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
throw new RuntimeException($err);
trigger_error(
$err,
E_USER_ERROR
);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,23 +26,12 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -320,24 +309,6 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -351,27 +322,19 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -387,7 +350,7 @@ class InstalledVersions
}
}
if (self::$installed !== array() && !$copiedLocalDir) {
if (self::$installed !== array()) {
$installed[] = self::$installed;
}
@@ -14,7 +14,10 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
throw new RuntimeException($err);
trigger_error(
$err,
E_USER_ERROR
);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,23 +26,12 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -320,24 +309,6 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -351,27 +322,19 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -387,7 +350,7 @@ class InstalledVersions
}
}
if (self::$installed !== array() && !$copiedLocalDir) {
if (self::$installed !== array()) {
$installed[] = self::$installed;
}
@@ -236,7 +236,7 @@ class RequestHandlerController extends Controller {
*
* @param string $recipientProvider The address of the recipent's provider
* @param string $token The token used for the invitation
* @param string $userID The userID of the recipient at the recipient's provider
* @param string $userId The userId of the recipient at the recipient's provider
* @param string $email The email address of the recipient
* @param string $name The display name of the recipient
*
@@ -251,8 +251,8 @@ class RequestHandlerController extends Controller {
#[PublicPage]
#[NoCSRFRequired]
#[BruteForceProtection(action: 'inviteAccepted')]
public function inviteAccepted(string $recipientProvider, string $token, string $userID, string $email, string $name): JSONResponse {
$this->logger->debug('Processing share invitation for ' . $userID . ' with token ' . $token . ' and email ' . $email . ' and name ' . $name);
public function inviteAccepted(string $recipientProvider, string $token, string $userId, string $email, string $name): JSONResponse {
$this->logger->debug('Processing share invitation for ' . $userId . ' with token ' . $token . ' and email ' . $email . ' and name ' . $name);
$updated = $this->timeFactory->getTime();
@@ -309,7 +309,7 @@ class RequestHandlerController extends Controller {
$invitation->setRecipientEmail($email);
$invitation->setRecipientName($name);
$invitation->setRecipientProvider($recipientProvider);
$invitation->setRecipientUserId($userID);
$invitation->setRecipientUserId($userId);
$invitation->setAcceptedAt($updated);
$invitation = $this->federatedInviteMapper->update($invitation);
+3 -3
View File
@@ -354,7 +354,7 @@
"required": [
"recipientProvider",
"token",
"userID",
"userId",
"email",
"name"
],
@@ -367,9 +367,9 @@
"type": "string",
"description": "The token used for the invitation"
},
"userID": {
"userId": {
"type": "string",
"description": "The userID of the recipient at the recipient's provider"
"description": "The userId of the recipient at the recipient's provider"
},
"email": {
"type": "string",
+4 -1
View File
@@ -14,7 +14,10 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
throw new RuntimeException($err);
trigger_error(
$err,
E_USER_ERROR
);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,23 +26,12 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -320,24 +309,6 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -351,27 +322,19 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -387,7 +350,7 @@ class InstalledVersions
}
}
if (self::$installed !== array() && !$copiedLocalDir) {
if (self::$installed !== array()) {
$installed[] = self::$installed;
}
@@ -23,4 +23,6 @@ return array(
'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php',
'OCA\\Comments\\Search\\LegacyProvider' => $baseDir . '/../lib/Search/LegacyProvider.php',
'OCA\\Comments\\Search\\Result' => $baseDir . '/../lib/Search/Result.php',
);
@@ -38,6 +38,8 @@ class ComposerStaticInitComments
'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php',
'OCA\\Comments\\Search\\LegacyProvider' => __DIR__ . '/..' . '/../lib/Search/LegacyProvider.php',
'OCA\\Comments\\Search\\Result' => __DIR__ . '/..' . '/../lib/Search/Result.php',
);
public static function getInitializer(ClassLoader $loader)
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "حذف التعليق",
"Cancel edit" : "إلغاء التعديل",
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
@@ -30,7 +31,6 @@ OC.L10N.register(
"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 …" : "أكتُب تعليق ..."
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "حذف التعليق",
"Cancel edit" : "إلغاء التعديل",
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
@@ -28,7 +29,6 @@
"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 …" : "أكتُب تعليق ..."
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Desaniciar el comentariu",
"Cancel edit" : "Anular la edición",
"New comment" : "Comentariu nuevu",
"Write a comment …" : "Escribi un comentariu…",
"Post comment" : "Espublizar el comentariu",
"@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments" : "Nun se pudieron recargar los comentarios",
@@ -30,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted" : "Desanicióse'l comentariu",
"An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu",
"Write a comment …" : "Escribi un comentariu…"
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
},
"nplurals=2; plural=(n != 1);");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Desaniciar el comentariu",
"Cancel edit" : "Anular la edición",
"New comment" : "Comentariu nuevu",
"Write a comment …" : "Escribi un comentariu…",
"Post comment" : "Espublizar el comentariu",
"@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
"Could not reload comments" : "Nun se pudieron recargar los comentarios",
@@ -28,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
"Comment deleted" : "Desanicióse'l comentariu",
"An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu",
"Write a comment …" : "Escribi un comentariu…"
"An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -4
View File
@@ -17,9 +17,9 @@ OC.L10N.register(
"Delete comment" : "Выдаліць каментарый",
"Cancel edit" : "Скасаваць рэдагаванне",
"New comment" : "Новы каментарый",
"Write a comment …" : "Напішыце каментарый …",
"Write a comment …" : "Напішыце каментарый …",
"Post comment" : "Апублікаваць каментарый",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - smart picker",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - разумны выбар",
"Could not reload comments" : "Не ўдалося перазагрузіць каментарыі",
"Failed to mark comments as read" : "Не атрымалася пазначыць каментарыі як прачытаныя",
"Unable to load the comments list" : "Не ўдалося загрузіць спіс каментарыяў",
@@ -31,7 +31,6 @@ OC.L10N.register(
"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 …" : "Напішыце каментарый …"
"An error occurred while trying to create the comment" : "Падчас спробы стварэння каментарыя ўзнікла памылка"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
+3 -4
View File
@@ -15,9 +15,9 @@
"Delete comment" : "Выдаліць каментарый",
"Cancel edit" : "Скасаваць рэдагаванне",
"New comment" : "Новы каментарый",
"Write a comment …" : "Напішыце каментарый …",
"Write a comment …" : "Напішыце каментарый …",
"Post comment" : "Апублікаваць каментарый",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - smart picker",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - разумны выбар",
"Could not reload comments" : "Не ўдалося перазагрузіць каментарыі",
"Failed to mark comments as read" : "Не атрымалася пазначыць каментарыі як прачытаныя",
"Unable to load the comments list" : "Не ўдалося загрузіць спіс каментарыяў",
@@ -29,7 +29,6 @@
"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 …" : "Напішыце каментарый …"
"An error occurred while trying to create the comment" : "Падчас спробы стварэння каментарыя ўзнікла памылка"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Suprimeix el comentari",
"Cancel edit" : "Cancel·la l'edició",
"New comment" : "Comentari nou",
"Write a comment …" : "Escriviu un comentari…",
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
@@ -30,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"Write a comment …" : "Escriviu un comentari…"
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
},
"nplurals=2; plural=(n != 1);");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Suprimeix el comentari",
"Cancel edit" : "Cancel·la l'edició",
"New comment" : "Comentari nou",
"Write a comment …" : "Escriviu un comentari…",
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
@@ -28,7 +29,6 @@
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"Write a comment …" : "Escriviu un comentari…"
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -3
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"New comment" : "Nový komentář",
"Write a comment …" : "Napsat komentář …",
"Write a comment …" : "Napsat komentář…",
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
@@ -31,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"Write a comment …" : "Napsat komentář…"
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+2 -3
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"New comment" : "Nový komentář",
"Write a comment …" : "Napsat komentář …",
"Write a comment …" : "Napsat komentář…",
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
@@ -29,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"Write a comment …" : "Napsat komentář…"
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+4 -5
View File
@@ -10,14 +10,14 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} kommenterede {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
"Files" : "Filer",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev omtalt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
"{user} mentioned you in a comment on \"{file}\"" : "{user} omtalte dig i en kommentar til \"{file}\"",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
"{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"",
"Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer",
"Edit comment" : "Redigér kommentar",
"Delete comment" : "Slet kommentar",
"Cancel edit" : "Annullér redigering",
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar …",
"Write a comment …" : "Skriv kommentar…",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
@@ -31,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"Write a comment …" : "Skriv kommentar…"
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
},
"nplurals=2; plural=(n != 1);");
+4 -5
View File
@@ -8,14 +8,14 @@
"{author} commented on {file}" : "{author} kommenterede {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
"Files" : "Filer",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev omtalt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
"{user} mentioned you in a comment on \"{file}\"" : "{user} omtalte dig i en kommentar til \"{file}\"",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
"{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"",
"Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer",
"Edit comment" : "Redigér kommentar",
"Delete comment" : "Slet kommentar",
"Cancel edit" : "Annullér redigering",
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar …",
"Write a comment …" : "Skriv kommentar…",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
@@ -29,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"Write a comment …" : "Skriv kommentar…"
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -3
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Einen Kommentar schreiben …",
"Write a comment …" : "Einen Kommentar schreiben …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
@@ -31,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"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 …"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},
"nplurals=2; plural=(n != 1);");
+2 -3
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Einen Kommentar schreiben …",
"Write a comment …" : "Einen Kommentar schreiben …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
@@ -29,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"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 …"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -3
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Einen Kommentar schreiben …",
"Write a comment …" : "Schreiben Sie einen Kommentar …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
@@ -31,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"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 …"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},
"nplurals=2; plural=(n != 1);");
+2 -3
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Einen Kommentar schreiben …",
"Write a comment …" : "Schreiben Sie einen Kommentar …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
@@ -29,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
"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 …"
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -8
View File
@@ -10,18 +10,13 @@ OC.L10N.register(
"{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 app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία",
"Edit comment" : "Επεξεργασία σχολίου",
"Delete comment" : "Διαγραφή σχολίου",
"Cancel edit" : "Ακύρωση επεξεργασίας",
"New comment" : "Νέο σχόλιο",
"Write a comment …" : "Γράψτε ένα σχόλιο …",
"Post comment" : "Αναρτήστε σχόλιο",
"@ for mentions, : for emoji, / for smart picker" : "@ για αναφορές, : για emoji, / για έξυπνο επιλογέα",
"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" : "Δεν υπάρχουν άλλα μηνύματα",
@@ -31,7 +26,6 @@ OC.L10N.register(
"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 …" : "Γράψτε ένα σχόλιο …"
"An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου"
},
"nplurals=2; plural=(n != 1);");
+2 -8
View File
@@ -8,18 +8,13 @@
"{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 app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία",
"Edit comment" : "Επεξεργασία σχολίου",
"Delete comment" : "Διαγραφή σχολίου",
"Cancel edit" : "Ακύρωση επεξεργασίας",
"New comment" : "Νέο σχόλιο",
"Write a comment …" : "Γράψτε ένα σχόλιο …",
"Post comment" : "Αναρτήστε σχόλιο",
"@ for mentions, : for emoji, / for smart picker" : "@ για αναφορές, : για emoji, / για έξυπνο επιλογέα",
"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" : "Δεν υπάρχουν άλλα μηνύματα",
@@ -29,7 +24,6 @@
"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 …" : "Γράψτε ένα σχόλιο …"
"An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -3
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"New comment" : "New comment",
"Write a comment …" : "Write a comment …",
"Write a comment …" : "Write a comment …",
"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",
@@ -31,7 +31,6 @@ OC.L10N.register(
"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",
"Write a comment …" : "Write a comment …"
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
},
"nplurals=2; plural=(n != 1);");
+2 -3
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"New comment" : "New comment",
"Write a comment …" : "Write a comment …",
"Write a comment …" : "Write a comment …",
"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",
@@ -29,7 +29,6 @@
"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",
"Write a comment …" : "Write a comment …"
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"New comment" : "Comentario nuevo",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -30,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"New comment" : "Comentario nuevo",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -28,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cancelar edición",
"New comment" : "Nuevo comentario",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -29,7 +30,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cancelar edición",
"New comment" : "Nuevo comentario",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -27,7 +28,6 @@
"An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cancelar edición",
"New comment" : "Nuevo comentario",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -30,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cancelar edición",
"New comment" : "Nuevo comentario",
"Write a comment …" : "Escribir un comentario …",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
@@ -28,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"Write a comment …" : "Escribir un comentario …"
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -3
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Kustuta kommentaar",
"Cancel edit" : "Loobu muutmisest",
"New comment" : "Uus kommentaar",
"Write a comment …" : "Kirjuta kommentaar...",
"Write a comment …" : "Kirjuta kommentaar...",
"Post comment" : "Postita kommentaar",
"@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks",
"Could not reload comments" : "Ei saanud kommentaare uuesti laadida",
@@ -31,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge",
"Comment deleted" : "Kommentaar kustutatud",
"An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge",
"Write a comment …" : "Kirjuta kommentaar..."
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge"
},
"nplurals=2; plural=(n != 1);");
+2 -3
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Kustuta kommentaar",
"Cancel edit" : "Loobu muutmisest",
"New comment" : "Uus kommentaar",
"Write a comment …" : "Kirjuta kommentaar...",
"Write a comment …" : "Kirjuta kommentaar...",
"Post comment" : "Postita kommentaar",
"@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks",
"Could not reload comments" : "Ei saanud kommentaare uuesti laadida",
@@ -29,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge",
"Comment deleted" : "Kommentaar kustutatud",
"An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge",
"Write a comment …" : "Kirjuta kommentaar..."
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat ...",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
@@ -30,7 +31,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean",
"Comment deleted" : "Iruzkina ezabatu da",
"An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean",
"Write a comment …" : "Idatzi iruzkin bat ..."
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean"
},
"nplurals=2; plural=(n != 1);");
+2 -2
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat ...",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
@@ -28,7 +29,6 @@
"An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean",
"Comment deleted" : "Iruzkina ezabatu da",
"An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean",
"Write a comment …" : "Idatzi iruzkin bat ..."
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "حذف دیدگاه",
"Cancel edit" : "Cancel edit",
"New comment" : "دیدگاه جدید",
"Write a comment …" : "دیدگاهی بنویسید...",
"Post comment" : "فرستادن دیدگاه",
"@ for mentions, : for emoji, / for smart picker" : "@ برای اشاره، : برای شکلک، / برای انتخاب‌گر هوشمند",
"Could not reload comments" : "ناتوانی در دریافت دیدگاه‌ها",
@@ -30,7 +31,6 @@ OC.L10N.register(
"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 …" : "دیدگاهی بنویسید..."
"An error occurred while trying to create the comment" : "خطایی در خلال تلاش برای ایجاد دیدگاه رخ داد"
},
"nplurals=2; plural=(n > 1);");

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