Merge pull request #1 from wekan/master

Update master
This commit is contained in:
蔡仲明 (Romulus Urakagi Tsai) 2019-11-21 11:25:56 +08:00 committed by GitHub
commit 3e0bedd8c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
161 changed files with 11557 additions and 1753 deletions

162
.devcontainer/Dockerfile Normal file
View file

@ -0,0 +1,162 @@
FROM ubuntu:disco
LABEL maintainer="sgr"
ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2"
ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=8.16.2 \
METEOR_RELEASE=1.8.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
NPM_VERSION=latest \
FIBERS_VERSION=4.0.1 \
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
WITH_API=true \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
RICHER_CARD_COMMENT_EDITOR=true \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
BIGEVENTS_PATTERN="" \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
EMAIL_NOTIFICATION_TIMEOUT=30000 \
MATOMO_ADDRESS="" \
MATOMO_SITE_ID="" \
MATOMO_DO_NOT_TRACK=true \
MATOMO_WITH_USERNAME=false \
BROWSER_POLICY_ENABLED=true \
TRUSTED_URL="" \
WEBHOOKS_ATTRIBUTES="" \
OAUTH2_ENABLED=false \
OAUTH2_LOGIN_STYLE=redirect \
OAUTH2_CLIENT_ID="" \
OAUTH2_SECRET="" \
OAUTH2_SERVER_URL="" \
OAUTH2_AUTH_ENDPOINT="" \
OAUTH2_USERINFO_ENDPOINT="" \
OAUTH2_TOKEN_ENDPOINT="" \
OAUTH2_ID_MAP="" \
OAUTH2_USERNAME_MAP="" \
OAUTH2_FULLNAME_MAP="" \
OAUTH2_ID_TOKEN_WHITELIST_FIELDS="" \
OAUTH2_REQUEST_PERMISSIONS='openid profile email' \
OAUTH2_EMAIL_MAP="" \
LDAP_ENABLE=false \
LDAP_PORT=389 \
LDAP_HOST="" \
LDAP_BASEDN="" \
LDAP_LOGIN_FALLBACK=false \
LDAP_RECONNECT=true \
LDAP_TIMEOUT=10000 \
LDAP_IDLE_TIMEOUT=10000 \
LDAP_CONNECT_TIMEOUT=10000 \
LDAP_AUTHENTIFICATION=false \
LDAP_AUTHENTIFICATION_USERDN="" \
LDAP_AUTHENTIFICATION_PASSWORD="" \
LDAP_LOG_ENABLED=false \
LDAP_BACKGROUND_SYNC=false \
LDAP_BACKGROUND_SYNC_INTERVAL="" \
LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false \
LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false \
LDAP_ENCRYPTION=false \
LDAP_CA_CERT="" \
LDAP_REJECT_UNAUTHORIZED=false \
LDAP_USER_AUTHENTICATION=false \
LDAP_USER_AUTHENTICATION_FIELD=uid \
LDAP_USER_SEARCH_FILTER="" \
LDAP_USER_SEARCH_SCOPE="" \
LDAP_USER_SEARCH_FIELD="" \
LDAP_SEARCH_PAGE_SIZE=0 \
LDAP_SEARCH_SIZE_LIMIT=0 \
LDAP_GROUP_FILTER_ENABLE=false \
LDAP_GROUP_FILTER_OBJECTCLASS="" \
LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE="" \
LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT="" \
LDAP_GROUP_FILTER_GROUP_NAME="" \
LDAP_UNIQUE_IDENTIFIER_FIELD="" \
LDAP_UTF8_NAMES_SLUGIFY=true \
LDAP_USERNAME_FIELD="" \
LDAP_FULLNAME_FIELD="" \
LDAP_MERGE_EXISTING_USERS=false \
LDAP_EMAIL_FIELD="" \
LDAP_EMAIL_MATCH_ENABLE=false \
LDAP_EMAIL_MATCH_REQUIRE=false \
LDAP_EMAIL_MATCH_VERIFIED=false \
LDAP_SYNC_USER_DATA=false \
LDAP_SYNC_USER_DATA_FIELDMAP="" \
LDAP_SYNC_GROUP_ROLES="" \
LDAP_DEFAULT_DOMAIN="" \
LDAP_SYNC_ADMIN_STATUS="" \
LDAP_SYNC_ADMIN_GROUPS="" \
HEADER_LOGIN_ID="" \
HEADER_LOGIN_FIRSTNAME="" \
HEADER_LOGIN_LASTNAME="" \
HEADER_LOGIN_EMAIL="" \
LOGOUT_WITH_TIMER=false \
LOGOUT_IN="" \
LOGOUT_ON_HOURS="" \
LOGOUT_ON_MINUTES="" \
CORS="" \
CORS_ALLOW_HEADERS="" \
CORS_EXPOSE_HEADERS="" \
DEFAULT_AUTHENTICATION_METHOD=""
# Install OS
RUN set -o xtrace \
&& useradd --user-group -m --system --home-dir /home/wekan wekan \
&& apt-get update \
&& apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \
&& apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS}
# Install NodeJS
RUN set -o xtrace \
&& cd /tmp \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& grep " node-v$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt.asc | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt.asc \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp /root/.node-gyp/${NODE_VERSION} /home/wekan/.config \
&& npm install -g npm@${NPM_VERSION} \
&& chown wekan:wekan --recursive /home/wekan/.config
ENV DEBIAN_FRONTEND=dialog
USER wekan
# Install Meteor
RUN set -o xtrace \
&& cd /home/wekan \
&& curl https://install.meteor.com/?release=$METEOR_VERSION --output /home/wekan/install-meteor.sh \
# Replace tar with bsdtar in the install script; https://github.com/jshimko/meteor-launchpad/issues/39
&& sed --in-place "s/tar -xzf.*/bsdtar -xf \"\$TARBALL_FILE\" -C \"\$INSTALL_TMPDIR\"/g" /home/wekan/install-meteor.sh \
&& sed --in-place 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' /home/wekan/install-meteor.sh \
&& printf "\n[-] Installing Meteor $METEOR_VERSION...\n\n" \
&& sh /home/wekan/install-meteor.sh
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
COPY ${SRC_PATH} /home/wekan/app/
RUN set -o xtrace \
&& chown -R wekan:wekan /home/wekan/app /home/wekan/.meteor
USER wekan

12
.devcontainer/build.sh Normal file
View file

@ -0,0 +1,12 @@
#!/bin/bash
cd /home/wekan/app
rm -rf node_modules
/home/wekan/.meteor/meteor npm install
rm -rf .build
/home/wekan/.meteor/meteor build .build --directory
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
cd .build/bundle/programs/server
rm -rf node_modules
/home/wekan/.meteor/meteor npm install
cd /home/wekan/app

View file

@ -0,0 +1,17 @@
// See https://aka.ms/vscode-remote/devcontainer.json for format details.
{
"dockerComposeFile": ["docker-compose.yml", "docker-compose.extend.yml"],
"service": "wekan-dev",
"workspaceFolder": "/home/wekan/app",
"extensions": [
"mutantdino.resourcemonitor",
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"codezombiech.gitignore",
"eamodio.gitlens",
"gruntfuggly.todo-tree",
"dotjoshjohnson.xml",
"redhat.vscode-yaml",
"vuhrmeister.vscode-meteor"
]
}

View file

@ -0,0 +1,50 @@
version: '3.7'
services:
wekandb-dev:
image: mongo:4.0.12
container_name: wekan-dev-db
restart: unless-stopped
command: mongod --smallfiles --oplogSize 128
networks:
- wekan-dev-tier
expose:
- 27017
volumes:
- wekan-dev-db:/data/db
- wekan-dev-db-dump:/dump
wekan-dev:
container_name: wekan-dev-app
restart: always
networks:
- wekan-dev-tier
build:
context: ..
dockerfile: .devcontainer/Dockerfile
ports:
- 3000:3000
- 9229:9229
environment:
- MONGO_URL=mongodb://wekandb-dev:27017/wekan
- ROOT_URL=http://localhost:3000
- WITH_API=true
- RICHER_CARD_COMMENT_EDITOR=true
- BROWSER_POLICY_ENABLED=true
depends_on:
- wekandb-dev
volumes:
- ..:/app:delegated
command:
sleep infinity
volumes:
wekan-dev-db:
driver: local
wekan-dev-db-dump:
driver: local
networks:
wekan-dev-tier:
driver: bridge

3
.gitattributes vendored Normal file
View file

@ -0,0 +1,3 @@
* text=auto eol=lf
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf

3
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,3 @@
# These are supported funding model platforms
custom: ['https://wekan.team/commercial-support/']

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*

2
.gitignore vendored
View file

@ -29,6 +29,6 @@ versions.json
Thumbs.db
ehthumbs.db
.eslintcache
package-lock.json
.meteor/local
.meteor-1.6-snap/.meteor/local
.devcontainer/docker-compose.extend.yml

View file

@ -6,9 +6,9 @@
meteor-base@1.4.0
# Build system
ecmascript@0.12.4
standard-minifier-css@1.5.3
standard-minifier-js@2.4.1
ecmascript@0.13.0
standard-minifier-css@1.5.4
standard-minifier-js@2.5.0
mquandalle:jade
# Polyfills
@ -22,7 +22,7 @@ dburles:collection-helpers
idmontie:migrations
matb33:collection-hooks
matteodem:easy-search
mongo@1.6.2
mongo@1.7.0
mquandalle:collection-mutations
# Account system
@ -96,3 +96,4 @@ konecty:mongo-counter
percolate:synced-cron
easylogic:summernote
cfs:filesystem
ostrio:cookies

View file

@ -1 +1 @@
METEOR@1.8.1
METEOR@1.8.2

View file

@ -1,5 +1,5 @@
3stack:presence@1.1.2
accounts-base@1.4.4
accounts-base@1.4.5
accounts-oauth@1.1.16
accounts-password@1.5.1
aldeed:collection2@2.10.0
@ -12,8 +12,8 @@ allow-deny@1.1.0
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.6.0
babel-compiler@7.3.4
babel-runtime@1.3.0
babel-compiler@7.4.0
babel-runtime@1.4.0
base64@1.0.12
binary-heap@1.0.11
blaze@2.3.3
@ -23,7 +23,7 @@ browser-policy-common@1.0.11
browser-policy-framing@1.1.0
caching-compiler@1.2.1
caching-html-compiler@1.1.3
callback-hook@1.1.0
callback-hook@1.2.0
cfs:access-point@0.1.49
cfs:base-package@0.0.30
cfs:collection@0.5.5
@ -57,10 +57,10 @@ deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.5.1
easylogic:summernote@0.8.8
ecmascript@0.12.7
ecmascript@0.13.0
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.8.0
ecmascript-runtime-server@0.7.1
ecmascript-runtime-client@0.9.0
ecmascript-runtime-server@0.8.0
ejson@1.1.0
email@1.2.3
es5-shim@4.8.0
@ -82,14 +82,14 @@ kadira:dochead@1.5.0
kadira:flow-router@2.12.1
kenton:accounts-sandstorm@0.7.0
konecty:mongo-counter@0.0.5_3
lamhieu:meteorx@2.0.1
lamhieu:meteorx@2.1.1
lamhieu:unblock@1.0.0
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.2.0
logging@1.1.20
lucasantoniassi:accounts-lockout@1.0.0
matb33:collection-hooks@0.8.4
matb33:collection-hooks@0.9.1
matteodem:easy-search@1.6.4
mdg:meteor-apm-agent@3.2.3
mdg:validation-error@0.5.1
@ -101,16 +101,16 @@ meteorhacks:collection-utils@1.2.0
meteorhacks:picker@1.0.3
meteorhacks:subs-manager@1.6.4
meteorspark:util@0.2.0
minifier-css@1.4.2
minifier-js@2.4.1
minifier-css@1.4.3
minifier-js@2.5.0
minifiers@1.1.8-faster-rebuild.0
minimongo@1.4.5
mobile-status-bar@1.0.14
modern-browsers@0.1.4
modules@0.13.0
modules-runtime@0.10.3
modules@0.14.0
modules-runtime@0.11.0
momentjs:moment@2.24.0
mongo@1.6.3
mongo@1.7.0
mongo-decimal@0.1.1
mongo-dev-server@1.1.0
mongo-id@1.0.7
@ -127,17 +127,18 @@ mquandalle:mousetrap-bindglobal@0.0.1
mquandalle:perfect-scrollbar@0.6.5_2
msavin:usercache@1.8.0
npm-bcrypt@0.9.3
npm-mongo@3.1.2
npm-mongo@3.2.0
oauth@1.2.8
oauth2@1.2.1
observe-sequence@1.0.16
ongoworks:speakingurl@1.1.0
ordered-dict@1.1.0
peerlibrary:assert@0.2.5
ostrio:cookies@2.5.0
peerlibrary:assert@0.3.0
peerlibrary:base-component@0.16.0
peerlibrary:blaze-components@0.15.1
peerlibrary:computed-field@0.9.0
peerlibrary:reactive-field@0.5.0
peerlibrary:computed-field@0.10.0
peerlibrary:reactive-field@0.6.0
percolate:synced-cron@1.3.2
promise@0.11.2
raix:eventemitter@0.1.3
@ -166,8 +167,8 @@ softwarerero:accounts-t9n@1.3.11
spacebars@1.0.15
spacebars-compiler@1.1.3
srp@1.0.12
standard-minifier-css@1.5.3
standard-minifier-js@2.4.1
standard-minifier-css@1.5.4
standard-minifier-js@2.5.0
staringatlights:fast-render@3.2.0
staringatlights:inject-data@2.3.0
tap:i18n@1.8.2
@ -185,7 +186,7 @@ useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.7.4
webapp@1.7.5
webapp-hashing@1.0.9
wekan-accounts-cas@0.1.0
wekan-accounts-oidc@1.0.10

View file

@ -1,10 +1,10 @@
dist: trusty
dist: disco
sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.17.0
TRAVIS_NODE_VERSION: 8.9.3
TRAVIS_NPM_VERSION: 5.5.1
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 8.16.2
TRAVIS_NPM_VERSION: latest
before_install:
- sudo apt-get update -y

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

28
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,28 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Meteor: Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
},
{
"type": "node",
"request": "launch",
"name": "Meteor: Node",
"runtimeExecutable": "/home/wekan/.meteor/meteor",
"runtimeArgs": ["run", "--inspect-brk=9229"],
"outputCapture": "std",
"port": 9229,
"timeout": 60000
}
],
"compounds": [
{
"name": "Meteor: All",
"configurations": ["Meteor: Node", "Meteor: Chrome"]
}
]
}

View file

@ -1,3 +1,443 @@
# Upcoming Wekan release
This release adds the following updates:
- [Update to Meteor 1.8.2. Update dependencies](https://github.com/wekan/wekan/commit/38dfe0b9a71a083adc2de1a81170fea0e4a8e53f).
Thanks to xet7.
- [Fix lint errors and update travis NPM version](https://github.com/wekan/wekan/commit/b0f345ba21830b033c9edcc8ee5252b280111ae7).
Thanks to xet7.
and fixes the following bugs:
- Fix slow scroll on card detail by setting scrollInertia to 0](https://github.com/wekan/wekan/commit/599ace1db7918df41d9708d14b0351acb0f8688e).
Thanks to cafeoh.
- [Fix lint errors](https://github.com/wekan/wekan/commit/788dd0a81a06efee165007a92780f9e8c2c754ac).
Thanks to xet7.
- [Remove eslint option that does not work](https://github.com/wekan/wekan/commit/a06daff92e5f7cca55d1698252e3aa6526877c8b).
Thanks to xet7.
- [Try to fix lint errors](https://github.com/wekan/wekan/commit/58e505f79a0617011576bdded9427b0d448d6107).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.55 2019-11-19 Wekan release
This release fixes the following bugs:
- [When logged in, use database for setting, so that changes are immediate. Only on public board use cookies.
Comment out Collapse CSS that is not in use](https://github.com/wekan/wekan/commit/351d4767d7e93c90ac798769d6071da8730d834f).
Thanks to xet7.
- [Use database when logged in. Part 2](https://github.com/wekan/wekan/commit/4786b0c18ddeb8f48525216eabebdced7159467d).
Thanks to xet7.
- [Use database when logged in. Part 3](https://github.com/wekan/wekan/commit/115d23f9293cad8a93f18f75a47a8a65756f71ce).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.54 2019-11-18 Wekan release
This release adds the following new features:
- [New feature: Now there is popup selection of Lists/Swimlanes/Calendar/Roles](https://github.com/wekan/wekan/commit/96abe3c6914ce37d9fb44da8fda375e40ad65c9e).
Thanks to xet7.
- [New feature, not set visible yet, because switching to it does not
work properly yet: Collapsible Swimlanes](https://github.com/wekan/wekan/issues/2804).
Thanks to xet7.
and fixes the following bugs:
- [Fix: Public board now loads correctly. When you select one of Lists/Swimlanes/Calendar view and
reload webbrowser page, it can change view](https://github.com/wekan/wekan/issues/2311).
Thanks to xet7.
- [Fix: List sorting commented out](https://github.com/wekan/wekan/issues/2800).
Thanks to xet7.
- [Fix: Errors hasHiddenMinicardText, hasShowDragHandles, showSort, hasSortBy, profile,
FirefoxAndroid/IE11/Vivaldi/Chromium browsers not working by using cookies instead of
database](https://github.com/wekan/wekan/issues/2643#issuecomment-554907955).
Note: Cookie changes are not always immediate, if there is no effect, you may need to
reload webbrowser page. This could be improved later.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.53 2019-11-14 Wekan release
This release fixes the following bugs:
- [Revert list sorting change of Wekan v3.51 because it reversed alphabetical sorting of
lists](https://github.com/wekan/wekan/commit/ab2a721a1443b903cdbbbe275f41ffd3269012c6).
Thanks to Dalisay and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.52 2019-11-14 Wekan release
This release fixes the following bugs:
- [Add database migration for assignee](https://github.com/wekan/wekan/commit/5b41d72e8de93833e1788962427422cff62c09a2).
Thanks to ocdtrekkie and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.51 2019-11-14 Wekan release
This release fixes the following bugs:
- [Change sorting lists to work on desktop drag handle page instead,
where it seems to work better](https://github.com/wekan/wekan/commit/bbc3ab3f994c5a61a4414bc64b05f5a03d259e46).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.50 2019-11-13 Wekan release
This release adds the following new features:
- [Allowing lists to be sorted by modifiedAt when not in draggable
mode](https://github.com/wekan/wekan/commits/77f8b76d4e13c35ea3451622176bbb69a4d39a32).
Thanks to whowillcare.
- Allow user to sort Lists in Board by his own preference boardadmin can star
list [1](https://github.com/wekan/wekan/commit/bc2a20f04e32607f8488a9cecd815647fb43e40e),
[2](https://github.com/wekan/wekan/commit/bc2a20f04e32607f8488a9cecd815647fb43e40e).
Thanks to whowillcare.
- [Allowing user to filter list in Filter function not just cards
commit](https://github.com/wekan/wekan/commit/d2d4840758b0f5aed7feb4f6a459bb2b2d1a3f0b).
Thanks to whowillcare.
- [Allow user to search Lists in Board](https://github.com/wekan/wekan/commit/32f50e16586696ec7d100ce0438d1030ae1f606e).
Thanks to whowillcare.
- Enhancement: [Set card times more sensible using the 'Today' button in
datepicker](https://github.com/wekan/wekan/pull/2747).
Thanks to liske.
- [At card, added Assignee field like Jira, and REST API for it](https://github.com/wekan/wekan/issues/2452).
Parts:
[Add assignee](https://github.com/wekan/wekan/commit/9e1aaf163f3bd0b3c2d2aee8225d111f83b3d421),
[Remove Assignee. Avatar icon is at card and assignee details](https://github.com/wekan/wekan/commit/3e8f9ef1a5275a5e9b691c7e74dc73b97a43689a),
[When selecting new assignee (+) icon, list shows names who to add](https://github.com/wekan/wekan/commit/32ce2b51d8bff5e8851732394a8bae3c56f8b0b6),
[More progress](https://github.com/wekan/wekan/commit/ea823ab68fd5243c8485177e44a074be836836b8),
[In add assignee popup, avatars are now visible](https://github.com/wekan/wekan/commit/56efb5c41075151eeb259d99990a7e86695b2b69),
[Add assignee popup title](https://github.com/wekan/wekan/commit/31dbdc835d5a092b8360a4dbe93e9fbcce068855),
[Prevent more than one assignee](https://github.com/wekan/wekan/commit/1728298659521ee8e6fc94fedad3160030b9a2c3),
[When there is one selected assignee on card, don't show + button for adding more assignees, because there can only be one
assignee](https://github.com/wekan/wekan/commit/3cf09efb13438d66db6cf739591c679ea538d812),
[Now assignee is visible also at minicard](https://github.com/wekan/wekan/commit/9fd14f7ecb593d3debf5adff8f6c61adb0c3feca),
[Update REST API docs, there can only be one assignee in array](https://github.com/wekan/wekan/commit/de7509dc60257667192054e320b381f9dd0f0a31).
Thanks to xet7.
- [More mobile drag handles, and optional desktop drag handles](https://github.com/wekan/wekan/issues/2081): In Progress.
Parts:
[Some drag handle fixes](https://github.com/wekan/wekan/commit/6a8960547729148bd3085cb469f9e93d510ed66c),
[Fix desktop swimlane drag handle position](https://github.com/wekan/wekan/commit/2ec15602d284122fce1a45bed352d0d4050162e2),
[Fix card, list and swimlane move. Allow moving cards in multiselect mode](https://github.com/wekan/wekan/commit/537a48bede250155b30ec264904ba320625bab73).
Thanks to xet7.
and adds the following updates:
- [Update Node.js to v8.16.2](https://github.com/wekan/wekan/commit/1eb3d25b40797fdab41d7dd59405cfcea81dcc61).
Thanks to xet7.
and fixes the following bugs:
- Bug Fix [#2093](https://github.com/wekan/wekan/issues/2093), need to [clean up the
temporary file](https://github.com/wekan/wekan/commit/2737d6b23f3a0fd2314236a85fbdee536df745a2).
Thanks to whowillcare.
- Bug Fix [#2093](https://github.com/wekan/wekan/issues/2093): the broken [should be prior to file attachment feature introduced](https://github.com/wekan/wekan/commit/f53c624b0f6c6ebcc20c378a153e5cda8d73463c).
Thanks to whowillcare.
- [Fix typo on exporting subtasks](https://github.com/wekan/wekan/commit/00d581245c1fe6a01ef372ca87d8a25bc7b937e4).
Thanks to xiorcala.
- [Change the radom to random typo in export.js](https://github.com/wekan/wekan/commit/e195c731de88aba4026c239f4552ae821d522ec7).
Thanks to whowillcare.
- Fix: [List last modify time will be affected by cards dueAt, endAt](https://github.com/wekan/wekan/commit/3308d90a3a6a1ddeed33966767937cd2c2c90cb5).
Thanks to whowillcare.
- Revert creating new list to left, now creates again to right. Thanks to whowillcare.
Revert New List item moved from right to left. Thanks to derbolle and xet7.
[1](https://github.com/wekan/wekan/commit/806df30ba3499cef193eaf1b437cdef65282510f).
- REST API: [Fix deletion of a single board card](https://github.com/wekan/wekan/pull/2778).
Thanks to liske.
- [cardDate: endDate coloring change](https://github.com/wekan/wekan/pull/2779).
If no due-date timestamp is set => Gray.
If end-date timestamp is younger than due-date timestamp => Green.
If end-date timestamp is older than due-date timestamp => Red.
Thanks to bandresen.
- [Fixed Card Open Webhook Error](https://github.com/wekan/wekan/issues/2780).
Thanks to jymcheong.
- [Fixed OpenAPI docs generation](https://github.com/wekan/wekan/pull/2783).
Thanks to bentiss.
- [Fixed close card button not visible on mobile web](https://github.com/wekan/wekan/36b5965dd07e3f0fd90069353310739c394c220f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.49 2019-10-09 Wekan release
This release fixes the following bugs:
- [Fix prettier errors](https://github.com/wekan/wekan/commits/36e006fa4e78fe94e627625d1cc589654668f22a).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.48 2019-10-09 Wekan release
This release fixes the following bugs:
- [Make possible to upload attachments using drag-and-drop or Ctrl+V without setting the environmental-variable MAX_IMAGE_PIXEL](https://github.com/wekan/wekan/pull/2754).
Thanks to moserben16.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.47 2019-10-09 Wekan release
This release fixes the following bugs:
- [REST API: fix handling of members property on card creation](https://github.com/wekan/wekan/pull/2751).
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.46 2019-10-07 Wekan release
This release fixes the following bugs:
- [More black minicard badges](https://github.com/wekan/wekan/commit/68be12d166b21a41b4e2c4021b0966807e5ed1e6).
Thanks to sfahrenholz and xet7.
- [REST API: fix creation of Checklists](https://github.com/wekan/wekan/pull/2747).
Thanks to liske.
Thanks to above GitHub users for their contributions and translators for their translations.
# 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:
- [Fix Snap adopt-info](https://github.com/wekan/wekan/commit/79d4cd83b1fa83bb814230683b7449ed7f3e1ede).
Thanks to [popey at Snapcraft forum](https://forum.snapcraft.io/t/dirty-snap-release/12975/12).
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.31 2019-08-29 Wekan release
This release fixes the following bugs:
- [Try](https://github.com/wekan/wekan/commit/be5f435bc5f500b24bc838ac1dc8bf3bb9a33a22) to
[fix adopt-info](https://forum.snapcraft.io/t/dirty-snap-release/12975/8).
Thanks to ogra at Snapcraft forum.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.30 2019-08-29 Wekan release
This release fixes the following bugs:
- Snap: [Change version-script to adopt-info](https://github.com/wekan/wekan/commit/0ff5ce8fde6cc9a05a3c8b93e18ebce7282d3a67)
to [fix dirty](https://forum.snapcraft.io/t/dirty-snap-release/12975/4).
Thanks to popey and daniel at Snapcraft forum.
- [Delete another phantomjs binary from Snap](https://github.com/wekan/wekan/commit/5084102e6e17fa2cb3bc8c1180745e15379fab5f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.29 2019-08-29 Wekan release
This release fixes the following bugs:
- [Fix Snap](https://github.com/wekan/wekan/commit/7761a22bb4e88ad9a5a39ed84e1ff244015c3a58).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.28 2019-08-29 Wekan release
This release fixes the following bugs:
- Fix broken Sandstorm release by reverting upgrading MongoDB.
Thanks to xet7
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.27 2019-08-29 Wekan release
This release adds the following upgrades:
- [Upgrade Node, Mongo, fibers and qs](https://github.com/wekan/wekan/commit/e21c47d3cfe0f228ce5ab394142c6ec6ee090d65).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.26 2019-08-28 Wekan release
This release adds the following new features:
- [Add devcontainer](https://github.com/wekan/wekan/pull/2659) and some [related fixes](https://github.com/wekan/wekan/pull/2660).
Thanks to road42.
and fixes the following bugs:
- [Add missing modules](https://github.com/wekan/wekan/pull/2653).
Thanks to GhassenRjab.
- [Add package-lock.json](https://github.com/wekan/wekan/commit/ad01526124216abcc8b3c8230599c4eda331a86d).
Thanks to GhassenRjab and xet7.
- [Fix last label undefined](https://github.com/wekan/wekan/pull/2657).
Thanks to justinr1234.
- [Default to BIGEVENTS_PATTERN=NONE so that Wekan sends less email notifications](https://github.com/wekan/wekan/commit/0083215ea3955a950d345d44a8663e5b05e8f00f).
Thanks to rinnaz and xet7.
- [Fix app hang when Meteor.user() is null and list spinner is loaded bug](https://github.com/wekan/wekan/pull/2654).
Thanks to urakagi.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.25 2019-08-23 Wekan release
This release adds the following new features:

View file

@ -6,7 +6,7 @@ LABEL maintainer="wekan"
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates" \
DEBUG=false \
NODE_VERSION=v8.16.0 \
NODE_VERSION=v8.16.2 \
METEOR_RELEASE=1.8.1 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@ -26,7 +26,7 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 g++ build-essential
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
BIGEVENTS_PATTERN="" \
BIGEVENTS_PATTERN=NONE \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
EMAIL_NOTIFICATION_TIMEOUT=30000 \
@ -178,7 +178,7 @@ RUN \
mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs && \
ln -s /opt/nodejs/bin/node /usr/bin/node && \
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.0 /home/wekan/.config && \
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
chown wekan --recursive /home/wekan/.config && \
\
#DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303

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

View file

@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.25.0"
appVersion: "v3.55.0"
files:
userUploads:
- README.md

View file

@ -85,7 +85,7 @@ BlazeComponent.extendComponent({
const lastLabel = Boards.findOne(Session.get('currentBoard')).getLabelById(
lastLabelId,
);
if (lastLabel.name === undefined || lastLabel.name === '') {
if (lastLabel && (lastLabel.name === undefined || lastLabel.name === '')) {
return lastLabel.color;
} else {
return lastLabel.name;

View file

@ -89,7 +89,6 @@ BlazeComponent.extendComponent({
helper.append(list.clone());
return helper;
},
handle: '.js-swimlane-header',
items: '.swimlane:not(.placeholder)',
placeholder: 'swimlane placeholder',
distance: 7,
@ -193,11 +192,42 @@ BlazeComponent.extendComponent({
// ugly touch event hotfix
enableClickOnTouch('.js-swimlane:not(.placeholder)');
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
this.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
if (
Utils.isMiniScreen()
|| (!Utils.isMiniScreen() && showDesktopDragHandles)
) {
$swimlanesDom.sortable({
handle: '.js-swimlane-header-handle',
});
} else {
$swimlanesDom.sortable({
handle: '.swimlane-header',
});
}
// Disable drag-dropping if the current user is not a board member or is comment only
$swimlanesDom.sortable('option', 'disabled', !userIsMember());
});
function userIsMember() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
Meteor.user()
&& Meteor.user().isBoardMember()
&& !Meteor.user().isCommentOnly()
);
}
@ -210,21 +240,36 @@ BlazeComponent.extendComponent({
},
isViewSwimlanes() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
return cookies.get('boardView') === 'board-view-swimlanes';
}
},
isViewLists() {
const currentUser = Meteor.user();
if (!currentUser) return true;
return (currentUser.profile || {}).boardView === 'board-view-lists';
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-lists';
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
return cookies.get('boardView') === 'board-view-lists';
}
},
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile || {}).boardView === 'board-view-cal';
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-cal';
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
return cookies.get('boardView') === 'board-view-cal';
}
},
openNewListForm() {
@ -261,16 +306,16 @@ BlazeComponent.extendComponent({
scrollLeft(position = 0) {
const swimlanes = this.$('.js-swimlanes');
swimlanes &&
swimlanes.animate({
swimlanes
&& swimlanes.animate({
scrollLeft: position,
});
},
scrollTop(position = 0) {
const swimlanes = this.$('.js-swimlanes');
swimlanes &&
swimlanes.animate({
swimlanes
&& swimlanes.animate({
scrollTop: position,
});
},
@ -309,25 +354,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) {
@ -360,8 +426,13 @@ BlazeComponent.extendComponent({
};
},
isViewCalendar() {
const currentUser = Meteor.user();
if (!currentUser) return false;
return (currentUser.profile || {}).boardView === 'board-view-cal';
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView === 'board-view-cal';
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
return cookies.get('boardView') === 'board-view-cal';
}
},
}).register('calendarView');

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

View file

@ -77,6 +77,11 @@ template(name="boardHeaderBar")
i.fa.fa-archive
span {{_ 'archives'}}
//if showSort
// a.board-header-btn.js-open-sort-view(title="{{_ 'sort-desc'}}")
// i.fa(class="{{directionClass}}")
// span {{_ 'sort'}}{{_ listSortShortDesc}}
a.board-header-btn.js-open-filter-view(
title="{{#if Filter.isActive}}{{_ 'filter-on-desc'}}{{else}}{{_ 'filter'}}{{/if}}"
class="{{#if Filter.isActive}}emphasis{{/if}}")
@ -85,15 +90,6 @@ template(name="boardHeaderBar")
if Filter.isActive
a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
i.fa.fa-times-thin
if currentUser.isAdmin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
span {{_ 'rules'}}
else if currentUser.isBoardAdmin
a.board-header-btn.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
span {{_ 'rules'}}
a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")
i.fa.fa-search
@ -102,8 +98,19 @@ template(name="boardHeaderBar")
unless currentBoard.isTemplatesBoard
a.board-header-btn.js-toggle-board-view(
title="{{_ 'board-view'}}")
i.fa.fa-th-large
span {{#if currentUser.profile.boardView}}{{_ currentUser.profile.boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}
i.fa.fa-caret-down
if $eq boardView 'board-view-lists'
i.fa.fa-trello
if $eq boardView 'board-view-swimlanes'
i.fa.fa-th-large
// unless collapseSwimlane
// i.fa.fa-th-large
// if collapseSwimlane
// i.fa.fa-play
if $eq boardView 'board-view-cal'
i.fa.fa-calendar
span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}
//span {{#if collapseSwimlane}}{{_ 'board-view-collapse'}}{{else}}{{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}{{/if}}
if canModifyBoard
a.board-header-btn.js-multiselection-activate(
@ -168,6 +175,51 @@ template(name="boardChangeWatchPopup")
i.fa.fa-check
span.sub-name {{_ 'muted-info'}}
template(name="boardChangeViewPopup")
ul.pop-over-list
li
with "board-view-lists"
a.js-open-lists-view
i.fa.fa-trello.colorful
| {{_ 'board-view-lists'}}
if $eq Utils.boardView "board-view-lists"
i.fa.fa-check
li
with "board-view-swimlanes"
a.js-open-swimlanes-view
i.fa.fa-th-large.colorful
| {{_ 'board-view-swimlanes'}}
if $eq Utils.boardView "board-view-swimlanes"
i.fa.fa-check
//li
// with "board-view-collapse"
// a.js-open-collapse-view
// i.fa.fa-play.colorful
// | {{_ 'board-view-collapse'}}
// if $eq Utils.boardView "board-view-collapse"
// i.fa.fa-check
li
with "board-view-cal"
a.js-open-cal-view
i.fa.fa-calendar.colorful
| {{_ 'board-view-cal'}}
if $eq Utils.boardView "board-view-cal"
i.fa.fa-check
if currentUser.isAdmin
hr
li
with "board-view-rules"
a.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
| {{_ 'rules'}}
else if currentUser.isBoardAdmin
hr
li
with "board-view-rules"
a.js-open-rules-view(title="{{_ 'rules'}}")
i.fa.fa-magic
| {{_ 'rules'}}
template(name="createBoard")
form
label
@ -194,6 +246,20 @@ template(name="createBoard")
| /
a.js-board-template {{_ 'template'}}
//template(name="listsortPopup")
// h2
// | {{_ 'list-sort-by'}}
// hr
// ul.pop-over-list
// each value in allowedSortValues
// li
// a.js-sort-by(name="{{value.name}}")
// if $eq sortby value.name
// i(class="fa {{Direction}}")
// | {{_ value.label }}{{_ value.shortLabel}}
// if $eq sortby value.name
// i(class="fa fa-check")
template(name="boardChangeTitlePopup")
form
label

View file

@ -1,3 +1,7 @@
/*
const DOWNCLS = 'fa-sort-down';
const UPCLS = 'fa-sort-up';
*/
Template.boardMenuPopup.events({
'click .js-rename-board': Popup.open('boardChangeTitle'),
'click .js-custom-fields'() {
@ -80,7 +84,27 @@ BlazeComponent.extendComponent({
const currentBoard = Boards.findOne(Session.get('currentBoard'));
return currentBoard && currentBoard.stars >= 2;
},
/*
showSort() {
return Meteor.user().hasSortBy();
},
directionClass() {
return this.currentDirection() === -1 ? DOWNCLS : UPCLS;
},
changeDirection() {
const direction = 0 - this.currentDirection() === -1 ? '-' : '';
Meteor.call('setListSortBy', direction + this.currentListSortBy());
},
currentDirection() {
return Meteor.user().getListSortByDirection();
},
currentListSortBy() {
return Meteor.user().getListSortBy();
},
listSortShortDesc() {
return `list-label-short-${this.currentListSortBy()}`;
},
*/
events() {
return [
{
@ -94,30 +118,25 @@ BlazeComponent.extendComponent({
'click .js-open-archived-board'() {
Modal.open('archivedBoards');
},
'click .js-toggle-board-view'() {
const currentUser = Meteor.user();
if (
(currentUser.profile || {}).boardView === 'board-view-swimlanes'
) {
currentUser.setBoardView('board-view-cal');
} else if (
(currentUser.profile || {}).boardView === 'board-view-lists'
) {
currentUser.setBoardView('board-view-swimlanes');
} else if (
(currentUser.profile || {}).boardView === 'board-view-cal'
) {
currentUser.setBoardView('board-view-lists');
} else {
currentUser.setBoardView('board-view-swimlanes');
}
},
'click .js-toggle-board-view': Popup.open('boardChangeView'),
'click .js-toggle-sidebar'() {
Sidebar.toggle();
},
'click .js-open-filter-view'() {
Sidebar.setView('filter');
},
/*
'click .js-open-sort-view'(evt) {
const target = evt.target;
if (target.tagName === 'I') {
// click on the text, popup choices
this.changeDirection();
} else {
// change the sort order
Popup.open('listsort')(evt);
}
},
*/
'click .js-filter-reset'(event) {
event.stopPropagation();
Sidebar.setView();
@ -126,9 +145,6 @@ BlazeComponent.extendComponent({
'click .js-open-search-view'() {
Sidebar.setView('search');
},
'click .js-open-rules-view'() {
Modal.openWide('rulesMain');
},
'click .js-multiselection-activate'() {
const currentCard = Session.get('currentCard');
MultiSelection.activate();
@ -156,6 +172,40 @@ Template.boardHeaderBar.helpers({
!Meteor.user().isCommentOnly()
);
},
boardView() {
return Utils.boardView();
},
//collapseSwimlane() {
// import { Cookies } from 'meteor/ostrio:cookies';
// const cookies = new Cookies();
// if (cookies.has('collapseSwimlane')) {
// return true;
// } else {
// return false;
// }
//},
});
Template.boardChangeViewPopup.events({
'click .js-open-lists-view'() {
Utils.setBoardView('board-view-lists');
Popup.close();
},
'click .js-open-swimlanes-view'() {
Utils.setBoardView('board-view-swimlanes');
Popup.close();
},
//'click .js-open-collapse-view'() {
// Utils.setBoardView('board-view-collapse');
//Popup.close();
'click .js-open-cal-view'() {
Utils.setBoardView('board-view-cal');
Popup.close();
},
'click .js-open-rules-view'() {
Modal.openWide('rulesMain');
Popup.close();
},
});
const CreateBoard = BlazeComponent.extendComponent({
@ -277,3 +327,75 @@ BlazeComponent.extendComponent({
];
},
}).register('boardChangeWatchPopup');
/*
BlazeComponent.extendComponent({
onCreated() {
//this.sortBy = new ReactiveVar();
////this.sortDirection = new ReactiveVar();
//this.setSortBy();
this.downClass = DOWNCLS;
this.upClass = UPCLS;
},
allowedSortValues() {
const types = [];
const pushed = {};
Meteor.user()
.getListSortTypes()
.forEach(type => {
const key = type.replace(/^-/, '');
if (pushed[key] === undefined) {
types.push({
name: key,
label: `list-label-${key}`,
shortLabel: `list-label-short-${key}`,
});
pushed[key] = 1;
}
});
return types;
},
Direction() {
return Meteor.user().getListSortByDirection() === -1
? this.downClass
: this.upClass;
},
sortby() {
return Meteor.user().getListSortBy();
},
setSortBy(type = null) {
const user = Meteor.user();
if (type === null) {
type = user._getListSortBy();
} else {
let value = '';
if (type.map) {
// is an array
value = (type[1] === -1 ? '-' : '') + type[0];
}
Meteor.call('setListSortBy', value);
}
//this.sortBy.set(type[0]);
//this.sortDirection.set(type[1]);
},
events() {
return [
{
'click .js-sort-by'(evt) {
evt.preventDefault();
const target = evt.target;
const sortby = target.getAttribute('name');
const down = !!target.querySelector(`.${this.upClass}`);
const direction = down ? -1 : 1;
this.setSortBy([sortby, direction]);
if (Utils.isMiniScreen) {
Popup.close();
}
},
},
];
},
}).register('listsortPopup');
*/

View file

@ -131,6 +131,8 @@ Template.previewClipboardImagePopup.onRendered(() => {
direct(results);
},
});
} else {
direct(results);
}
}
};

View file

@ -105,7 +105,7 @@ Template.dateBadge.helpers({
// editCardReceivedDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
super.onCreated(moment().format('YYYY-MM-DD HH:mm'));
this.data().getReceived() &&
this.date.set(moment(this.data().getReceived()));
}
@ -122,7 +122,7 @@ Template.dateBadge.helpers({
// editCardStartDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
super.onCreated(moment().format('YYYY-MM-DD HH:mm'));
this.data().getStart() && this.date.set(moment(this.data().getStart()));
}
@ -148,7 +148,7 @@ Template.dateBadge.helpers({
// editCardDueDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
super.onCreated('1970-01-01 17:00:00');
this.data().getDue() && this.date.set(moment(this.data().getDue()));
}
@ -171,7 +171,7 @@ Template.dateBadge.helpers({
// editCardEndDatePopup
(class extends DatePicker {
onCreated() {
super.onCreated();
super.onCreated(moment().format('YYYY-MM-DD HH:mm'));
this.data().getEnd() && this.date.set(moment(this.data().getEnd()));
}
@ -237,7 +237,7 @@ class CardReceivedDate extends CardDate {
const theDate = this.date.get();
// if dueAt, endAt and startAt exist & are > receivedAt, receivedAt doesn't need to be flagged
if (
(startAt && theDate.isAfter(dueAt)) ||
(startAt && theDate.isAfter(startAt)) ||
(endAt && theDate.isAfter(endAt)) ||
(dueAt && theDate.isAfter(dueAt))
)
@ -344,9 +344,9 @@ class CardEndDate extends CardDate {
let classes = 'end-date' + ' ';
const dueAt = this.data().getDue();
const theDate = this.date.get();
if (theDate.diff(dueAt, 'days') >= 2) classes += 'long-overdue';
else if (theDate.diff(dueAt, 'days') >= 0) classes += 'due';
else if (theDate.diff(dueAt, 'days') >= -2) classes += 'almost-due';
if (!dueAt) classes += '';
else if (theDate.isBefore(dueAt)) classes += 'current';
else if (theDate.isAfter(dueAt)) classes += 'due';
return classes;
}

View file

@ -4,9 +4,14 @@ template(name="cardDetails")
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
else
a.fa.fa-times-thin.close-card-details.js-close-card-details
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
unless isMiniScreen
a.fa.fa-times-thin.close-card-details.js-close-card-details
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
if isMiniScreen
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
+viewer
@ -73,6 +78,16 @@ template(name="cardDetails")
a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
i.fa.fa-plus
.card-details-item.card-details-item-assignees
h3.card-details-item-title {{_ 'assignee'}}
each getAssignees
+userAvatarAssignee(userId=this cardId=../_id)
| {{! XXX Hack to hide syntaxic coloration /// }}
if canModifyCard
unless assigneeSelected
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
i.fa.fa-plus
.card-details-item.card-details-item-labels
h3.card-details-item-title {{_ 'labels'}}
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
@ -296,6 +311,54 @@ template(name="cardMembersPopup")
if isCardMember
i.fa.fa-check
template(name="cardAssigneesPopup")
ul.pop-over-list.js-card-assignee-list
each board.activeMembers
li.item(class="{{#if isCardAssignee}}active{{/if}}")
a.name.js-select-assignee(href="#")
+userAvatar(userId=user._id)
span.full-name
= user.profile.fullname
| (<span class="username">{{ user.username }}</span>)
if isCardAssignee
i.fa.fa-check
template(name="userAvatarAssignee")
a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})")
if userData.profile.avatarUrl
img.avatar.avatar-image(src="{{userData.profile.avatarUrl}}")
else
+userAvatarAssigneeInitials(userId=userData._id)
if showStatus
span.assignee-presence-status(class=presenceStatusClassName)
span.member-type(class=memberType)
unless isSandstorm
if showEdit
if $eq currentUser._id userData._id
a.edit-avatar.js-change-avatar
i.fa.fa-pencil
template(name="cardAssigneePopup")
.board-assignee-menu
.mini-profile-info
+userAvatar(userId=user._id showEdit=true)
.info
h3= user.profile.fullname
p.quiet @{{ user.username }}
ul.pop-over-list
if currentUser.isNotCommentOnly
li: a.js-remove-assignee {{_ 'remove-member-from-card'}}
if $eq currentUser._id user._id
with currentUser
li: a.js-edit-profile {{_ 'edit-profile'}}
template(name="userAvatarAssigneeInitials")
svg.avatar.avatar-assignee-initials(viewBox="0 0 {{viewPortWidth}} 15")
text(x="50%" y="13" text-anchor="middle")= initials
template(name="cardMorePopup")
p.quiet
span.clearfix

View file

@ -121,11 +121,6 @@ BlazeComponent.extendComponent({
// Send Webhook but not create Activities records ---
const card = this.currentData();
const userId = Meteor.userId();
//console.log(`userId: ${userId}`);
//console.log(`cardId: ${card._id}`);
//console.log(`boardId: ${card.boardId}`);
//console.log(`listId: ${card.listId}`);
//console.log(`swimlaneId: ${card.swimlaneId}`);
const params = {
userId,
cardId: card._id,
@ -134,16 +129,25 @@ BlazeComponent.extendComponent({
user: Meteor.user().username,
url: '',
};
//console.log('looking for integrations...');
const integrations = Integrations.find({
boardId: card.boardId,
type: 'outgoing-webhooks',
boardId: { $in: [card.boardId, Integrations.Const.GLOBAL_WEBHOOK_ID] },
enabled: true,
activities: { $in: ['CardDetailsRendered', 'all'] },
}).fetch();
//console.log(`Investigation length: ${integrations.length}`);
if (integrations.length > 0) {
Meteor.call('outgoingWebhooks', integrations, 'CardSelected', params);
integrations.forEach(integration => {
Meteor.call(
'outgoingWebhooks',
integration,
'CardSelected',
params,
() => {
return;
},
);
});
}
//-------------
}
@ -309,6 +313,8 @@ BlazeComponent.extendComponent({
},
'click .js-member': Popup.open('cardMember'),
'click .js-add-members': Popup.open('cardMembers'),
'click .js-assignee': Popup.open('cardAssignee'),
'click .js-add-assignees': Popup.open('cardAssignees'),
'click .js-add-labels': Popup.open('cardLabels'),
'click .js-received-date': Popup.open('editCardReceivedDate'),
'click .js-start-date': Popup.open('editCardStartDate'),
@ -321,6 +327,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');
},
@ -329,6 +348,58 @@ BlazeComponent.extendComponent({
},
}).register('cardDetails');
Template.cardDetails.helpers({
userData() {
// We need to handle a special case for the search results provided by the
// `matteodem:easy-search` package. Since these results gets published in a
// separate collection, and not in the standard Meteor.Users collection as
// expected, we use a component parameter ("property") to distinguish the
// two cases.
const userCollection = this.esSearch ? ESSearchResults : Users;
return userCollection.findOne(this.userId, {
fields: {
profile: 1,
username: 1,
},
});
},
assigneeSelected() {
if (this.getAssignees().length === 0) {
return false;
} else {
return true;
}
},
memberType() {
const user = Users.findOne(this.userId);
return user && user.isBoardAdmin() ? 'admin' : 'normal';
},
presenceStatusClassName() {
const user = Users.findOne(this.userId);
const userPresence = presences.findOne({ userId: this.userId });
if (user && user.isInvitedTo(Session.get('currentBoard'))) return 'pending';
else if (!userPresence) return 'disconnected';
else if (Session.equals('currentBoard', userPresence.state.currentBoardId))
return 'active';
else return 'idle';
},
});
Template.userAvatarAssigneeInitials.helpers({
initials() {
const user = Users.findOne(this.userId);
return user && user.getInitials();
},
viewPortWidth() {
const user = Users.findOne(this.userId);
return ((user && user.getInitials().length) || 1) * 12;
},
});
// We extends the normal InlinedForm component to support UnsavedEdits draft
// feature.
(class extends InlinedForm {
@ -386,6 +457,7 @@ Template.cardDetailsActionsPopup.helpers({
Template.cardDetailsActionsPopup.events({
'click .js-members': Popup.open('cardMembers'),
'click .js-assignees': Popup.open('cardAssignees'),
'click .js-labels': Popup.open('cardLabels'),
'click .js-attachments': Popup.open('cardAttachments'),
'click .js-custom-fields': Popup.open('cardCustomFields'),
@ -777,7 +849,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);
@ -786,3 +865,76 @@ EscapeActions.register(
noClickEscapeOn: '.js-card-details,.board-sidebar,#header',
},
);
Template.cardAssigneesPopup.events({
'click .js-select-assignee'(event) {
const card = Cards.findOne(Session.get('currentCard'));
const assigneeId = this.userId;
card.toggleAssignee(assigneeId);
event.preventDefault();
},
});
Template.cardAssigneesPopup.helpers({
isCardAssignee() {
const card = Template.parentData();
const cardAssignees = card.getAssignees();
return _.contains(cardAssignees, this.userId);
},
user() {
return Users.findOne(this.userId);
},
});
Template.cardAssigneePopup.helpers({
userData() {
// We need to handle a special case for the search results provided by the
// `matteodem:easy-search` package. Since these results gets published in a
// separate collection, and not in the standard Meteor.Users collection as
// expected, we use a component parameter ("property") to distinguish the
// two cases.
const userCollection = this.esSearch ? ESSearchResults : Users;
return userCollection.findOne(this.userId, {
fields: {
profile: 1,
username: 1,
},
});
},
memberType() {
const user = Users.findOne(this.userId);
return user && user.isBoardAdmin() ? 'admin' : 'normal';
},
presenceStatusClassName() {
const user = Users.findOne(this.userId);
const userPresence = presences.findOne({ userId: this.userId });
if (user && user.isInvitedTo(Session.get('currentBoard'))) return 'pending';
else if (!userPresence) return 'disconnected';
else if (Session.equals('currentBoard', userPresence.state.currentBoardId))
return 'active';
else return 'idle';
},
isCardAssignee() {
const card = Template.parentData();
const cardAssignees = card.getAssignees();
return _.contains(cardAssignees, this.userId);
},
user() {
return Users.findOne(this.userId);
},
});
Template.cardAssigneePopup.events({
'click .js-remove-assignee'() {
Cards.findOne(this.cardId).unassignAssignee(this.userId);
Popup.close();
},
'click .js-edit-profile': Popup.open('editProfile'),
});

View file

@ -1,5 +1,80 @@
@import 'nib'
// Assignee, code copied from wekan/client/users/userAvatar.styl
avatar-radius = 50%
.assignee
border-radius: 3px
display: block
position: relative
float: left
height: 30px
width: @height
margin: 0 4px 4px 0
cursor: pointer
user-select: none
z-index: 1
text-decoration: none
border-radius: avatar-radius
.avatar
overflow: hidden
border-radius: avatar-radius
&.avatar-assignee-initials
height: 70%
width: @height
padding: 15%
background-color: #dbdbdb
color: #444444
position: absolute
&.avatar-image
height: 100%
width: @height
.assignee-presence-status
background-color: #b3b3b3
border: 1px solid #fff
border-radius: 50%
height: 7px
width: @height
position: absolute
right: -1px
bottom: -1px
border: 1px solid white
z-index: 15
&.active
background: #64c464
border-color: #daf1da
&.idle
background: #e4e467
border-color: #f7f7d4
&.disconnected
background: #bdbdbd
border-color: #ededed
&.pending
background: #e44242
border-color: #f1dada
&.add-assignee
display: flex
align-items: center
justify-content: center
box-shadow: 0 0 0 2px darken(white, 25%) inset
&:hover, &.is-active
box-shadow: 0 0 0 2px darken(white, 60%) inset
// Other card details
.card-details
padding: 0
flex-shrink: 0
@ -32,7 +107,9 @@
border-bottom: 1px solid darken(white, 14%)
.close-card-details,
.card-details-menu
.card-details-menu,
.close-card-details-mobile-web,
.card-details-menu-mobile-web
float: right
.close-card-details
@ -40,10 +117,20 @@
padding: 5px
margin-right: -8px
.close-card-details-mobile-web
font-size: 24px
padding: 5px
margin-right: 40px
.card-details-menu
font-size: 17px
padding: 10px
.card-details-menu-mobile-web
font-size: 17px
padding: 10px
margin-right: 30px
.card-details-watch
font-size: 17px
padding-left: 7px
@ -93,6 +180,7 @@
margin-right: 0
&.card-details-item-labels,
&.card-details-item-members,
&.card-details-item-assignees,
&.card-details-item-received,
&.card-details-item-start,
&.card-details-item-due,

View file

@ -3,6 +3,13 @@ template(name="minicard")
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="minicard-{{colorClass}}")
if isMiniScreen
.handle
.fa.fa-arrows
unless isMiniScreen
if showDesktopDragHandles
.handle
.fa.fa-arrows
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
if labels
@ -15,8 +22,6 @@ template(name="minicard")
if hiddenMinicardLabelText
.minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title
.handle
.fa.fa-arrows
if $eq 'prefix-with-full-path' currentBoard.presentParentTask
.parent-prefix
| {{ parentString ' > ' }}
@ -53,6 +58,8 @@ template(name="minicard")
if getDue
.date
+minicardDueDate
if getEnd
+minicardEndDate
if getSpentTime
.date
+cardSpentTime
@ -69,6 +76,12 @@ template(name="minicard")
+viewer
= trueValue
if getAssignees
.minicard-assignees.js-minicard-assignees
each getAssignees
+userAvatar(userId=this)
hr
if getMembers
.minicard-members.js-minicard-members
each getMembers

View file

@ -18,7 +18,13 @@ BlazeComponent.extendComponent({
},
{
'click .js-toggle-minicard-label-text'() {
Meteor.call('toggleMinicardLabelText');
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hiddenMinicardLabelText')) {
cookies.remove('hiddenMinicardLabelText'); //true
} else {
cookies.set('hiddenMinicardLabelText', 'true'); //true
}
},
},
];
@ -26,7 +32,32 @@ BlazeComponent.extendComponent({
}).register('minicard');
Template.minicard.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
hiddenMinicardLabelText() {
return Meteor.user().hasHiddenMinicardLabelText();
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hiddenMinicardLabelText;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hiddenMinicardLabelText')) {
return true;
} else {
return false;
}
}
},
});

View file

@ -105,7 +105,7 @@
right: 5px;
top: 5px;
display:none;
@media only screen and (max-width: 1199px) {
@media only screen {
display:block;
}
.fa-arrows
@ -160,9 +160,10 @@
padding-left: 0px
line-height: 12px
.minicard-members
.minicard-members,
.minicard-assignees
float: right
margin: 2px -8px -2px 0
margin: 2px -8px 12px 0
.member
float: right
@ -170,10 +171,17 @@
height: 28px
width: @height
.assignee
float: right
border-radius: 50%
height: 28px
width: @height
+ .badges
margin-top: 10px
.minicard-members:empty
.minicard-members:empty,
.minicard-assignees:empty
display: none
&.minicard-composer

View file

@ -22,21 +22,15 @@ BlazeComponent.extendComponent({
function userIsMember() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
Meteor.user()
&& Meteor.user().isBoardMember()
&& !Meteor.user().isCommentOnly()
);
}
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
if (window.matchMedia('(max-width: 1199px)').matches) {
$('.js-minicards').sortable({
handle: '.handle',
});
}
$cards.sortable({
connectWith: '.js-minicards:not(.js-list-full)',
tolerance: 'pointer',
@ -79,16 +73,15 @@ BlazeComponent.extendComponent({
const listId = Blaze.getData(ui.item.parents('.list').get(0))._id;
const currentBoard = Boards.findOne(Session.get('currentBoard'));
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (
boardView === 'board-view-swimlanes' ||
currentBoard.isTemplatesBoard()
Utils.boardView() === 'board-view-swimlanes'
|| currentBoard.isTemplatesBoard()
)
swimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))._id;
else if (
boardView === 'board-view-lists' ||
boardView === 'board-view-cal' ||
!boardView
Utils.boardView() === 'board-view-lists'
|| Utils.boardView() === 'board-view-cal'
|| !Utils.boardView
)
swimlaneId = currentBoard.getDefaultSwimline()._id;
@ -122,8 +115,32 @@ BlazeComponent.extendComponent({
// ugly touch event hotfix
enableClickOnTouch(itemsSelector);
// Disable drag-dropping if the current user is not a board member or is comment only
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
this.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else if (cookies.has('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
if (!Utils.isMiniScreen() && showDesktopDragHandles) {
$cards.sortable({
handle: '.handle',
});
} else {
$cards.sortable({
handle: '.minicard',
});
}
// Disable drag-dropping if the current user is not a board member or is comment only
$cards.sortable('option', 'disabled', !userIsMember());
});
@ -155,6 +172,23 @@ BlazeComponent.extendComponent({
},
}).register('list');
Template.list.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
});
Template.miniList.events({
'click .js-select-list'() {
const listId = this._id;

View file

@ -84,17 +84,16 @@
padding-left: 10px
color: #a6a6a6
.list-header-menu
position: absolute
padding: 27px 19px
margin-top: 1px
top: -7px
right: -7px
right: 3px
.list-header-plus-icon
color: #a6a6a6
margin-right: 10px
margin-right: 15px
.highlight
color: #ce1414
@ -165,7 +164,16 @@
@media screen and (max-width: 800px)
.list-header-menu
margin-right: 30px
position: absolute
padding: 27px 19px
margin-top: 1px
top: -7px
margin-right: 7px
right: -3px
.list-header
.list-header-name
margin-left: 1.4rem
.mini-list
flex: 0 0 60px
@ -221,9 +229,17 @@
padding: 7px
top: 50%
transform: translateY(-50%)
right: 17px
right: 47px
font-size: 20px
.list-header-handle
position: absolute
padding: 7px
top: 50%
transform: translateY(-50%)
right: 10px
font-size: 24px
.link-board-wrapper
display: flex
align-items: baseline

View file

@ -48,7 +48,6 @@ BlazeComponent.extendComponent({
const board = this.data().board();
let linkedId = '';
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
let cardType = 'cardType-card';
if (title) {
if (board.isTemplatesBoard()) {
@ -71,14 +70,14 @@ BlazeComponent.extendComponent({
});
cardType = 'cardType-linkedBoard';
}
} else if (boardView === 'board-view-swimlanes')
} else if (Utils.boardView() === 'board-view-swimlanes')
swimlaneId = this.parentComponent()
.parentComponent()
.data()._id;
else if (
boardView === 'board-view-lists' ||
boardView === 'board-view-cal' ||
!boardView
Utils.boardView() === 'board-view-lists' ||
Utils.boardView() === 'board-view-cal' ||
!Utils.boardView
)
swimlaneId = board.getDefaultSwimline()._id;
@ -157,9 +156,8 @@ BlazeComponent.extendComponent({
},
idOrNull(swimlaneId) {
const currentUser = Meteor.user();
if (
(currentUser.profile || {}).boardView === 'board-view-swimlanes' ||
Utils.boardView() === 'board-view-swimlanes' ||
this.data()
.board()
.isTemplatesBoard()
@ -397,10 +395,9 @@ BlazeComponent.extendComponent({
'.js-swimlane',
);
this.swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
if (Utils.boardView() === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else if (boardView === 'board-view-lists' || !boardView)
else if (Utils.boardView() === 'board-view-lists' || !Utils.boardView)
this.swimlaneId = Swimlanes.findOne({ boardId: this.boardId })._id;
},
@ -580,7 +577,7 @@ BlazeComponent.extendComponent({
const swimlane = $(Popup._getTopStack().openerElement).parents(
'.js-swimlane',
);
if ((Meteor.user().profile || {}).boardView === 'board-view-swimlanes')
if (Utils.boardView() === 'board-view-swimlanes')
this.swimlaneId = Blaze.getData(swimlane[0])._id;
else this.swimlaneId = Swimlanes.findOne({ boardId: this.boardId })._id;
// List where to insert card
@ -701,15 +698,26 @@ BlazeComponent.extendComponent({
this.listId = this.parentComponent().data()._id;
this.swimlaneId = '';
let user = Meteor.user();
if (user) {
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes') {
this.swimlaneId = this.parentComponent()
.parentComponent()
.parentComponent()
.data()._id;
const isSandstorm =
Meteor.settings &&
Meteor.settings.public &&
Meteor.settings.public.sandstorm;
if (isSandstorm) {
const user = Meteor.user();
if (user) {
if (Utils.boardView() === 'board-view-swimlanes') {
this.swimlaneId = this.parentComponent()
.parentComponent()
.parentComponent()
.data()._id;
}
}
} else if (Utils.boardView() === 'board-view-swimlanes') {
this.swimlaneId = this.parentComponent()
.parentComponent()
.parentComponent()
.data()._id;
}
},

View file

@ -9,6 +9,7 @@ template(name="listHeader")
if currentList
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
h2.list-header-name(
title="{{ moment modifiedAt 'LLL' }}"
class="{{#if currentUser.isBoardMember}}{{#unless currentUser.isCommentOnly}}js-open-inlined-form is-editable{{/unless}}{{/if}}")
+viewer
= title
@ -29,16 +30,22 @@ template(name="listHeader")
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-icon
a.fa.fa-navicon.js-open-list-menu
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
else
a.list-header-menu-icon.fa.fa-angle-right.js-select-list
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
else if currentUser.isBoardMember
if isWatching
i.list-header-watch-icon.fa.fa-eye
div.list-header-menu
unless currentUser.isCommentOnly
//if isBoardAdmin
// a.fa.js-list-star.list-header-plus-icon(class="fa-star{{#unless starred}}-o{{/unless}}")
if canSeeAddCard
a.js-add-card.fa.fa-plus.list-header-plus-icon
a.fa.fa-navicon.js-open-list-menu
if showDesktopDragHandles
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
template(name="editListTitleForm")
.list-composer

View file

@ -7,12 +7,26 @@ BlazeComponent.extendComponent({
canSeeAddCard() {
const list = Template.currentData();
return (
!list.getWipLimit('enabled') ||
list.getWipLimit('soft') ||
!this.reachedWipLimit()
!list.getWipLimit('enabled')
|| list.getWipLimit('soft')
|| !this.reachedWipLimit()
);
},
isBoardAdmin() {
return Meteor.user().isBoardAdmin();
},
starred(check = undefined) {
const list = Template.currentData();
const status = list.isStarred();
if (check === undefined) {
// just check
return status;
} else {
list.star(!status);
return !status;
}
},
editTitle(event) {
event.preventDefault();
const newTitle = this.childComponents('inlinedForm')[0]
@ -30,14 +44,18 @@ BlazeComponent.extendComponent({
},
limitToShowCardsCount() {
return Meteor.user().getLimitToShowCardsCount();
const currentUser = Meteor.user();
if (currentUser) {
return Meteor.user().getLimitToShowCardsCount();
} else {
return false;
}
},
cardsCount() {
const list = Template.currentData();
let swimlaneId = '';
const boardView = (Meteor.user().profile || {}).boardView;
if (boardView === 'board-view-swimlanes')
if (Utils.boardView() === 'board-view-swimlanes')
swimlaneId = this.parentComponent()
.parentComponent()
.data()._id;
@ -48,8 +66,8 @@ BlazeComponent.extendComponent({
reachedWipLimit() {
const list = Template.currentData();
return (
list.getWipLimit('enabled') &&
list.getWipLimit('value') <= list.cards().count()
list.getWipLimit('enabled')
&& list.getWipLimit('value') <= list.cards().count()
);
},
@ -61,6 +79,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
'click .js-list-star'(event) {
event.preventDefault();
this.starred(!this.starred());
},
'click .js-open-list-menu': Popup.open('listAction'),
'click .js-add-card'(event) {
const listDom = $(event.target).parents(
@ -80,6 +102,23 @@ BlazeComponent.extendComponent({
},
}).register('listHeader');
Template.listHeader.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
});
Template.listActionPopup.helpers({
isWipLimitEnabled() {
return Template.currentData().getWipLimit('enabled');
@ -138,8 +177,8 @@ BlazeComponent.extendComponent({
const list = Template.currentData();
if (
list.getWipLimit('soft') &&
list.getWipLimit('value') < list.cards().count()
list.getWipLimit('soft')
&& list.getWipLimit('value') < list.cards().count()
) {
list.setWipLimit(list.cards().count());
}
@ -150,8 +189,8 @@ BlazeComponent.extendComponent({
const list = Template.currentData();
// Prevent user from using previously stored wipLimit.value if it is less than the current number of cards in the list
if (
!list.getWipLimit('enabled') &&
list.getWipLimit('value') < list.cards().count()
!list.getWipLimit('enabled')
&& list.getWipLimit('value') < list.cards().count()
) {
list.setWipLimit(list.cards().count());
}

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;

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

View file

@ -130,7 +130,8 @@ $popupWidth = 300px
.popup-container-depth-{depth}
transform: translateX(- depth * $popupWidth)
.select-members-list
.select-members-list,
.select-avatars-list
margin-bottom: 8px
.pop-over-list
@ -230,7 +231,8 @@ $popupWidth = 300px
min-height: 56px
position: relative
.member
.member,
.avatar
position: absolute
top: 2px
left: 2px

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() {

View file

@ -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

View file

@ -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);
}
},

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

View file

@ -1,6 +1,8 @@
Sidebar = null;
const defaultView = 'home';
const MCB = '.materialCheckBox';
const CKCLS = 'is-checked';
const viewTitles = {
filter: 'filter-cards',
@ -105,7 +107,18 @@ BlazeComponent.extendComponent({
'click .js-toggle-sidebar': this.toggle,
'click .js-back-home': this.setView,
'click .js-toggle-minicard-label-text'() {
Meteor.call('toggleMinicardLabelText');
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleMinicardLabelText');
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hiddenMinicardLabelText')) {
cookies.remove('hiddenMinicardLabelText');
} else {
cookies.set('hiddenMinicardLabelText', 'true');
}
}
},
'click .js-shortcuts'() {
FlowRouter.go('shortcuts');
@ -119,7 +132,18 @@ Blaze.registerHelper('Sidebar', () => Sidebar);
Template.homeSidebar.helpers({
hiddenMinicardLabelText() {
return Meteor.user().hasHiddenMinicardLabelText();
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hiddenMinicardLabelText;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hiddenMinicardLabelText')) {
return true;
} else {
return false;
}
}
},
});
@ -280,44 +304,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 +525,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 +566,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();
},

View file

@ -4,6 +4,10 @@
and #each x in y constructors to fix this.
template(name="filterSidebar")
ul.sidebar-list
span {{_ 'list-filter-label'}}
form.js-list-filter
input(type="text")
ul.sidebar-list
li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
a.name.js-toggle-label-filter

View file

@ -4,6 +4,10 @@ BlazeComponent.extendComponent({
events() {
return [
{
'submit .js-list-filter'(evt) {
evt.preventDefault();
Filter.lists.set(this.find('.js-list-filter input').value.trim());
},
'click .js-toggle-label-filter'(evt) {
evt.preventDefault();
Filter.labelIds.toggle(this.currentData()._id);

View file

@ -2,6 +2,10 @@ template(name="searchSidebar")
form.js-search-term-form
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
.list-body.js-perfect-scrollbar
.minilists.clearfix.js-minilists
each (lists)
a.minilist-wrapper.js-minilist(href=absoluteUrl)
+minilist(this)
.minicards.clearfix.js-minicards
each (results)
a.minicard-wrapper.js-minicard(href=absoluteUrl)

View file

@ -8,6 +8,11 @@ BlazeComponent.extendComponent({
return currentBoard.searchCards(this.term.get());
},
lists() {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
return currentBoard.searchLists(this.term.get());
},
events() {
return [
{

View file

@ -16,6 +16,11 @@ template(name="swimlaneFixedHeader")
unless currentUser.isCommentOnly
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
a.fa.fa-navicon.js-open-swimlane-menu
unless isMiniScreen
if showDesktopDragHandles
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle
if isMiniScreen
a.swimlane-header-miniscreen-handle.handle.fa.fa-arrows.js-swimlane-header-handle
template(name="editSwimlaneTitleForm")
.list-composer

View file

@ -28,6 +28,23 @@ BlazeComponent.extendComponent({
},
}).register('swimlaneHeader');
Template.swimlaneHeader.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
});
Template.swimlaneActionPopup.events({
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-close-swimlane'(event) {

View file

@ -1,24 +1,47 @@
template(name="swimlane")
.swimlane
+swimlaneHeader
.swimlane.js-lists.js-swimlane
if isMiniScreen
if currentListIsInThisSwimlane _id
+list(currentList)
unless currentList
unless collapseSwimlane
.swimlane.js-lists.js-swimlane
if isMiniScreen
if currentListIsInThisSwimlane _id
+list(currentList)
unless currentList
each lists
+miniList(this)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
else
each lists
+miniList(this)
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
else
each lists
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
//if collapseSwimlane
// // Minimize swimlanes next 2 lines below https://www.w3schools.com/howto/howto_js_accordion.asp
// button(class="accordion")
// div(class="panel")
// .swimlane.js-lists.js-swimlane
// if isMiniScreen
// if currentListIsInThisSwimlane _id
// +list(currentList)
// unless currentList
// each lists
// +miniList(this)
// if currentUser.isBoardMember
// unless currentUser.isCommentOnly
// +addListForm
// else
// each lists
// +list(this)
// if currentCardIsInThisList _id ../_id
// +cardDetails(currentCard)
// if currentUser.isBoardMember
// unless currentUser.isCommentOnly
// +addListForm
template(name="listsGroup")
.swimlane.list-group.js-lists
@ -42,7 +65,7 @@ template(name="listsGroup")
+addListForm
template(name="addListForm")
.list.list-composer.js-list-composer
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
.list-header-add
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"

View file

@ -3,8 +3,8 @@ const { calculateIndex, enableClickOnTouch } = Utils;
function currentListIsInThisSwimlane(swimlaneId) {
const currentList = Lists.findOne(Session.get('currentList'));
return (
currentList &&
(currentList.swimlaneId === swimlaneId || currentList.swimlaneId === '')
currentList
&& (currentList.swimlaneId === swimlaneId || currentList.swimlaneId === '')
);
}
@ -12,14 +12,14 @@ function currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentUser = Meteor.user();
if (
currentUser &&
currentUser.profile &&
currentUser.profile.boardView === 'board-view-swimlanes'
currentUser
&& currentUser.profile
&& Utils.boardView() === 'board-view-swimlanes'
)
return (
currentCard &&
currentCard.listId === listId &&
currentCard.swimlaneId === swimlaneId
currentCard
&& currentCard.listId === listId
&& currentCard.swimlaneId === swimlaneId
);
// Default view: board-view-lists
else return currentCard && currentCard.listId === listId;
@ -56,7 +56,6 @@ function initSortable(boardComponent, $listsDom) {
$listsDom.sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.js-list-header',
items: '.js-list:not(.js-list-composer)',
placeholder: 'list placeholder',
distance: 7,
@ -91,21 +90,47 @@ function initSortable(boardComponent, $listsDom) {
function userIsMember() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
Meteor.user()
&& Meteor.user().isBoardMember()
&& !Meteor.user().isCommentOnly()
);
}
// Disable drag-dropping while in multi-selection mode, or if the current user
// is not a board member
boardComponent.autorun(() => {
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
}
if (!Utils.isMiniScreen() && showDesktopDragHandles) {
$listsDom.sortable({
handle: '.js-list-handle',
});
} else {
$listsDom.sortable({
handle: '.js-list-header',
});
}
const $listDom = $listsDom;
if ($listDom.data('sortable')) {
$listsDom.sortable(
'option',
'disabled',
MultiSelection.isActive() || !userIsMember(),
// Disable drag-dropping when user is not member
!userIsMember(),
// Not disable drag-dropping while in multi-selection mode
// MultiSelection.isActive() || !userIsMember(),
);
}
});
@ -121,6 +146,26 @@ BlazeComponent.extendComponent({
}
initSortable(boardComponent, $listsDom);
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('collapseSwimlane')) {
// Minimize swimlanes start https://www.w3schools.com/howto/howto_js_accordion.asp
const acc = document.getElementsByClassName('accordion');
let i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener('click', function() {
this.classList.toggle('active');
const panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = `${panel.scrollHeight}px`;
}
});
}
// Minimize swimlanes end https://www.w3schools.com/howto/howto_js_accordion.asp
}
},
onCreated() {
this.draggingActive = new ReactiveVar(false);
@ -151,16 +196,32 @@ BlazeComponent.extendComponent({
// define a list of elements in which we disable the dragging because
// the user will legitimately expect to be able to select some text with
// his mouse.
const noDragInside = [
'a',
'input',
'textarea',
'p',
'.js-list-header',
];
let showDesktopDragHandles = false;
currentUser = Meteor.user();
if (currentUser) {
showDesktopDragHandles = (currentUser.profile || {})
.showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
showDesktopDragHandles = true;
} else {
showDesktopDragHandles = false;
}
}
const noDragInside = ['a', 'input', 'textarea', 'p'].concat(
Utils.isMiniScreen()
|| (!Utils.isMiniScreen() && showDesktopDragHandles)
? ['.js-list-handle', '.js-swimlane-header-handle']
: ['.js-list-header'],
);
if (
$(evt.target).closest(noDragInside.join(',')).length === 0 &&
this.$('.swimlane').prop('clientHeight') > evt.offsetY
$(evt.target).closest(noDragInside.join(',')).length === 0
&& this.$('.swimlane').prop('clientHeight') > evt.offsetY
) {
this._isDragging = true;
this._lastDragPositionX = evt.clientX;
@ -194,8 +255,8 @@ BlazeComponent.extendComponent({
onCreated() {
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
this.isListTemplatesSwimlane =
this.currentBoard.isTemplatesBoard() &&
this.currentData().isListTemplatesSwimlane();
this.currentBoard.isTemplatesBoard()
&& this.currentData().isListTemplatesSwimlane();
this.currentSwimlane = this.currentData();
},
@ -233,11 +294,25 @@ BlazeComponent.extendComponent({
}).register('addListForm');
Template.swimlane.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
canSeeAddList() {
return (
Meteor.user() &&
Meteor.user().isBoardMember() &&
!Meteor.user().isCommentOnly()
Meteor.user()
&& Meteor.user().isBoardMember()
&& !Meteor.user().isCommentOnly()
);
},
});
@ -253,6 +328,11 @@ BlazeComponent.extendComponent({
return false;
}
}
if (Filter.lists._isActive()) {
if (!list.title.match(Filter.lists.getRegexSelector())) {
return false;
}
}
if (Filter.hideEmpty.isSelected()) {
const swimlaneId = this.parentComponent()
.parentComponent()

View file

@ -1,5 +1,41 @@
@import 'nib'
/*
// Minimize swimlanes start https://www.w3schools.com/howto/howto_js_accordion.asp
.accordion
cursor: pointer
width: 30px
height: 20px
border: none
outline: none
font-size: 18px
transition: 0.4s
padding-top: 0px
margin-top: 0px
.accordion:after
// Unicode triagle right:
content: '\25B6'
color: #777
font-weight: bold
float: left
.active:after
// Unicode triangle down:
content: '\25BC'
.panel
width: 100%
max-height: 0
overflow: hidden
transition: max-height 0.2s ease-out
margin: 0px
padding: 0px
// Minimize swimlanes end https://www.w3schools.com/howto/howto_js_accordion.asp
*/
.swimlane
// Even if this background color is the same as the body we can't leave it
// transparent, because that won't work during a swimlane drag.
@ -25,22 +61,22 @@
cursor: grabbing
.swimlane-header-wrap
display: flex;
flex-direction: row;
flex: 1 0 100%;
background-color: #ccc;
display: flex
flex-direction: row
flex: 1 0 100%
background-color: #ccc
.swimlane-header
font-size: 14px;
font-size: 14px
padding: 5px 5px
font-weight: bold;
min-height: 9px;
width: 100%;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
word-wrap: break-word;
text-align: center;
font-weight: bold
min-height: 9px
width: 100%
overflow: hidden
-o-text-overflow: ellipsis
text-overflow: ellipsis
word-wrap: break-word
text-align: center
.swimlane-header-menu
position: absolute
@ -50,6 +86,22 @@
margin-left: 5px
margin-right: 10px
.swimlane-header-handle
position: absolute
padding: 7px
top: 50%
transform: translateY(-50%)
left: 230px
font-size: 18px
.swimlane-header-miniscreen-handle
position: absolute
padding: 7px
top: 50%
transform: translateY(-50%)
left: 87vw
font-size: 24px
.list-group
height: 100%

View file

@ -78,6 +78,11 @@ template(name="changeSettingsPopup")
| {{_ 'hide-system-messages'}}
if hiddenSystemMessages
i.fa.fa-check
li
a.js-toggle-desktop-drag-handles
| {{_ 'show-desktop-drag-handles'}}
if showDesktopDragHandles
i.fa.fa-check
li
label.bold
| {{_ 'show-cards-minimum-count'}}

View file

@ -5,10 +5,22 @@ Template.headerUserBar.events({
Template.memberMenuPopup.helpers({
templatesBoardId() {
return Meteor.user().getTemplatesBoardId();
currentUser = Meteor.user();
if (currentUser) {
return Meteor.user().getTemplatesBoardId();
} else {
// No need to getTemplatesBoardId on public board
return false;
}
},
templatesBoardSlug() {
return Meteor.user().getTemplatesBoardSlug();
currentUser = Meteor.user();
if (currentUser) {
return Meteor.user().getTemplatesBoardSlug();
} else {
// No need to getTemplatesBoardSlug() on public board
return false;
}
},
});
@ -161,17 +173,74 @@ Template.changeLanguagePopup.events({
});
Template.changeSettingsPopup.helpers({
showDesktopDragHandles() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).showDesktopDragHandles;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
return true;
} else {
return false;
}
}
},
hiddenSystemMessages() {
return Meteor.user().hasHiddenSystemMessages();
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).hasHiddenSystemMessages;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hasHiddenSystemMessages')) {
return true;
} else {
return false;
}
}
},
showCardsCountAt() {
return Meteor.user().getLimitToShowCardsCount();
currentUser = Meteor.user();
if (currentUser) {
return Meteor.user().getLimitToShowCardsCount();
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
return cookies.get('limitToShowCardsCount');
}
},
});
Template.changeSettingsPopup.events({
'click .js-toggle-desktop-drag-handles'() {
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleDesktopDragHandles');
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('showDesktopDragHandles')) {
cookies.remove('showDesktopDragHandles');
} else {
cookies.set('showDesktopDragHandles', 'true');
}
}
},
'click .js-toggle-system-messages'() {
Meteor.call('toggleSystemMessages');
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('toggleSystemMessages');
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.has('hasHiddenSystemMessages')) {
cookies.remove('hasHiddenSystemMessages');
} else {
cookies.set('hasHiddenSystemMessages', 'true');
}
}
},
'click .js-apply-show-cards-at'(event, templateInstance) {
event.preventDefault();
@ -180,7 +249,14 @@ Template.changeSettingsPopup.events({
10,
);
if (!isNaN(minLimit)) {
Meteor.call('changeLimitToShowCardsCount', minLimit);
currentUser = Meteor.user();
if (currentUser) {
Meteor.call('changeLimitToShowCardsCount', minLimit);
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
cookies.set('limitToShowCardsCount', minLimit);
}
Popup.back();
}
},

View file

@ -3,10 +3,11 @@ DatePicker = BlazeComponent.extendComponent({
return 'datepicker';
},
onCreated() {
onCreated(defaultTime = '1970-01-01 08:00:00') {
this.error = new ReactiveVar('');
this.card = this.data();
this.date = new ReactiveVar(moment.invalid());
this.defaultTime = defaultTime;
},
onRendered() {
@ -21,7 +22,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 : this.defaultTime,
); // default to 8:00 am local time
timeInput.value = defaultMoment.format('LT');
}
}.bind(this),
);

View file

@ -439,6 +439,14 @@ class AdvancedFilter {
const commands = this._filterToCommands();
return this._arrayToSelector(commands);
}
getRegexSelector() {
// generate a regex for filter list
this._dep.depend();
return new RegExp(
`^.*${this._filter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}.*$`,
'i',
);
}
}
// The global Filter object.
@ -455,6 +463,7 @@ Filter = {
hideEmpty: new SetFilter(),
customFields: new SetFilter('_id'),
advanced: new AdvancedFilter(),
lists: new AdvancedFilter(), // we need the ability to filter list by name as well
_fields: ['labelIds', 'members', 'archive', 'hideEmpty', 'customFields'],
@ -468,7 +477,9 @@ Filter = {
return (
_.any(this._fields, fieldName => {
return this[fieldName]._isActive();
}) || this.advanced._isActive()
}) ||
this.advanced._isActive() ||
this.lists._isActive()
);
},
@ -533,6 +544,7 @@ Filter = {
const filter = this[fieldName];
filter.reset();
});
this.lists.reset();
this.advanced.reset();
this.resetExceptions();
},

View file

@ -45,6 +45,7 @@ $.fn.escapeableTextComplete = function(strategies, options, ...otherArgs) {
});
},
});
return this;
};
EscapeActions.register('textcomplete', () => {}, () => dropdownMenuIsOpened, {

View file

@ -1,10 +1,59 @@
Utils = {
setBoardView(view) {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
currentUser = Meteor.user();
if (currentUser) {
Meteor.user().setBoardView(view);
} else if (view === 'board-view-lists') {
cookies.set('boardView', 'board-view-lists'); //true
} else if (view === 'board-view-swimlanes') {
cookies.set('boardView', 'board-view-swimlanes'); //true
//} else if (view === 'board-view-collapse') {
// cookies.set('boardView', 'board-view-swimlane'); //true
// cookies.set('collapseSwimlane', 'true'); //true
} else if (view === 'board-view-cal') {
cookies.set('boardView', 'board-view-cal'); //true
}
},
unsetBoardView() {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
cookies.remove('boardView');
cookies.remove('collapseSwimlane');
},
boardView() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).boardView;
} else {
import { Cookies } from 'meteor/ostrio:cookies';
const cookies = new Cookies();
if (cookies.get('boardView') === 'board-view-lists') {
return 'board-view-lists';
} else if (
cookies.get('boardView') === 'board-view-swimlanes'
//&& !cookies.has('collapseSwimlane')
) {
return 'board-view-swimlanes';
//} else if (cookies.has('collapseSwimlane')) {
// return 'board-view-swimlanes';
} else if (cookies.get('boardView') === 'board-view-cal') {
return 'board-view-cal';
} else {
return false;
}
}
},
// XXX We should remove these two methods
goBoardId(_id) {
const board = Boards.findOne(_id);
return (
board &&
FlowRouter.go('board', {
board
&& FlowRouter.go('board', {
id: board._id,
slug: board.slug,
})
@ -15,15 +64,14 @@ Utils = {
const card = Cards.findOne(_id);
const board = Boards.findOne(card.boardId);
return (
board &&
FlowRouter.go('card', {
board
&& FlowRouter.go('card', {
cardId: card._id,
boardId: board._id,
slug: board.slug,
})
);
},
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
processUploadedAttachment(card, fileObj, callback) {
@ -188,8 +236,8 @@ Utils = {
};
if (
'ontouchstart' in window ||
(window.DocumentTouch && document instanceof window.DocumentTouch)
'ontouchstart' in window
|| (window.DocumentTouch && document instanceof window.DocumentTouch)
) {
return true;
}
@ -210,8 +258,8 @@ Utils = {
calculateTouchDistance(touchA, touchB) {
return Math.sqrt(
Math.pow(touchA.screenX - touchB.screenX, 2) +
Math.pow(touchA.screenY - touchB.screenY, 2),
Math.pow(touchA.screenX - touchB.screenX, 2)
+ Math.pow(touchA.screenY - touchB.screenY, 2),
);
},
@ -228,9 +276,9 @@ Utils = {
});
$(document).on('touchend', selector, function(e) {
if (
touchStart &&
lastTouch &&
Utils.calculateTouchDistance(touchStart, lastTouch) <= 20
touchStart
&& lastTouch
&& Utils.calculateTouchDistance(touchStart, lastTouch) <= 20
) {
e.preventDefault();
const clickEvent = document.createEvent('MouseEvents');

View file

@ -93,7 +93,7 @@ services:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) For Wekan Meteor 1.8.x version at master branch, use mongo 4.x
image: mongo:4.0.11
image: mongo:4.0.12
# b) For Wekan Meteor 1.6.x version at devel branch.
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
#image: mongo:3.2.21
@ -251,19 +251,19 @@ services:
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "due",
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
# so any activityType matches the pattern, system will send out
# notifications to all board members no matter they are watching
# or tracking the board or not. Owner of the wekan server can
# disable the feature by setting this variable to "NONE" or
# change the pattern to any valid regex. i.e. '|' delimited
# activityType names.
# a) Default
# a) Example
#- BIGEVENTS_PATTERN=due
# b) All
#- BIGEVENTS_PATTERN=received|start|due|end
# c) Disabled
#- BIGEVENTS_PATTERN=NONE
- BIGEVENTS_PATTERN=NONE
#---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
@ -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

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "تعديل وضوح الرؤية",
"boardChangeWatchPopup-title": "تغيير المتابعة",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "عرض اللوحات",
"boards": "لوحات",
"board-view": "عرض اللوحات",
"board-view-cal": "التقويم",
"board-view-swimlanes": "خطوط السباحة",
"board-view-collapse": "Collapse",
"board-view-lists": "القائمات",
"bucket-example": "مثل « todo list » على سبيل المثال",
"cancel": "إلغاء",
@ -300,8 +302,18 @@
"error-username-taken": "إسم المستخدم مأخوذ مسبقا",
"error-email-taken": "البريد الإلكتروني مأخوذ بالفعل",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "تصفية",
"filter-cards": "تصفية البطاقات",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "مسح التصفية",
"filter-no-label": "لا يوجد ملصق",
"filter-no-member": "ليس هناك أي عضو",
@ -426,7 +438,7 @@
"save": "حفظ",
"search": "بحث",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "اختيار اللون",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "رمز الدعوة غير موجود",
"error-notAuthorized": "أنتَ لا تملك الصلاحيات لرؤية هذه الصفحة.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "الويبهوك الصادرة",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "الويبهوك الصادرة",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "ويبهوك جديدة ",
"no-name": "(غير معروف)",
"Node_version": "إصدار النود",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Промени наблюдаването",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Табла",
"board-view": "Board View",
"board-view-cal": "Календар",
"board-view-swimlanes": "Коридори",
"board-view-collapse": "Collapse",
"board-view-lists": "Списъци",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "Това потребителско име е вече заето",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Експортиране на Табло",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Филтър",
"filter-cards": "Филтрирай картите",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Премахване на филтрите",
"filter-no-label": "без етикет",
"filter-no-member": "без член",
@ -426,7 +438,7 @@
"save": "Запази",
"search": "Търсене",
"rules": "Правила",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Избери цвят",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Успешно изпратихте имейл",
"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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Canvia visibilitat",
"boardChangeWatchPopup-title": "Canvia seguiment",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Visió del tauler",
"boards": "Taulers",
"board-view": "Visió del tauler",
"board-view-cal": "Calendari",
"board-view-swimlanes": "Carrils de Natació",
"board-view-collapse": "Collapse",
"board-view-lists": "Llistes",
"bucket-example": "Igual que “Bucket List”, per exemple",
"cancel": "Cancel·la",
@ -300,8 +302,18 @@
"error-username-taken": "Aquest usuari ja existeix",
"error-email-taken": "L'adreça de correu electrònic ja és en ús",
"export-board": "Exporta tauler",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtre",
"filter-cards": "Fitxes de filtre",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Elimina filtre",
"filter-no-label": "Sense etiqueta",
"filter-no-member": "Sense membres",
@ -426,7 +438,7 @@
"save": "Desa",
"search": "Cerca",
"rules": "Regles",
"search-cards": "Cerca títols de fitxa i descripcions en aquest tauler",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text que cercar?",
"select-color": "Selecciona color",
"set-wip-limit-value": "Limita el màxim nombre de tasques en aquesta llista",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Has enviat un missatge satisfactòriament",
"error-invitation-code-not-exist": "El codi d'invitació no existeix",
"error-notAuthorized": "No estau autoritzats per veure aquesta pàgina",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Webhooks sortints",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Webhooks sortints",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Nou Webook sortint",
"no-name": "Importa tauler des de Wekan",
"Node_version": "Versió Node",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -74,7 +74,7 @@
"activity-checklist-completed-card": "dokončil(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
"activity-checklist-uncompleted-card": "nedokončený seznam %s",
"activity-editComment": "edited comment %s",
"activity-deleteComment": "deleted comment %s",
"activity-deleteComment": "smazat komentář %s",
"add-attachment": "Přidat přílohu",
"add-board": "Přidat tablo",
"add-card": "Přidat kartu",
@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Upravit viditelnost",
"boardChangeWatchPopup-title": "Změnit sledování",
"boardMenuPopup-title": "Nastavení Tabla",
"boardChangeViewPopup-title": "Náhled tabla",
"boards": "Tabla",
"board-view": "Náhled tabla",
"board-view-cal": "Kalendář",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Sloupce",
"bucket-example": "Například \"O čem sním\"",
"cancel": "Zrušit",
@ -300,8 +302,18 @@
"error-username-taken": "Toto uživatelské jméno již existuje",
"error-email-taken": "Tento email byl již použit",
"export-board": "Exportovat tablo",
"sort": "řadit",
"sort-desc": "Click to Sort List",
"list-sort-by": "řadit seznam podle",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtr",
"filter-cards": "Filtrovat karty",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Vyčistit filtr",
"filter-no-label": "Žádný štítek",
"filter-no-member": "Žádný člen",
@ -426,7 +438,7 @@
"save": "Uložit",
"search": "Hledat",
"rules": "Pravidla",
"search-cards": "Hledat nadpisy a popisy karet v tomto tablu",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Hledaný text",
"select-color": "Vybrat barvu",
"set-wip-limit-value": "Nastaví limit pro maximální počet úkolů ve sloupci.",
@ -510,14 +522,19 @@
"email-smtp-test-text": "Email byl úspěšně odeslán",
"error-invitation-code-not-exist": "Kód pozvánky neexistuje.",
"error-notAuthorized": "Nejste autorizován k prohlížení této stránky.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Odchozí Webhooky",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Odchozí Webhooky",
"boardCardTitlePopup-title": "Filtr názvů karet",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Nové odchozí Webhooky",
"no-name": "(Neznámé)",
"Node_version": "Node verze",
"Meteor_version": "Meteor version",
"MongoDB_version": "MongoDB version",
"MongoDB_version": "MongoDB verze",
"MongoDB_storage_engine": "MongoDB storage engine",
"MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
"OS_Arch": "OS Architektura",
@ -684,9 +701,9 @@
"r-set": "Set",
"r-update": "Update",
"r-datefield": "date field",
"r-df-start-at": "start",
"r-df-start-at": "začátek",
"r-df-due-at": "due",
"r-df-end-at": "end",
"r-df-end-at": "konec",
"r-df-received-at": "received",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Sichtbarkeit ändern",
"boardChangeWatchPopup-title": "Beobachtung ändern",
"boardMenuPopup-title": "Boardeinstellungen",
"boardChangeViewPopup-title": "Boardansicht",
"boards": "Boards",
"board-view": "Boardansicht",
"board-view-cal": "Kalender",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Listen",
"bucket-example": "z.B. \"Löffelliste\"",
"cancel": "Abbrechen",
@ -300,8 +302,18 @@
"error-username-taken": "Dieser Benutzername ist bereits vergeben",
"error-email-taken": "E-Mail wird schon verwendet",
"export-board": "Board exportieren",
"sort": "Sortieren",
"sort-desc": "Zum Sortieren der Liste klicken",
"list-sort-by": "Sortieren der Liste nach:",
"list-label-modifiedAt": "Letzte Zugriffszeit",
"list-label-title": "Name der Liste",
"list-label-sort": "Ihre manuelle Sortierung",
"list-label-short-modifiedAt": "(Z)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Karten filtern",
"filter-cards": "Karten oder Listen filtern",
"list-filter-label": "Liste nach Titel filtern",
"filter-clear": "Filter entfernen",
"filter-no-label": "Kein Label",
"filter-no-member": "Kein Mitglied",
@ -426,7 +438,7 @@
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
"search-cards": "Suche nach Kartentiteln und Beschreibungen auf diesem Board",
"search-cards": "Suche nach Karten-/Listentiteln und Beschreibungen auf diesem Board",
"search-example": "Suchbegriff",
"select-color": "Farbe auswählen",
"set-wip-limit-value": "Setzen Sie ein Limit für die maximale Anzahl von Aufgaben in dieser Liste",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt",
"error-invitation-code-not-exist": "Ungültiger Einladungscode",
"error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional für Authentifizierung)",
"outgoing-webhooks": "Ausgehende Webhooks",
"bidirectional-webhooks": "Zwei-Wege Webhooks",
"outgoingWebhooksPopup-title": "Ausgehende Webhooks",
"boardCardTitlePopup-title": "Kartentitelfilter",
"disable-webhook": "Diesen Webhook deaktivieren",
"global-webhook": "Globale Webhooks",
"new-outgoing-webhook": "Neuer ausgehender Webhook",
"no-name": "(Unbekannt)",
"Node_version": "Node-Version",
@ -723,12 +740,16 @@
"almostdue": "aktuelles Fälligkeitsdatum %s bevorstehend",
"pastdue": "aktuelles Fälligkeitsdatum %s überschritten",
"duenow": "aktuelles Fälligkeitsdatum %s heute",
"act-withDue": "__card__ fällige Erinnerungen [__board__]",
"act-newDue": "__list__/__card__ hat seine 1. fällige Erinnerung [__board__]",
"act-withDue": "Erinnerung an Fällikgeit von __card__ [__board__]",
"act-almostdue": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist bevorstehend",
"act-pastdue": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist vorbei",
"act-duenow": "erinnernd an das aktuelle Fälligkeitszeitpunkt (__timeValue__) von __card__ ist jetzt",
"act-atUserComment": "Du wurdest erwähnt in [__board__] __card__",
"act-atUserComment": "Sie wurden in [__board__] __list__/__card__ erwähnt",
"delete-user-confirm-popup": "Sind Sie sicher, dass Sie diesen Account löschen wollen? Die Aktion kann nicht rückgängig gemacht werden.",
"accounts-allowUserDelete": "Erlaube Benutzern ihren eigenen Account zu löschen",
"hide-minicard-label-text": "Labeltext auf Minikarte ausblenden"
"hide-minicard-label-text": "Labeltext auf Minikarte ausblenden",
"show-desktop-drag-handles": "Desktop-Ziehpunkte anzeigen",
"assignee": "Zugewiesen",
"cardAssigneesPopup-title": "Zugewiesen"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Αλλαγή Ορατότητας",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Ρυθμίσεις Πίνακα",
"boardChangeViewPopup-title": "Board View",
"boards": "Πίνακες",
"board-view": "Board View",
"board-view-cal": "Ημερολόγιο",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Λίστες",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Ακύρωση",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Εξαγωγή πίνακα",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Φίλτρο",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "Κανένα μέλος",
@ -426,7 +438,7 @@
"save": "Αποθήκευση",
"search": "Αναζήτηση",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Επιλέξτε Χρώμα",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Ο κωδικός πρόσκλησης δεν υπάρχει",
"error-notAuthorized": "You are not authorized to view this page.",
"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": "(Άγνωστο)",
"Node_version": "Έκδοση Node",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Colour",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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 authorised 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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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 +743,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Listoj",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "Uzantnomo jam prenita",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "Nenia etikedo",
"filter-no-member": "Nenia membro",
@ -426,7 +438,7 @@
"save": "Savi",
"search": "Serĉi",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Cambiar Visibilidad",
"boardChangeWatchPopup-title": "Alternar Seguimiento",
"boardMenuPopup-title": "Opciones del Tablero",
"boardChangeViewPopup-title": "Vista de Tablero",
"boards": "Tableros",
"board-view": "Vista de Tablero",
"board-view-cal": "Calendario",
"board-view-swimlanes": "Calles",
"board-view-collapse": "Collapse",
"board-view-lists": "Listas",
"bucket-example": "Como \"Lista de Contenedores\" por ejemplo",
"cancel": "Cancelar",
@ -300,8 +302,18 @@
"error-username-taken": "El nombre de usuario ya existe",
"error-email-taken": "El email ya existe",
"export-board": "Exportar tablero",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar Tarjetas",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Sacar filtro",
"filter-no-label": "Sin etiqueta",
"filter-no-member": "No es miembro",
@ -426,7 +438,7 @@
"save": "Grabar",
"search": "Buscar",
"rules": "Rules",
"search-cards": "Buscar en títulos y descripciones de tarjeta en este tablero",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "¿Texto a buscar?",
"select-color": "Seleccionar Color",
"set-wip-limit-value": "Fijar un límite para el número máximo de tareas en esta lista",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Enviaste el correo correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado para ver esta página.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Ganchos Web Salientes",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Ganchos Web Salientes",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Nuevo Gancho Web",
"no-name": "(desconocido)",
"Node_version": "Versión de Node",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
"boardChangeWatchPopup-title": "Cambiar vigilancia",
"boardMenuPopup-title": "Preferencias del tablero",
"boardChangeViewPopup-title": "Vista del tablero",
"boards": "Tableros",
"board-view": "Vista del tablero",
"board-view-cal": "Calendario",
"board-view-swimlanes": "Carriles",
"board-view-collapse": "Collapse",
"board-view-lists": "Listas",
"bucket-example": "Como “Cosas por hacer” por ejemplo",
"cancel": "Cancelar",
@ -300,8 +302,18 @@
"error-username-taken": "Este nombre de usuario ya está en uso",
"error-email-taken": "Esta dirección de correo ya está en uso",
"export-board": "Exportar el tablero",
"sort": "Ordenar",
"sort-desc": "Click para ordenar la lista",
"list-sort-by": "Ordenar la lista por:",
"list-label-modifiedAt": "Hora de último acceso",
"list-label-title": "Nombre de la lista",
"list-label-sort": "Tu orden manual",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar tarjetas",
"filter-cards": "Filtrar tarjetas o listas",
"list-filter-label": "Filtrar listas por título",
"filter-clear": "Limpiar el filtro",
"filter-no-label": "Sin etiqueta",
"filter-no-member": "Sin miembro",
@ -510,9 +522,14 @@
"email-smtp-test-text": "El correo se ha enviado correctamente",
"error-invitation-code-not-exist": "El código de invitación no existe",
"error-notAuthorized": "No estás autorizado a ver esta página.",
"webhook-title": "Nombre del Webhook",
"webhook-token": "Token (opcional para la autenticación)",
"outgoing-webhooks": "Webhooks salientes",
"bidirectional-webhooks": "Webhooks de doble sentido",
"outgoingWebhooksPopup-title": "Webhooks salientes",
"boardCardTitlePopup-title": "Filtro de títulos de tarjeta",
"disable-webhook": "Deshabilitar este Webhook",
"global-webhook": "Webhooks globales",
"new-outgoing-webhook": "Nuevo webhook saliente",
"no-name": "(Desconocido)",
"Node_version": "Versión de Node",
@ -723,12 +740,16 @@
"almostdue": "está próxima la hora de vencimiento actual %s",
"pastdue": "se sobrepasó la hora de vencimiento actual%s",
"duenow": "la hora de vencimiento actual %s es hoy",
"act-withDue": "__card__ notificaciones de vencimiento [__board__]",
"act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
"act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
"act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
"act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
"act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
"act-atUserComment": "Te mencionaron en [__board__] __card__",
"act-atUserComment": "Se te mencionó en [__board__] __list__/__card__",
"delete-user-confirm-popup": "¿Seguro que quieres eliminar esta cuenta? Esta acción no puede deshacerse.",
"accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta"
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
"show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Aldatu ikusgaitasuna",
"boardChangeWatchPopup-title": "Aldatu ikuskatzea",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Arbelak",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Zerrendak",
"bucket-example": "Esaterako \"Pertz zerrenda\"",
"cancel": "Utzi",
@ -300,8 +302,18 @@
"error-username-taken": "Erabiltzaile-izen hori hartuta dago",
"error-email-taken": "E-mail hori hartuta dago",
"export-board": "Esportatu arbela",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Iragazi",
"filter-cards": "Iragazi txartelak",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Garbitu iragazkia",
"filter-no-label": "Etiketarik ez",
"filter-no-member": "Kiderik ez",
@ -426,7 +438,7 @@
"save": "Gorde",
"search": "Bilatu",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Aukeratu kolorea",
"set-wip-limit-value": "Zerrenda honetako atazen muga maximoa ezarri",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Arrakastaz bidali duzu posta elektroniko mezua",
"error-invitation-code-not-exist": "Gonbidapen kodea ez da existitzen",
"error-notAuthorized": "Ez duzu orri hau ikusteko baimenik.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Irteerako Webhook-ak",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Irteerako Webhook-ak",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Irteera-webhook berria",
"no-name": "(Ezezaguna)",
"Node_version": "Nodo bertsioa",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "تغییر وضعیت نمایش",
"boardChangeWatchPopup-title": "تغییر دیده بانی",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "نمایش تخته",
"boards": "تخته‌ها",
"board-view": "نمایش تخته",
"board-view-cal": "تقویم",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "فهرست‌ها",
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
"cancel": "انصراف",
@ -300,8 +302,18 @@
"error-username-taken": "این نام کاربری استفاده شده است",
"error-email-taken": "رایانامه توسط گیرنده دریافت شده است",
"export-board": "انتقال به بیرون تخته",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "صافی ـFilterـ",
"filter-cards": "صافی ـFilterـ کارت‌ها",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "حذف صافی ـFilterـ",
"filter-no-label": "بدون برچسب",
"filter-no-member": "بدون عضو",
@ -426,7 +438,7 @@
"save": "ذخیره",
"search": "جستجو",
"rules": "قوانین",
"search-cards": "جستجو در میان عناوین و توضیحات در این تخته",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "متن مورد جستجو؟",
"select-color": "انتخاب رنگ",
"set-wip-limit-value": "تعیین بیشینه تعداد وظایف در این فهرست",
@ -510,9 +522,14 @@
"email-smtp-test-text": "با موفقیت، یک رایانامه را فرستادید",
"error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
"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": "فیلتر موضوع کارت",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(ناشناخته)",
"Node_version": "نسخه Node",
@ -723,12 +740,16 @@
"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": "به شما در [__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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Muokkaa näkyvyyttä",
"boardChangeWatchPopup-title": "Muokkaa seuraamista",
"boardMenuPopup-title": "Tauluasetukset",
"boardChangeViewPopup-title": "Taulunäkymä",
"boards": "Taulut",
"board-view": "Taulunäkymä",
"board-view-cal": "Kalenteri",
"board-view-swimlanes": "Swimlanet",
"board-view-collapse": "Pienennä",
"board-view-lists": "Listat",
"bucket-example": "Kuten “Laatikko lista” esimerkiksi",
"cancel": "Peruuta",
@ -300,8 +302,18 @@
"error-username-taken": "Tämä käyttäjätunnus on jo käytössä",
"error-email-taken": "Sähköpostiosoite on jo käytössä",
"export-board": "Vie taulu",
"sort": "Lajittele",
"sort-desc": "Klikkaa lajitellaksesi listan",
"list-sort-by": "Lajittele lista:",
"list-label-modifiedAt": "Viimeinen käyttöaika",
"list-label-title": "Listan nimi",
"list-label-sort": "Oma manuaalinen järjestys",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Suodata",
"filter-cards": "Suodata kortit",
"filter-cards": "Suodata kortit tai listat",
"list-filter-label": "Suodata listat otsikon mukaan",
"filter-clear": "Poista suodatin",
"filter-no-label": "Ei tunnistetta",
"filter-no-member": "Ei jäseniä",
@ -426,7 +438,7 @@
"save": "Tallenna",
"search": "Etsi",
"rules": "Säännöt",
"search-cards": "Etsi korttien otsikoista ja kuvauksista tällä taululla",
"search-cards": "Etsi kortin/listan otsikoista ja kuvauksista tällä taululla",
"search-example": "Etsittävä teksti?",
"select-color": "Valitse väri",
"set-wip-limit-value": "Aseta tämän listan tehtävien enimmäismäärä",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Olet onnistuneesti lähettänyt sähköpostin",
"error-invitation-code-not-exist": "Kutsukoodia ei ole olemassa",
"error-notAuthorized": "Sinulla ei ole oikeutta tarkastella tätä sivua.",
"webhook-title": "Webkoukun nimi",
"webhook-token": "Token (Valinnainen autentikoinnissa)",
"outgoing-webhooks": "Lähtevät Webkoukut",
"bidirectional-webhooks": "Kaksisuuntaiset Webkoukut",
"outgoingWebhooksPopup-title": "Lähtevät Webkoukut",
"boardCardTitlePopup-title": "Kortin otsikkosuodatin",
"disable-webhook": "Poista käytöstä tämä Webkoukku",
"global-webhook": "Kaikenkattavat Webkoukut",
"new-outgoing-webhook": "Uusi lähtevä Webkoukku",
"no-name": "(Tuntematon)",
"Node_version": "Node-versio",
@ -723,12 +740,16 @@
"almostdue": "nykyinen eräaika %s lähestyy",
"pastdue": "nykyinen eräaika %s on mennyt",
"duenow": "nykyinen eräaika %s on tänään",
"act-withDue": "__card__ eräaika muistutukset [__board__]",
"act-newDue": "__list__/__card__ on 1. erääntymismuistutus [__board__]",
"act-withDue": "__list__/__card__ erääntymismuistutukset [__board__]",
"act-almostdue": "muistutti nykyisen eräajan (__timeValue__) kortilla __card__ lähestyvän",
"act-pastdue": "muistutti nykyisen eräajan (__timeValue__) kortilla __card__ menneen",
"act-duenow": "muistutti nykyisen eräajan (__timeValue__) kortilla __card__ olevan nyt",
"act-atUserComment": "Sinut mainittiin [__board__] __card__",
"act-atUserComment": "Sinut mainittiin [__board__] __list__/__card__",
"delete-user-confirm-popup": "Haluatko varmasti poistaa tämän käyttäjätilin? Tätä ei voi peruuttaa.",
"accounts-allowUserDelete": "Salli käyttäjien poistaa tilinsä itse",
"hide-minicard-label-text": "Piilota minikortin tunniste teksti"
"hide-minicard-label-text": "Piilota minikortin tunniste teksti",
"show-desktop-drag-handles": "Näytä työpöydän vedon kahvat",
"assignee": "Valtuutettu",
"cardAssigneesPopup-title": "Valtuutettu"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Changer la visibilité",
"boardChangeWatchPopup-title": "Modifier le suivi",
"boardMenuPopup-title": "Paramètres du tableau",
"boardChangeViewPopup-title": "Vue du tableau",
"boards": "Tableaux",
"board-view": "Vue du tableau",
"board-view-cal": "Calendrier",
"board-view-swimlanes": "Couloirs",
"board-view-collapse": "Collapse",
"board-view-lists": "Listes",
"bucket-example": "Comme « todo list » par exemple",
"cancel": "Annuler",
@ -300,8 +302,18 @@
"error-username-taken": "Ce nom d'utilisateur est déjà utilisé",
"error-email-taken": "Cette adresse mail est déjà utilisée",
"export-board": "Exporter le tableau",
"sort": "Tri",
"sort-desc": "Cliquez pour trier la liste",
"list-sort-by": "Trier la liste par:",
"list-label-modifiedAt": "Dernier accès",
"list-label-title": "Nom de liste",
"list-label-sort": "Votre manuel",
"list-label-short-modifiedAt": "(D)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrer",
"filter-cards": "Filtrer les cartes",
"filter-cards": "Filtrer les cartes ou listes",
"list-filter-label": "Filtrer la liste par titre",
"filter-clear": "Supprimer les filtres",
"filter-no-label": "Aucune étiquette",
"filter-no-member": "Aucun participant",
@ -426,7 +438,7 @@
"save": "Enregistrer",
"search": "Chercher",
"rules": "Règles",
"search-cards": "Rechercher parmi les titres et descriptions des cartes de ce tableau",
"search-cards": "Chercher selon les titres de carte/liste et descriptions de ce tableau",
"search-example": "Texte à rechercher ?",
"select-color": "Sélectionner une couleur",
"set-wip-limit-value": "Définit une limite maximale au nombre de cartes de cette liste",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Vous avez envoyé un mail avec succès",
"error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.",
"error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.",
"webhook-title": "Nom du webhook",
"webhook-token": "Jeton (optionnel pour l'authentification)",
"outgoing-webhooks": "Webhooks sortants",
"bidirectional-webhooks": "Webhooks bidirectionnels",
"outgoingWebhooksPopup-title": "Webhooks sortants",
"boardCardTitlePopup-title": "Filtre par titre de carte",
"disable-webhook": "Désactiver ce webhook",
"global-webhook": "Webhooks globaux",
"new-outgoing-webhook": "Nouveau webhook sortant",
"no-name": "(Inconnu)",
"Node_version": "Version de Node",
@ -723,12 +740,16 @@
"almostdue": "La date d'échéance %s approche",
"pastdue": "La date d'échéance %s est passée",
"duenow": "La date d'échéance %s est aujourd'hui",
"act-withDue": "__card__ rappel d'échéance [__board__]",
"act-newDue": "__list__/__card__ a un 1er rappel d'échéance [__board__]",
"act-withDue": "__list__/__card__ rappel d'échéance [__board__]",
"act-almostdue": "rappelle que l'échéance (__timeValue__) de __card__ approche",
"act-pastdue": "rappelle que l'échéance (__timeValue__) de __card__ est passée",
"act-duenow": "rappelle que l'échéance (__timeValue__) de __card__ est maintenant",
"act-atUserComment": "Vous avez été mentionné dans [__board__] __card__",
"act-atUserComment": "Vous avez été mentionné dans [__board__] __list__/__card__",
"delete-user-confirm-popup": "Êtes-vous sûr de vouloir supprimer ce compte ? Cette opération ne peut pas être annulée. ",
"accounts-allowUserDelete": "Autoriser les utilisateurs à supprimer leur compte",
"hide-minicard-label-text": "Cacher le label de la minicarte"
"hide-minicard-label-text": "Cacher le label de la minicarte",
"show-desktop-drag-handles": "Voir les poignées de déplacement du bureau",
"assignee": "Cessionnaire",
"cardAssigneesPopup-title": "Cessionnaire"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Taboleiros",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Listas",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancelar",
@ -300,8 +302,18 @@
"error-username-taken": "Este nome de usuario xa está collido",
"error-email-taken": "Email has already been taken",
"export-board": "Exportar taboleiro",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtro",
"filter-cards": "Filtrar tarxetas",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Limpar filtro",
"filter-no-label": "Non hai etiquetas",
"filter-no-member": "Non hai membros",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "שינוי מצב הצגה",
"boardChangeWatchPopup-title": "שינוי הגדרת המעקב",
"boardMenuPopup-title": "הגדרות לוח",
"boardChangeViewPopup-title": "תצוגת לוח",
"boards": "לוחות",
"board-view": "תצוגת לוח",
"board-view-cal": "לוח שנה",
"board-view-swimlanes": "מסלולים",
"board-view-collapse": "צמצום",
"board-view-lists": "רשימות",
"bucket-example": "כמו למשל „רשימת המשימות“",
"cancel": "ביטול",
@ -300,8 +302,18 @@
"error-username-taken": "המשתמש כבר קיים במערכת",
"error-email-taken": "כתובת הדוא״ל כבר נמצאת בשימוש",
"export-board": "ייצוא לוח",
"sort": "מיון",
"sort-desc": "לחיצה למיון הרשימה",
"list-sort-by": "מיון הרשימה לפי:",
"list-label-modifiedAt": "מועד הגישה האחרון:",
"list-label-title": "שם הרשימה",
"list-label-sort": "סדר ידני משלך",
"list-label-short-modifiedAt": "(ג)",
"list-label-short-title": "(ש)",
"list-label-short-sort": "(י)",
"filter": "מסנן",
"filter-cards": "סינון כרטיסים",
"filter-cards": "סינון כרטיסים או רשימות",
"list-filter-label": "סינון רשימה לפי כותרת",
"filter-clear": "ניקוי המסנן",
"filter-no-label": "אין תווית",
"filter-no-member": "אין חבר כזה",
@ -426,7 +438,7 @@
"save": "שמירה",
"search": "חיפוש",
"rules": "כללים",
"search-cards": "חיפוש אחר כותרות ותיאורים של כרטיסים בלוח זה",
"search-cards": "חיפוש בין כותרות של כרטיסים/רשימות ותיאורים בלוח זה",
"search-example": "טקסט לחיפוש ?",
"select-color": "בחירת צבע",
"set-wip-limit-value": "הגדרת מגבלה למספר המרבי של משימות ברשימה זו",
@ -510,9 +522,14 @@
"email-smtp-test-text": "שלחת הודעת דוא״ל בהצלחה",
"error-invitation-code-not-exist": "קוד ההזמנה אינו קיים",
"error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.",
"webhook-title": "שם ההתלייה",
"webhook-token": "אסימון (כרשות לצורך אימות)",
"outgoing-webhooks": "קרסי רשת יוצאים",
"bidirectional-webhooks": "התליות דו־כיווניות",
"outgoingWebhooksPopup-title": "קרסי רשת יוצאים",
"boardCardTitlePopup-title": "מסנן כותרת כרטיס",
"disable-webhook": "השבתת ההתלייה הזאת",
"global-webhook": "התליות גלובליות",
"new-outgoing-webhook": "קרסי רשת יוצאים חדשים",
"no-name": "(לא ידוע)",
"Node_version": "גרסת Node",
@ -723,12 +740,16 @@
"almostdue": "מועד היעד הנוכחי %s מתקרב",
"pastdue": "מועד היעד הנוכחי %s חלף",
"duenow": "מועד היעד הנוכחי %s הוא היום",
"act-withDue": "__card__ תזכורות למועדי יעד [__board__]",
"act-newDue": "__list__/__card__ יש תזכורת ראשונה שתוקפה פג [__board__]",
"act-withDue": "__list__/__card__ יש תזכורות שתוקפן פג [__board__]",
"act-almostdue": "הזכירה שמועד היעד הנוכחי (__timeValue__) של __card__ מתקרב",
"act-pastdue": "הזכירה שמועד היעד הנוכחי (__timeValue__) של __card__ חלף",
"act-duenow": "הזכירה שמועד היעד הנוכחי (__timeValue__) של __card__ הוא עכשיו",
"act-atUserComment": "אוזכרת תחת [__board__] __card__",
"act-atUserComment": "אוזכרת תחת [__board__] __list__/__card__",
"delete-user-confirm-popup": "למחוק את החשבון הזה? אי אפשר לבטל.",
"accounts-allowUserDelete": "לאפשר למשתמשים למחוק את החשבונות של עצמם",
"hide-minicard-label-text": "הסתרת טקסט התווית של מיני כרטיס"
"hide-minicard-label-text": "הסתרת טקסט התווית של מיני כרטיס",
"show-desktop-drag-handles": "הצגת ידיות גרירה של שולחן העבודה",
"assignee": "גורם אחראי",
"cardAssigneesPopup-title": "גורם אחראי"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "दृश्यता बदलें",
"boardChangeWatchPopup-title": "बदलें वॉच",
"boardMenuPopup-title": "बोर्ड सेटिंग्स",
"boardChangeViewPopup-title": "बोर्ड दृष्टिकोण",
"boards": "बोर्डों",
"board-view": "बोर्ड दृष्टिकोण",
"board-view-cal": "तिथि-पत्र",
"board-view-swimlanes": "तैरना",
"board-view-collapse": "Collapse",
"board-view-lists": "सूचियाँ",
"bucket-example": "उदाहरण के लिए “बाल्टी सूची” की तरह",
"cancel": "रद्द करें",
@ -300,8 +302,18 @@
"error-username-taken": "यह username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export बोर्ड",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter कार्ड",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No सदस्य",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search से कार्ड titles और descriptions इस पर बोर्ड",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text तक search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set एक limit for the maximum number of tasks अंदर में यह list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "You have successfully प्रेषित an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized तक आलोकन यह 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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Láthatóság megváltoztatása",
"boardChangeWatchPopup-title": "Megfigyelés megváltoztatása",
"boardMenuPopup-title": "Tábla beállítások",
"boardChangeViewPopup-title": "Tábla nézet",
"boards": "Táblák",
"board-view": "Tábla nézet",
"board-view-cal": "Naptár",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Listák",
"bucket-example": "Mint például „Bakancslista”",
"cancel": "Mégse",
@ -300,8 +302,18 @@
"error-username-taken": "Ez a felhasználónév már foglalt",
"error-email-taken": "Az e-mail már foglalt",
"export-board": "Tábla exportálása",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Szűrő",
"filter-cards": "Kártyák szűrése",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Szűrő törlése",
"filter-no-label": "Nincs címke",
"filter-no-member": "Nincs tag",
@ -426,7 +438,7 @@
"save": "Mentés",
"search": "Keresés",
"rules": "Rules",
"search-cards": "Keresés a táblán lévő kártyák címében illetve leírásában",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "keresőkifejezés",
"select-color": "Szín kiválasztása",
"set-wip-limit-value": "Korlát beállítása a listán lévő feladatok legnagyobb számához",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Sikeresen elküldött egy e-mailt",
"error-invitation-code-not-exist": "A meghívási kód nem létezik",
"error-notAuthorized": "Nincs jogosultsága az oldal megtekintéséhez.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Kimenő webhurkok",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Kimenő webhurkok",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Új kimenő webhurok",
"no-name": "(Ismeretlen)",
"Node_version": "Node verzió",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Ubah Penampakan",
"boardChangeWatchPopup-title": "Ubah Pengamatan",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Panel",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Daftar",
"bucket-example": "Contohnya seperti “Bucket List” ",
"cancel": "Batal",
@ -300,8 +302,18 @@
"error-username-taken": "Nama pengguna ini sudah dipakai",
"error-email-taken": "Email has already been taken",
"export-board": "Exspor Panel",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Penyaringan",
"filter-cards": "Filter Kartu",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Bersihkan penyaringan",
"filter-no-label": "Tidak ada label",
"filter-no-member": "Tidak ada anggota",
@ -426,7 +438,7 @@
"save": "Simpan",
"search": "Cari",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Kode undangan tidak ada",
"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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Cambia visibilità",
"boardChangeWatchPopup-title": "Cambia faccia",
"boardMenuPopup-title": "Impostazioni bacheca",
"boardChangeViewPopup-title": "Visualizza bacheca",
"boards": "Bacheche",
"board-view": "Visualizza bacheca",
"board-view-cal": "Calendario",
"board-view-swimlanes": "Diagramma Swimlane",
"board-view-collapse": "Collapse",
"board-view-lists": "Liste",
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
"cancel": "Cancella",
@ -300,14 +302,24 @@
"error-username-taken": "Questo username è già utilizzato",
"error-email-taken": "L'email è già stata presa",
"export-board": "Esporta bacheca",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtra",
"filter-cards": "Filtra schede",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Pulisci filtri",
"filter-no-label": "Nessuna etichetta",
"filter-no-member": "Nessun membro",
"filter-no-custom-fields": "Nessun campo personalizzato",
"filter-show-archive": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"filter-show-archive": "Mostra le liste archiviate",
"filter-hide-empty": "Nascondi liste vuote",
"filter-on": "Il filtro è attivo",
"filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
"filter-to-selection": "Seleziona",
@ -426,7 +438,7 @@
"save": "Salva",
"search": "Cerca",
"rules": "Regole",
"search-cards": "Ricerca per titolo e descrizione scheda su questa bacheca",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Testo da ricercare?",
"select-color": "Seleziona Colore",
"set-wip-limit-value": "Seleziona un limite per il massimo numero di attività in questa lista",
@ -510,16 +522,21 @@
"email-smtp-test-text": "Hai inviato un'email con successo",
"error-invitation-code-not-exist": "Il codice d'invito non esiste",
"error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Server esterni",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Server esterni",
"boardCardTitlePopup-title": "Filtro per Titolo Scheda",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Nuovo webhook in uscita",
"no-name": "(Sconosciuto)",
"Node_version": "Versione di Node",
"Meteor_version": "Meteor version",
"MongoDB_version": "MongoDB version",
"MongoDB_storage_engine": "MongoDB storage engine",
"MongoDB_Oplog_enabled": "MongoDB Oplog enabled",
"Meteor_version": "Versione Meteor",
"MongoDB_version": "Versione MondoDB",
"MongoDB_storage_engine": "Versione motore dati MongoDB",
"MongoDB_Oplog_enabled": "MongoDB Oplog abilitato",
"OS_Arch": "Architettura del sistema operativo",
"OS_Cpus": "Conteggio della CPU del sistema operativo",
"OS_Freemem": "Memoria libera del sistema operativo",
@ -681,13 +698,13 @@
"r-board-note": "Nota: Lascia un campo vuoto per abbinare ogni possibile valore",
"r-checklist-note": "Nota: Gli elementi della checklist devono essere scritti come valori separati dalla virgola",
"r-when-a-card-is-moved": "Quando una scheda viene spostata su un'altra lista",
"r-set": "Set",
"r-update": "Update",
"r-datefield": "date field",
"r-df-start-at": "start",
"r-df-due-at": "due",
"r-df-end-at": "end",
"r-df-received-at": "received",
"r-set": "Imposta",
"r-update": "Aggiorna",
"r-datefield": "campo data",
"r-df-start-at": "inizio",
"r-df-due-at": "scadenza",
"r-df-end-at": "fine",
"r-df-received-at": "ricevuta",
"r-to-current-datetime": "to current date/time",
"r-remove-value-from": "Remove value from",
"ldap": "LDAP",
@ -723,12 +740,16 @@
"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__",
"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"
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
"delete-user-confirm-popup": "Sei sicuro di voler cancellare questo profilo? Non sarà possibile ripristinarlo.",
"accounts-allowUserDelete": "Permetti agli utenti di cancellare il loro profilo",
"hide-minicard-label-text": "Hide minicard label text",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -111,8 +111,8 @@
"restore-board": "ボードをリストア",
"no-archived-boards": "No Boards in Archive.",
"archives": "アーカイブ",
"template": "Template",
"templates": "Templates",
"template": "テンプレート",
"templates": "テンプレート",
"assign-member": "メンバーの割当",
"attached": "添付されました",
"attachment": "添付ファイル",
@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "公開範囲の変更",
"boardChangeWatchPopup-title": "ウォッチの変更",
"boardMenuPopup-title": "ボード設定",
"boardChangeViewPopup-title": "Board View",
"boards": "ボード",
"board-view": "Board View",
"board-view-cal": "カレンダー",
"board-view-swimlanes": "スイムレーン",
"board-view-collapse": "Collapse",
"board-view-lists": "リスト",
"bucket-example": "例:バケットリスト",
"cancel": "キャンセル",
@ -164,7 +166,7 @@
"cardLabelsPopup-title": "ラベル",
"cardMembersPopup-title": "メンバー",
"cardMorePopup-title": "さらに見る",
"cardTemplatePopup-title": "Create template",
"cardTemplatePopup-title": "テンプレートの作成",
"cards": "カード",
"cards-count": "カード",
"casSignIn": "Sign In with CAS",
@ -199,19 +201,19 @@
"color-indigo": "藍",
"color-lime": "ライム",
"color-magenta": "マゼンタ",
"color-mistyrose": "mistyrose",
"color-mistyrose": "ミスティーローズ",
"color-navy": "濃紺",
"color-orange": "オレンジ",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-paleturquoise": "ペールターコイズ",
"color-peachpuff": "ピーチパフ",
"color-pink": "ピンク",
"color-plum": "plum",
"color-plum": "プラム",
"color-purple": "紫",
"color-red": "赤",
"color-saddlebrown": "saddlebrown",
"color-saddlebrown": "サドルブラウン",
"color-silver": "銀",
"color-sky": "空",
"color-slateblue": "slateblue",
"color-slateblue": "スレートブルー",
"color-white": "白",
"color-yellow": "黄",
"unset-color": "設定しない",
@ -300,8 +302,18 @@
"error-username-taken": "このユーザ名は既に使用されています",
"error-email-taken": "メールは既に受け取られています",
"export-board": "ボードのエクスポート",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "フィルター",
"filter-cards": "カードをフィルターする",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "フィルターの解除",
"filter-no-label": "ラベルなし",
"filter-no-member": "メンバーなし",
@ -387,8 +399,8 @@
"muted-info": "このボードの変更は通知されません",
"my-boards": "自分のボード",
"name": "名前",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-cards": "カードをアーカイブする",
"no-archived-lists": "リストをアーカイブする",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "該当するものはありません",
"normal": "通常",
@ -426,7 +438,7 @@
"save": "保存",
"search": "検索",
"rules": "Rules",
"search-cards": "カードのタイトルと詳細から検索",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "検索文字",
"select-color": "色を選択",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -477,9 +489,9 @@
"welcome-swimlane": "Milestone 1",
"welcome-list1": "基本",
"welcome-list2": "高度",
"card-templates-swimlane": "Card Templates",
"list-templates-swimlane": "List Templates",
"board-templates-swimlane": "Board Templates",
"card-templates-swimlane": "カードのテンプレート",
"list-templates-swimlane": "リストのテンプレート",
"board-templates-swimlane": "ボードのテンプレート",
"what-to-do": "何をしたいですか?",
"wipLimitErrorPopup-title": "Invalid WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
@ -510,9 +522,14 @@
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "招待コードが存在しません",
"error-notAuthorized": "このページを参照する権限がありません。",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "発信Webフック",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "発信Webフック",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "発信Webフックの作成",
"no-name": "(Unknown)",
"Node_version": "Nodeバージョン",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "ხილვადობის შეცვლა",
"boardChangeWatchPopup-title": "საათის შეცვლა",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "დაფის ნახვა",
"boards": "დაფები",
"board-view": "დაფის ნახვა",
"board-view-cal": "კალენდარი",
"board-view-swimlanes": "ბილიკები",
"board-view-collapse": "Collapse",
"board-view-lists": "ჩამონათვალი",
"bucket-example": "მაგალითად “Bucket List” ",
"cancel": "გაუქმება",
@ -300,8 +302,18 @@
"error-username-taken": "არსებობს მსგავსი მომხმარებელი",
"error-email-taken": "უკვე არსებობს მსგავსი ელ.ფოსტა",
"export-board": "დაფის ექსპორტი",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "ფილტრი",
"filter-cards": "ბარათების გაფილტვრა",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "ფილტრის გასუფთავება",
"filter-no-label": "ნიშანი არ გვაქვს",
"filter-no-member": "არ არის წევრები ",
@ -426,7 +438,7 @@
"save": "დამახსოვრება",
"search": "ძებნა",
"rules": "Rules",
"search-cards": "მოძებნეთ ბარათის სახელით და აღწერით ამ დაფაზე",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "საძიებო ტექსტი",
"select-color": "ფერის მონიშვნა",
"set-wip-limit-value": "დააყენეთ შეზღუდვა დავალებების მაქსიმალურ რაოდენობაზე ",
@ -510,9 +522,14 @@
"email-smtp-test-text": "თქვენ წარმატებით გააგზავნეთ ელ.ფოსტა.",
"error-invitation-code-not-exist": "მსგავსი მოსაწვევი კოდი არ არსებობს",
"error-notAuthorized": "თქვენ არ გაქვთ ამ გვერდის ნახვის უფლება",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "გამავალი Webhook",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "გამავალი Webhook",
"boardCardTitlePopup-title": "Card Title Filter",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(უცნობი)",
"Node_version": "Node ვერსია",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -1,6 +1,6 @@
{
"accept": "확인",
"act-activity-notify": "Activity Notification",
"act-activity-notify": "활동 알림",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "표시 여부 변경",
"boardChangeWatchPopup-title": "감시상태 변경",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "보드",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "목록들",
"bucket-example": "예: “프로젝트 이름“ 입력",
"cancel": "취소",
@ -300,8 +302,18 @@
"error-username-taken": "중복된 아이디 입니다.",
"error-email-taken": "Email has already been taken",
"export-board": "보드 내보내기",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "필터",
"filter-cards": "카드 필터",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "필터 초기화",
"filter-no-label": "라벨 없음",
"filter-no-member": "멤버 없음",
@ -426,7 +438,7 @@
"save": "저장",
"search": "검색",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "색 선택",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "테스트 메일을 성공적으로 발송하였습니다.",
"error-invitation-code-not-exist": "초대 코드가 존재하지 않습니다.",
"error-notAuthorized": "이 페이지를 볼 수있는 권한이 없습니다.",
"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",
@ -708,8 +725,8 @@
"people-number": "The number of people is:",
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"restore-all": "모든항목 복구",
"delete-all": "모두 삭제",
"loading": "Loading, please wait.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Промени наблюдаването",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Табли",
"board-view": "Board View",
"board-view-cal": "Календар",
"board-view-swimlanes": "Коридори",
"board-view-collapse": "Collapse",
"board-view-lists": "Листи",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Откажи",
@ -300,8 +302,18 @@
"error-username-taken": "Това потребителско име е вече заето",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Експортиране на Табло",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Филтер",
"filter-cards": "Филтрирай картите",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Премахване на филтрите",
"filter-no-label": "без етикет",
"filter-no-member": "без член",
@ -426,7 +438,7 @@
"save": "Запази",
"search": "Търсене",
"rules": "Правила",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Избери цвят",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Успешно изпратихте е-маил",
"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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -264,23 +266,23 @@
"edit": "Edit",
"edit-avatar": "Аватар өөрчлөх",
"edit-profile": "Бүртгэл засварлах",
"edit-wip-limit": "Edit WIP Limit",
"edit-wip-limit": "WIP хязгаарлалтыг өөрчлөх",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCustomFieldPopup-title": "Edit Field",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editCardStartDatePopup-title": "Эхлэх өдрийг өөрчлөх",
"editCardDueDatePopup-title": "Дуусах өдрийг өөрчлөх",
"editCustomFieldPopup-title": "Талбарыг засварлах",
"editCardSpentTimePopup-title": "Зарцуулсан хугацааг засварлах",
"editLabelPopup-title": "Шошгыг өөрчлөх",
"editNotificationPopup-title": "Мэдэгдэл тохируулах",
"editProfilePopup-title": "Бүртгэл засварлах",
"email": "Email",
"email": "Имэйл",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Sending email failed",
"email-fail-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
"email-invite-subject": "__inviter__ sent you an invitation",
"email-invalid": "Буруу имэйл",
"email-invite": "Имэйлээр урих",
"email-invite-subject": "__inviter__ танд урилга илгээлээ",
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
"email-resetPassword-subject": "Reset your password on __siteName__",
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -504,15 +516,20 @@
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-subject": "__inviter__ танд урилга илгээлээ",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -107,9 +107,9 @@
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archived-items": "Arkiv",
"archived-boards": "Boards in Archive",
"archived-boards": "Tavler i arkivet",
"restore-board": "Restore Board",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "Ingen tavler i arkivet",
"archives": "Arkiv",
"template": "Template",
"templates": "Templates",
@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Endre synlighet",
"boardChangeWatchPopup-title": "Endre overvåkning",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Tavler",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Lists",
"bucket-example": "Som \"Bucket List\" for eksempel",
"cancel": "Avbryt",
@ -176,26 +178,26 @@
"change-password": "Endre passord",
"change-permissions": "Endre rettigheter",
"change-settings": "Endre innstillinger",
"changeAvatarPopup-title": "Endre Avatar",
"changeAvatarPopup-title": "Endre avatar",
"changeLanguagePopup-title": "Endre språk",
"changePasswordPopup-title": "Endre passord",
"changePermissionsPopup-title": "Endre tillatelser",
"changeSettingsPopup-title": "Endre innstillinger",
"subtasks": "Subtasks",
"subtasks": "Deloppgave",
"checklists": "Sjekklister",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close": "Lukk",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-black": "svart",
"color-blue": "blå",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-darkgreen": "mørkegrønn",
"color-gold": "gull",
"color-gray": "grå",
"color-green": "grønn",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
@ -204,9 +206,9 @@
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "purple",
"color-purple": "lilla",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
@ -240,39 +242,39 @@
"current": "current",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-date": "Date",
"custom-field-date": "Dato",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-field-dropdown-unknown": "(ukjent)",
"custom-field-number": "Nummer",
"custom-field-text": "Tekst",
"custom-fields": "Custom Fields",
"date": "Date",
"decline": "Decline",
"date": "Dato",
"decline": "Avvis",
"default-avatar": "Default avatar",
"delete": "Delete",
"delete": "Slett",
"deleteCustomFieldPopup-title": "Delete Custom Field?",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"description": "Beskrivelse",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
"discard": "Discard",
"done": "Done",
"download": "Download",
"edit": "Edit",
"download": "Last ned",
"edit": "Rediger",
"edit-avatar": "Endre avatar",
"edit-profile": "Edit Profile",
"edit-wip-limit": "Edit WIP Limit",
"edit-profile": "Endre profil",
"edit-wip-limit": "Endre WIP grense",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardStartDatePopup-title": "Endre start dato",
"editCardDueDatePopup-title": "Change due date",
"editCustomFieldPopup-title": "Edit Field",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"editProfilePopup-title": "Endre profil",
"email": "Email",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
@ -288,20 +290,30 @@
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
"error-board-notAMember": "You need to be a member of this board to do that",
"error-json-malformed": "Your text is not valid JSON",
"error-board-doesNotExist": "Denne tavlen finnes ikke",
"error-board-notAdmin": "Du må være administrator for denne tavlen for å gjøre dette",
"error-board-notAMember": "Du må være medlem av denne tavlen for å gjøre dette",
"error-json-malformed": "Denne teksten er ikke gyldig JSON",
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
"error-list-doesNotExist": "This list does not exist",
"error-list-doesNotExist": "Denne listen finnes ikke",
"error-user-doesNotExist": "This user does not exist",
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -314,7 +326,7 @@
"advanced-filter-label": "Advanced Filter",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"header-logo-title": "Tilbake til dine tavler",
"hide-system-messages": "Hide system messages",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
@ -385,8 +397,8 @@
"multi-selection-on": "Multi-Selection is on",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"my-boards": "Mine tavler",
"name": "Navn",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
@ -395,20 +407,20 @@
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-watch": "Receive updates to any boards, lists, or cards youre watching",
"optional": "optional",
"or": "or",
"notify-watch": "Motta oppdatering av alle tavler, lister eller kort som du overvåker",
"optional": "valgfritt",
"or": "eller",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Password",
"password": "Passord",
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
"participating": "Participating",
"preview": "Preview",
"previewAttachedImagePopup-title": "Preview",
"previewClipboardImagePopup-title": "Preview",
"private": "Private",
"preview": "Forhåndsvisning",
"previewAttachedImagePopup-title": "Forhåndsvisning",
"previewClipboardImagePopup-title": "Forhåndsvisning",
"private": "Privat",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Profile",
"profile": "Profil",
"public": "Public",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
@ -426,7 +438,7 @@
"save": "Save",
"search": "Search",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -467,7 +479,7 @@
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"username": "Brukernavn",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",
"watch": "Watch",
@ -485,9 +497,9 @@
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
"admin-panel": "Admin Panel",
"settings": "Settings",
"people": "People",
"registration": "Registration",
"settings": "Innstillinger",
"people": "Folk",
"registration": "Registrering",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
@ -498,8 +510,8 @@
"smtp-tls-description": "Enable TLS support for SMTP server",
"smtp-host": "SMTP Host",
"smtp-port": "SMTP Port",
"smtp-username": "Username",
"smtp-password": "Password",
"smtp-username": "Brukernavn",
"smtp-password": "Passord",
"smtp-tls": "TLS support",
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
@ -510,9 +522,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",
@ -630,10 +647,10 @@
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Legg til",
"r-remove": "Remove",
"r-remove": "Fjern",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-member": "medlem",
"r-remove-all": "Fjern alle medlemmer fra kortet",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
@ -644,17 +661,17 @@
"r-item": "item",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-to": "til",
"r-subject": "Emne",
"r-rule-details": "Rule details",
"r-d-move-to-top-gen": "Move card to top of its list",
"r-d-move-to-top-spec": "Move card to top of list",
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
"r-d-move-to-bottom-spec": "Move card to bottom of list",
"r-d-send-email": "Send email",
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-move-to-bottom-gen": "Flytt kortet til bunnen av sin liste",
"r-d-move-to-bottom-spec": "Flytt kortet til bunnen av listen",
"r-d-send-email": "Send e-post",
"r-d-send-email-to": "til",
"r-d-send-email-subject": "Emne",
"r-d-send-email-message": "Melding",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-add-label": "Add label",
@ -723,12 +740,16 @@
"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__",
"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"
"act-atUserComment": "Du ble nevnt i [__board__] __list__/__card__",
"delete-user-confirm-popup": "Er du sikker på at du vil slette denne kontoen?",
"accounts-allowUserDelete": "Tillat at brukere sletter sin konto",
"hide-minicard-label-text": "Hide minicard label text",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

File diff suppressed because it is too large Load diff

View file

@ -132,16 +132,18 @@
"boardChangeVisibilityPopup-title": "Cambiar la visibilitat",
"boardChangeWatchPopup-title": "Cambiar lo seguit",
"boardMenuPopup-title": "Opcions del tablèu",
"boardChangeViewPopup-title": "Presentacion del tablèu",
"boards": "Tablèus",
"board-view": "Presentacion del tablèu",
"board-view-cal": "Calendièr",
"board-view-swimlanes": "Corredor",
"board-view-collapse": "Collapse",
"board-view-lists": "Tièras",
"bucket-example": "Coma \"Tota la tièra\" per exemple",
"cancel": "Tornar",
"card-archived": "Aquesta carta es desplaçada dins Archius",
"board-archived": "Aqueste tablèu esdesplaçat dins Archius",
"card-comments-title": "Aquesta carta a %s de comentaris.",
"card-archived": "Aquesta carta es desplaçada dins Archius.",
"board-archived": "Aqueste tablèu esdesplaçat dins Archius.",
"card-comments-title": "Aquesta carta a %s comentari(s).",
"card-delete-notice": "Un còp tirat, pas de posibilitat de tornar enrè",
"card-delete-pop": "Totes las accions van èsser quitadas del seguit d'activitat e poiretz pas mai utilizar aquesta carta.",
"card-delete-suggest-archive": "Podètz desplaçar una carta dins Archius per la quitar del tablèu e gardar las activitats.",
@ -300,8 +302,18 @@
"error-username-taken": "Lo nom es ja pres",
"error-email-taken": "Lo corrièl es ja pres ",
"export-board": "Exportar lo tablèu",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtre",
"filter-cards": "Filtre cartas",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Escafar lo filtre",
"filter-no-label": "Pas cap d'etiqueta",
"filter-no-member": "Pas cap de participant",
@ -426,7 +438,7 @@
"save": "Salvar",
"search": "Cèrca",
"rules": "Règlas",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Color causida",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,14 @@
"email-smtp-test-text": "As capitat de mandar un corrièl",
"error-invitation-code-not-exist": "Lo còde de convit existís pas",
"error-notAuthorized": "Sès pas autorizat a agachar aquesta pagina",
"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": "(Desconegut)",
"Node_version": "Node version",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Zmień widoczność tablicy",
"boardChangeWatchPopup-title": "Zmień sposób wysyłania powiadomień",
"boardMenuPopup-title": "Ustawienia tablicy",
"boardChangeViewPopup-title": "Widok tablicy",
"boards": "Tablice",
"board-view": "Widok tablicy",
"board-view-cal": "Kalendarz",
"board-view-swimlanes": "Diagramy czynności",
"board-view-collapse": "Zwiń",
"board-view-lists": "Listy",
"bucket-example": "Tak jak na przykład \"lista kubełkowa\"",
"cancel": "Anuluj",
@ -300,8 +302,18 @@
"error-username-taken": "Ta nazwa jest już zajęta",
"error-email-taken": "Adres email jest już zarezerwowany",
"export-board": "Eksportuj tablicę",
"sort": "Sortuj",
"sort-desc": "Kliknij by sortować listę",
"list-sort-by": "Sortuj listę przez:",
"list-label-modifiedAt": "Ostatni czas dostępu",
"list-label-title": "Nazwa listy",
"list-label-sort": "Twoja kolejność ustawiona ręcznie",
"list-label-short-modifiedAt": "(O)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(K)",
"filter": "Filtr",
"filter-cards": "Odfiltruj karty",
"filter-cards": "Filtruj karty i listy",
"list-filter-label": "Filtruj listy względem tytułu",
"filter-clear": "Usuń filter",
"filter-no-label": "Brak etykiety",
"filter-no-member": "Brak członków",
@ -426,7 +438,7 @@
"save": "Zapisz",
"search": "Wyszukaj",
"rules": "Reguły",
"search-cards": "Szukaj spośród tytułów kart oraz opisów na tej tablicy",
"search-cards": "Szukaj w tytułach kart/list oraz opisach na tej tablicy",
"search-example": "Czego mam szukać?",
"select-color": "Wybierz kolor",
"set-wip-limit-value": "Ustaw maksymalny limit zadań na tej liście",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Wiadomość testowa została wysłana z powodzeniem.",
"error-invitation-code-not-exist": "Kod zaproszenia nie istnieje",
"error-notAuthorized": "Nie jesteś uprawniony do przeglądania tej strony.",
"webhook-title": "Nazwa webhooka",
"webhook-token": "Token (opcjonalny do autoryzacji)",
"outgoing-webhooks": "Wychodzące webhooki",
"bidirectional-webhooks": "Dwustronne webhooki",
"outgoingWebhooksPopup-title": "Wychodzące webhooki",
"boardCardTitlePopup-title": "Filtruj poprzez nazwę karty",
"disable-webhook": "Wyłącz tego webhooka",
"global-webhook": "Globalne webhooki",
"new-outgoing-webhook": "Nowy wychodzący webhook",
"no-name": "(nieznany)",
"Node_version": "Wersja Node",
@ -723,12 +740,16 @@
"almostdue": "aktualny termin ukończenia %s dobiega końca",
"pastdue": "aktualny termin ukończenia %s jest w przeszłości",
"duenow": "aktualny termin ukończenia %s jest dzisiaj",
"act-withDue": "__card__ przypomina o zakończeniu terminu [__board__]",
"act-newDue": "__list__/__card__ przypomina o 1szym zakończeniu terminu [__board__]",
"act-withDue": "__list__/__card__ posiada przypomnienia zakończenia terminu [__board__]",
"act-almostdue": "przypomina o zbliżającej się dacie ukończenia (__timeValue__) karty __card__",
"act-pastdue": "przypomina o ubiegłej dacie ukończenia (__timeValue__) karty __card__",
"act-duenow": "przypomina o ubiegającej teraz dacie ukończenia (__timeValue__) karty __card__",
"act-atUserComment": "Zostałeś wspomniany na __board__ (__card__)",
"act-atUserComment": "Zostałeś wspomniany w [__board] __list__/__card__",
"delete-user-confirm-popup": "Czy jesteś pewien, że chcesz usunąć te konto? Nie można tego wycofać.",
"accounts-allowUserDelete": "Pozwól użytkownikom na usuwanie własnych kont",
"hide-minicard-label-text": "Ukryj opisy etykiet minikart"
"hide-minicard-label-text": "Ukryj opisy etykiet minikart",
"show-desktop-drag-handles": "Pokaż przeciągnięcia na pulpit",
"assignee": "Przypisujący",
"cardAssigneesPopup-title": "Przypisujący"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Alterar Visibilidade",
"boardChangeWatchPopup-title": "Alterar observação",
"boardMenuPopup-title": "Configurações do quadro",
"boardChangeViewPopup-title": "Visão de quadro",
"boards": "Quadros",
"board-view": "Visão de quadro",
"board-view-cal": "Calendário",
"board-view-swimlanes": "Raias",
"board-view-collapse": "Collapse",
"board-view-lists": "Listas",
"bucket-example": "\"Bucket List\", por exemplo",
"cancel": "Cancelar",
@ -300,8 +302,18 @@
"error-username-taken": "Esse username já existe",
"error-email-taken": "E-mail já está em uso",
"export-board": "Exportar quadro",
"sort": "Ordenar",
"sort-desc": "Clique para Ordenar Lista",
"list-sort-by": "Ordenar a Lista por:",
"list-label-modifiedAt": "Último Acesso",
"list-label-title": "Nome da Lista",
"list-label-sort": "Ordem Manual",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar Cartões",
"filter-cards": "Filtrar Cartões ou Listas",
"list-filter-label": "Filtrar Lista por Título",
"filter-clear": "Limpar filtro",
"filter-no-label": "Sem etiquetas",
"filter-no-member": "Sem membros",
@ -426,7 +438,7 @@
"save": "Salvar",
"search": "Buscar",
"rules": "Regras",
"search-cards": "Pesquisa em títulos e descrições de cartões neste quadro",
"search-cards": "Procurar por título e descrição de cartão/lista neste quadro ",
"search-example": "Texto para procurar",
"select-color": "Selecionar Cor",
"set-wip-limit-value": "Defina um limite máximo para o número de tarefas nesta lista",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Você enviou um e-mail com sucesso",
"error-invitation-code-not-exist": "O código do convite não existe",
"error-notAuthorized": "Você não está autorizado à ver esta página.",
"webhook-title": "Nome do Webhook",
"webhook-token": "Token (Opcional para autenticação)",
"outgoing-webhooks": "Webhook de saída",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Webhook de saída",
"boardCardTitlePopup-title": "Filtro do Título do Cartão",
"disable-webhook": "Desabilitar este Webhook",
"global-webhook": "Webhooks globais",
"new-outgoing-webhook": "Novo Webhook de saída",
"no-name": "(Desconhecido)",
"Node_version": "Versão do Node",
@ -723,12 +740,16 @@
"almostdue": "prazo final atual %s está próximo",
"pastdue": "prazo final atual %s venceu",
"duenow": "prazo final atual %s é hoje",
"act-withDue": "__card__ lembrete de prazos finais [__board__]",
"act-newDue": "__list__/__card__ possui 1º lembrete de prazo [__board__]",
"act-withDue": "__list__/__card__ lembretes de prazo [__board__]",
"act-almostdue": "está lembrando que o prazo final atual (__timeValue__) do __card__ está próximo",
"act-pastdue": "está lembrando que o prazo final atual (__timeValue__) do __card__ venceu",
"act-duenow": "está lembrando que o prazo final (__timeValue__) do __card__ é agora",
"act-atUserComment": "Você foi mencionado no [__board__] __card__",
"act-atUserComment": "Você foi mencionado no [__board__] __list__/__card__",
"delete-user-confirm-popup": "Você realmente quer apagar esta conta? Não há como desfazer.",
"accounts-allowUserDelete": "Permitir que usuários apaguem a própria conta",
"hide-minicard-label-text": "Esconder rótulo da etiqueta do mini cartão"
"hide-minicard-label-text": "Esconder rótulo da etiqueta do mini cartão",
"show-desktop-drag-handles": "Mostrar alças de arrasto da área de trabalho",
"assignee": "Administrador",
"cardAssigneesPopup-title": "Administrador"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Alterar Visibilidade",
"boardChangeWatchPopup-title": "Alterar Observação",
"boardMenuPopup-title": "Configurações do Quadro",
"boardChangeViewPopup-title": "Visão do Quadro",
"boards": "Quadros",
"board-view": "Visão do Quadro",
"board-view-cal": "Calendário",
"board-view-swimlanes": "Pistas",
"board-view-collapse": "Collapse",
"board-view-lists": "Listas",
"bucket-example": "\"Lista de Desejos\", por exemplo",
"cancel": "Cancelar",
@ -300,8 +302,18 @@
"error-username-taken": "Esse nome de utilizador já existe",
"error-email-taken": "Endereço de e-mail já está em uso",
"export-board": "Exportar quadro",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar Cartões",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Limpar filtro",
"filter-no-label": "Sem etiquetas",
"filter-no-member": "Sem membros",
@ -426,7 +438,7 @@
"save": "Guardar",
"search": "Procurar",
"rules": "Regras",
"search-cards": "Pesquisar nos títulos e descrições dos cartões deste quadro",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Texto a procurar?",
"select-color": "Seleccionar Cor",
"set-wip-limit-value": "Defina um limite máximo para o número de tarefas nesta lista",
@ -510,9 +522,14 @@
"email-smtp-test-text": "Enviou um e-mail com sucesso",
"error-invitation-code-not-exist": "O código do convite não existe",
"error-notAuthorized": "Não tem autorização para ver esta página.",
"webhook-title": "Webhook Name",
"webhook-token": "Token (Optional for Authentication)",
"outgoing-webhooks": "Webhooks de saída",
"bidirectional-webhooks": "Two-Way Webhooks",
"outgoingWebhooksPopup-title": "Webhooks de saída",
"boardCardTitlePopup-title": "Filtro do Título do Cartão",
"disable-webhook": "Disable This Webhook",
"global-webhook": "Global Webhooks",
"new-outgoing-webhook": "Novo Webhook de saída",
"no-name": "(Desconhecido)",
"Node_version": "Versão do Node",
@ -723,12 +740,16 @@
"almostdue": "a data limite actual %s está-se a aproximar",
"pastdue": "a data limite actual %s já passou",
"duenow": "a data limite actual %s é hoje",
"act-withDue": "lembretes das datas limites de __card__ [__board__]",
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
"act-withDue": "__list__/__card__ due reminders [__board__]",
"act-almostdue": "estava a lembrar que a data limite actual (__timeValue__) de __card__ está-se a aproximar",
"act-pastdue": "estava a lembrar que a data limite (__timeValue__) de __card__ já passou",
"act-duenow": "estava a lembrar que a data limite (__timeValue__) de __card__ é agora",
"act-atUserComment": "Foi mencionado em [__board__] __card__",
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
"delete-user-confirm-popup": "Tem a certeza que pretende apagar esta conta? Não há como desfazer.",
"accounts-allowUserDelete": "Permitir aos utilizadores apagar as suas próprias contas",
"hide-minicard-label-text": "Ocultar texto das etiquetas dos mini-cartões"
"hide-minicard-label-text": "Ocultar texto das etiquetas dos mini-cartões",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Boards",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Collapse",
"board-view-lists": "Liste",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
@ -300,8 +302,18 @@
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
@ -426,7 +438,7 @@
"save": "Salvează",
"search": "Caută",
"rules": "Rules",
"search-cards": "Search from card titles and descriptions on this board",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
@ -510,9 +522,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",
@ -723,12 +740,16 @@
"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",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

View file

@ -132,10 +132,12 @@
"boardChangeVisibilityPopup-title": "Изменить настройки видимости",
"boardChangeWatchPopup-title": "Режимы оповещения",
"boardMenuPopup-title": "Настройки доски",
"boardChangeViewPopup-title": "Вид доски",
"boards": "Доски",
"board-view": "Вид доски",
"board-view-cal": "Календарь",
"board-view-swimlanes": "Дорожки",
"board-view-collapse": "Collapse",
"board-view-lists": "Списки",
"bucket-example": "Например “Список дел”",
"cancel": "Отмена",
@ -300,8 +302,18 @@
"error-username-taken": "Это имя пользователя уже занято",
"error-email-taken": "Этот адрес уже занят",
"export-board": "Экспортировать доску",
"sort": "Sort",
"sort-desc": "Click to Sort List",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-label-title": "Name of the List",
"list-label-sort": "Your Manual Order",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
"filter": "Фильтр",
"filter-cards": "Фильтр карточек",
"filter-cards": "Filter Cards or Lists",
"list-filter-label": "Filter List by Title",
"filter-clear": "Очистить фильтр",
"filter-no-label": "Нет метки",
"filter-no-member": "Нет участников",
@ -426,7 +438,7 @@
"save": "Сохранить",
"search": "Поиск",
"rules": "Правила",
"search-cards": "Искать в названиях и описаниях карточек на этой доске",
"search-cards": "Search from card/list titles and descriptions on this board",
"search-example": "Искать текст?",
"select-color": "Выбрать цвет",
"set-wip-limit-value": "Устанавливает ограничение на максимальное количество задач в этом списке",
@ -510,10 +522,15 @@
"email-smtp-test-text": "Вы успешно отправили письмо",
"error-invitation-code-not-exist": "Код приглашения не существует",
"error-notAuthorized": "У вас нет доступа на просмотр этой страницы.",
"outgoing-webhooks": "Исходящие Веб-хуки",
"outgoingWebhooksPopup-title": "Исходящие Веб-хуки",
"webhook-title": "Имя Веб-Хука",
"webhook-token": "Токен (Опционально для аутентификации)",
"outgoing-webhooks": "Исходящие Веб-Хуки",
"bidirectional-webhooks": "Двунаправленный Веб-Хук",
"outgoingWebhooksPopup-title": "Исходящие Веб-Хуки",
"boardCardTitlePopup-title": "Фильтр названий карточек",
"new-outgoing-webhook": "Новый исходящий Веб-хук",
"disable-webhook": "Отключить этот Веб-Хук",
"global-webhook": "Глобальные Веб-Хуки",
"new-outgoing-webhook": "Новый исходящий Веб-Хук",
"no-name": "(Неизвестный)",
"Node_version": "Версия NodeJS",
"Meteor_version": "Версия Meteor",
@ -723,12 +740,16 @@
"almostdue": "текущий срок выполнения %s приближается",
"pastdue": "текущий срок выполнения %s прошел",
"duenow": "текущий срок выполнения %s сегодня",
"act-withDue": "__card__ напоминания о сроке выполнения [__board__]",
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
"act-withDue": "__list__/__card__ due reminders [__board__]",
"act-almostdue": "напомнил, что скоро завершается срок выполнения (__timeValue__) карточки __card__",
"act-pastdue": "напомнил, что срок выполнения (__timeValue__) карточки __card__ прошел",
"act-duenow": "напомнил, что срок выполнения (__timeValue__) карточки __card__ — это уже сейчас",
"act-atUserComment": "Вас упомянули в [__board__] __card__",
"act-atUserComment": "Вас упомянули в [__board__] __list__/__card__",
"delete-user-confirm-popup": "Вы уверены, что хотите удалить аккаунт? Данное действие необратимо.",
"accounts-allowUserDelete": "Разрешить пользователям удалять собственные аккаунты",
"hide-minicard-label-text": "Скрыть текст меток на карточках"
"hide-minicard-label-text": "Скрыть текст меток на карточках",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
"cardAssigneesPopup-title": "Assignee"
}

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