Compare commits
261 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 80cdd4cbea | |||
| a77a9b3c83 | |||
| 51f1291382 | |||
| 79d86aadc0 | |||
| b4a38cc242 | |||
| 03005dea43 | |||
| 16d1354239 | |||
| 88114a4d3f | |||
| 21e2c2d79c | |||
| 946424f64f | |||
| af901a8509 | |||
| 181172656a | |||
| cad16d7863 | |||
| a17f4b0d7c | |||
| 3402e620b4 | |||
| e19240b60b | |||
| 8828c873bc | |||
| e36ad8177c | |||
| 276f784c20 | |||
| e84c958574 | |||
| 36ea3677d2 | |||
| 05579fa5b1 | |||
| 7121a1e060 | |||
| 2fc91516ba | |||
| 67d645ae7f | |||
| b0de86db6e | |||
| b451a633af | |||
| 771d2ba952 | |||
| 02cc18b759 | |||
| 34e28920c5 | |||
| 0f8a3e8fc2 | |||
| 555b62a619 | |||
| 808280b1a6 | |||
| 824c57d508 | |||
| 9bb690d299 | |||
| 8f972785f7 | |||
| 88139907dd | |||
| 66dc4c9c72 | |||
| 57bf23cdd7 | |||
| 41e94f2f1f | |||
| 9f48090545 | |||
| 193e8a750e | |||
| 449f23e8d5 | |||
| b5035dc27b | |||
| 33663ff04e | |||
| c09c530529 | |||
| 49f740b46a | |||
| 6600f5c6d3 | |||
| 1066e4a952 | |||
| 4ea822c71e | |||
| 9ef93976e8 | |||
| 870a330abb | |||
| 8c1ce34a03 | |||
| 27a9b7f3fa | |||
| b22fca475a | |||
| 42930f6fab | |||
| e69e2c5473 | |||
| d73edee893 | |||
| 948770205a | |||
| ab13fe80e4 | |||
| cd69e9052f | |||
| 5fed2ddb9e | |||
| a4e03408ad | |||
| 8f5dc4e5ce | |||
| 7085ec3551 | |||
| 624f8f0e3f | |||
| 5f45a2ecb2 | |||
| 92f11a646b | |||
| 5055d63f37 | |||
| f7b7f07e08 | |||
| d44f7df6f6 | |||
| d3199cfc7f | |||
| 265a7ad882 | |||
| 15c77deeef | |||
| bca48e088b | |||
| 0c79118e9f | |||
| b18befd339 | |||
| dce4a245b5 | |||
| c08f3836b0 | |||
| c95da45e48 | |||
| 26ab38aea0 | |||
| 067627b678 | |||
| 3c61ba7db4 | |||
| 17bc99743b | |||
| d325d23593 | |||
| 5369a132b6 | |||
| 7a70c37549 | |||
| 36d48fa2bd | |||
| 29f157ec86 | |||
| 1d4e394cf5 | |||
| 73a186066b | |||
| b41a7cacff | |||
| 84f45fe73f | |||
| 9dfe777fc8 | |||
| 827b941c49 | |||
| 9346718cc2 | |||
| f21b9c0df7 | |||
| c5881c4af3 | |||
| 50829f3a2f | |||
| 376e570b15 | |||
| 45505407de | |||
| f8d32096b2 | |||
| 24c8fc22df | |||
| c6007f3a82 | |||
| 62e2ce05de | |||
| 4488293d62 | |||
| 538a710d1c | |||
| baf376b6fd | |||
| 74cb5d592d | |||
| d467e9129b | |||
| 4a71a02215 | |||
| 7764979281 | |||
| b9d441f530 | |||
| 153d9ba9d6 | |||
| a7ec1cbc99 | |||
| 8b775e6895 | |||
| 73e4594e08 | |||
| 90ca099341 | |||
| 1583b2af91 | |||
| b32587697e | |||
| 38bbfe7e22 | |||
| 055f1c2216 | |||
| 932efb0d6f | |||
| 0e7c66ff6d | |||
| ac6e818f9d | |||
| 2e567918c1 | |||
| d0b45498cd | |||
| 7eb28b0cc0 | |||
| 7ad5f7b60b | |||
| 36db83a7ff | |||
| e643a3e8fb | |||
| 5d182394bc | |||
| 2629a0b0b5 | |||
| ce3da21b65 | |||
| 8cd7218e38 | |||
| 629cebf2a3 | |||
| 67bca39de0 | |||
| 9ed21f521b | |||
| 5b602723b1 | |||
| 8b058b03a0 | |||
| 969e753c19 | |||
| 7c481fdf11 | |||
| 2ed17ff985 | |||
| 4b8cce0b5f | |||
| ae5d37cd0f | |||
| 0f00e99799 | |||
| 00595a35c3 | |||
| 67ede4825d | |||
| 0e8829b8df | |||
| eb264e92ad | |||
| 747721bb78 | |||
| 223d32ba7d | |||
| 092cf812c9 | |||
| 27d0d1ad0a | |||
| 6e332d95fc | |||
| 42f915e15c | |||
| 658fd84035 | |||
| c2729178ca | |||
| 23bb5f573a | |||
| c7d3556b72 | |||
| 8319fd635d | |||
| fcd5fc667e | |||
| 70610a2fbe | |||
| 13f98ad272 | |||
| 1a5285066c | |||
| 0751c1f5f8 | |||
| eb40636aaf | |||
| b48ad14589 | |||
| 0d6a5ce302 | |||
| 7f5a4ebd7f | |||
| d4bc8d390f | |||
| a1236d0125 | |||
| 8f56f6969f | |||
| 14537a07af | |||
| 02d82df7d7 | |||
| 794fd89a5e | |||
| 6ef1b90e42 | |||
| 3ab884a479 | |||
| 26f5fffe72 | |||
| 2c43e9cf81 | |||
| f8dc04464b | |||
| 8be9c9b0d9 | |||
| b70053be25 | |||
| 7886642979 | |||
| 3102633260 | |||
| da3c3a04dc | |||
| 064fa5bdb5 | |||
| 2bb636d536 | |||
| b2e8b1b1c9 | |||
| 364457c2a4 | |||
| d65b9bf217 | |||
| 79afc82b8c | |||
| 2ec80217df | |||
| 5f93c754b4 | |||
| aff90527db | |||
| 0444289908 | |||
| 03988b114c | |||
| fbc9249afb | |||
| e7a9bf4ac4 | |||
| f161f77bf6 | |||
| 40df9c648a | |||
| ecd29001d7 | |||
| 64d3a51080 | |||
| 3a9738e433 | |||
| 1a58d8c86f | |||
| d23e2cb9ab | |||
| f2e5ef1cbf | |||
| d84f62f3cb | |||
| e719bd595f | |||
| 50827582b6 | |||
| fc6f8077bd | |||
| fcca3778ad | |||
| 473d9a9a08 | |||
| 53fab04fbd | |||
| e63d456588 | |||
| 95461ad82d | |||
| 755543879b | |||
| be5cc3a973 | |||
| 65ca68134a | |||
| 2f0055455d | |||
| aa91b0ab3c | |||
| e4d05cb669 | |||
| 790a755232 | |||
| 6781f9fc76 | |||
| 7b6073c424 | |||
| 9dfea7ed32 | |||
| 35ba5ae2a0 | |||
| 847dfb0eb8 | |||
| fd42be531c | |||
| 946444a485 | |||
| 06a05700aa | |||
| d3e6feb7de | |||
| 621a872306 | |||
| 907894212b | |||
| 10aeef9786 | |||
| b6fe0f1f9a | |||
| 7d5ab15ac0 | |||
| c4da304170 | |||
| 311c4147bf | |||
| fe0a8b4df3 | |||
| 2536b1b983 | |||
| a2339f71b8 | |||
| dfb2577171 | |||
| 9a34ccb1e1 | |||
| 4ad74937dc | |||
| 5b89ebc3bb | |||
| 6286923022 | |||
| e0a825658d | |||
| 5805a9d505 | |||
| 4e5327f77a | |||
| 090c520d49 | |||
| d2e5368375 | |||
| 9b6d4c4a4f | |||
| 9791e918c0 | |||
| b3c390ea1e | |||
| 8b2a3994a6 | |||
| 39d0acc5f9 | |||
| f42483b80d | |||
| 736ed2f4e7 | |||
| 35efd6d0ff | |||
| 0060e5f28e |
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"modules": false,
|
||||
"targets": {
|
||||
"browsers": [
|
||||
"last 2 versions",
|
||||
"ie >= 11"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
codecov:
|
||||
branch: stable23
|
||||
branch: master
|
||||
ci:
|
||||
- drone.nextcloud.com
|
||||
- !scrutinizer-ci.com
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
FROM ubuntu:focal
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# PHP
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install --no-install-recommends -y \
|
||||
php7.4 \
|
||||
php7.4-gd \
|
||||
php7.4-zip \
|
||||
php7.4-curl \
|
||||
php7.4-xml \
|
||||
php7.4-mbstring \
|
||||
php7.4-sqlite \
|
||||
php7.4-xdebug \
|
||||
php7.4-pgsql \
|
||||
php7.4-intl \
|
||||
php7.4-imagick \
|
||||
php7.4-gmp \
|
||||
php7.4-apcu \
|
||||
php7.4-bcmath \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
curl \
|
||||
vim \
|
||||
lsof \
|
||||
make \
|
||||
nodejs \
|
||||
npm
|
||||
|
||||
RUN echo "xdebug.remote_enable = 1" >> /etc/php/7.4/cli/conf.d/20-xdebug.ini
|
||||
RUN echo "xdebug.remote_autostart = 1" >> /etc/php/7.4/cli/conf.d/20-xdebug.ini
|
||||
|
||||
# Docker
|
||||
RUN apt-get -y install \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg-agent \
|
||||
software-properties-common
|
||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
||||
RUN add-apt-repository \
|
||||
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) \
|
||||
stable"
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y docker-ce docker-ce-cli containerd.io
|
||||
RUN ln -s /var/run/docker-host.sock /var/run/docker.sock
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
$cloudEnvironmentId = getenv('CLOUDENV_ENVIRONMENT_ID');
|
||||
|
||||
$CONFIG = [
|
||||
'mail_from_address' => 'no-reply',
|
||||
'mail_smtpmode' => 'smtp',
|
||||
'mail_sendmailmode' => 'smtp',
|
||||
'mail_domain' => 'example.com',
|
||||
'mail_smtphost' => 'localhost',
|
||||
'mail_smtpport' => '1025',
|
||||
'memcache.local' => '\OC\Memcache\APCu',
|
||||
];
|
||||
|
||||
if($cloudEnvironmentId !== true) {
|
||||
$CONFIG['overwritehost'] = $cloudEnvironmentId . '-80.apps.codespaces.githubusercontent.com';
|
||||
$CONFIG['overwriteprotocol'] = 'https';
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"name": "NextcloudServer",
|
||||
"dockerComposeFile": "docker-compose.yml",
|
||||
"service": "nextclouddev",
|
||||
"postCreateCommand": ".devcontainer/setup.sh",
|
||||
"forwardPorts": [
|
||||
80,
|
||||
8080,
|
||||
8025
|
||||
],
|
||||
"runArgs": [
|
||||
"--privileged"
|
||||
],
|
||||
"extensions": [
|
||||
"felixfbecker.php-debug",
|
||||
"felixfbecker.php-intellisense",
|
||||
"ms-azuretools.vscode-docker"
|
||||
],
|
||||
"settings": {
|
||||
"php.suggest.basic": false,
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
version: '3'
|
||||
services:
|
||||
nextclouddev:
|
||||
build: .
|
||||
volumes:
|
||||
- .:/workspace:cached
|
||||
- /var/run/docker.sock:/var/run/docker-host.sock
|
||||
command: /bin/sh -c "while sleep 1000; do :; done"
|
||||
ports:
|
||||
- 80:80
|
||||
- 8080:8080
|
||||
- 8025:8025
|
||||
|
||||
db:
|
||||
image: postgres
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
adminer:
|
||||
image: adminer
|
||||
restart: always
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
mailhog:
|
||||
image: mailhog/mailhog
|
||||
restart: always
|
||||
network_mode: service:nextclouddev
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
cd $DIR/
|
||||
git submodule update --init
|
||||
|
||||
# Codespace config
|
||||
cp .devcontainer/codespace.config.php config/codespace.config.php
|
||||
+730
-894
File diff suppressed because it is too large
Load Diff
@@ -1,25 +0,0 @@
|
||||
# https://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.feature]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
[*.yml]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.svg]
|
||||
insert_final_newline = false
|
||||
@@ -1,11 +0,0 @@
|
||||
# Ignoring folders for eslint
|
||||
node_modules/
|
||||
3rdparty/
|
||||
**/vendor/
|
||||
**/l10n/
|
||||
**/js/*
|
||||
*.config.js
|
||||
tests/lib/
|
||||
|
||||
# TODO: remove when comments files is not using handlebar templates anymore
|
||||
apps/comments/src/templates.js
|
||||
@@ -1,20 +0,0 @@
|
||||
module.exports = {
|
||||
globals: {
|
||||
__webpack_nonce__: true,
|
||||
__webpack_public_path__: true,
|
||||
_: true,
|
||||
$: true,
|
||||
moment: true,
|
||||
escapeHTML: true,
|
||||
oc_userconfig: true,
|
||||
dayNames: true,
|
||||
firstDay: true,
|
||||
},
|
||||
extends: ['@nextcloud'],
|
||||
rules: {
|
||||
'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',
|
||||
},
|
||||
}
|
||||
+8
-21
@@ -1,34 +1,21 @@
|
||||
/core/js/dist/*.js binary
|
||||
/core/js/dist/*.js.map binary
|
||||
|
||||
/apps/accessibility/js/*.js binary
|
||||
/apps/accessibility/js/*.js.map binary
|
||||
/apps/accessibility/js/accessibility.js binary
|
||||
/apps/accessibility/js/accessibility.js.map binary
|
||||
/apps/comments/js/*.js binary
|
||||
/apps/comments/js/*.js.map binary
|
||||
/apps/dashboard/js/*.js binary
|
||||
/apps/dashboard/js/*.js.map binary
|
||||
/apps/dav/js/*.js binary
|
||||
/apps/dav/js/*.js.map binary
|
||||
/apps/files/js/dist/*.js binary
|
||||
/apps/files/js/dist/*.js.map binary
|
||||
/apps/files_sharing/js/dist/*.js binary
|
||||
/apps/files_sharing/js/dist/*.js.map binary
|
||||
/apps/files_trashbin/js/*.js binary
|
||||
/apps/files_trashbin/js/*.js.map binary
|
||||
/apps/files_versions/js/*.js binary
|
||||
/apps/files_versions/js/*.js.map binary
|
||||
/apps/oauth2/js/*.js binary
|
||||
/apps/oauth2/js/*.js.map binary
|
||||
/apps/settings/js/vue* binary
|
||||
/apps/files_versions/js/files_versions.js binary
|
||||
/apps/files_versions/js/files_versions.js.map binary
|
||||
/apps/oauth2/js/oauth2.js binary
|
||||
/apps/oauth2/js/oauth2.js.map binary
|
||||
/apps/systemtags/js/systemtags.js binary
|
||||
/apps/systemtags/js/systemtags.js.map binary
|
||||
/apps/twofactor_backupcodes/js/*.js binary
|
||||
/apps/twofactor_backupcodes/js/*.js.map binary
|
||||
/apps/updatenotification/js/updatenotification.js binary
|
||||
/apps/updatenotification/js/updatenotification.js.map binary
|
||||
/apps/user_status/js/*.js binary
|
||||
/apps/user_status/js/*.js.map binary
|
||||
/apps/weather_status/js/*.js binary
|
||||
/apps/weather_status/js/*.js.map binary
|
||||
/apps/workflowengine/js/*.js binary
|
||||
/apps/workflowengine/js/*.js.map binary
|
||||
|
||||
/settings/js/vue* binary
|
||||
|
||||
@@ -12,7 +12,7 @@ If you have questions about how to install or use Nextcloud, please direct these
|
||||
- You can also filter by appending e. g. "state:open" to the search string.
|
||||
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
|
||||
* This repository ([server](https://github.com/nextcloud/server/issues)) is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/nextcloud) following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
|
||||
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/nextcloud) or security@nextcloud.com following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
|
||||
* The issues in other components should be reported in their respective repositories: You will find them in our [GitHub Organization](https://github.com/nextcloud/)
|
||||
|
||||
* Report the issue using one of our [templates][templates], they include all the information we need to track down the issue.
|
||||
@@ -58,7 +58,7 @@ like `git config --global alias.ci 'commit -s'`. Now you can commit with
|
||||
|
||||
In case you are not sure how to add or update the license header correctly please have a look at [contribute/HowToApplyALicense.md][applyalicense]
|
||||
|
||||
[devmanual]: https://docs.nextcloud.com/server/latest/developer_manual/
|
||||
[devmanual]: https://docs.nextcloud.org/server/13/developer_manual/
|
||||
[dcofile]: https://github.com/nextcloud/server/blob/master/contribute/developer-certificate-of-origin
|
||||
[applyalicense]: https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
custom: https://nextcloud.com/include/
|
||||
@@ -1,41 +1,24 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
name: Bug report
|
||||
about: Help us improving by reporting a bug
|
||||
labels: bug, 0. Needs triage
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting issues back to Nextcloud!
|
||||
Thanks for reporting issues back to Nextcloud! This is the issue tracker of Nextcloud, if you have any support question please check out https://nextcloud.com/support
|
||||
|
||||
Note: This is the **issue tracker of Nextcloud**, please do NOT use this to get answers to your questions or get help for fixing your installation. This is a place to report bugs to developers, after your server has been debugged. You can find help debugging your system on our home user forums: https://help.nextcloud.com or, if you use Nextcloud in a large organization, ask our engineers on https://portal.nextcloud.com. See also https://nextcloud.com/support for support options.
|
||||
This is the bug tracker for the Server component. Find other components at https://github.com/nextcloud/
|
||||
|
||||
Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
|
||||
For reporting potential security issues please see https://nextcloud.com/security/
|
||||
|
||||
Guidelines for submitting issues:
|
||||
To make it possible for us to help you please fill out below information carefully.
|
||||
You can also use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
|
||||
|
||||
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
|
||||
- Go to https://github.com/nextcloud and type any word in the top search/command bar. You probably see something like "We couldn’t find any repositories matching ..." then click "Issues" in the left navigation.
|
||||
- You can also filter by appending e. g. "state:open" to the search string.
|
||||
- More info on search syntax within github: https://help.github.com/articles/searching-issues
|
||||
|
||||
* This repository https://github.com/nextcloud/server/issues is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
|
||||
* SECURITY: Report any potential security bug to us via our HackerOne page (https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
|
||||
If you are a customer, please submit your issue directly in the Nextcloud Portal https://portal.nextcloud.com so it gets resolved more quickly by our dedicated engineers.
|
||||
|
||||
* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (https://github.com/nextcloud/)
|
||||
|
||||
* You can also use the Issue Template app to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
|
||||
Note that Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
|
||||
-->
|
||||
|
||||
<!--- Please keep this note for other contributors -->
|
||||
|
||||
### How to use GitHub
|
||||
|
||||
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you are affected by the same issue.
|
||||
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
|
||||
* Subscribe to receive notifications on status change and new comments.
|
||||
|
||||
|
||||
### Steps to reproduce
|
||||
1.
|
||||
2.
|
||||
@@ -49,7 +32,7 @@ Tell us what happens instead
|
||||
|
||||
### Server configuration
|
||||
|
||||
**Operating system:**
|
||||
**Operating system**:
|
||||
|
||||
**Web server:**
|
||||
|
||||
@@ -131,9 +114,6 @@ Eventually replace sensitive data as the name/IP-address of your LDAP server or
|
||||
**Operating system:**
|
||||
|
||||
### Logs
|
||||
|
||||
<!--- Reports without logs might be closed as unqualified reports! -->
|
||||
|
||||
#### Web server error log
|
||||
<details>
|
||||
<summary>Web server error log</summary>
|
||||
|
||||
@@ -1,48 +1,33 @@
|
||||
---
|
||||
name: 🚀 Feature request
|
||||
about: Suggest an idea for this project
|
||||
labels: enhancement, 0. Needs triage
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting issues back to Nextcloud!
|
||||
|
||||
Note: This is the **issue tracker of Nextcloud**, please do NOT use this to get answers to your questions or get help for fixing your installation. This is a place to report bugs to developers, after your server has been debugged. You can find help debugging your system on our home user forums: https://help.nextcloud.com or, if you use Nextcloud in a large organization, ask our engineers on https://portal.nextcloud.com. See also https://nextcloud.com/support for support options.
|
||||
|
||||
Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
|
||||
|
||||
Guidelines for submitting issues:
|
||||
|
||||
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
|
||||
- Go to https://github.com/nextcloud and type any word in the top search/command bar. You probably see something like "We couldn’t find any repositories matching ..." then click "Issues" in the left navigation.
|
||||
- You can also filter by appending e. g. "state:open" to the search string.
|
||||
- More info on search syntax within github: https://help.github.com/articles/searching-issues
|
||||
|
||||
* This repository https://github.com/nextcloud/server/issues is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
|
||||
* SECURITY: Report any potential security bug to us via our HackerOne page (https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
|
||||
|
||||
* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (https://github.com/nextcloud/)
|
||||
-->
|
||||
|
||||
|
||||
<!--- Please keep this note for other contributors -->
|
||||
|
||||
### How to use GitHub
|
||||
|
||||
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you are interested into the same feature.
|
||||
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
|
||||
* Subscribe to receive notifications on status change and new comments.
|
||||
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
labels: enhancement, 0. Needs triage
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting issues back to Nextcloud! This is the issue tracker of Nextcloud, if you have any support question please check out https://nextcloud.com/support
|
||||
|
||||
This is the bug tracker for the Server component. Find other components at https://github.com/nextcloud/
|
||||
|
||||
For reporting potential security issues please see https://nextcloud.com/security/
|
||||
|
||||
To make it possible for us to help you please fill out below information carefully.
|
||||
You can also use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
|
||||
|
||||
If you are a customer, please submit your issue directly in the Nextcloud Portal https://portal.nextcloud.com so it gets resolved more quickly by our dedicated engineers.
|
||||
|
||||
Note that Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
|
||||
-->
|
||||
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: ❓ Community Support and Help
|
||||
url: https://help.nextcloud.com/
|
||||
about: Configuration, webserver/proxy or performance issues and other questions
|
||||
- name: 💼 Nextcloud Enterprise
|
||||
url: https://portal.nextcloud.com/
|
||||
about: If you are a Nextcloud Enterprise customer, or need Professional support, so it can be resolved directly by our dedicated engineers more quickly
|
||||
@@ -1,3 +1,5 @@
|
||||
firstPRMergeComment: >
|
||||
Thanks for your first pull request and welcome to the community!
|
||||
Feel free to keep them coming! If you are looking for issues to tackle then have a look at this selection: https://github.com/nextcloud/server/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
|
||||
|
||||
Most developers hang out on IRC. So join \#nextcloud-dev on Freenode for a chat!
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Linting and coding style
|
||||
- package-ecosystem: composer
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# Main master npm
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# Testing master npm
|
||||
- package-ecosystem: npm
|
||||
directory: "/build"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
|
||||
# Testing master composer
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
|
||||
|
||||
# Main stableXX npm
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable21
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable22
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
# Testing StableXX composer
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable21
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable22
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
@@ -1,33 +0,0 @@
|
||||
# We wait 1 months to check
|
||||
daysUntilStale: 30
|
||||
|
||||
# If no answer after two weeks, we close
|
||||
daysUntilClose: 14
|
||||
|
||||
# Only issues that requires info from the op
|
||||
onlyLabels:
|
||||
- "needs info"
|
||||
|
||||
# Only if issues that are not triaged
|
||||
exemptLabels:
|
||||
- "1. to develop"
|
||||
- "2. developing"
|
||||
- "3. to review"
|
||||
- "4. to release"
|
||||
- security
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity and seems to be missing some essential information.
|
||||
It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
only: issues
|
||||
@@ -1,30 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Pull request checks
|
||||
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
block-merges-eol:
|
||||
name: Block merges for EOL branches
|
||||
|
||||
# Only run on stableXX branches
|
||||
if: startsWith( github.base_ref, 'stable')
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Download updater config
|
||||
run: curl https://raw.githubusercontent.com/nextcloud/updater_server/production/config/config.php --output config.php
|
||||
|
||||
- name: Set server major version environment
|
||||
run: |
|
||||
# retrieve version number from branch reference
|
||||
server_major=$(echo "${{ github.base_ref }}" | sed -En 's/stable//p')
|
||||
echo "server_major=$server_major" >> $GITHUB_ENV
|
||||
|
||||
- name: Checking if ${{ env.server_major }} is EOL
|
||||
run: |
|
||||
php -r 'echo json_encode(require_once "config.php");' | jq --arg version "${{ env.server_major }}" '.stable[$version]["100"].eol' | grep --silent -i 'false'
|
||||
@@ -1,21 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Pull request checks
|
||||
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
block-merges-during-freeze:
|
||||
name: Block merges during feature freezes
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Download version.php from ${{ github.base_ref }}
|
||||
run: curl https://raw.githubusercontent.com/nextcloud/server/${{ github.base_ref }}/version.php --output version.php
|
||||
|
||||
- name: Run check
|
||||
run: cat version.php | grep 'OC_VersionString' | grep -i -v 'RC'
|
||||
@@ -1,117 +0,0 @@
|
||||
name: Compile Command
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
init:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# On pull requests and if the comment starts with `/compile`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/compile')
|
||||
|
||||
outputs:
|
||||
git_path: ${{ steps.git-path.outputs.path }}
|
||||
arg1: ${{ steps.command.outputs.arg1 }}
|
||||
arg2: ${{ steps.command.outputs.arg2 }}
|
||||
head_ref: ${{ steps.comment-branch.outputs.head_ref }}
|
||||
|
||||
steps:
|
||||
- name: Check actor permission
|
||||
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
|
||||
with:
|
||||
require: write
|
||||
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae # v1.4.5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Parse command
|
||||
uses: skjnldsv/parse-command-comment@7cef1df370a99dfd5bf896d50121390c96785db8 # v2.0
|
||||
id: command
|
||||
|
||||
# Init path depending on which command is run
|
||||
- name: Init path
|
||||
id: git-path
|
||||
run: |
|
||||
if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then
|
||||
echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg1}}"
|
||||
else
|
||||
echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg2}}"
|
||||
fi
|
||||
|
||||
- name: Init branch
|
||||
uses: xt0rted/pull-request-comment-branch@653a7d5ca8bd91d3c5cb83286063314d0b063b8e # v1.4.0
|
||||
id: comment-branch
|
||||
|
||||
process:
|
||||
runs-on: ubuntu-latest
|
||||
needs: init
|
||||
|
||||
steps:
|
||||
- name: Checkout ${{ needs.init.outputs.head_ref }}
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
fetch-depth: 0
|
||||
ref: ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --local user.email "nextcloud-command@users.noreply.github.com"
|
||||
git config --local user.name "nextcloud-command"
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
|
||||
id: package-engines-versions
|
||||
with:
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
with:
|
||||
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
cache: npm
|
||||
|
||||
- name: Set up npm ${{ steps.package-engines-versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.package-engines-versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies & build
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Commit and push default
|
||||
if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git commit --signoff -m 'Compile assets'
|
||||
git push origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Commit and push fixup
|
||||
if: ${{ needs.init.outputs.arg1 == 'fixup' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git commit --fixup=HEAD --signoff
|
||||
git push origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Commit and push amend
|
||||
if: ${{ needs.init.outputs.arg1 == 'amend' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git commit --amend --no-edit --signoff
|
||||
git push --force origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae # v1.4.5
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
@@ -1,46 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Rebase command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# On pull requests and if the comment starts with `/rebase`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae # v1.4.5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@c473b716e3fcde0c6bf67416e2c2882830ad40f6 # 1.5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae # v1.4.5
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
@@ -1,29 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Dependabot
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
auto-approve-merge:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Github actions bot approve
|
||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Nextcloud bot approve and merge request
|
||||
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2.6.6
|
||||
with:
|
||||
target: minor
|
||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||
@@ -1,20 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Pull request checks
|
||||
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
commit-message-check:
|
||||
name: Block fixup and squash commits
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: xt0rted/block-autosquash-commits-action@79880c36b4811fe549cfffe20233df88876024e7 # v2.2.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,78 +0,0 @@
|
||||
name: FTP
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
|
||||
env:
|
||||
APP_NAME: files_external
|
||||
|
||||
jobs:
|
||||
ftp-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0']
|
||||
ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up ftpd
|
||||
run: |
|
||||
sudo mkdir /tmp/ftp
|
||||
sudo chown -R 0777 /tmp/ftp
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then docker run --name ftp -d --net host -e FTP_USERNAME=test -e FTP_PASSWORD=test -v /tmp/ftp:/home/test hauptmedia/proftpd; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'vsftpd' ]]; then docker run --name ftp -d --net host -e FTP_USER=test -e FTP_PASS=test -e PASV_ADDRESS=127.0.0.1 -v /tmp/ftp:/home/vsftpd/test fauria/vsftpd; fi
|
||||
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/ftp2:/home/test -v /tmp/ftp2:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
|
||||
- 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 password
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
- name: smoketest ftp
|
||||
run: |
|
||||
php -r 'var_dump(file_put_contents("ftp://test:test@localhost/ftp.txt", "asd"));'
|
||||
php -r 'var_dump(file_get_contents("ftp://test:test@localhost/ftp.txt"));'
|
||||
php -r 'var_dump(mkdir("ftp://test:test@localhost/asdads"));'
|
||||
ls -l /tmp/ftp
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'host' => 'localhost','user' => 'test','password' => 'test', 'root' => ''];" > apps/${{ env.APP_NAME }}/tests/config.ftp.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/FtpTest.php
|
||||
- name: ftpd logs
|
||||
if: always()
|
||||
run: |
|
||||
docker logs ftp
|
||||
|
||||
ftp-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: ftp-tests
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.ftp-tests.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,44 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@1e2f46e78e31476bc71ebd909105e6e033d5a6f4 # v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
@@ -1,42 +0,0 @@
|
||||
name: Lint
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
php-linters:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.3', '7.4', '8.0']
|
||||
name: php${{ matrix.php-versions }} lint
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up php${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Lint
|
||||
run: composer run lint
|
||||
|
||||
php-cs-fixer:
|
||||
name: php-cs check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
tools: cs2pr
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
- name: Run coding standards check
|
||||
run: |
|
||||
composer run cs:check -- --format=checkstyle | cs2pr
|
||||
composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
||||
shell: bash
|
||||
@@ -1,94 +0,0 @@
|
||||
name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
versions:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@1e2f46e78e31476bc71ebd909105e6e033d5a6f4 # v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
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
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
PUPPETEER_SKIP_DOWNLOAD: true
|
||||
run: npm ci
|
||||
|
||||
- name: Test
|
||||
run: npm run test
|
||||
|
||||
jsunit:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
# This test requires npm6 for some reason
|
||||
# TODO: fix this and/or move away from jsunit
|
||||
- name: Set up npm 6
|
||||
run: npm i -g npm@^6
|
||||
|
||||
- name: Test
|
||||
run: ./autotest-js.sh
|
||||
|
||||
handlebars:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
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: Run compile
|
||||
run: ./build/compile-handlebars-templates.sh
|
||||
@@ -1,52 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: node
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@1e2f46e78e31476bc71ebd909105e6e033d5a6f4 # v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies & build
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Check webpack build changes
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain `\" ]] || exit 1"
|
||||
|
||||
- name: Show changes on failure
|
||||
if: failure()
|
||||
run: |
|
||||
git status
|
||||
git --no-pager diff
|
||||
@@ -1,88 +0,0 @@
|
||||
name: PHPUnit
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
phpunit-oci:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: [ '7.3', '7.4', '8.0' ]
|
||||
databases: [ 'oci' ]
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}
|
||||
|
||||
services:
|
||||
oracle:
|
||||
image: ghcr.io/gvenzl/oracle-xe:11
|
||||
|
||||
# Provide passwords and other environment variables to container
|
||||
env:
|
||||
ORACLE_RANDOM_PASSWORD: true
|
||||
APP_USER: autotest
|
||||
APP_USER_PASSWORD: owncloud
|
||||
|
||||
# Forward Oracle port
|
||||
ports:
|
||||
- 1521:1521/tcp
|
||||
|
||||
# Provide healthcheck script options for startup
|
||||
options: >-
|
||||
--health-cmd healthcheck.sh
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 10
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,oci8,openssl,pcntl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
tools: phpunit:9
|
||||
coverage: none
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=1521 --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --group DB,SLOWDB
|
||||
|
||||
- name: Run repair steps
|
||||
run: |
|
||||
./occ maintenance:repair --include-expensive
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: phpunit-oci
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-oci-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,28 +0,0 @@
|
||||
name: Psalm show github
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
psalm:
|
||||
name: Psalm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Psalm
|
||||
uses: docker://vimeo/psalm-github-actions:4.9.3
|
||||
continue-on-error: true
|
||||
with:
|
||||
composer_ignore_platform_reqs: false
|
||||
report_file: results.sarif
|
||||
- name: Upload Analysis results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@231aa2c8a89117b126725a0e11897209b7118144 # v1.1.39
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -1,28 +0,0 @@
|
||||
name: Psalm Security Analysis
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
psalm:
|
||||
name: Psalm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Psalm
|
||||
uses: docker://vimeo/psalm-github-actions:4.9.3
|
||||
with:
|
||||
security_analysis: true
|
||||
composer_ignore_platform_reqs: false
|
||||
report_file: results.sarif
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@231aa2c8a89117b126725a0e11897209b7118144 # v1.1.39
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -1,124 +0,0 @@
|
||||
name: S3 External storage
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
|
||||
env:
|
||||
APP_NAME: files_external
|
||||
|
||||
jobs:
|
||||
s3-external-tests-minio:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: php${{ matrix.php-versions }}-minio
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.10.6
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
|
||||
- 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 password
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
s3-external-tests-localstack:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: php${{ matrix.php-versions }}-localstack
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
SERVICES: s3
|
||||
DEBUG: 1
|
||||
image: localstack/localstack:0.12.7
|
||||
ports:
|
||||
- "4566:4566"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
|
||||
- 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 password
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'ignored','secret' => 'ignored', 'bucket' => 'bucket', 'port' => 4566, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
|
||||
s3-external-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-external-tests-minio, s3-external-tests-localstack]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-external-tests-minio.result != 'success' }} || ${{ needs.s3-external-tests-localstack.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,76 +0,0 @@
|
||||
name: S3 primary storage
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
s3-primary-tests-minio:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
key: ['objectstore', 'objectstore_multibucket']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
|
||||
|
||||
services:
|
||||
minio:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.12.29
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "minio", "secret" => "minio123", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
|
||||
./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 password
|
||||
php -f index.php
|
||||
|
||||
- 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
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --group DB,SLOWDB
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
docker ps -a
|
||||
docker logs $(docker ps -aq)
|
||||
|
||||
|
||||
s3-primary-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-primary-tests-minio]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-primary-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,78 +0,0 @@
|
||||
name: Samba Kerberos SSO
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
|
||||
jobs:
|
||||
smb-kerberos-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
- name: Pull images
|
||||
run: |
|
||||
docker pull icewind1991/samba-krb-test-dc
|
||||
docker pull icewind1991/samba-krb-test-apache
|
||||
docker pull icewind1991/samba-krb-test-client
|
||||
- name: Setup AD-DC
|
||||
run: |
|
||||
mkdir data
|
||||
sudo chown -R 33 data apps config
|
||||
apps/files_external/tests/setup-krb.sh
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
docker exec --user 33 apache ./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 password
|
||||
docker exec --user 33 apache ./occ config:system:set trusted_domains 1 --value 'httpd.domain.test'
|
||||
|
||||
# setup user_saml
|
||||
docker exec --user 33 apache ./occ app:enable user_saml --force
|
||||
docker exec --user 33 apache ./occ config:app:set user_saml type --value 'environment-variable'
|
||||
docker exec --user 33 apache ./occ config:app:set user_saml general-uid_mapping --value REMOTE_USER
|
||||
|
||||
# setup external storage
|
||||
docker exec --user 33 apache ./occ app:enable files_external --force
|
||||
docker exec --user 33 apache ./occ files_external:create smb smb smb::kerberosapache
|
||||
docker exec --user 33 apache ./occ files_external:config 1 host krb.domain.test
|
||||
docker exec --user 33 apache ./occ files_external:config 1 share netlogon
|
||||
docker exec --user 33 apache ./occ files_external:list
|
||||
- name: Test SSO
|
||||
run: |
|
||||
mkdir cookies
|
||||
chmod 0777 cookies
|
||||
|
||||
DC_IP=$(docker inspect dc --format '{{.NetworkSettings.IPAddress}}')
|
||||
docker run --rm --name client -v $PWD/cookies:/cookies -v /tmp/shared:/shared --dns $DC_IP --hostname client.domain.test icewind1991/samba-krb-test-client \
|
||||
curl -c /cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/index.php/apps/user_saml/saml/login
|
||||
CONTENT=$(docker run --rm --name client -v $PWD/cookies:/cookies -v /tmp/shared:/shared --dns $DC_IP --hostname client.domain.test icewind1991/samba-krb-test-client \
|
||||
curl -b /cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/remote.php/webdav/smb/test.txt)
|
||||
echo $CONTENT
|
||||
CONTENT=$(echo $CONTENT | tr -d '[:space:]')
|
||||
[[ $CONTENT == "testfile" ]]
|
||||
|
||||
|
||||
smb-kerberos-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: smb-kerberos-tests
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.smb-kerberos-tests.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,56 +0,0 @@
|
||||
name: Static code analysis
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
static-code-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
- name: Psalm
|
||||
run: composer run psalm -- --monochrome --no-progress --output-format=github --update-baseline || ( git diff -- . ':!lib/composer' && exit 1 )
|
||||
- name: Check diff
|
||||
run: git diff -- . ':!lib/composer'
|
||||
- name: Show potential changes in Psalm baseline
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain build/psalm-baseline.xml`\" ]] || ( echo 'Uncommited changes in Psalm baseline' && git status && git diff build/psalm-baseline.xml)"
|
||||
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
- name: Psalm
|
||||
run: composer run psalm -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline || ( git diff -- . ':!lib/composer' && exit 1 )
|
||||
- name: Check diff
|
||||
run: git diff -- . ':!lib/composer'
|
||||
- name: Show potential changes in Psalm baseline
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain build/psalm-baseline-ocp.xml`\" ]] || ( echo 'Uncommited changes in Psalm baseline' && git status && git diff build/psalm-baseline.xml)"
|
||||
@@ -1,53 +0,0 @@
|
||||
name: Update Psalm baseline
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '5 4 * * *'
|
||||
|
||||
jobs:
|
||||
update-psalm-baseline:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
|
||||
- name: Composer install
|
||||
run: composer install
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm -- --monochrome --no-progress --output-format=text --update-baseline
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset composer
|
||||
run: |
|
||||
git clean -f lib/composer
|
||||
git checkout composer.json composer.lock lib/composer
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@18f7dc018cc2cd597073088f7c7591b9d1c02672 # v3.14.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: Update psalm baseline
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/psalm-baseline-update
|
||||
# Make sure we can open multiple PRs
|
||||
branch-suffix: timestamp
|
||||
title: '[Automated] Update psalm-baseline.xml'
|
||||
body: |
|
||||
Auto-generated update psalm-baseline.xml with fixed psalm warnings
|
||||
labels: |
|
||||
automated pr
|
||||
3. to review
|
||||
team-reviewers: server-backend
|
||||
+1
-11
@@ -16,8 +16,6 @@
|
||||
!/apps/accessibility
|
||||
!/apps/cloud_federation_api
|
||||
!/apps/comments
|
||||
!/apps/contactsinteraction
|
||||
!/apps/dashboard
|
||||
!/apps/dav
|
||||
!/apps/files
|
||||
!/apps/federation
|
||||
@@ -32,15 +30,12 @@
|
||||
!/apps/user_ldap
|
||||
!/apps/oauth2
|
||||
!/apps/provisioning_api
|
||||
!/apps/settings
|
||||
!/apps/systemtags
|
||||
!/apps/testing
|
||||
!/apps/admin_audit
|
||||
!/apps/updatenotification
|
||||
!/apps/theming
|
||||
!/apps/twofactor_backupcodes
|
||||
!/apps/user_status
|
||||
!/apps/weather_status
|
||||
!/apps/workflowengine
|
||||
/apps/files_external/3rdparty/irodsphp/PHPUnitTest
|
||||
/apps/files_external/3rdparty/irodsphp/web
|
||||
@@ -73,7 +68,6 @@ CVS/*
|
||||
.svn/*
|
||||
RCS/*
|
||||
*.backup*
|
||||
.php_cs.cache
|
||||
|
||||
# kdevelop
|
||||
.kdev
|
||||
@@ -140,7 +134,6 @@ Vagrantfile
|
||||
|
||||
# Tests - auto-generated files
|
||||
/data-autotest
|
||||
/tests/.phpunit.result.cache
|
||||
/tests/coverage*
|
||||
/tests/css
|
||||
/tests/karma-coverage
|
||||
@@ -156,8 +149,5 @@ Vagrantfile
|
||||
clover.xml
|
||||
|
||||
# Tests - dependencies
|
||||
tests/acceptance/composer.lock
|
||||
tests/acceptance/vendor/
|
||||
|
||||
composer.phar
|
||||
/lib/composer/bin
|
||||
/vendor-bin/**/vendor
|
||||
|
||||
@@ -7,57 +7,29 @@
|
||||
<IfModule mod_proxy_fcgi.c>
|
||||
SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1
|
||||
</IfModule>
|
||||
<IfModule mod_lsapi.c>
|
||||
SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
|
||||
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_env.c>
|
||||
# Add security and privacy related headers
|
||||
|
||||
# Avoid doubled headers by unsetting headers in "onsuccess" table,
|
||||
# then add headers to "always" table: https://github.com/nextcloud/server/pull/19002
|
||||
Header onsuccess unset Referrer-Policy
|
||||
Header always set Referrer-Policy "no-referrer"
|
||||
|
||||
Header onsuccess unset X-Content-Type-Options
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
|
||||
Header onsuccess unset X-Download-Options
|
||||
Header always set X-Download-Options "noopen"
|
||||
|
||||
Header onsuccess unset X-Frame-Options
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
|
||||
Header onsuccess unset X-Permitted-Cross-Domain-Policies
|
||||
Header always set X-Permitted-Cross-Domain-Policies "none"
|
||||
|
||||
Header onsuccess unset X-Robots-Tag
|
||||
Header always set X-Robots-Tag "none"
|
||||
|
||||
Header onsuccess unset X-XSS-Protection
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
|
||||
Header set X-Content-Type-Options "nosniff"
|
||||
Header set X-XSS-Protection "1; mode=block"
|
||||
Header set X-Robots-Tag "none"
|
||||
Header set X-Download-Options "noopen"
|
||||
Header set X-Permitted-Cross-Domain-Policies "none"
|
||||
Header set Referrer-Policy "no-referrer"
|
||||
SetEnv modHeadersAvailable true
|
||||
</IfModule>
|
||||
|
||||
# Add cache control for static resources
|
||||
<FilesMatch "\.(css|js|svg|gif|png|jpg|ico|wasm|tflite)$">
|
||||
<FilesMatch "\.(css|js|svg|gif)$">
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</FilesMatch>
|
||||
|
||||
<FilesMatch "\.(css|js|svg|gif|png|jpg|ico|wasm|tflite)(\?v=.*)?$">
|
||||
Header set Cache-Control "max-age=15778463, immutable"
|
||||
</FilesMatch>
|
||||
|
||||
# Let browsers cache WOFF files for a week
|
||||
<FilesMatch "\.woff2?$">
|
||||
Header set Cache-Control "max-age=604800"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
# PHP 7.x
|
||||
<IfModule mod_php7.c>
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
@@ -66,43 +38,30 @@
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# PHP 8+
|
||||
<IfModule mod_php.c>
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
php_value output_buffering 0
|
||||
<IfModule mod_env.c>
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/svg+xml svg svgz
|
||||
AddType application/wasm wasm
|
||||
AddEncoding gzip svgz
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.php index.html
|
||||
</IfModule>
|
||||
|
||||
<IfModule pagespeed_module>
|
||||
ModPagespeed Off
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTP_USER_AGENT} DavClnt
|
||||
RewriteRule ^$ /remote.php/webdav/ [L,R=302]
|
||||
RewriteCond %{HTTP_USER_AGENT} DavClnt
|
||||
RewriteRule ^$ /remote.php/webdav/ [L,R=302]
|
||||
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
|
||||
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
|
||||
RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
|
||||
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
|
||||
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
|
||||
RewriteRule ^remote/(.*) remote.php [QSA,L]
|
||||
RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
|
||||
RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L]
|
||||
RewriteRule ^(?:\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L]
|
||||
RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
|
||||
RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
|
||||
</IfModule>
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/svg+xml svg svgz
|
||||
AddEncoding gzip svgz
|
||||
</IfModule>
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex index.php index.html
|
||||
</IfModule>
|
||||
|
||||
AddDefaultCharset utf-8
|
||||
Options -Indexes
|
||||
<IfModule pagespeed_module>
|
||||
ModPagespeed Off
|
||||
</IfModule>
|
||||
|
||||
@@ -63,8 +63,8 @@ Christian Berendt <berendt@b1-systems.de>
|
||||
Christian Kampka <christian@kampka.net>
|
||||
Christian Koch <koch.chris@gmail.com>
|
||||
Christian Reiner <github@christian-reiner.info> Christian Reiner <arkascha@balder.site>
|
||||
Christoph Wurst <christoph@winzerhof-wurst.at> Christoph Wurst <ChristophWurst@users.noreply.github.com>
|
||||
Christoph Wurst <christoph@winzerhof-wurst.at> Christoph Wurst <christoph@owncloud.com>
|
||||
Christoph Wurst <christoph@owncloud.com> Christoph Wurst <ChristophWurst@users.noreply.github.com>
|
||||
Christoph Wurst <christoph@owncloud.com> Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
Christopher Bunn <b11.chris@gmail.com>
|
||||
Christopher Schäpers <kondou@ts.unde.re> Christopher <kondou@ts.unde.re>
|
||||
Christopher Schäpers <kondou@ts.unde.re> kondou <kondou@ts.unde.re>
|
||||
@@ -82,7 +82,6 @@ Dan Callahan <dan.callahan@gmail.com>
|
||||
Dan Jones <dan@danneh.org>
|
||||
Daniel <daniel@mars.(none)>
|
||||
Daniel Hansson <enoch85@gmail.com>
|
||||
Daniel Kesselberg <mail@danielkesselberg.de> kesselb <mail@danielkesselberg.de>
|
||||
Daniel Köb <daniel.koeb@peony.at>
|
||||
Daniel Molkentin <daniel@molkentin.de>
|
||||
Daniele E. Domenichelli <daniele.domenichelli@gmail.com>
|
||||
@@ -165,7 +164,6 @@ ideaship <ideaship@users.noreply.github.com>
|
||||
Ignacio Daniel Rostagno <ignaciorostagno@vijona.com.ar>
|
||||
infoneo <infoneo@yahoo.pl>
|
||||
Insanemal <insanemal@gmail.com>
|
||||
Tobias Perschon <tobias@perschon.at> Tobias Perschon <tofuSCHNITZEL@users.noreply.github.com>
|
||||
Tobias Ramforth <tobias@ramforth.com> Tobias Ramforth <tobias.ramforth@udo.edu>
|
||||
Tobias Ramforth <tobias@ramforth.com> irgsmirx <tobias.ramforth@udo.edu>
|
||||
Isaac Rosenberg <irosenb7@gmail.com>
|
||||
@@ -187,7 +185,6 @@ Jesús Macias <jmacias@solidgear.es> Jesus Macias <jmacias@full-on-net.com>
|
||||
jknockaert <jasper@knockaert.nl>
|
||||
Joan <aseques@gmail.com>
|
||||
Joar Wandborg <git@wandborg.com>
|
||||
Joas Schilling <coding@schilljs.com> Joas Schilling <213943+nickvergessen@users.noreply.github.com>
|
||||
Joas Schilling <coding@schilljs.com> Joas Schilling <nickvergessen@gmx.de>
|
||||
Joas Schilling <coding@schilljs.com> Joas Schilling <nickvergessen@owncloud.com>
|
||||
joel hansson <joel.hansson@gmail.com>
|
||||
@@ -215,7 +212,6 @@ Lennart Rosam <lennart.rosam@medien-systempartner.de>
|
||||
Sebastian Döll <sebastian.doell@libasys.de> libasys <sebastian.doell@libasys.de>
|
||||
Lode Hoste <zillode@zillode.be>
|
||||
lolozere <laurent@chedanne.pro>
|
||||
Louis Chemineau <louis@chmn.me> Louis Chemineau <6653109+artonge@users.noreply.github.com>
|
||||
Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
|
||||
Lukas Reschke <lukas@statuscode.ch> Lukas Reschke <lukas@owncloud.com>
|
||||
Lukas Reschke <lukas@statuscode.ch> Lukas Reschke <lukas@owncloud.org>
|
||||
@@ -321,7 +317,6 @@ Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@owncloud.com
|
||||
Rodrigo Hjort <rodrigo.hjort@gmail.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl> Roeland Jago Douma <rullzer@owncloud.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl> Roeland Douma <rullzer@users.noreply.github.com>
|
||||
Roeland Jago Douma <roeland@famdouma.nl> Roeland Jago Douma <rullzer@users.noreply.github.com>
|
||||
Roger Szabo <roger.szabo@web.de> root <roger.szabo@web.de>
|
||||
rok <brejktru@gmail.com>
|
||||
Roland Hager <roland.hager@tu-berlin.de>
|
||||
@@ -341,7 +336,6 @@ Sander <brantje@gmail.com>
|
||||
Sandro Knauß <bugs@sandroknauss.de> Sandro <hefee@taurin.(none)>
|
||||
Sascha Schmidt <realriot@realriot.de>
|
||||
Sascha Schneider <development@suntsu.org>
|
||||
Sascha Wiswedel <sascha.wiswedel@nextcloud.com> Sascha Wiswedel <wiswedel@users.noreply.github.com>
|
||||
scambra <sergio@entrecables.com>
|
||||
scolebrook <scolebrook@mac.com>
|
||||
Scott Arciszewski <scott@arciszewski.me>
|
||||
@@ -360,8 +354,6 @@ Simon Birnbach <simon@simon-birnbach.de>
|
||||
Simon Könnecke <simonkoennecke@gmail.com>
|
||||
Simon Whittaker <simon@swbh.net>
|
||||
Sjors van der Pluijm <sjors@desjors.nl> Sjors van der Pluijm <sjors@youngguns.nl>
|
||||
John Molakvoæ <skjnldsv@protonmail.com> John Molakvoæ <skjnldsv@users.noreply.github.com>
|
||||
John Molakvoæ <skjnldsv@protonmail.com> John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
|
||||
st3so <st3so@server.fake>
|
||||
Stefan <mu.stefan@googlemail.com>
|
||||
Stefan Göckeritz <admin@s-goecker.de>
|
||||
@@ -384,8 +376,6 @@ tbelau666 <thomas.belau@gmx.de>
|
||||
TheSFReader <TheSFReader@gmail.com>
|
||||
Thibaut GRIDEL <tgridel@free.fr>
|
||||
thomas <thomas@thomas-VirtualBox.(none)>
|
||||
Thomas Citharel <nextcloud@tcit.fr> Thomas Citharel <tcit@tcit.fr>
|
||||
Thomas Citharel <nextcloud@tcit.fr> Thomas Citharel <github@tcit.fr>
|
||||
Thomas Müller <thomas.mueller@tmit.eu> Thomas Mueller <thomas.mueller@tmit.eu>
|
||||
Thomas Müller <thomas.mueller@tmit.eu> Thomas Müller <DeepDiver1975@users.noreply.github.com>
|
||||
Thomas Olsen <tol@tanghus>
|
||||
@@ -411,9 +401,8 @@ Victor Dubiniuk <dubiniuk@owncloud.com> Victor Dubiniuk <victor.dubiniuk@gmail.c
|
||||
Victor Dubiniuk <dubiniuk@owncloud.com> VicDeo <dubiniuk@owncloud.com>
|
||||
Victor Dubiniuk <dubiniuk@owncloud.com> VicDeo <victor.dubiniuk@gmail.com>
|
||||
Vincent Cloutier <vincent1cloutier@gmail.com>
|
||||
Vincent Petry <vincent@nextcloud.com> Vincent Petry <PVince81@yahoo.fr>
|
||||
Vincent Petry <vincent@nextcloud.com> Vincent Petry <vincent@vvortex.site>
|
||||
Vincent Petry <vincent@nextcloud.com> Vincent Petry <pvince81@owncloud.com>
|
||||
Vincent Petry <pvince81@owncloud.com> Vincent Petry <PVince81@yahoo.fr>
|
||||
Vincent Petry <pvince81@owncloud.com> Vincent Petry <vincent@vvortex.site>
|
||||
Vinicius Cubas Brand <vinicius@eita.org.br> Vinicius Cubas Brand <viniciuscb@gmail.com>
|
||||
Vitaly Kuznetsov <vitty@altlinux.ru>
|
||||
Vladimir Sapronov <vladimir.sapronov@gmail.com>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
**/*.spec.js
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once './vendor-bin/cs-fixer/vendor/autoload.php';
|
||||
|
||||
use Nextcloud\CodingStandard\Config;
|
||||
|
||||
$config = new Config();
|
||||
$config
|
||||
->getFinder()
|
||||
->ignoreVCSIgnored(true)
|
||||
->exclude('config')
|
||||
->exclude('data')
|
||||
->notPath('3rdparty')
|
||||
->notPath('build/integration/vendor')
|
||||
->notPath('build/lib')
|
||||
->notPath('build/node_modules')
|
||||
->notPath('build/stubs')
|
||||
->notPath('composer')
|
||||
->notPath('node_modules')
|
||||
->notPath('vendor')
|
||||
->in(__DIR__);
|
||||
return $config;
|
||||
@@ -1,17 +0,0 @@
|
||||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.3.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-added-large-files
|
||||
- repo: https://github.com/nextcloud/pre-commit-php.git
|
||||
rev: 1.5.1
|
||||
hooks:
|
||||
- id: php-lint
|
||||
- id: php-cs-fixer
|
||||
files: \.(php)$
|
||||
exclude: ^(config|data|composer)
|
||||
args: []
|
||||
-48
@@ -133,51 +133,3 @@ file_filter = translationfiles/<lang>/accessibility.po
|
||||
source_file = translationfiles/templates/accessibility.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.provisioning_api]
|
||||
file_filter = translationfiles/<lang>/provisioning_api.po
|
||||
source_file = translationfiles/templates/provisioning_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.lookup_server_connector]
|
||||
file_filter = translationfiles/<lang>/lookup_server_connector.po
|
||||
source_file = translationfiles/templates/lookup_server_connector.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.dashboard-shipped-with-server]
|
||||
file_filter = translationfiles/<lang>/dashboard.po
|
||||
source_file = translationfiles/templates/dashboard.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.contactsinteraction]
|
||||
file_filter = translationfiles/<lang>/contactsinteraction.po
|
||||
source_file = translationfiles/templates/contactsinteraction.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.cloud_federation_api]
|
||||
file_filter = translationfiles/<lang>/cloud_federation_api.po
|
||||
source_file = translationfiles/templates/cloud_federation_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.admin_audit]
|
||||
file_filter = translationfiles/<lang>/admin_audit.po
|
||||
source_file = translationfiles/templates/admin_audit.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.user_status]
|
||||
file_filter = translationfiles/<lang>/user_status.po
|
||||
source_file = translationfiles/templates/user_status.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.weather_status]
|
||||
file_filter = translationfiles/<lang>/weather_status.po
|
||||
source_file = translationfiles/templates/weather_status.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: bedc2d3c21...3421f64a43
@@ -1,140 +1,87 @@
|
||||
Nextcloud is written by:
|
||||
- 1 Man Projects <reed@1manprojects.de>
|
||||
- AW-UC <git@a-wesemann.de>
|
||||
- Aaron Wood <aaronjwood@gmail.com>
|
||||
- Abijeet <abijeetpatro@gmail.com>
|
||||
- Achim Königs <garfonso@tratschtante.de>
|
||||
- Adam Williamson <awilliam@redhat.com>
|
||||
- Administrator "Administrator@WINDOWS-2012"
|
||||
- Adrian Brzezinski <adrian.brzezinski@eo.pl>
|
||||
- Aldo "xoen" Giambelluca <xoen@xoen.org>
|
||||
- Alecks Gates <alecks.g@gmail.com>
|
||||
- Alejandro Varela <epma01@gmail.com>
|
||||
- Alex Weirig <alex.weirig@technolink.lu>
|
||||
- Alexander A. Klimov <grandmaster@al2klimov.de>
|
||||
- Alexander Bergolth <leo@strike.wu.ac.at>
|
||||
- Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
- Allan Nordhøy <epost@anotheragency.no>
|
||||
- Andreas Fischer <bantu@owncloud.com>
|
||||
- Andreas Pflug <dev@admin4.org>
|
||||
- Andrew Brown <andrew@casabrown.com>
|
||||
- Andrius <andrius.kulbis@ktu.lt>
|
||||
- André Gaul <gaul@web-yard.de>
|
||||
- Anna Larch <anna@nextcloud.com>
|
||||
- Ardinis <Ardinis@users.noreply.github.com>
|
||||
- Ari Selseng <ari@selseng.net>
|
||||
- Arne Hamann <kontakt+github@arne.email>
|
||||
- Artem Kochnev <MrJeos@gmail.com>
|
||||
- Artem Sidorenko <artem@posteo.de>
|
||||
- Arthur Schiwon <blizzz@arthur-schiwon.de>
|
||||
- Artur Neumann <info@individual-it.net>
|
||||
- Ashod Nakashian <ashod.nakashian@collabora.co.uk>
|
||||
- Avior <florian.bouillon@delta-wings.net>
|
||||
- Axel Helmert <axel.helmert@luka.de>
|
||||
- Azul <azul@riseup.net>
|
||||
- Bart Visscher <bartv@thisnet.nl>
|
||||
- Bartek Przybylski <bart.p.pl@gmail.com>
|
||||
- Bastien Durel <bastien@durel.org>
|
||||
- Bastien Ho <bastienho@urbancube.fr>
|
||||
- Benjamin Diele <benjamin@diele.be>
|
||||
- Benjamin Liles <benliles@arch.tamu.edu>
|
||||
- Bernd Stellwag <burned@zerties.org>
|
||||
- Bernhard Ostertag <bernieo.code@gmx.de>
|
||||
- Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
- Bernhard Reiter <ockham@raz.or.at>
|
||||
- Birk Borkason <daniel.niccoli@gmail.com>
|
||||
- Bjoern Schiessle <bjoern@schiessle.org>
|
||||
- Björn Schießle <bjoern@schiessle.org>
|
||||
- Blaok <i@blaok.me>
|
||||
- Boris Rybalkin <ribalkin@gmail.com>
|
||||
- Borjan Tchakaloff <borjan@tchakaloff.fr>
|
||||
- Brad Rubenstein <brad@wbr.tech>
|
||||
- Brandon Kirsch <brandonkirsch@github.com>
|
||||
- Branko Kokanovic <branko@kokanovic.org>
|
||||
- Brent Bloxam <brent.bloxam@gmail.com>
|
||||
- Brice Maron <brice@bmaron.net>
|
||||
- Byron Marohn <combustible@live.com>
|
||||
- Carla Schroder <carla@owncloud.com>
|
||||
- Carlos Cerrillo <ccerrillo@gmail.com>
|
||||
- Carlos Ferreira <carlos@reendex.com>
|
||||
- Carsten Wiedmann <carsten_sttgt@gmx.de>
|
||||
- Chih-Hsuan Yen <yan12125@gmail.com>
|
||||
- Christian <16852529+cviereck@users.noreply.github.com>
|
||||
- Carlos Damken <carlos@damken.com>
|
||||
- Christian Berendt <berendt@b1-systems.de>
|
||||
- Christian Jürges <christian@eqipe.ch>
|
||||
- Christian Kampka <christian@kampka.net>
|
||||
- Christian Oliff <christianoliff@yahoo.com>
|
||||
- Christian Weiske <cweiske@cweiske.de>
|
||||
- Christoph Schaefer "christophł@wolkesicher.de"
|
||||
- Christoph Seitz <christoph.seitz@posteo.de>
|
||||
- Christoph Wickert <cwickert@suse.de>
|
||||
- Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
- Christoph Wurst <christoph@owncloud.com>
|
||||
- Christopher Bartz <bartz@dkrz.de>
|
||||
- Christopher Schäpers <kondou@ts.unde.re>
|
||||
- Christopher T. Johnson <ctjctj@gmail.com>
|
||||
- Claas Augner <github@caugner.de>
|
||||
- Clark Tomlinson <fallen013@gmail.com>
|
||||
- Clement Wong <git@clement.hk>
|
||||
- Cornelius Kölbel <cornelius.koelbel@netknights.it>
|
||||
- Cthulhux <git@tuxproject.de>
|
||||
- Damjan Georgievski <gdamjan@gmail.com>
|
||||
- Dan Callahan <dan.callahan@gmail.com>
|
||||
- Dan Bartram <daneybartram@gmail.com>
|
||||
- Daniel Calviño Sánchez <danxuliu@gmail.com>
|
||||
- Daniel Hansson <daniel@techandme.se>
|
||||
- Daniel Jagszent <daniel@jagszent.de>
|
||||
- Daniel Kesselberg <mail@danielkesselberg.de>
|
||||
- Daniel Rudolf <github.com@daniel-rudolf.de>
|
||||
- Daniel Schneider <daniel@schneidoa.de>
|
||||
- Dariusz Olszewski <starypatyk@users.noreply.github.com>
|
||||
- Daniel Molkentin <daniel@molkentin.de>
|
||||
- Daniel Tosello <tosello.daniel@gmail.com>
|
||||
- David Prévot <taffit@debian.org>
|
||||
- David Toledo <dtoledo@solidgear.es>
|
||||
- Denis Mosolov <denismosolov@gmail.com>
|
||||
- Derek <derek.kelly27@gmail.com>
|
||||
- Dominik Schmidt <dev@dominik-schmidt.de>
|
||||
- Donquixote <marjunebatac@gmail.com>
|
||||
- Elijah Martin-Merrill <elijah@nyp-itsours.com>
|
||||
- Eric Masseran <rico.masseran@gmail.com>
|
||||
- Evgeny Golyshev <eugulixes@gmail.com>
|
||||
- Fabian Henze <flyser42@gmx.de>
|
||||
- Fabrizio Steiner <fabrizio.steiner@gmail.com>
|
||||
- Felix A. Epp <work@felixepp.de>
|
||||
- Felix Epp <work@felixepp.de>
|
||||
- Felix Heidecke <felix@heidecke.me>
|
||||
- Felix Moeller <mail@felixmoeller.de>
|
||||
- Felix Nieuwenhuizen <felix@tdlrali.com>
|
||||
- Felix Nüsse <Felix.nuesse@t-online.de>
|
||||
- Felix Rupp <github@felixrupp.com>
|
||||
- Filis Futsarov <filisko@users.noreply.github.com>
|
||||
- Florent <florent@coppint.com>
|
||||
- Florian Schunk <florian.schunk@rwth-aachen.de>
|
||||
- Florin Peter <github@florin-peter.de>
|
||||
- Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
|
||||
- Frank Isemann <frank@isemann.name>
|
||||
- Frank Karlitschek <frank@karlitschek.de>
|
||||
- François Freitag <mail@franek.fr>
|
||||
- François Kubler <francois@kubler.org>
|
||||
- Frederic Werner <frederic-github@werner-net.work>
|
||||
- Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
|
||||
- Gary Kim <gary@garykim.dev>
|
||||
- Gadzy <dev@gadzy.fr>
|
||||
- Georg Ehrke <oc.list@georgehrke.com>
|
||||
- GrayFix <grayfix@gmail.com>
|
||||
- Greta Doci <gretadoci@gmail.com>
|
||||
- GretaD <gretadoci@gmail.com>
|
||||
- Guillaume COMPAGNON <gcompagnon@outlook.com>
|
||||
- Guillaume Virlet <github@virlet.org>
|
||||
- Hasso Tepper <hasso@zone.ee>
|
||||
- Hemanth Kumar Veeranki <hems.india1997@gmail.com>
|
||||
- Hendrik Leppelsack <hendrik@leppelsack.de>
|
||||
- Holger Hees <holger.hees@gmail.com>
|
||||
- Ilja Neumann <ineumann@owncloud.com>
|
||||
- Individual IT Services <info@individual-it.net>
|
||||
- Iscle <albertiscle9@gmail.com>
|
||||
- J0WI <J0WI@users.noreply.github.com>
|
||||
- Jaakko Salo <jaakkos@gmail.com>
|
||||
- Jacob Neplokh <me@jacobneplokh.com>
|
||||
- Jakob Sack <mail@jakobsack.de>
|
||||
- Jakub Onderka <ahoj@jakubonderka.cz>
|
||||
- James Letendre <James.Letendre@gmail.com>
|
||||
- Jan C. Borchardt <hey@jancborchardt.net>
|
||||
- Jan-Christoph Borchardt <hey@jancborchardt.net>
|
||||
- Jan-Philipp Litza <jplitza@users.noreply.github.com>
|
||||
- Janis Köhr <janis.koehr@novatec-gmbh.de>
|
||||
- Jared Boone <jared.boone@gmail.com>
|
||||
- Jarkko Lehtoranta <devel@jlranta.com>
|
||||
- Jean-Louis Dupond <jean-louis@dupond.be>
|
||||
- Jens-Christian Fischer <jens-christian.fischer@switch.ch>
|
||||
@@ -142,126 +89,89 @@ Nextcloud is written by:
|
||||
- Joachim Bauch <bauch@struktur.de>
|
||||
- Joachim Sokolowski <github@sokolowski.org>
|
||||
- Joas Schilling <coding@schilljs.com>
|
||||
- Joel S <joel.devbox@protonmail.com>
|
||||
- Johan Björk <johanimon@gmail.com>
|
||||
- Johannes Ernst <jernst@indiecomputing.com>
|
||||
- Johannes Leuker <j.leuker@hosting.de>
|
||||
- Johannes Riedel <joeried@users.noreply.github.com>
|
||||
- Johannes Schlichenmaier <johannes@schlichenmaier.info>
|
||||
- Johannes Willnecker <johannes@willnecker.com>
|
||||
- John Molakvoæ <skjnldsv@protonmail.com>
|
||||
- Jonas Rittershofer <jotoeri@users.noreply.github.com>
|
||||
- Jonas Sulzer <jonas@violoncello.ch>
|
||||
- John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
|
||||
- John Molakvoæ <skjnldsv@users.noreply.github.com>
|
||||
- Jonny007-MKD <1-23-4-5@web.de>
|
||||
- Jos Poortvliet <jos@opensuse.org>
|
||||
- Jose Quinteiro <github@quinteiro.org>
|
||||
- Juan Pablo Villafañez <jvillafanez@solidgear.es>
|
||||
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
|
||||
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
|
||||
- Julien Lutran <julien.lutran@corp.ovh.com>
|
||||
- Julien Veyssier <eneiluj@posteo.net>
|
||||
- Julius Haertl <jus@bitgrid.net>
|
||||
- Julius Härtl <jus@bitgrid.net>
|
||||
- Jörn Friedrich Dreyer <jfd@butonic.de>
|
||||
- Jürgen Haas <juergen@paragon-es.de>
|
||||
- KB7777 <k.burkowski@gmail.com>
|
||||
- Kamil Domanski <kdomanski@kdemail.net>
|
||||
- Kawohl <john@owncloud.com>
|
||||
- Kenneth Newwood <kenneth@newwood.name>
|
||||
- Kevin Lanni <therealklanni@gmail.com>
|
||||
- Kevin Ndung'u <kevgathuku@gmail.com>
|
||||
- Kim Brose <kim.brose@rwth-aachen.de>
|
||||
- Klaas Freitag <freitag@owncloud.com>
|
||||
- Knut Ahlers <knut@ahlers.me>
|
||||
- Ko- <k.stoffelen@cs.ru.nl>
|
||||
- Konrad Bucheli <kb@open.ch>
|
||||
- Kristof Provost <github@sigsegv.be>
|
||||
- Kyle Fazzari <kyrofa@ubuntu.com>
|
||||
- Lars <winnetou+github@catolic.de>
|
||||
- Lars Knickrehm <mail@lars-sh.de>
|
||||
- Laurens Post <Crote@users.noreply.github.com>
|
||||
- Laurens Post <lkpost@scept.re>
|
||||
- Lauris Binde <laurisb@users.noreply.github.com>
|
||||
- Lennart Rosam <hello@takuto.de>
|
||||
- Lennart Rosam <lennart.rosam@medien-systempartner.de>
|
||||
- Leon Klingele <git@leonklingele.de>
|
||||
- Leon Klingele <leon@struktur.de>
|
||||
- Liam Dennehy <liam@wiemax.net>
|
||||
- Liam JACK <liamjack@users.noreply.github.com>
|
||||
- Lionel Elie Mamane <lionel@mamane.lu>
|
||||
- Loki3000 <github@labcms.ru>
|
||||
- Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
|
||||
- Loïc Hermann <loic.hermann@sciam.fr>
|
||||
- Lukas Reschke <lukas@statuscode.ch>
|
||||
- Lukas Stabe <lukas@stabe.de>
|
||||
- Luke Policinski <lpolicinski@gmail.com>
|
||||
- Lyonel Vincent <lyonel@ezix.org>
|
||||
- Magnus Walbeck <mw@mwalbeck.org>
|
||||
- Marcel Klehr <mklehr@gmx.net>
|
||||
- Manish Bisht <manish.bisht490@gmail.com>
|
||||
- Marcel Waldvogel <marcel.waldvogel@uni-konstanz.de>
|
||||
- Marco Ziech <marco@ziech.net>
|
||||
- Marin Treselj <marin@pixelipo.com>
|
||||
- Mario Danic <mario@lovelyhq.com>
|
||||
- Mario Kolling <mario.kolling@serpro.gov.br>
|
||||
- Marius Blüm <marius@lineone.io>
|
||||
- Marius David Wieschollek <git.public@mdns.eu>
|
||||
- Markus Goetz <markus@woboq.com>
|
||||
- Markus Staab <markus.staab@redaxo.de>
|
||||
- MartB <mart.b@outlook.de>
|
||||
- Martin <github@diemattels.at>
|
||||
- Martin Konrad <info@martin-konrad.net>
|
||||
- Martin Konrad <konrad@frib.msu.edu>
|
||||
- Martin Mattel <martin.mattel@diemattels.at>
|
||||
- Marvin Thomas Rabe <mrabe@marvinrabe.de>
|
||||
- Masaki Kawabata Neto <masaki.kawabata@gmail.com>
|
||||
- MasterOfDeath <rinat.gumirov@mail.ru>
|
||||
- Matthew Setter <matthew@matthewsetter.com>
|
||||
- Max Kovalenko <mxss1998@yandex.ru>
|
||||
- Maxence Lange <maxence@artificial-owl.com>
|
||||
- Maxence Lange <maxence@nextcloud.com>
|
||||
- Maxence Lange <maxence@pontapreta.net>
|
||||
- Maxopoly <max@dermax.org>
|
||||
- MichaIng <28480705+MichaIng@users.noreply.github.com>
|
||||
- MichaIng <micha@dietpi.com>
|
||||
- Michael Gapczynski <GapczynskiM@gmail.com>
|
||||
- Michael Göhler <somebody.here@gmx.de>
|
||||
- Michael Jobst <mjobst+github@tecratech.de>
|
||||
- Michael Jobst <mjobst@necls.com>
|
||||
- Michael Kuhn <michael@ikkoku.de>
|
||||
- Michael Letzgus <www@chronos.michael-letzgus.de>
|
||||
- Michael Roitzsch <reactorcontrol@icloud.com>
|
||||
- Michael Weimann <mail@michael-weimann.eu>
|
||||
- Michael Zamot <michael@zamot.io>
|
||||
- Michał Węgrzynek <michal.wegrzynek@malloc.com.pl>
|
||||
- Michael Roth <michael.roth@rz.uni-augsburg.de>
|
||||
- Michael U <mdusher@users.noreply.github.com>
|
||||
- Miguel Prokop <miguel.prokop@vtu.com>
|
||||
- Mikael Hammarin <mikael@try2.se>
|
||||
- Miha Frangez <miha.frangez@gmail.com>
|
||||
- Mitar <mitar.git@tnode.com>
|
||||
- Mohammed Abdellatif <m.latief@gmail.com>
|
||||
- Morris Jobke <hey@morrisjobke.de>
|
||||
- Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
||||
- Nick Sweeting <git@sweeting.me>
|
||||
- Nicolai Ehemann <en@enlightened.de>
|
||||
- Nicolas Grekas <nicolas.grekas@gmail.com>
|
||||
- Nicolas SIMIDE <2083596+dems54@users.noreply.github.com>
|
||||
- Nils <git@to.nilsschnabel.de>
|
||||
- Nils Wittenbrink <nilswittenbrink@web.de>
|
||||
- Nina Pypchenko <22447785+nina-py@users.noreply.github.com>
|
||||
- Nmz <nemesiz@nmz.lt>
|
||||
- Noveen Sachdeva <noveen.sachdeva@research.iiit.ac.in>
|
||||
- Ole Ostergaard <ole.c.ostergaard@gmail.com>
|
||||
- Ole Ostergaard <ole.ostergaard@knime.com>
|
||||
- Oliver Gasser <oliver.gasser@gmail.com>
|
||||
- Oliver Kohl D.Sc. <oliver@kohl.bz>
|
||||
- Oliver Wegner <void1976@gmail.com>
|
||||
- Olivier Mehani <shtrom@ssji.net>
|
||||
- Olivier Paroz <github@oparoz.com>
|
||||
- Owen Winkler <a_github@midnightcircus.com>
|
||||
- Pascal de Bruijn <pmjdebruijn@pcode.nl>
|
||||
- Patrick Paysant <patrick.paysant@linagora.com>
|
||||
- Patrick Paysant <ppaysant@linagora.com>
|
||||
- Patrik Kernstock <info@pkern.at>
|
||||
- Pauli Järvinen <pauli.jarvinen@gmail.com>
|
||||
- Pavel Krasikov <klonishe@gmail.com>
|
||||
- Pellaeon Lin <nfsmwlin@gmail.com>
|
||||
- Peter Kubica <peter@kubica.ch>
|
||||
- Petr Svoboda <weits666@gmail.com>
|
||||
- Phiber2000 <phiber2000@gmx.de>
|
||||
- Phil Davis <phil.davis@inf.org>
|
||||
- Philipp Kapfer <philipp.kapfer@gmx.at>
|
||||
- Philipp Schaffrath <github@philipp.schaffrath.email>
|
||||
- Philipp Staiger <philipp@staiger.it>
|
||||
- Philippe Jung <phil.jung@free.fr>
|
||||
- Pierre Ozoux <pierre@ozoux.net>
|
||||
- Pierre Rudloff <contact@rudloff.pro>
|
||||
@@ -270,200 +180,117 @@ Nextcloud is written by:
|
||||
- Piotr Mrowczynski <mrow4a@yahoo.com>
|
||||
- Piotr Mrówczyński <mrow4a@yahoo.com>
|
||||
- Qingping Hou <dave2008713@gmail.com>
|
||||
- Raghu Nayyar <hey@raghunayyar.com>
|
||||
- Raghu Nayyar <me@iraghu.com>
|
||||
- Ralph Krimmel <rkrimme1@gwdg.de>
|
||||
- Ramiro Aparicio <rapariciog@gmail.com>
|
||||
- Randolph Carter <RandolphCarter@fantasymail.de>
|
||||
- Rayn0r <andrew@ilpss8.myfirewall.org>
|
||||
- RealRancor <Fisch.666@gmx.de>
|
||||
- RealRancor <fisch.666@gmx.de>
|
||||
- Rello <Rello@users.noreply.github.com>
|
||||
- Remco Brenninkmeijer <requist1@starmail.nl>
|
||||
- Richard Steinmetz <richard@steinmetz.cloud>
|
||||
- Rinat Gumirov <rinat.gumirov@mail.ru>
|
||||
- Robert Dailey <rcdailey@gmail.com>
|
||||
- Renaud Fortier <Renaud.Fortier@fsaa.ulaval.ca>
|
||||
- Robert Scheck <robert@fedoraproject.org>
|
||||
- Robin Appelman <robin@icewind.nl>
|
||||
- Robin McCorkell <robin@mccorkell.me.uk>
|
||||
- Robin Müller <coder-hugo@users.noreply.github.com>
|
||||
- Roeland Jago Douma <roeland@famdouma.nl>
|
||||
- Roger Szabo <roger.szabo@web.de>
|
||||
- Roland Tapken <roland@bitarbeiter.net>
|
||||
- Romain Rivière <lecoyote@lecoyote.org>
|
||||
- Roman Kreisel <mail@romankreisel.de>
|
||||
- Ross Nicoll <jrn@jrn.me.uk>
|
||||
- Ruben Homs <ruben@homs.codes>
|
||||
- RussellAult <RussellAult@users.noreply.github.com>
|
||||
- Rémy Jacquin <remy@remyj.fr>
|
||||
- S. Cat <33800996+sparrowjack63@users.noreply.github.com>
|
||||
- SA <stephen@mthosting.net>
|
||||
- Sam Bull <aa6bs0@sambull.org>
|
||||
- Sam Tuke <mail@samtuke.com>
|
||||
- Samuel <faust64@gmail.com>
|
||||
- Samuel CHEMLA <chemla.samuel@gmail.com>
|
||||
- Sander Ruitenbeek <s.ruitenbeek@getgoing.nl>
|
||||
- Sander <brantje@gmail.com>
|
||||
- Sander Ruitenbeek <sander@grids.be>
|
||||
- Sandro Lutz <sandro.lutz@temparus.ch>
|
||||
- Sascha Sambale <mastixmc@gmail.com>
|
||||
- Sascha Wiswedel <sascha.wiswedel@nextcloud.com>
|
||||
- Scott Dutton <exussum12@users.noreply.github.com>
|
||||
- Scott Dutton <scott@exussum.co.uk>
|
||||
- Scott Shambarger <devel@shambarger.net>
|
||||
- Sean Comeau <sean@ftlnetworks.ca>
|
||||
- Sean Molenaar <sean@seanmolenaar.eu>
|
||||
- Sebastian Döll <sebastian.doell@libasys.de>
|
||||
- Sebastian Steinmetz <462714+steiny2k@users.noreply.github.com>
|
||||
- Sebastian Steinmetz <me@sebastiansteinmetz.ch>
|
||||
- Sebastian Wessalowski <sebastian@wessalowski.org>
|
||||
- Semih Serhat Karakaya <karakayasemi@itu.edu.tr>
|
||||
- Senorsen <senorsen.zhang@gmail.com>
|
||||
- Serge Martin <edb@sigluy.net>
|
||||
- Sergej Nikolaev <kinolaev@gmail.com>
|
||||
- Sergej Pupykin <pupykin.s@gmail.com>
|
||||
- Sergey Shliakhov <husband.sergey@gmail.com>
|
||||
- Sergio Bertolin <sbertolin@solidgear.es>
|
||||
- Sergio Bertolín <sbertolin@solidgear.es>
|
||||
- Simon Könnecke <simonkoennecke@gmail.com>
|
||||
- Simon Spannagel <simonspa@kth.se>
|
||||
- Simounet <contact@simounet.net>
|
||||
- Sjors van der Pluijm <sjors@desjors.nl>
|
||||
- Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
|
||||
- Stefan Rado <owncloud@sradonia.net>
|
||||
- Stefan Schneider <stefan.schneider@squareweave.com.au>
|
||||
- Stefan Weiberg <sweiberg@suse.com>
|
||||
- Stefan Weil <sw@weilnetz.de>
|
||||
- Steffen Lindner <mail@steffen-lindner.de>
|
||||
- Stephan Müller <mail@stephanmueller.eu>
|
||||
- Stephan Peijnik <speijnik@anexia-it.com>
|
||||
- Stephen Cuppett <steve@cuppett.com>
|
||||
- Steven Bühner <buehner@me.com>
|
||||
- Sujith H <sharidasan@owncloud.com>
|
||||
- Sujith Haridasan <Sujith_Haridasan@mentor.com>
|
||||
- Sujith Haridasan <sujith.h@gmail.com>
|
||||
- Sven Strickroth <email@cs-ware.de>
|
||||
- Sylvia van Os <sylvia@hackerchick.me>
|
||||
- Tekhnee <info@tekhnee.org>
|
||||
- Temtaime <temtaime@gmail.com>
|
||||
- Thibaut GRIDEL <tgridel@free.fr>
|
||||
- Thomas Citharel <nextcloud@tcit.fr>
|
||||
- Thomas Citharel <tcit@tcit.fr>
|
||||
- Thomas Ebert <thomas.ebert@usability.de>
|
||||
- Thomas Müller <thomas.mueller@tmit.eu>
|
||||
- Thomas Pulzer <t.pulzer@kniel.de>
|
||||
- Thomas Tanghus <thomas@tanghus.net>
|
||||
- Tiago Flores <tiago.flores@yahoo.com.br>
|
||||
- Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
|
||||
- Tim Dettrick <t.dettrick@uq.edu.au>
|
||||
- Tim Obert <tobert@w-commerce.de>
|
||||
- Tim Terhorst <mynamewastaken+gitlab@gmail.com>
|
||||
- TimObert <tobert@w-commerce.de>
|
||||
- Timo Förster <tfoerster@webfoersterei.de>
|
||||
- Tobia De Koninck <LEDfan@users.noreply.github.com>
|
||||
- Tobia De Koninck <tobia@ledfan.be>
|
||||
- Tobias Brunner <tobias@tobru.ch>
|
||||
- Tobias Kaminsky <tobias@kaminsky.me>
|
||||
- Tobias Perschon <tobias@perschon.at>
|
||||
- Tom Grant <TomG736@users.noreply.github.com>
|
||||
- Tom Needham <tom@owncloud.com>
|
||||
- Tomasz Grobelny <tomasz@grobelny.net>
|
||||
- Tomasz Paluszkiewicz <tomasz.paluszkiewicz@gmail.com>
|
||||
- Tor Lillqvist <tml@collabora.com>
|
||||
- Unknown <anpz.asutp@gmail.com>
|
||||
- Valdnet <47037905+Valdnet@users.noreply.github.com>
|
||||
- Torben Dannhauer <torben@dannhauer.de>
|
||||
- Ujjwal Bhardwaj <ujjwalb1996@gmail.com>
|
||||
- Victor Dubiniuk <dubiniuk@owncloud.com>
|
||||
- Viktor Szépe <viktor@szepe.net>
|
||||
- Vincent Chan <plus.vincchan@gmail.com>
|
||||
- Vincent Petry <vincent@nextcloud.com>
|
||||
- Vincent Cloutier <vincent1cloutier@gmail.com>
|
||||
- Vincent Petry <pvince81@owncloud.com>
|
||||
- Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
- Vitor Mattos <vitor@php.rio>
|
||||
- Vlastimil Pecinka <pecinka@email.cz>
|
||||
- Volkan Gezer <volkangezer@gmail.com>
|
||||
- Volker <skydiablo@gmx.net>
|
||||
- William Pain <pain.william@gmail.com>
|
||||
- Xheni Myrtaj <myrtajxheni@gmail.com>
|
||||
- Xuanwo <xuanwo@yunify.com>
|
||||
- acsfer <carlos@reendex.com>
|
||||
- adrien <adrien.waksberg@believedigital.com>
|
||||
- aler9 <46489434+aler9@users.noreply.github.com>
|
||||
- alexweirig <alex.weirig@technolink.lu>
|
||||
- b108@volgograd "b108@volgograd"
|
||||
- bladewing <lukas@ifflaender-family.de>
|
||||
- bline <scottbeck@gmail.com>
|
||||
- blizzz <blizzz@arthur-schiwon.de>
|
||||
- brad2014 <brad2014@users.noreply.github.com>
|
||||
- brumsel <brumsel@losecatcher.de>
|
||||
- call-me-matt <nextcloud@matthiasheinisch.de>
|
||||
- castillo92 <37965565+castillo92@users.noreply.github.com>
|
||||
- cetra3 <peter@parashift.com.au>
|
||||
- cmeh <cmeh@users.noreply.github.com>
|
||||
- comradekingu <epost@anotheragency.no>
|
||||
- coderkun <olli@coderkun.de>
|
||||
- dartcafe <github@dartcafe.de>
|
||||
- davidgumberg <davidnoizgumberg@gmail.com>
|
||||
- davitol <dtoledo@solidgear.es>
|
||||
- dems54 <2083596+dems54@users.noreply.github.com>
|
||||
- derkostka <sebastian.kostka@gmail.com>
|
||||
- duritong <peter.meier+github@immerda.ch>
|
||||
- eduardo <eduardo@vnexu.net>
|
||||
- eleith <online+github@eleith.com>
|
||||
- enoch <lanxenet@hotmail.com>
|
||||
- essys <essys@users.noreply.github.com>
|
||||
- exner104 <59639860+exner104@users.noreply.github.com>
|
||||
- fabian <fabian@web2.0-apps.de>
|
||||
- felixboehm <felix@webhippie.de>
|
||||
- fnuesse <felix.nuesse@t-online.de>
|
||||
- fnuesse <fnuesse@techfak.uni-bielefeld.de>
|
||||
- helix84 <helix84@centrum.sk>
|
||||
- hkjolhede <hkjolhede@gmail.com>
|
||||
- hoellen <dev@hoellen.eu>
|
||||
- iamfool <praveenraonp@gmail.com>
|
||||
- ideaship <ideaship@users.noreply.github.com>
|
||||
- j-ed <juergen@eisfair.org>
|
||||
- j3l11234 <297259024@qq.com>
|
||||
- jaltek <jaltek@mailbox.org>
|
||||
- jknockaert <jasper@knockaert.nl>
|
||||
- josh4trunks <joshruehlig@gmail.com>
|
||||
- justin-sleep <justin@quarterfull.com>
|
||||
- karakayasemi <karakayasemi@itu.edu.tr>
|
||||
- kevin147147 <kevintamool@gmail.com>
|
||||
- korelstar <korelstar@users.noreply.github.com>
|
||||
- leith abdulla <online-nextcloud@eleith.com>
|
||||
- lui87kw <lukas.ifflaender@uni-wuerzburg.de>
|
||||
- lynn-stephenson <lynn.stephenson@protonmail.com>
|
||||
- macjohnny <estebanmarin@gmx.ch>
|
||||
- marco44 <cousinmarc@gmail.com>
|
||||
- martin-rueegg <martin.rueegg@metaworx.ch>
|
||||
- martin.mattel@diemattels.at <martin.mattel@diemattels.at>
|
||||
- martink-p <47943787+martink-p@users.noreply.github.com>
|
||||
- matt <34400929+call-me-matt@users.noreply.github.com>
|
||||
- medcloud <42641918+medcloud@users.noreply.github.com>
|
||||
- michaelletzgus <michaelletzgus@users.noreply.github.com>
|
||||
- michag86 <micha_g@arcor.de>
|
||||
- mmccarn <mmccarn-github@mmsionline.us>
|
||||
- nacho <nacho@ownyourbits.com>
|
||||
- nhirokinet <nhirokinet@nhiroki.net>
|
||||
- nik gaffney <nik@fo.am>
|
||||
- nishiki <nishiki@yaegashi.fr>
|
||||
- noiob <8197071+noiob@users.noreply.github.com>
|
||||
- noveens <noveen.sachdeva@research.iiit.ac.in>
|
||||
- npmbuildbot[bot] "npmbuildbot[bot]@users.noreply.github.com"
|
||||
- onehappycat <one.happy.cat@gmx.com>
|
||||
- oparoz <owncloud@interfasys.ch>
|
||||
- phisch <git@philippschaffrath.de>
|
||||
- rakekniven <mark.ziegler@rakekniven.de>
|
||||
- robottod <83244577+robottod@users.noreply.github.com>
|
||||
- root "root@oc.(none)"
|
||||
- root <root@localhost.localdomain>
|
||||
- rubo77 <github@r.z11.de>
|
||||
- sammo2828 <sammo2828@gmail.com>
|
||||
- scambra <sergio@entrecables.com>
|
||||
- scolebrook <scolebrook@mac.com>
|
||||
- shkdee <louis.traynard@m4x.org>
|
||||
- simonspa <1677436+simonspa@users.noreply.github.com>
|
||||
- ste101 <stephan_bauer@gmx.de>
|
||||
- sualko <klaus@jsxc.org>
|
||||
- szaimen <szaimen@e.mail.de>
|
||||
- tbartenstein <tbartenstein@users.noreply.github.com>
|
||||
- tbelau666 <thomas.belau@gmx.de>
|
||||
- tgrant <tom.grant760@gmail.com>
|
||||
- timm2k <timm2k@gmx.de>
|
||||
- tux-rampage <tux-rampage@users.noreply.github.com>
|
||||
- v1r0x <vinzenz.rosenkranz@gmail.com>
|
||||
- vkuimov "vkuimov@nextcloud"
|
||||
- voxsim "Simon Vocella"
|
||||
- waleczny <michal@walczak.xyz>
|
||||
- zulan <git@zulan.net>
|
||||
- Łukasz Buśko <busko.lukasz@pm.me>
|
||||
|
||||
With help from many libraries and frameworks including:
|
||||
Open Collaboration Services
|
||||
|
||||
@@ -9,7 +9,6 @@ Licensing of components:
|
||||
* User: AGPL
|
||||
* XML/RPC: MIT / PHP
|
||||
* Elementary filetype icons: GPL v3+
|
||||
* Material UI icons: APACHE LICENSE, VERSION 2.0
|
||||
All unmodified files from these and other sources retain their original copyright
|
||||
and license notices: see the relevant individual files.
|
||||
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
all: clean dev-setup build-js-production
|
||||
all: dev-setup build-js-production
|
||||
|
||||
# Dev env management
|
||||
dev-setup: clean npm-init
|
||||
dev-setup: clean-dev npm-init
|
||||
|
||||
npm-init:
|
||||
npm ci
|
||||
npm install
|
||||
|
||||
npm-update:
|
||||
npm update
|
||||
|
||||
# Building
|
||||
build-js:
|
||||
npm run dev
|
||||
|
||||
@@ -19,48 +17,6 @@ build-js-production:
|
||||
watch-js:
|
||||
npm run watch
|
||||
|
||||
# Linting
|
||||
lint-fix:
|
||||
npm run lint:fix
|
||||
clean-dev:
|
||||
rm -rf node_modules
|
||||
|
||||
lint-fix-watch:
|
||||
npm run lint:fix-watch
|
||||
|
||||
# Cleaning
|
||||
clean:
|
||||
rm -rf apps/accessibility/js/
|
||||
rm -rf apps/comments/js/
|
||||
rm -rf apps/dashboard/js/
|
||||
rm -rf apps/dav/js/
|
||||
rm -rf apps/files/js/dist/
|
||||
rm -rf apps/files_sharing/js/dist/
|
||||
rm -rf apps/files_trashbin/js/
|
||||
rm -rf apps/files_versions/js/
|
||||
rm -rf apps/oauth2/js/
|
||||
rm -rf apps/settings/js/vue-*
|
||||
rm -rf apps/systemtags/js/systemtags.*
|
||||
rm -rf apps/twofactor_backupcodes/js
|
||||
rm -rf apps/updatenotification/js/updatenotification.*
|
||||
rm -rf apps/user_status/js/
|
||||
rm -rf apps/weather_status/js/
|
||||
rm -rf apps/workflowengine/js/
|
||||
rm -rf core/js/dist
|
||||
|
||||
clean-git: clean
|
||||
git checkout -- apps/accessibility/js/
|
||||
git checkout -- apps/comments/js/
|
||||
git checkout -- apps/dashboard/js/
|
||||
git checkout -- apps/dav/js/
|
||||
git checkout -- apps/files/js/dist/
|
||||
git checkout -- apps/files_sharing/js/dist/
|
||||
git checkout -- apps/files_trashbin/js/
|
||||
git checkout -- apps/files_versions/js/
|
||||
git checkout -- apps/oauth2/js/
|
||||
git checkout -- apps/settings/js/vue-*
|
||||
git checkout -- apps/systemtags/js/systemtags.*
|
||||
git checkout -- apps/twofactor_backupcodes/js
|
||||
git checkout -- apps/updatenotification/js/updatenotification.*
|
||||
git checkout -- apps/user_status/js/
|
||||
git checkout -- apps/weather_status/js/
|
||||
git checkout -- apps/workflowengine/js/
|
||||
git checkout -- core/js/dist
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# Nextcloud Server ☁
|
||||
[](https://scrutinizer-ci.com/g/nextcloud/server/?branch=stable23)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/209)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud-dev)
|
||||
|
||||
**A safe home for all your data.**
|
||||
|
||||
@@ -12,24 +14,24 @@
|
||||
* 📁 **Access your Data** You can store your files, contacts, calendars and more on a server of your choosing.
|
||||
* 🔄 **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices.
|
||||
* 🙌 **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
|
||||
* 🚀 **Expandable with hundreds of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail), [Video Chat](https://github.com/nextcloud/spreed) and all those you can discover in our [App Store](https://apps.nextcloud.com)
|
||||
* 🚀 **Expandable with dozens of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail) and all those you can discover in our [App Store](https://apps.nextcloud.com)
|
||||
* 🔒 **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
|
||||
|
||||
You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
|
||||
You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your Enterprise? [**Learn about all our Features**](https://nextcloud.com/features).
|
||||
|
||||
## Get your Nextcloud 🚚
|
||||
|
||||
- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) at one of our providers either through our website or through the apps directly.
|
||||
- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) either through our website or through the apps directly.
|
||||
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your own hardware or by using one of our ready to use **appliances**
|
||||
- 📦 Buy one of the [awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
|
||||
- 🏢 Find a [service **provider**](https://nextcloud.com/providers/) who hosts Nextcloud for you or your company
|
||||
|
||||
Enterprise? Public Sector or Education user? You may want to have a look into [**Nextcloud Enterprise**](https://nextcloud.com/enterprise/) provided by Nextcloud GmbH.
|
||||
Enterprise? Public Sector or Education user? You may want to have a look into the [**Enterprise Support Subscription**](https://nextcloud.com/enterprise/) provided by the Nextcloud GmbH.
|
||||
|
||||
## Get in touch 💬
|
||||
|
||||
* [📋 Forum](https://help.nextcloud.com)
|
||||
* [👥 Facebook](https://www.facebook.com/nextclouders)
|
||||
* [👥 Facebook](https://facebook.com/nextclouders)
|
||||
* [🐣 Twitter](https://twitter.com/Nextclouders)
|
||||
* [🐘 Mastodon](https://mastodon.xyz/@nextcloud)
|
||||
|
||||
@@ -43,7 +45,7 @@ There are many ways to contribute, of which development is only one! Find out [h
|
||||
|
||||
### Development setup 👩💻
|
||||
|
||||
1. 🚀 [Set up your local development environment](https://docs.nextcloud.com/server/latest/developer_manual/getting_started/devenv.html)
|
||||
1. 🚀 [Set up your local development environment](https://docs.nextcloud.com/server/latest/developer_manual/general/devenv.html)
|
||||
2. 🐛 [Pick a good first issue](https://github.com/nextcloud/server/labels/good%20first%20issue)
|
||||
3. 👩🔧 Create a branch and make your changes. Remember to sign off your commits using `git commit -sm "Your commit message"`
|
||||
4. ⬆ Create a [pull request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) and `@mention` the people from the issue to review
|
||||
@@ -56,13 +58,12 @@ Several apps that are included by default in regular releases such as [First run
|
||||
|
||||
Otherwise, git checkouts can be handled the same as release archives, by using the `stable*` branches. Note they should never be used on production systems.
|
||||
|
||||
### Working with front-end code 🏗
|
||||
|
||||
#### Building
|
||||
### Building front-end code 🏗
|
||||
|
||||
We are moving more and more towards using Vue.js in the frontend, starting with Settings. For building the code on changes, use these terminal commands in the root folder:
|
||||
We move more and more towards using Vue.js in the frontend, starting with Settings. For building the code on changes, use these terminal commands in the root folder:
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
# install dependencies
|
||||
make dev-setup
|
||||
|
||||
@@ -76,45 +77,20 @@ make watch-js
|
||||
make build-js-production
|
||||
```
|
||||
|
||||
#### Committing changes
|
||||
|
||||
**When making changes, also commit the compiled files!**
|
||||
|
||||
We still use Handlebars templates some places in Files and Settings. We will replace these step-by-step with Vue.js, but in the meantime you need to compile them separately.
|
||||
|
||||
If you don’t have Handlebars installed yet, you can do it with this terminal command:
|
||||
```bash
|
||||
```
|
||||
sudo npm install -g handlebars
|
||||
```
|
||||
|
||||
Then inside the root folder of your local Nextcloud development installation, run this command in the terminal every time you changed a `.handlebars` file to compile it:
|
||||
```bash
|
||||
```
|
||||
./build/compile-handlebars-templates.sh
|
||||
```
|
||||
|
||||
Before checking in JS changes, make sure to also build for production:
|
||||
```bash
|
||||
make build-js-production
|
||||
```
|
||||
Then add the compiled files for committing.
|
||||
|
||||
To save some time, to only rebuild for a specific app, use the following and replace the module with the app name:
|
||||
```bash
|
||||
MODULE=user_status make build-js-production
|
||||
```
|
||||
|
||||
Please note that if you used `make build-js` or `make watch-js` before, you'll notice that a lot of files were marked as changed, so might need to clear the workspace first.
|
||||
|
||||
### Working with back-end code 🏗
|
||||
|
||||
When changing back-end PHP code, in general no additional steps are needed before checking in.
|
||||
|
||||
However, if new files were created, you will need to run the following command to update the autoloader files:
|
||||
```bash
|
||||
build/autoloaderchecker.sh
|
||||
```
|
||||
|
||||
After that, please also include the autoloader file changes in your commits.
|
||||
|
||||
### Tools we use 🛠
|
||||
|
||||
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
The latest three major release versions of Nextcloud are currently being supported with security updates.
|
||||
Please visit https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule for further details.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Security is very important to us. If you have discovered a security issue with Nextcloud,
|
||||
please read our responsible disclosure guidelines and contact us at [hackerone.com/nextcloud](https://hackerone.com/nextcloud).
|
||||
Your report should include:
|
||||
|
||||
- Product version
|
||||
- A vulnerability description
|
||||
- Reproduction steps
|
||||
|
||||
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
||||
The fix will be applied to the master branch, tested, and packaged in the next security release.
|
||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
||||
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
||||
|
||||
|
||||
Please visit https://nextcloud.com/security/ for further information about security.
|
||||
@@ -0,0 +1,12 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
[
|
||||
'@babel/preset-env',
|
||||
{
|
||||
targets: {
|
||||
browsers: ['last 2 versions', 'ie >= 11']
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true
|
||||
},
|
||||
extends: 'eslint:recommended',
|
||||
parserOptions: {
|
||||
sourceType: 'module'
|
||||
},
|
||||
rules: {
|
||||
indent: ['error', 'tab'],
|
||||
'linebreak-style': ['error', 'unix'],
|
||||
quotes: ['error', 'single'],
|
||||
semi: ['error', 'always']
|
||||
}
|
||||
};
|
||||
@@ -1,2 +1,2 @@
|
||||
# compiled vue templates
|
||||
js/
|
||||
js/accessibility.js
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
$app = new \OCA\Accessibility\AppInfo\Application();
|
||||
|
||||
// Separate from the constructor since the route are not initialized before that
|
||||
// 1. create the app
|
||||
// 2. generate css route and inject
|
||||
$app->injectCss();
|
||||
$app->injectJavascript();
|
||||
@@ -1,32 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
||||
<id>accessibility</id>
|
||||
<name>Accessibility</name>
|
||||
<summary>Accessibility options for nextcloud</summary>
|
||||
<description><![CDATA[Provides multiple accessibilities options to ease your use of Nextcloud]]></description>
|
||||
<version>1.9.0</version>
|
||||
<licence>agpl</licence>
|
||||
<author>John Molakvoæ</author>
|
||||
<namespace>Accessibility</namespace>
|
||||
<default_enable/>
|
||||
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
||||
<id>accessibility</id>
|
||||
<name>Accessibility</name>
|
||||
<summary>Accessibility options for nextcloud</summary>
|
||||
<description><![CDATA[Provides multiple accessibilities options to ease your use of Nextcloud]]></description>
|
||||
<version>1.2.0</version>
|
||||
<licence>agpl</licence>
|
||||
<author>John Molakvoæ</author>
|
||||
<namespace>Accessibility</namespace>
|
||||
<default_enable/>
|
||||
|
||||
<category>customization</category>
|
||||
<category>customization</category>
|
||||
|
||||
<bugs>https://github.com/nextcloud/server/issues</bugs>
|
||||
<bugs>https://github.com/nextcloud/server/issues</bugs>
|
||||
|
||||
<dependencies>
|
||||
<nextcloud min-version="23" max-version="23"/>
|
||||
</dependencies>
|
||||
<dependencies>
|
||||
<nextcloud min-version="16" max-version="16"/>
|
||||
</dependencies>
|
||||
|
||||
<repair-steps>
|
||||
<pre-migration>
|
||||
<step>OCA\Accessibility\Migration\RepairUserConfig</step>
|
||||
</pre-migration>
|
||||
</repair-steps>
|
||||
|
||||
<settings>
|
||||
<personal>OCA\Accessibility\Settings\Personal</personal>
|
||||
<personal-section>OCA\Accessibility\Settings\PersonalSection</personal-section>
|
||||
</settings>
|
||||
<settings>
|
||||
<personal>OCA\Accessibility\Settings\Personal</personal>
|
||||
<personal-section>OCA\Accessibility\Settings\PersonalSection</personal-section>
|
||||
</settings>
|
||||
</info>
|
||||
|
||||
@@ -2,10 +2,7 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -16,32 +13,29 @@
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}', 'verb' => 'GET'],
|
||||
],
|
||||
'ocs' => [
|
||||
['name' => 'accessibility#getJavascript', 'url' => '/js/accessibility', 'verb' => 'GET'],
|
||||
],
|
||||
'ocs' => [
|
||||
[
|
||||
'name' => 'Config#getConfig',
|
||||
'url' => '/api/v1/config',
|
||||
'url' => '/api/v1/config',
|
||||
'verb' => 'GET',
|
||||
],
|
||||
],
|
||||
[
|
||||
'name' => 'Config#setConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'PUT',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'POST',
|
||||
],
|
||||
[
|
||||
'name' => 'Config#deleteConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'DELETE',
|
||||
],
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitAccessibility::getLoader();
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"config" : {
|
||||
"vendor-dir": ".",
|
||||
"optimize-autoloader": true,
|
||||
"classmap-authoritative": true,
|
||||
"autoloader-suffix": "Accessibility"
|
||||
},
|
||||
"autoload" : {
|
||||
"psr-4": {
|
||||
"OCA\\Accessibility\\": "../lib/"
|
||||
}
|
||||
}
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "d751713988987e9331980363e24189ce",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.1.0"
|
||||
}
|
||||
@@ -1,572 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see https://www.php-fig.org/psr/psr-0/
|
||||
* @see https://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var ?string */
|
||||
private $vendorDir;
|
||||
|
||||
// PSR-4
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, int>>
|
||||
*/
|
||||
private $prefixLengthsPsr4 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<int, string>>
|
||||
*/
|
||||
private $prefixDirsPsr4 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, string[]>>
|
||||
*/
|
||||
private $prefixesPsr0 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
/** @var bool */
|
||||
private $useIncludePath = false;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $classMap = array();
|
||||
|
||||
/** @var bool */
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
/**
|
||||
* @var bool[]
|
||||
* @psalm-var array<string, bool>
|
||||
*/
|
||||
private $missingClasses = array();
|
||||
|
||||
/** @var ?string */
|
||||
private $apcuPrefix;
|
||||
|
||||
/**
|
||||
* @var self[]
|
||||
*/
|
||||
private static $registeredLoaders = array();
|
||||
|
||||
/**
|
||||
* @param ?string $vendorDir
|
||||
*/
|
||||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, array<int, string>>
|
||||
*/
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[] Array of classname => path
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $classMap Class to filename map
|
||||
* @psalm-param array<string, string> $classMap
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 base directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
|
||||
if (null === $this->vendorDir) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($prepend) {
|
||||
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
|
||||
} else {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
self::$registeredLoaders[$this->vendorDir] = $this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
|
||||
if (null !== $this->vendorDir) {
|
||||
unset(self::$registeredLoaders[$this->vendorDir]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return true|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
||||
*
|
||||
* @return self[]
|
||||
*/
|
||||
public static function getRegisteredLoaders()
|
||||
{
|
||||
return self::$registeredLoaders;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $class
|
||||
* @param string $ext
|
||||
* @return string|false
|
||||
*/
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
if (file_exists($file = $dir . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
* @private
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
@@ -1,352 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Composer\Semver\VersionParser;
|
||||
|
||||
/**
|
||||
* This class is copied in every Composer installed project and available to all
|
||||
*
|
||||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||
*
|
||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
/**
|
||||
* @var bool|null
|
||||
*/
|
||||
private static $canGetVendors;
|
||||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
/**
|
||||
* Returns a list of all package names which are present, either by being installed, replaced or provided
|
||||
*
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackages()
|
||||
{
|
||||
$packages = array();
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
$packages[] = array_keys($installed['versions']);
|
||||
}
|
||||
|
||||
if (1 === \count($packages)) {
|
||||
return $packages[0];
|
||||
}
|
||||
|
||||
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all package names with a specific type e.g. 'library'
|
||||
*
|
||||
* @param string $type
|
||||
* @return string[]
|
||||
* @psalm-return list<string>
|
||||
*/
|
||||
public static function getInstalledPackagesByType($type)
|
||||
{
|
||||
$packagesByType = array();
|
||||
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
foreach ($installed['versions'] as $name => $package) {
|
||||
if (isset($package['type']) && $package['type'] === $type) {
|
||||
$packagesByType[] = $name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $packagesByType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package is installed
|
||||
*
|
||||
* This also returns true if the package name is provided or replaced by another package
|
||||
*
|
||||
* @param string $packageName
|
||||
* @param bool $includeDevRequirements
|
||||
* @return bool
|
||||
*/
|
||||
public static function isInstalled($packageName, $includeDevRequirements = true)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given package satisfies a version constraint
|
||||
*
|
||||
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
|
||||
*
|
||||
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
|
||||
*
|
||||
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
|
||||
* @param string $packageName
|
||||
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
|
||||
* @return bool
|
||||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints($constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a version constraint representing all the range(s) which are installed for a given package
|
||||
*
|
||||
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
|
||||
* whether a given version of a package is installed, and not just whether it exists
|
||||
*
|
||||
* @param string $packageName
|
||||
* @return string Version constraint usable with composer/semver
|
||||
*/
|
||||
public static function getVersionRanges($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$ranges = array();
|
||||
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
||||
}
|
||||
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
||||
}
|
||||
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
||||
}
|
||||
|
||||
return implode(' || ', $ranges);
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
||||
*/
|
||||
public static function getPrettyVersion($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
|
||||
*/
|
||||
public static function getReference($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($installed['versions'][$packageName]['reference'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $installed['versions'][$packageName]['reference'];
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $packageName
|
||||
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
|
||||
*/
|
||||
public static function getInstallPath($packageName)
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (!isset($installed['versions'][$packageName])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
|
||||
}
|
||||
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
$installed = self::getInstalled();
|
||||
|
||||
return $installed[0]['root'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw installed.php data for custom implementations
|
||||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = include __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
return self::$installed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
return self::getInstalled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lets you reload the static array from another file
|
||||
*
|
||||
* This is only useful for complex integrations in which a project needs to use
|
||||
* this class but then also needs to execute another project's autoloader in process,
|
||||
* and wants to ensure both projects have access to their version of installed.php.
|
||||
*
|
||||
* A typical case would be PHPUnit, where it would need to make sure it reads all
|
||||
* the data it needs from this class, then call reload() with
|
||||
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
|
||||
* the project in which it runs can then also use this class safely, without
|
||||
* interference between PHPUnit's dependencies and the project's dependencies.
|
||||
*
|
||||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
self::$installed = $data;
|
||||
self::$installedByVendor = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
if (null === self::$canGetVendors) {
|
||||
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
||||
}
|
||||
|
||||
$installed = array();
|
||||
|
||||
if (self::$canGetVendors) {
|
||||
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
||||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null === self::$installed) {
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = require __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
$installed[] = self::$installed;
|
||||
|
||||
return $installed;
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'OCA\\Accessibility\\AccessibilityProvider' => $baseDir . '/../lib/AccessibilityProvider.php',
|
||||
'OCA\\Accessibility\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
|
||||
'OCA\\Accessibility\\Controller\\AccessibilityController' => $baseDir . '/../lib/Controller/AccessibilityController.php',
|
||||
'OCA\\Accessibility\\Controller\\ConfigController' => $baseDir . '/../lib/Controller/ConfigController.php',
|
||||
'OCA\\Accessibility\\Migration\\RepairUserConfig' => $baseDir . '/../lib/Migration/RepairUserConfig.php',
|
||||
'OCA\\Accessibility\\Service\\JSDataService' => $baseDir . '/../lib/Service/JSDataService.php',
|
||||
'OCA\\Accessibility\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Accessibility\\Settings\\PersonalSection' => $baseDir . '/../lib/Settings/PersonalSection.php',
|
||||
);
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
);
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'OCA\\Accessibility\\' => array($baseDir . '/../lib'),
|
||||
);
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitAccessibility
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitAccessibility', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitAccessibility', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
\Composer\Autoload\ComposerStaticInitAccessibility::getInitializer($loader)();
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInitAccessibility
|
||||
{
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'O' =>
|
||||
array (
|
||||
'OCA\\Accessibility\\' => 18,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'OCA\\Accessibility\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/../lib',
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'OCA\\Accessibility\\AccessibilityProvider' => __DIR__ . '/..' . '/../lib/AccessibilityProvider.php',
|
||||
'OCA\\Accessibility\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
|
||||
'OCA\\Accessibility\\Controller\\AccessibilityController' => __DIR__ . '/..' . '/../lib/Controller/AccessibilityController.php',
|
||||
'OCA\\Accessibility\\Controller\\ConfigController' => __DIR__ . '/..' . '/../lib/Controller/ConfigController.php',
|
||||
'OCA\\Accessibility\\Migration\\RepairUserConfig' => __DIR__ . '/..' . '/../lib/Migration/RepairUserConfig.php',
|
||||
'OCA\\Accessibility\\Service\\JSDataService' => __DIR__ . '/..' . '/../lib/Service/JSDataService.php',
|
||||
'OCA\\Accessibility\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Accessibility\\Settings\\PersonalSection' => __DIR__ . '/..' . '/../lib/Settings/PersonalSection.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitAccessibility::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitAccessibility::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInitAccessibility::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"packages": [],
|
||||
"dev": false,
|
||||
"dev-package-names": []
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php return array(
|
||||
'root' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../',
|
||||
'aliases' => array(),
|
||||
'reference' => '51f361f81a2a9b399e5d283efcd11c17a1fded73',
|
||||
'name' => '__root__',
|
||||
'dev' => false,
|
||||
),
|
||||
'versions' => array(
|
||||
'__root__' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../',
|
||||
'aliases' => array(),
|
||||
'reference' => '51f361f81a2a9b399e5d283efcd11c17a1fded73',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,112 +0,0 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #d8d8d8;
|
||||
$color-main-background: #181818;
|
||||
|
||||
$color-background-hover: lighten($color-main-background, 4%);
|
||||
$color-background-dark: lighten($color-main-background, 7%);
|
||||
$color-background-darker: lighten($color-main-background, 14%);
|
||||
|
||||
$color-placeholder-light: lighten($color-main-background, 10%);
|
||||
$color-placeholder-dark: lighten($color-main-background, 20%);
|
||||
|
||||
$color-text-maxcontrast: darken($color-main-text, 30%);
|
||||
$color-text-light: darken($color-main-text, 10%);
|
||||
$color-text-lighter: darken($color-main-text, 20%);
|
||||
|
||||
$color-loading-light: #777;
|
||||
$color-loading-dark: #ccc;
|
||||
|
||||
$color-box-shadow: transparentize(darken($color-main-background, 70%), 0.5);
|
||||
|
||||
$color-border: lighten($color-main-background, 7%);
|
||||
$color-border-dark: lighten($color-main-background, 14%);
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
|
||||
#app-navigation > ul > li > a:first-child,
|
||||
#app-navigation > ul > li > ul > li > a:first-child,
|
||||
#contactsmenu-menu a,
|
||||
#expanddiv a,
|
||||
.activity-section .activity-icon.monochrome {
|
||||
& > img,
|
||||
:not(.avatardiv) > img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
#navigation #apps li a,
|
||||
#body-settings #content-vue.app-settings .app-image-icon,
|
||||
#body-settings #content-vue.app-settings #app-sidebar #app-details-view h2 {
|
||||
svg {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise icon-more gets inverted via function
|
||||
#appmenu .icon-more-white {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
||||
// since svg icons are inverted, revert to white for the header
|
||||
.header-right > * {
|
||||
>[class^='icon-'] {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu,
|
||||
.popover__menu {
|
||||
li {
|
||||
> button,
|
||||
> a,
|
||||
> .menuitem, > .popover__menuitem {
|
||||
> img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu,
|
||||
#header .menu {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.popover[x-placement^='top'] .popover__arrow {
|
||||
border-top-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='bottom'] .popover__arrow {
|
||||
border-bottom-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='left'] .popover__arrow {
|
||||
border-left-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='right'] .popover__arrow {
|
||||
border-right-color: var(--color-border);
|
||||
}
|
||||
.popover .popover__inner {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
// Prevent slideshow icons from going dark
|
||||
#slideshow {
|
||||
[class^='icon-'], [class*=' icon-']{
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
&.checkbox {
|
||||
&:checked + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mark-dark.svg');
|
||||
}
|
||||
|
||||
&:indeterminate + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mixed-dark.svg');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,22 @@
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-weight: 300;
|
||||
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-weight: normal;
|
||||
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url('../fonts/OpenDyslexic-Bold.woff') format('woff');
|
||||
}
|
||||
|
||||
$font-face: OpenDyslexic, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Cantarell, Ubuntu, 'Helvetica Neue', Arial, 'Noto Color Emoji', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$font-face: OpenDyslexic, 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #000;
|
||||
$color-main-background: #fff;
|
||||
|
||||
$color-background-dark: darken($color-main-background, 30%);
|
||||
$color-background-darker: darken($color-main-background, 30%);
|
||||
|
||||
$color-placeholder-light: darken($color-main-background, 30%);
|
||||
$color-placeholder-dark: darken($color-main-background, 45%);
|
||||
|
||||
$color-text-maxcontrast: $color-main-text;
|
||||
$color-text-light: $color-main-text;
|
||||
$color-text-lighter: $color-main-text;
|
||||
|
||||
$color-loading-light: #ddd;
|
||||
$color-loading-dark: #000;
|
||||
|
||||
$color-box-shadow: $color-main-text;
|
||||
|
||||
$color-border: darken($color-main-background, 50%);
|
||||
$color-border-dark: darken($color-main-background, 50%);
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
|
||||
[class^='icon-'], [class*=' icon-'],
|
||||
.action,
|
||||
#appmenu li a,
|
||||
.menutoggle {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #fff;
|
||||
$color-main-background: #000;
|
||||
|
||||
$color-background-dark: lighten($color-main-background, 30%);
|
||||
$color-background-darker: lighten($color-main-background, 30%);
|
||||
|
||||
$color-text-maxcontrast: $color-main-text;
|
||||
$color-text-light: $color-main-text;
|
||||
$color-text-lighter: $color-main-text;
|
||||
|
||||
$color-loading-light: #000;
|
||||
$color-loading-dark: #ddd;
|
||||
|
||||
$color-box-shadow: $color-main-text;
|
||||
|
||||
$color-border: lighten($color-main-background, 50%);
|
||||
$color-border-dark: lighten($color-main-background, 50%);
|
||||
|
||||
[class^='icon-'], [class*=' icon-'],
|
||||
.action,
|
||||
#appmenu li a,
|
||||
.menutoggle {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
@@ -61,13 +61,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: ($breakpoint-mobile / 2)) {
|
||||
.app-settings #accessibility .preview-list .preview {
|
||||
display: unset;
|
||||
|
||||
.preview-image {
|
||||
height: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #d8d8d8;
|
||||
$color-main-background: #181818;
|
||||
|
||||
$color-background-dark: lighten($color-main-background, 4%);
|
||||
$color-background-darker: lighten($color-main-background, 8%);
|
||||
|
||||
$color-text-maxcontrast: darken($color-main-text, 30%);
|
||||
$color-text-light: darken($color-main-text, 10%);
|
||||
$color-text-lighter: darken($color-main-text, 20%);
|
||||
|
||||
$color-loading-light: #777;
|
||||
$color-loading-dark: #ccc;
|
||||
|
||||
$color-box-shadow: rgba(darken($color-main-background, 70%), 0.5);
|
||||
|
||||
$color-border: lighten($color-main-background, 7%);
|
||||
$color-border-dark: lighten($color-main-background, 14%);
|
||||
|
||||
#app-navigation > ul > li > a:first-child,
|
||||
#app-navigation > ul > li > ul > li > a:first-child,
|
||||
#contactsmenu-menu a,
|
||||
#expanddiv a,
|
||||
.activity-section .activity-icon.monochrome {
|
||||
img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
#navigation #apps li a,
|
||||
#body-settings #content.app-settings .app-image-icon,
|
||||
#body-settings #content.app-settings #app-sidebar #app-details-view h2 {
|
||||
svg {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise icon-more gets inverted via function
|
||||
#appmenu .icon-more-white {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
||||
// since svg icons are inverted, revert to white for the header
|
||||
.header-right > * {
|
||||
>[class^='icon-'] {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu {
|
||||
li {
|
||||
> button,
|
||||
> a,
|
||||
> .menuitem {
|
||||
> img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu,
|
||||
#header .menu {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
// Prevent slideshow icons from going dark
|
||||
#slideshow {
|
||||
[class^='icon-'], [class*=' icon-']{
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
&.checkbox {
|
||||
&:checked + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mark-dark.svg');
|
||||
}
|
||||
|
||||
&:indeterminate + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mixed-dark.svg');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #000;
|
||||
$color-main-background: #fff;
|
||||
|
||||
$color-background-dark: darken($color-main-background, 30%);
|
||||
$color-background-darker: darken($color-main-background, 30%);
|
||||
|
||||
$color-text-maxcontrast: $color-main-text;
|
||||
$color-text-light: $color-main-text;
|
||||
$color-text-lighter: $color-main-text;
|
||||
|
||||
$color-loading-light: #ddd;
|
||||
$color-loading-dark: #000;
|
||||
|
||||
$color-box-shadow: $color-main-text;
|
||||
|
||||
$color-border: darken($color-main-background, 50%);
|
||||
$color-border-dark: darken($color-main-background, 50%);
|
||||
|
||||
[class^='icon-'], [class*=' icon-'],
|
||||
.action,
|
||||
#appmenu li a,
|
||||
.menutoggle {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 60 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,14 +1,18 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Donker Tema",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "’n Donker tema om u oë ’n ruskans te gee deur die algehele ligsterkte en helderheid te verminder. Dit word nog ontwikkel; rapporteer asb. enige probleme wat u ervaar.",
|
||||
"High contrast mode" : "Hoëkontrasmodus",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "’n Hoëkontrasmodus om u navigasie te vergemaklik. Visuele kwaliteit sal verminder word, maar die duidelikheid sal verbeter.",
|
||||
"High contrast theme" : "Hoëkontrastema",
|
||||
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "’n Hoëkontrastema om u navigasie te vergemaklik. Visuele kwaliteit sal verminder word, maar die duidelikheid sal verbeter.",
|
||||
"Dark theme (beta)" : "Donkertema (beta)",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "’n Donkertema om u oë ’n ruskans te geen deur die algehele ligsterkte en helderheid te verminder. Dit word nog ontwikkel; rapporteer asb. enige probleme wat u ervaar.",
|
||||
"Dyslexia font" : "Disleksie-font",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic is ’n gratis lettertipe/font wat ontwerp is om sommige van die algemene leesfoute wat deur disleksie veroorsaak word, te versag.",
|
||||
"Accessibility" : "Toeganklikheid",
|
||||
"Accessibility options for nextcloud" : "Toeganklikheidsopsies vir nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Bied veelvuldige toeganklikheidsopsies om u gebruik van Nextcloud te vergemaklik"
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Bied veelvuldige toeganklikheidsopsies om u gebruik van Nextcloud te vergemaklik",
|
||||
"Web Content Accessibility Guidelines" : "Webinhoudtoeganklikheidsriglyne",
|
||||
"our issue tracker" : "ons probleemnaspoorder",
|
||||
"our design team" : "ons ontwerpspan",
|
||||
"Enable" : "Aktiveer"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "Donker Tema",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "’n Donker tema om u oë ’n ruskans te gee deur die algehele ligsterkte en helderheid te verminder. Dit word nog ontwikkel; rapporteer asb. enige probleme wat u ervaar.",
|
||||
"High contrast mode" : "Hoëkontrasmodus",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "’n Hoëkontrasmodus om u navigasie te vergemaklik. Visuele kwaliteit sal verminder word, maar die duidelikheid sal verbeter.",
|
||||
"High contrast theme" : "Hoëkontrastema",
|
||||
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "’n Hoëkontrastema om u navigasie te vergemaklik. Visuele kwaliteit sal verminder word, maar die duidelikheid sal verbeter.",
|
||||
"Dark theme (beta)" : "Donkertema (beta)",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "’n Donkertema om u oë ’n ruskans te geen deur die algehele ligsterkte en helderheid te verminder. Dit word nog ontwikkel; rapporteer asb. enige probleme wat u ervaar.",
|
||||
"Dyslexia font" : "Disleksie-font",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic is ’n gratis lettertipe/font wat ontwerp is om sommige van die algemene leesfoute wat deur disleksie veroorsaak word, te versag.",
|
||||
"Accessibility" : "Toeganklikheid",
|
||||
"Accessibility options for nextcloud" : "Toeganklikheidsopsies vir nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Bied veelvuldige toeganklikheidsopsies om u gebruik van Nextcloud te vergemaklik"
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Bied veelvuldige toeganklikheidsopsies om u gebruik van Nextcloud te vergemaklik",
|
||||
"Web Content Accessibility Guidelines" : "Webinhoudtoeganklikheidsriglyne",
|
||||
"our issue tracker" : "ons probleemnaspoorder",
|
||||
"our design team" : "ons ontwerpspan",
|
||||
"Enable" : "Aktiveer"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "مظهر داكن",
|
||||
"Enable dark theme" : "تفعيل المظهر الداكن",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "المظهر الداكن يخفف من الإرهاق على عينيك، وذلك بتخفيض حدّة الإضاءة والسطوع. هذه الميزة لا تزال تحت التطوير، لهذا نود منكم الإبلاغ عن أي مشكلة قد تصادفكم.",
|
||||
"High contrast mode" : "وضع تباين الألوان العالي",
|
||||
"Enable high contrast mode" : "تفعيل وضع تباين الألوان العالي",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "وضع تباين الألوان العالي يساعدك على التنقل في الموقع بسهولة. الجودة المرئية سوف تقل بينما الوضوح سيزداد.",
|
||||
"Dyslexia font" : "خط خاص بالمصابين بعسر القراءة",
|
||||
"Enable dyslexia font" : "تفعيل الخط الخاص بالمصابين بعسر القراءة",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic خط مجاني مصمم للمساعدة على تفادي الأخطاء لمن يعانون من عسر القراءة.",
|
||||
"Accessibility" : "تسهيل الإستعمال",
|
||||
"Accessibility options for nextcloud" : "خيارات تسهيل إستعمال نكست كلاود",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "توفر عدة خيارات تسهيل إستعمال لتسهيل تنقلك على نكست كلاود",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "الوصول الشامل مهم جدا بالنسبة لنا. نحن نتبع معايير ويب صارمة ونتأكد من أن كل شيء يمكن إستعماله حتى دون الحاجة للفأرة أو إلى أي برامج مساعدة مثل برامج قراءة الشاشة. هدفنا أن نكون متوافقين مع {guidelines} توجيهات تسهيل إستعمال محتوى الويب {linkend} 2.1 بمستوى AA، ومتوافقين مع مظهر تباين الألوان العالي بمستوى يصل حتى إلى AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "إذا واجهت أي مشاكل، لا تتردد بالإبلاغ عنها على {issuetracker} متعقب المشاكل الخاص بنا {linkend}. أما إذا أردت المشاركة في التطوير، إنضم إلى {designteam} فريق التصميم {linkend}!"
|
||||
},
|
||||
"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;");
|
||||
@@ -1,17 +0,0 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "مظهر داكن",
|
||||
"Enable dark theme" : "تفعيل المظهر الداكن",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "المظهر الداكن يخفف من الإرهاق على عينيك، وذلك بتخفيض حدّة الإضاءة والسطوع. هذه الميزة لا تزال تحت التطوير، لهذا نود منكم الإبلاغ عن أي مشكلة قد تصادفكم.",
|
||||
"High contrast mode" : "وضع تباين الألوان العالي",
|
||||
"Enable high contrast mode" : "تفعيل وضع تباين الألوان العالي",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "وضع تباين الألوان العالي يساعدك على التنقل في الموقع بسهولة. الجودة المرئية سوف تقل بينما الوضوح سيزداد.",
|
||||
"Dyslexia font" : "خط خاص بالمصابين بعسر القراءة",
|
||||
"Enable dyslexia font" : "تفعيل الخط الخاص بالمصابين بعسر القراءة",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic خط مجاني مصمم للمساعدة على تفادي الأخطاء لمن يعانون من عسر القراءة.",
|
||||
"Accessibility" : "تسهيل الإستعمال",
|
||||
"Accessibility options for nextcloud" : "خيارات تسهيل إستعمال نكست كلاود",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "توفر عدة خيارات تسهيل إستعمال لتسهيل تنقلك على نكست كلاود",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "الوصول الشامل مهم جدا بالنسبة لنا. نحن نتبع معايير ويب صارمة ونتأكد من أن كل شيء يمكن إستعماله حتى دون الحاجة للفأرة أو إلى أي برامج مساعدة مثل برامج قراءة الشاشة. هدفنا أن نكون متوافقين مع {guidelines} توجيهات تسهيل إستعمال محتوى الويب {linkend} 2.1 بمستوى AA، ومتوافقين مع مظهر تباين الألوان العالي بمستوى يصل حتى إلى AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "إذا واجهت أي مشاكل، لا تتردد بالإبلاغ عنها على {issuetracker} متعقب المشاكل الخاص بنا {linkend}. أما إذا أردت المشاركة في التطوير، إنضم إلى {designteam} فريق التصميم {linkend}!"
|
||||
},"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;"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Цёмная тэма",
|
||||
"Enable dark theme" : "Уключыць цёмную тэму",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Цёмная тэма зніжае напружанне на вочы зніжаючы яркасць. Функцыя знаходзіцца ў стадыі распрацоўкі, таму, калі ласка, паведамляйце пра ўсе знойдзеныя памылкі.",
|
||||
"High contrast mode" : "Рэжым высокай кантраснасці",
|
||||
"Enable high contrast mode" : "Уключыць рэжым высокай кантраснасці",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Рэжым высокай кантраснасці каб палегчыць навігацыю. Гэта паменшыць візуальную якасць, але палепшыць зразумеласць.",
|
||||
"Dyslexia font" : "Шрыфт для людзей з дыслексіяй",
|
||||
"Enable dyslexia font" : "Выкарыстоўваць шрыфт для людзей з дыслексіяй",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic — гэта бясплатны шрыфт, распрацаваны каб паменшыць колькасць частых памылак чытання, якія выкліканы дыслексіяй,",
|
||||
"Accessibility" : "Спецыяльныя магчымасці",
|
||||
"Accessibility options for nextcloud" : "Налады спецыяльных магчымасцяў для Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Налады спецыяльных магчымасцяў, якія спрашчаюць карыстанне Nextcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Універсальны доступ вельмі важны для нас. Мы прытрымліваемся стандартам і правяраем магчымасць выкарыстоўвання нашых сэрвісаў без мышы ці з выкарыстоўваннем дапаможных праграм, такіх, як экраны дыктар. Мы стараемся цалкам адпавядаць {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 на ўзроўні AA, а разам з рэжымам высокай кантраснасці на ўзроўні AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Калі вы знайшлі нейкую праблему, не саромейцеся напісаць у {issuetracker}наш трэкер памылак{linkend}. Таксама калі вы жадаеце прыняць удзел, можаце прыяднацца да {designteam}нашай каманды дызайнераў{linkend}!"
|
||||
},
|
||||
"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);");
|
||||
@@ -1,17 +0,0 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "Цёмная тэма",
|
||||
"Enable dark theme" : "Уключыць цёмную тэму",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Цёмная тэма зніжае напружанне на вочы зніжаючы яркасць. Функцыя знаходзіцца ў стадыі распрацоўкі, таму, калі ласка, паведамляйце пра ўсе знойдзеныя памылкі.",
|
||||
"High contrast mode" : "Рэжым высокай кантраснасці",
|
||||
"Enable high contrast mode" : "Уключыць рэжым высокай кантраснасці",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Рэжым высокай кантраснасці каб палегчыць навігацыю. Гэта паменшыць візуальную якасць, але палепшыць зразумеласць.",
|
||||
"Dyslexia font" : "Шрыфт для людзей з дыслексіяй",
|
||||
"Enable dyslexia font" : "Выкарыстоўваць шрыфт для людзей з дыслексіяй",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic — гэта бясплатны шрыфт, распрацаваны каб паменшыць колькасць частых памылак чытання, якія выкліканы дыслексіяй,",
|
||||
"Accessibility" : "Спецыяльныя магчымасці",
|
||||
"Accessibility options for nextcloud" : "Налады спецыяльных магчымасцяў для Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Налады спецыяльных магчымасцяў, якія спрашчаюць карыстанне Nextcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Універсальны доступ вельмі важны для нас. Мы прытрымліваемся стандартам і правяраем магчымасць выкарыстоўвання нашых сэрвісаў без мышы ці з выкарыстоўваннем дапаможных праграм, такіх, як экраны дыктар. Мы стараемся цалкам адпавядаць {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 на ўзроўні AA, а разам з рэжымам высокай кантраснасці на ўзроўні AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Калі вы знайшлі нейкую праблему, не саромейцеся напісаць у {issuetracker}наш трэкер памылак{linkend}. Таксама калі вы жадаеце прыняць удзел, можаце прыяднацца да {designteam}нашай каманды дызайнераў{linkend}!"
|
||||
},"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);"
|
||||
}
|
||||
@@ -1,19 +1,22 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Tъмна Tема",
|
||||
"Enable dark theme" : "Активиране на тъмна тема",
|
||||
"High contrast theme" : "Тема с висок контраст",
|
||||
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Тема с висок контраст за улесняване на навигацията. Визуалното качество ще бъде намалено, но яснотата ще бъде увеличена.",
|
||||
"Dark theme (beta)" : "Тъмна тема (бета)",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
|
||||
"High contrast mode" : "Висок контраст",
|
||||
"Enable high contrast mode" : "Активиране на режим с висок контраст",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Режим с висок контраст за улесняване на навигацията ви. Визуалното качество ще бъде намалено, но яснотата ще се увеличи.",
|
||||
"Dyslexia font" : "Шрифт за дислексия",
|
||||
"Enable dyslexia font" : "Активирай шрифт за дислексия",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
|
||||
"Accessibility" : "Достъпност",
|
||||
"Accessibility options for nextcloud" : "Опции за достъпност за nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Осигурява множество опции за достъпност за улесняване на използването на Nextcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Универсалният достъп е много важен за нас. Следваме уеб стандартите и проверяваме, за да направим всичко използваемо и без мишка, и помощен софтуер, като екранни четци. Ние се стремим да бъдем съобразени с {guidelines}Насоки за достъпност на уеб съдържанието {linkend} 2.1 на ниво АА, с темата за висок контраст дори на ниво AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ако откриете някакви проблеми, не се колебайте да ги съобщите на {issueetracker} нашия тракер на проблеми {linkend}. А ако искате да се включите, елате да се присъедините {designteam} към нашия дизайнерски екип {linkend}!"
|
||||
"Web Content Accessibility Guidelines" : "Указания за достъпност на уеб съдържание",
|
||||
"our design team" : "нашия екип",
|
||||
"Enable" : "Включване",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia. The typeface was created by Abelardo Gonzalez, who released it through an open-source license." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
|
||||
"Provides multiple accessibilities options to ease your use of nextcloud" : "Осигурява множество опции за достъпност за улесняване на използването на Nextcloud",
|
||||
"Themes" : "Теми",
|
||||
"Fonts" : "Шрифт",
|
||||
"enabled" : "Включено"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "Tъмна Tема",
|
||||
"Enable dark theme" : "Активиране на тъмна тема",
|
||||
"High contrast theme" : "Тема с висок контраст",
|
||||
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Тема с висок контраст за улесняване на навигацията. Визуалното качество ще бъде намалено, но яснотата ще бъде увеличена.",
|
||||
"Dark theme (beta)" : "Тъмна тема (бета)",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Тъмна тема, която облекчава очите ви, като намалява яркостта. Все още е в процес на разработка, затова, моля, докладвайте за всички проблеми, които откриете.",
|
||||
"High contrast mode" : "Висок контраст",
|
||||
"Enable high contrast mode" : "Активиране на режим с висок контраст",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Режим с висок контраст за улесняване на навигацията ви. Визуалното качество ще бъде намалено, но яснотата ще се увеличи.",
|
||||
"Dyslexia font" : "Шрифт за дислексия",
|
||||
"Enable dyslexia font" : "Активирай шрифт за дислексия",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
|
||||
"Accessibility" : "Достъпност",
|
||||
"Accessibility options for nextcloud" : "Опции за достъпност за nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Осигурява множество опции за достъпност за улесняване на използването на Nextcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Универсалният достъп е много важен за нас. Следваме уеб стандартите и проверяваме, за да направим всичко използваемо и без мишка, и помощен софтуер, като екранни четци. Ние се стремим да бъдем съобразени с {guidelines}Насоки за достъпност на уеб съдържанието {linkend} 2.1 на ниво АА, с темата за висок контраст дори на ниво AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ако откриете някакви проблеми, не се колебайте да ги съобщите на {issueetracker} нашия тракер на проблеми {linkend}. А ако искате да се включите, елате да се присъедините {designteam} към нашия дизайнерски екип {linkend}!"
|
||||
"Web Content Accessibility Guidelines" : "Указания за достъпност на уеб съдържание",
|
||||
"our design team" : "нашия екип",
|
||||
"Enable" : "Включване",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia. The typeface was created by Abelardo Gonzalez, who released it through an open-source license." : "OpenDyslexic е безплатен шрифт, предназначен за смекчаване на някои от често срещаните грешки при четенето, причинени от дислексия.",
|
||||
"Provides multiple accessibilities options to ease your use of nextcloud" : "Осигурява множество опции за достъпност за улесняване на използването на Nextcloud",
|
||||
"Themes" : "Теми",
|
||||
"Fonts" : "Шрифт",
|
||||
"enabled" : "Включено"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "অন্ধকার থিম",
|
||||
"Enable dark theme" : "অন্ধকার থিম সক্ষম করুন",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "সামগ্রিক আলোকসজ্জা এবং উজ্জ্বলতা হ্রাস করে আপনার চোখকে সহজ করার জন্য একটি অন্ধকার থিম। এটা এখনও উন্নয়ন অধীনে, তাই কোনো সমস্যা আপনি খুঁজে পেতে পারেন রিপোর্ট করুন। ",
|
||||
"High contrast mode" : "উচ্চ বিপরীতে মোড ",
|
||||
"Enable high contrast mode" : "উচ্চতর বিপরীতে মোড সক্ষম করুন",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "আপনার নেভিগেশন সহজ করতে একটি উচ্চ বিপরীতে মোড। ভিজ্যুয়াল মান হ্রাস পাবে তবে স্বচ্ছতা বাড়ানো হবে। ",
|
||||
"Dyslexia font" : "ডিসলেক্সিয়া হরফ",
|
||||
"Enable dyslexia font" : "ডিসলেক্সিয়া হরফ সক্ষম করুন",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "ওপেনডাইলেক্সিক হ'ল ফ্রি টাইপফেস / হরফ ডিজাইলেসিয়া দ্বারা সৃষ্ট কিছু সাধারণ পাঠ্য ত্রুটি প্রশমিত করার জন্য ডিজাইন করা। ",
|
||||
"Accessibility" : "অ্যাক্সেসযোগ্যতা",
|
||||
"Accessibility options for nextcloud" : "নেক্সটক্লাউডের জন্য অ্যাক্সেসযোগ্যতার বিকল্পগুলি",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "নেক্সটক্লাউডের আপনার ব্যবহার সহজ করার জন্য একাধিক অ্যাক্সেসিবিলিটি বিকল্প সরবরাহ করে",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "সর্বজনীন অ্যাক্সেস আমাদের জন্য খুব গুরুত্বপূর্ণ। আমরা ওয়েব স্ট্যান্ডার্ডগুলি অনুসরণ করি এবং মাউস ছাড়াই এবং স্ক্রিনড্রেডারের মতো সহায়ক সফ্টওয়্যার ছাড়াও সবকিছুকে ব্যবহারযোগ্য করে তুলতে পরীক্ষা করে দেখি। আমরা এএএ স্তরে এমনকি উচ্চতর বিপরীতে থিম সহ, এএ স্তরের {নির্দেশিকা} ওয়েব সামগ্রী অ্যাক্সেসিবিলিটি নির্দেশিকা {লিনএন্ড} 2.1 এর সাথে অনুগত হতে লক্ষ্য করি।",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "আপনি যদি কোনও সমস্যা খুঁজে পান তবে তাদেরকে আমাদের ইস্যু ট্র্যাকার {লিনএন্ড} এ প্রতিবেদন করতে দ্বিধা করবেন না} এবং আপনি যদি এতে জড়িত থাকতে চান তবে আসুন {ডিজাইনটিয়াম} আমাদের ডিজাইন দল {লিনএন্ড} এ যোগদান করুন"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,17 +0,0 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "অন্ধকার থিম",
|
||||
"Enable dark theme" : "অন্ধকার থিম সক্ষম করুন",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "সামগ্রিক আলোকসজ্জা এবং উজ্জ্বলতা হ্রাস করে আপনার চোখকে সহজ করার জন্য একটি অন্ধকার থিম। এটা এখনও উন্নয়ন অধীনে, তাই কোনো সমস্যা আপনি খুঁজে পেতে পারেন রিপোর্ট করুন। ",
|
||||
"High contrast mode" : "উচ্চ বিপরীতে মোড ",
|
||||
"Enable high contrast mode" : "উচ্চতর বিপরীতে মোড সক্ষম করুন",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "আপনার নেভিগেশন সহজ করতে একটি উচ্চ বিপরীতে মোড। ভিজ্যুয়াল মান হ্রাস পাবে তবে স্বচ্ছতা বাড়ানো হবে। ",
|
||||
"Dyslexia font" : "ডিসলেক্সিয়া হরফ",
|
||||
"Enable dyslexia font" : "ডিসলেক্সিয়া হরফ সক্ষম করুন",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "ওপেনডাইলেক্সিক হ'ল ফ্রি টাইপফেস / হরফ ডিজাইলেসিয়া দ্বারা সৃষ্ট কিছু সাধারণ পাঠ্য ত্রুটি প্রশমিত করার জন্য ডিজাইন করা। ",
|
||||
"Accessibility" : "অ্যাক্সেসযোগ্যতা",
|
||||
"Accessibility options for nextcloud" : "নেক্সটক্লাউডের জন্য অ্যাক্সেসযোগ্যতার বিকল্পগুলি",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "নেক্সটক্লাউডের আপনার ব্যবহার সহজ করার জন্য একাধিক অ্যাক্সেসিবিলিটি বিকল্প সরবরাহ করে",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "সর্বজনীন অ্যাক্সেস আমাদের জন্য খুব গুরুত্বপূর্ণ। আমরা ওয়েব স্ট্যান্ডার্ডগুলি অনুসরণ করি এবং মাউস ছাড়াই এবং স্ক্রিনড্রেডারের মতো সহায়ক সফ্টওয়্যার ছাড়াও সবকিছুকে ব্যবহারযোগ্য করে তুলতে পরীক্ষা করে দেখি। আমরা এএএ স্তরে এমনকি উচ্চতর বিপরীতে থিম সহ, এএ স্তরের {নির্দেশিকা} ওয়েব সামগ্রী অ্যাক্সেসিবিলিটি নির্দেশিকা {লিনএন্ড} 2.1 এর সাথে অনুগত হতে লক্ষ্য করি।",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "আপনি যদি কোনও সমস্যা খুঁজে পান তবে তাদেরকে আমাদের ইস্যু ট্র্যাকার {লিনএন্ড} এ প্রতিবেদন করতে দ্বিধা করবেন না} এবং আপনি যদি এতে জড়িত থাকতে চান তবে আসুন {ডিজাইনটিয়াম} আমাদের ডিজাইন দল {লিনএন্ড} এ যোগদান করুন"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Tem teñval",
|
||||
"Enable dark theme" : "Aotren an tem teñval",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tem teñval evit distanañ ho taoulagad en ur vihanaat ar sklêrijenn. War ziorren emañ c'hoazh, setu ma c'hallit kas deomp hoc'h evezhiadennoù.",
|
||||
"High contrast mode" : "Mod dargemm uhel",
|
||||
"Enable high contrast mode" : "Aotren mod an dargemm uhel",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Ur mod dargemm uhel evit aesaat ho merdeiñ. Bihanaet e vo ar c'halite met brasaet e vo ar spisder eta.",
|
||||
"Dyslexia font" : "Font a-enep an dislegiezh",
|
||||
"Enable dyslexia font" : "Aotren ar font a-enep an dislegiezh",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic a zo ur font digoust soñjet evit disteraat ar fazioù lenn pennañ deuet diwar dislegiezh.",
|
||||
"Accessibility" : "Monedusted",
|
||||
"Accessibility options for nextcloud" : "Arventennoù monedusted Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Pourveziñ a ra meur a arventenn vonedusted evit simplaat implij Nexcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Hollbouezus eo deomp ar vonedusted hollvedel. Heuliañ a reomp ar standardoù web ha gwiriañ a reomp hag-eñ e c'hall mat pep tra bezañ implijet hep logodenn zoken, ha gant meziantoù skoazellañ evel \"lennerioù skramm\". Klask a reomp doujañ da {guidelines}Reolennoù monedusted endalc'hadoù ar Web{linkend} 2.1 gant ul live AA, gant an tem gantañ un dargemm bras, d'al live AAA zoken.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Mar kavit un draen bennak, na dermit ket da reiñ deomp da c'houzout war {issuetracker}hor benveg dizreinañ{linkend}. Ha mar fell deoc'h kemer perzh e viot degemeret mat en {designteam}hor skipailh dezagn{linkend}!"
|
||||
},
|
||||
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
|
||||
@@ -1,17 +0,0 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "Tem teñval",
|
||||
"Enable dark theme" : "Aotren an tem teñval",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tem teñval evit distanañ ho taoulagad en ur vihanaat ar sklêrijenn. War ziorren emañ c'hoazh, setu ma c'hallit kas deomp hoc'h evezhiadennoù.",
|
||||
"High contrast mode" : "Mod dargemm uhel",
|
||||
"Enable high contrast mode" : "Aotren mod an dargemm uhel",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Ur mod dargemm uhel evit aesaat ho merdeiñ. Bihanaet e vo ar c'halite met brasaet e vo ar spisder eta.",
|
||||
"Dyslexia font" : "Font a-enep an dislegiezh",
|
||||
"Enable dyslexia font" : "Aotren ar font a-enep an dislegiezh",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic a zo ur font digoust soñjet evit disteraat ar fazioù lenn pennañ deuet diwar dislegiezh.",
|
||||
"Accessibility" : "Monedusted",
|
||||
"Accessibility options for nextcloud" : "Arventennoù monedusted Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Pourveziñ a ra meur a arventenn vonedusted evit simplaat implij Nexcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Hollbouezus eo deomp ar vonedusted hollvedel. Heuliañ a reomp ar standardoù web ha gwiriañ a reomp hag-eñ e c'hall mat pep tra bezañ implijet hep logodenn zoken, ha gant meziantoù skoazellañ evel \"lennerioù skramm\". Klask a reomp doujañ da {guidelines}Reolennoù monedusted endalc'hadoù ar Web{linkend} 2.1 gant ul live AA, gant an tem gantañ un dargemm bras, d'al live AAA zoken.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Mar kavit un draen bennak, na dermit ket da reiñ deomp da c'houzout war {issuetracker}hor benveg dizreinañ{linkend}. Ha mar fell deoc'h kemer perzh e viot degemeret mat en {designteam}hor skipailh dezagn{linkend}!"
|
||||
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Tamna tema",
|
||||
"Enable dark theme" : "Aktiviraj tamnu temu",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Koristite tamnu temu da bi smanjili napetost u očima smanjenjem luminiscencije i svijetla pozadine. Tema je još uvijek u razvojnoj fazi, molimo da prijavite greške ako ih primjetite. ",
|
||||
"High contrast mode" : "Mod visokog kontrasta",
|
||||
"Enable high contrast mode" : "Aktiviraj mod visokog kontrasta",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mod visokog kontrasta kako bi vam olakšali navigaciju, vizuelno će kvalitet biti reduciran ali jasnoća prikaza se povećava ",
|
||||
"Dyslexia font" : "Font za disleksičare",
|
||||
"Enable dyslexia font" : "Aktiviraj font za disleksičare"
|
||||
},
|
||||
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
|
||||
@@ -1,11 +0,0 @@
|
||||
{ "translations": {
|
||||
"Dark theme" : "Tamna tema",
|
||||
"Enable dark theme" : "Aktiviraj tamnu temu",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Koristite tamnu temu da bi smanjili napetost u očima smanjenjem luminiscencije i svijetla pozadine. Tema je još uvijek u razvojnoj fazi, molimo da prijavite greške ako ih primjetite. ",
|
||||
"High contrast mode" : "Mod visokog kontrasta",
|
||||
"Enable high contrast mode" : "Aktiviraj mod visokog kontrasta",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mod visokog kontrasta kako bi vam olakšali navigaciju, vizuelno će kvalitet biti reduciran ali jasnoća prikaza se povećava ",
|
||||
"Dyslexia font" : "Font za disleksičare",
|
||||
"Enable dyslexia font" : "Aktiviraj font za disleksičare"
|
||||
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
|
||||
}
|
||||
@@ -1,19 +1,23 @@
|
||||
OC.L10N.register(
|
||||
"accessibility",
|
||||
{
|
||||
"Dark theme" : "Tema fosc",
|
||||
"Enable dark theme" : "Habilita el tema fosc",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Tema fosc que ajuda els ulls reduint la lluminositat i la brillantor general. Com que encara es troba en desenvolupament, agrairem que informeu de les errades que hi pugueu trobar.",
|
||||
"High contrast mode" : "Mode de contrast alt",
|
||||
"Enable high contrast mode" : "Habilita el mode de contrast alt",
|
||||
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mode de contrast alt per a facilitar la navegació. La qualitat visual es reduirà però s'incrementarà la claredat.",
|
||||
"High contrast theme" : "Tema de contrast alt",
|
||||
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Un tema de contrast alt per facilitar la navegació. La qualitat visual es reduirà però s'incrementarà la claredat.",
|
||||
"Dark theme (beta)" : "Tema fosc (beta)",
|
||||
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Un tema fosc per ajudar els ulls reduint la lluminositat i la brillantor totals. És sota desenvolupament, de manera que si us plau informeu de les errades que hi pugueu trobar. ",
|
||||
"Dyslexia font" : "Tipus de lletra per a la dislèxia",
|
||||
"Enable dyslexia font" : "Habilita el tipus de lletra per a la dislèxia",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic és un tipus de lletra gratuït dissenyat per a mitigar alguns dels errors de lectura habituals causats per la dislèxia.",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic és un tipus de lletra gratuït dissenyat per mitigar alguns dels errors de lectura habituals causats per la dislèxia.",
|
||||
"Accessibility" : "Accessibilitat",
|
||||
"Accessibility options for nextcloud" : "Paràmetres d'accessibilitat del Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Proporciona diversos paràmetres d'accessibilitat per a facilitar-vos l'ús del Nextcloud",
|
||||
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "L'accés universal és molt important per a nosaltres. Seguim els estàndards web i comprovem que tot es pugui utilitzar també sense el ratolí i amb programes d'assistència, com ara els lectors de pantalla. Volem complir les {guidelines}Pautes d'accessibilitat del contingut web{linkend} 2.1 a nivell AA i amb el tema de contrast alt fins i tot a nivell AAA.",
|
||||
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Si trobeu cap problema, no dubteu a informar-ne al {issuetracker}nostre gestor d'errors{linkend}. Si a més voleu implicar-vos, uniu-vos al {designteam}nostre equip de disseny{linked}!"
|
||||
"Accessibility options for nextcloud" : "Paràmetres d'accessibilitat de Nextcloud",
|
||||
"Provides multiple accessibilities options to ease your use of Nextcloud" : "Proporciona diversos paràmetres d'accessibilitat per facilitar-vos l'ús de Nextcloud",
|
||||
"Web Content Accessibility Guidelines" : "Pautes d'accessibilitat de continguts web",
|
||||
"our issue tracker" : "el nostre seguidor d'incidències",
|
||||
"our design team" : "el nostre equip de disseny",
|
||||
"Enable" : "Activa",
|
||||
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia. The typeface was created by Abelardo Gonzalez, who released it through an open-source license." : "OpenDyslexic és una tipografia gratuïta dissenyada per reduir alguns dels problemes comuns de lectura causats per la dislèxia. La tipografia fou creada per Abelardo González, que la va publicar amb una llicència oberta.",
|
||||
"Provides multiple accessibilities options to ease your use of nextcloud" : "Proporciona múltiples opcions d'accessibilitat per facilitar l'ús de Nextcloud",
|
||||
"Themes" : "Temes",
|
||||
"Fonts" : "Tipografies",
|
||||
"enabled" : "activat"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user