Only the owner can delete/undo a board deletion so there is no reason
other users should have any permission on a board marked as deleted
Signed-off-by: Julius Härtl <jus@bitgrid.net>
The `--system` parameter can be supplied via command line
or selected afterwards.
However if none was provided the command would crash with
`TypeError: Cannot assign null to property $system`.
Handle that gracefully and make the type spec more precise
for the setSystem function.
Signed-off-by: Max <max@nextcloud.com>
The calendar object needs to be exposed with "write" properties in order to allow users to hide/show the corresponding calendar in the calendar app. It doesn't has any affects on the general permissions for the whole board or the tasks. As soon as you select a task you jump to the deck app where the normal deck permissions are applied.
fixes: https://github.com/nextcloud/deck/issues/4618
Signed-off-by: Björn Schießle <bjoern@nextcloud.com>
Limit deleted cards in one cron job run to 500
Converted spaces to tabs
Added missing import for CardMapper class
Added another missing import for CardMapper class
Fixed response object in findToDelete method + fixed 2 misspellings in API.md
Fixed invalid parameter type
Fix DeleteCronTest
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Fix lint errors
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
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!
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
-fix: Pass user id along to properly check permissions in background jobs @backportbot[bot] [#5595](https://github.com/nextcloud/deck/pull/5595)
## 1.10.0-beta.1
### Added
- Compatibility with Nextcloud 27
## 1.8.7
### Fixed
-fix(references): Mute NoPermissionException as it is expected to happen for references@juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
-fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
- Gracefully handle not found card for a share @mejo- [#4566](https://github.com/nextcloud/deck/pull/4566)
- Prevent tag itself being edit button if user lacks permissions @joshtrichards [#4574](https://github.com/nextcloud/deck/pull/4574)
- Update Description.vue: Fixes the issue of hidden text by menu bar @pschopen [#4617](https://github.com/nextcloud/deck/pull/4617)
- allow user to toggle visibility of the calendar for a deck board @schiessle [#4622](https://github.com/nextcloud/deck/pull/4622)
- fix: Append datetime picker to body to avoid cut off @juliushaertl [#4643](https://github.com/nextcloud/deck/pull/4643)
- fix: Bring back overdue column by removing faulty condition @juliushaertl [#4660](https://github.com/nextcloud/deck/pull/4660)
- fix(sessions): Do not send close request without token @juliushaertl [#4510](https://github.com/nextcloud/deck/pull/4510)
- tests(integration): Add test for multiple board shares to the same user @juliushaertl [#4494](https://github.com/nextcloud/deck/pull/4494)
- fix(API): Fix board API details parameter to work as expected @nickvergessen [#4518](https://github.com/nextcloud/deck/pull/4518)
- Fix : Overlapping expiry dates on tags @Jerome-Herbinet [#4535](https://github.com/nextcloud/deck/pull/4535)
- Fix consistency of a "Create card" wording with its equivalent for Notes ("New card") @Jerome-Herbinet [#4534](https://github.com/nextcloud/deck/pull/4534)
- tests(integration): Add integration tests for due dates @juliushaertl [#4489](https://github.com/nextcloud/deck/pull/4489)
- Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604)
- Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648)
- Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657)
-Fix small issues around delete/undo@juliushaertl [#5440](https://github.com/nextcloud/deck/pull/5440)
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
@@ -20,18 +20,37 @@ Deck is a kanban style organization tool aimed at personal planning and project
### Mobile apps
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
- [deck NG for Android and iOS](https://github.com/meltzow/deck-ng) - It is available in [Google Play Store](https://play.google.com/store/apps/details?id=net.meltzow.deckng) and [Apple App Store](https://apps.apple.com/us/app/deck-ng/id6443334702)
### 3rd-Party Integrations
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
- [QOwnNotes](https://github.com/pbek/QOwnNotes) - Quickly creates cards and links to them in Markdown notes
## Installation/Update
The app can be installed through the app store within Nextcloud. You can also download the latest release from the [release page](https://github.com/nextcloud-releases/deck/releases).
This app is supposed to work on the two latest Nextcloud versions.
### Install latest release
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
### Install from git
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
```
git clone https://github.com/nextcloud/deck.git
cd deck
make install-deps
make build
```
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
### Install the nightly builds
Instead of setting everything up manually, you can just [download the nightly build](https://github.com/nextcloud/deck/releases/tag/nightly) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
## Performance limitations
@@ -46,54 +65,36 @@ Improvements on Nextcloud server and Deck itself will improve the situation.
## Developing
There are multiple ways to develop on Deck. As you will need a Nextcloud server running, the individual options are described below.
### PHP
### General build instructions
Nothing to prepare, just dig into the code.
General build instructions for the app itself are the same for all options.
### JavaScript
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
This requires at least Node 14 and npm 7 to be installed.
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
### Faster frontend developing with HMR
#### Hot reloading
You can enable HMR (Hot module replacement) to avoid page reloads when working on the frontend:
1. ☑️ Install and enable [`hmr_enabler` app](https://github.com/nextcloud/hmr_enabler)
2. 🏁 Run `npm run serve`
3. 🌍 Open the normal Nextcloud server URL (not the URL given by above command)
### GitHub Codespaces / VS Code devcontainer
- Open code spaces or the repository in VS Code to start the dev container
- The container will automatically install all dependencies and build the app
- Nextcloud will be installed from the master development branch and be available on a port exposed by the container
### Docker: Simple app development container
- Fork the app
- Clone the repository: `git clone https://github.com/nextcloud/deck.git`
- Go into deck directory: `cd deck`
- Build the app as described in the general build instructions
- Run Nextcloud development container and mount the apps source code into it
Enable debug mode in your config.php `'debug' => true,`
You need to setup a [development environment](https://docs.nextcloud.com/server/latest/developer_manual//getting_started/devenv.html) of the current Nextcloud version. You can also alternatively install & run the [nextcloud docker container](https://github.com/juliushaertl/nextcloud-docker-dev).
After the finished installation, you can clone the deck project directly in the `/[nextcloud-docker-dev-dir]/workspace/server/apps/` folder.
### Running tests
You can use the provided Makefile to run all tests by using:
@@ -80,7 +80,7 @@ An ETag header is returned in order to determine if further child elements have
- Fetch a single card of a board `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}`
- Fetch attachments of a card `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments`
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
Changes of child elements will propagate to their parents and also cause an update of the ETag which will be useful for determining if a sync is necessary on any client integration side. As an example, if a label is added to a card, the ETag of all related entities (the card, stack and board) will change.
@@ -117,7 +117,6 @@ This API version has become available with **Deck 1.3.0**.
- [GET /boards/import/getSystems - Import a board](#get-boardsimportgetsystems-import-a-board)
- [GET /boards/import/config/system/{schema} - Import a board](#get-boardsimportconfigsystemschema-import-a-board)
- [POST /boards/import - Import a board](#post-boardsimport-import-a-board)
- The `done` property was added to cards
# Endpoints
@@ -588,7 +587,7 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
#### Response
```json
{
{
"title":"Test",
"description":null,
"stackId":6,
@@ -602,7 +601,6 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
"owner":"admin",
"order":999,
"archived":false,
"done":null,
"duedate":"2019-12-24T19:29:30+00:00",
"deletedAt":0,
"commentsUnread":0,
@@ -625,28 +623,22 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
| title | String | The title of the card, maximum length is limited to 255 characters |
| description | String | The markdown description of the card |
| type | String | Type of the card (for later use) use 'plain' for now |
| order | Integer | Order for sorting the stacks |
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
```
{
{
"title": "Test card",
"description": "A card description",
"type": "plain",
"owner": "admin",
"order": 999,
"duedate": "2019-12-24T19:29:30+00:00",
"archived": false,
"done": null,
}
```
@@ -985,7 +977,7 @@ For now only `deck_file` is supported as an attachment type.
### DELETE /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Delete an attachment
#### Request parameters
| Parameter | Type | Description |
@@ -1059,12 +1051,12 @@ Make a request to see the json schema of system
# OCS API
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
This has the benefit that both the web UI as well as external integrations can use the same API.
## Config
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
### GET /api/v1.0/config - Fetch app configuration values
@@ -1072,10 +1064,9 @@ Deck stores user and app configuration values globally and per board. The GET en
| Config key | Description |
| --- | --- |
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
| cardIdBadge | Determines if the ID badges are displayed on cards (boolean) |
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
```
{
@@ -1088,7 +1079,6 @@ Deck stores user and app configuration values globally and per board. The GET en
"data": {
"calendar": true,
"cardDetailsInModal": true,
"cardIdBadge": true,
"groupLimit": [
{
"id": "admin",
@@ -1119,8 +1109,7 @@ Deck stores user and app configuration values globally and per board. The GET en
| notify-due | `off`, `assigned` or `all` |
| calendar | Boolean |
| cardDetailsInModal | Boolean |
| cardIdBadge | Boolean |
#### Example request
```
@@ -1194,7 +1183,7 @@ A list of comments will be provided under the `ocs.data` key. If no or no more c
}
```
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
```json
[
@@ -1402,110 +1391,3 @@ A bad request response is returned if invalid input values are provided. The res
A not found response might be returned if:
- The card for the given cardId could not be found
9. [New owner for the deck entities](#9-new-owner-for-the-deck-entities)
4. [Archive old tasks](#4-archive-old-tasks)
5. [Manage your board](#5-manage-your-board)
6. [Import boards](#6-import-boards)
7. [Search](#7-search)
8. [New owner for the deck entities](#8-new-owner-for-the-deck-entities)
### 1. Create my first board
In this example, we're going to create a board and share it with an other nextcloud user.
@@ -26,7 +25,7 @@ In this example, we're going to create a board and share it with an other nextcl
### 2. Create stacks and cards
Stacks are simply columns with list of cards. It can represent a category of tasks or any step in your projects for example.
Stacks are simply columns with list of cards. It can represent a category of tasks or any step in your projects for example.
**Check this out :**

@@ -54,18 +53,12 @@ And even :

### 4. Mark as done
Once a task has been completed, you can mark it as done. This will prevent it from becoming overdue and hide it from the upcoming cards.
You can mark it as not done at any time.
### 4. Archive old tasks
Once finished or obsolete, a task could be archived. The tasks is not deleted, it's just archived, and you can retrieve it later


### 5. Archive old tasks
Once obsolete, a task could be archived. The task is not deleted, it's just archived, and you can retrieve it later

### 6. Manage your board
### 5. Manage your board
You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right.
Once in this menu, you have access to several things:
@@ -79,7 +72,7 @@ The **sharing tab** allows you to add users or even groups to your boards.
**Deleted objects** allows you to return previously deleted stacks or cards.
The **Timeline** allows you to see everything that happened in your boards. Everything!
### 7. Import boards
### 6. Import boards
Importing can be done using the API or the `occ``deck:import` command.
@@ -97,7 +90,7 @@ Steps:
* Create the configuration file
* Execute the import informing the import file path, data file and source as `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
This ID you will use in the configuration file in the `board` property
* Create the configuration file
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
Example configuration file:
```json
@@ -145,7 +138,7 @@ Example configuration file:
}
```
### 8. Search
### 7. Search
Deck provides a global search either through the unified search in the Nextcloud header or with the inline search next to the board controls.
This search allows advanced filtering of cards across all board of the logged in user.
@@ -168,7 +161,7 @@ Other text tokens will be used to perform a case-insensitive search on the card
In addition, quotes can be used to pass a query with spaces, e.g. `"Exact match with spaces"` or `title:"My card"`.
### 9. New owner for the deck entities
### 8. New owner for the deck entities
You can transfer ownership of boards, cards, etc to a new user, using `occ` command `deck:transfer-ownership`
Deck currently supports exporting all boards a user owns in a single JSON file. The format is based on the database schema that deck uses. It can be used to re-import boards on the same or other instances.
The export currently has some kown limitations in terms of specific data not included:
- Activity information
- File attachments to deck cards
- Comments
-
```
occ deck:export > my-file.json
```
## Import boards
Importing can be done using the API or the `occ` `deck:import` command.
It is possible to import from the following sources:
### Deck JSON
A json file that has been obtained from the above described `occ deck:export [userid]` command can be imported.
```
occ deck:import my-file.json
```
In case you are importing from a different instance you may use an additional config file to provide custom user id mapping in case users have different identifiers.
```
{
"owner": "admin",
"uidRelation": {
"johndoe": "test-user-1"
}
}
```
#### Trello JSON
Limitations:
* Comments with more than 1000 characters are placed as attached files to the card.
Steps:
* Create the data file
* Access Trello
* go to the board you want to export
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON
* Create the configuration file
* Execute the import informing the import file path, data file and source as `Trello JSON`
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
Example configuration file:
```json
{
"owner": "admin",
"color": "0800fd",
"uidRelation": {
"johndoe": "johndoe"
}
}
```
**Limitations**:
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
#### Trello API
Import using API is recommended for boards with more than 1000 actions.
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
* Get the ID of the board you want to import by making a request to:
This ID you will use in the configuration file in the `board` property
* Create the configuration file
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
"{user} has archived card {card} in list {stack} on board {board}":"{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
"You have unarchived card {card} in list {stack} on board {board}":"لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
"You have marked the card {card} as done in list {stack} on board {board}":"لقد قُمت بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
"{user} has marked card {card} as done in list {stack} on board {board}":"قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
"You have marked the card {card} as undone in list {stack} on board {board}":"لقد قُمت بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوح {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوح {board}",
"You have removed the due date of card {card}":"قمت بإزالة التاريخ المحدد من البطاقة {card}",
"{user} has removed the due date of card {card}":"{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
"You have set the due date of card {card} to {after}":"قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
@@ -83,12 +87,12 @@ OC.L10N.register(
"{user} has shared {deck-board} with you.":"{user} قام بمشاركة {deck-board} معك.",
"Deck board":"لوح Deck",
"Owned by %1$s":"يملكها %1$s",
"Deck boards, cards and comments":"الرُّقع و البطاقات و الملاحظات",
"Deck boards, cards and comments":"ألواح الرٌّقعة و البطاقات و الملاحظات",
"From %1$s, in %2$s/%3$s, owned by %4$s":" من %1$s، في %2$s/%3$s، يملكها %4$s",
"Create a new deck card":"إنشاء كَدْسَة بطاقات deck card جديدة",
"Card comments":"تعليقات البطاقة ",
"%s on %s":"%s على %s",
"Deck boards and cards":"الرُّقع و البطاقات",
"Deck boards and cards":"ألواح الرُّقعة و البطاقات",
"No data was provided to create an attachment.":"لا بيانات تم تقديمها لانشاء مرفق",
"{count} comments, {unread} unread":"{عدد} التعليقات، {غير مقروءة} غير مقروءة",
"Edit card title":"تعديل اسم القائمة",
"Card details":"تفاصيل البطاقة",
"Assign to me":"ينسب لي",
"Unassign myself":"إلغاء تعييني ",
"Mark as not done":"تمييز كـ \"غير منتهٍ\"",
"Mark as done":"تمييز كمُنجَز",
"Move card":"حرك البطاقة",
"Card details":"تفاصيل البطاقة",
"Delete card":"حذف البطاقة",
"Move card to another board":"حرك البطاقة الى لوح اخر",
"Select a list":"اختر قائمة ",
@@ -274,8 +284,8 @@ OC.L10N.register(
"Use bigger card view":"استخدام بطاقة عرض أكبر ",
"Show card ID badge":"أعرض شارة رقم البطاقة",
"Show boards in calendar/tasks":"إظهار اللوح في التقويم/المهام",
"Limit board creation to some groups":"قَصْرُ حَقِّ إنشاء الرقعة على بعض المجموعات ",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them.":"المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء رُقَعِهِم الخاصة؛ لكن يمكنهم العمل على الرُّقعِ التي تتمّ مشاركتها معهم.",
"Limit board creation to some groups":"قَصْرُ حَقِّ إنشاء الألواح على بعض المجموعات ",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them.":"المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء ألواحهم الخاصة؛ لكن يمكنهم العمل على الألواح التي تتمّ مشاركتها معهم.",
"Board details":"تفاصيل لوح",
"Edit board":"تعديل اللوح",
"Clone board":"استنسخ اللوح",
@@ -302,7 +312,7 @@ OC.L10N.register(
"Search for {searchQuery} in all boards":"البحث عن {searchQuery} في جميع اللوح",
"No results found":"لا يتم العثور على أي نتائج ",
"This weekend – {timeLocale}":"نهاية هذا الأسبوع – {timeLocale}",
"Deck board {name}\n* Last modified on {lastMod}":"اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
"Deck board {name}\n* Last modified on {lastMod}":"اسم اللوح {name} \n* آخر تعديل له في {lastMod}",
"{stack} in {board}":"{stack} في {board}",
"Click to expand description":"إضعط للتوسّع في الوصف",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments":"* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
"{user} has archived card {card} in list {stack} on board {board}":"{user} قام بأرشفة بطاقة {card} في القائمة {stack} على اللوح {board}",
"You have unarchived card {card} in list {stack} on board {board}":"لديك بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} لديه بطاقة غير مؤرشفة {card} في القائمة {stack} على اللوح {board}",
"You have marked the card {card} as done in list {stack} on board {board}":"لقد قُمت بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
"{user} has marked card {card} as done in list {stack} on board {board}":"قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"منتهية\" في القائمة {stack} على اللوح {board}",
"You have marked the card {card} as undone in list {stack} on board {board}":"لقد قُمت بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوح {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"قام المستخدِم {user} بتمييز البطاقة {card} باعتبارها \"غير منتهية\" في القائمة {stack} على اللوح {board}",
"You have removed the due date of card {card}":"قمت بإزالة التاريخ المحدد من البطاقة {card}",
"{user} has removed the due date of card {card}":"{user} قام بإزالة التاريخ المحدد من البطاقة {card}",
"You have set the due date of card {card} to {after}":"قمت بتعيين التاريخ المحدد للبطاقة {card} إلى {after}",
@@ -81,12 +85,12 @@
"{user} has shared {deck-board} with you.":"{user} قام بمشاركة {deck-board} معك.",
"Deck board":"لوح Deck",
"Owned by %1$s":"يملكها %1$s",
"Deck boards, cards and comments":"الرُّقع و البطاقات و الملاحظات",
"Deck boards, cards and comments":"ألواح الرٌّقعة و البطاقات و الملاحظات",
"From %1$s, in %2$s/%3$s, owned by %4$s":" من %1$s، في %2$s/%3$s، يملكها %4$s",
"Create a new deck card":"إنشاء كَدْسَة بطاقات deck card جديدة",
"Card comments":"تعليقات البطاقة ",
"%s on %s":"%s على %s",
"Deck boards and cards":"الرُّقع و البطاقات",
"Deck boards and cards":"ألواح الرُّقعة و البطاقات",
"No data was provided to create an attachment.":"لا بيانات تم تقديمها لانشاء مرفق",
"{count} comments, {unread} unread":"{عدد} التعليقات، {غير مقروءة} غير مقروءة",
"Edit card title":"تعديل اسم القائمة",
"Card details":"تفاصيل البطاقة",
"Assign to me":"ينسب لي",
"Unassign myself":"إلغاء تعييني ",
"Mark as not done":"تمييز كـ \"غير منتهٍ\"",
"Mark as done":"تمييز كمُنجَز",
"Move card":"حرك البطاقة",
"Card details":"تفاصيل البطاقة",
"Delete card":"حذف البطاقة",
"Move card to another board":"حرك البطاقة الى لوح اخر",
"Select a list":"اختر قائمة ",
@@ -272,8 +282,8 @@
"Use bigger card view":"استخدام بطاقة عرض أكبر ",
"Show card ID badge":"أعرض شارة رقم البطاقة",
"Show boards in calendar/tasks":"إظهار اللوح في التقويم/المهام",
"Limit board creation to some groups":"قَصْرُ حَقِّ إنشاء الرقعة على بعض المجموعات ",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them.":"المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء رُقَعِهِم الخاصة؛ لكن يمكنهم العمل على الرُّقعِ التي تتمّ مشاركتها معهم.",
"Limit board creation to some groups":"قَصْرُ حَقِّ إنشاء الألواح على بعض المجموعات ",
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them.":"المستخدِمون من خارج تلك المجموعات لن يمكنكم إنشاء ألواحهم الخاصة؛ لكن يمكنهم العمل على الألواح التي تتمّ مشاركتها معهم.",
"Board details":"تفاصيل لوح",
"Edit board":"تعديل اللوح",
"Clone board":"استنسخ اللوح",
@@ -300,7 +310,7 @@
"Search for {searchQuery} in all boards":"البحث عن {searchQuery} في جميع اللوح",
"No results found":"لا يتم العثور على أي نتائج ",
"This weekend – {timeLocale}":"نهاية هذا الأسبوع – {timeLocale}",
"Deck board {name}\n* Last modified on {lastMod}":"اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
"Deck board {name}\n* Last modified on {lastMod}":"اسم اللوح {name} \n* آخر تعديل له في {lastMod}",
"{stack} in {board}":"{stack} في {board}",
"Click to expand description":"إضعط للتوسّع في الوصف",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments":"* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
"{user} has archived card {card} in list {stack} on board {board}":"{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have unarchived card {card} in list {stack} on board {board}":"Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"You have marked the card {card} as done in list {stack} on board {board}":"Označili jste kartu {card} jako splněnou v seznamu {stack} na tabuli {board}",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} označil(a) {card} jako splněnou {stack} na tabuli {board}",
"You have marked the card {card} as undone in list {stack} on board {board}":"Zrušili jste označení karty {card} jako splněné v seznamu {stack} na tabuli {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} zrušil(a) označení {card} jako splněné {stack} na tabuli {board}",
"You have removed the due date of card {card}":"Odebrali jste termín u karty {card}",
"{user} has removed the due date of card {card}":"{user} odebral(a) termín u karty {card}",
"You have set the due date of card {card} to {after}":"Nastavili jste termín u karty {card} na {after}",
@@ -159,9 +163,9 @@ OC.L10N.register(
"Details":"Podrobnosti",
"Currently present people":"Nyní přítomní lidé",
"Loading board":"Načítání tabule",
"Board not found":"Tabule nenalezena",
"No lists available":"Nejsou k dispozici žádné seznamy",
"Create a new list to add cards to this board":"Pro přidání karet na tuto tabuli vytvořte nový seznam",
"Board not found":"Tabule nenalezena",
"Sharing":"Sdílení",
"Tags":"Štítky",
"Deleted items":"Smazané položky",
@@ -244,6 +248,9 @@ OC.L10N.register(
"Add due date":"Přidat termín",
"Choose a date":"Zvolit datum",
"Remove due date":"Odstranit termín",
"Completed":"Dokončeno",
"Due at:":"Termín v:",
"Not completed":"Nedokončeno",
"Unarchive card":"Zrušit archivaci karty",
"Archive card":"Archivovat kartu",
"Select Date":"Vybrat datum",
@@ -252,15 +259,18 @@ OC.L10N.register(
"Set due date for this weekend":"Nastavit termín na tento týden",
"Set due date for next week":"Nastavit termín na příští týden",
"Assign a tag to this card…":"Přiřadit této kartě štítek…",
"{user} has archived card {card} in list {stack} on board {board}":"{user} zaarchivoval(a) kartu {card} ve sloupci {stack} na tabuli {board}",
"You have unarchived card {card} in list {stack} on board {board}":"Zrušili jste archivacii karty {card} ve sloupci {stack} na tabuli {board}",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} zrušil(a) archivaci karty {card} ve sloupci {stack} na tabuli {board}",
"You have marked the card {card} as done in list {stack} on board {board}":"Označili jste kartu {card} jako splněnou v seznamu {stack} na tabuli {board}",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} označil(a) {card} jako splněnou {stack} na tabuli {board}",
"You have marked the card {card} as undone in list {stack} on board {board}":"Zrušili jste označení karty {card} jako splněné v seznamu {stack} na tabuli {board}",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} zrušil(a) označení {card} jako splněné {stack} na tabuli {board}",
"You have removed the due date of card {card}":"Odebrali jste termín u karty {card}",
"{user} has removed the due date of card {card}":"{user} odebral(a) termín u karty {card}",
"You have set the due date of card {card} to {after}":"Nastavili jste termín u karty {card} na {after}",
@@ -157,9 +161,9 @@
"Details":"Podrobnosti",
"Currently present people":"Nyní přítomní lidé",
"Loading board":"Načítání tabule",
"Board not found":"Tabule nenalezena",
"No lists available":"Nejsou k dispozici žádné seznamy",
"Create a new list to add cards to this board":"Pro přidání karet na tuto tabuli vytvořte nový seznam",
"Board not found":"Tabule nenalezena",
"Sharing":"Sdílení",
"Tags":"Štítky",
"Deleted items":"Smazané položky",
@@ -242,6 +246,9 @@
"Add due date":"Přidat termín",
"Choose a date":"Zvolit datum",
"Remove due date":"Odstranit termín",
"Completed":"Dokončeno",
"Due at:":"Termín v:",
"Not completed":"Nedokončeno",
"Unarchive card":"Zrušit archivaci karty",
"Archive card":"Archivovat kartu",
"Select Date":"Vybrat datum",
@@ -250,15 +257,18 @@
"Set due date for this weekend":"Nastavit termín na tento týden",
"Set due date for next week":"Nastavit termín na příští týden",
"Assign a tag to this card…":"Přiřadit této kartě štítek…",
"{user} has archived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"You have marked the card {card} as done in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} als erledigt markiert.",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} als erledigt markiert.",
"You have marked the card {card} as undone in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} als nicht erledigt markiert.",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} als nicht erledigt markiert.",
"You have removed the due date of card {card}":"Du hast das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}":"{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}":"Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has archived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"You have marked the card {card} as done in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} als erledigt markiert.",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} als erledigt markiert.",
"You have marked the card {card} as undone in list {stack} on board {board}":"Du hast die Karte {card} in der Liste {stack} auf dem Board {board} als nicht erledigt markiert.",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} als nicht erledigt markiert.",
"You have removed the due date of card {card}":"Du hast das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}":"{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}":"Du hast das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
"{user} has archived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"You have marked the card {card} as done in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert.",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
"You have marked the card {card} as undone in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
"You have removed the due date of card {card}":"Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}":"{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}":"Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
@@ -159,9 +163,9 @@ OC.L10N.register(
"Details":"Details",
"Currently present people":"Aktuell Anwesende",
"Loading board":"Lade Board",
"Board not found":"Board nicht gefunden",
"No lists available":"Keine Listen verfügbar",
"Create a new list to add cards to this board":"Erstellen Sie eine neue Liste, um diesem Board Karten hinzuzufügen",
"Board not found":"Board nicht gefunden",
"Sharing":"Teilen",
"Tags":"Schlagworte",
"Deleted items":"Gelöschte Objekte",
@@ -244,6 +248,9 @@ OC.L10N.register(
"Add due date":"Fälligkeitsdatum hinzufügen",
"Choose a date":"Datum auswählen",
"Remove due date":"Fälligkeitsdatum löschen",
"Completed":"Fertiggestellt",
"Due at:":"Fallig am:",
"Not completed":"Nicht fertiggestellt",
"Unarchive card":"Karte dearchivieren",
"Archive card":"Karte archivieren",
"Select Date":"Datum auswählen",
@@ -252,15 +259,18 @@ OC.L10N.register(
"Set due date for this weekend":"Fälligkeitsdatum auf kommendes Wochenende setzen",
"Set due date for next week":"Fälligkeitsdatum auf nächste Woche setzen",
"Assign a tag to this card…":"Dieser Karte ein Schlagwort zuweisen…",
"Create a new tag:":"Neues Schlagwort erstellen:",
"{user} has archived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
"You have unarchived card {card} in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"{user} has unarchived card {card} in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
"You have marked the card {card} as done in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert.",
"{user} has marked card {card} as done in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
"You have marked the card {card} as undone in list {stack} on board {board}":"Sie haben die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
"{user} has marked the card {card} as undone in list {stack} on board {board}":"{user} hat die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
"You have removed the due date of card {card}":"Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
"{user} has removed the due date of card {card}":"{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
"You have set the due date of card {card} to {after}":"Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
@@ -157,9 +161,9 @@
"Details":"Details",
"Currently present people":"Aktuell Anwesende",
"Loading board":"Lade Board",
"Board not found":"Board nicht gefunden",
"No lists available":"Keine Listen verfügbar",
"Create a new list to add cards to this board":"Erstellen Sie eine neue Liste, um diesem Board Karten hinzuzufügen",
"Board not found":"Board nicht gefunden",
"Sharing":"Teilen",
"Tags":"Schlagworte",
"Deleted items":"Gelöschte Objekte",
@@ -242,6 +246,9 @@
"Add due date":"Fälligkeitsdatum hinzufügen",
"Choose a date":"Datum auswählen",
"Remove due date":"Fälligkeitsdatum löschen",
"Completed":"Fertiggestellt",
"Due at:":"Fallig am:",
"Not completed":"Nicht fertiggestellt",
"Unarchive card":"Karte dearchivieren",
"Archive card":"Karte archivieren",
"Select Date":"Datum auswählen",
@@ -250,15 +257,18 @@
"Set due date for this weekend":"Fälligkeitsdatum auf kommendes Wochenende setzen",
"Set due date for next week":"Fälligkeitsdatum auf nächste Woche setzen",
"Assign a tag to this card…":"Dieser Karte ein Schlagwort zuweisen…",
"Create a new tag:":"Neues Schlagwort erstellen:",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.