Compare commits

...
624 Commits
Author SHA1 Message Date
Lauri Ojansivu be8f00ab8a v2.03 2019-01-25 22:18:39 +02:00
Lauri Ojansivu ddedb8a48b Update translations (de). 2019-01-25 22:14:09 +02:00
Lauri Ojansivu ba392362ee Update ChangeLog for all that huge amount of contributions from bentiss. 2019-01-25 22:09:40 +02:00
Lauri Ojansivu 8fbd47e199 Merge pull request #2130 from bentiss/color-lists
lists-color: only colorize the bottom border
2019-01-25 20:02:26 +02:00
Lauri Ojansivu 6aaf0c812a Update translations. 2019-01-25 19:25:46 +02:00
Benjamin Tissoires 33977b2282 lists-color: only colorize the bottom border
And make the background clearer to visually separate the header from
the list of cards
2019-01-25 18:13:37 +01:00
Lauri Ojansivu 37f70bdf0f Merge branch 'devel' into edge 2019-01-25 19:13:08 +02:00
Lauri Ojansivu 5d6203f5f9 Merge pull request #2128 from bentiss/color-lists
Color lists
2019-01-25 19:05:44 +02:00
Lauri Ojansivu 082aabc735 Merge pull request #2127 from bentiss/fix-set-member
api: fix set_board_member_permission
2019-01-25 19:05:26 +02:00
Lauri Ojansivu ba15526516 Merge pull request #2126 from bentiss/color-swimlanes
Color for swimlanes
2019-01-25 19:05:09 +02:00
Lauri Ojansivu 4a2576fbc2 Merge pull request #2121 from bentiss/color
Color picker in IFTTT
2019-01-25 19:04:45 +02:00
Benjamin Tissoires 97d95b4bcb ui: lists: make sure all lists boxes are the same height
When `Show card count` is enabled, the lists with the card counts have
two lines of text while the lists without have only one.

This results in the box around the list headers are not of the same size
and this is visible when setting a color to the list.
2019-01-25 15:58:52 +01:00
Benjamin Tissoires d0a9d8c581 colors: add per list color
Hamburger menu only.

Note that I am definitively not responsible for the resulting Christmas
tree.

fixes #328
2019-01-25 15:56:40 +01:00
Benjamin Tissoires 78c779faaf client: lists headers: use padding instead of margin
No visual changes but allows to set a background color to the list header.
2019-01-25 14:25:28 +01:00
Benjamin Tissoires 8d81aca439 api: fix set_board_member_permission
If the data is passed as a boolean, through json, data.toLowerCase()
raises an error.

Also define query which we are returning in case of success.
2019-01-25 14:15:08 +01:00
Benjamin Tissoires 6c3dbc3c6f api: new_card: add the card at the end of the list
If we keep the `0` value, the card might be inserted in the middle of the
list, making it hard to find it later on.

Always append the card at the end of the list by setting a sort value
based on the number of cards in the list.
2019-01-25 12:44:27 +01:00
Benjamin Tissoires b5411841cf api: fix the sort field when inserting a swimlane or a list
This has the side effect of always inserting the element at the end.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 5c6a725712 Make sure Swimlanes and Lists have a populated sort field
When moving around the swimlanes or the lists, if one element has a sort
with a null value, the computation of the new sort value is aborted,
meaning that there are glitches in the UI.

This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 03efeaeb1a Add colors to swimlanes
fixes #1688
2019-01-25 11:04:40 +01:00
Benjamin Tissoires c075187088 swimlane: insert the new swimlane after the one we clicked on 2019-01-24 20:52:03 +01:00
Benjamin Tissoires 416b17062e Remove the 'Add Swimlane' entry and replace it by a plus sign
Still need to create the swimlane right after the one that has been
created
2019-01-24 20:51:38 +01:00
Benjamin Tissoires dd88eb4cc1 swimlane-view: have the swimlane header horizontal
This allows to use the header as a separator between swimlanes.

This will be most useful when we can set the background color of these
headers.
2019-01-24 20:50:42 +01:00
Benjamin Tissoires 5fa0821e07 card colors: remove unused variables 2019-01-24 20:50:42 +01:00
Benjamin Tissoires 6e9bad5772 IFTTT: card colors: add an actual white entry
To unset the color through the IFTTT, we need a white entry.
However, we do not want to show the white enry in the hamburger
`Set Color` entry.

We can also give the `white` capability to the API, it won't hurt
and be more straightforward.
2019-01-24 16:51:06 +01:00
Benjamin Tissoires 5769d438a0 rules: set card color: use the color picker 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 8a48ff96ef set card colors: properly set the title of the popups 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 0782c97d4f card colors: force overwrite of text color
This allows to show checks on the color with the correct color instead
of plain white.
2019-01-24 09:32:38 +01:00
Lauri Ojansivu 542cc75dc4 Update translations (tr). 2019-01-22 19:27:32 +02:00
Lauri Ojansivu 1b445ad789 v2.02 2019-01-22 17:31:57 +02:00
Lauri Ojansivu 9baed4256a Update translations (he). 2019-01-22 17:28:19 +02:00
Lauri Ojansivu 2b4df7e8c7 Update changelog. 2019-01-22 17:26:48 +02:00
Lauri Ojansivu 6e28dec712 Merge pull request #2119 from bentiss/fix-color-translation
Fix: Translate and add colors to IFTTT Rules dropdown."
2019-01-22 16:45:29 +02:00
Benjamin Tissoires ba9f0ca672 Fix: Translate and add colors to IFTTT Rules dropdown."
This fixes commit 44e4df2492.

When the label has a name, not setting `translatedname` results in a
blank item in the IFTTT label trigger.
2019-01-22 15:40:54 +01:00
Lauri Ojansivu 7261ccdc90 Update translations. 2019-01-22 16:32:43 +02:00
Lauri Ojansivu 6fbadbe5bc Merge pull request #2118 from bentiss/export
Allow to call export from the API
2019-01-22 16:29:42 +02:00
Benjamin Tissoires 26d7ba72aa api: export board: allow authentication through generic authentication
This allows to retrieve the full export of the board from the API.
When the board is big, retrieving individual cards is heavy for both
the server and the number of requests.

Allowing the API to directly call on export and then treat the data
makes the whole process smoother.
2019-01-22 15:14:01 +01:00
Lauri Ojansivu 44e4df2492 - Translate and add colors to IFTTT Rules dropdown.
Thanks to xet7 !
2019-01-22 15:22:31 +02:00
Lauri Ojansivu d8482b533a Merge pull request #2117 from bentiss/color
Set the card color with the color picker
2019-01-22 14:57:00 +02:00
Benjamin Tissoires 2082480ddd Set the card color with the color picker
When triggered from the hamburger
2019-01-22 13:45:08 +01:00
Lauri Ojansivu e8c4e394fd Update translations. 2019-01-22 14:01:07 +02:00
Lauri Ojansivu 0c5052ebae Merge pull request #2116 from bentiss/color
Add per card color
2019-01-22 13:02:14 +02:00
Lauri Ojansivu d3b2ae1975 Update translations. 2019-01-22 12:12:18 +02:00
Benjamin Tissoires f4f0f489eb add action: set card color 2019-01-22 11:10:29 +01:00
Benjamin Tissoires 3368ebf067 color: add option in hamburger to change the card color
Currently only dropdown, no palette

Fixes: #428
2019-01-22 11:10:29 +01:00
Benjamin Tissoires b0ac10d94a Add the ability to change the card background
Currently the only way to set it is via the REST API
2019-01-22 11:10:29 +01:00
Lauri Ojansivu c87a8b86ae - Added missing translation for 'days'
Thanks to Chartman123 !

Closes #2114
2019-01-21 16:26:55 +02:00
Lauri Ojansivu d5d71d7097 Update upcase/lowercase. 2019-01-20 00:53:59 +02:00
Lauri Ojansivu c960a8b909 - [OpenAPI and generating of REST API Docs](https://github.com/wekan/wekan/pull/1965).
Thanks to bentiss.
2019-01-19 21:14:32 +02:00
Lauri Ojansivu 3257f78d24 Merge branch 'bentiss-openapi' into devel 2019-01-19 21:09:42 +02:00
Lauri Ojansivu a9133bf933 Merge branch 'openapi' of https://github.com/bentiss/wekan into bentiss-openapi 2019-01-19 20:55:14 +02:00
Lauri Ojansivu 8e8147b5ac - Fix License to 2019. https://github.com/wekan/wekan/pull/2112
Thanks to ajRiverav !
2019-01-19 20:45:43 +02:00
Lauri Ojansivu 711f4de3d7 Merge pull request #2112 from ajRiverav/devel
update license to year 2019
2019-01-19 20:43:42 +02:00
Lauri Ojansivu 68998e062e Update translations. 2019-01-19 20:42:41 +02:00
AJ Rivera f40d1f6bd5 update license to year 2019 2019-01-18 17:25:48 -04:00
Benjamin Tissoires 048c3cd14d snap: also generate the html doc of the REST API
Same for snap: embed the documentation of the REST API
in the snap.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires 08ca353205 openapi: generate the HTML documentation too and embed it in the image
Aligning with the requirement to run the container without
external resources: embed the documentation of the REST API
directly in the Docker image.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires c83cdc9335 Add openapi in snaps
Same thing than in the Dockerfile, snaps need
to embed the current openapi yaml file.
2019-01-18 17:07:18 +01:00
Benjamin Tissoires e91e3c076d snapcraft add nodejs and npm as build dependencies
When pulling the docker container snapcore/snapcraft
to build the snap, those 2 packages are not present
by default leading to a failure in the snap creation.

Note: it is good to call `apt-get update` before
`snapcraft` or the build will fail.
2019-01-18 17:05:41 +01:00
Benjamin Tissoires 8be7eec2ca openapi: make the code python 3.5 compatible
It is common to use Ubuntu 16.04 to build snaps. For example,
the official docker container to build snaps is using this old
distribution.

However, Ubuntu 16.04 ships Python 3.5.X which is not compatible
with the f-strings in generate_openapi.py. This is sad, because
we need to use the `.format()` syntax to make it compatible.
2019-01-18 17:03:12 +01:00
Benjamin Tissoires acc4493517 Generate the OpenAPI in the Dockerfile
When we build the docker container, we need to generate the openapi
description in it so the geenrated API actually matches the code
the container is running.
2019-01-18 17:03:05 +01:00
Benjamin Tissoires ff467402c0 RESTAPI: Add some JSDoc
So we can have a decent REST API documentation generated.
2019-01-18 17:02:56 +01:00
Benjamin Tissoires 49d3eb5a3f Add OpenAPI description of the REST API
The API is generated by a custom script that parses the models directory.
Once the API is generated, tools like https://editor.swagger.io/ or
Python bravado can parse the file and generate a language friendly API.

Note that the tool generate an OpenAPI 2.0 version because bravado
doesn't handle OpenAPI 3.0.

The script also parses the JSDoc with a custom parser to allow
customization of the description of the fields.
2019-01-18 17:01:11 +01:00
Benjamin Tissoires 889aa6d652 Revert "models: boards: add PUT members entry point"
This reverts commit f61942e5cb.

Adding a member is actually already handled by
POST', '/api/boards/:boardId/members/:userId/add'

So this function is purely duplicated.

Not to mention that the '/add' one allows to set permissions
so this one in this commit is less interesting.
2019-01-18 17:01:03 +01:00
Lauri Ojansivu 78e0457843 Update translations (ca). 2019-01-15 15:47:46 +02:00
Lauri Ojansivu 7f568faef6 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:12:57 +02:00
Lauri Ojansivu be045f3156 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:10:20 +02:00
Lauri Ojansivu 3b5e81d514 Update translations. 2019-01-11 16:34:02 +02:00
Lauri Ojansivu 346bdf2ca8 v2.01 2019-01-06 13:29:04 +02:00
Lauri Ojansivu 501289786c Update translations (cs and he). 2019-01-06 13:26:10 +02:00
Lauri Ojansivu 24ffe223be v2.00 2019-01-04 20:07:22 +02:00
Lauri Ojansivu 32c561d78e Update translations. 2019-01-04 20:03:16 +02:00
Lauri Ojansivu ff65b37336 v1.99 2019-01-04 12:17:05 +02:00
Lauri Ojansivu 3f698ca012 Update translations. 2019-01-04 12:07:03 +02:00
Lauri Ojansivu 785bc2556e - Merge duplicate translation.
Thanks to xet7 !
2019-01-04 11:26:38 +02:00
Lauri Ojansivu e198282b4d - Remove duplicate translation.
Thanks to xet7 !
2019-01-04 11:18:26 +02:00
Lauri Ojansivu 24e59c378b Merge branch 'edge' into devel 2019-01-04 11:14:18 +02:00
Lauri Ojansivu c1b4aae573 Merge branch 'Angtrim-feature-rules' into devel 2019-01-04 11:12:54 +02:00
Lauri Ojansivu f5339ef97f - Fix lint errors.
Thanks to xet7 !
2019-01-04 11:00:33 +02:00
Lauri Ojansivu 2b53fae16f Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2019-01-04 09:23:54 +02:00
Lauri Ojansivu 1d3466c7a0 Update translations (pt-BR). 2019-01-04 09:05:57 +02:00
Angelo Gallarello 4d8b2029d2 Fixed errors 2019-01-02 22:51:00 +01:00
Angelo Gallarello 8ad0da2109 Added create card action 2019-01-02 22:32:08 +01:00
Angelo Gallarello 12827ef0a6 Added notes 2019-01-02 15:52:58 +01:00
Angelo Gallarello 4c399a41f7 Add action: create checklist with items 2019-01-02 15:42:10 +01:00
Angelo Gallarello 25968a35cc Finished triggers improvements 2019-01-02 14:45:45 +01:00
Lauri Ojansivu 548d095223 - Add find.sh bash script that ignores extra directories when searching.
xet7 uses this a lot when developing.

Thanks to xet7 !
2019-01-02 13:22:21 +02:00
Lauri Ojansivu 1683bcb3e5 v1.98 2019-01-01 14:08:44 +02:00
Lauri Ojansivu 991843acb0 - [Mobile fixes](https://github.com/wekan/wekan/pull/2084), thanks to hupptechnologies:
- Move home button / avatar bar from bottom to top. So at top first is home button / avatar, then others.
  - When clicking Move Card, go to correct page position. Currently it's at empty page position, and there is
    need to scroll page up to see Move Card options. It should work similarly like Copy Card, that is visible.
  - Also check that other buttons go to visible page.
2019-01-01 14:03:24 +02:00
Lauri Ojansivu 8b85437b6b Merge branch 'hupptechnologies-wekan-mobile-use-issue' into devel 2019-01-01 13:59:34 +02:00
Lauri Ojansivu 6259f0de70 - Add removed packages back.
Thanks to xet7 !
2019-01-01 13:42:13 +02:00
Lauri Ojansivu d86bc1d84d Merge branch 'wekan-mobile-use-issue' of https://github.com/hupptechnologies/wekan into hupptechnologies-wekan-mobile-use-issue 2019-01-01 13:41:26 +02:00
Lauri Ojansivu 88bdb0815d Update translations (cs). 2019-01-01 13:40:22 +02:00
hupptechnologies 97f64fe5e6 Issue: Hard to use Wekan on mobile because of UI/UX issues #953
Resolved #953
2019-01-01 16:35:18 +05:30
Angelo Gallarello 196fef3a1b Added popup 2018-12-31 00:45:11 +01:00
Angelo Gallarello a2d756074f Added swimlane trigger 2018-12-30 22:08:34 +01:00
Angelo Gallarello b2f23d619d Triggers by username, updated desc 2018-12-29 17:36:57 +01:00
Angelo Gallarello 9d1d66b0f5 Added triggers by username 2018-12-29 16:59:50 +01:00
Lauri Ojansivu c61e44d55b - Add optional Nginx reverse proxy config to docker-compose.yml and nginx directory.
Thanks to MyTheValentinus !
2018-12-28 17:26:30 +02:00
Lauri Ojansivu 76c5c283b9 - docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet.
Thanks to xet7 !
2018-12-27 00:35:39 +02:00
Lauri Ojansivu 2d88afb77e - docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet.
Thanks to xet7 !
2018-12-26 23:57:00 +02:00
Lauri Ojansivu 7fd09761cb v1.97 2018-12-26 22:49:14 +02:00
Lauri Ojansivu cb53c53c2b - Use Node 8.15.0 and MongoDB 3.2.22.
- Stacksmith: back to Meteor 1.6.x based Wekan, because Meteor 1.8.x based is currently broken.

Thanks to xet7 !
2018-12-26 22:32:25 +02:00
Lauri Ojansivu 77ff6349f6 - Use Node 8.15.0 and MongoDB 3.2.22.
- Stacksmith: back to Meteor 1.6.x based Wekan, because Meteor 1.8.x based is currently broken.

Thanks to xet7 !
2018-12-26 22:29:04 +02:00
Lauri Ojansivu 879ad4001d Update translations (he). 2018-12-26 11:40:31 +02:00
Lauri Ojansivu e1436ab964 Update rebuild script. 2018-12-24 23:54:57 +02:00
Lauri Ojansivu 007bea0a4b Update rebuild script. 2018-12-24 23:50:43 +02:00
Lauri Ojansivu 67b76558fc v1.96 2018-12-24 18:26:33 +02:00
Lauri Ojansivu f60429efdf - Comment out docker build from source part of docker-compose.yml
Thanks to xet7 !
2018-12-24 18:24:32 +02:00
Lauri Ojansivu f140e20c6f - Revert "Improve authentication" and "Default Authentication Method"
to make login work again.
- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
  Most likely Meteor 1.8.x version is still broken.

Thanks to xet7 !
2018-12-24 18:22:30 +02:00
Lauri Ojansivu c502ab9500 - Revert "Improve authentication" and "Default Authentication Method"
to make login work again.
- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
  Most likely Meteor 1.8.x version is still broken.

Thanks to xet7 !
2018-12-24 18:18:41 +02:00
Lauri Ojansivu 425ae55422 Update translations (fa). 2018-12-24 16:41:36 +02:00
Lauri Ojansivu e9006a234b - Fix docker-compose.yml to use Meteor 1.6.x based Wekan,
because currently Meteor 1.8.x based version is broken.

Thanks to xet7 !
2018-12-24 16:29:53 +02:00
Lauri Ojansivu ef6aa4e415 - Move wekan-postgresql back to https://github.com/wekan/wekan-postgresql
because there is many differences in database settings.

Thanks to xet7 !
2018-12-22 21:40:34 +02:00
Lauri Ojansivu 1901c3c798 Fix typo. 2018-12-22 19:04:43 +02:00
Lauri Ojansivu 6cb046f29e Update translations (de). 2018-12-22 18:57:23 +02:00
Lauri Ojansivu e7e67e300b - [Combine all docker-compose.yml files](https://github.com/wekan/wekan/commit/3f948ba49ba7266c436ff138716bdcae9e879903). Thanks to xet7. 2018-12-22 18:46:45 +02:00
Lauri Ojansivu 3f948ba49b - Combine all docker-compose.yml files.
Thanks to xet7 !
2018-12-22 18:44:08 +02:00
Lauri Ojansivu 96f33e4052 v1.95 2018-12-21 22:23:12 +02:00
Lauri Ojansivu 68d60f4f64 - Upgrade to node v8.14.1
Thanks to xet7 !
2018-12-21 22:12:54 +02:00
Lauri Ojansivu f7153da83d - Upgrade to node v8.14.1
Thanks to xet7 !
2018-12-21 22:11:43 +02:00
Lauri Ojansivu 16d53897c7 - [Drag handles and long press on mobile when using desktop mode of mobile
browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies.
2018-12-21 21:56:30 +02:00
Lauri Ojansivu 32d405bca4 Merge branch 'hupptechnologies-ui-feature-drag-handler' into devel 2018-12-21 21:52:42 +02:00
Lauri Ojansivu 2f747fc09d - Added removed packages back.
Thanks to xet7 !
2018-12-21 21:10:00 +02:00
Lauri Ojansivu 32d5a1d3f7 Merge branch 'ui-feature-drag-handler' of https://github.com/hupptechnologies/wekan into hupptechnologies-ui-feature-drag-handler 2018-12-21 21:09:31 +02:00
Lauri Ojansivu db44b8ea54 Merge branch 'Akuket-devel' into devel 2018-12-21 20:53:31 +02:00
Lauri Ojansivu 1f512c8ba1 - [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown,
and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or
  `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31
2018-12-21 20:52:48 +02:00
Lauri Ojansivu 417dc9dc42 Fix lint errors. 2018-12-21 20:36:26 +02:00
Lauri Ojansivu bd66ea8acc Update translations (ru). 2018-12-21 20:16:35 +02:00
Lauri Ojansivu dba9d13b00 Update translations. 2018-12-21 20:11:32 +02:00
Lauri Ojansivu 1e034a794f - Update translated text. 2018-12-21 19:47:34 +02:00
Lauri Ojansivu a261c66f34 Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-12-21 19:34:32 +02:00
hupptechnologies b94bd73d33 Uncommect packages 2018-12-20 14:43:21 +05:30
hupptechnologies a9be6b17b9 Issue : UI feature suggestion: drag handles and long press #1772
Resolved #1772
2018-12-20 14:42:46 +05:30
Lauri Ojansivu ac6f8e8551 - Output Meteor 1.8.x version in build log.
Thanks to xet7 !
2018-12-19 19:55:30 +02:00
Lauri Ojansivu 23fb2bfc7f - Use meteor 1.8.x, because Stacksmith uses MongoDB 4.0.3.
Thanks to xet7 !
2018-12-19 19:42:40 +02:00
guillaume ff1c3722a8 Patch currentBoard doesn't exist when logout 2018-12-19 17:22:16 +01:00
guillaume 1712368f6a Improves UI for ldap error messages 2018-12-19 17:21:27 +01:00
guillaume d7529bf6b5 Add help message for the new env var in snap 2018-12-19 13:53:05 +01:00
guillaume 6b145bb3cc Add a new env var to select the default authentication method 2018-12-19 13:42:51 +01:00
guillaume 72e905675d Removes the dropdown for the authentication method 2018-12-19 13:41:21 +01:00
Lauri Ojansivu 2fbcf7e9b6 v1.94 2018-12-18 20:22:11 +02:00
Lauri Ojansivu 0ade4dbf00 - Use wekan/wekan repo.
Thanks to xet7 !
2018-12-18 20:05:10 +02:00
Lauri Ojansivu d70ad9d733 - Comment out extra node version.
Thanks to xet7 !
2018-12-18 19:42:04 +02:00
Lauri Ojansivu 51a19878dd Merge pull request #2064 from j-fuentes/devel
Add Bitnami Stacksmith
2018-12-18 19:40:44 +02:00
Lauri Ojansivu ddca6a1ad8 Update translations. 2018-12-18 19:27:23 +02:00
Jose Fuentes cac74122f2 Wait for DB on boot 2018-12-17 13:09:32 +01:00
Lauri Ojansivu 991b2b9721 Update translations (he). 2018-12-17 01:15:44 +02:00
Lauri Ojansivu b6663acf91 Update translations. 2018-12-16 23:48:43 +02:00
Lauri Ojansivu 7f74e72cea - Trying to get custom HTML working as described at
https://guide.meteor.com/v1.3/blaze.html#rendering-html
  Still does not work yet.

Thanks to xet7 !
2018-12-16 23:46:04 +02:00
Lauri Ojansivu bd1df642fa - Maybe custom html should be here. But it still does not work yet.
Thanks to xet7 !
2018-12-16 22:50:23 +02:00
Lauri Ojansivu 575b0241e4 Update translations. 2018-12-16 22:27:45 +02:00
Lauri Ojansivu f1ed6304a4 - Admin Panel / Layout / Custom HTML after <body> start, and Custom HTML before </body> end.
In progress, does not work yet.

Thanks to xet7 !
2018-12-16 22:21:16 +02:00
Lauri Ojansivu a42d9871bd v1.93 2018-12-16 19:09:16 +02:00
Lauri Ojansivu 7a2ea7cace Fix typo. 2018-12-16 19:03:49 +02:00
Lauri Ojansivu fb39811d95 Update translations. 2018-12-16 19:02:09 +02:00
Lauri Ojansivu 78e88f4c42 - Remove Wekan_version translation string.
Thanks to xet7 !
2018-12-16 18:36:50 +02:00
Lauri Ojansivu db63af5f7a - In tranlations, only show name "Wekan" in Admin Panel Wekan version.
Elsewhere use general descriptions for whitelabeling.

Thanks to xet7 !
2018-12-16 18:27:47 +02:00
Lauri Ojansivu c3e04da796 - Update translations (ru). 2018-12-16 18:14:18 +02:00
Lauri Ojansivu 2a59043ef1 v1.92 2018-12-16 11:58:44 +02:00
Lauri Ojansivu 3d76a35a68 - Fix [favicon paths for non-suburl cases](https://github.com/wekan/wekan/commit/c1733fc89c4c73a1ab3f4054d0a9ebff7741a804).
Thanks to xet7 !

Related #1692
2018-12-16 11:45:12 +02:00
Lauri Ojansivu c1733fc89c - Fix favicon paths for non-suburl cases.
Thanks to xet7 !

Related #1692
2018-12-16 11:41:10 +02:00
Lauri Ojansivu 388c1bec45 - Fix [Card scrollbar ignores mousewheel](https://github.com/wekan/wekan-scrollbar/commit/94a40da51627c6322afca50a5b1f4aa55c7ce7bf).
Thanks to rinnaz and xet7 !

Closes #2058
2018-12-16 11:14:16 +02:00
Lauri Ojansivu a2869e9d2a - Fix [Popup class declares member name _current but use current instead](https://github.com/wekan/wekan/issues/2059).
Thanks to peishaofeng !

Closes #2059
2018-12-16 11:10:06 +02:00
Lauri Ojansivu 3e5ff42474 - Fix [Popup class declares member name _current but use current instead](https://github.com/wekan/wekan/issues/2059).
Thanks to peishaofeng !

Closes #2059
2018-12-16 11:06:29 +02:00
Lauri Ojansivu 9366eaf374 - Fix typo.
Thanks to xet7 !
2018-12-16 00:42:13 +02:00
Lauri Ojansivu cb4c93a632 v1.91 2018-12-15 22:44:25 +02:00
Lauri Ojansivu adaffd7189 - [Add back mquandalle:perfect-scrollbar package so that Firefox and Chrome
stop complaning in browser dev tools console](https://github.com/wekan/wekan/issues/2057).

Thanks uusijani and xet7 !

Closes #2057
2018-12-15 22:41:10 +02:00
Lauri Ojansivu 821dc22e80 - Add back mquandalle:perfect-scrollbar package so that Firefox and Chrome
stop complaning in browser dev tools console.

Thanks to uusijani and xet7 !

Closes #2057
2018-12-15 22:36:15 +02:00
Lauri Ojansivu b0a71e96cc v1.90 2018-12-15 22:01:57 +02:00
Lauri Ojansivu 40e156992a - [Remove not working duplicate saveMailServerInfo](https://github.com/wekan/wekan/commit/ab031d9da134aa13490a26dbe97ad2d7d01d534a),
to remove error from browser dev tools console.

Thanks to xet7 !
2018-12-15 21:59:29 +02:00
Lauri Ojansivu ab031d9da1 - Remove not working duplicate saveMailServerInfo, to remove
error from browser dev tools console.

Thanks to xet7 !
2018-12-15 21:55:20 +02:00
Lauri Ojansivu 209a76c5ce v1.89 2018-12-15 20:52:11 +02:00
Lauri Ojansivu 4bd74b5817 - Admin Panel / Layout / Custom Product Name [now changes webpage title](https://github.com/wekan/wekan/commit/dbb1a86ca377e551063cc04c5189fad4aa9148c0).
Related #1196

Thanks to xet7 !
2018-12-15 20:46:47 +02:00
Lauri Ojansivu dbb1a86ca3 - Admin Panel / Layout / Custom Product Name now changes webpage title.
Thanks to xet7 !

Related #1196
2018-12-15 20:39:01 +02:00
Lauri Ojansivu c066883dbd v1.88 2018-12-14 23:31:17 +02:00
Lauri Ojansivu 0b6b6dc7fd - Fix: [Scrollbar used](https://github.com/wekan/wekan/issues/2056) [remote file from CDN](https://github.com/MaazAli/Meteor-Malihu-Custom-Scrollbar/blob/master/jquery.mCustomScrollbar.js#L50),
so forked package to https://github.com/wekan/wekan-scrollbar and included
  non-minified file locally to Wekan, so that using scrollbar works without direct connection
  to Internet. Wekan should not load any external files by default, as was case before
  new scrollbar, and is again now [after this fix](https://github.com/wekan/wekan/commit/c546464d9f56117a8bf580512cd62fc1102559c3).

Thanks to xet7 !

Closes #2056
2018-12-14 23:27:22 +02:00
Lauri Ojansivu c546464d9f - Because scrollbar uses [remote file from CDN](https://github.com/MaazAli/Meteor-Malihu-Custom-Scrollbar/blob/master/jquery.mCustomScrollbar.js#L50),
fork package to https://github.com/wekan/wekan-scrollbar and include
  non-minified file locally to Wekan, so that using scrollbar works without direct connection
  to Internet. Wekan should not load any external files by default, as was case before
  new scrollbar, and is again now after this fix.

Closes #2056
2018-12-14 23:13:15 +02:00
Jose Fuentes 7b3e2c58e2 Pipefail error 2018-12-14 11:06:00 +01:00
Jose Fuentes d6127082e9 Add stacksmith scripts 2018-12-13 20:27:35 +01:00
Lauri Ojansivu 67a5fdaf96 v1.87 2018-12-13 20:13:50 +02:00
Lauri Ojansivu af9156b18a Update translations (es). 2018-12-13 20:12:03 +02:00
Lauri Ojansivu 7af20fd2d9 - Fix Reference error.
Thanks to Akuket !
2018-12-13 20:10:00 +02:00
Lauri Ojansivu 2a5a428bc0 - Fix Reference error.
Thanks to Akuket !
2018-12-13 20:07:55 +02:00
Lauri Ojansivu 4b7d47465a v1.86 2018-12-13 14:40:16 +02:00
Lauri Ojansivu 5f4e2d8e06 - Fix [Cannot login with new LDAP account when auto-registration disabled (request invitation code)](https://github.com/wekan/wekan-ldap/issues/29);
- Fix [Unable to create new account from LDAP](https://github.com/wekan/wekan-ldap/issues/32).

Thanks to Akuket !
2018-12-13 14:34:11 +02:00
Lauri Ojansivu f8ef8507b5 - Fix [Cannot login with new LDAP account when auto-registration disabled (request invitation code)](https://github.com/wekan/wekan-ldap/issues/29);
- Fix [Unable to create new account from LDAP](https://github.com/wekan/wekan-ldap/issues/32).

Thanks to Akuket !

Closes wekan/wekan-ldap#29,
closes wekan/wekan-ldap#32
2018-12-13 14:27:34 +02:00
Lauri Ojansivu 2ae143e6da Update translations. 2018-12-13 14:10:55 +02:00
Lauri Ojansivu 38e8f52293 Add missing text about bugs fixes. 2018-12-09 01:44:08 +02:00
Lauri Ojansivu b143fc9297 v1.85 2018-12-09 00:49:07 +02:00
Lauri Ojansivu dd10f78401 Merge branch 'hupptechnologies-scrollbar-closes-card-chrome' into devel 2018-12-09 00:44:47 +02:00
Lauri Ojansivu 90208b774a - Fix [Clicking the scrollbar closes the card on Chrome](https://github.com/wekan/wekan/issues/1404)
by changing [mquandalle:perfect-scrollbar to malihu-jquery-custom-scrollbar](https://github.com/wekan/wekan/pull/2050).
  that works also when clicking scrollbar in Chrome. Also added back required packages that were removed in PR.

Thanks to hupptechnologies and xet7 !
2018-12-09 00:43:21 +02:00
Lauri Ojansivu bc35d9fe1a - Fix [Clicking the scrollbar closes the card on Chrome](https://github.com/wekan/wekan/issues/1404)
by changing [mquandalle:perfect-scrollbar to malihu-jquery-custom-scrollbar](https://github.com/wekan/wekan/pull/2050).
  that works also when clicking scrollbar in Chrome. Also added back required packages that were removed in PR.

Thanks to hupptechnologies and xet7 !

Closes #1404
2018-12-09 00:33:36 +02:00
Lauri Ojansivu 472d637c9f Merge branch 'scrollbar-closes-card-chrome' of https://github.com/hupptechnologies/wekan into hupptechnologies-scrollbar-closes-card-chrome 2018-12-09 00:21:35 +02:00
Lauri Ojansivu 20c86613a7 Update translations (ru). 2018-12-09 00:16:48 +02:00
hupptechnologies 5ac69ed7de Fix lineter issue 2018-12-08 18:05:59 +05:30
hupptechnologies 0620fe5e11 Issue : Clicking the scrollbar closes the card on Chrome #1404
Resolved #1404
2018-12-08 17:53:26 +05:30
hupptechnologies 44a819226f Merge branch 'devel' into edge 2018-12-08 17:20:56 +05:30
Lauri Ojansivu cf2cf7898a - Fix lint warning.
Thanks to xet7 !
2018-12-07 06:18:46 +02:00
Lauri Ojansivu ee212b69a9 v1.84 2018-12-07 05:20:06 +02:00
Lauri Ojansivu 87d91560f8 Update translations (ru). 2018-12-07 05:11:08 +02:00
Lauri Ojansivu bccca00aaf - Fix 2/8: IFTTT Rule action/trigger ["Remove all members from the card"](https://github.com/wekan/wekan/issues/1972).
Thanks to BurakTuran9 !
2018-12-07 05:07:22 +02:00
Lauri Ojansivu d6e36ed50a - Fix: IFTTT Rule "Remove all members from the card" doesn't work.
Thanks to BurakTuran9 !

Related #1972
2018-12-07 04:57:51 +02:00
Lauri Ojansivu 83f7fa768d v1.83 2018-12-06 01:59:37 +02:00
Lauri Ojansivu 2d49006aee - Fix IFTTT Rule action/trigger part 1 of 7: [When a checklist is completed](https://github.com/wekan/wekan/issues/1972).
And partial incomplete fix to when all of checklist is set as uncompleted. Help in fixing welcome.

Thanks to BurakTuran9 and xet7 !

Related #1972
2018-12-06 01:55:02 +02:00
Lauri Ojansivu c2e58dcb62 - Partial fix to unchecked rule, and tips for fixing.
Related #1972
2018-12-06 01:49:57 +02:00
Lauri Ojansivu f154c5e521 Update translations. 2018-12-05 15:45:42 +02:00
Lauri Ojansivu eadbebb4fa - Fix IFTTT Rule action/trigger: When a checklist is completed/made incomplete.
Thanks to BurakTuran9 !

Related #1972
2018-12-05 15:45:10 +02:00
Lauri Ojansivu 40cf1c7549 - Fix IFTTT Rule action/trigger: When a checklist is completed/made incomplete.
Thanks to BurakTuran9 !

Related #1972
2018-12-05 15:21:24 +02:00
Lauri Ojansivu 9c4e305a84 v1.82 2018-12-05 08:53:40 +02:00
Lauri Ojansivu 167197fcda - Partially #2045 revert, continue.
Thanks to xet7 !
2018-12-05 08:47:48 +02:00
Lauri Ojansivu e3a40aca6f This release fixes the following bugs:
- Partially #2045 revert [Improve authentication](https://github.com/wekan/wekan/issues/2016),
  adding back password/LDAP dropdown, because login did now work.
  NOTE: This was added in v1.71, reverted at v1.73 because login did not work, added back at v1.79,
  and then reverted partially at v1.82 because login did not work.
  Related LDAP logout timer does not work yet.

Thanks to xet7 !
2018-12-05 08:20:59 +02:00
Lauri Ojansivu 0611e0c4bd Add text about fixing bugs. 2018-12-04 22:32:30 +02:00
Lauri Ojansivu d6857693bb v1.81 2018-12-04 22:30:54 +02:00
Lauri Ojansivu b5ccf7a58f - Remove extra commas , and add missing backslash \.
Maybe after that login, logout and CORS works.

Thanks to xet7 !

Related #2045,
related wekan/wekan-snap#69
2018-12-04 22:23:49 +02:00
Lauri Ojansivu bfca1822a0 - Remove extra commas , and add missing backslash \.
Maybe after that login, logout and CORS works.

Thanks to xet7 !

Related #2045,
related wekan/wekan-snap#69
2018-12-04 22:20:24 +02:00
Lauri Ojansivu 30151de269 v1.80 2018-12-03 18:22:41 +02:00
Lauri Ojansivu fe7c4528d7 - Upgrade Node from v8.12 to v8.14
- Revert non-working architectures that were added at v1.79, so now Wekan is just amd64 as before.

Thanks to xet7 !
2018-12-03 18:19:25 +02:00
Lauri Ojansivu 40367995e7 v1.79 2018-12-03 16:29:58 +02:00
Lauri Ojansivu b75fafc5f2 - Add CORS https://enable-cors.org/server_meteor.html
- Add missing LDAP and TIMER environment variables.

Thanks to xet7 !

Closes wekan/wekan-snap#69
2018-12-03 16:20:04 +02:00
Lauri Ojansivu b788deb002 - Add CORS https://enable-cors.org/server_meteor.html
- Add missing LDAP and TIMER environment variables.

Thanks to xet7 !

Closes wekan/wekan-snap#69
2018-12-03 16:05:24 +02:00
Lauri Ojansivu fa6b2e5679 - Improve authentication. Thanks to Akuket. 2018-12-03 11:31:03 +02:00
Lauri Ojansivu 70fd1ce57d Fix lint errors. 2018-12-03 11:18:54 +02:00
Lauri Ojansivu 97158de70f Merge branch 'Akuket-devel' into edge 2018-12-02 23:30:10 +02:00
Lauri Ojansivu 926faf0031 Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-12-02 23:28:39 +02:00
Lauri Ojansivu 228996412c - Fix wrong dates in ChangeLog.
Thanks to kelvinhammond !
2018-12-02 23:24:32 +02:00
Lauri Ojansivu c9c1464c79 Merge pull request #2041 from kelvinhammond/patch-1
Updated CHANGELOG.md - Fixed 2018-20-24 dates
2018-12-02 23:22:58 +02:00
Lauri Ojansivu 30c80f167c Update translations. 2018-12-02 23:19:51 +02:00
Lauri Ojansivu af9ca9b6c4 - Build snap also on i386, armhf and arm64. Ignore if it fails.
Most likely armhf and arm64 does not build yet, I will add fixes later.

Thanks to xet7 !
2018-12-02 23:17:14 +02:00
Lauri Ojansivu 3e03f557cf - Build snap also on i386, armhf and arm64. Ignore if it fails.
Most likely armhf and arm64 does not build yet, I will add fixes later.

Thanks to xet7 !

Related #1503,
related wekan/wekan-snap#46
2018-12-02 23:12:45 +02:00
Kelvin f19dc77d2c Updated CHANGELOG.md - Fixed 2018-20-24 dates 2018-12-01 23:43:37 -05:00
hupptechnologies 1bad630641 autoamted local change 2018-11-27 12:57:03 +05:30
hupptechnologies 8a9a82fc80 Pull code 2018-11-24 16:30:12 +05:30
guillaume 745bd7e806 finish prepare for test 2018-11-23 18:04:05 +01:00
Lauri Ojansivu cdb44da71e - Fix: Message box for deleting subtask unreachable.
Thanks to hupptechnologies. Closes #1800
2018-11-23 16:37:34 +02:00
Lauri Ojansivu 064a2deaaf - Fix: Message box for deleting subtask unreachable.
Thanks to hupptechnologies !

Closes #1800
2018-11-23 16:30:18 +02:00
Lauri Ojansivu a085ed1e1b Update translations. 2018-11-22 23:41:50 +02:00
guillaume f23448be33 revert changes for patch authentication 2018-11-22 18:00:21 +01:00
Lauri Ojansivu a27c16e434 v1.78 2018-11-20 22:50:44 +02:00
Lauri Ojansivu d5be48b905 Update translations. 2018-11-20 22:49:04 +02:00
Lauri Ojansivu 7432af67c1 v1.77 2018-11-20 22:45:42 +02:00
Lauri Ojansivu 24b61cf772 v1.76 2018-11-20 12:24:38 +02:00
Lauri Ojansivu cc64ef903f - Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10) to
[configs](https://github.com/wekan/wekan/commit/8e3f53021775069dba125efd4b7200d0d70a1ed1)
  and other options that were not in all config files. Thanks to alkemyst and xet7.
2018-11-20 12:19:05 +02:00
Lauri Ojansivu 8e3f530217 - Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10). Thanks to alkemyst and xet7.
Closes wekan/wekan-ldap#21,
closes wekan/wekan-ldap#10
2018-11-20 12:11:37 +02:00
Lauri Ojansivu f9b272c223 - Fix: When saving Custom Layout, save also SMTP settings. Thanks to xet7. 2018-11-20 11:38:39 +02:00
Lauri Ojansivu f0232fb5cb - Fix: When saving Admin Panel / Layout, save also SMTP settings.
Thanks to xet7 !
2018-11-20 11:35:14 +02:00
Lauri Ojansivu f84bad13b4 v1.75 2018-11-20 02:45:03 +02:00
Lauri Ojansivu b72a68705c Update translations. 2018-11-20 02:42:14 +02:00
Lauri Ojansivu dd6ba152a0 Admin Panel / Layout: Hide Logo: Yes / No. This does hide Wekan logo on Login page and Board page. Thanks to xet7. 2018-11-20 02:38:00 +02:00
Lauri Ojansivu cb9ced756f - [Fix Snap database-list-backups command](https://github.com/wekan/wekan-snap/issues/26). Thanks to WaryWolf.
Closes wekan/wekan-snap#26
2018-11-19 23:28:37 +02:00
Lauri Ojansivu dbf3a48b5f Update GitHub issue template for LDAP and Snap issues elsewhere. 2018-11-19 23:11:37 +02:00
Lauri Ojansivu b5d1799f5a v1.74.1
- Full Name from LDAP server via environment variable. Thanks to alkemyst.

Closes wekan/wekan-ldap#10
2018-11-18 20:15:18 +02:00
Lauri Ojansivu d4ec0cc647 v1.74 2018-11-17 17:41:31 +02:00
Lauri Ojansivu 21a8c7cc45 v1.73 2018-11-17 16:57:12 +02:00
Lauri Ojansivu aa691b0af1 - Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004).
Thanks to xet7 !

Closes #2004
2018-11-17 16:50:42 +02:00
Lauri Ojansivu 7a75d82114 v1.72 2018-11-17 15:20:33 +02:00
Lauri Ojansivu 4daf69e4b6 Update translations. 2018-11-17 15:15:50 +02:00
Lauri Ojansivu 960b33c3d9 v1.71 2018-11-17 00:30:49 +02:00
Lauri Ojansivu 685eb0f22c - [Improve shell scripts](https://github.com/wekan/wekan/pull/2002). Thanks to warnerjon12. 2018-11-16 22:00:50 +02:00
Lauri Ojansivu 81a51c8dfc Merge branch 'warnerjon12-devel' into devel 2018-11-16 21:55:32 +02:00
Lauri Ojansivu 75c1dff1f8 Merge branch 'devel' of https://github.com/warnerjon12/wekan into warnerjon12-devel 2018-11-16 21:54:16 +02:00
Lauri Ojansivu cb24b85191 Improve authentication. Thanks to Akuket. 2018-11-16 21:48:53 +02:00
Lauri Ojansivu 3aec8087f7 Fix lint errors. 2018-11-16 21:32:01 +02:00
Lauri Ojansivu 39ff51ef96 Merge branch 'Akuket-devel' into devel 2018-11-16 21:28:19 +02:00
Lauri Ojansivu 033a9482fc Merge branch 'devel' of https://github.com/Akuket/wekan into Akuket-devel 2018-11-16 21:26:07 +02:00
Lauri Ojansivu 017017623f Fix typo. 2018-11-16 21:22:41 +02:00
Lauri Ojansivu 4b53a532bd Update readme for clarity. 2018-11-16 21:17:06 +02:00
Lauri Ojansivu 6df296da47 - Rename Recycle Bin to Archive.
Thanks to xet7 !
2018-11-16 21:14:10 +02:00
Lauri Ojansivu 9f5d04de27 - Add language: Danish.
Thanks to translators.
2018-11-16 21:12:06 +02:00
Lauri Ojansivu c11b91d32a - Update translations.
- Add language: Swahili / Kiswahili.

Thanks to translators.
2018-11-16 21:04:58 +02:00
Lauri Ojansivu e266902ba9 Update translations. 2018-11-13 13:39:30 +02:00
Lauri Ojansivu b919eb23ab Rename Recycle Bin to Archive.
Closes #1784,
closes #1489
2018-11-13 12:17:46 +02:00
Jonathan Warner 22a9e783c9 Revised shell scripts to check for wekan repository
The scripts used to assume that ~/repos/wekan was a local wekan repo.
They now check that the active directory is a wekan repo.
2018-11-12 05:45:51 -07:00
Jonathan Warner d4e75165dd Revised rebuild-wekan.sh to work correctly with npm
The use of sudo npm is bugged. This is a workaround patch.
Fixes issue #2001
2018-11-12 05:45:42 -07:00
Lauri Ojansivu 73daf191ae Update translations. 2018-11-11 20:20:19 +02:00
Lauri Ojansivu 329471e7e3 Fix typo. 2018-11-10 04:12:56 +02:00
Lauri Ojansivu 644e2c334f Fix IRC link ;) 2018-11-10 03:36:26 +02:00
Lauri Ojansivu 16d925e588 Reorganize readme. 2018-11-10 02:47:01 +02:00
Lauri Ojansivu 0daa6d3f7b Update readme for clarity. 2018-11-10 02:41:27 +02:00
Lauri Ojansivu e3b3e8b8c6 v1.70 2018-11-09 21:44:50 +02:00
Lauri Ojansivu ddef1ea89c Update translations. 2018-11-09 21:18:17 +02:00
Lauri Ojansivu 8ddf136928 Update changelog based on previous commits. 2018-11-09 20:54:27 +02:00
guillaume 893329d9c6 patch authentication 2018-11-09 17:46:02 +01:00
guillaume cb091c8a54 Merge https://github.com/wekan/wekan into devel 2018-11-09 14:12:17 +01:00
Lauri Ojansivu 043f9813ef Update translations. 2018-11-08 23:41:11 +02:00
Lauri Ojansivu 717891bee9 Merge remote-tracking branch 'origin/edge' into devel 2018-11-08 23:18:10 +02:00
Lauri Ojansivu 508f47f940 - Fix typo. 2018-11-08 23:17:26 +02:00
Lauri Ojansivu e4c0623cf7 Merge branch 'tugal-devel' into devel 2018-11-08 23:15:21 +02:00
Lauri Ojansivu 4cf9813449 - Some fixes to Wekan import:
- isCommentOnly and isNoComments are now optional
  - Turn off import error checking, so something is imported anyway, and import does not stop at error.
  - Now most of Sandstorm export do import to Standalone Wekan, but some of imported cards, dates etc are missing.
  - Sandstorm Import Wekan board warning messages are now translateable.

Thanks to xet7 !

Closes #1945,
closes #1616,
closes #1903
2018-11-08 22:49:08 +02:00
Lauri Ojansivu d44fb6bedd Update translations. 2018-11-07 23:20:10 +02:00
Nunes Nelson f2dd725eff custom fields upgrade -- correct 2018-11-07 18:23:28 +01:00
guillaume 3646a9c259 Logout with timer 2018-11-06 17:48:12 +01:00
guillaume 8c497efb46 patch authentication 2018-11-06 11:28:35 +01:00
Nunes Nelson a82aa87850 custom fields upgrade 2018-11-05 21:46:57 +01:00
Lauri Ojansivu 68e5909c96 - Add more options to start-wekan.bat 2018-11-04 18:47:18 +02:00
Lauri Ojansivu 4c2857b6e8 Add build scripts. 2018-11-04 18:32:08 +02:00
Lauri Ojansivu 6f2275e8cb v1.69 2018-11-03 18:18:02 +02:00
Lauri Ojansivu d42d7a89fb Update translations. 2018-11-03 18:13:41 +02:00
Lauri Ojansivu cba8b56cb5 v1.68 2018-11-03 11:00:16 +02:00
Lauri Ojansivu ece009f556 Update translations (hi). 2018-11-03 10:58:17 +02:00
Lauri Ojansivu 53ed1f1a2c v1.67 2018-11-03 10:41:33 +02:00
Lauri Ojansivu 22a09f3e7d - Hide Linked Card and Linked Board on Sandstorm, because they are only
useful when having multiple boards, and at Sandstorm
  there is only one board per grain. Thanks to ocdtrekkie and xet7.

Closes #1982
2018-11-03 10:37:22 +02:00
Lauri Ojansivu dda36f4eb3 - Hide Linked Card and Linked Board on Sandstorm, because they are only
useful when having multiple boards, and at Sandstorm
  there is only one board per grain. Thanks to ocdtrekkie and xet7.

Closes #1982
2018-11-03 10:25:31 +02:00
Lauri Ojansivu 8c6c089363 - Add Hindi language. Thanks to saurabharch. 2018-11-03 09:53:58 +02:00
Lauri Ojansivu 997a902ae4 Add hindi language. 2018-11-03 09:51:53 +02:00
Lauri Ojansivu defcfed272 v1.66 2018-10-31 22:03:30 +02:00
Lauri Ojansivu 0f1b157bda Update translations. 2018-10-31 21:59:41 +02:00
Lauri Ojansivu 7188879567 - [Fix typo about ldaps](https://github.com/wekan/wekan/pull/1980).
Documentation said to set LDAP_ENCRYPTION to true if we want to use
  ldaps, but the code in wekan-ldap does not check if it is set to true,
  but if the value equals to 'ssl' instead. Thanks to imkwx.
2018-10-31 21:58:13 +02:00
Lauri Ojansivu c753d40f6c - Fix typo about ldaps.
Documentation said to set LDAP_ENCRYPTION to true if we want to use
  ldaps, but the code in wekan-ldap does not check if it is set to true,
  but if the value equals to 'ssl' instead. Thanks to imkwx.
2018-10-31 21:57:05 +02:00
Lauri Ojansivu 706436b638 Merge pull request #1980 from imkwx/devel
Fix typo about ldaps
2018-10-31 20:29:30 +02:00
Robin BRUCKER 13aab4d410 Fix typo about ldaps
Documentation said to set LDAP_ENCRYPTION to true if we want to use
ldaps, but the code in wekan-ldap does not check if it is set to true,
but if the value equals to 'ssl' instead.
2018-10-31 18:59:16 +01:00
Lauri Ojansivu a06fd63690 Fix syntax. 2018-10-30 16:32:58 +02:00
Lauri Ojansivu 07369b9784 Update translations. 2018-10-30 00:07:35 +02:00
Lauri Ojansivu 415e28b471 - Fix typos in CHANGELOG.md, thanks to loginKing !
https://github.com/wekan/wekan/pull/1975
2018-10-30 00:05:24 +02:00
Lauri Ojansivu f62d0530ec Merge pull request #1975 from loginKing/patch-1
Update CHANGELOG.md
2018-10-30 00:03:26 +02:00
loginKing d12561aae9 Update CHANGELOG.md 2018-10-29 16:09:10 +08:00
Lauri Ojansivu d1ab38e57e - Typo fix etc. 2018-10-26 17:15:24 +03:00
Lauri Ojansivu 27bc03d452 docker-compose.yml and docker-compose-build.yml:
- Remove single quotes, because settings are quoted automatically.
- Comment out most settings that have default values.

Thanks to xet7 !
2018-10-26 17:10:14 +03:00
Lauri Ojansivu 9cff76f110 Update translations. 2018-10-26 16:55:19 +03:00
Lauri Ojansivu a5a487caf8 Merge pull request #1974 from Hillside502/patch-1
Update CHANGELOG.md
2018-10-26 15:14:20 +03:00
Hillside502 9cfef8c337 Update CHANGELOG.md
typo
2018-10-26 09:22:08 +00:00
Lauri Ojansivu 46e2679f82 v1.65 2018-10-25 18:30:25 +03:00
Lauri Ojansivu 08383ed22d Update translations (bg). 2018-10-25 18:25:10 +03:00
Lauri Ojansivu 3602d59125 This release adds the [following new features](https://github.com/wekan/wekan/pull/1967), with Apache I-CLA:
- UI: list headers: show the card count smaller in grey color below list name
- UI: lists: only output the number of cards for each swimlane

Thanks to bentiss !
2018-10-25 18:23:03 +03:00
Lauri Ojansivu c72b3a870e Merge branch 'bentiss-ui-fixes' into edge 2018-10-25 18:12:13 +03:00
Lauri Ojansivu 078bab405b Merge branch 'ui-fixes' of https://github.com/bentiss/wekan into bentiss-ui-fixes 2018-10-25 17:31:56 +03:00
Benjamin Tissoires e57269ed57 UI: lists: only output the number of cards for each swimlane 2018-10-25 16:18:02 +02:00
Benjamin Tissoires 05e0fb8fbe UI: list headers: show the card count smaller
The card count was at the same level than the title, which made
reading the list title harder. Use the quiet and small class
to put it in the following line and not make it jump out of the screen
2018-10-25 16:17:30 +02:00
Lauri Ojansivu 500ba88781 v1.64.2 2018-10-25 13:22:42 +03:00
Lauri Ojansivu 7f941840cb - Additional fix to [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to Akuket and xet7 !
2018-10-25 13:19:27 +03:00
Lauri Ojansivu b4670f12a5 v1.64.1 2018-10-25 13:16:15 +03:00
Lauri Ojansivu 2a4eb0bcc2 - Fix: [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to Akuket and xet7 !

Closes #1970
2018-10-25 13:15:15 +03:00
Lauri Ojansivu f2b64c1aaa Remove console.log 2018-10-25 13:09:25 +03:00
Lauri Ojansivu 05b9e825bb - Try to fix: Impossible to connect to LDAP if UserDN contain space(s) #1970
Thanks to Akuket and xet7 !
2018-10-25 12:38:30 +03:00
Lauri Ojansivu 187b4632e6 v1.64 2018-10-24 22:10:58 +03:00
Lauri Ojansivu ce2b8a8d1a Update translations. 2018-10-24 20:09:02 +03:00
Lauri Ojansivu d3517f03f6 v1.63 2018-10-24 19:50:38 +03:00
Lauri Ojansivu 0583bf6df0 REST API: [Allow to remove the full list of labels/members through the API](https://github.com/wekan/wekan/pull/1968), with Apache I-CLA:
- [Models: Cards: an empty string in members or label deletes the list](https://github.com/wekan/wekan/commit/e5949504b7ed42ad59742d2a0aa001fe6c762873).
  There is currently no way to remove all members or all labels attached
  to a card. If an empty string is provided, we can consider as a hint to
  remove the list from the card.
- [Models: Cards: allow singletons to be assigned to members and labelIds](https://github.com/wekan/wekan/commit/2ce1ba37a1d0a09f8b3d2a1db4c8a11d1f98caa0).
  If we need to set only one member or one label, the data provided will
  not give us an array, but the only element as a string.
  We need to detect that and convert the parameter into an array.

Thanks to bentiss !
2018-10-24 19:46:12 +03:00
Lauri Ojansivu d446075239 Merge branch 'bentiss-api-fixes' into edge 2018-10-24 19:36:07 +03:00
Benjamin Tissoires e5949504b7 models: cards: an empty string in members or label deletes the list
There is currently no way to remove all members or all labels attached
to a card. If an empty string is provided, we can consider as a hint to
remove the list from the card.
2018-10-24 16:55:33 +02:00
Benjamin Tissoires 2ce1ba37a1 models: cards: allow singletons to be assigned to members and labelIds
If we need to set only one member or one label, the data provided will
not give us an array, but the only element as a string.
We need to detect that and convert the parameter into an array.
2018-10-24 16:55:27 +02:00
Lauri Ojansivu 6d4ffdd8b4 v1.62 2018-10-24 12:44:45 +03:00
Lauri Ojansivu 8ff2e1f16a - Fix missing dropdown arrow on Chrome. Thanks to xet7 ! Closes #1964 2018-10-24 12:40:40 +03:00
Lauri Ojansivu 09b05ea3fb v1.61 2018-10-24 12:15:11 +03:00
Lauri Ojansivu 90a0478d0b - Fix lint error. Thanks to xet7 ! 2018-10-24 12:13:20 +03:00
Lauri Ojansivu ecb3a18206 v1.60 2018-10-24 12:07:43 +03:00
Lauri Ojansivu e580109dd6 Update translations. 2018-10-24 12:06:33 +03:00
Lauri Ojansivu 9561049668 v1.59 2018-10-24 11:57:16 +03:00
Lauri Ojansivu d4dd646bf4 This release adds the beginning of following new features:
- Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7.

and fixes the following bugs:

- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket. Related #119
- Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7. Closes #1856
2018-10-24 11:53:47 +03:00
Lauri Ojansivu 4cb25a5bcf - Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7 !
- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket ! Related #119
- Fix Save Admin Panel STMP password. Thanks to saurabharch and xet7 ! Closes #1856
2018-10-24 11:39:45 +03:00
Lauri Ojansivu 82e90f7b94 v1.58 2018-10-23 21:19:48 +03:00
Lauri Ojansivu 760c008f5b Adds [following new features and fixes](https://github.com/wekan/wekan/pull/1962), with Apache I-CLA:
- Also export the cards created with an older wekan instance (without linked cards) (related to #1873);
- Fix the GET customFields API that was failing;
- Allow to directly overwrite the members of cards and boards with a PUT call (this avoids to do multiple calls to add and remove users);
- Allow to change the swimlane of a card from the API.

Thanks to bentiss !
2018-10-23 21:08:04 +03:00
Lauri Ojansivu 54f8d4f308 Merge branch 'bentiss-api-fixes' into edge 2018-10-23 21:02:13 +03:00
Lauri Ojansivu 0de0135619 Merge branch 'api-fixes' of https://github.com/bentiss/wekan into bentiss-api-fixes 2018-10-23 20:44:35 +03:00
Benjamin Tissoires dfdba25ea0 api: add the ability to change the Swimlane of a card 2018-10-23 18:48:05 +02:00
Benjamin Tissoires f61942e5cb models: boards: add PUT members entry point
Allows to change the members from the API.
2018-10-23 18:48:05 +02:00
Benjamin Tissoires 33d4ad76ca models: cards: add members PUT entry point
Allows to change the members from the API
2018-10-23 18:48:05 +02:00
Benjamin Tissoires 53c8e63a09 models: customFields: fix GET api
Calling GET on /api/board/XXXX/customfields
returns a 500 error:

 TypeError: Converting circular structure to JSON
2018-10-23 18:48:01 +02:00
Benjamin Tissoires 9aa5584c9c models: make the REST API more uniform
All of the other REST API are in the form 'modelId' but a few ones in
boards.js and users.js.

Change it for a more uniform API.
2018-10-23 18:02:15 +02:00
Benjamin Tissoires 24f66c9f88 fix cards export
6eeb708e4d (Fix cards export and add customFields export.) is
incomplete as it allows to export newer cards inserted in the db after
the linkedId has been set, but not older cards present in an earlier
version of wekan.

Allow both null and empty value to be retrieved to match all cards.

related #1873
2018-10-23 18:02:15 +02:00
Lauri Ojansivu fa548a4c32 v1.57 2018-10-23 14:21:59 +03:00
Lauri Ojansivu 10bc2c0d1a v1.56 2018-10-23 14:19:31 +03:00
Lauri Ojansivu 5188f2f2c9 - This docker-compose.yml uses prebuilt image.
Thanks to xet7 !
2018-10-23 14:18:17 +03:00
Lauri Ojansivu 1019f6272e - Add separate docker-compose-build.yml
Thanks to xet7 !
2018-10-23 14:17:00 +03:00
Lauri Ojansivu dbd34c3254 Update translations. 2018-10-23 14:16:34 +03:00
Lauri Ojansivu 20af78e50b - Back to Meteor 1.6.0.1 and MongoDB 3.2.21 to make Snap work.
Thanks to xet7 !
2018-10-23 14:15:33 +03:00
Lauri Ojansivu 96151a54fb Merge branch 'devel' into edge 2018-10-23 13:35:32 +03:00
Benjamin Tissoires ccf66905e7 Dockerfile: use set -o xtrace
This allows to see the progress of the generation of the
Docker image.
2018-10-23 11:52:24 +02:00
Lauri Ojansivu ced56ed83f - Add info about using prebuild image.
Thanks to xet7 !
2018-10-17 12:11:26 +03:00
Lauri Ojansivu 790234775f Update translations. 2018-10-17 12:00:51 +03:00
Lauri Ojansivu aac8933186 Update translations. 2018-10-17 11:59:06 +03:00
Lauri Ojansivu 73edfd90a6 v1.55.1 2018-10-16 20:01:55 +03:00
Lauri Ojansivu a168f885d9 Update translations. 2018-10-16 19:58:43 +03:00
Lauri Ojansivu 50136fe314 v1.55 2018-10-16 14:11:33 +03:00
Lauri Ojansivu 6308352f90 Update translations. 2018-10-16 14:05:47 +03:00
Lauri Ojansivu ba5ee34d83 - [Automatically close the sidebar](https://github.com/wekan/wekan/pull/1954).
- [Fix: Update broke the ability to mute notifications](https://github.com/wekan/wekan/issues/1952).

Thanks to Akuket !
2018-10-16 13:57:38 +03:00
Lauri Ojansivu 849f15ceee - Fix: Update broke the ability to mute notifications;
- Automatically close the sidebar.

Thanks to Akuket !

Closes #1952
2018-10-16 13:52:45 +03:00
Lauri Ojansivu 5979fc1d3d - [Automatically close the sidebar](https://github.com/wekan/wekan/pull/1954);
- [Fix: Update broke the ability to mute notifications](https://github.com/wekan/wekan/pull/1954).

Thanks to Akuket !
2018-10-16 13:42:58 +03:00
Lauri Ojansivu 81f98e2da1 Merge branch 'Akuket-edge' into edge 2018-10-16 13:40:17 +03:00
Akuket 50edffee47 Merge branch 'edge' into edge 2018-10-16 11:46:21 +02:00
guillaume 41330b15dc update broke ability to mute notifications 2018-10-16 11:33:16 +02:00
Lauri Ojansivu f5125b76bc v1.54 2018-10-14 00:37:00 +03:00
Lauri Ojansivu ad663d2df9 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-14 00:19:41 +03:00
Lauri Ojansivu 9faa85a1c3 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-14 00:18:20 +03:00
Lauri Ojansivu cb98b1326d - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-14 00:11:18 +03:00
Lauri Ojansivu e9f8e150e7 - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-14 00:09:41 +03:00
Lauri Ojansivu a90f648d5e - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !

Closes #1872
2018-10-13 23:53:41 +03:00
Lauri Ojansivu 8cd5f7c185 - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !
2018-10-13 23:51:54 +03:00
Lauri Ojansivu bedd3767ce Update translations. 2018-10-13 23:42:13 +03:00
Lauri Ojansivu 63ee764a9b - [Fix vertical text for swimlanes in IE11](https://github.com/wekan/wekan/issues/1798).
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:37:46 +03:00
Lauri Ojansivu 3dcebe8a9e - [Fix vertical text for swimlanes in IE11](https://github.com/wekan/wekan/issues/1798).
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:33:52 +03:00
Lauri Ojansivu 232685919f - Fix vertical text for swimlanes in IE11
Thanks to tomodwyer !

Closes #1798
2018-10-13 23:27:40 +03:00
Lauri Ojansivu b7f59db03c Merge pull request #1951 from tomodwyer/ie11-fix-swimlanes
Fix vertical text for swimlanes in IE11
2018-10-13 23:23:40 +03:00
Tom O'Dwyer 9e5d016017 Fix vertical text for swimlanes in IE11
https://github.com/wekan/wekan/issues/1798
2018-10-13 18:08:53 +01:00
Lauri Ojansivu 8c8f51a84b Update translations. 2018-10-12 23:28:04 +03:00
Lauri Ojansivu de146f9aaf - Fix lint errors.
Thanks to xet7 !
2018-10-12 23:22:41 +03:00
Lauri Ojansivu 25bb0bfa22 - [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872).
Thanks to Akuket and Clement87 !

Closes #1872
2018-10-12 23:09:52 +03:00
Lauri Ojansivu 00eeb86332 - Remove broken customFields references.
Thanks to Clement87 and Akuket !
2018-10-12 23:04:09 +03:00
Lauri Ojansivu 25ab20bcb4 Merge branch 'edge' of https://github.com/Akuket/wekan into edge 2018-10-12 23:03:03 +03:00
guillaume 5c588b2424 patch for customFields when deleting them 2018-10-12 11:18:11 +02:00
Lauri Ojansivu e77cda938c Merge branch 'Akuket-edge' into edge 2018-10-11 23:48:15 +03:00
Lauri Ojansivu 99793c0a12 - [Improve notifications](https://github.com/wekan/wekan/pull/1948).
Thanks to Akuket !

Closes #1304
2018-10-11 23:47:02 +03:00
Lauri Ojansivu 178beee476 - Fix lint errors.
Note: variable trackingUsers is not used anywhere, so it was removed.

Thanks to xet7 !
2018-10-11 23:41:50 +03:00
Lauri Ojansivu b4402b72ac Merge branch 'edge' of https://github.com/Akuket/wekan into Akuket-edge 2018-10-11 22:47:11 +03:00
guillaume 23a35d9707 improve notifications 2018-10-11 16:46:59 +02:00
guillaume b925b8e74d improve notifications 2018-10-11 16:44:52 +02:00
Lauri Ojansivu 6742dd0585 Update translations. 2018-10-11 15:39:40 +03:00
Lauri Ojansivu 769b1b8110 v1.53.9 2018-10-11 02:07:40 +03:00
Lauri Ojansivu f6040ab43c - Add experimental Docker edge that works.
Thanks to xet7 !
2018-10-11 01:59:47 +03:00
Lauri Ojansivu 11b7ade355 - Try some changes to snap.
Thanks to xet7 !
2018-10-11 01:58:13 +03:00
Lauri Ojansivu 7d39283aec - Try to fix Dockerfile.
Thanks to xet7 !
2018-10-10 19:40:28 +03:00
Lauri Ojansivu f21afdc5f1 - Try to fix Dockerfile
Thanks to xet7 !
2018-10-10 19:33:38 +03:00
Lauri Ojansivu a864223f4a v1.53.8 2018-10-10 19:04:01 +03:00
Lauri Ojansivu b7a74e25bc - Try to fix Docker.
Thanks to xet7 !
2018-10-10 19:02:03 +03:00
Lauri Ojansivu 219091eb5e v1.53.7 2018-10-10 18:50:41 +03:00
Lauri Ojansivu 74a89e6610 - Try MongoDB 4.0.3
Thanks to xet7 !
2018-10-10 18:48:24 +03:00
Lauri Ojansivu 371ce30462 v1.53.6 2018-10-10 17:34:45 +03:00
Lauri Ojansivu 1b65cbd3db - Try to get latest npm. 2018-10-10 17:31:52 +03:00
Lauri Ojansivu b63ba110b8 Update translations. 2018-10-10 17:28:19 +03:00
Lauri Ojansivu 5f4f447539 - [Add LDAP to Snap Help](https://github.com/wekan/wekan/commit/809c8f64f69721d51b7d963248a77585867fac53).
Thanks to GitHub user Akuket for contributions.

Related #119
2018-10-10 17:27:48 +03:00
Lauri Ojansivu 809c8f64f6 - Add LDAP to Snap Help.
Thanks to Akuket !

Related #119
2018-10-10 17:24:05 +03:00
Lauri Ojansivu beaf20d256 v1.53.5 2018-10-10 17:09:06 +03:00
Lauri Ojansivu 644376a356 - Try to fix snap.
Thanks to xet7 !
2018-10-10 17:06:11 +03:00
Lauri Ojansivu db757f20b3 Try to fix snap 2018-10-10 16:57:07 +03:00
Lauri Ojansivu 961d9dcbdb v1.53.4 2018-10-10 16:28:02 +03:00
Lauri Ojansivu 0b971b6ddb - Upgrade hoek.
Thanks to xet7 !
2018-10-10 16:25:24 +03:00
Lauri Ojansivu ffdd6ff806 v1.53.3 2018-10-10 16:01:17 +03:00
Lauri Ojansivu 2b2315032d - [Upgrade](https://github.com/wekan/wekan/issues/1522) to [Meteor](https://blog.meteor.com/meteor-1-8-erases-the-debts-of-1-7-77af4c931fe3) [1.8.1-beta.0](https://github.com/meteor/meteor/issues/10216).
with [these](https://github.com/wekan/wekan/commit/079e45eb52a0f62ddb6051bf2ea80fac8860d3d5)
  [commits](https://github.com/wekan/wekan/commit/dd47d46f4341a8c4ced05749633f783e88623e1b). So now it's possible to use MongoDB 2.6 - 4.0.

Thanks to xet7 !
2018-10-10 15:57:46 +03:00
Lauri Ojansivu dd47d46f43 - Use Meteor 1.8.1-beta.0
Thanks to xet7 !
2018-10-10 15:39:54 +03:00
Lauri Ojansivu 079e45eb52 - Trying Meteor 1.8.1-beta.0
Thanks to xet7 !
2018-10-10 14:58:52 +03:00
Lauri Ojansivu 55aea69948 - Remove whitespace.
Thanks to xet7 !
2018-10-10 01:44:56 +03:00
Lauri Ojansivu fc5c2f40ba v1.53.2 2018-10-10 01:43:18 +03:00
Lauri Ojansivu f599391419 - Add LDAP package to Docker and Snap.
Thanks to xet7 !
2018-10-10 01:38:59 +03:00
Lauri Ojansivu ab0e1b3203 v1.53.1 2018-10-10 01:16:02 +03:00
Lauri Ojansivu 1dda8bff5e Merge branch 'dcmcand-dcmcand-dev' into edge 2018-10-10 00:49:07 +03:00
Lauri Ojansivu 1db6efa9c8 - [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
Thanks to dcmcand !

Closes #1934
2018-10-10 00:46:18 +03:00
Lauri Ojansivu d4774d398e - Fix lint error: tab to spaces.
Thanks to xet7 !
2018-10-10 00:40:42 +03:00
Lauri Ojansivu 04f5bda70a Merge branch 'dcmcand-dev' of https://github.com/dcmcand/wekan into dcmcand-dcmcand-dev 2018-10-10 00:36:42 +03:00
Lauri Ojansivu f11c8727d9 Update translations. 2018-10-10 00:26:11 +03:00
Lauri Ojansivu 9e120cd44b - [Add LDAP support and authentications dropdown menu on login page](https://github.com/wekan/wekan/pull/1943).
Thanks to Akuket !
2018-10-10 00:21:18 +03:00
Lauri Ojansivu bf42372eef Merge branch 'Akuket-edge' into edge 2018-10-10 00:14:51 +03:00
Lauri Ojansivu 5e9bf61d3f - Use existing translation of "Back".
Thanks to xet7 !
2018-10-10 00:11:32 +03:00
Lauri Ojansivu 3a7ae7c5f2 Fix lint errors. 2018-10-09 21:16:47 +03:00
Chuck McAndrew be42b8d4cb Add route to get cards by swimlaneid 2018-10-09 15:05:57 +00:00
Akuket 28a01862d0 Merge branch 'edge' into edge 2018-10-09 14:49:12 +02:00
guillaume 3b4f285fea add ldap support | simplify authentications 2018-10-09 14:14:39 +02:00
Lauri Ojansivu 58855ada97 - Fix lint errors and warnings.
Thanks to xet7 !
2018-10-08 00:44:02 +03:00
Lauri Ojansivu 5d0b23ee3f - [Feature rules: fixes and enhancements](https://github.com/wekan/wekan/pull/1936).
Thanks to Angtrim !
2018-10-08 00:29:36 +03:00
Lauri Ojansivu 9cd980d9e6 Merge branch 'Angtrim-feature-rules' into edge
Closes #1912
2018-10-08 00:26:25 +03:00
Lauri Ojansivu d516ecb20c Update translations. 2018-10-08 00:13:38 +03:00
Lauri Ojansivu d91e0358f3 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-10-08 00:06:55 +03:00
Angelo Gallarello 6931b88e40 Prevent rules with no name 2018-10-07 18:19:51 +02:00
Angelo Gallarello d0735e1d8e Fixed rules conflicts 2018-10-07 18:10:01 +02:00
Angelo Gallarello 506b95107c Fixed uppercase rules details 2018-10-07 17:55:24 +02:00
Angelo Gallarello 02422cc8f2 Fixed language source typo 2018-10-07 17:50:08 +02:00
Angelo Gallarello f19948f993 Added back button 2018-10-07 17:47:01 +02:00
Angelo Gallarello ebd884e654 Fixed lint errors 2018-10-07 17:27:26 +02:00
Lauri Ojansivu a2866ce6f3 Update translations (pt-BR). 2018-10-06 15:06:56 +03:00
Lauri Ojansivu 4c6c6ffb16 Update translations (pt-BR). 2018-10-06 14:01:21 +03:00
Lauri Ojansivu 525a6defd9 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-10-03 21:34:18 +03:00
Lauri Ojansivu 1623ef65bb v1.53 2018-10-03 21:34:00 +03:00
Lauri Ojansivu 76bff73121 - Add info about edge.
Thanks to xet7 !
2018-10-03 21:24:02 +03:00
Lauri Ojansivu 22077af137 - Add info about stable and edge.
Thanks to xet7 !
2018-10-03 19:25:11 +03:00
Lauri Ojansivu a26f9bc1e7 - [OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter](https://github.com/wekan/wekan/pull/1930);
Thanks to lberk and InfoSec812 !
2018-10-03 18:15:01 +03:00
Lauri Ojansivu 56c7b3d00f - [OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.commit](https://github.com/wekan/wekan/commit/fcc3560df4dbcc418c63470776376238af4f6ddc).
Thanks to lberk and InfoSec812 !
2018-10-03 18:12:55 +03:00
Lauri Ojansivu fcc3560df4 - OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.
Thanks to lberk and InfoSec812 !
2018-10-03 18:08:18 +03:00
Lauri Ojansivu f79f2733a0 - Add info about root-url to GitHub issue template https://github.com/wekan/wekan/commit/4c0eb7dcc19ca9ae8c5d2d0276e0d024269de236).
Thanks to xet7 !
2018-10-03 18:04:25 +03:00
Lauri Ojansivu 4c0eb7dcc1 - Add info about root-url to GitHub issue template.
Thanks to xet7 !
2018-10-03 18:01:02 +03:00
Lauri Ojansivu 35677d0c55 - Fix Card URL https://github.com/wekan/wekan/pull/1932
Thanks to schulz !
2018-10-03 17:58:03 +03:00
Lauri Ojansivu 2206c5c84c - Fix Card URL https://github.com/wekan/wekan/pull/1932/files
Thanks to schulz !
2018-10-03 17:46:00 +03:00
Lauri Ojansivu 0d22f683fe - [Add info about root-url to GitHub issue template](https://github.com/wekan/wekan/commit/001c8f2b0138fb26a8c84acab62a604d0c6e5dda).
Thanks to xet7 !
2018-10-03 17:24:38 +03:00
Lauri Ojansivu 001c8f2b01 - Add info about root-url to GitHub issue template.
Thanks to xet7 !
2018-10-03 17:20:20 +03:00
Lauri Ojansivu 463b4f2442 - Add whole packages/ directory to .gitignore
Thanks to xet7 !
2018-10-03 17:07:56 +03:00
Lauri Ojansivu f437d8370e - Add whole packages/ directory to .gitignore
Thanks to xet7 !
2018-10-03 17:05:01 +03:00
Lauri Ojansivu 29cebc8d3d - OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.
Thanks to lberk !
Thanks to GitHub users lberk and schulz for their contributions.
2018-10-03 17:03:45 +03:00
Lauri Ojansivu 5704dd9f8b Merge pull request #1930 from lberk/devel
Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter
2018-10-03 17:01:07 +03:00
Lauri Ojansivu 3d150b63dd - Fix Card URL https://github.com/wekan/wekan/pull/1932
Thanks to schulz !
2018-10-03 16:46:20 +03:00
Lauri Ojansivu 7ca21d5260 Merge branch 'schulz-devel' into devel 2018-10-03 16:43:11 +03:00
Lauri Ojansivu 111e4d8478 - Fix lint error: whitespace.
Thanks to xet7 !
2018-10-03 16:39:16 +03:00
Lukas Berk 0aac9405ee Update wekan.yml 2018-10-03 09:34:51 -04:00
Schulz f8b89129a3 Card url fixed 2018-10-03 15:58:17 +03:00
Lauri Ojansivu 5b8c642d8f - Add whole packages/ directory to .gitignore.
Thanks to xet7 !
2018-10-03 14:24:39 +03:00
Lauri Ojansivu 6c1ddf58ed Fix typo. 2018-10-03 12:00:54 +03:00
Lauri Ojansivu f32b27d2e3 - [LDAP](https://github.com/wekan/wekan/commit/288800eafc91d07f859c4f59588e0b646137ccb9). In progress.
Please test and [add info about bugs](https://github.com/wekan/wekan/issues/119).

Thanks to maximest-pierre, Akuket and xet7 !

Related #119
2018-10-03 11:59:57 +03:00
Lauri Ojansivu 288800eafc - Add LDAP. In progress.
Thanks to maximest-pierre, Akuket and xet.

Related #119
2018-10-03 11:50:52 +03:00
Lukas Berk cb9c94cf9d Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter 2018-10-02 14:50:11 -04:00
Lauri Ojansivu 18a1d4c5c6 v1.52.1 2018-10-02 01:02:00 +03:00
Lauri Ojansivu ef4292b559 Add edge. 2018-10-02 00:49:26 +03:00
Lauri Ojansivu 6a5e053da1 - REST API: [Add member with role to board. Remove member from board](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
[Docs](https://github.com/wekan/wekan/wiki/REST-API-Role). Related to [role issue](https://github.com/wekan/wekan/issues/1861).
- OAuth2: [Revert Oidc preferred_username back to username](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
  This [does not fix or break anything](https://github.com/wekan/wekan/issues/1874#issuecomment-425179291),
  Oidc already works with [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper-provider-app).

Thanks to xet7 !

Related #1861
2018-10-02 00:36:51 +03:00
Lauri Ojansivu 33caf1809a - REST API: Add member with role to board. Remove member from board.
Docs: https://github.com/wekan/wekan/wiki/REST-API-Role
- OAuth2: Change Oidc preferred_username back to username.

Thanks to xet7 !

Related #1861
2018-10-02 00:21:43 +03:00
Lauri Ojansivu 1d803d4b51 v1.52 2018-10-01 16:47:06 +03:00
Lauri Ojansivu 2ad318b57c - Removed CAS from Wekan stable, because it does not work correctly.
CAS developent continues at edge.

Thanks to xet7 !

Related #1925
2018-10-01 16:40:18 +03:00
Lauri Ojansivu 5923585584 - Remove CAS from Wekan stable, because it does not work correctly.
CAS developent continues at edge.

Thanks to xet7 !

Related #1925
2018-10-01 16:33:29 +03:00
Lauri Ojansivu fccdffb9cc v1.51.2 2018-09-30 02:57:35 +03:00
Lauri Ojansivu 181c988706 - [REST API: Change role of board member](https://github.com/wekan/wekan/commit/51ac6c839ecf2226b2a81b0d4f985d3b942f0938).
Docs: https://github.com/wekan/wekan/wiki/REST-API-Role

Related #1861
2018-09-30 02:48:16 +03:00
Lauri Ojansivu 51ac6c839e - REST API: Change role on board. Docs: https://github.com/wekan/wekan/wiki/REST-API-Role
Thanks to entrptaher and xet7 !
2018-09-30 02:37:16 +03:00
Lauri Ojansivu 3a3666312f Fix typo. 2018-09-28 12:25:48 +03:00
Lauri Ojansivu c433e3f80f v1.51.1 2018-09-28 11:49:09 +03:00
Lauri Ojansivu 6b86b3b6e7 v1.51 2018-09-28 11:00:26 +03:00
Lauri Ojansivu d61d9994e3 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:51:01 +03:00
Lauri Ojansivu a10b6fb173 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:48:30 +03:00
Lauri Ojansivu f6e8e3d107 - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:46:37 +03:00
Lauri Ojansivu fb46a88a0f - Move Add Board button to top left, so there is no need to scroll
to bottom when there is a lot of boards.

Thanks to xet7 !
2018-09-28 10:40:20 +03:00
Lauri Ojansivu a8f1711890 Update translations. 2018-09-28 01:03:05 +03:00
Lauri Ojansivu d671a4bb32 Update translations. 2018-09-28 01:01:59 +03:00
Lauri Ojansivu cf5b962349 Update translations. 2018-09-28 00:52:10 +03:00
Lauri Ojansivu 07f155d82e - Add CAS with attributes
Thanks to ppoulard !
2018-09-28 00:39:43 +03:00
Lauri Ojansivu c6cea2fb4e - Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:38:17 +03:00
Lauri Ojansivu 7ee453648c Fix typo. 2018-09-28 00:27:06 +03:00
Lauri Ojansivu b0826e2d7b - Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:26:01 +03:00
Lauri Ojansivu bd6e4a351b Add CAS with attributes.
Thanks to ppoulard !
2018-09-28 00:23:31 +03:00
Lauri Ojansivu 209da19566 Merge pull request #1913 from ppoulard/devel
Add CAS with attributes
2018-09-25 00:33:49 +03:00
ppoulard b342cfed3a Add CAS with attributes 2018-09-24 16:14:41 +02:00
Lauri Ojansivu a404612174 v1.50.3 2018-09-23 12:47:14 +03:00
Lauri Ojansivu 4dd66eed8e Update translations. 2018-09-23 12:44:49 +03:00
Lauri Ojansivu 1ccacf60b2 - Remove "Fix Cannot setup mail server via snap variables"
to see does Wekan Snap start correctly after removing it.

Thanks to xet7 !
2018-09-23 12:42:44 +03:00
Lauri Ojansivu 6d88baebc7 - Remove "Fix Cannot setup mail server via snap variables" to see
does Wekan Snap start correctly after removing it.

Thanks to xet7 !
2018-09-23 12:38:32 +03:00
Lauri Ojansivu e52cfc84b4 v1.50.2 2018-09-23 11:34:51 +03:00
Lauri Ojansivu 98003e26b1 Update translations. 2018-09-23 11:33:37 +03:00
Lauri Ojansivu 3d4352ba0f v1.50.1 2018-09-22 11:18:39 +03:00
Lauri Ojansivu c060f2322b - Try to fix OAuth2: Change oidc username to preferred_username.
Thanks to xet7 !
2018-09-22 11:05:07 +03:00
Lauri Ojansivu 734e4e5f3f - Try to fix OAuth2: Change oidc username to preferred_username.
Thanks to xet7 !
2018-09-22 11:02:29 +03:00
Lauri Ojansivu b21a0caa4f - Fix Cannot setup mail server via snap variables
Thanks to suprovsky !

Closes #1906
2018-09-22 10:56:34 +03:00
Lauri Ojansivu c55563696e Merge branch 'suprovsky-edge' into edge 2018-09-22 10:47:18 +03:00
Lauri Ojansivu b8043d2dfc Merge branch 'edge' of https://github.com/suprovsky/wekan into suprovsky-edge 2018-09-22 10:45:45 +03:00
Lauri Ojansivu 3942b584bf - Fix Feature Rules.
Thanks to Angtrim !
2018-09-22 10:43:12 +03:00
Lauri Ojansivu dce63842bb Merge branch 'Angtrim-feature-rules' into edge 2018-09-22 10:41:18 +03:00
Lauri Ojansivu 8c1630c638 Update translations. 2018-09-22 10:29:11 +03:00
Lauri Ojansivu f6db23b469 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-09-22 10:21:20 +03:00
Lauri Ojansivu 8c85955e6b Update translations (pl). 2018-09-22 10:16:06 +03:00
Lauri Ojansivu 86e3df0e5f Update translations (pl). 2018-09-22 10:14:57 +03:00
Lauri Ojansivu fd805399aa - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Thanks to xet7 !

Related #1908
2018-09-22 10:13:23 +03:00
Lauri Ojansivu 6ac726e198 - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Thanks to xet7 !

Related #1908
2018-09-22 10:09:37 +03:00
Lauri Ojansivu 73480a3e1c v1.50 2018-09-22 01:11:31 +03:00
Lauri Ojansivu 12656ee9a1 - Add default Wekan Snap MongoDB bind IP 127.0.0.1
Related #1908
2018-09-22 00:57:25 +03:00
Radosław Serba fff11d7fc9 export syntax error in bash 2018-09-21 20:25:53 +02:00
Angelo Gallarello dba5de1882 Lint fix 2018-09-21 20:19:47 +02:00
Angelo Gallarello 6201809810 Added general move trigger 2018-09-21 17:20:45 +02:00
Angelo Gallarello 99d38f2d61 Fixed card move to top/bottom 2018-09-21 17:06:22 +02:00
Angelo Gallarello 80e06b8ffc Rules hidden from non admin 2018-09-21 17:02:43 +02:00
Angelo Gallarello 93e69c94a2 Fixed card filter 2018-09-21 15:32:38 +02:00
Angelo Gallarello 1f02321e27 Fixed rules about member and box dropdowns width 2018-09-21 14:53:04 +02:00
Angelo Gallarello 37a53e7466 Fixed some rules 2018-09-21 14:22:00 +02:00
Lauri Ojansivu 254c7fe951 Update ChangeLog.
Thanks to xet7 !
2018-09-20 20:56:27 +03:00
Lauri Ojansivu 02a35f94a7 Merge branch 'devel' of github.com:wekan/wekan into devel 2018-09-20 20:52:59 +03:00
Lauri Ojansivu 39099106c6 - Update ChangeLog.
Thanks to xet7 !
2018-09-20 20:52:35 +03:00
Lauri Ojansivu 4f54442947 - Update readme.
Thanks to xet7 !
2018-09-20 20:51:17 +03:00
Lauri Ojansivu 1c4ce56b0f - Add more required debug info to GitHub issue template.
Thanks to xet7 !
2018-09-20 20:44:33 +03:00
Lauri Ojansivu 44f4a1c3bf - Add npm-debug.log and .DS_Store to .gitignore
Thanks to xet7 !
2018-09-20 20:43:19 +03:00
Lauri Ojansivu d652eb5cee - Add .DS_Store to .gitignore
Thansk to xet7 !
2018-09-20 20:41:41 +03:00
Lauri Ojansivu f7731f4f5e - Add npm-debug.log to .gitignore
Thanks to xet7 !
2018-09-20 20:40:40 +03:00
Lauri Ojansivu 94cd2ce690 Add more debug log requirements 2018-09-20 20:38:17 +03:00
Lauri Ojansivu 156164b5fd - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:29:40 +03:00
Lauri Ojansivu 1bad81ca86 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:18:53 +03:00
Lauri Ojansivu ff2d467d42 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:17:05 +03:00
Lauri Ojansivu 352e9033b6 - Fix Dockerfile Meteor install by changing tar to bsdtar.
Thanks to maurice-schleussinger and xet7 !

Closes #1900
2018-09-19 19:13:07 +03:00
Lauri Ojansivu 60ffe5ab9b Update translations. 2018-09-18 21:58:17 +03:00
Lauri Ojansivu 51c21fe639 Update translations. 2018-09-18 21:54:10 +03:00
Lauri Ojansivu bfabd63460 - Change from Node v8.12.0 prerelease to use official Node v8.12.0.
Thanks to GitHub user xet7 for contributions.
2018-09-17 20:42:50 +03:00
Lauri Ojansivu e7a03bb187 - Use official Node v8.12.0
Thanks to xet7 !
2018-09-17 20:39:49 +03:00
Lauri Ojansivu 9083d5f88d v1.49.1 2018-09-17 19:12:54 +03:00
Lauri Ojansivu e4cf94606c v1.49-edge-1 2018-09-17 19:05:15 +03:00
Lauri Ojansivu df4498f845 Update translations. 2018-09-17 18:54:15 +03:00
Lauri Ojansivu 7ec7a5f27c - Use official Node v8.12.0
Thanks to xet7 !
2018-09-17 18:52:30 +03:00
Lauri Ojansivu 4e21004c42 v1.49 2018-09-17 16:30:30 +03:00
Lauri Ojansivu ddb8c28c38 Update translations. 2018-09-17 16:27:49 +03:00
Lauri Ojansivu eb8c1530a5 Fix lint errors. 2018-09-17 15:53:03 +03:00
Lauri Ojansivu 70623df899 v1.48 2018-09-17 13:41:20 +03:00
Lauri Ojansivu 6d11f3345f - Remove OAuth2 until it is fixed.
Thanks to xet7 !
2018-09-17 13:35:38 +03:00
Lauri Ojansivu 3941066ba5 Update translations. 2018-09-17 13:26:08 +03:00
Lauri Ojansivu 53a020a23a - Remove OAuth2, until it is fixed.
Thanks to xet7 !
2018-09-17 13:23:08 +03:00
Lauri Ojansivu 2e52ff9e9d This release removes the following new features:
- Remove IFTTT rules, until they are fixed.

Thanks to xet7 !
2018-09-17 12:53:34 +03:00
Lauri Ojansivu 5445955a77 - Revert IFTTT.
Thanks to xet7 !
2018-09-17 12:49:43 +03:00
Lauri Ojansivu 338e18870f v1.47 2018-09-16 13:46:43 +03:00
Lauri Ojansivu 6516b96ee0 Update translations. 2018-09-16 13:42:24 +03:00
Lauri Ojansivu 0c28c5b087 Fix typo. 2018-09-16 13:38:51 +03:00
Lauri Ojansivu b23cbbf925 Merge branch 'Angtrim-feature-rules' into devel 2018-09-16 03:33:45 +03:00
Lauri Ojansivu 4f299b72f7 - IFTTT Rules. Useful to automate things like [adding labels, members, moving card, archiving them, checking checklists etc.
Please test and report bugs. Later colors need to be made translatable.

Thanks to GitHub users Angtrim and xet7 for their contributions.

Related #1160
2018-09-16 03:32:18 +03:00
Lauri Ojansivu ef04c2a826 Update translations. 2018-09-16 03:00:57 +03:00
Lauri Ojansivu b42649c777 Fix translation. 2018-09-16 02:48:52 +03:00
Lauri Ojansivu 5474099916 Fix translation. 2018-09-16 02:40:24 +03:00
Lauri Ojansivu 983a56b89b Fix translation. 2018-09-16 02:39:01 +03:00
Lauri Ojansivu 6fe7f3c553 Archive => Recycle Bin 2018-09-16 02:24:33 +03:00
Lauri Ojansivu df84a2be9a Fix lint errors. 2018-09-16 01:50:36 +03:00
Lauri Ojansivu b3a752ef34 Merge rules. 2018-09-16 00:44:41 +03:00
Lauri Ojansivu 6ab5f093d5 Detele temp files. 2018-09-16 00:11:55 +03:00
Lauri Ojansivu 6673b79738 Merge branch 'feature-rules' of https://github.com/Angtrim/wekan into Angtrim-feature-rules 2018-09-16 00:10:40 +03:00
Lauri Ojansivu 053757f135 Merge branch 'entrptaher-patch-1' into devel 2018-09-16 00:01:29 +03:00
Lauri Ojansivu c17bef2cce We do have some sponsors. 2018-09-16 00:00:51 +03:00
Angelo Gallarello 36c04edb9f Removed rasd file 2018-09-15 18:12:01 +02:00
Md. Abu Taher 4f7fd3bb7b Update README.md 2018-09-15 15:37:58 +06:00
Lauri Ojansivu 1983d3422b v1.46 2018-09-15 09:17:47 +03:00
Angelo Gallarello 8cb132f492 Export/Import done for rules 2018-09-14 19:20:24 +02:00
Angelo Gallarello a57806b054 Fixed listid 2018-09-14 18:03:57 +02:00
Angelo Gallarello 25da8376ca Beautyfied 2018-09-14 17:39:37 +02:00
Angelo Gallarello 30a3daa6af Finished alpha rules 2018-09-14 17:35:14 +02:00
Angelo Gallarello fc73dc5bbc Refactoring rules description 2018-09-14 16:49:06 +02:00
Lauri Ojansivu 9b43dd4fae - Allow Announcement to be markdown.
Note: xet7 did not yet figure out how to keep announcement on one line
  when markdown was added, so now Font Awesome icons are above and below.

Thanks to xet7 !

Closes #1892
2018-09-14 16:02:20 +03:00
Lauri Ojansivu e9f449e680 - [Allow Announcement to be markdown](https://github.com/wekan/wekan/issues/1892).
Note: xet7 did not yet figure out how to keep announcement on one line
  when markdown was added, so now Font Awesome icons are above and below.

Thanks to xet7 !

Closes #1892
2018-09-14 15:57:38 +03:00
Lauri Ojansivu 2e7a31f872 Update translations. 2018-09-13 15:13:13 +03:00
Lauri Ojansivu 2d546627e9 - Partially fix: Cannot move card from one swimline to the other if moving in the same list;
- Fix: Linking cards from empty board is possible and makes current board not load anymore.

Thanks to andresmanelli !

Related #1887,
closes #1885
2018-09-13 15:06:26 +03:00
Lauri Ojansivu f0cb948046 Merge branch 'andresmanelli-devel' into devel 2018-09-13 15:03:00 +03:00
Andrés Manelli 31f73057bf Fix #1885 2018-09-12 22:27:24 +02:00
Andrés Manelli 6aa7a2abef Fix #1887 2018-09-12 18:35:56 +02:00
Angelo Gallarello e649c79bb7 Fixed board id bug in move 2018-09-12 12:19:53 +02:00
Angelo Gallarello 34b37116cf Fixed rule allows 2018-09-12 00:52:29 +02:00
Lauri Ojansivu 4e7f33b9e2 - Add source-map-support.
Thanks to HLFH and xet7 !

Closes #1889
2018-09-11 16:32:23 +03:00
Lauri Ojansivu 1e2582f043 - Add source-map-support.
Thanks to xet7 !

Closes #1889
2018-09-11 16:25:24 +03:00
Lauri Ojansivu 63d4e0489f - Turn of http/2 in Caddyfile so that Firefox Inspect Console does not show errors about wss
websocket config. Chrome web console supports http/2.
  Note: If you are already using Caddy and have modified your Caddyfile, you need to edit your Caddyfile manually.

Thanks to GitHub user xet7 for contributions.
2018-09-11 00:49:54 +03:00
Lauri Ojansivu f1ab46d517 - Turn of http/2 so that Firefox Inspect Console does not show
wss websocket config. Chrome web console supports http/2.
  Note: If you are already using Caddy and have modified your
  Caddyfile, you need to edit your Caddyfile manually.

Thanks to xet7 !

Related #934
2018-09-11 00:43:27 +03:00
Lauri Ojansivu 4608c057d5 - Upgrade to MongoDB v3.2.21
Thanks to xet7 !
2018-09-10 00:56:16 +03:00
Lauri Ojansivu 0cb3aee803 - Upgrade to MongoDB v3.2.21
Thanks to xet7 !
2018-09-10 00:54:08 +03:00
Angelo Gallarello 1f5f429fc4 Completed rules 2018-08-19 18:53:50 +02:00
Angelo Gallarello 3b62b5ec5d Fixed triggers to use names and not id 2018-08-17 14:16:56 +02:00
Angelo Gallarello 2f24dcfc7d Progress on triggers UI 2018-08-16 23:37:29 +02:00
Angelo Gallarello fda4e954eb Completed activities log in card 2018-08-16 22:10:05 +02:00
Angelo Gallarello cc285afd59 Complete checklist activities 2018-08-16 21:49:56 +02:00
Angelo Gallarello f7446ba934 Remove attachment activity 2018-08-16 17:18:55 +02:00
Angelo Gallarello 9c6d374b95 Labels activities 2018-08-16 16:54:29 +02:00
Angelo Gallarello 99e7c65907 Fixed remove 2018-08-16 00:42:14 +02:00
Angelo Gallarello 6828ccd7f1 Main flow implemented 2018-08-16 00:32:31 +02:00
Angelo Gallarello 9b0eb0a9f1 Almost full circle 2018-08-15 18:47:09 +02:00
Angelo Gallarello 93cc7f0232 Triggers view 2018-08-04 15:15:04 +02:00
Angelo Gallarello 7e4bd4a0a7 Add and remove ui 2018-08-03 20:43:37 +02:00
Angelo Gallarello f63482b587 UI for rules list 2018-08-03 19:47:20 +02:00
215 changed files with 21739 additions and 3094 deletions

No files matched your search

+1 -1
View File
@@ -14,7 +14,7 @@
},
"rules": {
"strict": 0,
"no-undef": 2,
"no-undef": 0,
"accessor-pairs": 2,
"comma-dangle": [2, "always-multiline"],
"consistent-return": 2,
+12 -2
View File
@@ -1,8 +1,15 @@
## Issue
Add these issues to elsewhere:
- LDAP: https://github.com/wekan/wekan-ldap/issues
- Snap: https://github.com/wekan/wekan-snap/issues
Other Wekan issues can be added here.
**Server Setup Information**:
* Did you test in newest Wekan?:
* For new Wekan install, did you configure root-url correctly https://github.com/wekan/wekan/wiki/Settings ?
* Wekan version:
* If this is about old version of Wekan, what upgrade problem you have?:
* Operating System:
@@ -13,6 +20,9 @@
* ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
**Problem description**:
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work*
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work. Use peek to record animgif in Linux https://github.com/phw/peek*
- *Explain steps how to reproduce*
- *Attach log files in .zip file)*
- *In webbrowser, what does show Right Click / Inspect / Console ? Chrome shows more detailed info than Firefox.*
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ?*
- *If using Docker, what does show command `sudo docker logs wekan-app` ?*
- *If logs are very long, attach them in .zip file*
+3 -2
View File
@@ -4,11 +4,11 @@
*.sublime-workspace
tmp/
node_modules/
npm-debug.log
.vscode/
.idea/
.build/*
packages/kadira-flow-router/
packages/meteor-useraccounts-core/
packages/
package-lock.json
**/parts/
**/stage
@@ -16,3 +16,4 @@ package-lock.json
**/*.snap
snap/.snapcraft/
.idea
.DS_Store
+5 -3
View File
@@ -6,7 +6,7 @@
meteor-base@1.2.0
# Build system
ecmascript@0.9.0
ecmascript
stylus@2.513.13
standard-minifier-css@1.3.5
standard-minifier-js@2.2.0
@@ -63,7 +63,6 @@ mousetrap:mousetrap
mquandalle:jquery-textcomplete
mquandalle:jquery-ui-drag-drop-sort
mquandalle:mousetrap-bindglobal
mquandalle:perfect-scrollbar
peerlibrary:blaze-components@=0.15.1
perak:markdown
templates:tabs
@@ -84,7 +83,10 @@ cfs:gridfs
eluck:accounts-lockout
rzymek:fullcalendar
momentjs:moment@2.22.2
atoy40:accounts-cas
browser-policy-framing
mquandalle:moment
msavin:usercache
wekan:wekan-ldap
wekan:accounts-cas
wekan-scrollbar
mquandalle:perfect-scrollbar
+4 -1
View File
@@ -10,7 +10,6 @@ aldeed:simple-schema@1.5.3
alethes:pages@1.8.6
allow-deny@1.1.0
arillo:flow-router-helpers@0.5.2
atoy40:accounts-cas@0.0.2
audit-argument-checks@1.0.7
autoupdate@1.3.12
babel-compiler@6.24.7
@@ -180,4 +179,8 @@ useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.4.0
webapp-hashing@1.0.9
wekan-scrollbar@3.1.3
wekan:accounts-cas@0.1.0
wekan:wekan-ldap@0.0.2
yasaricli:slugify@0.0.7
zimme:active-route@2.3.2
+757
View File
@@ -1,3 +1,760 @@
# v2.03 2019-01-25 Wekan release
This release adds the following new features with Apache I-CLA, thanks to bentiss:
- Change [Swimlane](https://github.com/wekan/wekan/issues/1688)/[List](https://github.com/wekan/wekan/issues/328)/[Card](https://github.com/wekan/wekan/issues/428)
color with color picker at webbrowser and [REST API](https://github.com/wekan/wekan/commit/5769d438a05d01bd5f35cd5830b7ad3c03a21ed2);
- Lists-Color: [Only colorize the bottom border](https://github.com/wekan/wekan/commit/33977b2282d8891bf507c4d9a1502c644afd6352),
and make the background clearer to visually separate the header from the list of cards;
- [Change Swimlane to Horizontal](https://github.com/wekan/wekan/commit/dd88eb4cc191a06f7eb84213b026dfb93546f245);
- [Change IFTTT wizard color names to color picker](https://github.com/wekan/wekan/commit/4a2576fbc200d397bcf7cede45316d9fb7e520dd);
- REST API: [Add new card to the end of the list](https://github.com/wekan/wekan/commit/6c3dbc3c6f52a42ddbeeaec9bbfcc82c1c839f7d).
If we keep the `0` value, the card might be inserted in the middle of the list, making it hard to find it later on.
Always append the card at the end of the list by setting a sort value based on the number of cards in the list.
and fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [Fix set_board_member_permission](https://github.com/wekan/wekan/commit/082aabc7353d1fe75ccef1a7d942331be56f0838);
- [Fix the sort field when inserting a swimlane or a list](https://github.com/wekan/wekan/commit/b5411841cf6aa33b2c0d29d85cbc795e3faa7f4f).
This has the side effect of always inserting the element at the end;
- [Make sure Swimlanes and Lists have a populated sort field](https://github.com/wekan/wekan/commit/5c6a725712a443b4d03b4f86262033ddfb66bc3d).
When moving around the swimlanes or the lists, if one element has a sort
with a null value, the computation of the new sort value is aborted,
meaning that there are glitches in the UI.
This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API;
- UI: Lists: [Make sure all lists boxes are the same height](https://github.com/wekan/wekan/commit/97d95b4bcbcab86629e368ea41bb9f00450b21f6).
When `Show card count` is enabled, the lists with the card counts have
two lines of text while the lists without have only one.
This results in the box around the list headers are not of the same size
and this is visible when setting a color to the list.
Thanks to GitHub user bentiss for contributions, and translators for their translations.
# v2.02 2019-01-22 Wekan release
This release adds the following new features with Apache I-CLA, thanks to bentiss:
- [Add per card color: Card / Hamburger menu / Set Color](https://github.com/wekan/wekan/pull/2116) with [color picker](https://github.com/wekan/wekan/pull/2117);
- [OpenAPI and generating of REST API Docs](https://github.com/wekan/wekan/pull/1965);
- [Allow to retrieve full export of board from the REST API](https://github.com/wekan/wekan/pull/2118) through generic authentication.
When the board is big, retrieving individual cards is heavy for both the server and the number of requests.
Allowing the API to directly call on export and then treat the data makes the whole process smoother.
and adds the following new features with Apache I-CLA, thanks to xet7 and bentiss:
- [Translate and add color names to IFTTT Rules dropdown](https://github.com/wekan/wekan/commit/44e4df2492b95226f1297e7f556d61b1afaab714), thanks to xet7.
[Fix to this feature blank item](https://github.com/wekan/wekan/pull/2119), thanks to bentiss.
and adds these updates:
- Update translations. Thanks to translators.
- Added missing translation for 'days'. Thanks to Chartman123.
and fixes these typos;
- Fix typo, changelog year to 2019. Thanks to xorander00.
- Fix License to 2019. Thanks to ajRiverav.
Thanks to above GitHub users for their contributions.
# v2.01 2019-01-06 Wekan release
Update translations. Thanks to translators.
# v2.00 2019-01-04 Wekan release
Update translations. Thanks to translators.
# v1.99 2019-01-04 Wekan release
This release adds the following new features:
- [IFTTT Rules improvements](https://github.com/wekan/wekan/pull/2088). Thanks to Angtrim.
- Add [find.sh](https://github.com/wekan/wekan/blob/devel/find.sh) bash script that ignores
extra directories when searching. xet7 uses this a lot when developing. Thanks to xet7.
Thanks to above GitHub users for their contributions.
# v1.98 2019-01-01 Wekan release
This release adds the following new features:
- Add optional Nginx reverse proxy config to docker-compose.yml and nginx directory. Thanks to MyTheValentinus.
and fixes the following bugs:
- docker-compose.yml back to MongoDB 3.2.21 because 3.2.22 MongoDB container does not exist yet. Thanks to xet7.
- [Mobile fixes](https://github.com/wekan/wekan/pull/2084), thanks to hupptechnologies:
- Move home button / avatar bar from bottom to top. So at top first is home button / avatar, then others.
- When clicking Move Card, go to correct page position. Currently it's at empty page position, and there is
need to scroll page up to see Move Card options. It should work similarly like Copy Card, that is visible.
- Also check that other buttons go to visible page.
Thanks to above GitHub users for their contributions.
# v1.97 2018-12-26 Wekan release
This release adds the following new features:
- Upgrade to Node 8.15.0 and MongoDB 3.2.22.
- Stacksmith: back to Meteor 1.6.x based Wekan, because Meteor 1.8.x based is currently broken.
Thanks to GitHub user xet7 for contributions.
# v1.96 2018-12-24 Wekan release
This release adds the following new features:
- [Combine all docker-compose.yml files](https://github.com/wekan/wekan/commit/3f948ba49ba7266c436ff138716bdcae9e879903).
and tries to fix following bugs:
- Revert "Improve authentication", remove login dropdown and "Default Authentication Method" that were added
in Wekan v1.95 because login did not work with email address.
It was later found that login did work with username, so later this could be fixed and added back.
- Fixes to docker-compose.yml so that Wekan Meteor 1.6.x version would work.
Most likely Meteor 1.8.x version is still broken.
Thanks to GitHub user xet7 for contributions.
# v1.95 2018-12-21 Wekan release
This release adds the following new features:
- [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown,
and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or
`sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31
NOTE: This was reverted in Wekan v1.96 because login did not work with email address.
It was later found that login did work with username, so later this could be fixed and added back.
- [Drag handles and long press on mobile when using desktop mode of mobile
browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies.
- Upgrade to node v8.14.1 . Thanks to xet7.
Thanks to above GitHub users for their contributions.
# v1.94 2018-12-18 Wekan release
This release adds the following new features:
- Admin Panel / Layout / Custom HTML after `<body>` start, and Custom HTML before `</body>` end.
In progress, does not work yet. Thanks to xet7.
- Add Bitnami Stacksmith. In progress test version, that does work, but is not released yet. Thanks to j-fuentes.
Thanks to above GitHub users for their contributions.
# v1.93 2018-12-16 Wekan release
This release adds the following new features:
- In translations, only show name "Wekan" in Admin Panel Wekan version.
Elsewhere use general descriptions for whitelabeling.
Thanks to GitHub user xet7 and translators for their contributions.
# v1.92 2018-12-16 Wekan release
This release fixes the following bugs:
- Fix [Popup class declares member name _current but use current instead](https://github.com/wekan/wekan/issues/2059). Thanks to peishaofeng.
- Fix [Card scrollbar ignores mousewheel](https://github.com/wekan/wekan-scrollbar/commit/94a40da51627c6322afca50a5b1f4aa55c7ce7bf). Thanks to rinnaz and xet7. Closes #2058
- Fix [favicon paths for non-suburl cases](https://github.com/wekan/wekan/commit/c1733fc89c4c73a1ab3f4054d0a9ebff7741a804). Thanks to xet7. Related #1692
Thanks to above GitHub users for their contributions.
# v1.91 2018-12-15 Wekan release
This release fixes the following bugs:
- [Add back mquandalle:perfect-scrollbar package](https://github.com/wekan/wekan/issues/2057)
so that Firefox and Chrome stop complaining in browser dev tools console.
Thanks to GitHub users uusijani and xet7 for their contributions.
# v1.90 2018-12-15 Wekan release
This release fixes the following bugs:
- [Remove not working duplicate saveMailServerInfo](https://github.com/wekan/wekan/commit/ab031d9da134aa13490a26dbe97ad2d7d01d534a),
to remove error from browser dev tools console.
Thanks to GitHub user xet7 for contributions.
# v1.89 2018-12-15 Wekan release
This release adds the following new features:
- Admin Panel / Layout / Custom Product Name [now changes webpage title](https://github.com/wekan/wekan/commit/dbb1a86ca377e551063cc04c5189fad4aa9148c0).
Related #1196
Thanks to GitHub user xet7 for contributions.
# v1.88 2018-12-14 Wekan release
This release fixes the following bugs:
- Fix: [Scrollbar used](https://github.com/wekan/wekan/issues/2056) [remote file from CDN](https://github.com/MaazAli/Meteor-Malihu-Custom-Scrollbar/blob/master/jquery.mCustomScrollbar.js#L50),
so forked package to https://github.com/wekan/wekan-scrollbar and included
non-minified file locally to Wekan, so that using scrollbar works without direct connection
to Internet. Wekan should not load any external files by default, as was case before
new scrollbar, and is again now [after this fix](https://github.com/wekan/wekan/commit/c546464d9f56117a8bf580512cd62fc1102559c3).
Thanks to GitHub user xet7 for contributions.
# v1.87 2018-12-13 Wekan release
This release fixes the following bugs:
- Fix Reference error.
Thanks to GitHub user Akuket for contributions.
# v1.86 2018-12-13 Wekan release
This release fixes the following bugs:
- Fix [Cannot login with new LDAP account when auto-registration disabled (request invitation code)](https://github.com/wekan/wekan-ldap/issues/29);
- Fix [Unable to create new account from LDAP](https://github.com/wekan/wekan-ldap/issues/32).
Thanks to GitHub user Akuket for contributions.
# v1.85 2018-12-09 Wekan release
This release fixes the following bugs:
- Fix [Clicking the scrollbar closes the card on Chrome](https://github.com/wekan/wekan/issues/1404)
by changing [mquandalle:perfect-scrollbar to malihu-jquery-custom-scrollbar](https://github.com/wekan/wekan/pull/2050).
that works also when clicking scrollbar in Chrome. Also added back required packages that were removed in PR.
Thanks to GitHub users hupptechnologies and xet7 for their contributions.
# v1.84 2018-12-07 Wekan release
This release fixes the following bugs:
- Fix 2/8: IFTTT Rule action/trigger ["Remove all members from the card"](https://github.com/wekan/wekan/issues/1972).
Thanks to GitHub user BurakTuran9 for contributions.
# v1.83 2018-12-06 Wekan release
This release fixes the following bugs:
- Fix 1/8: IFTTT Rule action/trigger [When a checklist is completed](https://github.com/wekan/wekan/issues/1972).
And partial incomplete fix to when all of checklist is set as uncompleted. Help in fixing welcome.
Thanks to GitHub users BurakTuran9 and xet7 for their contributions.
# v1.82 2018-12-05 Wekan release
This release fixes the following bugs:
- Partially #2045 revert [Improve authentication](https://github.com/wekan/wekan/issues/2016),
adding back password/LDAP dropdown, because login did now work.
NOTE: This was added in v1.71, reverted at v1.73 because login did not work, added back at v1.79,
and then reverted partially at v1.82 because login did not work.
Related LDAP logout timer does not work yet.
Thanks to GitHub user xet7 for contributions.
# v1.81 2018-12-04 Wekan release
This release fixes the following bugs:
- Remove extra commas `,` and add missing backslash `\`.
Maybe after that login, logout and CORS works.
Thanks to GitHub user xet7 for contributions.
Related #2045,
related wekan/wekan-snap#69
# v1.80 2018-12-03 Wekan release
This release adds the following new features:
- Upgrade Node from v8.12 to v8.14
and fixes the following bugs:
- Revert non-working architectures that were added at v1.79, so now Wekan is just amd64 as before.
Thanks to GitHub user xet7 for contributions.
# v1.79 2018-12-03 Wekan release
This release adds the following new features:
- [Improve authentication, removing Login password/LDAP dropdown](https://github.com/wekan/wekan/issues/2016).
NOTE: This was added in v1.71, then reverted at v1.73 because login did not work, and after fix added back at v1.79.
Thanks to Akuket.
- Thanks to xet7:
- Build snap also on i386, armhf and arm64. Ignore if it fails. More fixes will be added later.
- Add CORS https://enable-cors.org/server_meteor.html to Standalone Wekan settings.
- Add missing LDAP and TIMER environment variables.
and fixes the following bugs:
- Fix: Message box for deleting subtask unreachable.
Thanks to hupptechnologies. Closes #1800
- Fix wrong dates in ChangeLog. Thanks to kelvinhammond.
Thanks to above GitHub users for their contributions.
# v1.78 2018-11-20 Wekan release
- Update translations (de).
# v1.77 2018-11-20 Wekan release
- Update version number. Trying to get Snap automatic review working, so that
it would accept new Wekan release.
# v1.76 2018-11-20 Wekan release
This release adds the following new features:
- Add [LDAP_FULLNAME_FIELD](https://github.com/wekan/wekan-ldap/issues/10) to
[configs](https://github.com/wekan/wekan/commit/8e3f53021775069dba125efd4b7200d0d70a1ed1)
and other options that were not in all config files. Thanks to alkemyst and xet7.
and fixes the following bugs:
- Fix: When saving Custom Layout, save also SMTP settings. Thanks to xet7.
Thanks to above GitHub users for their contributions.
# v1.75 2018-11-20 Wekan release
This release adds the following new features:
- Admin Panel / Layout: Hide Logo: Yes / No. This does hide Wekan logo on Login page and Board page. Thanks to xet7.
and fixes the following bugs:
- [Fix Snap database-list-backups command](https://github.com/wekan/wekan-snap/issues/26). Thanks to WaryWolf.
Thanks to above GitHub users for their contributions.
# v1.74.1 2018-11-18 Wekan Edge release
This release adds the following new features:
- [Full Name from LDAP server via environment variable](https://github.com/wekan/wekan-ldap/pull/18).
Thanks to GitHub user alkemyst for contributions.
# v1.74 2018-11-17 Wekan release
- Update version number to get this released to snap. Thanks to xet7.
# v1.73 2018-11-17 Wekan release
This release fixes the following bugs:
- Revert Improve authentication to [fix Login failure](https://github.com/wekan/wekan/issues/2004).
NOTE: This was added in v1.71, then reverted at v1.73 because login did not work, and after fix added back at v1.79.
Thanks to GitHub users Broxxx3 and xet7 for their contributions.
# v1.72 2018-11-17 Wekan release
- Update translations (fi).
# v1.71 2018-11-17 Wekan release
This release adds the following new features and bugfixes:
- Add languages, thanks to translators:
- Danish
- Swahili / Kiswahili
- Rename Recycle Bin to Archive. Thanks to xet7.
- Update readme for clarity. Thanks to xet7.
- [Improve authentication](https://github.com/wekan/wekan/pull/2003), thanks to Akuket:
- Removing the select box: Now it just checks the user.authenticationMethod value to choose the authentication method.
- Adding an option to choose the default authentication method with env var.
- Bug fix that allowed a user to connect with the password method while his user.authenticationMethod is "ldap" for example.
- Adding a server-side method which allows disconnecting a user after a delay defined by env vars.
- NOTE: This was added in v1.71, then reverted at v1.73 because login did not work, and after fix added back at v1.79.
- [Improve shell scripts](https://github.com/wekan/wekan/pull/2002). Thanks to warnerjon12.
Thanks to above GitHub users and translators for their contributions.
# v1.70 2018-11-09 Wekan release
This release adds the following new features:
- [Auto create Custom Field to all cards. Show Custom Field Label on
minicard](https://github.com/wekan/wekan/pull/1987).
and fixes the following bugs:
- Some fixes to Wekan import, thanks to xet7:
- isCommentOnly and isNoComments are now optional
- Turn off import error checking, so something is imported anyway, and import does not stop at error.
- Now most of Sandstorm export do import to Standalone Wekan, but some of imported cards, dates etc are missing.
- Sandstorm Import Wekan board warning messages are now translateable. But bug "Board not found" still exists.
- LDAP: Added INTERNAL_LOG_LEVEL. Fix lint and ldap group filter options. Thanks to Akuket.
Thanks to above mentioned GitHub users for their contributions.
# v1.69 2018-11-03 Wekan release
- Update translations.
# v1.68 2018-11-03 Wekan release
- Update translations.
# v1.67 2018-11-03 Wekan release
This release adds the following new features to all Wekan platforms:
- Add Hindi language. Thanks to saurabharch.
and hides the following features at Sandstorm:
- Hide Linked Card and Linked Board on Sandstorm, because they are only
useful when having multiple boards, and at Sandstorm
there is only one board per grain. Thanks to ocdtrekkie and xet7. Closes #1982
Thanks to above mentioned GitHub users for their contributions.
# v1.66 2018-10-31 Wekan release
This release fixes the following bugs:
- docker-compose.yml and docker-compose-build.yml, thanks to xet7:
- Remove single quotes, because settings are quoted automatically.
- Comment out most settings that have default values.
- Fix typos in CHANGELOG.md, thanks to Hillside502 and loginKing.
- [Fix typo about ldaps](https://github.com/wekan/wekan/pull/1980).
Documentation said to set LDAP_ENCRYPTION to true if we want to use
ldaps, but the code in wekan-ldap does not check if it is set to true,
but if the value equals to 'ssl' instead. Thanks to imkwx.
Thanks to above mentioned GitHub users for their contributions.
# v1.65 2018-10-25 Wekan release
This release adds the [following new features](https://github.com/wekan/wekan/pull/1967), with Apache I-CLA:
- UI: list headers: show the card count smaller in grey color below list name
- UI: lists: only output the number of cards for each swimlane
Thanks to GitHub user bentiss for contributions.
# v1.64.2 2018-10-25 Wekan Edge release
This release fixes the following bugs:
- Additional fix to [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to GitHub users Akuket and xet7 for their contributions.
# v1.64.1 2018-10-25 Wekan Edge release
This release fixes the following bugs:
- [Impossible to connect to LDAP if UserDN contain space(s)](https://github.com/wekan/wekan/issues/1970).
Thanks to GitHub users Akuket and xet7 for their contributions.
# v1.64 2018-10-24 Wekan release
- Update translations.
# v1.63 2018-10-24 Wekan release
This release adds the following new features:
REST API: [Allow to remove the full list of labels/members through the API](https://github.com/wekan/wekan/pull/1968), with Apache I-CLA:
- [Models: Cards: an empty string in members or label deletes the list](https://github.com/wekan/wekan/commit/e5949504b7ed42ad59742d2a0aa001fe6c762873).
There is currently no way to remove all members or all labels attached
to a card. If an empty string is provided, we can consider as a hint to
remove the list from the card.
- [Models: Cards: allow singletons to be assigned to members and labelIds](https://github.com/wekan/wekan/commit/2ce1ba37a1d0a09f8b3d2a1db4c8a11d1f98caa0).
If we need to set only one member or one label, the data provided will
not give us an array, but the only element as a string.
We need to detect that and convert the parameter into an array.
Thanks to GitHub user bentiss for contributions.
# v1.62 2018-10-24 Wekan release
- Fix missing dropdown arrow on Chrome. Thanks to xet7. Closes #1964
# v1.61 2018-10-24 Wekan release
- Fix lint error. Thanks to xet7.
# v1.60 2018-10-24 Wekan release
- Update translations.
# v1.59 2018-10-24 Wekan release
This release adds the beginning of following new features:
- Custom Product Name in Admin Panel / Layout. In Progress, setting does not affect change UI yet. Thanks to xet7.
and fixes the following bugs:
- Fix LDAP User Search Scope. Thanks to Vnimos and Akuket. Related #119
- Fix Save Admin Panel SMTP password. Thanks to saurabharch and xet7. Closes #1856
Thanks to above mentioned GitHub users for contributions.
# v1.58 2018-10-23 Wekan release
This release adds the [following new features and fixes](https://github.com/wekan/wekan/pull/1962), with Apache I-CLA:
- Also export the cards created with an older wekan instance (without linked cards) (related to #1873);
- Fix the GET customFields API that was failing;
- Allow to directly overwrite the members of cards and boards with a PUT call (this avoids to do multiple calls to add and remove users);
- Allow to change the swimlane of a card from the API.
Thanks to GitHub user bentiss for contributions.
# v1.57 2018-10-23 Wekan release
This release adds the following new features:
- Merge edge into stable. This brings LDAP, Rules, Role "No Comments", etc.
- Go back to Meteor 1.6.x and MongoDB 3.2.21 that works in Snap etc.
Thanks to GitHub user xet7 for contributions.
# v1.55.1 2018-10-16 Wekan Edge release
This release adds the following new features:
- [Automatically close the sidebar](https://github.com/wekan/wekan/pull/1954).
and fixes the following bugs:
- [LDAP: Include missing LDAP PR so that LDAP works](https://github.com/wekan/wekan-ldap/pull/6);
- [Improve notifications](https://github.com/wekan/wekan/pull/1948);
- [Fix deleting Custom Fields, removing broken references](https://github.com/wekan/wekan/issues/1872);
- [Fix vertical text for swimlanes in IE11](https://github.com/wekan/wekan/issues/1798);
- [Update broke the ability to mute notifications](https://github.com/wekan/wekan/pull/1954).
Thanks to GitHub users Akuket, Clement87 and tomodwyer for their contributions.
# v1.53.9 2018-10-11 Wekan Edge release
This release adds the following new features:
- docker-compose.yml in this Edge branch now works with Wekan Edge + Meteor 1.8.1-beta.0 + MongoDB 4.0.3;
- [Snap is still broken](https://forum.snapcraft.io/t/how-to-connect-to-localhost-mongodb-in-snap-apparmor-prevents/7793/2). Please use latest Snap release on Edge branch, until this is fixed.
Thanks to GitHub user xet7 for contributions.
# v1.53.8 2018-10-10 Wekan Edge release
This release tries to fix the following bugs:
- Try to fix Docker.
Thanks to GitHub user xet7 for contributions.
# v1.53.7 2018-10-10 Wekan Edge release
This release adds the following new features:
- Try MongoDB 4.0.3
Thanks to GitHub user xet7 for contributions.
# v1.53.6 2018-10-10 Wekan Edge release
This release adds the following new features:
- [Add LDAP to Snap Help](https://github.com/wekan/wekan/commit/809c8f64f69721d51b7d963248a77585867fac53).
and tries to fix the following bugs:
- Try to fix snap.
Thanks to GitHub users Akuket and xet7 for their contributions.
# v1.53.5 2018-10-10 Wekan Edge relase
This release tries to fix the following bugs:
- Try to fix snap.
Thanks to GitHub user xet7 for contributions.
# v1.53.4 2018-10-10 Wekan Edge release
This release adds the following new features:
- [Upgrade Hoek](https://github.com/wekan/wekan/commit/0b971b6ddb1ffc4adad6b6b09ae7f42dd376fe2c).
Thanks to GitHub user xet7 for contributions.
# v1.53.3 2018-10-10 Wekan Edge release
This release adds the following new features:
- [Upgrade](https://github.com/wekan/wekan/issues/1522) to [Meteor](https://blog.meteor.com/meteor-1-8-erases-the-debts-of-1-7-77af4c931fe3) [1.8.1-beta.0](https://github.com/meteor/meteor/issues/10216).
with [these](https://github.com/wekan/wekan/commit/079e45eb52a0f62ddb6051bf2ea80fac8860d3d5)
[commits](https://github.com/wekan/wekan/commit/dd47d46f4341a8c4ced05749633f783e88623e1b). So now it's possible to use MongoDB 2.6 - 4.0.
Thanks to GitHub user xet7 for contributions.
# v1.53.2 2018-10-10 Wekan Edge release
This release adds the following new features:
- [Add LDAP package to Docker and Snap](https://github.com/wekan/wekan/commit/f599391419bc7422a6ead52cdefc7d380e787897).
Thanks to GitHub user xet7 for contributions.
# v1.53.1 2018-10-10 Wekan Edge release
This release adds the following new features:
- [LDAP](https://github.com/wekan/wekan/commit/288800eafc91d07f859c4f59588e0b646137ccb9).
Please test and [add info about bugs](https://github.com/wekan/wekan/issues/119);
- [Add LDAP support and authentications dropdown menu on login page](https://github.com/wekan/wekan/pull/1943);
- [REST API: Get cards by swimlane id](https://github.com/wekan/wekan/pull/1944). Please [add docs](https://github.com/wekan/wekan/wiki/REST-API-Swimlanes).
and fixes the following bugs:
- [OpenShift: Drop default namespace value and duplicate WEKAN_SERVICE_NAME parameter.commit](https://github.com/wekan/wekan/commit/fcc3560df4dbcc418c63470776376238af4f6ddc);
- [Fix Card URL](https://github.com/wekan/wekan/pull/1932);
- [Add info about root-url to GitHub issue template](https://github.com/wekan/wekan/commit/4c0eb7dcc19ca9ae8c5d2d0276e0d024269de236);
- [Feature rules: fixes and enhancements](https://github.com/wekan/wekan/pull/1936).
Thanks to GitHub users Akuket, Angtrim, dcmcand, lberk, maximest-pierre, InfoSec812, schulz and xet7 for their contributions.
# v1.52.1 2018-10-02 Wekan Edge release
This release adds the following new features:
- REST API: [Add member with role to board. Remove member from board](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
[Docs](https://github.com/wekan/wekan/wiki/REST-API-Role). Related to [role issue](https://github.com/wekan/wekan/issues/1861).
and reverts previous change:
- OAuth2: [Revert Oidc preferred_username back to username](https://github.com/wekan/wekan/commit/33caf1809a459b136b671f7061f08eb5e8d5e920).
This [does not fix or break anything](https://github.com/wekan/wekan/issues/1874#issuecomment-425179291),
Oidc already works with [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper-provider-app).
Thanks to GitHub user xet7 for contributions.
# v1.51.2 2018-09-30 Wekan Edge release
This release adds the following new features:
- [REST API: Change role of board member](https://github.com/wekan/wekan/commit/51ac6c839ecf2226b2a81b0d4f985d3b942f0938).
Docs: https://github.com/wekan/wekan/wiki/REST-API-Role
Thanks to GitHub users entrptaher and xet7 for their contributions.
# v1.51.1 2018-09-28 Wekan Edge release
This release adds the following new features:
- [Add CAS with attributes](https://github.com/wekan/wekan/commit/bd6e4a351b984b032e17c57793a70923eb17d8f5);
- [Move Add Board button to top left, so there is no need to scroll to bottom when there is a lot of boards](https://github.com/wekan/wekan/commit/fb46a88a0f01f7f74ae6b941dd6f2060e020f09d).
Thanks to GitHub users ppoulard and xet7 for their contributions.
# v1.50.3 2018-09-23 Wekan Edge release
This release tries to fix the following bugs:
- [Remove "Fix Cannot setup mail server via snap variables"](https://github.com/wekan/wekan/commit/6d88baebc7e297ffdbbd5bb6971190b18f79d21f)
to see does Wekan Snap start correctly after removing it.
Thanks to GitHub user xet7 for contributions.
# v1.50.2 2018-09-23 Wekan Edge release
This release tries to fix the following bugs:
- Build Wekan and release again, to see does it work.
Thanks to GitHub user xet7 for contributions.
# v1.50.1 2018-09-22 Wekan Edge release
This release adds the following new features:
- [Change from Node v8.12.0 prerelease to use official Node v8.12.0](https://github.com/wekan/wekan/commit/7ec7a5f27c381e90f3da6bddc3773ed87b1c1a1f).
and fixes the following bugs:
- [Fix Dockerfile Meteor install by changing tar to bsdtar](https://github.com/wekan/wekan/commit/1bad81ca86ca87c02148764cc03a3070882a8a33);
- Add [npm-debug.log and .DS_Store](https://github.com/wekan/wekan/commit/44f4a1c3bf8033b6b658703a0ccaed5fdb183ab4) to .gitignore;
- [Add more debug log requirements to GitHub issue template](https://github.com/wekan/wekan/commit/1c4ce56b0f18e00e01b54c7059cbbf8d3e196154);
- [Add default Wekan Snap MongoDB bind IP 127.0.0.1](https://github.com/wekan/wekan/commit/6ac726e198933ee41c129d22a7118fcfbf4ca9a2);
- [Fix Feature Rules](https://github.com/wekan/wekan/pull/1909);
- [Fix Cannot setup mail server via snap variables](https://github.com/wekan/wekan/issues/1906);
- [Try to fix OAuth2: Change oidc username to preferred_username](https://github.com/wekan/wekan/commit/734e4e5f3ff2c3dabf94c0fbfca561db066c4565).
Thanks to GitHub users Angtrim, maurice-schleussinger, suprovsky and xet7 for their contributions.
# v1.49.1 2018-09-17 Wekan Edge release
This release adds the following new features:
- Change from Node v8.12.0 prerelease to use official Node v8.12.0.
Thanks to GitHub user xet7 for contributions.
# v1.49 2018-09-17 Wekan release
This release fixes the following bugs:
- Fix lint errors.
Thanks to GitHub user xet7 for contributions.
# v1.48 2018-09-17 Wekan release
This release removes the following new features:
- Remove IFTTT rules, until they are fixed.
- Remove OAuth2, until it is fixed.
Thanks to GitHub user xet7 for contributions.
# v1.47 2018-09-16 Wekan release
This release adds the following new features:
- [IFTTT Rules](https://github.com/wekan/wekan/pull/1896). Useful to automate things like
[adding labels, members, moving card, archiving them, checking checklists etc](https://github.com/wekan/wekan/issues/1160).
Please test and report bugs. Later colors need to be made translatable.
Thanks to GitHub users Angtrim and xet7 for their contributions.
# v1.46 2018-09-15 Wekan release
This release adds the following new features:
- [Upgrade MongoDB to 3.2.21](https://github.com/wekan/wekan/commit/0cb3aee803781e4241c38a3e1e700703d063035a);
- [Add source-map-support](https://github.com/wekan/wekan/issues/1889);
- [Allow Announcement to be markdown](https://github.com/wekan/wekan/issues/1892).
Note: xet7 did not yet figure out how to keep announcement on one line
when markdown was added, so now Font Awesome icons are above and below.
and fixes the following bugs:
- [Turn of http/2 in Caddyfile](https://github.com/wekan/wekan/commit/f1ab46d5178b6fb7e9c4e43628eec358026d287a)
so that Firefox Inspect Console does not [show errors about wss](https://github.com/wekan/wekan/issues/934)
websocket config. Chrome web console supports http/2.
Note: If you are already using Caddy and have modified your Caddyfile, you need to edit your Caddyfile manually.
- [Partially fix: Cannot move card from one swimline to the other if moving in the same list](https://github.com/wekan/wekan/issues/1887);
- [Fix: Linking cards from empty board is possible and makes current board not load anymore](https://github.com/wekan/wekan/issues/1885).
Thanks to GitHub users andresmanelli, HLFH and xet7 for their contributions.
# v1.45 2018-09-09 Wekan release
This release fixes the following bugs:
+134 -10
View File
@@ -18,18 +18,65 @@ ARG MATOMO_WITH_USERNAME
ARG BROWSER_POLICY_ENABLED
ARG TRUSTED_URL
ARG WEBHOOKS_ATTRIBUTES
ARG OAUTH2_ENABLED
ARG OAUTH2_CLIENT_ID
ARG OAUTH2_SECRET
ARG OAUTH2_SERVER_URL
ARG OAUTH2_AUTH_ENDPOINT
ARG OAUTH2_USERINFO_ENDPOINT
ARG OAUTH2_TOKEN_ENDPOINT
ARG LDAP_ENABLE
ARG LDAP_PORT
ARG LDAP_HOST
ARG LDAP_BASEDN
ARG LDAP_LOGIN_FALLBACK
ARG LDAP_RECONNECT
ARG LDAP_TIMEOUT
ARG LDAP_IDLE_TIMEOUT
ARG LDAP_CONNECT_TIMEOUT
ARG LDAP_AUTHENTIFICATION
ARG LDAP_AUTHENTIFICATION_USERDN
ARG LDAP_AUTHENTIFICATION_PASSWORD
ARG LDAP_LOG_ENABLED
ARG LDAP_BACKGROUND_SYNC
ARG LDAP_BACKGROUND_SYNC_INTERVAL
ARG LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED
ARG LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS
ARG LDAP_ENCRYPTION
ARG LDAP_CA_CERT
ARG LDAP_REJECT_UNAUTHORIZED
ARG LDAP_USER_SEARCH_FILTER
ARG LDAP_USER_SEARCH_SCOPE
ARG LDAP_USER_SEARCH_FIELD
ARG LDAP_SEARCH_PAGE_SIZE
ARG LDAP_SEARCH_SIZE_LIMIT
ARG LDAP_GROUP_FILTER_ENABLE
ARG LDAP_GROUP_FILTER_OBJECTCLASS
ARG LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT
ARG LDAP_GROUP_FILTER_GROUP_NAME
ARG LDAP_UNIQUE_IDENTIFIER_FIELD
ARG LDAP_UTF8_NAMES_SLUGIFY
ARG LDAP_USERNAME_FIELD
ARG LDAP_FULLNAME_FIELD
ARG LDAP_MERGE_EXISTING_USERS
ARG LDAP_SYNC_USER_DATA
ARG LDAP_SYNC_USER_DATA_FIELDMAP
ARG LDAP_SYNC_GROUP_ROLES
ARG LDAP_DEFAULT_DOMAIN
ARG LOGOUT_WITH_TIMER
ARG LOGOUT_IN
ARG LOGOUT_ON_HOURS
ARG LOGOUT_ON_MINUTES
ARG CORS
ARG DEFAULT_AUTHENTICATION_METHOD
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7" \
NODE_VERSION=v8.12.0 \
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
NODE_VERSION=v8.15.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -45,26 +92,79 @@ ENV BUILD_DEPS="apt-utils gnupg gosu wget curl bzip2 build-essential python git
BROWSER_POLICY_ENABLED=true \
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
OAUTH2_SERVER_URL="" \
OAUTH2_AUTH_ENDPOINT="" \
OAUTH2_USERINFO_ENDPOINT="" \
OAUTH2_TOKEN_ENDPOINT=""
OAUTH2_TOKEN_ENDPOINT="" \
LDAP_ENABLE=false \
LDAP_PORT=389 \
LDAP_HOST="" \
LDAP_BASEDN="" \
LDAP_LOGIN_FALLBACK=false \
LDAP_RECONNECT=true \
LDAP_TIMEOUT=10000 \
LDAP_IDLE_TIMEOUT=10000 \
LDAP_CONNECT_TIMEOUT=10000 \
LDAP_AUTHENTIFICATION=false \
LDAP_AUTHENTIFICATION_USERDN="" \
LDAP_AUTHENTIFICATION_PASSWORD="" \
LDAP_LOG_ENABLED=false \
LDAP_BACKGROUND_SYNC=false \
LDAP_BACKGROUND_SYNC_INTERVAL=100 \
LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false \
LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false \
LDAP_ENCRYPTION=false \
LDAP_CA_CERT="" \
LDAP_REJECT_UNAUTHORIZED=false \
LDAP_USER_SEARCH_FILTER="" \
LDAP_USER_SEARCH_SCOPE="" \
LDAP_USER_SEARCH_FIELD="" \
LDAP_SEARCH_PAGE_SIZE=0 \
LDAP_SEARCH_SIZE_LIMIT=0 \
LDAP_GROUP_FILTER_ENABLE=false \
LDAP_GROUP_FILTER_OBJECTCLASS="" \
LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT="" \
LDAP_GROUP_FILTER_GROUP_NAME="" \
LDAP_UNIQUE_IDENTIFIER_FIELD="" \
LDAP_UTF8_NAMES_SLUGIFY=true \
LDAP_USERNAME_FIELD="" \
LDAP_FULLNAME_FIELD="" \
LDAP_MERGE_EXISTING_USERS=false \
LDAP_SYNC_USER_DATA=false \
LDAP_SYNC_USER_DATA_FIELDMAP="" \
LDAP_SYNC_GROUP_ROLES="" \
LDAP_DEFAULT_DOMAIN="" \
LOGOUT_WITH_TIMER=false \
LOGOUT_IN="" \
LOGOUT_ON_HOURS="" \
LOGOUT_ON_MINUTES="" \
CORS="" \
DEFAULT_AUTHENTICATION_METHOD=""
# Copy the app to the image
COPY ${SRC_PATH} /home/wekan/app
RUN \
set -o xtrace && \
# Add non-root user wekan
useradd --user-group --system --home-dir /home/wekan wekan && \
\
# OS dependencies
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
\
# Meteor installer doesn't work with the default tar binary, so using bsdtar while installing.
# https://github.com/coreos/bugs/issues/1095#issuecomment-350574389
cp $(which tar) $(which tar)~ && \
ln -sf $(which bsdtar) $(which tar) && \
\
# Download nodejs
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
#---------------------------------------------------------------------------------------------
# Node Fibers 100% CPU usage issue:
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
@@ -73,10 +173,10 @@ RUN \
# Also see beginning of wekan/server/authentication.js
# import Fiber from "fibers";
# Fiber.poolSize = 1e9;
# Download node version 8.12.0 prerelease that has fix included,
# OLD: Download node version 8.12.0 prerelease that has fix included, => Official 8.12.0 has been released
# Description at https://releases.wekan.team/node.txt
wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
echo "1ed54adb8497ad8967075a0b5d03dd5d0a502be43d4a4d84e5af489c613d7795 node-v8.12.0-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
#wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
#echo "1ed54adb8497ad8967075a0b5d03dd5d0a502be43d4a4d84e5af489c613d7795 node-v8.12.0-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
\
# Verify nodejs authenticity
grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
@@ -123,8 +223,11 @@ RUN \
# Change user to wekan and install meteor
cd /home/wekan/ && \
chown wekan:wekan --recursive /home/wekan && \
curl https://install.meteor.com -o /home/wekan/install_meteor.sh && \
sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh && \
#curl "https://install.meteor.com/?release=${METEOR_RELEASE}" -o /home/wekan/install_meteor.sh && \
# OLD: sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
# Install Meteor forcing its progress
sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh && \
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
chown wekan:wekan /home/wekan/install_meteor.sh && \
\
@@ -141,10 +244,25 @@ RUN \
cd /home/wekan/app/packages && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/flow-router.git kadira-flow-router && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/meteor-useraccounts/core.git meteor-useraccounts-core && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/meteor-accounts-cas.git && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/wekan-ldap.git && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/wekan/wekan-scrollbar.git && \
sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js && \
cd /home/wekan/.meteor && \
gosu wekan:wekan /home/wekan/.meteor/meteor -- help; \
\
# extract the OpenAPI specification
npm install -g api2html && \
mkdir -p /home/wekan/python && \
chown wekan:wekan --recursive /home/wekan/python && \
cd /home/wekan/python && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/Kronuz/esprima-python && \
cd /home/wekan/python/esprima-python && \
python3 setup.py install --record files.txt && \
cd /home/wekan/app &&\
mkdir -p ./public/api && \
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
/opt/nodejs/bin/api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
# Build app
cd /home/wekan/app && \
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
@@ -163,13 +281,19 @@ RUN \
#gosu wekan:wekan npm install bcrypt && \
mv /home/wekan/app_build/bundle /build && \
\
# Put back the original tar
mv $(which tar)~ $(which tar) && \
\
# Cleanup
apt-get remove --purge -y ${BUILD_DEPS} && \
apt-get autoremove -y && \
npm uninstall -g api2html &&\
rm -R /var/lib/apt/lists/* && \
rm -R /home/wekan/.meteor && \
rm -R /home/wekan/app && \
rm -R /home/wekan/app_build && \
cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \
rm -R /home/wekan/python && \
rm /home/wekan/install_meteor.sh
ENV PORT=8080
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2018 The Wekan Team
Copyright (c) 2014-2019 The Wekan Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+52 -41
View File
@@ -1,9 +1,4 @@
# Wekan
[![Translate Wekan at Transifex](https://img.shields.io/badge/Translate%20Wekan-at%20Transifex-brightgreen.svg "Freenode IRC")](https://transifex.com/wekan/wekan)
[![Wekan Vanila Chat][vanila_badge]][vanila_chat]
[![IRC #wekan](https://img.shields.io/badge/IRC%20%23wekan-on%20Freenode-brightgreen.svg "Freenode IRC")](http://webchat.freenode.net?channels=%23wekan&uio=d4)
# Wekan - Open Source kanban
[![Contributors](https://img.shields.io/github/contributors/wekan/wekan.svg "Contributors")](https://github.com/wekan/wekan/graphs/contributors)
[![Docker Repository on Quay](https://quay.io/repository/wekan/wekan/status "Docker Repository on Quay")](https://quay.io/repository/wekan/wekan)
@@ -15,53 +10,62 @@
[![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
[![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
Please read [FAQ](https://github.com/wekan/wekan/wiki/FAQ).
Please don't feed the trolls and spammers that are mentioned in the FAQ :)
## [Translate Wekan at Transifex](https://transifex.com/wekan/wekan)
Translations to non-English languages are accepted only at [Transifex](https://transifex.com/wekan/wekan) using webbrowser.
New English strings of new features can be added as PRs to edge branch file wekan/i18n/en.i18n.json .
## [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues)
Please add most of your questions as GitHub issue: [Wekan feature requests and bugs](https://github.com/wekan/wekan/issues).
It's better than at chat where details get lost when chat scrolls up.
## Chat
[![Wekan Vanila Chat][vanila_badge]][vanila_chat] - Most Wekan community and developers are here at #wekan chat channel.
Use webbrowser to register, and after that you can also alternatively use mobile app Rocket.Chat by Rocket.Chat with
address https://chat.vanila.io and same username and password.
[Wekan IRC FAQ](https://github.com/wekan/wekan/wiki/IRC-FAQ)
## FAQ
**NOTE**:
- Please read the [FAQ](https://github.com/wekan/wekan/wiki/FAQ) first
- Please don't feed the trolls and spammers that are mentioned in the FAQ :)
## About Wekan
Wekan is an completely [Open Source][open_source] and [Free software][free_software]
collaborative kanban board application with MIT license.
Whether you’re maintaining a personal todo list, planning your holidays with
some friends, or working in a team on your next revolutionary idea, Kanban
boards are an unbeatable tool to keep your things organized. They give you a
visual overview of the current state of your project, and make you productive by
allowing you to focus on the few items that matter the most.
Whether you’re maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
Wekan has real-time user interface. Not all features are implemented.
Since Wekan is a free software, you don’t have to trust us with your data and can
install Wekan on your own computer or server. In fact we encourage you to do
that by providing one-click installation on various platforms.
[Features][features]
Wekan supports many [Platforms][platforms], and plan is to add more.
[Integrations][integrations]
[Team](https://github.com/wekan/wekan/wiki/Team)
You don’t have to trust us with your data and can install Wekan on your own
computer or server. In fact we encourage you to do that by providing
one-click installation on various platforms.
- [Features][features]: Wekan has real-time user interface. Not all features are implemented, yet.
- [Platforms][platforms]: Wekan supports many platforms and plan is to add more. This will be the first place to look if you want to **install** it, test out and learn more in depth.
- [Integrations][integrations]: Current possible integrations and future plans.
- [Team](https://github.com/wekan/wekan/wiki/Team): The people who spends their time and make Wekan into what it is right now.
## Roadmap
[Roadmap](https://github.com/wekan/wekan/wiki/Roadmap)
Upcoming Wekan App Development Platform will make possible
many use cases. If you don't find your feature or integration in
GitHub issues and [Features][features] or [Integrations][integrations]
page at wiki, please add them.
Upcoming Wekan App Development Platform will make possible many use cases. If you don't find your feature or integration in
GitHub issues and [Features][features] or [Integrations][integrations] page at wiki, please add them.
We are very welcoming to new developers and teams to submit new pull
requests to devel branch to make this Wekan App Development Platform possible
faster. Please see [Developer Documentation][dev_docs] to get started.
We also welcome sponsors for features, although we don't have any yet.
By working directly with Wekan you get the benefit of active maintenance
and new features added by growing Wekan developer community.
We are very welcoming to new developers and teams to submit new pull requests to devel branch to make this Wekan App Development Platform possible faster. Please see [Developer Documentation][dev_docs] to get started.
We also welcome sponsors for features and bugfixes. By working directly with Wekan you get the benefit of active maintenance and new features added by growing Wekan developer community.
Actual work happens at [Wekan GitHub issues][wekan_issues].
See [Development links on Wekan
wiki](https://github.com/wekan/wekan/wiki#Development)
bottom of the page for more info.
See [Development links on Wekan wiki](https://github.com/wekan/wekan/wiki#Development) bottom of the page for more info.
If you want to know what is going on exactly this moment, you can check out the [project page](https://github.com/wekan/wekan/projects/2).
## Demo
@@ -73,9 +77,16 @@ bottom of the page for more info.
[![Screenshot of Wekan][screenshot_wefork]][roadmap_wefork]
Since Wekan is a free software, you don’t have to trust us with your data and can
install Wekan on your own computer or server. In fact we encourage you to do
that by providing one-click installation on various platforms.
## Stable
- master+devel branch. At release, devel is merged to master.
- Receives fixes and features that have been tested at edge that they work.
- If you want automatic updates, [use Snap](https://github.com/wekan/wekan-snap/wiki/Install).
- If you want to test before update, [use Docker quay.io release tags](https://github.com/wekan/wekan/wiki/Docker).
## Edge
- edge branch. All new fixes and features are added to here first. [Testing Edge](https://github.com/wekan/wekan-snap/wiki/Snap-Developer-Docs).
## License
+9
View File
@@ -0,0 +1,9 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.03.0"
files:
userUploads:
- README.md
userScripts:
build: stacksmith/user-scripts/build.sh
boot: stacksmith/user-scripts/boot.sh
run: stacksmith/user-scripts/run.sh
@@ -14,6 +14,9 @@ template(name="boardActivities")
p.activity-desc
+memberName(user=user)
if($eq activityType 'deleteAttachment')
| {{{_ 'activity-delete-attach' cardLink}}}.
if($eq activityType 'addAttachment')
| {{{_ 'activity-attached' attachmentLink cardLink}}}.
@@ -31,12 +34,28 @@ template(name="boardActivities")
.activity-checklist(href="{{ card.absoluteUrl }}")
+viewer
= checklist.title
if($eq activityType 'removeChecklist')
| {{{_ 'activity-checklist-removed' cardLink}}}.
if($eq activityType 'checkedItem')
| {{{_ 'activity-checked-item' checkItem checklist.title cardLink}}}.
if($eq activityType 'uncheckedItem')
| {{{_ 'activity-unchecked-item' checkItem checklist.title cardLink}}}.
if($eq activityType 'checklistCompleted')
| {{{_ 'activity-checklist-completed' checklist.title cardLink}}}.
if($eq activityType 'checklistUncompleted')
| {{{_ 'activity-checklist-uncompleted' checklist.title cardLink}}}.
if($eq activityType 'addChecklistItem')
| {{{_ 'activity-checklist-item-added' checklist.title cardLink}}}.
.activity-checklist(href="{{ card.absoluteUrl }}")
+viewer
= checklistItem.title
if($eq activityType 'removedChecklistItem')
| {{{_ 'activity-checklist-item-removed' checklist.title cardLink}}}.
if($eq activityType 'archivedCard')
| {{{_ 'activity-archived' cardLink}}}.
@@ -89,6 +108,12 @@ template(name="boardActivities")
if($eq activityType 'restoredCard')
| {{{_ 'activity-sent' cardLink boardLabel}}}.
if($eq activityType 'addedLabel')
| {{{_ 'activity-added-label' lastLabel cardLink}}}.
if($eq activityType 'removedLabel')
| {{{_ 'activity-removed-label' lastLabel cardLink}}}.
if($eq activityType 'unjoinMember')
if($eq user._id member._id)
| {{{_ 'activity-unjoined' cardLink}}}.
@@ -119,6 +144,28 @@ template(name="cardActivities")
| {{{_ 'activity-removed' cardLabel memberLink}}}.
if($eq activityType 'archivedCard')
| {{_ 'activity-archived' cardLabel}}.
if($eq activityType 'addedLabel')
| {{{_ 'activity-added-label-card' lastLabel }}}.
if($eq activityType 'removedLabel')
| {{{_ 'activity-removed-label-card' lastLabel }}}.
if($eq activityType 'removeChecklist')
| {{{_ 'activity-checklist-removed' cardLabel}}}.
if($eq activityType 'checkedItem')
| {{{_ 'activity-checked-item-card' checkItem checklist.title }}}.
if($eq activityType 'uncheckedItem')
| {{{_ 'activity-unchecked-item-card' checkItem checklist.title }}}.
if($eq activityType 'checklistCompleted')
| {{{_ 'activity-checklist-completed-card' checklist.title }}}.
if($eq activityType 'checklistUncompleted')
| {{{_ 'activity-checklist-uncompleted-card' checklist.title }}}.
if($eq activityType 'restoredCard')
| {{_ 'activity-sent' cardLabel boardLabel}}.
if($eq activityType 'moveCard')
@@ -127,6 +174,10 @@ template(name="cardActivities")
| {{{_ 'activity-attached' attachmentLink cardLabel}}}.
if attachment.isImage
img.attachment-image-preview(src=attachment.url)
if($eq activityType 'deleteAttachment')
| {{{_ 'activity-delete-attach' cardLabel}}}.
if($eq activityType 'removedChecklist')
| {{{_ 'activity-checklist-removed' cardLabel}}}.
if($eq activityType 'addChecklist')
| {{{_ 'activity-checklist-added' cardLabel}}}.
.activity-checklist
@@ -50,6 +50,12 @@ BlazeComponent.extendComponent({
}
},
checkItem(){
const checkItemId = this.currentData().checklistItemId;
const checkItem = ChecklistItems.findOne({_id:checkItemId});
return checkItem.title;
},
boardLabel() {
return TAPi18n.__('this-board');
},
@@ -66,6 +72,16 @@ BlazeComponent.extendComponent({
}, card.title));
},
lastLabel(){
const lastLabelId = this.currentData().labelId;
const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(lastLabelId);
if(lastLabel.name === undefined || lastLabel.name === ''){
return lastLabel.color;
}else{
return lastLabel.name;
}
},
listLabel() {
return this.currentData().list().title;
},
+38
View File
@@ -35,6 +35,37 @@ BlazeComponent.extendComponent({
this._isDragging = false;
// Used to set the overlay
this.mouseHasEnterCardDetails = false;
// fix swimlanes sort field if there are null values
const currentBoardData = Boards.findOne(Session.get('currentBoard'));
const nullSortSwimlanes = currentBoardData.nullSortSwimlanes();
if (nullSortSwimlanes.count() > 0) {
const swimlanes = currentBoardData.swimlanes();
let count = 0;
swimlanes.forEach((s) => {
Swimlanes.update(s._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
// fix lists sort field if there are null values
const nullSortLists = currentBoardData.nullSortLists();
if (nullSortLists.count() > 0) {
const lists = currentBoardData.lists();
let count = 0;
lists.forEach((l) => {
Lists.update(l._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
},
onRendered() {
const boardComponent = this;
@@ -147,6 +178,13 @@ BlazeComponent.extendComponent({
});
},
scrollTop(position = 0) {
const swimlanes = this.$('.js-swimlanes');
swimlanes && swimlanes.animate({
scrollTop: position,
});
},
}).register('boardBody');
BlazeComponent.extendComponent({
@@ -87,6 +87,10 @@ template(name="boardHeaderBar")
if Filter.isActive
a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
i.fa.fa-times-thin
if currentUser.isAdmin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
span {{_ 'rules'}}
a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")
i.fa.fa-search
@@ -290,6 +294,11 @@ template(name="boardChangeTitlePopup")
textarea.js-board-desc= description
input.primary.wide(type="submit" value="{{_ 'rename'}}")
template(name="boardCreateRulePopup")
p {{_ 'close-board-pop'}}
button.js-confirm.negate.full(type="submit") {{_ 'archive'}}
template(name="archiveBoardPopup")
p {{_ 'close-board-pop'}}
button.js-confirm.negate.full(type="submit") {{_ 'archive'}}
+3
View File
@@ -108,6 +108,9 @@ BlazeComponent.extendComponent({
'click .js-open-search-view'() {
Sidebar.setView('search');
},
'click .js-open-rules-view'() {
Modal.openWide('rulesMain');
},
'click .js-multiselection-activate'() {
const currentCard = Session.get('currentCard');
MultiSelection.activate();
+2 -3
View File
@@ -1,6 +1,8 @@
template(name="boardList")
.wrapper
ul.board-list.clearfix
li.js-add-board
a.board-list-item.label {{_ 'add-board'}}
each boards
li(class="{{#if isStarred}}starred{{/if}}" class=colorClass)
if isInvited
@@ -27,9 +29,6 @@ template(name="boardList")
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
p.board-list-item-desc= description
li.js-add-board
a.board-list-item.label {{_ 'add-board'}}
template(name="boardListHeaderBar")
h1 {{_ 'my-boards'}}
+24 -11
View File
@@ -1,6 +1,6 @@
template(name="cardDetails")
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
.card-details-header
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
else
@@ -19,14 +19,16 @@ template(name="cardDetails")
a.js-parent-card(href=linkForCard) {{title}}
// else
{{_ 'top-level-card'}}
if isLinkedCard
h3.linked-card-location
+viewer
| {{getBoardTitle}} > {{getTitle}}
unless isSandstorm
if isLinkedCard
h3.linked-card-location
+viewer
| {{getBoardTitle}} > {{getTitle}}
if getArchived
if isLinkedBoard
p.warning {{_ 'board-archived'}}
unless isSandstorm
p.warning {{_ 'board-archived'}}
else
p.warning {{_ 'card-archived'}}
@@ -190,9 +192,11 @@ template(name="cardDetails")
unless currentUser.isNoComments
if isLoaded.get
if isLinkedCard
+activities(card=this mode="linkedcard")
unless isSandstorm
+activities(card=this mode="linkedcard")
else if isLinkedBoard
+activities(card=this mode="linkedboard")
unless isSandstorm
+activities(card=this mode="linkedboard")
else
+activities(card=this mode="card")
@@ -230,6 +234,7 @@ template(name="cardDetailsActionsPopup")
li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
li: a.js-set-card-color {{_ 'setCardColorPopup-title'}}
hr
ul.pop-over-list
li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}
@@ -260,7 +265,7 @@ template(name="copyChecklistToManyCardsPopup")
template(name="boardsAndLists")
label {{_ 'boards'}}:
select.js-select-boards
select.js-select-boards(autofocus)
each boards
if $eq _id currentBoard._id
option(value="{{_id}}" selected) {{_ 'current'}}
@@ -298,7 +303,7 @@ template(name="cardMorePopup")
span {{_ 'link-card'}}
= ' '
i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}")
input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
span.clearfix
br
@@ -331,7 +336,15 @@ template(name="cardMorePopup")
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
template(name="setCardColorPopup")
form.edit-label
.palette-colors: each colors
unless $eq color 'white'
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
template(name="cardDeletePopup")
p {{_ "card-delete-pop"}}
+60 -1
View File
@@ -1,6 +1,11 @@
const subManager = new SubsManager();
const { calculateIndexData, enableClickOnTouch } = Utils;
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
@@ -69,6 +74,20 @@ BlazeComponent.extendComponent({
if (offset) {
bodyBoardComponent.scrollLeft(cardContainerScroll + offset);
}
//Scroll top
const cardViewStartTop = $cardView.offset().top;
const cardContainerScrollTop = $cardContainer.scrollTop();
let topOffset = false;
if(cardViewStartTop < 0){
topOffset = 0;
} else if(cardViewStartTop - cardContainerScrollTop > 100) {
topOffset = cardViewStartTop - cardContainerScrollTop - 100;
}
if(topOffset !== false) {
bodyBoardComponent.scrollTop(topOffset);
}
},
presentParentTask() {
@@ -96,7 +115,12 @@ BlazeComponent.extendComponent({
},
onRendered() {
if (!Utils.isMiniScreen()) this.scrollParentContainer();
if (!Utils.isMiniScreen()) {
Meteor.setTimeout(() => {
$('.card-details').mCustomScrollbar({theme:'minimal-dark', setWidth: false, setLeft: 0, scrollbarPosition: 'outside', mouseWheel: true });
this.scrollParentContainer();
}, 500);
}
const $checklistsDom = this.$('.card-checklist-items');
$checklistsDom.sortable({
@@ -318,6 +342,7 @@ Template.cardDetailsActionsPopup.events({
'click .js-move-card': Popup.open('moveCard'),
'click .js-copy-card': Popup.open('copyCard'),
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-move-card-to-top' (evt) {
evt.preventDefault();
const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
@@ -564,6 +589,40 @@ Template.copyChecklistToManyCardsPopup.events({
},
});
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
this.currentColor = new ReactiveVar(this.currentCard.color);
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
if (this.currentColor.get() === null) {
return color === 'white';
}
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentCard.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentCard.setColor(null);
Popup.close();
},
}];
},
}).register('setCardColorPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
+91 -2
View File
@@ -1,9 +1,9 @@
@import 'nib'
.card-details
padding: 0 20px
padding: 0
flex-shrink: 0
flex-basis: 470px
flex-basis: 510px
will-change: flex-basis
overflow-y: scroll
overflow-x: hidden
@@ -14,8 +14,16 @@
box-shadow: 0 0 7px 0 darken(white, 30%)
transition: flex-basis 0.1s
.mCustomScrollBox
padding-left: 0
.ps-scrollbar-y-rail
pointer-event: all
position: absolute;
.card-details-canvas
width: 470px
padding-left: 20px;
.card-details-header
margin: 0 -20px 5px
@@ -132,3 +140,84 @@ input[type="submit"].attachment-add-link-submit
.card-details-menu
margin-right: 10px
card-details-color(background, color...)
background: background !important
if color
color: color !important //overwrite text for better visibility
.card-details-white
card-details-color(unset, #000) //Black text for better visibility
border: 1px solid #eee
.card-details-green
card-details-color(#3cb500, #ffffff) //White text for better visibility
.card-details-yellow
card-details-color(#fad900, #000) //Black text for better visibility
.card-details-orange
card-details-color(#ff9f19, #000) //Black text for better visibility
.card-details-red
card-details-color(#eb4646, #ffffff) //White text for better visibility
.card-details-purple
card-details-color(#a632db, #ffffff) //White text for better visibility
.card-details-blue
card-details-color(#0079bf, #ffffff) //White text for better visibility
.card-details-pink
card-details-color(#ff78cb, #000) //Black text for better visibility
.card-details-sky
card-details-color(#00c2e0, #ffffff) //White text for better visibility
.card-details-black
card-details-color(#4d4d4d, #ffffff) //White text for better visibility
.card-details-lime
card-details-color(#51e898, #000) //Black text for better visibility
.card-details-silver
card-details-color(#c0c0c0, #000) //Black text for better visibility
.card-details-peachpuff
card-details-color(#ffdab9, #000) //Black text for better visibility
.card-details-crimson
card-details-color(#dc143c, #ffffff) //White text for better visibility
.card-details-plum
card-details-color(#dda0dd, #000) //Black text for better visibility
.card-details-darkgreen
card-details-color(#006400, #ffffff) //White text for better visibility
.card-details-slateblue
card-details-color(#6a5acd, #ffffff) //White text for better visibility
.card-details-magenta
card-details-color(#ff00ff, #ffffff) //White text for better visibility
.card-details-gold
card-details-color(#ffd700, #000) //Black text for better visibility
.card-details-navy
card-details-color(#000080, #ffffff) //White text for better visibility
.card-details-gray
card-details-color(#808080, #ffffff) //White text for better visibility
.card-details-saddlebrown
card-details-color(#8b4513, #ffffff) //White text for better visibility
.card-details-paleturquoise
card-details-color(#afeeee, #000) //Black text for better visibility
.card-details-mistyrose
card-details-color(#ffe4e1, #000) //Black text for better visibility
.card-details-indigo
card-details-color(#4b0082, #ffffff) //White text for better visibility
+7 -3
View File
@@ -1,7 +1,8 @@
template(name="minicard")
.minicard(
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}")
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="minicard-{{colorClass}}")
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
if labels
@@ -9,6 +10,8 @@ template(name="minicard")
each labels
.minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title
.handle
.fa.fa-arrows
if $eq 'prefix-with-full-path' currentBoard.presentParentTask
.parent-prefix
| {{ parentString ' > ' }}
@@ -53,8 +56,9 @@ template(name="minicard")
each customFieldsWD
if definition.showOnCard
.minicard-custom-field
.minicard-custom-field-item
= definition.name
if definition.showLabelOnMiniCard
.minicard-custom-field-item
= definition.name
.minicard-custom-field-item
+viewer
= trueValue
+96
View File
@@ -94,6 +94,19 @@
.minicard-custom-field-item
max-width:50%;
flex-grow:1;
.handle
width: 20px;
height: 20px;
position: absolute;
right: 5px;
top: 5px;
display:none;
@media only screen and (max-width: 1199px) {
display:block;
}
.fa-arrows
font-size:20px;
color: #ccc;
.minicard-title
p:last-child
margin-bottom: 0
@@ -189,3 +202,86 @@
border-top-right-radius: 0
z-index: 15
box-shadow: 0 1px 2px rgba(0,0,0,.15)
minicard-color(background, color...)
background-color: background
if color
color: color //overwrite text for better visibility
&:hover:not(.minicard-composer),
.is-selected &,
.draggable-hover-card &
background: darken(background, 3%)
.draggable-hover-card &
background: darken(background, 7%)
.minicard-green
minicard-color(#3cb500, #ffffff) //White text for better visibility
.minicard-yellow
minicard-color(#fad900)
.minicard-orange
minicard-color(#ff9f19)
.minicard-red
minicard-color(#eb4646, #ffffff) //White text for better visibility
.minicard-purple
minicard-color(#a632db, #ffffff) //White text for better visibility
.minicard-blue
minicard-color(#0079bf, #ffffff) //White text for better visibility
.minicard-pink
minicard-color(#ff78cb)
.minicard-sky
minicard-color(#00c2e0, #ffffff) //White text for better visibility
.minicard-black
minicard-color(#4d4d4d, #ffffff) //White text for better visibility
.minicard-lime
minicard-color(#51e898)
.minicard-silver
minicard-color(#c0c0c0)
.minicard-peachpuff
minicard-color(#ffdab9)
.minicard-crimson
minicard-color(#dc143c, #ffffff) //White text for better visibility
.minicard-plum
minicard-color(#dda0dd)
.minicard-darkgreen
minicard-color(#006400, #ffffff) //White text for better visibility
.minicard-slateblue
minicard-color(#6a5acd, #ffffff) //White text for better visibility
.minicard-magenta
minicard-color(#ff00ff, #ffffff) //White text for better visibility
.minicard-gold
minicard-color(#ffd700)
.minicard-navy
minicard-color(#000080, #ffffff) //White text for better visibility
.minicard-gray
minicard-color(#808080, #ffffff) //White text for better visibility
.minicard-saddlebrown
minicard-color(#8b4513, #ffffff) //White text for better visibility
.minicard-paleturquoise
minicard-color(#afeeee)
.minicard-mistyrose
minicard-color(#ffe4e1)
.minicard-indigo
minicard-color(#4b0082, #ffffff) //White text for better visibility
+1 -1
View File
@@ -1,10 +1,10 @@
@import 'nib'
select,
textarea,
input:not([type=file]),
button
box-sizing: border-box
-webkit-appearance: none
background-color: #ebebeb
border: 1px solid #ccc
border-radius: 3px
+2 -2
View File
@@ -12,11 +12,11 @@ template(name="import")
template(name="importTextarea")
form
p: label(for='import-textarea') {{_ instruction}}
p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
| {{jsonText}}
if isSandstorm
h1.warning DANGER !!! THIS DESTROYS YOUR IMPORTED DATA, CAUSES BOARD NOT FOUND ERROR WHEN YOU OPEN THIS GRAIN AGAIN https://github.com/wekan/wekan/issues/1430
h1.warning {{_ 'import-sandstorm-backup-warning'}}
p.warning {{_ 'import-sandstorm-warning'}}
input.primary.wide(type="submit" value="{{_ 'import'}}")
+8
View File
@@ -26,6 +26,13 @@ BlazeComponent.extendComponent({
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
if(window.matchMedia('(max-width: 1199px)').matches) {
$( '.js-minicards' ).sortable({
handle: '.handle',
});
}
$cards.sortable({
connectWith: '.js-minicards:not(.js-list-full)',
tolerance: 'pointer',
@@ -47,6 +54,7 @@ BlazeComponent.extendComponent({
items: itemsSelector,
placeholder: 'minicard-wrapper placeholder',
start(evt, ui) {
ui.helper.css('z-index', 1000);
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
boardComponent.setIsDragging(true);
+97 -6
View File
@@ -10,7 +10,6 @@
// transparent, because that won't work during a list drag.
background: darken(white, 13%)
border-left: 1px solid darken(white, 20%)
border-bottom: 1px solid #CCC
padding: 0
float: left
@@ -44,12 +43,24 @@
background: white
margin: -3px 0 8px
.list-header
.list-header-card-count
height: 35px
.list-header-add
flex: 0 0 auto
margin: 20px 12px 4px
padding: 20px 12px 4px
position: relative
min-height: 20px
.list-header
flex: 0 0 auto
padding: 20px 12px 4px
position: relative
min-height: 20px
background-color: #e4e4e4;
border-bottom: 6px solid #e4e4e4;
&.ui-sortable-handle
cursor: grab
@@ -68,16 +79,17 @@
text-overflow: ellipsis
word-wrap: break-word
.list-header-watch-icon
padding-left: 10px
color: #a6a6a6
.list-header-menu
position: absolute
padding: 7px
padding: 27px 19px
margin-top: 1px
top: -@padding
right: -@padding
top: -7px
right: -7px
.list-header-plus-icon
color: #a6a6a6
@@ -198,3 +210,82 @@
.search-card-results
max-height: 250px
overflow: hidden
list-header-color(background, color...)
border-bottom: 6px solid background
.list-header-white
list-header-color(#ffffff, #4d4d4d) //Black text for better visibility
border: 1px solid #eee
.list-header-green
list-header-color(#3cb500, #ffffff) //White text for better visibility
.list-header-yellow
list-header-color(#fad900, #4d4d4d) //Black text for better visibility
.list-header-orange
list-header-color(#ff9f19, #4d4d4d) //Black text for better visibility
.list-header-red
list-header-color(#eb4646, #ffffff) //White text for better visibility
.list-header-purple
list-header-color(#a632db, #ffffff) //White text for better visibility
.list-header-blue
list-header-color(#0079bf, #ffffff) //White text for better visibility
.list-header-pink
list-header-color(#ff78cb, #4d4d4d) //Black text for better visibility
.list-header-sky
list-header-color(#00c2e0, #ffffff) //White text for better visibility
.list-header-black
list-header-color(#4d4d4d, #ffffff) //White text for better visibility
.list-header-lime
list-header-color(#51e898, #4d4d4d) //Black text for better visibility
.list-header-silver
list-header-color(unset, #4d4d4d) //Black text for better visibility
.list-header-peachpuff
list-header-color(#ffdab9, #4d4d4d) //Black text for better visibility
.list-header-crimson
list-header-color(#dc143c, #ffffff) //White text for better visibility
.list-header-plum
list-header-color(#dda0dd, #4d4d4d) //Black text for better visibility
.list-header-darkgreen
list-header-color(#006400, #ffffff) //White text for better visibility
.list-header-slateblue
list-header-color(#6a5acd, #ffffff) //White text for better visibility
.list-header-magenta
list-header-color(#ff00ff, #ffffff) //White text for better visibility
.list-header-gold
list-header-color(#ffd700, #4d4d4d) //Black text for better visibility
.list-header-navy
list-header-color(#000080, #ffffff) //White text for better visibility
.list-header-gray
list-header-color(#808080, #ffffff) //White text for better visibility
.list-header-saddlebrown
list-header-color(#8b4513, #ffffff) //White text for better visibility
.list-header-paleturquoise
list-header-color(#afeeee, #4d4d4d) //Black text for better visibility
.list-header-mistyrose
list-header-color(#ffe4e1, #4d4d4d) //Black text for better visibility
.list-header-indigo
list-header-color(#4b0082, #ffffff) //White text for better visibility
+10 -8
View File
@@ -34,13 +34,14 @@ template(name="addCardForm")
.add-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
span.quiet
| {{_ 'or'}}
a.js-link {{_ 'link'}}
span.quiet
| &nbsp;
| /
a.js-search {{_ 'search'}}
unless isSandstorm
span.quiet
| {{_ 'or'}}
a.js-link {{_ 'link'}}
span.quiet
| &nbsp;
| /
a.js-search {{_ 'search'}}
template(name="autocompleteLabelLine")
.minicard-label(class="card-label-{{colorName}}" title=labelName)
@@ -73,7 +74,8 @@ template(name="linkCardPopup")
option(value="{{getId}}") {{getTitle}}
.edit-controls.clearfix
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
unless isSandstorm
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
template(name="searchCardPopup")
label {{_ 'boards'}}:
+40 -4
View File
@@ -59,6 +59,8 @@ BlazeComponent.extendComponent({
swimlaneId,
type: 'cardType-card',
});
// In case the filter is active we need to add the newly inserted card in
// the list of exceptions -- cards that are not filtered. Otherwise the
// card will disappear instantly.
@@ -152,6 +154,14 @@ BlazeComponent.extendComponent({
this.labels = new ReactiveVar([]);
this.members = new ReactiveVar([]);
this.customFields = new ReactiveVar([]);
const currentBoardId = Session.get('currentBoard');
arr = [];
_.forEach(Boards.findOne(currentBoardId).customFields().fetch(), function(field){
if(field.automaticallyOnCard)
arr.push({_id: field._id, value: null});
});
this.customFields.set(arr);
},
reset() {
@@ -319,6 +329,9 @@ BlazeComponent.extendComponent({
},
swimlanes() {
if (!this.selectedBoardId) {
return [];
}
const swimlanes = Swimlanes.find({boardId: this.selectedBoardId.get()});
if (swimlanes.count())
this.selectedSwimlaneId.set(swimlanes.fetch()[0]._id);
@@ -326,6 +339,9 @@ BlazeComponent.extendComponent({
},
lists() {
if (!this.selectedBoardId) {
return [];
}
const lists = Lists.find({boardId: this.selectedBoardId.get()});
if (lists.count())
this.selectedListId.set(lists.fetch()[0]._id);
@@ -333,6 +349,9 @@ BlazeComponent.extendComponent({
},
cards() {
if (!this.board) {
return [];
}
const ownCardsIds = this.board.cards().map((card) => { return card.linkedId || card._id; });
return Cards.find({
boardId: this.selectedBoardId.get(),
@@ -360,6 +379,11 @@ BlazeComponent.extendComponent({
// LINK CARD
evt.stopPropagation();
evt.preventDefault();
const linkedId = $('.js-select-cards option:selected').val();
if (!linkedId) {
Popup.close();
return;
}
const _id = Cards.insert({
title: $('.js-select-cards option:selected').text(), //dummy
listId: this.listId,
@@ -367,7 +391,7 @@ BlazeComponent.extendComponent({
boardId: this.boardId,
sort: Lists.findOne(this.listId).cards().count(),
type: 'cardType-linkedCard',
linkedId: $('.js-select-cards option:selected').val(),
linkedId,
});
Filter.addException(_id);
Popup.close();
@@ -377,6 +401,10 @@ BlazeComponent.extendComponent({
evt.stopPropagation();
evt.preventDefault();
const impBoardId = $('.js-select-boards option:selected').val();
if (!impBoardId || Cards.findOne({linkedId: impBoardId, archived: false})) {
Popup.close();
return;
}
const _id = Cards.insert({
title: $('.js-select-boards option:selected').text(), //dummy
listId: this.listId,
@@ -400,11 +428,16 @@ BlazeComponent.extendComponent({
onCreated() {
// Prefetch first non-current board id
const boardId = Boards.findOne({
let board = Boards.findOne({
archived: false,
'members.userId': Meteor.userId(),
_id: {$ne: Session.get('currentBoard')},
})._id;
});
if (!board) {
Popup.close();
return;
}
const boardId = board._id;
// Subscribe to this board
subManager.subscribe('board', boardId);
this.selectedBoardId = new ReactiveVar(boardId);
@@ -412,7 +445,7 @@ BlazeComponent.extendComponent({
this.boardId = Session.get('currentBoard');
// In order to get current board info
subManager.subscribe('board', this.boardId);
const board = Boards.findOne(this.boardId);
board = Boards.findOne(this.boardId);
// List where to insert card
const list = $(Popup._getTopStack().openerElement).closest('.js-list');
this.listId = Blaze.getData(list[0])._id;
@@ -438,6 +471,9 @@ BlazeComponent.extendComponent({
},
results() {
if (!this.selectedBoardId) {
return [];
}
const board = Boards.findOne(this.selectedBoardId.get());
return board.searchCards(this.term.get(), false);
},
+18 -4
View File
@@ -1,5 +1,7 @@
template(name="listHeader")
.list-header.js-list-header
.list-header.js-list-header(
class="{{#if limitToShowCardsCount}}list-header-card-count{{/if}}"
class="{{#if colorClass}}list-header-{{colorClass}}{{/if}}")
+inlinedForm
+editListTitleForm
else
@@ -15,9 +17,8 @@ template(name="listHeader")
|/#{wipLimit.value})
if showCardsCountForList cards.count
= cards.count
span
| {{_ 'cards-count'}}
|&nbsp;
p.quiet.small {{cardsCount}} {{_ 'cards-count'}}
if isMiniScreen
if currentList
if isWatching
@@ -50,6 +51,9 @@ template(name="listActionPopup")
li: a.js-toggle-watch-list {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
unless currentUser.isCommentOnly
hr
ul.pop-over-list
li: a.js-set-color-list {{_ 'set-color-list'}}
hr
ul.pop-over-list
if cards.count
li: a.js-select-cards {{_ 'list-select-cards'}}
@@ -112,3 +116,13 @@ template(name="wipLimitErrorPopup")
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
button.full.js-back-view(type="submit") {{_ 'cancel'}}
template(name="setListColorPopup")
form.edit-label
.palette-colors: each colors
// note: we use the swimlane palette to have more than just the border
span.card-label.palette-color.js-palette-color(class="swimlane-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
+47
View File
@@ -1,3 +1,8 @@
let listsColors;
Meteor.startup(() => {
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
canSeeAddCard() {
const list = Template.currentData();
@@ -22,6 +27,16 @@ BlazeComponent.extendComponent({
return Meteor.user().getLimitToShowCardsCount();
},
cardsCount() {
const list = Template.currentData();
let swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
return list.cards(swimlaneId).count();
},
reachedWipLimit() {
const list = Template.currentData();
return list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count();
@@ -62,6 +77,7 @@ Template.listActionPopup.helpers({
Template.listActionPopup.events({
'click .js-list-subscribe' () {},
'click .js-set-color-list': Popup.open('setListColor'),
'click .js-select-cards' () {
const cardIds = this.allCards().map((card) => card._id);
MultiSelection.add(cardIds);
@@ -144,3 +160,34 @@ Template.listMorePopup.events({
Utils.goBoardId(this.boardId);
}),
});
BlazeComponent.extendComponent({
onCreated() {
this.currentList = this.currentData();
this.currentColor = new ReactiveVar(this.currentList.color);
},
colors() {
return listsColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentList.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentList.setColor(null);
Popup.close();
},
}];
},
}).register('setListColorPopup');
+4 -1
View File
@@ -38,7 +38,10 @@ Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
const view = this;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const knowedUsers = currentBoard.members.map((member) => {
member.username = Users.findOne(member.userId).username;
const u = Users.findOne(member.userId);
if(u){
member.username = u.username;
}
return member;
});
const mentionRegex = /\B@([\w.]*)/gi;
+6 -3
View File
@@ -47,6 +47,7 @@ template(name="header")
+Template.dynamic(template=headerBar)
unless hideLogo
//-
On sandstorm, the logo shouldn't be clickable, because we only have one
page/document on it, and we don't want to see the home page containing
@@ -55,8 +56,9 @@ template(name="header")
.wekan-logo
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
else
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
unless currentSetting.hideLogo
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
if appIsOffline
+offlineWarning
@@ -66,7 +68,8 @@ template(name="header")
.announcement
p
i.fa.fa-bullhorn
| #{announcement}
+viewer
| #{announcement}
i.fa.fa-times-circle.js-close-announcement
template(name="offlineWarning")
+5
View File
@@ -1,11 +1,16 @@
Meteor.subscribe('user-admin');
Meteor.subscribe('boards');
Meteor.subscribe('setting');
Template.header.helpers({
wrappedHeader() {
return !Session.get('currentBoard');
},
currentSetting() {
return Settings.findOne();
},
hideLogo() {
return Utils.isMiniScreen() && Session.get('currentBoard');
},
-2
View File
@@ -188,8 +188,6 @@
width: 100%
padding: 10px 0px
z-index: 30
position: absolute
bottom: 0px
ul
width: calc(100% - 60px)
+26 -11
View File
@@ -7,17 +7,23 @@ head
where the application is deployed with a path prefix, but it seems to be
difficult to do that cleanly with Blaze -- at least without adding extra
packages.
link(rel="shortcut icon" href="/wekan-favicon.png")
link(rel="apple-touch-icon" href="/wekan-favicon.png")
link(rel="mask-icon" href="/wekan-150.svg")
link(rel="manifest" href="/wekan-manifest.json")
link(rel="shortcut icon" href="/public/wekan-favicon.png")
link(rel="apple-touch-icon" href="/public/wekan-favicon.png")
link(rel="mask-icon" href="/public/wekan-150.svg")
link(rel="manifest" href="/public/wekan-manifest.json")
template(name="userFormsLayout")
section.auth-layout
h1.at-form-landing-logo
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
unless currentSetting.hideLogo
h1.at-form-landing-logo
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
if currentSetting.hideLogo
h1
br
br
section.auth-dialog
+Template.dynamic(template=content)
+connectionMethod
if isCas
.at-form
button#cas(class='at-btn submit' type='submit') {{casSignInLabel}}
@@ -32,15 +38,24 @@ template(name="userFormsLayout")
template(name="defaultLayout")
+header
#content
| {{{afterBodyStart}}}
+Template.dynamic(template=content)
| {{{beforeBodyEnd}}}
if (Modal.isOpen)
#modal
.overlay
.modal-content
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
if (Modal.isWide)
.modal-content-wide.modal-container
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
else
.modal-content.modal-container
a.modal-close-btn.js-close-modal
i.fa.fa-times-thin
+Template.dynamic(template=Modal.getHeaderName)
+Template.dynamic(template=Modal.getTemplateName)
template(name="notFound")
+message(label='page-not-found')
+76 -1
View File
@@ -6,7 +6,29 @@ const i18nTagToT9n = (i18nTag) => {
return i18nTag;
};
const validator = {
set(obj, prop, value) {
if (prop === 'state' && value !== 'signIn') {
$('.at-form-authentication').hide();
} else if (prop === 'state' && value === 'signIn') {
$('.at-form-authentication').show();
}
// The default behavior to store the value
obj[prop] = value;
// Indicate success
return true;
},
};
Template.userFormsLayout.onCreated(() => {
Meteor.subscribe('setting');
});
Template.userFormsLayout.onRendered(() => {
AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
const i18nTag = navigator.language;
if (i18nTag) {
T9n.setLanguage(i18nTagToT9n(i18nTag));
@@ -15,6 +37,20 @@ Template.userFormsLayout.onRendered(() => {
});
Template.userFormsLayout.helpers({
currentSetting() {
return Settings.findOne();
},
afterBodyStart() {
return currentSetting.customHTMLafterBodyStart;
},
beforeBodyEnd() {
return currentSetting.customHTMLbeforeBodyEnd;
},
languages() {
return _.map(TAPi18n.getLanguages(), (lang, code) => {
const tag = code;
@@ -39,7 +75,7 @@ Template.userFormsLayout.helpers({
const curLang = T9n.getLanguage() || 'en';
return t9nTag === curLang;
},
/*
isCas() {
return Meteor.settings.public &&
Meteor.settings.public.cas &&
@@ -49,6 +85,7 @@ Template.userFormsLayout.helpers({
casSignInLabel() {
return TAPi18n.__('casSignIn', {}, T9n.getLanguage() || 'en');
},
*/
});
Template.userFormsLayout.events({
@@ -64,6 +101,44 @@ Template.userFormsLayout.events({
}
});
},
'click #at-btn'(event) {
/* All authentication method can be managed/called here.
!! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !!
*/
const authenticationMethodSelected = $('.select-authentication').val();
// Local account
if (authenticationMethodSelected === 'password') {
return;
}
// Stop submit #at-pwd-form
event.preventDefault();
event.stopImmediatePropagation();
const email = $('#at-field-username_and_email').val();
const password = $('#at-field-password').val();
// Ldap account
if (authenticationMethodSelected === 'ldap') {
// Check if the user can use the ldap connection
Meteor.subscribe('user-authenticationMethod', email, {
onReady() {
const user = Users.findOne();
if (user === undefined || user.authenticationMethod === 'ldap') {
// Use the ldap connection package
Meteor.loginWithLDAP(email, password, function(error) {
if (!error) {
// Connection
return FlowRouter.go('/');
}
return error;
});
}
return this.stop();
},
});
}
},
});
Template.defaultLayout.events({
+19 -2
View File
@@ -61,6 +61,23 @@ body
display: block
float: right
font-size: 24px
.modal-content-wide
width: 800px
min-height: 0px
margin: 42px auto
padding: 12px
border-radius: 4px
background: darken(white, 13%)
z-index: 110
h2
margin-bottom: 25px
.modal-close-btn
display: block
float: right
font-size: 24px
h1
font-size: 22px
@@ -368,8 +385,8 @@ a
@media screen and (max-width: 800px)
#content
margin: 1px 0px 49px 0px
height: calc(100% - 96px)
margin: 1px 0px 0px 0px
height: calc(100% - 0px)
> .wrapper
margin-top: 0px
Binary file not shown.
@@ -0,0 +1,72 @@
template(name="boardActions")
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-move-card-to'}}
div.trigger-dropdown
select(id="move-gen-action")
option(value="top") {{_'r-top-of'}}
option(value="bottom") {{_'r-bottom-of'}}
div.trigger-text
| {{_'r-its-list'}}
div.trigger-button.js-add-gen-move-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-move-card-to'}}
div.trigger-dropdown
select(id="move-spec-action")
option(value="top") {{_'r-top-of'}}
option(value="bottom") {{_'r-bottom-of'}}
div.trigger-text
| {{_'r-list'}}
div.trigger-dropdown
input(id="listName",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-add-spec-move-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="arch-action")
option(value="archive") {{_'r-archive'}}
option(value="unarchive") {{_'r-unarchive'}}
div.trigger-text
| {{_'r-card'}}
div.trigger-button.js-add-arch-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-add-swimlane'}}
div.trigger-dropdown
input(id="swimlane-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-add-swimlane-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-create-card'}}
div.trigger-dropdown
input(id="card-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-in-list'}}
div.trigger-dropdown
input(id="list-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="swimlane-name2",type=text,placeholder="{{_'r-name'}}")
div.trigger-button.js-create-card-action.js-goto-rules
i.fa.fa-plus
@@ -0,0 +1,168 @@
BlazeComponent.extendComponent({
onCreated() {
},
events() {
return [{
'click .js-create-card-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const cardName = this.find('#card-name').value;
const listName = this.find('#list-name').value;
const swimlaneName = this.find('#swimlane-name2').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'createCard',
swimlaneName,
cardName,
listName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-swimlane-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const swimlaneName = this.find('#swimlane-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addSwimlane',
swimlaneName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-spec-move-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#move-spec-action').value;
const listTitle = this.find('#listName').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'top') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToTop',
listTitle,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'bottom') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToBottom',
listTitle,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-gen-move-action' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#move-gen-action').value;
if (actionSelected === 'top') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToTop',
'listTitle': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'bottom') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'moveCardToBottom',
'listTitle': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-arch-action' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#arch-action').value;
if (actionSelected === 'archive') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'archive',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'unarchive') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'unarchive',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
}];
},
}).register('boardActions');
/* eslint-no-undef */
@@ -0,0 +1,53 @@
template(name="cardActions")
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="label-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-label'}}}
div.trigger-dropdown
select(id="label-id")
each labels
option(value="#{_id}")
= name
div.trigger-button.js-add-label-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="member-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-member'}}}
div.trigger-dropdown
input(id="member-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-member-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-remove-all'}}}
div.trigger-button.js-add-removeall-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-set-color'}}}
button.trigger-button.trigger-button-color.card-details-green.js-show-color-palette(id="color-action")
| {{{_'color-green'}}}
div.trigger-button.js-set-color-action.js-goto-rules
i.fa.fa-plus
template(name="setCardActionsColorPopup")
form.edit-label
.palette-colors: each colors
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
@@ -0,0 +1,186 @@
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
labels() {
const labels = Boards.findOne(Session.get('currentBoard')).labels;
for (let i = 0; i < labels.length; i++) {
if (labels[i].name === '' || labels[i].name === undefined) {
labels[i].name = labels[i].color.toUpperCase();
}
}
return labels;
},
events() {
return [{
'click .js-add-label-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#label-action').value;
const labelId = this.find('#label-id').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addLabel',
labelId,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeLabel',
labelId,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-member-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#member-action').value;
const username = this.find('#member-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addMember',
username,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
desc,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeMember',
username,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-removeall-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const triggerId = Triggers.insert(trigger);
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
const actionId = Actions.insert({
actionType: 'removeMember',
'username': '*',
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-show-color-palette'(event){
const funct = Popup.open('setCardActionsColor');
const colorButton = this.find('#color-action');
if (colorButton.value === '') {
colorButton.value = 'green';
}
funct.call(this, event);
},
'click .js-set-color-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const colorButton = this.find('#color-action');
if (colorButton.value === '') {
colorButton.value = 'green';
}
const selectedColor = colorButton.value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'setColor',
selectedColor,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
}];
},
}).register('cardActions');
BlazeComponent.extendComponent({
onCreated() {
this.currentAction = this.currentData();
this.colorButton = Popup.getOpenerComponent().find('#color-action');
this.currentColor = new ReactiveVar(this.colorButton.value);
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.colorButton.classList.remove(`card-details-${ this.colorButton.value }`);
this.colorButton.value = this.currentColor.get();
this.colorButton.innerText = `${TAPi18n.__(`color-${ this.currentColor.get() }`)}`;
this.colorButton.classList.add(`card-details-${ this.colorButton.value }`);
Popup.close();
},
}];
},
}).register('setCardActionsColorPopup');
@@ -0,0 +1,70 @@
template(name="checklistActions")
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="check-action")
option(value="add") {{{_'r-add'}}}
option(value="remove") {{{_'r-remove'}}}
div.trigger-text
| {{{_'r-checklist'}}}
div.trigger-dropdown
input(id="checklist-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checklist-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="checkall-action")
option(value="check") {{{_'r-check-all'}}}
option(value="uncheck") {{{_'r-uncheck-all'}}}
div.trigger-text
| {{{_'r-items-check'}}}
div.trigger-dropdown
input(id="checklist-name2",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-checkall-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-dropdown
select(id="check-item-action")
option(value="check") {{{_'r-check'}}}
option(value="uncheck") {{{_'r-uncheck'}}}
div.trigger-text
| {{{_'r-item'}}}
div.trigger-dropdown
input(id="checkitem-name",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text
| {{{_'r-of-checklist'}}}
div.trigger-dropdown
input(id="checklist-name3",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-button.js-add-check-item-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-add-checklist'}}}
div.trigger-dropdown
input(id="checklist-name-3",type=text,placeholder="{{{_'r-name'}}}")
div.trigger-text
| {{{_'r-with-items'}}}
div.trigger-dropdown
input(id="checklist-items",type=text,placeholder="{{{_'r-items-list'}}}")
div.trigger-button.js-add-checklist-items-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-checklist-note'}}}
@@ -0,0 +1,151 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
events() {
return [{
'click .js-add-checklist-items-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const checklistName = this.find('#checklist-name-3').value;
const checklistItems = this.find('#checklist-items').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addChecklistWithItems',
checklistName,
checklistItems,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
'click .js-add-checklist-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#check-action').value;
const checklistName = this.find('#checklist-name').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'add') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'addChecklist',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'remove') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'removeChecklist',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-checkall-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const actionSelected = this.find('#checkall-action').value;
const checklistName = this.find('#checklist-name2').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'check') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'checkAll',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'uncheck') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'uncheckAll',
checklistName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
'click .js-add-check-item-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const checkItemName = this.find('#checkitem-name');
const checklistName = this.find('#checklist-name3');
const actionSelected = this.find('#check-item-action').value;
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
if (actionSelected === 'check') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'checkItem',
checklistName,
checkItemName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
if (actionSelected === 'uncheck') {
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'uncheckItem',
checklistName,
checkItemName,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
}
},
}];
},
}).register('checklistActions');
@@ -0,0 +1,11 @@
template(name="mailActions")
div.trigger-item.trigger-item-mail
div.trigger-content.trigger-content-mail
div.trigger-text.trigger-text-email
| {{_'r-send-email'}}
div.trigger-dropdown-mail
input(id="email-to",type=text,placeholder="{{_'r-to'}}")
input(id="email-subject",type=text,placeholder="{{_'r-subject'}}")
textarea(id="email-msg")
div.trigger-button.trigger-button-email.js-mail-action.js-goto-rules
i.fa.fa-plus
@@ -0,0 +1,35 @@
BlazeComponent.extendComponent({
onCreated() {
},
events() {
return [{
'click .js-mail-action' (event) {
const emailTo = this.find('#email-to').value;
const emailSubject = this.find('#email-subject').value;
const emailMsg = this.find('#email-msg').value;
const trigger = this.data().triggerVar.get();
const ruleName = this.data().ruleName.get();
const triggerId = Triggers.insert(trigger);
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const actionId = Actions.insert({
actionType: 'sendEmail',
emailTo,
emailSubject,
emailMsg,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
}];
},
}).register('mailActions');
+20
View File
@@ -0,0 +1,20 @@
template(name="ruleDetails")
.rules
h2
i.fa.fa-magic
| {{{_ 'r-rule-details' }}}
.triggers-content
.triggers-body
.triggers-main-body
div.trigger-item
div.trigger-content
div.trigger-text
= trigger
div.trigger-item
div.trigger-content
div.trigger-text
= action
div.rules-back
button.js-goback
i.fa.fa-chevron-left
| {{{_ 'back'}}}
+38
View File
@@ -0,0 +1,38 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
this.subscribe('allTriggers');
this.subscribe('allActions');
},
trigger() {
const ruleId = this.data().ruleId;
const rule = Rules.findOne({
_id: ruleId.get(),
});
const trigger = Triggers.findOne({
_id: rule.triggerId,
});
const desc = trigger.description();
const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
return upperdesc;
},
action() {
const ruleId = this.data().ruleId;
const rule = Rules.findOne({
_id: ruleId.get(),
});
const action = Actions.findOne({
_id: rule.actionId,
});
const desc = action.description();
const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
return upperdesc;
},
events() {
return [{}];
},
}).register('ruleDetails');
+190
View File
@@ -0,0 +1,190 @@
.rules-list
overflow:hidden
overflow-y:scroll
max-height: 400px
.rules-lists-item
display: block
position: relative
overflow: auto
p
display: inline-block
float: left
margin: revert
.hide-element
display:none !important
.user-details
display:inline-block
.rules-btns-group
position: absolute
right: 0
top: 50%
transform: translateY(-50%)
button
margin: auto
.rules-add
display: block
overflow: auto
margin-top: 15px
margin-bottom: 5px
input
display: inline-block
float: right
margin: auto
margin-right: 10px
button
display: inline-block
float: right
margin: auto
.rules-back
display: block
overflow: auto
margin-top: 15px
margin-bottom: 5px
button
display: inline-block
float: right
margin: auto
margin-right:14px
.flex
display: -webkit-box
display: -moz-box
display: -webkit-flex
display: -moz-flex
display: -ms-flexbox
display: flex
.triggers-content
color: #727479
background: #dedede
.triggers-body
display flex
padding-top 15px
height 100%
.triggers-side-menu
background-color: #f7f7f7
border: 1px solid #f0f0f0
border-radius: 4px
height: intrinsic
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
ul
li
margin: 0.1rem 0.2rem;
width:50px
height:50px
text-align:center
font-size: 25px
position: relative
i
position: absolute;
top: 50%;
left: 50%;
box-shadow: none
transform: translate(-50%,-50%);
&.active
background #fff
box-shadow 0 1px 2px rgba(0,0,0,0.15);
&:hover
background #fff
box-shadow 0 1px 2px rgba(0,0,0,0.15);
a
@extends .flex
padding: 1rem 0 1rem 1rem
width: 100% - 5rem
span
font-size: 13px
.triggers-main-body
padding: 0.1em 1em
width:100%
.trigger-item
overflow:auto
padding:10px
height:40px
margin-bottom:5px
border-radius: 3px
position: relative
background-color: white
.trigger-content
position:absolute
top:50%
transform: translateY(-50%)
left:10px
.trigger-text
font-size: 16px
display:inline-block
.trigger-inline-button
font-size: 16px
display: inline;
padding: 6px;
border: 1px solid #eee
border-radius: 4px
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
.trigger-text.trigger-text-email
margin-left: 5px;
margin-top: 10px;
margin-bottom: 10px;
.trigger-dropdown
display:inline-block
select
width:auto
height:30px
margin:0px
margin-left:5px
input
display: inline-block
width: 80px;
margin: 0;
.trigger-content-mail
left:20px
right:100px
.trigger-button
position:absolute
top:50%
transform: translateY(-50%)
width:30px
height:30px
border: 1px solid #eee
border-radius: 4px
box-shadow: inset -1px -1px 3px rgba(0,0,0,.05)
text-align:center
font-size: 20px
right:10px
i
position: absolute
top: 50%
left: 50%
box-shadow: none
transform: translate(-50%,-50%)
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
.trigger-button.trigger-button-email
top:30px
.trigger-button.trigger-button-person
right:-40px
.trigger-button.trigger-button-color
top: unset
position: unset
transform: unset
font-size: 16px
width:auto
padding-left: 10px
padding-right: 10px
height:40px
.trigger-item.trigger-item-mail
height:300px
+29
View File
@@ -0,0 +1,29 @@
template(name="rulesActions")
h2
i.fa.fa-magic
| {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-action'}}}
.triggers-content
.triggers-body
.triggers-side-menu
ul
li.active.js-set-board-actions
i.fa.fa-columns
li.js-set-card-actions
i.fa.fa-sticky-note
li.js-set-checklist-actions
i.fa.fa-check
li.js-set-mail-actions
i.fa.fa-at
.triggers-main-body
if ($eq currentActions.get 'board')
+boardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'card')
+cardActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'checklist')
+checklistActions(ruleName=data.ruleName triggerVar=data.triggerVar)
else if ($eq currentActions.get 'mail')
+mailActions(ruleName=data.ruleName triggerVar=data.triggerVar)
div.rules-back
button.js-goback
i.fa.fa-chevron-left
| {{{_ 'back'}}}
+58
View File
@@ -0,0 +1,58 @@
BlazeComponent.extendComponent({
onCreated() {
this.currentActions = new ReactiveVar('board');
},
setBoardActions() {
this.currentActions.set('board');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').addClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setCardActions() {
this.currentActions.set('card');
$('.js-set-card-actions').addClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setChecklistActions() {
this.currentActions.set('checklist');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').addClass('active');
$('.js-set-mail-actions').removeClass('active');
},
setMailActions() {
this.currentActions.set('mail');
$('.js-set-card-actions').removeClass('active');
$('.js-set-board-actions').removeClass('active');
$('.js-set-checklist-actions').removeClass('active');
$('.js-set-mail-actions').addClass('active');
},
rules() {
return Rules.find({});
},
name() {
// console.log(this.data());
},
events() {
return [{
'click .js-set-board-actions'(){
this.setBoardActions();
},
'click .js-set-card-actions'() {
this.setCardActions();
},
'click .js-set-mail-actions'() {
this.setMailActions();
},
'click .js-set-checklist-actions'() {
this.setChecklistActions();
},
}];
},
}).register('rulesActions');
+27
View File
@@ -0,0 +1,27 @@
template(name="rulesList")
.rules
h2
i.fa.fa-magic
| {{{_ 'r-board-rules' }}}
ul.rules-list
each rules
li.rules-lists-item
p
= title
div.rules-btns-group
button.js-goto-details
i.fa.fa-eye
| {{{_ 'r-view-rule'}}}
if currentUser.isAdmin
button.js-delete-rule
i.fa.fa-trash-o
| {{{_ 'r-delete-rule'}}}
else
li.no-items-message {{{_ 'r-no-rules' }}}
if currentUser.isAdmin
div.rules-add
button.js-goto-trigger
i.fa.fa-plus
| {{{_ 'r-add-rule'}}}
input(type=text,placeholder="{{{_ 'r-new-rule-name' }}}",id="ruleTitle")
+15
View File
@@ -0,0 +1,15 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
rules() {
const boardId = Session.get('currentBoard');
return Rules.find({
boardId,
});
},
events() {
return [{}];
},
}).register('rulesList');
+9
View File
@@ -0,0 +1,9 @@
template(name="rulesMain")
if($eq rulesCurrentTab.get 'rulesList')
+rulesList
if($eq rulesCurrentTab.get 'trigger')
+rulesTriggers(ruleName=ruleName triggerVar=triggerVar)
if($eq rulesCurrentTab.get 'action')
+rulesActions(ruleName=ruleName triggerVar=triggerVar)
if($eq rulesCurrentTab.get 'ruleDetails')
+ruleDetails(ruleId=ruleId)
+97
View File
@@ -0,0 +1,97 @@
BlazeComponent.extendComponent({
onCreated() {
this.rulesCurrentTab = new ReactiveVar('rulesList');
this.ruleName = new ReactiveVar('');
this.triggerVar = new ReactiveVar();
this.ruleId = new ReactiveVar();
},
setTrigger() {
this.rulesCurrentTab.set('trigger');
},
sanitizeObject(obj){
Object.keys(obj).forEach((key) => {
if(obj[key] === '' || obj[key] === undefined){
obj[key] = '*';
}}
);
},
setRulesList() {
this.rulesCurrentTab.set('rulesList');
},
setAction() {
this.rulesCurrentTab.set('action');
},
setRuleDetails() {
this.rulesCurrentTab.set('ruleDetails');
},
events() {
return [{
'click .js-delete-rule' () {
const rule = this.currentData();
Rules.remove(rule._id);
Actions.remove(rule.actionId);
Triggers.remove(rule.triggerId);
},
'click .js-goto-trigger' (event) {
event.preventDefault();
const ruleTitle = this.find('#ruleTitle').value;
if(ruleTitle !== undefined && ruleTitle !== ''){
this.find('#ruleTitle').value = '';
this.ruleName.set(ruleTitle);
this.setTrigger();
}
},
'click .js-goto-action' (event) {
event.preventDefault();
// Add user to the trigger
const username = $(event.currentTarget.offsetParent).find('.user-name').val();
let trigger = this.triggerVar.get();
trigger.userId = '*';
if(username !== undefined ){
const userFound = Users.findOne({username});
if(userFound !== undefined){
trigger.userId = userFound._id;
this.triggerVar.set(trigger);
}
}
// Sanitize trigger
trigger = this.triggerVar.get();
this.sanitizeObject(trigger);
this.triggerVar.set(trigger);
this.setAction();
},
'click .js-show-user-field' (event) {
event.preventDefault();
$(event.currentTarget.offsetParent).find('.user-details').removeClass('hide-element');
},
'click .js-goto-rules' (event) {
event.preventDefault();
this.setRulesList();
},
'click .js-goback' (event) {
event.preventDefault();
if(this.rulesCurrentTab.get() === 'trigger' || this.rulesCurrentTab.get() === 'ruleDetails' ){
this.setRulesList();
}
if(this.rulesCurrentTab.get() === 'action'){
this.setTrigger();
}
},
'click .js-goto-details' (event) {
event.preventDefault();
const rule = this.currentData();
this.ruleId.set(rule._id);
this.setRuleDetails();
},
}];
},
}).register('rulesMain');
@@ -0,0 +1,25 @@
template(name="rulesTriggers")
h2
i.fa.fa-magic
| {{{_ 'r-rule' }}} "#{data.ruleName.get}" - {{{_ 'r-add-trigger'}}}
.triggers-content
.triggers-body
.triggers-side-menu
ul
li.active.js-set-board-triggers
i.fa.fa-columns
li.js-set-card-triggers
i.fa.fa-sticky-note
li.js-set-checklist-triggers
i.fa.fa-check
.triggers-main-body
if showBoardTrigger.get
+boardTriggers
else if showCardTrigger.get
+cardTriggers
else if showChecklistTrigger.get
+checklistTriggers
div.rules-back
button.js-goback
i.fa.fa-chevron-left
| {{{_ 'back'}}}
+53
View File
@@ -0,0 +1,53 @@
BlazeComponent.extendComponent({
onCreated() {
this.showBoardTrigger = new ReactiveVar(true);
this.showCardTrigger = new ReactiveVar(false);
this.showChecklistTrigger = new ReactiveVar(false);
},
setBoardTriggers() {
this.showBoardTrigger.set(true);
this.showCardTrigger.set(false);
this.showChecklistTrigger.set(false);
$('.js-set-card-triggers').removeClass('active');
$('.js-set-board-triggers').addClass('active');
$('.js-set-checklist-triggers').removeClass('active');
},
setCardTriggers() {
this.showBoardTrigger.set(false);
this.showCardTrigger.set(true);
this.showChecklistTrigger.set(false);
$('.js-set-card-triggers').addClass('active');
$('.js-set-board-triggers').removeClass('active');
$('.js-set-checklist-triggers').removeClass('active');
},
setChecklistTriggers() {
this.showBoardTrigger.set(false);
this.showCardTrigger.set(false);
this.showChecklistTrigger.set(true);
$('.js-set-card-triggers').removeClass('active');
$('.js-set-board-triggers').removeClass('active');
$('.js-set-checklist-triggers').addClass('active');
},
rules() {
return Rules.find({});
},
name() {
// console.log(this.data());
},
events() {
return [{
'click .js-set-board-triggers' () {
this.setBoardTriggers();
},
'click .js-set-card-triggers' () {
this.setCardTriggers();
},
'click .js-set-checklist-triggers' () {
this.setChecklistTriggers();
},
}];
},
}).register('rulesTriggers');
@@ -0,0 +1,117 @@
template(name="boardTriggers")
div.trigger-item#trigger-two
div.trigger-content
div.trigger-text
| {{_'r-when-a-card'}}
div.trigger-inline-button.js-open-card-title-popup
i.fa.fa-filter
div.trigger-text
| {{_'r-is'}}
div.trigger-text
| {{_'r-added-to'}}
div.trigger-text
| {{_'r-list'}}
div.trigger-dropdown
input(id="create-list-name",type=text,placeholder="{{_'r-list-name'}}")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="create-swimlane-name",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-create-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item#trigger-three
div.trigger-content
div.trigger-text
| {{_'r-when-a-card'}}
div.trigger-inline-button.js-open-card-title-popup
i.fa.fa-filter
div.trigger-text
| {{_'r-is-moved'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-moved-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item#trigger-four
div.trigger-content
div.trigger-text
| {{_'r-when-a-card'}}
div.trigger-inline-button.js-open-card-title-popup
i.fa.fa-filter
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="move-action")
option(value="moved-to") {{_'r-moved-to'}}
option(value="moved-from") {{_'r-moved-from'}}
div.trigger-text
| {{_'r-list'}}
div.trigger-dropdown
input(id="move-list-name",type=text,placeholder="{{_'r-list-name'}}")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="create-swimlane-name",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-moved-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item#trigger-five
div.trigger-content
div.trigger-text
| {{_'r-when-a-card'}}
div.trigger-inline-button.js-open-card-title-popup
i.fa.fa-filter
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="arch-action")
option(value="archived") {{_'r-archived'}}
option(value="unarchived") {{_'r-unarchived'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-arch-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-board-note'}}}
template(name="boardCardTitlePopup")
form
label
| Card Title Filter
input.js-card-filter-name(type="text" value=title autofocus)
input.js-card-filter-button.primary.wide(type="submit" value="{{_ 'set-filter'}}")
@@ -0,0 +1,115 @@
BlazeComponent.extendComponent({
onCreated() {
this.provaVar = new ReactiveVar('');
this.currentPopupTriggerId = 'def';
this.cardTitleFilters = {};
},
setNameFilter(name){
this.cardTitleFilters[this.currentPopupTriggerId] = name;
},
events() {
return [{
'click .js-open-card-title-popup'(event){
const funct = Popup.open('boardCardTitle');
const divId = $(event.currentTarget.parentNode.parentNode).attr('id');
//console.log('current popup');
//console.log(this.currentPopupTriggerId);
this.currentPopupTriggerId = divId;
funct.call(this, event);
},
'click .js-add-create-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const listName = this.find('#create-list-name').value;
const swimlaneName = this.find('#create-swimlane-name').value;
const boardId = Session.get('currentBoard');
const divId = $(event.currentTarget.parentNode).attr('id');
const cardTitle = this.cardTitleFilters[divId];
// move to generic funciont
datas.triggerVar.set({
activityType: 'createCard',
boardId,
cardTitle,
swimlaneName,
listName,
desc,
});
},
'click .js-add-moved-trigger' (event) {
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
const swimlaneName = this.find('#create-swimlane-name').value;
const actionSelected = this.find('#move-action').value;
const listName = this.find('#move-list-name').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'moved-to') {
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
listName,
swimlaneName,
'oldListName': '*',
desc,
});
}
if (actionSelected === 'moved-from') {
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
swimlaneName,
'listName': '*',
'oldListName': listName,
desc,
});
}
},
'click .js-add-gen-moved-trigger' (event){
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
const boardId = Session.get('currentBoard');
datas.triggerVar.set({
'activityType': 'moveCard',
boardId,
'swimlaneName': '*',
'listName':'*',
'oldListName': '*',
desc,
});
},
'click .js-add-arc-trigger' (event) {
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
const actionSelected = this.find('#arch-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'archived') {
datas.triggerVar.set({
activityType: 'archivedCard',
boardId,
desc,
});
}
if (actionSelected === 'unarchived') {
datas.triggerVar.set({
activityType: 'restoredCard',
boardId,
desc,
});
}
},
}];
},
}).register('boardTriggers');
Template.boardCardTitlePopup.events({
submit(evt, tpl) {
const title = tpl.$('.js-card-filter-name').val().trim();
Popup.getOpenerComponent().setNameFilter(title);
evt.preventDefault();
Popup.close();
},
});
@@ -0,0 +1,114 @@
template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-label-is'}}
div.trigger-dropdown
select(id="label-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-label-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-the-label-is'}}
div.trigger-dropdown
select(id="spec-label")
each labels
option(value="#{_id}" style="background-color: #{name}")
= translatedname
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-label-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-spec-label-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-member'}}
div.trigger-dropdown
select(id="gen-member-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-member-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-the-member'}}
div.trigger-dropdown
input(id="spec-member",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-member-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-spec-member-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-attach'}}
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="attach-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-attachment-trigger.js-goto-action
i.fa.fa-plus
@@ -0,0 +1,131 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
labels() {
const labels = Boards.findOne(Session.get('currentBoard')).labels;
for (let i = 0; i < labels.length; i++) {
if (labels[i].name === '' || labels[i].name === undefined) {
labels[i].name = labels[i].color;
labels[i].translatedname = `${TAPi18n.__(`color-${ labels[i].color}`)}`;
} else {
labels[i].translatedname = labels[i].name;
}
}
return labels;
},
events() {
return [{
'click .js-add-gen-label-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#label-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'added') {
datas.triggerVar.set({
activityType: 'addedLabel',
boardId,
'labelId': '*',
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'removedLabel',
boardId,
'labelId': '*',
desc,
});
}
},
'click .js-add-spec-label-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#spec-label-action').value;
const labelId = this.find('#spec-label').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'added') {
datas.triggerVar.set({
activityType: 'addedLabel',
boardId,
labelId,
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'removedLabel',
boardId,
labelId,
desc,
});
}
},
'click .js-add-gen-member-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#gen-member-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'added') {
datas.triggerVar.set({
activityType: 'joinMember',
boardId,
'username': '*',
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'unjoinMember',
boardId,
'username': '*',
desc,
});
}
},
'click .js-add-spec-member-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#spec-member-action').value;
const username = this.find('#spec-member').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'added') {
datas.triggerVar.set({
activityType: 'joinMember',
boardId,
username,
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'unjoinMember',
boardId,
username,
desc,
});
}
},
'click .js-add-attachment-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#attach-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'added') {
datas.triggerVar.set({
activityType: 'addAttachment',
boardId,
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'deleteAttachment',
boardId,
desc,
});
}
},
}];
},
}).register('cardTriggers');
@@ -0,0 +1,125 @@
template(name="checklistTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-checklist'}}
div.trigger-dropdown
select(id="gen-check-action")
option(value="created") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-check-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-the-checklist'}}
div.trigger-dropdown
input(id="check-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-check-action")
option(value="created") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-spec-check-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-checklist'}}
div.trigger-dropdown
select(id="gen-comp-check-action")
option(value="completed") {{_'r-completed'}}
option(value="uncompleted") {{_'r-made-incomplete'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-comp-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-the-checklist'}}
div.trigger-dropdown
input(id="spec-comp-check-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-comp-check-action")
option(value="completed") {{_'r-completed'}}
option(value="uncompleted") {{_'r-made-incomplete'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-spec-comp-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-a-item'}}
div.trigger-dropdown
select(id="check-item-gen-action")
option(value="checked") {{_'r-checked'}}
option(value="unchecked") {{_'r-unchecked'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-gen-check-item-trigger.js-goto-action
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{_'r-when-the-item'}}
div.trigger-dropdown
input(id="check-item-name",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="check-item-spec-action")
option(value="checked") {{_'r-checked'}}
option(value="unchecked") {{_'r-unchecked'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
div.trigger-text
| {{_'r-by'}}
div.trigger-dropdown
input(class="user-name",type=text,placeholder="{{_'username'}}")
div.trigger-button.js-add-spec-check-item-trigger.js-goto-action
i.fa.fa-plus
@@ -0,0 +1,146 @@
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
},
events() {
return [{
'click .js-add-gen-check-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#gen-check-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'created') {
datas.triggerVar.set({
activityType: 'addChecklist',
boardId,
'checklistName': '*',
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'removeChecklist',
boardId,
'checklistName': '*',
desc,
});
}
},
'click .js-add-spec-check-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#spec-check-action').value;
const checklistId = this.find('#check-name').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'created') {
datas.triggerVar.set({
activityType: 'addChecklist',
boardId,
'checklistName': checklistId,
desc,
});
}
if (actionSelected === 'removed') {
datas.triggerVar.set({
activityType: 'removeChecklist',
boardId,
'checklistName': checklistId,
desc,
});
}
},
'click .js-add-gen-comp-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#gen-comp-check-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'completed') {
datas.triggerVar.set({
activityType: 'completeChecklist',
boardId,
'checklistName': '*',
desc,
});
}
if (actionSelected === 'uncompleted') {
datas.triggerVar.set({
activityType: 'uncompleteChecklist',
boardId,
'checklistName': '*',
desc,
});
}
},
'click .js-add-spec-comp-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#spec-comp-check-action').value;
const checklistId = this.find('#spec-comp-check-name').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'completed') {
datas.triggerVar.set({
activityType: 'completeChecklist',
boardId,
'checklistName': checklistId,
desc,
});
}
if (actionSelected === 'uncompleted') {
datas.triggerVar.set({
activityType: 'uncompleteChecklist',
boardId,
'checklistName': checklistId,
desc,
});
}
},
'click .js-add-gen-check-item-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#check-item-gen-action').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'checked') {
datas.triggerVar.set({
activityType: 'checkedItem',
boardId,
'checklistItemName': '*',
desc,
});
}
if (actionSelected === 'unchecked') {
datas.triggerVar.set({
activityType: 'uncheckedItem',
boardId,
'checklistItemName': '*',
desc,
});
}
},
'click .js-add-spec-check-item-trigger' (event) {
const desc = Utils.getTriggerActionDesc(event, this);
const datas = this.data();
const actionSelected = this.find('#check-item-spec-action').value;
const checklistItemId = this.find('#check-item-name').value;
const boardId = Session.get('currentBoard');
if (actionSelected === 'checked') {
datas.triggerVar.set({
activityType: 'checkedItem',
boardId,
'checklistItemName': checklistItemId,
desc,
});
}
if (actionSelected === 'unchecked') {
datas.triggerVar.set({
activityType: 'uncheckedItem',
boardId,
'checklistItemName': checklistItemId,
desc,
});
}
},
}];
},
}).register('checklistTriggers');
@@ -0,0 +1,6 @@
template(name='connectionMethod')
div.at-form-authentication
label {{_ 'authentication-method'}}
select.select-authentication
each authentications
option(value="{{value}}") {{_ value}}
@@ -0,0 +1,34 @@
Template.connectionMethod.onCreated(function() {
this.authenticationMethods = new ReactiveVar([]);
Meteor.call('getAuthenticationsEnabled', (_, result) => {
if (result) {
// TODO : add a management of different languages
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
this.authenticationMethods.set([
{value: 'password'},
// Gets only the authentication methods availables
...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
]);
}
// If only the default authentication available, hides the select boxe
const content = $('.at-form-authentication');
if (!(this.authenticationMethods.get().length > 1)) {
content.hide();
} else {
content.show();
}
});
});
Template.connectionMethod.onRendered(() => {
// Moves the select boxe in the first place of the at-pwd-form div
$('.at-form-authentication').detach().prependTo('.at-pwd-form');
});
Template.connectionMethod.helpers({
authentications() {
return Template.instance().authenticationMethods.get();
},
});
@@ -17,7 +17,7 @@ template(name='statistics')
table
tbody
tr
th {{_ 'Wekan_version'}}
th Wekan {{_ 'info'}}
td {{statistics.version}}
tr
th {{_ 'Node_version'}}
+19 -3
View File
@@ -27,6 +27,7 @@ template(name="peopleGeneral")
th {{_ 'verified'}}
th {{_ 'createdAt'}}
th {{_ 'active'}}
th {{_ 'authentication-method'}}
th
each user in peopleList
+peopleRow(userId=user._id)
@@ -52,6 +53,7 @@ template(name="peopleRow")
| {{_ 'no'}}
else
| {{_ 'yes'}}
td {{_ userData.authenticationMethod }}
td
a.edit-user
| {{_ 'edit'}}
@@ -66,12 +68,18 @@ template(name="editUserPopup")
| {{_ 'username'}}
span.error.hide.username-taken
| {{_ 'error-username-taken'}}
input.js-profile-username(type="text" value=user.username)
if isLdap
input.js-profile-username(type="text" value=user.username readonly)
else
input.js-profile-username(type="text" value=user.username)
label
| {{_ 'email'}}
span.error.hide.email-taken
| {{_ 'error-email-taken'}}
input.js-profile-email(type="email" value="{{user.emails.[0].address}}")
if isLdap
input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
else
input.js-profile-email(type="email" value="{{user.emails.[0].address}}")
label
| {{_ 'admin'}}
select.select-role.js-profile-isadmin
@@ -82,9 +90,17 @@ template(name="editUserPopup")
select.select-active.js-profile-isactive
option(value="false") {{_ 'yes'}}
option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}}
label
| {{_ 'authentication-type'}}
select.select-authenticationMethod.js-authenticationMethod
each authentications
if isSelected value
option(value="{{value}}" selected) {{_ value}}
else
option(value="{{value}}") {{_ value}}
hr
label
| {{_ 'password'}}
input.js-profile-password(type="password")
input.primary.wide(type="submit" value="{{_ 'save'}}")
input.primary.wide(type="submit" value="{{_ 'save'}}")
+31
View File
@@ -62,10 +62,39 @@ Template.peopleRow.helpers({
},
});
Template.editUserPopup.onCreated(function() {
this.authenticationMethods = new ReactiveVar([]);
Meteor.call('getAuthenticationsEnabled', (_, result) => {
if (result) {
// TODO : add a management of different languages
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
this.authenticationMethods.set([
{value: 'password'},
// Gets only the authentication methods availables
...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})),
]);
}
});
});
Template.editUserPopup.helpers({
user() {
return Users.findOne(this.userId);
},
authentications() {
return Template.instance().authenticationMethods.get();
},
isSelected(match) {
const userId = Template.instance().data.userId;
const selected = Users.findOne(userId).authenticationMethod;
return selected === match;
},
isLdap() {
const userId = Template.instance().data.userId;
const selected = Users.findOne(userId).authenticationMethod;
return selected === 'ldap';
},
});
BlazeComponent.extendComponent({
@@ -91,6 +120,7 @@ Template.editUserPopup.events({
const isAdmin = tpl.find('.js-profile-isadmin').value.trim();
const isActive = tpl.find('.js-profile-isactive').value.trim();
const email = tpl.find('.js-profile-email').value.trim();
const authentication = tpl.find('.js-authenticationMethod').value.trim();
const isChangePassword = password.length > 0;
const isChangeUserName = username !== user.username;
@@ -101,6 +131,7 @@ Template.editUserPopup.events({
'profile.fullname': fullname,
'isAdmin': isAdmin === 'true',
'loginDisabled': isActive === 'true',
'authenticationMethod': authentication,
},
});
+27 -1
View File
@@ -16,6 +16,8 @@ template(name="setting")
a.js-setting-menu(data-id="account-setting") {{_ 'accounts'}}
li
a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}}
li
a.js-setting-menu(data-id="layout-setting") {{_ 'layout'}}
.main-body
if loading.get
+spinner
@@ -27,6 +29,8 @@ template(name="setting")
+accountSettings
else if announcementSetting.get
+announcementSettings
else if layoutSetting.get
+layoutSettings
template(name="general")
ul#registration-setting.setting-detail
@@ -72,7 +76,7 @@ template(name='email')
li.smtp-form
.title {{_ 'smtp-password'}}
.form-group
input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="")
input.form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="{{currentSetting.mailServer.password}}")
li.smtp-form
.title {{_ 'smtp-tls'}}
.form-group
@@ -127,3 +131,25 @@ template(name='announcementSettings')
textarea#admin-announcement.form-control= currentSetting.body
li
button.js-announcement-save.primary {{_ 'save'}}
template(name='layoutSettings')
ul#layout-setting.setting-detail
li.layout-form
.title {{_ 'hide-logo'}}
.form-group.flex
input.form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
span {{_ 'yes'}}
input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
span {{_ 'no'}}
li.layout-form
.title {{_ 'custom-product-name'}}
.form-group
input.form-control#product-name(type="text", placeholder="Wekan" value="{{currentSetting.productName}}")
li.layout-form
.title {{_ 'add-custom-html-after-body-start'}}
textarea#customHTMLafterBodyStart.form-control= currentSetting.customHTMLafterBodyStart
li.layout-form
.title {{_ 'add-custom-html-before-body-end'}}
textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd
li
button.js-save-layout.primary {{_ 'save'}}
+36
View File
@@ -6,6 +6,7 @@ BlazeComponent.extendComponent({
this.emailSetting = new ReactiveVar(false);
this.accountSetting = new ReactiveVar(false);
this.announcementSetting = new ReactiveVar(false);
this.layoutSetting = new ReactiveVar(false);
Meteor.subscribe('setting');
Meteor.subscribe('mailServer');
@@ -58,6 +59,9 @@ BlazeComponent.extendComponent({
toggleTLS() {
$('#mail-server-tls').toggleClass('is-checked');
},
toggleHideLogo() {
$('#hide-logo').toggleClass('is-checked');
},
switchMenu(event) {
const target = $(event.target);
if (!target.hasClass('active')) {
@@ -68,6 +72,7 @@ BlazeComponent.extendComponent({
this.emailSetting.set('email-setting' === targetID);
this.accountSetting.set('account-setting' === targetID);
this.announcementSetting.set('announcement-setting' === targetID);
this.layoutSetting.set('layout-setting' === targetID);
}
},
@@ -129,6 +134,35 @@ BlazeComponent.extendComponent({
},
saveLayout() {
this.setLoading(true);
$('li').removeClass('has-error');
const productName = $('#product-name').val().trim();
const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true');
const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim();
const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim();
try {
Settings.update(Settings.findOne()._id, {
$set: {
productName,
hideLogo: hideLogoChange,
customHTMLafterBodyStart,
customHTMLbeforeBodyEnd,
},
});
} catch (e) {
return;
} finally {
this.setLoading(false);
}
DocHead.setTitle(productName);
},
sendSMTPTestEmail() {
Meteor.call('sendSMTPTestEmail', (err, ret) => {
if (!err && ret) { /* eslint-disable no-console */
@@ -154,6 +188,8 @@ BlazeComponent.extendComponent({
'click button.js-email-invite': this.inviteThroughEmail,
'click button.js-save': this.saveMailServerInfo,
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
'click a.js-toggle-hide-logo': this.toggleHideLogo,
'click button.js-save-layout': this.saveLayout,
}];
},
}).register('setting');
+2 -1
View File
@@ -66,7 +66,8 @@
padding: 0 0.5rem
.admin-announcement,
.invite-people
.invite-people,
.layout
padding-left 20px;
li
min-width: 500px;
+1 -2
View File
@@ -16,8 +16,7 @@ BlazeComponent.extendComponent({
},
onCreated() {
const initOpen = Utils.isMiniScreen() ? false : (!Session.get('currentCard'));
this._isOpen = new ReactiveVar(initOpen);
this._isOpen = new ReactiveVar(false);
this._view = new ReactiveVar(defaultView);
Sidebar = this;
},
@@ -41,6 +41,16 @@ template(name="createCustomFieldPopup")
.materialCheckBox(class="{{#if showOnCard}}is-checked{{/if}}")
span {{_ 'show-field-on-card'}}
a.flex.js-field-automatically-on-card(class="{{#if automaticallyOnCard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if automaticallyOnCard}}is-checked{{/if}}")
span {{_ 'automatically-field-on-card'}}
a.flex.js-field-showLabel-on-card(class="{{#if showLabelOnMiniCard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if showLabelOnMiniCard}}is-checked{{/if}}")
span {{_ 'showLabel-field-on-card'}}
button.primary.wide.left(type="button")
| {{_ 'save'}}
if _id
@@ -83,6 +83,22 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .js-field-automatically-on-card'(evt) {
let $target = $(evt.target);
if(!$target.hasClass('js-field-automatically-on-card')){
$target = $target.parent();
}
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .js-field-showLabel-on-card'(evt) {
let $target = $(evt.target);
if(!$target.hasClass('js-field-showLabel-on-card')){
$target = $target.parent();
}
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .primary'(evt) {
evt.preventDefault();
@@ -92,6 +108,8 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
type: this.type.get(),
settings: this.getSettings(),
showOnCard: this.find('.js-field-show-on-card.is-checked') !== null,
showLabelOnMiniCard: this.find('.js-field-showLabel-on-card.is-checked') !== null,
automaticallyOnCard: this.find('.js-field-automatically-on-card.is-checked') !== null,
};
// insert or update
@@ -1,5 +1,5 @@
template(name="swimlaneHeader")
.swimlane-header-wrap.js-swimlane-header
.swimlane-header-wrap.js-swimlane-header(class='{{#if colorClass}}swimlane-{{colorClass}}{{/if}}')
+inlinedForm
+editSwimlaneTitleForm
else
@@ -8,6 +8,7 @@ template(name="swimlaneHeader")
= title
.swimlane-header-menu
unless currentUser.isCommentOnly
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
a.fa.fa-navicon.js-open-swimlane-menu
template(name="editSwimlaneTitleForm")
@@ -19,5 +20,25 @@ template(name="editSwimlaneTitleForm")
template(name="swimlaneActionPopup")
unless currentUser.isCommentOnly
ul.pop-over-list
li: a.js-set-swimlane-color {{_ 'select-color'}}
hr
ul.pop-over-list
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
template(name="swimlaneAddPopup")
unless currentUser.isCommentOnly
form
input.swimlane-name-input.full-line(type="text" placeholder="{{_ 'add-swimlane'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
template(name="setSwimlaneColorPopup")
form.edit-label
.palette-colors: each colors
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
@@ -1,3 +1,10 @@
const { calculateIndexData } = Utils;
let swimlaneColors;
Meteor.startup(() => {
swimlaneColors = Swimlanes.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
editTitle(evt) {
evt.preventDefault();
@@ -11,15 +18,82 @@ BlazeComponent.extendComponent({
events() {
return [{
'click .js-open-swimlane-menu': Popup.open('swimlaneAction'),
'click .js-open-add-swimlane-menu': Popup.open('swimlaneAdd'),
submit: this.editTitle,
}];
},
}).register('swimlaneHeader');
Template.swimlaneActionPopup.events({
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-close-swimlane' (evt) {
evt.preventDefault();
this.archive();
Popup.close();
},
});
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
},
events() {
return [{
submit(evt) {
evt.preventDefault();
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const nextSwimlane = currentBoard.nextSwimlane(this.currentSwimlane);
const titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
const sortValue = calculateIndexData(this.currentSwimlane, nextSwimlane, 1);
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: sortValue.base,
});
titleInput.value = '';
titleInput.focus();
}
// XXX ideally, we should move the popup to the newly
// created swimlane so a user can add more than one swimlane
// with a minimum of interactions
Popup.close();
},
}];
},
}).register('swimlaneAddPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
this.currentColor = new ReactiveVar(this.currentSwimlane.color);
},
colors() {
return swimlaneColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentSwimlane.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentSwimlane.setColor(null);
Popup.close();
},
}];
},
}).register('setSwimlaneColorPopup');
+13 -37
View File
@@ -1,21 +1,22 @@
template(name="swimlane")
.swimlane.js-lists.js-swimlane
+swimlaneHeader
if isMiniScreen
if currentList
+list(currentList)
.swimlane.list-group.js-lists
if isMiniScreen
if currentList
+list(currentList)
else
each currentBoard.lists
+miniList(this)
if currentUser.isBoardMember
+addListForm
else
each currentBoard.lists
+miniList(this)
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
+addListForm
else
each currentBoard.lists
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
+addListAndSwimlaneForm
template(name="listsGroup")
.swimlane.list-group.js-lists
@@ -35,34 +36,9 @@ template(name="listsGroup")
if currentUser.isBoardMember
+addListForm
template(name="addListAndSwimlaneForm")
.list.list-composer.js-list-composer
.list-header
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-list'}}
.list-header
+inlinedForm(autoclose=false)
input.swimlane-name-input.full-line(type="text" placeholder="{{_ 'add-swimlane'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-swimlane'}}
template(name="addListForm")
.list.list-composer.js-list-composer
.list-header
.list-header-add
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
autocomplete="off" autofocus)
-42
View File
@@ -175,48 +175,6 @@ BlazeComponent.extendComponent({
},
}).register('addListForm');
BlazeComponent.extendComponent({
// Proxy
open() {
this.childComponents('inlinedForm')[0].open();
},
events() {
return [{
submit(evt) {
evt.preventDefault();
let titleInput = this.find('.list-name-input');
if (titleInput) {
const title = titleInput.value.trim();
if (title) {
Lists.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.list').length,
});
titleInput.value = '';
titleInput.focus();
}
} else {
titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.swimlane').length,
});
titleInput.value = '';
titleInput.focus();
}
}
},
}];
},
}).register('addListAndSwimlaneForm');
Template.swimlane.helpers({
canSeeAddList() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+92 -10
View File
@@ -5,7 +5,7 @@
// transparent, because that won't work during a swimlane drag.
background: darken(white, 13%)
display: flex
flex-direction: row
flex-direction: column
overflow: 0;
max-height: 100%
@@ -27,19 +27,15 @@
.swimlane-header-wrap
display: flex;
flex-direction: row;
flex: 0 0 50px;
padding-bottom: 30px;
border-bottom: 1px solid #CCC
flex: 0 0 24px;
background-color: #ccc;
.swimlane-header
writing-mode: vertical-rl;
transform: rotate(180deg);
font-size: 14px;
line-height: 50px;
margin-top: 50px;
padding: 5px 5px
font-weight: bold;
min-height: 9px;
width: 50px;
width: 100%;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
@@ -48,7 +44,93 @@
.swimlane-header-menu
position: absolute
padding: 20px 20px
padding: 5px 5px
.swimlane-header-plus-icon
margin-left: 5px
margin-right: 10px
.list-group
flex-direction: row
height: 100%
swimlane-color(background, color...)
background: background !important
if color
color: color !important //overwrite text for better visibility
.swimlane-white
swimlane-color(#ffffff, #4d4d4d) //Black text for better visibility
border: 1px solid #eee
.swimlane-green
swimlane-color(#3cb500, #ffffff) //White text for better visibility
.swimlane-yellow
swimlane-color(#fad900, #4d4d4d) //Black text for better visibility
.swimlane-orange
swimlane-color(#ff9f19, #4d4d4d) //Black text for better visibility
.swimlane-red
swimlane-color(#eb4646, #ffffff) //White text for better visibility
.swimlane-purple
swimlane-color(#a632db, #ffffff) //White text for better visibility
.swimlane-blue
swimlane-color(#0079bf, #ffffff) //White text for better visibility
.swimlane-pink
swimlane-color(#ff78cb, #4d4d4d) //Black text for better visibility
.swimlane-sky
swimlane-color(#00c2e0, #ffffff) //White text for better visibility
.swimlane-black
swimlane-color(#4d4d4d, #ffffff) //White text for better visibility
.swimlane-lime
swimlane-color(#51e898, #4d4d4d) //Black text for better visibility
.swimlane-silver
swimlane-color(unset, #4d4d4d) //Black text for better visibility
.swimlane-peachpuff
swimlane-color(#ffdab9, #4d4d4d) //Black text for better visibility
.swimlane-crimson
swimlane-color(#dc143c, #ffffff) //White text for better visibility
.swimlane-plum
swimlane-color(#dda0dd, #4d4d4d) //Black text for better visibility
.swimlane-darkgreen
swimlane-color(#006400, #ffffff) //White text for better visibility
.swimlane-slateblue
swimlane-color(#6a5acd, #ffffff) //White text for better visibility
.swimlane-magenta
swimlane-color(#ff00ff, #ffffff) //White text for better visibility
.swimlane-gold
swimlane-color(#ffd700, #4d4d4d) //Black text for better visibility
.swimlane-navy
swimlane-color(#000080, #ffffff) //White text for better visibility
.swimlane-gray
swimlane-color(#808080, #ffffff) //White text for better visibility
.swimlane-saddlebrown
swimlane-color(#8b4513, #ffffff) //White text for better visibility
.swimlane-paleturquoise
swimlane-color(#afeeee, #4d4d4d) //Black text for better visibility
.swimlane-mistyrose
swimlane-color(#ffe4e1, #4d4d4d) //Black text for better visibility
.swimlane-indigo
swimlane-color(#4b0082, #ffffff) //White text for better visibility
-18
View File
@@ -17,7 +17,6 @@ template(name="memberMenuPopup")
li: a.js-change-avatar {{_ 'edit-avatar'}}
li: a.js-change-password {{_ 'changePasswordPopup-title'}}
li: a.js-change-language {{_ 'changeLanguagePopup-title'}}
li: a.js-edit-notification {{_ 'editNotificationPopup-title'}}
if currentUser.isAdmin
li: a.js-go-setting(href="{{pathFor 'setting'}}") {{_ 'admin-panel'}}
hr
@@ -50,23 +49,6 @@ template(name="editProfilePopup")
input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly)
input.primary.wide(type="submit" value="{{_ 'save'}}")
template(name="editNotificationPopup")
ul.pop-over-list
li
a.js-toggle-tag-notify-watch
i.fa.fa-eye.colorful
| {{_ 'watching'}}
if hasTag "notify-watch"
i.fa.fa-check
span.sub-name {{_ 'notify-watch'}}
li
a.js-toggle-tag-notify-participate
i.fa.fa-bell.colorful
| {{_ 'tracking'}}
if hasTag "notify-participate"
i.fa.fa-check
span.sub-name {{_ 'notify-participate'}}
template(name="changePasswordPopup")
+atForm(state='changePwd')
-20
View File
@@ -9,7 +9,6 @@ Template.memberMenuPopup.events({
'click .js-change-avatar': Popup.open('changeAvatar'),
'click .js-change-password': Popup.open('changePassword'),
'click .js-change-language': Popup.open('changeLanguage'),
'click .js-edit-notification': Popup.open('editNotification'),
'click .js-logout'(evt) {
evt.preventDefault();
@@ -89,25 +88,6 @@ Template.editProfilePopup.events({
},
});
Template.editNotificationPopup.helpers({
hasTag(tag) {
const user = Meteor.user();
return user && user.hasTag(tag);
},
});
// we defined github like rules, see: https://github.com/settings/notifications
Template.editNotificationPopup.events({
'click .js-toggle-tag-notify-participate'() {
const user = Meteor.user();
if (user) user.toggleTag('notify-participate');
},
'click .js-toggle-tag-notify-watch'() {
const user = Meteor.user();
if (user) user.toggleTag('notify-watch');
},
});
// XXX For some reason the useraccounts autofocus isnt working in this case.
// See https://github.com/meteor-useraccounts/core/issues/384
Template.changePasswordPopup.onRendered(function () {
+13 -1
View File
@@ -4,6 +4,7 @@ window.Modal = new class {
constructor() {
this._currentModal = new ReactiveVar(closedValue);
this._onCloseGoTo = '';
this._isWideModal = false;
}
getHeaderName() {
@@ -20,6 +21,10 @@ window.Modal = new class {
return this.getTemplateName() !== closedValue;
}
isWide(){
return this._isWideModal;
}
close() {
this._currentModal.set(closedValue);
if (this._onCloseGoTo) {
@@ -27,9 +32,16 @@ window.Modal = new class {
}
}
openWide(modalName, { header = '', onCloseGoTo = ''} = {}) {
this._currentModal.set({ header, modalName });
this._onCloseGoTo = onCloseGoTo;
this._isWideModal = true;
}
open(modalName, { header = '', onCloseGoTo = ''} = {}) {
this._currentModal.set({ header, modalName });
this._onCloseGoTo = onCloseGoTo;
}
}();
@@ -38,5 +50,5 @@ Blaze.registerHelper('Modal', Modal);
EscapeActions.register('modalWindow',
() => Modal.close(),
() => Modal.isOpen(),
{ noClickEscapeOn: '.modal-content' }
{ noClickEscapeOn: '.modal-container' }
);
+4 -6
View File
@@ -4,9 +4,9 @@ window.Popup = new class {
this.template = Template.popup;
// We only want to display one popup at a time and we keep the view object
// in this `Popup._current` variable. If there is no popup currently opened
// in this `Popup.current` variable. If there is no popup currently opened
// the value is `null`.
this._current = null;
this.current = null;
// It's possible to open a sub-popup B from a popup A. In that case we keep
// the data of popup A so we can return back to it. Every time we open a new
@@ -27,11 +27,9 @@ window.Popup = new class {
open(name) {
const self = this;
const popupName = `${name}Popup`;
function clickFromPopup(evt) {
return $(evt.target).closest('.js-pop-over').length !== 0;
}
return function(evt) {
// If a popup is already opened, clicking again on the opener element
// should close it -- and interrupt the current `open` function.
@@ -57,7 +55,6 @@ window.Popup = new class {
self._stack = [];
openerElement = evt.currentTarget;
}
$(openerElement).addClass('is-active');
evt.preventDefault();
@@ -139,6 +136,7 @@ window.Popup = new class {
const openerElement = this._getTopStack().openerElement;
$(openerElement).removeClass('is-active');
this._stack = [];
}
}
@@ -200,7 +198,7 @@ escapeActions.forEach((actionName) => {
() => Popup[actionName](),
() => Popup.isOpen(),
{
noClickEscapeOn: '.js-pop-over',
noClickEscapeOn: '.js-pop-over,.js-open-card-title-popup',
enabledOnClick: actionName === 'close',
}
);
+55 -4
View File
@@ -39,11 +39,11 @@ Utils = {
if (!prevData && !nextData) {
base = 0;
increment = 1;
// If we drop the card in the first position
// If we drop the card in the first position
} else if (!prevData) {
base = nextData.sort - 1;
increment = -1;
// If we drop the card in the last position
// If we drop the card in the last position
} else if (!nextData) {
base = prevData.sort + 1;
increment = 1;
@@ -71,11 +71,11 @@ Utils = {
if (!prevCardDomElement && !nextCardDomElement) {
base = 0;
increment = 1;
// If we drop the card in the first position
// If we drop the card in the first position
} else if (!prevCardDomElement) {
base = Blaze.getData(nextCardDomElement).sort - 1;
increment = -1;
// If we drop the card in the last position
// If we drop the card in the last position
} else if (!nextCardDomElement) {
base = Blaze.getData(prevCardDomElement).sort + 1;
increment = 1;
@@ -145,6 +145,26 @@ Utils = {
});
},
manageCustomUI(){
Meteor.call('getCustomUI', (err, data) => {
if (err && err.error[0] === 'var-not-exist'){
Session.set('customUI', false); // siteId || address server not defined
}
if (!err){
Utils.setCustomUI(data);
}
});
},
setCustomUI(data){
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (currentBoard) {
DocHead.setTitle(`${currentBoard.title } - ${ data.productName}`);
} else {
DocHead.setTitle(`${data.productName}`);
}
},
setMatomo(data){
window._paq = window._paq || [];
window._paq.push(['setDoNotTrack', data.doNotTrack]);
@@ -189,6 +209,37 @@ Utils = {
window._paq.push(['trackPageView']);
}
},
getTriggerActionDesc(event, tempInstance) {
const jqueryEl = tempInstance.$(event.currentTarget.parentNode);
const triggerEls = jqueryEl.find('.trigger-content').children();
let finalString = '';
for (let i = 0; i < triggerEls.length; i++) {
const element = tempInstance.$(triggerEls[i]);
if (element.hasClass('trigger-text')) {
finalString += element.text().toLowerCase();
} else if (element.hasClass('user-details')) {
let username = element.find('input').val();
if(username === undefined || username === ''){
username = '*';
}
finalString += `${element.find('.trigger-text').text().toLowerCase() } ${ username}`;
} else if (element.find('select').length > 0) {
finalString += element.find('select option:selected').text().toLowerCase();
} else if (element.find('input').length > 0) {
let inputvalue = element.find('input').val();
if(inputvalue === undefined || inputvalue === ''){
inputvalue = '*';
}
finalString += inputvalue;
}
// Add space
if (i !== length - 1) {
finalString += ' ';
}
}
return finalString;
},
};
// A simple tracker dependency that we invalidate every time the window is
+16 -11
View File
@@ -14,6 +14,7 @@ FlowRouter.route('/', {
Filter.reset();
EscapeActions.executeAll();
Utils.manageCustomUI();
Utils.manageMatomo();
BlazeLayout.render('defaultLayout', {
@@ -40,6 +41,7 @@ FlowRouter.route('/b/:id/:slug', {
EscapeActions.executeUpTo('popup-close');
}
Utils.manageCustomUI();
Utils.manageMatomo();
BlazeLayout.render('defaultLayout', {
@@ -57,6 +59,7 @@ FlowRouter.route('/b/:boardId/:slug/:cardId', {
Session.set('currentBoard', params.boardId);
Session.set('currentCard', params.cardId);
Utils.manageCustomUI();
Utils.manageMatomo();
BlazeLayout.render('defaultLayout', {
@@ -122,6 +125,7 @@ FlowRouter.route('/setting', {
},
],
action() {
Utils.manageCustomUI();
BlazeLayout.render('defaultLayout', {
headerBar: 'settingHeaderBar',
content: 'setting',
@@ -199,20 +203,21 @@ _.each(redirections, (newPath, oldPath) => {
// using the `kadira:dochead` package. Currently we only use it to display the
// board title if we are in a board page (see #364) but we may want to support
// some <meta> tags in the future.
const appTitle = 'Wekan';
//const appTitle = Utils.manageCustomUI();
// XXX The `Meteor.startup` should not be necessary -- we don't need to wait for
// the complete DOM to be ready to call `DocHead.setTitle`. But the problem is
// that the global variable `Boards` is undefined when this file loads so we
// wait a bit until hopefully all files are loaded. This will be fixed in a
// clean way once Meteor will support ES6 modules -- hopefully in Meteor 1.3.
Meteor.isClient && Meteor.startup(() => {
Tracker.autorun(() => {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const titleStack = [appTitle];
if (currentBoard) {
titleStack.push(currentBoard.title);
}
DocHead.setTitle(titleStack.reverse().join(' - '));
});
});
//Meteor.isClient && Meteor.startup(() => {
// Tracker.autorun(() => {
// const currentBoard = Boards.findOne(Session.get('currentBoard'));
// const titleStack = [appTitle];
// if (currentBoard) {
// titleStack.push(currentBoard.title);
// }
// DocHead.setTitle(titleStack.reverse().join(' - '));
// });
//});
+454 -29
View File
@@ -1,9 +1,101 @@
version: '2'
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#---------------------------------------------------------------------------------------------------------
# ==== CREATING USERS AND LOGGING IN TO WEKAN ====
# https://github.com/wekan/wekan/wiki/Adding-users
#---------------------------------------------------------------------------------------------------------
# ==== FORGOT PASSWORD ====
# https://github.com/wekan/wekan/wiki/Forgot-Password
#---------------------------------------------------------------------------------------------------------
# ==== Upgrading Wekan to new version =====
# 1) Stop Wekan:
# docker-compose stop
# 2) Download new version:
# docker-compose pull wekan
# 3) If you have more networks for VPN etc as described at bottom of
# this config, download for them too:
# docker-compose pull wekan2
# 4) Start Wekan:
# docker-compose start
#----------------------------------------------------------------------------------
# ==== OPTIONAL: DEDICATED DOCKER USER ====
# 1) Optionally create a dedicated user for Wekan, for example:
# sudo useradd -d /home/wekan -m -s /bin/bash wekan
# 2) Add this user to the docker group, then logout+login or reboot:
# sudo usermod -aG docker wekan
# 3) Then login as user wekan.
# 4) Create this file /home/wekan/docker-compose.yml with your modifications.
#----------------------------------------------------------------------------------
# ==== RUN DOCKER AS SERVICE ====
# 1a) Running Docker as service, on Systemd like Debian 9, Ubuntu 16.04, CentOS 7:
# sudo systemctl enable docker
# sudo systemctl start docker
# 1b) Running Docker as service, on init.d like Debian 8, Ubuntu 14.04, CentOS 6:
# sudo update-rc.d docker defaults
# sudo service docker start
# ----------------------------------------------------------------------------------
# ==== USAGE OF THIS docker-compose.yml ====
# 1) For seeing does Wekan work, try this and check with your webbroser:
# docker-compose up
# 2) Stop Wekan and start Wekan in background:
# docker-compose stop
# docker-compose up -d
# 3) See running Docker containers:
# docker ps
# 4) Stop Docker containers:
# docker-compose stop
# ----------------------------------------------------------------------------------
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
# https://github.com/wekan/wekan/wiki/Backup
# If really necessary, repair MongoDB: https://github.com/wekan/wekan-mongodb/issues/6#issuecomment-424004116
# 1) Going inside containers:
# a) Wekan app, does not contain data
# docker exec -it wekan-app bash
# b) MongoDB, contains all data
# docker exec -it wekan-db bash
# 2) Copying database to outside of container:
# docker exec -it wekan-db bash
# cd /data
# mongodump
# exit
# docker cp wekan-db:/data/dump .
# 3) Restoring database
# # 1) Stop wekan
# docker stop wekan-app
# # 2) Go inside database container
# docker exec -it wekan-db bash
# # 3) and data directory
# cd /data
# # 4) Remove previos dump
# rm -rf dump
# # 5) Exit db container
# exit
# # 6) Copy dump to inside docker container
# docker cp dump wekan-db:/data/
# # 7) Go inside database container
# docker exec -it wekan-db bash
# # 8) and data directory
# cd /data
# # 9) Restore
# mongorestore --drop
# # 10) Exit db container
# exit
# # 11) Start wekan
# docker start wekan-app
#-------------------------------------------------------------------------
services:
wekandb:
image: mongo:3.2.20
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch, use mongo 4.x
# image: mongo:4.0.4
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
image: mongo:3.2.21
#-------------------------------------------------------------------------------------
container_name: wekan-db
restart: always
command: mongod --smallfiles --oplogSize 128
@@ -16,75 +108,408 @@ services:
- wekan-db-dump:/dump
wekan:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) CURRENTLY BROKEN: For Wekan Meteor 1.8.x version at meteor-1.8 branch,
# using https://quay.io/wekan/wekan automatic builds
# image: quay.io/wekan/wekan:meteor-1.8
# b) For Wekan Meteor 1.6.x version at master/devel/edge branches.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
image: quay.io/wekan/wekan
# c) Using specific Meteor 1.6.x version tag:
# image: quay.io/wekan/wekan:v1.95
# c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan
# image: wekanteam/wekan:meteor-1.8
# image: wekanteam/wekan:v1.95
#-------------------------------------------------------------------------------------
container_name: wekan-app
restart: always
networks:
- wekan-tier
build:
context: .
dockerfile: Dockerfile
args:
- NODE_VERSION=${NODE_VERSION}
- METEOR_RELEASE=${METEOR_RELEASE}
- NPM_VERSION=${NPM_VERSION}
- ARCHITECTURE=${ARCHITECTURE}
- SRC_PATH=${SRC_PATH}
- METEOR_EDGE=${METEOR_EDGE}
- USE_EDGE=${USE_EDGE}
#-------------------------------------------------------------------------------------
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
# ==== and use commands: docker-compose up -d --build
#build:
# context: .
# dockerfile: Dockerfile
# args:
# - NODE_VERSION=${NODE_VERSION}
# - METEOR_RELEASE=${METEOR_RELEASE}
# - NPM_VERSION=${NPM_VERSION}
# - ARCHITECTURE=${ARCHITECTURE}
# - SRC_PATH=${SRC_PATH}
# - METEOR_EDGE=${METEOR_EDGE}
# - USE_EDGE=${USE_EDGE}
#-------------------------------------------------------------------------------------
ports:
# Docker outsideport:insideport
# Docker outsideport:insideport. Do not add anything extra here.
# For example, if you want to have wekan on port 3001,
# use 3001:8080 . Do not add any extra address etc here, that way it does not work.
# remove port mapping if you use nginx reverse proxy, port 8080 is already exposed to wekan-tier network
- 80:8080
environment:
- MONGO_URL=mongodb://wekandb:27017/wekan
- ROOT_URL=http://localhost
# Wekan Export Board works when WITH_API='true'.
# If you disable Wekan API with 'false', Export Board does not work.
#---------------------------------------------------------------
# ==== ROOT_URL SETTING ====
# Change ROOT_URL to your real Wekan URL, for example:
# If you have Caddy/Nginx/Apache providing SSL
# - https://example.com
# - https://boards.example.com
# This can be problematic with avatars https://github.com/wekan/wekan/issues/1776
# - https://example.com/wekan
# If without https, can be only wekan node, no need for Caddy/Nginx/Apache if you don't need them
# - http://example.com
# - http://boards.example.com
# - http://192.168.1.100 <=== using at local LAN
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
#---------------------------------------------------------------
# ==== EMAIL SETTINGS ====
# Email settings are required in both MAIL_URL and Admin Panel,
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
# For SSL in email, change smtp:// to smtps://
# NOTE: Special characters need to be url-encoded in MAIL_URL.
# You can encode those characters for example at: https://www.urlencoder.org
- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_FROM='Example Wekan Support <support@example.com>'
#---------------------------------------------------------------
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587
# We've fixed our CPU usage problem today with an environment
# change around Wekan. I wasn't aware during implementation
# that if you're using more than 1 instance of Wekan
# (or any MeteorJS based tool) you're supposed to set
# MONGO_OPLOG_URL as an environment variable.
# Without setting it, Meteor will perform a pull-and-diff
# update of it's dataset. With it, Meteor will update from
# the OPLOG. See here
# https://blog.meteor.com/tuning-meteor-mongo-livedata-for-scalability-13fe9deb8908
# After setting
# MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
# the CPU usage for all Wekan instances dropped to an average
# of less than 10% with only occasional spikes to high usage
# (I guess when someone is doing a lot of work)
# - MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
#---------------------------------------------------------------
# ==== OPTIONAL: KADIRA PERFORMANCE MONITORING FOR METEOR ====
# https://github.com/smeijer/kadira
# https://blog.meteor.com/kadira-apm-is-now-open-source-490469ffc85f
# - export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
#---------------------------------------------------------------
# ==== OPTIONAL: LOGS AND STATS ====
# https://github.com/wekan/wekan/wiki/Logs
#
# Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK)
# https://github.com/wekan/wekan-logstash
#
# Statistics Python script for Wekan Dashboard
# https://github.com/wekan/wekan-stats
#
# Console, file, and zulip logger on database changes https://github.com/wekan/wekan/pull/1010
# with fix to replace console.log by winston logger https://github.com/wekan/wekan/pull/1033
# but there could be bug https://github.com/wekan/wekan/issues/1094
#
# There is Feature Request: Logging date and time of all activity with summary reports,
# and requesting reason for changing card to other column https://github.com/wekan/wekan/issues/1598
#---------------------------------------------------------------
# ==== WEKAN API AND EXPORT BOARD ====
# Wekan Export Board works when WITH_API=true.
# https://github.com/wekan/wekan/wiki/REST-API
# https://github.com/wekan/wekan-gogs
# If you disable Wekan API with false, Export Board does not work.
- WITH_API=true
#-----------------------------------------------------------------
# ==== CORS =====
# CORS: Set Access-Control-Allow-Origin header. Example: *
#- CORS=*
#-----------------------------------------------------------------
# ==== MATOMO INTEGRATION ====
# Optional: Integration with Matomo https://matomo.org that is installed to your server
# The address of the server where Matomo is hosted.
# The address of the server where Matomo is hosted.
# example: - MATOMO_ADDRESS=https://example.com/matomo
- MATOMO_ADDRESS=''
#- MATOMO_ADDRESS=
# The value of the site ID given in Matomo server for Wekan
# example: - MATOMO_SITE_ID=12345
- MATOMO_SITE_ID=''
#- MATOMO_SITE_ID=
# The option do not track which enables users to not be tracked by matomo
# example: - MATOMO_DO_NOT_TRACK=false
- MATOMO_DO_NOT_TRACK=true
#- MATOMO_DO_NOT_TRACK=
# The option that allows matomo to retrieve the username:
# example: MATOMO_WITH_USERNAME=true
- MATOMO_WITH_USERNAME=false
#- MATOMO_WITH_USERNAME=false
#-----------------------------------------------------------------
# ==== BROWSER POLICY AND TRUSTED IFRAME URL ====
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
# Setting this to false is not recommended, it also disables all other browser policy protections
# and allows all iframing etc. See wekan/server/policy.js
- BROWSER_POLICY_ENABLED=true
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
- TRUSTED_URL=''
#- TRUSTED_URL=
#-----------------------------------------------------------------
# ==== OUTGOING WEBHOOKS ====
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
# example: WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
- WEBHOOKS_ATTRIBUTES=''
#- WEBHOOKS_ATTRIBUTES=
#-----------------------------------------------------------------
# ==== OAUTH2 ONLY WITH OIDC AND DOORKEEPER AS INDENTITY PROVIDER
# https://github.com/wekan/wekan/issues/1874
# https://github.com/wekan/wekan/wiki/OAuth2
# Enable the OAuth2 connection
# example: OAUTH2_ENABLED=true
#- OAUTH2_ENABLED=false
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
# OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
# example: OAUTH2_CLIENT_ID=abcde12345
- OAUTH2_CLIENT_ID=''
#- OAUTH2_CLIENT_ID=
# OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
# example: OAUTH2_SECRET=54321abcde
- OAUTH2_SECRET=''
#- OAUTH2_SECRET=
# OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
# example: OAUTH2_SERVER_URL=https://chat.example.com
- OAUTH2_SERVER_URL=''
#- OAUTH2_SERVER_URL=
# OAuth2 Authorization Endpoint. Example: /oauth/authorize
# example: OAUTH2_AUTH_ENDPOINT=/oauth/authorize
- OAUTH2_AUTH_ENDPOINT=''
#- OAUTH2_AUTH_ENDPOINT=
# OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
# example: OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
- OAUTH2_USERINFO_ENDPOINT=''
#- OAUTH2_USERINFO_ENDPOINT=
# OAuth2 Token Endpoint. Example: /oauth/token
# example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
- OAUTH2_TOKEN_ENDPOINT=''
#- OAUTH2_TOKEN_ENDPOINT=
#-----------------------------------------------------------------
# ==== LDAP ====
# https://github.com/wekan/wekan/wiki/LDAP
# For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys
# Most settings work both on Snap and Docker below.
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
#
# DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Can be set as ldap.
# example : DEFAULT_AUTHENTICATION_METHOD=ldap
#- DEFAULT_AUTHENTICATION_METHOD=
#
# LDAP_ENABLE : Enable or not the connection by the LDAP
# example : LDAP_ENABLE=true
#- LDAP_ENABLE=false
#
# LDAP_PORT : The port of the LDAP server
# example : LDAP_PORT=389
#- LDAP_PORT=389
#
# LDAP_HOST : The host server for the LDAP server
# example : LDAP_HOST=localhost
#- LDAP_HOST=
#
# LDAP_BASEDN : The base DN for the LDAP Tree
# example : LDAP_BASEDN=ou=user,dc=example,dc=org
#- LDAP_BASEDN=
#
# LDAP_LOGIN_FALLBACK : Fallback on the default authentication method
# example : LDAP_LOGIN_FALLBACK=true
#- LDAP_LOGIN_FALLBACK=false
#
# LDAP_RECONNECT : Reconnect to the server if the connection is lost
# example : LDAP_RECONNECT=false
#- LDAP_RECONNECT=true
#
# LDAP_TIMEOUT : Overall timeout, in milliseconds
# example : LDAP_TIMEOUT=12345
#- LDAP_TIMEOUT=10000
#
# LDAP_IDLE_TIMEOUT : Specifies the timeout for idle LDAP connections in milliseconds
# example : LDAP_IDLE_TIMEOUT=12345
#- LDAP_IDLE_TIMEOUT=10000
#
# LDAP_CONNECT_TIMEOUT : Connection timeout, in milliseconds
# example : LDAP_CONNECT_TIMEOUT=12345
#- LDAP_CONNECT_TIMEOUT=10000
#
# LDAP_AUTHENTIFICATION : If the LDAP needs a user account to search
# example : LDAP_AUTHENTIFICATION=true
#- LDAP_AUTHENTIFICATION=false
#
# LDAP_AUTHENTIFICATION_USERDN : The search user DN
# example : LDAP_AUTHENTIFICATION_USERDN=cn=admin,dc=example,dc=org
#- LDAP_AUTHENTIFICATION_USERDN=
#
# LDAP_AUTHENTIFICATION_PASSWORD : The password for the search user
# example : AUTHENTIFICATION_PASSWORD=admin
#- LDAP_AUTHENTIFICATION_PASSWORD=
#
# LDAP_LOG_ENABLED : Enable logs for the module
# example : LDAP_LOG_ENABLED=true
#- LDAP_LOG_ENABLED=false
#
# LDAP_BACKGROUND_SYNC : If the sync of the users should be done in the background
# example : LDAP_BACKGROUND_SYNC=true
#- LDAP_BACKGROUND_SYNC=false
#
# LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds
# example : LDAP_BACKGROUND_SYNC_INTERVAL=12345
#- LDAP_BACKGROUND_SYNC_INTERVAL=100
#
# LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED :
# example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
#
# LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS :
# example : LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true
#- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
#
# LDAP_ENCRYPTION : If using LDAPS
# example : LDAP_ENCRYPTION=ssl
#- LDAP_ENCRYPTION=false
#
# LDAP_CA_CERT : The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
# example : LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE-----
#- LDAP_CA_CERT=
#
# LDAP_REJECT_UNAUTHORIZED : Reject Unauthorized Certificate
# example : LDAP_REJECT_UNAUTHORIZED=true
#- LDAP_REJECT_UNAUTHORIZED=false
#
# LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
# example : LDAP_USER_SEARCH_FILTER=
#- LDAP_USER_SEARCH_FILTER=
#
# LDAP_USER_SEARCH_SCOPE : base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
# example : LDAP_USER_SEARCH_SCOPE=one
#- LDAP_USER_SEARCH_SCOPE=
#
# LDAP_USER_SEARCH_FIELD : Which field is used to find the user
# example : LDAP_USER_SEARCH_FIELD=uid
#- LDAP_USER_SEARCH_FIELD=
#
# LDAP_SEARCH_PAGE_SIZE : Used for pagination (0=unlimited)
# example : LDAP_SEARCH_PAGE_SIZE=12345
#- LDAP_SEARCH_PAGE_SIZE=0
#
# LDAP_SEARCH_SIZE_LIMIT : The limit number of entries (0=unlimited)
# example : LDAP_SEARCH_SIZE_LIMIT=12345
#- LDAP_SEARCH_SIZE_LIMIT=0
#
# LDAP_GROUP_FILTER_ENABLE : Enable group filtering
# example : LDAP_GROUP_FILTER_ENABLE=true
#- LDAP_GROUP_FILTER_ENABLE=false
#
# LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering
# example : LDAP_GROUP_FILTER_OBJECTCLASS=group
#- LDAP_GROUP_FILTER_OBJECTCLASS=
#
# LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE :
# example :
#- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=
#
# LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE :
# example :
#- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=
#
# LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT :
# example :
#- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=
#
# LDAP_GROUP_FILTER_GROUP_NAME :
# example :
#- LDAP_GROUP_FILTER_GROUP_NAME=
#
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier)
# example : LDAP_UNIQUE_IDENTIFIER_FIELD=guid
#- LDAP_UNIQUE_IDENTIFIER_FIELD=
#
# LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8
# example : LDAP_UTF8_NAMES_SLUGIFY=false
#- LDAP_UTF8_NAMES_SLUGIFY=true
#
# LDAP_USERNAME_FIELD : Which field contains the ldap username
# example : LDAP_USERNAME_FIELD=username
#- LDAP_USERNAME_FIELD=
#
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname
# example : LDAP_FULLNAME_FIELD=fullname
#- LDAP_FULLNAME_FIELD=
#
# LDAP_MERGE_EXISTING_USERS :
# example : LDAP_MERGE_EXISTING_USERS=true
#- LDAP_MERGE_EXISTING_USERS=false
#-----------------------------------------------------------------
# LDAP_SYNC_USER_DATA :
# example : LDAP_SYNC_USER_DATA=true
#- LDAP_SYNC_USER_DATA=false
#
# LDAP_SYNC_USER_DATA_FIELDMAP :
# example : LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
#- LDAP_SYNC_USER_DATA_FIELDMAP=
#
# LDAP_SYNC_GROUP_ROLES :
# example :
#- LDAP_SYNC_GROUP_ROLES=
#
# LDAP_DEFAULT_DOMAIN : The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
# example :
#- LDAP_DEFAULT_DOMAIN=
#---------------------------------------------------------------------
# ==== LOGOUT TIMER, probably does not work yet ====
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
#- LOGOUT_WITH_TIMER=
#
# LOGOUT_IN : The number of days
# example : LOGOUT_IN=1
#- LOGOUT_IN=
#
# LOGOUT_ON_HOURS : The number of hours
# example : LOGOUT_ON_HOURS=9
#- LOGOUT_ON_HOURS=
#
# LOGOUT_ON_MINUTES : The number of minutes
# example : LOGOUT_ON_MINUTES=55
#- LOGOUT_ON_MINUTES=
#-------------------------------------------------------------------
depends_on:
- wekandb
#---------------------------------------------------------------------------------
# ==== OPTIONAL: SHARE DATABASE TO OFFICE LAN AND REMOTE VPN ====
# When using Wekan both at office LAN and remote VPN:
# 1) Have above Wekan docker container config with LAN IP address
# 2) Copy all of above wekan container config below, look above of this part above and all config below it,
# before above depends_on: part:
#
# wekan:
# #-------------------------------------------------------------------------------------
# # ==== MONGODB AND METEOR VERSION ====
# # a) For Wekan Meteor 1.8.x version at meteor-1.8 branch, .....
#
#
# and change name to different name like wekan2 or wekanvpn, and change ROOT_URL to server VPN IP
# address.
# 3) This way both Wekan containers can use same MongoDB database
# and see the same Wekan boards.
# 4) You could also add 3rd Wekan container for 3rd network etc.
# EXAMPLE:
# wekan2:
# ....COPY CONFIG FROM ABOVE TO HERE...
# environment:
# - ROOT_URL='http://10.10.10.10'
# ...COPY CONFIG FROM ABOVE TO HERE...
#---------------------------------------------------------------------------------
# OPTIONAL NGINX CONFIG FOR REVERSE PROXY
# nginx:
# image: nginx
# container_name: nginx
# restart: always
# networks:
# - wekan-tier
# depends_on:
# - wekan
# ports:
# - 80:80
# - 443:443
# volumes:
# - ./nginx/ssl:/etc/nginx/ssl/
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf
volumes:
wekan-db:
driver: local
Executable
+16
View File
@@ -0,0 +1,16 @@
#!/bin/bash
# Find text from all subdirectories
# and ignore all temporary directories:
# - node-modules = installed node modules
# - .build = Wekan bundle that is combined from source. Do not edit these, these are deleted and recreated.
# - .meteor = Meteor version, packages etc at .meteor/local
# - .git = git history
# If less or more that 1 parameter, show usage.
if (( $# != 1 )); then
echo 'Usage: ./find.sh text-to-find'
exit 0
fi
find . | grep -v node_modules | grep -v .build | grep -v .meteor | grep -v .git | xargs grep --no-messages $1 | less
+218 -66
View File
@@ -1,20 +1,20 @@
{
"accept": "اقبلboard",
"act-activity-notify": "[Wekan] اشعار عن نشاط",
"act-addAttachment": "ربط __attachment__ الى __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "علق على __comment__ : __card__",
"act-createBoard": "احدث __board__",
"act-createCard": "اضاف __card__ الى __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "اضاف __list__ الى __board__",
"accept": "قبول",
"act-activity-notify": "اشعارات النشاط",
"act-addAttachment": "ربط __المرفق__ الى __بطاقة__",
"act-addSubtask": "تمة اضافة فرع المهمة __ قائمة التدقيق __ الى __ بطاقة",
"act-addChecklist": "تمة اضافة قائمة التدقيق __ قائمة التدقيق __ الى __ بطاقة",
"act-addChecklistItem": "تمة اضافة عنصر قائمة التدقيق __الى قائمة التدقيق __ قائمة التدقيق __ في __ بطاقة",
"act-addComment": "علق على __بطاقة__ : __تعليق__",
"act-createBoard": "احدث __لوحة__",
"act-createCard": "تمة اضافة __بطاقة__ الى __قائمة__",
"act-createCustomField": "احدث حقل مخصص __ حقل مخصص__",
"act-createList": "اضاف __قائمة__ الى __لوحة__",
"act-addBoardMember": "اضاف __member__ الى __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__ لوح __ انتقل إلى الأرشيف",
"act-archivedCard": "__ بطاقة __ انتقلت إلى الأرشيف",
"act-archivedList": "__ القائمة __ انتقلت إلى الأرشيف",
"act-archivedSwimlane": "__خط السباحة__انتقل إلى الأرشيف",
"act-importBoard": "إستورد __board__",
"act-importCard": "إستورد __card__",
"act-importList": "إستورد __list__",
@@ -23,16 +23,16 @@
"act-removeBoardMember": "أزال __member__ من __board__",
"act-restoredCard": "أعاد __card__ إلى __board__",
"act-unjoinMember": "أزال __member__ من __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__لوح__",
"act-withCardTitle": "[__board__] __card__",
"actions": "الإجراءات",
"activities": "الأنشطة",
"activity": "النشاط",
"activity-added": "تمت إضافة %s ل %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s انتقل الى الارشيف",
"activity-attached": "إرفاق %s ل %s",
"activity-created": "أنشأ %s",
"activity-customfield-created": "created custom field %s",
"activity-customfield-created": "%s احدت حقل مخصص",
"activity-excluded": "استبعاد %s عن %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
@@ -42,10 +42,20 @@
"activity-removed": "حذف %s إلى %s",
"activity-sent": "إرسال %s إلى %s",
"activity-unjoined": "غادر %s",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "تم اضافة مهمة فرعية الى %s",
"activity-checked-item": "تحقق %s في قائمة التحقق %s من %s",
"activity-unchecked-item": "ازالة تحقق %s من قائمة التحقق %s من %s",
"activity-checklist-added": "أضاف قائمة تحقق إلى %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-removed": "ازالة قائمة التحقق من %s",
"activity-checklist-completed": "تم انجاز قائمة التحقق %s من %s",
"activity-checklist-uncompleted": "لم يتم انجاز قائمة التحقق %s من %s",
"activity-checklist-item-added": "تم اضافة عنصر قائمة التحقق الى '%s' في %s",
"activity-checklist-item-removed": "تم ازالة عنصر قائمة التحقق الى '%s' في %s",
"add": "أضف",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "إضافة مرفق",
"add-board": "إضافة لوحة",
"add-card": "إضافة بطاقة",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other بطاقة",
"and-n-other-card_plural": "And __count__ other بطاقات",
"apply": "طبق",
"app-is-offline": "يتمّ تحميل ويكان، يرجى الانتظار. سيؤدي تحديث الصفحة إلى فقدان البيانات. إذا لم يتم تحميل ويكان، يرجى التحقق من أن خادم ويكان لم يتوقف. ",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "نقل الى الارشيف",
"archive-all": "نقل الكل الى الارشيف",
"archive-board": "نقل اللوح الى الارشيف",
"archive-card": "نقل البطاقة الى الارشيف",
"archive-list": "نقل القائمة الى الارشيف",
"archive-swimlane": "نقل خط السباحة الى الارشيف",
"archive-selection": "نقل التحديد إلى الأرشيف",
"archiveBoardPopup-title": "نقل الوح إلى الأرشيف",
"archived-items": "أرشيف",
"archived-boards": "الالواح في الأرشيف",
"restore-board": "استعادة اللوحة",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "لا توجد لوحات في الأرشيف.",
"archives": "أرشيف",
"assign-member": "تعيين عضو",
"attached": "أُرفق)",
"attachment": "مرفق",
@@ -102,23 +112,23 @@
"boardChangeWatchPopup-title": "تغيير المتابعة",
"boardMenuPopup-title": "قائمة اللوحة",
"boards": "لوحات",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view": "عرض اللوحات",
"board-view-cal": "التقويم",
"board-view-swimlanes": "خطوط السباحة",
"board-view-lists": "القائمات",
"bucket-example": "مثل « todo list » على سبيل المثال",
"cancel": "إلغاء",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "البطاقة منقولة الى الارشيف",
"board-archived": "اللوحات منقولة الى الارشيف",
"card-comments-title": "%s تعليقات لهذه البطاقة",
"card-delete-notice": "هذا حذف أبديّ . سوف تفقد كل الإجراءات المنوطة بهذه البطاقة",
"card-delete-pop": "سيتم إزالة جميع الإجراءات من تبعات النشاط، وأنك لن تكون قادرا على إعادة فتح البطاقة. لا يوجد التراجع.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "يمكنك نقل بطاقة إلى الأرشيف لإزالتها من اللوحة والمحافظة على النشاط.",
"card-due": "مستحق",
"card-due-on": "مستحق في",
"card-spent": "Spent Time",
"card-spent": "امضى وقتا",
"card-edit-attachments": "تعديل المرفقات",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-custom-fields": "تعديل الحقل المعدل",
"card-edit-labels": "تعديل العلامات",
"card-edit-members": "تعديل الأعضاء",
"card-labels-title": "تعديل علامات البطاقة.",
@@ -126,8 +136,8 @@
"card-start": "بداية",
"card-start-on": "يبدأ في",
"cardAttachmentsPopup-title": "إرفاق من",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardCustomField-datePopup-title": "تغير التاريخ",
"cardCustomFieldsPopup-title": "تعديل الحقل المعدل",
"cardDeletePopup-title": "حذف البطاقة ?",
"cardDetailsActionsPopup-title": "إجراءات على البطاقة",
"cardLabelsPopup-title": "علامات",
@@ -135,9 +145,9 @@
"cardMorePopup-title": "المزيد",
"cards": "بطاقات",
"cards-count": "بطاقات",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"casSignIn": "تسجيل الدخول مع CAS",
"cardType-card": "بطاقة",
"cardType-linkedCard": "البطاقة المرتبطة",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "تعديل الصورة الشخصية",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "غلق",
"close-board": "غلق اللوحة",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "تعليق",
"comment-placeholder": "أكتب تعليق",
"comment-only": "التعليق فقط",
@@ -177,7 +203,7 @@
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
"linkCardPopup-title": "Link Card",
"linkCardPopup-title": "ربط البطاقة",
"searchCardPopup-title": "Search Card",
"copyCardPopup-title": "نسخ البطاقة",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -273,18 +299,20 @@
"import-board": "استيراد لوحة",
"import-board-c": "استيراد لوحة",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "استيراد لوحة من ويكان",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "من تريلو",
"from-wekan": "من ويكان",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
"import-board-instruction-wekan": "في لوحة ويكان الخاصة بك، انتقل إلى 'القائمة'، ثم 'تصدير اللوحة'، ونسخ النص في الملف الذي تم تنزيله.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "رسم خريطة الأعضاء",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "حدّد عضو ويكان",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "الإصدار",
"initials": "أولية",
"invalid-date": "تاريخ غير صالح",
@@ -303,19 +331,21 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "مغادرة اللوحة ؟",
"link-card": "ربط هذه البطاقة",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "نقل بطاقات هذه القائمة",
"list-select-cards": "تحديد بطاقات هذه القائمة",
"set-color-list": "Set Color",
"listActionPopup-title": "قائمة الإجراءات",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "المزيد",
"link-list": "رابط إلى هذه القائمة",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "القائمات",
"swimlanes": "Swimlanes",
"swimlanes": "خطوط السباحة",
"log-out": "تسجيل الخروج",
"log-in": "تسجيل الدخول",
"loginPopup-title": "تسجيل الدخول",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "لوحاتي",
"name": "اسم",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "لا توجد نتائج",
"normal": "عادي",
"normal-desc": "يمكن مشاهدة و تعديل البطاقات. لا يمكن تغيير إعدادات الضبط.",
@@ -371,6 +401,7 @@
"restore": "استعادة",
"save": "حفظ",
"search": "بحث",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "اختيار اللون",
@@ -414,7 +445,7 @@
"uploaded-avatar": "تم رفع الصورة الشخصية",
"username": "اسم المستخدم",
"view-it": "شاهدها",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "مُشاهد",
"watching": "مشاهدة",
"watching-info": "You will be notified of any change in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "رمز الدعوة",
"email-invite-register-subject": "__inviter__ أرسل دعوة لك",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "رمز الدعوة غير موجود",
"error-notAuthorized": "أنتَ لا تملك الصلاحيات لرؤية هذه الصفحة.",
"outgoing-webhooks": "الويبهوك الصادرة",
"outgoingWebhooksPopup-title": "الويبهوك الصادرة",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "ويبهوك جديدة ",
"no-name": "(غير معروف)",
"Wekan_version": "إصدار ويكان",
"Node_version": "إصدار النود",
"OS_Arch": "معمارية نظام التشغيل",
"OS_Cpus": "استهلاك وحدة المعالجة المركزية لنظام التشغيل",
@@ -467,10 +498,13 @@
"OS_Totalmem": "الذاكرة الكلية لنظام التشغيل",
"OS_Type": "نوع نظام التشغيل",
"OS_Uptime": "مدة تشغيل نظام التشغيل",
"days": "days",
"hours": "الساعات",
"minutes": "الدقائق",
"seconds": "الثواني",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "نعم",
"no": "لا",
"accounts": "الحسابات",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "نقل الى الارشيف",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "أضف",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+257 -105
View File
@@ -1,8 +1,8 @@
{
"accept": "Accept",
"act-activity-notify": "[Wekan] Известия за дейности",
"accept": "Приемам",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "прикачи __attachment__ към __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addSubtask": "добави задача __checklist__ към __card__",
"act-addChecklist": "добави списък със задачи __checklist__ към __card__",
"act-addChecklistItem": "добави __checklistItem__ към списък със задачи __checklist__ в __card__",
"act-addComment": "Коментира в __card__: __comment__",
@@ -11,10 +11,10 @@
"act-createCustomField": "създаде собствено поле __customField__",
"act-createList": "добави __list__ към __board__",
"act-addBoardMember": "добави __member__ към __board__",
"act-archivedBoard": "__board__ беше преместен в Кошчето",
"act-archivedCard": "__card__ беше преместена в Кошчето",
"act-archivedList": "__list__ беше преместен в Кошчето",
"act-archivedSwimlane": "__swimlane__ беше преместен в Кошчето",
"act-archivedBoard": "__board__ е преместен в Архива",
"act-archivedCard": "__card__ е преместена в Архива",
"act-archivedList": "__list__ е преместен в Архива",
"act-archivedSwimlane": "__swimlane__ е преместен в Архива",
"act-importBoard": "импортира __board__",
"act-importCard": "импортира __card__",
"act-importList": "импортира __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "премахна __member__ от __board__",
"act-restoredCard": "възстанови __card__ в __board__",
"act-unjoinMember": "премахна __member__ от __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__ ",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"actions": "Действия",
"activities": "Действия",
"activity": "Дейности",
"activity-added": "добави %s към %s",
"activity-archived": "премести %s в Кошчето",
"activity-archived": "%s е преместена в Архива",
"activity-attached": "прикачи %s към %s",
"activity-created": "създаде %s",
"activity-customfield-created": "създаде собствено поле %s",
@@ -42,15 +42,25 @@
"activity-removed": "премахна %s от %s",
"activity-sent": "изпрати %s до %s",
"activity-unjoined": "вече не е част от %s",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "добави задача към %s",
"activity-checked-item": "отбеляза%s в списък със задачи %s на %s",
"activity-unchecked-item": "размаркира %s от списък със задачи %s на %s",
"activity-checklist-added": "добави списък със задачи към %s",
"activity-checklist-removed": "премахна списък със задачи от %s",
"activity-checklist-completed": "завърши списък със задачи %s на %s",
"activity-checklist-uncompleted": "\"отзавърши\" чеклистта %s в %s",
"activity-checklist-item-added": "добави точка към '%s' в/във %s",
"activity-checklist-item-removed": "премахна точка от '%s' в %s",
"add": "Добави",
"activity-checked-item-card": "отбеляза %s в чеклист %s",
"activity-unchecked-item-card": "размаркира %s в чеклист %s",
"activity-checklist-completed-card": "завърши чеклиста %s",
"activity-checklist-uncompleted-card": "\"отзавърши\" чеклистта %s",
"add-attachment": "Добави прикачен файл",
"add-board": "Добави Табло",
"add-card": "Добави карта",
"add-swimlane": "Добави коридор",
"add-subtask": "Add Subtask",
"add-subtask": "Добави подзадача",
"add-checklist": "Добави списък със задачи",
"add-checklist-item": "Добави точка към списъка със задачи",
"add-cover": "Добави корица",
@@ -68,20 +78,20 @@
"and-n-other-card": "И __count__ друга карта",
"and-n-other-card_plural": "И __count__ други карти",
"apply": "Приложи",
"app-is-offline": "Wekan зарежда, моля изчакайте! Презареждането на страницата може да доведе до загуба на данни. Ако Wekan не се зареди, моля проверете дали сървъра му работи.",
"archive": "Премести в Кошчето",
"archive-all": "Премести всички в Кошчето",
"archive-board": "Премести Таблото в Кошчето",
"archive-card": "Премести Картата в Кошчето",
"archive-list": "Премести Списъка в Кошчето",
"archive-swimlane": "Премести Коридора в Кошчето",
"archive-selection": "Премести избраните в Кошчето",
"archiveBoardPopup-title": "Сигурни ли сте, че искате да преместите Таблото в Кошчето?",
"archived-items": "Кошче",
"archived-boards": "Табла в Кошчето",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Премести в Архива",
"archive-all": "Премести всички в Архива",
"archive-board": "Премести Таблото в Архива",
"archive-card": "Премести Картата в Архива",
"archive-list": "Премести Списъка в Архива",
"archive-swimlane": "Премести Коридора в Архива",
"archive-selection": "Премести избраното в Архива",
"archiveBoardPopup-title": "Да преместя ли Таблото в Архива?",
"archived-items": "Архив",
"archived-boards": "Табла в Архива",
"restore-board": "Възстанови Таблото",
"no-archived-boards": "Няма Табла в Кошчето.",
"archives": "Кошче",
"no-archived-boards": "Няма Табла в Архива.",
"archives": "Архив",
"assign-member": "Възложи на член от екипа",
"attached": "прикачен",
"attachment": "Прикаченн файл",
@@ -103,17 +113,17 @@
"boardMenuPopup-title": "Меню на Таблото",
"boards": "Табла",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-cal": "Календар",
"board-view-swimlanes": "Коридори",
"board-view-lists": "Списъци",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "Картата е преместена в Кошчето.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "Тази карта е преместена в Архива.",
"board-archived": "Това табло е преместено в Архива.",
"card-comments-title": "Тази карта има %s коментар.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "Можете да преместите картата в Архива, за да я премахнете от Таблото и така да запазите активността в него.",
"card-due": "Готова за",
"card-due-on": "Готова за",
"card-spent": "Изработено време",
@@ -136,65 +146,81 @@
"cards": "Карти",
"cards-count": "Карти",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"cardType-card": "Карта",
"cardType-linkedCard": "Свързана карта",
"cardType-linkedBoard": "Свързано табло",
"change": "Промени",
"change-avatar": "Промени аватара",
"change-password": "Промени паролата",
"change-permissions": "Change permissions",
"change-permissions": "Промени правата",
"change-settings": "Промени настройките",
"changeAvatarPopup-title": "Промени аватара",
"changeLanguagePopup-title": "Промени езика",
"changePasswordPopup-title": "Промени паролата",
"changePermissionsPopup-title": "Change Permissions",
"changePermissionsPopup-title": "Промени правата",
"changeSettingsPopup-title": "Промяна на настройките",
"subtasks": "Subtasks",
"subtasks": "Подзадачи",
"checklists": "Списъци със задачи",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Натиснете, за да премахнете това табло от любими.",
"clipboard": "Клипборда или с драг & дроп",
"close": "Затвори",
"close-board": "Затвори Таблото",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архив\" в началото на хедъра.",
"color-black": "черно",
"color-blue": "синьо",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "зелено",
"color-indigo": "indigo",
"color-lime": "лайм",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "оранжево",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "розово",
"color-plum": "plum",
"color-purple": "пурпурно",
"color-red": "червено",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "светло синьо",
"color-slateblue": "slateblue",
"color-white": "бяло",
"color-yellow": "жълто",
"unset-color": "Unset",
"comment": "Коментирай",
"comment-placeholder": "Напиши коментар",
"comment-only": "Само коментар",
"comment-only-desc": "Може да коментира само в карти.",
"no-comments": "No comments",
"no-comments": "Няма коментари",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Компютър",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"confirm-subtask-delete-dialog": "Сигурен ли сте, че искате да изтриете подзадачата?",
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"linkCardPopup-title": "Свържи картата",
"searchCardPopup-title": "Търсене на карта",
"copyCardPopup-title": "Копирай картата",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"current": "current",
"create": "Създай",
"createBoardPopup-title": "Създай Табло",
"chooseBoardSourcePopup-title": "Импортирай Табло",
"createLabelPopup-title": "Създай Табло",
"createCustomField": "Създай Поле",
"createCustomFieldPopup-title": "Създай Поле",
"current": "сегашен",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Чекбокс",
"custom-field-date": "Дата",
"custom-field-dropdown": "Падащо меню",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-none": "(няма)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
@@ -240,18 +266,18 @@
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Включи WIP лимита",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
"error-board-notAMember": "You need to be a member of this board to do that",
"error-json-malformed": "Your text is not valid JSON",
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
"error-list-doesNotExist": "This list does not exist",
"error-user-doesNotExist": "This user does not exist",
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-board-doesNotExist": "Това табло не съществува",
"error-board-notAdmin": "За да направите това трябва да сте администратор на това табло",
"error-board-notAMember": "За да направите това трябва да сте член на това табло",
"error-json-malformed": "Текстът Ви не е валиден JSON",
"error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
"error-list-doesNotExist": "Този списък не съществува",
"error-user-doesNotExist": "Този потребител не съществува",
"error-user-notAllowSelf": "Не можете да поканите себе си",
"error-user-notCreated": "Този потребител не е създаден",
"error-username-taken": "Това потребителско име е вече заето",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Export board",
"export-board": "Експортиране на Табло",
"filter": "Филтър",
"filter-cards": "Филтрирай картите",
"filter-clear": "Премахване на филтрите",
@@ -264,37 +290,39 @@
"advanced-filter-label": "Advanced Filter",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Име",
"header-logo-title": "Go back to your boards page.",
"header-logo-title": "Назад към страницата с Вашите табла.",
"hide-system-messages": "Скриване на системните съобщения",
"headerBarCreateBoardPopup-title": "Create Board",
"headerBarCreateBoardPopup-title": "Създай Табло",
"home": "Начало",
"import": "Import",
"link": "Link",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From Wekan",
"import": "Импорт",
"link": "Връзка",
"import-board": "Импортирай Табло",
"import-board-c": "Импортирай Табло",
"import-board-title-trello": "Импорт на табло от Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Импортирането ще изтрие всичката налична информация в таблото и ще я замени с нова.",
"from-trello": "От Trello",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Копирайте валидната Ви JSON информация тук",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Избери Wekan член",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Версия",
"initials": "Инициали",
"invalid-date": "Невалидна дата",
"invalid-time": "Невалиден час",
"invalid-user": "Невалиден потребител",
"joined": "присъедини ",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"just-invited": "Бяхте поканени в това табло",
"keyboard-shortcuts": "Преки пътища с клавиатурата",
"label-create": "Създай етикет",
"label-default": "%s label (default)",
"label-default": "%s етикет (по подразбиране)",
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
"labels": "Етикети",
"language": "Език",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Връзка към тази карта",
"list-archive-cards": "Премести всички карти от този списък в Кошчето",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Премести всички карти от този списък в Архива",
"list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите в Архива и да ги върнете натиснете на \"Меню\" > \"Архив\".",
"list-move-cards": "Премести всички карти в този списък",
"list-select-cards": "Избери всички карти в този списък",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Импорт на карта от Trello",
"listMorePopup-title": "Още",
"link-list": "Връзка към този списък",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "Можете да преместите списък в Кошчето, за да го премахнете от Таблото и запазите активността.",
"list-delete-suggest-archive": "Можете да преместите списъка в Архива, за да го премахнете от Таблото и така да запазите активността в него.",
"lists": "Списъци",
"swimlanes": "Коридори",
"log-out": "Изход",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "Моите табла",
"name": "Име",
"no-archived-cards": "Няма карти в Кошчето.",
"no-archived-lists": "Няма списъци в Кошчето.",
"no-archived-swimlanes": "Няма коридори в Кошчето.",
"no-archived-cards": "Няма карти в Архива.",
"no-archived-lists": "Няма списъци в Архива.",
"no-archived-swimlanes": "Няма коридори в Архива.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -343,7 +373,7 @@
"notify-participate": "Получавате информация за всички карти, в които сте отбелязани или сте създали",
"notify-watch": "Получавате информация за всички табла, списъци и карти, които наблюдавате",
"optional": "optional",
"or": "or",
"or": "или",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Парола",
@@ -371,6 +401,7 @@
"restore": "Възстанови",
"save": "Запази",
"search": "Търсене",
"rules": "Правила",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Избери цвят",
@@ -394,7 +425,7 @@
"starred-boards-description": "Любимите табла се показват в началото на списъка Ви.",
"subscribe": "Subscribe",
"team": "Team",
"this-board": "this board",
"this-board": "това табло",
"this-card": "картата",
"spent-time-hours": "Изработено време (часа)",
"overtime-hours": "Оувъртайм (часа)",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Качихте аватар",
"username": "Потребителско име",
"view-it": "View it",
"warn-list-archived": "внимание: тази карта е в списък, който е в Кошчето",
"warn-list-archived": "внимание: тази карта е в списък в Архива",
"watch": "Наблюдавай",
"watching": "Наблюдава",
"watching-info": "You will be notified of any change in this board",
@@ -433,7 +464,7 @@
"disable-self-registration": "Disable Self-Registration",
"invite": "Покани",
"invite-people": "Покани хора",
"to-boards": "To board(s)",
"to-boards": "в табло/а",
"email-addresses": "Имейл адреси",
"smtp-host-description": "Адресът на SMTP сървъра, който обслужва Вашите имейли.",
"smtp-port-description": "Портът, който Вашият SMTP сървър използва за изходящи имейли.",
@@ -447,16 +478,16 @@
"send-smtp-test": "Изпрати тестов имейл на себе си",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP тестов имейл, изпратен от Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "Успешно изпратихте имейл",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Версия на Wekan",
"Node_version": "Версия на Node",
"OS_Arch": "Архитектура на ОС",
"OS_Cpus": "Брой CPU ядра",
@@ -467,10 +498,13 @@
"OS_Totalmem": "ОС Общо памет",
"OS_Type": "Тип ОС",
"OS_Uptime": "OS Ъптайм",
"days": "дни",
"hours": "часа",
"minutes": "минути",
"seconds": "секунди",
"show-field-on-card": "Покажи това поле в картата",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Да",
"no": "Не",
"accounts": "Профили",
@@ -485,18 +519,22 @@
"card-end-on": "Завършена на",
"editCardReceivedDatePopup-title": "Промени датата на получаване",
"editCardEndDatePopup-title": "Промени датата на завършване",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Разпределена от",
"requested-by": "Поискан от",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"show-subtasks-field": "Cards can have subtasks",
"boardDeletePopup-title": "Изтриване на Таблото?",
"delete-board": "Изтрий таблото",
"default-subtasks-board": "Подзадачи за табло __board__",
"default": "по подразбиране",
"queue": "Опашка",
"subtask-settings": "Настройки на Подзадачите",
"boardSubtaskSettingsPopup-title": "Настройки за Подзадачите за това Табло",
"show-subtasks-field": "Картата може да има подзадачи",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
@@ -504,8 +542,122 @@
"prefix-with-parent": "Prefix with parent",
"subtext-with-full-path": "Subtext with full path",
"subtext-with-parent": "Subtext with parent",
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"change-card-parent": "Промени източника на картата",
"parent-card": "Карта-източник",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Не показвай източника",
"activity-added-label": "добави етикет '%s' към %s",
"activity-removed-label": "премахна етикет '%s' от %s",
"activity-delete-attach": "изтри прикачен файл от %s",
"activity-added-label-card": "добави етикет '%s'",
"activity-removed-label-card": "премахна етикет '%s'",
"activity-delete-attach-card": "изтри прикачения файл",
"r-rule": "Правило",
"r-add-trigger": "Добави спусък",
"r-add-action": "Добави действие",
"r-board-rules": "Правила за таблото",
"r-add-rule": "Добави правилото",
"r-view-rule": "Виж правилото",
"r-delete-rule": "Изтрий правилото",
"r-new-rule-name": "Заглавие за новото правило",
"r-no-rules": "Няма правила",
"r-when-a-card": "Когато карта",
"r-is": "е",
"r-is-moved": "преместена",
"r-added-to": "добавена в",
"r-removed-from": "премахната от",
"r-the-board": "таблото",
"r-list": "списък",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Преместено в Архива",
"r-unarchived": "Възстановено от Архива",
"r-a-card": "карта",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "име",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Премести картата в",
"r-top-of": "началото на",
"r-bottom-of": "края на",
"r-its-list": "списъка й",
"r-archive": "Премести в Архива",
"r-unarchive": "Възстанови от Архива",
"r-card": "карта",
"r-add": "Добави",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Детайли за правилото",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Премести картата в Архива",
"r-d-unarchive": "Възстанови картата от Архива",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Добави чеклист",
"r-d-remove-checklist": "Премахни чеклист",
"r-by": "by",
"r-add-checklist": "Добави чеклист",
"r-with-items": "с точки",
"r-items-list": "точка1,точка2,точка3",
"r-add-swimlane": "Добави коридор",
"r-swimlane-name": "име на коридора",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+193 -41
View File
@@ -1,6 +1,6 @@
{
"accept": "Asantiñ",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Oberoù",
"activities": "Oberiantizoù",
"activity": "Oberiantiz",
"activity-added": "%s ouzhpennet da %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "%s liammet ouzh %s",
"activity-created": "%s krouet",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Ouzhpenn",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -108,12 +118,12 @@
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "du",
"color-blue": "glas",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "gwer",
"color-indigo": "indigo",
"color-lime": "melen sitroñs",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orañjez",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "roz",
"color-plum": "plum",
"color-purple": "mouk",
"color-red": "ruz",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "pers",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "melen",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -273,18 +299,20 @@
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Muioc’h",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -371,6 +401,7 @@
"restore": "Restore",
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Ouzhpenn",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+233 -81
View File
@@ -1,38 +1,38 @@
{
"accept": "Accepta",
"act-activity-notify": "[Wekan] Notificació d'activitat",
"act-addAttachment": "adjuntat __attachment__ a __card__",
"act-activity-notify": "Notificació d'activitat",
"act-addAttachment": "afegit__adjunt__ a la __fitxa__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "afegida la checklist _checklist__ a __card__",
"act-addChecklistItem": "afegit __checklistItem__ a la checklist __checklist__ on __card__",
"act-addComment": "comentat a __card__: __comment__",
"act-createBoard": "creat __board__",
"act-createBoard": "nou __tauler__",
"act-createCard": "afegit/da __card__ a __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "afegit/da __list__ a __board__",
"act-addBoardMember": "afegit/da __member__ a __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-importBoard": "__board__ importat",
"act-createList": "llista __afegida__ al __tauler__",
"act-addBoardMember": "usuari __afegit__ al __tauler__",
"act-archivedBoard": "__tauler__ mogut al Arxiu",
"act-archivedCard": "__fitxa__ moguda al Arxiu",
"act-archivedList": "__llista__ mogud al Arxiu",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "tauler __importat__",
"act-importCard": "__card__ importat",
"act-importList": "__list__ importat",
"act-joinMember": "afegit/da __member__ a __card__",
"act-moveCard": "mou __card__ de __oldList__ a __list__",
"act-removeBoardMember": "elimina __member__ de __board__",
"act-restoredCard": "recupera __card__ a __board__",
"act-removeBoardMember": "elimina __usuari__ del __tauler__",
"act-restoredCard": "fitxa __restaurada__ al __tauler__",
"act-unjoinMember": "elimina __member__ de __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withCardTitle": "[__board__] __card__",
"act-withBoardTitle": "__tauler__",
"act-withCardTitle": "[__tauler__] __fitxa__",
"actions": "Accions",
"activities": "Activitats",
"activity": "Activitat",
"activity-added": "ha afegit %s a %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s mogut al Arxiu",
"activity-attached": "ha adjuntat %s a %s",
"activity-created": "ha creat %s",
"activity-customfield-created": "created custom field %s",
"activity-customfield-created": "camp personalitzat creat %s",
"activity-excluded": "ha exclòs %s de %s",
"activity-imported": "importat %s dins %s des de %s",
"activity-imported-board": "importat %s des de %s",
@@ -43,16 +43,26 @@
"activity-sent": "ha enviat %s %s",
"activity-unjoined": "desassignat %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "Checklist afegida a %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "afegida entrada de checklist de '%s' a %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Afegeix",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Afegeix adjunt",
"add-board": "Afegeix Tauler",
"add-card": "Afegeix fitxa",
"add-card": "Afegeix Fitxa",
"add-swimlane": "Afegix Carril de Natació",
"add-subtask": "Add Subtask",
"add-subtask": "Afegir Subtasca",
"add-checklist": "Afegeix checklist",
"add-checklist-item": "Afegeix un ítem",
"add-checklist-item": "Afegeix un ítem al checklist",
"add-cover": "Afegeix coberta",
"add-label": "Afegeix etiqueta",
"add-list": "Afegeix llista",
@@ -60,65 +70,65 @@
"added": "Afegit",
"addMemberPopup-title": "Membres",
"admin": "Administrador",
"admin-desc": "Pots veure i editar fitxes, eliminar membres, i canviar la configuració del tauler",
"admin-announcement": "Bàndol",
"admin-announcement-active": "Activar bàndol del Sistema",
"admin-announcement-title": "Bàndol de l'administració",
"admin-desc": "Pots veure i editar fitxes, eliminar usuaris, i canviar la configuració del tauler.",
"admin-announcement": "Alertes",
"admin-announcement-active": "Activar alertes del Sistema",
"admin-announcement-title": "Alertes d'administració",
"all-boards": "Tots els taulers",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Aplica",
"app-is-offline": "Wekan s'està carregant, esperau si us plau. Refrescar la pàgina causarà la pérdua de les dades. Si Wekan no carrega, verificau que el servei de Wekan no estigui aturat",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Moure al arxiu",
"archive-all": "Moure tot al arxiu",
"archive-board": "Moure Tauler al Arxiu",
"archive-card": "Moure Fitxa al Arxiu",
"archive-list": "Moure Llista al Arxiu",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Moure selecció al Arxiu",
"archiveBoardPopup-title": "Moure el Tauler al Arxiu?",
"archived-items": "Desa",
"archived-boards": "Taulers al Arxiu",
"restore-board": "Restaura Tauler",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No hi han Taulers al Arxiu.",
"archives": "Desa",
"assign-member": "Assignar membre",
"attached": "adjuntat",
"attachment": "Adjunt",
"attachment-delete-pop": "L'esborrat d'un arxiu adjunt és permanent. No es pot desfer.",
"attachmentDeletePopup-title": "Esborrar adjunt?",
"attachments": "Adjunts",
"auto-watch": "Automàticament segueix el taulers quan són creats",
"auto-watch": "Segueix automàticament el taulers quan són creats",
"avatar-too-big": "L'avatar es massa gran (70KM max)",
"back": "Enrere",
"board-change-color": "Canvia el color",
"board-nb-stars": "%s estrelles",
"board-not-found": "No s'ha trobat el tauler",
"board-private-info": "Aquest tauler serà <strong> privat </ strong>.",
"board-public-info": "Aquest tauler serà <strong> públic </ strong>.",
"boardChangeColorPopup-title": "Canvia fons",
"board-private-info": "Aquest tauler serà <strong> privat.",
"board-public-info": "Aquest tauler serà <strong> públic.",
"boardChangeColorPopup-title": "Canvia fons del tauler",
"boardChangeTitlePopup-title": "Canvia el nom tauler",
"boardChangeVisibilityPopup-title": "Canvia visibilitat",
"boardChangeWatchPopup-title": "Canvia seguiment",
"boardMenuPopup-title": "Menú del tauler",
"boards": "Taulers",
"board-view": "Visió del tauler",
"board-view-cal": "Calendar",
"board-view-cal": "Calendari",
"board-view-swimlanes": "Carrils de Natació",
"board-view-lists": "Llistes",
"bucket-example": "Igual que “Bucket List”, per exemple",
"cancel": "Cancel·la",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "Aquesta fitxa ha estat moguda al Arxiu.",
"board-archived": "Aquest tauler s'ha mogut al arxiu",
"card-comments-title": "Aquesta fitxa té %s comentaris.",
"card-delete-notice": "L'esborrat és permanent. Perdreu totes les accions associades a aquesta fitxa.",
"card-delete-pop": "Totes les accions s'eliminaran de l'activitat i no podreu tornar a obrir la fitxa. No es pot desfer.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Finalitza",
"card-due-on": "Finalitza a",
"card-spent": "Temps Dedicat",
"card-edit-attachments": "Edita arxius adjunts",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-custom-fields": "Editar camps personalitzats",
"card-edit-labels": "Edita etiquetes",
"card-edit-members": "Edita membres",
"card-labels-title": "Canvia les etiquetes de la fitxa",
@@ -126,8 +136,8 @@
"card-start": "Comença",
"card-start-on": "Comença a",
"cardAttachmentsPopup-title": "Adjunta des de",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardCustomField-datePopup-title": "Canviar data",
"cardCustomFieldsPopup-title": "Editar camps personalitzats",
"cardDeletePopup-title": "Esborrar fitxa?",
"cardDetailsActionsPopup-title": "Accions de fitxes",
"cardLabelsPopup-title": "Etiquetes",
@@ -136,7 +146,7 @@
"cards": "Fitxes",
"cards-count": "Fitxes",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-card": "Fitxa",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"change": "Canvia",
@@ -149,36 +159,52 @@
"changePasswordPopup-title": "Canvia la contrasenya",
"changePermissionsPopup-title": "Canvia permisos",
"changeSettingsPopup-title": "Canvia configuració",
"subtasks": "Subtasks",
"subtasks": "Subtasca",
"checklists": "Checklists",
"click-to-star": "Fes clic per destacar aquest tauler.",
"click-to-unstar": "Fes clic per deixar de destacar aquest tauler.",
"clipboard": "Portaretalls o estirar i amollar",
"close": "Tanca",
"close-board": "Tanca tauler",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "negre",
"color-blue": "blau",
"color-crimson": "carmesí",
"color-darkgreen": "verd fosc",
"color-gold": "daurat",
"color-gray": "gris",
"color-green": "verd",
"color-indigo": "índigo",
"color-lime": "llima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "marina",
"color-orange": "taronja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "pruna",
"color-purple": "púrpura",
"color-red": "vermell",
"color-saddlebrown": "saddlebrown",
"color-silver": "plata",
"color-sky": "cel",
"color-slateblue": "slateblue",
"color-white": "blanc",
"color-yellow": "groc",
"unset-color": "Unset",
"comment": "Comentari",
"comment-placeholder": "Escriu un comentari",
"comment-only": "Només comentaris",
"comment-only-desc": "Només pots fer comentaris a les fitxes",
"no-comments": "No comments",
"no-comments": "Sense comentaris",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Ordinador",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-subtask-delete-dialog": "Esteu segur que voleu eliminar la subtasca?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchCardPopup-title": "Buscar Fitxa",
"copyCardPopup-title": "Copia la fitxa",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
@@ -187,20 +213,20 @@
"createBoardPopup-title": "Crea tauler",
"chooseBoardSourcePopup-title": "Importa Tauler",
"createLabelPopup-title": "Crea etiqueta",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"createCustomField": "Crear camp",
"createCustomFieldPopup-title": "Crear camp",
"current": "Actual",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-date": "Data",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options": "Llista d'opcions",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-fields": "Custom Fields",
"custom-fields": "Camps Personalitzats",
"date": "Data",
"decline": "Declina",
"default-avatar": "Avatar per defecte",
@@ -220,7 +246,7 @@
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Canvia data d'inici",
"editCardDueDatePopup-title": "Canvia data de finalització",
"editCustomFieldPopup-title": "Edit Field",
"editCustomFieldPopup-title": "Modificar camp",
"editCardSpentTimePopup-title": "Canvia temps dedicat",
"editLabelPopup-title": "Canvia etiqueta",
"editNotificationPopup-title": "Edita la notificació",
@@ -261,7 +287,7 @@
"filter-on": "Filtra per",
"filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
"filter-to-selection": "Filtra selecció",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-label": "Filtre avançat",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Nom complet",
"header-logo-title": "Torna a la teva pàgina de taulers",
@@ -269,22 +295,24 @@
"headerBarCreateBoardPopup-title": "Crea tauler",
"home": "Inici",
"import": "importa",
"link": "Link",
"link": "Enllaç",
"import-board": "Importa tauler",
"import-board-c": "Importa tauler",
"import-board-title-trello": "Importa tauler des de Trello",
"import-board-title-wekan": "I",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Estau segur que voleu esborrar aquesta checklist?",
"from-trello": "Des de Trello",
"from-wekan": "Des de Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Aferra codi JSON vàlid aquí",
"import-map-members": "Mapeja el membres",
"import-members-map": "El tauler importat conté membres. Assigna els membres que vulguis importar a usuaris Wekan",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Revisa l'assignació de membres",
"import-user-select": "Selecciona l'usuari Wekan que vulguis associar a aquest membre",
"importMapMembersAddPopup-title": "Selecciona un membre de Wekan",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Selecciona un usuari",
"info": "Versió",
"initials": "Inicials",
"invalid-date": "Data invàlida",
@@ -303,17 +331,19 @@
"leave-board-pop": "De debò voleu abandonar __boardTitle__? Se us eliminarà de totes les fitxes d'aquest tauler.",
"leaveBoardPopup-title": "Abandonar Tauler?",
"link-card": "Enllaç a aquesta fitxa",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Moure totes les fitxes en aquesta llista al Arxiu",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Mou totes les fitxes d'aquesta llista",
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
"set-color-list": "Set Color",
"listActionPopup-title": "Accions de la llista",
"swimlaneActionPopup-title": "Accions de Carril de Natació",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "importa una fitxa de Trello",
"listMorePopup-title": "Més",
"link-list": "Enllaça a aquesta llista",
"list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Llistes",
"swimlanes": "Carrils de Natació",
"log-out": "Finalitza la sessió",
@@ -333,9 +363,9 @@
"muted-info": "No seràs notificat dels canvis en aquest tauler",
"my-boards": "Els meus taulers",
"name": "Nom",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No hi ha fitxes a l'arxiu.",
"no-archived-lists": "No hi ha llistes al arxiu.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Sense resultats",
"normal": "Normal",
"normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
@@ -371,6 +401,7 @@
"restore": "Restaura",
"save": "Desa",
"search": "Cerca",
"rules": "Regles",
"search-cards": "Cerca títols de fitxa i descripcions en aquest tauler",
"search-example": "Text que cercar?",
"select-color": "Selecciona color",
@@ -405,7 +436,7 @@
"title": "Títol",
"tracking": "En seguiment",
"tracking-info": "Seràs notificat per cada canvi a aquelles fitxes de les que n'eres creador o membre",
"type": "Type",
"type": "Tipus",
"unassign-member": "Desassignar membre",
"unsaved-description": "Tens una descripció sense desar.",
"unwatch": "Suprimeix observació",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Avatar actualitzat",
"username": "Nom d'Usuari",
"view-it": "Vist",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Observa",
"watching": "En observació",
"watching-info": "Seràs notificat de cada canvi en aquest tauler",
@@ -440,23 +471,23 @@
"smtp-tls-description": "Activa suport TLS pel servidor SMTP",
"smtp-host": "Servidor SMTP",
"smtp-port": "Port SMTP",
"smtp-username": "Nom d'Usuari",
"smtp-username": "Nom d'usuari",
"smtp-password": "Contrasenya",
"smtp-tls": "Suport TLS",
"send-from": "De",
"send-smtp-test": "Envia't un correu electrònic de prova",
"invitation-code": "Codi d'invitació",
"email-invite-register-subject": "__inviter__ t'ha convidat",
"email-invite-register-text": " __user__,\n\n __inviter__ us ha convidat a col·laborar a Wekan.\n\n Clicau l'enllaç següent per acceptar l'invitació:\n __url__\n\n El vostre codi d'invitació és: __icode__\n\n Gràcies",
"email-smtp-test-subject": "Correu de Prova SMTP de Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "Has enviat un missatge satisfactòriament",
"error-invitation-code-not-exist": "El codi d'invitació no existeix",
"error-notAuthorized": "No estau autoritzats per veure aquesta pàgina",
"outgoing-webhooks": "Webhooks sortints",
"outgoingWebhooksPopup-title": "Webhooks sortints",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "Nou Webook sortint",
"no-name": "Importa tauler des de Wekan",
"Wekan_version": "Versió Wekan",
"Node_version": "Versió Node",
"OS_Arch": "Arquitectura SO",
"OS_Cpus": "Plataforma SO",
@@ -467,10 +498,13 @@
"OS_Totalmem": "Memòria total",
"OS_Type": "Tipus de SO",
"OS_Uptime": "Temps d'activitat",
"days": "days",
"hours": "hores",
"minutes": "minuts",
"seconds": "segons",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Si",
"no": "No",
"accounts": "Comptes",
@@ -485,8 +519,12 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assignat Per",
"requested-by": "Demanat Per",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Regles del tauler",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No hi han regles",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Moure al arxiu",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Afegeix",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+246 -94
View File
@@ -1,8 +1,8 @@
{
"accept": "Přijmout",
"act-activity-notify": "[Wekan] Notifikace aktivit",
"act-activity-notify": "Notifikace aktivit",
"act-addAttachment": "přiložen __attachment__ do __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addSubtask": "přidán podúkol __checklist__ do __card__",
"act-addChecklist": "přidán checklist __checklist__ do __card__",
"act-addChecklistItem": "přidán __checklistItem__ do checklistu __checklist__ v __card__",
"act-addComment": "komentář k __card__: __comment__",
@@ -11,10 +11,10 @@
"act-createCustomField": "vytvořeno vlastní pole __customField__",
"act-createList": "přidání __list__ do __board__",
"act-addBoardMember": "přidání __member__ do __board__",
"act-archivedBoard": "__board__ bylo přesunuto do koše",
"act-archivedCard": "__card__ bylo přesunuto do koše",
"act-archivedList": "__list__ bylo přesunuto do koše",
"act-archivedSwimlane": "__swimlane__ bylo přesunuto do koše",
"act-archivedBoard": "__board__ byl přesunut do archivu",
"act-archivedCard": "__card__ byla přesunuta do archivu",
"act-archivedList": "__list__ byl přesunut do archivu",
"act-archivedSwimlane": "__swimlane__ bylo přesunuto do archivu",
"act-importBoard": "import __board__",
"act-importCard": "import __card__",
"act-importList": "import __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "odstranění __member__ z __board__",
"act-restoredCard": "obnovení __card__ do __board__",
"act-unjoinMember": "odstranění __member__ z __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Akce",
"activities": "Aktivity",
"activity": "Aktivita",
"activity-added": "%s přidáno k %s",
"activity-archived": "%s bylo přesunuto do koše",
"activity-archived": "%s bylo přesunuto do archivu",
"activity-attached": "přiloženo %s k %s",
"activity-created": "%s vytvořeno",
"activity-customfield-created": "vytvořeno vlastní pole %s",
@@ -42,20 +42,30 @@
"activity-removed": "odstraněn %s z %s",
"activity-sent": "%s posláno na %s",
"activity-unjoined": "odpojen %s",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "podúkol přidán do %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "přidán checklist do %s",
"activity-checklist-removed": "odstraněn checklist z %s",
"activity-checklist-completed": "dokončen checklist %s z %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "přidána položka checklist do '%s' v %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Přidat",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "dokončen checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Přidat přílohu",
"add-board": "Přidat tablo",
"add-card": "Přidat kartu",
"add-swimlane": "Přidat Swimlane",
"add-subtask": "Add Subtask",
"add-subtask": "Přidat Podúkol",
"add-checklist": "Přidat zaškrtávací seznam",
"add-checklist-item": "Přidat položku do zaškrtávacího seznamu",
"add-cover": "Přidat obal",
"add-label": "Přidat štítek",
"add-list": "Přidat list",
"add-list": "Přidat sloupec",
"add-members": "Přidat členy",
"added": "Přidán",
"addMemberPopup-title": "Členové",
@@ -68,20 +78,20 @@
"and-n-other-card": "A __count__ další karta(y)",
"and-n-other-card_plural": "A __count__ dalších karet",
"apply": "Použít",
"app-is-offline": "Wekan se načítá, prosím čekejte. Obnovení stránky způsobí ztrátu dat. Pokud se Wekan nenačte, zkontrolujte prosím, jestli se server s Wekanem nezastavil.",
"archive": "Přesunout do koše",
"archive-all": "Přesunout všechno do koše",
"archive-board": "Přesunout tablo do koše",
"archive-card": "Přesunout kartu do koše",
"archive-list": "Přesunout seznam do koše",
"archive-swimlane": "Přesunout swimlane do koše",
"archive-selection": "Přesunout výběr do koše",
"archiveBoardPopup-title": "Chcete přesunout tablo do koše?",
"archived-items": "Koš",
"archived-boards": "Tabla v koši",
"app-is-offline": "Načítá se, prosím čekejte. Obnovení stránky způsobí ztrátu dat. Pokud se načítání nedaří, zkontrolujte prosím server.",
"archive": "Přesunout do archivu",
"archive-all": "Přesunout vše do archivu",
"archive-board": "Přesunout tablo do archivu",
"archive-card": "Přesunout kartu do archivu",
"archive-list": "Přesunout seznam do archivu",
"archive-swimlane": "Přesunout swimlane do archivu",
"archive-selection": "Přesunout výběr do archivu",
"archiveBoardPopup-title": "Přesunout tablo do archivu?",
"archived-items": "Archiv",
"archived-boards": "Tabla v archivu",
"restore-board": "Obnovit tablo",
"no-archived-boards": "Žádná tabla v koši",
"archives": "Koš",
"no-archived-boards": "V archivu nejsou žádná tabla.",
"archives": "Archiv",
"assign-member": "Přiřadit člena",
"attached": "přiloženo",
"attachment": "Příloha",
@@ -103,17 +113,17 @@
"boardMenuPopup-title": "Menu tabla",
"boards": "Tabla",
"board-view": "Náhled tabla",
"board-view-cal": "Calendar",
"board-view-cal": "Kalendář",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Seznamy",
"bucket-example": "Například \"Než mě odvedou\"",
"board-view-lists": "Sloupce",
"bucket-example": "Například \"O čem sním\"",
"cancel": "Zrušit",
"card-archived": "Karta byla přesunuta do koše.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "Karta byla přesunuta do archivu.",
"board-archived": "Toto tablo je přesunuto do archivu.",
"card-comments-title": "Tato karta má %s komentářů.",
"card-delete-notice": "Smazání je trvalé. Přijdete o všechny akce asociované s touto kartou.",
"card-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné kartu znovu otevřít. Toto nelze vrátit zpět.",
"card-delete-suggest-archive": "Kartu můžete přesunout do koše a tím ji odstranit z tabla a přitom zachovat aktivity.",
"card-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné kartu obnovit. Toto nelze vrátit zpět.",
"card-delete-suggest-archive": "Můžete přesunout kartu do archivu pro odstranění z tabla a zachovat aktivitu.",
"card-due": "Termín",
"card-due-on": "Do",
"card-spent": "Strávený čas",
@@ -135,10 +145,10 @@
"cardMorePopup-title": "Více",
"cards": "Karty",
"cards-count": "Karty",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"casSignIn": "Přihlásit pomocí CAS",
"cardType-card": "Karta",
"cardType-linkedCard": "Propojená karta",
"cardType-linkedBoard": "Propojené tablo",
"change": "Změnit",
"change-avatar": "Změnit avatar",
"change-password": "Změnit heslo",
@@ -149,36 +159,52 @@
"changePasswordPopup-title": "Změnit heslo",
"changePermissionsPopup-title": "Změnit oprávnění",
"changeSettingsPopup-title": "Změnit nastavení",
"subtasks": "Subtasks",
"subtasks": "Podúkol",
"checklists": "Checklisty",
"click-to-star": "Kliknutím přidat hvězdičku tomuto tablu.",
"click-to-unstar": "Kliknutím odebrat hvězdičku tomuto tablu.",
"clipboard": "Schránka nebo potáhnout a pustit",
"close": "Zavřít",
"close-board": "Zavřít tablo",
"close-board-pop": "Kliknutím na tlačítko \"Recyklovat\" budete moci obnovit tablo z koše.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "černá",
"color-blue": "modrá",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "zelená",
"color-indigo": "indigo",
"color-lime": "světlezelená",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "oranžová",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "růžová",
"color-plum": "plum",
"color-purple": "fialová",
"color-red": "červená",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "nebeská",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "žlutá",
"unset-color": "Unset",
"comment": "Komentář",
"comment-placeholder": "Text komentáře",
"comment-only": "Pouze komentáře",
"comment-only-desc": "Může přidávat komentáře pouze do karet.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"no-comments": "Žádné komentáře",
"no-comments-desc": "Nemůže vidět komentáře a aktivity",
"computer": "Počítač",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"confirm-subtask-delete-dialog": "Opravdu chcete smazat tento podúkol?",
"confirm-checklist-delete-dialog": "Opravdu chcete smazat tento checklist?",
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"linkCardPopup-title": "Propojit kartu",
"searchCardPopup-title": "Hledat Kartu",
"copyCardPopup-title": "Kopírovat kartu",
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
"copyChecklistToManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
@@ -245,7 +271,7 @@
"error-board-notAMember": "K provedení změny musíš být členem tohoto tabla",
"error-json-malformed": "Tvůj text není validní JSON",
"error-json-schema": "Tato JSON data neobsahují správné informace v platném formátu",
"error-list-doesNotExist": "Tento seznam neexistuje",
"error-list-doesNotExist": "Tento sloupec ;neexistuje",
"error-user-doesNotExist": "Tento uživatel neexistuje",
"error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
"error-user-notCreated": "Tento uživatel není vytvořen",
@@ -262,29 +288,31 @@
"filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
"filter-to-selection": "Filtrovat výběr",
"advanced-filter-label": "Pokročilý filtr",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"advanced-filter-description": "Pokročilý filtr dovoluje zapsat řetězec následujících operátorů: == != <= >= && || () Operátory jsou odděleny mezerou. Můžete filtrovat všechny vlastní pole zadáním jejich názvů nebo hodnot. Například: Pole1 == Hodnota1. Poznámka: Pokud pole nebo hodnoty obsahují mezery, je potřeba je obalit v jednoduchých uvozovkách. Například: 'Pole 1' == 'Hodnota 1'. Pro ignorovaní kontrolních znaků (' \\ /) je možné použít \\. Například Pole1 == I\\'m. Můžete také kombinovat více podmínek. Například P1 == H1 || P1 == H2. Obvykle jsou operátory interpretovány zleva doprava. Jejich pořadí můžete měnit pomocí závorek. Například: P1 == H1 && ( P2 == H2 || P2 == H3 )",
"fullname": "Celé jméno",
"header-logo-title": "Jit zpět na stránku s tably.",
"hide-system-messages": "Skrýt systémové zprávy",
"headerBarCreateBoardPopup-title": "Vytvořit tablo",
"home": "Domů",
"import": "Import",
"link": "Link",
"link": "Propojit",
"import-board": "Importovat tablo",
"import-board-c": "Importovat tablo",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Importovat tablo z Wekanu",
"import-board-title-wekan": "Importovat tablo z předchozího exportu",
"import-sandstorm-backup-warning": "Nemažte data, která importujete z původního exportovaného tabla nebo Trello předtím, nežli zkontrolujete, jestli lze tuto část zavřít a znovu otevřít nebo jestli se Vám nezobrazuje chyba tabla, což znamená ztrátu dat.",
"import-sandstorm-warning": "Importované tablo spaže všechny existující data v tablu a nahradí je importovaným tablem.",
"from-trello": "Z Trella",
"from-wekan": "Z Wekanu",
"from-wekan": "Z předchozího exportu",
"import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
"import-board-instruction-wekan": "Ve vašem Wekan tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
"import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
"import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.",
"import-json-placeholder": "Sem vlož validní JSON data",
"import-map-members": "Mapovat členy",
"import-members-map": "Toto importované tablo obsahuje několik členů. Namapuj členy z importu na uživatelské účty Wekan.",
"import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.",
"import-show-user-mapping": "Zkontrolovat namapování členů",
"import-user-select": "Vyber uživatele Wekan, kterého chceš použít pro tohoto člena",
"importMapMembersAddPopup-title": "Vybrat Wekan uživatele",
"import-user-select": "Vyberte existující uživatelský účet, kterého chcete použít pro tuto osobu",
"importMapMembersAddPopup-title": "Zvolte osobu",
"info": "Verze",
"initials": "Iniciály",
"invalid-date": "Neplatné datum",
@@ -303,18 +331,20 @@
"leave-board-pop": "Opravdu chcete opustit tablo __boardTitle__? Odstraníte se tím i ze všech karet v tomto tablu.",
"leaveBoardPopup-title": "Opustit tablo?",
"link-card": "Odkázat na tuto kartu",
"list-archive-cards": "Přesunout všechny karty v tomto seznamu do koše",
"list-archive-cards-pop": "Toto odstraní z tabla všechny karty z tohoto seznamu. Pro zobrazení karet v koši a jejich opětovné obnovení, klikni v \"Menu\" > \"Archivované položky\".",
"list-move-cards": "Přesunout všechny karty v tomto seznamu",
"list-select-cards": "Vybrat všechny karty v tomto seznamu",
"list-archive-cards": "Přesunout všechny karty v tomto seznamu do archivu.",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Přesunout všechny karty v tomto sloupci",
"list-select-cards": "Vybrat všechny karty v tomto sloupci",
"set-color-list": "Set Color",
"listActionPopup-title": "Vypsat akce",
"swimlaneActionPopup-title": "Akce swimlane",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importovat Trello kartu",
"listMorePopup-title": "Více",
"link-list": "Odkaz na tento seznam",
"list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné kartu obnovit. Toto nelze vrátit zpět.",
"list-delete-suggest-archive": "Kartu můžete přesunout do koše a tím ji odstranit z tabla a přitom zachovat aktivity.",
"lists": "Seznamy",
"link-list": "Odkaz na tento sloupec",
"list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.",
"list-delete-suggest-archive": "Seznam můžete přesunout do archivu, abyste jej odstranili z tabla a zachovali si svou aktivitu.",
"lists": "Sloupce",
"swimlanes": "Swimlanes",
"log-out": "Odhlásit",
"log-in": "Přihlásit",
@@ -333,15 +363,15 @@
"muted-info": "Nikdy nedostanete oznámení o změně v tomto tablu.",
"my-boards": "Moje tabla",
"name": "Jméno",
"no-archived-cards": "Žádné karty v koši",
"no-archived-lists": "Žádné seznamy v koši",
"no-archived-swimlanes": "Žádné swimlane v koši",
"no-archived-cards": "V archivu nejsou žádné karty.",
"no-archived-lists": "V archivu nejsou žádné seznamy.",
"no-archived-swimlanes": "V archivu nejsou žádné swimlanes.",
"no-results": "Žádné výsledky",
"normal": "Normální",
"normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
"not-accepted-yet": "Pozvánka ještě nebyla přijmuta",
"notify-participate": "Dostane aktualizace do všech karet, ve kterých se účastní jako tvůrce nebo člen",
"notify-watch": "Dostane aktualitace to všech tabel, seznamů nebo karet, které sledujete",
"notify-watch": "Dostane aktualitace to všech tabel, sloupců nebo karet, které sledujete",
"optional": "volitelný",
"or": "nebo",
"page-maybe-private": "Tato stránka může být soukromá. Můžete ji zobrazit po <a href='%s'>přihlášení</a>.",
@@ -361,7 +391,7 @@
"remove-cover": "Odstranit obal",
"remove-from-board": "Odstranit z tabla",
"remove-label": "Odstranit štítek",
"listDeletePopup-title": "Smazat seznam?",
"listDeletePopup-title": "Smazat sloupec?",
"remove-member": "Odebrat uživatele",
"remove-member-from-card": "Odstranit z karty",
"remove-member-pop": "Odstranit __name__ (__username__) z __boardTitle__? Uživatel bude odebrán ze všech karet na tomto tablu. Na tuto skutečnost bude upozorněn.",
@@ -371,10 +401,11 @@
"restore": "Obnovit",
"save": "Uložit",
"search": "Hledat",
"rules": "Pravidla",
"search-cards": "Hledat nadpisy a popisy karet v tomto tablu",
"search-example": "Hledaný text",
"select-color": "Vybrat barvu",
"set-wip-limit-value": "Nastaví limit pro maximální počet úkolů v seznamu.",
"set-wip-limit-value": "Nastaví limit pro maximální počet úkolů ve sloupci.",
"setWipLimitPopup-title": "Nastavit WIP Limit",
"shortcut-assign-self": "Přiřadit sebe k aktuální kartě",
"shortcut-autocomplete-emoji": "Automatické dokončování emoji",
@@ -385,13 +416,13 @@
"shortcut-show-shortcuts": "Otevřít tento seznam odkazů",
"shortcut-toggle-filterbar": "Přepnout lištu filtrování",
"shortcut-toggle-sidebar": "Přepnout lištu tabla",
"show-cards-minimum-count": "Zobrazit počet karet pokud seznam obsahuje více než ",
"show-cards-minimum-count": "Zobrazit počet karet pokud sloupec obsahuje více než ",
"sidebar-open": "Otevřít boční panel",
"sidebar-close": "Zavřít boční panel",
"signupPopup-title": "Vytvořit účet",
"star-board-title": "Kliknutím přidat tablu hvězdičku. Poté bude zobrazeno navrchu seznamu.",
"star-board-title": "Kliknutím přidat tablu hvězdičku. Poté bude zobrazeno nahoře.",
"starred-boards": "Tabla s hvězdičkou",
"starred-boards-description": "Tabla s hvězdičkou jsou zobrazena navrchu seznamu.",
"starred-boards-description": "Tabla s hvězdičkou jsou zobrazena nahoře.",
"subscribe": "Odebírat",
"team": "Tým",
"this-board": "toto tablo",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Avatar nahrán",
"username": "Uživatelské jméno",
"view-it": "Zobrazit",
"warn-list-archived": "varování: tuto kartu obsahuje seznam v koši",
"warn-list-archived": "varování: tato karta je v seznamu v Archivu",
"watch": "Sledovat",
"watching": "Sledující",
"watching-info": "Bude vám oznámena každá změna v tomto tablu",
@@ -424,8 +455,8 @@
"welcome-list2": "Pokročilé",
"what-to-do": "Co chcete dělat?",
"wipLimitErrorPopup-title": "Neplatný WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "Počet úkolů v tomto seznamu je vyšší než definovaný WIP limit.",
"wipLimitErrorPopup-dialog-pt2": "Přesuňte prosím některé úkoly mimo tento seznam, nebo nastavte vyšší WIP limit.",
"wipLimitErrorPopup-dialog-pt1": "Počet úkolů v tomto sloupci je vyšší než definovaný WIP limit.",
"wipLimitErrorPopup-dialog-pt2": "Přesuňte prosím některé úkoly mimo tento sloupec, nebo nastavte vyšší WIP limit.",
"admin-panel": "Administrátorský panel",
"settings": "Nastavení",
"people": "Lidé",
@@ -447,16 +478,16 @@
"send-smtp-test": "Poslat si zkušební email.",
"invitation-code": "Kód pozvánky",
"email-invite-register-subject": "__inviter__ odeslal pozvánku",
"email-invite-register-text": "Ahoj __user__,\n\n__inviter__ tě přizval ke spolupráci ve Wekanu.\n\nNásleduj prosím odkaz níže:\n\n__url__\n\nKód Tvé pozvánky je: __icode__\n\nDěkujeme.",
"email-smtp-test-subject": "SMTP Testovací email z Wekanu",
"email-invite-register-text": "Ahoj __user__,\n\n__inviter__ tě přizval do kanban boardu ke spolupráci.\n\nNásleduj prosím odkaz níže:\n\n__url__\n\nKód Tvé pozvánky je: __icode__\n\nDěkujeme.",
"email-smtp-test-subject": "E-mail testující SMTP",
"email-smtp-test-text": "Email byl úspěšně odeslán",
"error-invitation-code-not-exist": "Kód pozvánky neexistuje.",
"error-notAuthorized": "Nejste autorizován k prohlížení této stránky.",
"outgoing-webhooks": "Odchozí Webhooky",
"outgoingWebhooksPopup-title": "Odchozí Webhooky",
"boardCardTitlePopup-title": "Filtr názvů karet",
"new-outgoing-webhook": "Nové odchozí Webhooky",
"no-name": "(Neznámé)",
"Wekan_version": "Wekan verze",
"Node_version": "Node verze",
"OS_Arch": "OS Architektura",
"OS_Cpus": "OS Počet CPU",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Celková paměť",
"OS_Type": "Typ OS",
"OS_Uptime": "OS Doba běhu systému",
"days": "days",
"hours": "hodin",
"minutes": "minut",
"seconds": "sekund",
"show-field-on-card": "Ukázat toto pole na kartě",
"automatically-field-on-card": "Automaticky vytvořit pole na všech kartách",
"showLabel-field-on-card": "Ukázat štítek pole na minikartě",
"yes": "Ano",
"no": "Ne",
"accounts": "Účty",
@@ -485,27 +519,145 @@
"card-end-on": "Končí v",
"editCardReceivedDatePopup-title": "Změnit datum přijetí",
"editCardEndDatePopup-title": "Změnit datum konce",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Přidělil(a)",
"requested-by": "Vyžádal(a)",
"board-delete-notice": "Smazání je trvalé. Přijdete o všechny sloupce, karty a akce spojené s tímto tablem.",
"delete-board-confirm-popup": "Všechny sloupce, štítky a aktivity budou smazány a obsah tabla nebude možné obnovit. Toto nelze vrátit zpět.",
"boardDeletePopup-title": "Smazat tablo?",
"delete-board": "Smazat tablo",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"show-subtasks-field": "Cards can have subtasks",
"default-subtasks-board": "Podúkoly pro tablo __board__",
"default": "Výchozí",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
"show-subtasks-field": "Karty mohou mít podúkoly",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
"prefix-with-full-path": "Prefix with full path",
"prefix-with-parent": "Prefix with parent",
"subtext-with-full-path": "Subtext with full path",
"subtext-with-parent": "Subtext with parent",
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"show-parent-in-minicard": "Ukázat předka na minikartě",
"prefix-with-full-path": "Prefix s celou cestou",
"prefix-with-parent": "Prefix s předkem",
"subtext-with-full-path": "Podtext s celou cestou",
"subtext-with-parent": "Podtext s předkem",
"change-card-parent": "Změnit rodiče karty",
"parent-card": "Rodičovská karta",
"source-board": "Zdrojové tablo",
"no-parent": "Nezobrazovat rodiče",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "přidán štítek '%s'",
"activity-removed-label-card": "odstraněn štítek '%s'",
"activity-delete-attach-card": "odstraněna příloha",
"r-rule": "Pravidlo",
"r-add-trigger": "Přidat spoštěč",
"r-add-action": "Přidat akci",
"r-board-rules": "Pravidla Tabla",
"r-add-rule": "Přidat pravidlo",
"r-view-rule": "Zobrazit pravidlo",
"r-delete-rule": "Smazat pravidlo",
"r-new-rule-name": "Nový název pravidla",
"r-no-rules": "Žádná pravidla",
"r-when-a-card": "Pokud karta",
"r-is": "je",
"r-is-moved": "je přesunuto",
"r-added-to": "přidáno do",
"r-removed-from": "Odstraněno z",
"r-the-board": "tablo",
"r-list": "sloupce",
"set-filter": "Nastavit filtr",
"r-moved-to": "Přesunuto do",
"r-moved-from": "Přesunuto z",
"r-archived": "Přesunuto do archivu",
"r-unarchived": "Obnoveno z archivu",
"r-a-card": "karta",
"r-when-a-label-is": "Pokud nějaký štítek je",
"r-when-the-label-is": "Pokud tento štítek je",
"r-list-name": "název seznamu",
"r-when-a-member": "Pokud nějaký člen je",
"r-when-the-member": "Pokud tento člen je",
"r-name": "jméno",
"r-when-a-attach": "Pokud je nějaká příloha",
"r-when-a-checklist": "Když zaškrtávací seznam je",
"r-when-the-checklist": "Když zaškrtávací seznam",
"r-completed": "Dokončeno",
"r-made-incomplete": "Vytvořeno nehotové",
"r-when-a-item": "Když položka zaškrtávacího seznamu je",
"r-when-the-item": "Když položka zaškrtávacího seznamu",
"r-checked": "Zaškrtnuto",
"r-unchecked": "Odškrtnuto",
"r-move-card-to": "Přesunout kartu do",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "toho sloupce",
"r-archive": "Přesunout do archivu",
"r-unarchive": "Obnovit z archivu",
"r-card": "karta",
"r-add": "Přidat",
"r-remove": "Odstranit",
"r-label": "štítek",
"r-member": "člen",
"r-remove-all": "Odstranit všechny členy z této karty",
"r-set-color": "Set color to",
"r-checklist": "zaškrtávací seznam",
"r-check-all": "Zaškrtnout vše",
"r-uncheck-all": "Odškrtnout vše",
"r-items-check": "položky zaškrtávacího seznamu",
"r-check": "Označit",
"r-uncheck": "Odznačit",
"r-item": "Položka",
"r-of-checklist": "ze zaškrtávacího seznamu",
"r-send-email": "Odeslat e-mail",
"r-to": "komu",
"r-subject": "předmět",
"r-rule-details": "Podrobnosti pravidla",
"r-d-move-to-top-gen": "Přesunout kartu na začátek toho sloupce",
"r-d-move-to-top-spec": "Přesunout kartu na začátek sloupce",
"r-d-move-to-bottom-gen": "Přesunout kartu na konec sloupce",
"r-d-move-to-bottom-spec": "Přesunout kartu na konec sloupce",
"r-d-send-email": "Odeslat email",
"r-d-send-email-to": "komu",
"r-d-send-email-subject": "předmět",
"r-d-send-email-message": "zpráva",
"r-d-archive": "Přesunout kartu do archivu",
"r-d-unarchive": "Obnovit kartu z archivu",
"r-d-add-label": "Přidat štítek",
"r-d-remove-label": "Odstranit štítek",
"r-create-card": "Vytvořit novou kartu",
"r-in-list": "v seznamu",
"r-in-swimlane": "ve swimlane",
"r-d-add-member": "Přidat člena",
"r-d-remove-member": "Odstranit člena",
"r-d-remove-all-member": "Odstranit všechny členy",
"r-d-check-all": "Označit všechny položky na seznamu",
"r-d-uncheck-all": "Odznačit všechny položky na seznamu",
"r-d-check-one": "Označit položku",
"r-d-uncheck-one": "Odznačit položku",
"r-d-check-of-list": "ze zaškrtávacího seznamu",
"r-d-add-checklist": "Přidat zaškrtávací seznam",
"r-d-remove-checklist": "Odstranit zaškrtávací seznam",
"r-by": "by",
"r-add-checklist": "Přidat zaškrtávací seznam",
"r-with-items": "s položkami",
"r-items-list": "položka1,položka2,položka3",
"r-add-swimlane": "Přidat swimlane",
"r-swimlane-name": "Název swimlane",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "Když je karta přesunuta do jiného sloupce",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Metoda autentizace",
"authentication-type": "Typ autentizace",
"custom-product-name": "Vlastní název produktu",
"layout": "uspořádání",
"hide-logo": "Skrýt logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Něco se pokazilo",
"error-ldap-login": "Během přihlašování nastala chyba"
}
+663
View File
@@ -0,0 +1,663 @@
{
"accept": "Accepter",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "tilføjede__vedhæftet fil__ til __kort__",
"act-addSubtask": "tilføjede delopgave __tjekliste__ til __kort__",
"act-addChecklist": "tilføjede tjekliste__tjekliste__ til __kort__",
"act-addChecklistItem": "tilføjede__tjeklistePunkt__ til tjekliste__tjekliste__ til__kort__",
"act-addComment": "commented on __card__: __comment__",
"act-createBoard": "created __board__",
"act-createCard": "added __card__ to __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
"act-joinMember": "added __member__ to __card__",
"act-moveCard": "moved __card__ from __oldList__ to __list__",
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-customfield-created": "created custom field %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Add",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
"add-label": "Add Label",
"add-list": "Add List",
"add-members": "Add Members",
"added": "Added",
"addMemberPopup-title": "Members",
"admin": "Admin",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
"attachmentDeletePopup-title": "Delete Attachment?",
"attachments": "Attachments",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "The avatar is too large (70KB max)",
"back": "Back",
"board-change-color": "Change color",
"board-nb-stars": "%s stars",
"board-not-found": "Board not found",
"board-private-info": "This board will be <strong>private</strong>.",
"board-public-info": "This board will be <strong>public</strong>.",
"boardChangeColorPopup-title": "Change Board Background",
"boardChangeTitlePopup-title": "Rename Board",
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Menu",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
"card-edit-attachments": "Edit attachments",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-labels": "Edit labels",
"card-edit-members": "Edit members",
"card-labels-title": "Change the labels for the card.",
"card-members-title": "Add or remove members of the board from the card.",
"card-start": "Start",
"card-start-on": "Starts on",
"cardAttachmentsPopup-title": "Attach From",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardDeletePopup-title": "Delete Card?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardMembersPopup-title": "Members",
"cardMorePopup-title": "More",
"cards": "Cards",
"cards-count": "Cards",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Computer",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"current": "current",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-date": "Date",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-fields": "Custom Fields",
"date": "Date",
"decline": "Decline",
"default-avatar": "Default avatar",
"delete": "Delete",
"deleteCustomFieldPopup-title": "Delete Custom Field?",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
"discard": "Discard",
"done": "Done",
"download": "Download",
"edit": "Edit",
"edit-avatar": "Change Avatar",
"edit-profile": "Edit Profile",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCustomFieldPopup-title": "Edit Field",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"email": "Email",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Sending email failed",
"email-fail-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
"email-invite-subject": "__inviter__ sent you an invitation",
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
"email-resetPassword-subject": "Reset your password on __siteName__",
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
"email-sent": "Email sent",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
"error-board-notAMember": "You need to be a member of this board to do that",
"error-json-malformed": "Your text is not valid JSON",
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
"error-list-doesNotExist": "This list does not exist",
"error-user-doesNotExist": "This user does not exist",
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
"filter-no-custom-fields": "No Custom Fields",
"filter-on": "Filter is on",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
"link": "Link",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"label-default": "%s label (default)",
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
"labels": "Labels",
"language": "Language",
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
"leave-board": "Leave Board",
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
"memberMenuPopup-title": "Member Settings",
"members": "Members",
"menu": "Menu",
"move-selection": "Move selection",
"moveCardPopup-title": "Move Card",
"moveCardToBottom-title": "Move to Bottom",
"moveCardToTop-title": "Move to Top",
"moveSelectionPopup-title": "Move selection",
"multi-selection": "Multi-Selection",
"multi-selection-on": "Multi-Selection is on",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Password",
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
"participating": "Participating",
"preview": "Preview",
"previewAttachedImagePopup-title": "Preview",
"previewClipboardImagePopup-title": "Preview",
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Profile",
"public": "Public",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Remove from Board",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"remove-member": "Remove Member",
"remove-member-from-card": "Remove from Card",
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
"removeMemberPopup-title": "Remove Member?",
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "Assign yourself to current card",
"shortcut-autocomplete-emoji": "Autocomplete emoji",
"shortcut-autocomplete-members": "Autocomplete members",
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
"show-cards-minimum-count": "Show cards count if list contains more than",
"sidebar-open": "Open Sidebar",
"sidebar-close": "Close Sidebar",
"signupPopup-title": "Create an Account",
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
"starred-boards": "Starred Boards",
"starred-boards-description": "Starred boards show up at the top of your boards list.",
"subscribe": "Subscribe",
"team": "Team",
"this-board": "this board",
"this-card": "this card",
"spent-time-hours": "Spent time (hours)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"time": "Time",
"title": "Title",
"tracking": "Tracking",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"type": "Type",
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
"unwatch": "Unwatch",
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
"welcome-board": "Welcome Board",
"welcome-swimlane": "Milestone 1",
"welcome-list1": "Basics",
"welcome-list2": "Advanced",
"what-to-do": "What do you want to do?",
"wipLimitErrorPopup-title": "Invalid WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
"admin-panel": "Admin Panel",
"settings": "Settings",
"people": "People",
"registration": "Registration",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
"to-boards": "To board(s)",
"email-addresses": "Email Addresses",
"smtp-host-description": "The address of the SMTP server that handles your emails.",
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
"smtp-tls-description": "Enable TLS support for SMTP server",
"smtp-host": "SMTP Host",
"smtp-port": "SMTP Port",
"smtp-username": "Username",
"smtp-password": "Password",
"smtp-tls": "TLS support",
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
"OS_Loadavg": "OS Load Average",
"OS_Platform": "OS Platform",
"OS_Release": "OS Release",
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
"accounts-allowEmailChange": "Allow Email Change",
"accounts-allowUserNameChange": "Allow Username Change",
"createdAt": "Created at",
"verified": "Verified",
"active": "Active",
"card-received": "Received",
"card-received-on": "Received on",
"card-end": "End",
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
"show-subtasks-field": "Cards can have subtasks",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
"prefix-with-full-path": "Prefix with full path",
"prefix-with-parent": "Prefix with parent",
"subtext-with-full-path": "Subtext with full path",
"subtext-with-parent": "Subtext with parent",
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Add",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+195 -43
View File
@@ -1,6 +1,6 @@
{
"accept": "Akzeptieren",
"act-activity-notify": "[Wekan] Aktivitätsbenachrichtigung",
"act-activity-notify": "Aktivitätsbenachrichtigung",
"act-addAttachment": "hat __attachment__ an __card__ angehängt",
"act-addSubtask": "hat die Teilaufgabe __checklist__ zu __card__ hinzugefügt",
"act-addChecklist": "hat die Checkliste __checklist__ zu __card__ hinzugefügt",
@@ -11,10 +11,10 @@
"act-createCustomField": "benutzerdefiniertes Feld __customField__ angelegt",
"act-createList": "hat __list__ zu __board__ hinzugefügt",
"act-addBoardMember": "hat __member__ zu __board__ hinzugefügt",
"act-archivedBoard": "__board__ in den Papierkorb verschoben",
"act-archivedCard": "__card__ in den Papierkorb verschoben",
"act-archivedList": "__list__ in den Papierkorb verschoben",
"act-archivedSwimlane": "__swimlane__ in den Papierkorb verschoben",
"act-archivedBoard": "__board__ ins Archiv verschoben",
"act-archivedCard": "__card__ ins Archiv verschoben",
"act-archivedList": "__list__ ins Archiv verschoben",
"act-archivedSwimlane": "__swimlane__ ins Archiv verschoben",
"act-importBoard": "hat __board__ importiert",
"act-importCard": "hat __card__ importiert",
"act-importList": "hat __list__ importiert",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "hat __member__ von __board__ entfernt",
"act-restoredCard": "hat __card__ in __board__ wiederhergestellt",
"act-unjoinMember": "hat __member__ von __card__ entfernt",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Aktionen",
"activities": "Aktivitäten",
"activity": "Aktivität",
"activity-added": "hat %s zu %s hinzugefügt",
"activity-archived": "hat %s in den Papierkorb verschoben",
"activity-archived": "hat %s ins Archiv verschoben",
"activity-attached": "hat %s an %s angehängt",
"activity-created": "hat %s erstellt",
"activity-customfield-created": "hat das benutzerdefinierte Feld %s erstellt",
@@ -43,16 +43,26 @@
"activity-sent": "hat %s an %s gesendet",
"activity-unjoined": "hat %s verlassen",
"activity-subtask-added": "Teilaufgabe zu %s hinzugefügt",
"activity-checked-item": "markierte %s in Checkliste %svon %s",
"activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-item-added": "hat eine Checklistenposition zu '%s' in %s hinzugefügt",
"activity-checklist-removed": "entfernte eine Checkliste von %s",
"activity-checklist-completed": "vervollständigte die Checkliste %s von %s",
"activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s",
"activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt",
"add": "Hinzufügen",
"activity-checked-item-card": "markiere %s in Checkliste %s",
"activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt",
"activity-checklist-completed-card": "vervollständigte die Checkliste %s",
"activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s",
"add-attachment": "Datei anhängen",
"add-board": "neues Board",
"add-card": "Karte hinzufügen",
"add-swimlane": "Swimlane hinzufügen",
"add-subtask": "Teilaufgabe hinzufügen",
"add-checklist": "Checkliste hinzufügen",
"add-checklist-item": "Position zu einer Checkliste hinzufügen",
"add-checklist-item": "Element zu Checkliste hinzufügen",
"add-cover": "Cover hinzufügen",
"add-label": "Label hinzufügen",
"add-list": "Liste hinzufügen",
@@ -68,20 +78,20 @@
"and-n-other-card": "und eine andere Karte",
"and-n-other-card_plural": "und __count__ andere Karten",
"apply": "Übernehmen",
"app-is-offline": "Wekan lädt gerade, bitte warten Sie. Wenn Sie die Seite neu laden, gehen nicht übertragene Änderungen verloren. Sollte Wekan nicht geladen werden, überprüfen Sie bitte, ob der Server noch läuft.",
"archive": "In den Papierkorb verschieben",
"archive-all": "Alles in den Papierkorb verschieben",
"archive-board": "Board in den Papierkorb verschieben",
"archive-card": "Karte in den Papierkorb verschieben",
"archive-list": "Liste in den Papierkorb verschieben",
"archive-swimlane": "Swimlane in den Papierkorb verschieben",
"archive-selection": "Auswahl in den Papierkorb verschieben",
"archiveBoardPopup-title": "Board in den Papierkorb verschieben?",
"archived-items": "Papierkorb",
"archived-boards": "Boards im Papierkorb",
"app-is-offline": "Laden, bitte warten. Das Aktualisieren der Seite führt zu Datenverlust. Wenn das Laden nicht funktioniert, überprüfen Sie bitte, ob der Server nicht angehalten wurde.",
"archive": "Ins Archiv verschieben",
"archive-all": "Alles ins Archiv verschieben",
"archive-board": "Board ins Archiv verschieben",
"archive-card": "Karte ins Archiv verschieben",
"archive-list": "Liste ins Archiv verschieben",
"archive-swimlane": "Swimlane ins Archiv verschieben",
"archive-selection": "Auswahl ins Archiv verschieben",
"archiveBoardPopup-title": "Board ins Archiv verschieben?",
"archived-items": "Archiv",
"archived-boards": "Boards im Archiv",
"restore-board": "Board wiederherstellen",
"no-archived-boards": "Keine Boards im Papierkorb.",
"archives": "Papierkorb",
"no-archived-boards": "Keine Boards im Archiv.",
"archives": "Archiv",
"assign-member": "Mitglied zuweisen",
"attached": "angehängt",
"attachment": "Anhang",
@@ -108,12 +118,12 @@
"board-view-lists": "Listen",
"bucket-example": "z.B. \"Löffelliste\"",
"cancel": "Abbrechen",
"card-archived": "Diese Karte wurde in den Papierkorb verschoben",
"board-archived": "Dieses Board wurde in den Papierkorb verschoben.",
"card-archived": "Diese Karte wurde ins Archiv verschoben",
"board-archived": "Dieses Board wurde ins Archiv verschoben.",
"card-comments-title": "Diese Karte hat %s Kommentar(e).",
"card-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Alle Aktionen, die dieser Karte zugeordnet sind, werden ebenfalls gelöscht.",
"card-delete-pop": "Alle Aktionen werden aus dem Aktivitätsfeed entfernt und die Karte kann nicht wiedereröffnet werden. Die Aktion kann nicht rückgängig gemacht werden.",
"card-delete-suggest-archive": "Sie können eine Karte in den Papierkorb verschieben, um sie vom Board zu entfernen und die Aktivitäten zu behalten.",
"card-delete-suggest-archive": "Sie können eine Karte ins Archiv verschieben, um sie vom Board zu entfernen und die Aktivitäten zu behalten.",
"card-due": "Fällig",
"card-due-on": "Fällig am",
"card-spent": "Aufgewendete Zeit",
@@ -156,17 +166,33 @@
"clipboard": "Zwischenablage oder Drag & Drop",
"close": "Schließen",
"close-board": "Board schließen",
"close-board-pop": "Sie können das Board wiederherstellen, indem Sie die Schaltfläche \"Papierkorb\" in der Kopfzeile der Startseite anklicken.",
"close-board-pop": "Sie können das Board wiederherstellen, indem Sie die Schaltfläche \"Archiv\" in der Kopfzeile der Startseite anklicken.",
"color-black": "schwarz",
"color-blue": "blau",
"color-crimson": "Karminrot",
"color-darkgreen": "Dunkelgrün",
"color-gold": "Gold",
"color-gray": "Grau",
"color-green": "grün",
"color-indigo": "Indigo",
"color-lime": "hellgrün",
"color-magenta": "Magentarot",
"color-mistyrose": "Altrosa",
"color-navy": "Marineblau",
"color-orange": "orange",
"color-paleturquoise": "Blasses Türkis",
"color-peachpuff": "Pfirsich",
"color-pink": "pink",
"color-plum": "Pflaume",
"color-purple": "lila",
"color-red": "rot",
"color-saddlebrown": "Sattelbraun",
"color-silver": "Silber",
"color-sky": "himmelblau",
"color-slateblue": "Schieferblau",
"color-white": "Weiß",
"color-yellow": "gelb",
"unset-color": "Nicht festgelegt",
"comment": "Kommentar",
"comment-placeholder": "Kommentar schreiben",
"comment-only": "Nur Kommentare",
@@ -273,18 +299,20 @@
"import-board": "Board importieren",
"import-board-c": "Board importieren",
"import-board-title-trello": "Board von Trello importieren",
"import-board-title-wekan": "Board von Wekan importieren",
"import-board-title-wekan": "Board aus vorherigem Export importieren",
"import-sandstorm-backup-warning": "Löschen Sie keine Daten, die Sie aus einem ursprünglich exportierten oder Trelloboard importieren, bevor Sie geprüft haben, ob alles funktioniert. Andernfalls kann es zu Datenverlust kommen, falls es zu einem \"Board nicht gefunden\"-Fehler kommt.",
"import-sandstorm-warning": "Das importierte Board wird alle bereits existierenden Daten löschen und mit den importierten Daten überschreiben.",
"from-trello": "Von Trello",
"from-wekan": "Von Wekan",
"from-wekan": "Aus vorherigem Export",
"import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
"import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan board auf 'Menü', und dann auf 'Board exportieren'. Kopieren Sie anschließend den Text aus der heruntergeladenen Datei.",
"import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.",
"import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.",
"import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
"import-map-members": "Mitglieder zuordnen",
"import-members-map": "Das importierte Board hat Mitglieder. Bitte ordnen Sie jene, die importiert werden sollen, vorhandenen Wekan-Nutzern zu",
"import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.",
"import-show-user-mapping": "Mitgliederzuordnung überprüfen",
"import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
"importMapMembersAddPopup-title": "Wekan-Nutzer auswählen",
"import-user-select": "Wählen Sie den bestehenden Benutzer aus, den Sie für dieses Mitglied verwenden wollen.",
"importMapMembersAddPopup-title": "Mitglied auswählen",
"info": "Version",
"initials": "Initialen",
"invalid-date": "Ungültiges Datum",
@@ -303,17 +331,19 @@
"leave-board-pop": "Sind Sie sicher, dass Sie __boardTitle__ verlassen möchten? Sie werden von allen Karten in diesem Board entfernt.",
"leaveBoardPopup-title": "Board verlassen?",
"link-card": "Link zu dieser Karte",
"list-archive-cards": "Alle Karten dieser Liste in den Papierkorb verschieben",
"list-archive-cards-pop": "Alle Karten dieser Liste werden vom Board entfernt. Um Karten im Papierkorb anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Papierkorb\".",
"list-archive-cards": "Alle Karten dieser Liste ins Archiv verschieben",
"list-archive-cards-pop": "Alle Karten dieser Liste werden vom Board entfernt. Um Karten im Papierkorb anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Archiv\".",
"list-move-cards": "Alle Karten in dieser Liste verschieben",
"list-select-cards": "Alle Karten in dieser Liste auswählen",
"set-color-list": "Setze Farbe",
"listActionPopup-title": "Listenaktionen",
"swimlaneActionPopup-title": "Swimlaneaktionen",
"swimlaneAddPopup-title": "Füge eine Swimlane unterhalb hinzu",
"listImportCardPopup-title": "Eine Trello-Karte importieren",
"listMorePopup-title": "Mehr",
"link-list": "Link zu dieser Liste",
"list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.",
"list-delete-suggest-archive": "Listen können in den Papierkorb verschoben werden, um sie aus dem Board zu entfernen und die Aktivitäten zu behalten.",
"list-delete-suggest-archive": "Listen können ins Archiv verschoben werden, um sie aus dem Board zu entfernen und die Aktivitäten zu behalten.",
"lists": "Listen",
"swimlanes": "Swimlanes",
"log-out": "Ausloggen",
@@ -333,9 +363,9 @@
"muted-info": "Sie werden nicht über Änderungen auf diesem Board benachrichtigt",
"my-boards": "Meine Boards",
"name": "Name",
"no-archived-cards": "Keine Karten im Papierkorb.",
"no-archived-lists": "Keine Listen im Papierkorb.",
"no-archived-swimlanes": "Keine Swimlanes im Papierkorb.",
"no-archived-cards": "Keine Karten im Archiv.",
"no-archived-lists": "Keine Listen im Archiv.",
"no-archived-swimlanes": "Keine Swimlanes im Archiv.",
"no-results": "Keine Ergebnisse",
"normal": "Normal",
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
@@ -371,6 +401,7 @@
"restore": "Wiederherstellen",
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
"search-cards": "Suche nach Kartentiteln und Beschreibungen auf diesem Board",
"search-example": "Suchbegriff",
"select-color": "Farbe auswählen",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Profilbild hochgeladen",
"username": "Benutzername",
"view-it": "Ansehen",
"warn-list-archived": "Warnung: Diese Karte befindet sich in einer Liste im Papierkorb!",
"warn-list-archived": "Warnung: Diese Karte befindet sich in einer Liste im Archiv",
"watch": "Beobachten",
"watching": "Beobachten",
"watching-info": "Sie werden über alle Änderungen in diesem Board benachrichtigt",
@@ -447,16 +478,16 @@
"send-smtp-test": "Test-E-Mail an sich selbst schicken",
"invitation-code": "Einladungscode",
"email-invite-register-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
"email-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
"email-smtp-test-subject": "SMTP-Test-E-Mail von Wekan",
"email-invite-register-text": "Sehr geehrte(r) __user__,\n\n__inviter__ hat Sie zur Mitarbeit an einem Kanbanboard eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
"email-smtp-test-subject": "SMTP Test-E-Mail",
"email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt",
"error-invitation-code-not-exist": "Ungültiger Einladungscode",
"error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
"outgoing-webhooks": "Ausgehende Webhooks",
"outgoingWebhooksPopup-title": "Ausgehende Webhooks",
"boardCardTitlePopup-title": "Kartentitelfilter",
"new-outgoing-webhook": "Neuer ausgehender Webhook",
"no-name": "(Unbekannt)",
"Wekan_version": "Wekan-Version",
"Node_version": "Node-Version",
"OS_Arch": "Betriebssystem-Architektur",
"OS_Cpus": "Anzahl Prozessoren",
@@ -467,10 +498,13 @@
"OS_Totalmem": "Gesamter Arbeitsspeicher",
"OS_Type": "Typ des Betriebssystems",
"OS_Uptime": "Laufzeit des Systems",
"days": "Tage",
"hours": "Stunden",
"minutes": "Minuten",
"seconds": "Sekunden",
"show-field-on-card": "Zeige dieses Feld auf der Karte",
"automatically-field-on-card": "Automatisch Label für alle Karten erzeugen",
"showLabel-field-on-card": "Feldbezeichnung auf Minikarte anzeigen",
"yes": "Ja",
"no": "Nein",
"accounts": "Konten",
@@ -485,6 +519,10 @@
"card-end-on": "Endet am",
"editCardReceivedDatePopup-title": "Empfangsdatum ändern",
"editCardEndDatePopup-title": "Enddatum ändern",
"setCardColorPopup-title": "Farbe festlegen",
"setCardActionsColorPopup-title": "Wähle eine Farbe",
"setSwimlaneColorPopup-title": "Wähle eine Farbe",
"setListColorPopup-title": "Wähle eine Farbe",
"assigned-by": "Zugewiesen von",
"requested-by": "Angefordert von",
"board-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Sie werden alle Listen, Karten und Aktionen, die mit diesem Board verbunden sind, verlieren.",
@@ -507,5 +545,119 @@
"change-card-parent": "Übergeordnete Karte ändern",
"parent-card": "Übergeordnete Karte",
"source-board": "Quellboard",
"no-parent": "Nicht anzeigen"
"no-parent": "Nicht anzeigen",
"activity-added-label": "fügte Label '%s' zu %s hinzu",
"activity-removed-label": "entfernte Label '%s' von %s",
"activity-delete-attach": "löschte ein Anhang von %s",
"activity-added-label-card": "Label hinzugefügt '%s'",
"activity-removed-label-card": "Label entfernt '%s'",
"activity-delete-attach-card": "hat einen Anhang gelöscht",
"r-rule": "Regel",
"r-add-trigger": "Auslöser hinzufügen",
"r-add-action": "Aktion hinzufügen",
"r-board-rules": "Board Regeln",
"r-add-rule": "Regel hinzufügen",
"r-view-rule": "Regel anzeigen",
"r-delete-rule": "Regel löschen",
"r-new-rule-name": "Neuer Regeltitel",
"r-no-rules": "Keine Regeln",
"r-when-a-card": "Wenn eine Karte",
"r-is": "ist",
"r-is-moved": "verschoben wird",
"r-added-to": "hinzugefügt wird zu",
"r-removed-from": "Entfernt von",
"r-the-board": "das Board",
"r-list": "Liste",
"set-filter": "Setze Filter",
"r-moved-to": "Verschieben nach",
"r-moved-from": "Verschieben von",
"r-archived": "Ins Archiv verschieben",
"r-unarchived": "Aus dem Archiv wiederhergestellt",
"r-a-card": "eine Karte",
"r-when-a-label-is": "Wenn ein Label ist",
"r-when-the-label-is": " Wenn das Label ist",
"r-list-name": "Listenname",
"r-when-a-member": "Wenn ein Mitglied ist",
"r-when-the-member": "Wenn das Mitglied",
"r-name": "Name",
"r-when-a-attach": "Wenn ein Anhang",
"r-when-a-checklist": "Wenn eine Checkliste ist",
"r-when-the-checklist": "Wenn die Checkliste",
"r-completed": "Abgeschlossen",
"r-made-incomplete": "Unvollständig gemacht",
"r-when-a-item": "Wenn ein Checklistenelement ist",
"r-when-the-item": "Wenn das Checklistenelement",
"r-checked": "Markiert",
"r-unchecked": "Abgewählt",
"r-move-card-to": "Verschiebe Karte nach",
"r-top-of": "Anfang von",
"r-bottom-of": "Ende von",
"r-its-list": "seine Liste",
"r-archive": "Ins Archiv verschieben",
"r-unarchive": "Aus dem Archiv wiederherstellen",
"r-card": "Karte",
"r-add": "Hinzufügen",
"r-remove": "entfernen",
"r-label": "Label",
"r-member": "Mitglied",
"r-remove-all": "Entferne alle Mitglieder von der Karte",
"r-set-color": "Farbe festlegen auf",
"r-checklist": "Checkliste",
"r-check-all": "Alle markieren",
"r-uncheck-all": "Alle abwählen",
"r-items-check": "Elemente der Checkliste",
"r-check": "Markieren",
"r-uncheck": "Abwählen",
"r-item": "Element",
"r-of-checklist": "der Checkliste",
"r-send-email": "Eine E-Mail senden",
"r-to": "an",
"r-subject": "Betreff",
"r-rule-details": "Regeldetails",
"r-d-move-to-top-gen": "Karte nach oben in die Liste verschieben",
"r-d-move-to-top-spec": "Karte an den Anfang der Liste verschieben",
"r-d-move-to-bottom-gen": "Karte nach unten in die Liste verschieben",
"r-d-move-to-bottom-spec": "Karte an das Ende der Liste verschieben",
"r-d-send-email": "E-Mail senden",
"r-d-send-email-to": "an",
"r-d-send-email-subject": "Betreff",
"r-d-send-email-message": "Nachricht",
"r-d-archive": "Karte ins Archiv verschieben",
"r-d-unarchive": "Karte aus dem Archiv wiederherstellen",
"r-d-add-label": "Label hinzufügen",
"r-d-remove-label": "Label entfernen",
"r-create-card": "Neue Karte erstellen",
"r-in-list": "in der Liste",
"r-in-swimlane": "in Swimlane",
"r-d-add-member": "Mitglied hinzufügen",
"r-d-remove-member": "Mitglied entfernen",
"r-d-remove-all-member": "Entferne alle Mitglieder",
"r-d-check-all": "Alle Elemente der Liste markieren",
"r-d-uncheck-all": "Alle Element der Liste abwählen",
"r-d-check-one": "Element auswählen",
"r-d-uncheck-one": "Element abwählen",
"r-d-check-of-list": "der Checkliste",
"r-d-add-checklist": "Checkliste hinzufügen",
"r-d-remove-checklist": "Checkliste entfernen",
"r-by": "durch",
"r-add-checklist": "Checkliste hinzufügen",
"r-with-items": "mit Elementen",
"r-items-list": "Element1,Element2,Element3",
"r-add-swimlane": "Füge Swimlane hinzu",
"r-swimlane-name": "Swimlanename",
"r-board-note": "Hinweis: Lassen Sie ein Feld leer, um alle möglichen Werte zu finden.",
"r-checklist-note": "Hinweis: Die Elemente der Checkliste müssen als kommagetrennte Werte geschrieben werden.",
"r-when-a-card-is-moved": "Wenn eine Karte in eine andere Liste verschoben wird",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentifizierungsmethode",
"authentication-type": "Authentifizierungstyp",
"custom-product-name": "Benutzerdefinierter Produktname",
"layout": "Layout",
"hide-logo": "Verstecke Logo",
"add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach <body> Anfang hinzu",
"add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor </body>Ende hinzu",
"error-undefined": "Etwas ist schief gelaufen",
"error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten"
}
+193 -41
View File
@@ -1,6 +1,6 @@
{
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Προσθήκη",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Προσθήκη Κάρτας",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Εφαρμογή",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -108,12 +118,12 @@
"board-view-lists": "Λίστες",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Ακύρωση",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Έως",
"card-due-on": "Έως τις",
"card-spent": "Spent Time",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "Κλείσιμο",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "μαύρο",
"color-blue": "μπλε",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "πράσινο",
"color-indigo": "indigo",
"color-lime": "λάιμ",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "πορτοκαλί",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "ροζ",
"color-plum": "plum",
"color-purple": "μωβ",
"color-red": "κόκκινο",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "ουρανός",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "κίτρινο",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -273,18 +299,20 @@
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "Από το Trello",
"from-wekan": "Από το Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Έκδοση",
"initials": "Initials",
"invalid-date": "Invalid date",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Περισσότερα",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Λίστες",
"swimlanes": "Swimlanes",
"log-out": "Αποσύνδεση",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Όνομα",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Κανένα αποτέλεσμα",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -371,6 +401,7 @@
"restore": "Restore",
"save": "Αποθήκευση",
"search": "Αναζήτηση",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Επιλέξτε Χρώμα",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Uploaded an avatar",
"username": "Όνομα Χρήστη",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Κωδικός Πρόσκλησης",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Ο κωδικός πρόσκλησης δεν υπάρχει",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Άγνωστο)",
"Wekan_version": "Wekan έκδοση",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "ώρες",
"minutes": "λεπτά",
"seconds": "δευτερόλεπτα",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Ναι",
"no": "Όχι",
"accounts": "Λογαριασμοί",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Προσθήκη",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+193 -41
View File
@@ -1,6 +1,6 @@
{
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached _ attachment _ to _ card _",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Add",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -108,12 +118,12 @@
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -273,18 +299,20 @@
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve its activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve its activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -371,6 +401,7 @@
"restore": "Restore",
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Colour",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in a list in the Recycle Bin",
"warn-list-archived": "warning: this card is in a list in the Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any changes in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaboration.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorised to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Add",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+196 -42
View File
@@ -1,6 +1,6 @@
{
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Add",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archive",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archive",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -108,12 +118,12 @@
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -273,18 +299,20 @@
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Link to this card",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -371,6 +401,7 @@
"restore": "Restore",
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,6 +545,122 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "Added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter":"Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-is": "is",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-list": "list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Add",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value. ",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-added-to": "added to",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+193 -41
View File
@@ -1,6 +1,6 @@
{
"accept": "Akcepti",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "Aldonis __card__ al __board__",
"act-addBoardMember": "Aldonis __member__ al __board__",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Akcioj",
"activities": "Aktivaĵoj",
"activity": "Aktivaĵo",
"activity-added": "Aldonis %s al %s",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"activity-created": "Kreiis %s",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "Sendis %s al %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Aldoni",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
@@ -68,20 +78,20 @@
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apliki",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Arkivi",
"archived-boards": "Boards in Archive",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Arkivi",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -108,12 +118,12 @@
"board-view-lists": "Listoj",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "This card has %s comment.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
@@ -156,17 +166,33 @@
"clipboard": "Clipboard or drag & drop",
"close": "Fermi",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "nigra",
"color-blue": "blua",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verda",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "oranĝa",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "ruĝa",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "flava",
"unset-color": "Unset",
"comment": "Komento",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -273,18 +299,20 @@
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
@@ -303,17 +331,19 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Ligi al ĉitiu karto",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Movu ĉiujn kartojn en tiu listo.",
"list-select-cards": "Elektu ĉiujn kartojn en tiu listo.",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Pli",
"link-list": "Link to this list",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Listoj",
"swimlanes": "Swimlanes",
"log-out": "Elsaluti",
@@ -333,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Nomo",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Neniaj rezultoj",
"normal": "Normala",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -371,6 +401,7 @@
"restore": "Forigi",
"save": "Savi",
"search": "Serĉi",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Uploaded an avatar",
"username": "Uzantnomo",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Rigardi",
"watching": "Rigardante",
"watching-info": "You will be notified of any change in this board",
@@ -447,16 +478,16 @@
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
@@ -467,10 +498,13 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Aldoni",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+194 -42
View File
@@ -1,8 +1,8 @@
{
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Notificación de Actividad",
"act-activity-notify": "Notificación de Actividad",
"act-addAttachment": "adjunto __attachment__ a __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addSubtask": "lista de ítems __checklist__ agregada a __card__",
"act-addChecklist": "lista de ítems __checklist__ agregada a __card__",
"act-addChecklistItem": " __checklistItem__ agregada a lista de ítems __checklist__ en __card__",
"act-addComment": "comentado en __card__: __comment__",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "agregada __list__ a __board__",
"act-addBoardMember": "agregado __member__ a __board__",
"act-archivedBoard": "__board__ movido a Papelera de Reciclaje",
"act-archivedCard": "__card__ movido a Papelera de Reciclaje",
"act-archivedList": "__list__ movido a Papelera de Reciclaje",
"act-archivedSwimlane": "__swimlane__ movido a Papelera de Reciclaje",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "__board__ importado",
"act-importCard": "__card__ importada",
"act-importList": "__list__ importada",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "__member__ removido de __board__",
"act-restoredCard": "__card__ restaurada a __board__",
"act-unjoinMember": "__member__ removido de __card__",
"act-withBoardTitle": "__board__ [Wekan]",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "__card__ [__board__] ",
"actions": "Acciones",
"activities": "Actividades",
"activity": "Actividad",
"activity-added": "agregadas %s a %s",
"activity-archived": "%s movido a Papelera de Reciclaje",
"activity-archived": "%s moved to Archive",
"activity-attached": "adjuntadas %s a %s",
"activity-created": "creadas %s",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "enviadas %s a %s",
"activity-unjoined": "separadas %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "agregada lista de tareas a %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "agregado item de lista de tareas a '%s' en %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Agregar",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Agregar Adjunto",
"add-board": "Agregar Tablero",
"add-card": "Agregar Tarjeta",
@@ -68,20 +78,20 @@
"and-n-other-card": "Y __count__ otra tarjeta",
"and-n-other-card_plural": "Y __count__ otras tarjetas",
"apply": "Aplicar",
"app-is-offline": "Wekan está cargándose, por favor espere. Refrescar la página va a causar pérdida de datos. Si Wekan no se carga, por favor revise que el servidor de Wekan no se haya detenido.",
"archive": "Mover a Papelera de Reciclaje",
"archive-all": "Mover Todo a la Papelera de Reciclaje",
"archive-board": "Mover Tablero a la Papelera de Reciclaje",
"archive-card": "Mover Tarjeta a la Papelera de Reciclaje",
"archive-list": "Mover Lista a la Papelera de Reciclaje",
"archive-swimlane": "Mover Calle a la Papelera de Reciclaje",
"archive-selection": "Mover selección a la Papelera de Reciclaje",
"archiveBoardPopup-title": "¿Mover Tablero a la Papelera de Reciclaje?",
"archived-items": "Papelera de Reciclaje",
"archived-boards": "Tableros en la Papelera de Reciclaje",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Archivar",
"archived-boards": "Boards in Archive",
"restore-board": "Restaurar Tablero",
"no-archived-boards": "No hay tableros en la Papelera de Reciclaje",
"archives": "Papelera de Reciclaje",
"no-archived-boards": "No Boards in Archive.",
"archives": "Archivar",
"assign-member": "Asignar miembro",
"attached": "adjunto(s)",
"attachment": "Adjunto",
@@ -108,12 +118,12 @@
"board-view-lists": "Listas",
"bucket-example": "Como \"Lista de Contenedores\" por ejemplo",
"cancel": "Cancelar",
"card-archived": "Esta tarjeta es movida a la Papelera de Reciclaje",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "Esta tarjeta tiene %s comentario.",
"card-delete-notice": "Borrar es permanente. Perderás todas las acciones asociadas con esta tarjeta.",
"card-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podrás re-abrir la tarjeta. No hay deshacer.",
"card-delete-suggest-archive": "Tu puedes mover una tarjeta a la Papelera de Reciclaje para removerla del tablero y preservar la actividad.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Vence",
"card-due-on": "Vence en",
"card-spent": "Tiempo Empleado",
@@ -156,17 +166,33 @@
"clipboard": "Portapapeles o arrastrar y soltar",
"close": "Cerrar",
"close-board": "Cerrar Tablero",
"close-board-pop": "Podrás restaurar el tablero apretando el botón \"Papelera de Reciclaje\" del encabezado en inicio.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "negro",
"color-blue": "azul",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verde",
"color-indigo": "indigo",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "naranja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "púrpura",
"color-red": "rojo",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "cielo",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "amarillo",
"unset-color": "Unset",
"comment": "Comentario",
"comment-placeholder": "Comentar",
"comment-only": "Comentar solamente",
@@ -273,18 +299,20 @@
"import-board": "importar tablero",
"import-board-c": "Importar tablero",
"import-board-title-trello": "Importar tablero de Trello",
"import-board-title-wekan": "Importar tablero de Wekan",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "El tablero importado va a borrar todos los datos existentes en el tablero y reemplazarlos con los del tablero en cuestión.",
"from-trello": "De Trello",
"from-wekan": "De Wekan",
"from-wekan": "From previous export",
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.",
"import-board-instruction-wekan": "En tu tablero Wekan, ve a 'Menú', luego a 'Exportar tablero', y copia el texto en el archivo descargado.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Pegá tus datos JSON válidos acá",
"import-map-members": "Mapear Miembros",
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor mapeá los miembros que quieras importar/convertir a usuarios de Wekan.",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Revisar mapeo de miembros",
"import-user-select": "Elegí el usuario de Wekan que querés usar como éste miembro",
"importMapMembersAddPopup-title": "Elegí el miembro de Wekan.",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Versión",
"initials": "Iniciales",
"invalid-date": "Fecha inválida",
@@ -303,17 +331,19 @@
"leave-board-pop": "¿Estás seguro que querés dejar __boardTitle__? Vas a salir de todas las tarjetas en este tablero.",
"leaveBoardPopup-title": "¿Dejar Tablero?",
"link-card": "Enlace a esta tarjeta",
"list-archive-cards": "Mover todas las tarjetas en esta lista a la Papelera de Reciclaje",
"list-archive-cards-pop": "Esto va a remover las tarjetas en esta lista del tablero. Para ver tarjetas en la Papelera de Reciclaje y traerlas de vuelta al tablero, clickeá \"Menú\" > \"Papelera de Reciclaje\".",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Mueve todas las tarjetas en esta lista",
"list-select-cards": "Selecciona todas las tarjetas en esta lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Listar Acciones",
"swimlaneActionPopup-title": "Acciones de la Calle",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importar una tarjeta Trello",
"listMorePopup-title": "Mas",
"link-list": "Enlace a esta lista",
"list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.",
"list-delete-suggest-archive": "Podés mover la lista a la Papelera de Reciclaje para remvoerla del tablero y preservar la actividad.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Listas",
"swimlanes": "Calles",
"log-out": "Salir",
@@ -333,9 +363,9 @@
"muted-info": "No serás notificado de ningún cambio en este tablero",
"my-boards": "Mis Tableros",
"name": "Nombre",
"no-archived-cards": "No hay tarjetas en la Papelera de Reciclaje",
"no-archived-lists": "No hay listas en la Papelera de Reciclaje",
"no-archived-swimlanes": "No hay calles en la Papelera de Reciclaje",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "No hay resultados",
"normal": "Normal",
"normal-desc": "Puede ver y editar tarjetas. No puede cambiar opciones.",
@@ -371,6 +401,7 @@
"restore": "Restaurar",
"save": "Grabar",
"search": "Buscar",
"rules": "Rules",
"search-cards": "Buscar en títulos y descripciones de tarjeta en este tablero",
"search-example": "¿Texto a buscar?",
"select-color": "Seleccionar Color",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Cargado un avatar",
"username": "Nombre de usuario",
"view-it": "Verlo",
"warn-list-archived": "cuidado; esta tarjeta está en la Papelera de Reciclaje",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Seguir",
"watching": "Siguiendo",
"watching-info": "Serás notificado de cualquier cambio en este tablero",
@@ -447,16 +478,16 @@
"send-smtp-test": "Enviarse un email de prueba",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ te envió una invitación",
"email-invite-register-text": "Querido __user__,\n\n__inviter__ te invita a Wekan para colaborar.\n\nPor favor sigue el enlace de abajo:\n__url__\n\nI tu código de invitación es: __icode__\n\nGracias.",
"email-smtp-test-subject": "Email de Prueba SMTP de Wekan",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "Enviaste el correo correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado para ver esta página.",
"outgoing-webhooks": "Ganchos Web Salientes",
"outgoingWebhooksPopup-title": "Ganchos Web Salientes",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "Nuevo Gancho Web",
"no-name": "(desconocido)",
"Wekan_version": "Versión de Wekan",
"Node_version": "Versión de Node",
"OS_Arch": "Arch del SO",
"OS_Cpus": "Cantidad de CPU del SO",
@@ -467,10 +498,13 @@
"OS_Totalmem": "Memoria Total del SO",
"OS_Type": "Tipo de SO",
"OS_Uptime": "Tiempo encendido del SO",
"days": "days",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Si",
"no": "No",
"accounts": "Cuentas",
@@ -485,6 +519,10 @@
"card-end-on": "Termina en",
"editCardReceivedDatePopup-title": "Cambiar fecha de recepción",
"editCardEndDatePopup-title": "Cambiar fecha de término",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Agregar",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
+195 -43
View File
@@ -1,6 +1,6 @@
{
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Notificación de actividad",
"act-activity-notify": "Notificación de actividad",
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
"act-addSubtask": "ha añadido la subtarea __checklist__ a __card__",
"act-addChecklist": "ha añadido la lista de verificación __checklist__ a __card__",
@@ -11,10 +11,10 @@
"act-createCustomField": "creado el campo personalizado __customField__",
"act-createList": "ha añadido __list__ a __board__",
"act-addBoardMember": "ha añadido a __member__ a __board__",
"act-archivedBoard": "__board__ se ha enviado a la papelera de reciclaje",
"act-archivedCard": "__card__ se ha enviado a la papelera de reciclaje",
"act-archivedList": "__list__ se ha enviado a la papelera de reciclaje",
"act-archivedSwimlane": "__swimlane__ se ha enviado a la papelera de reciclaje",
"act-archivedBoard": "__board__ movido al Archivo",
"act-archivedCard": "__card__ movida al Archivo",
"act-archivedList": "__list__ movida a Archivo",
"act-archivedSwimlane": "__swimlane__ movido a Archivo",
"act-importBoard": "ha importado __board__",
"act-importCard": "ha importado __card__",
"act-importList": "ha importado __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "ha eliminado a __member__ de __board__",
"act-restoredCard": "ha restaurado __card__ en __board__",
"act-unjoinMember": "ha eliminado a __member__ de __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Acciones",
"activities": "Actividades",
"activity": "Actividad",
"activity-added": "ha añadido %s a %s",
"activity-archived": "%s se ha enviado a la papelera de reciclaje",
"activity-archived": "%s movido a Archivo",
"activity-attached": "ha adjuntado %s a %s",
"activity-created": "ha creado %s",
"activity-customfield-created": "creado el campo personalizado %s",
@@ -43,9 +43,19 @@
"activity-sent": "ha enviado %s a %s",
"activity-unjoined": "se ha desvinculado de %s",
"activity-subtask-added": "ha añadido la subtarea a %s",
"activity-checked-item": "marcado %s en la lista de verificación %s de %s",
"activity-unchecked-item": "desmarcado %s en lista %s de %s",
"activity-checklist-added": "ha añadido una lista de verificación a %s",
"activity-checklist-removed": "eliminada una lista de verificación desde %s ",
"activity-checklist-completed": "completada la lista %s de %s",
"activity-checklist-uncompleted": "no completado la lista %s de %s",
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
"activity-checklist-item-removed": "eliminado un elemento de la lista de verificación desde '%s' en %s",
"add": "Añadir",
"activity-checked-item-card": "marcado %s en la lista de verificación %s",
"activity-unchecked-item-card": "desmarcado %s en la lista de verificación %s",
"activity-checklist-completed-card": "completó la lista de verificación %s",
"activity-checklist-uncompleted-card": "no completó la lista de verificación %s",
"add-attachment": "Añadir adjunto",
"add-board": "Añadir tablero",
"add-card": "Añadir una tarjeta",
@@ -68,20 +78,20 @@
"and-n-other-card": "y __count__ tarjeta más",
"and-n-other-card_plural": "y otras __count__ tarjetas",
"apply": "Aplicar",
"app-is-offline": "Wekan se está cargando, por favor espere. Actualizar la página provocará la pérdida de datos. Si Wekan no se carga, por favor verifique que el servidor de Wekan no está detenido.",
"archive": "Enviar a la papelera de reciclaje",
"archive-all": "Enviar todo a la papelera de reciclaje",
"archive-board": "Enviar el tablero a la papelera de reciclaje",
"archive-card": "Enviar la tarjeta a la papelera de reciclaje",
"archive-list": "Enviar la lista a la papelera de reciclaje",
"archive-swimlane": "Enviar el carril de flujo a la papelera de reciclaje",
"archive-selection": "Enviar la selección a la papelera de reciclaje",
"archiveBoardPopup-title": "Enviar el tablero a la papelera de reciclaje",
"archived-items": "Papelera de reciclaje",
"archived-boards": "Tableros en la papelera de reciclaje",
"app-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
"archive": "Mover al Archivo",
"archive-all": "Mover todo al Archivo",
"archive-board": "Mover Tablero al Archivo",
"archive-card": "Mover tarjeta al Archivo",
"archive-list": "Mover Lista al Archivo",
"archive-swimlane": "Mover carril al Archivo",
"archive-selection": "Mover selección al Archivo",
"archiveBoardPopup-title": "¿Mover Tablero al Archivo?",
"archived-items": "Archivar",
"archived-boards": "Tableros en Archivo",
"restore-board": "Restaurar el tablero",
"no-archived-boards": "No hay tableros en la papelera de reciclaje",
"archives": "Papelera de reciclaje",
"no-archived-boards": "No hay Tableros en el Archivo",
"archives": "Archivar",
"assign-member": "Asignar miembros",
"attached": "adjuntado",
"attachment": "Adjunto",
@@ -108,12 +118,12 @@
"board-view-lists": "Listas",
"bucket-example": "Como “Cosas por hacer” por ejemplo",
"cancel": "Cancelar",
"card-archived": "Esta tarjeta se ha enviado a la papelera de reciclaje.",
"board-archived": "Este tablero se ha enviado a la papelera de reciclaje.",
"card-archived": "Esta tarjeta se movió al Archivo",
"board-archived": "Este tablero se movió al Archivo",
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
"card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
"card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
"card-delete-suggest-archive": "Puedes enviar una tarjeta a la papelera de reciclaje para eliminarla del tablero y conservar la actividad.",
"card-delete-suggest-archive": "Puedes mover una tarjeta al Archivo para quitarla del tablero y preservar la actividad.",
"card-due": "Vence",
"card-due-on": "Vence el",
"card-spent": "Tiempo consumido",
@@ -156,23 +166,39 @@
"clipboard": "el portapapeles o con arrastrar y soltar",
"close": "Cerrar",
"close-board": "Cerrar el tablero",
"close-board-pop": "Podrás restaurar el tablero haciendo clic en el botón \"Papelera de reciclaje\" en la cabecera.",
"close-board-pop": "Podrás restaurar el tablero haciendo clic en el botón \"Archivo\" del encabezado de la pantalla inicial.",
"color-black": "negra",
"color-blue": "azul",
"color-crimson": "carmesí",
"color-darkgreen": "verde oscuro",
"color-gold": "oro",
"color-gray": "gris",
"color-green": "verde",
"color-indigo": "añil",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "rosa claro",
"color-navy": "azul marino",
"color-orange": "naranja",
"color-paleturquoise": "turquesa",
"color-peachpuff": "melocotón",
"color-pink": "rosa",
"color-plum": "púrpura",
"color-purple": "violeta",
"color-red": "roja",
"color-saddlebrown": "marrón",
"color-silver": "plata",
"color-sky": "celeste",
"color-slateblue": "azul",
"color-white": "blanco",
"color-yellow": "amarilla",
"unset-color": "Unset",
"comment": "Comentar",
"comment-placeholder": "Escribir comentario",
"comment-only": "Sólo comentarios",
"comment-only-desc": "Solo puedes comentar en las tarjetas.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"no-comments": "No hay comentarios",
"no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
"computer": "el ordenador",
"confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
"confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
@@ -273,18 +299,20 @@
"import-board": "importar un tablero",
"import-board-c": "Importar un tablero",
"import-board-title-trello": "Importar un tablero desde Trello",
"import-board-title-wekan": "Importar un tablero desde Wekan",
"import-board-title-wekan": "Importar tablero desde una exportación previa",
"import-sandstorm-backup-warning": "No elimine los datos que está importando del tablero o Trello original antes de verificar que la semilla pueda cerrarse y abrirse nuevamente, o que ocurra un error de \"Tablero no encontrado\", de lo contrario perderá sus datos.",
"import-sandstorm-warning": "El tablero importado eliminará todos los datos existentes en este tablero y los reemplazará con los datos del tablero importado.",
"from-trello": "Desde Trello",
"from-wekan": "Desde Wekan",
"from-wekan": "Desde exportación previa",
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
"import-board-instruction-wekan": "En tu tablero de Wekan, ve a 'Menú del tablero', luego 'Exportar el tablero', y copia aquí el texto del fichero descargado.",
"import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
"import-board-instruction-about-errors": "Si obtiene errores cuando importe el tablero, a veces la importación funciona igualmente, y el tablero se encuentra en la página de Todos los Tableros.",
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
"import-map-members": "Mapa de miembros",
"import-members-map": "El tablero importado tiene algunos miembros. Por favor mapea los miembros que deseas importar a los usuarios de Wekan",
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
"import-show-user-mapping": "Revisión de la asignación de miembros",
"import-user-select": "Escoge el usuario de Wekan que deseas utilizar como miembro",
"importMapMembersAddPopup-title": "Selecciona un miembro de Wekan",
"import-user-select": "Selecciona el miembro existe que quieres usar como este miembro.",
"importMapMembersAddPopup-title": "Seleccionar miembro",
"info": "Versión",
"initials": "Iniciales",
"invalid-date": "Fecha no válida",
@@ -303,17 +331,19 @@
"leave-board-pop": "¿Seguro que quieres abandonar __boardTitle__? Serás desvinculado de todas las tarjetas en este tablero.",
"leaveBoardPopup-title": "¿Abandonar el tablero?",
"link-card": "Enlazar a esta tarjeta",
"list-archive-cards": "Enviar todas las tarjetas de esta lista a la papelera de reciclaje",
"list-archive-cards-pop": "Esto eliminará todas las tarjetas de esta lista del tablero. Para ver las tarjetas en la papelera de reciclaje y devolverlas al tablero, haga clic en \"Menú\" > \"Papelera de reciclaje\".",
"list-archive-cards": "Mover todas las tarjetas de la lista al Archivo",
"list-archive-cards-pop": "Esto eliminará del tablero todas las tarjetas en esta lista. Para ver las tarjetas en el Archivo y recuperarlas al tablero haga click en \"Menu\" > \"Archivo\"",
"list-move-cards": "Mover todas las tarjetas de esta lista",
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Acciones de la lista",
"swimlaneActionPopup-title": "Acciones del carril de flujo",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importar una tarjeta de Trello",
"listMorePopup-title": "Más",
"link-list": "Enlazar a esta lista",
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
"list-delete-suggest-archive": "Puedes enviar una lista a la papelera de reciclaje para eliminarla del tablero y conservar la actividad.",
"list-delete-suggest-archive": "Puedes mover una lista al Archivo para quitarla del tablero y preservar la actividad.",
"lists": "Listas",
"swimlanes": "Carriles",
"log-out": "Finalizar la sesión",
@@ -333,9 +363,9 @@
"muted-info": "No serás notificado de ningún cambio en este tablero",
"my-boards": "Mis tableros",
"name": "Nombre",
"no-archived-cards": "No hay tarjetas en la papelera de reciclaje",
"no-archived-lists": "No hay listas en la papelera de reciclaje",
"no-archived-swimlanes": "No hay carriles de flujo en la papelera de reciclaje",
"no-archived-cards": "No hay tarjetas en el Archivo",
"no-archived-lists": "No hay listas en el Archivo",
"no-archived-swimlanes": "No hay carriles en el Archivo",
"no-results": "Sin resultados",
"normal": "Normal",
"normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
@@ -371,6 +401,7 @@
"restore": "Restaurar",
"save": "Añadir",
"search": "Buscar",
"rules": "Reglas",
"search-cards": "Buscar entre los títulos y las descripciones de las tarjetas en este tablero.",
"search-example": "¿Texto a buscar?",
"select-color": "Selecciona un color",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Avatar cargado",
"username": "Nombre de usuario",
"view-it": "Verla",
"warn-list-archived": "advertencia: esta tarjeta está en una lista en la papelera de reciclaje",
"warn-list-archived": "advertencia: esta tarjeta está en una lista en el Archivo",
"watch": "Vigilar",
"watching": "Vigilando",
"watching-info": "Serás notificado de cualquier cambio en este tablero",
@@ -447,16 +478,16 @@
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
"invitation-code": "Código de Invitación",
"email-invite-register-subject": "__inviter__ te ha enviado una invitación",
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ te invita a unirte a Wekan para colaborar.\n\nPor favor, haz clic en el siguiente enlace:\n__url__\n\nTu código de invitación es: __icode__\n\nGracias.",
"email-smtp-test-subject": "Prueba de correo SMTP desde Wekan",
"email-invite-register-text": "Querido __user__,\n__inviter__ le invita al tablero kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY tu código de invitación es: __icode__\n\nGracias.",
"email-smtp-test-subject": "Prueba de email SMTP",
"email-smtp-test-text": "El correo se ha enviado correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado a ver esta página.",
"outgoing-webhooks": "Webhooks salientes",
"outgoingWebhooksPopup-title": "Webhooks salientes",
"boardCardTitlePopup-title": "Filtro de títulos de tarjeta ",
"new-outgoing-webhook": "Nuevo webhook saliente",
"no-name": "(Desconocido)",
"Wekan_version": "Versión de Wekan",
"Node_version": "Versión de Node",
"OS_Arch": "Arquitectura del sistema",
"OS_Cpus": "Número de CPUs del sistema",
@@ -467,10 +498,13 @@
"OS_Totalmem": "Memoria Total del sistema",
"OS_Type": "Tipo de sistema",
"OS_Uptime": "Tiempo activo del sistema",
"days": "días",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo en la tarjeta",
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
"yes": "Sí",
"no": "No",
"accounts": "Cuentas",
@@ -485,6 +519,10 @@
"card-end-on": "Finalizado el",
"editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
"editCardEndDatePopup-title": "Cambiar la fecha de finalización",
"setCardColorPopup-title": "Cambiar color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Asignado por",
"requested-by": "Solicitado por",
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
@@ -507,5 +545,119 @@
"change-card-parent": "Cambiar la tarjeta padre",
"parent-card": "Tarjeta padre",
"source-board": "Tablero de origen",
"no-parent": "No mostrar la tarjeta padre"
"no-parent": "No mostrar la tarjeta padre",
"activity-added-label": "añadida etiqueta %s a %s",
"activity-removed-label": "eliminada etiqueta '%s' desde %s",
"activity-delete-attach": "borrado un adjunto desde %s",
"activity-added-label-card": "añadida etiqueta '%s'",
"activity-removed-label-card": "eliminada etiqueta '%s'",
"activity-delete-attach-card": "borrado un adjunto",
"r-rule": "Regla",
"r-add-trigger": "Añadir disparador",
"r-add-action": "Añadir acción",
"r-board-rules": "Reglas del tablero",
"r-add-rule": "Añadir regla",
"r-view-rule": "Ver regla",
"r-delete-rule": "Eliminar regla",
"r-new-rule-name": "Nueva título de regla",
"r-no-rules": "No hay reglas",
"r-when-a-card": "Cuando una tarjeta",
"r-is": "es",
"r-is-moved": "es movida",
"r-added-to": "es agregada a",
"r-removed-from": "Eliminado de",
"r-the-board": "el tablero",
"r-list": "lista",
"set-filter": "Filtrar",
"r-moved-to": "Movido a",
"r-moved-from": "Movido desde",
"r-archived": "Movido a Archivo",
"r-unarchived": "Restaurado del archivo",
"r-a-card": "una tarjeta",
"r-when-a-label-is": "Cuando una etiqueta es",
"r-when-the-label-is": "Cuando la etiqueta es",
"r-list-name": "Nombre de lista",
"r-when-a-member": "Cuando un miembro es",
"r-when-the-member": "Cuando el miembro",
"r-name": "nombre",
"r-when-a-attach": "Cuando un adjunto",
"r-when-a-checklist": "Cuando una lista de verificación es",
"r-when-the-checklist": "Cuando la lista de verificación",
"r-completed": "Completada",
"r-made-incomplete": "Hecha incompleta",
"r-when-a-item": "Cuando un elemento de la lista de verificación es",
"r-when-the-item": "Cuando el elemento de la lista de verificación es",
"r-checked": "Marcado",
"r-unchecked": "Desmarcado",
"r-move-card-to": "Mover tarjeta a",
"r-top-of": "Arriba de",
"r-bottom-of": "Abajo de",
"r-its-list": "su lista",
"r-archive": "Mover al Archivo",
"r-unarchive": "Restaurar del Archivo",
"r-card": "tarjeta",
"r-add": "Añadir",
"r-remove": "Eliminar",
"r-label": "etiqueta",
"r-member": "miembro",
"r-remove-all": "Eliminar todos los miembros de la tarjeta",
"r-set-color": "Cambiar color a",
"r-checklist": "lista de verificación",
"r-check-all": "Marcar todo",
"r-uncheck-all": "Desmarcar todo",
"r-items-check": "elementos de la lista de verificación",
"r-check": "Marcar",
"r-uncheck": "Desmarcar",
"r-item": "elemento",
"r-of-checklist": "de la lista de verificación",
"r-send-email": "Enviar un email",
"r-to": "a",
"r-subject": "asunto",
"r-rule-details": "Detalle de la regla",
"r-d-move-to-top-gen": "Mover tarjeta arriba de su lista",
"r-d-move-to-top-spec": "Mover tarjeta arriba de la lista",
"r-d-move-to-bottom-gen": "Mover tarjeta abajo de su lista",
"r-d-move-to-bottom-spec": "Mover tarjeta al fondo de la lista",
"r-d-send-email": "Enviar email",
"r-d-send-email-to": "a",
"r-d-send-email-subject": "asunto",
"r-d-send-email-message": "mensaje",
"r-d-archive": "Mover tarjeta al Archivo",
"r-d-unarchive": "Restaurar tarjeta del Archivo",
"r-d-add-label": "Añadir etiqueta",
"r-d-remove-label": "Eliminar etiqueta",
"r-create-card": "Crear nueva tarjeta",
"r-in-list": "en la lista",
"r-in-swimlane": "en carril ",
"r-d-add-member": "Añadir miembro",
"r-d-remove-member": "Eliminar miembro",
"r-d-remove-all-member": "Eliminar todos los miembros",
"r-d-check-all": "Marcar todos los elementos de una lista",
"r-d-uncheck-all": "Desmarcar todos los elementos de una lista",
"r-d-check-one": "Marcar elemento",
"r-d-uncheck-one": "Desmarcar elemento",
"r-d-check-of-list": "de la lista de verificación",
"r-d-add-checklist": "Añadir una lista de verificación",
"r-d-remove-checklist": "Eliminar lista de verificación",
"r-by": "por",
"r-add-checklist": "Añadir una lista de verificación",
"r-with-items": "con items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Agregar carril",
"r-swimlane-name": "nombre del carril",
"r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
"r-checklist-note": "Nota: los ítems de la lista tienen que escribirse como valores separados por coma.",
"r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Método de autenticación",
"authentication-type": "Tipo de autenticación",
"custom-product-name": "Nombre de producto personalizado",
"layout": "Disñeo",
"hide-logo": "Ocultar logo",
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body> ",
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
"error-undefined": "Algo no está bien",
"error-ldap-login": "Ocurrió un error al intentar acceder"
}
+193 -41
View File
@@ -1,6 +1,6 @@
{
"accept": "Onartu",
"act-activity-notify": "[Wekan] Jarduera-jakinarazpena",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "__attachment__ __card__ txartelera erantsita",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "gehituta checklist __checklist__ __card__ -ri",
@@ -11,10 +11,10 @@
"act-createCustomField": "created custom field __customField__",
"act-createList": "__list__ __board__ arbelera gehituta",
"act-addBoardMember": "__member__ __board__ arbelera gehituta",
"act-archivedBoard": "__board__ moved to Recycle Bin",
"act-archivedCard": "__card__ moved to Recycle Bin",
"act-archivedList": "__list__ moved to Recycle Bin",
"act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "__board__ inportatuta",
"act-importCard": "__card__ inportatuta",
"act-importList": "__list__ inportatuta",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "__member__ __board__ arbeletik kendu da",
"act-restoredCard": "__card__ __board__ arbelean berrezarri da",
"act-unjoinMember": "__member__ __card__ txarteletik kendu da",
"act-withBoardTitle": "[Wekan] __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Ekintzak",
"activities": "Jarduerak",
"activity": "Jarduera",
"activity-added": "%s %s(e)ra gehituta",
"activity-archived": "%s moved to Recycle Bin",
"activity-archived": "%s moved to Archive",
"activity-attached": "%s %s(e)ra erantsita",
"activity-created": "%s sortuta",
"activity-customfield-created": "created custom field %s",
@@ -43,9 +43,19 @@
"activity-sent": "%s %s(e)ri bidalita",
"activity-unjoined": "%s utzita",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "egiaztaketa zerrenda %s(e)ra gehituta",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "egiaztaketa zerrendako elementuak '%s'(e)ra gehituta %s(e)n",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Gehitu",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Gehitu eranskina",
"add-board": "Gehitu arbela",
"add-card": "Gehitu txartela",
@@ -68,20 +78,20 @@
"and-n-other-card": "Eta beste txartel __count__",
"and-n-other-card_plural": "Eta beste __count__ txartel",
"apply": "Aplikatu",
"app-is-offline": "Wekan kargatzen ari da, itxaron mesedez. Orria freskatzeak datuen galera ekarriko luke. Wekan kargatzen ez bada, egiaztatu Wekan zerbitzaria gelditu ez dela.",
"archive": "Move to Recycle Bin",
"archive-all": "Move All to Recycle Bin",
"archive-board": "Move Board to Recycle Bin",
"archive-card": "Move Card to Recycle Bin",
"archive-list": "Move List to Recycle Bin",
"archive-swimlane": "Move Swimlane to Recycle Bin",
"archive-selection": "Move selection to Recycle Bin",
"archiveBoardPopup-title": "Move Board to Recycle Bin?",
"archived-items": "Recycle Bin",
"archived-boards": "Boards in Recycle Bin",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Artxibatu",
"archived-boards": "Boards in Archive",
"restore-board": "Berreskuratu arbela",
"no-archived-boards": "No Boards in Recycle Bin.",
"archives": "Recycle Bin",
"no-archived-boards": "No Boards in Archive.",
"archives": "Artxibatu",
"assign-member": "Esleitu kidea",
"attached": "erantsita",
"attachment": "Eranskina",
@@ -108,12 +118,12 @@
"board-view-lists": "Zerrendak",
"bucket-example": "Esaterako \"Pertz zerrenda\"",
"cancel": "Utzi",
"card-archived": "This card is moved to Recycle Bin.",
"board-archived": "This board is moved to Recycle Bin.",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "Txartel honek iruzkin %s dauka.",
"card-delete-notice": "Ezabaketa behin betiko da. Txartel honi lotutako ekintza guztiak galduko dituzu.",
"card-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu txartela berrireki. Ez dago desegiterik.",
"card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Epemuga",
"card-due-on": "Epemuga",
"card-spent": "Erabilitako denbora",
@@ -156,17 +166,33 @@
"clipboard": "Kopiatu eta itsatsi edo arrastatu eta jaregin",
"close": "Itxi",
"close-board": "Itxi arbela",
"close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "beltza",
"color-blue": "urdina",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "berdea",
"color-indigo": "indigo",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "laranja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "larrosa",
"color-plum": "plum",
"color-purple": "purpura",
"color-red": "gorria",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "zerua",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "horia",
"unset-color": "Unset",
"comment": "Iruzkina",
"comment-placeholder": "Idatzi iruzkin bat",
"comment-only": "Iruzkinak besterik ez",
@@ -273,18 +299,20 @@
"import-board": "inportatu arbela",
"import-board-c": "Inportatu arbela",
"import-board-title-trello": "Inportatu arbela Trellotik",
"import-board-title-wekan": "Inportatu arbela Wekanetik",
"import-board-title-wekan": "Import board from previous export",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-warning": "Inportatutako arbelak oraingo arbeleko informazio guztia ezabatuko du eta inportatutako arbeleko informazioarekin ordeztu.",
"from-trello": "Trellotik",
"from-wekan": "Wekanetik",
"from-wekan": "From previous export",
"import-board-instruction-trello": "Zure Trello arbelean, aukeratu 'Menu\", 'More', 'Print and Export', 'Export JSON', eta kopiatu jasotako testua hemen.",
"import-board-instruction-wekan": "Zure Wekan arbelean, aukeratu 'Menua' - 'Esportatu arbela', eta kopiatu testua deskargatutako fitxategian.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Isatsi baliozko JSON datuak hemen",
"import-map-members": "Kideen mapa",
"import-members-map": "Inportatu duzun arbela kide batzuk ditu, mesedez lotu inportatu nahi dituzun kideak Wekan erabiltzaileekin",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Berrikusi kideen mapa",
"import-user-select": "Hautatu kide hau bezala erabili nahi duzun Wekan erabiltzailea",
"importMapMembersAddPopup-title": "Aukeratu Wekan kidea",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Bertsioa",
"initials": "Inizialak",
"invalid-date": "Baliogabeko data",
@@ -303,17 +331,19 @@
"leave-board-pop": "Ziur zaude __boardTitle__ utzi nahi duzula? Arbel honetako txartel guztietatik ezabatua izango zara.",
"leaveBoardPopup-title": "Arbela utzi?",
"link-card": "Lotura txartel honetara",
"list-archive-cards": "Move all cards in this list to Recycle Bin",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Lekuz aldatu zerrendako txartel guztiak",
"list-select-cards": "Aukeratu zerrenda honetako txartel guztiak",
"set-color-list": "Set Color",
"listActionPopup-title": "Zerrendaren ekintzak",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Inportatu Trello txartel bat",
"listMorePopup-title": "Gehiago",
"link-list": "Lotura zerrenda honetara",
"list-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu zerrenda berreskuratu. Ez dago desegiterik.",
"list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"lists": "Zerrendak",
"swimlanes": "Swimlanes",
"log-out": "Itxi saioa",
@@ -333,9 +363,9 @@
"muted-info": "Ez zaizkizu jakinaraziko arbel honi egindako aldaketak",
"my-boards": "Nire arbelak",
"name": "Izena",
"no-archived-cards": "No cards in Recycle Bin.",
"no-archived-lists": "No lists in Recycle Bin.",
"no-archived-swimlanes": "No swimlanes in Recycle Bin.",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Emaitzarik ez",
"normal": "Arrunta",
"normal-desc": "Txartelak ikusi eta editatu ditzake. Ezin ditu ezarpenak aldatu.",
@@ -371,6 +401,7 @@
"restore": "Berrezarri",
"save": "Gorde",
"search": "Bilatu",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Aukeratu kolorea",
@@ -414,7 +445,7 @@
"uploaded-avatar": "Avatar bat igo da",
"username": "Erabiltzaile-izena",
"view-it": "Ikusi",
"warn-list-archived": "warning: this card is in an list at Recycle Bin",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Ikuskatu",
"watching": "Ikuskatzen",
"watching-info": "Arbel honi egindako aldaketak jakinaraziko zaizkizu",
@@ -447,16 +478,16 @@
"send-smtp-test": "Bidali posta elektroniko mezu bat zure buruari",
"invitation-code": "Gonbidapen kodea",
"email-invite-register-subject": "__inviter__ erabiltzaileak gonbidapen bat bidali dizu",
"email-invite-register-text": "Kaixo __user__,\n\n__inviter__ erabiltzaileak Wekanera gonbidatu zaitu elkar-lanean aritzeko.\n\nJarraitu mesedez lotura hau:\n__url__\n\nZure gonbidapen kodea hau da: __icode__\n\nEskerrik asko.",
"email-smtp-test-subject": "Wekan-etik bidalitako test-mezua",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "Arrakastaz bidali duzu posta elektroniko mezua",
"error-invitation-code-not-exist": "Gonbidapen kodea ez da existitzen",
"error-notAuthorized": "Ez duzu orri hau ikusteko baimenik.",
"outgoing-webhooks": "Irteerako Webhook-ak",
"outgoingWebhooksPopup-title": "Irteerako Webhook-ak",
"boardCardTitlePopup-title": "Card Title Filter",
"new-outgoing-webhook": "Irteera-webhook berria",
"no-name": "(Ezezaguna)",
"Wekan_version": "Wekan bertsioa",
"Node_version": "Nodo bertsioa",
"OS_Arch": "SE Arkitektura",
"OS_Cpus": "SE PUZ kopurua",
@@ -467,10 +498,13 @@
"OS_Totalmem": "SE memoria guztira",
"OS_Type": "SE mota",
"OS_Uptime": "SE denbora abiatuta",
"days": "days",
"hours": "ordu",
"minutes": "minutu",
"seconds": "segundo",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Bai",
"no": "Ez",
"accounts": "Kontuak",
@@ -485,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -507,5 +545,119 @@
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"source-board": "Source board",
"no-parent": "Don't show parent"
"no-parent": "Don't show parent",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
"r-completed": "Completed",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Gehitu",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-d-add-member": "Add member",
"r-d-remove-member": "Remove member",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
}
Loaded 100 of 215 files, more files were not shown because too many files have changed in this diff. Show more