Compare commits

..
549 Commits
Author SHA1 Message Date
Julius HärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius Härtl c38039ad80 Fix menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-27 21:14:04 +01:00
Julius HärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius Härtl abc039a634 Fix issues
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-11-13 09:40:28 +01:00
Julius HärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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 BorchardtandJulius Härtl 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 PadovaniandJulius Härtl 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 PadovaniandJulius Härtl 37967f5bfb Simplify code
Signed-off-by: Riccardo Padovani <riccardo@rpadovani.com>
2017-10-25 22:27:26 +02:00
Riccardo PadovaniandJulius Härtl 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 RaittandJulius Härtl 3f8806c81f Remove empty title tags.
Signed-off-by: Brandon Raitt <npm.pxoink@gmail.com>
2017-10-24 12:11:46 +02:00
Brandon RaittandJulius Härtl 32a7c5f765 Update requested changes for accessibility. 2017-10-24 12:11:46 +02:00
Brandon RaittandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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 TreseljandJulius Härtl 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 TreseljandJulius Härtl 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 TreseljandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius Härtl 4cf746dd6f WIP: assign users
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-10-23 22:12:08 +02:00
Morris JobkeandJulius Härtl 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ärtlandJulius 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 PadovaniandJulius Härtl 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 PadovaniandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandGitHub 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. SiposandJulius Härtl 5312751cb8 Fix further uses of the word label to tag 2017-09-28 11:47:28 +02:00
Regina M. SiposandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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 KorulczykandJulius Härtl 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 KorulczykandJulius Härtl 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 JobkeandGitHub 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ärtlandJulius 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 AnufrijandGitHub 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ärtlandJulius 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 AnufrijandGitHub 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
jacestkandJulius Härtl 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ärtlandJulius 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 BorchardtandGitHub 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 TreseljandGitHub 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ärtlandJulius 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 AnufrijandJulius Härtl de800f79fb fixed margin for DnD class
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-06 13:32:41 +02:00
Artem AnufrijandJulius Härtl 43d46830d1 changed space between cards
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-07-06 13:32:41 +02:00
Artem AnufrijandJulius Härtl 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 AnufrijandGitHub 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 AnufrijandJulius Härtl 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 TreseljandJulius Härtl 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ärtlandJulius 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 TreseljandJulius Härtl 227f510d73 Add as author
Signed-off-by: Marin Treselj <marin.treselj@forlagshuset.no>
2017-06-30 18:55:12 +02:00
Marin TreseljandJulius Härtl 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ärtlandJulius 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 AnufrijandJulius Härtl 1029a21f87 Polish sidebar (#215)
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-27 21:29:38 +02:00
Artem AnufrijandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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 AnufrijandJulius Härtl 6f479727d5 some css fixes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-23 22:46:12 +02:00
Artem AnufrijandJulius Härtl 64c3606e09 polish label editor
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-23 22:46:12 +02:00
Marin TreseljandJulius Härtl 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ärtlandJulius 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 AnufrijandGitHub 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 AnufrijandGitHub 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 AnufrijandJulius Härtl a03986b1bb improved 'add new board' row
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:02 +02:00
Artem AnufrijandJulius Härtl e970fca3f3 css changes
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:02 +02:00
Artem AnufrijandJulius Härtl b15555e5e2 added save and cancel button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-22 20:54:01 +02:00
Artem AnufrijandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius Härtl 4dfc11db56 Cleanup CHANGELOG
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-20 10:19:59 +02:00
Julius HärtlandJulius 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ärtlandJulius 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ärtlandJulius 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 AnufrijandJulius Härtl 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 TreseljandGitHub 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ärtlandJulius Härtl 1d9a0d35d8 Add timepicker css
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-06-19 10:36:29 +02:00
Artem AnufrijandJulius Härtl 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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ärtlandJulius 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 AnufrijandGitHub 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 AnufrijandJulius Härtl d052325874 fixed css
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:46:52 +02:00
Artem AnufrijandJulius Härtl 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 AnufrijandJulius Härtl 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 AnufrijandJulius Härtl bdd47c8dc6 fixed avatar margin
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-06-10 23:20:35 +02:00
Julius HärtlandGitHub 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 AnufrijandGitHub 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ärtlandGitHub 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ärtlandGitHub 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 AnufrijandJulius Härtl 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 AnufrijandJulius Härtl 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 AnufrijandJulius Härtl 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 AnufrijandGitHub 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 AnufrijandGitHub 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 AnufrijandGitHub 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ärtlandGitHub 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ärtlandGitHub 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 TreseljandJulius Härtl f4a5a0c36c Fix alignment of buttons
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-05-28 13:36:52 +02:00
Marin TreseljandJulius Härtl 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ärtlandGitHub 98c87f4551 Merge pull request #159 from nextcloud/mobile_improvements
improve mobile behavior
2017-05-28 10:58:58 +02:00
Julius HärtlandGitHub 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ärtlandGitHub 8105a4b211 Merge pull request #163 from nextcloud/rakekniven-patch-1
Update part.card.php
2017-05-26 22:54:02 +02:00
rakeknivenandGitHub 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ärtlandGitHub 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ärtlandGitHub 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 AnufrijandGitHub 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ärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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 AnufrijandJulius Härtl 4ec59d24b4 small css improvement
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem AnufrijandJulius Härtl 543127c1e6 'add new stack' margin
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem AnufrijandJulius Härtl 1e4e0a3947 added home button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem AnufrijandJulius Härtl 0b133c59d9 clear css
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:42 +02:00
Artem AnufrijandJulius Härtl d2b44c2ad0 added .icon-more button
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-22 21:05:41 +02:00
Artem AnufrijandJulius Härtl 0b12271ee3 fixed pixelipo comments 2017-05-22 21:05:41 +02:00
Artem AnufrijandJulius Härtl 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ärtlandGitHub 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ärtlandGitHub 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ärtlandGitHub 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 AnufrijandGitHub 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ärtlandGitHub 7ba9f769f6 Merge pull request #142 from nextcloud/comradekingu-patch-1
Spelling: Ellipsis… and consistency
2017-05-20 10:55:59 +02:00
comradekinguandGitHub 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ärtlandGitHub c696d9f287 Merge pull request #139 from nextcloud/card_redesing
added a card control bar
2017-05-19 23:00:07 +02:00
Artem AnufrijandJulius Härtl 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 AnufrijandGitHub 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ärtlandGitHub 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ärtlandGitHub 23d8c1aa30 Merge pull request #121 from nextcloud/icon-size-position
small css changes
2017-05-08 11:02:40 +02:00
Artem AnufrijandJulius Härtl 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
Julius Härtl 452f9a3312 Update CHANGELOG.md for 0.1.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-04 22:02:56 +02:00
Julius Härtl 95b0f49739 Bump version to 0.1.4
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-04 14:15:43 +02:00
Julius HärtlandGitHub b330f03a32 Merge pull request #118 from nextcloud/fix-acl-nonexisting
Do not fail on nonexisting acl users/groups
2017-05-04 14:12:28 +02:00
Julius Härtl 12ebffb885 Do not use getDisplayName for groups
it is not supported in Nextcloud 11

https://github.com/nextcloud/server/pull/4690
https://github.com/nextcloud/server/pull/2833
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-04 12:10:17 +02:00
Julius Härtl 860cbab1d3 Add proper error handling when user/group cannot be found
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-04 11:26:45 +02:00
Julius HärtlandGitHub c08455e11b Merge pull request #113 from nextcloud/delete-fix-and-undo
Fix deleting boards and add a simple undo function
2017-05-04 08:37:05 +02:00
Julius Härtl a6b6842e2b No not fail on nonexisting acl users/groups
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-03 13:25:58 +02:00
Julius Härtl 588252d949 Fix deleting boards and add a simple undo function
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-03 13:22:30 +02:00
Julius HärtlandGitHub 3b0390f50f Merge pull request #114 from nextcloud/firefox-red-input
Remove firefox invalid box shadow
2017-05-03 09:35:44 +02:00
Julius Härtl c8389fbcb0 Remove firefox invalid box shadow
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-02 09:05:11 +02:00
Julius HärtlandGitHub 94788bed39 Add IRC channel to README 2017-05-01 14:16:10 +02:00
Julius HärtlandGitHub 8b4e7ec2bf Merge pull request #107 from nextcloud/release-0.1.3
Prepare 0.1.3 release
2017-05-01 10:04:13 +02:00
Julius Härtl 111a98ce88 Prepare 0.1.3 release
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-05-01 08:44:26 +02:00
Artem AnufrijandJulius Härtl 7fb0d2374d better behavior for comment field (#105)
* better behavior for comment field
* removed min-height

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-05-01 08:35:31 +02:00
Nextcloud bot 491a73456b [tx-robot] updated from transifex 2017-05-01 00:10:29 +00:00
artemanufrijandJulius Härtl 62d671bdd5 hide sidebar when clicked outside (#102)
* hide sidebar when clicked outside

* fixed show/hide behavior

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-04-30 21:23:48 +02:00
Julius HärtlandGitHub 955c5eb864 Merge pull request #99 from nextcloud/bump-dependencies
Bump bower dependencies
2017-04-30 13:13:38 +02:00
Julius HärtlandGitHub 49cd271cbc Add link to nightly builds 2017-04-30 13:07:49 +02:00
Julius HärtlandGitHub 37bdbecdc2 Merge pull request #103 from nextcloud/nightly
Fix paths to use local bower/grunt installation
2017-04-30 13:03:25 +02:00
Julius Härtl 62af080e78 Fix paths to use local bower/grunt installation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-30 12:57:10 +02:00
Julius Härtl 84d4b87bb8 Bump bower dependencies
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-30 09:37:04 +02:00
Julius HärtlandGitHub 5ad515f42a Merge pull request #96 from nextcloud/fix-db-columns
Move text fields to clob
2017-04-29 13:20:16 +02:00
Julius HärtlandGitHub 98b57fe0a4 Merge pull request #65 from nextcloud/test-behat
Add integration tests with behat
2017-04-29 13:08:18 +02:00
Julius Härtl b961206da3 Include App integration test
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-29 13:04:00 +02:00
artemanufrijandJulius Härtl d8d8137300 description marker (#98)
* description marker
* removed unused content
* removed unused content
* Changed Icon and removen unused .svg

Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-04-29 12:52:53 +02:00
Julius Haertl 56fcb081a4 Fix tests
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-04-29 12:36:38 +02:00
Julius Haertl 2b9b22f2f2 Add behat tests to drone
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-04-29 11:57:54 +02:00
Julius Haertl 084d892ce6 Add basic behat test structure
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-04-29 11:57:54 +02:00
Julius HärtlandGitHub 11610f306a Merge pull request #58 from nextcloud/displaynames
Implement relational mapping for users and groups to show displaynames
2017-04-29 11:57:21 +02:00
Julius Härtl 60e9cf7088 Apply maxlength to input fields and fix card header height
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-29 11:55:00 +02:00
Julius Härtl 7e345256cb Move text fields to clob
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-29 11:53:20 +02:00
Julius HärtlandGitHub 52a7b8d560 Merge pull request #97 from pixelipo/fix-readme
Change app name in README.md
2017-04-28 15:31:47 +02:00
Marin Treselj d98db33a02 Change app name in README.md
Signed-off-by: Marin Treselj <marin@pixelipo.com>
2017-04-28 13:26:13 +02:00
Julius Härtl 04f5e2c2e1 Don't show own user account
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:14:58 +02:00
Julius Härtl 74c8a6e848 Fix board acl type
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:08:25 +02:00
Julius Härtl 02eecb3a3f Use mapper classes for relational data
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:08:25 +02:00
Julius Haertl 1e9c86e158 Code cleaup
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:08:25 +02:00
Julius Haertl 2b05227f4b Add Group class
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:08:10 +02:00
Julius Haertl 3e304a9ff2 Use display name for users and groups
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 13:08:10 +02:00
Julius HärtlandGitHub 000e447801 Merge pull request #95 from nextcloud/add-stack-header
Moved "Add a new Stack" into the top Bar [rebased]
2017-04-27 13:01:24 +02:00
Julius Härtl 1b6531e748 Fix positioning on Nextcloud 12
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-27 12:48:25 +02:00
artemanufrijandJulius Härtl e2012dd2c5 Fixed css
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-04-27 12:25:56 +02:00
artemanufrijandJulius Härtl 5346cc4042 Move add stack input to the header
Signed-off-by: Artem Anufrij <artem.anufrij@live.de>
2017-04-27 12:25:17 +02:00
Julius HärtlandGitHub 22438f8f3e Merge pull request #94 from nextcloud/use-ocs-api
Use OCS API to search for users/groups
2017-04-27 12:18:52 +02:00
Julius Härtl 6033baca23 Remove old search endpoint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-26 14:54:56 +02:00
Julius Härtl c1ff005710 Use OCS API to search for users/groups
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-04-26 14:42:11 +02:00
Nextcloud bot 05adda1e03 [tx-robot] updated from transifex 2017-04-26 00:10:41 +00:00
Lukas ReschkeandGitHub 6ae6bdf74a Update issue_template.md 2017-04-18 12:40:53 +02:00
Nextcloud bot 35ea7255cb [tx-robot] updated from transifex 2017-04-15 00:10:36 +00:00
Nextcloud bot c80deaaaee [tx-robot] updated from transifex 2017-04-14 00:10:39 +00:00
Nextcloud bot ab60f4e3ab [tx-robot] updated from transifex 2017-04-07 00:12:08 +00:00
Nextcloud bot 965708e784 [tx-robot] updated from transifex 2017-04-06 00:11:00 +00:00
Nextcloud bot 1b364b4f85 [tx-robot] updated from transifex 2017-04-05 00:11:20 +00:00
Nextcloud bot aad1cb4fb5 [tx-robot] updated from transifex 2017-04-04 00:10:27 +00:00
Nextcloud bot 99725765fc [tx-robot] updated from transifex 2017-03-31 00:11:14 +00:00
Nextcloud bot f313a9ba6b [tx-robot] updated from transifex 2017-03-30 00:10:28 +00:00
Julius HärtlandGitHub 6bbe0a3161 Merge pull request #80 from nextcloud/drone-only-master
Only build master branch
2017-03-28 14:02:26 +02:00
Julius Härtl 4414fdebd4 Only build master branch
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-03-28 13:49:19 +02:00
Julius HärtlandGitHub 0c0b663b9e Merge pull request #77 from nextcloud/release-0.1.2
Bump version to 0.1.2
2017-03-27 20:29:31 +02:00
Julius Haertl b6645cfaa1 Bump version to 0.1.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-03-27 20:16:15 +02:00
Nextcloud bot 9351a04eb3 [tx-robot] updated from transifex 2017-03-25 01:10:30 +00:00
Nextcloud bot c1f828b894 [tx-robot] updated from transifex 2017-03-23 01:10:22 +00:00
Julius HärtlandGitHub cb233ba35b Merge pull request #75 from nextcloud/emoji-fix
Fix info.xml emoji usage
2017-03-22 17:04:16 +01:00
Marius Blüm f09ce32f2b Fix info.xml emoji usage
Signed-off-by: Marius Blüm <marius@lineone.io>
2017-03-22 13:57:28 +01:00
Julius HärtlandGitHub 1e359adf18 Merge pull request #66 from nextcloud/default-json
Add jsonSerialize method to RelationalEntity
2017-03-20 14:37:16 +01:00
Julius Haertl 34c1a681b1 Add jsonSerialize method to RelationalEntity
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-03-20 14:26:03 +01:00
Julius HärtlandGitHub 3324556542 Merge pull request #72 from nextcloud/fix-travis
Use phpunit 5.7
2017-03-20 09:57:08 +01:00
Julius Härtl 7dba354767 Remove npm install 2017-03-20 09:39:10 +01:00
Julius Härtl 8444a00bdf Travis fix
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-03-20 09:28:24 +01:00
Julius Härtl 021b186424 Use phpunit 5.7
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-03-20 08:53:17 +01:00
Nextcloud bot 3e38ed7108 [tx-robot] updated from transifex 2017-03-17 01:10:07 +00:00
Julius HärtlandGitHub 5d95dbf1ff Merge pull request #68 from nextcloud/travis
Disable email notifications for travis
2017-03-16 11:54:24 +01:00
Nextcloud bot f17b046cb1 [tx-robot] updated from transifex 2017-03-12 01:10:43 +00:00
Nextcloud bot 7d55d22d42 [tx-robot] updated from transifex 2017-03-11 01:10:04 +00:00
Nextcloud bot 138c03160e [tx-robot] updated from transifex 2017-03-06 01:10:03 +00:00
Julius Haertl 286d4d7900 Disable email notifications for travis
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-03-05 14:21:21 +01:00
Julius HärtlandGitHub 3f6f80ce44 Merge pull request #67 from nextcloud/debug-js
Include source js files when debug is enabled
2017-03-05 14:14:13 +01:00
Julius HärtlandGitHub 7d7c605d36 Merge pull request #62 from SpaceCafe/master
Fixed SQL statements without prefixes
2017-03-05 14:00:01 +01:00
Julius Haertl 1d966033ec Update javascript section in README
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-03-05 13:53:05 +01:00
Julius Haertl 9de4051803 Include source js files when debug is enabled
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-03-05 13:46:38 +01:00
SpaceCafeandLars Thoms a2a3d8cae7 Merge branch 'master' into master
Signed-off-by: Lars Thoms <lars.thoms@spacecafe.org>
2017-03-04 20:48:12 +01:00
Lars Thoms 873e7cb1cf Fixed SQL statements without prefixes
Signed-off-by: Lars Thoms <lars.thoms@spacecafe.org>
2017-03-04 20:40:23 +01:00
Julius HärtlandGitHub 4766195872 Merge pull request #64 from nextcloud/contribution-guidelines
Add contribution guidelines to README
2017-03-04 12:49:01 +01:00
Julius HärtlandGitHub c35f6aa9ef Add contribution guidelines to README 2017-03-04 12:47:26 +01:00
Julius HärtlandGitHub 59ec9a15ff Merge pull request #61 from nextcloud/fix-legacy-code
use non-deprecated code in tests
2017-03-03 15:04:42 +01:00
Julius HärtlandGitHub 81cd17cf3a Merge branch 'master' into fix-legacy-code 2017-03-03 13:07:15 +01:00
Julius HärtlandGitHub 7ce44deb91 Merge pull request #59 from nextcloud/drone
Use drone for testing
2017-03-03 13:04:57 +01:00
Morris Jobke 96f5f5fe45 use non-deprecated code in tests
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-03 01:30:44 -06:00
Nextcloud bot 5c8d7b7644 [tx-robot] updated from transifex 2017-03-03 01:09:45 +00:00
Nextcloud bot 5136615650 [tx-robot] updated from transifex 2017-03-02 16:51:02 +00:00
Julius Haertl 3e3b120175 Add js build and remove tests from travis
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-03-02 11:32:12 +01:00
Julius HärtlandGitHub fef35d3929 Merge pull request #60 from nextcloud/transifex-update
Update transifex config
2017-03-02 11:04:22 +01:00
Morris Jobke 2a483b6f92 Update transifex config
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-01 22:48:17 -06:00
Nextcloud bot f34250ca67 [tx-robot] updated from transifex 2017-03-02 01:09:30 +00:00
Nextcloud bot 308ade1b6e [tx-robot] updated from transifex 2017-03-01 01:09:42 +00:00
Julius Haertl cf03e08d1e Use drone for testing
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-02-28 18:35:32 +01:00
Julius HärtlandGitHub 90e0c57224 Merge pull request #57 from nextcloud/exception-logging
Improve logging of exceptions catched by SharingMiddleware
2017-02-27 11:45:38 +01:00
Julius Haertl 15e5a432b6 Improve logging of exceptions catched by SharingMiddleware 2017-02-27 11:27:49 +01:00
Julius HärtlandGitHub 5372458288 Merge pull request #56 from roipoussiere/label_title
Add on label tiles a tooltip with the label name.
2017-02-27 09:59:26 +01:00
Nathanaël Jourdane 2d7e6f2efa Add on label tiles a tooltip with the label name. 2017-02-26 14:17:26 +01:00
Nextcloud bot 67f26ef9b2 [tx-robot] updated from transifex 2017-02-25 01:27:26 +00:00
Nextcloud bot 153fb6a0f0 [tx-robot] updated from transifex 2017-02-24 01:23:55 +00:00
Nextcloud bot 61b7228fb6 [tx-robot] updated from transifex 2017-02-23 01:21:00 +00:00
Julius HärtlandGitHub d2a2d7a63a Merge pull request #55 from nextcloud/move-repo
Move repo to nextcloud org
2017-02-22 10:36:17 +01:00
Julius Haertl db90911e5e Move repo to nextcloud org
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2017-02-22 10:12:25 +01:00
Nextcloud bot a636b106c8 [tx-robot] updated from transifex 2017-02-22 01:14:29 +00:00
Morris JobkeandGitHub 1e19c44665 Merge pull request #54 from nextcloud/transifex
add transifex config
2017-02-21 10:31:19 -06:00
Morris Jobke c308087c4a add transifex config
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-02-21 10:20:49 -06:00
Julius HärtlandGitHub cb5cfe1c73 Merge pull request #51 from juliushaertl/safari-fix
Remove duplicate endtag and fix layout in safari
2017-02-15 07:44:38 +01:00
Julius Haertl 3a311197a8 Remove duplicate endtag and fix layout in safari 2017-02-14 22:11:15 +01:00
Julius Haertl b5feeeaee3 Fix group acl entries being interpreted as users 2017-02-13 22:06:27 +01:00
Julius HärtlandGitHub 8e890df7ab Add issue template 2017-02-10 10:45:21 +01:00
Julius Haertl d88f561adb Require the correct css file 2017-02-07 00:16:54 +01:00
Julius Haertl 65eb63d742 Bump version to 0.1.1 2017-02-06 23:44:08 +01:00
Julius HärtlandGitHub cde350decf Merge pull request #42 from juliushaertl/prepare-appstore-release
Release preparations for 0.1.1
2017-02-06 23:42:17 +01:00
Julius HärtlandGitHub ba3d98a8e4 Merge pull request #41 from juliushaertl/styling-improvements
Design improvements on select2 boxes and css cleanup
2017-02-06 23:37:21 +01:00
Julius HärtlandGitHub 3b7a83d2a4 Merge branch 'master' into styling-improvements 2017-02-06 23:27:19 +01:00
Julius Haertl eaf8402d31 Update changelog 2017-02-06 23:26:33 +01:00
Julius HärtlandGitHub b710bd00a7 Merge pull request #40 from juliushaertl/fix-card-dragging
Add ng-sortable css to fix #38
2017-02-06 23:19:20 +01:00
Julius Haertl bf94f787c3 More CSS cleanup 2017-02-06 23:17:42 +01:00
Julius Haertl d74b9f68d9 Use select2 styles from Nextcloud server 2017-02-06 22:57:35 +01:00
Julius HärtlandGitHub 198e443a24 Merge pull request #33 from juliushaertl/fix-acl-create
Use integer values for Acl type
2017-02-06 22:53:05 +01:00
Julius Haertl cb073897c3 Prepare for appstore release 2017-02-06 13:14:02 +01:00
Julius Haertl cba8112ff6 Add ng-sortable css to fix #38 2017-02-05 23:41:21 +01:00
Julius HärtlandGitHub f8c2d86e4f Merge pull request #38 from juliushaertl/cleanup-debug
Remove debug logging and unused function
2017-02-05 23:04:25 +01:00
Julius HärtlandGitHub dd612a0c5e Merge pull request #23 from juliushaertl/styling-fixes
Styling fixes
2017-02-05 22:55:38 +01:00
Julius Haertl 8342e1f99a Remove debug logging and unused function 2017-02-05 22:53:28 +01:00
Julius Haertl f604f2f779 Remove another string representation 2017-02-05 22:46:29 +01:00
Julius Haertl 2fd10f9201 CSS cleanup 2017-02-03 18:41:26 +01:00
Julius Haertl 0333f31b9a Move to int values for permission type checks 2017-02-03 18:38:01 +01:00
Julius Haertl dfe8bad832 Do not return string on Acl type getter 2017-02-03 18:35:41 +01:00
Julius HärtlandGitHub 161a6715da Merge pull request #26 from juliushaertl/select-first-color
Always select the first color when creating a board
2017-02-02 18:46:32 +01:00
Julius HärtlandGitHub 929ed247c9 Merge pull request #24 from juliushaertl/fix-acl-permissioncheck
Fix check for acl permissions
2017-02-02 18:40:05 +01:00
Julius HärtlandGitHub 54c6d669f5 Merge branch 'master' into select-first-color 2017-02-02 18:33:00 +01:00
Julius HärtlandGitHub fdb7b7fb98 Merge branch 'master' into fix-acl-permissioncheck 2017-02-02 18:31:15 +01:00
Julius HaertlandJulius Härtl 8375108412 Run js stuff only once on travis 2017-02-02 18:30:59 +01:00
Julius Haertl b6d057a284 Always select first color fixes #19 2017-02-01 19:10:38 +01:00
Julius Haertl 37437c1d76 Fix check for acl permissions 2017-02-01 18:52:34 +01:00
Julius Haertl 9f61417a58 Use server select2 styles 2017-02-01 18:51:47 +01:00
Julius Haertl e05c2469b4 Add active class to appmenu 2017-02-01 18:51:09 +01:00
Julius Haertl 2085e9b300 Remove unneeded stuff 2017-02-01 16:32:21 +01:00
241 changed files with 14423 additions and 2646 deletions
+221
View File
@@ -0,0 +1,221 @@
clone:
git:
image: plugins/git
depth: 1
pipeline:
check-app-compatbility:
image: nextcloudci/php5.6:php5.6-3
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
# Code checker
- ./occ app:check-code $APP_NAME -c strong-comparison
- ./occ app:check-code $APP_NAME -c deprecation
- cd apps/$APP_NAME/
when:
matrix:
TESTS: check-app-compatbility
signed-off-check:
image: nextcloudci/php7.0:php7.0-2
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
- cd ../server
- php ./build/signed-off-checker.php
when:
matrix:
TESTS: signed-off-check
syntax-php5.6:
image: nextcloudci/php5.6:php5.6-8
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- composer install
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
when:
matrix:
TESTS: syntax-php5.6
syntax-php7.0:
image: nextcloudci/php7.0:php7.0-17
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- composer install
- ./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-8
environment:
- APP_NAME=deck
- CORE_BRANCH=master
- DB=sqlite
commands:
- apt update && apt-get -y install php5-xdebug
# 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/
- ./occ app:enable $APP_NAME
- 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
# Create coverage report
- wget https://codecov.io/bash -O codecov.sh
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t f6375299-4832-487e-b831-091772ab0384; fi"
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t f6375299-4832-487e-b831-091772ab0384; fi"
when:
matrix:
TESTS: php5.6
php7.0:
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/
- php occ app:enable deck
- cd apps/$APP_NAME
# Run phpunit tests
- 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.0
php7.1:
image: nextcloudci/php7.1:php7.1-15
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.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:
- 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
- cd tests/integration
- ./run.sh
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:
- apk add --no-cache git
- cd js
- npm install --deps
- ./node_modules/.bin/bower --allow-root install
when:
matrix:
TESTS: jsbuild
matrix:
include:
- TESTS: check-app-compatbility
- 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
View File
@@ -0,0 +1,8 @@
/js/tests/*
/js/vendor/*
/js/node_modules/*
/js/public/*
/karma.conf.js
/tests/*
/l10n/*
+37
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
+7
View File
@@ -1,3 +1,10 @@
js/node_modules/*
js/vendor/
js/public/
js/package-lock.json
build/
css/style.css
tests/integration/vendor/
tests/integration/composer.lock
vendor/
*.lock
+21 -14
View File
@@ -1,36 +1,43 @@
language: php
dist: trusty
sudo: required
services:
- mysql
php:
- 5.6
- 7
- 7.0
- 7.1
- 7.2
env:
matrix:
- CORE_BRANCH=master DB=sqlite
- CORE_BRANCH=master DB=mysql
- CORE_BRANCH=stable11 DB=sqlite
- 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
- chmod +x phpunit-5.7.phar
- mkdir bin
- sudo mv phpunit-5.7.phar bin/phpunit
- export PATH="$PWD/bin:$PATH"
- phpunit --version
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
- bash ./before_install.sh deck $CORE_BRANCH $DB
- cd ../server
- ./occ app:enable deck
- ./occ app:check-code deck
- php -S localhost:8080 &
before_script:
- cd apps/deck
- make install-deps
script:
- node --version
- npm --version
- make build-js
- make test
- make test-unit
after_failure:
- cat ../../data/nextcloud.log
after_success:
- bash <(curl -s https://codecov.io/bash)
notifications:
email: false
+142
View File
@@ -1,4 +1,146 @@
# Changelog
All notable changes to this project will be documented in this file.
## 0.3.0 - unreleased
### 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
## 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
- Fix bug when users/groups got deleted
## 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
- Fix bugs with limited field length
- Automatically hide sidebar when clicking the board view
- Start editing from everywhere in the description section
## 0.1.2
### Added
- Add translations
### Fixed
- Fix issues with Acl checks
- Always select first color fixes
- Add active class to appmenu
- Use server select2 styles
- Remove debug logging and unused function
- Fix issue while sorting cards
- Improve logging of exceptions
- Fixed SQL statements without prefixes
## 0.1.1
### Fixed
- Various styling improvements
- Fix problems with MySQL and PostgreSQL
- Select first color by default when creating boards
- Fix error when changing board permissions
## 0.1.0
### Added
- Sharing boards with other users
- Create and manage boards
+18 -7
View File
@@ -23,15 +23,15 @@ clean-dist:
install-deps:
cd js && npm install --deps
cd js && bower install
cd js && ./node_modules/.bin/bower install
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)
@@ -69,17 +73,24 @@ appstore: clean-build build
echo $(appstore_package_name).tar.gz
test: test-unit test-integration
test:
test-unit:
mkdir -p build/
cd js && $(npm) run test
ifeq (, $(shell which phpunit 2> /dev/null))
@echo "No phpunit command available, downloading a copy from the web"
mkdir -p $(build_tools_directory)
curl -sSL https://phar.phpunit.de/phpunit.phar -o $(build_tools_directory)/phpunit.phar
curl -sSL https://phar.phpunit.de/phpunit-5.7.phar -o $(build_tools_directory)/phpunit.phar
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
else
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
endif
test-integration:
cd tests/integration && ./run.sh
test-js: install-deps
cd js && run test
+56 -8
View File
@@ -1,6 +1,7 @@
# Deck
[![Build Status](https://travis-ci.org/juliushaertl/deck.svg?branch=master)](https://travis-ci.org/juliushaertl/deck) [![CodeCov](https://codecov.io/github/juliushaertl/deck/coverage.svg?branch=master)](https://codecov.io/github/juliushaertl/deck) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/juliushaertl/deck/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/juliushaertl/deck/?branch=master) [![Dependency Status](https://www.versioneye.com/user/projects/58908fc0a23e810038c34e0a/badge.svg?style=flat)](https://www.versioneye.com/user/projects/58908fc0a23e810038c34e0a)
[![Build Status](https://travis-ci.org/nextcloud/deck.svg?branch=master)](https://travis-ci.org/nextcloud/deck) [![CodeCov](https://codecov.io/github/nextcloud/deck/coverage.svg?branch=master)](https://codecov.io/github/nextcloud/deck) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/deck/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [![Dependency Status](https://www.versioneye.com/user/projects/58ad558f4ca76f004ed475b3/badge.svg?style=flat)](https://www.versioneye.com/user/projects/58ad558f4ca76f004ed475b3) [![#nextcloud-deck](https://img.shields.io/badge/IRC-%23nextcloud--deck%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-deck)
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
@@ -11,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.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
@@ -29,14 +28,14 @@ This app is supposed to work on Nextcloud version 11 or later.
### Install latest release
Grab the latest release over here, extract it to your Nextcloud apps folder and enable the app.
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
### Install from git
### Install from git
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
```
git clone https://github.com/juliushaertl/deck.git
git clone https://github.com/nextcloud/deck.git
cd deck
make install-deps
make
@@ -44,6 +43,10 @@ make
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl`
### Install the nightly builds
Instead of setting everything up manually, you can just [download the nightly builds](https://download.bitgrid.net/nextcloud/deck/nightly/) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
## Developing
### PHP
@@ -52,9 +55,54 @@ Nothing to prepare, just dig into the code.
### JavaScript
Make sure you have installed the dependencies with ```make install-deps```. After that you can run ```make``` to build the javascript code once or run ```make watch``` to run in on every file change.
When `'debug'=>true` is set in your config.php files will get loaded automatically. Otherwise you need to ensure that `public/app.js` is generated by running `make` or `make watch` to regenerate it on every change.
Make sure you have installed the dependencies with ```make install-deps```.
### Running tests
You can use the provided Makefile to run all tests by using:
make test
## Contribution Guidelines
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
For more information please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md) to this repository.
### Apply a license
All contributions to this repository are considered to be licensed under
the GNU AGPLv3 or any later version.
Contributors to the Deck app retain their copyright. Therefore we recommend
to add following line to the header of a file, if you changed it substantially:
```
@copyright Copyright (c) <year>, <your name> (<your email address>)
```
For further information on how to add or update the license header correctly please have a look at [our licensing HowTo][applyalicense].
### Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the Nextcloud project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license
their contribution under the project's license.
Please read [developer-certificate-of-origin][dcofile].
If you can certify it, then just add a line to every git commit message:
````
Signed-off-by: Random J Developer <random@developer.example.org>
````
Use your real name (sorry, no pseudonyms or anonymous contributions).
If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`. You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases)
like `git config --global alias.ci 'commit -s'`. Now you can commit with
`git ci` and the commit will be signed.
[dcofile]: https://github.com/nextcloud/server/blob/master/contribute/developer-certificate-of-origin
[applyalicense]: https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md
+2
View File
@@ -0,0 +1,2 @@
theme: jekyll-theme-cayman
site: https://deck-app.com
+1
View File
@@ -23,3 +23,4 @@
$app = new \OCA\Deck\AppInfo\Application();
$app->registerNavigationEntry();
$app->registerNotifications();
+66 -12
View File
@@ -19,7 +19,7 @@
<name>title</name>
<type>text</type>
<notnull>true</notnull>
<length>64</length>
<length>100</length>
</field>
<field>
<name>owner</name>
@@ -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>
@@ -55,7 +63,7 @@
<name>title</name>
<type>text</type>
<notnull>true</notnull>
<length>64</length>
<length>100</length>
</field>
<field>
<name>board_id</name>
@@ -97,14 +105,13 @@
<field>
<name>title</name>
<type>text</type>
<length>100</length>
<notnull>true</notnull>
<length>64</length>
</field>
<field>
<name>description</name>
<type>text</type>
<type>clob</type>
<notnull>false</notnull>
<length>4096</length>
</field>
<field>
<name>stack_id</name>
@@ -123,7 +130,6 @@
<name>last_modified</name>
<type>integer</type>
<default></default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
@@ -131,7 +137,6 @@
<name>created_at</name>
<type>integer</type>
<default></default>
<length>8</length>
<notnull>false</notnull>
<unsigned>true</unsigned>
</field>
@@ -152,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>
@@ -187,7 +202,7 @@
<name>title</name>
<type>text</type>
<notnull>true</notnull>
<length>64</length>
<length>100</length>
</field>
<field>
<name>card_id</name>
@@ -239,7 +254,7 @@
<name>title</name>
<type>text</type>
<notnull>false</notnull>
<length>64</length>
<length>100</length>
</field>
<field>
<name>color</name>
@@ -288,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>
@@ -346,6 +399,7 @@
<default>false</default>
</field>
<index>
<name>deck_board_acl_uq_i</name>
<unique>true</unique>
<field>
<name>board_id</name>
@@ -361,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>
+20 -12
View File
@@ -7,25 +7,33 @@
<description>Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
- :inbox_tray: Add your tasks to cards and put them in order
- :page_facing_up: Write down additional notes in markdown
- :bookmark: Assign labels for even better organization
- :busts_in_silhouette: Share with your team, friends or family
- :rocket: Get your project organized
:boom: This is still alpha software: it may not be stable enough for production!
- 📥 Add your tasks to cards and put them in order
- 📄 Write down additional notes in markdown
- 🔖 Assign labels for even better organization
- 👥 Share with your team, friends or family
- 🚀 Get your project organized
</description>
<version>0.3.0-beta1</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<version>0.1.0</version>
<namespace>Deck</namespace>
<category>organization</category>
<category>office</category>
<bugs>https://github.com/nextcloud/deck/issues</bugs>
<repository type="git">https://github.com/nextcloud/deck.git</repository>
<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>
<repository type="git">https://github.com/juliushaertl/deck.git</repository>
<bugs>https://github.com/juliushaertl/deck/issues</bugs>
<screenshot>https://bitgrid.net/~jus/deck.png</screenshot>
<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>
</post-migration>
</repair-steps>
</info>
+4 -3
View File
@@ -25,15 +25,13 @@ return [
'routes' => [
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
// share
['name' => 'share#searchUser', 'url' => '/share/search/{search}', 'verb' => 'GET'],
// boards
['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'],
['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'],
['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'],
@@ -43,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'],
@@ -57,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
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
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
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');
}
-918
View File
@@ -1,918 +0,0 @@
/*
* @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/>.
*
*/
#searchbox {
display: block !important;
}
.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 .active,
#app-navigation .active a,
#app-navigation li:hover > a,
#app-navigation li:focus > a,
#app-navigation a:focus,
#app-navigation .selected,
#app-navigation .selected a {
background-color: #fafafa;
}
#app-navigation .board-bullet {
position: absolute;
margin-left: 17px;
margin-top: 16px;
width: 12px;
height: 12px;
border: none;
border-radius: 50%;
cursor: pointer;
}
#app-view {
position: relative;
height: 100%;
white-space: nowrap;
overflow: none;
padding: 0;
z-index: 100;
width: 100%;
}
#board-status {
position: absolute;
z-index: 999;
width: 100%;
height: 100%;
background-color: #fff;
}
#board {
position: relative;
height: 100%;
white-space: nowrap; /* important */
overflow: auto;
padding: 0;
top: -40px;
padding-top: 40px;
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 {
}
.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;
color: #fff;
}
.board-action-button {
font-size: 12pt;
font-weight: 100;
border: none;
margin-left: 10px;
}
.stack {
width: 320px;
margin-right: 10px;
vertical-align: top;
display: inline-block !important;
background-color: #f8f8f8;
}
.stack h2 {
padding:10px;
padding-bottom: 8px;
margin: 0;
font-size: 12pt;
font-weight: 700;
overflow: hidden;
height: 40px;
}
.stack h2 input {
padding: 0px;
width: 80%;
margin: 0;
font-size: 12pt;
font-weight: 700;
border: 0;
background-color: transparent;
float: left;
}
.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: 0px 0px 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;
margin: 0;
padding: 0;
margin: 5px;
display: inline-block;
float: left;
}
.card.has-labels h3 {
margin-top: 15px;
}
.card h3 .fa {
font-size: 18pt;
line-height: 10pt;
vertical-align: middle;
}
.card .labels {
position: absolute;
top: -5px;
left: 10px;
}
.card .labels li {
padding: 0px;
width: 15px;
height: 20px;
-webkit-border-radius: 3px;
font-size: 80%;
border-color: transparent;
border: none;
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;
margin: 0;
padding: 0;
padding: 10px;
border: none;
overflow: hidden;
margin: 10px;
-webkit-box-shadow: none;
}
.card.create:hover {
text-align: center;
opacity: 1;
}
.card.create h3 {
margin: 0;
padding: 0;
width: 100%;
}
.card.create h3 input {
width: 100%;
border: 0px;
padding: 0px;
margin: 0px;
font-weight: bold;
font-size: 10pt;
margin: 0;
padding: 0;
border-bottom: 1px solid #ffffff;
border-radius: 0px;
color: #ffffff;
background-color: transparent !important;
}
.card.create .fa {
color: #ffffff;
width: 100%;
}
.card.create .fa:hover {
opacity: 0.5;
cursor: pointer;
}
.due {
background-color: #eee;
color: #aaa;
padding: 1px;
padding-left: 3px;
padding-right: 3px;
border-radius: 4px;
margin-right: 2px;
}
#card-header {
height: 44px;
}
#card-header h2 {
font-size: 14pt;
padding: 10px;
padding-bottom: 9px;
overflow: hidden;
margin-bottom: 0px;
background-color: #f0f0f0;
}
.icon-close {
position: absolute;
top: 5px;
right: 5px;
}
#card-meta {
padding-top: 0px;
}
#card-dates {
font-size: 80%;
color: #aaaaaa;
margin-bottom: 3px;
}
#card-meta #labels {
margin-bottom: 10px;
}
#card-dates span {
}
#card-description > h3 {
border-bottom: 1px solid #333333;
font-weight: 600;
font-size: 10pt;
padding: 5px;
}
.save-indicator {
background-color: #009900;
color: #ffffff;
border-radius: 3px;
float:right;
padding:1px 10px;
font-size: 8pt !important;
display:none;
}
#card-description textarea {
width: 100%;
height: 200px;
border: none;
margin: 0px;
padding: 0px;
}
#card-description .container {
background-color: white;
}
#card-description .container.ng-hide-remove {
animation: fade 1s forwards;
background-color: rgba(255, 255, 100, 1);
}
@keyframes fade {
from {
background-color: rgba(255, 255, 100, 1);
}
to {
background-color: rgba(255, 255, 255, 0);
}
}
#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;
/*box-shadow: 0px 0px 5px 0px #aaa;*/
border-left: 1px solid #eeeeee;
}
#app-sidebar.details-visible {
right: 0px;
}
#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;
}
.labels li span {
}
.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 selector */
.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;
}
#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;
}
input.input-inline {
font-size: inherit !important;
font-weight: inherit;
background-color: transparent;
padding: 0;
margin: 0;
border: none;
width: 100%;
border-bottom: 1px solid #333333;
-webkit-border-radius: 0;
margin-top: -4px;
line-height: 100%;
margin-bottom: -4px;
}
button {
border: 0;
background-color: transparent;
}
button:hover {
border: 0;
background-color: transparent;
}
/* board detail */
#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-container.dropdown {
background: #ffffff;
border-radius: 0px;
box-shadow: none;
display: block;
margin-right: 0;
position: static;
width: 100%;
z-index: auto;
padding: 3px;
}
.ui-select-match-close {
float: right;
left: -20px;
margin-top: 3px;
z-index: 100;
position: relative;
}
.ui-select-match-item {
padding: 2px;
float: left;
display: block;
margin-right: -17px !important;
}
.ui-select-match-item .select-label {
padding: 4px;
color: #fff;
padding-right: 23px;
}
.ui-select-container {
background-color: #fafafa !important;
border: 1px solid #fafafa;
}
.ui-select-container.open {
border: 1px solid #aaaaaa;
}
.ui-select-container input.ui-select-search {
padding: 0px !important;
margin: 2px !important;
background-color: transparent;
border: none;
}
.ui-select-bootstrap .ui-select-choices-row > a {
padding: 3px !important;
}
.ui-select-choices-row-inner {
margin-bottom: 2px;
width: 100%;
padding: 0;
}
.ui-select-choices-row-inner span {
padding: 3px;
padding-left: 10px;
padding-right: 10px;
width: 100%;
}
/* ui-select disabled */
.ui-select-container[disabled] {
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: 0px !important;
}
@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 {
width:100% !important;
}
#markdown p {
margin-bottom: 15px;
}
#markdown * {
white-space: normal;
word-wrap:break-word;
word-wrap: break-word; /* All browsers since IE 5.5+ */
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
}
#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;
}
.shareWithList .username {
min-width: 100px;
}
.shareWithList .icon {
display: inline-block;
background-size: 16px 16px;
width: 16px;
height: 16px;
}
.shareWithList .fa {
font-size: 12pt;
width: 16px;
text-align: center;
}
.shareOption {
margin-top: 4px;
}
.app-deck .icon {
display: inline-block;
}
.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');
}
+1246
View File
File diff suppressed because it is too large Load Diff
-1
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
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
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
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

+79
View File
@@ -0,0 +1,79 @@
### Steps to reproduce
1.
2.
3.
### Expected behaviour
Tell us what should happen
### Actual behaviour
Tell us what happens instead
### Server configuration
<!--
You can use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
-->
**Operating system**:
**Web server:**
**Database:**
**PHP version:**
**Nextcloud version:** (see Nextcloud admin page)
**Where did you install Nextcloud from:**
**Signing status:**
```
Login as admin user into your Nextcloud and access
http://example.com/index.php/settings/integrity/failed
paste the results here.
```
**List of activated apps:**
```
If you have access to your command line run e.g.:
sudo -u www-data php occ app:list
from within your Nextcloud installation folder
```
**Nextcloud configuration:**
```
If you have access to your command line run e.g.:
sudo -u www-data php occ config:list system
from within your Nextcloud installation folder
or
Insert your config.php content here
Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)
```
**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/...
### Client configuration
**Browser:**
**Operating system:**
### Logs
#### Nextcloud log (data/nextcloud.log)
```
Insert your Nextcloud log here
```
#### Browser log
```
Insert your browser log here, this could for example include:
a) The javascript console log
b) The network log
c) ...
```
+9 -8
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/'
},
-10
View File
@@ -1,10 +0,0 @@
build:
grunt build
watch:
grunt watch
install:
npm install
bower install
+3
View File
@@ -20,6 +20,9 @@
*
*/
/* global angular */
angular.module('markdown', [])
.provider('markdown', [function () {
var opts = {};
+48 -40
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'
}
}
});
});
+57 -27
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"]'
});
});
+4 -3
View File
@@ -7,14 +7,15 @@
"angular-mocks": "~1.6.1",
"angular-sanitize": "~1.6.1",
"angular-animate": "~1.6.1",
"ng-sortable": "1.3.6",
"jquery": "3.1.x",
"ng-sortable": "1.3.8",
"jquery": "3.2.x",
"es6-shim": "~0.*",
"js-url": "~2.*",
"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,
+7 -6
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;
});
+100 -34
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,83 @@ 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 () {
return BoardService.getCurrent().title;
}, 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,18 +132,13 @@ 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);
});
BoardService.searchUsers('%25');
$scope.searchForUser = function (search) {
if (search == "") {
search = "%25";
}
BoardService.searchUsers(search);
};
@@ -172,10 +186,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;
@@ -194,9 +210,20 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
BoardService.updateAcl(acl);
};
$scope.aclTypeString = function (acl) {
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;
@@ -207,7 +234,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
@@ -219,14 +246,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");
@@ -244,6 +307,9 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
container.scrollTop(container.scrollTop() + 50);
}
}
},
accept: function (sourceItemHandleScope, destSortableScope, destItemScope) {
return sourceItemHandleScope.sortableScope.options.id === 'stack';
}
};
+149 -57
View File
@@ -1,5 +1,3 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
@@ -22,65 +20,159 @@
*
*/
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, 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;
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(CardService.getCurrent()).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(CardService.getCurrent()).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(item) {
CardService.unassignUser(CardService.getCurrent(), item.participant.uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
};
});
+166 -47
View File
@@ -1,4 +1,3 @@
/*
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
@@ -21,58 +20,178 @@
*
*/
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element) {
$scope.boards = [];
$scope.newBoard = {};
$scope.status = {};
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
$scope.boardservice = BoardService;
/* global app angular */
// 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
});
}
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) {
$scope.filterData = function () {
angular.copy($scope.boardservice.getData(), $scope.boardservice.sorted);
$scope.boardservice.sorted = $filter('orderBy')($scope.boardservice.sorted, 'title');
};
function calculateNewColor() {
var boards = BoardService.getAll();
var boardKeys = Object.keys(boards);
var colorOccurrences = [];
$scope.selectColor = function(color) {
$scope.newBoard.color = color;
};
for (var i = 0; i < $scope.colors.length; i++) {
colorOccurrences.push(0);
}
$scope.boardCreate = function() {
if(!$scope.newBoard.title || !$scope.newBoard.color) {
$scope.status.addBoard=false;
return;
}
BoardService.create($scope.newBoard)
.then(function (response) {
$scope.newBoard = {};
$scope.status.addBoard=false;
$scope.filterData();
}, function(error) {
$scope.status.createBoard = 'Unable to insert board: ' + error.message;
});
};
for (var j = 0; j < boardKeys.length; j++) {
var key = boardKeys[j];
var board = boards[key];
$scope.boardUpdate = function(board) {
BoardService.update(board).then(function(data) {
$scope.filterData();
});
board.status.edit = false;
};
if (board && $scope.colors.indexOf(board.color) !== -1) {
colorOccurrences[$scope.colors.indexOf(board.color)]++;
}
}
$scope.boardDelete = function(board) {
BoardService.delete(board.id).then(function (data) {
$scope.filterData();
});
};
return $scope.colors[colorOccurrences.indexOf(Math.min.apply(Math, colorOccurrences))];
}
$scope.boards = [];
$scope.newBoard = {};
$scope.status = {
deleteUndo: [],
filter: $stateParams.filter ? $stateParams.filter : '',
sidebar: false
};
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
$scope.boardservice = BoardService;
$scope.updatingBoard = null;
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;
return;
}
BoardService.create($scope.newBoard)
.then(function (response) {
$scope.newBoard = {};
$scope.newBoard.color = calculateNewColor();
$scope.status.addBoard=false;
filterData();
}, function(error) {
$scope.status.createBoard = 'Unable to insert board: ' + error.message;
});
};
$scope.boardUpdate = function(board) {
BoardService.update(board).then(function(data) {
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) {
BoardService.delete(board.id).then(function (data) {
filterData();
});
};
$scope.boardDeleteUndo = function (board) {
BoardService.deleteUndo(board.id).then(function (data) {
filterData();
});
};
});
+25 -26
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');
}
});
}
};
});
+17 -17
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');
}
});
}
};
});
+4 -4
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();
};
});
+6 -5
View File
@@ -26,11 +26,12 @@ app.directive('avatar', function() {
restrict: 'A',
scope: true,
link: function(scope, element, attr){
attr.$observe('displayname', function(value){
if(value!==undefined) {
$(element).avatar(value, 32);
}
});
var value = attr.user;
$(element).wrap('<div class="avatardiv-container"></div>');
if(attr.contactsmenu && oc_current_user !== value) {
$(element).contactsMenu(value, 0, $(element).parent());
}
$(element).avatar(value, 32, false, false, false, attr.displayname);
}
};
});
+53
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
});
}
};
});
+45
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
});
}
};
});
@@ -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;
};
});
+7 -6
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
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 '';
};
});
+29 -28
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 "";
}
}
};
});
+1 -1
View File
@@ -33,5 +33,5 @@ app.filter('lightenColorFilter', function() {
} else {
return "#" + hex;
}
}
};
});
+7 -3
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;
}
};
});
+20 -14
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";
}
}
};
});
+45
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;
};
});
+2 -1
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"
+128 -123
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;
});
+187 -112
View File
@@ -20,127 +20,202 @@
*
*/
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.searchUsers = function(search) {
var url = OC.generateUrl('/apps/deck/share/search/'+search);
var deferred = $q.defer();
var self = this;
$http.get(url).then(function (response) {
BoardService.prototype.delete = function (id) {
var deferred = $q.defer();
var self = this;
self.sharees = [];
// filter out everyone who is already in the share list
angular.forEach(response.data, function(item) {
var exists = false;
angular.forEach(self.getCurrent().acl, function(acl) {
if (acl.participant === item.participant) {
exists = true;
}
});
if(!exists) {
self.sharees.push(item);
}
});
$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;
};
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error while update ' + self.endpoint);
});
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.addAcl = function(acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
var _acl = acl;
$http.post(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
if(!board.acl) {
board.acl = {};
}
board.acl[response.data.id] = response.data;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error creating ACL ' + _acl);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.searchUsers = function (search) {
var deferred = $q.defer();
var self = this;
var searchData = {
format: 'json',
perPage: 4,
itemType: [0, 1]
};
if (search !== "") {
searchData.search = search;
}
$http({
method: 'GET',
url: OC.linkToOCS('apps/files_sharing/api/v1') + 'sharees',
params: searchData
})
.then(function (result) {
var response = result.data;
if (response.ocs.meta.statuscode !== 100) {
deferred.reject('Error while searching for sharees');
return;
}
self.sharees = [];
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;
};
var users = response.ocs.data.exact.users.concat(response.ocs.data.users);
var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups);
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;
};
// filter out everyone who is already in the share list
angular.forEach(users, function (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) {
exists = true;
}
});
if (!exists && OC.getCurrentUser().uid !== item.value.shareWith) {
self.sharees.push(acl);
}
});
angular.forEach(groups, function (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) {
exists = true;
}
});
if (!exists) {
self.sharees.push(acl);
}
});
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;
console.log(board.permissions);
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error fetching board permissions ' + board);
});
};
deferred.resolve(self.sharees);
}, function () {
deferred.reject('Error while searching for sharees');
});
BoardService.prototype.canRead = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_READ'];
}
return deferred.promise;
};
BoardService.prototype.canEdit = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_EDIT'];
}
BoardService.prototype.generateAcl = function (type, ocsItem) {
return {
boardId: null,
id: null,
owner: false,
participant: {
primaryKey: ocsItem.value.shareWith,
uid: ocsItem.value.shareWith,
displayname: ocsItem.label
},
permissionEdit: true,
permissionManage: true,
permissionShare: true,
type: type
};
};
BoardService.prototype.canManage = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_MANAGE'];
}
BoardService.prototype.addAcl = function (acl) {
var board = this.getCurrent();
var deferred = $q.defer();
var self = this;
var _acl = acl;
$http.post(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
if (!board.acl || board.acl.length === 0) {
board.acl = {};
}
board.acl[response.data.id] = response.data;
deferred.resolve(response.data);
}, function (error) {
deferred.reject('Error creating ACL ' + _acl);
});
acl = null;
return deferred.promise;
};
BoardService.prototype.canShare = function() {
if(!this.getCurrent() || !this.getCurrent().permissions) {
return false;
}
return this.getCurrent().permissions['PERMISSION_SHARE'];
}
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;
};
service = new BoardService($http, 'boards', $q);
return service;
});
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.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.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.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;
};
return new BoardService($http, 'boards', $q);
});
+106 -70
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;
});
+6 -7
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);
});
+96 -78
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;
});
+48 -45
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()
};
});
+29
View File
@@ -0,0 +1,29 @@
[package]
exclude = [
"build/",
".git",
"js/node_modules",
"js/tests",
"js/bower.json",
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"tests",
".codecov.yml",
"composer.json",
"composer.lock",
"_config.yml",
".drone.yml",
".eslintignore",
".eslintrc.yml",
".gitignore",
"issue_template.md",
"krankerl.toml",
"Makefile",
"run-eslint.sh"
]
before_cmds = [
'make clean-build',
'make build'
]
+9
View File
@@ -0,0 +1,9 @@
[main]
host = https://www.transifex.com
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
[nextcloud.deck]
file_filter = <lang>/deck.po
source_file = templates/deck.pot
source_lang = en
type = PO
+27
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
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);"
}
+24
View File
@@ -0,0 +1,24 @@
OC.L10N.register(
"deck",
{
"Finished" : "Завършен",
"To review" : "За преглед",
"Action needed" : "Необходимо е действие",
"Later" : "По-късно",
"Archive" : "Архивиране",
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено"
},
"nplurals=2; plural=(n != 1);");
+22
View File
@@ -0,0 +1,22 @@
{ "translations": {
"Finished" : "Завършен",
"To review" : "За преглед",
"Action needed" : "Необходимо е действие",
"Later" : "По-късно",
"Archive" : "Архивиране",
"Unarchive" : "Разархивиране",
"Delete" : "Изтриване",
"Sharing" : "Споделяне",
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
"Share" : "Сподели",
"Edit" : "Редакция",
"Manage" : "Управление",
"Discard share" : "Отхвърляне на споделяне",
"Members" : "Членове",
"Modified:" : "Променен на:",
"Created:" : "Създаден на:",
"by" : "от",
"Saved" : "Запазено"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+53
View File
@@ -0,0 +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",
"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",
"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",
"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);");
+51
View File
@@ -0,0 +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",
"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",
"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",
"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);"
}
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"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í",
"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í",
"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",
"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;");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"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í",
"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í",
"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",
"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;"
}
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"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",
"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",
"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",
"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);");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"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",
"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",
"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",
"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);"
}
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"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 ü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",
"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.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"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",
"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);");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"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 ü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",
"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.",
"Loading" : "Lade",
"Share" : "Teilen",
"Edit" : "Bearbeiten",
"Manage" : "Verwalten",
"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",
"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);"
}
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"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 ü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",
"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 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",
"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);");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"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 ü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",
"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 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",
"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);"
}
+54
View File
@@ -0,0 +1,54 @@
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" : "Πρόσθεσε νέα συστοιχία",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση",
"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…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},
"nplurals=2; plural=(n != 1);");
+52
View File
@@ -0,0 +1,52 @@
{ "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" : "Πρόσθεσε νέα συστοιχία",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
"All Boards" : "Όλοι οι πίνακες",
"Archived boards" : "Αρχειοθέτηση πινάκων ",
"Archive" : "Αρχειοθέτηση",
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
"Share" : "Διαμοιρασμός",
"Edit" : "Επεξεργασία",
"Manage" : "Διαχείριση",
"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…" : "Προσθήκη περιγραφής κάρτας...",
"Shared boards" : "Διαμοιρασμένοι πίνακες",
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
"Create a new board" : "Δημιουργία νέου πίνακα"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+73
View File
@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"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);");
+71
View File
@@ -0,0 +1,71 @@
{ "translations": {
"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);"
}
+73
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 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" : "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 título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"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",
"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",
"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);");
+71
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 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" : "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 título de tarjeta",
"Add card" : "Añadir tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartir",
"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",
"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",
"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);"
}
+36
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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);"
}

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