Compare commits
340 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 93cae9d2d1 | |||
| 9f8ca72feb | |||
| 06dd4affeb | |||
| 048888be87 | |||
| 5f0b766cea | |||
| f3f56a97ea | |||
| a88da0c41f | |||
| 7c98f98527 | |||
| da96dee368 | |||
| 7017055915 | |||
| c53282f208 | |||
| 07a6266359 | |||
| 70433a6a34 | |||
| d056f7e110 | |||
| 54b6484f70 | |||
| ecef8abf65 | |||
| ee56fb2438 | |||
| 3bc782cb0e | |||
| 7dec977d48 | |||
| 0a897708d6 | |||
| 6df5250288 | |||
| e79aa2050c | |||
| ef3f48124b | |||
| 8d88db3173 | |||
| 4e4cff2052 | |||
| 89b795565c | |||
| 6d15db42db | |||
| 56b46a8198 | |||
| d31c6d61af | |||
| 00dd295c09 | |||
| 8607a9871c | |||
| 5077b9318e | |||
| b126ccfcd8 | |||
| 20074f62ad | |||
| 8584636dd7 | |||
| 3d3a2f1f6d | |||
| 74e704691c | |||
| e59d7ae35e | |||
| f2cd93584f | |||
| c4a8887dca | |||
| 607f1166f1 | |||
| 77d28e0f04 | |||
| bdb92df479 | |||
| 534e96d130 | |||
| 6d04819868 | |||
| 80169b836a | |||
| 2b3bb179e5 | |||
| 75cb63beea | |||
| 725f6c2640 | |||
| e4c4792a98 | |||
| ba6e44746f | |||
| f16322d492 | |||
| 6c59808ecd | |||
| 85372d307f | |||
| fcb64dfd53 | |||
| 2377b79b96 | |||
| 7aac01d3f9 | |||
| 21ebb07d44 | |||
| 86fa14694a | |||
| 51036340e9 | |||
| e0d36ded05 | |||
| 739387bc19 | |||
| b5ba74aed5 | |||
| 0b71df0ed0 | |||
| 1aba55aa61 | |||
| 396af5a234 | |||
| 4790564cd1 | |||
| ad940fdbee | |||
| 6ad2248be0 | |||
| a606888f50 | |||
| b6d8e7c3fd | |||
| 8006bb982c | |||
| 38ea4d2d19 | |||
| 13b36371e6 | |||
| 8308321fe1 | |||
| 661e744d39 | |||
| c24b698bc7 | |||
| 1e81fc2dbe | |||
| 51d75fc7ae | |||
| c97df156b2 | |||
| 84730be28b | |||
| 8d5c51730b | |||
| c383452b22 | |||
| 3728ddd8a2 | |||
| 7181de9c96 | |||
| ca3a3e32ca | |||
| f38386c77c | |||
| 9891055957 | |||
| 054dbf9b07 | |||
| 3738cd9b93 | |||
| 41fd0aaa26 | |||
| f2c3926f99 | |||
| 67af95981d | |||
| 67fbacee59 | |||
| 1e62541a15 | |||
| 1bc2b113ca | |||
| fa43d766e8 | |||
| 91f4237eb7 | |||
| 2655a11691 | |||
| e092141b6e | |||
| e56441d6c5 | |||
| cb1c0d7221 | |||
| 1185289509 | |||
| 0bc3ac4066 | |||
| 6c1d939447 | |||
| 20748e1f4d | |||
| d51e493a30 | |||
| 535b60bfed | |||
| 6954d3a50c | |||
| f6bd5afd03 | |||
| 53fb638ac6 | |||
| a95027b028 | |||
| 022ced65b6 | |||
| e5963abf7b | |||
| 7c2d9d495a | |||
| 4bb32a4626 | |||
| 1e70f72957 | |||
| 41b23e2d00 | |||
| 72d4e1cd9a | |||
| ff451186e9 | |||
| 2e447f4ef3 | |||
| 501e1aadd5 | |||
| 02c0a8fbed | |||
| fa8b998b62 | |||
| 23d321f4f1 | |||
| f6963f3936 | |||
| 6db47f7a6e | |||
| edafd81a20 | |||
| e27e61feee | |||
| 6c8f70e180 | |||
| d58b45072a | |||
| bf6a7a8e3a | |||
| 976db32a93 | |||
| 8e35ea0e1f | |||
| e161be8e2a | |||
| 9dbc4df10d | |||
| a16975b810 | |||
| 2c6921e6b8 | |||
| 2b11da251e | |||
| 2a5ae7ab48 | |||
| 81352411be | |||
| 686686b2e2 | |||
| 65dcda3aa1 | |||
| 3f70e74573 | |||
| 0e8b48e6c6 | |||
| 8e02d45d4d | |||
| 00548d7729 | |||
| c31e27af02 | |||
| ea6e4cb033 | |||
| b08b8103da | |||
| 9fd015353c | |||
| befa7f4913 | |||
| b074be1b1d | |||
| f4d298cc03 | |||
| 6e876fad65 | |||
| e5dd55c935 | |||
| 062d9dadcb | |||
| 7b0f1baa86 | |||
| 7bc14ae1df | |||
| b0c359ccd2 | |||
| dfe200bd4e | |||
| 9687febed7 | |||
| 9bd4322558 | |||
| f0aca462c6 | |||
| a1248780bc | |||
| 0bad752282 | |||
| fd1de43fa5 | |||
| 2b82c353c8 | |||
| 344ac9c694 | |||
| b784162761 | |||
| 38735c2bd0 | |||
| c3092fda9a | |||
| 6cc23b170a | |||
| 0b33aefc86 | |||
| be01ff127f | |||
| ef49138bfa | |||
| c680ebbc15 | |||
| dea1213589 | |||
| fc7a4147c0 | |||
| 8fafb40dc9 | |||
| 4958ae5fd4 | |||
| 5ce0b44960 | |||
| da7bbb4454 | |||
| c0429095bc | |||
| 297debef34 | |||
| 20efce99c8 | |||
| 42adde5132 | |||
| 4cfb5eac02 | |||
| 8fc29440f4 | |||
| 8aecb95aa4 | |||
| b0edd76af5 | |||
| 157db55602 | |||
| 560f3a55f0 | |||
| 1050cc2322 | |||
| 13068ba3c5 | |||
| 80773f2f15 | |||
| 3cc69aa901 | |||
| c6f2faf1c1 | |||
| 9bff2e7f03 | |||
| c99c969d55 | |||
| bfdfeb460b | |||
| a77eaff83f | |||
| a68533e5a6 | |||
| 327a814a42 | |||
| 2d0a038642 | |||
| 4f087d7af6 | |||
| 81e787822a | |||
| 6a99ffac03 | |||
| f5b72fb80e | |||
| ea798ff2d2 | |||
| 37f961a664 | |||
| 77797b4910 | |||
| 673fd35a8f | |||
| 98e4ebfe3c | |||
| 3b8c58d516 | |||
| 8ffe43c574 | |||
| 8f30ff3cc6 | |||
| 9a7e7c3d42 | |||
| e186fecd16 | |||
| 42756b4655 | |||
| c9d852ade2 | |||
| f215d2f8c9 | |||
| 986ad0a497 | |||
| f52c9d759f | |||
| 2450706582 | |||
| df4a7b3b28 | |||
| 40c8bafc93 | |||
| fbf93de67a | |||
| 357e8b76e8 | |||
| c3a649c755 | |||
| 905d07a850 | |||
| fe6fdfe50d | |||
| 8c229684d7 | |||
| f012f0a353 | |||
| 32b00cee4f | |||
| df2c2d48cc | |||
| b2b7587f54 | |||
| dae2fdaae2 | |||
| 381d15850b | |||
| 5919bd97d5 | |||
| 035fe3db7b | |||
| d92500178f | |||
| fe9f53259d | |||
| 39a28b4bfb | |||
| dc36724f78 | |||
| a416baa946 | |||
| be497b3bce | |||
| 77cf9dfbe7 | |||
| c089cb21e7 | |||
| 2ecb952156 | |||
| 1818ef9ef8 | |||
| 20303281f0 | |||
| 827cfc8ede | |||
| 1072b70210 | |||
| 9e6c37c3c6 | |||
| fa43738b61 | |||
| 986ac005e0 | |||
| 62591b2e8b | |||
| 2495570889 | |||
| a4906451e2 | |||
| 5829f21b19 | |||
| e30c533644 | |||
| 90f5e066c3 | |||
| bcb8ce3e07 | |||
| 3b6a1254cf | |||
| 03de502f1f | |||
| fac588297d | |||
| 940b73280d | |||
| 1a5e67a270 | |||
| 6a60a01e4f | |||
| 7d205402ea | |||
| 7a79e95254 | |||
| 408f7ae133 | |||
| 9321364587 | |||
| dda212a48e | |||
| 4a05982983 | |||
| 900acafa88 | |||
| eba07843f5 | |||
| 0915c6223d | |||
| b75d4c08dc | |||
| 1aa91f649f | |||
| 8cf4e6107f | |||
| ad41056865 | |||
| b7a6a9d4a2 | |||
| dcd5b15443 | |||
| e4dd609b67 | |||
| c7470648b7 | |||
| 5750612ca2 | |||
| 14f6030140 | |||
| 3085e2e8b2 | |||
| 084b342c84 | |||
| 5641871d97 | |||
| 889933b353 | |||
| 8b4b3e19bb | |||
| 1d63af5d95 | |||
| d49923c880 | |||
| 457e7c2a7d | |||
| fd243ff5c4 | |||
| dffd76d4ee | |||
| 4606ec5ed6 | |||
| 787aa98b8a | |||
| 4506868dd4 | |||
| 26e2fc3368 | |||
| 7c6dbd12c5 | |||
| 0271f5e95c | |||
| ffabd58d2f | |||
| 164ff8335a | |||
| 13a6d52cef | |||
| 73be85e0b0 | |||
| 74db98cc69 | |||
| a9e3253de0 | |||
| c2ff14bcf1 | |||
| 687715c877 | |||
| e71bc1d212 | |||
| 7dc36156c2 | |||
| dca6dbb387 | |||
| bdebfc5558 | |||
| dc95fc25e2 | |||
| 3b68153718 | |||
| eb014fb0a1 | |||
| 7d9b728ee5 | |||
| ca17989d0f | |||
| b219d5b68d | |||
| 6adea4c208 | |||
| c7f47e4dda | |||
| 4f8e3cfced | |||
| 5d10bff7e8 | |||
| 1b7c5fa6a3 | |||
| f2575ccdb5 | |||
| 95079dfe05 | |||
| 029999049c | |||
| 18315f44b8 | |||
| 8827c22973 | |||
| a7d1ce3adc | |||
| 837d3ea4f9 | |||
| 1a948d713f | |||
| 7768cbb19e | |||
| 15665616f4 | |||
| 5fdac43d5b | |||
| abd4bf1f27 |
@@ -0,0 +1,15 @@
|
||||
codecov:
|
||||
branch: master
|
||||
ci:
|
||||
- drone.nextcloud.com
|
||||
- !scrutinizer-ci.com
|
||||
|
||||
coverage:
|
||||
precision: 2
|
||||
round: down
|
||||
range: "70...100"
|
||||
status:
|
||||
project: off
|
||||
patch: off
|
||||
|
||||
comment: off
|
||||
@@ -1,86 +0,0 @@
|
||||
FROM ubuntu:jammy
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# PHP
|
||||
RUN apt-get update -y && \
|
||||
apt install -y apache2 vim software-properties-common sudo nano gnupg2
|
||||
|
||||
RUN apt-get install --no-install-recommends -y \
|
||||
php8.1 \
|
||||
php8.1-common \
|
||||
php8.1-gd \
|
||||
php8.1-zip \
|
||||
php8.1-curl \
|
||||
php8.1-xml \
|
||||
php8.1-xmlrpc \
|
||||
php8.1-mbstring \
|
||||
php8.1-sqlite \
|
||||
php8.1-xdebug \
|
||||
php8.1-pgsql \
|
||||
php8.1-intl \
|
||||
php8.1-imagick \
|
||||
php8.1-gmp \
|
||||
php8.1-apcu \
|
||||
php8.1-bcmath \
|
||||
php8.1-redis \
|
||||
php8.1-soap \
|
||||
php8.1-imap \
|
||||
php8.1-opcache \
|
||||
php8.1-cli \
|
||||
php8.1-dev \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
curl \
|
||||
lsof \
|
||||
make \
|
||||
unzip
|
||||
|
||||
# Composer
|
||||
RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
|
||||
curl -sS https://composer.github.io/installer.sig -o /tmp/composer-setup.sig && \
|
||||
php -r "if (hash_file('sha384', '/tmp/composer-setup.php') !== trim(file_get_contents('/tmp/composer-setup.sig'))) { echo 'Composer installation failed, invalid hash'; exit(1); }" && \
|
||||
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
|
||||
rm /tmp/composer-setup.php /tmp/composer-setup.sig
|
||||
|
||||
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.1/cli/conf.d/20-xdebug.ini && \
|
||||
echo "xdebug.remote_autostart = 1" >> /etc/php/8.1/cli/conf.d/20-xdebug.ini && \
|
||||
echo "apc.enable_cli=1" >> /etc/php/8.1/cli/conf.d/20-apcu.ini
|
||||
|
||||
# Autostart XDebug for apache
|
||||
RUN { \
|
||||
echo "xdebug.mode=debug"; \
|
||||
echo "xdebug.start_with_request=yes"; \
|
||||
} >> /etc/php/8.1/apache2/conf.d/20-xdebug.ini
|
||||
|
||||
# Docker
|
||||
RUN apt-get -y install \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg-agent \
|
||||
software-properties-common && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository \
|
||||
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) \
|
||||
stable" && \
|
||||
apt-get update -y && \
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io && \
|
||||
ln -s /var/run/docker-host.sock /var/run/docker.sock
|
||||
|
||||
# Dedicated DevContainer user runs Apache
|
||||
ENV APACHE_RUN_USER=devcontainer
|
||||
ENV APACHE_RUN_GROUP=devcontainer
|
||||
RUN useradd -ms /bin/bash ${APACHE_RUN_USER} && \
|
||||
adduser ${APACHE_RUN_USER} sudo && \
|
||||
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
|
||||
sed -ri "s/^export APACHE_RUN_USER=.*$/export APACHE_RUN_USER=${APACHE_RUN_USER}/" "/etc/apache2/envvars" && \
|
||||
sed -ri "s/^export APACHE_RUN_GROUP=.*$/export APACHE_RUN_GROUP=${APACHE_RUN_GROUP}/" "/etc/apache2/envvars"
|
||||
|
||||
USER devcontainer
|
||||
|
||||
# NVM
|
||||
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
||||
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16'
|
||||
|
||||
WORKDIR /var/www/html
|
||||
@@ -1,72 +0,0 @@
|
||||
# Nextcloud DevContainer
|
||||
|
||||
## Usage
|
||||
|
||||
Make sure you have the [VSCode DevContainer](https://code.visualstudio.com/docs/devcontainers/containers) extensions installed. If you open the project, VSCode will ask you if you want to open it inside of the DevContainer. If that's not the case, use <kbd>F1</kbd>→*Dev Containers: Open Folder in Container*.
|
||||
|
||||
Alternatively open the project directly in [GitHub Codespaces](https://github.com/features/codespaces).
|
||||
|
||||
That's already it. Everything else will be configured automatically by the Containers startup routine.
|
||||
|
||||
## Credentials
|
||||
|
||||
On first start the Container installs and configures Nextcloud with the following credentials:
|
||||
|
||||
**Nextcloud Admin Login**
|
||||
|
||||
Username: `admin` <br>
|
||||
Password: `admin`
|
||||
|
||||
**Postgres credentials**
|
||||
|
||||
Username: `postgres` <br>
|
||||
Password: `postgres` <br>
|
||||
Database: `postgres`
|
||||
|
||||
## Services
|
||||
|
||||
The following services will be started:
|
||||
|
||||
| Service | Local port | Description |
|
||||
|---------|------------|-------------|
|
||||
| Nextcloud (served via Apache) | `80` | The main application |
|
||||
| Mailhog | `8025` | SMTP email delivery for testing |
|
||||
| Adminer | `8080` | Database viewer. Use credentials from above and connect to `localhost` to get access to the NC database |
|
||||
|
||||
## Permissions
|
||||
|
||||
The container runs with the user `devcontainer` who is also running the Apache2 process. All mounted source files have
|
||||
proper permissions so that this user can access everything which is inside the current workspace. If you need to
|
||||
get root permissions for whatever reason, use `sudo su` or `sudo <command>` (for example `sudo service apache2 restart`).
|
||||
Everything else (like building the application, adjusting files, ...) should be done as `devcontainer` user.
|
||||
|
||||
## NodeJs and NVM
|
||||
|
||||
The container comes with [`nvm`](https://github.com/nvm-sh/nvm) and Node 16 installed. This should be sufficient to
|
||||
build Nextcloud Core sources via `make`. If you need a different Node Version (for example for
|
||||
app development), you can easily switch between different versions by running:
|
||||
|
||||
```bash
|
||||
# Install and use Node 14
|
||||
nvm install 14
|
||||
nvm use 14
|
||||
|
||||
# Check version
|
||||
node -v
|
||||
|
||||
# Switch back to Node 16
|
||||
nvm use 16
|
||||
|
||||
# Check version
|
||||
node -v
|
||||
```
|
||||
|
||||
Note that `nvm` is only installed for the user `devcontainer` and won't work out of the box for
|
||||
any other user.
|
||||
|
||||
## Debugging
|
||||
|
||||
The Apache webserver is already configured to automatically try to connect to a debugger process
|
||||
listening on port `9003`. To start the VSCode debugger process, use the delivered debug profile `Listen for XDebug`.
|
||||
After you started the VSCode debugger, just navigate to the appropriate Nextcloud URL to get your
|
||||
debug hits.
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
$codespaceName = getenv('CODESPACE_NAME');
|
||||
$codespaceDomain = getenv('GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN');
|
||||
|
||||
$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(is_string($codespaceName) && !empty($codespaceName) && is_string($codespaceDomain) && !empty($codespaceDomain)) {
|
||||
$host = $codespaceName . '-80.' . $codespaceDomain;
|
||||
$CONFIG['overwritehost'] = $host;
|
||||
$CONFIG['overwrite.cli.url'] = 'https://' . $host;
|
||||
$CONFIG['overwriteprotocol'] = 'https';
|
||||
$CONFIG['trusted_domains'] = [ $host ];
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{
|
||||
"name": "NextcloudServer",
|
||||
"dockerComposeFile": "docker-compose.yml",
|
||||
"service": "nextclouddev",
|
||||
"postCreateCommand": ".devcontainer/setup.sh",
|
||||
"forwardPorts": [
|
||||
80,
|
||||
8080,
|
||||
8025
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"felixfbecker.php-debug",
|
||||
"felixfbecker.php-intellisense",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"xdebug.php-debug",
|
||||
"donjayamanne.githistory"
|
||||
],
|
||||
"settings": {
|
||||
"php.suggest.basic": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspaceFolder": "/var/www/html",
|
||||
"remoteUser": "devcontainer"
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
version: '3'
|
||||
services:
|
||||
nextclouddev:
|
||||
build: .
|
||||
volumes:
|
||||
- .:/workspace:cached
|
||||
- /var/run/docker.sock:/var/run/docker-host.sock
|
||||
- ..:/var/www/html
|
||||
command: /var/www/html/.devcontainer/entrypoint.sh
|
||||
ports:
|
||||
- 80:80
|
||||
- 8080:8080
|
||||
- 8025:8025
|
||||
|
||||
db:
|
||||
image: postgres
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
PGDATA: /data/postgres
|
||||
volumes:
|
||||
- db:/data/postgres
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
adminer:
|
||||
image: adminer
|
||||
restart: always
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
mailhog:
|
||||
image: mailhog/mailhog
|
||||
restart: always
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
volumes:
|
||||
db:
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo service apache2 start
|
||||
|
||||
while sleep 1000; do :; done
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Listen for Xdebug",
|
||||
"type": "php",
|
||||
"request": "launch",
|
||||
"port": 9003
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/bin/bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
cd $DIR/
|
||||
|
||||
# Set git safe.directory
|
||||
git config --global --add safe.directory /var/www/html
|
||||
git config --global --add safe.directory /var/www/html/3rdparty
|
||||
|
||||
git submodule update --init
|
||||
|
||||
# Codespace config
|
||||
cp .devcontainer/codespace.config.php config/codespace.config.php
|
||||
|
||||
# VSCode debugger profile
|
||||
mkdir -p .vscode && cp .devcontainer/launch.json .vscode/launch.json
|
||||
|
||||
# Onetime installation setup
|
||||
if [[ ! $(sudo -u ${APACHE_RUN_USER} php occ status) =~ installed:[[:space:]]*true ]]; then
|
||||
echo "Running NC installation"
|
||||
sudo -u ${APACHE_RUN_USER} php occ maintenance:install \
|
||||
--verbose \
|
||||
--database=pgsql \
|
||||
--database-name=postgres \
|
||||
--database-host=127.0.0.1 \
|
||||
--database-port=5432 \
|
||||
--database-user=postgres \
|
||||
--database-pass=postgres \
|
||||
--admin-user admin \
|
||||
--admin-pass admin
|
||||
fi
|
||||
|
||||
sudo service apache2 restart
|
||||
+846
-429
File diff suppressed because it is too large
Load Diff
@@ -10,24 +10,5 @@ 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
|
||||
|
||||
[package*.json]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
[build/psalm-baseline.xml]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# Ignoring folders for eslint
|
||||
node_modules/
|
||||
3rdparty/
|
||||
**/vendor/
|
||||
**/l10n/
|
||||
**/js/*
|
||||
*.config.js
|
||||
tests/lib/
|
||||
apps-extra
|
||||
|
||||
# TODO: remove when comments files is not using handlebar templates anymore
|
||||
apps/comments/src/templates.js
|
||||
+6
-24
@@ -1,35 +1,17 @@
|
||||
module.exports = {
|
||||
globals: {
|
||||
__webpack_nonce__: true,
|
||||
__webpack_public_path__: true,
|
||||
_: true,
|
||||
$: true,
|
||||
dayNames: true,
|
||||
escapeHTML: true,
|
||||
firstDay: true,
|
||||
moment: true,
|
||||
escapeHTML: true,
|
||||
oc_userconfig: true,
|
||||
sinon: true,
|
||||
dayNames: true,
|
||||
firstDay: true
|
||||
},
|
||||
plugins: [
|
||||
'cypress',
|
||||
],
|
||||
extends: [
|
||||
'@nextcloud/eslint-config/typescript',
|
||||
'plugin:cypress/recommended',
|
||||
],
|
||||
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',
|
||||
'vue/custom-event-name-casing': ['error', 'kebab-case', {
|
||||
// allows custom xxxx:xxx events formats
|
||||
ignores: ['/^[a-z]+(?:-[a-z]+)*:[a-z]+(?:-[a-z]+)*$/u'],
|
||||
}],
|
||||
},
|
||||
settings: {
|
||||
jsdoc: {
|
||||
mode: 'typescript',
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
+24
-4
@@ -1,4 +1,24 @@
|
||||
/dist/* binary
|
||||
/package-lock.json merge=binary
|
||||
/core/css/*.css* binary
|
||||
/.devcontainer/*.sh text eol=lf
|
||||
/core/js/dist/*.js binary
|
||||
/core/js/dist/*.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/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_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/settings/js/vue* 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/workflowengine/js/*.js binary
|
||||
/apps/workflowengine/js/*.js.map binary
|
||||
|
||||
@@ -1,53 +1,2 @@
|
||||
# App maintainers
|
||||
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
|
||||
/apps/cloud_federation_api/appinfo/info.xml @mejo-
|
||||
/apps/comments/appinfo/info.xml @marcelklehr @Pytal
|
||||
/apps/contactsinteraction/appinfo/info.xml @kesselb @miaulalala @ChristophWurst @GretaD @hamza221 @st3iny
|
||||
/apps/dashboard/appinfo/info.xml @julien-nc @juliushaertl
|
||||
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
|
||||
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
|
||||
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
|
||||
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
|
||||
/apps/federation/appinfo/info.xml @datenangebot
|
||||
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @Fenn-CS
|
||||
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
|
||||
/apps/files_reminders/appinfo/info.xml @Pytal
|
||||
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
|
||||
/apps/files_trashbin/appinfo/info.xml @Pytal @icewind1991
|
||||
/apps/files_versions/appinfo/info.xml @artonge @icewind1991
|
||||
/apps/oauth2/appinfo/info.xml @julien-nc @ChristophWurst
|
||||
/apps/provisioning_api/appinfo/info.xml @provokateurin @nickvergessen
|
||||
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
|
||||
/apps/sharebymail/appinfo/info.xml @Altahrim
|
||||
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
|
||||
/apps/theming/appinfo/info.xml @skjnldsv @juliushaertl
|
||||
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
|
||||
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
|
||||
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
|
||||
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
|
||||
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
|
||||
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
|
||||
|
||||
# Security team
|
||||
/resources/config/ca-bundle.crt @ChristophWurst @miaulalala @nickvergessen
|
||||
/.drone.yml @nickvergessen
|
||||
|
||||
# Two-Factor Authentication
|
||||
# https://github.com/nextcloud/wg-two-factor-authentication#members
|
||||
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
|
||||
# Limit login to IP
|
||||
# Watch login routes for https://github.com/nextcloud/limit_login_to_ip
|
||||
/core/routes.php @Altahrim
|
||||
|
||||
# OpenAPI
|
||||
openapi.json @provokateurin
|
||||
ResponseDefinitions.php @provokateurin
|
||||
|
||||
# Personal interest
|
||||
*/Activity/* @nickvergessen
|
||||
*/Notifications/* @nickvergessen
|
||||
/lib/private/Profiler @CarlSchwan
|
||||
/lib/public/Profiler @CarlSchwan
|
||||
|
||||
+2
-1
@@ -1 +1,2 @@
|
||||
custom: https://nextcloud.com/include/
|
||||
# You can add one username per supported platform and one custom link
|
||||
custom: https://www.bountysource.com/teams/nextcloud
|
||||
|
||||
@@ -1,217 +0,0 @@
|
||||
name: "Bug report: Nextcloud Server"
|
||||
description: "Submit a report and help us improve Nextcloud Server"
|
||||
title: "[Bug]: "
|
||||
labels: ["bug", "0. Needs triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### 👍 Thank you for contributing to our project!
|
||||
Please note this is a **free and open-source** project. Most people take on their own time to help you, so please, be patient.
|
||||
You can obtain [Enterprise support](https://nextcloud.com/support/) if you run Nextcloud Server in a mission critical environment.
|
||||
- type: checkboxes
|
||||
id: before-posting
|
||||
attributes:
|
||||
label: "⚠️ This issue respects the following points: ⚠️"
|
||||
description: All conditions are **required**. Your issue can be closed if these are checked incorrectly.
|
||||
options:
|
||||
- label: This is a **bug**, not a question or a configuration/webserver/proxy issue.
|
||||
required: true
|
||||
- label: This issue is **not** already reported on [Github](https://github.com/nextcloud/server/issues?q=is%3Aopen+is%3Aissue+label%3Abug) OR [Nextcloud Community Forum](https://help.nextcloud.com/) _(I've searched it)_.
|
||||
required: true
|
||||
- label: Nextcloud Server **is** up to date. See [Maintenance and Release Schedule](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule) for supported versions.
|
||||
required: true
|
||||
- label: I agree to follow Nextcloud's [Code of Conduct](https://nextcloud.com/contribute/code-of-conduct/).
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug-description
|
||||
attributes:
|
||||
label: Bug description
|
||||
description: |
|
||||
Provide a description of the bug you're experiencing.
|
||||
Don't just expect someone will guess what your specific problem is and provide full details.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: |
|
||||
Describe the steps to reproduce the bug.
|
||||
The better your description is _(go 'here', click 'there'...)_ the fastest you'll get an _(accurate)_ answer.
|
||||
value: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: Describe what you expected to happen instead.
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: install-method
|
||||
attributes:
|
||||
label: Installation method
|
||||
description: |
|
||||
Select installation method you've used.
|
||||
_Describe the method in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "Community Web installer on a VPS or web space"
|
||||
- "Community Manual installation with Archive"
|
||||
- "Community Docker image"
|
||||
- "Community NextcloudPi appliance"
|
||||
- "Community SNAP package"
|
||||
- "Community VM appliance"
|
||||
- "Other Community project"
|
||||
- "Official All-in-One appliance"
|
||||
- type: dropdown
|
||||
id: nextcloud-version
|
||||
attributes:
|
||||
label: Nextcloud Server version
|
||||
description: |
|
||||
Select Nextcloud Server version.
|
||||
_Versions not listed here are not maintained and not supported anymore_
|
||||
options:
|
||||
- "25"
|
||||
- "26"
|
||||
- "27"
|
||||
- "master"
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: system
|
||||
attributes:
|
||||
label: Operating system
|
||||
description: |
|
||||
Select operating system where Nextcloud Server is installed.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "Debian/Ubuntu"
|
||||
- "RHEL/CentOS"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: php
|
||||
attributes:
|
||||
label: PHP engine version
|
||||
description: |
|
||||
Select PHP engine version serving Nextcloud Server.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "PHP 7.4"
|
||||
- "PHP 8.0"
|
||||
- "PHP 8.1"
|
||||
- "PHP 8.2"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: webserver
|
||||
attributes:
|
||||
label: Web server
|
||||
description: |
|
||||
Select Webserver serving Nextcloud Server.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "Apache (supported)"
|
||||
- "Nginx"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: database
|
||||
attributes:
|
||||
label: Database engine version
|
||||
description: |
|
||||
Select Database engine serving Nextcloud Server.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "MySQL"
|
||||
- "MariaDB"
|
||||
- "PostgreSQL"
|
||||
- "SQlite"
|
||||
- "Oracle"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: fresh
|
||||
attributes:
|
||||
label: Is this bug present after an update or on a fresh install?
|
||||
description: |
|
||||
Select if bug is present after an update or on a fresh install.
|
||||
options:
|
||||
- "Updated from a MINOR version (ex. 22.1 to 22.2)"
|
||||
- "Upgraded to a MAJOR version (ex. 22 to 23)"
|
||||
- "Fresh Nextcloud Server install"
|
||||
- type: dropdown
|
||||
id: encryption
|
||||
attributes:
|
||||
label: Are you using the Nextcloud Server Encryption module?
|
||||
description: Select if encryption is Enabled on your Nextcloud Server.
|
||||
options:
|
||||
- "Encryption is Enabled"
|
||||
- "Encryption is Disabled"
|
||||
- type: checkboxes
|
||||
id: users
|
||||
attributes:
|
||||
label: What user-backends are you using?
|
||||
description: |
|
||||
Select **all** user-backends Enabled on your Nextcloud Server.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- label: "Default user-backend _(database)_"
|
||||
- label: "LDAP/ Active Directory"
|
||||
- label: "SSO - SAML"
|
||||
- label: "Other"
|
||||
- type: textarea
|
||||
id: configs
|
||||
attributes:
|
||||
label: Configuration report
|
||||
description: |
|
||||
Provide information about your configuration.
|
||||
To get this information, execute one of the following commands on the CLI:
|
||||
```shell
|
||||
sudo -u www-data php occ config:list system
|
||||
php occ config:list system
|
||||
./occ config:list system
|
||||
```
|
||||
> NOTE: This will be automatically formatted into code for better readability.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: apps
|
||||
attributes:
|
||||
label: List of activated Apps
|
||||
description: |
|
||||
Provide information about your apps.
|
||||
To get this information, execute one of the following commands on the CLI:
|
||||
```shell
|
||||
sudo -u www-data php occ app:list
|
||||
php occ app:list
|
||||
./occ app:list
|
||||
```
|
||||
> NOTE: This will be automatically formatted into code for better readability.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: nextcloud-signingstatus
|
||||
attributes:
|
||||
label: Nextcloud Signing status
|
||||
description: |
|
||||
Provide Nextcloud Signing status.
|
||||
First, login as Admin user into your Nextcloud, then access this URL:
|
||||
```shell
|
||||
https://yournextcloud.tld/index.php/settings/integrity/failed
|
||||
```
|
||||
> NOTE: This will be automatically formatted into code for better readability.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: nextcloud-log
|
||||
attributes:
|
||||
label: Nextcloud Logs
|
||||
description: |
|
||||
Provide Nextcloud logs lines.
|
||||
Copy all contents from `data/nextcloud.log` or a RAW from `/settings/admin/logging` section:
|
||||
> NOTE: This will be automatically formatted into code for better readability.
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: additional-info
|
||||
attributes:
|
||||
label: Additional info
|
||||
description: Any additional information related to the issue (ex. browser console errors, software versions).
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Help us improving by reporting a bug
|
||||
labels: bug, 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.
|
||||
|
||||
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 deal with the bug 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 and are using Nextcloud Enterprise, 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.
|
||||
-->
|
||||
|
||||
### Steps to reproduce
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
### Expected behaviour
|
||||
Tell us what should happen
|
||||
|
||||
### Actual behaviour
|
||||
Tell us what happens instead
|
||||
|
||||
### Server configuration
|
||||
|
||||
**Operating system:**
|
||||
|
||||
**Web server:**
|
||||
|
||||
**Database:**
|
||||
|
||||
**PHP version:**
|
||||
|
||||
**Nextcloud version:** (see Nextcloud admin page)
|
||||
|
||||
**Updated from an older Nextcloud/ownCloud or fresh install:**
|
||||
|
||||
**Where did you install Nextcloud from:**
|
||||
|
||||
**Signing status:**
|
||||
<details>
|
||||
<summary>Signing status</summary>
|
||||
|
||||
```
|
||||
Login as admin user into your Nextcloud and access
|
||||
http://example.com/index.php/settings/integrity/failed
|
||||
paste the results here.
|
||||
```
|
||||
</details>
|
||||
|
||||
**List of activated apps:**
|
||||
<details>
|
||||
<summary>App list</summary>
|
||||
|
||||
```
|
||||
If you have access to your command line run e.g.:
|
||||
sudo -u www-data php occ app:list
|
||||
from within your Nextcloud installation folder
|
||||
```
|
||||
</details>
|
||||
|
||||
**Nextcloud configuration:**
|
||||
<details>
|
||||
<summary>Config report</summary>
|
||||
|
||||
```
|
||||
If you have access to your command line run e.g.:
|
||||
sudo -u www-data php occ config:list system
|
||||
from within your Nextcloud installation folder
|
||||
|
||||
or
|
||||
|
||||
Insert your config.php content here.
|
||||
Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)
|
||||
```
|
||||
</details>
|
||||
|
||||
**Are you using external storage, if yes which one:** local/smb/sftp/...
|
||||
|
||||
**Are you using encryption:** yes/no
|
||||
|
||||
**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/...
|
||||
|
||||
#### LDAP configuration (delete this part if not used)
|
||||
<details>
|
||||
<summary>LDAP config</summary>
|
||||
|
||||
```
|
||||
With access to your command line run e.g.:
|
||||
sudo -u www-data php occ ldap:show-config
|
||||
from within your Nextcloud installation folder
|
||||
|
||||
Without access to your command line download the data/owncloud.db to your local
|
||||
computer or access your SQL server remotely and run the select query:
|
||||
SELECT * FROM `oc_appconfig` WHERE `appid` = 'user_ldap';
|
||||
|
||||
|
||||
Eventually replace sensitive data as the name/IP-address of your LDAP server or groups.
|
||||
```
|
||||
</details>
|
||||
|
||||
### Client configuration
|
||||
**Browser:**
|
||||
|
||||
**Operating system:**
|
||||
|
||||
### Logs
|
||||
#### Web server error log
|
||||
<details>
|
||||
<summary>Web server error log</summary>
|
||||
|
||||
```
|
||||
Insert your webserver log here
|
||||
```
|
||||
</details>
|
||||
|
||||
#### Nextcloud log (data/nextcloud.log)
|
||||
<details>
|
||||
<summary>Nextcloud log</summary>
|
||||
|
||||
```
|
||||
Insert your Nextcloud log here
|
||||
```
|
||||
</details>
|
||||
|
||||
#### Browser log
|
||||
<details>
|
||||
<summary>Browser log</summary>
|
||||
|
||||
```
|
||||
Insert your browser log here, this could for example include:
|
||||
|
||||
a) The javascript console log
|
||||
b) The network log
|
||||
c) ...
|
||||
```
|
||||
</details>
|
||||
@@ -1,48 +1,35 @@
|
||||
---
|
||||
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!
|
||||
|
||||
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/
|
||||
|
||||
For reporting potential security issues please see https://nextcloud.com/security/
|
||||
|
||||
To make it possible for us to best accommodate your use case, please fill out the information below 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 and are using Nextcloud Enterprise, 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,182 +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"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# 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: stable25
|
||||
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", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable26
|
||||
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", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable27
|
||||
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", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# Testing StableXX composer
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable25
|
||||
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", "version-update:semver-patch"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable26
|
||||
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", "version-update:semver-patch"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable27
|
||||
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", "version-update:semver-patch"]
|
||||
|
||||
# GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
@@ -1,18 +0,0 @@
|
||||
|
||||
* Resolves: # <!-- related github issue -->
|
||||
|
||||
## Summary
|
||||
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] ...
|
||||
|
||||
## Checklist
|
||||
|
||||
- Code is [properly formatted](https://docs.nextcloud.com/server/latest/developer_manual/digging_deeper/continuous_integration.html#linting)
|
||||
- [Sign-off message](https://github.com/src-d/guide/blob/master/developer-community/fix-DCO.md) is added to all commits
|
||||
- [ ] Tests ([unit](https://docs.nextcloud.com/server/latest/developer_manual/app_development/tutorial.html#unit-tests), [integration](https://docs.nextcloud.com/server/latest/developer_manual/app_development/tutorial.html#integration-tests), api and/or acceptance) are included
|
||||
- [ ] Screenshots before/after for front-end changes
|
||||
- [ ] Documentation ([manuals](https://github.com/nextcloud/documentation/) or wiki) has been updated or is not required
|
||||
- [ ] [Backports requested](https://github.com/nextcloud/backportbot/#usage) where applicable (ex: critical bugfixes)
|
||||
@@ -0,0 +1,33 @@
|
||||
# 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,37 +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: Block merges for EOL
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: block-merge-eol-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
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 // .beta[$version]["100"].eol' | grep --silent -i 'false'
|
||||
@@ -1,32 +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: Block merges during freezes
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: block-merge-freeze-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
block-merges-during-freeze:
|
||||
name: Block merges during freezes
|
||||
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
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
|
||||
with:
|
||||
require: write
|
||||
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "+1"
|
||||
|
||||
- name: Parse command
|
||||
uses: skjnldsv/parse-command-comment@7cef1df370a99dfd5bf896d50121390c96785db8 # v2
|
||||
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 "path=${{ github.workspace }}${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "path=${{ github.workspace }}${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Init branch
|
||||
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
|
||||
id: comment-branch
|
||||
|
||||
process:
|
||||
runs-on: ubuntu-latest
|
||||
needs: init
|
||||
|
||||
steps:
|
||||
- name: Checkout ${{ needs.init.outputs.head_ref }}
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
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@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
id: package-engines-versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
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 'chore(assets): Recompile 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@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "-1"
|
||||
@@ -1,60 +0,0 @@
|
||||
name: Update 3rdparty command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/update-3rdparty`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/update-3rdparty')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "+1"
|
||||
|
||||
- name: Init branch
|
||||
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
|
||||
id: comment-branch
|
||||
|
||||
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
ref: ${{ steps.comment-branch.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: Pull 3rdparty
|
||||
run: git submodule foreach 'if [ "$sm_path" == "3rdparty" ]; then git pull origin ${{ github.event.issue.pull_request.base.ref }}; fi'
|
||||
|
||||
- name: Commit and push changes
|
||||
run: |
|
||||
git add 3rdparty
|
||||
git commit -s -m "Update submodule 3rdparty to latest ${{ github.event.issue.pull_request.base.ref }}"
|
||||
git push
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "-1"
|
||||
@@ -1,51 +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
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# 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@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
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@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
@@ -1,153 +0,0 @@
|
||||
name: Cypress
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
# Adjust APP_NAME if your repository name is different
|
||||
APP_NAME: ${{ github.event.repository.name }}
|
||||
# Server requires head_ref instead of base_ref, as we want to test the PR branch
|
||||
BRANCH: ${{ github.head_ref || github.ref_name }}
|
||||
|
||||
jobs:
|
||||
init:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
||||
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Check composer.json
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
with:
|
||||
files: "composer.json"
|
||||
|
||||
- name: Install composer dependencies
|
||||
if: steps.check_composer.outputs.files_exists == 'true'
|
||||
run: composer install --no-dev
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: "^14"
|
||||
fallbackNpm: "^7"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
||||
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 node dependencies & build app
|
||||
run: |
|
||||
npm ci
|
||||
TESTING=true npm run build --if-present
|
||||
|
||||
- name: Save context
|
||||
uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
||||
with:
|
||||
key: cypress-context-${{ github.run_id }}
|
||||
path: ./
|
||||
|
||||
cypress:
|
||||
runs-on: ubuntu-latest
|
||||
needs: init
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Run multiple copies of the current job in parallel
|
||||
# Please increase the number or runners as your tests suite grows
|
||||
containers: ["component", 1, 2]
|
||||
|
||||
name: runner ${{ matrix.containers }}
|
||||
|
||||
steps:
|
||||
- name: Restore context
|
||||
uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
||||
with:
|
||||
fail-on-cache-miss: true
|
||||
key: cypress-context-${{ github.run_id }}
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.init.outputs.npmVersion }}"
|
||||
|
||||
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
|
||||
uses: cypress-io/github-action@d69252d52b9a31bad4f418f05ba2bc83687a02eb # v5.8.3
|
||||
with:
|
||||
record: true
|
||||
parallel: true
|
||||
# cypress run type
|
||||
component: ${{ matrix.containers == 'component' }}
|
||||
group: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }}
|
||||
# cypress env
|
||||
ci-build-id: ${{ github.sha }}-${{ github.run_number }}
|
||||
tag: ${{ github.event_name }}
|
||||
env:
|
||||
# Needs to be prefixed with CYPRESS_
|
||||
CYPRESS_BRANCH: ${{ env.BRANCH }}
|
||||
# https://github.com/cypress-io/github-action/issues/124
|
||||
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
|
||||
# Needed for some specific code workarounds
|
||||
TESTING: true
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||
|
||||
- name: Upload snapshots
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: always()
|
||||
with:
|
||||
name: snapshots_${{ matrix.containers }}
|
||||
path: cypress/snapshots
|
||||
|
||||
- name: Extract NC logs
|
||||
if: failure() && matrix.containers != 'component'
|
||||
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
|
||||
|
||||
- name: Upload NC logs
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_logs_${{ matrix.containers }}
|
||||
path: nextcloud.log
|
||||
|
||||
- name: Create data dir archive
|
||||
if: failure() && matrix.containers != 'component'
|
||||
run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
|
||||
|
||||
- name: Upload data dir archive
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_data_${{ matrix.containers }}
|
||||
path: data.tar
|
||||
|
||||
summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [init, cypress]
|
||||
|
||||
if: always()
|
||||
|
||||
name: cypress-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi
|
||||
@@ -1,40 +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:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
auto-approve-merge:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# for hmarr/auto-approve-action to approve PRs
|
||||
pull-requests: write
|
||||
|
||||
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
|
||||
with:
|
||||
target: minor
|
||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||
@@ -1,33 +1,13 @@
|
||||
# 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
|
||||
on: pull_request
|
||||
|
||||
name: Block fixup and squash commits
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: fixup-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
name: Pull request checks
|
||||
|
||||
jobs:
|
||||
commit-message-check:
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Block fixup and squash commits
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
||||
uses: xt0rted/block-autosquash-commits-action@master
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
name: FTP unit tests
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- '.github/**'
|
||||
- 'apps/files_external/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/**'
|
||||
- 'apps/files_external/**'
|
||||
|
||||
env:
|
||||
APP_NAME: files_external
|
||||
|
||||
jobs:
|
||||
ftp-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up ftpd
|
||||
run: |
|
||||
sudo mkdir /tmp/ftp
|
||||
sudo chmod -R 0777 /tmp/ftp
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo '$6$Q7V2n3q2GRVv5YeQ$/AhLu07H76Asojy7bxGXMY1caKLAbp5Vt82LOZYMkD/8uDzyMAEXwk0c1Bdz1DkBsk2Vh/9SF130mOPavRGMo.' > /tmp/secret.txt; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo 'FTP_ROOT=/home/test' > $GITHUB_ENV; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then docker run --name ftp -d --net host -e PASV_ADDRESS=127.0.0.1 -e FTPUSER_NAME=test -v /tmp/secret.txt:/run/secrets/ftp-user-password-secret -v /tmp/ftp:/home/test instantlinux/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/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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${{ env.FTP_ROOT }}/ftp.txt", "asd"));'
|
||||
php -r 'var_dump(file_get_contents("ftp://test:test@localhost${{ env.FTP_ROOT }}/ftp.txt"));'
|
||||
php -r 'var_dump(mkdir("ftp://test:test@localhost${{ env.FTP_ROOT }}/asdads"));'
|
||||
ls -l /tmp/ftp
|
||||
[ -f /tmp/ftp/ftp.txt ]
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'host' => 'localhost','user' => 'test','password' => 'test', 'root' => '${{ env.FTP_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,39 +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
|
||||
#
|
||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Lint eslint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- run: 'echo "No eslint required"'
|
||||
@@ -1,62 +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
|
||||
#
|
||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Lint eslint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-eslint-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
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,40 +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 php-cs
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-php-cs-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: php-cs
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Lint
|
||||
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
||||
@@ -1,60 +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 php
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-php-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
php-lint:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: [ "8.0", "8.1", "8.2" ]
|
||||
|
||||
name: php-lint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Lint
|
||||
run: composer run lint
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: php-lint
|
||||
|
||||
if: always()
|
||||
|
||||
name: php-lint-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
|
||||
@@ -1,100 +0,0 @@
|
||||
name: Node tests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
versions:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
outputs:
|
||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Test and process coverage
|
||||
run: npm run test:coverage
|
||||
|
||||
- name: Collect coverage
|
||||
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
|
||||
with:
|
||||
files: ./coverage/lcov.info
|
||||
|
||||
jsunit:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Test
|
||||
run: npm run test:jsunit
|
||||
|
||||
handlebars:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
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,43 +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
|
||||
#
|
||||
# Use node together with node-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
concurrency:
|
||||
group: node-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: node
|
||||
steps:
|
||||
- name: Skip
|
||||
run: 'echo "No JS/TS files changed, skipped Node"'
|
||||
@@ -1,71 +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:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: node-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: node
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
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 `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
|
||||
|
||||
- name: Show changes on failure
|
||||
if: failure()
|
||||
run: |
|
||||
git status
|
||||
git --no-pager diff
|
||||
exit 1 # make it red to grab attention
|
||||
@@ -1,71 +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: Npm audit fix and compile
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# At 2:30 on Sundays
|
||||
- cron: '30 2 * * 0'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"]
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
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: Fix npm audit
|
||||
run: |
|
||||
npm audit fix
|
||||
|
||||
- name: Run npm ci and npm run build
|
||||
if: always()
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Create Pull Request
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "chore(deps): fix npm audit"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
|
||||
title: "[${{ matrix.branches }}] Fix npm audit"
|
||||
body: |
|
||||
Auto-generated fix of npm audit
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
@@ -1,86 +0,0 @@
|
||||
name: PHPUnit oci
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-oci-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
phpunit-oci:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2']
|
||||
|
||||
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@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
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
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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,33 +0,0 @@
|
||||
name: OpenAPI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
openapi:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: xml
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: OpenAPI checker
|
||||
run: build/openapi-checker.sh
|
||||
@@ -1,108 +0,0 @@
|
||||
name: Performance testing
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
performance-testing:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
|
||||
name: performance-${{ matrix.php-versions }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server before PR
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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
|
||||
|
||||
php -S localhost:8080 &
|
||||
- name: Apply blueprint
|
||||
uses: icewind1991/blueprint@v0.1.2
|
||||
with:
|
||||
blueprint: tests/blueprints/basic.toml
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
- name: Run before measurements
|
||||
uses: nextcloud/profiler@1e66a9de5f76a01e9d1db4f0153bcc1cbf989b3d
|
||||
with:
|
||||
run: |
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
|
||||
curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
|
||||
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
output: before.json
|
||||
profiler-branch: master
|
||||
|
||||
- name: Apply PR
|
||||
run: |
|
||||
git remote add pr ${{ github.event.pull_request.head.repo.clone_url }}
|
||||
git fetch pr ${{ github.event.pull_request.head.ref }}
|
||||
git checkout -b pr/${{ github.event.pull_request.head.ref }}
|
||||
git submodule update
|
||||
|
||||
./occ upgrade
|
||||
|
||||
- name: Run after measurements
|
||||
id: compare
|
||||
uses: nextcloud/profiler@1e66a9de5f76a01e9d1db4f0153bcc1cbf989b3d
|
||||
with:
|
||||
run: |
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
|
||||
curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
|
||||
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
output: after.json
|
||||
profiler-branch: master
|
||||
compare-with: before.json
|
||||
|
||||
- name: Upload profiles
|
||||
if: always()
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
|
||||
with:
|
||||
name: profiles
|
||||
path: |
|
||||
before.json
|
||||
after.json
|
||||
|
||||
- uses: actions/github-script@v6
|
||||
if: failure() && steps.compare.outcome == 'failure'
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
let comment = `Possible performance regression detected\n`;
|
||||
comment += `<details><summary>Show Output</summary>
|
||||
|
||||
\`\`\`
|
||||
${{ steps.compare.outputs.compare }}
|
||||
\`\`\`
|
||||
|
||||
</details>`;
|
||||
|
||||
github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: comment
|
||||
})
|
||||
@@ -1,65 +0,0 @@
|
||||
name: PHPUnit 32bits
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'version.php'
|
||||
- '.github/workflows/phpunit-32bits.yml'
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "15 1 * * 1-6"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-32bits-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
phpunit-32bits:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
container: shivammathur/node:latest-i386
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Install tools
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9c77701ae57b0c47f6732beebfbdec76e4e5c90a #debian bookworm fix
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
|
||||
tools: phpunit:9
|
||||
coverage: none
|
||||
ini-values:
|
||||
apc.enabled=on,
|
||||
apc.enable_cli=on
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness
|
||||
@@ -1,29 +0,0 @@
|
||||
name: 'Ask for feedback on PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
pr-feedback:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: The get-github-handles-from-website action
|
||||
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
|
||||
id: scrape
|
||||
with:
|
||||
website: 'https://nextcloud.com/team/'
|
||||
- uses: marcelklehr/pr-feedback-action@601109aa729eb4c8d6d0ece7567b9d4901db4aef
|
||||
with:
|
||||
feedback-message: |
|
||||
Hello there,
|
||||
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
|
||||
|
||||
We hope that the reviewing process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR reviewing process.
|
||||
|
||||
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
|
||||
|
||||
Thank you for contributing to Nextcloud and we hope to hear from you soon!
|
||||
days-before-feedback: 14
|
||||
start-date: "2023-07-10"
|
||||
exempt-authors: "${{ steps.scrape.outputs.users }}"
|
||||
exempt-bots: true
|
||||
@@ -1,132 +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
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
|
||||
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@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', '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
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
|
||||
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@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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,86 +0,0 @@
|
||||
name: S3 primary storage integration tests
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
s3-primary-integration-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:
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
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@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, redis
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: Set up Nextcloud
|
||||
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
|
||||
echo '<?php $CONFIG=["redis" => ["host" => "localhost", "port" => 6379], "memcache.local" => "\OC\Memcache\Redis", "memcache.distributed" => "\OC\Memcache\Redis"];' > config/redis.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 admin
|
||||
php -f index.php
|
||||
|
||||
- name: Integration
|
||||
run: |
|
||||
cd build/integration
|
||||
bash run.sh --tags "~@failure-s3" features/webdav-related.feature
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
|
||||
s3-primary-integration-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-primary-integration-tests-minio]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-primary-integration-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
@@ -1,78 +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@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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,74 +0,0 @@
|
||||
name: Samba Kerberos SSO
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
- '.github/workflows/smb-kerberos.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
- '.github/workflows/smb-kerberos.yml'
|
||||
|
||||
jobs:
|
||||
smb-kerberos-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
name: smb-kerberos-sso
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
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: |
|
||||
cp apps/files_external/tests/*.sh .
|
||||
mkdir data
|
||||
sudo chown -R 33 data apps config
|
||||
DC_IP=$(./start-dc.sh)
|
||||
./start-apache.sh $DC_IP $PWD
|
||||
echo "DC_IP=$DC_IP" >> $GITHUB_ENV
|
||||
- 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 saml:config:create
|
||||
docker exec --user 33 apache ./occ saml:config:set 1 --general-uid_mapping=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 /tmp/shared/cookies
|
||||
chmod 0777 /tmp/shared/cookies
|
||||
|
||||
echo "SAML login"
|
||||
./client-cmd.sh ${{ env.DC_IP }} curl -c /shared/cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/index.php/apps/user_saml/saml/login
|
||||
echo "Check we are logged in"
|
||||
CONTENT=$(./client-cmd.sh ${{ env.DC_IP }} curl -b /shared/cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/remote.php/webdav/smb/test.txt)
|
||||
CONTENT=$(echo $CONTENT | head -n 1 | tr -d '[:space:]')
|
||||
[[ $CONTENT == "testfile" ]]
|
||||
- name: Show logs
|
||||
if: failure()
|
||||
run: |
|
||||
docker exec --user 33 apache ./occ log:file
|
||||
FILEPATH=$(docker exec --user 33 apache ./occ log:file | grep "Log file:" | cut -d' ' -f3)
|
||||
docker exec --user 33 apache cat $FILEPATH
|
||||
@@ -1,33 +0,0 @@
|
||||
name: Close stale issues
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
with:
|
||||
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
stale-issue-message: >
|
||||
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.
|
||||
stale-issue-label: 'stale'
|
||||
only-labels: 'needs info'
|
||||
labels-to-remove-when-unstale: 'needs info,stale'
|
||||
exempt-issue-labels: '1. to develop,2. developing,3. to review,4. to release,security'
|
||||
days-before-stale: 30
|
||||
days-before-close: 14
|
||||
# debug-only: true
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
name: Psalm static code analysis
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
static-code-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --update-baseline --report=results.sarif
|
||||
|
||||
- name: Show potential changes in Psalm baseline
|
||||
if: always()
|
||||
run: git diff -- . ':!lib/composer'
|
||||
|
||||
- name: Upload Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-security:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm taint analysis
|
||||
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
|
||||
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
|
||||
|
||||
- name: Show potential changes in Psalm baseline
|
||||
if: always()
|
||||
run: git diff -- . ':!lib/composer'
|
||||
@@ -1,42 +0,0 @@
|
||||
name: Update CA certificate bundle
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
jobs:
|
||||
update-ca-certificate-bundle:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["master", "stable27", "stable26", "stable25", "stable24", "stable23", "stable22"]
|
||||
|
||||
name: update-ca-certificate-bundle-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Download CA certificate bundle from curl
|
||||
run: curl --etag-compare build/ca-bundle-etag.txt --etag-save build/ca-bundle-etag.txt --output resources/config/ca-bundle.crt https://curl.se/ca/cacert.pem
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "fix(security): Update CA certificate bundle"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-update-ca-cert-bundle
|
||||
title: "[${{ matrix.branches }}] fix(security): Update CA certificate bundle"
|
||||
body: |
|
||||
Auto-generated update of CA certificate bundle from [https://curl.se/docs/caextract.html](https://curl.se/docs/caextract.html)
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
@@ -1,67 +0,0 @@
|
||||
name: Update Psalm baseline
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
jobs:
|
||||
update-psalm-baseline:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["master", "stable27", "stable26", "stable25"]
|
||||
|
||||
name: update-psalm-baseline-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- 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: Psalm OCP
|
||||
run: composer run psalm -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --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@v4
|
||||
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/${{ matrix.branches }}-update-psalm-baseline
|
||||
title: "[${{ matrix.branches }}] 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
|
||||
+3
-20
@@ -13,10 +13,9 @@
|
||||
|
||||
# ignore all apps except core ones
|
||||
/apps*/*
|
||||
!/apps/accessibility
|
||||
!/apps/cloud_federation_api
|
||||
!/apps/comments
|
||||
!/apps/contactsinteraction
|
||||
!/apps/dashboard
|
||||
!/apps/dav
|
||||
!/apps/files
|
||||
!/apps/federation
|
||||
@@ -24,7 +23,6 @@
|
||||
!/apps/sharebymail
|
||||
!/apps/encryption
|
||||
!/apps/files_external
|
||||
!/apps/files_reminders
|
||||
!/apps/files_sharing
|
||||
!/apps/files_trashbin
|
||||
!/apps/files_versions
|
||||
@@ -39,8 +37,6 @@
|
||||
!/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,8 +69,6 @@ CVS/*
|
||||
.svn/*
|
||||
RCS/*
|
||||
*.backup*
|
||||
.php_cs.cache
|
||||
.php-cs-fixer.cache
|
||||
|
||||
# kdevelop
|
||||
.kdev
|
||||
@@ -97,7 +91,6 @@ nbproject
|
||||
|
||||
# vscode
|
||||
.vscode
|
||||
*.code-workspace
|
||||
|
||||
# geany
|
||||
*.geany
|
||||
@@ -131,6 +124,7 @@ nbproject
|
||||
/build/jsdocs/
|
||||
/npm-debug.log
|
||||
/PhantomJS_*
|
||||
/build/package-lock.json
|
||||
|
||||
# puphpet
|
||||
puphpet
|
||||
@@ -155,18 +149,7 @@ Vagrantfile
|
||||
/config/config-autotest-backup.php
|
||||
/config/autoconfig.php
|
||||
clover.xml
|
||||
/coverage
|
||||
|
||||
# Tests - dependencies
|
||||
tests/acceptance/composer.lock
|
||||
tests/acceptance/vendor/
|
||||
|
||||
composer.phar
|
||||
/lib/composer/bin
|
||||
/vendor-bin/**/vendor
|
||||
|
||||
./.htaccess
|
||||
core/js/mimetypelist.js
|
||||
|
||||
# Tests - cypress
|
||||
cypress/snapshots
|
||||
cypress/videos
|
||||
|
||||
@@ -7,46 +7,23 @@
|
||||
<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-Frame-Options
|
||||
Header always set X-Download-Options "noopen"
|
||||
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 "noindex, nofollow"
|
||||
|
||||
Header onsuccess unset X-XSS-Protection
|
||||
Header always set X-Robots-Tag "none"
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
|
||||
SetEnv modHeadersAvailable true
|
||||
</IfModule>
|
||||
|
||||
# Add cache control for static resources
|
||||
<FilesMatch "\.(css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite)$">
|
||||
<If "%{QUERY_STRING} =~ /(^|&)v=/">
|
||||
Header set Cache-Control "max-age=15778463, immutable"
|
||||
</If>
|
||||
<Else>
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</Else>
|
||||
<FilesMatch "\.(css|js|svg|gif)$">
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</FilesMatch>
|
||||
|
||||
# Let browsers cache WOFF files for a week
|
||||
@@ -54,8 +31,7 @@
|
||||
Header set Cache-Control "max-age=604800"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_php.c>
|
||||
<IfModule mod_php7.c>
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
php_value output_buffering 0
|
||||
@@ -63,35 +39,31 @@
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddType image/svg+xml svg svgz
|
||||
AddType application/wasm wasm
|
||||
AddEncoding gzip svgz
|
||||
# Serve ESM javascript files (.mjs) with correct mime type
|
||||
AddType text/javascript js mjs
|
||||
</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]
|
||||
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/nodeinfo /public.php?service=nodeinfo [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>
|
||||
|
||||
@@ -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>
|
||||
@@ -215,7 +213,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>
|
||||
@@ -360,8 +357,7 @@ 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>
|
||||
John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> John Molakvoæ <skjnldsv@users.noreply.github.com>
|
||||
st3so <st3so@server.fake>
|
||||
Stefan <mu.stefan@googlemail.com>
|
||||
Stefan Göckeritz <admin@s-goecker.de>
|
||||
@@ -384,8 +380,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 +405,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,37 +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__);
|
||||
|
||||
// Ignore additional app directories
|
||||
$rootDir = new \DirectoryIterator(__DIR__);
|
||||
foreach ($rootDir as $node) {
|
||||
if (str_starts_with($node->getFilename(), 'apps')) {
|
||||
$return = shell_exec('git check-ignore ' . escapeshellarg($node->getFilename() . '/'));
|
||||
|
||||
if ($return !== null) {
|
||||
$config->getFinder()->exclude($node->getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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|lib\/composer)
|
||||
args: []
|
||||
+100
-148
@@ -1,183 +1,135 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs
|
||||
host = https://www.transifex.com
|
||||
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:admin_audit]
|
||||
file_filter = translationfiles/<lang>/admin_audit.po
|
||||
source_file = translationfiles/templates/admin_audit.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:cloud_federation_api]
|
||||
file_filter = translationfiles/<lang>/cloud_federation_api.po
|
||||
source_file = translationfiles/templates/cloud_federation_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:comments]
|
||||
file_filter = translationfiles/<lang>/comments.po
|
||||
source_file = translationfiles/templates/comments.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:contactsinteraction]
|
||||
file_filter = translationfiles/<lang>/contactsinteraction.po
|
||||
source_file = translationfiles/templates/contactsinteraction.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:core]
|
||||
[nextcloud.core]
|
||||
file_filter = translationfiles/<lang>/core.po
|
||||
source_file = translationfiles/templates/core.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:dashboard-shipped-with-server]
|
||||
file_filter = translationfiles/<lang>/dashboard.po
|
||||
source_file = translationfiles/templates/dashboard.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:dav]
|
||||
file_filter = translationfiles/<lang>/dav.po
|
||||
source_file = translationfiles/templates/dav.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:federatedfilesharing]
|
||||
file_filter = translationfiles/<lang>/federatedfilesharing.po
|
||||
source_file = translationfiles/templates/federatedfilesharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:federation]
|
||||
file_filter = translationfiles/<lang>/federation.po
|
||||
source_file = translationfiles/templates/federation.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files]
|
||||
[nextcloud.files]
|
||||
file_filter = translationfiles/<lang>/files.po
|
||||
source_file = translationfiles/templates/files.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_encryption]
|
||||
file_filter = translationfiles/<lang>/encryption.po
|
||||
source_file = translationfiles/templates/encryption.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_external]
|
||||
file_filter = translationfiles/<lang>/files_external.po
|
||||
source_file = translationfiles/templates/files_external.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_reminders]
|
||||
file_filter = translationfiles/<lang>/files_reminders.po
|
||||
source_file = translationfiles/templates/files_reminders.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_sharing]
|
||||
file_filter = translationfiles/<lang>/files_sharing.po
|
||||
source_file = translationfiles/templates/files_sharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_trashbin]
|
||||
file_filter = translationfiles/<lang>/files_trashbin.po
|
||||
source_file = translationfiles/templates/files_trashbin.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_versions]
|
||||
file_filter = translationfiles/<lang>/files_versions.po
|
||||
source_file = translationfiles/templates/files_versions.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:lib]
|
||||
file_filter = translationfiles/<lang>/lib.po
|
||||
source_file = translationfiles/templates/lib.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:lookup_server_connector]
|
||||
file_filter = translationfiles/<lang>/lookup_server_connector.po
|
||||
source_file = translationfiles/templates/lookup_server_connector.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:oauth2]
|
||||
file_filter = translationfiles/<lang>/oauth2.po
|
||||
source_file = translationfiles/templates/oauth2.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:provisioning_api]
|
||||
file_filter = translationfiles/<lang>/provisioning_api.po
|
||||
source_file = translationfiles/templates/provisioning_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:settings-1]
|
||||
[nextcloud.settings-1]
|
||||
file_filter = translationfiles/<lang>/settings.po
|
||||
source_file = translationfiles/templates/settings.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:sharebymail]
|
||||
file_filter = translationfiles/<lang>/sharebymail.po
|
||||
source_file = translationfiles/templates/sharebymail.pot
|
||||
[nextcloud.lib]
|
||||
file_filter = translationfiles/<lang>/lib.po
|
||||
source_file = translationfiles/templates/lib.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:systemtags]
|
||||
file_filter = translationfiles/<lang>/systemtags.po
|
||||
source_file = translationfiles/templates/systemtags.pot
|
||||
[nextcloud.dav]
|
||||
file_filter = translationfiles/<lang>/dav.po
|
||||
source_file = translationfiles/templates/dav.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:theming]
|
||||
file_filter = translationfiles/<lang>/theming.po
|
||||
source_file = translationfiles/templates/theming.pot
|
||||
[nextcloud.files_encryption]
|
||||
file_filter = translationfiles/<lang>/encryption.po
|
||||
source_file = translationfiles/templates/encryption.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:twofactor_backupcodes]
|
||||
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
|
||||
source_file = translationfiles/templates/twofactor_backupcodes.pot
|
||||
[nextcloud.files_external]
|
||||
file_filter = translationfiles/<lang>/files_external.po
|
||||
source_file = translationfiles/templates/files_external.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:updatenotification]
|
||||
file_filter = translationfiles/<lang>/updatenotification.po
|
||||
source_file = translationfiles/templates/updatenotification.pot
|
||||
[nextcloud.files_sharing]
|
||||
file_filter = translationfiles/<lang>/files_sharing.po
|
||||
source_file = translationfiles/templates/files_sharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:user_ldap]
|
||||
[nextcloud.files_trashbin]
|
||||
file_filter = translationfiles/<lang>/files_trashbin.po
|
||||
source_file = translationfiles/templates/files_trashbin.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_versions]
|
||||
file_filter = translationfiles/<lang>/files_versions.po
|
||||
source_file = translationfiles/templates/files_versions.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.user_ldap]
|
||||
file_filter = translationfiles/<lang>/user_ldap.po
|
||||
source_file = translationfiles/templates/user_ldap.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:user_status]
|
||||
file_filter = translationfiles/<lang>/user_status.po
|
||||
source_file = translationfiles/templates/user_status.pot
|
||||
[nextcloud.comments]
|
||||
file_filter = translationfiles/<lang>/comments.po
|
||||
source_file = translationfiles/templates/comments.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:weather_status]
|
||||
file_filter = translationfiles/<lang>/weather_status.po
|
||||
source_file = translationfiles/templates/weather_status.pot
|
||||
[nextcloud.federatedfilesharing]
|
||||
file_filter = translationfiles/<lang>/federatedfilesharing.po
|
||||
source_file = translationfiles/templates/federatedfilesharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:workflowengine]
|
||||
[nextcloud.federation]
|
||||
file_filter = translationfiles/<lang>/federation.po
|
||||
source_file = translationfiles/templates/federation.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.oauth2]
|
||||
file_filter = translationfiles/<lang>/oauth2.po
|
||||
source_file = translationfiles/templates/oauth2.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.sharebymail]
|
||||
file_filter = translationfiles/<lang>/sharebymail.po
|
||||
source_file = translationfiles/templates/sharebymail.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.systemtags]
|
||||
file_filter = translationfiles/<lang>/systemtags.po
|
||||
source_file = translationfiles/templates/systemtags.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.updatenotification]
|
||||
file_filter = translationfiles/<lang>/updatenotification.po
|
||||
source_file = translationfiles/templates/updatenotification.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.theming]
|
||||
file_filter = translationfiles/<lang>/theming.po
|
||||
source_file = translationfiles/templates/theming.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.twofactor_backupcodes]
|
||||
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
|
||||
source_file = translationfiles/templates/twofactor_backupcodes.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.workflowengine]
|
||||
file_filter = translationfiles/<lang>/workflowengine.po
|
||||
source_file = translationfiles/templates/workflowengine.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[nextcloud.accessibility]
|
||||
file_filter = translationfiles/<lang>/accessibility.po
|
||||
source_file = translationfiles/templates/accessibility.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: 519ea16619...642cd66f3d
@@ -1,61 +1,40 @@
|
||||
Nextcloud is written by:
|
||||
- AW-UC <git@a-wesemann.de>
|
||||
- Aaron Ball <nullspoon@oper.io>
|
||||
- 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>
|
||||
- Akhil <akhil.potukuchi@gmail.com>
|
||||
- Akhil <akhil@e.email>
|
||||
- Akhil Potukuchi <akhil.potukuchi@gmail.com>
|
||||
- Alan Meeson <alan@carefullycalculated.co.uk>
|
||||
- Aldo "xoen" Giambelluca <xoen@xoen.org>
|
||||
- Alecks Gates <alecks.g@gmail.com>
|
||||
- Alejandro Varela <epma01@gmail.com>
|
||||
- Alex Harpin <development@landsofshadow.co.uk>
|
||||
- Alex Weirig <alex.weirig@technolink.lu>
|
||||
- Alexander Bergolth <leo@strike.wu.ac.at>
|
||||
- Alexander F <32201363+alx-tuilmenau@users.noreply.github.com>
|
||||
- Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
- Allan Nordhøy <epost@anotheragency.no>
|
||||
- Anderson Luiz Alves <alacn1@gmail.com>
|
||||
- Andreas Fischer <bantu@owncloud.com>
|
||||
- Andreas Pflug <dev@admin4.org>
|
||||
- Andrew Brown <andrew@casabrown.com>
|
||||
- Andy Xheli <axheli@axtsolutions.com>
|
||||
- Anna Larch <anna@nextcloud.com>
|
||||
- ArcticFall <23174635+ArcticFall@users.noreply.github.com>
|
||||
- Andrius <andrius.kulbis@ktu.lt>
|
||||
- André Gaul <gaul@web-yard.de>
|
||||
- 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 <artur@jankaritech.com>
|
||||
- Artur Neumann <info@individual-it.net>
|
||||
- Ashod Nakashian <ashod.nakashian@collabora.co.uk>
|
||||
- Asier Iturralde Sarasola <asier.iturralde@gmail.com>
|
||||
- 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>
|
||||
- Bennet Becker <bbecker@pks.mpg.de>
|
||||
- Bennet Becker <dev@bennet.cc>
|
||||
- Bernard Spil <Sp1l@users.noreply.github.com>
|
||||
- Bernd Rederlechner <Bernd.Rederlechner@t-systems.com>
|
||||
- Bernd Stellwag <burned@zerties.org>
|
||||
- Bernhard Ostertag <bernieo.code@gmx.de>
|
||||
- Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
- Bernhard Reiter <ockham@raz.or.at>
|
||||
- Bill McGonigle <bill-github.com@bfccomputing.com>
|
||||
- Birk Borkason <daniel.niccoli@gmail.com>
|
||||
- Bjoern Schiessle <bjoern@schiessle.org>
|
||||
- Björn Schießle <bjoern@schiessle.org>
|
||||
- Bjørn Forsman <bjorn.forsman@gmail.com>
|
||||
- Blaok <i@blaok.me>
|
||||
- Boris Rybalkin <ribalkin@gmail.com>
|
||||
- Borjan Tchakaloff <borjan@tchakaloff.fr>
|
||||
@@ -63,59 +42,43 @@ Nextcloud is written by:
|
||||
- Brandon Kirsch <brandonkirsch@github.com>
|
||||
- Branko Kokanovic <branko@kokanovic.org>
|
||||
- Brice Maron <brice@bmaron.net>
|
||||
- CRA Yoshihito Nakatani <yoshihito.nakatani@craftsman-software.com>
|
||||
- Carl Csaposs <carl@csaposs.com>
|
||||
- Carl Schwan <carl@carlschwan.eu>
|
||||
- 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>
|
||||
- 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>
|
||||
- Christopher Bartz <bartz@dkrz.de>
|
||||
- Christopher Ng <chrng8@gmail.com>
|
||||
- Christopher Schäpers <kondou@ts.unde.re>
|
||||
- Christopher T. Johnson <ctjctj@gmail.com>
|
||||
- Clark Tomlinson <fallen013@gmail.com>
|
||||
- Claus-Justus Heine <himself@claus-justus-heine.de>
|
||||
- Clement Wong <git@clement.hk>
|
||||
- Cornelius Kölbel <cornelius.koelbel@netknights.it>
|
||||
- Cyrille Bollu <cyrpub@bollu.be>
|
||||
- Cédric Neukom <github@webguy.ch>
|
||||
- Côme Chilliet <91878298+come-nc@users.noreply.github.com>
|
||||
- Côme Chilliet <come.chilliet@nextcloud.com>
|
||||
- Cthulhux <git@tuxproject.de>
|
||||
- Damjan Georgievski <gdamjan@gmail.com>
|
||||
- Dan Callahan <dan.callahan@gmail.com>
|
||||
- Daniel <mail@danielkesselberg.de>
|
||||
- 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>
|
||||
- Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de>
|
||||
- Dariusz Olszewski <starypatyk@users.noreply.github.com>
|
||||
- David <37280718+yeyulantu@users.noreply.github.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>
|
||||
- Dries Mys <dries.mys@my-dreams.be>
|
||||
- EWouters <6179932+EWouters@users.noreply.github.com>
|
||||
- Elijah Martin-Merrill <elijah@nyp-itsours.com>
|
||||
- Ember 'n0emis' Keske <git@n0emis.eu>
|
||||
- Eric Masseran <rico.masseran@gmail.com>
|
||||
- Erik van Velzen <erik@evanv.nl>
|
||||
- Estelle Poulin <dev@inspiredby.es>
|
||||
- Evgeny Golyshev <eugulixes@gmail.com>
|
||||
- Fabrizio Steiner <fabrizio.steiner@gmail.com>
|
||||
- Felix Epp <work@felixepp.de>
|
||||
@@ -124,54 +87,29 @@ Nextcloud is written by:
|
||||
- Felix Nieuwenhuizen <felix@tdlrali.com>
|
||||
- Felix Nüsse <Felix.nuesse@t-online.de>
|
||||
- Felix Rupp <github@felixrupp.com>
|
||||
- Ferdinand Thiessen <opensource@fthiessen.de>
|
||||
- Ferdinand Thiessen <rpm@fthiessen.de>
|
||||
- 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>
|
||||
- François Ménabé <francois.menabe@gmail.com>
|
||||
- Frederic Werner <frederic-github@werner-net.work>
|
||||
- Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
|
||||
- Gary Kim <gary@garykim.dev>
|
||||
- Georg Ehrke <oc.list@georgehrke.com>
|
||||
- Git'Fellow <12234510+solracsf@users.noreply.github.com>
|
||||
- Git'Fellow <carlos@reendex.com>
|
||||
- Glandos <bugs-github@antipoul.fr>
|
||||
- GrayFix <grayfix@gmail.com>
|
||||
- Greta Doci <gretadoci@gmail.com>
|
||||
- GretaD <gretadoci@gmail.com>
|
||||
- Guillaume COMPAGNON <gcompagnon@outlook.com>
|
||||
- Guillaume Colson <guillaume.colson@univ-lorraine.fr>
|
||||
- Guillaume Virlet <github@virlet.org>
|
||||
- Hasso Tepper <hasso@zone.ee>
|
||||
- Hemanth Kumar Veeranki <hems.india1997@gmail.com>
|
||||
- Hendrik Leppelsack <hendrik@leppelsack.de>
|
||||
- Hinrich Mahler <22366557+Bibo-Joshi@users.noreply.github.com>
|
||||
- Holger Hees <holger.hees@gmail.com>
|
||||
- HouraisanNEET <HouraisanNEET@users.noreply.github.com>
|
||||
- Ilja Neumann <ineumann@owncloud.com>
|
||||
- Ilya Apasov <apasov@users.noreply.github.com>
|
||||
- Immanuel Pasanec <immanuel.pasanec@compaso.de>
|
||||
- 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 Guo <i@ze3kr.com>
|
||||
- Jan C. Borchardt <hey@jancborchardt.net>
|
||||
- Jan Messer <jan@mtec-studios.ch>
|
||||
- Jan-Christoph Borchardt <hey@jancborchardt.net>
|
||||
- Jan-Philipp Litza <jpl@plutex.de>
|
||||
- Jan-Philipp Litza <jplitza@users.noreply.github.com>
|
||||
- JanBartels <j.bartels@arcor.de>
|
||||
- Janis Köhr <janis.koehr@novatec-gmbh.de>
|
||||
- Jared Boone <jared.boone@gmail.com>
|
||||
- Jarkko Lehtoranta <devel@jlranta.com>
|
||||
- Jasper Weyne <jasperweyne@gmail.com>
|
||||
- Jean-Louis Dupond <jean-louis@dupond.be>
|
||||
- Jens-Christian Fischer <jens-christian.fischer@switch.ch>
|
||||
- Jesús Macias <jmacias@solidgear.es>
|
||||
@@ -181,36 +119,26 @@ Nextcloud is written by:
|
||||
- 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 Koenig <mail@jokoenig.de>
|
||||
- Johannes Schlichenmaier <johannes@schlichenmaier.info>
|
||||
- Johannes Willnecker <johannes@willnecker.com>
|
||||
- John Molakvoæ <skjnldsv@protonmail.com>
|
||||
- Jonas <jonas@freesources.org>
|
||||
- Jonas Heinrich <heinrich@synyx.de>
|
||||
- Jonas Meurer <jonas@freesources.org>
|
||||
- Jonas Rittershofer <jotoeri@users.noreply.github.com>
|
||||
- John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
|
||||
- Jonas Sulzer <jonas@violoncello.ch>
|
||||
- Jonny007-MKD <1-23-4-5@web.de>
|
||||
- Jos Poortvliet <jos@opensuse.org>
|
||||
- Jose Quinteiro <github@quinteiro.org>
|
||||
- Josh Richards <josh.t.richards@gmail.com>
|
||||
- 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>
|
||||
- Julien Veyssier <julien-nc@posteo.net>
|
||||
- Julius Haertl <jus@bitgrid.net>
|
||||
- Julius Härtl <jus@bitgrid.net>
|
||||
- Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
|
||||
- Jörn Friedrich Dreyer <jfd@butonic.de>
|
||||
- Jürgen Haas <juergen@paragon-es.de>
|
||||
- KB7777 <k.burkowski@gmail.com>
|
||||
- Kamil Domanski <kdomanski@kdemail.net>
|
||||
- Karel Hink <info@karelhink.cz>
|
||||
- Kawohl <john@owncloud.com>
|
||||
- Kenneth Newwood <kenneth@newwood.name>
|
||||
- Kevin Ndung'u <kevgathuku@gmail.com>
|
||||
- Kevin Niehage <k.niehage@syseleven.de>
|
||||
- Kirill Popov <kirill.s.popov@gmail.com>
|
||||
- Klaas Freitag <freitag@owncloud.com>
|
||||
- Knut Ahlers <knut@ahlers.me>
|
||||
- Ko- <k.stoffelen@cs.ru.nl>
|
||||
@@ -221,115 +149,77 @@ Nextcloud is written by:
|
||||
- Lars Knickrehm <mail@lars-sh.de>
|
||||
- Laurens Post <Crote@users.noreply.github.com>
|
||||
- Laurens Post <lkpost@scept.re>
|
||||
- Lee Garrett <lgarrett@rocketjump.eu>
|
||||
- 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>
|
||||
- Lorenzo Tanganelli <35271287+tanganellilore@users.noreply.github.com>
|
||||
- Louis <6653109+artonge@users.noreply.github.com>
|
||||
- Louis Chemineau <louis@chmn.me>
|
||||
- Loïc Hermann <loic.hermann@sciam.fr>
|
||||
- Luka Trovic <luka@nextcloud.com>
|
||||
- Lukas Reschke <lukas@statuscode.ch>
|
||||
- Lukas Stabe <lukas@stabe.de>
|
||||
- Luke Policinski <lpolicinski@gmail.com>
|
||||
- Magnus Walbeck <mw@mwalbeck.org>
|
||||
- Maksim Sukharev <antreesy.web@gmail.com>
|
||||
- Marc Hefter <marchefter@gmail.com>
|
||||
- Marc Hefter <marchefter@march42.net>
|
||||
- Manish Bisht <manish.bisht490@gmail.com>
|
||||
- Marcel Klehr <mklehr@gmx.net>
|
||||
- Marcel Müller <marcel-mueller@gmx.de>
|
||||
- Marcel Waldvogel <marcel.waldvogel@uni-konstanz.de>
|
||||
- Marco Ambrosini <marcoambrosini@pm.me>
|
||||
- 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>
|
||||
- Mark Berezovsky <xpnf@yandex.ru>
|
||||
- Markus Goetz <markus@woboq.com>
|
||||
- Markus Staab <markus.staab@redaxo.de>
|
||||
- Markus Zeller <git@markuszeller.com>
|
||||
- MartB <mart.b@outlook.de>
|
||||
- Martin Brugnara <martin@0x6d62.eu>
|
||||
- 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>
|
||||
- Matthieu Gallien <matthieu.gallien@nextcloud.com>
|
||||
- Mattia Narducci <mattianarducci1@gmail.com>
|
||||
- Max <max@nextcloud.com>
|
||||
- Max Kovalenko <mxss1998@yandex.ru>
|
||||
- Max Kunzelmann <maxdev@posteo.de>
|
||||
- Maxence Lange <maxence@artificial-owl.com>
|
||||
- Maxence Lange <maxence@nextcloud.com>
|
||||
- Maxence Lange <maxence@pontapreta.net>
|
||||
- Maxime Besson <maxime.besson@worteks.com>
|
||||
- Maximilian Martin <maximilian_martin@gmx.de>
|
||||
- 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 <github@ikkoku.de>
|
||||
- Michael Kuhn <michael@ikkoku.de>
|
||||
- Michael Letzgus <www@chronos.michael-letzgus.de>
|
||||
- Michael Roitzsch <reactorcontrol@icloud.com>
|
||||
- Michael Roth <michael.roth@rz.uni-augsburg.de>
|
||||
- Michael Weimann <mail@michael-weimann.eu>
|
||||
- Michael Zamot <michael@zamot.io>
|
||||
- Michał Węgrzynek <michal.wegrzynek@malloc.com.pl>
|
||||
- Michiel de Jong <michiel@unhosted.org>
|
||||
- Micke Nordin <kano@sunet.se>
|
||||
- Mickey Knox <mickey@netfreaks.org>
|
||||
- Miguel Prokop <miguel.prokop@vtu.com>
|
||||
- Mikael Hammarin <mikael@try2.se>
|
||||
- Mikael Nordin <mickenordin@users.noreply.github.com>
|
||||
- Mikael Saarinen <mikaels@iki.fi>
|
||||
- Mikhail Sazanov <m@sazanof.ru>
|
||||
- Mitar <mitar.git@tnode.com>
|
||||
- Mohammed Abdellatif <m.latief@gmail.com>
|
||||
- Morris Jobke <hey@morrisjobke.de>
|
||||
- Mátyás Jani <jzombi@gmail.com>
|
||||
- Naoto Kobayashi <naoto.kobayashi4c@gmail.com>
|
||||
- Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
||||
- 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>
|
||||
- NoSleep82 <52562874+NoSleep82@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 Salzburg <oliver.salzburg@gmail.com>
|
||||
- Oliver Wegner <void1976@gmail.com>
|
||||
- Olivier Paroz <github@oparoz.com>
|
||||
- Orzu Ionut <orzu.ionut@gmail.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>
|
||||
- Pawel Boguslawski <pawel.boguslawski@ib.pl>
|
||||
- Pellaeon Lin <nfsmwlin@gmail.com>
|
||||
- Peter Kubica <peter@kubica.ch>
|
||||
- Petre T <petre.tudor@dorkfarm.com>
|
||||
- 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>
|
||||
@@ -337,9 +227,7 @@ Nextcloud is written by:
|
||||
- Piotr M <mrow4a@yahoo.com>
|
||||
- Piotr Mrowczynski <mrow4a@yahoo.com>
|
||||
- Piotr Mrówczyński <mrow4a@yahoo.com>
|
||||
- Pytal <24800714+Pytal@users.noreply.github.com>
|
||||
- Qingping Hou <dave2008713@gmail.com>
|
||||
- Raghu Nayyar <hey@raghunayyar.com>
|
||||
- Ralph Krimmel <rkrimme1@gwdg.de>
|
||||
- Ramiro Aparicio <rapariciog@gmail.com>
|
||||
- Randolph Carter <RandolphCarter@fantasymail.de>
|
||||
@@ -348,10 +236,7 @@ Nextcloud is written by:
|
||||
- RealRancor <fisch.666@gmx.de>
|
||||
- Rello <Rello@users.noreply.github.com>
|
||||
- Remco Brenninkmeijer <requist1@starmail.nl>
|
||||
- Retidurc Silvernight <retidurc@silvernight.social>
|
||||
- Richard Steinmetz <richard@steinmetz.cloud>
|
||||
- Richard de Boer <github@tubul.net>
|
||||
- Rid <rid@cylo.io>
|
||||
- Renaud Fortier <Renaud.Fortier@fsaa.ulaval.ca>
|
||||
- Rinat Gumirov <rinat.gumirov@mail.ru>
|
||||
- Robert Dailey <rcdailey@gmail.com>
|
||||
- Robin Appelman <robin@icewind.nl>
|
||||
@@ -363,7 +248,6 @@ Nextcloud is written by:
|
||||
- Romain Rivière <lecoyote@lecoyote.org>
|
||||
- Roman Kreisel <mail@romankreisel.de>
|
||||
- Ross Nicoll <jrn@jrn.me.uk>
|
||||
- Rsplwe <i@rsplwe.com>
|
||||
- Ruben Homs <ruben@homs.codes>
|
||||
- RussellAult <RussellAult@users.noreply.github.com>
|
||||
- Rémy Jacquin <remy@remyj.fr>
|
||||
@@ -371,17 +255,14 @@ Nextcloud is written by:
|
||||
- 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>
|
||||
- Sanpi <sanpi@homecomputing.fr>
|
||||
- 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>
|
||||
@@ -390,20 +271,10 @@ Nextcloud is written by:
|
||||
- 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>
|
||||
- Sijmen Schoon <me@sijmenschoon.nl>
|
||||
- Simon Könnecke <simonkoennecke@gmail.com>
|
||||
- Simon L <szaimen@e.mail.de>
|
||||
- Simon Leiner <simon@leiner.me>
|
||||
- Simon Spannagel <simonspa@kth.se>
|
||||
- Simounet <contact@simounet.net>
|
||||
- Sjors van der Pluijm <sjors@desjors.nl>
|
||||
- Stanimir Bozhilov <stanimir.bozhilov.1998@gmail.com>
|
||||
- Stanimir Bozhilov <stanimir@audriga.com>
|
||||
- Stefan <Stefan.Schilling@EXXETA.com>
|
||||
- Stefan Rado <owncloud@sradonia.net>
|
||||
- Stefan Schneider <stefan.schneider@squareweave.com.au>
|
||||
- Stefan Weiberg <sweiberg@suse.com>
|
||||
@@ -411,159 +282,101 @@ Nextcloud is written by:
|
||||
- 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>
|
||||
- Sylvain <git@sylvain.dev>
|
||||
- Sylvia van Os <sylvia@hackerchick.me>
|
||||
- Tekhnee <info@tekhnee.org>
|
||||
- Temtaime <temtaime@gmail.com>
|
||||
- Thibault Coupin <thibault.coupin@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 Assmann <tobias.assmann@ecsec.de>
|
||||
- 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>
|
||||
- UmbrellaCodr <umbrella@biohazard.cc>
|
||||
- Unknown <anpz.asutp@gmail.com>
|
||||
- Unpublished <unpublished@gmx.net>
|
||||
- Valdnet <47037905+Valdnet@users.noreply.github.com>
|
||||
- Vanessa Pertsch <vanessa.pertsch@nextcloud.com>
|
||||
- Varun Patil <radialapps@gmail.com>
|
||||
- Varun Patil <varunpatil@ucla.edu>
|
||||
- Victor Dubiniuk <dubiniuk@owncloud.com>
|
||||
- Viktor Szépe <viktor@szepe.net>
|
||||
- Vincent Chan <plus.vincchan@gmail.com>
|
||||
- Vincent Petry <vincent@nextcloud.com>
|
||||
- Vincent Van Houtte <vvh@aplusv.be>
|
||||
- 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 <william.hak57@gmail.com>
|
||||
- William Pain <pain.william@gmail.com>
|
||||
- Xheni Myrtaj <myrtajxheni@gmail.com>
|
||||
- Xuanwo <xuanwo@yunify.com>
|
||||
- ZitronePlus <tobiasscharf92@gmail.com>
|
||||
- acsfer <12234510+acsfer@users.noreply.github.com>
|
||||
- acsfer <carlos@reendex.com>
|
||||
- adrien <adrien.waksberg@believedigital.com>
|
||||
- alanmeeson <alan@carefullycalculated.co.uk>
|
||||
- aler9 <46489434+aler9@users.noreply.github.com>
|
||||
- alexweirig <alex.weirig@technolink.lu>
|
||||
- b108@volgograd "b108@volgograd"
|
||||
- bbx-github <53237674+bbx-github@users.noreply.github.com>
|
||||
- bladewing <lukas@ifflaender-family.de>
|
||||
- bline <scottbeck@gmail.com>
|
||||
- blizzz <blizzz@arthur-schiwon.de>
|
||||
- brad2014 <brad2014@users.noreply.github.com>
|
||||
- brumsel <brumsel@losecatcher.de>
|
||||
- cahogan <caitlin.hogan@swiftsolar.com>
|
||||
- call-me-matt <nextcloud@matthiasheinisch.de>
|
||||
- castillo92 <37965565+castillo92@users.noreply.github.com>
|
||||
- cetra3 <peter@parashift.com.au>
|
||||
- cmeh <cmeh@users.noreply.github.com>
|
||||
- coderkun <olli@coderkun.de>
|
||||
- comradekingu <epost@anotheragency.no>
|
||||
- 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>
|
||||
- essys <essys@users.noreply.github.com>
|
||||
- exner104 <59639860+exner104@users.noreply.github.com>
|
||||
- enoch <lanxenet@hotmail.com>
|
||||
- fabian <fabian@web2.0-apps.de>
|
||||
- felixboehm <felix@webhippie.de>
|
||||
- fenn-cs <fenn25.fn@gmail.com>
|
||||
- fnuesse <felix.nuesse@t-online.de>
|
||||
- fnuesse <fnuesse@techfak.uni-bielefeld.de>
|
||||
- greta <gretadoci@gmail.com>
|
||||
- helix84 <helix84@centrum.sk>
|
||||
- hkjolhede <hkjolhede@gmail.com>
|
||||
- hoellen <dev@hoellen.eu>
|
||||
- howardZa <33491519+howardZa@users.noreply.github.com>
|
||||
- ideaship <ideaship@users.noreply.github.com>
|
||||
- j-ed <juergen@eisfair.org>
|
||||
- j3l11234 <297259024@qq.com>
|
||||
- jaltek <jaltek@mailbox.org>
|
||||
- jknockaert <jasper@knockaert.nl>
|
||||
- jld3103 <jld3103yt@gmail.com>
|
||||
- josh4trunks <joshruehlig@gmail.com>
|
||||
- julia.kirschenheuter <julia.kirschenheuter@nextcloud.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>
|
||||
- luz paz <luzpaz@github.com>
|
||||
- luz paz <luzpaz@pm.me>
|
||||
- lynn-stephenson <lynn.stephenson@protonmail.com>
|
||||
- labor4 <schreibtisch@labor4.ch>
|
||||
- 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>
|
||||
- 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>
|
||||
- pjft <pjft@users.noreply.github.com>
|
||||
- plumbeo <plumbeo@users.noreply.github.com>
|
||||
- rakekniven <2069590+rakekniven@users.noreply.github.com>
|
||||
- rakekniven <mark.ziegler@rakekniven.de>
|
||||
- raul <raul@nextcloud.com>
|
||||
- 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>
|
||||
- smichel17 <git@smichel.me>
|
||||
- sodimel <corentin@244466666.xyz>
|
||||
- ste101 <stephan_bauer@gmx.de>
|
||||
- sidey79 <s.butzek@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>
|
||||
- voxsim "Simon Vocella"
|
||||
- waleczny <michal@walczak.xyz>
|
||||
- zorn-v <zorn7@yandex.ru>
|
||||
- zulan <git@zulan.net>
|
||||
- Łukasz Buśko <busko.lukasz@pm.me>
|
||||
|
||||
|
||||
@@ -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,24 +0,0 @@
|
||||
# Nextcloud Design contribution guidelines
|
||||
|
||||
## 👋 Welcome
|
||||
|
||||
At Nextcloud we want to make sure to have everything in place to enable designers to contribute – making our apps universally accessible and easy to use.
|
||||
|
||||
## 🚢 How to contribute design
|
||||
|
||||
We have a dedicated page with more in-detail guidelines on our website:
|
||||
https://nextcloud.com/design/
|
||||
|
||||
**TL;DR**
|
||||
|
||||
1. Check out open [issues](https://github.com/nextcloud/server/issues) here on GitHub (we label them with `design`)
|
||||
2. Make sure create publicly accessible assets
|
||||
3. Add your contributions to an issue and we promise we will review your contribution carefully and foster discussions
|
||||
|
||||
[This issue](https://github.com/nextcloud/desktop/issues/877) has examples of other apps, some simple mockups, and specifications about the design. In the discussions in the comments there are updates to the design as well.
|
||||
|
||||
[This pull request](https://github.com/nextcloud/desktop/pull/1565) by a developer has the implementation of that issue, the changes they made, and more design discussions and adjustments.
|
||||
|
||||
**We encourage you to:**
|
||||
|
||||
- Get in touch with the team by joining our [public Talk channel](https://cloud.nextcloud.com/call/gqff69i8)
|
||||
@@ -1,10 +1,10 @@
|
||||
all: clean dev-setup build-js-production
|
||||
|
||||
# Dev env management
|
||||
dev-setup: clean npm-init
|
||||
dev-setup: clean clean-dev npm-init
|
||||
|
||||
npm-init:
|
||||
npm ci
|
||||
npm install
|
||||
|
||||
npm-update:
|
||||
npm update
|
||||
@@ -28,7 +28,34 @@ lint-fix-watch:
|
||||
|
||||
# Cleaning
|
||||
clean:
|
||||
rm -rf dist
|
||||
rm -rf apps/accessibility/js/
|
||||
rm -rf apps/comments/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/workflowengine/js/
|
||||
rm -rf core/js/dist
|
||||
|
||||
clean-dev:
|
||||
rm -rf node_modules
|
||||
|
||||
clean-git: clean
|
||||
git checkout -- dist
|
||||
git checkout -- apps/accessibility/js/
|
||||
git checkout -- apps/comments/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/workflowengine/js/
|
||||
git checkout -- core/js/dist
|
||||
|
||||
@@ -2,26 +2,27 @@
|
||||
[](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/209)
|
||||
[](https://contribute.design/nextcloud/server)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud)
|
||||
[](https://webchat.freenode.net/?channels=nextcloud-dev)
|
||||
|
||||
**A safe home for all your data.**
|
||||
|
||||

|
||||

|
||||
|
||||
## Why is this so awesome? 🤩
|
||||
|
||||
* 📁 **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.
|
||||
* 📁 **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)
|
||||
* 🔒 **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
|
||||
|
||||
Do 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 in 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 organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
|
||||
|
||||
## Get your Nextcloud 🚚
|
||||
|
||||
- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) at one of our providers either through our website or through the apps directly.
|
||||
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your hardware or by using one of our ready to use **appliances**
|
||||
- 🖥 [**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
|
||||
|
||||
@@ -30,7 +31,7 @@ Enterprise? Public Sector or Education user? You may want to have a look into [*
|
||||
## 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)
|
||||
|
||||
@@ -39,16 +40,16 @@ You can also [get support for Nextcloud](https://nextcloud.com/support)!
|
||||
|
||||
## Join the team 👪
|
||||
|
||||
There are many ways to contribute, of which development is only one! Find out [how to get involved](https://nextcloud.com/contribute/), including as a translator, designer, tester, helping others, and much more! 😍
|
||||
There are many ways to contribute, of which development is only one! Find out [how to get involved](https://nextcloud.com/contribute/), including as translator, designer, tester, helping others and much more! 😍
|
||||
|
||||
|
||||
### 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
|
||||
5. 👍 Fix things that come up during a review
|
||||
5. 👍 Fix things that come up during review
|
||||
6. 🎉 Wait for it to get merged!
|
||||
|
||||
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
|
||||
@@ -57,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 Vue components and scripts
|
||||
### Building front-end code 🏗
|
||||
|
||||
We are moving more and more toward using Vue.js in the front-end, 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
|
||||
|
||||
@@ -77,79 +77,36 @@ make watch-js
|
||||
make build-js-production
|
||||
```
|
||||
|
||||
#### Building styles
|
||||
|
||||
Styles are written in SCSS and compiled to css.
|
||||
|
||||
```bash
|
||||
# install dependencies
|
||||
make dev-setup
|
||||
|
||||
# compile style sheets
|
||||
npm run sass
|
||||
|
||||
# compile style sheets and watch edits
|
||||
npm run sass:watch
|
||||
```
|
||||
|
||||
#### Committing changes
|
||||
|
||||
**When making changes, also commit the compiled files!**
|
||||
|
||||
We still use Handlebars templates in 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.
|
||||
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 🛠
|
||||
|
||||
- [👀 BrowserStack](https://browserstack.com) for cross-browser testing
|
||||
- [🌊 WAVE](https://wave.webaim.org/extension/) for accessibility testing
|
||||
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing performance, accessibility, and more
|
||||
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing of performance, accessibility and more
|
||||
|
||||
#### Helpful bots at github :robot:
|
||||
|
||||
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
|
||||
|
||||
## Contribution guidelines 📜
|
||||
|
||||
All contributions to this repository from June 16, 2016, and onward are considered to be
|
||||
All contributions to this repository from June, 16 2016 on are considered to be
|
||||
licensed under the AGPLv3 or any later version.
|
||||
|
||||
Nextcloud doesn't require a CLA (Contributor License Agreement).
|
||||
The copyright belongs to all the individual contributors. Therefore we recommend
|
||||
that every contributor adds the following line to the header of a file if they
|
||||
that every contributor adds following line to the header of a file, if they
|
||||
changed it substantially:
|
||||
|
||||
```
|
||||
|
||||
-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.
|
||||
@@ -1,34 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
export const getCurrentUser = function() {
|
||||
return {
|
||||
uid: 'test',
|
||||
displayName: 'Test',
|
||||
isAdmin: false,
|
||||
}
|
||||
}
|
||||
|
||||
export const getRequestToken = function() {
|
||||
return 'test-token-1234'
|
||||
}
|
||||
|
||||
export const onRequestTokenUpdate = function() {}
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
export default {
|
||||
get: async () => ({ status: 200, data: {} }),
|
||||
delete: async () => ({ status: 200, data: {} }),
|
||||
post: async () => ({ status: 200, data: {} }),
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import { jest } from '@jest/globals'
|
||||
|
||||
export const showMessage = jest.fn()
|
||||
export const showSuccess = jest.fn()
|
||||
export const showWarning = jest.fn()
|
||||
export const showInfo = jest.fn()
|
||||
export const showError = jest.fn()
|
||||
export const showUndo = jest.fn()
|
||||
@@ -1,25 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
export const loadState = function(app: string, key: string, fallback?: any) {
|
||||
return fallback
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 Lucas Azevedo <lhs_azevedo@hotmail.com>
|
||||
*
|
||||
* @author Lucas Azevedo <lhs_azevedo@hotmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
export default {}
|
||||
@@ -1,22 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
export default '<svg>SvgMock</svg>'
|
||||
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
export const createClient = () => {}
|
||||
export const getPatcher = () => {
|
||||
return {
|
||||
patch: () => {}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* @copyright 2021 François Freitag <mail@franek.fr>
|
||||
*
|
||||
* @author François Freitag <mail@franek.fr>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import '@testing-library/jest-dom'
|
||||
|
||||
// Mock `window.location` with Jest spies and extend expect
|
||||
import 'jest-location-mock'
|
||||
|
||||
// Mock `window.fetch` with Jest
|
||||
import 'jest-fetch-mock'
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"verbatimModuleSyntax": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
@@ -0,0 +1,12 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"esversion": 6
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
# compiled vue templates
|
||||
js/accessibility.js
|
||||
@@ -0,0 +1,26 @@
|
||||
all: dev-setup build-js-production
|
||||
|
||||
dev-setup: clean clean-dev npm-init
|
||||
|
||||
npm-init:
|
||||
npm install
|
||||
|
||||
npm-update:
|
||||
npm update
|
||||
|
||||
build-js:
|
||||
npm run dev
|
||||
|
||||
build-js-production:
|
||||
npm run build
|
||||
|
||||
watch-js:
|
||||
npm run watch
|
||||
|
||||
clean:
|
||||
rm -f js/accessibility.js
|
||||
rm -f js/accessibility.js.map
|
||||
|
||||
clean-dev:
|
||||
rm -rf node_modules
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Accessibility ♿
|
||||
|
||||
> This app provide multiple features to ease the use of nextcloud.
|
||||
|
||||
## Build Setup
|
||||
|
||||
``` bash
|
||||
# install dependencies
|
||||
make dev-setup
|
||||
|
||||
# build for development
|
||||
make build-js
|
||||
|
||||
# build for development and watch edits
|
||||
make watch-js
|
||||
|
||||
# build for production with minification
|
||||
make build-js-production
|
||||
|
||||
# clean output files
|
||||
make clean
|
||||
```
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
|
||||
* @author Robin Appelman <robin@icewind.nl>
|
||||
*
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
use OCA\Accessibility\AppInfo\Application;
|
||||
|
||||
$app = \OC::$server->query(Application::class);
|
||||
|
||||
// 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();
|
||||
@@ -0,0 +1,32 @@
|
||||
<?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.4.0</version>
|
||||
<licence>agpl</licence>
|
||||
<author>John Molakvoæ</author>
|
||||
<namespace>Accessibility</namespace>
|
||||
<default_enable/>
|
||||
|
||||
<category>customization</category>
|
||||
|
||||
<bugs>https://github.com/nextcloud/server/issues</bugs>
|
||||
|
||||
<dependencies>
|
||||
<nextcloud min-version="18" max-version="18"/>
|
||||
</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>
|
||||
</info>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}', 'verb' => 'GET'],
|
||||
['name' => 'accessibility#getJavascript', 'url' => '/js/accessibility', 'verb' => 'GET'],
|
||||
],
|
||||
'ocs' => [
|
||||
[
|
||||
'name' => 'Config#getConfig',
|
||||
'url' => '/api/v1/config',
|
||||
'verb' => 'GET',
|
||||
],
|
||||
[
|
||||
'name' => 'Config#setConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'PUT',
|
||||
],
|
||||
[
|
||||
'name' => 'Config#deleteConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'DELETE',
|
||||
],
|
||||
]
|
||||
];
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitAccessibility::getLoader();
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"config" : {
|
||||
"vendor-dir": ".",
|
||||
"optimize-autoloader": true,
|
||||
"classmap-authoritative": true,
|
||||
"autoloader-suffix": "Accessibility"
|
||||
},
|
||||
"autoload" : {
|
||||
"psr-4": {
|
||||
"OCA\\Accessibility\\": "../lib/"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,445 @@
|
||||
<?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 http://www.php-fig.org/psr/psr-0/
|
||||
* @see http://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
private $classMapAuthoritative = false;
|
||||
private $missingClasses = array();
|
||||
private $apcuPrefix;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
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 array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
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 array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
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 array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
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 array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
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.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'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\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Accessibility\\Settings\\PersonalSection' => $baseDir . '/../lib/Settings/PersonalSection.php',
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
);
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'OCA\\Accessibility\\' => array($baseDir . '/../lib'),
|
||||
);
|
||||
@@ -0,0 +1,43 @@
|
||||
<?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';
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitAccessibility', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require_once __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitAccessibility::getInitializer($loader));
|
||||
} else {
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?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 (
|
||||
'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\\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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
// 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,
|
||||
:not(.avatardiv) > 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,15 @@
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('../fonts/OpenDyslexic-Bold.woff') format('woff');
|
||||
}
|
||||
|
||||
$font-face: OpenDyslexic, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
// Rules we could port to the rest of Nextcloud too
|
||||
|
||||
// Proper highlight for links and focus feedback
|
||||
#accessibility a {
|
||||
font-weight: bold;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
// Highlight checkbox label in bold for focus feedback
|
||||
// Drawback: Text width increases a bit
|
||||
#accessibility .checkbox:focus + label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Limit width of settings sections for readability
|
||||
#accessibility.section p {
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
// End of rules we could port to rest of Nextcloud
|
||||
|
||||
|
||||
|
||||
.preview-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.preview {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 3em;
|
||||
position: relative;
|
||||
|
||||
&,
|
||||
* {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.preview-image {
|
||||
flex-basis: 200px;
|
||||
flex-shrink: 0;
|
||||
margin-right: 1em;
|
||||
background-position: top left;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.preview-description {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
label {
|
||||
padding: 12px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user