Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
417fed8605 | ||
|
|
4eca27498c | ||
|
|
d962ecd77f | ||
|
|
6feb35c079 | ||
|
|
ea90ce8784 | ||
|
|
4a42d683af | ||
|
|
8faa48fe12 | ||
|
|
67c4fae32b | ||
|
|
42d31901b5 | ||
|
|
72b22a73b6 | ||
|
|
4d30503cb5 | ||
|
|
7b45a0fbfe | ||
|
|
42dee10dbe | ||
|
|
68be12d166 | ||
|
|
fd896c29b5 | ||
|
|
98a4be643e | ||
|
|
b650a89728 | ||
|
|
346dba4969 | ||
|
|
f3b858ca21 | ||
|
|
5bc355f9a5 | ||
|
|
21fa26a1be | ||
|
|
66372271c2 | ||
|
|
e60926f847 | ||
|
|
b04df1d54d | ||
|
|
83f81f4586 | ||
|
|
4785086e2f | ||
|
|
98c38fe58f | ||
|
|
44378fe9d1 | ||
|
|
afcca947e3 | ||
|
|
20526756db | ||
|
|
58724f93c9 | ||
|
|
5d6c68a9cf | ||
|
|
ed4c49090a | ||
|
|
75dc5f226c | ||
|
|
020b663836 | ||
|
|
e5f0dd7dd8 | ||
|
|
4f34adbd44 | ||
|
|
62b72a03c4 | ||
|
|
5696e4a4c6 | ||
|
|
814e264521 | ||
|
|
872ed4b2f9 | ||
|
|
1d8633e7e6 | ||
|
|
b3637f2781 | ||
|
|
68d3cdae58 | ||
|
|
620a362244 | ||
|
|
d5cff1ec48 | ||
|
|
8d7714760c | ||
|
|
a37723f8a4 | ||
|
|
e3a727edec | ||
|
|
4ee88e026e | ||
|
|
55a2473d81 | ||
|
|
ba754cfaea | ||
|
|
7a8011f887 | ||
|
|
125231beff | ||
|
|
f70e47a012 | ||
|
|
0c34566aef | ||
|
|
f29d7daa1d | ||
|
|
0120c73a80 | ||
|
|
194b6ad46e | ||
|
|
158ddadf54 | ||
|
|
9fb0ef7eb2 | ||
|
|
503be10d36 | ||
|
|
3021f1cbe1 | ||
|
|
c66eba217b | ||
|
|
8486ccbaa8 | ||
|
|
03d7fc02ec | ||
|
|
ddd00a27a9 | ||
|
|
b31c42acc4 | ||
|
|
616903114f | ||
|
|
6e6e7ded82 | ||
|
|
6c7e1ed3ae | ||
|
|
d896f6dbcf | ||
|
|
5e963375cb | ||
|
|
57119868bb | ||
|
|
7b445dfc93 | ||
|
|
5f27a76312 | ||
|
|
b34960d1bd | ||
|
|
ff550e9110 | ||
|
|
0fcfc3a340 | ||
|
|
f95d19ab49 | ||
|
|
50744dead8 | ||
|
|
a0e5737e4c | ||
|
|
ecd9b9b5f4 | ||
|
|
389ed2f1ad | ||
|
|
273dc5223b | ||
|
|
db32f595fe | ||
|
|
4d967360b2 | ||
|
|
f14dce2f19 | ||
|
|
82f73ab58c | ||
|
|
0b52ba4ded | ||
|
|
e0046032e8 | ||
|
|
f094efa929 | ||
|
|
6ce8eeee6c | ||
|
|
be70c02922 | ||
|
|
a61afda39e | ||
|
|
126ab58e03 | ||
|
|
ca95bba358 | ||
|
|
6407893aa6 | ||
|
|
45ed9b426f | ||
|
|
11d6b77bb1 | ||
|
|
f248dada3f | ||
|
|
a56988c487 | ||
|
|
74b5bdf2aa | ||
|
|
753d5b953d | ||
|
|
ea26f70669 | ||
|
|
682c23e011 | ||
|
|
d4a307f66d | ||
|
|
7c9bf3ce0f | ||
|
|
6cbd4cabc7 | ||
|
|
10b953041f | ||
|
|
36fb31c138 | ||
|
|
3f2490e64d | ||
|
|
37065c1d50 | ||
|
|
9764e03a37 | ||
|
|
0f5226f814 | ||
|
|
3b9f2ca7c2 | ||
|
|
7953e5a52a | ||
|
|
9617c78798 | ||
|
|
28f21487b0 | ||
|
|
4567f08a0b | ||
|
|
b0281e1941 | ||
|
|
efed77b474 | ||
|
|
a70b97676a | ||
|
|
7b54983ec2 | ||
|
|
bc2fcef7c4 | ||
|
|
750349053c | ||
|
|
bfbe32e1ec | ||
|
|
ccfaf879dd | ||
|
|
ebd32af5c1 | ||
|
|
43ea7d761e | ||
|
|
a715e30cba | ||
|
|
8633bd8974 | ||
|
|
9474bee7fa | ||
|
|
92b86ada39 | ||
|
|
03bea6e406 | ||
|
|
6183402754 | ||
|
|
663ba26d4d | ||
|
|
510407467c | ||
|
|
b477fc1b1c | ||
|
|
58155288fb | ||
|
|
dd0682328b | ||
|
|
d1ab787215 | ||
|
|
71d32c6bc8 | ||
|
|
3acc9d4468 | ||
|
|
d5403bbfc5 | ||
|
|
583c369233 | ||
|
|
96efa659a8 | ||
|
|
87af5ecb36 | ||
|
|
3d39793cbf | ||
|
|
79d4cd83b1 | ||
|
|
9bc8040634 | ||
|
|
93ae815946 | ||
|
|
be5f435bc5 | ||
|
|
8a74210c60 | ||
|
|
629a6f0103 | ||
|
|
2522a98f7d | ||
|
|
0ff5ce8fde | ||
|
|
5084102e6e | ||
|
|
b7c5ba3d1b | ||
|
|
e5b9d41e67 | ||
|
|
007c064672 | ||
|
|
9c15fb1e69 | ||
|
|
7761a22bb4 | ||
|
|
16388a5e25 | ||
|
|
43c28a2f15 | ||
|
|
d29b40c0ee | ||
|
|
e21c47d3cf | ||
|
|
971de9ca34 | ||
|
|
3976e02012 | ||
|
|
d4f5717264 | ||
|
|
362220299f | ||
|
|
dbdb26a044 | ||
|
|
60e8deb064 | ||
|
|
4b06e2188c | ||
|
|
3307629c8c | ||
|
|
3978c08757 | ||
|
|
e21b0674e3 | ||
|
|
a97360dcfb | ||
|
|
6705007595 | ||
|
|
8c6164f590 | ||
|
|
bbb9815c30 | ||
|
|
0083215ea3 | ||
|
|
cdea7e8869 | ||
|
|
828822daad | ||
|
|
0cf9a7b552 | ||
|
|
7cffce972d | ||
|
|
ad01526124 | ||
|
|
fa34950ca9 | ||
|
|
9bbeb73db1 | ||
|
|
ff419f0b60 | ||
|
|
537a9c0568 | ||
|
|
843783d6cb | ||
|
|
07abed0067 | ||
|
|
fe885860e3 | ||
|
|
0dd3ff29f2 | ||
|
|
576523021e | ||
|
|
9d8a38f324 | ||
|
|
2c78aab3dc | ||
|
|
45c8b00339 | ||
|
|
9156e5a6b6 | ||
|
|
cc792ddd57 | ||
|
|
b8d60f0069 | ||
|
|
b2deab544b | ||
|
|
f96c1eda70 | ||
|
|
e9bbbb6a04 | ||
|
|
efcdbf2e3d | ||
|
|
6e12e2fa59 | ||
|
|
a31ece0974 | ||
|
|
06d85b66f1 | ||
|
|
af830812db | ||
|
|
3f0600fed7 | ||
|
|
4e21e04a48 | ||
|
|
9779f2a7e6 | ||
|
|
a98f6d8e8a | ||
|
|
d93f33d919 | ||
|
|
564ab219c6 | ||
|
|
026d8f4941 | ||
|
|
4b2193436e | ||
|
|
dfb558ae99 | ||
|
|
76731e852d | ||
|
|
b794c22ac0 | ||
|
|
b778cea34f | ||
|
|
a1582c3e65 | ||
|
|
977503fa79 | ||
|
|
a809284a14 | ||
|
|
8e3cbd2d82 | ||
|
|
f3147af2f7 | ||
|
|
86d686fe1d | ||
|
|
7d52ae16d5 | ||
|
|
c882ebe030 | ||
|
|
d80a258c8b | ||
|
|
96d0447df0 | ||
|
|
65769f3726 | ||
|
|
315b5bad46 | ||
|
|
692138c40b | ||
|
|
5c696e5a3c | ||
|
|
ebf3e2e65b | ||
|
|
d302d6f857 | ||
|
|
3084f24278 | ||
|
|
efdab37f3f | ||
|
|
47f6fee279 | ||
|
|
460caa7823 | ||
|
|
5d55b21fb6 | ||
|
|
4f4e0a21f8 |
No files matched your search
@@ -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.1 \
|
||||
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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
* text=auto eol=lf
|
||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||
@@ -0,0 +1,3 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
custom: ['https://wekan.team/commercial-support/']
|
||||
@@ -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,12 +17,12 @@ Other Wekan issues can be added here.
|
||||
* Http frontend if any (Caddy, Nginx, Apache, see config examples from Wekan GitHub wiki first):
|
||||
* Node Version:
|
||||
* MongoDB Version:
|
||||
* ROOT_URL environment variable http(s)://(subdomain).example.com(/suburl):
|
||||
* Wekan only works on newest desktop Firefox/Chromium/Chrome/Edge/Chromium Edge and mobile Chrome. What webbrowser version are you using?
|
||||
|
||||
**Problem description**:
|
||||
- *REQUIRED: Add recorded animated gif about how it works currently, and screenshot mockups how it should work. Use peek to record animgif in Linux https://github.com/phw/peek*
|
||||
- *Explain steps how to reproduce*
|
||||
- *In webbrowser, what does show Right Click / Inspect / Console ? Chrome shows more detailed info than Firefox.*
|
||||
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ?*
|
||||
- *If using Docker, what does show command `sudo docker logs wekan-app` ?*
|
||||
- *If using Snap, what does show command `sudo snap logs wekan.wekan` ? Please anonymize logs.*
|
||||
- *If using Docker, what does show command `sudo docker logs wekan-app` ? Please anonymize logs.*
|
||||
- *If logs are very long, attach them in .zip file*
|
||||
+1
-1
@@ -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
|
||||
+4
-4
@@ -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.1
|
||||
TRAVIS_NPM_VERSION: 6.4.1
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -y
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Vendored
+28
@@ -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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
+343
@@ -1,3 +1,346 @@
|
||||
# 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:
|
||||
|
||||
- [Limit card width to fixed size](https://github.com/wekan/wekan/commit/0dd3ff29f2b558bc912b330f178347035dcc46c7).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix](https://github.com/wekan/wekan/pull/2645) [selecting user accounts when importing from Trello](https://github.com/wekan/wekan/issues/2638).
|
||||
Thanks to justrinr1234.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.24 2019-08-22 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Snap: Delete old MongoDB log, and log to syslog instead, because syslog usually already has
|
||||
log rotation](https://github.com/wekan/wekan/commit/cc792ddd57691bb54972c73b9c861c768fce8c34).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.23 2019-08-20 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix login did not work](https://github.com/wekan/wekan/commit/b2deab544bfeea49017bec27f92f1269b0b7ec43).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.22 2019-08-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Wrap minicard text labels to multiple rows](https://github.com/wekan/wekan/commit/af830812dbbf7d766a754d937308b11373c66e5a).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
|
||||
Thanks to xet7 and justinr1234.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.21 2019-08-16 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [In the filter menu, 1) Turning on "show archive" will request archived lists and show them on the ListView.
|
||||
2) Turning on "hide empty lists" will hide empty lists on the ListView](https://github.com/wekan/wekan/pull/2632).
|
||||
Thanks to urakagi.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix mismatched queries](https://github.com/wekan/wekan/pull/2628).
|
||||
Thanks to justinr1234.
|
||||
- [Fix Summernote too wide when in mobile screen](https://github.com/wekan/wekan/issues/2621).
|
||||
Thanks to whowillcare.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.20 2019-08-15 Wekan release
|
||||
|
||||
This release fixes the following security issues:
|
||||
|
||||
- [Revert permission change](https://github.com/wekan/wekan/commit/d302d6f857657ada229f78d9fcd32f63753d9779),
|
||||
related [#2590](https://github.com/wekan/wekan/issues/2590) and
|
||||
[these comments](https://github.com/wekan/wekan/commit/9f6d615ee5bbdb7552e6bdcae75a76a7f74fef7a#commitcomment-34636513).
|
||||
Thanks to road42, justinr1234 and xet7.
|
||||
|
||||
and adds the following new features:
|
||||
|
||||
- On board, BoardAdmin and normal user can now [invite new user directly
|
||||
with email address](https://github.com/wekan/wekan/issues/2060),
|
||||
[without using Admin Panel or registering
|
||||
at /sign-up](https://github.com/wekan/wekan/commit/5c696e5a3c70d31a7af6e47cbcf691f6c18eb384).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix bug: When on board, clicking Admin Panel redirects to All Boards page, so it did require
|
||||
to click Admin Panel again](https://github.com/wekan/wekan/commit/d302d6f857657ada229f78d9fcd32f63753d9779).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.18 2019-08-15 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
+3
-3
@@ -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.1 \
|
||||
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
|
||||
|
||||
@@ -54,13 +54,12 @@ that by providing one-click installation on various platforms.
|
||||
- [Features][features]: Wekan has real-time user interface.
|
||||
- [Platforms][platforms]: Wekan supports many platforms.
|
||||
Wekan is critical part of new platforms Wekan is currently being integrated to.
|
||||
- [Integrations][integrations]: Current possible integrations and future plans.
|
||||
|
||||
## Requirements
|
||||
|
||||
- 64bit: Linux [Snap](https://github.com/wekan/wekan-snap/wiki/Install) or [Sandstorm](https://sandstorm.io) /
|
||||
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
|
||||
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms). [ARM progress](https://github.com/wekan/wekan/issues/1053#issuecomment-410919264).
|
||||
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
|
||||
- 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM.
|
||||
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/devel/docker-compose.yml): 3 frontend servers,
|
||||
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
|
||||
@@ -74,41 +73,25 @@ that by providing one-click installation on various platforms.
|
||||
Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet.
|
||||
Some bug can cause Wekan board to not load at all, requiring manual fixing of database content.
|
||||
|
||||
## Roadmap
|
||||
## Roadmap and Demo
|
||||
|
||||
[Roadmap Milestones](https://github.com/wekan/wekan/milestones)
|
||||
[Roadmap][roadmap_wekan] - Public read-only board at Wekan demo.
|
||||
|
||||
[Developer Documentation][dev_docs]
|
||||
|
||||
- There is many companies and individuals contributing code to Wekan, to add features and bugfixes
|
||||
[many times a day](https://github.com/wekan/wekan/blob/devel/CHANGELOG.md).
|
||||
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
|
||||
- [Commercial Support](https://wekan.team).
|
||||
- [Bounties](https://wekan.team/bounties/index.html).
|
||||
- [Commercial Support](https://wekan.team/commercial-support/).
|
||||
|
||||
We also welcome sponsors for features and bugfixes.
|
||||
By working directly with Wekan you get the benefit of active maintenance and new features added by growing Wekan developer community.
|
||||
|
||||
## Demo
|
||||
|
||||
[Wekan demo][roadmap_wefork]
|
||||
|
||||
## Screenshot
|
||||
|
||||
[More screenshots at Features page](https://github.com/wekan/wekan/wiki/Features)
|
||||
|
||||
[![Screenshot of Wekan][screenshot_wefork]][roadmap_wefork]
|
||||
|
||||
## Stable
|
||||
|
||||
- master+devel branch. At release, devel is merged to master.
|
||||
- Receives fixes and features that have been tested at edge that they work.
|
||||
- If you want automatic updates, [use Snap](https://github.com/wekan/wekan-snap/wiki/Install).
|
||||
- If you want to test before update, [use Docker quay.io release tags](https://github.com/wekan/wekan/wiki/Docker).
|
||||
|
||||
## Edge
|
||||
|
||||
- edge branch. All new fixes and features are added to here first. [Testing Edge](https://github.com/wekan/wekan-snap/wiki/Snap-Developer-Docs).
|
||||
[![Screenshot of Wekan][screenshot_wekan]][roadmap_wekan]
|
||||
|
||||
## License
|
||||
|
||||
@@ -117,14 +100,11 @@ with [Meteor](https://www.meteor.com).
|
||||
|
||||
[platforms]: https://github.com/wekan/wekan/wiki/Platforms
|
||||
[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
|
||||
[screenshot_wekan]: http://i.imgur.com/cI4jW2h.png
|
||||
[screenshot_wefork]: https://wekan.github.io/wekan-markdown.png
|
||||
[screenshot_wekan]: https://wekan.github.io/wekan-markdown.png
|
||||
[features]: https://github.com/wekan/wekan/wiki/Features
|
||||
[integrations]: https://github.com/wekan/wekan/wiki/Integrations
|
||||
[roadmap_wekan]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
|
||||
[roadmap_wefork]: https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap
|
||||
[roadmap_wekan]: https://boards.wekan.team/b/D2SzJKZDS4Z48yeQH/wekan-open-source-kanban-board-with-mit-license
|
||||
[wekan_issues]: https://github.com/wekan/wekan/issues
|
||||
[wekan_issues]: https://github.com/wekan/wekan/issues
|
||||
[wefork_issues]: https://github.com/wefork/wekan/issues
|
||||
[docker_image]: https://hub.docker.com/r/wekanteam/wekan/
|
||||
[travis_badge]: https://travis-ci.org/wekan/wekan.svg?branch=devel
|
||||
[travis_status]: https://travis-ci.org/wekan/wekan
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v3.18.0"
|
||||
appVersion: "v3.47.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -7,8 +7,8 @@ template(name="board")
|
||||
+boardBody
|
||||
else
|
||||
//-- XXX We need a better error message in case the board has been archived
|
||||
//-- +message(label="board-not-found")
|
||||
| {{goHome}}
|
||||
+message(label="board-not-found")
|
||||
//-- | {{goHome}}
|
||||
else
|
||||
+spinner
|
||||
|
||||
|
||||
@@ -309,25 +309,46 @@ BlazeComponent.extendComponent({
|
||||
events(start, end, timezone, callback) {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
const events = [];
|
||||
const pushEvent = function(card, title, start, end, extraCls) {
|
||||
start = start || card.startAt;
|
||||
end = end || card.endAt;
|
||||
title = title || card.title;
|
||||
const className =
|
||||
(extraCls ? `${extraCls} ` : '') +
|
||||
(card.color ? `calendar-event-${card.color}` : '');
|
||||
events.push({
|
||||
id: card._id,
|
||||
title,
|
||||
start,
|
||||
end: end || card.endAt,
|
||||
allDay:
|
||||
Math.abs(end.getTime() - start.getTime()) / 1000 === 24 * 3600,
|
||||
url: FlowRouter.url('card', {
|
||||
boardId: currentBoard._id,
|
||||
slug: currentBoard.slug,
|
||||
cardId: card._id,
|
||||
}),
|
||||
className,
|
||||
});
|
||||
};
|
||||
currentBoard
|
||||
.cardsInInterval(start.toDate(), end.toDate())
|
||||
.forEach(function(card) {
|
||||
events.push({
|
||||
id: card._id,
|
||||
title: card.title,
|
||||
start: card.startAt,
|
||||
end: card.endAt,
|
||||
allDay:
|
||||
Math.abs(card.endAt.getTime() - card.startAt.getTime()) /
|
||||
1000 ===
|
||||
24 * 3600,
|
||||
url: FlowRouter.url('card', {
|
||||
boardId: currentBoard._id,
|
||||
slug: currentBoard.slug,
|
||||
cardId: card._id,
|
||||
}),
|
||||
});
|
||||
pushEvent(card);
|
||||
});
|
||||
currentBoard
|
||||
.cardsDueInBetween(start.toDate(), end.toDate())
|
||||
.forEach(function(card) {
|
||||
pushEvent(
|
||||
card,
|
||||
`${card.title} ${TAPi18n.__('card-due')}`,
|
||||
card.dueAt,
|
||||
new Date(card.dueAt.getTime() + 36e5),
|
||||
);
|
||||
});
|
||||
events.sort(function(first, second) {
|
||||
return first.id > second.id ? 1 : -1;
|
||||
});
|
||||
callback(events);
|
||||
},
|
||||
eventResize(event, delta, revertFunc) {
|
||||
|
||||
@@ -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
|
||||
@@ -241,6 +241,7 @@ setBoardColor(color)
|
||||
background-color #ffffff !important
|
||||
padding 15px !important
|
||||
border 1px solid #000000 !important
|
||||
word-wrap: break-word
|
||||
|
||||
// When card has comment, emphasis on minicard:
|
||||
// bigger red comment icon and number of comments,
|
||||
|
||||
@@ -321,6 +321,19 @@ BlazeComponent.extendComponent({
|
||||
parentComponent.showOverlay.set(true);
|
||||
parentComponent.mouseHasEnterCardDetails = true;
|
||||
},
|
||||
'mousedown .js-card-details'() {
|
||||
Session.set('cardDetailsIsDragging', false);
|
||||
Session.set('cardDetailsIsMouseDown', true);
|
||||
},
|
||||
'mousemove .js-card-details'() {
|
||||
if (Session.get('cardDetailsIsMouseDown')) {
|
||||
Session.set('cardDetailsIsDragging', true);
|
||||
}
|
||||
},
|
||||
'mouseup .js-card-details'() {
|
||||
Session.set('cardDetailsIsDragging', false);
|
||||
Session.set('cardDetailsIsMouseDown', false);
|
||||
},
|
||||
'click #toggleButton'() {
|
||||
Meteor.call('toggleSystemMessages');
|
||||
},
|
||||
@@ -777,7 +790,14 @@ BlazeComponent.extendComponent({
|
||||
EscapeActions.register(
|
||||
'detailsPane',
|
||||
() => {
|
||||
Utils.goBoardId(Session.get('currentBoard'));
|
||||
if (Session.get('cardDetailsIsDragging')) {
|
||||
// Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing
|
||||
Session.set('cardDetailsIsDragging', false);
|
||||
Session.set('cardDetailsIsMouseDown', false);
|
||||
} else {
|
||||
// Prevent close card when the user is selecting text and moves the mouse cursor outside the card detail area
|
||||
Utils.goBoardId(Session.get('currentBoard'));
|
||||
}
|
||||
},
|
||||
() => {
|
||||
return !Session.equals('currentCard', null);
|
||||
|
||||
@@ -99,7 +99,9 @@
|
||||
&.card-details-item-end,
|
||||
&.card-details-item-customfield,
|
||||
&.card-details-item-name
|
||||
max-width: 50%
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 48%
|
||||
flex-grow: 1
|
||||
|
||||
.card-details-item-title
|
||||
|
||||
@@ -128,6 +128,9 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
& .viewer
|
||||
p
|
||||
margin-bottom: 2px
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 420px
|
||||
|
||||
.js-delete-checklist-item
|
||||
margin: 0 0 0.5em 1.33em
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
margin-right: 4px
|
||||
margin-bottom: 5px
|
||||
padding: 3px 8px
|
||||
max-width: 100%
|
||||
max-width: 210px
|
||||
min-width: 8px
|
||||
overflow: ellipsis
|
||||
word-wrap: break-word
|
||||
height: 18px
|
||||
vertical-align: bottom
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
.minicard-labels
|
||||
float: right
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
|
||||
.minicard-label
|
||||
width: 11px
|
||||
@@ -92,8 +93,11 @@
|
||||
.minicard-custom-field
|
||||
display:flex;
|
||||
.minicard-custom-field-item
|
||||
max-width:50%;
|
||||
flex-grow:1;
|
||||
flex-grow: 1
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 100px
|
||||
margin-right: 4px
|
||||
.handle
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
@@ -101,7 +105,8 @@
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
display:none;
|
||||
@media only screen and (max-width: 1199px) {
|
||||
// @media only screen and (max-width: 1199px) {
|
||||
@media only screen and (max-width: 800px) {
|
||||
display:block;
|
||||
}
|
||||
.fa-arrows
|
||||
@@ -111,7 +116,9 @@
|
||||
p:last-child
|
||||
margin-bottom: 0
|
||||
.viewer
|
||||
display: inline-block
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 230px
|
||||
.dates
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -121,7 +128,7 @@
|
||||
.badges
|
||||
float: left
|
||||
margin-top: 7px
|
||||
color: darken(white, 50%)
|
||||
color: darken(white, 80%)
|
||||
|
||||
&:empty
|
||||
display: none
|
||||
|
||||
@@ -211,22 +211,20 @@ BlazeComponent.extendComponent({
|
||||
this.parentComponent().nextStep();
|
||||
},
|
||||
|
||||
onMapMember(evt) {
|
||||
const memberToMap = this.currentData();
|
||||
if (memberToMap.wekan) {
|
||||
// todo xxx ask for confirmation?
|
||||
this.unmapMember(memberToMap.id);
|
||||
} else {
|
||||
this.setSelectedMember(memberToMap.id);
|
||||
Popup.open('importMapMembersAdd')(evt);
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
submit: this.onSubmit,
|
||||
'click .js-select-member': this.onMapMember,
|
||||
'click .js-select-member'(evt) {
|
||||
const memberToMap = this.currentData();
|
||||
if (memberToMap.wekan) {
|
||||
// todo xxx ask for confirmation?
|
||||
this.unmapMember(memberToMap.id);
|
||||
} else {
|
||||
this.setSelectedMember(memberToMap.id);
|
||||
Popup.open('importMapMembersAdd')(evt);
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
@@ -31,7 +31,7 @@ BlazeComponent.extendComponent({
|
||||
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
|
||||
const $cards = this.$('.js-minicards');
|
||||
|
||||
if (window.matchMedia('(max-width: 1199px)').matches) {
|
||||
if (Utils.isMiniScreen()) {
|
||||
$('.js-minicards').sortable({
|
||||
handle: '.handle',
|
||||
});
|
||||
|
||||
@@ -701,12 +701,31 @@ BlazeComponent.extendComponent({
|
||||
this.listId = this.parentComponent().data()._id;
|
||||
this.swimlaneId = '';
|
||||
|
||||
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) {
|
||||
const boardView = (Meteor.user().profile || {}).boardView;
|
||||
if (boardView === 'board-view-swimlanes') {
|
||||
this.swimlaneId = this.parentComponent()
|
||||
.parentComponent()
|
||||
.parentComponent()
|
||||
.data()._id;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const boardView = (Meteor.user().profile || {}).boardView;
|
||||
if (boardView === 'board-view-swimlanes') {
|
||||
this.swimlaneId = this.parentComponent()
|
||||
.parentComponent()
|
||||
.parentComponent()
|
||||
.data()._id;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
|
||||
@@ -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,31 +163,51 @@ 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() {
|
||||
const $this = $(this),
|
||||
isActive = $this.hasClass('active');
|
||||
$('.minicards').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
|
||||
$('.minicards,#header-quick-access').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
|
||||
});
|
||||
}
|
||||
},
|
||||
@@ -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;
|
||||
|
||||
@@ -378,6 +378,12 @@ a
|
||||
|
||||
.viewer
|
||||
min-height: 18px
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
|
||||
table
|
||||
word-wrap: normal
|
||||
word-break: normal
|
||||
|
||||
ol
|
||||
list-style-type: decimal
|
||||
@@ -425,6 +431,9 @@ a
|
||||
height: 100%
|
||||
margin: 0px
|
||||
|
||||
.panel-default
|
||||
width: 83vw
|
||||
|
||||
.inline-input
|
||||
height: 37px
|
||||
margin: 8px 10px 0 0
|
||||
|
||||
@@ -17,7 +17,7 @@ BlazeComponent.extendComponent({
|
||||
this.autorun(() => {
|
||||
const limit = this.page.get() * usersPerPage;
|
||||
|
||||
this.subscribe('people', limit, () => {
|
||||
this.subscribe('people', this.findUsersOptions.get(), limit, () => {
|
||||
this.loadNextPageLocked = false;
|
||||
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
|
||||
this.calculateNextPeak();
|
||||
@@ -85,7 +85,7 @@ BlazeComponent.extendComponent({
|
||||
const users = Users.find(this.findUsersOptions.get(), {
|
||||
fields: { _id: true },
|
||||
});
|
||||
this.number.set(users.count());
|
||||
this.number.set(users.count(false));
|
||||
return users;
|
||||
},
|
||||
peopleNumber() {
|
||||
|
||||
@@ -18,6 +18,8 @@ template(name="setting")
|
||||
a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}}
|
||||
li
|
||||
a.js-setting-menu(data-id="layout-setting") {{_ 'layout'}}
|
||||
li
|
||||
a.js-setting-menu(data-id="webhook-setting") {{_ 'global-webhook'}}
|
||||
.main-body
|
||||
if loading.get
|
||||
+spinner
|
||||
@@ -31,6 +33,12 @@ template(name="setting")
|
||||
+announcementSettings
|
||||
else if layoutSetting.get
|
||||
+layoutSettings
|
||||
else if webhookSetting.get
|
||||
+webhookSettings
|
||||
|
||||
template(name="webhookSettings")
|
||||
span
|
||||
+outgoingWebhooksPopup
|
||||
|
||||
template(name="general")
|
||||
ul#registration-setting.setting-detail
|
||||
|
||||
@@ -7,11 +7,13 @@ BlazeComponent.extendComponent({
|
||||
this.accountSetting = new ReactiveVar(false);
|
||||
this.announcementSetting = new ReactiveVar(false);
|
||||
this.layoutSetting = new ReactiveVar(false);
|
||||
this.webhookSetting = new ReactiveVar(false);
|
||||
|
||||
Meteor.subscribe('setting');
|
||||
Meteor.subscribe('mailServer');
|
||||
Meteor.subscribe('accountSettings');
|
||||
Meteor.subscribe('announcements');
|
||||
Meteor.subscribe('globalwebhooks');
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
@@ -83,6 +85,7 @@ BlazeComponent.extendComponent({
|
||||
this.accountSetting.set('account-setting' === targetID);
|
||||
this.announcementSetting.set('announcement-setting' === targetID);
|
||||
this.layoutSetting.set('layout-setting' === targetID);
|
||||
this.webhookSetting.set('webhook-setting' === targetID);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -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
|
||||
.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
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
Sidebar = null;
|
||||
|
||||
const defaultView = 'home';
|
||||
const MCB = '.materialCheckBox';
|
||||
const CKCLS = 'is-checked';
|
||||
|
||||
const viewTitles = {
|
||||
filter: 'filter-cards',
|
||||
@@ -280,44 +282,71 @@ Template.membersWidget.events({
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
boardId() {
|
||||
return Session.get('currentBoard') || Integrations.Const.GLOBAL_WEBHOOK_ID;
|
||||
},
|
||||
integrations() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const boardId = this.boardId();
|
||||
return Integrations.find({ boardId: `${boardId}` }).fetch();
|
||||
},
|
||||
|
||||
integration(id) {
|
||||
const boardId = Session.get('currentBoard');
|
||||
return Integrations.findOne({ _id: id, boardId: `${boardId}` });
|
||||
types() {
|
||||
return Integrations.Const.WEBHOOK_TYPES;
|
||||
},
|
||||
integration(cond) {
|
||||
const boardId = this.boardId();
|
||||
const condition = { boardId, ...cond };
|
||||
for (const k in condition) {
|
||||
if (!condition[k]) delete condition[k];
|
||||
}
|
||||
return Integrations.findOne(condition);
|
||||
},
|
||||
onCreated() {
|
||||
this.disabled = new ReactiveVar(false);
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click a.flex'(evt) {
|
||||
this.disabled.set(!this.disabled.get());
|
||||
$(evt.target).toggleClass(CKCLS, this.disabled.get());
|
||||
},
|
||||
submit(evt) {
|
||||
evt.preventDefault();
|
||||
const url = evt.target.url.value;
|
||||
const boardId = Session.get('currentBoard');
|
||||
const boardId = this.boardId();
|
||||
let id = null;
|
||||
let integration = null;
|
||||
const title = evt.target.title.value;
|
||||
const token = evt.target.token.value;
|
||||
const type = evt.target.type.value;
|
||||
const enabled = !this.disabled.get();
|
||||
let remove = false;
|
||||
const values = {
|
||||
url,
|
||||
type,
|
||||
token,
|
||||
title,
|
||||
enabled,
|
||||
};
|
||||
if (evt.target.id) {
|
||||
id = evt.target.id.value;
|
||||
integration = this.integration(id);
|
||||
if (url) {
|
||||
Integrations.update(integration._id, {
|
||||
$set: {
|
||||
url: `${url}`,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
Integrations.remove(integration._id);
|
||||
}
|
||||
integration = this.integration({ _id: id });
|
||||
remove = !url;
|
||||
} else if (url) {
|
||||
integration = this.integration({ url, token });
|
||||
}
|
||||
if (remove) {
|
||||
Integrations.remove(integration._id);
|
||||
} else if (integration && integration._id) {
|
||||
Integrations.update(integration._id, {
|
||||
$set: values,
|
||||
});
|
||||
} else if (url) {
|
||||
Integrations.insert({
|
||||
...values,
|
||||
userId: Meteor.userId(),
|
||||
enabled: true,
|
||||
type: 'outgoing-webhooks',
|
||||
url: `${url}`,
|
||||
boardId: `${boardId}`,
|
||||
boardId,
|
||||
activities: ['all'],
|
||||
});
|
||||
}
|
||||
@@ -474,12 +503,12 @@ BlazeComponent.extendComponent({
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
|
||||
this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
|
||||
$('.js-field-has-subtasks .materialCheckBox').toggleClass(
|
||||
'is-checked',
|
||||
$(`.js-field-has-subtasks ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsSubtasks,
|
||||
);
|
||||
$('.js-field-has-subtasks').toggleClass(
|
||||
'is-checked',
|
||||
CKCLS,
|
||||
this.currentBoard.allowsSubtasks,
|
||||
);
|
||||
$('.js-field-deposit-board').prop(
|
||||
@@ -515,15 +544,12 @@ BlazeComponent.extendComponent({
|
||||
];
|
||||
options.forEach(function(element) {
|
||||
if (element !== value) {
|
||||
$(`#${element} .materialCheckBox`).toggleClass(
|
||||
'is-checked',
|
||||
false,
|
||||
);
|
||||
$(`#${element}`).toggleClass('is-checked', false);
|
||||
$(`#${element} ${MCB}`).toggleClass(CKCLS, false);
|
||||
$(`#${element}`).toggleClass(CKCLS, false);
|
||||
}
|
||||
});
|
||||
$(`#${value} .materialCheckBox`).toggleClass('is-checked', true);
|
||||
$(`#${value}`).toggleClass('is-checked', true);
|
||||
$(`#${value} ${MCB}`).toggleClass(CKCLS, true);
|
||||
$(`#${value}`).toggleClass(CKCLS, true);
|
||||
this.currentBoard.setPresentParentTask(value);
|
||||
evt.preventDefault();
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
archivedRequested = false;
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
@@ -12,6 +13,7 @@ BlazeComponent.extendComponent({
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
if (!currentBoardId) return;
|
||||
const handle = subManager.subscribe('board', currentBoardId, true);
|
||||
archivedRequested = true;
|
||||
Tracker.nonreactive(() => {
|
||||
Tracker.autorun(() => {
|
||||
this.isArchiveReady.set(handle.ready());
|
||||
|
||||
@@ -56,6 +56,22 @@ template(name="filterSidebar")
|
||||
if Filter.customFields.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-archive-filter
|
||||
span.sidebar-list-item-description
|
||||
| {{_ 'filter-show-archive'}}
|
||||
if Filter.archive.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-hideEmpty-filter
|
||||
span.sidebar-list-item-description
|
||||
| {{_ 'filter-hide-empty'}}
|
||||
if Filter.hideEmpty.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
span {{_ 'advanced-filter-label'}}
|
||||
input.js-field-advanced-filter(type="text")
|
||||
span {{_ 'advanced-filter-description'}}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
@@ -12,6 +14,23 @@ BlazeComponent.extendComponent({
|
||||
Filter.members.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
},
|
||||
'click .js-toggle-archive-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.archive.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
if (!currentBoardId) return;
|
||||
subManager.subscribe(
|
||||
'board',
|
||||
currentBoardId,
|
||||
Filter.archive.isSelected(),
|
||||
);
|
||||
},
|
||||
'click .js-toggle-hideEmpty-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.hideEmpty.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
},
|
||||
'click .js-toggle-custom-fields-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.customFields.toggle(this.currentData()._id);
|
||||
|
||||
@@ -33,7 +33,8 @@ template(name="listsGroup")
|
||||
+addListForm
|
||||
else
|
||||
each lists
|
||||
+list(this)
|
||||
if visible this
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id null
|
||||
+cardDetails(currentCard)
|
||||
if currentUser.isBoardMember
|
||||
|
||||
@@ -246,6 +246,24 @@ BlazeComponent.extendComponent({
|
||||
currentCardIsInThisList(listId, swimlaneId) {
|
||||
return currentCardIsInThisList(listId, swimlaneId);
|
||||
},
|
||||
visible(list) {
|
||||
if (list.archived) {
|
||||
// Show archived list only when filter archive is on or archive is selected
|
||||
if (!(Filter.archive.isSelected() || archivedRequested)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (Filter.hideEmpty.isSelected()) {
|
||||
const swimlaneId = this.parentComponent()
|
||||
.parentComponent()
|
||||
.data()._id;
|
||||
const cards = list.cards(swimlaneId);
|
||||
if (cards.count() === 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
onRendered() {
|
||||
const boardComponent = this.parentComponent();
|
||||
const $listsDom = this.$('.js-lists');
|
||||
|
||||
@@ -21,7 +21,15 @@ DatePicker = BlazeComponent.extendComponent({
|
||||
function(evt) {
|
||||
this.find('#date').value = moment(evt.date).format('L');
|
||||
this.error.set('');
|
||||
this.find('#time').focus();
|
||||
const timeInput = this.find('#time');
|
||||
timeInput.focus();
|
||||
if (!timeInput.value) {
|
||||
const currentHour = evt.date.getHours();
|
||||
const defaultMoment = moment(
|
||||
currentHour > 0 ? evt.date : '1970-01-01 08:00:00',
|
||||
); // default to 8:00 am local time
|
||||
timeInput.value = defaultMoment.format('LT');
|
||||
}
|
||||
}.bind(this),
|
||||
);
|
||||
|
||||
|
||||
@@ -451,10 +451,12 @@ Filter = {
|
||||
// before changing the schema.
|
||||
labelIds: new SetFilter(),
|
||||
members: new SetFilter(),
|
||||
archive: new SetFilter(),
|
||||
hideEmpty: new SetFilter(),
|
||||
customFields: new SetFilter('_id'),
|
||||
advanced: new AdvancedFilter(),
|
||||
|
||||
_fields: ['labelIds', 'members', 'customFields'],
|
||||
_fields: ['labelIds', 'members', 'archive', 'hideEmpty', 'customFields'],
|
||||
|
||||
// We don't filter cards that have been added after the last filter change. To
|
||||
// implement this we keep the id of these cards in this `_exceptions` fields
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@ window.Popup = new (class {
|
||||
title: self._getTitle(popupName),
|
||||
depth: self._stack.length,
|
||||
offset: self._getOffset(openerElement),
|
||||
dataContext: (this.currentData && this.currentData()) || this,
|
||||
dataContext: (this && this.currentData && this.currentData()) || this,
|
||||
});
|
||||
|
||||
// If there are no popup currently opened we use the Blaze API to render
|
||||
|
||||
@@ -45,6 +45,7 @@ $.fn.escapeableTextComplete = function(strategies, options, ...otherArgs) {
|
||||
});
|
||||
},
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
EscapeActions.register('textcomplete', () => {}, () => dropdownMenuIsOpened, {
|
||||
|
||||
@@ -23,7 +23,6 @@ Utils = {
|
||||
})
|
||||
);
|
||||
},
|
||||
|
||||
MAX_IMAGE_PIXEL: Meteor.settings.public.MAX_IMAGE_PIXEL,
|
||||
COMPRESS_RATIO: Meteor.settings.public.IMAGE_COMPRESS_RATIO,
|
||||
processUploadedAttachment(card, fileObj, callback) {
|
||||
|
||||
+10
-8
@@ -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
|
||||
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+12
-3
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
@@ -508,9 +510,14 @@
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"webhook-title": "Webhook Name",
|
||||
"webhook-token": "Token (Optional for Authentication)",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"bidirectional-webhooks": "Two-Way Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"boardCardTitlePopup-title": "Card Title Filter",
|
||||
"disable-webhook": "Disable This Webhook",
|
||||
"global-webhook": "Global Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Unknown)",
|
||||
"Node_version": "Node version",
|
||||
@@ -724,12 +731,14 @@
|
||||
"almostdue": "current due time %s is approaching",
|
||||
"pastdue": "current due time %s is past",
|
||||
"duenow": "current due time %s is today",
|
||||
"act-withDue": "__card__ due reminders [__board__]",
|
||||
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
|
||||
"act-withDue": "__list__/__card__ due reminders [__board__]",
|
||||
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
||||
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
||||
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
|
||||
"act-atUserComment": "You were mentioned in [__board__] __card__",
|
||||
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
|
||||
"delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.",
|
||||
"accounts-allowUserDelete": "Allow users to self delete their account",
|
||||
"hide-minicard-label-text": "Hide minicard label text"
|
||||
"hide-minicard-label-text": "Hide minicard label text",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles"
|
||||
}
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+14
-5
@@ -73,8 +73,8 @@
|
||||
"activity-unchecked-item-card": "a décoché %s dans la checklist %s",
|
||||
"activity-checklist-completed-card": "a complété la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"activity-checklist-uncompleted-card": "a rendu incomplète la checklist %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-editComment": "commentaire modifié %s",
|
||||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"add-attachment": "Ajouter une pièce jointe",
|
||||
"add-board": "Ajouter un tableau",
|
||||
"add-card": "Ajouter une carte",
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Aucune étiquette",
|
||||
"filter-no-member": "Aucun participant",
|
||||
"filter-no-custom-fields": "Pas de champs personnalisés",
|
||||
"filter-show-archive": "Montrer les listes archivées",
|
||||
"filter-hide-empty": "Cacher les listes vides",
|
||||
"filter-on": "Le filtre est actif",
|
||||
"filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour modifier les filtres.",
|
||||
"filter-to-selection": "Filtre vers la sélection",
|
||||
@@ -508,9 +510,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",
|
||||
@@ -721,12 +728,14 @@
|
||||
"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"
|
||||
}
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+402
-393
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,741 @@
|
||||
{
|
||||
"accept": "Sprejmi",
|
||||
"act-activity-notify": "Obvestilo o dejavnosti",
|
||||
"act-addAttachment": "dodal priponko __attachment__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-deleteAttachment": "odstranil priponko __attachment__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addSubtask": "dodal podopravilo __subtask__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addLabel": "Dodal oznako __label__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addedLabel": "Dodal oznako __label__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-removeLabel": "Odstranil oznako __label__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-removedLabel": "Odstranil oznako __label__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addChecklist": "dodal kontrolni seznam __checklist__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addChecklistItem": "dodal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-removeChecklist": "odstranil kontrolni seznam __checklist__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-removeChecklistItem": "odstranil postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-checkedItem": "obkljukal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-uncheckedItem": "odkljukal postavko __checklistItem__ kontrolnega seznama __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-completeChecklist": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-uncompleteChecklist": "nedokončan kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-addComment": "komentiral na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-editComment": "uredil komentar na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-deleteComment": "izbrisal komentar na kartici __card__: __comment__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-createBoard": "ustvaril tablo __board__",
|
||||
"act-createSwimlane": "ustvaril plavalno stezo __swimlane__ na tabli __board__",
|
||||
"act-createCard": "ustvaril kartico __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-createCustomField": "ustvaril poljubno polje __customField__ na tabli __board__",
|
||||
"act-deleteCustomField": "izbrisal poljubno polje __customField__ na tabli __board__",
|
||||
"act-setCustomField": "uredil poljubno polje __customField__: __customFieldValue__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-createList": "dodal seznam __list__ na tablo __board__",
|
||||
"act-addBoardMember": "dodal člana __member__ k tabli __board__",
|
||||
"act-archivedBoard": "Tabla __board__ premaknjena v arhiv",
|
||||
"act-archivedCard": "Kartica __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__ premaknjena v arhiv",
|
||||
"act-archivedList": "Seznam __list__ na plavalni stezi __swimlane__ na tabli __board__ premaknjen v arhiv",
|
||||
"act-archivedSwimlane": "Plavalna steza __swimlane__ na tabli __board__ premaknjena v arhiv",
|
||||
"act-importBoard": "uvozil tablo __board__",
|
||||
"act-importCard": "uvozil kartico __card__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-importList": "uvozil seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-joinMember": "dodal član __member__ h kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-moveCard": "premakil kartico __card__ na tabli __board__ iz seznama __oldList__ na plavalni stezi __oldSwimlane__ na seznam __list__ na plavalni stezi __swimlane__",
|
||||
"act-moveCardToOtherBoard": "premaknil kartico __card__ iz seznama __oldList__ na plavalni stezi __oldSwimlane__ na tabli __oldBoard__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-removeBoardMember": "odstranil člana __member__ iz table __board__",
|
||||
"act-restoredCard": "obnovil kartico __card__ na seznam __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-unjoinMember": "odstranil člana __member__ iz kartice __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Dejanja",
|
||||
"activities": "Aktivnosti",
|
||||
"activity": "Aktivnost",
|
||||
"activity-added": "dodal %s v %s",
|
||||
"activity-archived": "%s premaknjeno v arhiv",
|
||||
"activity-attached": "pripel %s v %s",
|
||||
"activity-created": "ustvaril %s",
|
||||
"activity-customfield-created": "ustvaril poljubno polje%s",
|
||||
"activity-excluded": "izključil %s iz %s",
|
||||
"activity-imported": "uvozil %s v %s iz %s",
|
||||
"activity-imported-board": "uvozil %s iz %s",
|
||||
"activity-joined": "se je pridružil na %s",
|
||||
"activity-moved": "premakil %s iz %s na %s",
|
||||
"activity-on": "na %s",
|
||||
"activity-removed": "odstranil %s iz %s",
|
||||
"activity-sent": "poslano %s na %s",
|
||||
"activity-unjoined": "se je odjavil iz %s",
|
||||
"activity-subtask-added": "dodal podopravilo k %s",
|
||||
"activity-checked-item": "obkljukal %s na kontrolnem seznamu %s od %s",
|
||||
"activity-unchecked-item": "odkljukal %s na kontrolnem seznamu %s od %s",
|
||||
"activity-checklist-added": "dodal kontrolni seznam na %s",
|
||||
"activity-checklist-removed": "odstranil kontrolni seznam iz %s",
|
||||
"activity-checklist-completed": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"activity-checklist-uncompleted": "nedokončal kontrolni seznam %s od %s",
|
||||
"activity-checklist-item-added": "dodal postavko kontrolnega seznama na '%s' v %s",
|
||||
"activity-checklist-item-removed": "odstranil postavko kontrolnega seznama iz '%s' v %s",
|
||||
"add": "Dodaj",
|
||||
"activity-checked-item-card": "obkljukal %s na kontrolnem seznamu %s",
|
||||
"activity-unchecked-item-card": "odkljukal %s na kontrolnem seznamu %s",
|
||||
"activity-checklist-completed-card": "dokončal kontrolni seznam __checklist__ na kartici __card__ na seznamu __list__ na plavalni stezi __swimlane__ na tabli __board__",
|
||||
"activity-checklist-uncompleted-card": "nedokončal kontrolni seznam %s",
|
||||
"activity-editComment": "uredil komentar %s",
|
||||
"activity-deleteComment": "izbrisal komentar %s",
|
||||
"add-attachment": "Dodaj priponko",
|
||||
"add-board": "Dodaj tablo",
|
||||
"add-card": "Dodaj kartico",
|
||||
"add-swimlane": "Dodaj plavalno stezo",
|
||||
"add-subtask": "Dodaj podopravilo",
|
||||
"add-checklist": "Dodaj kontrolni seznam",
|
||||
"add-checklist-item": "Dodaj postavko na kontrolni seznam",
|
||||
"add-cover": "Dodaj ovitek",
|
||||
"add-label": "Dodaj oznako",
|
||||
"add-list": "Dodaj seznam",
|
||||
"add-members": "Dodaj člane",
|
||||
"added": "Dodano",
|
||||
"addMemberPopup-title": "Člani",
|
||||
"admin": "Administrator",
|
||||
"admin-desc": "Lahko gleda in ureja kartice, odstrani člane in spreminja nastavitve table.",
|
||||
"admin-announcement": "Najava",
|
||||
"admin-announcement-active": "Aktivna vse-sistemska najava",
|
||||
"admin-announcement-title": "Najava od administratorja",
|
||||
"all-boards": "Vse table",
|
||||
"and-n-other-card": "In __count__ druga kartica",
|
||||
"and-n-other-card_plural": "In __count__ drugih kartic",
|
||||
"apply": "Uporabi",
|
||||
"app-is-offline": "Nalaganje, prosimo počakajte. Osveževanje strani bo povzročilo izgubo podatkov. Če nalaganje ne deluje, preverite, ali se strežnik ni ustavil.",
|
||||
"archive": "Premakni v arhiv",
|
||||
"archive-all": "Premakni vse v arhiv",
|
||||
"archive-board": "Premakni tablo v arhiv",
|
||||
"archive-card": "Premakni kartico v arhiv",
|
||||
"archive-list": "Premakni seznam v arhiv",
|
||||
"archive-swimlane": "Premakni plavalno stezo v arhiv",
|
||||
"archive-selection": "Premakni označeno v arhiv",
|
||||
"archiveBoardPopup-title": "Premakni tablo v arhiv?",
|
||||
"archived-items": "Arhiv",
|
||||
"archived-boards": "Table v arhivu",
|
||||
"restore-board": "Obnovi tablo",
|
||||
"no-archived-boards": "Nobene table ni v arhivu.",
|
||||
"archives": "Arhiv",
|
||||
"template": "Predloga",
|
||||
"templates": "Predloge",
|
||||
"assign-member": "Dodeli člana",
|
||||
"attached": "pripeto",
|
||||
"attachment": "Priponka",
|
||||
"attachment-delete-pop": "Brisanje priponke je trajno. Ne obstaja razveljavitev.",
|
||||
"attachmentDeletePopup-title": "Briši priponko?",
|
||||
"attachments": "Priponke",
|
||||
"auto-watch": "Samodejno spremljaj ustvarjene table",
|
||||
"avatar-too-big": "Velikost avatarja je prevelika (70kB maks.)",
|
||||
"back": "Nazaj",
|
||||
"board-change-color": "Spremeni barvo",
|
||||
"board-nb-stars": "%s zvezdic",
|
||||
"board-not-found": "Tabla ni najdena",
|
||||
"board-private-info": "Ta tabla bo <strong>privatna</strong>.",
|
||||
"board-public-info": "Ta tabla bo <strong>javna</strong>.",
|
||||
"boardChangeColorPopup-title": "Spremeni ozadje table",
|
||||
"boardChangeTitlePopup-title": "Preimenuj tablo",
|
||||
"boardChangeVisibilityPopup-title": "Spremeni vidnost",
|
||||
"boardChangeWatchPopup-title": "Spremeni opazovanje",
|
||||
"boardMenuPopup-title": "Nastavitve table",
|
||||
"boards": "Table",
|
||||
"board-view": "Pogled table",
|
||||
"board-view-cal": "Koledar",
|
||||
"board-view-swimlanes": "Plavalne steze",
|
||||
"board-view-lists": "Seznami",
|
||||
"bucket-example": "Kot na primer \"Življenjski seznam\"",
|
||||
"cancel": "Prekliči",
|
||||
"card-archived": "Kartica je premaknjena v arhiv.",
|
||||
"board-archived": "Tabla je premaknjena v arhiv.",
|
||||
"card-comments-title": "Ta kartica ima %s komentar.",
|
||||
"card-delete-notice": "Brisanje je trajno. Izgubili boste vsa dejanja povezana s to kartico.",
|
||||
"card-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in kartice ne boste mogli znova odpreti. Razveljavitve ni.",
|
||||
"card-delete-suggest-archive": "Kartico lahko premaknete v arhiv, da jo odstranite s table in ohranite dejavnost.",
|
||||
"card-due": "Rok",
|
||||
"card-due-on": "Rok",
|
||||
"card-spent": "Porabljen čas",
|
||||
"card-edit-attachments": "Uredi priponke",
|
||||
"card-edit-custom-fields": "Uredi poljubna polja",
|
||||
"card-edit-labels": "Uredi oznake",
|
||||
"card-edit-members": "Uredi člane",
|
||||
"card-labels-title": "Spremeni oznake za kartico.",
|
||||
"card-members-title": "Dodaj ali odstrani člane table iz kartice.",
|
||||
"card-start": "Začetek",
|
||||
"card-start-on": "Začne ob",
|
||||
"cardAttachmentsPopup-title": "Pripni od",
|
||||
"cardCustomField-datePopup-title": "Spremeni datum",
|
||||
"cardCustomFieldsPopup-title": "Uredi poljubna polja",
|
||||
"cardDeletePopup-title": "Briši kartico?",
|
||||
"cardDetailsActionsPopup-title": "Dejanja kartice",
|
||||
"cardLabelsPopup-title": "Oznake",
|
||||
"cardMembersPopup-title": "Člani",
|
||||
"cardMorePopup-title": "Več",
|
||||
"cardTemplatePopup-title": "Ustvari predlogo",
|
||||
"cards": "Kartice",
|
||||
"cards-count": "Kartic",
|
||||
"casSignIn": "Vpiši se s CAS",
|
||||
"cardType-card": "Kartica",
|
||||
"cardType-linkedCard": "Povezana kartica",
|
||||
"cardType-linkedBoard": "Povezana tabla",
|
||||
"change": "Spremeni",
|
||||
"change-avatar": "Spremeni avatar",
|
||||
"change-password": "Spremeni geslo",
|
||||
"change-permissions": "Spremeni dovoljenja",
|
||||
"change-settings": "Spremeni nastavitve",
|
||||
"changeAvatarPopup-title": "Spremeni avatar",
|
||||
"changeLanguagePopup-title": "Spremeni jezik",
|
||||
"changePasswordPopup-title": "Spremeni geslo",
|
||||
"changePermissionsPopup-title": "Spremeni dovoljenja",
|
||||
"changeSettingsPopup-title": "Spremeni nastavitve",
|
||||
"subtasks": "Podopravila",
|
||||
"checklists": "Kontrolni seznami",
|
||||
"click-to-star": "Kliknite, da označite tablo z zvezdico.",
|
||||
"click-to-unstar": "Kliknite, da odznačite tablo z zvezdico.",
|
||||
"clipboard": "Odložišče ali povleci & spusti",
|
||||
"close": "Zapri",
|
||||
"close-board": "Zapri tablo",
|
||||
"close-board-pop": "Tablo boste lahko obnovili s klikom na gumb »Arhiviraj« na začetni glavi.",
|
||||
"color-black": "črna",
|
||||
"color-blue": "modra",
|
||||
"color-crimson": "temno rdeča",
|
||||
"color-darkgreen": "temno zelena",
|
||||
"color-gold": "zlata",
|
||||
"color-gray": "siva",
|
||||
"color-green": "zelena",
|
||||
"color-indigo": "indigo",
|
||||
"color-lime": "limeta",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "rožnata",
|
||||
"color-navy": "navy modra",
|
||||
"color-orange": "oranžna",
|
||||
"color-paleturquoise": "bledo turkizna",
|
||||
"color-peachpuff": "breskvasta",
|
||||
"color-pink": "roza",
|
||||
"color-plum": "slivova",
|
||||
"color-purple": "vijolična",
|
||||
"color-red": "rdeča",
|
||||
"color-saddlebrown": "rjava",
|
||||
"color-silver": "srebrna",
|
||||
"color-sky": "nebesna",
|
||||
"color-slateblue": "skrilasto modra",
|
||||
"color-white": "bela",
|
||||
"color-yellow": "rumena",
|
||||
"unset-color": "Onemogoči",
|
||||
"comment": "Komentiraj",
|
||||
"comment-placeholder": "Napiši komentar",
|
||||
"comment-only": "Samo komentar",
|
||||
"comment-only-desc": "Lahko komentirate samo na karticah.",
|
||||
"no-comments": "Ni komentarjev",
|
||||
"no-comments-desc": "Ne morete videti komentarjev in dejavnosti.",
|
||||
"computer": "Računalnik",
|
||||
"confirm-subtask-delete-dialog": "Ste prepričani, da želite izbrisati podopravilo?",
|
||||
"confirm-checklist-delete-dialog": "Ste prepričani, da želite izbrisati kontrolni seznam?",
|
||||
"copy-card-link-to-clipboard": "Kopiraj povezavo kartice na odložišče",
|
||||
"linkCardPopup-title": "Poveži kartico",
|
||||
"searchElementPopup-title": "Išči",
|
||||
"copyCardPopup-title": "Kopiraj kartico",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopiraj predlogo kontrolnega seznama na več kartic",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Naslovi ciljnih kartic in opisi v tem JSON formatu",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"naslov\": \"Naslov prve kartice\", \"opis\":\"Opis prve kartice\"}, {\"naslov\":\"Opis druge kartice\",\"opis\":\"Opis druge kartice\"},{\"naslov\":\"Naslov zadnje kartice\",\"opis\":\"Opis zadnje kartice\"} ]",
|
||||
"create": "Ustvari",
|
||||
"createBoardPopup-title": "Ustvari tablo",
|
||||
"chooseBoardSourcePopup-title": "Uvozi tablo",
|
||||
"createLabelPopup-title": "Ustvari oznako",
|
||||
"createCustomField": "Ustvari polje",
|
||||
"createCustomFieldPopup-title": "Ustvari polje",
|
||||
"current": "trenutno",
|
||||
"custom-field-delete-pop": "Razveljavitve ni. To bo odstranilo to poljubno polje iz vseh kartic in izbrisalo njegovo zgodovino.",
|
||||
"custom-field-checkbox": "Potrditveno polje",
|
||||
"custom-field-date": "Datum",
|
||||
"custom-field-dropdown": "Spustni seznam",
|
||||
"custom-field-dropdown-none": "(nobeno)",
|
||||
"custom-field-dropdown-options": "Možnosti seznama",
|
||||
"custom-field-dropdown-options-placeholder": "Pritisnite enter da dodate več možnosti",
|
||||
"custom-field-dropdown-unknown": "(neznano)",
|
||||
"custom-field-number": "Število",
|
||||
"custom-field-text": "Besedilo",
|
||||
"custom-fields": "Poljubna polja",
|
||||
"date": "Datum",
|
||||
"decline": "Zavrni",
|
||||
"default-avatar": "Privzeti avatar",
|
||||
"delete": "Briši",
|
||||
"deleteCustomFieldPopup-title": "Briši poljubno polje?",
|
||||
"deleteLabelPopup-title": "Briši oznako?",
|
||||
"description": "Opis",
|
||||
"disambiguateMultiLabelPopup-title": "Razdvoji Dejanje Oznake",
|
||||
"disambiguateMultiMemberPopup-title": "Razdvoji dejanje člana",
|
||||
"discard": "Razveljavi",
|
||||
"done": "Končano",
|
||||
"download": "Prenos",
|
||||
"edit": "Uredi",
|
||||
"edit-avatar": "Spremeni avatar",
|
||||
"edit-profile": "Uredi profil",
|
||||
"edit-wip-limit": "Uredi omejitev št. kartic",
|
||||
"soft-wip-limit": "Omehčaj omejitev št. kartic",
|
||||
"editCardStartDatePopup-title": "Spremeni začetni datum",
|
||||
"editCardDueDatePopup-title": "Spremeni datum zapadlosti",
|
||||
"editCustomFieldPopup-title": "Uredi polje",
|
||||
"editCardSpentTimePopup-title": "Spremeni porabljen čas",
|
||||
"editLabelPopup-title": "Spremeni oznako",
|
||||
"editNotificationPopup-title": "Uredi obvestilo",
|
||||
"editProfilePopup-title": "Uredi profil",
|
||||
"email": "E-pošta",
|
||||
"email-enrollAccount-subject": "Up. račun ustvarjen za vas na __siteName__",
|
||||
"email-enrollAccount-text": "Pozdravljeni __user__,\n\nZa začetek uporabe kliknite spodnjo povezavo.\n\n__url__\n\nHvala.",
|
||||
"email-fail": "Pošiljanje e-pošte ni uspelo",
|
||||
"email-fail-text": "Napaka pri poskusu pošiljanja e-pošte",
|
||||
"email-invalid": "Neveljavna e-pošta",
|
||||
"email-invite": "Povabi z uporabo e-pošte",
|
||||
"email-invite-subject": "__inviter__ vam je poslal povabilo",
|
||||
"email-invite-text": "Spoštovani __user__,\n\n__inviter__ vas vabi k sodelovanju na tabli \"__board__\".\n\nProsimo sledite spodnji povezavi:\n\n__url__\n\nHvala.",
|
||||
"email-resetPassword-subject": "Ponastavite geslo na __siteName__",
|
||||
"email-resetPassword-text": "Pozdravljeni __user__,\n\nZa ponastavitev gesla kliknite na spodnjo povezavo.\n\n__url__\n\nHvala.",
|
||||
"email-sent": "E-pošta poslana",
|
||||
"email-verifyEmail-subject": "Preverite svoje e-poštni naslov na __siteName__",
|
||||
"email-verifyEmail-text": "Pozdravljeni __user__,\n\nDa preverite e-poštni naslov za vaš uporabniški račun, kliknite na spodnjo povezavo.\n\n__url__\n\nHvala.",
|
||||
"enable-wip-limit": "Vklopi omejitev št. kartic",
|
||||
"error-board-doesNotExist": "Ta tabla ne obstaja",
|
||||
"error-board-notAdmin": "Če želite to narediti, morate biti skrbnik te table",
|
||||
"error-board-notAMember": "Če želite to narediti, morate biti član te table",
|
||||
"error-json-malformed": "Vaše besedilo ni veljaven JSON",
|
||||
"error-json-schema": "Vaši JSON podatki ne vsebujejo pravilnih informacij v ustreznem formatu",
|
||||
"error-list-doesNotExist": "Seznam ne obstaja",
|
||||
"error-user-doesNotExist": "Uporabnik ne obstaja",
|
||||
"error-user-notAllowSelf": "Ne morete povabiti sebe",
|
||||
"error-user-notCreated": "Ta uporabnik ni ustvarjen",
|
||||
"error-username-taken": "To up. ime že obstaja",
|
||||
"error-email-taken": "E-poštni naslov je že zaseden",
|
||||
"export-board": "Izvozi tablo",
|
||||
"filter": "Filtriraj",
|
||||
"filter-cards": "Filtriraj kartice",
|
||||
"filter-clear": "Počisti filter",
|
||||
"filter-no-label": "Brez oznake",
|
||||
"filter-no-member": "Brez člana",
|
||||
"filter-no-custom-fields": "Brez poljubnih polj",
|
||||
"filter-show-archive": "Prikaži arhivirane sezname",
|
||||
"filter-hide-empty": "Skrij prazne sezname",
|
||||
"filter-on": "Filter vklopljen",
|
||||
"filter-on-desc": "Filtrirane kartice na tej tabli. Kliknite tukaj za urejanje filtra.",
|
||||
"filter-to-selection": "Filtriraj izbrane",
|
||||
"advanced-filter-label": "Napredni filter",
|
||||
"advanced-filter-description": "Napredni filter omogoča pripravo niza, ki vsebuje naslednje operaterje: == != <= >= && || () Preslednica se uporablja kot ločilo med operatorji. Vsa polja po meri lahko filtrirate tako, da vtipkate njihova imena in vrednosti. Na primer: Polje1 == Vrednost1. Opomba: Če polja ali vrednosti vsebujejo presledke, jih morate postaviti v enojne narekovaje. Primer: 'Polje 1' == 'Vrednost 1'. Če želite preskočiti posamezne kontrolne znake (' \\/), lahko uporabite \\. Na primer: Polje1 == I\\'m. Prav tako lahko kombinirate več pogojev. Na primer: F1 == V1 || F1 == V2. Običajno se vsi operaterji interpretirajo od leve proti desni. Vrstni red lahko spremenite tako, da postavite oklepaje. Na primer: F1 == V1 && ( F2 == V2 || F2 == V3 ). Prav tako lahko po besedilu iščete z uporabo pravil regex: F1 == /Tes.*/i",
|
||||
"fullname": "Polno Ime",
|
||||
"header-logo-title": "Pojdi nazaj na stran s tablami.",
|
||||
"hide-system-messages": "Skrij sistemska sporočila",
|
||||
"headerBarCreateBoardPopup-title": "Ustvari tablo",
|
||||
"home": "Domov",
|
||||
"import": "Uvozi",
|
||||
"link": "Poveži",
|
||||
"import-board": "uvozi tablo",
|
||||
"import-board-c": "Uvozi tablo",
|
||||
"import-board-title-trello": "Uvozi tablo iz orodja Trello",
|
||||
"import-board-title-wekan": "Uvozi tablo iz prejšnjega izvoza",
|
||||
"import-sandstorm-backup-warning": "Ne zbrišite podatkov, ki jih uvozite z originalne izvožene table ali Trello, preden preverite ali se tabla uspešno zapre in odpre ali pa boste dobili sporočilo Tabla ni najdena, kar pomeni izgubo podatkov.",
|
||||
"import-sandstorm-warning": "Uvožena tabla bo izbrisala vse obstoječe podatke na tabli in jih zamenjala z uvoženo tablo.",
|
||||
"from-trello": "Iz orodja Trello",
|
||||
"from-wekan": "Od prejšnjega izvoza",
|
||||
"import-board-instruction-trello": "V vaši Trello tabli pojdite na 'Meni', 'Več', 'Natisni in Izvozi', 'Izvozi JSON', in kopirajte prikazano besedilo.",
|
||||
"import-board-instruction-wekan": "V vaši tabli pojdite na 'Meni', 'Izvozi tablo' in kopirajte besedilo iz prenesene datoteke.",
|
||||
"import-board-instruction-about-errors": "Pri napakah med uvozom table v nekaterih primerih uvažanje še deluje, uvožena tabla pa je na strani Vse Table.",
|
||||
"import-json-placeholder": "Tukaj prilepite veljavne JSON podatke",
|
||||
"import-map-members": "Mapiraj člane",
|
||||
"import-members-map": "Vaša uvožena tabla vsebuje nekaj članov. Prosimo mapirajte člane, ki jih želite uvoziti, z vašimi uporabniki.",
|
||||
"import-show-user-mapping": "Preglejte povezane člane",
|
||||
"import-user-select": "Izberite obstoječega uporabnika, ki ga želite uporabiti kot tega člana.",
|
||||
"importMapMembersAddPopup-title": "Izberite člana",
|
||||
"info": "Različica",
|
||||
"initials": "Inicialke",
|
||||
"invalid-date": "Neveljaven datum",
|
||||
"invalid-time": "Neveljaven čas",
|
||||
"invalid-user": "Neveljaven uporabnik",
|
||||
"joined": "se je pridružil",
|
||||
"just-invited": "Povabljeni ste k tej tabli",
|
||||
"keyboard-shortcuts": "Bližnjične tipke",
|
||||
"label-create": "Ustvari Oznako",
|
||||
"label-default": "%s oznaka (privzeto)",
|
||||
"label-delete-pop": "Razveljavitve ni. To bo odstranilo to oznako iz vseh kartic in izbrisalo njeno zgodovino.",
|
||||
"labels": "Oznake",
|
||||
"language": "Jezik",
|
||||
"last-admin-desc": "Ne morete zamenjati vlog, ker mora obstajati vsaj en admin.",
|
||||
"leave-board": "Zapusti tablo",
|
||||
"leave-board-pop": "Ste prepričani, da želite zapustiti tablo __boardTitle__? Odstranjeni boste iz vseh kartic na tej tabli.",
|
||||
"leaveBoardPopup-title": "Zapusti tablo ?",
|
||||
"link-card": "Poveži s to kartico",
|
||||
"list-archive-cards": "Premakni vse kartice v tem seznamu v arhiv",
|
||||
"list-archive-cards-pop": "To bo odstranilo vse kartice tega seznama iz table. Da si ogledate kartice v arhivu in jih vrnete na tablo, kliknite \"Meni\" > \"arhiv\".",
|
||||
"list-move-cards": "Premakni vse kartice na seznamu",
|
||||
"list-select-cards": "Izberi vse kartice na seznamu",
|
||||
"set-color-list": "Nastavi barvo",
|
||||
"listActionPopup-title": "Dejanja seznama",
|
||||
"swimlaneActionPopup-title": "Dejanja plavalnih stez",
|
||||
"swimlaneAddPopup-title": "Dodaj plavalno stezo spodaj",
|
||||
"listImportCardPopup-title": "Uvozi Trello kartico",
|
||||
"listMorePopup-title": "Več",
|
||||
"link-list": "Poveži s tem seznamom",
|
||||
"list-delete-pop": "Vsa dejanja bodo odstranjena iz vira dejavnosti in seznama ne boste mogli obnoviti. Razveljavitve ni.",
|
||||
"list-delete-suggest-archive": "Lahko premaknete seznam v arhiv, da ga odstranite iz table in ohranite dejavnosti.",
|
||||
"lists": "Seznami",
|
||||
"swimlanes": "Plavalne steze",
|
||||
"log-out": "Odjava",
|
||||
"log-in": "Prijava",
|
||||
"loginPopup-title": "Prijava",
|
||||
"memberMenuPopup-title": "Nastavitve članov",
|
||||
"members": "Člani",
|
||||
"menu": "Meni",
|
||||
"move-selection": "Premakni izbiro",
|
||||
"moveCardPopup-title": "Premakni kartico",
|
||||
"moveCardToBottom-title": "Premakni na dno",
|
||||
"moveCardToTop-title": "Premakni na vrh",
|
||||
"moveSelectionPopup-title": "Premakni izbiro",
|
||||
"multi-selection": "Multi-Izbira",
|
||||
"multi-selection-on": "Multi-Izbira je omogočena",
|
||||
"muted": "Utišano",
|
||||
"muted-info": "O spremembah na tej tabli nikoli ne boste obveščeni",
|
||||
"my-boards": "Moje Table",
|
||||
"name": "Ime",
|
||||
"no-archived-cards": "Ni kartic v arhivu",
|
||||
"no-archived-lists": "Ni seznamov v arhivu",
|
||||
"no-archived-swimlanes": "Ni plavalnih stez v arhivu",
|
||||
"no-results": "Ni zadetkov",
|
||||
"normal": "Normalno",
|
||||
"normal-desc": "Lahko gleda in ureja kartice. Ne more spreminjati nastavitev.",
|
||||
"not-accepted-yet": "Povabilo še ni sprejeto.",
|
||||
"notify-participate": "Prejemajte posodobitve kartic, na katerih sodelujete kot ustvarjalec ali član",
|
||||
"notify-watch": "Prejemajte posodobitve opazovanih tabel, seznamov ali kartic",
|
||||
"optional": "opcijsko",
|
||||
"or": "ali",
|
||||
"page-maybe-private": "Ta stran je mogoče privatna. Verjetno si jo lahko ogledate po<a href='%s'>prijavi</a>.",
|
||||
"page-not-found": "Stran ne obstaja.",
|
||||
"password": "Geslo",
|
||||
"paste-or-dragdrop": "prilepi ali povleci & spusti datoteko slike (samo slika)",
|
||||
"participating": "Sodelovanje",
|
||||
"preview": "Predogled",
|
||||
"previewAttachedImagePopup-title": "Predogled",
|
||||
"previewClipboardImagePopup-title": "Predogled",
|
||||
"private": "Zasebno",
|
||||
"private-desc": "Ta tabla je zasebna. Samo dodani uporabniki lahko vidijo ali urejajo vsebino.",
|
||||
"profile": "Profil",
|
||||
"public": "Javno",
|
||||
"public-desc": "Ta tabla je javna. Vidna je vsakomur s povezavo do table in bo prikazana v zadetkih iskalnikov kot Google. Samo uporabniki table jo lahko urejajo.",
|
||||
"quick-access-description": "Če tablo označite z zvezdico, bo tukaj dodana bližnjica.",
|
||||
"remove-cover": "Odstrani ovitek",
|
||||
"remove-from-board": "Odstrani iz table",
|
||||
"remove-label": "Odstrani oznako",
|
||||
"listDeletePopup-title": "Odstrani seznam?",
|
||||
"remove-member": "Odstrani člana",
|
||||
"remove-member-from-card": "Odstrani iz kartice",
|
||||
"remove-member-pop": "Odstrani __name__ (__username__) iz __boardTitle__? Član bo odstranjen iz vseh kartic te table in bo prejel obvestilo.",
|
||||
"removeMemberPopup-title": "Odstrani člana?",
|
||||
"rename": "Preimenuj",
|
||||
"rename-board": "Preimenuj tablo",
|
||||
"restore": "Obnovi",
|
||||
"save": "Shrani",
|
||||
"search": "Išči",
|
||||
"rules": "Pravila",
|
||||
"search-cards": "Išči po imenih kartic in opisih na tej tabli",
|
||||
"search-example": "Besedilo za iskanje?",
|
||||
"select-color": "Izberi barvo",
|
||||
"set-wip-limit-value": "Nastavi omejitev maksimalnega števila opravil v tem seznamu",
|
||||
"setWipLimitPopup-title": "Nastavi omejitev št. kartic",
|
||||
"shortcut-assign-self": "Dodeli sebe k trenutni kartici",
|
||||
"shortcut-autocomplete-emoji": "Samodokončaj emoji",
|
||||
"shortcut-autocomplete-members": "Samodokončaj člane",
|
||||
"shortcut-clear-filters": "Počisti vse filtre",
|
||||
"shortcut-close-dialog": "Zapri dialog",
|
||||
"shortcut-filter-my-cards": "Filtriraj moje kartice",
|
||||
"shortcut-show-shortcuts": "Prikaži ta seznam bližnjic",
|
||||
"shortcut-toggle-filterbar": "Preklopi stransko vrstico za filter",
|
||||
"shortcut-toggle-sidebar": "Preklopi stransko vrstico table",
|
||||
"show-cards-minimum-count": "Prikaži število kartic, če seznam vsebuje več kot",
|
||||
"sidebar-open": "Odpri stransko vrstico",
|
||||
"sidebar-close": "Zapri stransko vrstico",
|
||||
"signupPopup-title": "Ustvari up. račun",
|
||||
"star-board-title": "Kliknite, da označite to tablo z zvezdico. Prikazana bo na vrhu vašega seznama tabel.",
|
||||
"starred-boards": "Table z zvezdico",
|
||||
"starred-boards-description": "Table z zvezdico se prikažejo na vrhu vašega seznama tabel.",
|
||||
"subscribe": "Naročite se",
|
||||
"team": "Skupina",
|
||||
"this-board": "to tablo",
|
||||
"this-card": "kartico",
|
||||
"spent-time-hours": "Porabljen čas (ure)",
|
||||
"overtime-hours": "Presežen čas (ure)",
|
||||
"overtime": "Presežen čas",
|
||||
"has-overtime-cards": "Ima kartice s preseženim časom",
|
||||
"has-spenttime-cards": "Ima kartice s porabljenim časom",
|
||||
"time": "Čas",
|
||||
"title": "Naslov",
|
||||
"tracking": "Sledenje",
|
||||
"tracking-info": "Obveščeni boste o vseh spremembah kartic, kjer sodelujete kot lastnik ali član.",
|
||||
"type": "Tip",
|
||||
"unassign-member": "Odjavi člana",
|
||||
"unsaved-description": "Imate neshranjen opis.",
|
||||
"unwatch": "Prekliči opazovanje",
|
||||
"upload": "Naloži",
|
||||
"upload-avatar": "Naloži avatar",
|
||||
"uploaded-avatar": "Naložil avatar",
|
||||
"username": "Up. ime",
|
||||
"view-it": "Oglej",
|
||||
"warn-list-archived": "opozorilo: ta kartica je v seznamu v arhivu",
|
||||
"watch": "Opazuj",
|
||||
"watching": "Opazuje",
|
||||
"watching-info": "O spremembah na tej tabli boste obveščeni",
|
||||
"welcome-board": "Tabla Dobrodošli",
|
||||
"welcome-swimlane": "Mejnik 1",
|
||||
"welcome-list1": "Osnove",
|
||||
"welcome-list2": "Napredno",
|
||||
"card-templates-swimlane": "Predloge kartice",
|
||||
"list-templates-swimlane": "Predloge seznama",
|
||||
"board-templates-swimlane": "Predloge table",
|
||||
"what-to-do": "Kaj želite storiti?",
|
||||
"wipLimitErrorPopup-title": "Neveljaven limit št. kartic",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Število opravil v tem seznamu je višje od definiranega limita št. kartic.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Prosimo premaknite nekaj opravil iz tega seznama ali nastavite višji limit št. kartic.",
|
||||
"admin-panel": "Skrbniška plošča",
|
||||
"settings": "Nastavitve",
|
||||
"people": "Ljudje",
|
||||
"registration": "Registracija",
|
||||
"disable-self-registration": "Onemogoči samo-registracijo",
|
||||
"invite": "Povabi",
|
||||
"invite-people": "Povabi ljudi",
|
||||
"to-boards": "K tabli(am)",
|
||||
"email-addresses": "E-poštni naslovi",
|
||||
"smtp-host-description": "Naslov vašega strežnika SMTP.",
|
||||
"smtp-port-description": "Vrata vašega strežnika SMTP za odhodno pošto.",
|
||||
"smtp-tls-description": "Omogoči šifriranje TLS za SMTP strežnik.",
|
||||
"smtp-host": "SMTP gostitelj",
|
||||
"smtp-port": "SMTP vrata",
|
||||
"smtp-username": "Up. ime",
|
||||
"smtp-password": "Geslo",
|
||||
"smtp-tls": "TLS podpora",
|
||||
"send-from": "Od",
|
||||
"send-smtp-test": "Pošljite testno e-pošto na svoj naslov",
|
||||
"invitation-code": "Koda Povabila",
|
||||
"email-invite-register-subject": "__inviter__ vam je poslal povabilo",
|
||||
"email-invite-register-text": "Dragi __user__,\n\n__inviter__ vas vabi na kanban tablo za sodelovanje.\n\nProsimo sledite spodnji povezavi:\n__url__\n\nVaša koda povabila je: __icode__\n\nHvala.",
|
||||
"email-smtp-test-subject": "SMTP testna e-pošta",
|
||||
"email-smtp-test-text": "Uspešno ste poslali e-pošto",
|
||||
"error-invitation-code-not-exist": "Koda povabila ne obstaja",
|
||||
"error-notAuthorized": "Nimate pravic za ogled te strani.",
|
||||
"webhook-title": "Ime spletnega vmesnika (webhook)",
|
||||
"webhook-token": "Žeton (opcijsko za avtentikacijo)",
|
||||
"outgoing-webhooks": "Izhodni spletni vmesniki (webhooks)",
|
||||
"bidirectional-webhooks": "Dvo-smerni spletni vmesniki (webhooks)",
|
||||
"outgoingWebhooksPopup-title": "Izhodni spletni vmesniki (webhooks)",
|
||||
"boardCardTitlePopup-title": "Filter po naslovu kartice",
|
||||
"disable-webhook": "Onemogoči ta spletni vmesnik (webhook)",
|
||||
"global-webhook": "Globalni spletni vmesnik (webhook)",
|
||||
"new-outgoing-webhook": "Nov izhodni spletni vmesnik (webhook)",
|
||||
"no-name": "(Neznano)",
|
||||
"Node_version": "Node različica",
|
||||
"Meteor_version": "Meteor različica",
|
||||
"MongoDB_version": "MongoDB različica",
|
||||
"MongoDB_storage_engine": "MongoDB storage engine",
|
||||
"MongoDB_Oplog_enabled": "MongoDB Oplog omogočen",
|
||||
"OS_Arch": "OS Arhitektura",
|
||||
"OS_Cpus": "OS število CPU",
|
||||
"OS_Freemem": "OS prost pomnilnik",
|
||||
"OS_Loadavg": "OS povp. obremenitev",
|
||||
"OS_Platform": "OS platforma",
|
||||
"OS_Release": "OS izdaja",
|
||||
"OS_Totalmem": "OS skupni pomnilnik",
|
||||
"OS_Type": "OS tip",
|
||||
"OS_Uptime": "OS čas delovanja",
|
||||
"days": "dnevi",
|
||||
"hours": "ure",
|
||||
"minutes": "minute",
|
||||
"seconds": "sekunde",
|
||||
"show-field-on-card": "Prikaži to polje na kartici",
|
||||
"automatically-field-on-card": "Samodejno dodaj polja na vse kartice",
|
||||
"showLabel-field-on-card": "Prikaži oznako polja na mini kartici",
|
||||
"yes": "Da",
|
||||
"no": "Ne",
|
||||
"accounts": "Up. računi",
|
||||
"accounts-allowEmailChange": "Dovoli spremembo e-poštnega naslova",
|
||||
"accounts-allowUserNameChange": "Dovoli spremembo up. imena",
|
||||
"createdAt": "Ustvarjen ob",
|
||||
"verified": "Preverjeno",
|
||||
"active": "Aktivno",
|
||||
"card-received": "Prejeto",
|
||||
"card-received-on": "Prejeto ob",
|
||||
"card-end": "Konec",
|
||||
"card-end-on": "Končano na",
|
||||
"editCardReceivedDatePopup-title": "Spremeni datum prejema",
|
||||
"editCardEndDatePopup-title": "Spremeni končni datum",
|
||||
"setCardColorPopup-title": "Nastavi barvo",
|
||||
"setCardActionsColorPopup-title": "Izberi barvo",
|
||||
"setSwimlaneColorPopup-title": "Izberi barvo",
|
||||
"setListColorPopup-title": "Izberi barvo",
|
||||
"assigned-by": "Dodelil",
|
||||
"requested-by": "Zahteval",
|
||||
"board-delete-notice": "Brisanje je trajno. Izgubili boste vse sezname, kartice in akcije, povezane z desko.",
|
||||
"delete-board-confirm-popup": "Vsi seznami, kartice, oznake in dejavnosti bodo izbrisani in vsebine table ne boste mogli obnoviti. Razveljavitve ni.",
|
||||
"boardDeletePopup-title": "Izbriši tablo?",
|
||||
"delete-board": "Izbriši tablo",
|
||||
"default-subtasks-board": "Podopravila za tablo",
|
||||
"default": "Privzeto",
|
||||
"queue": "Čakalna vrsta",
|
||||
"subtask-settings": "Nastavitve podopravil",
|
||||
"boardSubtaskSettingsPopup-title": "Nastavitve podopravil table",
|
||||
"show-subtasks-field": "Dovoli pod-poravila na karticah",
|
||||
"deposit-subtasks-board": "Deponiraj podopravila na tole tablo:",
|
||||
"deposit-subtasks-list": "Ciljni seznam za deponirana podopravila:",
|
||||
"show-parent-in-minicard": "Pokaži starša na mini-kartici:",
|
||||
"prefix-with-full-path": "Predpona s celotno potjo",
|
||||
"prefix-with-parent": "Predpona s staršem",
|
||||
"subtext-with-full-path": "Podbesedilo s celotno potjo",
|
||||
"subtext-with-parent": "Podbesedilo s staršem",
|
||||
"change-card-parent": "Zamenjaj starša kartice",
|
||||
"parent-card": "Starševska kartica",
|
||||
"source-board": "Izvorna tabla",
|
||||
"no-parent": "Ne prikaži starša",
|
||||
"activity-added-label": "dodal oznako '%s' do %s",
|
||||
"activity-removed-label": "odstranil oznako '%s' od %s",
|
||||
"activity-delete-attach": "izbrisal priponko od %s",
|
||||
"activity-added-label-card": "dodal oznako '%s'",
|
||||
"activity-removed-label-card": "izbrisal oznako '%s'",
|
||||
"activity-delete-attach-card": "izbrisal priponko",
|
||||
"activity-set-customfield": "nastavi polje po meri '%s' do '%s' v %s",
|
||||
"activity-unset-customfield": "zbriši polje po meri '%s' v %s",
|
||||
"r-rule": "Pravilo",
|
||||
"r-add-trigger": "Dodaj prožilec",
|
||||
"r-add-action": "Dodaj akcijo",
|
||||
"r-board-rules": "Pravila table",
|
||||
"r-add-rule": "Dodaj pravilo",
|
||||
"r-view-rule": "Poglej pravilo",
|
||||
"r-delete-rule": "Izbriši pravilo",
|
||||
"r-new-rule-name": "Ime novega pravila",
|
||||
"r-no-rules": "Ni pravil",
|
||||
"r-when-a-card": "Ko je kartica",
|
||||
"r-is": " ",
|
||||
"r-is-moved": "premaknjena",
|
||||
"r-added-to": "dodan na",
|
||||
"r-removed-from": "izbrisan iz",
|
||||
"r-the-board": "tabla",
|
||||
"r-list": "seznam",
|
||||
"set-filter": "Nastavi filter",
|
||||
"r-moved-to": "premaknjena v",
|
||||
"r-moved-from": "premaknjena iz",
|
||||
"r-archived": "premaknjena v arhiv",
|
||||
"r-unarchived": "obnovljena iz arhiva",
|
||||
"r-a-card": "kartico",
|
||||
"r-when-a-label-is": "Ko je oznaka",
|
||||
"r-when-the-label": "Ko je oznaka",
|
||||
"r-list-name": "ime sezn.",
|
||||
"r-when-a-member": "Ko je član",
|
||||
"r-when-the-member": "Ko je član",
|
||||
"r-name": "ime",
|
||||
"r-when-a-attach": "Ko je priponka",
|
||||
"r-when-a-checklist": "Ko je kontrolni seznam",
|
||||
"r-when-the-checklist": "Ko kontrolni seznam",
|
||||
"r-completed": "zaključen",
|
||||
"r-made-incomplete": "nastavljen kot nedokončan",
|
||||
"r-when-a-item": "Ko je kontrolni seznam",
|
||||
"r-when-the-item": "Ko je element kontrolnega seznama",
|
||||
"r-checked": "označen",
|
||||
"r-unchecked": "odznačen",
|
||||
"r-move-card-to": "Premakni kartico na",
|
||||
"r-top-of": "Vrh",
|
||||
"r-bottom-of": "Dno",
|
||||
"r-its-list": "pripadajočega seznama",
|
||||
"r-archive": "premaknjena v arhiv",
|
||||
"r-unarchive": "Obnovi iz arhiva",
|
||||
"r-card": "kartico",
|
||||
"r-add": "Dodaj",
|
||||
"r-remove": "Odstrani",
|
||||
"r-label": "oznaka",
|
||||
"r-member": "član",
|
||||
"r-remove-all": "Izbriši vse člane iz kartice",
|
||||
"r-set-color": "Nastavi barvo na",
|
||||
"r-checklist": "kontrolni seznam",
|
||||
"r-check-all": "Označi vse",
|
||||
"r-uncheck-all": "Odznači vse",
|
||||
"r-items-check": "postavke kontrolnega lista",
|
||||
"r-check": "Označi",
|
||||
"r-uncheck": "Odznači",
|
||||
"r-item": "postavka",
|
||||
"r-of-checklist": "kontrolnega seznama",
|
||||
"r-send-email": "Pošlji e-pošto",
|
||||
"r-to": "naslovnik",
|
||||
"r-subject": "zadeva",
|
||||
"r-rule-details": "Podrobnosti pravila",
|
||||
"r-d-move-to-top-gen": "Premakni kartico na vrh pripadajočega sezama",
|
||||
"r-d-move-to-top-spec": "Premakni kartico na vrh seznama",
|
||||
"r-d-move-to-bottom-gen": "Premakni kartico na dno pripadajočega seznama",
|
||||
"r-d-move-to-bottom-spec": "Premakni kartico na dno seznama",
|
||||
"r-d-send-email": "Pošlji e-pošto",
|
||||
"r-d-send-email-to": "na",
|
||||
"r-d-send-email-subject": "zadeva",
|
||||
"r-d-send-email-message": "vsebina",
|
||||
"r-d-archive": "Premakni kartico v arhiv",
|
||||
"r-d-unarchive": "Obnovi kartico iz arhiva",
|
||||
"r-d-add-label": "Dodaj oznako",
|
||||
"r-d-remove-label": "Izbriši oznako",
|
||||
"r-create-card": "Ustvari novo kartico",
|
||||
"r-in-list": "v seznamu",
|
||||
"r-in-swimlane": "v plavalni stezi",
|
||||
"r-d-add-member": "Dodaj člana",
|
||||
"r-d-remove-member": "Odstrani člana",
|
||||
"r-d-remove-all-member": "Odstrani vse člane",
|
||||
"r-d-check-all": "Označi vse elemente seznama",
|
||||
"r-d-uncheck-all": "Odznači vse elemente seznama",
|
||||
"r-d-check-one": "Označi element",
|
||||
"r-d-uncheck-one": "Odznači element",
|
||||
"r-d-check-of-list": "kontrolnega seznama",
|
||||
"r-d-add-checklist": "Dodaj kontrolni list",
|
||||
"r-d-remove-checklist": "Odstrani kotrolni list",
|
||||
"r-by": "od",
|
||||
"r-add-checklist": "Dodaj kontrolni list",
|
||||
"r-with-items": "s postavkami",
|
||||
"r-items-list": "el1,el2,el3",
|
||||
"r-add-swimlane": "Dodaj plavalno stezo",
|
||||
"r-swimlane-name": "ime pl. steze",
|
||||
"r-board-note": "Opomba: polje pustite prazno, da ustreza vsaki možni vrednosti.",
|
||||
"r-checklist-note": "Opomba: elementi kontrolnega seznama morajo biti zapisani kot vrednosti, ločene z vejicami.",
|
||||
"r-when-a-card-is-moved": "Ko je kartica premaknjena v drug seznam",
|
||||
"r-set": "Nastavi",
|
||||
"r-update": "Posodobi",
|
||||
"r-datefield": "polje z datumom",
|
||||
"r-df-start-at": "začetek",
|
||||
"r-df-due-at": "rok",
|
||||
"r-df-end-at": "konec",
|
||||
"r-df-received-at": "prejeto",
|
||||
"r-to-current-datetime": "v trenutni datum/čas",
|
||||
"r-remove-value-from": "Izbriši vrednost iz",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Metoda avtentikacije",
|
||||
"authentication-type": "Način avtentikacije",
|
||||
"custom-product-name": "Ime izdelka po meri",
|
||||
"layout": "Postavitev",
|
||||
"hide-logo": "Skrij logo",
|
||||
"add-custom-html-after-body-start": "Dodaj HTML po meri po <body> začetku",
|
||||
"add-custom-html-before-body-end": "Dodaj HMTL po meri po </body> koncu",
|
||||
"error-undefined": "Prišlo je do napake",
|
||||
"error-ldap-login": "Prišlo je do napake ob prijavi",
|
||||
"display-authentication-method": "Prikaži metodo avtentikacije",
|
||||
"default-authentication-method": "Privzeta metoda avtentikacije",
|
||||
"duplicate-board": "Dupliciraj tablo",
|
||||
"people-number": "Število ljudi je:",
|
||||
"swimlaneDeletePopup-title": "Zbriši plavalno stezo?",
|
||||
"swimlane-delete-pop": "Vsa dejanja bodo odstranjena iz seznama dejavnosti. Plavalne steze ne boste mogli obnoviti. Razveljavitve ni.",
|
||||
"restore-all": "Obnovi vse",
|
||||
"delete-all": "Izbriši vse",
|
||||
"loading": "Nalagam, prosimo počakajte",
|
||||
"previous_as": "zadnji čas je bil",
|
||||
"act-a-dueAt": "spremenil rok zapadlosti na \nKdaj: __timeValue__\nKje: __card__\n prejšnji rok zapadlosti je bil __timeOldValue__",
|
||||
"act-a-endAt": "spremenil čas dokončanja na __timeValue__ iz (__timeOldValue__)",
|
||||
"act-a-startAt": "spremenil čas pričetka na __timeValue__ iz (__timeOldValue__)",
|
||||
"act-a-receivedAt": "spremenil čas prejema na __timeValue__ iz (__timeOldValue__)",
|
||||
"a-dueAt": "spremenil rok v",
|
||||
"a-endAt": "spremenil končni čas v",
|
||||
"a-startAt": "spremenil začetni čas v",
|
||||
"a-receivedAt": "spremenil čas prejetja v",
|
||||
"almostdue": "trenutni rok %s se približuje",
|
||||
"pastdue": "trenutni rok %s je potekel",
|
||||
"duenow": "trenutni rok %s je danes",
|
||||
"act-newDue": "__list__/__card__ ima 1. opomnik roka zapadlosti [__board__]",
|
||||
"act-withDue": "__list__/__card__ opomniki roka zapadlosti [__board__]",
|
||||
"act-almostdue": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ se bliža",
|
||||
"act-pastdue": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ je potekel",
|
||||
"act-duenow": "je opomnil trenuten rok zapadlosti (__timeValue__) kartice __card__ je sedaj",
|
||||
"act-atUserComment": "Omenjeni ste bili v [__board__] __list__/__card__",
|
||||
"delete-user-confirm-popup": "Ali ste prepričani, da želite izbrisati ta račun? Razveljavitve ni.",
|
||||
"accounts-allowUserDelete": "Dovoli uporabnikom, da sami izbrišejo svoj račun",
|
||||
"hide-minicard-label-text": "Skrij besedilo oznak na karticah",
|
||||
"show-desktop-drag-handles": "Pokaži ročke za povleko na namizju"
|
||||
}
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+14
-5
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Etiket yok",
|
||||
"filter-no-member": "Üye yok",
|
||||
"filter-no-custom-fields": "Hiç özel alan yok",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtre aktif",
|
||||
"filter-on-desc": "Bu panodaki kartları filtreliyorsunuz. Fitreyi düzenlemek için tıklayın.",
|
||||
"filter-to-selection": "Seçime göre filtreleme yap",
|
||||
@@ -508,9 +510,14 @@
|
||||
"email-smtp-test-text": "E-Posta başarıyla gönderildi",
|
||||
"error-invitation-code-not-exist": "Davetiye kodu bulunamadı",
|
||||
"error-notAuthorized": "Bu sayfayı görmek için yetkiniz yok.",
|
||||
"webhook-title": "Webhook Name",
|
||||
"webhook-token": "Token (Optional for Authentication)",
|
||||
"outgoing-webhooks": "Dışarı giden bağlantılar",
|
||||
"bidirectional-webhooks": "Two-Way Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Dışarı giden bağlantılar",
|
||||
"boardCardTitlePopup-title": "Kart Başlığı Filtresi",
|
||||
"disable-webhook": "Disable This Webhook",
|
||||
"global-webhook": "Global Webhooks",
|
||||
"new-outgoing-webhook": "Yeni Dışarı Giden Web Bağlantısı",
|
||||
"no-name": "(Bilinmeyen)",
|
||||
"Node_version": "Node sürümü",
|
||||
@@ -721,12 +728,14 @@
|
||||
"almostdue": "current due time %s is approaching",
|
||||
"pastdue": "current due time %s is past",
|
||||
"duenow": "current due time %s is today",
|
||||
"act-withDue": "__card__ due reminders [__board__]",
|
||||
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
|
||||
"act-withDue": "__list__/__card__ due reminders [__board__]",
|
||||
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
||||
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
||||
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
|
||||
"act-atUserComment": "You were mentioned in [__board__] __card__",
|
||||
"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": "Bu kullanıcı hesabını silmek istediğinize emin misiniz? Bu işlemi geri alamazsınız.",
|
||||
"accounts-allowUserDelete": "Kullanıcılara hesaplarını silmek için izin ver.",
|
||||
"hide-minicard-label-text": "Mini kart etiklerini gizle",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles"
|
||||
}
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
+14
-5
@@ -73,8 +73,8 @@
|
||||
"activity-unchecked-item-card": "取消勾选 %s 于清单 %s中",
|
||||
"activity-checklist-completed-card": "完成检查列表 __checklist__ 卡片 __card__ 列表 __list__ 泳道 __swimlane__ 看板 __board__",
|
||||
"activity-checklist-uncompleted-card": "未完成清单 %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-editComment": "评论已编辑",
|
||||
"activity-deleteComment": "评论已删除",
|
||||
"add-attachment": "添加附件",
|
||||
"add-board": "添加看板",
|
||||
"add-card": "添加卡片",
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "无标签",
|
||||
"filter-no-member": "无成员",
|
||||
"filter-no-custom-fields": "无自定义字段",
|
||||
"filter-show-archive": "显示归档的列表",
|
||||
"filter-hide-empty": "隐藏空列表",
|
||||
"filter-on": "过滤器启用",
|
||||
"filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
|
||||
"filter-to-selection": "要选择的过滤器",
|
||||
@@ -508,9 +510,14 @@
|
||||
"email-smtp-test-text": "你已成功发送邮件",
|
||||
"error-invitation-code-not-exist": "邀请码不存在",
|
||||
"error-notAuthorized": "您无权查看此页面。",
|
||||
"webhook-title": "Webhook名称",
|
||||
"webhook-token": "Token(认证选项)",
|
||||
"outgoing-webhooks": "外部Web挂钩",
|
||||
"bidirectional-webhooks": "双向Webhook",
|
||||
"outgoingWebhooksPopup-title": "外部Web挂钩",
|
||||
"boardCardTitlePopup-title": "卡片标题过滤",
|
||||
"disable-webhook": "禁用Webhook",
|
||||
"global-webhook": "全局Webhook",
|
||||
"new-outgoing-webhook": "新建外部Web挂钩",
|
||||
"no-name": "(未知)",
|
||||
"Node_version": "Node.js版本",
|
||||
@@ -721,12 +728,14 @@
|
||||
"almostdue": "当前到期时间%s即将到来",
|
||||
"pastdue": "当前到期时间%s已过",
|
||||
"duenow": "当前到期时间%s为今天",
|
||||
"act-withDue": "__card__ 到期提醒[__board__]",
|
||||
"act-newDue": "__list__/__card__ 有 1st 到期提醒 [__board__]",
|
||||
"act-withDue": "__list__/__card__ 到期提醒 [__board__]",
|
||||
"act-almostdue": "__card__ 的当前到期提醒(__timeValue__) 正在接近",
|
||||
"act-pastdue": "__card__ 的当前到期提醒(__timeValue__) 已经过去了",
|
||||
"act-duenow": "__card__ 的当前到期提醒(__timeValue__) 现在到期",
|
||||
"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": "显示桌面拖放手柄"
|
||||
}
|
||||
+740
-731
File diff suppressed because it is too large.
Load diff
+740
-731
File diff suppressed because it is too large.
Load diff
@@ -20,6 +20,8 @@ AccountSettings.attachSchema(
|
||||
autoValue() {
|
||||
if (this.isInsert) {
|
||||
return new Date();
|
||||
} else if (this.isUpsert) {
|
||||
return { $setOnInsert: new Date() };
|
||||
} else {
|
||||
this.unset();
|
||||
}
|
||||
|
||||
@@ -14,6 +14,16 @@ Actions.allow({
|
||||
},
|
||||
});
|
||||
|
||||
Actions.before.insert((userId, doc) => {
|
||||
doc.createdAt = new Date();
|
||||
doc.modifiedAt = doc.createdAt;
|
||||
});
|
||||
|
||||
Actions.before.update((userId, doc, fieldNames, modifier) => {
|
||||
modifier.$set = modifier.$set || {};
|
||||
modifier.$set.modifiedAt = new Date();
|
||||
});
|
||||
|
||||
Actions.helpers({
|
||||
description() {
|
||||
return this.desc;
|
||||
|
||||
Loaded 100 of 142 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user