Compare commits

..

436 Commits

Author SHA1 Message Date
Julius Härtl
acc168e174 Merge pull request #384 from nextcloud/prepare-0.3.0
Prepare 0.3.0
2018-01-12 15:12:36 +01:00
Julius Härtl
6998a4a643 Fix jquery exclude
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 14:17:01 +01:00
Julius Härtl
2a6db83804 Bump version to 0.3.0 final and update CHANGELOG
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 10:31:16 +01:00
Julius Härtl
31e4d370c3 Exclude more files from build
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 10:28:04 +01:00
Julius Härtl
ce3e979452 Merge pull request #382 from nextcloud/small-prerelease-fixes
Small fixes
2018-01-12 10:16:53 +01:00
Nextcloud bot
4ec2ae2a61 [tx-robot] updated from transifex 2018-01-12 01:17:41 +00:00
Nextcloud bot
904eecd155 [tx-robot] updated from transifex 2018-01-11 01:17:43 +00:00
Julius Härtl
e70045f7d3 Hide "no actions" from current users avatar menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-10 10:54:12 +01:00
Julius Härtl
75f95db0b1 Fix undelete description not being translated
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-10 10:39:31 +01:00
Nextcloud bot
63d29ae533 [tx-robot] updated from transifex 2018-01-10 01:17:12 +00:00
Julius Härtl
59ac632d0e Merge pull request #377 from nextcloud/fix-label-style
Fix label style issue when list of labels is updated
2018-01-08 14:52:17 +01:00
Julius Härtl
b57e8e56fa Merge branch 'master' into fix-label-style 2018-01-08 14:38:42 +01:00
Julius Härtl
5b28365444 Merge pull request #376 from nextcloud/fix-avatar-stuff
Fix avatar issues
2018-01-08 14:38:05 +01:00
Julius Härtl
f55fb90cfa Fix label style issue when list of labels is updated
fixes #373

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 14:37:44 +01:00
Julius Härtl
c517dbdb77 Merge pull request #371 from nextcloud/minor-fixes
Various fixes
2018-01-08 13:44:46 +01:00
Julius Härtl
14d5af683e Show contacts menu for board owner
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 13:42:37 +01:00
Julius Härtl
e1e01c0e0d Unify avatar directive
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 13:35:49 +01:00
Julius Härtl
403629c91a Move unassign button to avatar menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 12:44:15 +01:00
Nextcloud bot
15d642efa4 [tx-robot] updated from transifex 2018-01-04 01:07:56 +00:00
Nextcloud bot
d3d888fb43 [tx-robot] updated from transifex 2017-12-31 01:07:33 +00:00
Nextcloud bot
5ac2b91542 [tx-robot] updated from transifex 2017-12-30 01:07:44 +00:00
Julius Härtl
de4e90b52e Check for undefined type when getting the acl string representation
fixes #367

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:40:31 +01:00
Julius Härtl
dc37dd2c60 Use separate object when editing card descriptions (fixes #369)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:37:57 +01:00
Julius Härtl
5d38f6a176 Fix board bullet opacity (fixes #364)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:20:21 +01:00
Julius Härtl
70d28ec376 Remove duplicate and unused id
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:16:29 +01:00
Julius Härtl
8cec7cb571 Check if board is undefined (fixes #366)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:16:08 +01:00
Nextcloud bot
52ac77ea90 [tx-robot] updated from transifex 2017-12-21 01:07:11 +00:00
Nextcloud bot
dd0c26b298 [tx-robot] updated from transifex 2017-12-19 01:07:09 +00:00
Julius Härtl
19dda17e71 Merge pull request #361 from nextcloud/prepare-0.3.0-beta1
Prepare 0.3.0 beta1
2017-12-17 19:36:27 +01:00
Julius Härtl
cd6f661dc9 Merge pull request #362 from nextcloud/php-7.2
Add drone test for php 7.2
2017-12-17 19:36:09 +01:00
Julius Härtl
5dcf52b489 Allow failure for stable12/php7.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 19:15:19 +01:00
Julius Härtl
ea5203049b Only test syntax of the app
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:56:10 +01:00
Julius Härtl
a388a04a06 Update drone matrix
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:45:08 +01:00
Julius Härtl
4393b44e0d Add php version to travis
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:34:36 +01:00
Julius Härtl
d3b34fc3f6 Add drone test for php 7.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:33:05 +01:00
Julius Härtl
cd81192cae Merge branch 'master' into prepare-0.3.0-beta1 2017-12-17 18:25:52 +01:00
Julius Härtl
d33cce3725 Fix remaining bug with save indicator
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:20:52 +01:00
Julius Härtl
5ffef2fd3a Fix section headers being shrinked
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:10:22 +01:00
Julius Härtl
d7da990a55 Fix small styling bugs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 18:00:16 +01:00
Julius Härtl
95f4e4b014 Update stack data after label update request has been processed
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 17:59:55 +01:00
Julius Härtl
66cfa72839 Remove apha warning
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 17:45:55 +01:00
Julius Härtl
f707bed675 Update changelog and krankerl exclude list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 17:45:02 +01:00
Julius Härtl
173b0f4756 Move building to krankerl
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 17:45:01 +01:00
Julius Härtl
2425018897 Bump version to 0.3.0-beta1
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-17 17:45:01 +01:00
Julius Härtl
415e5b5a1a Merge pull request #358 from nextcloud/add-tooltips
Add tooltips and support for contacts menu at avatars
2017-12-17 17:44:35 +01:00
Julius Härtl
eb0810de27 Merge pull request #359 from nextcloud/fix-autosave
Fix save indicator for description (fixes #354)
2017-12-17 17:44:23 +01:00
Julius Härtl
0af0124c12 Merge pull request #360 from nextcloud/stable12-fixes
Add breadcrumb flex css to keep styles correct on stable12
2017-12-17 17:44:06 +01:00
Julius Härtl
ebe3666b9f Add breadcrumb flex css to keep styles correct on stable12
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 17:36:32 +01:00
Julius Härtl
183c2665eb Show tooltip with displayname and add contactsmenu to avatars
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 17:07:30 +01:00
Julius Härtl
63da73600f Add tooltip to assigned users and info button
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 11:21:59 +01:00
Julius Härtl
253e60f88a Fix save indicator for description (fixes #354)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 10:48:02 +01:00
Julius Härtl
1d5ed11a8c Make the whole stack a drop target
fixes #307

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 10:47:48 +01:00
Julius Härtl
28208f168d Improve card positioning when dragging
fixes #307
fixes #236

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 10:47:48 +01:00
Julius Härtl
84502db00b Fix scrolling on mobile browsers
fixes #164

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-16 10:47:48 +01:00
Nextcloud bot
6d8afe6252 [tx-robot] updated from transifex 2017-12-15 14:53:55 +00:00
Nextcloud bot
d674abb7b6 [tx-robot] updated from transifex 2017-12-09 01:16:06 +00:00
Julius Härtl
7200e17d33 Fix some codestyle issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
1ace5de9e6 Make sure both board lists are initialized
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
5394d0f59b Do some cleanup
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
d386ab80d4 Fix eslint errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
9fa88cac6b Use settings icon in board list as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
827aceecda Adjust board header actions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
9cefecb45d Add share icon and archived view state to the breadcrumbs
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
a48169de18 Rework parameter handling, highlight active card and allow switching tabs in the board sidebar
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
fbf48e1be0 Fix color loading
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
c8d5f179be Adapt new breadcrumb layout
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
137f429cfa Fix tests for acl type
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
367873beaa Add avatars to share selection
fix #208

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
a8aab8d049 Move to numeric acl types
fixes #297

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
ef64dfc5a2 Fix bug when board list was not in sync when adding a new one
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-08 20:12:53 +01:00
Julius Härtl
7c552e9a52 Only send overdue notifications for unarchived cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-07 20:20:47 +01:00
Nextcloud bot
02724fd4eb [tx-robot] updated from transifex 2017-12-04 01:16:01 +00:00
Nextcloud bot
89643fb681 [tx-robot] updated from transifex 2017-12-01 01:16:14 +00:00
Julius Härtl
1b19ba2385 Propagate card update to StackService
fixes #203

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-29 23:05:43 +01:00
Nextcloud bot
8b9ae38303 [tx-robot] updated from transifex 2017-11-28 01:15:10 +00:00
Julius Härtl
175f47be5b Remove legacy css build and move scss imports to the top
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
8cfaca8a75 Fix overlooked rebasing error
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
03fc1fd0f2 Fix popover hiding
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
066f67ef7b Fix popovermenus on 13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
081b3520a0 CSS: restore variables that are not part of the server
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
8324410578 CSS: Move icons to separate file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
b3db3daf91 Add fix for nc<13 app menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
aa5e0a1d5e Move variables to legacy scss
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
c38039ad80 Fix menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
a9a5b6a52a Fix board updating reset
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
e1793b5c31 Performance optimizations in list template
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
f533f2bd80 Refactor boardlist loading process
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
35fc02734f Navigation: make editing work again
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius Härtl
91261f2e4e Frontend: Update app menu to fit new NC13 flex layout
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Nextcloud bot
c519e1b841 [tx-robot] updated from transifex 2017-11-19 01:14:54 +00:00
Nextcloud bot
8668a900b1 [tx-robot] updated from transifex 2017-11-18 01:15:45 +00:00
Nextcloud bot
4ca45a5629 [tx-robot] updated from transifex 2017-11-17 01:14:55 +00:00
Nextcloud bot
78020635c8 [tx-robot] updated from transifex 2017-11-14 01:14:49 +00:00
Julius Härtl
abc039a634 Fix issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-13 09:40:28 +01:00
Julius Härtl
afec4f211c eslint auto fix
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-13 09:40:28 +01:00
Julius Härtl
47b51c512d Add eslintrc
Signed-off-by: Julius Härtl <jus@bitgrid.net>

Make run-eslint.sh executable

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-13 09:40:28 +01:00
Julius Härtl
f8f755f31e Add eslint drone test
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-13 09:40:28 +01:00
Julius Härtl
a2adcf2487 Add default for injected value since out app container is not queried during update
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-11 12:05:46 +01:00
Nextcloud bot
650313254f [tx-robot] updated from transifex 2017-11-11 01:16:12 +00:00
Julius Härtl
5dd91f4261 Tests: remove NC11 from travis
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-10 11:13:47 +01:00
Julius Härtl
8499a28921 Drop support for NC11
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-10 11:13:47 +01:00
Nextcloud bot
c1bc287fe1 [tx-robot] updated from transifex 2017-11-10 01:15:37 +00:00
Nextcloud bot
68b3c0216d [tx-robot] updated from transifex 2017-11-08 01:14:39 +00:00
Nextcloud bot
58885f6598 [tx-robot] updated from transifex 2017-11-07 01:13:46 +00:00
Nextcloud bot
af3201b293 [tx-robot] updated from transifex 2017-11-05 01:13:35 +00:00
Jan-Christoph Borchardt
d2dde30098 Change style of add card buttons to be less distracting
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2017-11-03 15:05:45 +01:00
Nextcloud bot
10c836d864 [tx-robot] updated from transifex 2017-11-03 01:14:22 +00:00
Nextcloud bot
ff2503f857 [tx-robot] updated from transifex 2017-11-01 01:13:21 +00:00
Nextcloud bot
fcd5918686 [tx-robot] updated from transifex 2017-10-31 01:13:00 +00:00
Riccardo Padovani
8213b39949 Fix #308 - Document title doesn't update when renaming active board
Signed-off-by: Riccardo Padovani riccardo@rpadovani.com
2017-10-28 17:12:28 +02:00
Nextcloud bot
88474bb11b [tx-robot] updated from transifex 2017-10-27 00:12:59 +00:00
Nextcloud bot
546b71926a [tx-robot] updated from transifex 2017-10-26 00:13:13 +00:00
Riccardo Padovani
37967f5bfb Simplify code
Signed-off-by: Riccardo Padovani <riccardo@rpadovani.com>
2017-10-25 22:27:26 +02:00
Riccardo Padovani
cd651ebda5 When creating a board, choose the less used color
Fix issue #245

Signed-off-by: Riccardo Padovani <riccardo@rpadovani.com>
2017-10-25 22:27:26 +02:00
Nextcloud bot
5f69c56c3a [tx-robot] updated from transifex 2017-10-25 00:13:25 +00:00
Brandon Raitt
3f8806c81f Remove empty title tags.
Signed-off-by: Brandon Raitt <npm.pxoink@gmail.com>
2017-10-24 12:11:46 +02:00
Brandon Raitt
32a7c5f765 Update requested changes for accessibility. 2017-10-24 12:11:46 +02:00
Brandon Raitt
7b45a92a60 Update various template files to increase accessibility support.
Signed-off-by: Brandon Raitt <npm.pxoink@gmail.com>
2017-10-24 12:11:46 +02:00
Nextcloud bot
7b88d56e7a [tx-robot] updated from transifex 2017-10-24 00:13:35 +00:00
Julius Härtl
19b13456a5 Notifications: Fix sending notifications to users with numeric uid
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:33 +02:00
Julius Härtl
53b1af9dbe Frontend: Remove unrequired css and fix language strings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
3037effb5a Card: Fix styling issue when only duedate is set
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Marin Treselj
8357599361 Add some space between multiple assignees
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-10-23 22:12:08 +02:00
Marin Treselj
5d54772b1b Give 44*44px clickable area for the icon-more button
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-10-23 22:12:08 +02:00
Marin Treselj
afa16ee3ba Use default (larger) avatar size, default (smaller) action bar height
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-10-23 22:12:08 +02:00
Julius Härtl
090d99a360 Frontend: fix warnings in withoutAssignedUsers filter
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
a322c7a3b5 Tests: Add integration test for user assignment
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
1f3276acee Card: Only show users that are not already assigned
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
dc917b1e5d Fix inspection issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
ff2d96a1fb Fix tests that invoke findUsers
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
a56ceb348d Fix issue with new findUser implementation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
8cb95c4105 Frontend: Fix codacy errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
28d6f4196e Tests: Fix tests for user assignment
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
99c31d3c00 Card: Show assigned users on board
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
02ec4ae9d1 Frontend: cleanup dom structure and css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
f42e3eb857 Frontend: Fix assigning/removing users
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
447cb80573 Backend: assign/remove user impelementation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
01f11d1be9 Frontend: Add UI for user assignment
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
f746588111 Backend: Get list of users to assign
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
458a795460 Fix card headings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Julius Härtl
4cf746dd6f WIP: assign users
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Morris Jobke
4fa37f0548 Border-radius does not need the vendor prefixes anymore
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-10-23 21:04:26 +02:00
Nextcloud bot
fa70d329cd [tx-robot] updated from transifex 2017-10-21 00:12:48 +00:00
Nextcloud bot
98978b019a [tx-robot] updated from transifex 2017-10-20 00:13:00 +00:00
Julius Härtl
07da13bdf9 Fix assigning newly created labels
fixes #252

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-19 11:46:41 +02:00
Riccardo Padovani
794fcb76b8 Update part.board.sidebarView.php
Don't use ng-keyup as per merge review

Signed-off-by: Riccardo Padovani riccardo@rpadovani.com
2017-10-19 11:41:35 +02:00
Riccardo Padovani
2ca1e1eed8 Ability to save tag changes with enter
Fix issue #306

Signed-off-by: Riccardo Padovani <riccardo@rpadovani.com>
2017-10-19 11:41:35 +02:00
Nextcloud bot
063bf59ddb [tx-robot] updated from transifex 2017-10-18 00:12:47 +00:00
Nextcloud bot
5fde7a19bf [tx-robot] updated from transifex 2017-10-17 00:12:51 +00:00
Julius Härtl
6901314382 Remove unused code
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
c45bb71084 Fix phpstorm inspection issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
320f2bf5c8 JS: Fix scrutinizer warnings and indentation for services
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
9014ae1490 JS: Fix scrutinizer warnings and indentation for filters
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
516e396a58 JS: Fix scrutinizer warnings and indentation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
9b9c1432f2 Tests: Add Nextcloud public api for better scrutinizer inspection
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-17 01:17:37 +02:00
Julius Härtl
8d39fd9ad1 Card: Auto save while typing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-16 22:39:45 +02:00
Nextcloud bot
3d54d129b9 [tx-robot] updated from transifex 2017-10-14 02:33:28 +00:00
Julius Härtl
05395dbfbe Fix mysql datetime format
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-10 17:50:01 +02:00
Julius Härtl
1b0ac8c1e2 Update appstore building excludes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-08 11:51:04 +02:00
Nextcloud bot
4fc96e40ff [tx-robot] updated from transifex 2017-10-07 00:12:56 +00:00
Nextcloud bot
8b4eac0854 [tx-robot] updated from transifex 2017-10-06 00:13:00 +00:00
Nextcloud bot
1d4c019588 [tx-robot] updated from transifex 2017-10-05 00:12:52 +00:00
Nextcloud bot
dbef69e9ce [tx-robot] updated from transifex 2017-10-04 00:12:43 +00:00
Julius Härtl
7c6e48d15b Notifications: Fix issues with user fetching
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
d9c3aa44b9 Tests: Add tests for sharing a board notifications
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
ac1b1e826f Fix scritinizer issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
3c2ee00ad7 Notifications: Add more tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
6a575baadd Notifications: remove pending notifications if duedate is changed
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
f8c9bc1c7c Cron: Ignore unused parameters in codacy
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
e1ac6b0a9e Notifications: Add test for Notifier
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
ed55b0db51 Notifications: Do not use rich text for board/card
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
e8ecfce134 Notifications: Workaround to use announcement type for now
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
07132126a9 Add separate NotificationHelper to keep code together
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
a346e215cd Send notifications when a card is overdue
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Julius Härtl
52fc971529 Send notifications when a board gets shared
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-03 23:00:09 +02:00
Nextcloud bot
e0bab217a0 [tx-robot] updated from transifex 2017-10-03 00:12:45 +00:00
Julius Härtl
f770b2e7af Fix card action menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-01 17:06:16 +02:00
Julius Härtl
0d3916d450 Fix issues with new header levels
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-01 17:05:56 +02:00
Nextcloud bot
8fbd400c3c [tx-robot] updated from transifex 2017-10-01 00:12:46 +00:00
Nextcloud bot
fa9067b47a [tx-robot] updated from transifex 2017-09-30 00:12:53 +00:00
Nextcloud bot
af83e8a3d0 [tx-robot] updated from transifex 2017-09-29 00:12:52 +00:00
Julius Härtl
e8ba47564c Merge pull request #304 from nextcloud/remove-console-log
Frontend: remove javascript console.log statements
2017-09-28 13:27:30 +02:00
Julius Härtl
ea1b597fc0 Frontend: remove javascript console.log statements
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-28 11:48:18 +02:00
Regina M. Sipos
5312751cb8 Fix further uses of the word label to tag 2017-09-28 11:47:28 +02:00
Regina M. Sipos
a2bef30759 Change the word labels to tags for consistency 2017-09-28 11:47:28 +02:00
Nextcloud bot
b2f58b3404 [tx-robot] updated from transifex 2017-09-27 00:12:46 +00:00
Nextcloud bot
d212a426f2 [tx-robot] updated from transifex 2017-09-19 00:12:52 +00:00
Julius Härtl
4689619ba4 Bump version to 0.3.0 development
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-18 19:29:40 +02:00
Nextcloud bot
e2e8e98c1f [tx-robot] updated from transifex 2017-09-18 00:14:45 +00:00
Julius Härtl
f9b9973c29 Fix positioning of card description heading
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-16 15:55:30 +02:00
Julius Härtl
c3ba8fa536 Use proper heading levels
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-16 15:55:30 +02:00
Julius Härtl
e1d1e0c2c8 Align stacks to start (fixes #290)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-16 15:55:20 +02:00
Julius Härtl
aaf04ffbd4 Fix card positioning when draging them around
fixes #293

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-16 15:55:06 +02:00
Nextcloud bot
1d08c67353 [tx-robot] updated from transifex 2017-09-12 00:12:25 +00:00
Julius Härtl
2706dfaf4e Acl: Fix wrong permission type being set
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-07 23:57:03 +02:00
Julius Härtl
830f8a13fc Prepare 0.2.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-07 13:03:23 +02:00
Nextcloud bot
a15997a2c8 [tx-robot] updated from transifex 2017-09-07 00:12:26 +00:00
Nextcloud bot
287e1fe2d0 [tx-robot] updated from transifex 2017-09-03 00:12:19 +00:00
Julius Härtl
ec5389beb3 Disable draging of the sidebar
Fixes #262 #241

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-01 16:21:25 +02:00
Julius Härtl
8d8c7587d7 Use archive state to disable datepicker/labels
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-01 16:20:17 +02:00
Julius Härtl
c67b5eab6b Fix datepicker layout
closes #283

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-09-01 16:20:17 +02:00
Julius Härtl
daee347ea5 Add site url to jekyll config
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-27 10:26:48 +02:00
Robert Korulczyk
1765ab2c34 Add scrollbar for too wide pre tags.
Signed-off-by: Robert Korulczyk <robert@korulczyk.pl>
2017-08-26 18:07:44 +02:00
Robert Korulczyk
0cc322f133 Fix white-space styles for pre code blocks
Signed-off-by: Robert Korulczyk <robert@korulczyk.pl>
2017-08-26 18:07:44 +02:00
Nextcloud bot
857e22a8c9 [tx-robot] updated from transifex 2017-08-25 00:13:01 +00:00
Nextcloud bot
a8f3119d26 [tx-robot] updated from transifex 2017-08-22 00:12:33 +00:00
Nextcloud bot
ef52ab5bca [tx-robot] updated from transifex 2017-08-21 00:12:26 +00:00
Nextcloud bot
22c20426b3 [tx-robot] updated from transifex 2017-08-19 00:12:33 +00:00
Nextcloud bot
42fa3fa039 [tx-robot] updated from transifex 2017-08-12 00:12:16 +00:00
Morris Jobke
2a8a6784f1 Merge pull request #280 from nextcloud/drone-update
Update syntax to drone 0.8
2017-08-09 12:17:04 +02:00
Morris Jobke
d50cdcb343 Update syntax to drone 0.8
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-08-09 11:15:25 +02:00
Julius Härtl
1cbfd1b6bf Use ISO8601 date format for duedate
Fixes issues with Date.parse on webkit based browsers
closes #240

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-08 22:12:38 +02:00
Artem Anufrij
38ec1abfa5 Merge pull request #278 from nextcloud/fix-card-editing-placeholder
Fix card description placeholder
2017-08-08 20:29:53 +02:00
Julius Härtl
ac453636a9 Fix card description placeholder
fixes #261

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-08 16:20:31 +02:00
Julius Härtl
698f1eea25 Fix shared icon in sidebar
closes #247

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-08 16:11:36 +02:00
Nextcloud bot
8e858fac5c [tx-robot] updated from transifex 2017-08-08 00:12:09 +00:00
Artem Anufrij
ce7c5d6196 Merge pull request #275 from nextcloud/fix-tests
Fix tests
2017-08-08 00:15:35 +02:00
Julius Härtl
9cfb561c1c Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-06 14:25:10 +02:00
Nextcloud bot
bf06ec29ca [tx-robot] updated from transifex 2017-08-05 00:12:06 +00:00
jacestk
1ec13802af IE11 Fixes
Fixes for displaying AngularJS style in IE11
replace style="css{angular}" by ng-style="{angular}css"
2017-08-04 15:46:21 +01:00
Julius Härtl
86385f0d6f Fix drag-zone when sorting cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-08-04 12:55:32 +01:00
Nextcloud bot
3c12c84c7b [tx-robot] updated from transifex 2017-08-02 00:12:19 +00:00
Nextcloud bot
168c83fea0 [tx-robot] updated from transifex 2017-08-01 00:12:33 +00:00
Nextcloud bot
04ba531e2f [tx-robot] updated from transifex 2017-07-30 00:11:58 +00:00
Nextcloud bot
460b55f002 [tx-robot] updated from transifex 2017-07-29 00:12:29 +00:00
Morris Jobke
850cecb0b9 Run drone push only on specific branches
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-07-27 17:44:34 +02:00
Nextcloud bot
ba6e980cba [tx-robot] updated from transifex 2017-07-27 00:11:59 +00:00
Nextcloud bot
b28e549353 [tx-robot] updated from transifex 2017-07-25 00:11:56 +00:00
Nextcloud bot
b3c16a5a92 [tx-robot] updated from transifex 2017-07-23 00:11:26 +00:00
Jan-Christoph Borchardt
2b7d1b1085 Merge pull request #238 from nextcloud/fix-drag-empty-stack
Add min-height to card list and merge duplicate rules for .card
2017-07-14 10:24:19 +02:00
Nextcloud bot
c8c32eba8c [tx-robot] updated from transifex 2017-07-14 00:12:19 +00:00
Nextcloud bot
124403f8aa [tx-robot] updated from transifex 2017-07-13 00:12:12 +00:00
Nextcloud bot
f61377d95f [tx-robot] updated from transifex 2017-07-11 00:12:21 +00:00
Nextcloud bot
ec2b0d2c7d [tx-robot] updated from transifex 2017-07-08 00:12:00 +00:00
Marin Treselj
c68275c325 Merge branch 'master' into fix-drag-empty-stack 2017-07-07 23:01:43 +02:00
Nextcloud bot
e67aee4019 [tx-robot] updated from transifex 2017-07-07 00:11:51 +00:00
Julius Härtl
cfcaa6939b Add min-height to card list and merge duplicate rules for .card
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-07-06 16:51:07 +02:00
Julius Härtl
631a96f8da Add viewbox to icon
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-07-06 13:42:43 +02:00
Artem Anufrij
de800f79fb fixed margin for DnD class
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-06 13:32:41 +02:00
Artem Anufrij
43d46830d1 changed space between cards
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-06 13:32:41 +02:00
Artem Anufrij
14c90e53ce fix for due date control
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-06 13:27:34 +02:00
Nextcloud bot
a14b74223b [tx-robot] updated from transifex 2017-07-06 00:12:19 +00:00
Artem Anufrij
4cbaff461e Merge pull request #224 from nextcloud/fix-scss-stable11
Include nextcloud variables/functions when building legacy css file
2017-07-04 21:57:06 +02:00
Julius Härtl
7461b186a5 Include nextcloud variables/functions when building legacy css file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-07-04 21:48:52 +02:00
Artem Anufrij
34a253cff2 0.2.1
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-04 21:39:48 +02:00
Nextcloud bot
1cb37ac8fa [tx-robot] updated from transifex 2017-07-03 00:11:46 +00:00
Nextcloud bot
5648557be0 [tx-robot] updated from transifex 2017-07-02 00:11:27 +00:00
Nextcloud bot
6eb10bd667 [tx-robot] updated from transifex 2017-07-01 00:11:50 +00:00
Marin Treselj
1105363d9a Better border visibility in board list
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-06-30 18:55:12 +02:00
Julius Härtl
2b1bac9a2f Fix issues with board list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-30 18:55:12 +02:00
Marin Treselj
227f510d73 Add as author
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-06-30 18:55:12 +02:00
Marin Treselj
2fa56cdd77 Convert to SCSS and cleanup
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-06-30 18:55:12 +02:00
Julius Härtl
1346d085fe Move to SCSS
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-30 18:55:12 +02:00
Nextcloud bot
8e3db9147b [tx-robot] updated from transifex 2017-06-30 00:11:51 +00:00
Nextcloud bot
587f2ef3e3 [tx-robot] updated from transifex 2017-06-29 00:11:51 +00:00
Nextcloud bot
7839f3ea10 [tx-robot] updated from transifex 2017-06-28 00:11:50 +00:00
Artem Anufrij
1029a21f87 Polish sidebar (#215)
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-27 21:29:38 +02:00
Artem Anufrij
e908593ce0 show due date on mouse over
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-27 09:11:33 +02:00
Nextcloud bot
be555529f0 [tx-robot] updated from transifex 2017-06-26 00:11:58 +00:00
Nextcloud bot
53e4eb345a [tx-robot] updated from transifex 2017-06-25 00:11:42 +00:00
Julius Härtl
6a2dbf61d9 Simplify board view
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-23 22:47:37 +02:00
Julius Härtl
27d99f4a50 Align text in label list to the left
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-23 22:46:12 +02:00
Artem Anufrij
6f479727d5 some css fixes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-23 22:46:12 +02:00
Artem Anufrij
64c3606e09 polish label editor
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-23 22:46:12 +02:00
Marin Treselj
acaff1e99e Add viewBox and make deck.svg similar to deck.svg
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-06-23 21:51:42 +02:00
Julius Härtl
d584b45114 Rename icons to avoid issues with theming app
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-23 21:51:42 +02:00
Nextcloud bot
bf52f85c08 [tx-robot] updated from transifex 2017-06-23 00:12:42 +00:00
Artem Anufrij
237df08414 Merge pull request #209 from nextcloud/fix-last-opacity
Fix opacity of last entry in board list
2017-06-23 00:25:52 +02:00
Julius Härtl
e9ef790295 Fix opacity of last entry in board list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-22 22:28:00 +02:00
Artem Anufrij
1388da0fa0 Merge pull request #198 from nextcloud/edit-board-in-board-list-view
edit board in board list view
2017-06-22 21:26:25 +02:00
Julius Härtl
aa69584afd Fix wrong status object in elements
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-22 21:21:51 +02:00
Artem Anufrij
a03986b1bb improved 'add new board' row
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:02 +02:00
Artem Anufrij
e970fca3f3 css changes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:02 +02:00
Artem Anufrij
b15555e5e2 added save and cancel button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:01 +02:00
Artem Anufrij
017b4b5b29 edit board in board list view
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:01 +02:00
Nextcloud bot
905aeed75a [tx-robot] updated from transifex 2017-06-22 00:11:57 +00:00
Julius Härtl
86fe38832c Set theme jekyll-theme-cayman 2017-06-21 14:33:24 +02:00
Nextcloud bot
935026fb0f [tx-robot] updated from transifex 2017-06-21 00:11:32 +00:00
Julius Härtl
da35eb45da Fix screenshot url
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:49:53 +02:00
Julius Härtl
0b2884cdfb Fix database index
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:34:00 +02:00
Julius Härtl
515b5c5310 Remove the alpha warning
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Julius Härtl
f9674db40a Update screenshot in README
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Julius Härtl
4dfc11db56 Cleanup CHANGELOG
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Julius Härtl
5b620879de Add new screenshots
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Julius Härtl
0c478a0636 Prepare 0.2 release
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Nextcloud bot
4a2ee8f9d0 [tx-robot] updated from transifex 2017-06-20 00:12:13 +00:00
Julius Härtl
630104c37f Fix app-navigation-toggle height and small typo
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 22:11:26 +02:00
Artem Anufrij
882bf773c8 Toggle navigation bar on mobile and desktop devices
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-19 22:11:26 +02:00
Marin Treselj
42f3f5c1dd Merge pull request #191 from nextcloud/browser-title
Set board title as browser title
2017-06-19 21:02:07 +02:00
Julius Härtl
6d8dbeebcd Set board title as browser title
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 20:38:08 +02:00
Julius Härtl
1d9a0d35d8 Add timepicker css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Artem Anufrij
eabcb12185 css fixes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

some css changes

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

removed unused css line

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

some margin changes

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-19 10:36:29 +02:00
Julius Härtl
ae88f2291c Add tests for overdue state
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
a5199127da Add padding only for colored due date badges
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
9c19246b8b Optimize calendar-white icon
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
396a0d6d3a Fix due date colors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
0ffb8a0dbd Fix small issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
2063e1d9f4 Fix unit tests for duedate
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
b350213a01 Fix margin issues and eslint warnings
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Julius Härtl
9a77bd7c7c Implement due dates for cards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Nextcloud bot
58bf51accd [tx-robot] updated from transifex 2017-06-19 00:11:41 +00:00
Nextcloud bot
ead01055fc [tx-robot] updated from transifex 2017-06-17 00:12:03 +00:00
Nextcloud bot
848521a8ef [tx-robot] updated from transifex 2017-06-16 00:12:24 +00:00
Nextcloud bot
7e81b6c182 [tx-robot] updated from transifex 2017-06-15 00:12:24 +00:00
Nextcloud bot
231c4e1acb [tx-robot] updated from transifex 2017-06-14 16:22:24 +00:00
Nextcloud bot
094d5334aa [tx-robot] updated from transifex 2017-06-14 00:12:10 +00:00
Nextcloud bot
989f09ed98 [tx-robot] updated from transifex 2017-06-13 00:11:48 +00:00
Nextcloud bot
fe936f42c4 [tx-robot] updated from transifex 2017-06-12 00:11:40 +00:00
Nextcloud bot
b82ef2b401 [tx-robot] updated from transifex 2017-06-11 00:11:53 +00:00
Artem Anufrij
4de11b8f95 Merge pull request #186 from nextcloud/fix-sharing-icon
Hotfix for user/group icons on sharing list
2017-06-11 00:07:48 +02:00
Julius Härtl
61c4e70046 Hotfix for user/group icons on sharing list
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-11 00:02:35 +02:00
Artem Anufrij
d052325874 fixed css
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:46:52 +02:00
Artem Anufrij
9b6869862c some design changes in board list
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:46:52 +02:00
Artem Anufrij
d421e23f9d added assigned-users into css block
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:20:35 +02:00
Artem Anufrij
bdd47c8dc6 fixed avatar margin
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:20:35 +02:00
Julius Härtl
bb8c0909f2 Merge pull request #181 from nextcloud/add-toggle-button-into-board-list
added board header for board list
2017-06-10 23:16:23 +02:00
Artem Anufrij
8e89c36ba8 added board header for board list
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 10:41:13 +02:00
Nextcloud bot
4391af0e84 [tx-robot] updated from transifex 2017-06-10 00:12:06 +00:00
Artem Anufrij
b1ac1b3d4e Merge pull request #177 from nextcloud/toggle-navi-bar
toggle navibar visibility
2017-06-09 23:54:28 +02:00
Artem Anufrij
6b8c084ed4 better mobile support
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-09 22:53:10 +02:00
Artem Anufrij
ac39568ff6 toggle navibar visibility
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-09 18:58:45 +02:00
Nextcloud bot
e7b095591a [tx-robot] updated from transifex 2017-06-09 00:12:01 +00:00
Julius Härtl
2e1f743698 Merge pull request #175 from nextcloud/optimized-deck-icon
Optimized 16px version of deck.svg
2017-06-08 23:18:06 +02:00
Marin Treselj
537adc09b4 OPtimized 16px version of deck.svg
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-06-08 22:53:10 +02:00
Julius Härtl
48842dd53e Merge pull request #133 from nextcloud/archive-boards
Archive boards
2017-06-08 22:46:04 +02:00
Julius Härtl
68b2025390 Some minor fixes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 20:52:56 +02:00
Artem Anufrij
034ac5e2ad add_delete_menu_in_default_view
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-08 20:52:56 +02:00
Artem Anufrij
727a33535d fixed_context_menu_position
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-08 20:52:33 +02:00
Julius Härtl
3062c82083 Allow force delete to have a clean test env after creating boards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:44 +02:00
Julius Härtl
4623688852 Fix codacy errors
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:44 +02:00
Julius Härtl
19a90809f9 Add more unit testing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:44 +02:00
Julius Härtl
57f74c98db Fix adding new boards in the sidebar
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
c7586377ea Fix stateParam changes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
f5dc4ac0e9 Fix missing card actions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
06e41f59f6 Add unit tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
f7b69d9c42 Fix varius small issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
2c63bfb4b8 Keep deleted boards for a while and delete with cron
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
247b4dde0c Fix getting permissions and active indicator
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:43 +02:00
Julius Härtl
90eb9ce28e Fix unit tests for board archiving
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:42 +02:00
Julius Härtl
8c04ea8dc9 Archive boards
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-08 19:35:42 +02:00
Nextcloud bot
fa5cba631f [tx-robot] updated from transifex 2017-06-08 00:11:59 +00:00
Nextcloud bot
b220bab8c6 [tx-robot] updated from transifex 2017-06-07 00:12:51 +00:00
Artem Anufrij
786aa00f83 missing translation for 'Add a new stack' (#169)
* missing translation for 'Add a new stack'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* fixed pixelipo's comment

* label->tag

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* 'Board title' -> 'New Board title'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* 'Board title' -> 'Boards' in Boardlist

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* renamed column header 'Boards' -> 'Title'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* missing translation for 'Add a new stack'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

fixed pixelipo's comment
label->tag

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

'Board title' -> 'New Board title'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

'Board title' -> 'Boards' in Boardlist

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

[tx-robot] updated from transifex

renamed column header 'Boards' -> 'Title'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

Merge branch 'master' into missing_translation

* fixed h2 tag

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* fixed space

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-06 09:37:38 +02:00
Nextcloud bot
6f9fe17004 [tx-robot] updated from transifex 2017-06-04 00:12:03 +00:00
Nextcloud bot
2efb78bfa3 [tx-robot] updated from transifex 2017-06-03 00:12:19 +00:00
Artem Anufrij
64960956f9 Merge pull request #173 from nextcloud/click-title-to-edit
Click title to edit
2017-06-01 20:37:01 +02:00
Artem Anufrij
cfd936b5c5 save on return/enter
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-01 20:06:27 +02:00
Marin Treselj
2cb151ba02 Temporary fix for card delete button position
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-31 22:44:44 +02:00
Marin Treselj
2f73f0492b Create new class for inline-editable text
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-31 15:43:30 +02:00
Marin Treselj
e06a2ad743 fix tabs
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-31 08:17:18 +02:00
Marin Treselj
73eff3d64e Allows editing stack title by clicking it.
Deprecates edit icon in the stack header.

Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-31 08:13:53 +02:00
Nextcloud bot
d14f4f20b6 [tx-robot] updated from transifex 2017-05-31 00:12:43 +00:00
Nextcloud bot
c6159e5914 [tx-robot] updated from transifex 2017-05-30 00:12:44 +00:00
Nextcloud bot
d8a287e9dc [tx-robot] updated from transifex 2017-05-29 00:12:39 +00:00
Artem Anufrij
1d09de1d34 Merge pull request #168 from nextcloud/167-context-menus
Fix #167 - hide opened menus
2017-05-28 16:37:45 +02:00
Marin Treselj
e633dd4d0f Fix #167 - hide opened menus
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 16:17:31 +02:00
Artem Anufrij
7ce7543817 Merge pull request #166 from nextcloud/160-fix-regressions
Fixes few regressions caused by my last PR.
2017-05-28 15:23:53 +02:00
Marin Treselj
033897f877 Revert Artem's commits
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 15:12:59 +02:00
Marin Treselj
ef31fec924 Merge branch '160-fix-regressions' of github.com:nextcloud/deck into 160-fix-regressions
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 15:09:04 +02:00
Marin Treselj
1780b4b21c Fixes few regressions caused by my last PR.
It tranaformed our css to the "mobile-first" paradigm so @media
query now targets large screens.
This commit also fixes share icon in the left sidebar.

Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 15:07:45 +02:00
Marin Treselj
beef990a9f Fixes few regressions caused by my last PR.
It tranaformed our css to the "mobile-first" paradigm so @media
query now targets large screens.
This commit also fixes share icon in the left sidebar.

Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 14:41:29 +02:00
Julius Härtl
18262c6159 Merge pull request #165 from nextcloud/fix_css_for_mobile
fix css for mobile devices
2017-05-28 14:41:25 +02:00
Artem Anufrij
ff77fb68f5 moved css code
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-28 14:29:24 +02:00
Artem Anufrij
c3b9579f1d fix css for mobile devices
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-28 14:21:21 +02:00
Julius Härtl
a86eaec7c6 Merge pull request #161 from nextcloud/160-css-cleanup
This is part one of the style cleanup mentioned in #160.
2017-05-28 13:56:45 +02:00
Marin Treselj
f4a5a0c36c Fix alignment of buttons
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 13:36:52 +02:00
Marin Treselj
1defc48179 This is part one of the style cleanup mentioned in #160.
Functionality has not been affected (I hope). There will be few more related PRs but I want to keep each one simple so it's easy to review.

Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 13:36:08 +02:00
Julius Härtl
98c87f4551 Merge pull request #159 from nextcloud/mobile_improvements
improve mobile behavior
2017-05-28 10:58:58 +02:00
Julius Härtl
457b897135 Merge pull request #162 from nextcloud/build-cleanup
Cleanup makefiles
2017-05-28 10:56:49 +02:00
Nextcloud bot
314763acca [tx-robot] updated from transifex 2017-05-28 00:12:17 +00:00
Nextcloud bot
8c7190f84d [tx-robot] updated from transifex 2017-05-27 00:12:38 +00:00
Julius Härtl
8105a4b211 Merge pull request #163 from nextcloud/rakekniven-patch-1
Update part.card.php
2017-05-26 22:54:02 +02:00
rakekniven
7c80b58dd7 Update part.card.php 2017-05-26 22:31:35 +02:00
Nextcloud bot
2adf972440 [tx-robot] updated from transifex 2017-05-26 00:12:11 +00:00
Julius Härtl
aacf7716ce Cleanup makefiles
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-25 15:18:03 +02:00
Nextcloud bot
a23b7e8f1a [tx-robot] updated from transifex 2017-05-25 00:11:53 +00:00
Artem Anufrij
2eb6118485 show stack action buttons on mobile device
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-24 22:49:19 +02:00
Artem Anufrij
855479fe68 added longTouch: true
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-24 22:24:27 +02:00
Artem Anufrij
2596ecae5b improve mobile behavior
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-24 21:23:34 +02:00
Julius Härtl
d60f79da65 Merge pull request #158 from nextcloud/fix_popover_menu_orientation
fix popover menu orientation
2017-05-24 20:26:40 +02:00
Artem Anufrij
58c6cf19a6 fix popover menu orientation
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-24 20:14:01 +02:00
Julius Härtl
a070fa3bac Merge pull request #146 from nextcloud/header-bar-improvements
header bar and mobile device improvements
2017-05-24 19:10:32 +02:00
Artem Anufrij
286a56e6f4 Merge pull request #155 from nextcloud/keep-stack-order
Fix order of stacks
2017-05-24 18:03:47 +02:00
Julius Härtl
0b7b89b602 Fix button clickable area
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-24 16:32:41 +02:00
Julius Härtl
04108835a6 Fix order of stacks
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-24 16:12:37 +02:00
Marin Treselj
1143f0807c Fix popover closing on input focus
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-24 11:59:20 +02:00
Nextcloud bot
f2dcede923 [tx-robot] updated from transifex 2017-05-24 00:12:29 +00:00
Julius Härtl
5dd346fbe8 Merge pull request #151 from nextcloud/sort-stacks
Add stack sorting functionality
2017-05-23 23:07:04 +02:00
Julius Härtl
b6d94ec9ff Add stack sorting functionality
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-23 22:54:44 +02:00
Artem Anufrij
ec6c8d94c1 removed class from button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-23 22:16:23 +02:00
Artem Anufrij
ca3b89569f fixed icons if using subfolders for nc instance
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-23 22:05:13 +02:00
Julius Härtl
69d16d7f39 Merge pull request #152 from nextcloud/travis-fix
Travis update since test seem to fail randomly
2017-05-23 20:56:09 +02:00
Marin Treselj
2fd06acca8 Home icon without div wrapper
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-23 20:39:54 +02:00
Julius Härtl
b5afb42989 Travis extending
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-23 20:21:14 +02:00
Julius Härtl
4802f34c04 Fix home icon
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-23 20:08:22 +02:00
Julius Härtl
f553e88e29 Merge pull request #150 from nextcloud/untranslate-app-title
Application name should not be a transatable string.
2017-05-23 13:47:30 +02:00
Marin Treselj
ebee72e9b3 Application name should not be a transatable string.
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-23 11:27:57 +02:00
Nextcloud bot
23a8863a35 [tx-robot] updated from transifex 2017-05-23 00:12:21 +00:00
Artem Anufrij
4ec59d24b4 small css improvement
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem Anufrij
543127c1e6 'add new stack' margin
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem Anufrij
1e4e0a3947 added home button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem Anufrij
0b133c59d9 clear css
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem Anufrij
d2b44c2ad0 added .icon-more button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:41 +02:00
Artem Anufrij
0b12271ee3 fixed pixelipo comments 2017-05-22 21:05:41 +02:00
Artem Anufrij
c6ebfdc11f header bar and mobile device improvements
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:41 +02:00
Julius Härtl
fbc12ae8f7 Merge pull request #148 from nextcloud/allow-nextcloud-13
Bump max-version to 13
2017-05-22 21:05:37 +02:00
Julius Härtl
77b5c7daa7 Bump max-version to 13
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-22 20:55:48 +02:00
Nextcloud bot
40482f6f03 [tx-robot] updated from transifex 2017-05-22 00:11:59 +00:00
Julius Härtl
ada458bacf Merge pull request #144 from nextcloud/card-title-fix
Fix extra-long words in card title overflowing.
2017-05-21 13:23:17 +02:00
Julius Härtl
5a0b15a490 Merge pull request #143 from nextcloud/db-index-ci
Rename database indexes
2017-05-21 13:22:59 +02:00
Nextcloud bot
01794141a8 [tx-robot] updated from transifex 2017-05-21 00:12:06 +00:00
Artem Anufrij
8cb30a0094 Merge branch 'master' into db-index-ci 2017-05-20 23:13:43 +02:00
Marin Treselj
dabf46e886 Fix extra-long words in card title overflowing.
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-20 22:37:33 +02:00
Julius Härtl
e2923abf90 Rename database indexes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-20 10:59:38 +02:00
Julius Härtl
7ba9f769f6 Merge pull request #142 from nextcloud/comradekingu-patch-1
Spelling: Ellipsis… and consistency
2017-05-20 10:55:59 +02:00
comradekingu
79408568b4 Spelling: Ellipsis… and consistency 2017-05-20 02:40:27 +02:00
Nextcloud bot
54f698c20d [tx-robot] updated from transifex 2017-05-20 00:11:44 +00:00
Julius Härtl
c696d9f287 Merge pull request #139 from nextcloud/card_redesing
added a card control bar
2017-05-19 23:00:07 +02:00
Artem Anufrij
e9f71d1f40 rename stack (#137)
* rename stack Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* fixed 'lost focus without title change'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* fixed long words

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

* fixed 'lost focus without title change'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

fixed long words

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

code style

css

* fixed 'lost focus without title change'

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

fixed long words

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>

code style

css
Merge remote-tracking branch 'origin/stack_rename' into stack_rename
Merge branch 'master' into stack_rename
2017-05-19 22:54:51 +02:00
Artem Anufrij
92349f66a3 added a card control bar
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-19 12:02:54 +02:00
Nextcloud bot
1d797b1bf2 [tx-robot] updated from transifex 2017-05-19 00:11:52 +00:00
Nextcloud bot
63714d5133 [tx-robot] updated from transifex 2017-05-18 00:10:56 +00:00
Nextcloud bot
2fbed6342a [tx-robot] updated from transifex 2017-05-17 00:11:13 +00:00
Artem Anufrij
e7fd9d8b3a Merge pull request #132 from nextcloud/formating-help
Link to help for markdown usage
2017-05-16 20:02:22 +02:00
Julius Härtl
2d16f66ef7 Link to help for markdown usage
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-16 11:57:03 +02:00
Nextcloud bot
d5c80c37cc [tx-robot] updated from transifex 2017-05-16 00:11:09 +00:00
Julius Härtl
3471e7ac00 Merge pull request #130 from nextcloud/116-header-redesign
Header redesign - fixes #116
2017-05-15 11:06:10 +02:00
Nextcloud bot
1f4e0bdee1 [tx-robot] updated from transifex 2017-05-14 00:11:07 +00:00
Nextcloud bot
90c22e8f4a [tx-robot] updated from transifex 2017-05-13 00:11:21 +00:00
Nextcloud bot
ccf19e3129 [tx-robot] updated from transifex 2017-05-12 00:10:45 +00:00
Marin Treselj
be75d28170 Header redesign - fixes #116
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-10 14:44:05 +02:00
Nextcloud bot
9c6b2b160e [tx-robot] updated from transifex 2017-05-09 00:10:48 +00:00
Julius Härtl
23d8c1aa30 Merge pull request #121 from nextcloud/icon-size-position
small css changes
2017-05-08 11:02:40 +02:00
Artem Anufrij
96ab5e70fa small css changes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-08 10:30:47 +02:00
Nextcloud bot
7e5c7a9cb8 [tx-robot] updated from transifex 2017-05-07 00:10:22 +00:00
Nextcloud bot
e700d9d781 [tx-robot] updated from transifex 2017-05-05 00:10:17 +00:00
227 changed files with 11550 additions and 2862 deletions

View File

@@ -1,7 +1,9 @@
pipeline:
clone:
clone:
git:
image: plugins/git
depth: 1
pipeline:
check-app-compatbility:
image: nextcloudci/php5.6:php5.6-3
environment:
@@ -35,39 +37,55 @@ pipeline:
matrix:
TESTS: signed-off-check
syntax-php5.6:
image: nextcloudci/php5.6:php5.6-3
image: nextcloudci/php5.6:php5.6-8
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server
- composer install
- ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php5.6
syntax-php7.0:
image: nextcloudci/php7.0:php7.0-2
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server
- composer install
- ./lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude lib/composer/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php7.0
syntax-php7.1:
image: nextcloudci/php7.1:php7.1-15
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- composer install
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php7.1
syntax-php7.2:
image: nextcloudci/php7.2:php7.2-9
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- composer install
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php7.2
php5.6:
image: nextcloudci/php5.6:php5.6-3
image: nextcloudci/php5.6:php5.6-8
environment:
- APP_NAME=deck
- CORE_BRANCH=master
@@ -93,7 +111,7 @@ pipeline:
matrix:
TESTS: php5.6
php7.0:
image: nextcloudci/php7.0:php7.0-7
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
@@ -112,14 +130,13 @@ pipeline:
matrix:
TESTS: php7.0
php7.1:
image: nextcloudci/php7.1:php7.1-11
image: nextcloudci/php7.1:php7.1-15
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
# Pre-setup steps
- yum -y install wget
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server/
@@ -130,6 +147,24 @@ pipeline:
when:
matrix:
TESTS: php7.1
php7.2:
image: nextcloudci/php7.2:php7.2-9
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
# Pre-setup steps
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server/
- php occ app:enable deck
- cd apps/$APP_NAME
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
when:
matrix:
TESTS: php7.2
integration:
image: nextcloudci/integration-php7.0:integration-php7.0-3
environment:
@@ -148,6 +183,13 @@ pipeline:
when:
matrix:
TESTS: integration
eslint:
image: nextcloudci/eslint:eslint-1
commands:
- ./run-eslint.sh
when:
matrix:
TESTS: eslint
jsbuild:
image: mhart/alpine-node:6.8.0
commands:
@@ -164,10 +206,16 @@ matrix:
- TESTS: signed-off-check
- TESTS: syntax-php5.6
- TESTS: syntax-php7.0
- TESTS: syntax-php7.1
- TESTS: syntax-php7.2
- TESTS: php5.6
- TESTS: php7.0
- TESTS: php7.1
- TESTS: php7.2
- TESTS: eslint
- TESTS: jsbuild
- TESTS: integration
branches: [ master, stable* ]

8
.eslintignore Normal file
View File

@@ -0,0 +1,8 @@
/js/tests/*
/js/vendor/*
/js/node_modules/*
/js/public/*
/karma.conf.js
/tests/*
/l10n/*

37
.eslintrc.yml Normal file
View File

@@ -0,0 +1,37 @@
root: true
extends:
- eslint:recommended
env:
browser: true
amd: true
globals:
app: false
angular: false
$: false
escapeHTML: false
OC: false
OCA: false
t: false
oc_current_user: false
oc_requesttoken: false
Clipboard: false
oc_defaults: false
rules:
curly: error
eqeqeq: ["error", "smart"]
guard-for-in: error
no-console: off
no-fallthrough: error
no-mixed-spaces-and-tabs: error
no-unused-vars: warn
no-use-before-define: error
semi: ["error", "always"]
indent:
- error
- tab
- SwitchCase: 1

6
.gitignore vendored
View File

@@ -1,6 +1,10 @@
js/node_modules/*
js/vendor/
build/
js/public/
js/package-lock.json
build/
css/style.css
tests/integration/vendor/
tests/integration/composer.lock
vendor/
*.lock

View File

@@ -1,13 +1,21 @@
language: php
dist: trusty
sudo: required
services:
- mysql
php:
- 5.6
- 7
- 7.0
- 7.1
- 7.2
env:
matrix:
- CORE_BRANCH=master DB=mysql
- CORE_BRANCH=stable11 DB=mysql
- CORE_BRANCH=master DB=mysql
- CORE_BRANCH=stable12 DB=mysql
matrix:
exclude:
- php: 7.2
env: CORE_BRANCH=stable12 DB=mysql
before_install:
- wget https://phar.phpunit.de/phpunit-5.7.phar

View File

@@ -1,10 +1,104 @@
# Changelog
All notable changes to this project will be documented in this file.
## 0.1.4
## 0.3.0 - 2018-01-12
### Added
- Allow to assign users to cards
- Emit notifications for overdue cards
- Emit notifications if boards gets shared to a user
- Add support for Nextcloud 13
- Simplify layout for cleaner user experience
- Add contacts menu to avatars
- Automatically save card description on inactivity
### Fixed
- Fix card dragging behaviour
- Fix scrolling and dragging on mobile
- Various fixes when data is not syncronized between different views
- Improved performance
- Update document title when renaming a board
- Automatically chose the least used color
- Improve accessibility
- Fix issue when assigning labels after creating them
- Allow to save tag changes with enter
- Fix bug when removing labels changed the color of the remaining ones
- Fix issues with auto saving of card descriptions
## 0.2.8 - 2017-11-26
### Fixed
- Drop support for NC 13, since that will only be supported by the next version of Deck
## 0.2.7 - 2017-11-10
### Fixed
- Fix bug that caused update to fail
## 0.2.6 - 2017-11-10
### Fixed
- Fix duedates not being updated with MySQL databases
## 0.2.5 - 2017-11-08
### Fixed
- Fix duedates not being saved with MySQL databases
## 0.2.4 - 2017-10-08
### Fixed
- Fix card action menu not being accessible
## 0.2.3 - 2017-09-23
### Fixed
- Fix delete stack button being not available
- Fix acl issues with PostgreSQL
## 0.2.2 - 2017-09-07
### Fixed
- Various frontend fixes
- Fix sidebar drag issues
- Improvements for IE11
- Fix bug when draging a card to an empty stack
## 0.2.1 - 2017-07-04
### Added
- Editing board details in board list
- Due date on mouse over
### Changed
- Polished label editor
- Polished sidebar
- UI improvements in board view
- Moved to SCSS
### Fixed
- Fix opacity of last entry in board list
## 0.2.0 - 2017-06-20
### Added
- Due dates for cards
- Archive boards
- Filter board list for archived/shared boards
- Rearange stack order
- Improved card overview with description indicator
- Navigation sidebar visibility can be toggled
### Fixed
- Undo on delete for boards
- Various fixes for mobile devices
- UI improvements to fit the Nextcloud design
## 0.1.4 - 2017-05-04
### Fixed
- Avoid red shadow on input in firefox
- Fix broken delete function for boards
- Fix broken board loading when groups were used for sharing
@@ -13,11 +107,9 @@ All notable changes to this project will be documented in this file.
## 0.1.3 - 2017-05-01
### Added
- Icon to show if a card has a description
### Changed
- Use OCS API to get users/groups for sharing
- Various UI improvements
- Show display name instead of uid
@@ -27,6 +119,7 @@ All notable changes to this project will be documented in this file.
## 0.1.2
### Added
- Add translations
@@ -41,6 +134,7 @@ All notable changes to this project will be documented in this file.
- Fixed SQL statements without prefixes
## 0.1.1
### Fixed
- Various styling improvements
- Fix problems with MySQL and PostgreSQL
@@ -48,6 +142,7 @@ All notable changes to this project will be documented in this file.
- Fix error when changing board permissions
## 0.1.0
### Added
- Sharing boards with other users
- Create and manage boards

View File

@@ -27,11 +27,11 @@ install-deps:
build: build-js
build-js:
$(MAKE) -C js build
build-js: install-deps
cd js && ./node_modules/.bin/grunt build
watch:
$(make) -C js watch
cd js && ./node_modules/.bin/grunt watch
# appstore: clean install-deps
appstore: clean-build build
@@ -48,6 +48,7 @@ appstore: clean-build build
--exclude="../$(app_name)/js/tests" \
--exclude="../$(app_name)/js/test" \
--exclude="../$(app_name)/js/*.log" \
--exclude="../$(app_name)/js/package-lock.json" \
--exclude="../$(app_name)/js/package.json" \
--exclude="../$(app_name)/js/bower.json" \
--exclude="../$(app_name)/js/karma.*" \
@@ -57,7 +58,10 @@ appstore: clean-build build
--exclude="../$(app_name)/karma.*" \
--exclude="../$(app_name)/protractor\.*" \
--exclude="../$(app_name)/.*" \
--exclude="../$(app_name)/*.lock" \
--exclude="../$(app_name)/run-eslint.sh" \
--exclude="../$(app_name)/js/.*" \
--exclude="../$(app_name)/vendor" \
--exclude-vcs \
../$(app_name)

View File

@@ -12,9 +12,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
- :rocket: Get your project organized
![Deck - Manage cards on your board](https://bitgrid.net/~jus/deck_1.png)
:boom: This is still alpha software: it may not be stable enough for production
![Deck - Manage cards on your board](https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png)
### Planned features

2
_config.yml Normal file
View File

@@ -0,0 +1,2 @@
theme: jekyll-theme-cayman
site: https://deck-app.com

View File

@@ -23,3 +23,4 @@
$app = new \OCA\Deck\AppInfo\Application();
$app->registerNavigationEntry();
$app->registerNotifications();

View File

@@ -38,6 +38,14 @@
<type>boolean</type>
<default>false</default>
</field>
<field>
<name>deleted_at</name>
<type>integer</type>
<default>0</default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
</declaration>
</table>
<table>
@@ -122,7 +130,6 @@
<name>last_modified</name>
<type>integer</type>
<default></default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
@@ -130,7 +137,6 @@
<name>created_at</name>
<type>integer</type>
<default></default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
@@ -151,6 +157,16 @@
<type>boolean</type>
<default>false</default>
</field>
<field>
<name>duedate</name>
<type>timestamp</type>
<default>0</default>
</field>
<field>
<name>notified</name>
<type>boolean</type>
<default>false</default>
</field>
<index>
<name>deck_cards_stack_id_index</name>
<field>
@@ -287,13 +303,51 @@
<length>4</length>
</field>
<index>
<name>deck_assigned_labels_label_id_index</name>
<name>deck_assigned_labels_idx_i</name>
<field>
<name>label_id</name>
</field>
</index>
<index>
<name>deck_assigned_labels_card_id_index</name>
<name>deck_assigned_labels_idx_c</name>
<field>
<name>card_id</name>
</field>
</index>
</declaration>
</table>
<table>
<name>*dbprefix*deck_assigned_users</name>
<declaration>
<field>
<name>id</name>
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<autoincrement>1</autoincrement>
<length>4</length>
</field>
<field>
<name>participant</name>
<type>text</type>
<notnull>true</notnull>
<length>64</length>
</field>
<field>
<name>card_id</name>
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<length>4</length>
</field>
<index>
<name>deck_assigned_users_idx_p</name>
<field>
<name>participant</name>
</field>
</index>
<index>
<name>deck_assigned_users_idx_c</name>
<field>
<name>card_id</name>
</field>
@@ -345,6 +399,7 @@
<default>false</default>
</field>
<index>
<name>deck_board_acl_uq_i</name>
<unique>true</unique>
<field>
<name>board_id</name>
@@ -360,7 +415,7 @@
</field>
</index>
<index>
<name>deck_board_acl_board_id_index</name>
<name>deck_board_acl_idx_i</name>
<field>
<name>board_id</name>
</field>

View File

@@ -13,10 +13,8 @@
- 👥 Share with your team, friends or family
- 🚀 Get your project organized
💥 This is still alpha software: it may not be stable enough for production!
</description>
<version>0.1.4</version>
<version>0.3.0</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Deck</namespace>
@@ -24,12 +22,15 @@
<category>office</category>
<bugs>https://github.com/nextcloud/deck/issues</bugs>
<repository type="git">https://github.com/nextcloud/deck.git</repository>
<screenshot>https://bitgrid.net/~jus/deck_1.png</screenshot>
<screenshot>https://bitgrid.net/~jus/deck_2.png</screenshot>
<screenshot>https://bitgrid.net/~jus/deck_3.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png</screenshot>
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot>
<dependencies>
<nextcloud min-version="11" max-version="12" />
<nextcloud min-version="12" max-version="13" />
</dependencies>
<background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job>
<job>OCA\Deck\Cron\ScheduledNotifications</job>
</background-jobs>
<repair-steps>
<post-migration>
<step>OCA\Deck\Migration\UnknownUsers</step>

View File

@@ -31,6 +31,7 @@ return [
['name' => 'board#read', 'url' => '/boards/{boardId}', 'verb' => 'GET'],
['name' => 'board#update', 'url' => '/boards/{boardId}', 'verb' => 'PUT'],
['name' => 'board#delete', 'url' => '/boards/{boardId}', 'verb' => 'DELETE'],
['name' => 'board#deleteUndo', 'url' => '/boards/{boardId}/deleteUndo', 'verb' => 'POST'],
['name' => 'board#getUserPermissions', 'url' => '/boards/{boardId}/permissions', 'verb' => 'GET'],
['name' => 'board#addAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'POST'],
['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'PUT'],
@@ -40,6 +41,7 @@ return [
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
['name' => 'stack#create', 'url' => '/stacks', 'verb' => 'POST'],
['name' => 'stack#update', 'url' => '/stacks/{stackId}', 'verb' => 'PUT'],
['name' => 'stack#reorder', 'url' => '/stacks/{stackId}/reorder', 'verb' => 'PUT'],
['name' => 'stack#delete', 'url' => '/stacks/{stackId}', 'verb' => 'DELETE'],
['name' => 'stack#archived', 'url' => '/stacks/{boardId}/archived', 'verb' => 'GET'],
@@ -54,6 +56,8 @@ return [
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],
['name' => 'card#unassignUser', 'url' => '/cards/{cardId}/assign/{userId}', 'verb' => 'DELETE'],
// labels
['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'],

16
composer.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "nextcloud/deck",
"type": "project",
"license": "AGPLv3",
"authors": [
{
"name": "Julius Härtl",
"email": "jus@bitgrid.net"
}
],
"require": {},
"require-dev": {
"christophwurst/nextcloud": "^12.0",
"jakub-onderka/php-parallel-lint": "^0.9.2"
}
}

113
css/comp-appnav.scss Normal file
View File

@@ -0,0 +1,113 @@
/*
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Hotfix for support <NC13 with new app sidebar
*/
#app-navigation {
.app-navigation-entry-menu.open {
ul li a {
background-position: 10px center;
padding: 0 10px 0 36px !important;
}
}
.app-navigation-entry-edit {
display: none;
}
.editing {
.app-navigation-entry-edit {
display: block;
position: absolute;
background: $color-main-background;
height: auto;
z-index: 250;
}
}
}
/**
* copied styles from core/css/styles.scss
* to have the same breadcrumb styling in NC12
*/
.breadcrumb {
display: inline-flex;
}
div.crumb {
display: inline-flex;
background-repeat: no-repeat;
background-position: right center;
height: 44px;
background-size: auto 24px;
flex: 0 0 auto;
order: 1;
padding-right: 7px;
&.crumbmenu {
order: 2;
position: relative;
a {
opacity: 0.5
}
}
&.hidden {
display: none;
~ .crumb {
order: 3;
}
}
> a,
> span {
position: relative;
padding: 12px;
opacity: 0.5;
top: 0 !important;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
flex: 0 0 auto;
&.icon-home {
// Hide home text
text-indent: -9999px;
}
}
> a[class^='icon-'] {
padding: 0;
width: 44px;
}
&:not(:first-child) a {
}
&:last-child {
font-weight: 600;
margin-right: 10px;
// Allow multiple span next to the main 'a'
a ~ span {
padding-left: 0;
}
}
&:hover, &:focus, a:focus, &:active {
> a,
> span {
opacity: .7;
}
}
}

42
css/icons.scss Normal file
View File

@@ -0,0 +1,42 @@
/**
* Custom icons
*/
.icon-deck {
background-image: url('../img/deck-dark.svg');
}
.icon-group {
background-image: url('../../../settings/img/users.svg');
}
.icon-help {
background-image: url('../../../settings/img/help.svg');
}
.icon-add-white {
background-image: url('../img/add-white.svg');
}
.icon-archive {
background-image: url('../img/archive.svg');
}
.icon-archive-white {
background-image: url('../img/archive-white.svg');
}
.icon-details {
background-image: url('../img/details.svg');
}
.icon-details-white {
background-image: url('../img/details-white.svg');
}
.icon-home {
background-image: url('../../../core/img/places/home.svg');
}
.icon-badge {
background-image: url('../../../core/img/places/calendar-dark.svg');
}

View File

@@ -1,934 +0,0 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
* @author Artem Anufrij <artem.anufrij@live.de>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* General styles
*/
.app-deck .icon {
display: inline-block;
}
input.input-inline {
font-size: inherit !important;
font-weight: inherit;
background-color: transparent;
padding: 0;
border: none;
width: 100%;
border-bottom: 1px solid #333333;
-webkit-border-radius: 0;
line-height: 100%;
margin: -4px 0;
}
button {
border: 0;
background-color: transparent;
}
button:hover {
border: 0;
background-color: transparent;
}
#searchbox {
display: block !important;
}
/**
* Navigation sidebar
*/
.app-navigation-entry-utils-menu-button {
display: block !important;
}
.app-navigation-entry-utils-menu-share {
display: block !important;
text-align: right;
padding-top: 3px;
padding-right: 5px;
opacity: 0.4;
}
#app-navigation .app-navigation-entry-edit {
height: auto;
}
#app-navigation .board-bullet {
position: absolute;
margin-left: 17px;
margin-top: 16px;
width: 12px;
height: 12px;
border: none;
border-radius: 50%;
cursor: pointer;
}
#app-navigation .app-navigation-entry-utils li.board-delete-undo {
background-color: #aa0000;
color: #fff;
cursor: pointer;
width: auto !important;
}
/**
* Board view
*/
#board-status {
position: absolute;
z-index: 999;
width: 100%;
height: 100%;
background-color: #fff;
}
#board {
position: relative;
height: 100%;
white-space: nowrap;
overflow: auto;
top: -40px;
padding: 40px 0 0;
z-index: 100;
width: 100%;
}
#board #innerBoard {
padding: 10px;
}
#board-header {
width: inherit;
color: #333333;
position: relative;
z-index: 120;
height: 44px;
background-color: #eee;
}
#board-header h1 {
font-size: 14pt;
margin: 0;
padding: 12px;
float: left;
}
#board-actions {
font-size: 10pt;
float: right;
position: relative;
color: #888;
margin: 8px;
}
#board-actions .filter .filter-button {
margin-left: 10px;
margin-right: 10px;
}
#board-actions .filter:hover {
color: #333333;
cursor: pointer;
}
.filter-select {
position: absolute;
right: auto;
top: 42px;
left: -21%;
}
.filter-select li {
padding: 3px;
overflow: hidden;
width: auto;
}
.filter-select li span {
display: block;
float: left;
width: 20px;
height: 20px;
margin-right: 5px;
}
#board-actions div {
padding: 5px;
float: left;
}
.board-actions button {
border: none;
background-color: transparent;
}
.board-action-button {
font-size: 12pt;
font-weight: 100;
border: none;
margin-left: 10px;
}
#stack-add {
float: right;
margin: 8px;
background-color: #ffffff;
border: 1px solid #bbb;
border-radius: 4px;
}
#stack-add input {
padding: 4px 5px;
margin: 0px;
border: 0px none transparent;
display: table-cell;
vertical-align: middle;
min-height: initial;
}
#stack-add input:invalid {
box-shadow: none;
}
#stack-add input:-moz-submit-invalid {
box-shadow: none;
}
#stack-add input:-moz-ui-invalid {
box-shadow:none;
}
#stack-add button {
display: table-cell;
vertical-align: middle;
}
.stack {
width: 320px;
margin-right: 10px;
vertical-align: top;
display: inline-block !important;
background-color: #f8f8f8;
}
.stack h2 {
padding: 10px 10px 8px;
margin: 0;
font-size: 12pt;
font-weight: 700;
overflow: hidden;
height: 40px;
}
.stack h2 input {
padding: 0;
width: 80%;
margin: 0;
font-size: 12pt;
font-weight: 700;
border: 0;
background-color: transparent;
float: left;
min-height: initial;
}
.stack h2 button,
.stack .stack-actions {
float: right;
}
.stack h2 span {
float: left;
}
.stack h2 .stack-actions {
display: none;
}
.stack h2:hover .stack-actions {
display: inline-block;
float: right;
}
.card {
background-color: #ffffff;
margin: 10px;
white-space: normal;
position: relative;
opacity: 1.0;
-webkit-box-shadow: 0 0 5px #bbb;
}
.card.archived .card-upper {
opacity: 0.5;
}
.card-upper {
overflow: hidden;
position: relative;
padding: 5px;
}
.card .card-options {
position: absolute;
bottom: 10px;
right: 10px;
display: none;
}
.card:hover .card-options {
display: block;
}
.card .popovermenu {
z-index: 999;
opacity: 1;
margin-left: 10px;
display: block;
}
.card .popovermenu.hidden {
display: none;
}
.card .card-assignees {
margin: 5px;
}
.card:hover {
background-color: #fcfcfc;
}
.card a {
display: block;
}
.card h3 {
font-weight: bold;
font-size: 10pt;
padding: 0;
margin: 5px;
display: inline-block;
float: left;
}
.card.has-labels h3 {
margin-top: 15px;
}
.card .labels {
position: absolute;
top: -5px;
left: 10px;
}
.card .labels li {
padding: 0;
width: 15px;
height: 20px;
-webkit-border-radius: 3px;
font-size: 80%;
border: none transparent;
float: left;
}
.card .labels li span {
display: none;
}
.card .labels li:hover {
}
.card .labels li:hover span {
position: absolute;
padding: 3px;
background-color: inherit;
}
.as-sortable-placeholder {
margin: 10px;
border: 1px dashed #aaa;
}
.info {
padding-left: 5px;
padding-right: 5px;
display: inline-block;
color: #aaa;
}
.info i {
margin-left: 2px;
}
.info span {
margin-right: 2px;
}
.card.create {
text-align: center;
padding: 10px;
margin: 10px;
border: none;
overflow: hidden;
-webkit-box-shadow: none;
}
.card.create:hover {
text-align: center;
opacity: 1;
}
.card.create h3 {
width: 100%;
padding: 0;
margin: 0 0 1px;
}
.card.create h3 input {
width: 100%;
border: 0;
font-weight: bold;
font-size: 10pt;
margin: 0;
padding: 0;
border-bottom: 1px solid #ffffff;
border-radius: 0;
color: #ffffff;
background-color: transparent !important;
min-height: initial;
}
.due {
background-color: #eee;
color: #aaa;
padding: 1px 3px;
border-radius: 4px;
margin-right: 2px;
}
/**
* Card view right sidebar
*/
#card-header {
}
#card-header h2 {
font-size: 14pt;
padding: 10px 10px 9px;
overflow: hidden;
margin-bottom: 0;
background-color: #f0f0f0;
}
.icon-close {
position: absolute;
top: 5px;
right: 5px;
}
#card-meta {
height: 100%;
display: flex;
flex-direction: column;
}
#card-dates {
font-size: 80%;
color: #aaaaaa;
margin-bottom: 3px;
}
#card-meta #labels {
margin-bottom: 10px;
}
#card-dates span {
}
#card-description {
height: 100%;
display: flex;
flex-direction: column;
}
#card-description > h3 {
border-bottom: 1px solid #333333;
font-weight: 600;
font-size: 10pt;
padding: 5px;
}
#card-description > div {
height: 100%;
}
#card-description textarea {
width: 100%;
height: 200px;
border: none;
margin: 0;
padding: 0;
}
#card-description .container {
background-color: white;
}
.save-indicator {
background-color: #009900;
color: #ffffff;
border-radius: 3px;
float: right;
padding: 1px 10px;
font-size: 8pt !important;
display: none;
}
#sidebar-header,
.card-block {
padding: 15px;
}
#card-attachments ul {
margin: 5px;
}
#card-attachments .details {
font-size: 8pt;
padding-left: 15px;
}
#attachment-add button {
background-color: #eeeeee;
font-size: 9pt;
}
#app-sidebar {
right: -500px;
max-width: 100%;
border-left: none;
width: 500px;
border-left: 1px solid #eeeeee;
display:flex;
flex-direction: column;
}
#app-sidebar.details-visible {
right: 0;
}
#app-content {
overflow: hidden;
}
#app-content.details-visible {
margin-right: 500px;
}
.labels {
display: block;
overflow: hidden;
}
.labels li {
padding: 1px;
-webkit-border-radius: 3px;
margin: 1px;
float: left;
color: #ffffff;
font-size: 80%;
font-weight: 900;
min-width: 20px;
display: inline-block;
text-align: center;
}
.avatardiv {
float: left;
background-color: #eee;
border-radius: 16px;
width: 32px;
height: 32px;
margin-right: 3px;
}
.avatardiv .icon-group {
margin: 7px;
opacity: 0.5;
display: block !important;
}
/**
* Color selection
*/
.colorselect {
overflow: hidden;
clear: both;
padding-top: 4px;
padding-left: 4px;
}
.colorselect .color {
opacity: 0.7;
width: 27px;
height: 27px;
float: left;
margin-right: 2px;
border: none;
}
.colorselect .selected {
opacity: 1.0;
border: 1px solid #333333;
}
.labels .colorselect {
padding: 0;
clear: none;
overflow: visible;
}
.labels .colorselect .color {
width: 26px;
height: 26px;
}
/**
* Board list main screen area
*/
#boardlist {
width: 100%;
height: 100%;
overflow: scroll;
}
#boardlist td .board-bullet {
width: 30px;
height: 30px;
border: none;
border-radius: 50%;
position: relative;
cursor: pointer;
display: block;
}
#boardlist td {
padding: 10px;
border-bottom: 1px solid #eee;
}
#boardlist span.icon {
width: 30px;
height: 30px;
display: inline-block;
}
.cell-board-bullet {
width: 60px;
}
.cell-board-title {
width: 50%;
}
#boardlist .colorselect,
#boardlist input {
float: left;
}
#boardlist .colorselect {
margin-top: 5px;
}
/**
* Board details
*/
#shareWithList {
list-style-type: none;
padding: 0 0 16px;
}
#shareWithList li {
padding-top: 5px;
padding-bottom: 5px;
font-weight: bold;
white-space: normal;
display: flex;
align-items: center;
}
#shareWithList .username {
padding-right: 8px;
padding-left: 8px;
white-space: nowrap;
text-overflow: ellipsis;
display: inline-block;
overflow: hidden;
vertical-align: middle;
}
.shareWithList .icon-delete {
display: inline-block;
background-size: 16px 16px;
width: 16px;
height: 16px;
padding: 0;
margin-top: 5px;
}
.shareOption {
margin-top: 4px;
}
#board-detail-labels {
padding: 10px;
}
#board-detail-labels ul li {
display: block;
font-size: 10pt;
float: none;
margin-bottom: 1px;
overflow: hidden;
}
#board-detail-labels ul li input {
float: left;
font-size: 10pt;
padding: 5px;
}
#board-detail-labels ul li .label-title {
float: left;
width: 88%;
font-size: 10pt;
padding: 5px;
border: none;
margin-right: 2px;
}
#board-detail-labels ul li a.icon {
float: right;
padding: 5px;
}
.label-create {
width: 88%;
}
.label-create .icon {
margin-bottom: -3px;
}
#board-detail-labels .color {
width: 28px;
height: 31px;
}
.tabHeaders {
clear: both;
overflow: hidden;
margin-bottom: 0;
}
#shareWithList .avatar {
float: left;
margin-top: -5px;
margin-right: 10px;
}
.ui-select-offscreen {
display: none;
}
.ui-select-match-close {
float: right;
z-index: 100;
position: relative;
display: inline-block !important;
margin-right: 7px;
}
.ui-select-match-item {
padding: 0;
float: left !important;
display: block;
}
.ui-select-match-item .select-label {
color: #fff;
padding: 6px 23px 6px 6px;
margin-right: -23px !important;
}
.select2-container-multi .select2-choices .select2-search-choice {
padding: 3px 0 !important;
border: 0 !important;
overflow: hidden;
}
.ui-select-container[disabled] .ui-select-match-item .select-label {
padding: 4px;
min-width: 26px !important;
height: 100%;
display: inline-block;
}
.ui-select-container[disabled] .ui-select-match-item {
margin-right: 0 !important;
}
.select2-search input {
width:100% !important;
}
/**
* Mobile optimizations
*/
@media (max-width: 480px) {
/* hide board actions on mobile */
#board-actions {
display: none !important;
}
}
@media only screen and (max-width: 768px) {
#board-header h1 {
margin-left: 50px;
}
}
/**
* Markdown rendering
*/
#markdown {
width: 100% !important;
}
#markdown p {
margin-bottom: 15px;
}
#markdown * {
white-space: normal;
word-wrap: break-word;
overflow-wrap: break-word;
}
#markdown a {
color: #666666;
text-decoration: underline;
}
#markdown ol, #markdown ul {
margin-left: 20px;
margin-bottom: 10px;
}
#markdown ul {
list-style-type: disc;
}
#markdown h1 {
font-size: 18px;
font-weight: 600;
margin-bottom: 5px;
}
#markdown h2 {
font-size: 16px;
font-weight: 600;
}
#markdown h3 {
font-size: 14px;
font-weight: 600;
}
#markdown h4 {
font-size: 13px;
font-weight: 600;
}
#markdown h6 {
font-size: 12px;
font-weight: 600;
}
#markdown pre {
background-color: #eeeeee;
padding: 3px;
}
/**
* Custom icons
*/
.icon-group {
background-image: url('../../../settings/img/users.svg');
}
.icon-add-white {
background-image: url('../img/add-white.svg');
}
.icon-archive {
background-image: url('../img/archive.svg');
}
.icon-archive-white {
background-image: url('../img/archive-white.svg');
}
.icon-details {
background-image: url('../img/details.svg');
}
.icon-details-white {
background-image: url('../img/details-white.svg');
}
.icon-description-marker {
position: absolute;
top: 2px;
right: 2px;
}
/**
* Hotfix for https://github.com/angular-ui/ui-select/issues/1652
*/
.ui-select-dropdown.select2-drop-active {
opacity: 1 !important;
}

1244
css/style.scss Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="svg2"><style id="style4">.st0{display:none}.st1{display:inline}.st2{fill:#0071bc}.st3{display:inline}.st3,.st4{fill:#fff}</style><g id="Ebene_3"><path class="st4" d="M432.3 448.1h-348c-13.2 0-24-10.8-24-24V264.6c0-13.2 10.8-24 24-24h348c13.2 0 24 10.8 24 24v159.5c0 13.2-10.8 24-24 24zM380.4 89.8H127.8c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h252.6c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14zm19.4 61.8H110.6c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h289.2c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14zm21.6 61.4H94.6c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h326.8c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14z" id="path12" fill="#fff"/></g></svg>

Before

Width:  |  Height:  |  Size: 715 B

1
img/calendar-white.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" version="1.1" height="32" viewbox="0 0 32 32"><path fill="#fff" d="m8 2c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm16 0c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm-13 4v2c0 1.662-1.338 3-3 3s-3-1.338-3-3v-1.875a3.993 3.993 0 0 0 -3 3.875v16c0 2.216 1.784 4 4 4h20c2.216 0 4-1.784 4-4v-16a3.993 3.993 0 0 0 -3 -3.875v1.875c0 1.662-1.338 3-3 3s-3-1.338-3-3v-2zm-4.906 10h19.812a0.09 0.09 0 0 1 0.094 0.094v9.812a0.09 0.09 0 0 1 -0.094 0.094h-19.812a0.09 0.09 0 0 1 -0.094 -0.094v-9.812a0.09 0.09 0 0 1 0.094 -0.094z"/></svg>

After

Width:  |  Height:  |  Size: 646 B

6
img/deck-dark.svg Normal file
View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
<rect ry="1" height="8" width="14" y="7" x="1"/>
<rect ry=".5" height="1" width="12" y="5" x="2"/>
<rect ry=".5" height="1" width="10" y="3" x="3"/>
<rect ry=".5" height="1" width="8" y="1" x="4"/>
</svg>

After

Width:  |  Height:  |  Size: 311 B

8
img/deck.svg Normal file
View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
<g fill="#fff">
<rect ry="1" height="8" width="14" y="7" x="1"/>
<rect ry=".5" height="1" width="12" y="5" x="2"/>
<rect ry=".5" height="1" width="10" y="3" x="3"/>
<rect ry=".5" height="1" width="8" y="1" x="4"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 364 B

View File

@@ -20,9 +20,10 @@
*
*/
/* global module */
module.exports = function(grunt) {
'use strict';
'use strict';
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
@@ -37,13 +38,13 @@ module.exports = function(grunt) {
pkg: grunt.file.readJSON('package.json'),
version: '<%= meta.pkg.version %>',
configJS: 'config/',
buildJS: [
'app/**/*.js',
'controller/**/*.js',
'filters/**/*.js',
'directive/**/*.js',
'service/**/*.js'
],
buildJS: [
'app/**/*.js',
'controller/**/*.js',
'filters/**/*.js',
'directive/**/*.js',
'service/**/*.js'
],
productionJS: 'public/',
testsJS: '../tests/js/'
},

View File

@@ -1,10 +0,0 @@
build:
./node_modules/.bin/grunt build
watch:
./node_modules/.bin/grunt watch
install:
npm install
./node_modules/.bin/bower install

View File

@@ -20,6 +20,9 @@
*
*/
/* global angular */
angular.module('markdown', [])
.provider('markdown', [function () {
var opts = {};

View File

@@ -20,53 +20,61 @@
*
*/
/* global app oc_requesttoken markdownitLinkTarget */
app.config(function ($provide, $routeProvider, $interpolateProvider, $httpProvider, $urlRouterProvider, $stateProvider, $compileProvider, markdownItConverterProvider) {
'use strict';
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
'use strict';
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
$compileProvider.debugInfoEnabled(true);
$compileProvider.debugInfoEnabled(true);
markdownItConverterProvider.config({
breaks: true,
linkify: true,
xhtmlOut: true
});
markdownItConverterProvider.use(markdownitLinkTarget);
markdownItConverterProvider.config({
breaks: true,
linkify: true,
xhtmlOut: true
});
markdownItConverterProvider.use(markdownitLinkTarget);
$urlRouterProvider.otherwise("/");
$urlRouterProvider.otherwise('/');
$stateProvider
.state('list', {
url: "/",
templateUrl: "/boardlist.mainView.html",
controller: 'ListController'
$stateProvider
.state('list', {
url: '/:filter',
templateUrl: '/boardlist.mainView.html',
controller: 'ListController',
reloadOnSearch: false,
params: {
filter: {value: '', dynamic: true}
}
})
.state('board', {
url: "/board/:boardId/:filter",
templateUrl: "/board.html",
controller: 'BoardController',
params: {
filter: { value: '', dynamic: true }
}
})
.state('board.detail', {
url: "/detail/",
reloadOnSearch : false,
views: {
"sidebarView": {
templateUrl: "/board.sidebarView.html"
.state('board', {
url: '/board/:boardId/:filter',
templateUrl: '/board.html',
controller: 'BoardController',
params: {
filter: {value: '', dynamic: true}
}
})
.state('board.detail', {
url: '/detail/',
reloadOnSearch: false,
params: {
tab: {value: 0, dynamic: true},
},
views: {
'sidebarView': {
templateUrl: '/board.sidebarView.html'
}
}
}
})
.state('board.card', {
url: "/card/:cardId",
views: {
"sidebarView": {
templateUrl: "/card.sidebarView.html",
controller: 'CardController'
}
}
});
.state('board.card', {
url: '/card/:cardId',
views: {
'sidebarView': {
templateUrl: '/card.sidebarView.html',
controller: 'CardController'
}
}
});
});

View File

@@ -20,33 +20,63 @@
*
*/
app.run(function ($document, $rootScope, $transitions) {
'use strict';
$document.click(function (event) {
$rootScope.$broadcast('documentClicked', event);
});
$transitions.onEnter({to: 'board.card'}, function ($state, $transition$) {
$rootScope.sidebar.show = true;
});
$transitions.onEnter({to: 'board.detail'}, function ($state, $transition$) {
$rootScope.sidebar.show = true;
});
$transitions.onEnter({to: 'board'}, function ($state) {
$rootScope.sidebar.show = false;
});
$transitions.onExit({from: 'board.card'}, function ($state) {
$rootScope.sidebar.show = false;
});
$transitions.onExit({from: 'board.detail'}, function ($state) {
$rootScope.sidebar.show = false;
});
$transitions.onEnter({to: 'board.archive'}, function ($state) {
//BoardController.loadArchived();
});
/* global Snap */
app.run(function ($document, $rootScope, $transitions, BoardService) {
'use strict';
$document.click(function (event) {
$rootScope.$broadcast('documentClicked', event);
});
$transitions.onEnter({from: 'list'}, function ($state, $transition$) {
BoardService.unsetCurrrent();
});
$transitions.onEnter({to: 'list'}, function ($state, $transition$) {
BoardService.unsetCurrrent();
document.title = "Deck - " + oc_defaults.name;
});
$transitions.onEnter({to: 'board.card'}, function ($state, $transition$) {
$rootScope.sidebar.show = true;
});
$transitions.onEnter({to: 'board.detail'}, function ($state, $transition$) {
$rootScope.sidebar.show = true;
});
$transitions.onEnter({to: 'board'}, function ($state) {
$rootScope.sidebar.show = false;
});
$transitions.onExit({from: 'board.card'}, function ($state) {
$rootScope.sidebar.show = false;
});
$transitions.onExit({from: 'board.detail'}, function ($state) {
$rootScope.sidebar.show = false;
});
$('link[rel="shortcut icon"]').attr(
'href',
OC.filePath('deck', 'img', 'app-512.png')
);
$('link[rel="shortcut icon"]').attr(
'href',
OC.filePath('deck', 'img', 'app-512.png')
);
$('#app-navigation-toggle').off('click');
// App sidebar on mobile
var snapper = new Snap({
element: document.getElementById('app-content'),
disable: 'right',
maxPosition: 250,
touchToDrag: false
});
$('#app-navigation-toggle').click(function () {
if ($(window).width() > 768) {
$('#app-navigation').toggle('hidden');
} else {
if (snapper.state().state === 'left') {
snapper.close();
} else {
snapper.open('left');
}
}
});
// Select all elements with data-toggle="tooltips" in the document
$('body').tooltip({
selector: '[data-toggle="tooltip"]'
});
});

View File

@@ -14,7 +14,8 @@
"angular-ui-select": "~0.19.6",
"angular-markdown-it": "~0.6.1",
"angular-ui-router": "~1.0.0",
"markdown-it-link-target": "~1.0.1"
"markdown-it-link-target": "~1.0.1",
"jquery-timepicker": "883bb2cd94"
},
"license": "AGPL-3.0",
"private": true,

View File

@@ -20,10 +20,11 @@
*
*/
app.controller('AppController', function ($scope, $location, $http, $route, $log, $rootScope, $stateParams) {
$rootScope.sidebar = {
show: false
};
$scope.sidebar = $rootScope.sidebar;
$scope.user = oc_current_user;
/** global: OC */
app.controller('AppController', function ($scope, $location, $http, $route, $log, $rootScope) {
$rootScope.sidebar = {
show: false
};
$scope.sidebar = $rootScope.sidebar;
$scope.user = oc_current_user;
});

View File

@@ -20,6 +20,7 @@
*
*/
/* global oc_defaults OC */
app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter) {
$scope.sidebar = $rootScope.sidebar;
@@ -29,65 +30,87 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
addCard: [],
};
$scope.newLabel = {};
$scope.status.boardtab = $stateParams.detailTab;
$scope.OC = OC;
$scope.stackservice = StackService;
$scope.boardservice = BoardService;
$scope.cardservice = CardService;
$scope.statusservice = StatusService.getInstance();
$scope.labelservice = LabelService;
$scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD'];
$scope.board = BoardService.getCurrent();
// workaround for $stateParams changes not being propagated
$scope.$watch(function() {
return $state.params;
}, function (params) {
$scope.params = params;
}, true);
$scope.params = $state;
$scope.search = function (searchText) {
$scope.searchText = searchText;
$scope.refreshData();
};
$scope.board = BoardService.getCurrent();
StackService.clear(); //FIXME: Is this still needed?
$scope.$watch(function () {
if (typeof BoardService.getCurrent() !== 'undefined') {
return BoardService.getCurrent().title;
} else {
return null;
}
}, function () {
$scope.setPageTitle();
});
$scope.setPageTitle = function () {
if (BoardService.getCurrent()) {
document.title = BoardService.getCurrent().title + ' | Deck - ' + oc_defaults.name;
} else {
document.title = 'Deck - ' + oc_defaults.name;
}
};
$scope.statusservice.retainWaiting();
$scope.statusservice.retainWaiting();
// FIXME: ugly solution for archive
$scope.$state = $stateParams;
$scope.filter = $stateParams.filter;
$scope.$watch('$state.filter', function (name) {
$scope.filter = name;
});
// handle filter parameter for switching between archived/unarchived cards
$scope.switchFilter = function (filter) {
$state.go('.', {filter: filter}, {notify: false});
$scope.filter = filter;
$state.go('.', {filter: filter});
};
$scope.$watch('filter', function (name) {
if (name === "archive") {
$scope.$watch(function() {
return $scope.params.filter;
}, function (filter) {
if (filter === 'archive') {
$scope.loadArchived();
} else {
$scope.loadDefault();
}
});
$scope.stacksData = StackService;
$scope.stacks = {};
$scope.$watch('stacksData', function (value) {
$scope.stacks = [];
$scope.$watch('stacksData', function () {
$scope.refreshData();
}, true);
$scope.refreshData = function () {
if ($scope.filter === "archive") {
if ($scope.params.filter === 'archive') {
$scope.filterData('-lastModified', $scope.searchText);
} else {
$scope.filterData('order', $scope.searchText);
}
};
$scope.checkCanEdit = function () {
return !$scope.archived;
return !BoardService.getCurrent().archived;
};
// filter cards here, as ng-sortable will not work nicely with html-inline filters
$scope.filterData = function (order, text) {
if ($scope.stacks === undefined)
if ($scope.stacks === undefined) {
return;
angular.copy(StackService.getAll(), $scope.stacks);
}
angular.copy(StackService.getData(), $scope.stacks);
$scope.stacks = $filter('orderBy')($scope.stacks, 'order');
angular.forEach($scope.stacks, function (value, key) {
var cards = $filter('cardSearchFilter')(value.cards, text);
cards = $filter('orderBy')(cards, order);
@@ -113,8 +136,8 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
// Handle initial Loading
BoardService.fetchOne($scope.id).then(function (data) {
BoardService.getPermissions();
$scope.statusservice.releaseWaiting();
$scope.setPageTitle();
}, function (error) {
$scope.statusservice.setError('Error occured', error);
});
@@ -167,10 +190,12 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
};
$scope.labelCreate = function (label) {
label.boardId = $scope.id;
LabelService.create(label);
BoardService.getCurrent().labels.push(label);
$scope.status.createLabel = false;
$scope.newLabel = {};
LabelService.create(label).then(function (data) {
$scope.newStack.title = "";
BoardService.getCurrent().labels.push(data);
$scope.status.createLabel = false;
$scope.newLabel = {};
});
};
$scope.labelUpdate = function (label) {
label.edit = false;
@@ -189,9 +214,23 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
BoardService.updateAcl(acl);
};
$scope.aclTypeString = function (acl) {
if (typeof acl === 'undefined') {
return '';
}
switch (acl.type) {
case OC.Share.SHARE_TYPE_USER:
return 'user';
case OC.Share.SHARE_TYPE_GROUP:
return 'group';
default:
return '';
}
};
// settings for card sorting
$scope.sortOptions = {
id: 'card',
itemMoved: function (event) {
event.source.itemScope.modelValue.status = event.dest.sortableScope.$parent.column;
var order = event.dest.index;
@@ -202,7 +241,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
CardService.update(card);
CardService.reorder(card, order).then(function (data) {
StackService.addCard(card);
StackService.reorder(card, order);
StackService.reorderCard(card, order);
StackService.removeCard({
id: card.id,
stackId: oldStack
@@ -214,14 +253,50 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
var card = event.source.itemScope.c;
var stack = event.dest.sortableScope.$parent.s.id;
CardService.reorder(card, order).then(function (data) {
StackService.reorder(card, order);
StackService.reorderCard(card, order);
$scope.refreshData();
});
},
scrollableContainer: '#innerBoard',
containerPositioning: 'relative',
containment: '#innerBoard',
longTouch: true,
// auto scroll on drag
dragMove: function (itemPosition, containment, eventObj) {
if (eventObj) {
var container = $("#board");
var offset = container.offset();
var targetX = eventObj.pageX - (offset.left || container.scrollLeft());
var targetY = eventObj.pageY - (offset.top || container.scrollTop());
if (targetX < offset.left) {
container.scrollLeft(container.scrollLeft() - 25);
} else if (targetX > container.width()) {
container.scrollLeft(container.scrollLeft() + 25);
}
if (targetY < offset.top) {
container.scrollTop(container.scrollTop() - 25);
} else if (targetY > container.height()) {
container.scrollTop(container.scrollTop() + 25);
}
}
},
accept: function (sourceItemHandleScope, destSortableScope, destItemScope) {
return sourceItemHandleScope.sortableScope.options.id === 'card';
}
};
$scope.sortOptionsStack = {
id: 'stack',
orderChanged: function (event) {
var order = event.dest.index;
var stack = event.source.itemScope.s;
StackService.reorder(stack, order).then(function (data) {
$scope.refreshData();
});
},
scrollableContainer: '#board',
containerPositioning: 'relative',
containment: '#board',
// auto scroll on drag
containment: '#innerBoard',
dragMove: function (itemPosition, containment, eventObj) {
if (eventObj) {
var container = $("#board");
@@ -239,7 +314,17 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
container.scrollTop(container.scrollTop() + 50);
}
}
},
accept: function (sourceItemHandleScope, destSortableScope, destItemScope) {
return sourceItemHandleScope.sortableScope.options.id === 'stack';
}
};
$scope.labelStyle = function (color) {
return {
'background-color': '#' + color,
'color': $filter('textColorFilter')(color)
};
};
});

View File

@@ -1,5 +1,3 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
@@ -22,65 +20,167 @@
*
*/
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, BoardService, CardService, StackService, StatusService) {
$scope.sidebar = $rootScope.sidebar;
$scope.status = {};
/* global app moment */
$scope.cardservice = CardService;
$scope.cardId = $stateParams.cardId;
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService) {
$scope.sidebar = $rootScope.sidebar;
$scope.status = {
lastEdit: 0,
lastSave: Date.now()
};
$scope.statusservice = StatusService.getInstance();
$scope.boardservice = BoardService;
$scope.cardservice = CardService;
$scope.cardId = $stateParams.cardId;
$scope.statusservice.retainWaiting();
$scope.statusservice = StatusService.getInstance();
$scope.boardservice = BoardService;
CardService.fetchOne($scope.cardId).then(function(data) {
$scope.statusservice.releaseWaiting();
$scope.archived = CardService.getCurrent().archived;
}, function(error) {
});
$scope.statusservice.retainWaiting();
$scope.cardRenameShow = function() {
if($scope.archived || !BoardService.canEdit())
return false;
else {
$scope.status.cardRename=true;
}
};
$scope.cardEditDescriptionShow = function($event) {
var node = $event.target.nodeName;
console.log($event);
console.log(BoardService);
if($scope.card.archived || !$scope.boardservice.canEdit()) {
console.log(node);
} else {
console.log("edit");
$scope.status.cardEditDescription=true;
}
console.log($scope.status.canEditDescription);
};
// handle rename to update information on the board as well
$scope.cardRename = function(card) {
CardService.rename(card).then(function(data) {
StackService.updateCard(card);
$scope.status.renameCard = false;
});
};
$scope.cardUpdate = function(card) {
CardService.update(CardService.getCurrent()).then(function(data) {
$scope.status.cardEditDescription = false;
$('#card-description').find('.save-indicator').fadeIn(500).fadeOut(1000);
});
};
CardService.fetchOne($scope.cardId).then(function (data) {
$scope.statusservice.releaseWaiting();
$scope.archived = CardService.getCurrent().archived;
}, function (error) {
});
$scope.labelAssign = function(element, model) {
CardService.assignLabel($scope.cardId, element.id);
var card = CardService.getCurrent();
StackService.updateCard(card);
};
$scope.labelRemove = function(element, model) {
CardService.removeLabel($scope.cardId, element.id)
}
$scope.cardRenameShow = function () {
if ($scope.archived || !BoardService.canEdit())
{return false;}
else {
$scope.status.cardRename = true;
}
};
$scope.cardEditDescriptionShow = function ($event) {
if (BoardService.isArchived() || CardService.getCurrent().archived) {
return false;
}
if ($scope.card.archived || !$scope.boardservice.canEdit()) {
return false;
}
$scope.status.cardEditDescription = true;
$scope.status.edit = angular.copy(CardService.getCurrent());
return true;
};
$scope.cardEditDescriptionChanged = function ($event) {
$scope.status.lastEdit = Date.now();
var header = $('.section-header.card-description');
header.find('.save-indicator.unsaved').show();
header.find('.save-indicator.saved').hide();
};
$interval(function() {
var currentTime = Date.now();
var timeSinceEdit = currentTime-$scope.status.lastEdit;
if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave) {
$scope.status.lastSave = currentTime;
var header = $('.section-header.card-description');
header.find('.save-indicator.unsaved').fadeIn(500);
CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header.card-description');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
});
}
}, 500);
});
// handle rename to update information on the board as well
$scope.cardRename = function (card) {
CardService.rename(card).then(function (data) {
StackService.updateCard(card);
$scope.status.renameCard = false;
});
};
$scope.cardUpdate = function (card) {
CardService.update(card).then(function (data) {
$scope.status.cardEditDescription = false;
var header = $('.section-content.card-description');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000);
StackService.updateCard(card);
});
};
$scope.labelAssign = function (element, model) {
CardService.assignLabel($scope.cardId, element.id).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
};
$scope.labelRemove = function (element, model) {
CardService.removeLabel($scope.cardId, element.id).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
};
$scope.setDuedate = function (duedate) {
var element = CardService.getCurrent();
var newDate = moment(element.duedate);
if(!newDate.isValid()) {
newDate = moment();
}
newDate.date(duedate.date());
newDate.month(duedate.month());
newDate.year(duedate.year());
element.duedate = newDate.toISOString();
CardService.update(element);
StackService.updateCard(element);
};
$scope.setDuedateTime = function (time) {
var element = CardService.getCurrent();
var newDate = moment(element.duedate);
if(!newDate.isValid()) {
newDate = moment();
}
newDate.hour(time.hour());
newDate.minute(time.minute());
element.duedate = newDate.toISOString();
CardService.update(element);
StackService.updateCard(element);
};
$scope.resetDuedate = function () {
var element = CardService.getCurrent();
element.duedate = null;
CardService.update(element);
StackService.updateCard(element);
};
/**
* Show ui-select field when clicking the add button
*/
$scope.showAssignUser = function() {
$scope.status.showAssignUser = true;
$timeout(function() {
$('#assignUserSelect').find('a').click();
});
};
/**
* Hide ui-select when select list is closed
*/
$scope.assingUserOpenClose = function(isOpen) {
if (!isOpen) {
$scope.status.showAssignUser = false;
}
};
$scope.addAssignedUser = function(item) {
CardService.assignUser(CardService.getCurrent(), item.uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
$scope.status.showAssignUser = false;
};
$scope.removeAssignedUser = function(uid) {
CardService.unassignUser(CardService.getCurrent(), uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
};
$scope.labelStyle = function (color) {
return {
'background-color': '#' + color,
'color': $filter('textColorFilter')(color)
};
};
});

View File

@@ -1,4 +1,3 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
@@ -21,34 +20,119 @@
*
*/
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout) {
/* global app angular */
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) {
function calculateNewColor() {
var boards = BoardService.getAll();
var boardKeys = Object.keys(boards);
var colorOccurrences = [];
for (var i = 0; i < $scope.colors.length; i++) {
colorOccurrences.push(0);
}
for (var j = 0; j < boardKeys.length; j++) {
var key = boardKeys[j];
var board = boards[key];
if (board && $scope.colors.indexOf(board.color) !== -1) {
colorOccurrences[$scope.colors.indexOf(board.color)]++;
}
}
return $scope.colors[colorOccurrences.indexOf(Math.min.apply(Math, colorOccurrences))];
}
$scope.boards = [];
$scope.newBoard = {};
$scope.status = {
deleteUndo: []
deleteUndo: [],
filter: $stateParams.filter ? $stateParams.filter : '',
sidebar: false
};
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
$scope.boardservice = BoardService;
$scope.newBoard.color = $scope.colors[0];
$scope.updatingBoard = null;
// FIXME: not nice, but we want to load this only once
if($element.attr('id') === 'app-navigation') {
BoardService.fetchAll().then(function(data) {
$scope.filterData();
}, function (error) {
// TODO: show error when loading fails
});
}
$scope.filterData = function () {
angular.copy($scope.boardservice.getData(), $scope.boardservice.sorted);
$scope.boardservice.sorted = $filter('orderBy')($scope.boardservice.sorted, 'title');
var filterData = function () {
if($element.attr('id') === 'app-navigation') {
$scope.boardservice.sidebar = $scope.boardservice.getData();
$scope.boardservice.sidebar = $filter('orderBy')($scope.boardservice.sidebar, 'title');
$scope.boardservice.sidebar = $filter('cardFilter')($scope.boardservice.sidebar, {archived: false});
} else {
$scope.boardservice.sorted = $scope.boardservice.getData();
if ($scope.status.filter === 'archived') {
var filter = {};
filter[$scope.status.filter] = true;
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, filter);
} else if ($scope.status.filter === 'shared') {
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, {archived: false});
$scope.boardservice.sorted = $filter('boardFilterAcl')($scope.boardservice.sorted);
} else {
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, {archived: false});
}
$scope.boardservice.sorted = $filter('orderBy')($scope.boardservice.sorted, ['deletedAt', 'title']);
}
};
var finishedLoading = function() {
filterData();
$scope.newBoard.color = calculateNewColor();
};
var initialize = function () {
$scope.statusservice = StatusService.listStatus;
if($element.attr('id') === 'app-navigation') {
$scope.statusservice.retainWaiting();
BoardService.fetchAll().then(function(data) {
finishedLoading();
$scope.statusservice.releaseWaiting();
BoardService.loaded = true;
}, function (error) {
$scope.statusservice.setError('Error occured', error);
});
} else {
/* initialize main list controller when board list is loaded */
var boardDataWatch = $scope.$watch(function () {
return $scope.boardservice.loaded;
}, function () {
if (BoardService.loaded === true) {
boardDataWatch();
finishedLoading();
}
});
}
$scope.$watch(function () {
return $scope.boardservice.data;
}, function () {
filterData();
}, true);
/* Watch for board filter change */
$scope.$watchCollection(function(){
return $state.params;
}, function(){
$scope.status.filter = $state.params.filter;
filterData();
});
};
initialize();
$scope.selectColor = function(color) {
$scope.newBoard.color = color;
};
$scope.gotoBoard = function(board) {
if(board.deletedAt > 0) {
return false;
}
return $state.go('board', {boardId: board.id});
};
$scope.boardCreate = function() {
if(!$scope.newBoard.title || !$scope.newBoard.color) {
$scope.status.addBoard=false;
@@ -57,9 +141,9 @@ app.controller('ListController', function ($scope, $location, $filter, BoardServ
BoardService.create($scope.newBoard)
.then(function (response) {
$scope.newBoard = {};
$scope.newBoard.color = $scope.colors[0];
$scope.newBoard.color = calculateNewColor();
$scope.status.addBoard=false;
$scope.filterData();
filterData();
}, function(error) {
$scope.status.createBoard = 'Unable to insert board: ' + error.message;
});
@@ -67,31 +151,46 @@ app.controller('ListController', function ($scope, $location, $filter, BoardServ
$scope.boardUpdate = function(board) {
BoardService.update(board).then(function(data) {
$scope.filterData();
board.status.edit = false;
filterData();
});
};
$scope.boardUpdateBegin = function(board) {
$scope.updatingBoard = angular.copy(board);
};
$scope.boardUpdateReset = function(board) {
board.title = $scope.updatingBoard.title;
board.color = $scope.updatingBoard.color;
filterData();
board.status.edit = false;
};
$scope.boardArchive = function (board) {
board.archived = true;
BoardService.update(board).then(function(data) {
filterData();
});
};
$scope.boardUnarchive = function (board) {
board.archived = false;
BoardService.update(board).then(function(data) {
filterData();
});
};
$scope.boardDelete = function(board) {
var boardId = board.id;
$scope.status.deleteUndo[boardId] = 10;
$scope.boardDeleteCountdown = function () {
console.log($scope.status);
if($scope.status.deleteUndo[boardId] > 0) {
$scope.status.deleteUndo[boardId]--;
$timeout($scope.boardDeleteCountdown, 1000);
}
if($scope.status.deleteUndo[boardId] === 0) {
BoardService.delete(board.id).then(function (data) {
$scope.filterData();
});
}
};
$timeout($scope.boardDeleteCountdown, 1000);
BoardService.delete(board.id).then(function (data) {
filterData();
});
};
$scope.boardDeleteUndo = function (board) {
delete $scope.status.deleteUndo[board.id];
BoardService.deleteUndo(board.id).then(function (data) {
filterData();
});
};
});

View File

@@ -4,45 +4,44 @@
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
app.directive('appPopoverMenuUtils', function () {
'use strict';
return {
restrict: 'C',
link: function (scope, elm) {
var menu = elm.find('.popovermenu');
var button = elm.find('button');
button.click(function (e) {
menu.toggleClass('hidden');
if(!menu.hasClass('hidden')) {
button.css('display','block');
} else {
button.css('display','');
}
'use strict';
return {
restrict: 'C',
link: function (scope, elm) {
var menu = elm.find('.popovermenu');
var button = elm.find('button');
button.click(function (e) {
var popovermenus = $('.popovermenu');
var shouldShow = menu.hasClass('hidden');
popovermenus.addClass('hidden');
if (shouldShow) {
menu.toggleClass('hidden');
}
e.stopPropagation();
});
scope.$on('documentClicked', function (scope, event) {
if (event.target !== button) {
menu.addClass('hidden');
}
button.css('display','');
});
}
};
scope.$on('documentClicked', function (scope, event) {
/* prevent closing popover if target has no-close class */
if (event.target !== button && !$(event.target).hasClass('no-close')) {
menu.addClass('hidden');
}
});
}
};
});

View File

@@ -23,24 +23,24 @@
// OwnCloud Click Handling
// https://doc.owncloud.org/server/8.0/developer_manual/app/css.html
app.directive('appNavigationEntryUtils', function () {
'use strict';
return {
restrict: 'C',
link: function (scope, elm) {
'use strict';
return {
restrict: 'C',
link: function (scope, elm) {
var menu = elm.siblings('.app-navigation-entry-menu');
var button = $(elm)
.find('.app-navigation-entry-utils-menu-button button');
var menu = elm.siblings('.app-navigation-entry-menu');
var button = $(elm)
.find('.app-navigation-entry-utils-menu-button button');
button.click(function () {
menu.toggleClass('open');
});
scope.$on('documentClicked', function (scope, event) {
if (event.target !== button[0]) {
menu.removeClass('open');
}
});
}
};
button.click(function () {
menu.toggleClass('open');
});
scope.$on('documentClicked', function (scope, event) {
if (event.target !== button[0]) {
menu.removeClass('open');
}
});
}
};
});

View File

@@ -21,8 +21,8 @@
*/
app.directive('autofocusOnInsert', function () {
'use strict';
return function (scope, elm) {
elm.focus();
};
'use strict';
return function (scope, elm) {
elm.focus();
};
});

View File

@@ -23,14 +23,28 @@
app.directive('avatar', function() {
'use strict';
return {
restrict: 'A',
scope: true,
restrict: 'AEC',
transclude: true,
replace: true,
template: '<div class="avatardiv-container"><div class="avatardiv" data-toggle="tooltip" ng-transclude></div></div>',
scope: { attr: '=' },
link: function(scope, element, attr){
attr.$observe('displayname', function(value){
if(value!==undefined) {
$(element).avatar(value, 32);
}
});
}
scope.uid = attr.displayname;
scope.displayname = attr.displayname;
var value = attr.user;
var avatardiv = $(element).find('.avatardiv');
if(typeof attr.contactsmenu !== 'undefined' && attr.contactsmenu !== 'false') {
avatardiv.contactsMenu(value, 0, $(element));
avatardiv.addClass('has-contactsmenu');
}
if(typeof attr.tooltip !== 'undefined' && attr.tooltip !== 'false') {
$(element).tooltip({
title: scope.displayname,
placement: 'top'
});
}
avatardiv.avatar(value, 32, false, false, false, attr.displayname);
},
controller: function () {}
};
});

View File

@@ -0,0 +1,41 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
app.directive('contactsmenudelete', function() {
'use strict';
return {
restrict: 'A',
priority: 1,
link: function(scope, element, attr){
var user = attr.user;
var menu = $(element).parent().find('.contactsmenu-popover');
if (oc_current_user === user) {
menu.children(':first').remove();
}
var menuEntry = $('<li><a><span class="icon icon-delete"></span><span>' + t('deck', 'Remove user from card') + '</span></a></li>');
menuEntry.on('click', function () {
scope.removeAssignedUser(user);
});
$(menu).append(menuEntry);
}
};
});

View File

@@ -0,0 +1,53 @@
/*
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global app */
/* gloabl t */
/* global moment */
app.directive('datepicker', function () {
'use strict';
return {
link: function (scope, elm, attr) {
return elm.datepicker({
dateFormat: 'yy-mm-dd',
onSelect: function(date, inst) {
scope.setDuedate(moment(date));
scope.$apply();
},
beforeShow: function(input, inst) {
var dp, marginLeft;
dp = $(inst).datepicker('widget');
marginLeft = -Math.abs($(input).outerWidth() - dp.outerWidth()) / 2 + 'px';
dp.css({
'margin-left': marginLeft
});
$('div.ui-datepicker:before').css({
'left': 100 + 'px'
});
return $('.hasDatepicker').datepicker();
},
minDate: null
});
}
};
});

View File

@@ -0,0 +1,45 @@
/*
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global app */
/* global t */
/* global moment */
app.directive('timepicker', function() {
'use strict';
return {
restrict: 'A',
link: function(scope, elm, attr) {
return elm.timepicker({
onSelect: function(date, inst) {
scope.setDuedateTime(moment('2000-01-01 ' + date));
scope.$apply();
},
myPosition: 'center top',
atPosition: 'center bottom',
hourText: t('deck', 'Hours'),
minuteText: t('deck', 'Minutes'),
showPeriodLabels: false
});
}
};
});

View File

@@ -1,27 +1,33 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
app.filter('relativeDateFilter', function() {
return function (timestamp) {
return OC.Util.relativeModifiedDate(timestamp*1000);
}
});
app.filter('boardFilterAcl', function() {
return function(boards) {
var _result = [];
angular.forEach(boards, function(board){
if(board.acl !== null && Object.keys(board.acl).length > 0) {
_result.push(board);
}
});
return _result;
};
});

View File

@@ -23,16 +23,17 @@
// usage | cardFilter({ member: 'admin'})
app.filter('cardFilter', function() {
return function(cards, rules) {
var _result = {};
return function(cards, rules) {
var _result = [];
angular.forEach(cards, function(card){
var _card = card;
angular.some(rules, function(rule, condition) {
if(_card[rule]===condition) {
var keys = Object.keys(rules);
keys.some(function(key, condition) {
if(_card[key]===rules[key]) {
_result.push(_card);
}
});
});
return result;
};
return _result;
};
});

61
js/filters/dateFilters.js Normal file
View File

@@ -0,0 +1,61 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global app */
/* global OC */
/* global moment */
app.filter('relativeDateFilter', function() {
return function (timestamp) {
return OC.Util.relativeModifiedDate(timestamp*1000);
};
});
app.filter('relativeDateFilterString', function() {
return function (date) {
return OC.Util.relativeModifiedDate(Date.parse(date));
};
});
app.filter('dateToTimestamp', function() {
return function (date) {
return Date.parse(date);
};
});
app.filter('parseDate', function() {
return function (date) {
if(moment(date).isValid()) {
return moment(date).format('YYYY-MM-DD');
}
return '';
};
});
app.filter('parseTime', function() {
return function (date) {
if(moment(date).isValid()) {
return moment(date).format('HH:mm');
}
return '';
};
});

View File

@@ -20,7 +20,7 @@
*
*/
app.filter('iconWhiteFilter', function() {
app.filter('iconWhiteFilter', function () {
return function (hex) {
// RGB2HLS by Garry Tan
// http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
@@ -30,36 +30,37 @@ app.filter('iconWhiteFilter', function() {
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
if(result !== null) {
var r = color.r/255;
var g = color.g/255;
var b = color.b/255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min) / 2;
if (result === null) {
return "";
}
var r = color.r / 255;
var g = color.g / 255;
var b = color.b / 255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min) / 2;
if(max == min){
h = s = 0; // achromatic
}else{
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch(max){
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
case g: h = (b - r) / d + 2; break;
case b: h = (r - g) / d + 4; break;
}
h /= 6;
if (max === min) {
h = s = 0; // achromatic
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
// TODO: Maybe just darken/lighten the color
if(l<0.5) {
return "-white";
} else {
return "";
}
//var rgba = "rgba(" + color.r + "," + color.g + "," + color.b + ",0.7)";
//return rgba;
h /= 6;
}
if (l < 0.5) {
return "-white";
} else {
return "";
}
}
};
});

View File

@@ -33,5 +33,5 @@ app.filter('lightenColorFilter', function() {
} else {
return "#" + hex;
}
}
};
});

View File

@@ -22,10 +22,14 @@
app.filter('orderObjectBy', function(){
return function(input, attribute) {
if (!angular.isObject(input)) return input;
if (!angular.isObject(input)) {
return input;
}
var array = [];
for(var objectKey in input) {
array.push(input[objectKey]);
if ({}.hasOwnProperty.call(input, objectKey)) {
array.push(input[objectKey]);
}
}
array.sort(function(a, b){
@@ -34,5 +38,5 @@ app.filter('orderObjectBy', function(){
return a < b;
});
return array;
}
};
});

View File

@@ -20,36 +20,42 @@
*
*/
app.filter('textColorFilter', function() {
app.filter('textColorFilter', function () {
return function (hex) {
// RGB2HLS by Garry Tan
// http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
var result = /^([A-Fa-f\d]{2})([A-Fa-f\d]{2})([A-Fa-f\d]{2})$/i.exec(hex);
var result = /^#?([A-Fa-f\d]{2})([A-Fa-f\d]{2})([A-Fa-f\d]{2})$/i.exec(hex);
var color = result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
if(result !== null) {
var r = color.r/255;
var g = color.g/255;
var b = color.b/255;
if (result !== null) {
var r = color.r / 255;
var g = color.g / 255;
var b = color.b / 255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min) / 2;
if(max == min){
if (max === min) {
h = s = 0; // achromatic
}else{
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch(max){
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
case g: h = (b - r) / d + 2; break;
case b: h = (r - g) / d + 4; break;
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
if(l<0.5) {
if (l < 0.5) {
return "#ffffff";
} else {
return "#000000";
@@ -58,5 +64,5 @@ app.filter('textColorFilter', function() {
return "#000000";
}
}
};
});

View File

@@ -0,0 +1,45 @@
/*
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global app */
/* global angular */
/*
* Remove all assignedUsers from users list
*/
app.filter('withoutAssignedUsers', function () {
return function (users, assignedUsers) {
var _result = [];
angular.forEach(users, function (user) {
var _found = false;
angular.forEach(assignedUsers, function (assignedUser) {
if (assignedUser.participant.uid === user.uid) {
_found = true;
}
});
if (_found === false) {
_result.push(user);
}
});
return _result;
};
});

View File

@@ -16,7 +16,8 @@
"grunt-phpunit": "^0.3.6",
"grunt-wrap": "^0.3.0",
"jshint-stylish": "^2.2.1",
"karma": "^1.4.1"
"karma": "^1.4.1",
"node-sass": "^4.5.3"
},
"scripts": {
"test": "echo \"Warning: no test specified\" && exit 0"

View File

@@ -20,147 +20,152 @@
*
*/
app.factory('ApiService', function($http, $q){
var ApiService = function(http, endpoint) {
this.endpoint = endpoint;
this.baseUrl = OC.generateUrl('/apps/deck/' + endpoint);
this.http = http;
this.q = $q;
this.data = {};
this.id = null;
this.sorted = [];
};
/** global: oc_defaults */
app.factory('ApiService', function ($http, $q) {
var ApiService = function (http, endpoint) {
this.endpoint = endpoint;
this.baseUrl = OC.generateUrl('/apps/deck/' + endpoint);
this.http = http;
this.q = $q;
this.data = {};
this.id = null;
this.sorted = [];
};
ApiService.prototype.fetchAll = function(){
var deferred = $q.defer();
var self = this;
$http.get(this.baseUrl).then(function (response) {
var objects = response.data;
objects.forEach(function (obj) {
self.data[obj.id] = obj;
});
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Fetching ' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.fetchAll = function () {
var deferred = $q.defer();
var self = this;
$http.get(this.baseUrl).then(function (response) {
var objects = response.data;
objects.forEach(function (obj) {
self.data[obj.id] = obj;
});
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Fetching ' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.fetchOne = function (id) {
ApiService.prototype.fetchOne = function (id) {
this.id = id;
var deferred = $q.defer();
this.id = id;
var deferred = $q.defer();
if(id===undefined) {
return deferred.promise;
}
if (id === undefined) {
return deferred.promise;
}
var self = this;
$http.get(this.baseUrl + '/' + id).then(function (response) {
data = response.data;
if(self.data[data.id]===undefined) {
self.data[data.id] = response.data;
}
$.each(response.data, function(key, value) {
self.data[data.id][key] = value;
});
deferred.resolve(response.data);
var self = this;
$http.get(this.baseUrl + '/' + id).then(function (response) {
var data = response.data;
if (self.data[data.id] === undefined) {
self.data[data.id] = response.data;
}
$.each(response.data, function (key, value) {
self.data[data.id][key] = value;
});
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Fetching ' + self.endpoint + ' failed');
});
return deferred.promise;
};
}, function (error) {
deferred.reject('Fetching ' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.create = function (entity) {
var deferred = $q.defer();
var self = this;
$http.post(this.baseUrl, entity).then(function (response) {
self.add(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Fetching' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.create = function (entity) {
var deferred = $q.defer();
var self = this;
$http.post(this.baseUrl, entity).then(function (response) {
self.add(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Fetching' + self.endpoint + ' failed');
});
return deferred.promise;
};
ApiService.prototype.update = function (entity) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + entity.id, entity).then(function (response) {
self.add(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Updating ' + self.endpoint + ' failed');
});
return deferred.promise;
ApiService.prototype.update = function (entity) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + entity.id, entity).then(function (response) {
self.add(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Updating ' + self.endpoint + ' failed');
});
return deferred.promise;
};
};
ApiService.prototype.delete = function (id) {
var deferred = $q.defer();
var self = this;
ApiService.prototype.delete = function (id) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + id).then(function (response) {
self.remove(id);
deferred.resolve(response.data);
$http.delete(this.baseUrl + '/' + id).then(function (response) {
self.remove(id);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
return deferred.promise;
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
return deferred.promise;
};
};
// methods for managing data
ApiService.prototype.clear = function() {
this.data = {};
};
ApiService.prototype.add = function (entity) {
var element = this.data[entity.id];
if(element===undefined) {
this.data[entity.id] = entity;
} else {
Object.keys(entity).forEach(function (key) {
element[key] = entity[key];
if(element[key]!==null)
element[key].status = {};
});
}
};
ApiService.prototype.remove = function(id) {
if (this.data[id] !== undefined) {
delete this.data[id];
}
};
ApiService.prototype.addAll = function (entities) {
var self = this;
angular.forEach(entities, function(entity) {
self.add(entity);
});
};
ApiService.prototype.getCurrent = function () {
return this.data[this.id];
};
// methods for managing data
ApiService.prototype.clear = function () {
this.data = {};
};
ApiService.prototype.add = function (entity) {
var element = this.data[entity.id];
if (element === undefined) {
this.data[entity.id] = entity;
} else {
Object.keys(entity).forEach(function (key) {
element[key] = entity[key];
});
element.status = {};
}
};
ApiService.prototype.remove = function (id) {
if (this.data[id] !== undefined) {
delete this.data[id];
}
};
ApiService.prototype.addAll = function (entities) {
var self = this;
angular.forEach(entities, function (entity) {
self.add(entity);
});
};
ApiService.prototype.getData = function() {
return $.map(this.data, function(value, index) {
return [value];
});
};
ApiService.prototype.getCurrent = function () {
return this.data[this.id];
};
ApiService.prototype.getAll = function () {
return this.data;
};
ApiService.prototype.unsetCurrrent = function () {
this.id = null;
};
ApiService.prototype.getName = function() {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((this).constructor.toString());
return (results && results.length > 1) ? results[1] : "";
};
return ApiService;
ApiService.prototype.getData = function () {
return $.map(this.data, function (value, index) {
return [value];
});
};
ApiService.prototype.getAll = function () {
return this.data;
};
ApiService.prototype.getName = function () {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((this).constructor.toString());
return (results && results.length > 1) ? results[1] : "";
};
return ApiService;
});

View File

@@ -20,11 +20,38 @@
*
*/
app.factory('BoardService', function(ApiService, $http, $q){
var BoardService = function($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
BoardService.prototype = angular.copy(ApiService.prototype);
/* global app OC */
app.factory('BoardService', function (ApiService, $http, $q) {
var BoardService = function ($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
BoardService.prototype = angular.copy(ApiService.prototype);
BoardService.prototype.delete = function (id) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + id).then(function (response) {
self.data[id].deletedAt = response.data.deletedAt;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
return deferred.promise;
};
BoardService.prototype.deleteUndo = function (id) {
var deferred = $q.defer();
var self = this;
var _id = id;
$http.post(this.baseUrl + '/' + id + '/deleteUndo').then(function (response) {
self.data[_id].deletedAt = 0;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Deleting ' + self.endpoint + ' failed');
});
return deferred.promise;
};
BoardService.prototype.searchUsers = function (search) {
var deferred = $q.defer();
@@ -55,7 +82,7 @@ app.factory('BoardService', function(ApiService, $http, $q){
// filter out everyone who is already in the share list
angular.forEach(users, function (item) {
var acl = self.generateAcl('user', item);
var acl = self.generateAcl(OC.Share.SHARE_TYPE_USER, item);
var exists = false;
angular.forEach(self.getCurrent().acl, function (acl) {
if (acl.participant.primaryKey === item.value.shareWith) {
@@ -67,7 +94,7 @@ app.factory('BoardService', function(ApiService, $http, $q){
}
});
angular.forEach(groups, function (item) {
var acl = self.generateAcl('group', item);
var acl = self.generateAcl(OC.Share.SHARE_TYPE_GROUP, item);
var exists = false;
angular.forEach(self.getCurrent().acl, function (acl) {
if (acl.participant.primaryKey === item.value.shareWith) {
@@ -87,7 +114,7 @@ app.factory('BoardService', function(ApiService, $http, $q){
return deferred.promise;
};
BoardService.prototype.generateAcl = function(type, ocsItem) {
BoardService.prototype.generateAcl = function (type, ocsItem) {
return {
boardId: null,
id: null,
@@ -101,7 +128,7 @@ app.factory('BoardService', function(ApiService, $http, $q){
permissionManage: true,
permissionShare: true,
type: type
}
};
};
BoardService.prototype.addAcl = function (acl) {
@@ -122,75 +149,73 @@ app.factory('BoardService', function(ApiService, $http, $q){
return deferred.promise;
};
BoardService.prototype.deleteAcl = function(acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
delete board.acl[response.data.id];
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error deleting ACL ' + acl.id);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.deleteAcl = function (acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
delete board.acl[response.data.id];
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error deleting ACL ' + acl.id);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.updateAcl = function(acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
var _acl = acl;
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
board.acl[_acl.id] = response.data;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error updating ACL ' + _acl);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.updateAcl = function (acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
var _acl = acl;
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
board.acl[_acl.id] = response.data;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error updating ACL ' + _acl);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.getPermissions = function() {
var board = this.getCurrent();
var deferred = $q.defer();
$http.get(this.baseUrl + '/' + board.id + '/permissions').then(function (response) {
board.permissions = response.data;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error fetching board permissions ' + board);
});
};
BoardService.prototype.canRead = function () {
if (!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_READ'];
};
BoardService.prototype.canRead = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_READ'];
}
BoardService.prototype.canEdit = function () {
if (!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_EDIT'];
};
BoardService.prototype.canEdit = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_EDIT'];
}
BoardService.prototype.canManage = function (board) {
if (board !== null && board !== undefined) {
return board.permissions['PERMISSION_MANAGE'];
}
if (!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_MANAGE'];
};
BoardService.prototype.canManage = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_MANAGE'];
}
BoardService.prototype.canShare = function () {
if (!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_SHARE'];
};
BoardService.prototype.canShare = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_SHARE'];
}
BoardService.prototype.isArchived = function () {
if (!this.getCurrent() || this.getCurrent().archived) {
return true;
}
return false;
};
service = new BoardService($http, 'boards', $q);
return service;
});
return new BoardService($http, 'boards', $q);
});

View File

@@ -20,82 +20,118 @@
*
*/
app.factory('CardService', function(ApiService, $http, $q){
var CardService = function($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
CardService.prototype = angular.copy(ApiService.prototype);
app.factory('CardService', function (ApiService, $http, $q) {
var CardService = function ($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
CardService.prototype = angular.copy(ApiService.prototype);
CardService.prototype.reorder = function(card, order) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/reorder', {cardId: card.id, order: order, stackId: card.stackId}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.reorder = function (card, order) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/reorder', {
cardId: card.id,
order: order,
stackId: card.stackId
}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.rename = function(card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/rename', {cardId: card.id, title: card.title}).then(function (response) {
self.data[card.id].title = card.title;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while renaming ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.rename = function (card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/rename', {
cardId: card.id,
title: card.title
}).then(function (response) {
self.data[card.id].title = card.title;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while renaming ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.assignLabel = function(card, label) {
var url = this.baseUrl + '/' + card + '/label/' + label;
var deferred = $q.defer();
var self = this;
$http.post(url).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.removeLabel = function(card, label) {
var url = this.baseUrl + '/' + card + '/label/' + label;
var deferred = $q.defer();
var self = this;
$http.delete(url).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.assignLabel = function (card, label) {
var url = this.baseUrl + '/' + card + '/label/' + label;
var deferred = $q.defer();
var self = this;
$http.post(url).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.removeLabel = function (card, label) {
var url = this.baseUrl + '/' + card + '/label/' + label;
var deferred = $q.defer();
var self = this;
$http.delete(url).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
CardService.prototype.archive = function (card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/archive', {}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
CardService.prototype.archive = function (card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/archive', {}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
};
CardService.prototype.unarchive = function (card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/unarchive', {}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
CardService.prototype.unarchive = function (card) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + card.id + '/unarchive', {}).then(function (response) {
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
};
CardService.prototype.assignUser = function (card, user) {
var deferred = $q.defer();
var self = this;
if (self.getCurrent().assignedUsers === null) {
self.getCurrent().assignedUsers = [];
}
$http.post(this.baseUrl + '/' + card.id + '/assign', {'userId': user}).then(function (response) {
self.getCurrent().assignedUsers.push(response.data);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
service = new CardService($http, 'cards', $q);
return service;
};
CardService.prototype.unassignUser = function (card, user) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + card.id + '/assign/' + user, {}).then(function (response) {
self.getCurrent().assignedUsers = self.getCurrent().assignedUsers.filter(function (obj) {
return obj.participant.uid !== user;
});
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
var service = new CardService($http, 'cards', $q);
return service;
});

View File

@@ -20,11 +20,10 @@
*
*/
app.factory('LabelService', function(ApiService, $http, $q){
var LabelService = function($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
LabelService.prototype = angular.copy(ApiService.prototype);
service = new LabelService($http, 'labels', $q);
return service;
app.factory('LabelService', function (ApiService, $http, $q) {
var LabelService = function ($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
LabelService.prototype = angular.copy(ApiService.prototype);
return new LabelService($http, 'labels', $q);
});

View File

@@ -20,87 +20,105 @@
*
*/
app.factory('StackService', function(ApiService, $http, $q){
var StackService = function($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
StackService.prototype = angular.copy(ApiService.prototype);
StackService.prototype.fetchAll = function(boardId) {
var deferred = $q.defer();
var self=this;
$http.get(this.baseUrl +'/'+boardId).then(function (response) {
self.clear();
self.addAll(response.data);
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Error while loading stacks');
});
return deferred.promise;
};
app.factory('StackService', function (ApiService, $http, $q) {
var StackService = function ($http, ep, $q) {
ApiService.call(this, $http, ep, $q);
};
StackService.prototype = angular.copy(ApiService.prototype);
StackService.prototype.fetchAll = function (boardId) {
var deferred = $q.defer();
var self = this;
$http.get(this.baseUrl + '/' + boardId).then(function (response) {
self.clear();
self.addAll(response.data);
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Error while loading stacks');
});
return deferred.promise;
};
StackService.prototype.fetchArchived = function(boardId) {
var deferred = $q.defer();
var self=this;
$http.get(this.baseUrl +'/'+boardId+'/archived').then(function (response) {
self.clear();
self.addAll(response.data);
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Error while loading stacks');
});
return deferred.promise;
};
StackService.prototype.fetchArchived = function (boardId) {
var deferred = $q.defer();
var self = this;
$http.get(this.baseUrl + '/' + boardId + '/archived').then(function (response) {
self.clear();
self.addAll(response.data);
deferred.resolve(self.data);
}, function (error) {
deferred.reject('Error while loading stacks');
});
return deferred.promise;
};
StackService.prototype.addCard = function(entity) {
if(!this.data[entity.stackId].cards) {
this.data[entity.stackId].cards = [];
}
this.data[entity.stackId].cards.push(entity);
};
StackService.prototype.addCard = function (entity) {
if (!this.data[entity.stackId].cards) {
this.data[entity.stackId].cards = [];
}
this.data[entity.stackId].cards.push(entity);
};
StackService.prototype.reorder = function(entity, order) {
// assign new order
for(var i=0, j=0;i<this.data[entity.stackId].cards.length;i++) {
if(this.data[entity.stackId].cards[i].id === entity.id) {
this.data[entity.stackId].cards[i].order = order;
}
if(j === order) {
j++;
}
if(this.data[entity.stackId].cards[i].id !== entity.id) {
this.data[entity.stackId].cards[i].order = j++;
}
}
// sort array by order
this.data[entity.stackId].cards.sort(function(a,b) {
if (a.order < b.order)
return -1;
if (a.order > b.order)
return 1;
return 0;
});
};
StackService.prototype.reorder = function (stack, order) {
var deferred = $q.defer();
var self = this;
$http.put(this.baseUrl + '/' + stack.id + '/reorder', {
stackId: stack.id,
order: order
}).then(function (response) {
angular.forEach(response.data, function (value, key) {
var id = value.id;
self.data[id].order = value.order;
});
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
return deferred.promise;
};
StackService.prototype.updateCard = function(entity) {
var self = this;
var cards = this.data[entity.stackId].cards;
for(var i=0;i<cards.length;i++) {
if(cards[i].id == entity.id) {
cards[i] = entity;
}
}
};
StackService.prototype.removeCard = function(entity) {
var self = this;
var cards = this.data[entity.stackId].cards;
for(var i=0;i<cards.length;i++) {
if(cards[i].id == entity.id) {
cards.splice(i, 1);
}
}
};
service = new StackService($http, 'stacks', $q);
return service;
StackService.prototype.reorderCard = function (entity, order) {
// assign new order
for (var i = 0, j = 0; i < this.data[entity.stackId].cards.length; i++) {
if (this.data[entity.stackId].cards[i].id === entity.id) {
this.data[entity.stackId].cards[i].order = order;
}
if (j === order) {
j++;
}
if (this.data[entity.stackId].cards[i].id !== entity.id) {
this.data[entity.stackId].cards[i].order = j++;
}
}
// sort array by order
this.data[entity.stackId].cards.sort(function (a, b) {
if (a.order < b.order)
{return -1;}
if (a.order > b.order)
{return 1;}
return 0;
});
};
StackService.prototype.updateCard = function (entity) {
var self = this;
var cards = this.data[entity.stackId].cards;
for (var i = 0; i < cards.length; i++) {
if (cards[i].id === entity.id) {
cards[i] = entity;
}
}
};
StackService.prototype.removeCard = function (entity) {
var self = this;
var cards = this.data[entity.stackId].cards;
for (var i = 0; i < cards.length; i++) {
if (cards[i].id === entity.id) {
cards.splice(i, 1);
}
}
};
var service = new StackService($http, 'stacks', $q);
return service;
});

View File

@@ -20,58 +20,61 @@
*
*/
app.factory('StatusService', function(){
// Status Helper
var StatusService = function() {
this.active = true;
this.icon = 'loading';
this.title = '';
this.text = '';
this.counter = 0;
};
app.factory('StatusService', function () {
// Status Helper
var StatusService = function () {
this.active = true;
this.icon = 'loading';
this.title = '';
this.text = '';
this.counter = 0;
};
StatusService.prototype.setStatus = function($icon, $title, $text) {
this.active = true;
this.icon = $icon;
this.title = $title;
this.text = $text;
};
StatusService.prototype.setStatus = function ($icon, $title, $text) {
this.active = true;
this.icon = $icon;
this.title = $title;
this.text = $text;
};
StatusService.prototype.setError = function($title, $text) {
this.active = true;
this.icon = 'error';
this.title = $title;
this.text = $text;
this.counter = 0;
};
StatusService.prototype.setError = function ($title, $text) {
this.active = true;
this.icon = 'error';
this.title = $title;
this.text = $text;
this.counter = 0;
};
StatusService.prototype.releaseWaiting = function() {
if(this.counter>0)
this.counter--;
if(this.counter<=0) {
this.active = false;
this.counter = 0;
}
};
StatusService.prototype.releaseWaiting = function () {
if (this.counter > 0) {
this.counter--;
}
if (this.counter <= 0) {
this.active = false;
this.counter = 0;
}
};
StatusService.prototype.retainWaiting = function() {
this.active = true;
this.icon = 'loading';
this.title = '';
this.text = '';
this.counter++;
};
StatusService.prototype.retainWaiting = function () {
this.active = true;
this.icon = 'loading';
this.title = '';
this.text = '';
this.counter++;
};
StatusService.prototype.unsetStatus = function() {
this.active = false;
};
StatusService.prototype.unsetStatus = function () {
this.active = false;
};
return {
getInstance: function() {
return new StatusService();
}
}
return {
getInstance: function () {
return new StatusService();
},
/* Shared StatusService instance between both ListController instances */
listStatus: new StatusService()
};
});

33
krankerl.toml Normal file
View File

@@ -0,0 +1,33 @@
[package]
exclude = [
"build/",
".git",
"js/node_modules",
"js/tests",
"js/bower.json",
"js/.bowerrc",
"js/.jshintrc",
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"js/vendor/jquery",
"tests",
".codecov.yml",
"composer.json",
"composer.lock",
"_config.yml",
".drone.yml",
".travis.yml",
".eslintignore",
".eslintrc.yml",
".gitignore",
"issue_template.md",
"krankerl.toml",
"Makefile",
"run-eslint.sh"
]
before_cmds = [
'make clean-build',
'make build'
]

27
l10n/ast.js Normal file
View File

@@ -0,0 +1,27 @@
OC.L10N.register(
"deck",
{
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Show archived cards" : "Amosar tarxetes archivaes",
"Delete" : "Desaniciar",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Xestionar",
"Discard share" : "Escartar compartición",
"Title" : "Títulu",
"Members" : "Miembros",
"More actions" : "Más aiciones",
"by" : "por",
"Click to set" : "Primi p'afitar",
"Description" : "Descripción",
"Saved" : "Guardóse"
},
"nplurals=2; plural=(n != 1);");

25
l10n/ast.json Normal file
View File

@@ -0,0 +1,25 @@
{ "translations": {
"Hours" : "Hores",
"Minutes" : "Minutos",
"Finished" : "Finó",
"Action needed" : "Precísase aición",
"Later" : "Más sero",
"Deck" : "Deck",
"Show archived cards" : "Amosar tarxetes archivaes",
"Delete" : "Desaniciar",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Xestionar",
"Discard share" : "Escartar compartición",
"Title" : "Títulu",
"Members" : "Miembros",
"More actions" : "Más aiciones",
"by" : "por",
"Click to set" : "Primi p'afitar",
"Description" : "Descripción",
"Saved" : "Guardóse"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -9,25 +9,16 @@ OC.L10N.register(
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Labels" : "Етикети",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Create a new label" : "Създаване на нов етикет",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено",
"Attachments" : "Прикачени файлове",
"Comments" : "Коментари",
"History" : "История",
"Shared with you" : "Споделено с Вас",
"edit" : "редакция",
"delete" : "изтриване",
"remove share" : "премахване на споделяне"
"Saved" : "Запазено"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -7,25 +7,16 @@
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Labels" : "Етикети",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Create a new label" : "Създаване на нов етикет",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено",
"Attachments" : "Прикачени файлове",
"Comments" : "Коментари",
"History" : "История",
"Shared with you" : "Споделено с Вас",
"edit" : "редакция",
"delete" : "изтриване",
"remove share" : "премахване на споделяне"
"Saved" : "Запазено"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,26 +1,53 @@
OC.L10N.register(
"deck",
{
"Hours" : "Hores",
"Minutes" : "Minuts",
"Finished" : "Acabat",
"To review" : "Per revisar",
"Action needed" : "Acció necessaria",
"Later" : "Més tard",
"Deck" : "Coberta",
"Add a new stack" : "Afegeix una nova pila",
"Show archived cards" : "Mostra les targetes arxivades",
"Hide archived cards" : "Amaga les targetes arxivades",
"Board details" : "Detalls de la junta",
"All Boards" : "Totes les juntes",
"Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu",
"Unarchive" : "Desbloquejar",
"Delete" : "Esborra",
"Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir",
"Labels" : "Etiqueta",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
"Share" : "Comparteix",
"Edit" : "Edita",
"Create a new label" : "Crea una nova etiqueta",
"Manage" : "Gestor",
"Discard share" : "Descarta la compartició",
"Create a new tag" : "Crea una nova etiqueta",
"Title" : "Title",
"Members" : "Membres",
"More actions" : "Més accions",
"Edit board" : "Edita el tauler",
"Archive board" : "Arxiu",
"Unarchive board" : "Desbloquejar",
"Delete board" : "Eliminat",
"Create new board" : "Crear nova",
"New board title" : "Nou títol",
"Modified:" : "Modificat:",
"Created:" : "Creat:",
"by" : "per",
"Due date" : "Per la data",
"Click to set" : "Feu clic per configurar",
"Remove due date" : "Elimina la data de venciment",
"Description" : "Descripció",
"Formatting help" : "Format d'ajuda",
"Saved" : "Desat",
"Comments" : "Comentaris",
"History" : "Història",
"Shared with you" : "Us han compartit",
"edit" : "edita",
"delete" : "esborra"
"Add a card description…" : "Afegeix una descripció de la targeta ...",
"Shared boards" : "Taulers compartits",
"Move board to archive" : "Mou la placa a l'arxiu",
"Create a new board" : "Crear nova"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,24 +1,51 @@
{ "translations": {
"Hours" : "Hores",
"Minutes" : "Minuts",
"Finished" : "Acabat",
"To review" : "Per revisar",
"Action needed" : "Acció necessaria",
"Later" : "Més tard",
"Deck" : "Coberta",
"Add a new stack" : "Afegeix una nova pila",
"Show archived cards" : "Mostra les targetes arxivades",
"Hide archived cards" : "Amaga les targetes arxivades",
"Board details" : "Detalls de la junta",
"All Boards" : "Totes les juntes",
"Archived boards" : "Taulers arxivats",
"Archive" : "Arxiu",
"Unarchive" : "Desbloquejar",
"Delete" : "Esborra",
"Enter a card title" : "Introduïu un títol de la targeta",
"Sharing" : "Compartir",
"Labels" : "Etiqueta",
"Tags" : "Etiquetes",
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
"Share" : "Comparteix",
"Edit" : "Edita",
"Create a new label" : "Crea una nova etiqueta",
"Manage" : "Gestor",
"Discard share" : "Descarta la compartició",
"Create a new tag" : "Crea una nova etiqueta",
"Title" : "Title",
"Members" : "Membres",
"More actions" : "Més accions",
"Edit board" : "Edita el tauler",
"Archive board" : "Arxiu",
"Unarchive board" : "Desbloquejar",
"Delete board" : "Eliminat",
"Create new board" : "Crear nova",
"New board title" : "Nou títol",
"Modified:" : "Modificat:",
"Created:" : "Creat:",
"by" : "per",
"Due date" : "Per la data",
"Click to set" : "Feu clic per configurar",
"Remove due date" : "Elimina la data de venciment",
"Description" : "Descripció",
"Formatting help" : "Format d'ajuda",
"Saved" : "Desat",
"Comments" : "Comentaris",
"History" : "Història",
"Shared with you" : "Us han compartit",
"edit" : "edita",
"delete" : "esborra"
"Add a card description…" : "Afegeix una descripció de la targeta ...",
"Shared boards" : "Taulers compartits",
"Move board to archive" : "Mou la placa a l'arxiu",
"Create a new board" : "Crear nova"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,44 +1,73 @@
OC.L10N.register(
"deck",
{
"Deck" : "Balík",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
"Finished" : "Dokončeno",
"To review" : "K revizi",
"Action needed" : "Nutná akce",
"Later" : "Později",
"Deck" : "Balík",
"Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
"Board details" : "Detaily desky",
"All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky",
"Archive" : "Archiv",
"Unarchive" : "Zrušit archivování",
"Delete" : "Smazat",
"Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Labels" : "Štítky",
"Tags" : "Značky",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
"Access for" : "Přístup pro",
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
"Loading" : "Načítání",
"Share" : "Sdílet",
"Edit" : "Upravit",
"Manage" : "Spravovat",
"Discard share" : "Zrušit sdílení",
"Create a new label" : "Vytvořit nový štítek",
"Board title" : "Nadpis desky",
"Update" : "Aktualizovat",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit novou značku",
"Status" : "Stav",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
"Edit board" : "Upravit desku",
"Archive board" : "Archivovaná deska",
"Unarchive board" : "Odarchivovat desku",
"Delete board" : "Smazat desku",
"Reset" : "Obnovit",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
"Create new board" : "VYtvořit ovou desku",
"New board title" : "Nadpis nové desky",
"Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:",
"by" : "od",
"Choose a tag" : "Vyberte štítek",
"Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků",
"Assign users" : "Přiřadit uživatele",
"Assign this card to a user" : "Přiřadit kartu uživateli",
"Due date" : "Termín",
"Click to set" : "Klikněte pro výběr",
"Remove due date" : "Odstranit termín",
"Description" : "Popis",
"Formatting help" : "Nápověda k formátování",
"Saved" : "Uloženo",
"Add a card description ..." : "Přidat popis karty...",
"Attachments" : "Přílohy",
"Comments" : "Komentáře",
"History" : "Historie",
"All Boards" : "Všechny desky",
"Shared with you" : "Sdíleno s vámi",
"edit" : "upravit",
"delete" : "smazat",
"remove share" : "odebrat sdílení",
"Unsaved changes" : "Neuložené změny",
"Add a card description…" : "Přidat popis karty...",
"Shared boards" : "Sdílené desky",
"View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu",
"Create a new board" : "Vytvořit novou desku"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");

View File

@@ -1,42 +1,71 @@
{ "translations": {
"Deck" : "Balík",
"Hours" : "Hodiny",
"Minutes" : "Minuty",
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
"Finished" : "Dokončeno",
"To review" : "K revizi",
"Action needed" : "Nutná akce",
"Later" : "Později",
"Deck" : "Balík",
"Add a new stack" : "Přidat nový zásobník",
"Submit" : "Odeslat",
"Show archived cards" : "Zobrazit archivované karty",
"Hide archived cards" : "Skrýt archivované karty",
"Board details" : "Detaily desky",
"All Boards" : "Všechny desky",
"Archived boards" : "Archivované desky",
"Archive" : "Archiv",
"Unarchive" : "Zrušit archivování",
"Delete" : "Smazat",
"Enter a card title" : "Zadejte nadpis karty",
"Add card" : "Přidat kartu",
"Close" : "Zavřít",
"Sharing" : "Sdílení",
"Labels" : "Štítky",
"Tags" : "Značky",
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
"Access for" : "Přístup pro",
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
"Loading" : "Načítání",
"Share" : "Sdílet",
"Edit" : "Upravit",
"Manage" : "Spravovat",
"Discard share" : "Zrušit sdílení",
"Create a new label" : "Vytvořit nový štítek",
"Board title" : "Nadpis desky",
"Update" : "Aktualizovat",
"Create" : "Vytvořit",
"Create a new tag" : "Vytvořit novou značku",
"Status" : "Stav",
"Title" : "Název",
"Members" : "Členové",
"More actions" : "Více akcí",
"Edit board" : "Upravit desku",
"Archive board" : "Archivovaná deska",
"Unarchive board" : "Odarchivovat desku",
"Delete board" : "Smazat desku",
"Reset" : "Obnovit",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
"Create new board" : "VYtvořit ovou desku",
"New board title" : "Nadpis nové desky",
"Modified:" : "Upraveno:",
"Created:" : "Vytvořeno:",
"by" : "od",
"Choose a tag" : "Vyberte štítek",
"Add a tag" : "Přidat štítek",
"Select tags" : "Výběr štítků",
"Assign users" : "Přiřadit uživatele",
"Assign this card to a user" : "Přiřadit kartu uživateli",
"Due date" : "Termín",
"Click to set" : "Klikněte pro výběr",
"Remove due date" : "Odstranit termín",
"Description" : "Popis",
"Formatting help" : "Nápověda k formátování",
"Saved" : "Uloženo",
"Add a card description ..." : "Přidat popis karty...",
"Attachments" : "Přílohy",
"Comments" : "Komentáře",
"History" : "Historie",
"All Boards" : "Všechny desky",
"Shared with you" : "Sdíleno s vámi",
"edit" : "upravit",
"delete" : "smazat",
"remove share" : "odebrat sdílení",
"Unsaved changes" : "Neuložené změny",
"Add a card description…" : "Přidat popis karty...",
"Shared boards" : "Sdílené desky",
"View more" : "Ukázat více",
"Move board to archive" : "Přesunout desku do archivu",
"Create a new board" : "Vytvořit novou desku"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
}

View File

@@ -1,44 +1,73 @@
OC.L10N.register(
"deck",
{
"Deck" : "Tavle",
"Hours" : "Timer",
"Minutes" : "Minutter",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
"Finished" : "Færdiggjort",
"To review" : "Efterse",
"Action needed" : "Handling påkrævet",
"Later" : "Senere",
"Deck" : "Tavle",
"Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort",
"Hide archived cards" : "Skjul arkiverede kort",
"Board details" : "Liste detaljer",
"All Boards" : "Alle lister",
"Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering",
"Delete" : "Slet",
"Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort",
"Close" : "Luk",
"Sharing" : "Deling",
"Labels" : "Labels",
"Tags" : "Mærkat",
"Select users or groups to share with" : "Vælg brugere eller grupper og dele med",
"Access for" : "Adgang for",
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
"Loading" : "Loader",
"Share" : "Del",
"Edit" : "Redigér",
"Manage" : "Administrer ",
"Discard share" : "Kasser deling",
"Create a new label" : "Opret en ny etikette ",
"Board title" : "Titel på liste",
"Update" : "Opdatér",
"Create" : "Opret",
"Create a new tag" : "Opret et nyt mærkat",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Medlemmer",
"More actions" : "Flere handlinger",
"Edit board" : "Rediger liste",
"Archive board" : "Arkivér liste",
"Unarchive board" : "Annuller arkivering af liste",
"Delete board" : "Slet liste",
"Reset" : "Nulstil",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
"Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste",
"Modified:" : "Ændret:",
"Created:" : "Oprettet:",
"by" : "af",
"Choose a tag" : "Vælg et tag",
"Add a tag" : "Tilføj et tag",
"Select tags" : "Vælg tags",
"Assign users" : "Tildel brugere",
"Assign this card to a user" : "Tildel dette kort til en bruger",
"Due date" : "Forfaldsdato",
"Click to set" : "Klik for at sætte",
"Remove due date" : "Fjern forfaldsdato",
"Description" : "Beskrivelse",
"Formatting help" : "Hjælp til formatering",
"Saved" : "Gemt",
"Add a card description ..." : "Tilføj en kort beskrivelse",
"Attachments" : "Vedhæftede filer",
"Comments" : "Kommentarer",
"History" : "Hostorik",
"All Boards" : "Alle lister",
"Shared with you" : "Delt med dig",
"edit" : "redigér",
"delete" : "slet",
"remove share" : "Fjern deling",
"Unsaved changes" : "Ikke gemte ændringer",
"Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister",
"View more" : "Vis mere",
"Move board to archive" : "Flyt liste til arkiv",
"Create a new board" : "Opret ny liste"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,42 +1,71 @@
{ "translations": {
"Deck" : "Tavle",
"Hours" : "Timer",
"Minutes" : "Minutter",
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
"Finished" : "Færdiggjort",
"To review" : "Efterse",
"Action needed" : "Handling påkrævet",
"Later" : "Senere",
"Deck" : "Tavle",
"Add a new stack" : "Tilføj en ny stak",
"Submit" : "Tilføj",
"Show archived cards" : "Vis arkiverede kort",
"Hide archived cards" : "Skjul arkiverede kort",
"Board details" : "Liste detaljer",
"All Boards" : "Alle lister",
"Archived boards" : "Arkiverede lister",
"Archive" : "Arkivér",
"Unarchive" : "Annuller arkivering",
"Delete" : "Slet",
"Enter a card title" : "Angiv titel på kort",
"Add card" : "Tilføj kort",
"Close" : "Luk",
"Sharing" : "Deling",
"Labels" : "Labels",
"Tags" : "Mærkat",
"Select users or groups to share with" : "Vælg brugere eller grupper og dele med",
"Access for" : "Adgang for",
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
"Loading" : "Loader",
"Share" : "Del",
"Edit" : "Redigér",
"Manage" : "Administrer ",
"Discard share" : "Kasser deling",
"Create a new label" : "Opret en ny etikette ",
"Board title" : "Titel på liste",
"Update" : "Opdatér",
"Create" : "Opret",
"Create a new tag" : "Opret et nyt mærkat",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Medlemmer",
"More actions" : "Flere handlinger",
"Edit board" : "Rediger liste",
"Archive board" : "Arkivér liste",
"Unarchive board" : "Annuller arkivering af liste",
"Delete board" : "Slet liste",
"Reset" : "Nulstil",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
"Create new board" : "Opret ny liste",
"New board title" : "Ny titel på liste",
"Modified:" : "Ændret:",
"Created:" : "Oprettet:",
"by" : "af",
"Choose a tag" : "Vælg et tag",
"Add a tag" : "Tilføj et tag",
"Select tags" : "Vælg tags",
"Assign users" : "Tildel brugere",
"Assign this card to a user" : "Tildel dette kort til en bruger",
"Due date" : "Forfaldsdato",
"Click to set" : "Klik for at sætte",
"Remove due date" : "Fjern forfaldsdato",
"Description" : "Beskrivelse",
"Formatting help" : "Hjælp til formatering",
"Saved" : "Gemt",
"Add a card description ..." : "Tilføj en kort beskrivelse",
"Attachments" : "Vedhæftede filer",
"Comments" : "Kommentarer",
"History" : "Hostorik",
"All Boards" : "Alle lister",
"Shared with you" : "Delt med dig",
"edit" : "redigér",
"delete" : "slet",
"remove share" : "Fjern deling",
"Unsaved changes" : "Ikke gemte ændringer",
"Add a card description…" : "Tilføj en beskrivelse...",
"Shared boards" : "Delte lister",
"View more" : "Vis mere",
"Move board to archive" : "Flyt liste til arkiv",
"Create a new board" : "Opret ny liste"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,44 +1,74 @@
OC.L10N.register(
"deck",
{
"Deck" : "Deck",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
"Finished" : "Abgeschlossen",
"To review" : "Zu bewerten",
"Action needed" : "Aktion erforderlich",
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"Deck" : "Deck",
"Add a new stack" : "Stapel hinzufügen",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Labels" : "Beschriftungen",
"Select users or groups to share with" : "Benutzern oder Gruppen auswählen, mit denen es geteilt werden soll",
"Tags" : "Etiketten",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Share" : "Share",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"Discard share" : "Teilen aufheben",
"Create a new label" : "Neue Beschriftung erstellen",
"Board title" : "Board-Titel",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Create" : "Erstellen",
"Create a new tag" : "Neues Etikett erstellen",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
"Edit board" : "Board bearbeiten",
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen",
"Assign users" : "Nutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Nutzer zuweisen",
"Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen",
"Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe",
"Saved" : "Gespeichert",
"Add a card description ..." : "Eine Beschreibung der Karte hinzufügen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"History" : "Verlauf",
"All Boards" : "Alle Boards",
"Shared with you" : "Mit Dir geteilt",
"edit" : "Bearbeiten",
"delete" : "Löschen",
"remove share" : "Freigabe löschen",
"Unsaved changes" : "Ungesicherte Änderungen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,42 +1,72 @@
{ "translations": {
"Deck" : "Deck",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
"Finished" : "Abgeschlossen",
"To review" : "Zu bewerten",
"Action needed" : "Aktion erforderlich",
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"Deck" : "Deck",
"Add a new stack" : "Stapel hinzufügen",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Labels" : "Beschriftungen",
"Select users or groups to share with" : "Benutzern oder Gruppen auswählen, mit denen es geteilt werden soll",
"Tags" : "Etiketten",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Share" : "Share",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"Discard share" : "Teilen aufheben",
"Create a new label" : "Neue Beschriftung erstellen",
"Board title" : "Board-Titel",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Create" : "Erstellen",
"Create a new tag" : "Neues Etikett erstellen",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
"Edit board" : "Board bearbeiten",
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen",
"Assign users" : "Nutzer zuweisen",
"Assign this card to a user" : "Diese Karte einem Nutzer zuweisen",
"Due date" : "Fälligkeitsdatum",
"Click to set" : "Klicken zum Übernehmen",
"Remove due date" : "Ablaufdatum löschen",
"Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe",
"Saved" : "Gespeichert",
"Add a card description ..." : "Eine Beschreibung der Karte hinzufügen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"History" : "Verlauf",
"All Boards" : "Alle Boards",
"Shared with you" : "Mit Dir geteilt",
"edit" : "Bearbeiten",
"delete" : "Löschen",
"remove share" : "Freigabe löschen",
"Unsaved changes" : "Ungesicherte Änderungen",
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,44 +1,74 @@
OC.L10N.register(
"deck",
{
"Deck" : "Deck",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
"Finished" : "Abgeschlossen",
"To review" : "Zu bewerten",
"Action needed" : "Aktion erforderlich",
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"Deck" : "Deck",
"Add a new stack" : "Neuen Stapel hinzufügen",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Labels" : "Beschriftungen",
"Select users or groups to share with" : "Benutzern oder Gruppen auswählen, mit denen es geteilt werden soll",
"Tags" : "Tags",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"Discard share" : "Teilen aufheben",
"Create a new label" : "Neue Beschriftung erstellen",
"Board title" : "Board-Titel",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Create" : "Erstellen",
"Create a new tag" : "Tag erstellen",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
"Edit board" : "Board bearbeiten",
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen",
"Assign users" : "Benutzer zuordnen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
"Due date" : "Zieltermin",
"Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen",
"Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe",
"Saved" : "Gespeichert",
"Add a card description ..." : "Der Karte eine Beschreibung hinzufügen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"History" : "Verlauf",
"All Boards" : "Alle Boards",
"Shared with you" : "Mit Ihnen geteilt",
"edit" : "Bearbeiten",
"delete" : "Löschen",
"remove share" : "Freigabe löschen",
"Unsaved changes" : "Ungesicherte Änderungen",
"Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,42 +1,72 @@
{ "translations": {
"Deck" : "Deck",
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
"Finished" : "Abgeschlossen",
"To review" : "Zu bewerten",
"Action needed" : "Aktion erforderlich",
"To review" : "Zu überprüfen",
"Action needed" : "Handlung erforderlich",
"Later" : "Später",
"Deck" : "Deck",
"Add a new stack" : "Neuen Stapel hinzufügen",
"Submit" : "Übermitteln",
"Show archived cards" : "Archivierte Karten anzeigen",
"Hide archived cards" : "Archivierte Karten ausblenden",
"Board details" : "Board-Details",
"All Boards" : "Alle Boards",
"Archived boards" : "Archivierte Boards",
"Archive" : "Archivieren",
"Unarchive" : "Dearchivieren",
"Delete" : "Löschen",
"Enter a card title" : "Kartentitel eingeben",
"Add card" : "Karte hinzufügen",
"Close" : "Schließen",
"Sharing" : "Teilen",
"Labels" : "Beschriftungen",
"Select users or groups to share with" : "Benutzern oder Gruppen auswählen, mit denen es geteilt werden soll",
"Tags" : "Tags",
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
"Access for" : "Zugriff für",
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"Discard share" : "Teilen aufheben",
"Create a new label" : "Neue Beschriftung erstellen",
"Board title" : "Board-Titel",
"Discard share" : "Teilen beenden",
"Update" : "Aktualisieren",
"Create" : "Erstellen",
"Create a new tag" : "Tag erstellen",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Mitglieder",
"More actions" : "Weitere Aktionen",
"Edit board" : "Board bearbeiten",
"Archive board" : "Board archivieren",
"Unarchive board" : "Board dearchivieren",
"Delete board" : "Board löschen",
"Reset" : "Zurücksetzen",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
"Create new board" : "Neues Board erstellen",
"New board title" : "Neuer Board-Titel",
"Modified:" : "Geändert:",
"Created:" : "Erstellt:",
"by" : "von",
"Choose a tag" : "Schlagwort auswählen",
"Add a tag" : "Schlagwort hinzufügen",
"Select tags" : "Schlagwörter auswählen",
"Assign users" : "Benutzer zuordnen",
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
"Due date" : "Zieltermin",
"Click to set" : "Setzen",
"Remove due date" : "Zieltermin entfernen",
"Description" : "Beschreibung",
"Formatting help" : "Formatierungshilfe",
"Saved" : "Gespeichert",
"Add a card description ..." : "Der Karte eine Beschreibung hinzufügen",
"Attachments" : "Anhänge",
"Comments" : "Kommentare",
"History" : "Verlauf",
"All Boards" : "Alle Boards",
"Shared with you" : "Mit Ihnen geteilt",
"edit" : "Bearbeiten",
"delete" : "Löschen",
"remove share" : "Freigabe löschen",
"Unsaved changes" : "Ungesicherte Änderungen",
"Add a card description…" : "Beschreibung hinzufügen…",
"Shared boards" : "Geteilte Boards",
"View more" : "Mehr anzeigen",
"Move board to archive" : "Board ins Archiv verschieben",
"Create a new board" : "Neues Board erstellen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,30 +1,56 @@
OC.L10N.register(
"deck",
{
"Hours" : "Ώρες",
"Minutes" : "Λεπτά",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
"Finished" : "Ολοκληρώθηκε",
"To review" : "Προς επισκόπηση",
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Labels" : "Ετικέτες",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση",
"Create a new label" : "Δημιουργία νέας ετικέτας",
"Discard share" : "Απόρριψη διαμοιρασμού",
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος",
"Members" : "Μέλη",
"More actions" : "Περισσότερες ενέργειες",
"Edit board" : "Επεξεργασία πίνακα",
"Archive board" : "Αρχειοθέτηση πίνακα",
"Unarchive board" : "Αναίρεση αρχειοθέτησης πίνακα",
"Delete board" : "Διαγραφή πίνακα",
"Create new board" : "Δημιουργία νέου πίνακα",
"New board title" : "Νέος τίτλος πίνακα",
"Modified:" : "Τροποποιήθηκε:",
"Created:" : "Δημιουργήθηκε:",
"by" : "από",
"Due date" : "Ημερομηνία λήξης",
"Click to set" : "Κλικ για να ορίσετε",
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Description" : "Περιγραφή",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Saved" : "Αποθηκεύτηκε",
"Add a card description ..." : "Προσθήκη περιγραφής καρτέλας ...",
"Attachments" : "Συνημμένα",
"Comments" : "Σχόλια",
"History" : "Ιστορικό",
"edit" : "επεξεργασία",
"delete" : "διαγραφή"
"Add a card description" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,28 +1,54 @@
{ "translations": {
"Hours" : "Ώρες",
"Minutes" : "Λεπτά",
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
"Finished" : "Ολοκληρώθηκε",
"To review" : "Προς επισκόπηση",
"Action needed" : "Απαιτείται ενέργεια",
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Labels" : "Ετικέτες",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση",
"Create a new label" : "Δημιουργία νέας ετικέτας",
"Discard share" : "Απόρριψη διαμοιρασμού",
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
"Title" : "Τίτλος",
"Members" : "Μέλη",
"More actions" : "Περισσότερες ενέργειες",
"Edit board" : "Επεξεργασία πίνακα",
"Archive board" : "Αρχειοθέτηση πίνακα",
"Unarchive board" : "Αναίρεση αρχειοθέτησης πίνακα",
"Delete board" : "Διαγραφή πίνακα",
"Create new board" : "Δημιουργία νέου πίνακα",
"New board title" : "Νέος τίτλος πίνακα",
"Modified:" : "Τροποποιήθηκε:",
"Created:" : "Δημιουργήθηκε:",
"by" : "από",
"Due date" : "Ημερομηνία λήξης",
"Click to set" : "Κλικ για να ορίσετε",
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
"Description" : "Περιγραφή",
"Formatting help" : "Βοήθεια μορφοποίησης",
"Saved" : "Αποθηκεύτηκε",
"Add a card description ..." : "Προσθήκη περιγραφής καρτέλας ...",
"Attachments" : "Συνημμένα",
"Comments" : "Σχόλια",
"History" : "Ιστορικό",
"edit" : "επεξεργασία",
"delete" : "διαγραφή"
"Add a card description" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

74
l10n/en_GB.js Normal file
View File

@@ -0,0 +1,74 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
"Finished" : "Finished",
"To review" : "To review",
"Action needed" : "Action needed",
"Later" : "Later",
"Deck" : "Deck",
"Add a new stack" : "Add a new stack",
"Submit" : "Submit",
"Show archived cards" : "Show archived cards",
"Hide archived cards" : "Hide archived cards",
"Board details" : "Board details",
"All Boards" : "All Boards",
"Archived boards" : "Archived boards",
"Archive" : "Archive",
"Unarchive" : "Unarchive",
"Delete" : "Delete",
"Enter a card title" : "Enter a card title",
"Add card" : "Add card",
"Close" : "Close",
"Sharing" : "Sharing",
"Tags" : "Tags",
"Select users or groups to share with" : "Select users or groups to share with",
"Access for" : "Access for",
"No matching user or group found." : "No matching user or group found.",
"Loading" : "Loading",
"Share" : "Share",
"Edit" : "Edit",
"Manage" : "Manage",
"Discard share" : "Discard share",
"Update" : "Update",
"Create" : "Create",
"Create a new tag" : "Create a new tag",
"Status" : "Status",
"Title" : "Title",
"Members" : "Members",
"More actions" : "More actions",
"Edit board" : "Edit board",
"Archive board" : "Archive board",
"Unarchive board" : "Unarchive board",
"Delete board" : "Delete board",
"Reset" : "Reset",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
"Create new board" : "Create new board",
"New board title" : "New board title",
"Modified:" : "Modified:",
"Created:" : "Created:",
"by" : "by",
"Choose a tag" : "Choose a tag",
"Add a tag" : "Add a tag",
"Select tags" : "Select tags",
"Assign users" : "Assign users",
"Assign this card to a user" : "Assign this card to a user",
"Due date" : "Due date",
"Click to set" : "Click to set",
"Remove due date" : "Remove due date",
"Description" : "Description",
"Formatting help" : "Formatting help",
"Saved" : "Saved",
"Unsaved changes" : "Unsaved changes",
"Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards",
"View more" : "View more",
"Move board to archive" : "Move board to archive",
"Create a new board" : "Create a new board"
},
"nplurals=2; plural=(n != 1);");

72
l10n/en_GB.json Normal file
View File

@@ -0,0 +1,72 @@
{ "translations": {
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
"Finished" : "Finished",
"To review" : "To review",
"Action needed" : "Action needed",
"Later" : "Later",
"Deck" : "Deck",
"Add a new stack" : "Add a new stack",
"Submit" : "Submit",
"Show archived cards" : "Show archived cards",
"Hide archived cards" : "Hide archived cards",
"Board details" : "Board details",
"All Boards" : "All Boards",
"Archived boards" : "Archived boards",
"Archive" : "Archive",
"Unarchive" : "Unarchive",
"Delete" : "Delete",
"Enter a card title" : "Enter a card title",
"Add card" : "Add card",
"Close" : "Close",
"Sharing" : "Sharing",
"Tags" : "Tags",
"Select users or groups to share with" : "Select users or groups to share with",
"Access for" : "Access for",
"No matching user or group found." : "No matching user or group found.",
"Loading" : "Loading",
"Share" : "Share",
"Edit" : "Edit",
"Manage" : "Manage",
"Discard share" : "Discard share",
"Update" : "Update",
"Create" : "Create",
"Create a new tag" : "Create a new tag",
"Status" : "Status",
"Title" : "Title",
"Members" : "Members",
"More actions" : "More actions",
"Edit board" : "Edit board",
"Archive board" : "Archive board",
"Unarchive board" : "Unarchive board",
"Delete board" : "Delete board",
"Reset" : "Reset",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
"Create new board" : "Create new board",
"New board title" : "New board title",
"Modified:" : "Modified:",
"Created:" : "Created:",
"by" : "by",
"Choose a tag" : "Choose a tag",
"Add a tag" : "Add a tag",
"Select tags" : "Select tags",
"Assign users" : "Assign users",
"Assign this card to a user" : "Assign this card to a user",
"Due date" : "Due date",
"Click to set" : "Click to set",
"Remove due date" : "Remove due date",
"Description" : "Description",
"Formatting help" : "Formatting help",
"Saved" : "Saved",
"Unsaved changes" : "Unsaved changes",
"Add a card description…" : "Add a card description…",
"Shared boards" : "Shared boards",
"View more" : "View more",
"Move board to archive" : "Move board to archive",
"Create a new board" : "Create a new board"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,44 +1,74 @@
OC.L10N.register(
"deck",
{
"Deck" : "Deck",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
"Finished" : "Finalizado",
"To review" : "Para revisar",
"Action needed" : "Se necesita una acción",
"Action needed" : "Acción necesaria",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Eliminar",
"Enter a card title" : "Introducir un título de tarjeta",
"Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"Labels" : "Etiquetas",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Organizar",
"Discard share" : "Descartar compartición",
"Create a new label" : "Crear una nueva etiqueta",
"Board title" : "Título del tablero",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una etiqueta nueva",
"Status" : "Estado",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Eliminar tablero",
"Reset" : "Resetear",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
"Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Modified:" : "Modificado: ",
"Created:" : "Creado: ",
"by" : "por",
"Choose a tag" : "Escoge una etiqueta",
"Add a tag" : "Añade una etiqueta",
"Select tags" : "Selecciona etiquetas",
"Assign users" : "Asignar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta a un usuario",
"Due date" : "Fecha límite",
"Click to set" : "Pinchar para establecer",
"Remove due date" : "Eliminar fecha límite",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description ..." : "Añadir una descripción de la tarjeta...",
"Attachments" : "Adjuntos",
"Comments" : "Comentario",
"History" : "Historia",
"All Boards" : "Todos los tableros",
"Shared with you" : "Compartido contigo",
"edit" : "editar",
"delete" : "eliminar",
"remove share" : "eliminar compartición",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover tablero al archivo",
"Create a new board" : "Crear un tablero nuevo"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,42 +1,72 @@
{ "translations": {
"Deck" : "Deck",
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
"Finished" : "Finalizado",
"To review" : "Para revisar",
"Action needed" : "Se necesita una acción",
"Action needed" : "Acción necesaria",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Añadir nuevo montón",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Eliminar",
"Enter a card title" : "Introducir un título de tarjeta",
"Enter a card title" : "Introducir título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"Labels" : "Etiquetas",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Organizar",
"Discard share" : "Descartar compartición",
"Create a new label" : "Crear una nueva etiqueta",
"Board title" : "Título del tablero",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una etiqueta nueva",
"Status" : "Estado",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Eliminar tablero",
"Reset" : "Resetear",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
"Create new board" : "Crear nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Modified:" : "Modificado: ",
"Created:" : "Creado: ",
"by" : "por",
"Choose a tag" : "Escoge una etiqueta",
"Add a tag" : "Añade una etiqueta",
"Select tags" : "Selecciona etiquetas",
"Assign users" : "Asignar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta a un usuario",
"Due date" : "Fecha límite",
"Click to set" : "Pinchar para establecer",
"Remove due date" : "Eliminar fecha límite",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description ..." : "Añadir una descripción de la tarjeta...",
"Attachments" : "Adjuntos",
"Comments" : "Comentario",
"History" : "Historia",
"All Boards" : "Todos los tableros",
"Shared with you" : "Compartido contigo",
"edit" : "editar",
"delete" : "eliminar",
"remove share" : "eliminar compartición",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Añadir una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover tablero al archivo",
"Create a new board" : "Crear un tablero nuevo"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_419.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_419.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

36
l10n/es_AR.js Normal file
View File

@@ -0,0 +1,36 @@
OC.L10N.register(
"deck",
{
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tablero",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

34
l10n/es_AR.json Normal file
View File

@@ -0,0 +1,34 @@
{ "translations": {
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tablero",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Sharing" : "Compartiendo",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Members" : "Miembros",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Create a new board" : "Crear nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_CL.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_CL.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_CO.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_CO.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_CR.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_CR.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_DO.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_DO.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_EC.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_EC.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_GT.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_GT.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_HN.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_HN.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,44 +1,73 @@
OC.L10N.register(
"deck",
{
"Deck" : "Deck",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Labels" : "Etiquetas",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Create a new label" : "Crear nueva etiqueta",
"Board title" : "Título del tablero",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description ..." : "Agregar una descripción de la tarjeta ...",
"Attachments" : "Adjuntos",
"Comments" : "Comentarios",
"History" : "Histórico",
"All Boards" : "Todos los Tablero",
"Shared with you" : "Compartido con usted",
"edit" : "editar",
"delete" : "borrar",
"remove share" : "eliminar elemento compartido",
"Create a new board" : "Crear nuevo tablero"
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,42 +1,71 @@
{ "translations": {
"Deck" : "Deck",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingrese el títilo de la tarjeta",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Labels" : "Etiquetas",
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Create a new label" : "Crear nueva etiqueta",
"Board title" : "Título del tablero",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título de tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Add a card description ..." : "Agregar una descripción de la tarjeta ...",
"Attachments" : "Adjuntos",
"Comments" : "Comentarios",
"History" : "Histórico",
"All Boards" : "Todos los Tablero",
"Shared with you" : "Compartido con usted",
"edit" : "editar",
"delete" : "borrar",
"remove share" : "eliminar elemento compartido",
"Create a new board" : "Crear nuevo tablero"
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_NI.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_NI.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_PA.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_PA.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

73
l10n/es_PE.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

Some files were not shown because too many files have changed in this diff Show More