mirror of
https://github.com/wekan/wekan.git
synced 2026-11-05 15:45:01 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
736d308860 | ||
|
|
9eca7a3941 | ||
|
|
af436e16c4 | ||
|
|
b1b414e850 | ||
|
|
57da3885a2 | ||
|
|
cb9c897309 | ||
|
|
81f07baeb8 | ||
|
|
001c258f96 | ||
|
|
9d77b9d7b7 | ||
|
|
2242da4176 | ||
|
|
0a3a28ef29 | ||
|
|
dcf5aa65b0 | ||
|
|
dd3be179ca | ||
|
|
bc1f149ea3 | ||
|
|
0dd11ea573 | ||
|
|
5feb83d919 | ||
|
|
8980668686 | ||
|
|
0d4e48ddd6 | ||
|
|
a01b175895 | ||
|
|
83f63c9efa | ||
|
|
3b031bd901 | ||
|
|
e2a7e300c9 | ||
|
|
844f59e12e | ||
|
|
1a3d7b5da4 | ||
|
|
3d2bdf4f22 | ||
|
|
b9fe1f1639 | ||
|
|
a39a7b90b1 | ||
|
|
5d1c979e3b | ||
|
|
d00dc6056b | ||
|
|
878a24f586 | ||
|
|
6d08181edd | ||
|
|
d5596f05b7 | ||
|
|
22b280a18e | ||
|
|
2e7c4ede2a | ||
|
|
ed77abd90d | ||
|
|
45fb547947 | ||
|
|
477ad737d3 | ||
|
|
a2802a850b | ||
|
|
5cbe27be7e | ||
|
|
8b21158736 | ||
|
|
651c6f8fb6 | ||
|
|
5b67312f0f | ||
|
|
1a222c4477 | ||
|
|
ca9bcfa4ee | ||
|
|
4da5b4eb96 | ||
|
|
8c4044ce6c | ||
|
|
b46d9588c7 | ||
|
|
96773e7b1d | ||
|
|
5a80f4f6ce | ||
|
|
b9f9390d04 | ||
|
|
f5a4ece294 | ||
|
|
c1ddf989a2 | ||
|
|
c48ecb1d88 | ||
|
|
c664fe863c | ||
|
|
38f571b388 | ||
|
|
1e7de6d776 | ||
|
|
6d47dc3f4a | ||
|
|
4756ca4226 | ||
|
|
bb440b0d7b | ||
|
|
89cfe1529f | ||
|
|
236fdf9338 | ||
|
|
5c36b2292b | ||
|
|
4eebdb4278 | ||
|
|
4533268418 | ||
|
|
c997c12f88 | ||
|
|
36efd9c988 | ||
|
|
267bfc7229 | ||
|
|
405a7b72e9 | ||
|
|
7d416cc7cc | ||
|
|
7929ab27cb | ||
|
|
7bbd1a3fad | ||
|
|
0f9bd4f9f9 | ||
|
|
a7ce6690a5 | ||
|
|
82bd4ff39d | ||
|
|
721c61bef5 | ||
|
|
7a25546da7 | ||
|
|
2c1d3a3922 | ||
|
|
b4d6cc741c | ||
|
|
5311f80711 | ||
|
|
abed969a96 | ||
|
|
36e3cf30d3 | ||
|
|
eaadbc6dd1 | ||
|
|
0aacc989b7 | ||
|
|
77adfb28c9 | ||
|
|
a9d8261d80 | ||
|
|
df3f519e99 | ||
|
|
d68364befe | ||
|
|
6094979d4e | ||
|
|
ef845fe4a0 | ||
|
|
ce8fc8e392 | ||
|
|
402b79c340 | ||
|
|
08ba9b02f2 | ||
|
|
3a016be97d | ||
|
|
56b09f9102 | ||
|
|
dccf16647a | ||
|
|
9c2ff81b12 | ||
|
|
af8bba27c0 | ||
|
|
8f83ece2ed | ||
|
|
ac8e39daca | ||
|
|
3c07777722 | ||
|
|
0e10d24bef | ||
|
|
4a7df37459 | ||
|
|
f9b5de0e8e | ||
|
|
88f353dc1f | ||
|
|
50525f6fd1 | ||
|
|
219ee659e9 | ||
|
|
17c62ccdf6 | ||
|
|
14de82ad2d | ||
|
|
e92f4f9819 | ||
|
|
08aac777fb | ||
|
|
b84caaad26 | ||
|
|
f7a2a3ace5 | ||
|
|
88a2e96db3 | ||
|
|
487cf3f963 | ||
|
|
6b3ae817fe | ||
|
|
f74c658552 | ||
|
|
58fa52a4ac | ||
|
|
468a1e3d1d | ||
|
|
945b634d32 | ||
|
|
c70a36d89e | ||
|
|
19deee64c6 | ||
|
|
0ddc47a0db | ||
|
|
f456a1b8f5 | ||
|
|
5d74057c3a | ||
|
|
4edfcb0cf6 | ||
|
|
9a5dd98389 | ||
|
|
01271b79e8 | ||
|
|
1be9b98559 | ||
|
|
71c0c2b582 | ||
|
|
98800d61cc | ||
|
|
2cf94c2fd3 | ||
|
|
c1da7a4a33 | ||
|
|
f74ccbc8fa | ||
|
|
7436b9d06a | ||
|
|
22f996903b | ||
|
|
e5edb54a53 | ||
|
|
69c899f1f9 | ||
|
|
0f86a81bd8 | ||
|
|
338adb5ba9 | ||
|
|
afbabccd26 | ||
|
|
cf5560b41f | ||
|
|
5c53b8611b | ||
|
|
6aa514f359 | ||
|
|
ac9efbf402 | ||
|
|
1f344879fb | ||
|
|
85841a1c43 | ||
|
|
c2c6bdaedd | ||
|
|
39e8cc11a4 | ||
|
|
0a206c85cf | ||
|
|
0ed4d1556c | ||
|
|
4edbab4402 | ||
|
|
0f45c0e392 | ||
|
|
ba62449323 | ||
|
|
6d5176bd87 | ||
|
|
9c8fd0f281 | ||
|
|
d8c675d82a | ||
|
|
57caa2c337 | ||
|
|
5212d25fc2 | ||
|
|
55dbe59fde | ||
|
|
20888e44c1 | ||
|
|
f188572b70 | ||
|
|
fb9380c0d0 |
No files matched your search
@@ -38,7 +38,7 @@ jobs:
|
||||
# https://github.com/docker/login-action
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee
|
||||
uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
@@ -48,14 +48,14 @@ jobs:
|
||||
# https://github.com/docker/metadata-action
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9
|
||||
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
# Build and push Docker image with Buildx (don't push on PR)
|
||||
# https://github.com/docker/build-push-action
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf
|
||||
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a
|
||||
with:
|
||||
context: .
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
@@ -27,14 +27,14 @@ jobs:
|
||||
cache: 'npm'
|
||||
|
||||
- name: Cache Meteor installation
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.meteor
|
||||
key: meteor-${{ hashFiles('.meteor/release') }}-${{ hashFiles('.meteor/packages') }}
|
||||
restore-keys: meteor-
|
||||
|
||||
- name: Cache Meteor build (.meteor/local)
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: .meteor/local
|
||||
key: meteor-local-unit-${{ hashFiles('.meteor/versions') }}
|
||||
@@ -98,14 +98,14 @@ jobs:
|
||||
cache: 'npm'
|
||||
|
||||
- name: Cache Meteor installation
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.meteor
|
||||
key: meteor-${{ hashFiles('.meteor/release') }}-${{ hashFiles('.meteor/packages') }}
|
||||
restore-keys: meteor-
|
||||
|
||||
- name: Cache Meteor build (.meteor/local)
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: .meteor/local
|
||||
key: meteor-local-e2e-${{ hashFiles('.meteor/versions') }}
|
||||
@@ -227,14 +227,14 @@ jobs:
|
||||
cache: 'npm'
|
||||
|
||||
- name: Cache Meteor installation
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.meteor
|
||||
key: meteor-${{ hashFiles('.meteor/release') }}-${{ hashFiles('.meteor/packages') }}
|
||||
restore-keys: meteor-
|
||||
|
||||
- name: Cache Meteor build (.meteor/local)
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: .meteor/local
|
||||
key: meteor-local-regression-${{ hashFiles('.meteor/versions') }}
|
||||
|
||||
@@ -22,7 +22,9 @@ name: Release All Platforms
|
||||
# commits and pushes the bump to wekan/wekan main
|
||||
# - prepare: tags the bumped main as v<new_version> and extracts release notes
|
||||
# - website: updates the wekan/wekan.fi repo (install page + API docs) and pushes
|
||||
# - charts: updates and publishes the wekan/charts Helm chart and pushes
|
||||
# - charts: updates and publishes the wekan/charts Helm chart and pushes,
|
||||
# only AFTER the `docker` job has published the image (skipped if
|
||||
# docker fails)
|
||||
# - build-*: builds the amd64 bundle (full Meteor 3 build), then rebuilds native
|
||||
# modules for arm64 from that amd64 base
|
||||
# - release: creates the GitHub Release with the newest CHANGELOG.md notes and
|
||||
@@ -210,12 +212,14 @@ jobs:
|
||||
cd ..
|
||||
./wekan/releases/release-website.sh "${{ inputs.old_version }}" "${{ inputs.new_version }}"
|
||||
|
||||
# ─── 1c. Update and publish the Helm chart repo (parallel) ──────────────────
|
||||
# ─── 1c. Update and publish the Helm chart repo (after docker) ──────────────
|
||||
# Bumps the WeKan version in wekan/charts, packages the chart and publishes it
|
||||
# to the gh-pages Helm index, then pushes both branches. Runs in parallel with
|
||||
# the platform builds; packaging the chart does not need the built artifacts.
|
||||
# to the gh-pages Helm index, then pushes both branches. Runs only AFTER the
|
||||
# `docker` job succeeds: the chart points users at the freshly published
|
||||
# multi-arch image, so we don't advertise a new chart version until that image
|
||||
# is actually on the registries. If `docker` fails, this job is skipped.
|
||||
charts:
|
||||
needs: bump
|
||||
needs: docker
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout wekan repo (for releases/release-charts.sh + version refs)
|
||||
@@ -265,14 +269,14 @@ jobs:
|
||||
ref: refs/tags/v${{ needs.prepare.outputs.version }}
|
||||
|
||||
- name: Cache Meteor installation
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.meteor
|
||||
key: meteor-${{ hashFiles('.meteor/release') }}-${{ hashFiles('.meteor/packages') }}
|
||||
restore-keys: meteor-
|
||||
|
||||
- name: Cache npm packages
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: npm-${{ hashFiles('package-lock.json') }}
|
||||
@@ -796,7 +800,20 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install snapcraft
|
||||
run: sudo snap install snapcraft --classic
|
||||
# The Snap Store intermittently rejects the install with
|
||||
# 'error: cannot install "snapcraft": too many requests' (a 429-style
|
||||
# rate limit) that instantly fails the whole snap job before any build.
|
||||
# Retry a few times so one transient store throttle does not fail the
|
||||
# release (same spirit as the remote-build retry below).
|
||||
run: |
|
||||
set -uo pipefail
|
||||
for i in 1 2 3 4 5; do
|
||||
sudo snap install snapcraft --classic && exit 0
|
||||
echo "snapcraft install attempt $i/5 failed (Snap Store throttle?); retrying in 30s..."
|
||||
sleep 30
|
||||
done
|
||||
echo "::error::snapcraft install failed after 5 attempts (Snap Store rate limit)."
|
||||
exit 1
|
||||
|
||||
- name: Provide Launchpad credentials for remote-build
|
||||
env:
|
||||
|
||||
+8
-8
@@ -6,7 +6,7 @@
|
||||
meteor-base@1.5.2
|
||||
|
||||
# Build system
|
||||
ecmascript@0.18.1-rc350.0
|
||||
ecmascript@0.18.1
|
||||
standard-minifier-js@3.2.0
|
||||
rspack@1.1.0
|
||||
|
||||
@@ -16,11 +16,11 @@ blaze@3.0.2
|
||||
aldeed:collection2
|
||||
aldeed:schema-index@4.0.0-beta.5
|
||||
reywood:publish-composite
|
||||
mongo@2.4.0-rc350.2
|
||||
mongo@2.4.0
|
||||
|
||||
# Account system
|
||||
accounts-password@3.3.0-rc350.2
|
||||
accounts-express@1.0.0-rc350.2
|
||||
accounts-password@3.3.0
|
||||
accounts-express@1.0.0
|
||||
communitypackages:core
|
||||
communitypackages:unstyled
|
||||
communitypackages:flow-routing
|
||||
@@ -37,7 +37,7 @@ wekan-accounts-oidc
|
||||
check@1.5.0
|
||||
random@1.2.2
|
||||
reactive-dict@1.3.2
|
||||
session@1.2.3-rc350.2
|
||||
session@1.2.3
|
||||
tracker@1.3.4
|
||||
audit-argument-checks@1.0.8
|
||||
|
||||
@@ -45,7 +45,7 @@ audit-argument-checks@1.0.8
|
||||
ostrio:i18n
|
||||
reactive-var@1.0.13
|
||||
shell-server@0.7.0
|
||||
email@3.2.0-rc350.2
|
||||
email@3.2.0
|
||||
dynamic-import@0.7.4
|
||||
wekan-markdown
|
||||
quave:synced-cron
|
||||
@@ -55,8 +55,8 @@ ostrio:files
|
||||
meteortesting:mocha@3.0.0
|
||||
matb33:collection-hooks
|
||||
service-configuration@1.3.5
|
||||
minifier-css@2.0.2-rc350.2
|
||||
ejson@1.2.0-rc350.2
|
||||
minifier-css@2.0.2
|
||||
ejson@1.2.0
|
||||
logging@1.3.6
|
||||
wekan-fullcalendar
|
||||
wekan-fontawesome
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@3.5-rc.2
|
||||
METEOR@3.5
|
||||
+28
-28
@@ -1,44 +1,44 @@
|
||||
accounts-base@3.3.0-rc350.2
|
||||
accounts-express@1.0.0-rc350.2
|
||||
accounts-oauth@1.4.7-rc350.2
|
||||
accounts-password@3.3.0-rc350.2
|
||||
accounts-base@3.3.0
|
||||
accounts-express@1.0.0
|
||||
accounts-oauth@1.4.7
|
||||
accounts-password@3.3.0
|
||||
aldeed:collection2@4.2.0
|
||||
aldeed:schema-index@4.0.0
|
||||
aldeed:simple-schema@1.13.1
|
||||
allow-deny@2.1.0
|
||||
audit-argument-checks@1.0.8
|
||||
autoupdate@2.0.1
|
||||
babel-compiler@7.14.1-rc350.0
|
||||
babel-compiler@7.14.1
|
||||
babel-runtime@1.5.2
|
||||
base64@1.0.14-rc350.2
|
||||
binary-heap@1.0.13-rc350.2
|
||||
base64@1.0.14
|
||||
binary-heap@1.0.13
|
||||
blaze@3.0.3
|
||||
blaze-tools@2.0.1
|
||||
boilerplate-generator@2.1.0
|
||||
caching-compiler@2.0.1
|
||||
caching-html-compiler@2.0.1
|
||||
callback-hook@1.8.0-rc350.2
|
||||
callback-hook@1.8.0
|
||||
check@1.5.0
|
||||
communitypackages:core@2.0.3
|
||||
communitypackages:flow-routing@2.1.0
|
||||
communitypackages:unstyled@2.0.1
|
||||
core-runtime@1.0.0
|
||||
ddp@1.4.2
|
||||
ddp-client@3.3.0-rc350.2
|
||||
ddp-common@1.4.5-rc350.2
|
||||
ddp-rate-limiter@1.3.0-rc350.2
|
||||
ddp-server@3.3.0-rc350.2
|
||||
ddp-client@3.3.0
|
||||
ddp-common@1.4.5
|
||||
ddp-rate-limiter@1.3.0
|
||||
ddp-server@3.3.0
|
||||
diff-sequence@1.1.3
|
||||
dynamic-import@0.7.4
|
||||
ecmascript@0.18.1-rc350.0
|
||||
ecmascript@0.18.1
|
||||
ecmascript-runtime@0.8.3
|
||||
ecmascript-runtime-client@0.13.0
|
||||
ecmascript-runtime-server@0.11.1
|
||||
ejson@1.2.0-rc350.2
|
||||
email@3.2.0-rc350.2
|
||||
ejson@1.2.0
|
||||
email@3.2.0
|
||||
es5-shim@4.8.1
|
||||
facts-base@1.0.2
|
||||
fetch@0.2.0-rc350.2
|
||||
fetch@0.2.0
|
||||
geojson-utils@1.0.12
|
||||
hot-code-push@1.0.5
|
||||
html-tools@2.0.1
|
||||
@@ -53,23 +53,23 @@ lai:collection-extensions@1.0.0
|
||||
localstorage@1.2.1
|
||||
logging@1.3.6
|
||||
matb33:collection-hooks@2.1.0
|
||||
meteor@2.3.1-rc350.2
|
||||
meteor@2.3.1
|
||||
meteor-base@1.5.2
|
||||
meteortesting:browser-tests@1.8.0
|
||||
meteortesting:mocha@3.3.0
|
||||
meteortesting:mocha-core@8.2.0
|
||||
minifier-css@2.0.2-rc350.2
|
||||
minifier-js@3.2.1-rc350.0
|
||||
minimongo@2.2.0-rc350.2
|
||||
minifier-css@2.0.2
|
||||
minifier-js@3.2.1
|
||||
minimongo@2.2.0
|
||||
modern-browsers@0.2.3
|
||||
modules@0.20.3
|
||||
modules-runtime@0.13.2
|
||||
mongo@2.4.0-rc350.2
|
||||
mongo@2.4.0
|
||||
mongo-decimal@0.2.0
|
||||
mongo-dev-server@1.1.1
|
||||
mongo-id@1.0.9
|
||||
npm-mongo@6.16.1
|
||||
oauth@3.0.4-rc350.2
|
||||
oauth@3.0.4
|
||||
oauth2@1.3.3
|
||||
observe-sequence@2.0.1
|
||||
ordered-dict@1.2.0
|
||||
@@ -82,7 +82,7 @@ promise@1.0.0
|
||||
quave:synced-cron@2.4.0
|
||||
raix:eventemitter@1.0.0
|
||||
random@1.2.2
|
||||
rate-limit@1.2.0-rc350.2
|
||||
rate-limit@1.2.0
|
||||
react-fast-refresh@0.3.0
|
||||
reactive-dict@1.3.2
|
||||
reactive-var@1.0.13
|
||||
@@ -92,10 +92,10 @@ reywood:publish-composite@1.9.0
|
||||
routepolicy@1.1.2
|
||||
rspack@1.1.0
|
||||
service-configuration@1.3.5
|
||||
session@1.2.3-rc350.2
|
||||
session@1.2.3
|
||||
sha@1.0.10
|
||||
shell-server@0.7.0
|
||||
socket-stream-client@0.7.0-rc350.2
|
||||
socket-stream-client@0.7.0
|
||||
spacebars@2.0.1
|
||||
spacebars-compiler@2.0.1
|
||||
standard-minifier-js@3.2.0
|
||||
@@ -105,9 +105,9 @@ templating-runtime@2.0.2
|
||||
templating-tools@2.0.1
|
||||
tools-core@1.1.0
|
||||
tracker@1.3.4
|
||||
typescript@5.10.1-rc350.0
|
||||
url@1.3.6-rc350.2
|
||||
webapp@2.2.0-rc350.2
|
||||
typescript@5.10.1
|
||||
url@1.3.6
|
||||
webapp@2.2.0
|
||||
webapp-hashing@1.1.2
|
||||
wekan-accounts-cas@0.2.0
|
||||
wekan-accounts-lockout@1.1.0
|
||||
|
||||
+8
-1
@@ -1,2 +1,9 @@
|
||||
npm-packages/
|
||||
tests/
|
||||
# Root tests/ holds Playwright specs, Node E2E and node-based unit tests - none
|
||||
# of it is Meteor code, and Meteor's file watcher otherwise churns on the
|
||||
# tests/playwright/test-results/ tree (inotify errors). The leading slash anchors
|
||||
# this to the repo root only, so it does NOT match server/lib/tests/ or
|
||||
# client/lib/tests/ (the Mocha suites, loaded via meteor.testModule in
|
||||
# package.json). A naked "tests/" would match a dir named tests at any depth and
|
||||
# would hide those suites, making `meteor test` report "0 passing".
|
||||
/tests/
|
||||
+863
-144
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -2,10 +2,10 @@
|
||||
|
||||
For all code at WeKan GitHub Organization https://github.com/wekan
|
||||
|
||||
- For pull requests, mention only those participants that are **human**.
|
||||
- All code in pull requests need to have permission already to add it to WeKan with MIT license, and will become MIT license.
|
||||
- For any dependencies, permissive licenses like https://copyfree.org are preferred
|
||||
- For anything currently that is non-permissive (like GPL, AGPL, SSPL), those will be replaced with permissive-licensed alternatives
|
||||
- Any intelligence allowed: Human, AI or any other. No discrimination, please have world peace. Mentioning participants optional.
|
||||
- All code is checked and validated by xet7 and many different security AI. If code is real working fix or feature, it usually will be merged.
|
||||
- All known vulnerabilities have been fixed at newest WeKan, please upgrade https://wekan.fi/upgrade/
|
||||
- There is no known backdoors. If WeKan is installed by someone else, first registered user is Admin and has Admin Panel access.
|
||||
|
||||
+2
-2
@@ -7,14 +7,14 @@ LABEL org.opencontainers.image.source="https://github.com/wekan/wekan"
|
||||
# TARGETARCH and TARGETVARIANT are automatically provided by Docker Buildx
|
||||
ARG TARGETARCH
|
||||
ARG TARGETVARIANT
|
||||
ARG VERSION=9.68
|
||||
ARG VERSION=9.78
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV BUILD_DEPS="apt-utils gnupg wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3 unzip"
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v24.17.0 \
|
||||
NODE_VERSION=v24.18.0 \
|
||||
METEOR_RELEASE=METEOR@3.5-rc.2 \
|
||||
USE_EDGE=false \
|
||||
NPM_VERSION=11.12.1 \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v9.68.0"
|
||||
appVersion: "v9.78.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -265,10 +265,9 @@ if arguments == 10:
|
||||
boardid = sys.argv[3]
|
||||
name = sys.argv[4]
|
||||
type1 = sys.argv[5]
|
||||
settings = str(json.loads(sys.argv[6]))
|
||||
# There is error: Settings must be object. So this does not work yet.
|
||||
#settings = {'currencyCode': 'EUR'}
|
||||
print(type(settings))
|
||||
settings_arg = sys.argv[6]
|
||||
# settings is optional; an empty arg -> {} (avoids json.loads('') crashing).
|
||||
settings = json.loads(settings_arg) if settings_arg.strip() else {}
|
||||
showoncard = sys.argv[7]
|
||||
automaticallyoncard = sys.argv[8]
|
||||
showlabelonminicard = sys.argv[9]
|
||||
@@ -276,7 +275,7 @@ if arguments == 10:
|
||||
customfieldtoboard = wekanurl + apiboards + boardid + s + cf
|
||||
# Add Custom Field to Board
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
post_data = {'authorId': '{}'.format(authorid), 'name': '{}'.format(name), 'type': '{}'.format(type1), 'settings': '{}'.format(settings), 'showoncard': '{}'.format(showoncard), 'automaticallyoncard': '{}'.format(automaticallyoncard), 'showlabelonminicard': '{}'.format(showlabelonminicard), 'showsumattopoflist': '{}'.format(showsumattopoflist)}
|
||||
post_data = {'authorId': '{}'.format(authorid), 'name': '{}'.format(name), 'type': '{}'.format(type1), 'settings': json.dumps(settings), 'showoncard': '{}'.format(showoncard), 'automaticallyoncard': '{}'.format(automaticallyoncard), 'showlabelonminicard': '{}'.format(showlabelonminicard), 'showsumattopoflist': '{}'.format(showsumattopoflist)}
|
||||
body = requests.post(customfieldtoboard, data=post_data, headers=headers)
|
||||
print(body.text)
|
||||
# ------- ADD CUSTOM FIELD TO BOARD END -----------
|
||||
|
||||
@@ -108,7 +108,13 @@ Template.comment.events({
|
||||
},
|
||||
'click .js-delete-comment': Popup.afterConfirm('deleteComment', function () {
|
||||
const commentId = this._id;
|
||||
CardComments.remove(commentId);
|
||||
// #3252: only remove if the doc is still in the local cache. Under heavy
|
||||
// archive/delete churn the comment can already be evicted from Minimongo,
|
||||
// and CardComments.remove() of a missing _id throws "Removed nonexistent
|
||||
// document" on the client.
|
||||
if (commentId && CardComments.findOne(commentId)) {
|
||||
CardComments.remove(commentId);
|
||||
}
|
||||
Popup.back();
|
||||
}),
|
||||
'submit .js-edit-comment'(evt, tpl) {
|
||||
|
||||
@@ -107,17 +107,17 @@
|
||||
overflow-y: scroll !important;
|
||||
}
|
||||
|
||||
/* Mobile - make all text 2x bigger inside #content by default (icons stay same size) */
|
||||
/* Mobile - keep #content text at normal size (reverted #6426 oversizing) */
|
||||
@media screen and (max-width: 800px),
|
||||
screen and (max-device-width: 800px),
|
||||
screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 800px),
|
||||
screen and (max-width: 800px) and (orientation: portrait),
|
||||
screen and (max-width: 800px) and (orientation: landscape) {
|
||||
#content {
|
||||
font-size: 2em !important; /* 2x bigger base font size for content area */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
/* Make all text elements 2x bigger */
|
||||
/* Keep all text elements at normal size */
|
||||
#content h1, #content h2, #content h3, #content h4, #content h5, #content h6,
|
||||
#content p, #content span, #content div, #content a, #content button,
|
||||
#content .minicard, #content .list-header-name, #content .board-header-btn,
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
/* Fallback for iPhone devices using JavaScript detection */
|
||||
.iphone-device #content {
|
||||
font-size: 2em !important; /* 2x bigger base font size for content area */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.iphone-device #content h1, .iphone-device #content h2, .iphone-device #content h3, .iphone-device #content h4, .iphone-device #content h5, .iphone-device #content h6,
|
||||
@@ -231,9 +231,9 @@
|
||||
font-size: 1em !important; /* Keep original icon size */
|
||||
}
|
||||
|
||||
/* Mobile iPhone: scale card details text and icons to 2x */
|
||||
/* Mobile iPhone: keep card details text/icons at normal size (reverted #6426 oversizing) */
|
||||
body.mobile-mode.iphone-device .card-details {
|
||||
font-size: 2em !important;
|
||||
font-size: 1em !important;
|
||||
}
|
||||
body.mobile-mode.iphone-device .card-details .fa,
|
||||
body.mobile-mode.iphone-device .card-details .icon,
|
||||
|
||||
@@ -297,6 +297,62 @@
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
/* #5799: board-name search box in the All Boards header */
|
||||
.boards-path-header .board-search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 4px 8px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.boards-path-header .board-search input {
|
||||
border: none;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
font-size: 14px;
|
||||
min-width: 140px;
|
||||
}
|
||||
|
||||
.boards-path-header .board-search .board-search-clear {
|
||||
cursor: pointer;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.boards-path-header .board-search .board-search-clear:hover {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
/* #5799: board grid pagination controls, mirroring Admin Panel > People */
|
||||
.boards-pagination {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.boards-pagination button {
|
||||
min-width: 32px;
|
||||
height: 30px;
|
||||
border: 1px solid #bbb;
|
||||
background: #fff;
|
||||
border-radius: 0.4vw;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.boards-pagination button.disabled {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.boards-page-info {
|
||||
min-width: 72px;
|
||||
text-align: center;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.boards-path-header .path-icon {
|
||||
font-size: 18px;
|
||||
}
|
||||
@@ -946,21 +1002,13 @@ body.grey-icons-enabled .checkmark-no-grey {
|
||||
}
|
||||
}
|
||||
|
||||
/* Mobile - make all text and icons 2x bigger above #content on All Boards page */
|
||||
/* Mobile All Boards layout fixes */
|
||||
@media screen and (max-width: 800px),
|
||||
screen and (max-device-width: 800px),
|
||||
screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 800px),
|
||||
screen and (max-width: 800px) and (orientation: portrait),
|
||||
screen and (max-width: 800px) and (orientation: landscape),
|
||||
screen and (max-device-width: 932px) and (-webkit-min-device-pixel-ratio: 3) {
|
||||
.wrapper {
|
||||
font-size: 2em !important; /* 2x bigger base font size for All Boards page */
|
||||
}
|
||||
|
||||
.wrapper * {
|
||||
font-size: inherit !important; /* Inherit the 2x scaling */
|
||||
}
|
||||
|
||||
/* Stack the two-column All Boards layout on small screens. The fixed
|
||||
"260px 1fr" grid had no mobile collapse, so on narrow non-iPhone browsers
|
||||
(Fairphone Firefox ESR / Ubuntu Touch Morph, narrow desktop) it overflowed
|
||||
@@ -976,243 +1024,6 @@ body.grey-icons-enabled .checkmark-no-grey {
|
||||
padding-inline-end: 0 !important;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.wrapper .fa, .wrapper .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons */
|
||||
}
|
||||
|
||||
.board-list-header {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list-header h1 {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.AllBoardTeamsOrgs {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.AllBoardTeamsOrgs select {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.AllBoardTeamsOrgs input {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.AllBoardTeamsOrgs .fa {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .board-list-item {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .board-list-item-name {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .board-list-item-desc {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .minicard-members {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .minicard-lists {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .fa {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.board-list .board-handle {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
}
|
||||
|
||||
/* Fallback for iPhone devices using JavaScript detection - All Boards page */
|
||||
.iphone-device .wrapper {
|
||||
font-size: 2em !important; /* 2x bigger base font size for All Boards page */
|
||||
}
|
||||
|
||||
.iphone-device .wrapper * {
|
||||
font-size: inherit !important; /* Inherit the 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .wrapper .fa, .iphone-device .wrapper .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons */
|
||||
}
|
||||
|
||||
.iphone-device .board-list-header {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list-header h1 {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .AllBoardTeamsOrgs {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .AllBoardTeamsOrgs select {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .AllBoardTeamsOrgs input {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .AllBoardTeamsOrgs .fa {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .board-list-item {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .board-list-item-name {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .board-list-item-desc {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .minicard-members {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .minicard-lists {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .fa {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
.iphone-device .board-list .board-handle {
|
||||
font-size: 1em !important; /* Use inherited 2x scaling */
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini and very small screens - make everything much larger */
|
||||
@media screen and (max-width: 400px) and (max-height: 900px) {
|
||||
.board-list {
|
||||
height: calc(100vh - 120px) !important;
|
||||
overflow-y: scroll !important;
|
||||
overflow-x: hidden !important;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
padding: 0 0.5rem;
|
||||
}
|
||||
|
||||
.board-list li {
|
||||
width: 100% !important;
|
||||
float: none !important;
|
||||
display: block !important;
|
||||
margin-bottom: 1.5rem !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item {
|
||||
height: 12rem !important; /* Much taller */
|
||||
width: 100% !important;
|
||||
margin: 0 !important;
|
||||
padding: 1rem !important; /* More padding */
|
||||
font-size: 18px !important; /* Much larger text */
|
||||
line-height: 1.4 !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item .board-list-item-name {
|
||||
font-size: 20px !important; /* Larger board names */
|
||||
font-weight: bold !important;
|
||||
margin-bottom: 0.5rem !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item .board-list-item-desc {
|
||||
font-size: 16px !important; /* Larger descriptions */
|
||||
line-height: 1.3 !important;
|
||||
}
|
||||
|
||||
.board-list .board-list-item .minicard-members {
|
||||
font-size: 14px !important; /* Larger member avatars */
|
||||
}
|
||||
|
||||
.board-list .board-list-item .minicard-lists {
|
||||
font-size: 14px !important; /* Larger list counters */
|
||||
}
|
||||
|
||||
.board-list .board-handle {
|
||||
position: absolute;
|
||||
padding: 10px !important;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
inset-inline-end: 15px !important;
|
||||
font-size: 28px !important; /* Much larger drag handle */
|
||||
color: #fff;
|
||||
background: rgba(0,0,0,0.4) !important;
|
||||
border-radius: 50%;
|
||||
width: 50px !important; /* Larger handle */
|
||||
height: 50px !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 10;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.board-list .board-handle:hover {
|
||||
background: rgba(255, 255, 0, 0.8) !important; /* Yellow hover */
|
||||
}
|
||||
|
||||
/* Force scrollbar to be visible and larger */
|
||||
.board-list::-webkit-scrollbar {
|
||||
width: 16px !important; /* Much wider scrollbar */
|
||||
display: block !important;
|
||||
visibility: visible !important;
|
||||
}
|
||||
|
||||
.board-list::-webkit-scrollbar-track {
|
||||
background: #f1f1f1 !important;
|
||||
border-radius: 8px !important;
|
||||
display: block !important;
|
||||
visibility: visible !important;
|
||||
}
|
||||
|
||||
.board-list::-webkit-scrollbar-thumb {
|
||||
background: #666 !important; /* Darker for better visibility */
|
||||
border-radius: 8px !important;
|
||||
display: block !important;
|
||||
visibility: visible !important;
|
||||
min-height: 50px !important; /* Minimum thumb size */
|
||||
}
|
||||
|
||||
.board-list::-webkit-scrollbar-thumb:hover {
|
||||
background: #333 !important;
|
||||
}
|
||||
|
||||
/* Ensure scrollbar is always visible */
|
||||
.board-list {
|
||||
scrollbar-gutter: stable;
|
||||
scrollbar-width: auto !important;
|
||||
min-height: 100vh !important;
|
||||
}
|
||||
|
||||
.board-list::after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 200px !important; /* More space to ensure scrolling */
|
||||
}
|
||||
}
|
||||
.AllBoardTeamsOrgs {
|
||||
list-style-type: none;
|
||||
|
||||
@@ -85,6 +85,18 @@ template(name="boardList")
|
||||
i.fa.fa-thumb-tack
|
||||
| {{_ 'multi-selection-active'}}
|
||||
.path-right
|
||||
.board-search
|
||||
span.emoji-icon
|
||||
i.fa.fa-search
|
||||
input.js-board-search-input(type="text" placeholder="{{_ 'search-boards'}}" value="{{boardSearch}}" autocomplete="off")
|
||||
if boardSearch
|
||||
a.board-search-clear.js-board-search-clear(title="{{_ 'filter-clear'}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-times
|
||||
a.board-header-btn.js-open-boards-sort(title="{{_ 'sort-boards'}}" class="{{#unless isBoardsSort 'custom'}}emphasis{{/unless}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-sort-alpha-asc
|
||||
span {{_ 'sort'}}
|
||||
if canModifyBoards
|
||||
if hasBoardsSelected
|
||||
button.js-archive-selected-boards.board-header-btn
|
||||
@@ -104,6 +116,13 @@ template(name="boardList")
|
||||
a.board-header-btn-close.js-multiselection-reset(title="{{_ 'filter-clear'}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-times
|
||||
if boardsPaginationActive
|
||||
.boards-pagination
|
||||
button.js-boards-prev-page(class="{{#if hasBoardsPrevPage}}{{else}}disabled{{/if}}")
|
||||
| <
|
||||
span.boards-page-info {{boardsCurrentPage}} / {{boardsTotalPages}}
|
||||
button.js-boards-next-page(class="{{#if hasBoardsNextPage}}{{else}}disabled{{/if}}")
|
||||
| >
|
||||
ul.board-list.clearfix.js-boards.dragscroll(class="{{#if isMiniScreen}}mobile-view{{/if}} {{#if BoardMultiSelection.isActive}}is-multiselection-active{{/if}}")
|
||||
li.js-add-board
|
||||
if isSelectedMenu 'templates'
|
||||
@@ -205,6 +224,24 @@ template(name="boardList")
|
||||
span.emoji-icon
|
||||
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
|
||||
|
||||
template(name="boardsSortPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-boards-sort(data-sort="custom" class="{{#if isBoardsSort 'custom'}}active{{/if}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-arrows
|
||||
| {{_ 'sort-boards-custom'}}
|
||||
li
|
||||
a.js-boards-sort(data-sort="title-asc" class="{{#if isBoardsSort 'title-asc'}}active{{/if}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-sort-alpha-asc
|
||||
| {{_ 'sort-boards-title-asc'}}
|
||||
li
|
||||
a.js-boards-sort(data-sort="title-desc" class="{{#if isBoardsSort 'title-desc'}}active{{/if}}")
|
||||
span.emoji-icon
|
||||
i.fa.fa-sort-alpha-desc
|
||||
| {{_ 'sort-boards-title-desc'}}
|
||||
|
||||
template(name="boardListHeaderBar")
|
||||
h1 {{_ title }}
|
||||
//.board-header-btns.right
|
||||
|
||||
@@ -2,8 +2,6 @@ import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { FlowRouter } from 'meteor/ostrio:flow-router-extra';
|
||||
import getSlug from 'limax';
|
||||
import '/client/lib/dragscrollTouch';
|
||||
import { enablePageDragscroll, disablePageDragscroll } from '/client/lib/pageDragscroll';
|
||||
import TableVisibilityModeSettings from '/models/tableVisibilityModeSettings';
|
||||
import { BoardMultiSelection } from '/client/lib/boardMultiSelection';
|
||||
import { EscapeActions } from '/client/lib/escapeActions';
|
||||
@@ -57,6 +55,10 @@ function shareBoardWith(boardId, shareType, name, id) {
|
||||
|
||||
const DEFAULT_WORKSPACE_ICON = '📁';
|
||||
|
||||
// #5799: how many board icons to show per page in the sorted (non-custom) modes.
|
||||
// Matches the Admin Panel > People page size.
|
||||
const BOARDS_PER_PAGE = 25;
|
||||
|
||||
function getCurrentWorkspacesTree() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const tree =
|
||||
@@ -164,6 +166,13 @@ Template.boardList.onCreated(function () {
|
||||
this.selectedMenu = new ReactiveVar(Session.get('boardListMenu') || 'starred');
|
||||
this.selectedWorkspaceIdVar = new ReactiveVar(null);
|
||||
this.workspacesTreeVar = new ReactiveVar([]);
|
||||
// #5799: free-text search by board name. When non-empty it searches across
|
||||
// ALL the user's boards (Starred, Templates, Remaining and every workspace),
|
||||
// ignoring the selected-menu filter.
|
||||
this.boardSearchVar = new ReactiveVar('');
|
||||
// #5799: server-side pagination state for the sorted (non-custom) modes.
|
||||
this.boardsPageVar = new ReactiveVar(1);
|
||||
this.pagedBoardsVar = new ReactiveVar({ ids: [], total: 0 });
|
||||
// #5850: the user's orgs/teams that have the per-org/team Shared Templates
|
||||
// flag set (plus email domains), fetched via a non-admin server method since
|
||||
// the org/team publications are admin-only. Gates the drag-to-share targets.
|
||||
@@ -262,6 +271,50 @@ Template.boardList.onCreated(function () {
|
||||
}
|
||||
});
|
||||
|
||||
// #5799: reset to the first page whenever the active filter changes (search
|
||||
// text, selected menu/workspace or sort mode). Depends only on those signals,
|
||||
// not on boardsPageVar, so paging next/prev does not reset itself.
|
||||
this.autorun(() => {
|
||||
this.boardSearchVar.get();
|
||||
this.selectedMenu.get();
|
||||
const cu = ReactiveCache.getCurrentUser();
|
||||
if (cu && typeof cu.getAllBoardsSortBy === 'function') {
|
||||
cu.getAllBoardsSortBy();
|
||||
}
|
||||
this.boardsPageVar.set(1);
|
||||
});
|
||||
|
||||
// #5799: fetch the current page of boards from the server for the sorted
|
||||
// (non-custom) modes, so only that page of icons is rendered. Custom (manual
|
||||
// drag order) stays unpaginated client-side so drag-reordering keeps working.
|
||||
// Uses the effective current user server-side, so it also works under
|
||||
// GlobalAdmin impersonation.
|
||||
this.autorun(() => {
|
||||
const cu = ReactiveCache.getCurrentUser();
|
||||
const sortBy =
|
||||
cu && typeof cu.getAllBoardsSortBy === 'function'
|
||||
? cu.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
if (sortBy === 'custom') {
|
||||
this.pagedBoardsVar.set({ ids: [], total: 0 });
|
||||
return;
|
||||
}
|
||||
const search = (this.boardSearchVar.get() || '').trim();
|
||||
const menu = this.selectedMenu.get();
|
||||
const page = this.boardsPageVar.get();
|
||||
Meteor.call(
|
||||
'getAllBoardsPage',
|
||||
{ search, sortBy, menu, page, perPage: BOARDS_PER_PAGE },
|
||||
(err, res) => {
|
||||
if (err) {
|
||||
console.error('getAllBoardsPage failed:', err);
|
||||
return;
|
||||
}
|
||||
if (res) this.pagedBoardsVar.set(res);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
// The templates-container board is no longer auto-created at signup (#2339,
|
||||
// #5850), and it is no longer auto-created when the user merely opens the
|
||||
// Templates sub-view either: opening the view must not leave behind an empty
|
||||
@@ -274,12 +327,9 @@ Template.boardList.onCreated(function () {
|
||||
});
|
||||
|
||||
Template.boardList.onRendered(function () {
|
||||
// Enable drag-to-scroll on the All Boards page the same way the board
|
||||
// canvas/swimlanes do. On desktop the page scroll container is <body>, so we
|
||||
// tag it via enablePageDragscroll(); the .board-list.dragscroll element only
|
||||
// becomes a scroll container in mobile view, where its own class handles it.
|
||||
// Finger drag-scrolling is handled by dragscrollTouch.js.
|
||||
enablePageDragscroll();
|
||||
// Drag-to-scroll on the All Boards page is handled centrally for all
|
||||
// non-board pages by defaultLayout's route-aware autorun
|
||||
// (see client/components/main/layouts.js).
|
||||
|
||||
// jQuery sortable is disabled in favor of HTML5 drag-and-drop for space management
|
||||
// The old sortable code has been removed to prevent conflicts
|
||||
@@ -325,13 +375,6 @@ Template.boardList.onRendered(function () {
|
||||
*/
|
||||
});
|
||||
|
||||
Template.boardList.onDestroyed(function () {
|
||||
// Stop tagging <body> as drag-scrollable when leaving the All Boards page so
|
||||
// other layouts (e.g. a board view, whose canvas does its own dragscroll) are
|
||||
// not affected.
|
||||
disablePageDragscroll();
|
||||
});
|
||||
|
||||
Template.boardList.helpers({
|
||||
userHasTeams() {
|
||||
if (ReactiveCache.getCurrentUser()?.teams?.length > 0) return true;
|
||||
@@ -486,27 +529,53 @@ Template.boardList.helpers({
|
||||
|
||||
const boards = ReactiveCache.getBoards(query, {});
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
|
||||
// #5799: in a sorted (non-custom) mode the server already computed the
|
||||
// current page (filtered by menu/search and sorted), so render exactly that
|
||||
// ordered page of board icons. Custom (manual drag order) falls through to
|
||||
// the unpaginated client-side path below so drag-reordering keeps working.
|
||||
const sortMode =
|
||||
currentUser && typeof currentUser.getAllBoardsSortBy === 'function'
|
||||
? currentUser.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
if (sortMode !== 'custom') {
|
||||
const paged = tpl.pagedBoardsVar.get();
|
||||
return (paged.ids || [])
|
||||
.map((id) => ReactiveCache.getBoard(id))
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
let list = boards;
|
||||
// Apply left menu filtering
|
||||
const sel = tpl.selectedMenu.get();
|
||||
const assignments =
|
||||
(currentUser &&
|
||||
currentUser.profile &&
|
||||
currentUser.profile.boardWorkspaceAssignments) ||
|
||||
{};
|
||||
if (sel === 'starred') {
|
||||
// Starred boards are always visible in Starred.
|
||||
list = list.filter((b) => currentUser && currentUser.hasStarred(b._id));
|
||||
} else if (sel === 'templates') {
|
||||
list = list.filter((b) => b.type === 'template-container');
|
||||
} else if (sel === 'remaining') {
|
||||
// Remaining only shows boards not assigned to any workspace.
|
||||
list = list.filter(
|
||||
(b) => !assignments[b._id] && b.type !== 'template-container',
|
||||
);
|
||||
|
||||
// #5799: when a board-name search is active, search across ALL the user's
|
||||
// boards (every menu/workspace) by title and skip the menu filter, so a
|
||||
// board in any category — Starred, Templates, Remaining or a (sub)workspace
|
||||
// — is found from a single search box.
|
||||
const search = (tpl.boardSearchVar.get() || '').trim().toLowerCase();
|
||||
if (search) {
|
||||
list = list.filter((b) => (b.title || '').toLowerCase().includes(search));
|
||||
} else {
|
||||
// Workspace view includes all boards in that workspace, including starred.
|
||||
list = list.filter((b) => assignments[b._id] === sel);
|
||||
// Apply left menu filtering
|
||||
const sel = tpl.selectedMenu.get();
|
||||
if (sel === 'starred') {
|
||||
// Starred boards are always visible in Starred.
|
||||
list = list.filter((b) => currentUser && currentUser.hasStarred(b._id));
|
||||
} else if (sel === 'templates') {
|
||||
list = list.filter((b) => b.type === 'template-container');
|
||||
} else if (sel === 'remaining') {
|
||||
// Remaining only shows boards not assigned to any workspace.
|
||||
list = list.filter(
|
||||
(b) => !assignments[b._id] && b.type !== 'template-container',
|
||||
);
|
||||
} else {
|
||||
// Workspace view includes all boards in that workspace, including starred.
|
||||
list = list.filter((b) => assignments[b._id] === sel);
|
||||
}
|
||||
}
|
||||
|
||||
if (currentUser && typeof currentUser.sortBoardsForUser === 'function') {
|
||||
@@ -650,6 +719,46 @@ Template.boardList.helpers({
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
return currentUser && !currentUser.isCommentOnly();
|
||||
},
|
||||
// #5799: current board-name search text (for the input value and the clear button).
|
||||
boardSearch() {
|
||||
return Template.instance().boardSearchVar.get();
|
||||
},
|
||||
// #5799: pagination controls (only shown in the sorted, non-custom modes).
|
||||
boardsPaginationActive() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const sortMode =
|
||||
currentUser && typeof currentUser.getAllBoardsSortBy === 'function'
|
||||
? currentUser.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
if (sortMode === 'custom') return false;
|
||||
const total = Template.instance().pagedBoardsVar.get().total || 0;
|
||||
return total > BOARDS_PER_PAGE;
|
||||
},
|
||||
boardsCurrentPage() {
|
||||
return Template.instance().boardsPageVar.get();
|
||||
},
|
||||
boardsTotalPages() {
|
||||
const total = Template.instance().pagedBoardsVar.get().total || 0;
|
||||
return Math.max(1, Math.ceil(total / BOARDS_PER_PAGE));
|
||||
},
|
||||
hasBoardsPrevPage() {
|
||||
return Template.instance().boardsPageVar.get() > 1;
|
||||
},
|
||||
hasBoardsNextPage() {
|
||||
const tpl = Template.instance();
|
||||
const total = tpl.pagedBoardsVar.get().total || 0;
|
||||
const totalPages = Math.max(1, Math.ceil(total / BOARDS_PER_PAGE));
|
||||
return tpl.boardsPageVar.get() < totalPages;
|
||||
},
|
||||
// #5799: current All Boards sort mode ('custom' | 'title-asc' | 'title-desc').
|
||||
isBoardsSort(mode) {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const current =
|
||||
currentUser && typeof currentUser.getAllBoardsSortBy === 'function'
|
||||
? currentUser.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
return current === mode;
|
||||
},
|
||||
hasBoardsSelected() {
|
||||
return BoardMultiSelection.count() > 0;
|
||||
},
|
||||
@@ -745,6 +854,41 @@ Template.boardList.events({
|
||||
Popup.open('createBoard')(evt);
|
||||
}
|
||||
},
|
||||
// #5799: choose how the All Boards page is sorted.
|
||||
'click .js-open-boards-sort': Popup.open('boardsSort'),
|
||||
// #5799: search boards by name across all categories.
|
||||
'input .js-board-search-input'(evt, tpl) {
|
||||
tpl.boardSearchVar.set(evt.currentTarget.value);
|
||||
},
|
||||
'keydown .js-board-search-input'(evt, tpl) {
|
||||
// Esc clears the search.
|
||||
if (evt.keyCode === 27) {
|
||||
tpl.boardSearchVar.set('');
|
||||
evt.currentTarget.value = '';
|
||||
}
|
||||
},
|
||||
'click .js-board-search-clear'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
tpl.boardSearchVar.set('');
|
||||
const input = tpl.find('.js-board-search-input');
|
||||
if (input) {
|
||||
input.value = '';
|
||||
input.focus();
|
||||
}
|
||||
},
|
||||
// #5799: board grid pagination (sorted modes only).
|
||||
'click .js-boards-prev-page'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const page = tpl.boardsPageVar.get();
|
||||
if (page > 1) tpl.boardsPageVar.set(page - 1);
|
||||
},
|
||||
'click .js-boards-next-page'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const total = tpl.pagedBoardsVar.get().total || 0;
|
||||
const totalPages = Math.max(1, Math.ceil(total / BOARDS_PER_PAGE));
|
||||
const page = tpl.boardsPageVar.get();
|
||||
if (page < totalPages) tpl.boardsPageVar.set(page + 1);
|
||||
},
|
||||
'click .js-star-board'(evt) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
@@ -1157,6 +1301,30 @@ Template.boardList.events({
|
||||
},
|
||||
});
|
||||
|
||||
// #5799: All Boards sort popup — pick custom (manual drag order) or
|
||||
// alphabetical A→Z / Z→A. The choice is stored per user.
|
||||
Template.boardsSortPopup.helpers({
|
||||
isBoardsSort(mode) {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const current =
|
||||
currentUser && typeof currentUser.getAllBoardsSortBy === 'function'
|
||||
? currentUser.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
return current === mode;
|
||||
},
|
||||
});
|
||||
|
||||
Template.boardsSortPopup.events({
|
||||
'click .js-boards-sort'(evt) {
|
||||
evt.preventDefault();
|
||||
const mode = evt.currentTarget.getAttribute('data-sort');
|
||||
if (mode) {
|
||||
Meteor.call('setAllBoardsSortBy', mode);
|
||||
}
|
||||
Popup.back();
|
||||
},
|
||||
});
|
||||
|
||||
Template.workspaceActionsPopup.helpers({
|
||||
workspaceName() {
|
||||
return this.name || '';
|
||||
|
||||
@@ -1087,3 +1087,14 @@ body.mobile-mode .card-details .card-details-header .close-card-details-mobile-w
|
||||
line-height: 1;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* #6431 follow-up: cover image on the opened card (Card Settings > Cover image
|
||||
on card, opt-in). Mirrors the minicard cover but taller. */
|
||||
.card-details-cover {
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
height: 200px;
|
||||
user-select: none;
|
||||
margin: 8px 0;
|
||||
}
|
||||
@@ -112,6 +112,11 @@ template(name="cardDetails")
|
||||
i.fa.fa-check
|
||||
span {{_ 'upload-completed'}}
|
||||
|
||||
//- #6431 follow-up: cover image on the opened card (opt-in, OFF by default).
|
||||
if currentBoard.allowsCoverAttachmentOnCard
|
||||
if cover
|
||||
.card-details-cover(style="background-image: url('{{cover.link 'original'}}');")
|
||||
|
||||
.card-details-left
|
||||
|
||||
.card-details-items
|
||||
@@ -684,6 +689,14 @@ template(name="cardDetails")
|
||||
.card-checklist-attachmentGallery.card-checklists
|
||||
if currentBoard.allowsChecklists
|
||||
hr
|
||||
//- Total checklist item count (finished/total) shown above all
|
||||
checklists. The board flag is a cheap boolean, so when it is off
|
||||
the checklist counting below is never evaluated.
|
||||
if currentBoard.allowsChecklistCountBadgeOnCard
|
||||
if checklists.length
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-check-square-o
|
||||
| {{checklistFinishedCount}}/{{checklistItemCount}}
|
||||
+checklists(cardId = _id card = this)
|
||||
if currentBoard.allowsSubtasks
|
||||
hr
|
||||
@@ -693,6 +706,8 @@ template(name="cardDetails")
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
if currentBoard.allowsAttachmentCountOnCard
|
||||
| ({{attachments.length}})
|
||||
if Meteor.settings.public.attachmentsUploadMaxSize
|
||||
| {{_ 'max-upload-filesize'}} {{Meteor.settings.public.attachmentsUploadMaxSize}}
|
||||
br
|
||||
|
||||
@@ -51,6 +51,7 @@ import Lists from '/models/lists';
|
||||
import CardComments from '/models/cardComments';
|
||||
import { ALLOWED_COLORS } from '/config/const';
|
||||
import { uniqBy } from '/imports/lib/collectionHelpers';
|
||||
import { memberTargetBoardId } from '/models/lib/linkedCardMembers';
|
||||
import { UserAvatar } from '../users/userAvatar';
|
||||
import { Filter } from '/client/lib/filter';
|
||||
import { BoardSwimlaneListCardDialog } from '/client/lib/dialogWithBoardSwimlaneListCard';
|
||||
@@ -859,17 +860,25 @@ Template.cardDetails.events({
|
||||
event.preventDefault();
|
||||
const description = tpl.find('.js-new-description-input').value;
|
||||
const card = Template.currentData();
|
||||
await card.setDescription(description);
|
||||
// #5809: surface a visible error instead of failing silently — e.g. editing
|
||||
// a linked card whose target is on a board the user cannot write to gets a
|
||||
// permission denial that otherwise vanished with no feedback.
|
||||
try {
|
||||
await card.setDescription(description);
|
||||
} catch (error) {
|
||||
alert(error?.reason || error?.message || 'Failed to save description');
|
||||
}
|
||||
},
|
||||
async 'submit .js-card-details-title'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const titleInput = tpl.find('.js-edit-card-title');
|
||||
const title = titleInput ? titleInput.value.trim() : '';
|
||||
const card = Template.currentData();
|
||||
if (title) {
|
||||
await card.setTitle(title);
|
||||
} else {
|
||||
await card.setTitle('');
|
||||
// #5809: surface a visible error instead of failing silently (see above).
|
||||
try {
|
||||
await card.setTitle(title || '');
|
||||
} catch (error) {
|
||||
alert(error?.reason || error?.message || 'Failed to save title');
|
||||
}
|
||||
},
|
||||
'submit .js-card-details-assigner'(event, tpl) {
|
||||
@@ -1498,9 +1507,13 @@ Template.editCardTitleForm.events({
|
||||
});
|
||||
|
||||
Template.cardMembersPopup.onCreated(function () {
|
||||
let currBoard = Utils.getCurrentBoard();
|
||||
let members = currBoard.activeMembers();
|
||||
this.members = new ReactiveVar(members);
|
||||
// #4965: only the filter term is stored reactively; the candidate list is
|
||||
// derived reactively in the members() helper (via filterMembers, which reads
|
||||
// board.activeMembers() on each call). Previously the list was snapshotted
|
||||
// once here, so a member added to the board after the popup opened — or whose
|
||||
// user document finished loading after open — was missing until the popup was
|
||||
// reopened.
|
||||
this.filterTerm = new ReactiveVar('');
|
||||
});
|
||||
|
||||
Template.cardMembersPopup.events({
|
||||
@@ -1512,8 +1525,7 @@ Template.cardMembersPopup.events({
|
||||
event.preventDefault();
|
||||
},
|
||||
'keyup .card-members-filter'(event) {
|
||||
const members = filterMembers(event.target.value);
|
||||
Template.instance().members.set(members);
|
||||
Template.instance().filterTerm.set(event.target.value);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1527,7 +1539,7 @@ Template.cardMembersPopup.helpers({
|
||||
},
|
||||
|
||||
members() {
|
||||
const members = Template.instance().members.get();
|
||||
const members = filterMembers(Template.instance().filterTerm.get());
|
||||
const uniqueMembers = uniqBy(members, 'userId');
|
||||
return [...uniqueMembers].sort((a, b) => {
|
||||
const userA = ReactiveCache.getUser(a.userId);
|
||||
@@ -1646,7 +1658,25 @@ Template.cardLocationsPopup.events({
|
||||
});
|
||||
|
||||
const filterMembers = (filterTerm) => {
|
||||
let currBoard = Utils.getCurrentBoard();
|
||||
// #5676: for a linked card the members live on the REAL card it points at,
|
||||
// which may be on another board (that is what getMembers()/toggleMember() act
|
||||
// on). Offer that board's members instead of the viewing board's, so the
|
||||
// picker is consistent with where membership is actually stored. Falls back to
|
||||
// the current board for normal cards or when the real card isn't loaded yet.
|
||||
const card = getCurrentCardFromContext();
|
||||
let currBoard = null;
|
||||
if (card) {
|
||||
const boardId = memberTargetBoardId(card, id => ReactiveCache.getCard(id));
|
||||
if (boardId) {
|
||||
currBoard = ReactiveCache.getBoard(boardId);
|
||||
}
|
||||
}
|
||||
if (!currBoard) {
|
||||
currBoard = Utils.getCurrentBoard();
|
||||
}
|
||||
if (!currBoard) {
|
||||
return [];
|
||||
}
|
||||
let members = currBoard.activeMembers();
|
||||
|
||||
if (filterTerm) {
|
||||
|
||||
@@ -214,7 +214,9 @@ Template.checklists.events({
|
||||
'click .js-delete-checklist-item': Popup.afterConfirm('checklistItemDelete', function () {
|
||||
Popup.back();
|
||||
const item = this?.item || this;
|
||||
if (item && item._id) {
|
||||
// #3252: guard against removing a doc already evicted from Minimongo (heavy
|
||||
// archive/delete churn), which throws "Removed nonexistent document".
|
||||
if (item && item._id && ChecklistItems.findOne(item._id)) {
|
||||
ChecklistItems.remove(item._id);
|
||||
}
|
||||
}),
|
||||
@@ -258,7 +260,8 @@ Template.checklistActionsPopup.events({
|
||||
'click .js-delete-checklist': Popup.afterConfirm('checklistDelete', function () {
|
||||
Popup.back(2);
|
||||
const checklist = this.checklist;
|
||||
if (checklist && checklist._id) {
|
||||
// #3252: see js-delete-checklist-item — avoid "Removed nonexistent document".
|
||||
if (checklist && checklist._id && Checklists.findOne(checklist._id)) {
|
||||
Checklists.remove(checklist._id);
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -119,6 +119,22 @@
|
||||
margin-inline-end: 0.4vw;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
/* Keep text labels on a single compact line. The label name is rendered
|
||||
inside a `.viewer`, whose global `min-height: 2.5vh` otherwise forces every
|
||||
label to roughly double height on the minicard. */
|
||||
.minicard .minicard-labels .card-label {
|
||||
min-height: 0;
|
||||
padding: 1px 6px;
|
||||
line-height: 1.3;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.minicard .minicard-labels .card-label .viewer {
|
||||
min-height: 0;
|
||||
display: inline;
|
||||
}
|
||||
.minicard .minicard-labels .card-label .viewer p {
|
||||
display: inline;
|
||||
}
|
||||
.minicard .minicard-labels-no-text {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
@@ -215,6 +215,15 @@ template(name="minicard")
|
||||
i.fa.fa-globe
|
||||
span.badge-text.check-list-text {{subtasksFinishedCount}}/{{allSubtasksCount}}
|
||||
//{{subtasksFinishedCount}}/{{subtasksCount}} does not work because when a subtaks is archived, the count goes down
|
||||
//- #6431: compact checklist item-count badge (finished/total). The outer
|
||||
guard is a cheap boolean, so when the setting is off the checklist
|
||||
counting below never runs.
|
||||
if showChecklistCountBadge
|
||||
if checklists.length
|
||||
.badge(class="{{#if checklistFinished}}is-finished{{/if}}" title="{{_ 'checklists'}}")
|
||||
span.badge-icon
|
||||
i.fa.fa-check-square-o
|
||||
span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
|
||||
if currentBoard.allowsCardSortingByNumber
|
||||
if currentBoard.allowsCardSortingByNumberOnMinicard
|
||||
.badge
|
||||
|
||||
@@ -144,6 +144,14 @@ Template.minicard.helpers({
|
||||
const board = this.board();
|
||||
return getMinicardFlag(board, 'allowsSubtasksOnMinicard', 'allowsSubtasks', true);
|
||||
},
|
||||
// #6431: compact checklist item-count badge (finished/total) on the minicard.
|
||||
// Opt-in, OFF by default. Only a cheap boolean read here; the actual checklist
|
||||
// counting (checklistFinishedCount/checklistItemCount) is gated behind this in
|
||||
// the template, so a board with the badge off spends no resources counting.
|
||||
showChecklistCountBadge() {
|
||||
const board = this.board();
|
||||
return !!(board && board.allowsChecklistCountBadgeOnMinicard);
|
||||
},
|
||||
|
||||
hiddenMinicardLabelText() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
@@ -209,7 +217,11 @@ Template.minicard.helpers({
|
||||
// Show checklist if either:
|
||||
// 1. Board-wide setting is enabled, OR
|
||||
// 2. This specific checklist has the setting enabled
|
||||
if (currentBoard.allowsChecklistAtMinicard || checklist.showChecklistAtMinicard) {
|
||||
// #5565: use the same board field the sidebar toggle writes
|
||||
// (`allowsChecklistsOnMinicard`); this previously checked a different,
|
||||
// UI-less field (`allowsChecklistAtMinicard`), so the board toggle to show
|
||||
// checklists on minicards had no effect.
|
||||
if (currentBoard.allowsChecklistsOnMinicard || checklist.showChecklistAtMinicard) {
|
||||
visibleChecklists.push(checklist);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -54,8 +54,78 @@ function readAnonListWidth(boardId, listId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// #5729 Fixed (same) width for all lists.
|
||||
//
|
||||
// A per-viewer, per-board toggle that makes EVERY list render at a single
|
||||
// shared value, and makes dragging any list update that one value (so all lists
|
||||
// change together). Stored exactly like the personal width:
|
||||
// * logged-in -> profile.fixedListWidthBoards / profile.fixedListWidths
|
||||
// * anonymous -> localStorage (mirrors readAnonListWidth)
|
||||
// ---------------------------------------------------------------------------
|
||||
function readAnonFixedListWidthEnabled(boardId) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width-enabled');
|
||||
if (stored) {
|
||||
const flags = JSON.parse(stored);
|
||||
return flags[boardId] === true;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Error reading fixed list width flag from localStorage:', e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function readAnonFixedListWidth(boardId) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width');
|
||||
if (stored) {
|
||||
const widths = JSON.parse(stored);
|
||||
const w = widths[boardId];
|
||||
if (typeof w === 'number' && w >= MIN_LIST_WIDTH) return w;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Error reading fixed list width from localStorage:', e);
|
||||
}
|
||||
return DEFAULT_LIST_WIDTH;
|
||||
}
|
||||
|
||||
// Whether the current viewer has fixed width mode enabled for this board.
|
||||
function isFixedListWidth(boardId) {
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (user) {
|
||||
return !!user.isFixedListWidth(boardId);
|
||||
}
|
||||
return readAnonFixedListWidthEnabled(boardId);
|
||||
}
|
||||
|
||||
// The single width every list should use when fixed width mode is enabled.
|
||||
function fixedListWidthValue(boardId) {
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (user) {
|
||||
return user.getFixedListWidth(boardId);
|
||||
}
|
||||
return readAnonFixedListWidth(boardId);
|
||||
}
|
||||
|
||||
// Persist the single fixed width for the whole board (anon localStorage).
|
||||
function saveAnonFixedListWidth(boardId, width) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width');
|
||||
const widths = stored ? JSON.parse(stored) : {};
|
||||
widths[boardId] = width;
|
||||
localStorage.setItem('wekan-fixed-list-width', JSON.stringify(widths));
|
||||
} catch (e) {
|
||||
console.warn('Error saving fixed list width to localStorage:', e);
|
||||
}
|
||||
}
|
||||
|
||||
function effectiveListWidth(list) {
|
||||
if (!list) return DEFAULT_LIST_WIDTH;
|
||||
// #5729 In fixed width mode every list renders at the single shared value.
|
||||
if (isFixedListWidth(list.boardId)) {
|
||||
return fixedListWidthValue(list.boardId);
|
||||
}
|
||||
const shared =
|
||||
typeof list.width === 'number' && list.width >= MIN_LIST_WIDTH
|
||||
? list.width
|
||||
@@ -80,6 +150,9 @@ function effectiveListWidth(list) {
|
||||
function canResizeList(list) {
|
||||
if (!list) return false;
|
||||
if (effectiveAutoWidth(list.boardId)) return false;
|
||||
// #5729 Fixed width is the viewer's own per-board setting, so any viewer
|
||||
// (logged-in or anonymous) may drag-resize; the change applies to all lists.
|
||||
if (isFixedListWidth(list.boardId)) return true;
|
||||
if (isPersonalListWidth(list.boardId)) return true;
|
||||
return Utils.canModifyBoard();
|
||||
}
|
||||
@@ -90,6 +163,18 @@ function saveListWidth(list, width) {
|
||||
const boardId = list.boardId;
|
||||
const listId = list._id;
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
// #5729 In fixed width mode, persist to the single per-board value instead of
|
||||
// the per-list width, so EVERY list re-renders at the new width.
|
||||
if (isFixedListWidth(boardId)) {
|
||||
if (user) {
|
||||
Meteor.call('setFixedListWidth', boardId, width, error => {
|
||||
if (error) console.error('Error saving fixed list width:', error);
|
||||
});
|
||||
} else {
|
||||
saveAnonFixedListWidth(boardId, width);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (isPersonalListWidth(boardId)) {
|
||||
if (user) {
|
||||
Meteor.call('applyListWidthToStorage', boardId, listId, width, width);
|
||||
|
||||
@@ -9,6 +9,7 @@ import Swimlanes from '/models/swimlanes';
|
||||
import { Filter } from '/client/lib/filter';
|
||||
import { MultiSelection } from '/client/lib/multiSelection';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { isLinkableCardTarget } from '/models/lib/linkedCardTarget';
|
||||
import autosize from 'autosize';
|
||||
|
||||
// SubsManager removed for Meteor 3 migration
|
||||
@@ -706,7 +707,10 @@ Template.linkCardPopup.helpers({
|
||||
archived: false,
|
||||
linkedId: { $nin: ownCardsIds },
|
||||
_id: { $nin: ownCardsIds },
|
||||
type: { $nin: ['template-card'] },
|
||||
// #5808: never offer an existing linked card/board as a link target —
|
||||
// linking to one builds a chain of linkedId pointers that renders the
|
||||
// card inaccessible. Only real cards may be linked.
|
||||
type: { $nin: ['template-card', 'cardType-linkedCard', 'cardType-linkedBoard'] },
|
||||
};
|
||||
if (tpl.selectedBoardId.get()) selector.boardId = tpl.selectedBoardId.get();
|
||||
if (tpl.selectedSwimlaneId.get()) selector.swimlaneId = tpl.selectedSwimlaneId.get();
|
||||
@@ -756,11 +760,48 @@ Template.linkCardPopup.events({
|
||||
tpl.selectedListId.set($(evt.currentTarget).val());
|
||||
},
|
||||
async 'click .js-done'(evt, tpl) {
|
||||
// LINK CARD
|
||||
// LINK CARD (or, when no card is chosen, fall back to a board-level link
|
||||
// so a whole board can be linked even when that board already has cards).
|
||||
// https://github.com/wekan/wekan/issues/5715
|
||||
evt.stopPropagation();
|
||||
evt.preventDefault();
|
||||
const linkedId = $('.js-select-cards option:selected').val();
|
||||
if (!linkedId) {
|
||||
const boardId = $('.js-select-boards option:selected').val();
|
||||
// No board and no card selected: nothing to link.
|
||||
if (!boardId) {
|
||||
Popup.back();
|
||||
return;
|
||||
}
|
||||
// A linkedBoard card for this board already exists; avoid duplicates.
|
||||
if (ReactiveCache.getCard({ linkedId: boardId, archived: false })) {
|
||||
Popup.back();
|
||||
return;
|
||||
}
|
||||
const boardCardNumber = await tpl.board.getNextCardNumber();
|
||||
const boardSortIndex = tpl.getSortIndex();
|
||||
const boardCardId = Cards.insert({
|
||||
title: $('.js-select-boards option:selected').text(), //dummy
|
||||
listId: tpl.listId,
|
||||
swimlaneId: tpl.swimlaneId,
|
||||
boardId: tpl.boardId,
|
||||
sort: boardSortIndex,
|
||||
type: 'cardType-linkedBoard',
|
||||
linkedId: boardId,
|
||||
cardNumber: boardCardNumber,
|
||||
});
|
||||
Filter.addException(boardCardId);
|
||||
Popup.back();
|
||||
return;
|
||||
}
|
||||
// #5808: refuse to link to a linked card/board or to a card that links back
|
||||
// to this board — those build a chain/cycle of linkedId pointers that renders
|
||||
// the cards inaccessible. The <select> already filters these out, but its
|
||||
// options can be stale, so re-check the resolved target here.
|
||||
const targetCard = ReactiveCache.getCard(linkedId);
|
||||
const ownCardsIds = tpl.board.cards().map(card => card.getRealId());
|
||||
if (!isLinkableCardTarget(targetCard, ownCardsIds)) {
|
||||
alert(TAPi18n.__('error-linked-card-not-allowed'));
|
||||
Popup.back();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -262,6 +262,9 @@ template(name="setListWidthPopup")
|
||||
a.js-toggle-auto-width(title="{{#if isAutoWidth}}{{_ 'click-to-disable-auto-width'}}{{else}}{{_ 'click-to-enable-auto-width'}}{{/if}}")
|
||||
| {{#if isAutoWidth}}🗜️{{else}}📏{{/if}}
|
||||
span {{_ 'auto-list-width'}}
|
||||
a.js-toggle-fixed-list-width(title="{{#if isFixedListWidth}}{{_ 'click-to-disable-fixed-list-width'}}{{else}}{{_ 'click-to-enable-fixed-list-width'}}{{/if}}")
|
||||
| {{#if isFixedListWidth}}✅{{else}}⬜{{/if}}
|
||||
span {{_ 'fixed-list-width'}}
|
||||
p.list-width-scope-note {{ listWidthScopeNote }}
|
||||
|
||||
template(name="listWidthErrorPopup")
|
||||
|
||||
@@ -520,9 +520,77 @@ function isPersonalListWidth(boardId) {
|
||||
return !!(board && board.allowsPersonalListWidth);
|
||||
}
|
||||
|
||||
// #5729 Fixed (same) width for all lists is a per-viewer/per-board setting.
|
||||
// Logged-in users store it in their profile; anonymous (public board) users in
|
||||
// localStorage (mirrors the per-list anon storage in list.js).
|
||||
function readAnonFixedListWidthEnabled(boardId) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width-enabled');
|
||||
if (stored) {
|
||||
const flags = JSON.parse(stored);
|
||||
return flags[boardId] === true;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Error reading fixed list width flag from localStorage:', e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function readAnonFixedListWidth(boardId) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width');
|
||||
if (stored) {
|
||||
const widths = JSON.parse(stored);
|
||||
const w = widths[boardId];
|
||||
if (typeof w === 'number' && w >= 270) return w;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Error reading fixed list width from localStorage:', e);
|
||||
}
|
||||
return 272;
|
||||
}
|
||||
|
||||
function isFixedListWidth(boardId) {
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (user) return !!user.isFixedListWidth(boardId);
|
||||
return readAnonFixedListWidthEnabled(boardId);
|
||||
}
|
||||
|
||||
function fixedListWidthValue(boardId) {
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (user) return user.getFixedListWidth(boardId);
|
||||
return readAnonFixedListWidth(boardId);
|
||||
}
|
||||
|
||||
function setAnonFixedListWidthEnabled(boardId, enabled) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width-enabled');
|
||||
const flags = stored ? JSON.parse(stored) : {};
|
||||
flags[boardId] = !!enabled;
|
||||
localStorage.setItem('wekan-fixed-list-width-enabled', JSON.stringify(flags));
|
||||
} catch (e) {
|
||||
console.warn('Error saving fixed list width flag to localStorage:', e);
|
||||
}
|
||||
}
|
||||
|
||||
function setAnonFixedListWidth(boardId, width) {
|
||||
try {
|
||||
const stored = localStorage.getItem('wekan-fixed-list-width');
|
||||
const widths = stored ? JSON.parse(stored) : {};
|
||||
widths[boardId] = width;
|
||||
localStorage.setItem('wekan-fixed-list-width', JSON.stringify(widths));
|
||||
} catch (e) {
|
||||
console.warn('Error saving fixed list width to localStorage:', e);
|
||||
}
|
||||
}
|
||||
|
||||
Template.setListWidthPopup.helpers({
|
||||
listWidthValue() {
|
||||
const list = Template.currentData();
|
||||
// #5729 In fixed width mode the input edits the single per-board value.
|
||||
if (isFixedListWidth(list.boardId)) {
|
||||
return fixedListWidthValue(list.boardId);
|
||||
}
|
||||
const shared =
|
||||
typeof list.width === 'number' && list.width >= 270 ? list.width : 272;
|
||||
if (!isPersonalListWidth(list.boardId)) {
|
||||
@@ -539,6 +607,10 @@ Template.setListWidthPopup.helpers({
|
||||
|
||||
listWidthScopeNote() {
|
||||
const list = Template.currentData();
|
||||
// #5729 In fixed width mode the note explains the all-lists behaviour.
|
||||
if (isFixedListWidth(list.boardId)) {
|
||||
return TAPi18n.__('fixed-list-width-note');
|
||||
}
|
||||
return isPersonalListWidth(list.boardId)
|
||||
? TAPi18n.__('list-width-personal-note')
|
||||
: TAPi18n.__('list-width-shared-note');
|
||||
@@ -564,6 +636,12 @@ Template.setListWidthPopup.helpers({
|
||||
}
|
||||
return Utils.canModifyBoard();
|
||||
},
|
||||
|
||||
// #5729 Whether "same width for all lists" mode is on for the current viewer.
|
||||
isFixedListWidth() {
|
||||
const list = Template.currentData();
|
||||
return isFixedListWidth(list.boardId);
|
||||
},
|
||||
});
|
||||
|
||||
Template.setListWidthPopup.events({
|
||||
@@ -581,6 +659,24 @@ Template.setListWidthPopup.events({
|
||||
}
|
||||
Popup.back();
|
||||
},
|
||||
// #5729 Toggle "same width for all lists" (fixed width) for the current
|
||||
// viewer. Enabling it turns off auto-width (the two modes are exclusive).
|
||||
'click .js-toggle-fixed-list-width'(event) {
|
||||
event.preventDefault();
|
||||
const list = Template.currentData();
|
||||
const boardId = list.boardId;
|
||||
const enabled = !isFixedListWidth(boardId);
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (user) {
|
||||
if (enabled && isPersonalListWidth(boardId) && user.isAutoWidth(boardId)) {
|
||||
user.toggleAutoWidth(boardId);
|
||||
}
|
||||
Meteor.call('setFixedListWidthEnabled', boardId, enabled);
|
||||
} else {
|
||||
setAnonFixedListWidthEnabled(boardId, enabled);
|
||||
}
|
||||
Popup.back();
|
||||
},
|
||||
'click .list-width-apply'(event, tpl) {
|
||||
const list = Template.currentData();
|
||||
const boardId = list.boardId;
|
||||
@@ -591,6 +687,16 @@ Template.setListWidthPopup.events({
|
||||
return;
|
||||
}
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
// #5729 In fixed width mode the input applies to the single per-board value.
|
||||
if (isFixedListWidth(boardId)) {
|
||||
if (user) {
|
||||
Meteor.call('setFixedListWidth', boardId, width);
|
||||
} else {
|
||||
setAnonFixedListWidth(boardId, width);
|
||||
}
|
||||
Popup.back();
|
||||
return;
|
||||
}
|
||||
if (isPersonalListWidth(boardId)) {
|
||||
if (user) {
|
||||
Meteor.call('applyListWidthToStorage', boardId, list._id, width, width);
|
||||
|
||||
@@ -558,7 +558,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
}
|
||||
}
|
||||
|
||||
/* Mobile - make all text and icons 2x bigger above #content by default */
|
||||
/* Mobile - keep header text/icons at normal size (reverted #6426 oversizing) */
|
||||
@media screen and (max-width: 800px),
|
||||
screen and (max-device-width: 800px),
|
||||
screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 800px),
|
||||
@@ -573,7 +573,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
overflow: hidden !important; /* Prevent content overflow */
|
||||
}
|
||||
#header-quick-access {
|
||||
font-size: 2em !important; /* 2x bigger base font size */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
#header-quick-access * {
|
||||
@@ -582,7 +582,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
|
||||
#header-quick-access .fa,
|
||||
#header-quick-access .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
#header-quick-access .home-icon a {
|
||||
@@ -652,7 +652,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
}
|
||||
}
|
||||
|
||||
/* Mobile All Boards page - make logo row elements 2x bigger */
|
||||
/* Mobile All Boards page - keep logo row at normal size (reverted #6426 oversizing) */
|
||||
@media screen and (max-width: 800px),
|
||||
screen and (max-device-width: 800px),
|
||||
screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 800px),
|
||||
@@ -660,16 +660,16 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
screen and (max-width: 800px) and (orientation: landscape) {
|
||||
.wrapper ~ #header-quick-access,
|
||||
body:not(.board-view) #header-quick-access {
|
||||
font-size: 2em !important; /* 2x bigger base font size for logo row */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini specific - 3x bigger for All Boards page */
|
||||
/* iPhone 12 Mini specific - keep All Boards logo row at normal size (reverted #6426) */
|
||||
@media screen and (device-width: 375px) and (device-height: 812px), /* iPhone 12 Mini exact */
|
||||
screen and (max-width: 375px) and (max-height: 812px), /* iPhone 12 Mini viewport */
|
||||
screen and (-webkit-min-device-pixel-ratio: 3) and (max-width: 375px) /* iPhone 12 Mini Retina */ {
|
||||
.wrapper ~ #header-quick-access,
|
||||
body:not(.board-view) #header-quick-access {
|
||||
font-size: 3em !important; /* 3x bigger base font size for iPhone 12 Mini All Boards page */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -682,7 +682,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
.wrapper ~ #header-quick-access .icon,
|
||||
body:not(.board-view) #header-quick-access .fa,
|
||||
body:not(.board-view) #header-quick-access .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons in logo row */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.wrapper ~ #header-quick-access .home-icon a,
|
||||
@@ -741,19 +741,19 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
}
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini specific - make header elements 3x bigger */
|
||||
/* iPhone 12 Mini specific - keep the header a normal compact single row */
|
||||
@media screen and (device-width: 375px) and (device-height: 812px), /* iPhone 12 Mini exact */
|
||||
screen and (max-width: 375px) and (max-height: 812px), /* iPhone 12 Mini viewport */
|
||||
screen and (-webkit-min-device-pixel-ratio: 3) and (max-width: 375px), /* iPhone 12 Mini Retina */
|
||||
screen and (max-width: 375px) and (orientation: portrait), /* iPhone 12 Mini portrait */
|
||||
screen and (max-width: 375px) and (orientation: landscape) /* iPhone 12 Mini landscape */ {
|
||||
#header-quick-access {
|
||||
font-size: 3em !important; /* 3x bigger base font size for iPhone 12 Mini */
|
||||
height: auto !important; /* Allow height to grow */
|
||||
min-height: 84px !important; /* Much taller minimum height for iPhone 12 Mini */
|
||||
flex-wrap: wrap !important; /* Force wrapping */
|
||||
align-items: flex-start !important; /* Align to top when wrapping */
|
||||
padding: 18px 0px !important; /* More padding for iPhone 12 Mini */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
height: 48px !important;
|
||||
min-height: 48px !important;
|
||||
flex-wrap: nowrap !important;
|
||||
align-items: center !important;
|
||||
padding: 8px 0px !important;
|
||||
}
|
||||
|
||||
#header-quick-access * {
|
||||
@@ -762,7 +762,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
|
||||
#header-quick-access .fa,
|
||||
#header-quick-access .icon {
|
||||
font-size: 3em !important; /* 3x bigger icons for iPhone 12 Mini */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
#header-quick-access .home-icon a {
|
||||
@@ -848,7 +848,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
}
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini and very small screens - make header elements much larger */
|
||||
/* iPhone 12 Mini and very small screens - header element sizing */
|
||||
@media screen and (max-width: 400px) and (max-height: 900px),
|
||||
screen and (max-device-width: 400px) and (max-device-height: 900px),
|
||||
screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 400px),
|
||||
@@ -912,12 +912,12 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
|
||||
/* Fallback for iPhone devices using JavaScript detection */
|
||||
.iphone-device #header-quick-access {
|
||||
font-size: 2em !important; /* 2x bigger base font size */
|
||||
height: auto !important; /* Allow height to grow */
|
||||
min-height: 48px !important; /* Minimum height for mobile */
|
||||
flex-wrap: wrap !important; /* Force wrapping */
|
||||
align-items: flex-start !important; /* Align to top when wrapping */
|
||||
padding: 8px 0px !important; /* Adjust padding for mobile */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
height: 48px !important;
|
||||
min-height: 48px !important;
|
||||
flex-wrap: nowrap !important;
|
||||
align-items: center !important;
|
||||
padding: 8px 0px !important;
|
||||
}
|
||||
|
||||
.iphone-device #header-quick-access * {
|
||||
@@ -926,7 +926,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
|
||||
.iphone-device #header-quick-access .fa,
|
||||
.iphone-device #header-quick-access .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.iphone-device #header-quick-access .home-icon a {
|
||||
@@ -995,14 +995,14 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini specific - JavaScript detection fallback */
|
||||
/* iPhone 12 Mini specific - JavaScript detection fallback (normal compact row) */
|
||||
.iphone-device #header-quick-access {
|
||||
font-size: 3em !important; /* 3x bigger base font size for iPhone 12 Mini */
|
||||
height: auto !important; /* Allow height to grow */
|
||||
min-height: 84px !important; /* Much taller minimum height for iPhone 12 Mini */
|
||||
flex-wrap: wrap !important; /* Force wrapping */
|
||||
align-items: flex-start !important; /* Align to top when wrapping */
|
||||
padding: 18px 0px !important; /* More padding for iPhone 12 Mini */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
height: 48px !important;
|
||||
min-height: 48px !important;
|
||||
flex-wrap: nowrap !important;
|
||||
align-items: center !important;
|
||||
padding: 8px 0px !important;
|
||||
}
|
||||
|
||||
.iphone-device #header-quick-access * {
|
||||
@@ -1011,7 +1011,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
|
||||
.iphone-device #header-quick-access .fa,
|
||||
.iphone-device #header-quick-access .icon {
|
||||
font-size: 3em !important; /* 3x bigger icons for iPhone 12 Mini */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.iphone-device #header-quick-access .home-icon a {
|
||||
@@ -1096,10 +1096,10 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
/* iPhone 12 Mini All Boards page - make logo row elements 3x bigger */
|
||||
/* iPhone 12 Mini All Boards page - keep logo row at normal size (reverted #6426) */
|
||||
.iphone-device .wrapper ~ #header-quick-access,
|
||||
.iphone-device body:not(.board-view) #header-quick-access {
|
||||
font-size: 3em !important; /* 3x bigger base font size for logo row */
|
||||
font-size: 1em !important; /* Normal size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.iphone-device .wrapper ~ #header-quick-access *,
|
||||
@@ -1111,7 +1111,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
.iphone-device .wrapper ~ #header-quick-access .icon,
|
||||
.iphone-device body:not(.board-view) #header-quick-access .fa,
|
||||
.iphone-device body:not(.board-view) #header-quick-access .icon {
|
||||
font-size: 2em !important; /* 2x bigger icons in logo row */
|
||||
font-size: 1em !important; /* Normal icon size (reverted #6426 oversizing) */
|
||||
}
|
||||
|
||||
.iphone-device .wrapper ~ #header-quick-access .home-icon a,
|
||||
@@ -1209,7 +1209,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
.iphone-device #header-quick-access,
|
||||
.iphone-device .wrapper ~ #header-quick-access,
|
||||
.iphone-device body:not(.board-view) #header-quick-access {
|
||||
font-size: 1.2em !important;
|
||||
font-size: 1em !important;
|
||||
}
|
||||
body:not(.board-view) #header-quick-access .fa,
|
||||
body:not(.board-view) #header-quick-access .icon,
|
||||
@@ -1221,7 +1221,7 @@ body:not(.board-view) #header #header-main-bar h1 {
|
||||
.iphone-device .wrapper ~ #header-quick-access .icon,
|
||||
.iphone-device body:not(.board-view) #header-quick-access .fa,
|
||||
.iphone-device body:not(.board-view) #header-quick-access .icon {
|
||||
font-size: 1.5em !important;
|
||||
font-size: 1.2em !important;
|
||||
}
|
||||
/* Zoom (100%), drag-handle toggle and mobile/desktop toggle 30% smaller than
|
||||
the other quick-access controls at small width — for all browsers. */
|
||||
|
||||
@@ -52,6 +52,13 @@ Template.userFormsLayout.onRendered(() => {
|
||||
// gesture works the same as on the board swimlanes view.
|
||||
enablePageDragscroll();
|
||||
|
||||
// Mark the auth pages so CSS can let <body> scroll as a normal document.
|
||||
// body.mobile-mode locks <body> to position:fixed/100vh (an iOS board-view
|
||||
// anti-bounce fix); without an inner #content scroller that traps these pages
|
||||
// at viewport height, hiding the sign-up link / language selector below the
|
||||
// form (and they sit behind the on-screen keyboard). See userForm.css.
|
||||
document.body.classList.add('userform-layout');
|
||||
|
||||
Meteor.call('getAuthenticationsEnabled', (_, result) => {
|
||||
let enabledAuthenticationMethods = ['password']; // we show/hide this based on isPasswordLoginEnabled
|
||||
|
||||
@@ -200,6 +207,7 @@ Template.userFormsLayout.onDestroyed(() => {
|
||||
// Stop drag-scrolling <body> after leaving login / register (e.g. once logged
|
||||
// in) so other layouts keep their normal behaviour.
|
||||
disablePageDragscroll();
|
||||
document.body.classList.remove('userform-layout');
|
||||
});
|
||||
|
||||
Template.userFormsLayout.helpers({
|
||||
@@ -267,7 +275,12 @@ Template.main.helpers({
|
||||
Template.userFormsLayout.events({
|
||||
'change .js-userform-set-language'(event) {
|
||||
const tag = $(event.currentTarget).val();
|
||||
TAPi18n.setLanguage(tag);
|
||||
// setLanguage is async; surface a failed load instead of silently leaving
|
||||
// the UI in English (#5756).
|
||||
Promise.resolve(TAPi18n.setLanguage(tag)).catch(error => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(`Failed to switch language to ${tag}:`, error);
|
||||
});
|
||||
event.preventDefault();
|
||||
},
|
||||
'click #at-btn'(event, templateInstance) {
|
||||
@@ -309,6 +322,31 @@ Template.defaultLayout.onRendered(function () {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Drag-to-scroll for every whole-page layout rendered inside defaultLayout
|
||||
// (All Boards, My Cards, Due Cards, Global Search, Public, Bookmarks, Broken
|
||||
// Cards, Settings, People, Admin, Import, board Rules, …). These pages scroll
|
||||
// <body> on desktop and #content in mobile mode (where <body> is
|
||||
// position:fixed), so enablePageDragscroll() tags whichever element actually
|
||||
// scrolls. The board-canvas pages are the exception: their own
|
||||
// `.board-canvas.dragscroll` handles dragging, and the canvas does its own
|
||||
// vertical/horizontal scroll, so page-level tagging is turned off there to
|
||||
// avoid scrolling #content and the canvas at the same time. defaultLayout is
|
||||
// persistent (only its `content` swaps), so this single autorun covers every
|
||||
// route without per-template wiring. Login / Register use userFormsLayout and
|
||||
// keep their own enable/disable. Works the same in mobile and desktop mode.
|
||||
const boardCanvasRoutes = ['board', 'board-short', 'card'];
|
||||
this.autorun(() => {
|
||||
FlowRouter.watchPathChange();
|
||||
const onBoardCanvas = boardCanvasRoutes.includes(FlowRouter.getRouteName());
|
||||
Tracker.afterFlush(() => {
|
||||
if (onBoardCanvas) {
|
||||
disablePageDragscroll();
|
||||
} else {
|
||||
enablePageDragscroll();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
async function authentication(event, templateInstance) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { CardSearchPaged } from '../../lib/cardSearch';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { enablePageDragscroll, disablePageDragscroll } from '/client/lib/pageDragscroll';
|
||||
|
||||
Template.myCardsHeaderBar.helpers({
|
||||
myCardsSort() {
|
||||
@@ -41,15 +40,8 @@ Template.myCards.onCreated(function () {
|
||||
Meteor.subscribe('setting');
|
||||
});
|
||||
|
||||
Template.myCards.onRendered(function () {
|
||||
// My Cards renders into <body>'s page scroll area (.wrapper inside #content),
|
||||
// so enable drag-to-scroll on <body> like the All Boards page does.
|
||||
enablePageDragscroll();
|
||||
});
|
||||
|
||||
Template.myCards.onDestroyed(function () {
|
||||
disablePageDragscroll();
|
||||
});
|
||||
// Drag-to-scroll is handled centrally for all non-board pages by
|
||||
// defaultLayout's route-aware autorun (see client/components/main/layouts.js).
|
||||
|
||||
Template.myCards.helpers({
|
||||
userId() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import Actions from '/models/actions';
|
||||
import Rules from '/models/rules';
|
||||
import Triggers from '/models/triggers';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { canSelectBoardInRules } from '/models/lib/rulesBoardSelector';
|
||||
|
||||
Template.boardActions.onCreated(function () {
|
||||
this.subscribe('boards');
|
||||
@@ -11,19 +12,30 @@ Template.boardActions.onCreated(function () {
|
||||
|
||||
Template.boardActions.helpers({
|
||||
boards() {
|
||||
const ret = ReactiveCache.getBoards(
|
||||
{
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {
|
||||
$ne: ReactiveCache.getCurrentUser().getTemplatesBoardId(),
|
||||
},
|
||||
},
|
||||
// #5698: don't restrict to boards where the user is a DIRECT member — that
|
||||
// hid every board reached through an Organization / Team / email-domain
|
||||
// share (the reporter's whole board dropdown was empty, current board
|
||||
// included). Filter the already access-scoped client cache with the same
|
||||
// visibility rule as Boards.userBoards() so org/team/domain boards show too.
|
||||
const user = ReactiveCache.getCurrentUser();
|
||||
if (!user) return [];
|
||||
const ctx = {
|
||||
userId: user._id,
|
||||
orgIds: typeof user.orgIds === 'function' ? user.orgIds() : [],
|
||||
teamIds: typeof user.teamIds === 'function' ? user.teamIds() : [],
|
||||
emailDomains:
|
||||
typeof user.emailDomains === 'function' ? user.emailDomains() : [],
|
||||
};
|
||||
const templatesBoardId = user.getTemplatesBoardId();
|
||||
const boards = ReactiveCache.getBoards(
|
||||
{ archived: false },
|
||||
{
|
||||
sort: { sort: 1 /* boards default sorting */ },
|
||||
},
|
||||
);
|
||||
return ret;
|
||||
return boards.filter(board =>
|
||||
canSelectBoardInRules(board, ctx, templatesBoardId),
|
||||
);
|
||||
},
|
||||
|
||||
loadingBoardsLabel() {
|
||||
|
||||
@@ -364,6 +364,10 @@ Template.boardsReport.helpers({
|
||||
},
|
||||
userNames(members) {
|
||||
const ret = (members || [])
|
||||
// #5122: removing a member from a board marks it `isActive: false` (the
|
||||
// entry stays in board.members for role history / re-activation). The
|
||||
// boards report must not list those removed members as current members.
|
||||
.filter(_member => _member.isActive !== false)
|
||||
.map(_member => {
|
||||
const _ret = ReactiveCache.getUser(_member.userId)?.username || _member.userId;
|
||||
return _ret;
|
||||
|
||||
@@ -6,6 +6,7 @@ import AccessibilitySettings from '/models/accessibilitySettings';
|
||||
import AccountSettings from '/models/accountSettings';
|
||||
import Announcements from '/models/announcements';
|
||||
import Settings from '/models/settings';
|
||||
import { resolveDefaultAuthenticationMethod } from '/models/lib/authenticationMethod';
|
||||
import TableVisibilityModeSettings from '/models/tableVisibilityModeSettings';
|
||||
// import {
|
||||
// cronMigrationProgress,
|
||||
@@ -803,7 +804,17 @@ Template.setting.events({
|
||||
$('input[name=hideBoardMemberList]:checked').val() === 'true';
|
||||
const displayAuthenticationMethod =
|
||||
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
|
||||
const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val();
|
||||
// #5879: the <select> options are populated by an async Meteor.call, so its
|
||||
// value can still be '' / null when Save is clicked. Saving that empty value
|
||||
// over the required `defaultAuthenticationMethod` string silently failed
|
||||
// validation, so the Layout save looked like it hung / did nothing. Fall back
|
||||
// to the currently stored method so a real value is never overwritten by ''.
|
||||
const currentDefaultAuthenticationMethod =
|
||||
ReactiveCache.getCurrentSetting()?.defaultAuthenticationMethod;
|
||||
const defaultAuthenticationMethod = resolveDefaultAuthenticationMethod(
|
||||
$('#defaultAuthenticationMethod').val(),
|
||||
currentDefaultAuthenticationMethod,
|
||||
);
|
||||
const spinnerName = ($('#spinnerName').val() || '').trim();
|
||||
|
||||
try {
|
||||
|
||||
@@ -82,6 +82,14 @@ body.grey-icons-enabled .boardSubtaskSettingsPopup .materialCheckBox.is-checked
|
||||
grid-template-columns: 1fr 1fr 2fr;
|
||||
gap: 10px;
|
||||
margin-bottom: 10px;
|
||||
/* Keep the "Show on Card / Show on Minicard / Description" titles visible
|
||||
while the rows below scroll (the popup scrolls in .pop-over .content-wrapper). */
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 2;
|
||||
background: #fff;
|
||||
padding: 5px 0;
|
||||
border-bottom: 2px solid #ddd;
|
||||
}
|
||||
|
||||
.card-settings-row {
|
||||
@@ -261,9 +269,40 @@ body.grey-icons-enabled .sidebar .sidebar-content ul.sidebar-list li > a .fa.fa-
|
||||
padding: 0 10px 0 10px;
|
||||
}
|
||||
@media screen and (max-width: 800px) {
|
||||
.board-sidebar {
|
||||
width: 100%;
|
||||
/* On phones (iPhone 12 mini, etc.) the right sidebar should be a full-width
|
||||
panel at the top of the board, in BOTH mobile mode and desktop mode. The
|
||||
sidebar lives inside .board-wrapper, which is wider than the viewport on a
|
||||
phone, so an absolutely-positioned sidebar (inset-inline-end: 0) pins to the
|
||||
far right of the wide board and shows as a narrow strip. Pin it to the
|
||||
VIEWPORT instead (position: fixed + 100vw) so it spans the full screen
|
||||
width. At 100% zoom .board-wrapper has no transform, so fixed resolves to
|
||||
the viewport in desktop mode too. */
|
||||
.board-sidebar.sidebar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
inset-inline-start: 0;
|
||||
inset-inline-end: 0;
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
z-index: 1000;
|
||||
}
|
||||
/* Normalise sidebar text on phones so the headings are not oversized and the
|
||||
small text is not tiny — keep them close to the board's text size so board
|
||||
and sidebar read at one consistent size. */
|
||||
.board-sidebar.sidebar .sidebar-content {
|
||||
font-size: 14px;
|
||||
}
|
||||
.board-sidebar.sidebar .sidebar-content h2,
|
||||
.board-sidebar.sidebar .sidebar-content h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
.board-sidebar.sidebar .sidebar-content ul.sidebar-list li > a,
|
||||
.board-sidebar.sidebar .sidebar-content .card-label,
|
||||
.board-sidebar.sidebar .sidebar-content .card-label .card-label-name,
|
||||
.board-sidebar.sidebar .sidebar-content p,
|
||||
.board-sidebar.sidebar .sidebar-content span {
|
||||
font-size: 14px;
|
||||
}
|
||||
.board-sidebar .sidebar-content .hide-btn {
|
||||
width: 40px;
|
||||
|
||||
@@ -315,21 +315,12 @@ template(name="boardCardSettingsPopup")
|
||||
a.flex.js-field-has-creator(title="{{_ 'creator'}}" class="{{#if allowsCreator}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCreator}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-user
|
||||
| {{_ 'creator'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
span
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-creator-on-minicard(title="{{_ 'creator-on-minicard'}}" class="{{#if allowsCreatorOnMinicard}}is-checked{{/if}}")
|
||||
a.flex.js-field-has-creator-on-minicard(title="{{_ 'creator'}}" class="{{#if allowsCreatorOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCreatorOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-user
|
||||
| {{_ 'creator-on-minicard'}}
|
||||
| {{_ 'creator'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-assignee(title="{{_ 'assignee'}}" class="{{#if allowsAssignee}}is-checked{{/if}}")
|
||||
@@ -369,27 +360,19 @@ template(name="boardCardSettingsPopup")
|
||||
a.flex.js-field-has-card-sorting-by-number(title="{{_ 'card-sorting-by-number'}}" class="{{#if allowsCardSortingByNumber}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCardSortingByNumber}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
a.flex.js-field-has-card-sorting-by-number-on-minicard(title="{{_ 'card-sorting-by-number'}}" class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCardSortingByNumberOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-sort-numeric-asc
|
||||
| {{_ 'card-sorting-by-number'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
span
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-card-sorting-by-number-on-minicard(title="{{_ 'card-sorting-by-number-on-minicard'}}" class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCardSortingByNumberOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-sort-numeric-asc
|
||||
| {{_ 'card-sorting-by-number-on-minicard'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-card-show-lists(title="{{_ 'card-show-lists'}}" class="{{#if allowsShowLists}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsShowLists}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
a.flex.js-field-has-card-show-lists-on-minicard(title="{{_ 'card-show-lists'}}" class="{{#if allowsShowListsOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsShowListsOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-list
|
||||
@@ -405,16 +388,6 @@ template(name="boardCardSettingsPopup")
|
||||
span
|
||||
i.fa.fa-tag
|
||||
| {{_ 'labels'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
span
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-card-show-lists-on-minicard(title="{{_ 'card-show-lists-on-minicard'}}" class="{{#if allowsShowListsOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsShowListsOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-list
|
||||
| {{_ 'card-show-lists-on-minicard'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-card-number(title="{{_ 'card'}} {{_ 'number'}}" class="{{#if allowsCardNumber}}is-checked{{/if}}")
|
||||
@@ -462,6 +435,17 @@ template(name="boardCardSettingsPopup")
|
||||
span
|
||||
i.fa.fa-check
|
||||
| {{_ 'checklists'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-checklist-count(title="{{_ 'checklist-count'}}" class="{{#if allowsChecklistCountBadgeOnCard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsChecklistCountBadgeOnCard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-checklist-count-on-minicard(title="{{_ 'checklist-count'}}" class="{{#if allowsChecklistCountBadgeOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsChecklistCountBadgeOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-check-square-o
|
||||
| {{_ 'checklist-count'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-subtasks(title="{{_ 'subtasks'}}" class="{{#if allowsSubtasks}}is-checked{{/if}}")
|
||||
@@ -486,24 +470,26 @@ template(name="boardCardSettingsPopup")
|
||||
| {{_ 'attachments'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
span
|
||||
a.flex.js-field-has-attachment-count(title="{{_ 'attachment-count'}}" class="{{#if allowsAttachmentCountOnCard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsAttachmentCountOnCard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-badge-attachment-on-minicard(title="{{_ 'badge-attachment-on-minicard'}}" class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
|
||||
a.flex.js-field-has-badge-attachment-on-minicard(title="{{_ 'attachment-count'}}" class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsBadgeAttachmentOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'badge-attachment-on-minicard'}}
|
||||
| {{_ 'attachment-count'}}
|
||||
.card-settings-row
|
||||
.card-settings-column
|
||||
span
|
||||
a.flex.js-field-has-cover-attachment-on-card(title="{{_ 'cover-image'}}" class="{{#if allowsCoverAttachmentOnCard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCoverAttachmentOnCard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
a.flex.js-field-has-cover-attachment-on-minicard(title="{{_ 'cover-attachment-on-minicard'}}" class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
|
||||
a.flex.js-field-has-cover-attachment-on-minicard(title="{{_ 'cover-image'}}" class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
|
||||
i.fa(class="{{#if allowsCoverAttachmentOnMinicard}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
.card-settings-column
|
||||
span
|
||||
i.fa.fa-picture-o
|
||||
| {{_ 'cover-attachment-on-minicard'}}
|
||||
| {{_ 'cover-image'}}
|
||||
//div.check-div
|
||||
//
|
||||
a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
|
||||
|
||||
@@ -1496,6 +1496,28 @@ Template.boardCardSettingsPopup.helpers({
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
return getMinicardSetting(currentBoard, 'allowsChecklistsOnMinicard', 'allowsChecklists', true);
|
||||
},
|
||||
// #6431: compact checklist count badge on minicard, opt-in and OFF by default.
|
||||
allowsChecklistCountBadgeOnMinicard() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
return currentBoard ? currentBoard.allowsChecklistCountBadgeOnMinicard : false;
|
||||
},
|
||||
// #6431 follow-up: new opt-in (OFF by default) card-side options.
|
||||
allowsChecklistCountBadgeOnCard() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
return currentBoard ? currentBoard.allowsChecklistCountBadgeOnCard : false;
|
||||
},
|
||||
allowsAttachmentCountOnCard() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
return currentBoard ? currentBoard.allowsAttachmentCountOnCard : false;
|
||||
},
|
||||
allowsCoverAttachmentOnCard() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
return currentBoard ? currentBoard.allowsCoverAttachmentOnCard : false;
|
||||
},
|
||||
allowsAttachments() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
const currentBoard = ReactiveCache.getBoard(boardId);
|
||||
@@ -1790,6 +1812,26 @@ Template.boardCardSettingsPopup.events({
|
||||
const newValue = !tpl.currentBoard.allowsChecklistsOnMinicard;
|
||||
Boards.update(tpl.currentBoard._id, { $set: { allowsChecklistsOnMinicard: newValue } });
|
||||
},
|
||||
'click .js-field-has-checklist-count-on-minicard'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const newValue = !tpl.currentBoard.allowsChecklistCountBadgeOnMinicard;
|
||||
Boards.update(tpl.currentBoard._id, { $set: { allowsChecklistCountBadgeOnMinicard: newValue } });
|
||||
},
|
||||
'click .js-field-has-checklist-count'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const newValue = !tpl.currentBoard.allowsChecklistCountBadgeOnCard;
|
||||
Boards.update(tpl.currentBoard._id, { $set: { allowsChecklistCountBadgeOnCard: newValue } });
|
||||
},
|
||||
'click .js-field-has-attachment-count'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const newValue = !tpl.currentBoard.allowsAttachmentCountOnCard;
|
||||
Boards.update(tpl.currentBoard._id, { $set: { allowsAttachmentCountOnCard: newValue } });
|
||||
},
|
||||
'click .js-field-has-cover-attachment-on-card'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const newValue = !tpl.currentBoard.allowsCoverAttachmentOnCard;
|
||||
Boards.update(tpl.currentBoard._id, { $set: { allowsCoverAttachmentOnCard: newValue } });
|
||||
},
|
||||
'click .js-field-has-attachments'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const newValue = !tpl.currentBoard.allowsAttachments;
|
||||
|
||||
@@ -83,8 +83,15 @@
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-menu {
|
||||
position: absolute;
|
||||
/* Stretch the menu to the full height of the swimlane header and lay the
|
||||
buttons (collapse, swimlane menu, + new swimlane, drag handle) in a row that
|
||||
is vertically centered — instead of anchoring them to the top with per-icon
|
||||
top: calc(50% + Npx) hacks that centered against the menu's own height. */
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
inset-inline-start: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 22px;
|
||||
@@ -93,7 +100,6 @@
|
||||
pointer-events: auto;
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-menu .js-open-swimlane-menu {
|
||||
top: calc(50% + 6px);
|
||||
padding: 5px;
|
||||
display: inline-block;
|
||||
margin-inline-start: 30px;
|
||||
@@ -107,20 +113,16 @@
|
||||
}
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-plus-icon {
|
||||
top: calc(50% + 6px);
|
||||
padding: 5px;
|
||||
margin-inline-start: 20px;
|
||||
font-size: 22px;
|
||||
color: #a6a6a6;
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-menu-icon {
|
||||
top: calc(50% + 6px);
|
||||
padding-inline-start: 5px;
|
||||
font-size: 22px;
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-handle {
|
||||
position: relative;
|
||||
top: calc(50% + 2px);
|
||||
padding: 2px 5px;
|
||||
font-size: clamp(16px, 3vw, 20px);
|
||||
display: inline-block;
|
||||
@@ -132,9 +134,7 @@
|
||||
line-height: 1.2;
|
||||
}
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-miniscreen-handle {
|
||||
position: relative;
|
||||
padding: 2px 5px;
|
||||
top: calc(50% + 2px);
|
||||
font-size: 24px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
|
||||
@@ -139,16 +139,26 @@ template(name="adminChangeAvatarPopup")
|
||||
template(name="cardMemberPopup")
|
||||
.board-member-menu
|
||||
.mini-profile-info
|
||||
+userAvatar(userId=user._id showEdit=true)
|
||||
.info
|
||||
h3= user.profile.fullname
|
||||
p.quiet @{{ user.username }}
|
||||
if user
|
||||
+userAvatar(userId=user._id showEdit=true)
|
||||
.info
|
||||
h3= user.profile.fullname
|
||||
p.quiet @{{ user.username }}
|
||||
else
|
||||
//- #4847: the member's user account was deleted. Still show the entry
|
||||
//- (with its id) and the remove control so the orphaned member can be
|
||||
//- removed from the card — the remove handler keys off userId, not the
|
||||
//- user document.
|
||||
.info
|
||||
h3 {{_ 'deleted-user'}}
|
||||
p.quiet {{ userId }}
|
||||
ul.pop-over-list
|
||||
unless noRemove
|
||||
if currentUser.isNotCommentOnly
|
||||
if currentUser.isNotWorker
|
||||
li: a.js-remove-member {{_ 'remove-member-from-card'}}
|
||||
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
if user
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
@@ -113,6 +113,21 @@ body.mobile-mode .auth-layout .auth-dialog .at-form .password-input-container .p
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
}
|
||||
/* Auth pages (login / register) must scroll as a normal document on mobile so
|
||||
the content below the form — the sign-up / sign-in link, legal notice and
|
||||
language selector — is reachable, including when the on-screen keyboard is
|
||||
open. body.mobile-mode otherwise locks <body> to position:fixed + 100vh (an
|
||||
iOS board-view anti-bounce fix); the auth layout has no inner #content
|
||||
scroller, so that lock traps the page at viewport height and the on-screen
|
||||
keyboard hides the bottom. .userform-layout is added by userFormsLayout while
|
||||
these pages are mounted (see layouts.js). */
|
||||
body.mobile-mode.userform-layout {
|
||||
position: static !important;
|
||||
height: auto !important;
|
||||
min-height: 100vh;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.auth-layout {
|
||||
width: 100%;
|
||||
@@ -120,6 +135,14 @@ body.mobile-mode .auth-layout .auth-dialog .at-form .password-input-container .p
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
/* Let the auth layout/dialog grow to their content instead of being pinned to
|
||||
the viewport height, so everything below the form scrolls into view. */
|
||||
body.userform-layout .auth-layout {
|
||||
height: auto;
|
||||
}
|
||||
body.userform-layout .auth-layout .auth-dialog {
|
||||
height: auto;
|
||||
}
|
||||
.auth-layout .at-form-landing-logo {
|
||||
width: 125px;
|
||||
position: absolute;
|
||||
|
||||
@@ -309,7 +309,12 @@ Template.changeLanguagePopup.events({
|
||||
'profile.language': this.tag,
|
||||
},
|
||||
});
|
||||
TAPi18n.setLanguage(this.tag);
|
||||
// setLanguage is async; surface a failed load instead of silently leaving
|
||||
// the UI in English (#5756).
|
||||
Promise.resolve(TAPi18n.setLanguage(this.tag)).catch(error => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(`Failed to switch language to ${this.tag}:`, error);
|
||||
});
|
||||
event.preventDefault();
|
||||
},
|
||||
});
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Template } from 'meteor/templating';
|
||||
import { ReactiveVar } from 'meteor/reactive-var';
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { getCurrentCardFromContext } from '/client/lib/currentCard';
|
||||
import { normalizeDigits } from '/imports/lib/dateUtils';
|
||||
|
||||
// Helper to check if a date is valid
|
||||
function isValidDate(date) {
|
||||
@@ -114,8 +115,9 @@ export function datePickerHelpers() {
|
||||
export function datePickerEvents({ storeDate, deleteDate }) {
|
||||
return {
|
||||
'change .js-date-field'(evt, tpl) {
|
||||
// Native HTML date input validation
|
||||
const dateValue = tpl.find('#date').value;
|
||||
// Native HTML date input validation. Normalize any non-Latin digits
|
||||
// (e.g. Persian/Arabic-Indic) so parsing works in those locales (#5752).
|
||||
const dateValue = normalizeDigits(tpl.find('#date').value);
|
||||
if (dateValue) {
|
||||
// HTML date input format is always YYYY-MM-DD
|
||||
const dateObj = new Date(dateValue + 'T12:00:00');
|
||||
@@ -127,8 +129,9 @@ export function datePickerEvents({ storeDate, deleteDate }) {
|
||||
}
|
||||
},
|
||||
'change .js-time-field'(evt, tpl) {
|
||||
// Native HTML time input validation
|
||||
const timeValue = tpl.find('#time').value;
|
||||
// Native HTML time input validation. Normalize any non-Latin digits
|
||||
// (e.g. Persian/Arabic-Indic) so parsing works in those locales (#5752).
|
||||
const timeValue = normalizeDigits(tpl.find('#time').value);
|
||||
if (timeValue) {
|
||||
// HTML time input format is always HH:mm
|
||||
const timeObj = new Date(`1970-01-01T${timeValue}:00`);
|
||||
@@ -142,8 +145,10 @@ export function datePickerEvents({ storeDate, deleteDate }) {
|
||||
'submit .edit-date'(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
|
||||
const dateValue = evt.target.date.value;
|
||||
const timeValue = evt.target.time.value || '12:00'; // Default to 12:00 if no time given
|
||||
// Normalize any non-Latin digits (e.g. Persian/Arabic-Indic) before
|
||||
// parsing so due/start/end dates work in those locales (#5752).
|
||||
const dateValue = normalizeDigits(evt.target.date.value);
|
||||
const timeValue = normalizeDigits(evt.target.time.value) || '12:00'; // Default to 12:00 if no time given
|
||||
|
||||
if (!dateValue) {
|
||||
tpl.datePicker.error.set('invalid-date');
|
||||
|
||||
@@ -1,27 +1,45 @@
|
||||
import dragscroll from '@wekanteam/dragscroll';
|
||||
import '/client/lib/dragscrollTouch';
|
||||
|
||||
// Enable / disable mouse drag-to-scroll for whole-page layouts.
|
||||
// Enable / disable mouse drag-to-scroll for whole-page layouts (All Boards,
|
||||
// My Cards, Login, Register).
|
||||
//
|
||||
// On pages like All Boards, Login and Register the scroll container is the
|
||||
// <body> element itself (it has `overflow-y: auto; height: 100vh`), not an
|
||||
// inner board canvas or swimlane. The dragscroll library scrolls whichever
|
||||
// element carries the `dragscroll` class and has a dedicated `el ==
|
||||
// document.body` branch that also scrolls document.documentElement, so tagging
|
||||
// <body> makes dragging empty page space scroll the page — the same gesture
|
||||
// that already works on the board swimlanes view.
|
||||
// The dragscroll library scrolls whichever element carries the `dragscroll`
|
||||
// class AND is the actual scroll container. Which element that is depends on
|
||||
// the layout and on mobile vs desktop mode:
|
||||
//
|
||||
// The class is toggled per template (onRendered / onDestroyed) so it only
|
||||
// applies on those pages; dragscroll.reset() re-scans the DOM and (re)binds the
|
||||
// mouse listeners after the class is added or removed. Touch (one-finger)
|
||||
// scrolling is handled separately by client/lib/dragscrollTouch.js.
|
||||
// * Login / Register (userFormsLayout) have no `#content`; the page scroll
|
||||
// container is `<body>` in both modes (it has `overflow-y: auto` and a
|
||||
// `100vh` height).
|
||||
// * All Boards / My Cards (defaultLayout) render inside `#content`. On
|
||||
// desktop the scroll container is `<body>`; in mobile mode `<body>` becomes
|
||||
// `position: fixed` and `#content` becomes the scroller
|
||||
// (`overflow-y: auto; height: calc(100vh - 48px)`), so tagging only
|
||||
// `<body>` would never scroll on a phone.
|
||||
//
|
||||
// To cover every case we tag BOTH `<body>` and `#content` (when present). Only
|
||||
// the element that actually overflows scrolls, so there is no double-scroll:
|
||||
// on desktop `<body>` scrolls and `#content` (no vertical overflow) is a no-op;
|
||||
// in mobile mode `#content` scrolls and `<body>` (fixed, no overflow) is a
|
||||
// no-op. dragscroll has a dedicated `el == document.body` branch for the body
|
||||
// case. dragscroll.reset() re-scans the DOM and (re)binds the mouse listeners.
|
||||
// One-finger touch scrolling is handled by client/lib/dragscrollTouch.js, which
|
||||
// picks the nearest scrollable `.dragscroll` ancestor (so `#content` wins over
|
||||
// `<body>` when both are tagged).
|
||||
|
||||
function pageScrollEls() {
|
||||
const els = [document.body];
|
||||
const content = document.getElementById('content');
|
||||
if (content) els.push(content);
|
||||
return els;
|
||||
}
|
||||
|
||||
export function enablePageDragscroll() {
|
||||
document.body.classList.add('dragscroll');
|
||||
pageScrollEls().forEach(el => el.classList.add('dragscroll'));
|
||||
dragscroll.reset();
|
||||
}
|
||||
|
||||
export function disablePageDragscroll() {
|
||||
document.body.classList.remove('dragscroll');
|
||||
pageScrollEls().forEach(el => el.classList.remove('dragscroll'));
|
||||
dragscroll.reset();
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// i18n (TAPi18n) tests, run on the client as the old tests/main.js did.
|
||||
import '/imports/i18n/i18n.test.js';
|
||||
import './Utils.tests';
|
||||
import './filter.dependencies.tests';
|
||||
import './dueDateColor.tests';
|
||||
|
||||
+114
-11
@@ -1,9 +1,28 @@
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { FlowRouter } from 'meteor/ostrio:flow-router-extra';
|
||||
|
||||
// Readiness-aware, reactive translation — mirrors the `{{_}}` Blaze helper
|
||||
// (imports/i18n/blaze.js). A bare TAPi18n.__() returns the raw key on the initial
|
||||
// (English) render because the language bundle loads asynchronously, and it never
|
||||
// re-runs once ready. Depending on TAPi18n.current / TAPi18n.ready makes the
|
||||
// account-form labels/placeholders re-render as soon as i18n is loaded and on every
|
||||
// language change.
|
||||
function tr(key) {
|
||||
TAPi18n.current.get();
|
||||
TAPi18n.ready.get();
|
||||
if (!TAPi18n.i18n || !TAPi18n.ready.get()) {
|
||||
return key;
|
||||
}
|
||||
return TAPi18n.__(key);
|
||||
}
|
||||
|
||||
const passwordField = AccountsTemplates.removeField('password');
|
||||
passwordField.autocomplete = 'current-password';
|
||||
passwordField.template = 'passwordInput';
|
||||
// Translate the field label/placeholder via WeKan i18n — see the note below the
|
||||
// addFields() call. Set before re-adding the field so it is present when useraccounts
|
||||
// registers it.
|
||||
passwordField.displayName = () => tr('password');
|
||||
const emailField = AccountsTemplates.removeField('email');
|
||||
|
||||
// Don't add current_password to global fields - it should only be used for change password
|
||||
@@ -75,7 +94,7 @@ AccountsTemplates.addFields([
|
||||
{
|
||||
_id: 'password_again',
|
||||
type: 'password',
|
||||
displayName: 'Password (again)',
|
||||
displayName: () => tr('password-again'),
|
||||
required: true,
|
||||
minLength: 6,
|
||||
autocomplete: 'new-password',
|
||||
@@ -91,6 +110,57 @@ AccountsTemplates.addFields([
|
||||
},
|
||||
]);
|
||||
|
||||
// The sign-in / register form field labels and placeholders were rendered through
|
||||
// accounts-t9n (`T9n.get`), whose per-language coverage is incomplete, and
|
||||
// useraccounts' `getPlaceholder()` never invokes a function placeholder (unlike
|
||||
// `getDisplayName()`) — so several placeholders (Username, Email, Password
|
||||
// (again)) and the Email / Password (again) labels showed untranslated English.
|
||||
// Translate the account-form fields through WeKan's own i18n (TAPi18n) instead,
|
||||
// which has complete data/<lang>.i18n.json coverage.
|
||||
//
|
||||
// Password fields (password, password_again) use WeKan's passwordInput template,
|
||||
// which renders {{displayName}} for both its label and its placeholder. Their
|
||||
// field-level displayName functions (set above / in addFields) are invoked both by
|
||||
// getDisplayName() and by Blaze, so they translate regardless of when useraccounts
|
||||
// wires up per-template helpers. Username / email use the atTextInput override below.
|
||||
if (Meteor.isClient) {
|
||||
const { Template } = require('meteor/templating');
|
||||
const { T9n } = require('meteor/communitypackages:core');
|
||||
// Fields WeKan translates itself (complete data/<lang>.i18n.json coverage), keyed
|
||||
// by field id. Other account-form text inputs — notably the sign-in combined
|
||||
// "username_and_email" field and current_password — keep their built-in
|
||||
// accounts-t9n translation, because WeKan has no key for them and accounts-t9n
|
||||
// already ships one (e.g. "usernameOrEmail").
|
||||
const WEKAN_FIELD_KEY = { username: 'username', email: 'email' };
|
||||
function fieldText(field, original) {
|
||||
TAPi18n.current.get();
|
||||
TAPi18n.ready.get();
|
||||
const key = WEKAN_FIELD_KEY[field._id];
|
||||
if (key && TAPi18n.i18n && TAPi18n.ready.get()) {
|
||||
const translated = TAPi18n.__(key);
|
||||
if (translated !== key) {
|
||||
return translated;
|
||||
}
|
||||
}
|
||||
// Fall back to useraccounts' own accounts-t9n translation. The field's
|
||||
// displayName/placeholder is an accounts-t9n key (e.g. "usernameOrEmail").
|
||||
return T9n.get(original, false);
|
||||
}
|
||||
// The unstyled package registers these helpers on Template.atTextInput at load
|
||||
// time, so this app-startup override wins.
|
||||
Template.atTextInput.helpers({
|
||||
displayName() {
|
||||
return fieldText(this, this.getDisplayName());
|
||||
},
|
||||
placeholder() {
|
||||
if (!AccountsTemplates.options.showPlaceholders) {
|
||||
return undefined;
|
||||
}
|
||||
return fieldText(this, this.getPlaceholder());
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
AccountsTemplates.configure({
|
||||
defaultLayout: 'userFormsLayout',
|
||||
defaultContentRegion: 'content',
|
||||
@@ -191,6 +261,16 @@ AccountsTemplates.configureRoute('changePwd', {
|
||||
});
|
||||
|
||||
if (Meteor.isServer) {
|
||||
// #5706: Internal Server Error (500) when attempting to reset a password.
|
||||
// The reset-password email-template builders and the email send must never let
|
||||
// an unhandled exception bubble up through Meteor's `forgotPassword` method (it
|
||||
// surfaces to the client as an opaque HTTP 500). The pure helpers below are
|
||||
// unit-tested in tests/unit/resetPasswordEmail.test.js.
|
||||
const {
|
||||
buildEmailTemplateField,
|
||||
wrapSendResetPasswordEmail,
|
||||
} = require('/server/lib/resetPasswordEmail');
|
||||
|
||||
[
|
||||
'resetPassword-subject',
|
||||
'resetPassword-text',
|
||||
@@ -200,16 +280,39 @@ if (Meteor.isServer) {
|
||||
'enrollAccount-text',
|
||||
].forEach(str => {
|
||||
const [templateName, field] = str.split('-');
|
||||
Accounts.emailTemplates[templateName][field] = (user, url) => {
|
||||
return TAPi18n.__(
|
||||
`email-${str}`,
|
||||
{
|
||||
url,
|
||||
user: user.getName(),
|
||||
siteName: Accounts.emailTemplates.siteName,
|
||||
},
|
||||
user.getLanguage(),
|
||||
Accounts.emailTemplates[templateName][field] = (user, url) =>
|
||||
buildEmailTemplateField(
|
||||
str,
|
||||
(key, params, language) => TAPi18n.__(key, params, language),
|
||||
Accounts.emailTemplates.siteName,
|
||||
user,
|
||||
url,
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
// #5706: When SMTP is not configured (no MAIL_URL / MAIL_FROM, or a bad mail
|
||||
// server), Meteor's `Email.sendAsync` throws. That exception otherwise propagates
|
||||
// out of the `forgotPassword` method as a raw HTTP 500 ("Internal Server Error").
|
||||
// Wrap the reset-password email send so the failure surfaces as a clean,
|
||||
// actionable `Meteor.Error('email-fail', ...)` instead, matching how the rest of
|
||||
// Wekan reports email failures (see server/models/users.js, settings.js).
|
||||
Accounts.sendResetPasswordEmail = wrapSendResetPasswordEmail(
|
||||
Accounts.sendResetPasswordEmail,
|
||||
(code, message) => new Meteor.Error(code, message),
|
||||
);
|
||||
|
||||
// #5672: "Internal Server Error When Signing Up Despite Successful Account
|
||||
// Creation". useraccounts' ATCreateUserServer creates the account and then
|
||||
// calls Accounts.sendVerificationEmail(); when SMTP is not configured that
|
||||
// send throws AFTER the user is inserted, so the createUser method returns a
|
||||
// raw HTTP 500 even though the account exists and can sign in. The
|
||||
// verification email is best-effort at sign-up, so swallow + log a transport
|
||||
// failure (registration then completes and redirects to sign-in). An
|
||||
// "already verified" error is re-thrown so ATResendVerificationEmail still
|
||||
// reports it. Unit-tested in tests/verificationEmail.test.cjs.
|
||||
const { wrapSendVerificationEmail } = require('/server/lib/verificationEmail');
|
||||
Accounts.sendVerificationEmail = wrapSendVerificationEmail(
|
||||
Accounts.sendVerificationEmail,
|
||||
message => console.warn(message),
|
||||
);
|
||||
}
|
||||
@@ -10,7 +10,7 @@ This is without container (without Docker or Snap).
|
||||
|
||||
Right click and download files 1-4:
|
||||
|
||||
1. [wekan-9.68-win64.zip](https://github.com/wekan/wekan/releases/download/v9.68/wekan-9.68-win64.zip) or newest available at https://github.com/wekan/wekan/releases/
|
||||
1. [wekan-9.78-win64.zip](https://github.com/wekan/wekan/releases/download/v9.78/wekan-9.78-win64.zip) or newest available at https://github.com/wekan/wekan/releases/
|
||||
|
||||
2. [node.exe](https://nodejs.org/dist/latest-v24.x/win-x64/node.exe)
|
||||
|
||||
@@ -22,7 +22,7 @@ Right click and download files 1-4:
|
||||
|
||||
6. Double click `mongodb-windows-x86_64-7.0.34-signed.msi` . In installer, uncheck downloading MongoDB compass.
|
||||
|
||||
7. Unzip `wekan-9.68-win64.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
7. Unzip `wekan-9.78-win64.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
|
||||
```
|
||||
bundle (directory)
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
# Reset previous attempts
|
||||
sudo flatpak override --reset com.visualstudio.code
|
||||
|
||||
# Block EVERYTHING except the display and the wekan folder
|
||||
sudo flatpak override com.visualstudio.code \
|
||||
--nofilesystem=home \
|
||||
--nofilesystem=host \
|
||||
--nofilesystem=xdg-run/gvfs \
|
||||
--nofilesystem=xdg-run/gvfsd \
|
||||
--filesystem=~/repos/wekan:rw \
|
||||
--filesystem=~/repos/log:rw \
|
||||
--filesystem=~/repos/w/wekan.fi:rw \
|
||||
--device=all \
|
||||
--socket=wayland \
|
||||
--socket=x11 \
|
||||
--share=network
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Pintasan papan kekunci didayakan. Klik untuk batal.",
|
||||
"keyboard-shortcuts-disabled": "Pintasan papan kekunci didayakan. Klik untuk batal.",
|
||||
"setSwimlaneHeightPopup-title": "Atur Tinggi Swimlane ",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "CSV anda(Nilai yang dipisahkan koma)/TSV (Nilai yang dipisahkan tab) tidak termasuk informasi yang tepat dalam format yang benar",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Daftar ini tidak ada",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Nama pengguna ini tidak ada",
|
||||
"error-user-notAllowSelf": "Anda tidak bisa mengundang diri sendiri",
|
||||
"error-user-notCreated": "Nama pengguna ini tidak dibuat",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Hapus Label",
|
||||
"listDeletePopup-title": "Hapus Daftar ?",
|
||||
"remove-member": "Hapus Anggota",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Hapus dari Kartu",
|
||||
"remove-member-pop": "Hapus__nama__(__username__) dari __boardTitle__? Partisipan akan dihapus dari semua kartu di panel ini. Mereka akan diberi tahu",
|
||||
"removeMemberPopup-title": "Hapus Anggota?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Gambar sampul untuk kartu kecil",
|
||||
"badge-attachment-on-minicard": "Menghitung lampiran pada kartu kecil",
|
||||
"card-sorting-by-number-on-minicard": "Kartu disaring dengan nomor pada kartu kecil",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "rintisan dengan prefix",
|
||||
"prefix-with-parent": "Induk dnegan prefix",
|
||||
"subtext-with-full-path": "Subtext dengan rintisan lengkap",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Nama",
|
||||
"archived-at": "diarkibkan pada",
|
||||
"sort-cards": "Susun Kad",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Urutan aktif",
|
||||
"cardsSortPopup-title": "Susun Kad",
|
||||
"due-date": "Tarikh Akhir",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Sleutelbordkortpaaie geaktiveer. Klik om te deaktiveer.",
|
||||
"keyboard-shortcuts-disabled": "Sleutelbordkortpaaie gedeaktiveer. Klik om te aktiveer.",
|
||||
"setSwimlaneHeightPopup-title": "Stel swembaanhoogte in",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Jou CSV (Comma Separated Values)/TSV (Tab Separated Values) sluit nie die korrekte inligting in die korrekte formaat in nie",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Hierdie lys bestaan nie",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Hierdie gebruiker bestaan nie",
|
||||
"error-user-notAllowSelf": "Jy kan nie jouself nooi nie",
|
||||
"error-user-notCreated": "Hierdie gebruiker is nie geskep nie",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Verwyder etiket",
|
||||
"listDeletePopup-title": "Vee lys uit?",
|
||||
"remove-member": "Verwyder lid",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Verwyder van kaart",
|
||||
"remove-member-pop": "Verwyder __name__ (__username__) van __boardTitle__? Die lid sal van alle kaarte op hierdie bord verwyder word. Hulle sal 'n kennisgewing ontvang.",
|
||||
"removeMemberPopup-title": "Verwyder lid?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Omslagprent op minikaart",
|
||||
"badge-attachment-on-minicard": "Telling van aanhegsels op minikaart",
|
||||
"card-sorting-by-number-on-minicard": "Kaart sorteer volgens nommer op minikaart",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Voorvoegsel met volle pad",
|
||||
"prefix-with-parent": "Voorvoegsel met ouer",
|
||||
"subtext-with-full-path": "Subteks met volle pad",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etiket Name",
|
||||
"archived-at": "geargiveer by",
|
||||
"sort-cards": "Sorteer kaarte",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sorteer is aan",
|
||||
"cardsSortPopup-title": "Sorteer kaarte",
|
||||
"due-date": "Sperdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Sleutelbordkortpaaie geaktiveer. Klik om te deaktiveer.",
|
||||
"keyboard-shortcuts-disabled": "Sleutelbordkortpaaie gedeaktiveer. Klik om te aktiveer.",
|
||||
"setSwimlaneHeightPopup-title": "Stel swembaanhoogte in",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Jou CSV (Comma Separated Values)/TSV (Tab Separated Values) sluit nie die korrekte inligting in die korrekte formaat in nie",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Hierdie lys bestaan nie",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Hierdie gebruiker bestaan nie",
|
||||
"error-user-notAllowSelf": "Jy kan nie jouself nooi nie",
|
||||
"error-user-notCreated": "Hierdie gebruiker is nie geskep nie",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Verwyder etiket",
|
||||
"listDeletePopup-title": "Vee lys uit?",
|
||||
"remove-member": "Verwyder lid",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Verwyder van kaart",
|
||||
"remove-member-pop": "Verwyder __name__ (__username__) van __boardTitle__? Die lid sal van alle kaarte op hierdie bord verwyder word. Hulle sal 'n kennisgewing ontvang.",
|
||||
"removeMemberPopup-title": "Verwyder lid?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Omslagprent op minikaart",
|
||||
"badge-attachment-on-minicard": "Telling van aanhegsels op minikaart",
|
||||
"card-sorting-by-number-on-minicard": "Kaart sorteer volgens nommer op minikaart",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Voorvoegsel met volle pad",
|
||||
"prefix-with-parent": "Voorvoegsel met ouer",
|
||||
"subtext-with-full-path": "Subteks met volle pad",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etiket Name",
|
||||
"archived-at": "geargiveer by",
|
||||
"sort-cards": "Sorteer kaarte",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sorteer is aan",
|
||||
"cardsSortPopup-title": "Sorteer kaarte",
|
||||
"due-date": "Sperdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "تم تفعيل اختصارات لوحة المفاتيح. انقر لتعطيلها.",
|
||||
"keyboard-shortcuts-disabled": "اختصارات لوحة المفاتيح معطلة. انقر للتفعيل.",
|
||||
"setSwimlaneHeightPopup-title": "ضبط ارتفاع مسار السباحة",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "لا يتضمن ملف CSV (القيم المفصولة بفواصل)/TSV (القيم المفصولة بعلامات التبويب) الخاص بك المعلومات الصحيحة بالتنسيق الصحيح",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "این لیست موجود نیست",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "این کاربر وجود ندارد",
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "إزالة التصنيف",
|
||||
"listDeletePopup-title": "حذف القائمة ؟",
|
||||
"remove-member": "حذف العضو",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "حذف من البطاقة",
|
||||
"remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
|
||||
"removeMemberPopup-title": "حذف العضو ?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "صورة الغلاف على البطاقة الصغيرة",
|
||||
"badge-attachment-on-minicard": "عدد المرفقات على البطاقة الصغيرة",
|
||||
"card-sorting-by-number-on-minicard": "رز البطاقات حسب الرقم على البطاقة الصغيرة",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "پیشوند با مسیر کامل",
|
||||
"prefix-with-parent": "پیشوند با خانواده",
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "اسامی لیبل",
|
||||
"archived-at": "بایگانی شده در",
|
||||
"sort-cards": "مرتبسازی کارتها",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "الفرز قيد التشغيل",
|
||||
"cardsSortPopup-title": "مرتبسازی کارتها",
|
||||
"due-date": "تاریخ اجرا",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "تم تفعيل اختصارات لوحة المفاتيح. انقر لتعطيلها.",
|
||||
"keyboard-shortcuts-disabled": "اختصارات لوحة المفاتيح معطلة. انقر للتفعيل.",
|
||||
"setSwimlaneHeightPopup-title": "ضبط ارتفاع مسار السباحة",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "لا يتضمن ملف CSV (القيم المفصولة بفواصل)/TSV (القيم المفصولة بعلامات التبويب) الخاص بك المعلومات الصحيحة بالتنسيق الصحيح",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "این لیست موجود نیست",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "این کاربر وجود ندارد",
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "إزالة التصنيف",
|
||||
"listDeletePopup-title": "حذف القائمة ؟",
|
||||
"remove-member": "حذف العضو",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "حذف من البطاقة",
|
||||
"remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
|
||||
"removeMemberPopup-title": "حذف العضو ?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "صورة الغلاف على البطاقة الصغيرة",
|
||||
"badge-attachment-on-minicard": "عدد المرفقات على البطاقة الصغيرة",
|
||||
"card-sorting-by-number-on-minicard": "رز البطاقات حسب الرقم على البطاقة الصغيرة",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "پیشوند با مسیر کامل",
|
||||
"prefix-with-parent": "پیشوند با خانواده",
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "اسامی لیبل",
|
||||
"archived-at": "بایگانی شده در",
|
||||
"sort-cards": "مرتبسازی کارتها",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "الفرز قيد التشغيل",
|
||||
"cardsSortPopup-title": "مرتبسازی کارتها",
|
||||
"due-date": "تاریخ اجرا",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "تم تفعيل اختصارات لوحة المفاتيح. انقر لتعطيلها.",
|
||||
"keyboard-shortcuts-disabled": "اختصارات لوحة المفاتيح معطلة. انقر للتفعيل.",
|
||||
"setSwimlaneHeightPopup-title": "ضبط ارتفاع مسار السباحة",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "لا يتضمن ملف CSV (القيم المفصولة بفواصل)/TSV (القيم المفصولة بعلامات التبويب) الخاص بك المعلومات الصحيحة بالتنسيق الصحيح",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "این لیست موجود نیست",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "این کاربر وجود ندارد",
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "إزالة التصنيف",
|
||||
"listDeletePopup-title": "حذف القائمة ؟",
|
||||
"remove-member": "حذف العضو",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "حذف من البطاقة",
|
||||
"remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
|
||||
"removeMemberPopup-title": "حذف العضو ?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "صورة الغلاف على البطاقة الصغيرة",
|
||||
"badge-attachment-on-minicard": "عدد المرفقات على البطاقة الصغيرة",
|
||||
"card-sorting-by-number-on-minicard": "رز البطاقات حسب الرقم على البطاقة الصغيرة",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "پیشوند با مسیر کامل",
|
||||
"prefix-with-parent": "پیشوند با خانواده",
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "اسامی لیبل",
|
||||
"archived-at": "بایگانی شده در",
|
||||
"sort-cards": "مرتبسازی کارتها",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "الفرز قيد التشغيل",
|
||||
"cardsSortPopup-title": "مرتبسازی کارتها",
|
||||
"due-date": "تاریخ اجرا",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "تم تفعيل اختصارات لوحة المفاتيح. انقر لتعطيلها.",
|
||||
"keyboard-shortcuts-disabled": "اختصارات لوحة المفاتيح معطلة. انقر للتفعيل.",
|
||||
"setSwimlaneHeightPopup-title": "ضبط ارتفاع مسار السباحة",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "لا يتضمن ملف CSV (القيم المفصولة بفواصل)/TSV (القيم المفصولة بعلامات التبويب) الخاص بك المعلومات الصحيحة بالتنسيق الصحيح",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "این لیست موجود نیست",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "این کاربر وجود ندارد",
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "إزالة التصنيف",
|
||||
"listDeletePopup-title": "حذف القائمة ؟",
|
||||
"remove-member": "حذف العضو",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "حذف من البطاقة",
|
||||
"remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
|
||||
"removeMemberPopup-title": "حذف العضو ?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "صورة الغلاف على البطاقة الصغيرة",
|
||||
"badge-attachment-on-minicard": "عدد المرفقات على البطاقة الصغيرة",
|
||||
"card-sorting-by-number-on-minicard": "رز البطاقات حسب الرقم على البطاقة الصغيرة",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "پیشوند با مسیر کامل",
|
||||
"prefix-with-parent": "پیشوند با خانواده",
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "اسامی لیبل",
|
||||
"archived-at": "بایگانی شده در",
|
||||
"sort-cards": "مرتبسازی کارتها",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "الفرز قيد التشغيل",
|
||||
"cardsSortPopup-title": "مرتبسازی کارتها",
|
||||
"due-date": "تاریخ اجرا",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Klaviatura qısa yolları aktivləşdirildi. Deaktiv etmək üçün klikləyin.",
|
||||
"keyboard-shortcuts-disabled": "Klaviatura qısa yolları deaktiv edilib. Aktivləşdirmək üçün klikləyin.",
|
||||
"setSwimlaneHeightPopup-title": "Üzgüçülük Hündürlüyünü təyin edin",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Sizin CSV(Vergüllə Ayrılmış Dəyərlər)/TSV (Vergüllə Ayrılmış Dəyərlər) düzgün formatda düzgün məlumatları ehtiva etmir",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Bu siyahı mövcud deyil",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Bu istifadəçi mövcud deyil",
|
||||
"error-user-notAllowSelf": "Özünüzü dəvət edə bilməzsiniz",
|
||||
"error-user-notCreated": "Bu istifadəçi yaradılmayıb",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Etiketi çıxarın",
|
||||
"listDeletePopup-title": "Siyahı silinsin?",
|
||||
"remove-member": "Üzvü silin",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Kartdan çıxarın",
|
||||
"remove-member-pop": "__name__ (__username__) __boardTitle__ ünvanından silinsin? Üzv bu lövhədəki bütün kartlardan silinəcək. Onlar bildiriş alacaqlar.",
|
||||
"removeMemberPopup-title": "Üzv silinsin?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Minikartda örtük şəkli",
|
||||
"badge-attachment-on-minicard": "Minikartdakı qoşmaların sayı",
|
||||
"card-sorting-by-number-on-minicard": "Minikartda nömrəyə görə kartın çeşidlənməsi",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Tam yolu olan prefiks",
|
||||
"prefix-with-parent": "Valideyn ilə prefiks",
|
||||
"subtext-with-full-path": "Tam yolu olan alt mətn",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etiket Adları",
|
||||
"archived-at": "ünvanında arxivləşdirilib",
|
||||
"sort-cards": "Kartları çeşidləyin",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort aktivdir",
|
||||
"cardsSortPopup-title": "Kartları çeşidləyin",
|
||||
"due-date": "Son tarix",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Klaviatura qısa yolları aktivləşdirildi. Deaktiv etmək üçün klikləyin.",
|
||||
"keyboard-shortcuts-disabled": "Klaviatura qısa yolları deaktiv edilib. Aktivləşdirmək üçün klikləyin.",
|
||||
"setSwimlaneHeightPopup-title": "Üzgüçülük Hündürlüyünü təyin edin",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Sizin CSV(Vergüllə Ayrılmış Dəyərlər)/TSV (Vergüllə Ayrılmış Dəyərlər) düzgün formatda düzgün məlumatları ehtiva etmir",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Bu siyahı mövcud deyil",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Bu istifadəçi mövcud deyil",
|
||||
"error-user-notAllowSelf": "Özünüzü dəvət edə bilməzsiniz",
|
||||
"error-user-notCreated": "Bu istifadəçi yaradılmayıb",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Etiketi çıxarın",
|
||||
"listDeletePopup-title": "Siyahı silinsin?",
|
||||
"remove-member": "Üzvü silin",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Kartdan çıxarın",
|
||||
"remove-member-pop": "__name__ (__username__) __boardTitle__ ünvanından silinsin? Üzv bu lövhədəki bütün kartlardan silinəcək. Onlar bildiriş alacaqlar.",
|
||||
"removeMemberPopup-title": "Üzv silinsin?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Minikartda örtük şəkli",
|
||||
"badge-attachment-on-minicard": "Minikartdakı qoşmaların sayı",
|
||||
"card-sorting-by-number-on-minicard": "Minikartda nömrəyə görə kartın çeşidlənməsi",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Tam yolu olan prefiks",
|
||||
"prefix-with-parent": "Valideyn ilə prefiks",
|
||||
"subtext-with-full-path": "Tam yolu olan alt mətn",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etiket Adları",
|
||||
"archived-at": "ünvanında arxivləşdirilib",
|
||||
"sort-cards": "Kartları çeşidləyin",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort aktivdir",
|
||||
"cardsSortPopup-title": "Kartları çeşidləyin",
|
||||
"due-date": "Son tarix",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Klaviatura qısa yolları aktivləşdirildi. Deaktiv etmək üçün klikləyin.",
|
||||
"keyboard-shortcuts-disabled": "Klaviatura qısa yolları deaktiv edilib. Aktivləşdirmək üçün klikləyin.",
|
||||
"setSwimlaneHeightPopup-title": "Üzgüçülük Hündürlüyünü təyin edin",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Sizin CSV(Vergüllə Ayrılmış Dəyərlər)/TSV (Vergüllə Ayrılmış Dəyərlər) düzgün formatda düzgün məlumatları ehtiva etmir",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Bu siyahı mövcud deyil",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Bu istifadəçi mövcud deyil",
|
||||
"error-user-notAllowSelf": "Özünüzü dəvət edə bilməzsiniz",
|
||||
"error-user-notCreated": "Bu istifadəçi yaradılmayıb",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Etiketi çıxarın",
|
||||
"listDeletePopup-title": "Siyahı silinsin?",
|
||||
"remove-member": "Üzvü silin",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Kartdan çıxarın",
|
||||
"remove-member-pop": "__name__ (__username__) __boardTitle__ ünvanından silinsin? Üzv bu lövhədəki bütün kartlardan silinəcək. Onlar bildiriş alacaqlar.",
|
||||
"removeMemberPopup-title": "Üzv silinsin?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Minikartda örtük şəkli",
|
||||
"badge-attachment-on-minicard": "Minikartdakı qoşmaların sayı",
|
||||
"card-sorting-by-number-on-minicard": "Minikartda nömrəyə görə kartın çeşidlənməsi",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Tam yolu olan prefiks",
|
||||
"prefix-with-parent": "Valideyn ilə prefiks",
|
||||
"subtext-with-full-path": "Tam yolu olan alt mətn",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etiket Adları",
|
||||
"archived-at": "ünvanında arxivləşdirilib",
|
||||
"sort-cards": "Kartları çeşidləyin",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort aktivdir",
|
||||
"cardsSortPopup-title": "Kartları çeşidləyin",
|
||||
"due-date": "Son tarix",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Пречице са тастатуре су укључене.",
|
||||
"keyboard-shortcuts-disabled": "Пречице са тастатуре су искључене.",
|
||||
"setSwimlaneHeightPopup-title": "Подеси висину у овој врсти поступка",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Ваш CSV(Вредности раздвојене зарезом)/TSV (Вредности раздвојене табулатором) не укључује исправну информацију у предвиђеном облику",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Този списък не съществува",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Този потребител не съществува",
|
||||
"error-user-notAllowSelf": "Не можете да поканите себе си",
|
||||
"error-user-notCreated": "Този потребител не е създаден",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Скини налепницу",
|
||||
"listDeletePopup-title": "Желаете да изтриете списъка?",
|
||||
"remove-member": "Премахни член",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Премахни от картата",
|
||||
"remove-member-pop": "Изузећете __name__ (__username__) из списа __boardTitle__? Сарадник ће бити изузет са свих предмета у списима. Примиће обавештење о томе.",
|
||||
"removeMemberPopup-title": "Желаете ли да премахнете членът?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Мотив из предметне грађе",
|
||||
"badge-attachment-on-minicard": "Број поред спајалице",
|
||||
"card-sorting-by-number-on-minicard": "Бројчана ознака за редослед",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Представка с пълен път",
|
||||
"prefix-with-parent": "Представка с източник",
|
||||
"subtext-with-full-path": "Под-текст с пълен път",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Натписи на налепницама",
|
||||
"archived-at": "датум и време архивирања",
|
||||
"sort-cards": "Сложи предмете",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Предмети су сложени",
|
||||
"cardsSortPopup-title": "Сложи предмете",
|
||||
"due-date": "По крајњем року",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Raccourcis clavier activés. Cliquer pour désactiver.",
|
||||
"keyboard-shortcuts-disabled": "Raccourcis clavier désactivés. Cliquer pour activer.",
|
||||
"setSwimlaneHeightPopup-title": "Définir la hauteur du couloir",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Votre fichier CSV (valeurs séparées par des virgules) / TSV (valeurs séparées par des tabulations) ne contient pas d'informations au bon format",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Cette liste n'existe pas",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Cet utilisateur n'existe pas",
|
||||
"error-user-notAllowSelf": "Vous ne pouvez pas vous inviter vous-même",
|
||||
"error-user-notCreated": "Cet utilisateur n'a pas encore été créé",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Retirer l'étiquette",
|
||||
"listDeletePopup-title": "Supprimer la liste ?",
|
||||
"remove-member": "Supprimer le participant",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Supprimer de la carte",
|
||||
"remove-member-pop": "Supprimer __name__ (__username__) de __boardTitle__ ? Ce participant sera supprimé de toutes les cartes du tableau et recevra une notification.",
|
||||
"removeMemberPopup-title": "Supprimer le participant ?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Vignette sur la mini-carte",
|
||||
"badge-attachment-on-minicard": "Compteur de pièces jointes sur la mini-carte",
|
||||
"card-sorting-by-number-on-minicard": "Tri numérique des cartes sur la mini-carte",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Préfixer avec le chemin complet",
|
||||
"prefix-with-parent": "Préfixer avec le parent",
|
||||
"subtext-with-full-path": "Sous-titre avec le chemin complet",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Noms d'étiquette",
|
||||
"archived-at": "archivée le",
|
||||
"sort-cards": "Trier les cartes",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Le tri est activé",
|
||||
"cardsSortPopup-title": "Trier les cartes",
|
||||
"due-date": "Date d'échéance",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "El teu CSV no inclou la informació en el format correcte.",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La llista no existeix",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "L'usuari no existeix",
|
||||
"error-user-notAllowSelf": "No et pots convidar a la teva matriu",
|
||||
"error-user-notCreated": "L'usuari no s'ha creat",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Elimina l'etiqueta",
|
||||
"listDeletePopup-title": "Esborrar la llista?",
|
||||
"remove-member": "Elimina membre",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Elimina de la fitxa",
|
||||
"remove-member-pop": "Eliminar __name__ (__username__) de __boardTitle__? El membre serà eliminat de totes les fitxes d'aquest tauler. Ells rebran una notificació.",
|
||||
"removeMemberPopup-title": "Vols suprimir el membre?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix amb camí complet",
|
||||
"prefix-with-parent": "Prefix amb el pare",
|
||||
"subtext-with-full-path": "Subtext amb camí complet",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Noms d'etiquetes",
|
||||
"archived-at": "arxivat a",
|
||||
"sort-cards": "Ordenar fitxes",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Ordenar fitxes",
|
||||
"due-date": "Data de venciment",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "El teu CSV no inclou la informació en el format correcte.",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La llista no existeix",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "L'usuari no existeix",
|
||||
"error-user-notAllowSelf": "No et pots convidar a la teva matriu",
|
||||
"error-user-notCreated": "L'usuari no s'ha creat",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Elimina l'etiqueta",
|
||||
"listDeletePopup-title": "Esborrar la llista?",
|
||||
"remove-member": "Elimina membre",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Elimina de la fitxa",
|
||||
"remove-member-pop": "Eliminar __name__ (__username__) de __boardTitle__? El membre serà eliminat de totes les fitxes d'aquest tauler. Ells rebran una notificació.",
|
||||
"removeMemberPopup-title": "Vols suprimir el membre?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix amb camí complet",
|
||||
"prefix-with-parent": "Prefix amb el pare",
|
||||
"subtext-with-full-path": "Subtext amb camí complet",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Noms d'etiquetes",
|
||||
"archived-at": "arxivat a",
|
||||
"sort-cards": "Ordenar fitxes",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar fitxes",
|
||||
"due-date": "Data de venciment",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "El teu CSV no inclou la informació en el format correcte.",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La llista no existeix",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "L'usuari no existeix",
|
||||
"error-user-notAllowSelf": "No et pots convidar a la teva matriu",
|
||||
"error-user-notCreated": "L'usuari no s'ha creat",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Elimina l'etiqueta",
|
||||
"listDeletePopup-title": "Esborrar la llista?",
|
||||
"remove-member": "Elimina membre",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Elimina de la fitxa",
|
||||
"remove-member-pop": "Eliminar __name__ (__username__) de __boardTitle__? El membre serà eliminat de totes les fitxes d'aquest tauler. Ells rebran una notificació.",
|
||||
"removeMemberPopup-title": "Vols suprimir el membre?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix amb camí complet",
|
||||
"prefix-with-parent": "Prefix amb el pare",
|
||||
"subtext-with-full-path": "Subtext amb camí complet",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Noms d'etiquetes",
|
||||
"archived-at": "arxivat a",
|
||||
"sort-cards": "Ordenar fitxes",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Ordenar fitxes",
|
||||
"due-date": "Data de venciment",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "键盘快捷键已启用。单击以禁用。",
|
||||
"keyboard-shortcuts-disabled": "键盘快捷键已禁用。单击以启用。",
|
||||
"setSwimlaneHeightPopup-title": "设置泳道高度",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "您的 CSV(逗号分隔值)/TSV(制表符分隔值)未包含格式正确的正确信息",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "该列表不存在",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "该用户不存在",
|
||||
"error-user-notAllowSelf": "您不能邀请自己",
|
||||
"error-user-notCreated": "该用户尚未创建",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "移除标签",
|
||||
"listDeletePopup-title": "删除列表?",
|
||||
"remove-member": "删除会员",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "从卡中删除",
|
||||
"remove-member-pop": "从__boardTitle__ 中删除__name__ (__username__) 吗?该成员将从该板上的所有卡中删除。他们将收到通知。",
|
||||
"removeMemberPopup-title": "删除会员?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "迷你卡上的封面图片",
|
||||
"badge-attachment-on-minicard": "迷你卡上的附件计数",
|
||||
"card-sorting-by-number-on-minicard": "按迷你卡上的编号对卡片进行分类",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "带完整路径的前缀",
|
||||
"prefix-with-parent": "带有父级的前缀",
|
||||
"subtext-with-full-path": "带有完整路径的副文本",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "标签名称",
|
||||
"archived-at": "存档于",
|
||||
"sort-cards": "卡片排序",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "排序已开启",
|
||||
"cardsSortPopup-title": "卡片排序",
|
||||
"due-date": "到期日",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Nastavit výšku swimlane",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Váš CSV (Comma Separated Values)/TSV (Tab Separated Values) neobsahuje správné informace ve správném formátu.",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Tento sloupec ;neexistuje",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Tento uživatel neexistuje",
|
||||
"error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
|
||||
"error-user-notCreated": "Tento uživatel není vytvořen",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Odstranit štítek",
|
||||
"listDeletePopup-title": "Smazat sloupec?",
|
||||
"remove-member": "Odebrat uživatele",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Odstranit z karty",
|
||||
"remove-member-pop": "Odstranit __name__ (__username__) z __boardTitle__? Uživatel bude odebrán ze všech karet na tomto tablu. Na tuto skutečnost bude upozorněn.",
|
||||
"removeMemberPopup-title": "Odstranit člena?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Titulní obrázek na minikartě",
|
||||
"badge-attachment-on-minicard": "Počet příloh na minikartě",
|
||||
"card-sorting-by-number-on-minicard": "Řazení karet podle čísla na minikartě",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix s celou cestou",
|
||||
"prefix-with-parent": "Prefix s předkem",
|
||||
"subtext-with-full-path": "Podtext s celou cestou",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Štítek jména",
|
||||
"archived-at": "archivováno",
|
||||
"sort-cards": "Třídit",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Řazení je zapnuté",
|
||||
"cardsSortPopup-title": "Třídit",
|
||||
"due-date": "Požadovaný termín",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Nastavit výšku swimlane",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Váš CSV (Comma Separated Values)/TSV (Tab Separated Values) neobsahuje správné informace ve správném formátu.",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Tento sloupec ;neexistuje",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Tento uživatel neexistuje",
|
||||
"error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
|
||||
"error-user-notCreated": "Tento uživatel není vytvořen",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Odstranit štítek",
|
||||
"listDeletePopup-title": "Smazat sloupec?",
|
||||
"remove-member": "Odebrat uživatele",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Odstranit z karty",
|
||||
"remove-member-pop": "Odstranit __name__ (__username__) z __boardTitle__? Uživatel bude odebrán ze všech karet na tomto tablu. Na tuto skutečnost bude upozorněn.",
|
||||
"removeMemberPopup-title": "Odstranit člena?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Titulní obrázek na minikartě",
|
||||
"badge-attachment-on-minicard": "Počet příloh na minikartě",
|
||||
"card-sorting-by-number-on-minicard": "Řazení karet podle čísla na minikartě",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix s celou cestou",
|
||||
"prefix-with-parent": "Prefix s předkem",
|
||||
"subtext-with-full-path": "Podtext s celou cestou",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Štítek jména",
|
||||
"archived-at": "archivováno",
|
||||
"sort-cards": "Třídit",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Řazení je zapnuté",
|
||||
"cardsSortPopup-title": "Třídit",
|
||||
"due-date": "Požadovaný termín",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Llwybrau byr bysellfwrdd wedi'u galluogi. Cliciwch i analluogi.",
|
||||
"keyboard-shortcuts-disabled": "Analluogwyd llwybrau byr bysellfwrdd. Cliciwch i alluogi.",
|
||||
"setSwimlaneHeightPopup-title": "Gosodwch Swimlane Uchder",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Nid yw eich CSV(Comma Separated Values)/TSV (Tab Separated Values) yn cynnwys y wybodaeth gywir yn y fformat cywir",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Nid yw'r rhestr hon yn bodoli",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Nid yw'r defnyddiwr hwn yn bodoli",
|
||||
"error-user-notAllowSelf": "Ni allwch wahodd eich hun",
|
||||
"error-user-notCreated": "Nid yw'r defnyddiwr hwn wedi'i greu",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Dileu Label",
|
||||
"listDeletePopup-title": "Dileu Rhestr ?",
|
||||
"remove-member": "Dileu Aelod",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Tynnu oddi ar Gerdyn",
|
||||
"remove-member-pop": "Tynnu __name__ (__username__) o __boardTitle__? Bydd yr aelod yn cael ei dynnu oddi ar bob cerdyn ar y bwrdd hwn. Byddant yn derbyn hysbysiad.",
|
||||
"removeMemberPopup-title": "Dileu Aelod?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Llun clawr ar minicard",
|
||||
"badge-attachment-on-minicard": "Cyfrif yr atodiadau ar miniard",
|
||||
"card-sorting-by-number-on-minicard": "Didoli cardiau yn ôl rhif ar minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Rhagddodiad gyda llwybr llawn",
|
||||
"prefix-with-parent": "Rhagddodiad gyda rhiant",
|
||||
"subtext-with-full-path": "Is-destun gyda llwybr llawn",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Enwau Label",
|
||||
"archived-at": "archifwyd yn",
|
||||
"sort-cards": "Cardiau Didoli",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Mae trefn ymlaen",
|
||||
"cardsSortPopup-title": "Cardiau Didoli",
|
||||
"due-date": "Dyddiad Cwblhau",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Llwybrau byr bysellfwrdd wedi'u galluogi. Cliciwch i analluogi.",
|
||||
"keyboard-shortcuts-disabled": "Analluogwyd llwybrau byr bysellfwrdd. Cliciwch i alluogi.",
|
||||
"setSwimlaneHeightPopup-title": "Gosodwch Swimlane Uchder",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Nid yw eich CSV(Comma Separated Values)/TSV (Tab Separated Values) yn cynnwys y wybodaeth gywir yn y fformat cywir",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Nid yw'r rhestr hon yn bodoli",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Nid yw'r defnyddiwr hwn yn bodoli",
|
||||
"error-user-notAllowSelf": "Ni allwch wahodd eich hun",
|
||||
"error-user-notCreated": "Nid yw'r defnyddiwr hwn wedi'i greu",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Dileu Label",
|
||||
"listDeletePopup-title": "Dileu Rhestr ?",
|
||||
"remove-member": "Dileu Aelod",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Tynnu oddi ar Gerdyn",
|
||||
"remove-member-pop": "Tynnu __name__ (__username__) o __boardTitle__? Bydd yr aelod yn cael ei dynnu oddi ar bob cerdyn ar y bwrdd hwn. Byddant yn derbyn hysbysiad.",
|
||||
"removeMemberPopup-title": "Dileu Aelod?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Llun clawr ar minicard",
|
||||
"badge-attachment-on-minicard": "Cyfrif yr atodiadau ar miniard",
|
||||
"card-sorting-by-number-on-minicard": "Didoli cardiau yn ôl rhif ar minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Rhagddodiad gyda llwybr llawn",
|
||||
"prefix-with-parent": "Rhagddodiad gyda rhiant",
|
||||
"subtext-with-full-path": "Is-destun gyda llwybr llawn",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Enwau Label",
|
||||
"archived-at": "archifwyd yn",
|
||||
"sort-cards": "Cardiau Didoli",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Mae trefn ymlaen",
|
||||
"cardsSortPopup-title": "Cardiau Didoli",
|
||||
"due-date": "Dyddiad Cwblhau",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Tastaturgenveje aktiverede. Klik for at deaktivere.",
|
||||
"keyboard-shortcuts-disabled": "Tastaturgenveje deaktiverede. Klik for at aktivere.",
|
||||
"setSwimlaneHeightPopup-title": "Angiv højde på svømmebane",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Din CSV (Comma Separated Values)/TSV (Tab Separated Values) indeholder ikke gyldig information i korrekt format",
|
||||
"error-import-empty-board": "Denne eksport indeholder intet tavleindhold (ingen svømmebaner, lister eller kort). Den kan være oprettet af en ældre WeKan-version med en kendt eksportfejl. Eksporter tavlen igen med den aktuelle version, og importer den nye fil.",
|
||||
"error-list-doesNotExist": "Listen findes ikke",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Brugeren findes ikke",
|
||||
"error-user-notAllowSelf": "Du kan ikke invitere dig selv",
|
||||
"error-user-notCreated": "Brugeren er ikke oprettet",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Fjern etikette",
|
||||
"listDeletePopup-title": "Slet liste?",
|
||||
"remove-member": "Fjern medlem",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Fjern fra kort",
|
||||
"remove-member-pop": "Fjern __name__ (__username__) fra __boardTitle__? Medlemmet vil blive fjernet fra alle kort på denne tavle. De vil modtage en notifikation.",
|
||||
"removeMemberPopup-title": "Fjern medlem?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Omslagsbild på minikort",
|
||||
"badge-attachment-on-minicard": "Antal bilagor på minikort",
|
||||
"card-sorting-by-number-on-minicard": "Sortering av kort efter nummer på minikort",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Præfiks med fuld sti",
|
||||
"prefix-with-parent": "Præfiks med overordnede",
|
||||
"subtext-with-full-path": "Undertekst med fuld sti",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Märkningsnamn",
|
||||
"archived-at": "arkiverad den",
|
||||
"sort-cards": "Sortera kort",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sortering er slået til",
|
||||
"cardsSortPopup-title": "Sortera kort",
|
||||
"due-date": "Förfallodatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Tastaturkürzel sind aktiviert. Klicke, um sie zu deaktivieren.",
|
||||
"keyboard-shortcuts-disabled": "Tastaturkürzel sind deaktiviert. Klicke, um sie zu aktivieren.",
|
||||
"setSwimlaneHeightPopup-title": "Stelle die Höhe der Swimlane ein",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Deine CSV(Kommatgetrennte Werte)/TSV (Tab getrennte Werte) enthält keine korrekten Informationen im geforderten Format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Diese Liste existiert nicht",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Dieser Nutzer existiert nicht",
|
||||
"error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
|
||||
"error-user-notCreated": "Dieser Nutzer ist nicht angelegt",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Label entfernen",
|
||||
"listDeletePopup-title": "Liste löschen?",
|
||||
"remove-member": "Nutzer entfernen",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Von Karte entfernen",
|
||||
"remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Es erhält eine Benachrichtigung.",
|
||||
"removeMemberPopup-title": "Mitglied entfernen?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover Bild auf Minikarte",
|
||||
"badge-attachment-on-minicard": "Anzahl der Anhänge auf Minikarte",
|
||||
"card-sorting-by-number-on-minicard": "Kartensortierung nach Nummer auf Minikarte",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Vollständiger Pfad über Titel",
|
||||
"prefix-with-parent": "Über Titel",
|
||||
"subtext-with-full-path": "Vollständiger Pfad unter Titel",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label-Namen",
|
||||
"archived-at": "archiviert am",
|
||||
"sort-cards": "Sortiere Karten",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sortierung ist aktiviert",
|
||||
"cardsSortPopup-title": "Sortiere Karten",
|
||||
"due-date": "Fälligkeitsdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Tastaturkürzel sind aktiviert. Klicke, um sie zu deaktivieren.",
|
||||
"keyboard-shortcuts-disabled": "Tastaturkürzel sind deaktiviert. Klicke, um sie zu aktivieren.",
|
||||
"setSwimlaneHeightPopup-title": "Stelle die Höhe der Swimlane ein",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Deine CSV(Kommatgetrennte Werte)/TSV (Tab getrennte Werte) enthält keine korrekten Informationen im geforderten Format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Diese Liste existiert nicht",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Dieser Nutzer existiert nicht",
|
||||
"error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
|
||||
"error-user-notCreated": "Dieser Nutzer ist nicht angelegt",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Label entfernen",
|
||||
"listDeletePopup-title": "Liste löschen?",
|
||||
"remove-member": "Nutzer entfernen",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Von Karte entfernen",
|
||||
"remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Es erhält eine Benachrichtigung.",
|
||||
"removeMemberPopup-title": "Mitglied entfernen?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover Bild auf Minikarte",
|
||||
"badge-attachment-on-minicard": "Anzahl der Anhänge auf Minikarte",
|
||||
"card-sorting-by-number-on-minicard": "Kartensortierung nach Nummer auf Minikarte",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Vollständiger Pfad über Titel",
|
||||
"prefix-with-parent": "Über Titel",
|
||||
"subtext-with-full-path": "Vollständiger Pfad unter Titel",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label-Namen",
|
||||
"archived-at": "archiviert am",
|
||||
"sort-cards": "Sortiere Karten",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sortierung ist aktiviert",
|
||||
"cardsSortPopup-title": "Sortiere Karten",
|
||||
"due-date": "Fälligkeitsdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Tastaturkürzel sind aktiviert. Klicke, um sie zu deaktivieren.",
|
||||
"keyboard-shortcuts-disabled": "Tastaturkürzel sind deaktiviert. Klicke, um sie zu aktivieren.",
|
||||
"setSwimlaneHeightPopup-title": "Stelle die Höhe der Swimlane ein",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Deine CSV(Kommatgetrennte Werte)/TSV (Tab getrennte Werte) enthält keine korrekten Informationen im geforderten Format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Diese Liste existiert nicht",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Dieser Nutzer existiert nicht",
|
||||
"error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
|
||||
"error-user-notCreated": "Dieser Nutzer ist nicht angelegt",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Label entfernen",
|
||||
"listDeletePopup-title": "Liste löschen?",
|
||||
"remove-member": "Nutzer entfernen",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Von Karte entfernen",
|
||||
"remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Es erhält eine Benachrichtigung.",
|
||||
"removeMemberPopup-title": "Mitglied entfernen?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover Bild auf Minikarte",
|
||||
"badge-attachment-on-minicard": "Anzahl der Anhänge auf Minikarte",
|
||||
"card-sorting-by-number-on-minicard": "Kartensortierung nach Nummer auf Minikarte",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Vollständiger Pfad über Titel",
|
||||
"prefix-with-parent": "Über Titel",
|
||||
"subtext-with-full-path": "Vollständiger Pfad unter Titel",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label-Namen",
|
||||
"archived-at": "archiviert am",
|
||||
"sort-cards": "Sortiere Karten",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sortierung ist aktiviert",
|
||||
"cardsSortPopup-title": "Sortiere Karten",
|
||||
"due-date": "Fälligkeitsdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Tastaturkürzel sind aktiviert. Klicke, um sie zu deaktivieren.",
|
||||
"keyboard-shortcuts-disabled": "Tastaturkürzel sind deaktiviert. Klicke, um sie zu aktivieren.",
|
||||
"setSwimlaneHeightPopup-title": "Stelle die Höhe der Swimlane ein",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Deine CSV(Kommatgetrennte Werte)/TSV (Tab getrennte Werte) enthält keine korrekten Informationen im geforderten Format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Diese Liste existiert nicht",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Dieser Nutzer existiert nicht",
|
||||
"error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
|
||||
"error-user-notCreated": "Dieser Nutzer ist nicht angelegt",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Label entfernen",
|
||||
"listDeletePopup-title": "Liste löschen?",
|
||||
"remove-member": "Nutzer entfernen",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Von Karte entfernen",
|
||||
"remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Es erhält eine Benachrichtigung.",
|
||||
"removeMemberPopup-title": "Mitglied entfernen?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover Bild auf Minikarte",
|
||||
"badge-attachment-on-minicard": "Anzahl der Anhänge auf Minikarte",
|
||||
"card-sorting-by-number-on-minicard": "Kartensortierung nach Nummer auf Minikarte",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Vollständiger Pfad über Titel",
|
||||
"prefix-with-parent": "Über Titel",
|
||||
"subtext-with-full-path": "Vollständiger Pfad unter Titel",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label-Namen",
|
||||
"archived-at": "archiviert am",
|
||||
"sort-cards": "Sortiere Karten",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sortierung ist aktiviert",
|
||||
"cardsSortPopup-title": "Sortiere Karten",
|
||||
"due-date": "Fälligkeitsdatum",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Scorciatoie da tastiera abilitate. Clicca per disabilitarle.",
|
||||
"keyboard-shortcuts-disabled": "Scorciatoie da tastiera disabilitate. Clicca per abilitarle.",
|
||||
"setSwimlaneHeightPopup-title": "Impostare l'altezza della corsia",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Il tuo file CSV (Comma Separated Values) / TSV (Tab Separated Values) non contiene le giuste informazioni nel formato corretto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Η λίστα δεν υπάρχει",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Ο χρήστης δεν υπάρχει",
|
||||
"error-user-notAllowSelf": "Δε μπορείτε να αυτοπροσκληθείτε",
|
||||
"error-user-notCreated": "Ο χρήστης δε δημιουργήθηκε",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Αφαίρεση Ετικέτας",
|
||||
"listDeletePopup-title": "Διαγραφή Λίστας;",
|
||||
"remove-member": "Αφαίρεση Μέλους",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Αφαίρεση από την Κάρτα",
|
||||
"remove-member-pop": "Rimuovere __name__ (__username__) da __boardTitle__? L'utente sarà rimosso da tutte le schede in questa bacheca. Riceveranno una notifica.",
|
||||
"removeMemberPopup-title": "Αφαίρεση Μέλους;",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Immagine di copertina su minicard",
|
||||
"badge-attachment-on-minicard": "Conteggio degli allegati sulla minicard",
|
||||
"card-sorting-by-number-on-minicard": "La scheda viene ordinata per numero sulla minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefisso con percorso completo",
|
||||
"prefix-with-parent": "Prefisso con genitore",
|
||||
"subtext-with-full-path": "Sottotesto con percorso completo",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nomi etichette",
|
||||
"archived-at": "archiviata il",
|
||||
"sort-cards": "Ordina schede",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordinamento attivo",
|
||||
"cardsSortPopup-title": "Ordina schede",
|
||||
"due-date": "Data di scadenza",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Scorciatoie da tastiera abilitate. Clicca per disabilitarle.",
|
||||
"keyboard-shortcuts-disabled": "Scorciatoie da tastiera disabilitate. Clicca per abilitarle.",
|
||||
"setSwimlaneHeightPopup-title": "Impostare l'altezza della corsia",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Il tuo file CSV (Comma Separated Values) / TSV (Tab Separated Values) non contiene le giuste informazioni nel formato corretto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Η λίστα δεν υπάρχει",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Ο χρήστης δεν υπάρχει",
|
||||
"error-user-notAllowSelf": "Δε μπορείτε να αυτοπροσκληθείτε",
|
||||
"error-user-notCreated": "Ο χρήστης δε δημιουργήθηκε",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Αφαίρεση Ετικέτας",
|
||||
"listDeletePopup-title": "Διαγραφή Λίστας;",
|
||||
"remove-member": "Αφαίρεση Μέλους",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Αφαίρεση από την Κάρτα",
|
||||
"remove-member-pop": "Rimuovere __name__ (__username__) da __boardTitle__? L'utente sarà rimosso da tutte le schede in questa bacheca. Riceveranno una notifica.",
|
||||
"removeMemberPopup-title": "Αφαίρεση Μέλους;",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Immagine di copertina su minicard",
|
||||
"badge-attachment-on-minicard": "Conteggio degli allegati sulla minicard",
|
||||
"card-sorting-by-number-on-minicard": "La scheda viene ordinata per numero sulla minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefisso con percorso completo",
|
||||
"prefix-with-parent": "Prefisso con genitore",
|
||||
"subtext-with-full-path": "Sottotesto con percorso completo",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nomi etichette",
|
||||
"archived-at": "archiviata il",
|
||||
"sort-cards": "Ordina schede",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordinamento attivo",
|
||||
"cardsSortPopup-title": "Ordina schede",
|
||||
"due-date": "Data di scadenza",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-member": "Remove Member",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Label Names",
|
||||
"archived-at": "archived at",
|
||||
"sort-cards": "Sort Cards",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sort Cards",
|
||||
"due-date": "Due Date",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Tio listo ne ekzistas",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Tio uzanto ne ekzistas",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "Uzanto ne kreita",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Forigi membron",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Forigi de karto",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Esta lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Este usuario no existe",
|
||||
"error-user-notAllowSelf": "No podés invitarte a vos mismo",
|
||||
"error-user-notCreated": "El usuario no se creó",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Remover Etiqueta",
|
||||
"listDeletePopup-title": "¿Borrar Lista?",
|
||||
"remove-member": "Remover Miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Remover de Tarjeta",
|
||||
"remove-member-pop": "¿Remover __name__ (__username__) de __boardTitle__? Los miembros va a ser removido de todas las tarjetas en este tablero. Serán notificados.",
|
||||
"removeMemberPopup-title": "¿Remover Miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No se puede invitar a sí mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar a __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero y recibirá una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Atajos de teclado habilitados. Haz clic para deshabilitarlos.",
|
||||
"keyboard-shortcuts-disabled": "Atajos de teclado deshabilitados. Haz clic para habilitarlos.",
|
||||
"setSwimlaneHeightPopup-title": "Ajustar la altura del carril",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Imagen de portada de la minitarjeta",
|
||||
"badge-attachment-on-minicard": "Contador de adjuntos en la minitarjeta",
|
||||
"card-sorting-by-number-on-minicard": "Orden de tarjetas por número de minitarjeta",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "archivado el",
|
||||
"sort-cards": "Ordenar tarjetas",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenamiento activado",
|
||||
"cardsSortPopup-title": "Ordenar tarjetas",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Keyboard shortcuts enabled. Click to disable.",
|
||||
"keyboard-shortcuts-disabled": "Keyboard shortcuts disabled. Click to enable.",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Seda nimekirja ei ole olemas",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Seda kasutajat ei ole olemas",
|
||||
"error-user-notAllowSelf": "Te ei saa ennast kutsuda",
|
||||
"error-user-notCreated": "Seda kasutajat ei ole loodud",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Eemalda etikett",
|
||||
"listDeletePopup-title": "Loetelu kustutamine ?",
|
||||
"remove-member": "Eemalda liige",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Eemalda kaardilt",
|
||||
"remove-member-pop": "Eemalda __name__ (__username__) __boardTitle__-st? Liige eemaldatakse kõigilt selle tahvli kaartidelt. Nad saavad teate.",
|
||||
"removeMemberPopup-title": "Eemaldage liige?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Täieliku teekonna eesliide",
|
||||
"prefix-with-parent": "Esileht koos vanemaga",
|
||||
"subtext-with-full-path": "Täieliku teekonnaga alltekst",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Etikettide nimed",
|
||||
"archived-at": "arhiveeritud aadressil",
|
||||
"sort-cards": "Sorteeri kaardid",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Sort is on",
|
||||
"cardsSortPopup-title": "Sorteeri kaardid",
|
||||
"due-date": "Tähtaeg",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "Laster-teklak gaituta. Egin klik desgaitzeko.",
|
||||
"keyboard-shortcuts-disabled": "Laster-teklak desgaituta. Egin klik gaitzeko.",
|
||||
"setSwimlaneHeightPopup-title": "Errailaren altuera ezarri",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "Zure CSV (komaz bereizitako balioak)/TSV (tabulazio bereizitako balioak) ez du informazio egokia formatu egokian sartzen",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "Zerrenda hau ez da existitzen",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "Erabiltzaile hau ez da existitzen",
|
||||
"error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu",
|
||||
"error-user-notCreated": "Erabiltzaile hau sortu gabe dago",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "Kendu etiketa",
|
||||
"listDeletePopup-title": "Ezabatu zerrenda?",
|
||||
"remove-member": "Kendu kidea",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "Kendu txarteletik",
|
||||
"remove-member-pop": "Kendu __name__ (__username__) __boardTitle__ arbeletik? Kidea arbel honetako txartel guztietatik kenduko da. Jakinarazpenak bidaliko dira.",
|
||||
"removeMemberPopup-title": "Kendu kidea?",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "minitxartelaren azalaren irudia",
|
||||
"badge-attachment-on-minicard": "Eranskinen kopurua minitxartelean",
|
||||
"card-sorting-by-number-on-minicard": "Txartelak zenbakien arabera ordenatzea minitxartelean",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "Nombres de las etiquetas",
|
||||
"archived-at": "hemen gordeta:",
|
||||
"sort-cards": "Ordenatu txartelak",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "Ordenatzea aktibatuta dago",
|
||||
"cardsSortPopup-title": "Ordenatu txartelak",
|
||||
"due-date": "Fecha de Vencimiento",
|
||||
|
||||
@@ -125,6 +125,10 @@
|
||||
"list-width-personal-note": "This width is only for you.",
|
||||
"personal-list-width": "Personal list widths",
|
||||
"personal-list-width-description": "When on, each user keeps their own list widths. When off, list widths are shared with everyone on the board.",
|
||||
"fixed-list-width": "Same width for all lists",
|
||||
"click-to-enable-fixed-list-width": "Same width for all lists disabled. Click to enable.",
|
||||
"click-to-disable-fixed-list-width": "Same width for all lists enabled. Click to disable.",
|
||||
"fixed-list-width-note": "When on, all lists have the same width, and resizing one list resizes all lists. This setting is only for you.",
|
||||
"keyboard-shortcuts-enabled": "تم تفعيل اختصارات لوحة المفاتيح. انقر لتعطيلها.",
|
||||
"keyboard-shortcuts-disabled": "اختصارات لوحة المفاتيح معطلة. انقر للتفعيل.",
|
||||
"setSwimlaneHeightPopup-title": "تنظیم ارتفاع مسیر",
|
||||
@@ -504,6 +508,8 @@
|
||||
"error-csv-schema": "لا يتضمن ملف CSV (القيم المفصولة بفواصل)/TSV (القيم المفصولة بعلامات التبويب) الخاص بك المعلومات الصحيحة بالتنسيق الصحيح",
|
||||
"error-import-empty-board": "This export contains no board content (no swimlanes, lists or cards). It may have been created by an older WeKan version with a known export bug. Please re-export the board with the current version and import the new file.",
|
||||
"error-list-doesNotExist": "این لیست موجود نیست",
|
||||
"error-linked-card-not-allowed": "You can only link to a normal card. Linking to another linked card, or to a card that links back to this board, is not allowed because it would make the cards inaccessible.",
|
||||
"error-user-disabled": "This user account is disabled",
|
||||
"error-user-doesNotExist": "این کاربر وجود ندارد",
|
||||
"error-user-notAllowSelf": "عدم امکان دعوت خود",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
@@ -742,6 +748,7 @@
|
||||
"remove-label": "حذف لیبل",
|
||||
"listDeletePopup-title": "حذف فهرست؟",
|
||||
"remove-member": "حذف عضو",
|
||||
"deleted-user": "Deleted user",
|
||||
"remove-member-from-card": "حذف از کارت",
|
||||
"remove-member-pop": "آیا __name__ (__username__) را از __boardTitle__ حذف میکنید؟ کاربر از تمام کارتها در این برد حذف خواهد شد. آنها از این اقدام مطلع خواهند شد.",
|
||||
"removeMemberPopup-title": "آیا می خواهید کاربر را حذف کنید؟",
|
||||
@@ -968,6 +975,10 @@
|
||||
"cover-attachment-on-minicard": "عکس کاور بر روی مینی کارت",
|
||||
"badge-attachment-on-minicard": "شمارنده ضمائم بر روی مینی کارت",
|
||||
"card-sorting-by-number-on-minicard": "مرتب سازی کارت با شماره بر روی مینی کارت",
|
||||
"checklist-count-on-minicard": "Checklist item count (0/0) on minicard",
|
||||
"checklist-count": "Checklist item count (0/0)",
|
||||
"attachment-count": "Count of attachments",
|
||||
"cover-image": "Cover image",
|
||||
"prefix-with-full-path": "پیشوند با مسیر کامل",
|
||||
"prefix-with-parent": "پیشوند با خانواده",
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
@@ -1441,6 +1452,11 @@
|
||||
"label-names": "اسامی لیبل",
|
||||
"archived-at": "بایگانی شده در",
|
||||
"sort-cards": "مرتبسازی کارتها",
|
||||
"sort-boards": "Sort Boards",
|
||||
"search-boards": "Search boards",
|
||||
"sort-boards-custom": "Custom (drag order)",
|
||||
"sort-boards-title-asc": "Title (A → Z)",
|
||||
"sort-boards-title-desc": "Title (Z → A)",
|
||||
"sort-is-on": "مرتب سازی فعال است",
|
||||
"cardsSortPopup-title": "مرتبسازی کارتها",
|
||||
"due-date": "تاریخ اجرا",
|
||||
|
||||
Loaded 100 of 288 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user