Compare commits
24 Commits
stable1.1
...
enh/compos
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e8bb35d22 | ||
|
|
c925f82b5e | ||
|
|
06bd894f05 | ||
|
|
de37a4b4f0 | ||
|
|
ed6b3a6f94 | ||
|
|
0ed5545b2f | ||
|
|
186e9954b6 | ||
|
|
06ab9fd304 | ||
|
|
f5bf01a460 | ||
|
|
8c205a8fe5 | ||
|
|
9b56d1ac55 | ||
|
|
bfa37adb69 | ||
|
|
b057801f9c | ||
|
|
663e7ff889 | ||
|
|
62fa40fbd6 | ||
|
|
85377154ff | ||
|
|
66e3dd9914 | ||
|
|
5ac3baa050 | ||
|
|
7ca5a95182 | ||
|
|
fc68972fd0 | ||
|
|
e8f2c2569c | ||
|
|
4688db43b7 | ||
|
|
26b1dadb80 | ||
|
|
5752b987c1 |
131
.drone.yml
131
.drone.yml
@@ -1,131 +0,0 @@
|
||||
kind: pipeline
|
||||
name: checkers
|
||||
steps:
|
||||
- name: compatibility
|
||||
image: nextcloudci/php7.3:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server
|
||||
# Code checker
|
||||
- ./occ app:check-code $APP_NAME -c strong-comparison
|
||||
- ./occ app:check-code $APP_NAME -c deprecation
|
||||
- cd apps/$APP_NAME/
|
||||
- name: syntax-php7.2
|
||||
image: nextcloudci/php7.2:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
- name: syntax-php7.3
|
||||
image: nextcloudci/php7.3:php7.3-2
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
- name: syntax-php7.4
|
||||
image: nextcloudci/php7.4:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
---
|
||||
kind: pipeline
|
||||
name: unit-php7.3
|
||||
steps:
|
||||
- name: php7.3
|
||||
image: nextcloudci/php7.3:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- composer install
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
kind: pipeline
|
||||
name: unit-php7.4
|
||||
steps:
|
||||
- name: php7.4
|
||||
image: nextcloudci/php7.4:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- composer install
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
---
|
||||
kind: pipeline
|
||||
name: integration
|
||||
steps:
|
||||
- name: integration
|
||||
image: nextcloudci/php7.3:latest
|
||||
environment:
|
||||
APP_NAME: deck
|
||||
CORE_BRANCH: stable20
|
||||
DB: sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- cd tests/integration
|
||||
- ./run.sh || true
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
55
.github/workflows/app-code-check.yml
vendored
Normal file
55
.github/workflows/app-code-check.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: PHP AppCode Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
APP_NAME: deck
|
||||
|
||||
jobs:
|
||||
unit-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.4']
|
||||
server-versions: ['master', 'stable18', 'stable19', 'stable20']
|
||||
|
||||
name: AppCode check php${{ matrix.php-versions }}-${{ matrix.server-versions }}
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: App code check
|
||||
run: php occ app:check-code ${{ env.APP_NAME }}
|
||||
215
.github/workflows/phpunit.yml
vendored
Normal file
215
.github/workflows/phpunit.yml
vendored
Normal file
@@ -0,0 +1,215 @@
|
||||
name: PHPUnit
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
APP_NAME: deck
|
||||
|
||||
jobs:
|
||||
php:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4']
|
||||
databases: ['sqlite']
|
||||
server-versions: ['master']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --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
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
|
||||
|
||||
- name: PHPUnit integration
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||
|
||||
mysql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.3', '7.4']
|
||||
databases: ['mysql']
|
||||
server-versions: ['master']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mariadb
|
||||
ports:
|
||||
- 4444:3306/tcp
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit
|
||||
extensions: mbstring, iconv, fileinfo, intl, mysql, pdo_mysql
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --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
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
|
||||
|
||||
- name: PHPUnit integration
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||
|
||||
pgsql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4']
|
||||
databases: ['pgsql']
|
||||
server-versions: ['master']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres
|
||||
ports:
|
||||
- 4444:5432/tcp
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: rootpassword
|
||||
POSTGRES_DB: nextcloud
|
||||
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@v1
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit
|
||||
extensions: mbstring, iconv, fileinfo, intl, pgsql, pdo_pgsql
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --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
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
|
||||
|
||||
- name: PHPUnit integration
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||
43
.travis.yml
43
.travis.yml
@@ -1,43 +0,0 @@
|
||||
language: php
|
||||
services:
|
||||
- mysql
|
||||
php:
|
||||
- 7.2
|
||||
- 7.3
|
||||
- 7.4
|
||||
env:
|
||||
- CORE_BRANCH=stable20 DB=mysql
|
||||
- CORE_BRANCH=stable19 DB=mysql
|
||||
- CORE_BRANCH=stable18 DB=mysql
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 7.2
|
||||
env: "DB=sqlite CORE_BRANCH=stable20"
|
||||
|
||||
before_install:
|
||||
- export PATH="$PWD/vendor/bin:$PATH"
|
||||
- phpunit --version
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh deck $CORE_BRANCH $DB
|
||||
- cd ../server
|
||||
|
||||
before_script:
|
||||
- cd apps/deck
|
||||
- composer install --no-dev
|
||||
- cd ../../
|
||||
- ./occ app:enable deck
|
||||
- cd apps/deck
|
||||
|
||||
script:
|
||||
- composer install
|
||||
- make test-unit
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
||||
after_failure:
|
||||
- cat ../../data/nextcloud.log
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
21
CHANGELOG.md
21
CHANGELOG.md
@@ -1,27 +1,6 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 1.1.2 - 2020-10-14
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* [#2436](https://github.com/nextcloud/deck/pull/2436) Move most destructive actions in drop down menus to the bottom
|
||||
* [#2438](https://github.com/nextcloud/deck/pull/2438) Fix scrollable titles with Dyslexia font
|
||||
* [#2439](https://github.com/nextcloud/deck/pull/2439) Only remove card padding for editable cards
|
||||
* [#2442](https://github.com/nextcloud/deck/pull/2442) Move navigation toggle handling to @nextcloud/vue native one
|
||||
* [#2443](https://github.com/nextcloud/deck/pull/2443) Do not open the dialog automatically upon card creation, only upon click
|
||||
|
||||
## 1.1.1 - 2020-10-13
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* [#2364](https://github.com/nextcloud/deck/pull/2364) Use uid instead of displayname for sharee results
|
||||
* [#2365](https://github.com/nextcloud/deck/pull/2365) Comments do not depend on the comments app (@jakobroehrl)
|
||||
* [#2395](https://github.com/nextcloud/deck/pull/2395) Fix failure if full text search app was enabled
|
||||
* [#2396](https://github.com/nextcloud/deck/pull/2396) Also exclude deleted items from calendar boards
|
||||
* [#2425](https://github.com/nextcloud/deck/pull/2425) Fix filter popover styling (@Flamenco)
|
||||
* [#2432](https://github.com/nextcloud/deck/pull/2432) Properly handle multiple shares in a row and refactor sharee loading
|
||||
|
||||
## 1.1.0 - 2020-10-03
|
||||
|
||||
### Features
|
||||
|
||||
5
Makefile
5
Makefile
@@ -23,12 +23,15 @@ install-deps: install-deps-js
|
||||
install-deps-nodev: install-deps-js
|
||||
composer install --no-dev
|
||||
|
||||
autoloader:
|
||||
composer dump-autoload
|
||||
|
||||
install-deps-js:
|
||||
npm ci
|
||||
|
||||
build: clean-dist install-deps build-js
|
||||
|
||||
release: clean-dist install-deps-nodev build-js
|
||||
release: clean-dist install-deps-nodev autoloader build-js
|
||||
|
||||
build-js: install-deps-js
|
||||
npm run build
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Deck\AppInfo;
|
||||
|
||||
/**
|
||||
* Additional autoloader registration, e.g. registering composer autoloaders
|
||||
*/
|
||||
require_once __DIR__ . '/../vendor/autoload.php';
|
||||
@@ -17,7 +17,7 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>1.1.2</version>
|
||||
<version>1.2.0-dev1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<namespace>Deck</namespace>
|
||||
@@ -36,7 +36,7 @@
|
||||
<database min-version="9.4">pgsql</database>
|
||||
<database>sqlite</database>
|
||||
<database min-version="5.5">mysql</database>
|
||||
<nextcloud min-version="18" max-version="20" />
|
||||
<nextcloud min-version="18" max-version="21" />
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
|
||||
@@ -1,31 +1,38 @@
|
||||
{
|
||||
"name": "nextcloud/deck",
|
||||
"type": "project",
|
||||
"license": "AGPLv3",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Julius Härtl",
|
||||
"email": "jus@bitgrid.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"cogpowered/finediff": "0.3.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"roave/security-advisories": "dev-master",
|
||||
"christophwurst/nextcloud": "^17",
|
||||
"jakub-onderka/php-parallel-lint": "^1.0.0",
|
||||
"phpunit/phpunit": "^8",
|
||||
"nextcloud/coding-standard": "^0.3.0",
|
||||
"symfony/event-dispatcher": "^4.0"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"classmap-authoritative": true
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||
"cs:fix": "php-cs-fixer fix"
|
||||
}
|
||||
"name": "nextcloud/deck",
|
||||
"type": "project",
|
||||
"license": "AGPLv3",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Julius Härtl",
|
||||
"email": "jus@bitgrid.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"cogpowered/finediff": "0.3.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"roave/security-advisories": "dev-master",
|
||||
"christophwurst/nextcloud": "^17",
|
||||
"jakub-onderka/php-parallel-lint": "^1.0.0",
|
||||
"phpunit/phpunit": "^8",
|
||||
"nextcloud/coding-standard": "^0.3.0",
|
||||
"symfony/event-dispatcher": "^4.0"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"classmap-authoritative": true,
|
||||
"vendor-dir": "composer",
|
||||
"autoloader-suffix": "Deck"
|
||||
},
|
||||
"autoload" : {
|
||||
"psr-4": {
|
||||
"OCA\\Deck\\": "lib/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||
"cs:fix": "php-cs-fixer fix"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
||||
"Add a new card" : "Přidat novou kartu",
|
||||
"Card name" : "Název karty",
|
||||
"List deleted" : "Seznam smazán",
|
||||
"Edit" : "Upravit",
|
||||
"Add a new tag" : "Přidat nový štítek",
|
||||
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Přesunout kartu",
|
||||
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
||||
"Select a list" : "Vyberte sloupec",
|
||||
"Card deleted" : "Karta smazána",
|
||||
"seconds ago" : "před několika sekundami",
|
||||
"All boards" : "Všechny tabule",
|
||||
"Archived boards" : "Archivované tabule",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Archivovat všechny karty v tomto seznamu",
|
||||
"Add a new card" : "Přidat novou kartu",
|
||||
"Card name" : "Název karty",
|
||||
"List deleted" : "Seznam smazán",
|
||||
"Edit" : "Upravit",
|
||||
"Add a new tag" : "Přidat nový štítek",
|
||||
"title and color value must be provided" : "je třeba zadat nadpis a zvolit barvu",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Přesunout kartu",
|
||||
"Move card to another board" : "Přesunout kartu na jinou tabuli",
|
||||
"Select a list" : "Vyberte sloupec",
|
||||
"Card deleted" : "Karta smazána",
|
||||
"seconds ago" : "před několika sekundami",
|
||||
"All boards" : "Všechny tabule",
|
||||
"Archived boards" : "Archivované tabule",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Alle Karten in dieser Liste archivieren",
|
||||
"Add a new card" : "Neue Karte hinzufügen",
|
||||
"Card name" : "Kartenname",
|
||||
"List deleted" : "Liste gelöscht",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Add a new tag" : "Neues Schlagwort hinzufügen",
|
||||
"title and color value must be provided" : "Titel und Farbwert müssen angegeben werden",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Karte verschieben",
|
||||
"Move card to another board" : "Karte auf ein anderes Board verschieben",
|
||||
"Select a list" : "Eine Liste auswählen",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Alle Karten in dieser Liste archivieren",
|
||||
"Add a new card" : "Neue Karte hinzufügen",
|
||||
"Card name" : "Kartenname",
|
||||
"List deleted" : "Liste gelöscht",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Add a new tag" : "Neues Schlagwort hinzufügen",
|
||||
"title and color value must be provided" : "Titel und Farbwert müssen angegeben werden",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Karte verschieben",
|
||||
"Move card to another board" : "Karte auf ein anderes Board verschieben",
|
||||
"Select a list" : "Eine Liste auswählen",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Alle Karten in dieser Liste archivieren",
|
||||
"Add a new card" : "Neue Karte hinzufügen",
|
||||
"Card name" : "Kartenname",
|
||||
"List deleted" : "Liste gelöscht",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Add a new tag" : "Neues Schlagwort hinzufügen",
|
||||
"title and color value must be provided" : "Titel und Farbwert müssen angegeben werden",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Karte verschieben",
|
||||
"Move card to another board" : "Karte auf ein anderes Board verschieben",
|
||||
"Select a list" : "Eine Liste auswählen",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Alle Karten in dieser Liste archivieren",
|
||||
"Add a new card" : "Neue Karte hinzufügen",
|
||||
"Card name" : "Kartenname",
|
||||
"List deleted" : "Liste gelöscht",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Add a new tag" : "Neues Schlagwort hinzufügen",
|
||||
"title and color value must be provided" : "Titel und Farbwert müssen angegeben werden",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Karte verschieben",
|
||||
"Move card to another board" : "Karte auf ein anderes Board verschieben",
|
||||
"Select a list" : "Eine Liste auswählen",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Archivar todas las tarjetas en esta lista",
|
||||
"Add a new card" : "Añadir una nueva tarjeta",
|
||||
"Card name" : "Nombre de la tarjeta",
|
||||
"List deleted" : "Lista borrada",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Añade una nueva etiqueta",
|
||||
"title and color value must be provided" : "Se debe indicar un valor para título y color ",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Mover tarjeta",
|
||||
"Move card to another board" : "Mover la tarjeta a otro tablero",
|
||||
"Select a list" : "Seleccionar una lista",
|
||||
"Card deleted" : "Tarjeta borrada",
|
||||
"seconds ago" : "hace unos segundos",
|
||||
"All boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Archivar todas las tarjetas en esta lista",
|
||||
"Add a new card" : "Añadir una nueva tarjeta",
|
||||
"Card name" : "Nombre de la tarjeta",
|
||||
"List deleted" : "Lista borrada",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Añade una nueva etiqueta",
|
||||
"title and color value must be provided" : "Se debe indicar un valor para título y color ",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Mover tarjeta",
|
||||
"Move card to another board" : "Mover la tarjeta a otro tablero",
|
||||
"Select a list" : "Seleccionar una lista",
|
||||
"Card deleted" : "Tarjeta borrada",
|
||||
"seconds ago" : "hace unos segundos",
|
||||
"All boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
|
||||
@@ -92,6 +92,9 @@ OC.L10N.register(
|
||||
"List name" : "Listan nimi",
|
||||
"Apply filter" : "Toteuta suodatus",
|
||||
"Filter by tag" : "Suodata tunnisteen perusteella",
|
||||
"Filter by assigned user" : "Suodata määritetyn käyttäjän mukaan",
|
||||
"Unassigned" : "Määrittämätön",
|
||||
"Filter by due date" : "Suodata määräpäivän mukaan",
|
||||
"Overdue" : "Myöhässä",
|
||||
"Next 24 hours" : "Seuraavat 24 tuntia",
|
||||
"Next 7 days" : "Seuraavat 7 päivää",
|
||||
|
||||
@@ -90,6 +90,9 @@
|
||||
"List name" : "Listan nimi",
|
||||
"Apply filter" : "Toteuta suodatus",
|
||||
"Filter by tag" : "Suodata tunnisteen perusteella",
|
||||
"Filter by assigned user" : "Suodata määritetyn käyttäjän mukaan",
|
||||
"Unassigned" : "Määrittämätön",
|
||||
"Filter by due date" : "Suodata määräpäivän mukaan",
|
||||
"Overdue" : "Myöhässä",
|
||||
"Next 24 hours" : "Seuraavat 24 tuntia",
|
||||
"Next 7 days" : "Seuraavat 7 päivää",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
||||
"Add a new card" : "Engadir unha nova tarxeta",
|
||||
"Card name" : "Nome da tarxeta",
|
||||
"List deleted" : "Lista eliminada",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Engadir unha nova etiqueta",
|
||||
"title and color value must be provided" : "debe indicar o título e o valor da cor",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Mover a tarxeta",
|
||||
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
||||
"Select a list" : "Seleccionar unha lista",
|
||||
"Card deleted" : "Tarxeta eliminada",
|
||||
"seconds ago" : "hai uns segundos",
|
||||
"All boards" : "Todos os taboleiros",
|
||||
"Archived boards" : "Taboleiros arquivados",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
|
||||
"Add a new card" : "Engadir unha nova tarxeta",
|
||||
"Card name" : "Nome da tarxeta",
|
||||
"List deleted" : "Lista eliminada",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Engadir unha nova etiqueta",
|
||||
"title and color value must be provided" : "debe indicar o título e o valor da cor",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Mover a tarxeta",
|
||||
"Move card to another board" : "Mover a tarxeta a outro taboleiro",
|
||||
"Select a list" : "Seleccionar unha lista",
|
||||
"Card deleted" : "Tarxeta eliminada",
|
||||
"seconds ago" : "hai uns segundos",
|
||||
"All boards" : "Todos os taboleiros",
|
||||
"Archived boards" : "Taboleiros arquivados",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Archivia tutte le schede in questo elenco",
|
||||
"Add a new card" : "Aggiungi una nuova scheda",
|
||||
"Card name" : "Nome scheda",
|
||||
"List deleted" : "Elenco eliminato",
|
||||
"Edit" : "Modifica",
|
||||
"Add a new tag" : "Aggiungi una nuova etichetta",
|
||||
"title and color value must be provided" : "devono essere forniti il titolo e il valore del colore",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Sposta scheda",
|
||||
"Move card to another board" : "Sposta scheda in un'altra lavagna",
|
||||
"Select a list" : "Seleziona un elenco",
|
||||
"Card deleted" : "Scheda eliminata",
|
||||
"seconds ago" : "secondi fa",
|
||||
"All boards" : "Tutte le lavagne",
|
||||
"Archived boards" : "Lavagne archiviate",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Archivia tutte le schede in questo elenco",
|
||||
"Add a new card" : "Aggiungi una nuova scheda",
|
||||
"Card name" : "Nome scheda",
|
||||
"List deleted" : "Elenco eliminato",
|
||||
"Edit" : "Modifica",
|
||||
"Add a new tag" : "Aggiungi una nuova etichetta",
|
||||
"title and color value must be provided" : "devono essere forniti il titolo e il valore del colore",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Sposta scheda",
|
||||
"Move card to another board" : "Sposta scheda in un'altra lavagna",
|
||||
"Select a list" : "Seleziona un elenco",
|
||||
"Card deleted" : "Scheda eliminata",
|
||||
"seconds ago" : "secondi fa",
|
||||
"All boards" : "Tutte le lavagne",
|
||||
"Archived boards" : "Lavagne archiviate",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Zarchiwizuj wszystkie karty na tej liście",
|
||||
"Add a new card" : "Dodaj nową kartę",
|
||||
"Card name" : "Nazwa karty",
|
||||
"List deleted" : "Lista usunięta",
|
||||
"Edit" : "Edycja",
|
||||
"Add a new tag" : "Dodaj nową etykietę",
|
||||
"title and color value must be provided" : "należy podać tytuł i kolor",
|
||||
@@ -209,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Przenieś kartę",
|
||||
"Move card to another board" : "Przenieś kartę na inną tablicę",
|
||||
"Select a list" : "Wybierz listę",
|
||||
"Card deleted" : "Karta usunięta",
|
||||
"seconds ago" : "przed chwilą",
|
||||
"All boards" : "Wszystkie tablice",
|
||||
"Archived boards" : "Zarchiwizowane tablice",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Zarchiwizuj wszystkie karty na tej liście",
|
||||
"Add a new card" : "Dodaj nową kartę",
|
||||
"Card name" : "Nazwa karty",
|
||||
"List deleted" : "Lista usunięta",
|
||||
"Edit" : "Edycja",
|
||||
"Add a new tag" : "Dodaj nową etykietę",
|
||||
"title and color value must be provided" : "należy podać tytuł i kolor",
|
||||
@@ -207,6 +208,7 @@
|
||||
"Move card" : "Przenieś kartę",
|
||||
"Move card to another board" : "Przenieś kartę na inną tablicę",
|
||||
"Select a list" : "Wybierz listę",
|
||||
"Card deleted" : "Karta usunięta",
|
||||
"seconds ago" : "przed chwilą",
|
||||
"All boards" : "Wszystkie tablice",
|
||||
"Archived boards" : "Zarchiwizowane tablice",
|
||||
|
||||
@@ -160,6 +160,7 @@ OC.L10N.register(
|
||||
"Archive all cards in this list" : "Arquivar todos os cartões desta lista",
|
||||
"Add a new card" : "Adicionar um novo cartão",
|
||||
"Card name" : "Nome do cartão",
|
||||
"List deleted" : "Lista excluída",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Adicionar uma nova etiqueta",
|
||||
"title and color value must be provided" : "o título e o valor da cor devem ser fornecidos",
|
||||
@@ -191,6 +192,7 @@ OC.L10N.register(
|
||||
"Select Date" : "Selecionar Data",
|
||||
"Modified" : "Modificado",
|
||||
"Created" : "Criado",
|
||||
"The title cannot be empty." : "O título não pode ficar em branco.",
|
||||
"No comments yet. Begin the discussion!" : "Nenhum comentário ainda. Inicie a conversa!",
|
||||
"Save" : "Salvar",
|
||||
"The comment cannot be empty." : "O comentário não pode zer vazio.",
|
||||
@@ -208,6 +210,7 @@ OC.L10N.register(
|
||||
"Move card" : "Mover cartão",
|
||||
"Move card to another board" : "Mover o cartão para outro painel",
|
||||
"Select a list" : "Selecione uma lista",
|
||||
"Card deleted" : "Cartão excluído",
|
||||
"seconds ago" : "segundos atrás",
|
||||
"All boards" : "Todos os painéis",
|
||||
"Archived boards" : "Painéis arquivados",
|
||||
@@ -216,6 +219,7 @@ OC.L10N.register(
|
||||
"Show boards in calendar/tasks" : "Mostrar painéis em calendários/tarefas",
|
||||
"Limit deck usage of groups" : "Limitar o uso de grupos no deck",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios painéis. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles.",
|
||||
"Board name" : "Nome do painel",
|
||||
"Edit board" : "Editar painel",
|
||||
"Clone board " : "Clonar painel",
|
||||
"Unarchive board " : "Desarquivar painel",
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"Archive all cards in this list" : "Arquivar todos os cartões desta lista",
|
||||
"Add a new card" : "Adicionar um novo cartão",
|
||||
"Card name" : "Nome do cartão",
|
||||
"List deleted" : "Lista excluída",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Adicionar uma nova etiqueta",
|
||||
"title and color value must be provided" : "o título e o valor da cor devem ser fornecidos",
|
||||
@@ -189,6 +190,7 @@
|
||||
"Select Date" : "Selecionar Data",
|
||||
"Modified" : "Modificado",
|
||||
"Created" : "Criado",
|
||||
"The title cannot be empty." : "O título não pode ficar em branco.",
|
||||
"No comments yet. Begin the discussion!" : "Nenhum comentário ainda. Inicie a conversa!",
|
||||
"Save" : "Salvar",
|
||||
"The comment cannot be empty." : "O comentário não pode zer vazio.",
|
||||
@@ -206,6 +208,7 @@
|
||||
"Move card" : "Mover cartão",
|
||||
"Move card to another board" : "Mover o cartão para outro painel",
|
||||
"Select a list" : "Selecione uma lista",
|
||||
"Card deleted" : "Cartão excluído",
|
||||
"seconds ago" : "segundos atrás",
|
||||
"All boards" : "Todos os painéis",
|
||||
"Archived boards" : "Painéis arquivados",
|
||||
@@ -214,6 +217,7 @@
|
||||
"Show boards in calendar/tasks" : "Mostrar painéis em calendários/tarefas",
|
||||
"Limit deck usage of groups" : "Limitar o uso de grupos no deck",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitar o Deck impedirá que usuários que não fazem parte desses grupos criem seus próprios painéis. Os usuários ainda poderão trabalhar em pastas que foram compartilhadas com eles.",
|
||||
"Board name" : "Nome do painel",
|
||||
"Edit board" : "Editar painel",
|
||||
"Clone board " : "Clonar painel",
|
||||
"Unarchive board " : "Desarquivar painel",
|
||||
|
||||
20
l10n/sl.js
20
l10n/sl.js
@@ -67,13 +67,14 @@ OC.L10N.register(
|
||||
"Deck" : "Deck",
|
||||
"Changes in the <strong>Deck app</strong>" : "Spremembe v programu <strong>Deck</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "Nalogi je dodana nova <strong>opomba</strong>",
|
||||
"Upcoming cards" : "Prihajajoče naloge",
|
||||
"Personal" : "Osebno",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Nalogo »%s« na »%s« vam dodeli %s.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vam dodeli nalogo »%s« na »%s«.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Naloga »%s« na »%s« je dosegla datum preteka.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s vas omeni v opombi na »%s«.",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} vas omeni v opombi na »%s«.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Zborko »%s« vam dodeli %s.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Zbirko »%s« vam dodeli %s.",
|
||||
"{user} has shared the board %s with you." : "{user} vam omogoča souporabo zbirke %s.",
|
||||
"No data was provided to create an attachment." : "Ni podanih podatkov za ustvarjanje priloge.",
|
||||
"Finished" : "Končano",
|
||||
@@ -134,6 +135,8 @@ OC.L10N.register(
|
||||
"Toggle compact mode" : "Preklopi način prikaza",
|
||||
"Details" : "Podrobnosti",
|
||||
"Loading board" : "Poteka nalaganje zbirke",
|
||||
"No lists available" : "Ni razpoložljivih seznamov",
|
||||
"Create a new list to add cards to this board" : "Ustvari nov seznam in doda kartice v zbirko",
|
||||
"Board not found" : "Zbirke ni mogoče najti",
|
||||
"Sharing" : "Souporaba",
|
||||
"Tags" : "Oznake",
|
||||
@@ -151,9 +154,13 @@ OC.L10N.register(
|
||||
"Can manage" : "Lahko upravlja",
|
||||
"Delete" : "Izbriši",
|
||||
"Add a new list" : "Dodaj nov seznam",
|
||||
"Archive all cards" : "Arhiviraj vse kartice",
|
||||
"Delete list" : "Izbriši seznam",
|
||||
"Add card" : "Dodaj nalogo",
|
||||
"Archive all cards in this list" : "Arhiviraj vse kartice tega seznama",
|
||||
"Add a new card" : "Dodaj novo nalogo",
|
||||
"Card name" : "Ime kartice",
|
||||
"List deleted" : "Seznam je izbrisan",
|
||||
"Edit" : "Uredi",
|
||||
"Add a new tag" : "Dodaj novo oznako",
|
||||
"title and color value must be provided" : "navedena morata biti podatka naslova in barve",
|
||||
@@ -163,6 +170,8 @@ OC.L10N.register(
|
||||
"Add this attachment" : "Dodaj prilogo",
|
||||
"Delete Attachment" : "Izbriši prilogo",
|
||||
"Restore Attachment" : "Obnovi prilogo",
|
||||
"Open in sidebar view" : "Odpri v bočnem pogledu",
|
||||
"Open in bigger view" : "Odpri v povečanem pogledu",
|
||||
"Assign a tag to this card…" : "Dodeli oznako nalogi ...",
|
||||
"Assign to users" : "Dodeli uporabnikom",
|
||||
"Assign to users/groups/circles" : "Dodeli uporabnikom/skupinam/krogom",
|
||||
@@ -183,6 +192,7 @@ OC.L10N.register(
|
||||
"Select Date" : "Izbor datuma",
|
||||
"Modified" : "Spremenjeno",
|
||||
"Created" : "Ustvarjeno",
|
||||
"The title cannot be empty." : "Polje naslova ne sme biti prazno.",
|
||||
"No comments yet. Begin the discussion!" : "Ni še odzivov, bodite prvi!",
|
||||
"Save" : "Shrani",
|
||||
"The comment cannot be empty." : "Polje opombe ne sme biti prazno.",
|
||||
@@ -200,12 +210,16 @@ OC.L10N.register(
|
||||
"Move card" : "Premakni nalogo",
|
||||
"Move card to another board" : "Premakni nalogo v drugo zbirko",
|
||||
"Select a list" : "Izbor seznama",
|
||||
"Card deleted" : "Naloga je izbrisana",
|
||||
"seconds ago" : "pred nekaj sekundami",
|
||||
"All boards" : "Vse zbirke",
|
||||
"Archived boards" : "Arhivirane zbirke",
|
||||
"Shared with you" : "V souporabi z vami",
|
||||
"Use modal card view" : "Uporabi modalni pogled nalog",
|
||||
"Show boards in calendar/tasks" : "Pokaži zbirke v koledarjem in med opravili",
|
||||
"Limit deck usage of groups" : "Omeji uporabo zbirk na skupine",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omejevanje programa prepreči uporabnikom, ki niso del teh skupin, ustvarjanje novih zbirk. Uporabniki bodo še vedno lahko spreminjali zbirke, ki so jih dobili v souporabo.",
|
||||
"Board name" : "Ime zbirke",
|
||||
"Edit board" : "Uredi zbirko",
|
||||
"Clone board " : "Kloniraj zbirko",
|
||||
"Unarchive board " : "Povrni zbirko iz arhiva",
|
||||
@@ -216,9 +230,13 @@ OC.L10N.register(
|
||||
"An error occurred" : "Prišlo je do napake.",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ali ste prepričani, da želite izbrisati zbirko »{title}«? S tem boste izbrisali tudi vse podatke zbirke.",
|
||||
"Delete the board?" : "Ali želite izbrisati zbirko?",
|
||||
"Loading filtered view" : "Poteka nalaganje filtriranega pogleda",
|
||||
"Today" : "Danes",
|
||||
"Tomorrow" : "Jutri",
|
||||
"This week" : "Ta teden",
|
||||
"No due" : "Ni datuma preteka",
|
||||
"No upcoming cards" : "Ni prihajajočih nalog",
|
||||
"upcoming cards" : "prihajajoče naloge",
|
||||
"Link to a board" : "Povezava do zbirke",
|
||||
"Link to a card" : "Povezava do naloge",
|
||||
"Something went wrong" : "Prišlo je do napake ...",
|
||||
|
||||
20
l10n/sl.json
20
l10n/sl.json
@@ -65,13 +65,14 @@
|
||||
"Deck" : "Deck",
|
||||
"Changes in the <strong>Deck app</strong>" : "Spremembe v programu <strong>Deck</strong>",
|
||||
"A <strong>comment</strong> was created on a card" : "Nalogi je dodana nova <strong>opomba</strong>",
|
||||
"Upcoming cards" : "Prihajajoče naloge",
|
||||
"Personal" : "Osebno",
|
||||
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "Nalogo »%s« na »%s« vam dodeli %s.",
|
||||
"{user} has assigned the card \"%s\" on \"%s\" to you." : "{user} vam dodeli nalogo »%s« na »%s«.",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Naloga »%s« na »%s« je dosegla datum preteka.",
|
||||
"%s has mentioned you in a comment on \"%s\"." : "%s vas omeni v opombi na »%s«.",
|
||||
"{user} has mentioned you in a comment on \"%s\"." : "{user} vas omeni v opombi na »%s«.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Zborko »%s« vam dodeli %s.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Zbirko »%s« vam dodeli %s.",
|
||||
"{user} has shared the board %s with you." : "{user} vam omogoča souporabo zbirke %s.",
|
||||
"No data was provided to create an attachment." : "Ni podanih podatkov za ustvarjanje priloge.",
|
||||
"Finished" : "Končano",
|
||||
@@ -132,6 +133,8 @@
|
||||
"Toggle compact mode" : "Preklopi način prikaza",
|
||||
"Details" : "Podrobnosti",
|
||||
"Loading board" : "Poteka nalaganje zbirke",
|
||||
"No lists available" : "Ni razpoložljivih seznamov",
|
||||
"Create a new list to add cards to this board" : "Ustvari nov seznam in doda kartice v zbirko",
|
||||
"Board not found" : "Zbirke ni mogoče najti",
|
||||
"Sharing" : "Souporaba",
|
||||
"Tags" : "Oznake",
|
||||
@@ -149,9 +152,13 @@
|
||||
"Can manage" : "Lahko upravlja",
|
||||
"Delete" : "Izbriši",
|
||||
"Add a new list" : "Dodaj nov seznam",
|
||||
"Archive all cards" : "Arhiviraj vse kartice",
|
||||
"Delete list" : "Izbriši seznam",
|
||||
"Add card" : "Dodaj nalogo",
|
||||
"Archive all cards in this list" : "Arhiviraj vse kartice tega seznama",
|
||||
"Add a new card" : "Dodaj novo nalogo",
|
||||
"Card name" : "Ime kartice",
|
||||
"List deleted" : "Seznam je izbrisan",
|
||||
"Edit" : "Uredi",
|
||||
"Add a new tag" : "Dodaj novo oznako",
|
||||
"title and color value must be provided" : "navedena morata biti podatka naslova in barve",
|
||||
@@ -161,6 +168,8 @@
|
||||
"Add this attachment" : "Dodaj prilogo",
|
||||
"Delete Attachment" : "Izbriši prilogo",
|
||||
"Restore Attachment" : "Obnovi prilogo",
|
||||
"Open in sidebar view" : "Odpri v bočnem pogledu",
|
||||
"Open in bigger view" : "Odpri v povečanem pogledu",
|
||||
"Assign a tag to this card…" : "Dodeli oznako nalogi ...",
|
||||
"Assign to users" : "Dodeli uporabnikom",
|
||||
"Assign to users/groups/circles" : "Dodeli uporabnikom/skupinam/krogom",
|
||||
@@ -181,6 +190,7 @@
|
||||
"Select Date" : "Izbor datuma",
|
||||
"Modified" : "Spremenjeno",
|
||||
"Created" : "Ustvarjeno",
|
||||
"The title cannot be empty." : "Polje naslova ne sme biti prazno.",
|
||||
"No comments yet. Begin the discussion!" : "Ni še odzivov, bodite prvi!",
|
||||
"Save" : "Shrani",
|
||||
"The comment cannot be empty." : "Polje opombe ne sme biti prazno.",
|
||||
@@ -198,12 +208,16 @@
|
||||
"Move card" : "Premakni nalogo",
|
||||
"Move card to another board" : "Premakni nalogo v drugo zbirko",
|
||||
"Select a list" : "Izbor seznama",
|
||||
"Card deleted" : "Naloga je izbrisana",
|
||||
"seconds ago" : "pred nekaj sekundami",
|
||||
"All boards" : "Vse zbirke",
|
||||
"Archived boards" : "Arhivirane zbirke",
|
||||
"Shared with you" : "V souporabi z vami",
|
||||
"Use modal card view" : "Uporabi modalni pogled nalog",
|
||||
"Show boards in calendar/tasks" : "Pokaži zbirke v koledarjem in med opravili",
|
||||
"Limit deck usage of groups" : "Omeji uporabo zbirk na skupine",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Omejevanje programa prepreči uporabnikom, ki niso del teh skupin, ustvarjanje novih zbirk. Uporabniki bodo še vedno lahko spreminjali zbirke, ki so jih dobili v souporabo.",
|
||||
"Board name" : "Ime zbirke",
|
||||
"Edit board" : "Uredi zbirko",
|
||||
"Clone board " : "Kloniraj zbirko",
|
||||
"Unarchive board " : "Povrni zbirko iz arhiva",
|
||||
@@ -214,9 +228,13 @@
|
||||
"An error occurred" : "Prišlo je do napake.",
|
||||
"Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Ali ste prepričani, da želite izbrisati zbirko »{title}«? S tem boste izbrisali tudi vse podatke zbirke.",
|
||||
"Delete the board?" : "Ali želite izbrisati zbirko?",
|
||||
"Loading filtered view" : "Poteka nalaganje filtriranega pogleda",
|
||||
"Today" : "Danes",
|
||||
"Tomorrow" : "Jutri",
|
||||
"This week" : "Ta teden",
|
||||
"No due" : "Ni datuma preteka",
|
||||
"No upcoming cards" : "Ni prihajajočih nalog",
|
||||
"upcoming cards" : "prihajajoče naloge",
|
||||
"Link to a board" : "Povezava do zbirke",
|
||||
"Link to a card" : "Povezava do naloge",
|
||||
"Something went wrong" : "Prišlo je do napake ...",
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
namespace OCA\Deck\AppInfo;
|
||||
|
||||
$version = \OC_Util::getVersion()[0];
|
||||
$version = \OCP\Util::getVersion()[0];
|
||||
if ($version >= 20) {
|
||||
class Application extends Application20 {
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
namespace OCA\Deck\AppInfo;
|
||||
|
||||
use Exception;
|
||||
use OC_Util;
|
||||
use OCA\Deck\Activity\CommentEventHandler;
|
||||
use OCA\Deck\Capabilities;
|
||||
use OCA\Deck\Collaboration\Resources\ResourceProvider;
|
||||
@@ -172,7 +171,7 @@ class ApplicationLegacy extends App {
|
||||
}
|
||||
|
||||
protected function registerCollaborationResources(): void {
|
||||
$version = OC_Util::getVersion()[0];
|
||||
$version = \OCP\Util::getVersion()[0];
|
||||
if ($version < 16) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -97,13 +97,13 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
|
||||
// FIXME: One moving to QBMapper we should allow filtering the boards probably by method chaining for additional where clauses
|
||||
$sql = 'SELECT id, title, owner, color, archived, deleted_at, 0 as shared, last_modified FROM `*PREFIX*deck_boards` WHERE owner = ? AND last_modified > ?';
|
||||
if (!$includeArchived) {
|
||||
$sql .= ' AND NOT archived AND deleted_at = 0';
|
||||
$sql .= ' AND NOT archived';
|
||||
}
|
||||
$sql .= ' UNION ' .
|
||||
'SELECT boards.id, title, owner, color, archived, deleted_at, 1 as shared, last_modified FROM `*PREFIX*deck_boards` as boards ' .
|
||||
'JOIN `*PREFIX*deck_board_acl` as acl ON boards.id=acl.board_id WHERE acl.participant=? AND acl.type=? AND boards.owner != ? AND last_modified > ?';
|
||||
if (!$includeArchived) {
|
||||
$sql .= ' AND NOT archived AND deleted_at = 0';
|
||||
$sql .= ' AND NOT archived';
|
||||
}
|
||||
$entries = $this->findEntities($sql, [$userId, $since, $userId, Acl::PERMISSION_TYPE_USER, $userId, $since], $limit, $offset);
|
||||
/* @var Board $entry */
|
||||
@@ -142,7 +142,7 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
$sql .= ')';
|
||||
if (!$includeArchived) {
|
||||
$sql .= ' AND NOT archived AND deleted_at = 0';
|
||||
$sql .= ' AND NOT archived';
|
||||
}
|
||||
$entries = $this->findEntities($sql, array_merge([$userId, Acl::PERMISSION_TYPE_GROUP], $groups), $limit, $offset);
|
||||
/* @var Board $entry */
|
||||
@@ -174,7 +174,7 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
|
||||
}
|
||||
$sql .= ')';
|
||||
if (!$includeArchived) {
|
||||
$sql .= ' AND NOT archived AND deleted_at = 0';
|
||||
$sql .= ' AND NOT archived';
|
||||
}
|
||||
$entries = $this->findEntities($sql, array_merge([$userId, Acl::PERMISSION_TYPE_CIRCLE], $circles), $limit, $offset);
|
||||
/* @var Board $entry */
|
||||
|
||||
@@ -42,7 +42,7 @@ class FTSEvent extends Event {
|
||||
}
|
||||
|
||||
public function getArgument($key) {
|
||||
if (isset($this->arguments[$key])) {
|
||||
if ($this->hasArgument($key)) {
|
||||
return $this->arguments[$key];
|
||||
}
|
||||
|
||||
|
||||
@@ -532,7 +532,7 @@ class BoardService {
|
||||
$this->changeHelper->boardChanged($boardId);
|
||||
|
||||
// TODO: use the dispatched event for this
|
||||
$version = \OC_Util::getVersion()[0];
|
||||
$version = \OCP\Util::getVersion()[0];
|
||||
if ($version >= 16) {
|
||||
try {
|
||||
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
|
||||
@@ -621,7 +621,7 @@ class BoardService {
|
||||
$this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_BOARD, $acl, ActivityManager::SUBJECT_BOARD_UNSHARE);
|
||||
$this->changeHelper->boardChanged($acl->getBoardId());
|
||||
|
||||
$version = \OC_Util::getVersion()[0];
|
||||
$version = \OCP\Util::getVersion()[0];
|
||||
if ($version >= 16) {
|
||||
try {
|
||||
$resourceProvider = \OC::$server->query(\OCA\Deck\Collaboration\Resources\ResourceProvider::class);
|
||||
|
||||
1519
package-lock.json
generated
1519
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
@@ -33,21 +33,21 @@
|
||||
"@juliushaertl/vue-richtext": "^0.3.3",
|
||||
"@nextcloud/auth": "^1.3.0",
|
||||
"@nextcloud/axios": "^1.4.0",
|
||||
"@nextcloud/dialogs": "^3.0.0",
|
||||
"@nextcloud/dialogs": "^2.0.1",
|
||||
"@nextcloud/event-bus": "^1.2.0",
|
||||
"@nextcloud/files": "^1.1.0",
|
||||
"@nextcloud/initial-state": "^1.2.0",
|
||||
"@nextcloud/initial-state": "^1.1.2",
|
||||
"@nextcloud/l10n": "^1.4.1",
|
||||
"@nextcloud/moment": "^1.1.1",
|
||||
"@nextcloud/router": "^1.2.0",
|
||||
"@nextcloud/vue": "^2.7.0",
|
||||
"@nextcloud/vue": "^2.6.8",
|
||||
"@nextcloud/vue-dashboard": "^1.0.1",
|
||||
"blueimp-md5": "^2.18.0",
|
||||
"dompurify": "^2.1.1",
|
||||
"lodash": "^4.17.20",
|
||||
"markdown-it": "^11.0.1",
|
||||
"markdown-it-task-lists": "^2.1.1",
|
||||
"moment": "^2.29.1",
|
||||
"moment": "^2.29.0",
|
||||
"nextcloud-vue-collections": "^0.8.1",
|
||||
"p-queue": "^6.6.1",
|
||||
"url-search-params-polyfill": "^8.1.0",
|
||||
@@ -56,7 +56,7 @@
|
||||
"vue-click-outside": "^1.1.0",
|
||||
"vue-easymde": "^1.3.0",
|
||||
"vue-infinite-loading": "^2.4.5",
|
||||
"vue-router": "^3.4.6",
|
||||
"vue-router": "^3.4.5",
|
||||
"vue-smooth-dnd": "^0.8.1",
|
||||
"vuex": "^3.5.1",
|
||||
"vuex-router-sync": "^5.0.0"
|
||||
@@ -73,12 +73,12 @@
|
||||
"@babel/preset-env": "^7.11.5",
|
||||
"@nextcloud/browserslist-config": "^1.0.0",
|
||||
"@nextcloud/eslint-config": "^2.1.0",
|
||||
"@nextcloud/eslint-plugin": "^1.5.0",
|
||||
"@nextcloud/eslint-plugin": "^1.4.0",
|
||||
"@nextcloud/webpack-vue-config": "^1.4.1",
|
||||
"@vue/test-utils": "^1.1.0",
|
||||
"acorn": "^8.0.4",
|
||||
"acorn": "^8.0.3",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^26.5.2",
|
||||
"babel-jest": "^26.3.0",
|
||||
"babel-loader": "^8.1.0",
|
||||
"css-loader": "^4.3.0",
|
||||
"eslint": "^6.8.0",
|
||||
@@ -90,27 +90,27 @@
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"eslint-plugin-standard": "^4.0.1",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"file-loader": "^6.1.1",
|
||||
"jest": "^26.5.2",
|
||||
"file-loader": "^6.1.0",
|
||||
"jest": "^26.4.2",
|
||||
"jest-serializer-vue": "^2.0.2",
|
||||
"minimist": "^1.2.5",
|
||||
"node-sass": "^4.14.1",
|
||||
"raw-loader": "^4.0.2",
|
||||
"sass-loader": "^10.0.3",
|
||||
"style-loader": "^1.3.0",
|
||||
"raw-loader": "^4.0.1",
|
||||
"sass-loader": "^10.0.2",
|
||||
"style-loader": "^1.2.1",
|
||||
"stylelint": "^13.7.2",
|
||||
"stylelint-config-recommended": "^3.0.0",
|
||||
"stylelint-config-recommended-scss": "^4.2.0",
|
||||
"stylelint-scss": "^3.18.0",
|
||||
"stylelint-webpack-plugin": "^2.1.0",
|
||||
"url-loader": "^4.1.1",
|
||||
"url-loader": "^4.1.0",
|
||||
"vue-jest": "^3.0.7",
|
||||
"vue-loader": "^15.9.3",
|
||||
"vue-template-compiler": "^2.6.12",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-server": "^3.11.0",
|
||||
"webpack-merge": "^5.2.0"
|
||||
"webpack-merge": "^5.1.4"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": [
|
||||
|
||||
39
src/App.vue
39
src/App.vue
@@ -21,11 +21,11 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<Content id="content" app-name="deck" :class="{ 'nav-hidden': !navShown, 'sidebar-hidden': !sidebarRouterView }">
|
||||
<AppNavigation />
|
||||
<AppContent>
|
||||
<div id="content" :class="{ 'nav-hidden': !navShown, 'sidebar-hidden': !sidebarRouterView }">
|
||||
<AppNavigation v-show="navShown" />
|
||||
<div id="app-content">
|
||||
<router-view />
|
||||
</AppContent>
|
||||
</div>
|
||||
|
||||
<Modal v-if="cardDetailsInModal && $route.params.cardId" :title="t('deck', 'Card details')" @close="hideModal()">
|
||||
<div class="modal__content modal__card">
|
||||
@@ -34,16 +34,15 @@
|
||||
</Modal>
|
||||
|
||||
<router-view v-show="!cardDetailsInModal || !$route.params.cardId" name="sidebar" />
|
||||
</Content>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { mapState } from 'vuex'
|
||||
import AppNavigation from './components/navigation/AppNavigation'
|
||||
import { Modal, Content, AppContent } from '@nextcloud/vue'
|
||||
import { Modal } from '@nextcloud/vue'
|
||||
import { BoardApi } from './services/BoardApi'
|
||||
import { emit, subscribe } from '@nextcloud/event-bus'
|
||||
|
||||
const boardApi = new BoardApi()
|
||||
|
||||
@@ -52,8 +51,6 @@ export default {
|
||||
components: {
|
||||
AppNavigation,
|
||||
Modal,
|
||||
Content,
|
||||
AppContent,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -94,15 +91,6 @@ export default {
|
||||
this.$store.dispatch('loadBoards')
|
||||
this.$store.dispatch('loadSharees')
|
||||
},
|
||||
mounted() {
|
||||
// Set navigation to initial state and update in case it gets toggled
|
||||
emit('toggle-navigation', { open: this.navShown, _initial: true })
|
||||
this.$nextTick(() => {
|
||||
subscribe('navigation-toggled', (navState) => {
|
||||
this.$store.dispatch('toggleNav', navState.open)
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
hideModal() {
|
||||
this.$router.push({ name: 'board' })
|
||||
@@ -143,6 +131,13 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.multiselect {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.modal__card {
|
||||
min-width: 320px;
|
||||
@@ -152,11 +147,3 @@ export default {
|
||||
height: 80vh;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.multiselect {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -22,17 +22,17 @@
|
||||
|
||||
<template>
|
||||
<div class="controls">
|
||||
<div v-if="overviewName" class="board-title">
|
||||
<div class="board-bullet icon-calendar-dark" />
|
||||
<h2>{{ overviewName }}</h2>
|
||||
</div>
|
||||
<div v-else-if="board" class="board-title">
|
||||
<div id="app-navigation-toggle-custom" class="icon-menu" @click="toggleNav" />
|
||||
<div v-if="board" class="board-title">
|
||||
<div :style="{backgroundColor: '#' + board.color}" class="board-bullet" />
|
||||
<h2>{{ board.title }}</h2>
|
||||
<h2><a href="#">{{ board.title }}</a></h2>
|
||||
<p v-if="showArchived">
|
||||
({{ t('deck', 'Archived cards') }})
|
||||
</p>
|
||||
</div>
|
||||
<div v-if="overviewName" class="board-title">
|
||||
<h2><a href="#">{{ overviewName }}</a></h2>
|
||||
</div>
|
||||
<div v-if="board" class="board-actions">
|
||||
<div v-if="canManage && !showArchived && !board.archived"
|
||||
id="stack-add"
|
||||
@@ -321,9 +321,6 @@ export default {
|
||||
<style lang="scss" scoped>
|
||||
.controls {
|
||||
display: flex;
|
||||
padding: 3px;
|
||||
height: 44px;
|
||||
padding-left: 44px;
|
||||
|
||||
.board-title {
|
||||
display: flex;
|
||||
@@ -340,7 +337,7 @@ export default {
|
||||
height: 20px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
background-color: #aaa;
|
||||
margin: 12px;
|
||||
margin-left: -4px;
|
||||
}
|
||||
@@ -398,7 +395,6 @@ export default {
|
||||
width: 250px;
|
||||
max-height: 80vh;
|
||||
overflow: auto;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.filter h3 {
|
||||
|
||||
@@ -181,7 +181,7 @@ export default {
|
||||
}
|
||||
|
||||
.board {
|
||||
padding-left: $board-spacing;
|
||||
margin-left: $board-spacing;
|
||||
position: relative;
|
||||
height: calc(100% - 44px);
|
||||
overflow-x: scroll;
|
||||
|
||||
@@ -7,19 +7,10 @@
|
||||
:options="formatedSharees"
|
||||
:user-select="true"
|
||||
label="displayName"
|
||||
:loading="isLoading || !!isSearching"
|
||||
:disabled="isLoading"
|
||||
track-by="multiselectKey"
|
||||
:internal-search="true"
|
||||
@input="clickAddAcl"
|
||||
@search-change="asyncFind">
|
||||
<template #noOptions>
|
||||
{{ isSearching ? t('deck', 'Searching for users, groups and circles ...') : t('deck', 'No participants found') }}
|
||||
</template>
|
||||
<template #noResult>
|
||||
{{ isSearching ? t('deck', 'Searching for users, groups and circles ...') : t('deck', 'No participants found') }}
|
||||
</template>
|
||||
</Multiselect>
|
||||
@search-change="asyncFind" />
|
||||
|
||||
<ul
|
||||
id="shareWithList"
|
||||
@@ -72,7 +63,6 @@ import { Avatar, Multiselect, Actions, ActionButton, ActionCheckbox } from '@nex
|
||||
import { CollectionList } from 'nextcloud-vue-collections'
|
||||
import { mapGetters, mapState } from 'vuex'
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import { showError } from '@nextcloud/dialogs'
|
||||
|
||||
export default {
|
||||
name: 'SharingTabSidebar',
|
||||
@@ -93,7 +83,6 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
isLoading: false,
|
||||
isSearching: false,
|
||||
addAcl: null,
|
||||
addAclForAPI: null,
|
||||
}
|
||||
@@ -148,20 +137,13 @@ export default {
|
||||
this.asyncFind('')
|
||||
},
|
||||
methods: {
|
||||
async asyncFind(query) {
|
||||
// manual debounce to handle async searching more easily and have more control over the loading state
|
||||
const timestamp = (new Date()).getTime()
|
||||
if (!this.isSearching || timestamp > this.isSearching + 300) {
|
||||
this.isSearching = timestamp
|
||||
await this.$store.dispatch('loadSharees', query)
|
||||
|
||||
// only reset searching flag if the most recent search finished
|
||||
if (this.isSearching === timestamp) {
|
||||
this.isSearching = false
|
||||
}
|
||||
}
|
||||
asyncFind(query) {
|
||||
this.isLoading = true
|
||||
this.$store.dispatch('loadSharees', query).then(response => {
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
async clickAddAcl() {
|
||||
clickAddAcl() {
|
||||
this.addAclForAPI = {
|
||||
type: this.addAcl.value.shareType,
|
||||
participant: this.addAcl.value.shareWith,
|
||||
@@ -169,16 +151,7 @@ export default {
|
||||
permissionShare: false,
|
||||
permissionManage: false,
|
||||
}
|
||||
this.isLoading = true
|
||||
try {
|
||||
await this.$store.dispatch('addAclToCurrentBoard', this.addAclForAPI)
|
||||
} catch (e) {
|
||||
const errorMessage = t('deck', 'Failed to create share with {displayName}', { displayName: this.addAcl.displayName })
|
||||
console.error(errorMessage, e)
|
||||
showError(errorMessage)
|
||||
}
|
||||
this.addAcl = null
|
||||
this.isLoading = false
|
||||
this.$store.dispatch('addAclToCurrentBoard', this.addAclForAPI)
|
||||
},
|
||||
clickEditAcl(acl) {
|
||||
this.addAclForAPI = Object.assign({}, acl)
|
||||
|
||||
@@ -117,9 +117,11 @@ import { mapGetters, mapState } from 'vuex'
|
||||
import { Container, Draggable } from 'vue-smooth-dnd'
|
||||
|
||||
import { Actions, ActionButton, Modal } from '@nextcloud/vue'
|
||||
import { showError } from '@nextcloud/dialogs'
|
||||
import { showError, showUndo } from '@nextcloud/dialogs'
|
||||
import CardItem from '../cards/CardItem'
|
||||
|
||||
import '@nextcloud/dialogs/styles/toast.scss'
|
||||
|
||||
export default {
|
||||
name: 'Stack',
|
||||
components: {
|
||||
@@ -160,7 +162,6 @@ export default {
|
||||
]),
|
||||
...mapState({
|
||||
showArchived: state => state.showArchived,
|
||||
cardDetailsInModal: state => state.cardDetailsInModal,
|
||||
}),
|
||||
cardsByStack() {
|
||||
return this.$store.getters.cardsByStack(this.stack.id).filter((card) => {
|
||||
@@ -211,6 +212,7 @@ export default {
|
||||
},
|
||||
deleteStack(stack) {
|
||||
this.$store.dispatch('deleteStack', stack)
|
||||
showUndo(t('deck', 'List deleted'), () => this.$store.dispatch('stackUndoDelete', stack))
|
||||
},
|
||||
archiveAllCardsFromStack(stack) {
|
||||
|
||||
@@ -246,9 +248,7 @@ export default {
|
||||
this.$refs.newCardInput.focus()
|
||||
this.animate = false
|
||||
})
|
||||
if (!this.cardDetailsInModal) {
|
||||
this.$router.push({ name: 'card', params: { cardId: newCard.id } })
|
||||
}
|
||||
this.$router.push({ name: 'card', params: { cardId: newCard.id } })
|
||||
} catch (e) {
|
||||
showError('Could not create card: ' + e.response.data.message)
|
||||
} finally {
|
||||
|
||||
@@ -571,16 +571,14 @@ export default {
|
||||
// FIXME: Obivously we should at some point not randomly reuse the sidebar component
|
||||
// since this is not oficially supported
|
||||
.modal__card .app-sidebar {
|
||||
$modal-padding: 14px;
|
||||
border: 0;
|
||||
min-width: calc(100% - #{$modal-padding*2});
|
||||
min-width: 100%;
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
max-width: calc(100% - #{$modal-padding*2});
|
||||
padding: 14px;
|
||||
max-height: calc(100% - #{$modal-padding*2});
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
&::v-deep {
|
||||
.app-sidebar-header {
|
||||
position: sticky;
|
||||
|
||||
@@ -144,19 +144,17 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
$avatar-offset: 12px;
|
||||
|
||||
.avatar-list {
|
||||
float: right;
|
||||
display: inline-flex;
|
||||
padding-right: $avatar-offset;
|
||||
padding-right: 8px;
|
||||
flex-direction: row-reverse;
|
||||
.avatardiv,
|
||||
/deep/ .avatardiv {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
box-sizing: content-box !important;
|
||||
margin-right: -$avatar-offset;
|
||||
margin-right: -12px;
|
||||
transition: margin-right 0.2s ease-in-out;
|
||||
|
||||
&.icon-more {
|
||||
|
||||
@@ -121,6 +121,10 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
.card:not(.card__editable) .avatars {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.fade-enter-active, .fade-leave-active {
|
||||
transition: opacity .125s;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
class="card"
|
||||
@click="openCard">
|
||||
<div class="card-upper">
|
||||
<h3 v-if="compactMode || isArchived || showArchived || !canEdit">
|
||||
<h3 v-if="isArchived || showArchived || !canEdit">
|
||||
{{ card.title }}
|
||||
</h3>
|
||||
<h3 v-else-if="!editing">
|
||||
@@ -41,7 +41,6 @@
|
||||
<form v-if="editing"
|
||||
v-click-outside="cancelEdit"
|
||||
class="dragDisabled"
|
||||
@click.stop
|
||||
@keyup.esc="cancelEdit"
|
||||
@submit.prevent="finishedEdit(card)">
|
||||
<input v-model="copiedCard.title"
|
||||
@@ -60,9 +59,9 @@
|
||||
name="zoom"
|
||||
tag="ul"
|
||||
class="labels"
|
||||
@click.stop="openCard">
|
||||
@click="openCard">
|
||||
<li v-for="label in labelsSorted" :key="label.id" :style="labelStyle(label)">
|
||||
<span @click.stop="applyLabelFilter(label)">{{ label.title }}</span>
|
||||
<span @click="applyLabelFilter(label)">{{ label.title }}</span>
|
||||
</li>
|
||||
</transition-group>
|
||||
<div v-show="!compactMode" class="card-controls compact-item" @click="openCard">
|
||||
@@ -116,10 +115,10 @@ export default {
|
||||
]),
|
||||
canEdit() {
|
||||
if (this.currentBoard) {
|
||||
return !this.currentBoard.archived && this.$store.getters.canEdit
|
||||
return this.$store.getters.canEdit
|
||||
}
|
||||
const board = this.$store.getters.boards.find((item) => item.id === this.card.boardId)
|
||||
return board ? !board.archived && board.permissions.PERMISSION_EDIT : false
|
||||
return board ? board.permissions.PERMISSION_EDIT : false
|
||||
},
|
||||
card() {
|
||||
return this.item ? this.item : this.$store.getters.cardById(this.id)
|
||||
@@ -172,10 +171,6 @@ export default {
|
||||
background-color: var(--color-main-background);
|
||||
margin-bottom: $card-spacing;
|
||||
|
||||
&::v-deep * {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
body.dark &, body.theme--dark & {
|
||||
border: 2px solid var(--color-border);
|
||||
}
|
||||
@@ -200,7 +195,7 @@ export default {
|
||||
margin: 12px $card-padding;
|
||||
flex-grow: 1;
|
||||
font-size: 100%;
|
||||
overflow: hidden;
|
||||
overflow-x: hidden;
|
||||
word-wrap: break-word;
|
||||
padding-left: 4px;
|
||||
span {
|
||||
@@ -217,16 +212,11 @@ export default {
|
||||
.card-controls {
|
||||
display: flex;
|
||||
margin-left: $card-padding;
|
||||
margin-right: $card-padding;
|
||||
|
||||
& > div {
|
||||
display: flex;
|
||||
max-height: 44px;
|
||||
}
|
||||
}
|
||||
&.card__editable .card-controls {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.duedate {
|
||||
|
||||
@@ -30,18 +30,18 @@
|
||||
<ActionButton v-if="showArchived === false && isCurrentUserAssigned" icon="icon-user" @click="unassignCardFromMe()">
|
||||
{{ t('deck', 'Unassign myself') }}
|
||||
</ActionButton>
|
||||
<ActionButton icon="icon-external" @click.stop="modalShow=true">
|
||||
{{ t('deck', 'Move card') }}
|
||||
</ActionButton>
|
||||
<ActionButton icon="icon-settings-dark" @click="openCard">
|
||||
{{ t('deck', 'Card details') }}
|
||||
</ActionButton>
|
||||
<ActionButton icon="icon-archive" @click="archiveUnarchiveCard()">
|
||||
{{ showArchived ? t('deck', 'Unarchive card') : t('deck', 'Archive card') }}
|
||||
</ActionButton>
|
||||
<ActionButton v-if="showArchived === false" icon="icon-delete" @click="deleteCard()">
|
||||
{{ t('deck', 'Delete card') }}
|
||||
</ActionButton>
|
||||
<ActionButton icon="icon-external" @click.stop="modalShow=true">
|
||||
{{ t('deck', 'Move card') }}
|
||||
</ActionButton>
|
||||
<ActionButton icon="icon-settings-dark" @click="openCard">
|
||||
{{ t('deck', 'Card details') }}
|
||||
</ActionButton>
|
||||
</Actions>
|
||||
</div>
|
||||
<Modal v-if="modalShow" :title="t('deck', 'Move card to another board')" @close="modalShow=false">
|
||||
@@ -75,6 +75,8 @@ import { mapGetters, mapState } from 'vuex'
|
||||
import axios from '@nextcloud/axios'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import { getCurrentUser } from '@nextcloud/auth'
|
||||
import { showUndo } from '@nextcloud/dialogs'
|
||||
import '@nextcloud/dialogs/styles/toast.scss'
|
||||
|
||||
export default {
|
||||
name: 'CardMenu',
|
||||
@@ -106,7 +108,7 @@ export default {
|
||||
return this.$store.getters.canEdit
|
||||
}
|
||||
const board = this.$store.getters.boards.find((item) => item.id === this.card.boardId)
|
||||
return !!board?.permissions?.PERMISSION_EDIT
|
||||
return board.permissions.PERMISSION_EDIT
|
||||
},
|
||||
isBoardAndStackChoosen() {
|
||||
if (this.selectedBoard === '' || this.selectedStack === '') {
|
||||
@@ -129,6 +131,7 @@ export default {
|
||||
},
|
||||
deleteCard() {
|
||||
this.$store.dispatch('deleteCard', this.card)
|
||||
showUndo(t('deck', 'Card deleted'), () => this.$store.dispatch('cardUndoDelete', this.card))
|
||||
},
|
||||
archiveUnarchiveCard() {
|
||||
this.$store.dispatch('archiveUnarchiveCard', { ...this.card, archived: !this.card.archived })
|
||||
|
||||
@@ -192,4 +192,8 @@ export default {
|
||||
color: var(--color-text-light);
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .app-navigation-toggle {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -34,6 +34,7 @@ import comment from './comment'
|
||||
import trashbin from './trashbin'
|
||||
import attachment from './attachment'
|
||||
import overview from './overview'
|
||||
import debounce from 'lodash/debounce'
|
||||
Vue.use(Vuex)
|
||||
|
||||
const apiClient = new BoardApi()
|
||||
@@ -58,7 +59,7 @@ export default new Vuex.Store({
|
||||
state: {
|
||||
config: loadState('deck', 'config', {}),
|
||||
showArchived: false,
|
||||
navShown: localStorage.getItem('deck.navShown') === 'true',
|
||||
navShown: true,
|
||||
compactMode: localStorage.getItem('deck.compactMode') === 'true',
|
||||
cardDetailsInModal: localStorage.getItem('deck.cardDetailsInModal') === 'true',
|
||||
sidebarShown: false,
|
||||
@@ -203,9 +204,8 @@ export default new Vuex.Store({
|
||||
return board.id !== b.id
|
||||
})
|
||||
},
|
||||
toggleNav(state, navState) {
|
||||
state.navShown = navState
|
||||
localStorage.setItem('deck.navShown', navState)
|
||||
toggleNav(state) {
|
||||
state.navShown = !state.navShown
|
||||
},
|
||||
toggleSidebar(state) {
|
||||
state.sidebarShown = !state.sidebarShown
|
||||
@@ -392,7 +392,7 @@ export default new Vuex.Store({
|
||||
const boards = await apiClient.loadBoards()
|
||||
commit('setBoards', boards)
|
||||
},
|
||||
async loadSharees({ commit }, query) {
|
||||
loadSharees: debounce(function({ commit }, query) {
|
||||
const params = new URLSearchParams()
|
||||
if (typeof query === 'undefined') {
|
||||
return
|
||||
@@ -402,15 +402,16 @@ export default new Vuex.Store({
|
||||
params.append('perPage', 20)
|
||||
params.append('itemType', [0, 1, 7])
|
||||
|
||||
const response = await axios.get(generateOcsUrl('apps/files_sharing/api/v1') + 'sharees', { params })
|
||||
commit('setSharees', response.data.ocs.data)
|
||||
},
|
||||
axios.get(generateOcsUrl('apps/files_sharing/api/v1') + 'sharees', { params }).then((response) => {
|
||||
commit('setSharees', response.data.ocs.data)
|
||||
})
|
||||
}, 250),
|
||||
|
||||
setBoardFilter({ commmit }, filter) {
|
||||
commmit('setBoardFilter', filter)
|
||||
},
|
||||
toggleNav({ commit }, navState) {
|
||||
commit('toggleNav', navState)
|
||||
toggleNav({ commit }) {
|
||||
commit('toggleNav')
|
||||
},
|
||||
toggleSidebar({ commit }) {
|
||||
commit('toggleSidebar')
|
||||
@@ -453,11 +454,13 @@ export default new Vuex.Store({
|
||||
},
|
||||
|
||||
// acl actions
|
||||
async addAclToCurrentBoard({ dispatch, commit }, newAcl) {
|
||||
addAclToCurrentBoard({ dispatch, commit }, newAcl) {
|
||||
newAcl.boardId = this.state.currentBoard.id
|
||||
const result = await apiClient.addAcl(newAcl)
|
||||
commit('addAclToCurrentBoard', result)
|
||||
dispatch('refreshBoard', newAcl.boardId)
|
||||
apiClient.addAcl(newAcl)
|
||||
.then((returnAcl) => {
|
||||
commit('addAclToCurrentBoard', returnAcl)
|
||||
dispatch('refreshBoard', newAcl.boardId)
|
||||
})
|
||||
},
|
||||
updateAclFromCurrentBoard({ commit }, acl) {
|
||||
acl.boardId = this.state.currentBoard.id
|
||||
|
||||
Reference in New Issue
Block a user