Compare commits

...
134 Commits
Author SHA1 Message Date
Lauri Ojansivu b650a89728 v3.45 2019-10-03 07:51:50 +03:00
Lauri Ojansivu 346dba4969 Update translations. 2019-10-03 07:46:50 +03:00
Lauri Ojansivu f3b858ca21 Revert drag handle changes. 2019-10-03 06:03:11 +03:00
Lauri Ojansivu 5bc355f9a5 Drag handles. In progress. 2019-10-03 04:23:33 +03:00
Lauri Ojansivu 21fa26a1be Update ChangeLog. 2019-10-01 21:09:27 +03:00
Lauri Ojansivu 66372271c2 Merge pull request #2740 from whowillcare/master
#2738 adding all pertinent help file for due days, plus modified the …
2019-10-01 18:41:01 +03:00
Sam X. Chen e60926f847 #2738 adding all pertinent help file for due days, plus modified the .list-header-name when in mobile mode 2019-10-01 10:39:36 -04:00
Lauri Ojansivu b04df1d54d Update translations. 2019-10-01 16:18:38 +03:00
Lauri Ojansivu 83f81f4586 Fix prettier. 2019-10-01 01:05:02 +03:00
Lauri Ojansivu 4785086e2f Fix lint. 2019-10-01 00:58:12 +03:00
Lauri Ojansivu 98c38fe58f Drag handles continue. In progress.
Thanks to xet7 !
2019-10-01 00:48:36 +03:00
Lauri Ojansivu 44378fe9d1 Update translations. 2019-09-30 21:31:49 +03:00
Lauri Ojansivu afcca947e3 Update translations. 2019-09-30 15:03:15 +03:00
Lauri Ojansivu 20526756db Update translations. 2019-09-28 15:15:23 +03:00
Lauri Ojansivu 58724f93c9 Update ChangeLog. 2019-09-28 15:05:53 +03:00
Lauri Ojansivu 5d6c68a9cf Merge branch 'master' of github.com:wekan/wekan 2019-09-28 14:56:51 +03:00
Lauri Ojansivu ed4c49090a Merge pull request #2738 from whowillcare/master
Add feature: Add due timeline into Calendar view
2019-09-28 14:57:00 +03:00
Lauri Ojansivu 75dc5f226c Merge branch 'feature-drag-handle' 2019-09-28 14:55:09 +03:00
Sam X. Chen 020b663836 Feature enhancement: Allow wekan master have more flexiblity on setting up due reminder 2019-09-26 12:24:40 -04:00
Sam X. Chen e5f0dd7dd8 Add feature: Add due timeline into Calendar view 2019-09-26 12:20:14 -04:00
Sam X. Chen 4f34adbd44 Merge remote-tracking branch 'upstream/master' 2019-09-26 10:53:58 -04:00
Sam X. Chen 62b72a03c4 Add feature: Add due timeline into Calendar view 2019-09-26 10:53:40 -04:00
Lauri Ojansivu 5696e4a4c6 Update translations. 2019-09-25 21:37:25 +03:00
Lauri Ojansivu 814e264521 Merge pull request #2720 from whowillcare/master
if username contains space, @ functions will fail at certain point
2019-09-25 20:51:51 +03:00
Lauri Ojansivu 872ed4b2f9 Drag handles continue. In progress. 2019-09-25 20:49:19 +03:00
Lauri Ojansivu 1d8633e7e6 Update translations. 2019-09-25 20:46:35 +03:00
Lauri Ojansivu b3637f2781 Merge branch 'master' of github.com:wekan/wekan 2019-09-25 20:44:46 +03:00
Lauri Ojansivu 68d3cdae58 Merge pull request #2734 from jernejh/patch-1
Update sl.i18n.json
2019-09-25 20:44:53 +03:00
jernejh 620a362244 Update sl.i18n.json 2019-09-25 19:08:18 +02:00
Sam X. Chen d5cff1ec48 Add feature: differentiating new due time and modified due time 2019-09-25 11:48:20 -04:00
Sam X. Chen 8d7714760c BUG FIX: archived cards still sent out notification 2019-09-25 11:26:46 -04:00
Sam X. Chen a37723f8a4 Fixing method in users.js didn't have check userId 2019-09-21 15:32:21 -04:00
Sam X. Chen e3a727edec Merge remote-tracking branch 'upstream/master' 2019-09-19 15:17:01 -04:00
Sam X. Chen 4ee88e026e Buxfixed: if username contains space, it will cause @ commment failed to send out email and other 2019-09-19 15:16:48 -04:00
Lauri Ojansivu 55a2473d81 Merge branch 'feature-drag-handle' 2019-09-19 01:12:04 +03:00
Lauri Ojansivu ba754cfaea v3.44 2019-09-17 23:54:31 +03:00
Lauri Ojansivu 7a8011f887 Update ChangeLog. 2019-09-17 22:19:01 +03:00
Lauri Ojansivu 125231beff Add language: Slovenian.
Thanks to translators!
2019-09-17 22:16:06 +03:00
Lauri Ojansivu f70e47a012 Update ChangeLog. 2019-09-17 20:28:39 +03:00
Lauri Ojansivu 0c34566aef Merge pull request #2717 from whowillcare/master
BugFix: in richer editor @ autocomplete doesn't really insert the username properly
2019-09-17 19:37:38 +03:00
Sam X. Chen f29d7daa1d BugFix: in richer editor @ autocomplete doesn't really insert the user name into comment properly 2019-09-17 09:30:26 -04:00
Sam X. Chen 0120c73a80 Merge remote-tracking branch 'upstream/master' 2019-09-17 09:27:36 -04:00
Sam X. Chen 194b6ad46e BugFix: in richer editor @ autocomplete doesn't really insert the user name into comment properly 2019-09-17 09:27:23 -04:00
Lauri Ojansivu 158ddadf54 v3.43 2019-09-17 03:06:01 +03:00
Lauri Ojansivu 9fb0ef7eb2 Update readme. 2019-09-17 02:51:44 +03:00
Lauri Ojansivu 503be10d36 Update Readme. 2019-09-17 02:49:38 +03:00
Lauri Ojansivu 3021f1cbe1 Update ChangeLog. 2019-09-17 02:39:21 +03:00
Lauri Ojansivu c66eba217b Update ChangeLog. 2019-09-17 02:36:49 +03:00
Lauri Ojansivu 8486ccbaa8 Update translations. 2019-09-17 01:43:26 +03:00
Lauri Ojansivu 03d7fc02ec Drag handles. In Progress. 2019-09-17 01:39:10 +03:00
Lauri Ojansivu ddd00a27a9 Merge pull request #2715 from whowillcare/master
fix some issues found
2019-09-17 01:34:55 +03:00
Sam X. Chen b31c42acc4 Merge remote-tracking branch 'upstream/master' 2019-09-16 14:43:51 -04:00
Sam X. Chen 616903114f Fix two-way webhooks - locking might fail sometime 2019-09-16 14:43:32 -04:00
Lauri Ojansivu 6e6e7ded82 Update translations. 2019-09-15 00:03:27 +03:00
Lauri Ojansivu 6c7e1ed3ae Add translation for "Show desktop drag handles".
Thanks to xet7 !
2019-09-14 23:53:56 +03:00
Lauri Ojansivu d896f6dbcf v3.42 2019-09-14 06:06:08 +03:00
Lauri Ojansivu 5e963375cb Update translations. 2019-09-14 06:00:05 +03:00
Lauri Ojansivu 57119868bb Revert drag handle changes.
Thanks to Keelan !

Related #2704
2019-09-14 05:55:32 +03:00
Lauri Ojansivu 7b445dfc93 v3.41 2019-09-13 03:59:51 +03:00
Lauri Ojansivu 5f27a76312 Update translations. 2019-09-13 03:56:37 +03:00
Lauri Ojansivu b34960d1bd Update ChangeLog. 2019-09-13 03:50:09 +03:00
Lauri Ojansivu ff550e9110 Mobile and Desktop drag handles part 1.
Thanks to xet7 !

Related #2081
2019-09-13 03:45:55 +03:00
Lauri Ojansivu 0fcfc3a340 Update readme. 2019-09-12 13:06:35 +03:00
Lauri Ojansivu f95d19ab49 Update readme. 2019-09-12 13:05:01 +03:00
Lauri Ojansivu 50744dead8 Update links at readme. 2019-09-12 12:59:27 +03:00
Lauri Ojansivu a0e5737e4c Anonymize data please. 2019-09-12 10:18:53 +03:00
Lauri Ojansivu ecd9b9b5f4 v3.40 2019-09-11 21:12:58 +03:00
Lauri Ojansivu 389ed2f1ad Update translations. 2019-09-11 21:07:54 +03:00
Lauri Ojansivu 273dc5223b Update ChangeLog. 2019-09-11 21:02:55 +03:00
Lauri Ojansivu db32f595fe Merge pull request #2697 from justinr1234/patch-7
Fix #2688 subcard selector
2019-09-11 19:18:32 +03:00
justinr1234 4d967360b2 Fix #2688 subcard selector 2019-09-11 10:54:32 -05:00
Lauri Ojansivu f14dce2f19 v3.39 2019-09-11 16:11:55 +03:00
Lauri Ojansivu 82f73ab58c Update translations. 2019-09-11 16:05:58 +03:00
Sam X. Chen 0b52ba4ded Merge remote-tracking branch 'upstream/master' 2019-09-11 09:05:28 -04:00
Sam X. Chen e0046032e8 Fixing @user in comments doesn't work if it's in a separate line 2019-09-11 09:05:16 -04:00
Lauri Ojansivu f094efa929 Update ChangeLog. 2019-09-11 16:04:26 +03:00
Lauri Ojansivu 6ce8eeee6c Revert Wekan v3.37 Fix Linked cards make load all cards of database.
Thanks to xet7!

Related #2688,
related #2693
2019-09-11 16:00:57 +03:00
Lauri Ojansivu be70c02922 v3.38 2019-09-11 04:47:56 +03:00
Lauri Ojansivu a61afda39e Update translations. 2019-09-11 04:30:38 +03:00
Lauri Ojansivu 126ab58e03 Create FUNDING.yml 2019-09-11 03:05:45 +03:00
Lauri Ojansivu ca95bba358 v3.37 2019-09-07 22:42:03 +03:00
Lauri Ojansivu 6407893aa6 Update translations. 2019-09-07 22:39:23 +03:00
Lauri Ojansivu 45ed9b426f [Fix Unable to drag select text without closing card details](https://github.com/wekan/wekan/pull/2690).
Thanks to justinr1234 !

Closes #2451
2019-09-07 22:35:15 +03:00
Lauri Ojansivu 11d6b77bb1 Merge pull request #2690 from justinr1234/fix-drag-select-on-card-details
Fix #2451 unable to drag select text without closing card details
2019-09-07 22:33:20 +03:00
Lauri Ojansivu f248dada3f Update ChangeLog. 2019-09-07 17:58:55 +03:00
Lauri Ojansivu a56988c487 Fix: Linked cards make load all cards of database.
Thanks to Akuket !

Closes #2688
2019-09-07 17:56:38 +03:00
Justin Reynolds 74b5bdf2aa Fix #2451 unable to drag select text without closing card details 2019-09-06 17:18:06 -05:00
Lauri Ojansivu 753d5b953d Fix prettier. 2019-09-06 21:27:06 +03:00
Lauri Ojansivu ea26f70669 Merge pull request #2683 from insertjokehere/fix_error_on_successful_webhook
Treat any 2xx webhook response status code as success
2019-09-06 19:22:36 +03:00
William Hughes 682c23e011 Treat any 2xx webhook response status code as success 2019-09-06 11:29:00 +12:00
Lauri Ojansivu d4a307f66d Update translations. 2019-09-06 01:28:43 +03:00
Lauri Ojansivu 7c9bf3ce0f Update ChangeLog. 2019-09-06 01:27:09 +03:00
Lauri Ojansivu 6cbd4cabc7 LDAP: Fix USERDN example, when parameters contain spaces:
LDAP_AUTHENTIFICATION_USERDN="CN=ldap admin,CN=users,DC=domainmatter,DC=lan"

Thanks to compumatter !
2019-09-06 01:22:15 +03:00
Lauri Ojansivu 10b953041f v3.36 2019-09-05 23:17:03 +03:00
Lauri Ojansivu 36fb31c138 Try to fix snap. 2019-09-05 23:05:50 +03:00
Lauri Ojansivu 3f2490e64d Update translations. 2019-09-05 22:58:53 +03:00
Lauri Ojansivu 37065c1d50 Update ChangeLog. 2019-09-05 22:54:37 +03:00
Lauri Ojansivu 9764e03a37 Merge branch 'justinr1234-fix-date-stamps' 2019-09-05 22:48:36 +03:00
Lauri Ojansivu 0f5226f814 Merge branch 'fix-date-stamps' of https://github.com/justinr1234/wekan into justinr1234-fix-date-stamps 2019-09-05 21:01:51 +03:00
Justin Reynolds 3b9f2ca7c2 Fixes #2596 incorrect date types for created & updated 2019-09-05 12:29:45 -05:00
Lauri Ojansivu 7953e5a52a Try to fix Snap. 2019-09-04 23:53:14 +03:00
Lauri Ojansivu 9617c78798 Update translations. 2019-09-04 22:48:17 +03:00
Lauri Ojansivu 28f21487b0 Add package-lock.json back. 2019-09-04 22:35:32 +03:00
Lauri Ojansivu 4567f08a0b Try to fix prettier. 2019-09-04 22:26:00 +03:00
Lauri Ojansivu b0281e1941 Try to fix rebuild script. 2019-09-04 22:25:30 +03:00
Lauri Ojansivu efed77b474 Update translations. 2019-09-04 22:14:44 +03:00
Lauri Ojansivu a70b97676a Remove package-lock.json 2019-09-04 22:09:22 +03:00
Lauri Ojansivu 7b54983ec2 Try to fix snap. 2019-09-04 22:05:51 +03:00
Lauri Ojansivu bc2fcef7c4 Update ChangeLog. 2019-09-04 21:54:27 +03:00
Lauri Ojansivu 750349053c Update translations. 2019-09-04 21:46:01 +03:00
Lauri Ojansivu bfbe32e1ec Merge pull request #2665 from whowillcare/master
Add Feature: complete the original author's webhook functions and add two-way webhook type
2019-09-04 21:11:41 +03:00
Lauri Ojansivu ccfaf879dd Merge pull request #2667 from Akuket/master
Patch admin search feature
2019-09-04 21:10:25 +03:00
Lauri Ojansivu ebd32af5c1 Merge pull request #2672 from Scherdel/master
Devcontainer: Removed MAIL-Vars, Add PATH with meteor to Envionment
2019-09-04 21:09:57 +03:00
Lauri Ojansivu 43ea7d761e Try to fix snap. 2019-09-04 21:07:17 +03:00
Christoph Jahn a715e30cba DevContainer: use docker extend file, fix PATH 2019-09-03 21:20:24 +02:00
Christoph Jahn 8633bd8974 Merge branch 'master' of https://github.com/scherdel/wekan 2019-09-02 20:28:48 +02:00
Christoph Jahn 9474bee7fa DevContainer: Updated node and mongodb 2019-09-02 20:28:39 +02:00
Christoph Jahn 92b86ada39 Merge branch 'master' of https://github.com/scherdel/wekan 2019-09-02 17:00:17 +00:00
Christoph Jahn 03bea6e406 Removed MAIL-Vars for DEV, Add PATH to ENV 2019-09-02 18:57:17 +02:00
guillaume 6183402754 Merge branch 'master' of https://github.com/wekan/wekan 2019-08-30 17:18:29 +02:00
guillaume 663ba26d4d Patch admin search feature 2019-08-30 17:17:25 +02:00
Sam X. Chen 510407467c Add Feature: enable two-way webhooks - add comments need userid 2019-08-30 10:36:17 -04:00
Sam X. Chen b477fc1b1c Add Feature: enable two-way webhooks - fixing lint error 2019-08-29 23:49:32 -04:00
Sam X. Chen 58155288fb Merge remote-tracking branch 'upstream/master' 2019-08-29 22:08:41 -04:00
Sam X. Chen dd0682328b Add Feature: enable two-way webhooks - stage two 2019-08-29 22:07:40 -04:00
Lauri Ojansivu d1ab787215 v3.35 2019-08-29 21:12:24 +03:00
Lauri Ojansivu 71d32c6bc8 Try to fix snap. 2019-08-29 21:08:14 +03:00
Lauri Ojansivu 3acc9d4468 v3.34 2019-08-29 19:41:26 +03:00
Lauri Ojansivu d5403bbfc5 Snap: Delete all .swp files.
Thanks to xet7 !
2019-08-29 19:38:25 +03:00
Lauri Ojansivu 583c369233 v3.33 2019-08-29 17:01:23 +03:00
Lauri Ojansivu 96efa659a8 Update ChangeLog. 2019-08-29 16:57:33 +03:00
Lauri Ojansivu 87af5ecb36 Merge pull request #2664 from grmpfhmbl/feature-colored-calendar-cards
add card color to calendar event (#2651)
2019-08-29 16:54:46 +03:00
Steffen b7c5ba3d1b add card color to calendar event (#2651) 2019-08-29 14:12:53 +02:00
Sam X. Chen 3f0600fed7 Add Feature: enable two-way webhooks - stage one 2019-08-17 19:17:57 -04:00
118 changed files with 38619 additions and 36919 deletions

No files matched your search

+4 -2
View File
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=8.16.0 \
NODE_VERSION=8.16.1 \
METEOR_RELEASE=1.8.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -144,11 +144,13 @@ RUN set -o xtrace \
&& printf "\n[-] Installing Meteor $METEOR_VERSION...\n\n" \
&& sh /home/wekan/install-meteor.sh
ENV PATH=$PATH:$HOME/.meteor/
ENV PATH=$PATH:/home/wekan/.meteor/
# Copy source dir
USER root
RUN echo "export PATH=$PATH" >> /etc/environment
RUN set -o xtrace \
&& mkdir /home/wekan/app
+1 -1
View File
@@ -1,6 +1,6 @@
// See https://aka.ms/vscode-remote/devcontainer.json for format details.
{
"dockerComposeFile": "docker-compose.yml",
"dockerComposeFile": ["docker-compose.yml", "docker-compose.extend.yml"],
"service": "wekan-dev",
"workspaceFolder": "/home/wekan/app",
"extensions": [
+1 -4
View File
@@ -3,7 +3,7 @@ version: '3.7'
services:
wekandb-dev:
image: mongo:4.0.11
image: mongo:4.0.12
container_name: wekan-dev-db
restart: unless-stopped
command: mongod --smallfiles --oplogSize 128
@@ -29,9 +29,6 @@ services:
environment:
- MONGO_URL=mongodb://wekandb-dev:27017/wekan
- ROOT_URL=http://localhost:3000
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
- WITH_API=true
- RICHER_CARD_COMMENT_EDITOR=true
- BROWSER_POLICY_ENABLED=true
+3
View File
@@ -0,0 +1,3 @@
# These are supported funding model platforms
custom: ['https://wekan.team/commercial-support/']
+4 -4
View File
@@ -7,8 +7,9 @@ Other Wekan issues can be added here.
**Server Setup Information**:
* Note: Please anonymize info, and do not add to this public issue any of your Wekan board URLs, passwords, API tokens etc, do you understand?:
* Did you test in newest Wekan?:
* For new Wekan install, did you configure root-url correctly https://github.com/wekan/wekan/wiki/Settings ?
* For new Wekan install, did you configure root-url correctly so Wekan cards open correctly https://github.com/wekan/wekan/wiki/Settings ?
* Wekan version:
* If this is about old version of Wekan, what upgrade problem you have?:
* Operating System:
@@ -16,13 +17,12 @@ Other Wekan issues can be added here.
* Http frontend if any (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
* Node Version:
* MongoDB Version:
* ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
* Wekan only works on newest desktop Firefox/Chromium/Chrome/Edge/Chromium Edge and mobile Chrome. What webbrowser version are you using?
**Problem description**:
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work. Use peek to record animgif in Linux https://github.com/phw/peek*
- *Explain steps how to reproduce*
- *In webbrowser, what does show Right Click / Inspect / Console ? Chrome shows more detailed info than Firefox.*
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ?*
- *If using Docker, what does show command `sudo docker logs wekan-app` ?*
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ? Please anonymize logs.*
- *If using Docker, what does show command `sudo docker logs wekan-app` ? Please anonymize logs.*
- *If logs are very long, attach them in .zip file*
+1
View File
@@ -31,3 +31,4 @@ ehthumbs.db
.eslintcache
.meteor/local
.meteor-1.6-snap/.meteor/local
.devcontainer/docker-compose.extend.yml
+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+155
View File
@@ -1,3 +1,158 @@
# v3.45 2019-10-03 Wekan release
This release adds the following new features:
- [Cards due timeline will be shown in Calendar view](https://github.com/wekan/wekan/pull/2738).
Thanks to whowillcare.
- [Modified due day reminders in cards.js, so wekan server admin can control the reminder more flexibly](https://github.com/wekan/wekan/pull/2738).
i.e. NOTIFY_DUE_DAYS_BEFORE_AND_AFTER = 0 notification will be sent on due day only.
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER = 2,0 it means notification will be sent on both due day and two days before.
Thanks to whowillcare.
- [Added modifications the help files, related to NOTIFY_DUE_DAYS_BEFORE_AND_AFTER](https://github.com/wekan/wekan/pull/2740).
Thanks to whowillcare.
and fixes the following bugs:
- [Modified list.style regarding .list-header-name when in mobile mode. It was too close to left arrow](https://github.com/wekan/wekan/pull/2740).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.44 2019-09-17 Wekan release
This release adds the following languages:
- [Add language: Slovenian](https://github.com/wekan/wekan/commit/125231beff0fb84a18a46fe246fa12e098246985).
Thanks to translators.
and fixes the following bugs:
- [Fix: in richer editor @ autocomplete doesn't really insert the username properly](https://github.com/wekan/wekan/pull/2717).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.43 2019-09-17 Wekan release
This release fixes the following bugs:
- [In richer editor, @user might not get pickup correctly, if it's formated](https://github.com/wekan/wekan/pull/2715).
Thanks to whowillcare.
- [Table content should have word-wrap](https://github.com/wekan/wekan/pull/2715).
Thanks to whowillcare.
- [Two-way hooks locking mechanism will fail sometime, therefore, change all comment insert or update to direct, which means it won't invoke any hook](https://github.com/wekan/wekan/pull/2715).
Thanks to whowillcare.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.42 2019-09-14 Wekan release
This release removed the following new features:
- [Revert drag handle changes of Wekan v3.41](https://github.com/wekan/wekan/commit/57119868bbb49f47c7d0b51b9952df9bd83d46f5).
Thanks to Keelan.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.41 2019-09-13 Wekan release
This release adds the following new features:
- [More Mobile and Desktop drag handles for Swimlanes/Lists/Cards. Part 1](https://github.com/wekan/wekan/commit/ff550e91103115e7b731dd80c4588b93b2d4c64f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.40 2019-09-11 Wekan release
This release fixes the following bugs:
- [Fix subcard selector](https://github.com/wekan/wekan/pull/2697).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.39 2019-09-11 Wekan release
This release fixes the following bugs:
- [To load all boards, revert Wekan v3.37 Fix Linked cards make load all cards of database](https://github.com/wekan/wekan/commit/6ce8eeee6c477cd39b684c47bf122b5872818ada).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.38 2019-09-11 Wekan release
- Update translations. Thanks to translators.
# v3.37 2019-09-07 Wekan release
This release fixes the following bugs:
- LDAP: [Fix USERDN example, when parameters contain spaces](https://github.com/wekan/wekan/commit/6cbd4cabc716c755e547abb798f657fe5476ed04).
LDAP_AUTHENTIFICATION_USERDN="CN=ldap admin,CN=users,DC=domainmatter,DC=lan" .
Thanks to compumatter.
- [Fix: Linked cards make load all cards of database](https://github.com/wekan/wekan/commit/a56988c487745b2879cebe1943e7a987016e8bef).
Thanks to Akuket.
- [Fix Unable to drag select text without closing card details](https://github.com/wekan/wekan/pull/2690).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.36 2019-09-05 Wekan release
This release adds the following new features:
- [Complete the original author's webhook functions and add two-way webhook type](https://github.com/wekan/wekan/pull/2665):
1. Make webhook function more complete by allowing user to specify name and token of
a webhook to increase security.
1. Allow wekan admin to sepcify a global webhook.
3. Add new type of two-way webhook that can act on the JSON webhook return payload:
3.1. If the payload data contains cardId, boardId, and comment key words,
3.2. If it has commentId, an existing comment will be modified
3.3. If it doesn't have commentId, then a new comment will be added, otherwise, does nothing.
Thanks to whowillcare.
- [Patch admin search feature to Search in all users, not just "loaded" users
in the client](https://github.com/wekan/wekan/pull/2667).
Thanks to Akuket.
- [Devcontainer: Moved MAIL-Vars to not-committed file, and added PATH with meteor to
Environment](https://github.com/wekan/wekan/pull/2672).
Thanks to road42.
and fixes the following bugs:
- [Fix incorrect date types for created and updated, so now newest card comments are at top](https://github.com/wekan/wekan/pull/2679).
Thanks to justinr1234.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.35 2019-08-29 Wekan release
This release fixes the following bugs:
- [Try to fix Snap](https://github.com/wekan/wekan/commit/71d32c6bc8e6affd345026797ff31e94a0a10d77).
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.34 2019-08-29 Wekan release
This release fixes the following bugs:
- [Snap: Delete all .swp files](https://github.com/wekan/wekan/commit/d5403bbfc53390aeaaf68eb452bc24d88f1e0942).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.33 2019-08-29 Wekan release
This release adds the following new features:
- [Add card color to calendar event. The color of the calendar event will match the card
color](https://github.com/wekan/wekan/pull/2664).
Thanks to grmpfhmbl.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.32 2019-08-29 Wekan release
This release fixes the following bugs:
+8 -28
View File
@@ -54,13 +54,12 @@ that by providing one-click installation on various platforms.
- [Features][features]: Wekan has real-time user interface.
- [Platforms][platforms]: Wekan supports many platforms.
Wekan is critical part of new platforms Wekan is currently being integrated to.
- [Integrations][integrations]: Current possible integrations and future plans.
## Requirements
- 64bit: Linux [Snap](https://github.com/wekan/wekan-snap/wiki/Install) or [Sandstorm](https://sandstorm.io) /
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms). [ARM progress](https://github.com/wekan/wekan/issues/1053#issuecomment-410919264).
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
- 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM.
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/devel/docker-compose.yml): 3 frontend servers,
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
@@ -74,41 +73,25 @@ that by providing one-click installation on various platforms.
Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet.
Some bug can cause Wekan board to not load at all, requiring manual fixing of database content.
## Roadmap
## Roadmap and Demo
[Roadmap Milestones](https://github.com/wekan/wekan/milestones)
[Roadmap][roadmap_wekan] - Public read-only board at Wekan demo.
[Developer Documentation][dev_docs]
- There is many companies and individuals contributing code to Wekan, to add features and bugfixes
[many times a day](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md).
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
- [Commercial Support](https://wekan.team).
- [Bounties](https://wekan.team/bounties/index.html).
- [Commercial Support](https://wekan.team/commercial-support/).
We also welcome sponsors for features and bugfixes.
By working directly with Wekan you get the benefit of active maintenance and new features added by growing Wekan developer community.
## Demo
[Wekan demo][roadmap_wefork]
## Screenshot
[More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features)
[![Screenshot of Wekan][screenshot_wefork]][roadmap_wefork]
## Stable
- master+devel branch. At release, devel is merged to master.
- Receives fixes and features that have been tested at edge that they work.
- If you want automatic updates, [use Snap](https://github.com/wekan/wekan-snap/wiki/Install).
- If you want to test before update, [use Docker quay.io release tags](https://github.com/wekan/wekan/wiki/Docker).
## Edge
- edge branch. All new fixes and features are added to here first. [Testing Edge](https://github.com/wekan/wekan-snap/wiki/Snap-Developer-Docs).
[![Screenshot of Wekan][screenshot_wekan]][roadmap_wekan]
## License
@@ -117,14 +100,11 @@ with [Meteor](https://www.meteor.com).
[platforms]: https://github.com/wekan/wekan/wiki/Platforms
[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
[screenshot_wekan]: http://i.imgur.com/cI4jW2h.png
[screenshot_wefork]: https://wekan.github.io/wekan-markdown.png
[screenshot_wekan]: https://wekan.github.io/wekan-markdown.png
[features]: https://github.com/wekan/wekan/wiki/Features
[integrations]: https://github.com/wekan/wekan/wiki/Integrations
[roadmap_wekan]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
[roadmap_wefork]: https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap
[roadmap_wekan]: https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license
[wekan_issues]: https://github.com/wekan/wekan/issues
[wekan_issues]: https://github.com/wekan/wekan/issues
[wefork_issues]: https://github.com/wefork/wekan/issues
[docker_image]: https://hub.docker.com/r/wekanteam/wekan/
[travis_badge]: https://travis-ci.org/wekan/wekan.svg?branch=devel
[travis_status]: https://travis-ci.org/wekan/wekan
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.32.0"
appVersion: "v3.45.0"
files:
userUploads:
- README.md
+36 -15
View File
@@ -309,25 +309,46 @@ BlazeComponent.extendComponent({
events(start, end, timezone, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const events = [];
const pushEvent = function(card, title, start, end, extraCls) {
start = start || card.startAt;
end = end || card.endAt;
title = title || card.title;
const className =
(extraCls ? `${extraCls} ` : '') +
(card.color ? `calendar-event-${card.color}` : '');
events.push({
id: card._id,
title,
start,
end: end || card.endAt,
allDay:
Math.abs(end.getTime() - start.getTime()) / 1000 === 24 * 3600,
url: FlowRouter.url('card', {
boardId: currentBoard._id,
slug: currentBoard.slug,
cardId: card._id,
}),
className,
});
};
currentBoard
.cardsInInterval(start.toDate(), end.toDate())
.forEach(function(card) {
events.push({
id: card._id,
title: card.title,
start: card.startAt,
end: card.endAt,
allDay:
Math.abs(card.endAt.getTime() - card.startAt.getTime()) /
1000 ===
24 * 3600,
url: FlowRouter.url('card', {
boardId: currentBoard._id,
slug: currentBoard.slug,
cardId: card._id,
}),
});
pushEvent(card);
});
currentBoard
.cardsDueInBetween(start.toDate(), end.toDate())
.forEach(function(card) {
pushEvent(
card,
`${card.title} ${TAPi18n.__('card-due')}`,
card.dueAt,
new Date(card.dueAt.getTime() + 36e5),
);
});
events.sort(function(first, second) {
return first.id > second.id ? 1 : -1;
});
callback(events);
},
eventResize(event, delta, revertFunc) {
+78
View File
@@ -53,3 +53,81 @@ position()
padding: 0 0px 0px 0
overflow-x: hidden
overflow-y: auto
calendar-event-color(background, borderColor, color...)
background: background !important
border-color: borderColor
if color
color: color !important //overwrite text for better visibility
.calendar-event-green
calendar-event-color(#3cb500, #2a8000, #ffffff) //White text for better visibility
.calendar-event-yellow
calendar-event-color(#fad900, #c7ac00, #000) //Black text for better visibility
.calendar-event-orange
calendar-event-color(#ff9f19, #cc7c14, #000) //Black text for better visibility
.calendar-event-red
calendar-event-color(#eb4646, #b83737, #ffffff) //White text for better visibility
.calendar-event-purple
calendar-event-color(#a632db, #7d26a6, #ffffff) //White text for better visibility
.calendar-event-blue
calendar-event-color(#0079bf, #005a8a, #ffffff) //White text for better visibility
.calendar-event-pink
calendar-event-color(#ff78cb, #cc62a3, #000) //Black text for better visibility
.calendar-event-sky
calendar-event-color(#00c2e0, #0094ab, #ffffff) //White text for better visibility
.calendar-event-black
calendar-event-color(#4d4d4d, #1a1a1a, #ffffff) //White text for better visibility
.calendar-event-lime
calendar-event-color(#51e898, #3eb375, #000) //Black text for better visibility
.calendar-event-silver
calendar-event-color(#c0c0c0, #8c8c8c, #000) //Black text for better visibility
.calendar-event-peachpuff
calendar-event-color(#ffdab9, #ccaf95, #000) //Black text for better visibility
.calendar-event-crimson
calendar-event-color(#dc143c, #a8112f, #ffffff) //White text for better visibility
.calendar-event-plum
calendar-event-color(#dda0dd, #a87ba8, #000) //Black text for better visibility
.calendar-event-darkgreen
calendar-event-color(#006400, #003000, #ffffff) //White text for better visibility
.calendar-event-slateblue
calendar-event-color(#6a5acd, #4f4399, #ffffff) //White text for better visibility
.calendar-event-magenta
calendar-event-color(#ff00ff, #cc00cc, #ffffff) //White text for better visibility
.calendar-event-gold
calendar-event-color(#ffd700, #ccaa00, #000) //Black text for better visibility
.calendar-event-navy
calendar-event-color(#000080, #000033, #ffffff) //White text for better visibility
.calendar-event-gray
calendar-event-color(#808080, #333333, #ffffff) //White text for better visibility
.calendar-event-saddlebrown
calendar-event-color(#8b4513, #572b0c, #ffffff) //White text for better visibility
.calendar-event-paleturquoise
calendar-event-color(#afeeee, #8ababa, #000) //Black text for better visibility
.calendar-event-mistyrose
calendar-event-color(#ffe4e1, #ccb8b6, #000) //Black text for better visibility
.calendar-event-indigo
calendar-event-color(#4b0082, #2b004d, #ffffff) //White text for better visibility
+21 -1
View File
@@ -321,6 +321,19 @@ BlazeComponent.extendComponent({
parentComponent.showOverlay.set(true);
parentComponent.mouseHasEnterCardDetails = true;
},
'mousedown .js-card-details'() {
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', true);
},
'mousemove .js-card-details'() {
if (Session.get('cardDetailsIsMouseDown')) {
Session.set('cardDetailsIsDragging', true);
}
},
'mouseup .js-card-details'() {
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
},
'click #toggleButton'() {
Meteor.call('toggleSystemMessages');
},
@@ -777,7 +790,14 @@ BlazeComponent.extendComponent({
EscapeActions.register(
'detailsPane',
() => {
Utils.goBoardId(Session.get('currentBoard'));
if (Session.get('cardDetailsIsDragging')) {
// Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
} else {
// Prevent close card when the user is selecting text and moves the mouse cursor outside the card detail area
Utils.goBoardId(Session.get('currentBoard'));
}
},
() => {
return !Session.equals('currentCard', null);
+2 -1
View File
@@ -105,7 +105,8 @@
right: 5px;
top: 5px;
display:none;
@media only screen and (max-width: 1199px) {
// @media only screen and (max-width: 1199px) {
@media only screen and (max-width: 800px) {
display:block;
}
.fa-arrows
+1 -1
View File
@@ -31,7 +31,7 @@ BlazeComponent.extendComponent({
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
if (window.matchMedia('(max-width: 1199px)').matches) {
if (Utils.isMiniScreen()) {
$('.js-minicards').sortable({
handle: '.handle',
});
+39 -11
View File
@@ -94,7 +94,13 @@ Template.editor.onRendered(() => {
currentBoard
.activeMembers()
.map(member => {
const username = Users.findOne(member.userId).username;
const user = Users.findOne(member.userId);
if (user._id === Meteor.userId()) {
return null;
}
const value = user.username;
const username =
value && value.match(/\s+/) ? `"${value}"` : value;
return username.includes(term) ? username : null;
})
.filter(Boolean),
@@ -120,9 +126,10 @@ Template.editor.onRendered(() => {
? [
['view', ['fullscreen']],
['table', ['table']],
['font', ['bold', 'underline']],
//['fontsize', ['fontsize']],
['font', ['bold']],
['color', ['color']],
['insert', ['video']], // iframe tag will be sanitized TODO if iframe[class=note-video-clip] can be added into safe list, insert video can be enabled
//['fontsize', ['fontsize']],
]
: [
['style', ['style']],
@@ -156,25 +163,45 @@ Template.editor.onRendered(() => {
}
return undefined;
};
let popupShown = false;
inputs.each(function(idx, input) {
mSummernotes[idx] = $(input).summernote({
placeholder,
callbacks: {
onKeydown(e) {
if (popupShown) {
e.preventDefault();
}
},
onKeyup(e) {
if (popupShown) {
e.preventDefault();
}
},
onInit(object) {
const originalInput = this;
const setAutocomplete = function(jEditor) {
if (jEditor !== undefined) {
jEditor.escapeableTextComplete(mentions).on({
'textComplete:show'() {
popupShown = true;
},
'textComplete:hide'() {
popupShown = false;
},
});
}
};
$(originalInput).on('submitted', function() {
// resetCommentInput has been called
if (!this.value) {
const sn = getSummernote(this);
sn && sn.summernote('reset');
object && object.editingArea.find('.note-placeholder').show();
sn && sn.summernote('code', '');
}
});
const jEditor = object && object.editable;
const toolbar = object && object.toolbar;
if (jEditor !== undefined) {
jEditor.escapeableTextComplete(mentions);
}
setAutocomplete(jEditor);
if (toolbar !== undefined) {
const fBtn = toolbar.find('.btn-fullscreen');
fBtn.on('click', function() {
@@ -264,7 +291,7 @@ Template.editor.onRendered(() => {
const someNote = getSummernote(object);
const original = someNote.summernote('code');
const cleaned = cleanPastedHTML(original); //this is where to call whatever clean function you want. I have mine in a different file, called CleanPastedHTML.
someNote.summernote('reset'); //clear original
someNote.summernote('code', ''); //clear original
someNote.summernote('pasteHTML', cleaned); //this sets the displayed content editor to the cleaned pasted code.
};
setTimeout(function() {
@@ -325,11 +352,12 @@ Blaze.Template.registerHelper(
}
return member;
});
const mentionRegex = /\B@([\w.]*)/gi;
const mentionRegex = /\B@(?:(?:"([\w.\s]*)")|([\w.]+))/gi; // including space in username
let currentMention;
while ((currentMention = mentionRegex.exec(content)) !== null) {
const [fullMention, username] = currentMention;
const [fullMention, quoteduser, simple] = currentMention;
const username = quoteduser || simple;
const knowedUser = _.findWhere(knowedUsers, { username });
if (!knowedUser) {
continue;
+4
View File
@@ -381,6 +381,10 @@ a
display: block
word-wrap: break-word
table
word-wrap: normal
word-break: normal
ol
list-style-type: decimal
padding-left: 20px
+2 -2
View File
@@ -17,7 +17,7 @@ BlazeComponent.extendComponent({
this.autorun(() => {
const limit = this.page.get() * usersPerPage;
this.subscribe('people', limit, () => {
this.subscribe('people', this.findUsersOptions.get(), limit, () => {
this.loadNextPageLocked = false;
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
this.calculateNextPeak();
@@ -85,7 +85,7 @@ BlazeComponent.extendComponent({
const users = Users.find(this.findUsersOptions.get(), {
fields: { _id: true },
});
this.number.set(users.count());
this.number.set(users.count(false));
return users;
},
peopleNumber() {
@@ -18,6 +18,8 @@ template(name="setting")
a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}}
li
a.js-setting-menu(data-id="layout-setting") {{_ 'layout'}}
li
a.js-setting-menu(data-id="webhook-setting") {{_ 'global-webhook'}}
.main-body
if loading.get
+spinner
@@ -31,6 +33,12 @@ template(name="setting")
+announcementSettings
else if layoutSetting.get
+layoutSettings
else if webhookSetting.get
+webhookSettings
template(name="webhookSettings")
span
+outgoingWebhooksPopup
template(name="general")
ul#registration-setting.setting-detail
@@ -7,11 +7,13 @@ BlazeComponent.extendComponent({
this.accountSetting = new ReactiveVar(false);
this.announcementSetting = new ReactiveVar(false);
this.layoutSetting = new ReactiveVar(false);
this.webhookSetting = new ReactiveVar(false);
Meteor.subscribe('setting');
Meteor.subscribe('mailServer');
Meteor.subscribe('accountSettings');
Meteor.subscribe('announcements');
Meteor.subscribe('globalwebhooks');
},
setError(error) {
@@ -83,6 +85,7 @@ BlazeComponent.extendComponent({
this.accountSetting.set('account-setting' === targetID);
this.announcementSetting.set('announcement-setting' === targetID);
this.layoutSetting.set('layout-setting' === targetID);
this.webhookSetting.set('webhook-setting' === targetID);
}
},
+22 -14
View File
@@ -135,22 +135,30 @@ template(name="archiveBoardPopup")
template(name="outgoingWebhooksPopup")
each integrations
form.integration-form
if title
h4 {{title}}
else
h4 {{_ 'no-name'}}
label
| URL
input.js-outgoing-webhooks-url(type="text" name="url" value=url)
input(type="hidden" value=_id name="id")
a.flex
span {{_ 'disable-webhook'}}
b &nbsp;
.materialCheckBox(class="{{#unless enabled}}is-checked{{/unless}}")
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" value=title)
input.js-outgoing-webhooks-url(type="text" name="url" value=url autofocus)
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" value=token name="token")
select.js-outgoing-webhooks-type(name="type")
each _type in types
if($eq _type this.type)
option(value=_type selected="selected") {{_ _type}}
else
option(value=_type) {{_ _type}}
input(type="hidden" value=this.type name="_type")
input(type="hidden" value=_id name="id")
input.primary.wide(type="submit" value="{{_ 'save'}}")
form.integration-form
h4
| {{_ 'new-outgoing-webhook'}}
label
| URL
input.js-outgoing-webhooks-url(type="text" name="url" autofocus)
input.primary.wide(type="submit" value="{{_ 'save'}}")
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" autofocus)
input.js-outgoing-webhooks-url(placeholder="{{_ 'URL' }}" type="text" name="url")
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" name="token")
select.js-outgoing-webhooks-type(name="type")
each _type in types
option(value=_type) {{_ _type}}
input.primary.wide(type="submit" value="{{_ 'create'}}")
template(name="boardMenuPopup")
ul.pop-over-list
+56 -30
View File
@@ -1,6 +1,8 @@
Sidebar = null;
const defaultView = 'home';
const MCB = '.materialCheckBox';
const CKCLS = 'is-checked';
const viewTitles = {
filter: 'filter-cards',
@@ -280,44 +282,71 @@ Template.membersWidget.events({
});
BlazeComponent.extendComponent({
boardId() {
return Session.get('currentBoard') || Integrations.Const.GLOBAL_WEBHOOK_ID;
},
integrations() {
const boardId = Session.get('currentBoard');
const boardId = this.boardId();
return Integrations.find({ boardId: `${boardId}` }).fetch();
},
integration(id) {
const boardId = Session.get('currentBoard');
return Integrations.findOne({ _id: id, boardId: `${boardId}` });
types() {
return Integrations.Const.WEBHOOK_TYPES;
},
integration(cond) {
const boardId = this.boardId();
const condition = { boardId, ...cond };
for (const k in condition) {
if (!condition[k]) delete condition[k];
}
return Integrations.findOne(condition);
},
onCreated() {
this.disabled = new ReactiveVar(false);
},
events() {
return [
{
'click a.flex'(evt) {
this.disabled.set(!this.disabled.get());
$(evt.target).toggleClass(CKCLS, this.disabled.get());
},
submit(evt) {
evt.preventDefault();
const url = evt.target.url.value;
const boardId = Session.get('currentBoard');
const boardId = this.boardId();
let id = null;
let integration = null;
const title = evt.target.title.value;
const token = evt.target.token.value;
const type = evt.target.type.value;
const enabled = !this.disabled.get();
let remove = false;
const values = {
url,
type,
token,
title,
enabled,
};
if (evt.target.id) {
id = evt.target.id.value;
integration = this.integration(id);
if (url) {
Integrations.update(integration._id, {
$set: {
url: `${url}`,
},
});
} else {
Integrations.remove(integration._id);
}
integration = this.integration({ _id: id });
remove = !url;
} else if (url) {
integration = this.integration({ url, token });
}
if (remove) {
Integrations.remove(integration._id);
} else if (integration && integration._id) {
Integrations.update(integration._id, {
$set: values,
});
} else if (url) {
Integrations.insert({
...values,
userId: Meteor.userId(),
enabled: true,
type: 'outgoing-webhooks',
url: `${url}`,
boardId: `${boardId}`,
boardId,
activities: ['all'],
});
}
@@ -474,12 +503,12 @@ BlazeComponent.extendComponent({
evt.preventDefault();
this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
$('.js-field-has-subtasks .materialCheckBox').toggleClass(
'is-checked',
$(`.js-field-has-subtasks ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsSubtasks,
);
$('.js-field-has-subtasks').toggleClass(
'is-checked',
CKCLS,
this.currentBoard.allowsSubtasks,
);
$('.js-field-deposit-board').prop(
@@ -515,15 +544,12 @@ BlazeComponent.extendComponent({
];
options.forEach(function(element) {
if (element !== value) {
$(`#${element} .materialCheckBox`).toggleClass(
'is-checked',
false,
);
$(`#${element}`).toggleClass('is-checked', false);
$(`#${element} ${MCB}`).toggleClass(CKCLS, false);
$(`#${element}`).toggleClass(CKCLS, false);
}
});
$(`#${value} .materialCheckBox`).toggleClass('is-checked', true);
$(`#${value}`).toggleClass('is-checked', true);
$(`#${value} ${MCB}`).toggleClass(CKCLS, true);
$(`#${value}`).toggleClass(CKCLS, true);
this.currentBoard.setPresentParentTask(value);
evt.preventDefault();
},
+9 -1
View File
@@ -21,7 +21,15 @@ DatePicker = BlazeComponent.extendComponent({
function(evt) {
this.find('#date').value = moment(evt.date).format('L');
this.error.set('');
this.find('#time').focus();
const timeInput = this.find('#time');
timeInput.focus();
if (!timeInput.value) {
const currentHour = evt.date.getHours();
const defaultMoment = moment(
currentHour > 0 ? evt.date : '1970-01-01 08:00:00',
); // default to 8:00 am local time
timeInput.value = defaultMoment.format('LT');
}
}.bind(this),
);
+1
View File
@@ -45,6 +45,7 @@ $.fn.escapeableTextComplete = function(strategies, options, ...otherArgs) {
});
},
});
return this;
};
EscapeActions.register('textcomplete', () => {}, () => dropdownMenuIsOpened, {
-1
View File
@@ -23,7 +23,6 @@ Utils = {
})
);
},
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
processUploadedAttachment(card, fileObj, callback) {
+6 -4
View File
@@ -271,8 +271,8 @@ services:
# dueat startat endat receivedat, also notification to
# the watchers and if any card is due, about due or past due.
#
# Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2
#- NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2
# Notify due days, default is None, 2 days before and on the event day
#- NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2,0
#
# Notify due at hour of day. Default every morning at 8am. Can be 0-23.
# If env variable has parsing error, use default. Notification sent to watchers.
@@ -426,8 +426,10 @@ services:
# If the LDAP needs a user account to search
#- LDAP_AUTHENTIFICATION=true
#
# The search user DN
#- LDAP_AUTHENTIFICATION_USERDN=cn=wekan_adm,ou=serviceaccounts,ou=admin,ou=prod,dc=mydomain,dc=com
# The search user DN - You need quotes when you have spaces in parameters
# 2 examples:
#- LDAP_AUTHENTIFICATION_USERDN="CN=ldap admin,CN=users,DC=domainmatter,DC=lan"
#- LDAP_AUTHENTIFICATION_USERDN="CN=wekan_adm,OU=serviceaccounts,OU=admin,OU=prod,DC=mydomain,DC=com"
#
# The password for the search user
#- LDAP_AUTHENTIFICATION_PASSWORD=pwd
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+10 -3
View File
@@ -510,9 +510,14 @@
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Outgoing Webhooks",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Node_version": "Node version",
@@ -726,12 +731,14 @@
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
"act-withDue": "__list__/__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
"act-atUserComment": "You were mentioned in [__board__] __card__",
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
"delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
"accounts-allowUserDelete": "Allow users to self delete their account",
"hide-minicard-label-text": "Hide minicard label text"
"hide-minicard-label-text": "Hide minicard label text",
"show-desktop-drag-handles": "Show desktop drag handles"
}
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+741
View File
@@ -0,0 +1,741 @@
{
"accept": "Sprejmi",
"act-activity-notify": "Obvestilo o dejavnosti",
"act-addAttachment": "dodal priponko __attachment__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-deleteAttachment": "odstranil priponko __attachment__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addSubtask": "dodal podopravilo __subtask__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addLabel": "Dodal oznako __label__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addedLabel": "Dodal oznako __label__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-removeLabel": "Odstranil oznako __label__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-removedLabel": "Odstranil oznako __label__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addChecklist": "dodal kontrolni seznam __checklist__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addChecklistItem": "dodal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-removeChecklist": "odstranil kontrolni seznam __checklist__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-removeChecklistItem": "odstranil postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-checkedItem": "obkljukal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-uncheckedItem": "odkljukal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-completeChecklist": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-uncompleteChecklist": "nedokončan kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-addComment": "komentiral na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-editComment": "uredil komentar na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-deleteComment": "izbrisal komentar na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-createBoard": "ustvaril tablo __board__",
"act-createSwimlane": "ustvaril plavalno stezo __swimlane__ na tabli __board__",
"act-createCard": "ustvaril kartico __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-createCustomField": "ustvaril poljubno polje __customField__ na tabli __board__",
"act-deleteCustomField": "izbrisal poljubno polje __customField__ na tabli __board__",
"act-setCustomField": "uredil poljubno polje __customField__: __customFieldValue__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-createList": "dodal seznam __list__ na tablo __board__",
"act-addBoardMember": "dodal člana __member__ k tabli __board__",
"act-archivedBoard": "Tabla __board__ premaknjena v arhiv",
"act-archivedCard": "Kartica __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__ premaknjena v arhiv",
"act-archivedList": "Seznam __list__ na plavalni stezi __swimlane__ na tabli __board__ premaknjen v arhiv",
"act-archivedSwimlane": "Plavalna steza __swimlane__ na tabli __board__ premaknjena v arhiv",
"act-importBoard": "uvozil tablo __board__",
"act-importCard": "uvozil kartico __card__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-importList": "uvozil seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-joinMember": "dodal član __member__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-moveCard": "premakil kartico __card__ na tabli __board__ iz seznama __oldList__ na plavalni stezi __oldSwimlane__ na seznam __list__ na plavalni stezi __swimlane__",
"act-moveCardToOtherBoard": "premaknil kartico __card__ iz seznama __oldList__ na plavalni stezi __oldSwimlane__ na tabli __oldBoard__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-removeBoardMember": "odstranil člana __member__ iz table __board__",
"act-restoredCard": "obnovil kartico __card__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-unjoinMember": "odstranil člana __member__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Dejanja",
"activities": "Aktivnosti",
"activity": "Aktivnost",
"activity-added": "dodal %s v %s",
"activity-archived": "%s premaknjeno v arhiv",
"activity-attached": "pripel %s v %s",
"activity-created": "ustvaril %s",
"activity-customfield-created": "ustvaril poljubno polje%s",
"activity-excluded": "izključil %s iz %s",
"activity-imported": "uvozil %s v %s iz %s",
"activity-imported-board": "uvozil %s iz %s",
"activity-joined": "se je pridružil na %s",
"activity-moved": "premakil %s iz %s na %s",
"activity-on": "na %s",
"activity-removed": "odstranil %s iz %s",
"activity-sent": "poslano %s na %s",
"activity-unjoined": "se je odjavil iz %s",
"activity-subtask-added": "dodal podopravilo k %s",
"activity-checked-item": "obkljukal %s na kontrolnem seznamu %s od %s",
"activity-unchecked-item": "odkljukal %s na kontrolnem seznamu %s od %s",
"activity-checklist-added": "dodal kontrolni seznam na %s",
"activity-checklist-removed": "odstranil kontrolni seznam iz %s",
"activity-checklist-completed": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"activity-checklist-uncompleted": "nedokončal kontrolni seznam %s od %s",
"activity-checklist-item-added": "dodal postavko kontrolnega seznama na '%s' v %s",
"activity-checklist-item-removed": "odstranil postavko kontrolnega seznama iz '%s' v %s",
"add": "Dodaj",
"activity-checked-item-card": "obkljukal %s na kontrolnem seznamu %s",
"activity-unchecked-item-card": "odkljukal %s na kontrolnem seznamu %s",
"activity-checklist-completed-card": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
"activity-checklist-uncompleted-card": "nedokončal kontrolni seznam %s",
"activity-editComment": "uredil komentar %s",
"activity-deleteComment": "izbrisal komentar %s",
"add-attachment": "Dodaj priponko",
"add-board": "Dodaj tablo",
"add-card": "Dodaj kartico",
"add-swimlane": "Dodaj plavalno stezo",
"add-subtask": "Dodaj podopravilo",
"add-checklist": "Dodaj kontrolni seznam",
"add-checklist-item": "Dodaj postavko na kontrolni seznam",
"add-cover": "Dodaj ovitek",
"add-label": "Dodaj oznako",
"add-list": "Dodaj seznam",
"add-members": "Dodaj člane",
"added": "Dodano",
"addMemberPopup-title": "Člani",
"admin": "Administrator",
"admin-desc": "Lahko gleda in ureja kartice, odstrani člane in spreminja nastavitve table.",
"admin-announcement": "Najava",
"admin-announcement-active": "Aktivna vse-sistemska najava",
"admin-announcement-title": "Najava od administratorja",
"all-boards": "Vse table",
"and-n-other-card": "In __count__ druga kartica",
"and-n-other-card_plural": "In __count__ drugih kartic",
"apply": "Uporabi",
"app-is-offline": "Nalaganje, prosimo počakajte. Osveževanje strani bo povzročilo izgubo podatkov. Če nalaganje ne deluje, preverite, ali se strežnik ni ustavil.",
"archive": "Premakni v arhiv",
"archive-all": "Premakni vse v arhiv",
"archive-board": "Premakni tablo v arhiv",
"archive-card": "Premakni kartico v arhiv",
"archive-list": "Premakni seznam v arhiv",
"archive-swimlane": "Premakni plavalno stezo v arhiv",
"archive-selection": "Premakni označeno v arhiv",
"archiveBoardPopup-title": "Premakni tablo v arhiv?",
"archived-items": "Arhiv",
"archived-boards": "Table v arhivu",
"restore-board": "Obnovi tablo",
"no-archived-boards": "Nobene table ni v arhivu.",
"archives": "Arhiv",
"template": "Predloga",
"templates": "Predloge",
"assign-member": "Dodeli člana",
"attached": "pripeto",
"attachment": "Priponka",
"attachment-delete-pop": "Brisanje priponke je trajno. Ne obstaja razveljavitev.",
"attachmentDeletePopup-title": "Briši priponko?",
"attachments": "Priponke",
"auto-watch": "Samodejno spremljaj ustvarjene table",
"avatar-too-big": "Velikost avatarja je prevelika (70kB maks.)",
"back": "Nazaj",
"board-change-color": "Spremeni barvo",
"board-nb-stars": "%s zvezdic",
"board-not-found": "Tabla ni najdena",
"board-private-info": "Ta tabla bo <strong>privatna</strong>.",
"board-public-info": "Ta tabla bo <strong>javna</strong>.",
"boardChangeColorPopup-title": "Spremeni ozadje table",
"boardChangeTitlePopup-title": "Preimenuj tablo",
"boardChangeVisibilityPopup-title": "Spremeni vidnost",
"boardChangeWatchPopup-title": "Spremeni opazovanje",
"boardMenuPopup-title": "Nastavitve table",
"boards": "Table",
"board-view": "Pogled table",
"board-view-cal": "Koledar",
"board-view-swimlanes": "Plavalne steze",
"board-view-lists": "Seznami",
"bucket-example": "Kot na primer \"Življenjski seznam\"",
"cancel": "Prekliči",
"card-archived": "Kartica je premaknjena v arhiv.",
"board-archived": "Tabla je premaknjena v arhiv.",
"card-comments-title": "Ta kartica ima %s komentar.",
"card-delete-notice": "Brisanje je trajno. Izgubili boste vsa dejanja povezana s to kartico.",
"card-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in kartice ne boste mogli znova odpreti. Razveljavitve ni.",
"card-delete-suggest-archive": "Kartico lahko premaknete v arhiv, da jo odstranite s table in ohranite dejavnost.",
"card-due": "Rok",
"card-due-on": "Rok",
"card-spent": "Porabljen čas",
"card-edit-attachments": "Uredi priponke",
"card-edit-custom-fields": "Uredi poljubna polja",
"card-edit-labels": "Uredi oznake",
"card-edit-members": "Uredi člane",
"card-labels-title": "Spremeni oznake za kartico.",
"card-members-title": "Dodaj ali odstrani člane table iz kartice.",
"card-start": "Začetek",
"card-start-on": "Začne ob",
"cardAttachmentsPopup-title": "Pripni od",
"cardCustomField-datePopup-title": "Spremeni datum",
"cardCustomFieldsPopup-title": "Uredi poljubna polja",
"cardDeletePopup-title": "Briši kartico?",
"cardDetailsActionsPopup-title": "Dejanja kartice",
"cardLabelsPopup-title": "Oznake",
"cardMembersPopup-title": "Člani",
"cardMorePopup-title": "Več",
"cardTemplatePopup-title": "Ustvari predlogo",
"cards": "Kartice",
"cards-count": "Kartic",
"casSignIn": "Vpiši se s CAS",
"cardType-card": "Kartica",
"cardType-linkedCard": "Povezana kartica",
"cardType-linkedBoard": "Povezana tabla",
"change": "Spremeni",
"change-avatar": "Spremeni avatar",
"change-password": "Spremeni geslo",
"change-permissions": "Spremeni dovoljenja",
"change-settings": "Spremeni nastavitve",
"changeAvatarPopup-title": "Spremeni avatar",
"changeLanguagePopup-title": "Spremeni jezik",
"changePasswordPopup-title": "Spremeni geslo",
"changePermissionsPopup-title": "Spremeni dovoljenja",
"changeSettingsPopup-title": "Spremeni nastavitve",
"subtasks": "Podopravila",
"checklists": "Kontrolni seznami",
"click-to-star": "Kliknite, da označite tablo z zvezdico.",
"click-to-unstar": "Kliknite, da odznačite tablo z zvezdico.",
"clipboard": "Odložišče ali povleci & spusti",
"close": "Zapri",
"close-board": "Zapri tablo",
"close-board-pop": "Tablo boste lahko obnovili s klikom na gumb »Arhiviraj« na začetni glavi.",
"color-black": "črna",
"color-blue": "modra",
"color-crimson": "temno rdeča",
"color-darkgreen": "temno zelena",
"color-gold": "zlata",
"color-gray": "siva",
"color-green": "zelena",
"color-indigo": "indigo",
"color-lime": "limeta",
"color-magenta": "magenta",
"color-mistyrose": "rožnata",
"color-navy": "navy modra",
"color-orange": "oranžna",
"color-paleturquoise": "bledo turkizna",
"color-peachpuff": "breskvasta",
"color-pink": "roza",
"color-plum": "slivova",
"color-purple": "vijolična",
"color-red": "rdeča",
"color-saddlebrown": "rjava",
"color-silver": "srebrna",
"color-sky": "nebesna",
"color-slateblue": "skrilasto modra",
"color-white": "bela",
"color-yellow": "rumena",
"unset-color": "Onemogoči",
"comment": "Komentiraj",
"comment-placeholder": "Napiši komentar",
"comment-only": "Samo komentar",
"comment-only-desc": "Lahko komentirate samo na karticah.",
"no-comments": "Ni komentarjev",
"no-comments-desc": "Ne morete videti komentarjev in dejavnosti.",
"computer": "Računalnik",
"confirm-subtask-delete-dialog": "Ste prepričani, da želite izbrisati podopravilo?",
"confirm-checklist-delete-dialog": "Ste prepričani, da želite izbrisati kontrolni seznam?",
"copy-card-link-to-clipboard": "Kopiraj povezavo kartice na odložišče",
"linkCardPopup-title": "Poveži kartico",
"searchElementPopup-title": "Išči",
"copyCardPopup-title": "Kopiraj kartico",
"copyChecklistToManyCardsPopup-title": "Kopiraj predlogo kontrolnega seznama na več kartic",
"copyChecklistToManyCardsPopup-instructions": "Naslovi ciljnih kartic in opisi v tem JSON formatu",
"copyChecklistToManyCardsPopup-format": "[ {\"naslov\": \"Naslov prve kartice\", \"opis\":\"Opis prve kartice\"}, {\"naslov\":\"Opis druge kartice\",\"opis\":\"Opis druge kartice\"},{\"naslov\":\"Naslov zadnje kartice\",\"opis\":\"Opis zadnje kartice\"} ]",
"create": "Ustvari",
"createBoardPopup-title": "Ustvari tablo",
"chooseBoardSourcePopup-title": "Uvozi tablo",
"createLabelPopup-title": "Ustvari oznako",
"createCustomField": "Ustvari polje",
"createCustomFieldPopup-title": "Ustvari polje",
"current": "trenutno",
"custom-field-delete-pop": "Razveljavitve ni. To bo odstranilo to poljubno polje iz vseh kartic in izbrisalo njegovo zgodovino.",
"custom-field-checkbox": "Potrditveno polje",
"custom-field-date": "Datum",
"custom-field-dropdown": "Spustni seznam",
"custom-field-dropdown-none": "(nobeno)",
"custom-field-dropdown-options": "Možnosti seznama",
"custom-field-dropdown-options-placeholder": "Pritisnite enter da dodate več možnosti",
"custom-field-dropdown-unknown": "(neznano)",
"custom-field-number": "Število",
"custom-field-text": "Besedilo",
"custom-fields": "Poljubna polja",
"date": "Datum",
"decline": "Zavrni",
"default-avatar": "Privzeti avatar",
"delete": "Briši",
"deleteCustomFieldPopup-title": "Briši poljubno polje?",
"deleteLabelPopup-title": "Briši oznako?",
"description": "Opis",
"disambiguateMultiLabelPopup-title": "Razdvoji Dejanje Oznake",
"disambiguateMultiMemberPopup-title": "Razdvoji dejanje člana",
"discard": "Razveljavi",
"done": "Končano",
"download": "Prenos",
"edit": "Uredi",
"edit-avatar": "Spremeni avatar",
"edit-profile": "Uredi profil",
"edit-wip-limit": "Uredi omejitev št. kartic",
"soft-wip-limit": "Omehčaj omejitev št. kartic",
"editCardStartDatePopup-title": "Spremeni začetni datum",
"editCardDueDatePopup-title": "Spremeni datum zapadlosti",
"editCustomFieldPopup-title": "Uredi polje",
"editCardSpentTimePopup-title": "Spremeni porabljen čas",
"editLabelPopup-title": "Spremeni oznako",
"editNotificationPopup-title": "Uredi obvestilo",
"editProfilePopup-title": "Uredi profil",
"email": "E-pošta",
"email-enrollAccount-subject": "Up. račun ustvarjen za vas na __siteName__",
"email-enrollAccount-text": "Pozdravljeni __user__,\n\nZa začetek uporabe kliknite spodnjo povezavo.\n\n__url__\n\nHvala.",
"email-fail": "Pošiljanje e-pošte ni uspelo",
"email-fail-text": "Napaka pri poskusu pošiljanja e-pošte",
"email-invalid": "Neveljavna e-pošta",
"email-invite": "Povabi z uporabo e-pošte",
"email-invite-subject": "__inviter__ vam je poslal povabilo",
"email-invite-text": "Spoštovani __user__,\n\n__inviter__ vas vabi k sodelovanju na tabli \"__board__\".\n\nProsimo sledite spodnji povezavi:\n\n__url__\n\nHvala.",
"email-resetPassword-subject": "Ponastavite geslo na __siteName__",
"email-resetPassword-text": "Pozdravljeni __user__,\n\nZa ponastavitev gesla kliknite na spodnjo povezavo.\n\n__url__\n\nHvala.",
"email-sent": "E-pošta poslana",
"email-verifyEmail-subject": "Preverite svoje e-poštni naslov na __siteName__",
"email-verifyEmail-text": "Pozdravljeni __user__,\n\nDa preverite e-poštni naslov za vaš uporabniški račun, kliknite na spodnjo povezavo.\n\n__url__\n\nHvala.",
"enable-wip-limit": "Vklopi omejitev št. kartic",
"error-board-doesNotExist": "Ta tabla ne obstaja",
"error-board-notAdmin": "Če želite to narediti, morate biti skrbnik te table",
"error-board-notAMember": "Če želite to narediti, morate biti član te table",
"error-json-malformed": "Vaše besedilo ni veljaven JSON",
"error-json-schema": "Vaši JSON podatki ne vsebujejo pravilnih informacij v ustreznem formatu",
"error-list-doesNotExist": "Seznam ne obstaja",
"error-user-doesNotExist": "Uporabnik ne obstaja",
"error-user-notAllowSelf": "Ne morete povabiti sebe",
"error-user-notCreated": "Ta uporabnik ni ustvarjen",
"error-username-taken": "To up. ime že obstaja",
"error-email-taken": "E-poštni naslov je že zaseden",
"export-board": "Izvozi tablo",
"filter": "Filtriraj",
"filter-cards": "Filtriraj kartice",
"filter-clear": "Počisti filter",
"filter-no-label": "Brez oznake",
"filter-no-member": "Brez člana",
"filter-no-custom-fields": "Brez poljubnih polj",
"filter-show-archive": "Prikaži arhivirane sezname",
"filter-hide-empty": "Skrij prazne sezname",
"filter-on": "Filter vklopljen",
"filter-on-desc": "Filtrirane kartice na tej tabli. Kliknite tukaj za urejanje filtra.",
"filter-to-selection": "Filtriraj izbrane",
"advanced-filter-label": "Napredni filter",
"advanced-filter-description": "Napredni filter omogoča pripravo niza, ki vsebuje naslednje operaterje: == != <= >= && || () Preslednica se uporablja kot ločilo med operatorji. Vsa polja po meri lahko filtrirate tako, da vtipkate njihova imena in vrednosti. Na primer: Polje1 == Vrednost1. Opomba: Če polja ali vrednosti vsebujejo presledke, jih morate postaviti v enojne narekovaje. Primer: 'Polje 1' == 'Vrednost 1'. Če želite preskočiti posamezne kontrolne znake (' \\/), lahko uporabite \\. Na primer: Polje1 == I\\'m. Prav tako lahko kombinirate več pogojev. Na primer: F1 == V1 || F1 == V2. Običajno se vsi operaterji interpretirajo od leve proti desni. Vrstni red lahko spremenite tako, da postavite oklepaje. Na primer: F1 == V1 && ( F2 == V2 || F2 == V3 ). Prav tako lahko po besedilu iščete z uporabo pravil regex: F1 == /Tes.*/i",
"fullname": "Polno Ime",
"header-logo-title": "Pojdi nazaj na stran s tablami.",
"hide-system-messages": "Skrij sistemska sporočila",
"headerBarCreateBoardPopup-title": "Ustvari tablo",
"home": "Domov",
"import": "Uvozi",
"link": "Poveži",
"import-board": "uvozi tablo",
"import-board-c": "Uvozi tablo",
"import-board-title-trello": "Uvozi tablo iz orodja Trello",
"import-board-title-wekan": "Uvozi tablo iz prejšnjega izvoza",
"import-sandstorm-backup-warning": "Ne zbrišite podatkov, ki jih uvozite z originalne izvožene table ali Trello, preden preverite ali se tabla uspešno zapre in odpre ali pa boste dobili sporočilo Tabla ni najdena, kar pomeni izgubo podatkov.",
"import-sandstorm-warning": "Uvožena tabla bo izbrisala vse obstoječe podatke na tabli in jih zamenjala z uvoženo tablo.",
"from-trello": "Iz orodja Trello",
"from-wekan": "Od prejšnjega izvoza",
"import-board-instruction-trello": "V vaši Trello tabli pojdite na 'Meni', 'Več', 'Natisni in Izvozi', 'Izvozi JSON', in kopirajte prikazano besedilo.",
"import-board-instruction-wekan": "V vaši tabli pojdite na 'Meni', 'Izvozi tablo' in kopirajte besedilo iz prenesene datoteke.",
"import-board-instruction-about-errors": "Pri napakah med uvozom table v nekaterih primerih uvažanje še deluje, uvožena tabla pa je na strani Vse Table.",
"import-json-placeholder": "Tukaj prilepite veljavne JSON podatke",
"import-map-members": "Mapiraj člane",
"import-members-map": "Vaša uvožena tabla vsebuje nekaj članov. Prosimo mapirajte člane, ki jih želite uvoziti, z vašimi uporabniki.",
"import-show-user-mapping": "Preglejte povezane člane",
"import-user-select": "Izberite obstoječega uporabnika, ki ga želite uporabiti kot tega člana.",
"importMapMembersAddPopup-title": "Izberite člana",
"info": "Različica",
"initials": "Inicialke",
"invalid-date": "Neveljaven datum",
"invalid-time": "Neveljaven čas",
"invalid-user": "Neveljaven uporabnik",
"joined": "se je pridružil",
"just-invited": "Povabljeni ste k tej tabli",
"keyboard-shortcuts": "Bližnjične tipke",
"label-create": "Ustvari Oznako",
"label-default": "%s oznaka (privzeto)",
"label-delete-pop": "Razveljavitve ni. To bo odstranilo to oznako iz vseh kartic in izbrisalo njeno zgodovino.",
"labels": "Oznake",
"language": "Jezik",
"last-admin-desc": "Ne morete zamenjati vlog, ker mora obstajati vsaj en admin.",
"leave-board": "Zapusti tablo",
"leave-board-pop": "Ste prepričani, da želite zapustiti tablo __boardTitle__? Odstranjeni boste iz vseh kartic na tej tabli.",
"leaveBoardPopup-title": "Zapusti tablo ?",
"link-card": "Poveži s to kartico",
"list-archive-cards": "Premakni vse kartice v tem seznamu v arhiv",
"list-archive-cards-pop": "To bo odstranilo vse kartice tega seznama iz table. Da si ogledate kartice v arhivu in jih vrnete na tablo, kliknite \"Meni\" > \"arhiv\".",
"list-move-cards": "Premakni vse kartice na seznamu",
"list-select-cards": "Izberi vse kartice na seznamu",
"set-color-list": "Nastavi barvo",
"listActionPopup-title": "Dejanja seznama",
"swimlaneActionPopup-title": "Dejanja plavalnih stez",
"swimlaneAddPopup-title": "Dodaj plavalno stezo spodaj",
"listImportCardPopup-title": "Uvozi Trello kartico",
"listMorePopup-title": "Več",
"link-list": "Poveži s tem seznamom",
"list-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in seznama ne boste mogli obnoviti. Razveljavitve ni.",
"list-delete-suggest-archive": "Lahko premaknete seznam v arhiv, da ga odstranite iz table in ohranite dejavnosti.",
"lists": "Seznami",
"swimlanes": "Plavalne steze",
"log-out": "Odjava",
"log-in": "Prijava",
"loginPopup-title": "Prijava",
"memberMenuPopup-title": "Nastavitve članov",
"members": "Člani",
"menu": "Meni",
"move-selection": "Premakni izbiro",
"moveCardPopup-title": "Premakni kartico",
"moveCardToBottom-title": "Premakni na dno",
"moveCardToTop-title": "Premakni na vrh",
"moveSelectionPopup-title": "Premakni izbiro",
"multi-selection": "Multi-Izbira",
"multi-selection-on": "Multi-Izbira je omogočena",
"muted": "Utišano",
"muted-info": "O spremembah na tej tabli nikoli ne boste obveščeni",
"my-boards": "Moje Table",
"name": "Ime",
"no-archived-cards": "Ni kartic v arhivu",
"no-archived-lists": "Ni seznamov v arhivu",
"no-archived-swimlanes": "Ni plavalnih stez v arhivu",
"no-results": "Ni zadetkov",
"normal": "Normalno",
"normal-desc": "Lahko gleda in ureja kartice. Ne more spreminjati nastavitev.",
"not-accepted-yet": "Povabilo še ni sprejeto.",
"notify-participate": "Prejemajte posodobitve kartic, na katerih sodelujete kot ustvarjalec ali član",
"notify-watch": "Prejemajte posodobitve opazovanih tabel, seznamov ali kartic",
"optional": "opcijsko",
"or": "ali",
"page-maybe-private": "Ta stran je mogoče privatna. Verjetno si jo lahko ogledate po<a href='%s'>prijavi</a>.",
"page-not-found": "Stran ne obstaja.",
"password": "Geslo",
"paste-or-dragdrop": "prilepi ali povleci & spusti datoteko slike (samo slika)",
"participating": "Sodelovanje",
"preview": "Predogled",
"previewAttachedImagePopup-title": "Predogled",
"previewClipboardImagePopup-title": "Predogled",
"private": "Zasebno",
"private-desc": "Ta tabla je zasebna. Samo dodani uporabniki lahko vidijo ali urejajo vsebino.",
"profile": "Profil",
"public": "Javno",
"public-desc": "Ta tabla je javna. Vidna je vsakomur s povezavo do table in bo prikazana v zadetkih iskalnikov kot Google. Samo uporabniki table jo lahko urejajo.",
"quick-access-description": "Če tablo označite z zvezdico, bo tukaj dodana bližnjica.",
"remove-cover": "Odstrani ovitek",
"remove-from-board": "Odstrani iz table",
"remove-label": "Odstrani oznako",
"listDeletePopup-title": "Odstrani seznam?",
"remove-member": "Odstrani člana",
"remove-member-from-card": "Odstrani iz kartice",
"remove-member-pop": "Odstrani __name__ (__username__) iz __boardTitle__? Član bo odstranjen iz vseh kartic te table in bo prejel obvestilo.",
"removeMemberPopup-title": "Odstrani člana?",
"rename": "Preimenuj",
"rename-board": "Preimenuj tablo",
"restore": "Obnovi",
"save": "Shrani",
"search": "Išči",
"rules": "Pravila",
"search-cards": "Išči po imenih kartic in opisih na tej tabli",
"search-example": "Besedilo za iskanje?",
"select-color": "Izberi barvo",
"set-wip-limit-value": "Nastavi omejitev maksimalnega števila opravil v tem seznamu",
"setWipLimitPopup-title": "Nastavi omejitev št. kartic",
"shortcut-assign-self": "Dodeli sebe k trenutni kartici",
"shortcut-autocomplete-emoji": "Samodokončaj emoji",
"shortcut-autocomplete-members": "Samodokončaj člane",
"shortcut-clear-filters": "Počisti vse filtre",
"shortcut-close-dialog": "Zapri dialog",
"shortcut-filter-my-cards": "Filtriraj moje kartice",
"shortcut-show-shortcuts": "Prikaži ta seznam bližnjic",
"shortcut-toggle-filterbar": "Preklopi stransko vrstico za filter",
"shortcut-toggle-sidebar": "Preklopi stransko vrstico table",
"show-cards-minimum-count": "Prikaži število kartic, če seznam vsebuje več kot",
"sidebar-open": "Odpri stransko vrstico",
"sidebar-close": "Zapri stransko vrstico",
"signupPopup-title": "Ustvari up. račun",
"star-board-title": "Kliknite, da označite to tablo z zvezdico. Prikazana bo na vrhu vašega seznama tabel.",
"starred-boards": "Table z zvezdico",
"starred-boards-description": "Table z zvezdico se prikažejo na vrhu vašega seznama tabel.",
"subscribe": "Naročite se",
"team": "Skupina",
"this-board": "to tablo",
"this-card": "kartico",
"spent-time-hours": "Porabljen čas (ure)",
"overtime-hours": "Presežen čas (ure)",
"overtime": "Presežen čas",
"has-overtime-cards": "Ima kartice s preseženim časom",
"has-spenttime-cards": "Ima kartice s porabljenim časom",
"time": "Čas",
"title": "Naslov",
"tracking": "Sledenje",
"tracking-info": "Obveščeni boste o vseh spremembah kartic, kjer sodelujete kot lastnik ali član.",
"type": "Tip",
"unassign-member": "Odjavi člana",
"unsaved-description": "Imate neshranjen opis.",
"unwatch": "Prekliči opazovanje",
"upload": "Naloži",
"upload-avatar": "Naloži avatar",
"uploaded-avatar": "Naložil avatar",
"username": "Up. ime",
"view-it": "Oglej",
"warn-list-archived": "opozorilo: ta kartica je v seznamu v arhivu",
"watch": "Opazuj",
"watching": "Opazuje",
"watching-info": "O spremembah na tej tabli boste obveščeni",
"welcome-board": "Tabla Dobrodošli",
"welcome-swimlane": "Mejnik 1",
"welcome-list1": "Osnove",
"welcome-list2": "Napredno",
"card-templates-swimlane": "Predloge kartice",
"list-templates-swimlane": "Predloge seznama",
"board-templates-swimlane": "Predloge table",
"what-to-do": "Kaj želite storiti?",
"wipLimitErrorPopup-title": "Neveljaven limit št. kartic",
"wipLimitErrorPopup-dialog-pt1": "Število opravil v tem seznamu je višje od definiranega limita št. kartic.",
"wipLimitErrorPopup-dialog-pt2": "Prosimo premaknite nekaj opravil iz tega seznama ali nastavite višji limit št. kartic.",
"admin-panel": "Skrbniška plošča",
"settings": "Nastavitve",
"people": "Ljudje",
"registration": "Registracija",
"disable-self-registration": "Onemogoči samo-registracijo",
"invite": "Povabi",
"invite-people": "Povabi ljudi",
"to-boards": "K tabli(am)",
"email-addresses": "E-poštni naslovi",
"smtp-host-description": "Naslov vašega strežnika SMTP.",
"smtp-port-description": "Vrata vašega strežnika SMTP za odhodno pošto.",
"smtp-tls-description": "Omogoči šifriranje TLS za SMTP strežnik.",
"smtp-host": "SMTP gostitelj",
"smtp-port": "SMTP vrata",
"smtp-username": "Up. ime",
"smtp-password": "Geslo",
"smtp-tls": "TLS podpora",
"send-from": "Od",
"send-smtp-test": "Pošljite testno e-pošto na svoj naslov",
"invitation-code": "Koda Povabila",
"email-invite-register-subject": "__inviter__ vam je poslal povabilo",
"email-invite-register-text": "Dragi __user__,\n\n__inviter__ vas vabi na kanban tablo za sodelovanje.\n\nProsimo sledite spodnji povezavi:\n__url__\n\nVaša koda povabila je: __icode__\n\nHvala.",
"email-smtp-test-subject": "SMTP testna e-pošta",
"email-smtp-test-text": "Uspešno ste poslali e-pošto",
"error-invitation-code-not-exist": "Koda povabila ne obstaja",
"error-notAuthorized": "Nimate pravic za ogled te strani.",
"webhook-title": "Ime spletnega vmesnika (webhook)",
"webhook-token": "Žeton (opcijsko za avtentikacijo)",
"outgoing-webhooks": "Izhodni spletni vmesniki (webhooks)",
"bidirectional-webhooks": "Dvo-smerni spletni vmesniki (webhooks)",
"outgoingWebhooksPopup-title": "Izhodni spletni vmesniki (webhooks)",
"boardCardTitlePopup-title": "Filter po naslovu kartice",
"disable-webhook": "Onemogoči ta spletni vmesnik (webhook)",
"global-webhook": "Globalni spletni vmesnik (webhook)",
"new-outgoing-webhook": "Nov izhodni spletni vmesnik (webhook)",
"no-name": "(Neznano)",
"Node_version": "Node različica",
"Meteor_version": "Meteor različica",
"MongoDB_version": "MongoDB različica",
"MongoDB_storage_engine": "MongoDB storage engine",
"MongoDB_Oplog_enabled": "MongoDB Oplog omogočen",
"OS_Arch": "OS Arhitektura",
"OS_Cpus": "OS število CPU",
"OS_Freemem": "OS prost pomnilnik",
"OS_Loadavg": "OS povp. obremenitev",
"OS_Platform": "OS platforma",
"OS_Release": "OS izdaja",
"OS_Totalmem": "OS skupni pomnilnik",
"OS_Type": "OS tip",
"OS_Uptime": "OS čas delovanja",
"days": "dnevi",
"hours": "ure",
"minutes": "minute",
"seconds": "sekunde",
"show-field-on-card": "Prikaži to polje na kartici",
"automatically-field-on-card": "Samodejno dodaj polja na vse kartice",
"showLabel-field-on-card": "Prikaži oznako polja na mini kartici",
"yes": "Da",
"no": "Ne",
"accounts": "Up. računi",
"accounts-allowEmailChange": "Dovoli spremembo e-poštnega naslova",
"accounts-allowUserNameChange": "Dovoli spremembo up. imena",
"createdAt": "Ustvarjen ob",
"verified": "Preverjeno",
"active": "Aktivno",
"card-received": "Prejeto",
"card-received-on": "Prejeto ob",
"card-end": "Konec",
"card-end-on": "Končano na",
"editCardReceivedDatePopup-title": "Spremeni datum prejema",
"editCardEndDatePopup-title": "Spremeni končni datum",
"setCardColorPopup-title": "Nastavi barvo",
"setCardActionsColorPopup-title": "Izberi barvo",
"setSwimlaneColorPopup-title": "Izberi barvo",
"setListColorPopup-title": "Izberi barvo",
"assigned-by": "Dodelil",
"requested-by": "Zahteval",
"board-delete-notice": "Brisanje je trajno. Izgubili boste vse sezname, kartice in akcije, povezane z desko.",
"delete-board-confirm-popup": "Vsi seznami, kartice, oznake in dejavnosti bodo izbrisani in vsebine table ne boste mogli obnoviti. Razveljavitve ni.",
"boardDeletePopup-title": "Izbriši tablo?",
"delete-board": "Izbriši tablo",
"default-subtasks-board": "Podopravila za tablo",
"default": "Privzeto",
"queue": "Čakalna vrsta",
"subtask-settings": "Nastavitve podopravil",
"boardSubtaskSettingsPopup-title": "Nastavitve podopravil table",
"show-subtasks-field": "Dovoli pod-poravila na karticah",
"deposit-subtasks-board": "Deponiraj podopravila na tole tablo:",
"deposit-subtasks-list": "Ciljni seznam za deponirana podopravila:",
"show-parent-in-minicard": "Pokaži starša na mini-kartici:",
"prefix-with-full-path": "Predpona s celotno potjo",
"prefix-with-parent": "Predpona s staršem",
"subtext-with-full-path": "Podbesedilo s celotno potjo",
"subtext-with-parent": "Podbesedilo s staršem",
"change-card-parent": "Zamenjaj starša kartice",
"parent-card": "Starševska kartica",
"source-board": "Izvorna tabla",
"no-parent": "Ne prikaži starša",
"activity-added-label": "dodal oznako '%s' do %s",
"activity-removed-label": "odstranil oznako '%s' od %s",
"activity-delete-attach": "izbrisal priponko od %s",
"activity-added-label-card": "dodal oznako '%s'",
"activity-removed-label-card": "izbrisal oznako '%s'",
"activity-delete-attach-card": "izbrisal priponko",
"activity-set-customfield": "nastavi polje po meri '%s' do '%s' v %s",
"activity-unset-customfield": "zbriši polje po meri '%s' v %s",
"r-rule": "Pravilo",
"r-add-trigger": "Dodaj prožilec",
"r-add-action": "Dodaj akcijo",
"r-board-rules": "Pravila table",
"r-add-rule": "Dodaj pravilo",
"r-view-rule": "Poglej pravilo",
"r-delete-rule": "Izbriši pravilo",
"r-new-rule-name": "Ime novega pravila",
"r-no-rules": "Ni pravil",
"r-when-a-card": "Ko je kartica",
"r-is": " ",
"r-is-moved": "premaknjena",
"r-added-to": "dodan na",
"r-removed-from": "Izbrisana iz",
"r-the-board": "tabla",
"r-list": "seznam",
"set-filter": "Nastavi filter",
"r-moved-to": "premaknjena v",
"r-moved-from": "premaknjena iz",
"r-archived": "premaknjena v arhiv",
"r-unarchived": "obnovljena iz arhiva",
"r-a-card": "kartico",
"r-when-a-label-is": "Ko je oznaka",
"r-when-the-label": "Ko je oznaka",
"r-list-name": "ime sezn.",
"r-when-a-member": "Ko je član",
"r-when-the-member": "Ko je član",
"r-name": "ime",
"r-when-a-attach": "Ko je priponka",
"r-when-a-checklist": "Ko je kontrolni seznam",
"r-when-the-checklist": "Ko kontrolni seznam",
"r-completed": "Zaključeno",
"r-made-incomplete": "Nastavljeno kot nedokončano",
"r-when-a-item": "Ko je kontrolni seznam",
"r-when-the-item": "Ko je element kontrolnega seznama",
"r-checked": "Označen",
"r-unchecked": "Odznačen",
"r-move-card-to": "Premakni kartico na",
"r-top-of": "Vrh",
"r-bottom-of": "Dno",
"r-its-list": "pripadajočega seznama",
"r-archive": "premaknjena v arhiv",
"r-unarchive": "Obnovi iz arhiva",
"r-card": "kartico",
"r-add": "Dodaj",
"r-remove": "Odstrani",
"r-label": "oznaka",
"r-member": "član",
"r-remove-all": "Izbriši vse člane iz kartice",
"r-set-color": "Nastavi barvo na",
"r-checklist": "kontrolni seznam",
"r-check-all": "Označi vse",
"r-uncheck-all": "Odznači vse",
"r-items-check": "postavke kontrolnega lista",
"r-check": "Označi",
"r-uncheck": "Odznači",
"r-item": "postavka",
"r-of-checklist": "kontrolnega seznama",
"r-send-email": "Pošlji e-pošto",
"r-to": "naslovnik",
"r-subject": "zadeva",
"r-rule-details": "Podrobnosti pravila",
"r-d-move-to-top-gen": "Premakni kartico na vrh pripadajočega sezama",
"r-d-move-to-top-spec": "Premakni kartico na vrh seznama",
"r-d-move-to-bottom-gen": "Premakni kartico na dno pripadajočega seznama",
"r-d-move-to-bottom-spec": "Premakni kartico na dno seznama",
"r-d-send-email": "Pošlji e-pošto",
"r-d-send-email-to": "na",
"r-d-send-email-subject": "zadeva",
"r-d-send-email-message": "vsebina",
"r-d-archive": "Premakni kartico v arhiv",
"r-d-unarchive": "Obnovi kartico iz arhiva",
"r-d-add-label": "Dodaj oznako",
"r-d-remove-label": "Izbriši oznako",
"r-create-card": "Ustvari novo kartico",
"r-in-list": "v seznamu",
"r-in-swimlane": "v plavalni stezi",
"r-d-add-member": "Dodaj člana",
"r-d-remove-member": "Odstrani člana",
"r-d-remove-all-member": "Odstrani vse člane",
"r-d-check-all": "Označi vse elemente seznama",
"r-d-uncheck-all": "Odznači vse elemente seznama",
"r-d-check-one": "Označi element",
"r-d-uncheck-one": "Odznači element",
"r-d-check-of-list": "kontrolnega seznama",
"r-d-add-checklist": "Dodaj kontrolni list",
"r-d-remove-checklist": "Odstrani kotrolni list",
"r-by": "od",
"r-add-checklist": "Dodaj kontrolni list",
"r-with-items": "s postavkami",
"r-items-list": "el1,el2,el3",
"r-add-swimlane": "Dodaj plavalno stezo",
"r-swimlane-name": "ime plavalne steze",
"r-board-note": "Opomba: polje pustite prazno, da ustreza vsaki možni vrednosti.",
"r-checklist-note": "Opomba: elementi kontrolnega seznama morajo biti zapisani kot vrednosti, ločene z vejicami.",
"r-when-a-card-is-moved": "Ko je kartica premaknjena v drug seznam",
"r-set": "Nastavi",
"r-update": "Posodobi",
"r-datefield": "polje z datumom",
"r-df-start-at": "začetek",
"r-df-due-at": "rok",
"r-df-end-at": "konec",
"r-df-received-at": "prejeto",
"r-to-current-datetime": "v trenutni datum/čas",
"r-remove-value-from": "Izbriši vrednost iz",
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Metoda avtentikacije",
"authentication-type": "Način avtentikacije",
"custom-product-name": "Ime izdelka po meri",
"layout": "Postavitev",
"hide-logo": "Skrij logo",
"add-custom-html-after-body-start": "Dodaj HTML po meri po <body> začetku",
"add-custom-html-before-body-end": "Dodaj HMTL po meri po </body> koncu",
"error-undefined": "Prišlo je do napake",
"error-ldap-login": "Prišlo je do napake ob prijavi",
"display-authentication-method": "Prikaži metodo avtentikacije",
"default-authentication-method": "Privzeta metoda avtentikacije",
"duplicate-board": "Dupliciraj tablo",
"people-number": "Število ljudi je:",
"swimlaneDeletePopup-title": "Zbriši plavalno stezo?",
"swimlane-delete-pop": "Vsa dejanja bodo odstranjena iz seznama dejavnosti. Plavalne steze ne boste mogli obnoviti. Razveljavitve ni.",
"restore-all": "Obnovi vse",
"delete-all": "Izbriši vse",
"loading": "Nalagam, prosimo počakajte",
"previous_as": "zadnji čas je bil",
"act-a-dueAt": "spremenil rok zapadlosti na \nKdaj: __timeValue__\nKje: __card__\n prejšnji rok zapadlosti je bil __timeOldValue__",
"act-a-endAt": "spremenil čas dokončanja na __timeValue__ iz (__timeOldValue__)",
"act-a-startAt": "spremenil čas pričetka na __timeValue__ iz (__timeOldValue__)",
"act-a-receivedAt": "spremenil čas prejema na __timeValue__ iz (__timeOldValue__)",
"a-dueAt": "spremenil rok v",
"a-endAt": "spremenil končni čas v",
"a-startAt": "spremenil začetni čas v",
"a-receivedAt": "spremenil čas prejetja v",
"almostdue": "trenutni rok %s se približuje",
"pastdue": "trenutni rok %s je potekel",
"duenow": "trenutni rok %s je danes",
"act-newDue": "__list__/__card__ ima 1. opomnik roka zapadlosti [__board__]",
"act-withDue": "__list__/__card__ opomniki roka zapadlosti [__board__]",
"act-almostdue": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ se bliža",
"act-pastdue": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ je potekel",
"act-duenow": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ je sedaj",
"act-atUserComment": "Omenjeni ste bili v [__board__] __list__/__card__",
"delete-user-confirm-popup": "Ali ste prepričani, da želite izbrisati ta račun? Razveljavitve ni.",
"accounts-allowUserDelete": "Dovoli uporabnikom, da sami izbrišejo svoj račun",
"hide-minicard-label-text": "Skrij besedilo oznak na karticah",
"show-desktop-drag-handles": "Pokaži ročke za povleko na namizju"
}
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+740 -733
View File
File diff suppressed because it is too large. Load diff
+2
View File
@@ -20,6 +20,8 @@ AccountSettings.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+10
View File
@@ -14,6 +14,16 @@ Actions.allow({
},
});
Actions.before.insert((userId, doc) => {
doc.createdAt = new Date();
doc.modifiedAt = doc.createdAt;
});
Actions.before.update((userId, doc, fieldNames, modifier) => {
modifier.$set = modifier.$set || {};
modifier.$set.modifiedAt = new Date();
});
Actions.helpers({
description() {
return this.desc;
+48 -22
View File
@@ -62,8 +62,14 @@ Activities.helpers({
//},
});
Activities.before.update((userId, doc, fieldNames, modifier) => {
modifier.$set = modifier.$set || {};
modifier.$set.modifiedAt = new Date();
});
Activities.before.insert((userId, doc) => {
doc.createdAt = new Date();
doc.modifiedAt = doc.createdAt;
});
Activities.after.insert((userId, doc) => {
@@ -174,25 +180,34 @@ if (Meteor.isServer) {
const comment = activity.comment();
params.comment = comment.text;
if (board) {
const atUser = /(?:^|>|\b|\s)@(\S+)(?:\s|$|<|\b)/g;
const comment = params.comment;
if (comment.match(atUser)) {
const commenter = params.user;
while (atUser.exec(comment)) {
const username = RegExp.$1;
if (commenter === username) {
// it's person at himself, ignore it?
continue;
}
const user = Users.findOne(username) || Users.findOne({ username });
const uid = user && user._id;
params.atUsername = username;
params.atEmails = user.emails;
if (board.hasMember(uid)) {
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
const knownUsers = board.members.map(member => {
const u = Users.findOne(member.userId);
if (u) {
member.username = u.username;
member.emails = u.emails;
}
return member;
});
const mentionRegex = /\B@(?:(?:"([\w.\s]*)")|([\w.]+))/gi; // including space in username
let currentMention;
while ((currentMention = mentionRegex.exec(comment)) !== null) {
/*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
const [ignored, quoteduser, simple] = currentMention;
const username = quoteduser || simple;
if (username === params.user) {
// ignore commenter mention himself?
continue;
}
const atUser = _.findWhere(knownUsers, { username });
if (!atUser) {
continue;
}
const uid = atUser.userId;
params.atUsername = username;
params.atEmails = atUser.emails;
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
}
params.commentId = comment._id;
@@ -227,8 +242,8 @@ if (Meteor.isServer) {
(!activity.timeKey || activity.timeKey === 'dueAt') &&
activity.timeValue
) {
// due time reminder
title = 'act-withDue';
// due time reminder, if it doesn't have old value, it's a brand new set, need some differentiation
title = activity.timeOldValue ? 'act-withDue' : 'act-newDue';
}
['timeValue', 'timeOldValue'].forEach(key => {
// copy time related keys & values to params
@@ -268,13 +283,24 @@ if (Meteor.isServer) {
});
const integrations = Integrations.find({
boardId: board._id,
type: 'outgoing-webhooks',
boardId: { $in: [board._id, Integrations.Const.GLOBAL_WEBHOOK_ID] },
// type: 'outgoing-webhooks', // all types
enabled: true,
activities: { $in: [description, 'all'] },
}).fetch();
if (integrations.length > 0) {
Meteor.call('outgoingWebhooks', integrations, description, params);
params.watchers = watchers;
integrations.forEach(integration => {
Meteor.call(
'outgoingWebhooks',
integration,
description,
params,
() => {
return;
},
);
});
}
});
}
+2
View File
@@ -25,6 +25,8 @@ Announcements.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+9
View File
@@ -55,6 +55,8 @@ Boards.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
@@ -697,6 +699,13 @@ Boards.helpers({
return result;
},
cardsDueInBetween(start, end) {
return Cards.find({
boardId: this._id,
dueAt: { $gte: start, $lte: end },
});
},
cardsInInterval(start, end) {
return Cards.find({
boardId: this._id,
+2
View File
@@ -34,6 +34,8 @@ CardComments.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+30 -7
View File
@@ -107,6 +107,8 @@ Cards.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
@@ -1556,6 +1558,7 @@ function cardRemover(userId, doc) {
const findDueCards = days => {
const seekDue = ($from, $to, activityType) => {
Cards.find({
archived: false,
dueAt: { $gte: $from, $lt: $to },
}).forEach(card => {
const username = Users.findOne(card.userId).username;
@@ -1576,18 +1579,38 @@ const findDueCards = days => {
const now = new Date(),
aday = 3600 * 24 * 1e3,
then = day => new Date(now.setHours(0, 0, 0, 0) + day * aday);
seekDue(then(1), then(days), 'almostdue');
seekDue(then(0), then(1), 'duenow');
seekDue(then(-days), now, 'pastdue');
if (!days) return;
if (!days.map) days = [days];
days.map(day => {
let args = [];
if (day === 0) {
args = [then(0), then(1), 'duenow'];
} else if (day > 0) {
args = [then(1), then(day), 'almostdue'];
} else {
args = [then(day), now, 'pastdue'];
}
seekDue(...args);
});
};
const addCronJob = _.debounce(
Meteor.bindEnvironment(function findDueCardsDebounced() {
const notifydays =
parseInt(process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER, 10) || 2; // default as 2 days before and after
if (!(notifydays > 0 && notifydays < 15)) {
// notifying due is disabled
const envValue = process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER;
if (!envValue) {
return;
}
const notifydays = envValue
.split(',')
.map(value => {
const iValue = parseInt(value, 10);
if (!(iValue > 0 && iValue < 15)) {
// notifying due is disabled
return false;
} else {
return iValue;
}
})
.filter(Boolean);
const notifyitvl = process.env.NOTIFY_DUE_AT_HOUR_OF_DAY; //passed in the itvl has to be a number standing for the hour of current time
const defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default
const itvl = parseInt(notifyitvl, 10) || defaultitvl;
+2
View File
@@ -44,6 +44,8 @@ ChecklistItems.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -35,6 +35,8 @@ Checklists.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -78,6 +78,8 @@ CustomFields.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+20 -4
View File
@@ -63,6 +63,8 @@ Integrations.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
@@ -88,16 +90,30 @@ Integrations.attachSchema(
},
}),
);
Integrations.Const = {
GLOBAL_WEBHOOK_ID: '_global',
ONEWAY: 'outgoing-webhooks',
TWOWAY: 'bidirectional-webhooks',
get WEBHOOK_TYPES() {
return [this.ONEWAY, this.TWOWAY];
},
};
const permissionHelper = {
allow(userId, doc) {
const user = Users.findOne(userId);
const isAdmin = user && Meteor.user().isAdmin;
return isAdmin || allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
},
};
Integrations.allow({
insert(userId, doc) {
return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return permissionHelper.allow(userId, doc);
},
update(userId, doc) {
return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return permissionHelper.allow(userId, doc);
},
remove(userId, doc) {
return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
return permissionHelper.allow(userId, doc);
},
fetch: ['boardId'],
});
+2
View File
@@ -18,6 +18,8 @@ InvitationCodes.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -45,6 +45,8 @@ Lists.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -98,6 +98,8 @@ Org.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -49,6 +49,8 @@ OrgUser.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -27,6 +27,8 @@ Rules.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -60,6 +60,8 @@ Settings.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+2
View File
@@ -38,6 +38,8 @@ Swimlanes.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+10
View File
@@ -12,6 +12,16 @@ Triggers.mutations({
},
});
Triggers.before.insert((userId, doc) => {
doc.createdAt = new Date();
doc.updatedAt = doc.createdAt;
});
Triggers.before.update((userId, doc, fieldNames, modifier) => {
modifier.$set = modifier.$set || {};
modifier.$set.updatedAt = new Date();
});
Triggers.allow({
insert(userId, doc) {
return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
+2
View File
@@ -29,6 +29,8 @@ UnsavedEditCollection.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
+3
View File
@@ -54,6 +54,8 @@ Users.attachSchema(
autoValue() {
if (this.isInsert) {
return new Date();
} else if (this.isUpsert) {
return { $setOnInsert: new Date() };
} else {
this.unset();
}
@@ -539,6 +541,7 @@ Users.mutations({
Meteor.methods({
setUsername(username, userId) {
check(username, String);
check(userId, String);
const nUsersWithUsername = Users.find({ username }).count();
if (nUsersWithUsername > 0) {
throw new Meteor.Error('username-already-taken');
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.32.0",
"version": "v3.45.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -25,9 +25,9 @@
}
},
"@babel/runtime": {
"version": "7.5.5",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
"integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
"version": "7.6.2",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.2.tgz",
"integrity": "sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg==",
"requires": {
"regenerator-runtime": "^0.13.2"
}
Loaded 100 of 118 files, more files were not shown because too many files have changed in this diff. Show more