mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 11:25:19 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b729b502e | ||
|
|
cef965f73f | ||
|
|
43dd98f8a1 | ||
|
|
2cd772fcf5 | ||
|
|
eaa1d823de | ||
|
|
1a41c72c21 | ||
|
|
7943a17432 | ||
|
|
d41e17d6a0 | ||
|
|
4ec2cbcd5a | ||
|
|
1ce2d8cc88 | ||
|
|
8f76c7b2b0 | ||
|
|
b07c4d0a7b | ||
|
|
5b43b7159e | ||
|
|
7ce71dbb2e | ||
|
|
d615e599f4 | ||
|
|
aad00cdba2 | ||
|
|
07800da9af | ||
|
|
da0d338e33 | ||
|
|
c3c091635d | ||
|
|
8c499823cb | ||
|
|
1844425e8f | ||
|
|
68dd14140f | ||
|
|
1ba32f5269 | ||
|
|
30f36a7f31 | ||
|
|
20b9c9ddd6 | ||
|
|
0e9aed5a4b | ||
|
|
27d8468be0 | ||
|
|
d01526bbff | ||
|
|
ab3b48b334 | ||
|
|
b0da9097c1 | ||
|
|
158130cbfc | ||
|
|
53328f40c6 | ||
|
|
e7eeaf0b10 | ||
|
|
609b07a8db | ||
|
|
7545bb5506 | ||
|
|
457713968c | ||
|
|
372a58c112 | ||
|
|
527962966b | ||
|
|
a37e7d1cc7 | ||
|
|
33ad40d012 | ||
|
|
44b5e12de9 | ||
|
|
1207b573b5 | ||
|
|
a26295a2fb | ||
|
|
b2da9ac8d4 | ||
|
|
53dcf7379d | ||
|
|
dfa6c78d4f | ||
|
|
795850ed05 | ||
|
|
9ef7f4a07a | ||
|
|
cb2394a95d | ||
|
|
ac368de06a | ||
|
|
b26494766f | ||
|
|
68ab63c7fe | ||
|
|
e3e71b254a | ||
|
|
fc4eadedc9 | ||
|
|
9dca403782 | ||
|
|
dd90995db7 | ||
|
|
f8e31745d8 |
No files matched your search
+212
@@ -39,6 +39,218 @@ them up next.
|
||||
[#3823](https://github.com/wekan/wekan/issues/3823), [#3138](https://github.com/wekan/wekan/issues/3138),
|
||||
[#2204](https://github.com/wekan/wekan/issues/2204) (restrict permanent delete to the Admin role).
|
||||
|
||||
# v9.81 2026-07-09 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- **[Feature #5394: the Link-card popup's Cards dropdown is now sorted alphabetically](https://github.com/wekan/wekan/commit/b07c4d0a7bed0f03ba2d7d1ad1f030e7edf3dfff)**:
|
||||
In the "Link to this card" popup, the Cards pull-down list is now sorted
|
||||
alphabetically by card title (case-insensitive, locale/numeric aware)
|
||||
instead of board sort order, so a card can be found on boards with many
|
||||
cards. Thanks to xet7.
|
||||
- **[Feature #5396: edit Lists (title, color) via the REST API + api.py commands](https://github.com/wekan/wekan/commit/7ce71dbb2e1eae5159503eefac7e6f349dfb59c8)**:
|
||||
Lists can now be edited through the REST API like cards can. The endpoint
|
||||
`PUT /api/boards/:boardId/lists/:listId` already accepted `title`, `color`,
|
||||
`starred` and `wipLimit`, but the color was stored unvalidated; it now
|
||||
validates the color with `normalizeListColor` (a named palette color or a
|
||||
custom `#rrggbb` hex) and rejects an unknown color with a clear 400 instead
|
||||
of silently storing None. The pure field/validation logic lives in a
|
||||
Meteor-free helper `models/lib/listApiUpdate.js` and is unit tested in
|
||||
`tests/listApiUpdate.test.cjs`. The `api.py` reference CLI gains two new
|
||||
commands mirroring `editcard`/`editcardcolor`: `editlist BOARDID LISTID
|
||||
NEWLISTTITLE` and `editlistcolor BOARDID LISTID COLOR`. Thanks to C0rn3j and xet7.
|
||||
- **[Feature #5514: custom color-wheel (RGB/hex) picker with automatic readable text contrast](https://github.com/wekan/wekan/commit/30f36a7f319675bd3aac7a4ba0700427000726b9)**:
|
||||
The color pickers that previously offered only a fixed set of named colors now also include a native
|
||||
color wheel (`<input type="color">`), so any `#rrggbb` color can be chosen. The wheel was added
|
||||
alongside the existing swatches for card labels ("categories"), swimlanes ("tabs"), lists and cards.
|
||||
The schema color fields accept a custom hex in addition to the named palette, and existing named-color
|
||||
data keeps working; a stored hex is rendered with an inline `background-color` instead of the named
|
||||
CSS class. A new pure, Meteor-free helper `models/lib/contrastColor.js` computes a readable text color
|
||||
from sRGB relative luminance (white text on dark backgrounds, black on light), maps the named palette
|
||||
to hex, and validates/normalizes hex; it is applied as an inline text color wherever a chosen color is
|
||||
a background behind text (label chips, swimlane / list headers, minicard, card details header), so text
|
||||
stays readable on any color. Covered by `tests/contrastColor.test.cjs` (20 assertions pass).
|
||||
Thanks to Ruyeex and xet7.
|
||||
- **[Feature #5621: Rules can set a date field to a custom time (value + minute/hour/day/week/month later)](https://github.com/wekan/wekan/commit/53328f40c6e092988175ce820c14658c855390de)**:
|
||||
The Rules "Set date relative to now" action previously only offset a date field (Start / Due / End /
|
||||
Received) by a whole number of DAYS. It now has a unit selector, so a rule can set a date field to
|
||||
now + `<value>` `<unit> later`, where the unit is minute(s) / hour(s) / day(s) / week(s) / month(s);
|
||||
negative values move the date earlier. Months use a real calendar-month add (e.g. keeping the same
|
||||
day-of-month) rather than a fixed 30-day approximation. Existing rules created before this change
|
||||
have no stored unit and keep working exactly as before (no unit ⇒ days), so the change is fully
|
||||
backward compatible. The offset math lives in a new pure, Meteor-free helper
|
||||
`models/lib/relativeDateOffset.js` used by `server/rulesHelper.js` and covered by
|
||||
`tests/relativeDateOffset.test.cjs` (15 assertions pass). Note that the related "overdue" Rules
|
||||
trigger and the "set date field to now" action from the same feature request already existed in an
|
||||
earlier release; this change adds only the missing custom-time unit selector. Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- **[Fix #5351: users are auto-added to organizations matching their email domain on sign-up](https://github.com/wekan/wekan/commit/d41e17d6a088edf6abbb1f9517d2ecb58d618f03)**: the Organization setting "Automatically add users with the domain name" (`org.orgAutoAddUsersWithDomainName`) could be configured, but nothing at sign-up ever read it, so a new user whose email domain matched an organization was never added to it; the `Accounts.onCreateUser` hook now, on every non-admin sign-up path (password registration, LDAP, invitation code, new OIDC user), adds the user to each organization whose configured domain exactly matches the domain part of their email (case-insensitive, exact — a subdomain does not match and an empty org domain matches nobody), using the same `{ orgId, orgDisplayName }` membership shape used everywhere else and never duplicating an existing membership, with the matching decision extracted into a Meteor-free, unit-tested `orgsToAutoAddForEmail` helper.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5369: the Activities show/hide control is now a clear eye / eye-slash icon toggle](https://github.com/wekan/wekan/commit/1ce2d8cc8871e5da6f0ce5dde04520885649c0ba)**: the Activities panel's show/hide control was a generic, unlabeled material toggle switch whose ON/OFF meaning was counterintuitive; it is replaced on the card details Activities panel with an eye / eye-slash icon toggle (open eye = activities shown, crossed eye = activities hidden) that mirrors the login/register password-visibility toggle, so the icon reflects the current visibility, clicking flips it, and the tooltip states the action (Show activities / Hide activities). For consistency the board sidebar Activities toggle, which drives the same showActivities state, was switched from the check / empty-square icon to the same eye / eye-slash toggle. The underlying show/hide setting and its persistence are unchanged.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5442: outgoing webhooks now include the label name on add/remove label](https://github.com/wekan/wekan/commit/aad00cdba2bb896068f4a896cf67df2a7bd79a73)**: the addedLabel/removedLabel outgoing webhook (and notification) text showed a bare, generic "label" with no name, because labels are embedded in the board document but the Activities `label()` helper looked the label id up in the Cards collection and always returned undefined, so the `__label__` token was never filled; the hook now resolves the label from the already-loaded board via `getLabelById` and a pure, unit-tested `labelDisplayName` helper (name, then color for a nameless label as shown in the UI, then the id), so the webhook always carries the label's display name.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5482: adding/editing a card description now triggers outgoing webhooks](https://github.com/wekan/wekan/commit/da0d338e336ecfd3c120753aaea064e9487bf3cd)**: outgoing webhooks fire only when an operation logs an activity (the Activities.after.insert hook posts to the board's webhooks), but changing a card's description created no activity — unlike title/date changes — so no webhook was sent; the Cards before.update hook now logs an `a-changedDescription` activity on first-time set and later edits (but not on no-op / empty-to-empty saves), so the existing webhook hook fires, with a Meteor-free unit-tested `descriptionChanged` helper.
|
||||
Thanks to xet7.
|
||||
- **[Fix: the Rules Workflow view is now fully translatable via i18n](https://github.com/wekan/wekan/commit/8c499823cbc8c5785ec604015d55e28daa11336e)**: the Rules Workflow view rendered its trigger/action palette chips ("Card is created", "Move card to top", "Set received date to now", etc.) as hardcoded English regardless of the UI language, while the rest of the page was translated; each palette entry now carries an i18n key translated at render time via TAPi18n.__ (reusing existing rule keys where they fit, plus new r-w-* keys for workflow-only labels), and the slot clear tooltip now uses the existing r-remove key, so the whole view follows the selected language.
|
||||
Thanks to xet7.
|
||||
- **[Fix: deleting a board rule no longer fails with "Access denied [403]"](https://github.com/wekan/wekan/commit/68dd14140f620574a95db42dc1078a7b4bd97916)**: deleting a rule ran three separate client-side Collection.remove() calls (Rules + Triggers + Actions), each gated by a per-collection allow() rule that resolved the board from that document's own boardId; when a trigger/action document had no resolvable boardId (legacy docs, or docs not published to the client) the board came back null, `allowIsBoardAdmin` returned false, and Meteor rejected the mutation with 403 "Access denied" — so the delete failed even for a legitimate board admin. Rule deletion now goes through a new server method `rules.deleteRule` that authorizes once (active board admin or site admin) and removes the rule, its trigger and its action server-side, bypassing the brittle client allow/deny; the permission decision is a Meteor-free, unit-tested helper and no permission is loosened.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5510: adding a board label via the REST API no longer errors/hangs](https://github.com/wekan/wekan/commit/0e9aed5a4b359188a9390f1132443614b3b0e133)**: PUT /api/boards/:boardId/labels only sent a response when the body had a `label` key, so a body without one hung until the client timed out, and a bare-string `label` pushed a schema-invalid label and returned 200; the handler now always returns JSON (2xx on success, 4xx on bad input, real error status otherwise) via a pure, unit-tested input helper.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5604: CSV export no longer crashes on boards with dangling references](https://github.com/wekan/wekan/commit/d01526bbff892a946a58aae1b516bd0b82d23113)**: exporting a large/old board to CSV failed with "Couldn't download - Network issue" because Exporter.buildCsv read `.title`/`.username`/`.name` directly on the result of looking up a card's deleted list/swimlane/owner/member/assignee/label/customField by id, throwing "Cannot read property 'title' of undefined"; the per-card row builder is now a null-safe helper that emits a blank cell for missing references while keeping identical output for well-formed cards.
|
||||
Thanks to xet7.
|
||||
- **[Fix #5656: the Calendar view now honors the active board filters](https://github.com/wekan/wekan/commit/b0da9097c18dea12ccce8dec6de8a5cf2519551a)**: the Calendar view queried cards by board and date only and ignored the active Filter sidebar (member / assignee / due-date / label / custom-field), so it showed every card in the interval unlike the Board / Lists / Swimlanes views; it now ANDs the Filter selector into its query and refetches when the filter changes.
|
||||
Thanks to kerier and xet7.
|
||||
- **[Fix #6442: All Boards "Custom (drag order)" — drop now persists the reorder](https://github.com/wekan/wekan/commit/457713968cf3c365899271606398b7796a7b07f4)**:
|
||||
Follow-up to #6439, which restored the drag preview but left the drop a no-op: dragging a board on
|
||||
the All Boards page in Custom (drag order) mode showed the dashed-border preview, but releasing it
|
||||
snapped the board back without reordering. The drop handler built the current on-screen order from
|
||||
`el.classList[0]` of each `.js-board`, but the item is `li.js-board(class="{{_id}} …")` and Jade
|
||||
emits the literal `js-board` class FIRST, so `classList[0]` was the string `"js-board"` for every
|
||||
board — never the board `_id`. The ordered ids were therefore `['js-board','js-board',…]`, the
|
||||
(correct, unit-tested) `computeReorderedSortIndex` helper could not find the dragged/target ids
|
||||
among them, returned `null`, and nothing was written to `profile.boardSortIndex`; the preview still
|
||||
worked because it is driven by the `dragover` CSS class, independent of the id. The fix reads each
|
||||
board's `_id` from its Blaze data context (the same source `dragstart` uses via `this._id`) instead
|
||||
of the literal class, so the real display order reaches the reorder helper and the drop persists.
|
||||
Guarded by a new case in `tests/boardSortReorder.test.cjs` (the wrong-class extraction yields no
|
||||
mapping; real ids reorder).
|
||||
Thanks to jullbo and xet7.
|
||||
- **[Fix #6443: cards on a deleted swimlane are invisible in swimlane view](https://github.com/wekan/wekan/commit/a37e7d1cc7e1a4541c498c974aa97b2e36136065)**:
|
||||
On some old boards a swimlane was deleted while its cards kept the now-dangling `swimlaneId` (an
|
||||
"orphaned" card), so those cards showed no content in swimlane mode even though they worked in list
|
||||
mode. Cards with no swimlane at all (`null` / `''` / missing) already appear in every swimlane, but
|
||||
an orphaned card matched no existing swimlane and so was visible in NO swimlane (while list view,
|
||||
which applies no swimlane scope, still showed it) — exactly the reported symptom. The fix mirrors
|
||||
the existing orphaned-**list** fallback (`Swimlanes.orphanedSwimlaneLists`, which surfaces orphaned
|
||||
lists in the first swimlane) for **cards**: when a list's cards are fetched for the board's FIRST
|
||||
swimlane, the swimlane-membership clause becomes a single `{ swimlaneId: { $nin: <otherSwimlaneIds> } }`
|
||||
(everything not owned by another existing swimlane: own id, `null`/`''`, missing, or orphaned). It
|
||||
stays a single field clause with no second `$or`, so the #6441 board-wide label filter still holds,
|
||||
and orphaned cards appear once — in the first swimlane — without a database migration. Threaded
|
||||
through the pure `models/lib/swimlaneFilter.js` helpers, the in-memory `filterCardsByListAndSwimlane`,
|
||||
a new `List.orphanedCardsSwimlaneIds` helper and the `cards()`/`cardsUnfiltered()`/`allCards()` model
|
||||
methods plus the `listBody` `cardsWithLimit` render helper. Covered by new cases in
|
||||
`tests/swimlaneFilter.test.cjs` (18 assertions pass; the #6441 regression guards stay intact).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v9.80 2026-07-06 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- **[Admin Panel Domains table: pagination, column sort and search (like the Board Table view)](https://github.com/wekan/wekan/issues/5850)**:
|
||||
The Admin Panel > People > Domains table loaded every domain (aggregated from all users) into the
|
||||
browser at once, with a fixed order and no search. It now behaves like the Board Table view: the
|
||||
server aggregates the domains and returns only one small page, so the whole list is never sent to
|
||||
the browser. You can order by the Domain or Users column (click the header to toggle ascending /
|
||||
descending, with a ▲/▼ indicator) and filter with a search box; prev/next controls page through the
|
||||
results. The search + sort + slice runs in the new pure, unit-tested `models/lib/domainTablePage.js`
|
||||
behind a new `getDomainsWithUserCountsPage` admin method (`server/models/users.js`), and the
|
||||
`domainGeneral` template (`client/components/settings/peopleBody.{jade,js,css}`) is now
|
||||
self-contained and fetches only the current page. Covered by `tests/domainTablePage.test.cjs`.
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following tests:
|
||||
|
||||
- **[Verified and added a regression test for the board-invitation email language](https://github.com/wekan/wekan/commit/dfa6c78d4f032a698f6feaad189c86da903d27fb)**:
|
||||
Confirmed that a board-invitation email is localised in the existing recipient's own profile
|
||||
language, or — when the invitee is a new account created by the invite — in the inviter's profile
|
||||
language, defaulting to `en` (`en.i18n.json`) when none is set. The behaviour was already correct;
|
||||
the language choice is now extracted into the pure, unit-tested `models/lib/inviteEmailLanguage.js`
|
||||
used by `inviteUserToBoard`, and locked in by `tests/inviteEmailLanguage.test.cjs`.
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- **[Linked-card minicard now shows the cover image of the real card](https://github.com/wekan/wekan/commit/9ef7f4a07a6b40a2582af24b27fe133119adcd18)**:
|
||||
A linked card (created by "Link card to this card") on one board did not show the cover image of
|
||||
the real card it points at on another board, even though the card's other fields did. A linked
|
||||
card is only a placeholder — its real content lives on the card at `linkedId` — and every other
|
||||
minicard getter resolves through the real card (`getTitle`/`getReceived`/`getDue`/…), but the
|
||||
cover helpers read `this.coverId` directly, and a linked card has no `coverId` of its own. The
|
||||
real card's cover attachment is already published to the linking board (see the "linked cards" /
|
||||
"attachments for linked cards" children of the `board` publication), so this was purely a
|
||||
client-side resolution gap. `Card.cover()` and the minicard `cover()` helper now resolve the
|
||||
cover id through the real card via the pure, unit-tested `models/lib/linkedCardCover.js`; normal
|
||||
cards are unaffected. Covered by `tests/linkedCardCover.test.cjs`.
|
||||
Thanks to 32Dexter and xet7.
|
||||
|
||||
- **[Fix date-picker calendar stays fully visible when opened low on a scrolled page](https://github.com/wekan/wekan/commit/7a0eb61c0a4d3ace60f95cfbda7c1d70dff665ef)**:
|
||||
Opening a date field (due/start/end date, or a date custom field) low on the screen showed the
|
||||
calendar popup extending past the visible area, and — because the pop-over is `position: absolute`
|
||||
(document coordinates) — scrolling to reach it moved the calendar along with the page, so the full
|
||||
calendar could never be seen (the workaround was to close it, drag the field to the center and
|
||||
reopen). `Popup._getOffset` computed the space above/below the opener and the clamped `top` from
|
||||
the opener's DOCUMENT offset mixed with the VIEWPORT height, ignoring the page scroll, so on a
|
||||
scrolled page the anchored popup landed outside the visible viewport. The geometry now runs in
|
||||
viewport coordinates (subtracting the page scroll) and clamps the popup fully within the visible
|
||||
viewport, then converts back to document coordinates for the absolute style; when the page is not
|
||||
scrolled the output is unchanged. Extracted the math into the pure, unit-tested
|
||||
`client/lib/popupOffset.js`, used by `client/lib/popup.js`. Covered by `tests/popupOffset.test.cjs`.
|
||||
Thanks to MarcusDger and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v9.79 2026-07-06 WeKan ® release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- **[Fix #6439: Custom (drag order) sort on All Boards page now reorders via drag-and-drop](https://github.com/wekan/wekan/commit/f8e31745d8104c58dc7bbcb4c1e4c615141a8e82)**:
|
||||
On the All Boards page the jQuery-ui sortable that reordered boards in the "Custom (drag order)"
|
||||
mode was removed when the page switched to HTML5 drag-and-drop for workspaces, and nothing
|
||||
replaced it, so dragging a board showed a not-allowed cursor and never updated
|
||||
`profile.boardSortIndex`. Added HTML5 `dragover`/`drop` reorder handlers on the board tiles in
|
||||
`client/components/boards/boardsList.js` (active only in the custom sort mode), a
|
||||
`setBoardSortIndexes` helper in `models/users.js` to persist the new order in one write, a
|
||||
drop-hint style in `client/components/boards/boardsList.css`, and extracted the reorder
|
||||
decision/index math into the pure, unit-tested `models/lib/boardSortReorder.js`. Covered by
|
||||
`tests/boardSortReorder.test.cjs`.
|
||||
Thanks to jullbo and xet7.
|
||||
|
||||
- **[Fix #6440: '+' add-item button on minicard checklist does nothing](https://github.com/wekan/wekan/commit/dd90995db74593228d40bc504405620ec09c175d)**:
|
||||
On the minicard the checklist add-item `<form>` is rendered inside the `a.minicard-wrapper`
|
||||
anchor, so the native form `submit` event never reached the Blaze event map — the #5565
|
||||
minicard-checklist work wired only a `submit .js-add-checklist-item` handler (which never fires
|
||||
there) and gave the Save button no click handler, so clicking "+" Save did nothing. Added an
|
||||
explicit `click .js-submit-add-checklist-item-form` handler in
|
||||
`client/components/cards/minicard.js` (mirroring the working edit-item button) that inserts the
|
||||
item, with the blank-input guard and title parsing extracted into the pure, Meteor-free
|
||||
`models/lib/checklistItemTitles.js`. Card-detail checklists are unaffected. Covered by
|
||||
`tests/checklistItemTitles.test.cjs`.
|
||||
Thanks to jullbo and xet7.
|
||||
|
||||
- **[Fix #6441: label filter now applies board-wide across all swimlanes](https://github.com/wekan/wekan/commit/9dca403782d476eb3c593fe614848ef02bb7f5a3)**:
|
||||
A label filter hid non-matching cards in one swimlane (e.g. "Focus") but left another swimlane
|
||||
(e.g. "Background") unfiltered. Each list scopes its cards to the current swimlane while also
|
||||
showing shared/orphaned cards that have no swimlane; that fallback was written as a bare
|
||||
top-level `$or`, which competes with the board Filter's own top-level `$or` (label/member
|
||||
criteria) when the two selectors are combined — dropping the label criterion in every swimlane
|
||||
except the default one. The swimlane-membership fallback is now a single
|
||||
`swimlaneId: { $in: [id, null, ''] }` clause (the same form already used in `sidebarFilters.js`,
|
||||
`cardDetails.js` and `dialogWithBoardSwimlaneList.js`), extracted to the pure, unit-tested
|
||||
`models/lib/swimlaneFilter.js` and used by `client/components/lists/listBody.js` and
|
||||
`models/lists.js`, so no second `$or` exists and the filter is always `$and`-combined and applied
|
||||
board-wide. Covered by `tests/swimlaneFilter.test.cjs`.
|
||||
Thanks to jullbo and xet7.
|
||||
|
||||
- **[Fix flaky server-side Mocha test (i18n zh-CN "is not a spy")](https://github.com/wekan/wekan/commit/fc4eadedc9109602ee029b60c44eeda869aa98c3)**:
|
||||
The server-side Mocha suite intermittently reported "1 failing" on the #5756
|
||||
`imports/i18n/i18n.test.js` region-tag test with `TypeError: [Function] is not a spy`. The
|
||||
assertion re-read `TAPi18n.i18n.addResourceBundle`, and the sinon-chai matcher (routed through
|
||||
chai-as-promised) could evaluate after this suite's `afterEach` had already run
|
||||
`sinon.restore()` — at which point the property is the original function, not the stub. The
|
||||
`.loadLanguage` tests now assert on the captured stub reference (restore unwraps the property but
|
||||
leaves the spy intact), which is deterministic. Reproduced and verified with a standalone
|
||||
sinon/chai script.
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v9.78 2026-07-06 WeKan ® release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ 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.78
|
||||
ARG VERSION=9.81
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV BUILD_DEPS="apt-utils gnupg wget bzip2 g++ curl libarchive-tools build-essential git ca-certificates python3 unzip"
|
||||
|
||||
@@ -103,7 +103,7 @@ By working directly with WeKan ® you get the benefit of active maintenance and
|
||||
|
||||
## Getting Started with Development
|
||||
|
||||
The default branch uses Meteor 3.5-rc.2 with Node.js 24.x.
|
||||
The main branch uses Meteor 3.5 with Node.js 24.x.
|
||||
See [CHANGELOG.md](https://github.com/wekan/wekan/blob/main/CHANGELOG.md) for the latest runtime updates.
|
||||
|
||||
To contribute, [create a fork](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#2-create-fork-of-httpsgithubcomwekanwekan-at-github-web-page) and run `./rebuild-wekan.sh` (or `./rebuild-wekan.bat` on Windows) as detailed [here](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#3-select-option-1-to-install-dependencies-and-then-enter). Once you're ready, please test your code and [submit a pull request (PR)](https://github.com/wekan/wekan/blob/main/docs/DeveloperDocs/Build-and-Create-Pull-Request.md#7-test).
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v9.78.0"
|
||||
appVersion: "v9.81.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -37,6 +37,8 @@ If *nix: chmod +x api.py => ./api.py users
|
||||
python3 api.py lists BOARDID # Lists of BOARDID
|
||||
python3 api.py list BOARDID LISTID # Info of LISTID
|
||||
python3 api.py createlist BOARDID LISTTITLE # Create list
|
||||
python3 api.py editlist BOARDID LISTID NEWLISTTITLE # Edit list title
|
||||
python3 api.py editlistcolor BOARDID LISTID COLOR (Color available: `white`, `green`, `yellow`, `orange`, `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`) # Edit list color
|
||||
python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION
|
||||
python3 api.py editcard BOARDID LISTID CARDID NEWCARDTITLE NEWCARDDESCRIPTION
|
||||
python3 api.py getcard BOARDID LISTID CARDID # Get card info
|
||||
@@ -432,6 +434,49 @@ if arguments == 5:
|
||||
|
||||
if arguments >= 4:
|
||||
|
||||
if sys.argv[1] == 'editlist':
|
||||
|
||||
# ------- EDIT LIST START -----------
|
||||
boardid = sys.argv[2]
|
||||
listid = sys.argv[3]
|
||||
newlisttitle = sys.argv[4]
|
||||
edlist = wekanurl + apiboards + boardid + s + l + s + listid
|
||||
print(edlist)
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
put_data = {'title': '{}'.format(newlisttitle)}
|
||||
body = requests.put(edlist, data=put_data, headers=headers)
|
||||
print("=== EDIT LIST ===\n")
|
||||
body = requests.get(edlist, headers=headers)
|
||||
data2 = body.text.replace('}', "}\n")
|
||||
print(data2)
|
||||
# ------- EDIT LIST END -----------
|
||||
|
||||
if sys.argv[1] == 'editlistcolor':
|
||||
|
||||
# ------- EDIT LIST COLOR START -----------
|
||||
boardid = sys.argv[2]
|
||||
listid = sys.argv[3]
|
||||
newcolor = sys.argv[4]
|
||||
|
||||
valid_colors = ['white', 'green', 'yellow', 'orange', 'red', 'purple', 'blue', 'sky', 'lime', 'pink', 'black',
|
||||
'silver', 'peachpuff', 'crimson', 'plum', 'darkgreen', 'slateblue', 'magenta', 'gold', 'navy',
|
||||
'gray', 'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo']
|
||||
|
||||
if newcolor not in valid_colors:
|
||||
print("Invalid color. Choose a color from the list.")
|
||||
sys.exit(1)
|
||||
|
||||
edlist = wekanurl + apiboards + boardid + s + l + s + listid
|
||||
print(edlist)
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
put_data = {'color': '{}'.format(newcolor)}
|
||||
body = requests.put(edlist, data=put_data, headers=headers)
|
||||
print("=== EDIT LIST COLOR ===\n")
|
||||
body = requests.get(edlist, headers=headers)
|
||||
data2 = body.text.replace('}', "}\n")
|
||||
print(data2)
|
||||
# ------- EDIT LIST COLOR END -----------
|
||||
|
||||
if sys.argv[1] == 'newuser':
|
||||
|
||||
# ------- CREATE NEW USER START -----------
|
||||
|
||||
@@ -15,6 +15,20 @@
|
||||
.reactions-popup .add-comment-reaction:hover {
|
||||
background-color: #b0c4de;
|
||||
}
|
||||
/* Eye / eye-slash icon toggle for showing/hiding activities. Open eye
|
||||
(.eye-icon) = activities shown; crossed eye (.eye-slash-icon) = hidden.
|
||||
Matches the password-visibility toggle used on the login/register pages. */
|
||||
.activities-eye-toggle {
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.4em;
|
||||
text-decoration: none;
|
||||
}
|
||||
.activities-eye-toggle .eye-icon,
|
||||
.activities-eye-toggle .eye-slash-icon {
|
||||
line-height: 1;
|
||||
}
|
||||
.activities {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
@@ -133,6 +133,9 @@ template(name="activity")
|
||||
if($eq activity.activityType 'a-changedTitle')
|
||||
| {{{_ 'activity-changedTitle' (sanitize activity.value) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-changedDescription')
|
||||
| {{{_ 'activity-changedDescription' cardLink}}}.
|
||||
|
||||
//- customField activity ------------------------------------------------
|
||||
if($eq activity.activityType 'createCustomField')
|
||||
| {{_ 'activity-customfield-created' customField}}.
|
||||
|
||||
@@ -11,6 +11,7 @@ import Lists from '/models/lists';
|
||||
import TableVisibilityModeSettings from '/models/tableVisibilityModeSettings';
|
||||
import { EscapeActions } from '/client/lib/escapeActions';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { Filter } from '/client/lib/filter';
|
||||
|
||||
// SubsManager removed for Meteor 3 migration
|
||||
const { calculateIndex } = Utils;
|
||||
@@ -929,6 +930,11 @@ Template.calendarView.onRendered(function () {
|
||||
document.documentElement.dir = TAPi18n.getLanguageDirection();
|
||||
|
||||
this.autorun(function () {
|
||||
// #5656: refetch calendar events whenever the active board Filter changes
|
||||
// so the Calendar view stays in sync with the other views. Reading the
|
||||
// Filter's reactive state here establishes the dependency; the events()
|
||||
// callback below applies the actual selector.
|
||||
Filter.isActive();
|
||||
const calendarEl = document.getElementById('calendar-view');
|
||||
if (calendarEl && calendarEl._wekanCalendar) {
|
||||
calendarEl._wekanCalendar.refetchEvents();
|
||||
@@ -1002,6 +1008,12 @@ Template.calendarView.helpers({
|
||||
isRTL: TAPi18n.isRTL(),
|
||||
events(fetchInfo, callback) {
|
||||
const currentBoard = Utils.getCurrentBoard();
|
||||
// #5656: apply the active board Filter (member / assignee / due-date /
|
||||
// label / custom-field) so the Calendar view shows the same scoped set
|
||||
// of cards as the Board / Lists / Swimlanes views.
|
||||
const filterSelector = Filter.isActive()
|
||||
? Filter._getMongoSelector()
|
||||
: undefined;
|
||||
const events = [];
|
||||
const pushEvent = function (card, title, start, end, extraCls) {
|
||||
start = start || card.startAt;
|
||||
@@ -1026,12 +1038,12 @@ Template.calendarView.helpers({
|
||||
});
|
||||
};
|
||||
currentBoard
|
||||
.cardsInInterval(fetchInfo.start, fetchInfo.end)
|
||||
.cardsInInterval(fetchInfo.start, fetchInfo.end, filterSelector)
|
||||
.forEach(function (card) {
|
||||
pushEvent(card);
|
||||
});
|
||||
currentBoard
|
||||
.cardsDueInBetween(fetchInfo.start, fetchInfo.end)
|
||||
.cardsDueInBetween(fetchInfo.start, fetchInfo.end, filterSelector)
|
||||
.forEach(function (card) {
|
||||
pushEvent(
|
||||
card,
|
||||
|
||||
@@ -1078,6 +1078,13 @@ body.grey-icons-enabled .checkmark-no-grey {
|
||||
margin: 8px; /* Space between board items */
|
||||
}
|
||||
|
||||
/* #6439: highlight the board a dragged board will be dropped before, when
|
||||
reordering in the Custom (drag order) sort mode. */
|
||||
.js-board.board-reorder-over {
|
||||
outline: 2px dashed #3498db;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* Reset background for add-board button */
|
||||
.js-add-board {
|
||||
background-color: transparent !important;
|
||||
|
||||
@@ -6,6 +6,10 @@ import TableVisibilityModeSettings from '/models/tableVisibilityModeSettings';
|
||||
import { BoardMultiSelection } from '/client/lib/boardMultiSelection';
|
||||
import { EscapeActions } from '/client/lib/escapeActions';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import {
|
||||
isDragReorderEnabled,
|
||||
computeReorderedSortIndex,
|
||||
} from '/models/lib/boardSortReorder';
|
||||
|
||||
// SubsManager removed for Meteor 3 migration
|
||||
|
||||
@@ -59,6 +63,15 @@ const DEFAULT_WORKSPACE_ICON = '📁';
|
||||
// Matches the Admin Panel > People page size.
|
||||
const BOARDS_PER_PAGE = 25;
|
||||
|
||||
// #6439: the effective All Boards sort mode for the current user, defaulting to
|
||||
// 'custom' (manual drag order) when unknown. Used to gate board drag-reordering.
|
||||
function currentAllBoardsSortBy() {
|
||||
const cu = ReactiveCache.getCurrentUser();
|
||||
return cu && typeof cu.getAllBoardsSortBy === 'function'
|
||||
? cu.getAllBoardsSortBy()
|
||||
: 'custom';
|
||||
}
|
||||
|
||||
function getCurrentWorkspacesTree() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
const tree =
|
||||
@@ -973,6 +986,55 @@ Template.boardList.events({
|
||||
document.querySelectorAll('.workspace-node.board-drag-hint, .js-select-menu.board-drag-hint').forEach((el) => {
|
||||
el.classList.remove('board-drag-hint');
|
||||
});
|
||||
document.querySelectorAll('.js-board.board-reorder-over').forEach((el) => {
|
||||
el.classList.remove('board-reorder-over');
|
||||
});
|
||||
},
|
||||
// #6439: reorder boards on the All Boards page by dropping one board onto
|
||||
// another. Only active in the "custom" (manual drag order) sort mode — in the
|
||||
// sorted modes the order comes from the title, so a board is not a valid drop
|
||||
// target (which is why, before this, the browser showed the not-allowed cursor
|
||||
// and nothing persisted). The reorder decision/index math lives in the pure,
|
||||
// unit-tested models/lib/boardSortReorder.js.
|
||||
'dragover .js-board'(evt, tpl) {
|
||||
if (!isDragReorderEnabled(currentAllBoardsSortBy())) return;
|
||||
// A multi-board drag is a share/assign gesture, not a reorder.
|
||||
const dt = evt.originalEvent.dataTransfer;
|
||||
if (dt && dt.getData('application/x-board-multi') === 'true') return;
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
if (dt) dt.dropEffect = 'move';
|
||||
evt.currentTarget.classList.add('board-reorder-over');
|
||||
},
|
||||
'dragleave .js-board'(evt) {
|
||||
evt.currentTarget.classList.remove('board-reorder-over');
|
||||
},
|
||||
'drop .js-board'(evt, tpl) {
|
||||
if (!isDragReorderEnabled(currentAllBoardsSortBy())) return;
|
||||
const dt = evt.originalEvent.dataTransfer;
|
||||
if (dt && dt.getData('application/x-board-multi') === 'true') return;
|
||||
const draggedId = dt ? dt.getData('text/plain') : '';
|
||||
if (!draggedId) return;
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
evt.currentTarget.classList.remove('board-reorder-over');
|
||||
const targetId = this._id;
|
||||
// #6442: current display order of the board grid. Read each board's _id from
|
||||
// its Blaze data context (the same source dragstart uses via `this._id`) —
|
||||
// NOT el.classList[0]. On `li.js-board(class="{{_id}} …")` Jade emits the
|
||||
// literal `js-board` class FIRST, so classList[0] is the string "js-board"
|
||||
// for every board; the old code therefore produced ['js-board','js-board',…],
|
||||
// computeReorderedSortIndex could not find the dragged/target ids among them,
|
||||
// returned null, and the drop silently did nothing (board snapped back).
|
||||
const orderedIds = Array.from(tpl.findAll('.js-board'))
|
||||
.map((el) => Blaze.getData(el)?._id)
|
||||
.filter(Boolean);
|
||||
const mapping = computeReorderedSortIndex(orderedIds, draggedId, targetId);
|
||||
if (!mapping) return;
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
if (currentUser && typeof currentUser.setBoardSortIndexes === 'function') {
|
||||
currentUser.setBoardSortIndexes(mapping);
|
||||
}
|
||||
},
|
||||
'click .js-clone-board'(evt) {
|
||||
if (confirm(TAPi18n.__('duplicate-board-confirm'))) {
|
||||
|
||||
@@ -66,7 +66,7 @@ template(name="tableView")
|
||||
td.table-view-cell-labels
|
||||
.div
|
||||
each label in row.labels
|
||||
span.card-label(class="card-label-{{label.color}}" title="{{label.name}}")
|
||||
span.card-label(class="{{labelColorClass label.color}}" style="{{labelColorStyle label.color}}" title="{{label.name}}")
|
||||
+viewer
|
||||
= label.name
|
||||
if showReceivedColumn
|
||||
|
||||
@@ -6,7 +6,7 @@ template(name="cardDetails")
|
||||
+attachmentViewer
|
||||
|
||||
section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}' class='{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}' class='{{#if cardCollapsed}}card-details-collapsed{{/if}}'): .card-details-canvas
|
||||
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
|
||||
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}' style='{{colorStyle}}')
|
||||
+inlinedForm(classNames="js-card-details-title")
|
||||
+editCardTitleForm
|
||||
else
|
||||
@@ -127,7 +127,7 @@ template(name="cardDetails")
|
||||
| {{_ 'labels'}}
|
||||
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
|
||||
each labels
|
||||
span.card-label(class="card-label-{{color}}" title=name)
|
||||
span.card-label(class="{{labelColorClass color}}" style="{{labelColorStyle color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
@@ -741,12 +741,12 @@ template(name="cardDetails")
|
||||
i.fa.fa-history
|
||||
| {{ _ 'activities'}}
|
||||
if currentUser.isBoardMember
|
||||
.material-toggle-switch(title="{{_ 'show-activities'}}")
|
||||
if showActivities
|
||||
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleShowActivitiesCard")
|
||||
label.toggle-label(for="toggleShowActivitiesCard")
|
||||
if showActivities
|
||||
a.activities-eye-toggle.js-toggle-show-activities-card(title="{{_ 'hide-activities'}}" aria-label="{{_ 'hide-activities'}}")
|
||||
i.fa.fa-eye.eye-icon
|
||||
else
|
||||
a.activities-eye-toggle.js-toggle-show-activities-card(title="{{_ 'show-activities'}}" aria-label="{{_ 'show-activities'}}")
|
||||
i.fa.fa-eye-slash.eye-slash-icon
|
||||
|
||||
if currentUser.isBoardAdmin
|
||||
if isLoaded.get
|
||||
@@ -1199,6 +1199,10 @@ template(name="setCardColorPopup")
|
||||
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
|
||||
if(isSelected color)
|
||||
i.fa.fa-check
|
||||
// #5514: native color wheel for picking a custom RGB / hex color
|
||||
.color-wheel-wrap
|
||||
label(for="cardColorWheel") {{_ 'custom-color'}}
|
||||
input.js-card-color-wheel#cardColorWheel(type="color" value=currentColorHex title="{{_ 'custom-color'}}")
|
||||
button.primary.confirm.js-submit {{_ 'save'}}
|
||||
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ import Users from '/models/users';
|
||||
import Lists from '/models/lists';
|
||||
import CardComments from '/models/cardComments';
|
||||
import { ALLOWED_COLORS } from '/config/const';
|
||||
import { isHexColor, toHex } from '/models/lib/contrastColor';
|
||||
import { uniqBy } from '/imports/lib/collectionHelpers';
|
||||
import { memberTargetBoardId } from '/models/lib/linkedCardMembers';
|
||||
import { UserAvatar } from '../users/userAvatar';
|
||||
@@ -1046,7 +1047,7 @@ Template.cardDetails.events({
|
||||
const card = Template.currentData();
|
||||
await card.toggleHideCheckedChecklistItems();
|
||||
},
|
||||
async 'change #toggleShowActivitiesCard'() {
|
||||
async 'click .js-toggle-show-activities-card'() {
|
||||
const card = Template.currentData();
|
||||
await card.toggleShowActivities();
|
||||
},
|
||||
@@ -2032,6 +2033,10 @@ Template.setCardColorPopup.helpers({
|
||||
}
|
||||
return tpl.currentColor.get() === color;
|
||||
},
|
||||
// #5514: current color as a '#rrggbb' hex for the native color wheel <input>.
|
||||
currentColorHex() {
|
||||
return toHex(Template.instance().currentColor.get()) || '#0079bf';
|
||||
},
|
||||
});
|
||||
|
||||
Template.setCardColorPopup.events({
|
||||
@@ -2039,6 +2044,13 @@ Template.setCardColorPopup.events({
|
||||
const paletteData = Blaze.getData(event.currentTarget);
|
||||
tpl.currentColor.set(paletteData?.color);
|
||||
},
|
||||
// #5514: picking from the native color wheel stores a custom hex.
|
||||
'input .js-card-color-wheel'(event, tpl) {
|
||||
const value = event.currentTarget.value;
|
||||
if (isHexColor(value)) {
|
||||
tpl.currentColor.set(value);
|
||||
}
|
||||
},
|
||||
async 'click .js-submit'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const card = Cards.findOne(getCardId());
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/* #5514: native color-wheel (custom RGB / hex) picker wrapper, shared by the
|
||||
label / list / swimlane / card color popups. */
|
||||
.color-wheel-wrap {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin: 6px 0 10px 0;
|
||||
}
|
||||
.color-wheel-wrap label {
|
||||
margin: 0;
|
||||
}
|
||||
.color-wheel-wrap input[type="color"] {
|
||||
width: 44px;
|
||||
height: 28px;
|
||||
padding: 0;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
border: 1px solid #000;
|
||||
border-radius: 4px;
|
||||
|
||||
@@ -4,9 +4,12 @@ template(name="formLabel")
|
||||
|
||||
label {{_ "select-color"}}
|
||||
.palette-colors: each labels
|
||||
span.card-label.palette-color.js-palette-color(class="card-label-{{color}}")
|
||||
span.card-label.palette-color.js-palette-color(class="{{labelColorClass color}}" style="{{labelColorStyle color}}")
|
||||
if(isSelected color)
|
||||
i.fa.fa-check
|
||||
.color-wheel-wrap
|
||||
label(for="labelColorWheel") {{_ 'custom-color'}}
|
||||
input.js-label-color-wheel#labelColorWheel(type="color" value=currentColorHex title="{{_ 'custom-color'}}")
|
||||
|
||||
template(name="createLabelPopup")
|
||||
form.create-label
|
||||
@@ -31,8 +34,8 @@ template(name="cardLabelsPopup")
|
||||
a.card-label-edit-button.fa.fa-pencil.js-edit-label
|
||||
if isTouchScreenOrShowDesktopDragHandles
|
||||
span.fa.label-handle(class="fa-arrows" title="{{_ 'dragLabel'}}")
|
||||
span.card-label.card-label-selectable.js-select-label.card-label-wrapper(class="card-label-{{color}}"
|
||||
class="{{# if isLabelSelected ../_id }}active{{/if}}")
|
||||
span.card-label.card-label-selectable.js-select-label.card-label-wrapper(class="{{labelColorClass color}}"
|
||||
class="{{# if isLabelSelected ../_id }}active{{/if}}" style="{{labelColorStyle color}}")
|
||||
+viewer
|
||||
= name
|
||||
if(isLabelSelected ../_id)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { LABEL_COLORS } from '/models/metadata/colors';
|
||||
import { isHexColor, toHex } from '/models/lib/contrastColor';
|
||||
import { EscapeActions } from '/client/lib/escapeActions';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
|
||||
@@ -28,6 +29,11 @@ Template.formLabel.helpers({
|
||||
isSelected(color) {
|
||||
return Template.instance().currentColor.get() === color;
|
||||
},
|
||||
// #5514: current color as a '#rrggbb' hex for the color-wheel <input>, which
|
||||
// only accepts hex. Named colors map to their palette hex; fall back to green.
|
||||
currentColorHex() {
|
||||
return toHex(Template.instance().currentColor.get()) || '#3cb500';
|
||||
},
|
||||
});
|
||||
|
||||
Template.formLabel.events({
|
||||
@@ -36,6 +42,13 @@ Template.formLabel.events({
|
||||
const selectedColor = paletteData?.color || Template.currentData()?.color || getFallbackLabelColor();
|
||||
tpl.currentColor.set(selectedColor);
|
||||
},
|
||||
// #5514: picking a color from the native color wheel stores a custom hex.
|
||||
'input .js-label-color-wheel'(event, tpl) {
|
||||
const value = event.currentTarget.value;
|
||||
if (isHexColor(value)) {
|
||||
tpl.currentColor.set(value);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.createLabelPopup.helpers({
|
||||
@@ -131,7 +144,16 @@ Template.createLabelPopup.events({
|
||||
? selectedColorIcon.closest('.js-palette-color')
|
||||
: null;
|
||||
const selectedColorData = selectedPaletteNode && Blaze.getData(selectedPaletteNode);
|
||||
const color = selectedColorData?.color || getFallbackLabelColor();
|
||||
// #5514: a named swatch (has the check icon) wins; otherwise fall back to
|
||||
// the custom color-wheel hex, then to the default palette color.
|
||||
let color = selectedColorData?.color;
|
||||
if (!color) {
|
||||
const wheel = templateInstance.find('.js-label-color-wheel');
|
||||
if (wheel && isHexColor(wheel.value)) {
|
||||
color = wheel.value;
|
||||
}
|
||||
}
|
||||
color = color || getFallbackLabelColor();
|
||||
board.addLabel(name, color);
|
||||
Popup.back();
|
||||
},
|
||||
@@ -158,7 +180,16 @@ Template.editLabelPopup.events({
|
||||
? selectedColorIcon.closest('.js-palette-color')
|
||||
: null;
|
||||
const selectedColorData = selectedPaletteNode && Blaze.getData(selectedPaletteNode);
|
||||
const color = selectedColorData?.color || getFallbackLabelColor();
|
||||
// #5514: a named swatch (has the check icon) wins; otherwise fall back to
|
||||
// the custom color-wheel hex, then to the default palette color.
|
||||
let color = selectedColorData?.color;
|
||||
if (!color) {
|
||||
const wheel = templateInstance.find('.js-label-color-wheel');
|
||||
if (wheel && isHexColor(wheel.value)) {
|
||||
color = wheel.value;
|
||||
}
|
||||
}
|
||||
color = color || getFallbackLabelColor();
|
||||
board.editLabel(this._id, name, color);
|
||||
Popup.back();
|
||||
},
|
||||
|
||||
@@ -3,7 +3,8 @@ template(name="minicard")
|
||||
class="{{#if isLinkedCard}}linked-card{{/if}}"
|
||||
class="{{#if isLinkedBoard}}linked-board{{/if}}"
|
||||
class="{{agingClass}}"
|
||||
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
|
||||
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}"
|
||||
style="{{colorStyle}}")
|
||||
if canMoveCard
|
||||
if isTouchScreenOrShowDesktopDragHandles
|
||||
.handle
|
||||
@@ -93,11 +94,11 @@ template(name="minicard")
|
||||
.minicard-labels(class="{{#if hiddenMinicardLabelText}}minicard-labels-no-text{{/if}}")
|
||||
each labels
|
||||
unless hiddenMinicardLabelText
|
||||
span.js-card-label.card-label(class="card-label-{{color}}" title=name)
|
||||
span.js-card-label.card-label(class="{{labelColorClass color}}" style="{{labelColorStyle color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if hiddenMinicardLabelText
|
||||
.minicard-label(class="card-label-{{color}}" title="{{name}}")
|
||||
.minicard-label(class="{{labelColorClass color}}" style="{{labelColorStyle color}}" title="{{name}}")
|
||||
|
||||
.minicard-custom-fields
|
||||
each customFieldsWD
|
||||
|
||||
@@ -6,6 +6,11 @@ import uploadProgressManager from '../../lib/uploadProgressManager';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import ChecklistItems from '/models/checklistItems';
|
||||
import Cards from '/models/cards';
|
||||
import { resolveCoverId } from '/models/lib/linkedCardCover';
|
||||
import {
|
||||
parseChecklistItemTitles,
|
||||
buildChecklistItemPayload,
|
||||
} from '/models/lib/checklistItemTitles';
|
||||
import { normalizeDependencies } from '/models/metadata/dependencies';
|
||||
|
||||
function getMinicardFlag(board, onMinicardField, legacyField, defaultValue) {
|
||||
@@ -164,8 +169,12 @@ Template.minicard.helpers({
|
||||
}
|
||||
},
|
||||
cover() {
|
||||
if (!this.coverId) return null;
|
||||
const attachment = ReactiveCache.getAttachment(this.coverId);
|
||||
// #5666: for a linked card the cover lives on the real card it points at, so
|
||||
// resolve the cover id through it (mirroring getTitle/getDue/...); a plain
|
||||
// card resolves to its own coverId.
|
||||
const coverId = resolveCoverId(this, id => ReactiveCache.getCard(id));
|
||||
if (!coverId) return null;
|
||||
const attachment = ReactiveCache.getAttachment(coverId);
|
||||
if (!attachment) return null;
|
||||
const coverLink = typeof attachment.link === 'function' ? attachment.link() : '';
|
||||
if (!coverLink) return null;
|
||||
@@ -376,6 +385,28 @@ Template.minicardChecklist.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
// #6440: create the checklist item(s) for the minicard add-item form. Shared by
|
||||
// the Save-button click handler and the (rarely reached) form-submit handler.
|
||||
// The Save button needs an explicit click handler because the minicard — and so
|
||||
// the add-item <form> — is rendered inside the `a.minicard-wrapper` anchor, where
|
||||
// the native form `submit` event never reaches the Blaze event map; without this
|
||||
// the "+" add-item on the minicard did nothing. The blank-input guard and the
|
||||
// title parsing live in the pure, unit-tested models/lib/checklistItemTitles.js.
|
||||
function addMinicardChecklistItems(textarea, checklist) {
|
||||
if (!textarea || !checklist) return;
|
||||
const titles = parseChecklistItemTitles(textarea.value);
|
||||
if (titles.length === 0) return;
|
||||
const items = checklist.items();
|
||||
const lastItem = items[items.length - 1] || null;
|
||||
let sortIndex = Utils.calculateIndexData(lastItem, null).base;
|
||||
titles.forEach(title => {
|
||||
ChecklistItems.insert(buildChecklistItemPayload(title, checklist, sortIndex));
|
||||
sortIndex += 1;
|
||||
});
|
||||
textarea.value = '';
|
||||
textarea.focus();
|
||||
}
|
||||
|
||||
Template.minicardChecklist.events({
|
||||
'click .js-convert-checklist-item-to-card'(event) {
|
||||
event.stopPropagation();
|
||||
@@ -417,25 +448,26 @@ Template.minicardChecklist.events({
|
||||
}
|
||||
$form.find('.js-close-inlined-form').trigger('click');
|
||||
},
|
||||
// #6440: explicit click handler for the minicard "+" add-item Save button.
|
||||
// The native form `submit` event does not fire on the minicard (the form is
|
||||
// inside the `a.minicard-wrapper` anchor), so — unlike card-detail — we cannot
|
||||
// rely on `submit .js-add-checklist-item`. This mirrors the already-working
|
||||
// `click .js-submit-edit-checklist-item-form` above.
|
||||
'click .js-submit-add-checklist-item-form'(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
const $form = $(event.currentTarget).closest('form');
|
||||
const textarea = $form.find('textarea.js-add-checklist-item')[0];
|
||||
const formData = Blaze.getData($form[0]) || Template.currentData() || {};
|
||||
addMinicardChecklistItems(textarea, formData.checklist);
|
||||
},
|
||||
// Kept for completeness (e.g. card-detail-style contexts); on the minicard this
|
||||
// rarely fires, so the click handler above is the real path. See #6440.
|
||||
'submit .js-add-checklist-item'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const textarea = tpl.find('textarea.js-add-checklist-item');
|
||||
if (!textarea) return;
|
||||
const title = textarea.value.trim();
|
||||
const data = Template.currentData() || {};
|
||||
const checklist = data.checklist;
|
||||
if (!checklist || !title) return;
|
||||
const items = checklist.items();
|
||||
const lastItem = items[items.length - 1] || null;
|
||||
const sortIndex = Utils.calculateIndexData(lastItem, null).base;
|
||||
ChecklistItems.insert({
|
||||
title,
|
||||
checklistId: checklist._id,
|
||||
cardId: checklist.cardId,
|
||||
sort: sortIndex,
|
||||
});
|
||||
textarea.value = '';
|
||||
textarea.focus();
|
||||
addMinicardChecklistItems(textarea, data.checklist);
|
||||
},
|
||||
'click .js-delete-checklist-item': Popup.afterConfirm('checklistItemDelete', function () {
|
||||
Popup.back();
|
||||
|
||||
@@ -46,7 +46,7 @@ template(name="addCardForm")
|
||||
if getLabels
|
||||
.minicard-labels
|
||||
each getLabels
|
||||
.minicard-label(class="card-label-{{color}}" title="{{name}}")
|
||||
.minicard-label(class="{{labelColorClass color}}" style="{{labelColorStyle color}}" title="{{name}}")
|
||||
textarea.minicard-composer-textarea.js-card-title(autofocus dir="auto")
|
||||
if members.get
|
||||
.minicard-members.js-minicard-composer-members
|
||||
|
||||
@@ -10,6 +10,8 @@ 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 { listCardsSelector } from '/models/lib/swimlaneFilter';
|
||||
import { sortCardsByTitle } from '/models/lib/sortCardsByTitle';
|
||||
import autosize from 'autosize';
|
||||
|
||||
// SubsManager removed for Meteor 3 migration
|
||||
@@ -339,19 +341,21 @@ Template.listBody.helpers({
|
||||
if (!sortBy) {
|
||||
sortBy = defaultSort;
|
||||
}
|
||||
const selector = {
|
||||
listId: Template.currentData()._id,
|
||||
archived: false,
|
||||
};
|
||||
if (swimlaneId) {
|
||||
// Fallback: also show cards with no swimlaneId (null/empty) so that
|
||||
// pre-migration / orphaned cards are always visible without a DB migration.
|
||||
selector.$or = [
|
||||
{ swimlaneId },
|
||||
{ swimlaneId: null }, // null covers null AND missing field
|
||||
{ swimlaneId: '' }, // empty string from shared-lists era
|
||||
];
|
||||
}
|
||||
// #6441: build the swimlane-membership fallback as a single `swimlaneId:
|
||||
// { $in: [...] }` clause (via the shared, unit-tested helper) instead of a
|
||||
// bare top-level `$or`, so it never competes with the board Filter's own
|
||||
// top-level `$or` (labels/members/exceptions) and the label filter applies
|
||||
// board-wide across every swimlane.
|
||||
// #6443: in the first swimlane also surface orphaned cards (a swimlaneId
|
||||
// pointing at a deleted swimlane) so they are not invisible in swimlane view.
|
||||
const list = Template.currentData();
|
||||
const selector = listCardsSelector(
|
||||
list._id,
|
||||
swimlaneId,
|
||||
list.orphanedCardsSwimlaneIds
|
||||
? list.orphanedCardsSwimlaneIds(swimlaneId)
|
||||
: undefined,
|
||||
);
|
||||
const ret = ReactiveCache.getCards(Filter.mongoSelector(selector), {
|
||||
// sort: ['sort'],
|
||||
sort: sortBy,
|
||||
@@ -717,7 +721,9 @@ Template.linkCardPopup.helpers({
|
||||
if (tpl.selectedListId.get()) selector.listId = tpl.selectedListId.get();
|
||||
|
||||
const ret = ReactiveCache.getCards(selector, { sort: { sort: 1 } });
|
||||
return ret;
|
||||
// #5394: sort the Cards dropdown alphabetically by title
|
||||
// (case-insensitive) so a card can be found on boards with many cards.
|
||||
return sortCardsByTitle(ret);
|
||||
},
|
||||
|
||||
isTitleDefault(title) {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
template(name="listHeader")
|
||||
.list-header.js-list-header.nodragscroll(
|
||||
class="{{#if limitToShowCardsCount}}list-header-card-count{{/if}}"
|
||||
class=colorClass)
|
||||
class=colorClass
|
||||
style=colorStyle)
|
||||
//- #459: keyboard/screen-reader list reordering (visually hidden, focusable).
|
||||
.list-move-buttons.sr-only
|
||||
a.js-list-move-left(href="#" role="button" aria-label="{{_ 'move-list-left'}}") {{_ 'move-list-left'}}
|
||||
@@ -279,6 +280,10 @@ template(name="setListColorPopup")
|
||||
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
|
||||
if(isSelected color)
|
||||
i.fa.fa-check
|
||||
// #5514: native color wheel for picking a custom RGB / hex color
|
||||
.color-wheel-wrap
|
||||
label(for="listColorWheel") {{_ 'custom-color'}}
|
||||
input.js-list-color-wheel#listColorWheel(type="color" value=currentColorHex title="{{_ 'custom-color'}}")
|
||||
button.primary.confirm.js-submit {{_ 'save'}}
|
||||
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import dragscroll from '@wekanteam/dragscroll';
|
||||
import { BoardSwimlaneListDialog } from '/client/lib/dialogWithBoardSwimlaneList';
|
||||
import Cards from '/models/cards';
|
||||
import { LIST_COLORS } from '/models/metadata/colors';
|
||||
import { isHexColor, toHex } from '/models/lib/contrastColor';
|
||||
import { MultiSelection } from '/client/lib/multiSelection';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
|
||||
@@ -476,6 +477,10 @@ Template.setListColorPopup.helpers({
|
||||
return tpl.currentColor.get() === color;
|
||||
}
|
||||
},
|
||||
// #5514: current color as a '#rrggbb' hex for the native color wheel <input>.
|
||||
currentColorHex() {
|
||||
return toHex(Template.instance().currentColor.get()) || '#0079bf';
|
||||
},
|
||||
});
|
||||
|
||||
Template.setListColorPopup.events({
|
||||
@@ -483,6 +488,13 @@ Template.setListColorPopup.events({
|
||||
const paletteData = Blaze.getData(event.currentTarget);
|
||||
tpl.currentColor.set(paletteData?.color);
|
||||
},
|
||||
// #5514: picking from the native color wheel stores a custom hex.
|
||||
'input .js-list-color-wheel'(event, tpl) {
|
||||
const value = event.currentTarget.value;
|
||||
if (isHexColor(value)) {
|
||||
tpl.currentColor.set(value);
|
||||
}
|
||||
},
|
||||
async 'submit form'(event, tpl) {
|
||||
event.preventDefault();
|
||||
try {
|
||||
|
||||
@@ -94,7 +94,7 @@ template(name="myCards")
|
||||
td
|
||||
.div
|
||||
each label in card.labelIds
|
||||
span.card-label(class="card-label-{{labelColor board label}}" title=name)
|
||||
span.card-label(class="{{labelColorClass (labelColor board label)}}" style="{{labelColorStyle (labelColor board label)}}" title=name)
|
||||
| {{labelName board label}}
|
||||
td
|
||||
if card.dueAt
|
||||
|
||||
@@ -100,8 +100,15 @@ template(name="cardActions")
|
||||
option(value="receivedAt") {{_'r-df-received-at'}}
|
||||
div.trigger-dropdown
|
||||
input(id="reldate-days",type="number",value="0")
|
||||
div.trigger-dropdown
|
||||
select(id="reldate-unit")
|
||||
option(value="minutes") {{_'r-unit-minutes'}}
|
||||
option(value="hours") {{_'r-unit-hours'}}
|
||||
option(value="days",selected="selected") {{_'r-unit-days'}}
|
||||
option(value="weeks") {{_'r-unit-weeks'}}
|
||||
option(value="months") {{_'r-unit-months'}}
|
||||
div.trigger-text
|
||||
| {{_'r-days-after'}}
|
||||
| {{_'r-later'}}
|
||||
div.trigger-button.js-set-reldate-action.js-goto-rules
|
||||
i.fa.fa-plus
|
||||
|
||||
|
||||
@@ -238,12 +238,16 @@ Template.cardActions.events({
|
||||
const boardId = Session.get('currentBoard');
|
||||
const desc = Utils.getTriggerActionDesc(event, tpl);
|
||||
const dateField = tpl.find('#reldate-datefield').value;
|
||||
// `days` keeps its name for backward compatibility: it is the numeric
|
||||
// amount, interpreted together with `unit` (minutes/hours/days/weeks/months).
|
||||
const days = parseInt(tpl.find('#reldate-days').value, 10) || 0;
|
||||
const unit = tpl.find('#reldate-unit').value;
|
||||
const triggerId = Triggers.insert(trigger);
|
||||
const actionId = Actions.insert({
|
||||
actionType: 'setDateRelative',
|
||||
dateField,
|
||||
days,
|
||||
unit,
|
||||
boardId,
|
||||
desc,
|
||||
});
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import Actions from '/models/actions';
|
||||
import Rules from '/models/rules';
|
||||
import Triggers from '/models/triggers';
|
||||
|
||||
function boardRuleIds() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
@@ -62,9 +60,10 @@ Template.rulesList.events({
|
||||
getSelected().forEach(ruleId => {
|
||||
const rule = ReactiveCache.getRule(ruleId);
|
||||
if (rule) {
|
||||
Rules.remove(rule._id);
|
||||
Actions.remove(rule.actionId);
|
||||
Triggers.remove(rule.triggerId);
|
||||
// Delete the rule + its trigger + action server-side (see
|
||||
// server/rulesButton.js `rules.deleteRule`): three client-side
|
||||
// Collection.remove() calls were rejected with 403 "Access denied".
|
||||
Meteor.call('rules.deleteRule', rule._id);
|
||||
}
|
||||
});
|
||||
setSelected([]);
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { FlowRouter } from 'meteor/ostrio:flow-router-extra';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import Actions from '/models/actions';
|
||||
import Rules from '/models/rules';
|
||||
import Triggers from '/models/triggers';
|
||||
|
||||
Template.rulesMain.onCreated(function () {
|
||||
this.rulesCurrentTab = new ReactiveVar('rulesList');
|
||||
@@ -83,9 +80,12 @@ function sanitizeObject(obj) {
|
||||
Template.rulesMain.events({
|
||||
'click .js-delete-rule'() {
|
||||
const rule = Template.currentData();
|
||||
Rules.remove(rule._id);
|
||||
Actions.remove(rule.actionId);
|
||||
Triggers.remove(rule.triggerId);
|
||||
// Delete the rule + its trigger + action in one server call. Doing this
|
||||
// client-side as three separate Collection.remove() calls failed with 403
|
||||
// "Access denied" whenever a trigger/action document's boardId did not
|
||||
// resolve to a board in the allow() rule; the method authorizes once and
|
||||
// removes all three server-side.
|
||||
Meteor.call('rules.deleteRule', rule._id);
|
||||
},
|
||||
'click .js-goto-trigger'(event, tpl) {
|
||||
event.preventDefault();
|
||||
|
||||
@@ -12,7 +12,7 @@ template(name="rulesWorkflow")
|
||||
.workflow-node.workflow-node-when
|
||||
span.workflow-node-label {{_ 'r-when'}}
|
||||
span.workflow-node-text= builderTriggerLabel
|
||||
a.workflow-slot-clear.js-clear-when(title="{{_ 'remove'}}") ✕
|
||||
a.workflow-slot-clear.js-clear-when(title="{{_ 'r-remove'}}") ✕
|
||||
else
|
||||
span.workflow-slot-placeholder {{_ 'r-when'}}: {{_ 'r-drop-trigger'}}
|
||||
.workflow-arrow
|
||||
@@ -22,7 +22,7 @@ template(name="rulesWorkflow")
|
||||
.workflow-node.workflow-node-then
|
||||
span.workflow-node-label {{_ 'r-action'}}
|
||||
span.workflow-node-text= builderActionLabel
|
||||
a.workflow-slot-clear.js-clear-then(title="{{_ 'remove'}}") ✕
|
||||
a.workflow-slot-clear.js-clear-then(title="{{_ 'r-remove'}}") ✕
|
||||
else
|
||||
span.workflow-slot-placeholder {{_ 'r-action'}}: {{_ 'r-drop-action'}}
|
||||
.workflow-builder-controls
|
||||
|
||||
@@ -12,31 +12,44 @@ import Triggers from '/models/triggers';
|
||||
// can be built entirely by dragging. Parameterized rules (specific list, label,
|
||||
// member, schedule time, …) are still created with the form builder on the
|
||||
// List view.
|
||||
// Each palette entry carries an i18n `labelKey` (translated at render time via
|
||||
// TAPi18n.__) instead of a hardcoded English string, so the whole workflow view
|
||||
// follows the UI language. `labelParams` is passed to TAPi18n.__ for labels that
|
||||
// need a placeholder (e.g. the scheduled time). Existing rule keys are reused
|
||||
// where they fit; workflow-only labels use new `r-w-*` keys (see en.i18n.json).
|
||||
const TRIGGER_PALETTE = [
|
||||
{ label: 'Card is created', doc: { activityType: 'createCard', listName: '*', swimlaneName: '*', cardTitle: '*', userId: '*' } },
|
||||
{ label: 'Card is moved', doc: { activityType: 'moveCard', listName: '*', oldListName: '*', swimlaneName: '*', cardTitle: '*', userId: '*' } },
|
||||
{ label: 'Card is archived', doc: { activityType: 'archivedCard', userId: '*' } },
|
||||
{ label: 'Card is unarchived', doc: { activityType: 'restoredCard', userId: '*' } },
|
||||
{ label: 'Any label is added', doc: { activityType: 'addedLabel', labelId: '*', userId: '*' } },
|
||||
{ label: 'Any label is removed', doc: { activityType: 'removedLabel', labelId: '*', userId: '*' } },
|
||||
{ label: 'A member is added', doc: { activityType: 'joinMember', username: '*', userId: '*' } },
|
||||
{ label: 'A member is removed', doc: { activityType: 'unjoinMember', username: '*', userId: '*' } },
|
||||
{ label: 'A checklist is added', doc: { activityType: 'addChecklist', checklistName: '*', userId: '*' } },
|
||||
{ label: 'An attachment is added', doc: { activityType: 'addAttachment', userId: '*' } },
|
||||
{ label: 'Every day at 09:00', doc: { activityType: 'scheduledTrigger', scheduleKind: 'calendar', scheduleType: 'daily', atTime: '09:00', listName: '*', swimlaneName: '*' } },
|
||||
{ labelKey: 'r-w-card-created', doc: { activityType: 'createCard', listName: '*', swimlaneName: '*', cardTitle: '*', userId: '*' } },
|
||||
{ labelKey: 'r-when-a-card-is-moved', doc: { activityType: 'moveCard', listName: '*', oldListName: '*', swimlaneName: '*', cardTitle: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-card-archived', doc: { activityType: 'archivedCard', userId: '*' } },
|
||||
{ labelKey: 'r-w-card-unarchived', doc: { activityType: 'restoredCard', userId: '*' } },
|
||||
{ labelKey: 'r-w-label-added', doc: { activityType: 'addedLabel', labelId: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-label-removed', doc: { activityType: 'removedLabel', labelId: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-member-added', doc: { activityType: 'joinMember', username: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-member-removed', doc: { activityType: 'unjoinMember', username: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-checklist-added', doc: { activityType: 'addChecklist', checklistName: '*', userId: '*' } },
|
||||
{ labelKey: 'r-w-attachment-added', doc: { activityType: 'addAttachment', userId: '*' } },
|
||||
{ labelKey: 'r-w-every-day-at', labelParams: { time: '09:00' }, doc: { activityType: 'scheduledTrigger', scheduleKind: 'calendar', scheduleType: 'daily', atTime: '09:00', listName: '*', swimlaneName: '*' } },
|
||||
];
|
||||
|
||||
const ACTION_PALETTE = [
|
||||
{ label: 'Move card to top', doc: { actionType: 'moveCardToTop', listName: '*', swimlaneName: '*' } },
|
||||
{ label: 'Move card to bottom', doc: { actionType: 'moveCardToBottom', listName: '*', swimlaneName: '*' } },
|
||||
{ label: 'Archive card', doc: { actionType: 'archive' } },
|
||||
{ label: 'Unarchive card', doc: { actionType: 'unarchive' } },
|
||||
{ label: 'Mark card complete', doc: { actionType: 'markCardComplete' } },
|
||||
{ label: 'Mark card incomplete', doc: { actionType: 'markCardIncomplete' } },
|
||||
{ label: 'Remove all members', doc: { actionType: 'removeMember', username: '*' } },
|
||||
{ label: 'Set received date to now', doc: { actionType: 'setDate', dateField: 'receivedAt' } },
|
||||
{ labelKey: 'r-d-move-to-top-gen', doc: { actionType: 'moveCardToTop', listName: '*', swimlaneName: '*' } },
|
||||
{ labelKey: 'r-d-move-to-bottom-gen', doc: { actionType: 'moveCardToBottom', listName: '*', swimlaneName: '*' } },
|
||||
{ labelKey: 'r-d-archive', doc: { actionType: 'archive' } },
|
||||
{ labelKey: 'r-d-unarchive', doc: { actionType: 'unarchive' } },
|
||||
{ labelKey: 'r-mark-complete', doc: { actionType: 'markCardComplete' } },
|
||||
{ labelKey: 'r-mark-incomplete', doc: { actionType: 'markCardIncomplete' } },
|
||||
{ labelKey: 'r-remove-all', doc: { actionType: 'removeMember', username: '*' } },
|
||||
{ labelKey: 'r-w-set-received-now', doc: { actionType: 'setDate', dateField: 'receivedAt' } },
|
||||
];
|
||||
|
||||
// Translate a palette entry's label for display / storage in the current UI
|
||||
// language (matches the classic Rules view, which also stores already-translated
|
||||
// description text at creation time).
|
||||
function paletteLabel(entry) {
|
||||
if (!entry) return '';
|
||||
return TAPi18n.__(entry.labelKey, entry.labelParams);
|
||||
}
|
||||
|
||||
Template.rulesWorkflow.onCreated(function () {
|
||||
this.builderTrigger = new ReactiveVar(null);
|
||||
this.builderAction = new ReactiveVar(null);
|
||||
@@ -52,24 +65,22 @@ Template.rulesWorkflow.helpers({
|
||||
return Utils.getCurrentBoard();
|
||||
},
|
||||
triggerPalette() {
|
||||
return TRIGGER_PALETTE.map((t, idx) => ({ idx, label: t.label }));
|
||||
return TRIGGER_PALETTE.map((t, idx) => ({ idx, label: paletteLabel(t) }));
|
||||
},
|
||||
actionPalette() {
|
||||
return ACTION_PALETTE.map((a, idx) => ({ idx, label: a.label }));
|
||||
return ACTION_PALETTE.map((a, idx) => ({ idx, label: paletteLabel(a) }));
|
||||
},
|
||||
builderTrigger() {
|
||||
return Template.instance().builderTrigger.get();
|
||||
},
|
||||
builderTriggerLabel() {
|
||||
const t = Template.instance().builderTrigger.get();
|
||||
return t ? t.label : '';
|
||||
return paletteLabel(Template.instance().builderTrigger.get());
|
||||
},
|
||||
builderAction() {
|
||||
return Template.instance().builderAction.get();
|
||||
},
|
||||
builderActionLabel() {
|
||||
const a = Template.instance().builderAction.get();
|
||||
return a ? a.label : '';
|
||||
return paletteLabel(Template.instance().builderAction.get());
|
||||
},
|
||||
createDisabled() {
|
||||
const tpl = Template.instance();
|
||||
@@ -96,9 +107,11 @@ function persistRule(tpl) {
|
||||
if (!t || !a) return;
|
||||
const boardId = Session.get('currentBoard');
|
||||
const titleField = tpl.find('.js-workflow-rule-title');
|
||||
const title = (titleField.value || '').trim() || `${t.label} → ${a.label}`;
|
||||
const triggerId = Triggers.insert({ ...t.doc, boardId, desc: t.label });
|
||||
const actionId = Actions.insert({ ...a.doc, boardId, desc: a.label });
|
||||
const tLabel = paletteLabel(t);
|
||||
const aLabel = paletteLabel(a);
|
||||
const title = (titleField.value || '').trim() || `${tLabel} → ${aLabel}`;
|
||||
const triggerId = Triggers.insert({ ...t.doc, boardId, desc: tLabel });
|
||||
const actionId = Actions.insert({ ...a.doc, boardId, desc: aLabel });
|
||||
Rules.insert({ title, triggerId, actionId, boardId });
|
||||
tpl.builderTrigger.set(null);
|
||||
tpl.builderAction.set(null);
|
||||
@@ -140,7 +153,7 @@ Template.rulesWorkflow.events({
|
||||
const a = ACTION_PALETTE[tpl.dragItem.idx];
|
||||
const boardId = Session.get('currentBoard');
|
||||
const oldActionId = rule.actionId;
|
||||
const newActionId = Actions.insert({ ...a.doc, boardId, desc: a.label });
|
||||
const newActionId = Actions.insert({ ...a.doc, boardId, desc: paletteLabel(a) });
|
||||
Rules.update(ruleId, { $set: { actionId: newActionId } });
|
||||
if (oldActionId) Actions.remove(oldActionId);
|
||||
tpl.dragItem = null;
|
||||
@@ -163,8 +176,9 @@ Template.rulesWorkflow.events({
|
||||
const ruleId = node && node.dataset.ruleId;
|
||||
const rule = ReactiveCache.getRule(ruleId);
|
||||
if (!rule) return;
|
||||
Rules.remove(rule._id);
|
||||
Actions.remove(rule.actionId);
|
||||
Triggers.remove(rule.triggerId);
|
||||
// Delete the rule + its trigger + action server-side (see
|
||||
// server/rulesButton.js `rules.deleteRule`): three client-side
|
||||
// Collection.remove() calls were rejected with 403 "Access denied".
|
||||
Meteor.call('rules.deleteRule', rule._id);
|
||||
},
|
||||
});
|
||||
@@ -378,3 +378,62 @@ table td:first-child {
|
||||
.roles-settings .roles-description {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Admin Panel > People > Domains table: search + column sort + pagination,
|
||||
matching the Board Table view / other admin tables. */
|
||||
.domain-controls {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.domain-controls input.js-domain-search {
|
||||
flex: 1 1 auto;
|
||||
height: 30px;
|
||||
padding: 0 8px;
|
||||
border: 1px solid #bbb;
|
||||
border-radius: 0.4vw;
|
||||
}
|
||||
|
||||
.domain-controls button.js-domain-search-button {
|
||||
height: 30px;
|
||||
padding: 0 12px;
|
||||
border: 1px solid #bbb;
|
||||
background: #fff;
|
||||
border-radius: 0.4vw;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.domain-pagination {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.domain-pagination button {
|
||||
min-width: 32px;
|
||||
height: 30px;
|
||||
padding: 0 10px;
|
||||
border: 1px solid #bbb;
|
||||
background: #fff;
|
||||
border-radius: 0.4vw;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.domain-pagination button.disabled {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.domain-page-info {
|
||||
min-width: 72px;
|
||||
text-align: center;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
th.js-domain-sort {
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
@@ -122,7 +122,7 @@ template(name="people")
|
||||
else if templatesSetting.get
|
||||
+templatesGeneral
|
||||
else if domainSetting.get
|
||||
+domainGeneral(domainList=domainList)
|
||||
+domainGeneral
|
||||
|
||||
|
||||
template(name="orgGeneral")
|
||||
@@ -239,11 +239,18 @@ template(name="selectAllUser")
|
||||
input.allUserChkBox(type="checkbox", id="chkSelectAll")
|
||||
|
||||
template(name="domainGeneral")
|
||||
.domain-controls
|
||||
input.js-domain-search(type="text" placeholder="{{_ 'search'}}" aria-label="{{_ 'search'}}")
|
||||
button.js-domain-search-button(type="button") {{_ 'search'}}
|
||||
.domain-pagination
|
||||
button.js-domain-prev-page(type="button" class="{{#unless hasPrevPage}}disabled{{/unless}}" aria-label="{{_ 'previous'}}") {{_ 'previous'}}
|
||||
span.domain-page-info {{currentPage}} / {{totalPages}}
|
||||
button.js-domain-next-page(type="button" class="{{#unless hasNextPage}}disabled{{/unless}}" aria-label="{{_ 'next'}}") {{_ 'next'}}
|
||||
table
|
||||
thead
|
||||
tr
|
||||
th {{_ 'domain'}}
|
||||
th {{_ 'domain-user-count'}}
|
||||
th.js-domain-sort(scope="col" data-sort="domain") {{_ 'domain'}} {{domainSortIndicator 'domain'}}
|
||||
th.js-domain-sort(scope="col" data-sort="count") {{_ 'domain-user-count'}} {{domainSortIndicator 'count'}}
|
||||
tbody
|
||||
if domainList.length
|
||||
each domainList
|
||||
|
||||
@@ -14,6 +14,7 @@ import InviteToBoardRolesSettings, {
|
||||
const orgsPerPage = 25;
|
||||
const teamsPerPage = 25;
|
||||
const usersPerPage = 25;
|
||||
const domainsPerPage = 25;
|
||||
let userOrgsTeamsAction = ""; //poosible actions 'addOrg', 'addTeam', 'removeOrg' or 'removeTeam' when adding or modifying a user
|
||||
let selectedUserChkBoxUserIds = [];
|
||||
|
||||
@@ -28,9 +29,9 @@ Template.people.onCreated(function () {
|
||||
this.lockedUsersSetting = new ReactiveVar(false);
|
||||
this.rolesSetting = new ReactiveVar(false);
|
||||
this.templatesSetting = new ReactiveVar(false);
|
||||
// #5850: Admin Panel > People > Domains tab.
|
||||
// #5850: Admin Panel > People > Domains tab. The domains table itself
|
||||
// (domainGeneral) now owns its data via getDomainsWithUserCountsPage.
|
||||
this.domainSetting = new ReactiveVar(false);
|
||||
this.domains = new ReactiveVar([]);
|
||||
this.subscribe('inviteToBoardRolesSettings');
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
this.findTeamsOptions = new ReactiveVar({});
|
||||
@@ -205,12 +206,9 @@ Template.people.onCreated(function () {
|
||||
this.templatesSetting.set('templates-setting' === targetID);
|
||||
this.domainSetting.set('domains-setting' === targetID);
|
||||
|
||||
// #5850: load the domains + per-domain user counts when the tab opens.
|
||||
if ('domains-setting' === targetID) {
|
||||
Meteor.call('getDomainsWithUserCounts', (err, res) => {
|
||||
if (!err) this.domains.set(res || []);
|
||||
});
|
||||
}
|
||||
// The Domains table (domainGeneral) now fetches its own single page from
|
||||
// getDomainsWithUserCountsPage (server-side search / sort / pagination), so
|
||||
// the parent no longer eagerly loads every domain into the browser.
|
||||
|
||||
// When switching to locked users tab, refresh the locked users list
|
||||
if ('locked-users-setting' === targetID) {
|
||||
@@ -292,9 +290,6 @@ Template.people.helpers({
|
||||
domainSetting() {
|
||||
return Template.instance().domainSetting;
|
||||
},
|
||||
domainList() {
|
||||
return Template.instance().domains.get();
|
||||
},
|
||||
orgList() {
|
||||
const tpl = Template.instance();
|
||||
// The 'org' publication already returns only the current page (server-side
|
||||
@@ -1897,3 +1892,96 @@ Template.settingsUserPopup.helpers({
|
||||
return Template.instance().errorMessage.get();
|
||||
},
|
||||
});
|
||||
|
||||
// Admin Panel > People > Domains table. Self-contained (like the Board Table
|
||||
// view): it keeps its own search / sort / page state and fetches only ONE page
|
||||
// from the server method getDomainsWithUserCountsPage, so the whole domain list
|
||||
// is never loaded into the browser.
|
||||
Template.domainGeneral.onCreated(function () {
|
||||
this.searchQuery = new ReactiveVar('');
|
||||
this.sortField = new ReactiveVar('domain'); // domain | count
|
||||
this.sortDirection = new ReactiveVar(1); // 1 ascending, -1 descending
|
||||
this.page = new ReactiveVar(1);
|
||||
this.pageData = new ReactiveVar({ rows: [], total: 0, totalPages: 1 });
|
||||
|
||||
this.autorun(() => {
|
||||
const params = {
|
||||
search: this.searchQuery.get(),
|
||||
sortField: this.sortField.get(),
|
||||
sortDirection: this.sortDirection.get(),
|
||||
page: this.page.get(),
|
||||
perPage: domainsPerPage,
|
||||
};
|
||||
Meteor.call('getDomainsWithUserCountsPage', params, (err, res) => {
|
||||
if (!err && res) {
|
||||
this.pageData.set(res);
|
||||
// Server clamps the page into range; mirror that so the controls agree.
|
||||
if (typeof res.page === 'number' && res.page !== this.page.get()) {
|
||||
this.page.set(res.page);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Template.domainGeneral.helpers({
|
||||
domainList() {
|
||||
return Template.instance().pageData.get().rows;
|
||||
},
|
||||
currentPage() {
|
||||
return Template.instance().page.get();
|
||||
},
|
||||
totalPages() {
|
||||
return Template.instance().pageData.get().totalPages || 1;
|
||||
},
|
||||
hasPrevPage() {
|
||||
return Template.instance().page.get() > 1;
|
||||
},
|
||||
hasNextPage() {
|
||||
const tpl = Template.instance();
|
||||
return tpl.page.get() < (tpl.pageData.get().totalPages || 1);
|
||||
},
|
||||
// Excel-like sort arrow on the active column, matching the Board Table view.
|
||||
domainSortIndicator(field) {
|
||||
const tpl = Template.instance();
|
||||
if (tpl.sortField.get() !== field) return '';
|
||||
return tpl.sortDirection.get() === 1 ? '▲' : '▼';
|
||||
},
|
||||
});
|
||||
|
||||
Template.domainGeneral.events({
|
||||
'click .js-domain-search-button'(event, tpl) {
|
||||
event.preventDefault();
|
||||
tpl.searchQuery.set(tpl.$('.js-domain-search').val() || '');
|
||||
tpl.page.set(1);
|
||||
},
|
||||
'keydown .js-domain-search'(event, tpl) {
|
||||
if (event.keyCode === 13) {
|
||||
event.preventDefault();
|
||||
tpl.searchQuery.set(tpl.$('.js-domain-search').val() || '');
|
||||
tpl.page.set(1);
|
||||
}
|
||||
},
|
||||
'click .js-domain-prev-page'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const current = tpl.page.get();
|
||||
if (current > 1) tpl.page.set(current - 1);
|
||||
},
|
||||
'click .js-domain-next-page'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const current = tpl.page.get();
|
||||
if (current < (tpl.pageData.get().totalPages || 1)) tpl.page.set(current + 1);
|
||||
},
|
||||
'click .js-domain-sort'(event, tpl) {
|
||||
event.preventDefault();
|
||||
const field = event.currentTarget.dataset.sort;
|
||||
if (!field) return;
|
||||
if (tpl.sortField.get() === field) {
|
||||
tpl.sortDirection.set(tpl.sortDirection.get() * -1);
|
||||
} else {
|
||||
tpl.sortField.set(field);
|
||||
tpl.sortDirection.set(1);
|
||||
}
|
||||
tpl.page.set(1);
|
||||
},
|
||||
});
|
||||
@@ -55,9 +55,14 @@ template(name='homeSidebar')
|
||||
i.fa.fa-comment-o
|
||||
| {{_ 'activities'}}
|
||||
|
||||
a.flex.js-toggle-show-activities(title="{{_ 'show-activities'}}")
|
||||
i.fa(class="{{#if showActivities}}fa-check{{else}}fa-square-o{{/if}}")
|
||||
span {{_ 'show-activities'}}
|
||||
if showActivities
|
||||
a.flex.activities-eye-toggle.js-toggle-show-activities(title="{{_ 'hide-activities'}}" aria-label="{{_ 'hide-activities'}}")
|
||||
i.fa.fa-eye.eye-icon
|
||||
span {{_ 'hide-activities'}}
|
||||
else
|
||||
a.flex.activities-eye-toggle.js-toggle-show-activities(title="{{_ 'show-activities'}}" aria-label="{{_ 'show-activities'}}")
|
||||
i.fa.fa-eye-slash.eye-slash-icon
|
||||
span {{_ 'show-activities'}}
|
||||
+activities(mode="board")
|
||||
|
||||
template(name="membersWidget")
|
||||
@@ -823,7 +828,7 @@ template(name="labelsWidget")
|
||||
| {{_ 'labels'}}
|
||||
.board-widget-content
|
||||
each currentBoard.labels
|
||||
a.card-label(class="card-label-{{color}}"
|
||||
a.card-label(class="{{labelColorClass color}}" style="{{labelColorStyle color}}"
|
||||
class="{{#if currentUser.isNotCommentOnly}}{{#if currentUser.isNotWorker}}js-label{{/if}}{{/if}}")
|
||||
span.card-label-name
|
||||
+viewer
|
||||
|
||||
@@ -29,7 +29,7 @@ template(name="filterSidebar")
|
||||
each currentBoard.labels
|
||||
li
|
||||
a.name.js-toggle-label-filter(data-filter-id="{{_id}}")
|
||||
span.card-label.square(class="card-label-{{color}}")
|
||||
span.card-label.square(class="{{labelColorClass color}}" style="{{labelColorStyle color}}")
|
||||
span.sidebar-list-item-description
|
||||
if name
|
||||
= name
|
||||
@@ -188,7 +188,7 @@ template(name="multiselectionSidebar")
|
||||
each currentBoard.labels
|
||||
li
|
||||
a.name.js-toggle-label-multiselection
|
||||
span.card-label.square(class="card-label-{{color}}")
|
||||
span.card-label.square(class="{{labelColorClass color}}" style="{{labelColorStyle color}}")
|
||||
span.sidebar-list-item-description
|
||||
if name
|
||||
= name
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="swimlaneHeader")
|
||||
.swimlane-header-wrap.js-swimlane-header(class=colorClass title="{{_ 'rename'}}")
|
||||
.swimlane-header-wrap.js-swimlane-header(class=colorClass style=colorStyle title="{{_ 'rename'}}")
|
||||
if this.isTemplateContainer
|
||||
+swimlaneFixedHeader(this)
|
||||
else
|
||||
@@ -120,6 +120,10 @@ template(name="setSwimlaneColorPopup")
|
||||
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
|
||||
if(isSelected color)
|
||||
i.fa.fa-check
|
||||
// #5514: native color wheel for picking a custom RGB / hex color
|
||||
.flush-left.color-wheel-wrap
|
||||
label(for="swimlaneColorWheel") {{_ 'custom-color'}}
|
||||
input.js-swimlane-color-wheel#swimlaneColorWheel(type="color" value=currentColorHex title="{{_ 'custom-color'}}")
|
||||
// Buttons aligned left too
|
||||
.flush-left
|
||||
button.primary.confirm.js-submit(style="margin-inline-start:0") {{_ 'save'}}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
import { SWIMLANE_COLORS } from '/models/metadata/colors';
|
||||
import { isHexColor, toHex } from '/models/lib/contrastColor';
|
||||
import Swimlanes from '/models/swimlanes';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
const { calculateIndexData } = Utils;
|
||||
@@ -166,6 +167,10 @@ Template.setSwimlaneColorPopup.helpers({
|
||||
isSelected(color) {
|
||||
return Template.instance().currentColor.get() === color;
|
||||
},
|
||||
// #5514: current color as a '#rrggbb' hex for the native color wheel <input>.
|
||||
currentColorHex() {
|
||||
return toHex(Template.instance().currentColor.get()) || '#0079bf';
|
||||
},
|
||||
});
|
||||
|
||||
Template.setSwimlaneColorPopup.events({
|
||||
@@ -178,6 +183,13 @@ Template.setSwimlaneColorPopup.events({
|
||||
const paletteData = Blaze.getData(event.currentTarget);
|
||||
tpl.currentColor.set(paletteData?.color);
|
||||
},
|
||||
// #5514: picking from the native color wheel stores a custom hex.
|
||||
'input .js-swimlane-color-wheel'(event, tpl) {
|
||||
const value = event.currentTarget.value;
|
||||
if (isHexColor(value)) {
|
||||
tpl.currentColor.set(value);
|
||||
}
|
||||
},
|
||||
async 'click .js-submit'(event, tpl) {
|
||||
event.preventDefault();
|
||||
await tpl.currentSwimlane.setColor(tpl.currentColor.get());
|
||||
|
||||
@@ -29,6 +29,27 @@ import {
|
||||
calendar,
|
||||
} from '/imports/lib/dateUtils';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { isHexColor, contrastText } from '/models/lib/contrastColor';
|
||||
|
||||
// #5514: a color (label / list / swimlane / card) may be either a named palette
|
||||
// color rendered via a CSS class (e.g. `card-label-green`) or a custom
|
||||
// '#rrggbb' hex chosen from the color wheel. For a hex value there is no CSS
|
||||
// class, so we emit an inline `background-color` plus an automatically readable
|
||||
// text `color` (contrastText). These helpers let templates keep the class path
|
||||
// for named colors and switch to inline styles for hex.
|
||||
|
||||
// Class for a label chip: `card-label-<name>` for named colors, empty for hex.
|
||||
Blaze.registerHelper('labelColorClass', color =>
|
||||
isHexColor(color) ? '' : `card-label-${color}`,
|
||||
);
|
||||
|
||||
// Inline style for a label chip: background + readable text for a hex color,
|
||||
// empty for a named color (its CSS class already sets both).
|
||||
Blaze.registerHelper('labelColorStyle', color =>
|
||||
isHexColor(color)
|
||||
? `background-color:${color};color:${contrastText(color)};`
|
||||
: '',
|
||||
);
|
||||
|
||||
Blaze.registerHelper('currentBoard', () => {
|
||||
const ret = Utils.getCurrentBoard();
|
||||
|
||||
+27
-101
@@ -4,6 +4,7 @@ import { Tracker } from 'meteor/tracker';
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { EscapeActions } from '/client/lib/escapeActions';
|
||||
import { Utils } from '/client/lib/utils';
|
||||
import { computePopupOffset } from '/client/lib/popupOffset';
|
||||
|
||||
window.Popup = new (class {
|
||||
constructor() {
|
||||
@@ -222,108 +223,33 @@ window.Popup = new (class {
|
||||
return () => {
|
||||
Utils.windowResizeDep.depend();
|
||||
|
||||
if (Utils.isMiniScreen()) return { left: 0, top: 0 };
|
||||
// #5667: read the current page scroll and the opener's document offset,
|
||||
// then delegate the geometry to the pure, unit-tested computePopupOffset.
|
||||
// It lays the popup out in VIEWPORT coordinates — so a date-picker opened
|
||||
// low on a scrolled page stays fully visible instead of extending past the
|
||||
// visible area — and returns document coordinates for the absolute style.
|
||||
const hasOpener = !!($element && $element.length);
|
||||
const offset = hasOpener ? $element.offset() : null;
|
||||
const opener = hasOpener
|
||||
? { top: offset.top, left: offset.left, height: $element.outerHeight() }
|
||||
: null;
|
||||
|
||||
const viewportWidth = $(window).width();
|
||||
const viewportHeight = $(window).height();
|
||||
const viewportPadding = 10;
|
||||
// Calculate actual popup width based on CSS: min(380px, 55vw)
|
||||
const popupWidth = Math.min(380, viewportWidth * 0.55);
|
||||
|
||||
// Card details popup: dock it to the top of the viewport so it overlays
|
||||
// the global and board header bars (its z-index already sits above them)
|
||||
// instead of opening downward from the clicked minicard.
|
||||
if (popupName === 'cardDetailsPopup') {
|
||||
const cardWidth = Math.min(600, viewportWidth * 0.8);
|
||||
const centeredLeft = (viewportWidth - cardWidth) / 2;
|
||||
// top is forced to 0 in CSS (.pop-over[data-popup="cardDetailsPopup"])
|
||||
// so the card overlays the header bars; use the full viewport height.
|
||||
return {
|
||||
left: Math.max(viewportPadding, centeredLeft),
|
||||
top: 0,
|
||||
maxHeight: viewportHeight,
|
||||
};
|
||||
}
|
||||
|
||||
// If the opener element is missing (e.g., programmatic open), fallback to viewport origin
|
||||
if (!$element || $element.length === 0) {
|
||||
return {
|
||||
left: viewportPadding,
|
||||
top: viewportPadding,
|
||||
maxHeight: viewportHeight - viewportPadding * 2,
|
||||
};
|
||||
}
|
||||
|
||||
const offset = $element.offset();
|
||||
const openerTop = offset.top;
|
||||
const openerBottom = offset.top + $element.outerHeight();
|
||||
const clampedLeft = Math.max(
|
||||
viewportPadding,
|
||||
Math.min(offset.left, viewportWidth - popupWidth - viewportPadding),
|
||||
);
|
||||
|
||||
// Check if this is an admin panel edit popup
|
||||
const isAdminEditPopup = $element.hasClass('edit-user') ||
|
||||
$element.hasClass('edit-org') ||
|
||||
$element.hasClass('edit-team');
|
||||
|
||||
if (isAdminEditPopup) {
|
||||
// Center the popup horizontally and use full height
|
||||
const centeredLeft = (viewportWidth - popupWidth) / 2;
|
||||
|
||||
return {
|
||||
left: Math.max(viewportPadding, centeredLeft), // Ensure popup doesn't go off screen
|
||||
top: viewportPadding, // Start from top with small margin
|
||||
maxHeight: viewportHeight - viewportPadding * 2, // Use full height minus small margins
|
||||
};
|
||||
}
|
||||
|
||||
// Calculate available heights around the opener
|
||||
const spaceBelow = viewportHeight - openerBottom - viewportPadding;
|
||||
const spaceAbove = openerTop - viewportPadding;
|
||||
const preferBelow = spaceBelow >= spaceAbove;
|
||||
|
||||
// For language popup, don't use dynamic height to avoid overlapping board
|
||||
const isLanguagePopup = $element.hasClass('js-change-language');
|
||||
let availableHeight;
|
||||
|
||||
if (isLanguagePopup) {
|
||||
// For language popup, position content area below right vertical scrollbar
|
||||
const languageTop = openerBottom;
|
||||
const languageAvailable = Math.max(
|
||||
0,
|
||||
viewportHeight - languageTop - viewportPadding,
|
||||
);
|
||||
const calculatedHeight = Math.min(
|
||||
languageAvailable,
|
||||
viewportHeight * 0.5,
|
||||
); // Max 50% of viewport
|
||||
|
||||
return {
|
||||
left: clampedLeft,
|
||||
top: languageTop,
|
||||
maxHeight: Math.max(calculatedHeight, 0),
|
||||
};
|
||||
} else {
|
||||
// For other popups, choose the side with more space and keep popup fully in viewport.
|
||||
if (preferBelow) {
|
||||
availableHeight = Math.max(0, Math.min(spaceBelow, viewportHeight * 0.8));
|
||||
return {
|
||||
left: clampedLeft,
|
||||
top: openerBottom,
|
||||
maxHeight: availableHeight,
|
||||
};
|
||||
}
|
||||
|
||||
availableHeight = Math.max(0, Math.min(spaceAbove, viewportHeight * 0.8));
|
||||
const top = Math.max(viewportPadding, openerTop - availableHeight);
|
||||
|
||||
return {
|
||||
left: clampedLeft,
|
||||
top,
|
||||
maxHeight: availableHeight,
|
||||
};
|
||||
}
|
||||
return computePopupOffset({
|
||||
viewportWidth: $(window).width(),
|
||||
viewportHeight: $(window).height(),
|
||||
scrollTop: $(window).scrollTop() || 0,
|
||||
scrollLeft: $(window).scrollLeft() || 0,
|
||||
opener,
|
||||
popupName,
|
||||
isMiniScreen: Utils.isMiniScreen(),
|
||||
isAdminEditPopup:
|
||||
hasOpener &&
|
||||
($element.hasClass('edit-user') ||
|
||||
$element.hasClass('edit-org') ||
|
||||
$element.hasClass('edit-team')),
|
||||
isLanguagePopup: hasOpener && $element.hasClass('js-change-language'),
|
||||
viewportPadding: 10,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
'use strict';
|
||||
|
||||
// Pure geometry for Popup._getOffset — extracted so the positioning math is
|
||||
// unit-testable without a DOM / Meteor (see tests/popupOffset.test.cjs).
|
||||
//
|
||||
// #5667 ("Problem when scrolling in a map with date fields"): a date-picker
|
||||
// calendar (due/start/end date, or a date custom field) opened low on the screen
|
||||
// appeared partly outside the visible area, and — because the pop-over is
|
||||
// `position: absolute` (document coordinates) — trying to scroll it into view
|
||||
// moved it along with the page, so the calendar could never be seen fully.
|
||||
//
|
||||
// Root cause: _getOffset computed the space above / below the opener (and the
|
||||
// clamped `top`) from the opener's DOCUMENT offset (`$el.offset()`) mixed with
|
||||
// the VIEWPORT height, ignoring the page scroll. On a scrolled page that placed
|
||||
// the anchored popup outside the visible viewport.
|
||||
//
|
||||
// Fix: do the space / clamp math in VIEWPORT coordinates (subtract
|
||||
// scrollTop/scrollLeft), then convert the chosen top/left back to DOCUMENT
|
||||
// coordinates (add the scroll back) for the absolute style. The popup box is then
|
||||
// always laid out fully within the visible viewport. When the page is not
|
||||
// scrolled (scrollTop === scrollLeft === 0) the output is identical to the
|
||||
// previous behaviour, so nothing regresses in the common case.
|
||||
|
||||
function computePopupOffset(params) {
|
||||
const {
|
||||
viewportWidth,
|
||||
viewportHeight,
|
||||
scrollTop = 0,
|
||||
scrollLeft = 0,
|
||||
// Opener document offset { top, left, height }, or null for a programmatic
|
||||
// open with no reference element.
|
||||
opener = null,
|
||||
popupName,
|
||||
isMiniScreen = false,
|
||||
isAdminEditPopup = false,
|
||||
isLanguagePopup = false,
|
||||
viewportPadding = 10,
|
||||
} = params;
|
||||
|
||||
if (isMiniScreen) return { left: 0, top: 0 };
|
||||
|
||||
// Actual popup width from CSS: min(380px, 55vw).
|
||||
const popupWidth = Math.min(380, viewportWidth * 0.55);
|
||||
|
||||
// Card details popup: docked to the top of the viewport (CSS also forces
|
||||
// top:0) so it overlays the header bars instead of opening from the minicard.
|
||||
if (popupName === 'cardDetailsPopup') {
|
||||
const cardWidth = Math.min(600, viewportWidth * 0.8);
|
||||
const centeredLeft = (viewportWidth - cardWidth) / 2;
|
||||
return {
|
||||
left: Math.max(viewportPadding, centeredLeft),
|
||||
top: scrollTop, // viewport top in document coords
|
||||
maxHeight: viewportHeight,
|
||||
};
|
||||
}
|
||||
|
||||
// No opener element: fall back to the top-left of the VISIBLE viewport.
|
||||
if (!opener) {
|
||||
return {
|
||||
left: viewportPadding + scrollLeft,
|
||||
top: viewportPadding + scrollTop,
|
||||
maxHeight: viewportHeight - viewportPadding * 2,
|
||||
};
|
||||
}
|
||||
|
||||
// Opener position in viewport coordinates (this is the #5667 fix: the previous
|
||||
// code used the raw document offset here).
|
||||
const openerTopVp = opener.top - scrollTop;
|
||||
const openerBottomVp = openerTopVp + opener.height;
|
||||
const openerLeftVp = opener.left - scrollLeft;
|
||||
|
||||
const clampedLeftVp = Math.max(
|
||||
viewportPadding,
|
||||
Math.min(openerLeftVp, viewportWidth - popupWidth - viewportPadding),
|
||||
);
|
||||
const clampedLeft = clampedLeftVp + scrollLeft;
|
||||
|
||||
// Admin panel edit popups: horizontally centered, anchored to the viewport top.
|
||||
if (isAdminEditPopup) {
|
||||
const centeredLeft = (viewportWidth - popupWidth) / 2;
|
||||
return {
|
||||
left: Math.max(viewportPadding, centeredLeft),
|
||||
top: viewportPadding + scrollTop,
|
||||
maxHeight: viewportHeight - viewportPadding * 2,
|
||||
};
|
||||
}
|
||||
|
||||
const spaceBelow = viewportHeight - openerBottomVp - viewportPadding;
|
||||
const spaceAbove = openerTopVp - viewportPadding;
|
||||
const preferBelow = spaceBelow >= spaceAbove;
|
||||
|
||||
// Language popup: fixed-ish height below the opener, capped at 50% viewport.
|
||||
if (isLanguagePopup) {
|
||||
const languageTopVp = openerBottomVp;
|
||||
const languageAvailable = Math.max(
|
||||
0,
|
||||
viewportHeight - languageTopVp - viewportPadding,
|
||||
);
|
||||
const calculatedHeight = Math.min(languageAvailable, viewportHeight * 0.5);
|
||||
return {
|
||||
left: clampedLeft,
|
||||
top: languageTopVp + scrollTop,
|
||||
maxHeight: Math.max(calculatedHeight, 0),
|
||||
};
|
||||
}
|
||||
|
||||
// Other popups: open on the side with more room and stay fully in the viewport.
|
||||
if (preferBelow) {
|
||||
const maxHeight = Math.max(0, Math.min(spaceBelow, viewportHeight * 0.8));
|
||||
return { left: clampedLeft, top: openerBottomVp + scrollTop, maxHeight };
|
||||
}
|
||||
|
||||
const maxHeight = Math.max(0, Math.min(spaceAbove, viewportHeight * 0.8));
|
||||
const topVp = Math.max(viewportPadding, openerTopVp - maxHeight);
|
||||
return { left: clampedLeft, top: topVp + scrollTop, maxHeight };
|
||||
}
|
||||
|
||||
module.exports = { computePopupOffset };
|
||||
@@ -10,7 +10,7 @@ This is without container (without Docker or Snap).
|
||||
|
||||
Right click and download files 1-4:
|
||||
|
||||
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/
|
||||
1. [wekan-9.81-win64.zip](https://github.com/wekan/wekan/releases/download/v9.81/wekan-9.81-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.78-win64.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
7. Unzip `wekan-9.81-win64.zip` , inside it is directory `bundle`, to it copy other files:
|
||||
|
||||
```
|
||||
bundle (directory)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Menerima",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Cipta ruangan",
|
||||
"createCustomFieldPopup-title": "Cipta ruangan",
|
||||
"current": "sekarang",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Tidak boleh undur semula. Ianya akan menghapuskan ruangan khas daripada semua kad dan padamkan sejarahnya.",
|
||||
"custom-field-checkbox": "kotak semak",
|
||||
"custom-field-currency": "Matawang",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nama Lengkap",
|
||||
"header-logo-title": "Kembali ke laman panel anda",
|
||||
"show-activities": "Tunjukkan Aktiviti",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Buat Panel",
|
||||
"home": "Beranda",
|
||||
"import": "Impor",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Picu",
|
||||
"r-action": "Tindakan",
|
||||
"r-when-a-card": "Ketika kartu",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aanvaar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Skep veld",
|
||||
"createCustomFieldPopup-title": "Skep veld",
|
||||
"current": "huidige",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Daar is geen ongedaan maak nie. Dit sal hierdie pasgemaakte veld van alle kaarte verwyder en sy geskiedenis vernietig.",
|
||||
"custom-field-checkbox": "Merkblokkie",
|
||||
"custom-field-currency": "Geldeenheid",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Volle Naam",
|
||||
"header-logo-title": "Gaan terug na jou bordbladsy.",
|
||||
"show-activities": "Wys aktiwiteite",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Skep bord",
|
||||
"home": "Tuis",
|
||||
"import": "Invoer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Sneller",
|
||||
"r-action": "Aksie",
|
||||
"r-when-a-card": "Wanneer 'n kaart",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aanvaar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Skep veld",
|
||||
"createCustomFieldPopup-title": "Skep veld",
|
||||
"current": "huidige",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Daar is geen ongedaan maak nie. Dit sal hierdie pasgemaakte veld van alle kaarte verwyder en sy geskiedenis vernietig.",
|
||||
"custom-field-checkbox": "Merkblokkie",
|
||||
"custom-field-currency": "Geldeenheid",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Volle Naam",
|
||||
"header-logo-title": "Gaan terug na jou bordbladsy.",
|
||||
"show-activities": "Wys aktiwiteite",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Skep bord",
|
||||
"home": "Tuis",
|
||||
"import": "Invoer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Sneller",
|
||||
"r-action": "Aksie",
|
||||
"r-when-a-card": "Wanneer 'n kaart",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "قبول",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "انشاء حقل",
|
||||
"createCustomFieldPopup-title": "انشاء حقل",
|
||||
"current": "الحالي",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "عملة",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "الإسم الكامل",
|
||||
"header-logo-title": "الرجوع إلى صفحة اللوحات",
|
||||
"show-activities": "عرض الأنشطة",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "إنشاء لوحة",
|
||||
"home": "الرئيسية",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "قبول",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "انشاء حقل",
|
||||
"createCustomFieldPopup-title": "انشاء حقل",
|
||||
"current": "الحالي",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "عملة",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "الإسم الكامل",
|
||||
"header-logo-title": "الرجوع إلى صفحة اللوحات",
|
||||
"show-activities": "عرض الأنشطة",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "إنشاء لوحة",
|
||||
"home": "الرئيسية",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "قبول",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "انشاء حقل",
|
||||
"createCustomFieldPopup-title": "انشاء حقل",
|
||||
"current": "الحالي",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "عملة",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "الإسم الكامل",
|
||||
"header-logo-title": "الرجوع إلى صفحة اللوحات",
|
||||
"show-activities": "عرض الأنشطة",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "إنشاء لوحة",
|
||||
"home": "الرئيسية",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "قبول",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "انشاء حقل",
|
||||
"createCustomFieldPopup-title": "انشاء حقل",
|
||||
"current": "الحالي",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "عملة",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "الإسم الكامل",
|
||||
"header-logo-title": "الرجوع إلى صفحة اللوحات",
|
||||
"show-activities": "عرض الأنشطة",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "إنشاء لوحة",
|
||||
"home": "الرئيسية",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Qəbul edin",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Sahə yaradın",
|
||||
"createCustomFieldPopup-title": "Sahə yaradın",
|
||||
"current": "cari",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Geri qaytarma yoxdur. Bu, bu fərdi sahəni bütün kartlardan siləcək və onun tarixçəsini məhv edəcək.",
|
||||
"custom-field-checkbox": "Yoxlama qutusu",
|
||||
"custom-field-currency": "Valyuta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Tam adı",
|
||||
"header-logo-title": "Lövhələr səhifəsinə qayıdın.",
|
||||
"show-activities": "Fəaliyyətləri göstərin",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Şura yaradın",
|
||||
"home": "Ev",
|
||||
"import": "İdxal",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Tətik",
|
||||
"r-action": "Fəaliyyət",
|
||||
"r-when-a-card": "Bir kart olanda",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Qəbul edin",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Sahə yaradın",
|
||||
"createCustomFieldPopup-title": "Sahə yaradın",
|
||||
"current": "cari",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Geri qaytarma yoxdur. Bu, bu fərdi sahəni bütün kartlardan siləcək və onun tarixçəsini məhv edəcək.",
|
||||
"custom-field-checkbox": "Yoxlama qutusu",
|
||||
"custom-field-currency": "Valyuta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Tam adı",
|
||||
"header-logo-title": "Lövhələr səhifəsinə qayıdın.",
|
||||
"show-activities": "Fəaliyyətləri göstərin",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Şura yaradın",
|
||||
"home": "Ev",
|
||||
"import": "İdxal",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Tətik",
|
||||
"r-action": "Fəaliyyət",
|
||||
"r-when-a-card": "Bir kart olanda",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Qəbul edin",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Sahə yaradın",
|
||||
"createCustomFieldPopup-title": "Sahə yaradın",
|
||||
"current": "cari",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Geri qaytarma yoxdur. Bu, bu fərdi sahəni bütün kartlardan siləcək və onun tarixçəsini məhv edəcək.",
|
||||
"custom-field-checkbox": "Yoxlama qutusu",
|
||||
"custom-field-currency": "Valyuta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Tam adı",
|
||||
"header-logo-title": "Lövhələr səhifəsinə qayıdın.",
|
||||
"show-activities": "Fəaliyyətləri göstərin",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Şura yaradın",
|
||||
"home": "Ev",
|
||||
"import": "İdxal",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Tətik",
|
||||
"r-action": "Fəaliyyət",
|
||||
"r-when-a-card": "Bir kart olanda",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Приемам",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Създай Поле",
|
||||
"createCustomFieldPopup-title": "Създай Поле",
|
||||
"current": "сегашен",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Опозив ове радње неће бити могућ. Радњом се уклања ова придружена рубрика из свих предмета и уништива њена претходна историја употребе.",
|
||||
"custom-field-checkbox": "Чекбокс",
|
||||
"custom-field-currency": "Валута",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Име",
|
||||
"header-logo-title": "Назад към страницата с Вашите табла.",
|
||||
"show-activities": "Писани записник",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Създай Табло",
|
||||
"home": "Начало",
|
||||
"import": "Импорт",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Добави спусък",
|
||||
"r-action": "Действие",
|
||||
"r-when-a-card": "Когато карта",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Asantiñ",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
"createCustomFieldPopup-title": "Créer un champ personnalisé",
|
||||
"current": "actuel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Cette action est irréversible. Elle supprimera ce champ personnalisé de toutes les cartes et détruira son historique.",
|
||||
"custom-field-checkbox": "Case à cocher",
|
||||
"custom-field-currency": "Devise",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"show-activities": "Afficher les activités",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Créer un tableau",
|
||||
"home": "Accueil",
|
||||
"import": "Importer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Quand une carte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepta",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear campament",
|
||||
"createCustomFieldPopup-title": "Crear campament",
|
||||
"current": "Real",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "No hi ha cap desfer. Això eliminarà aquest camp personalitzat de totes les cartes i destruirà el seu historial.",
|
||||
"custom-field-checkbox": "casella de selecció",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Torna a la teva pàgina de taulers",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crea tauler",
|
||||
"home": "Inici",
|
||||
"import": "importa",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Disparador",
|
||||
"r-action": "Acció",
|
||||
"r-when-a-card": "Quan una fitxa",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Acceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear campament",
|
||||
"createCustomFieldPopup-title": "Crear campament",
|
||||
"current": "Real",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "No hi ha cap desfer. Això eliminarà aquest camp personalitzat de totes les cartes i destruirà el seu historial.",
|
||||
"custom-field-checkbox": "casella de selecció",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Torna a la teva pàgina de taulers",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crea tauler",
|
||||
"home": "Inici",
|
||||
"import": "importa",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Disparador",
|
||||
"r-action": "Acció",
|
||||
"r-when-a-card": "Quan una fitxa",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepta",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear campament",
|
||||
"createCustomFieldPopup-title": "Crear campament",
|
||||
"current": "Real",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "No hi ha cap desfer. Això eliminarà aquest camp personalitzat de totes les cartes i destruirà el seu historial.",
|
||||
"custom-field-checkbox": "casella de selecció",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Torna a la teva pàgina de taulers",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crea tauler",
|
||||
"home": "Inici",
|
||||
"import": "importa",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Disparador",
|
||||
"r-action": "Acció",
|
||||
"r-when-a-card": "Quan una fitxa",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "接受",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "创建字段",
|
||||
"createCustomFieldPopup-title": "创建字段",
|
||||
"current": "当前的",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "无法撤消。这将从所有卡中删除此自定义字段并销毁其历史记录。",
|
||||
"custom-field-checkbox": "复选框",
|
||||
"custom-field-currency": "货币",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "姓名",
|
||||
"header-logo-title": "返回您的图板页面。",
|
||||
"show-activities": "展会活动",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "创建板",
|
||||
"home": "家",
|
||||
"import": "进口",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "扳机",
|
||||
"r-action": "行动",
|
||||
"r-when-a-card": "当一张卡",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Přijmout",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Vytvořit pole",
|
||||
"createCustomFieldPopup-title": "Vytvořit pole",
|
||||
"current": "Aktuální",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Nelze vrátit zpět. Toto odebere toto vlastní pole ze všech karet a zničí jeho historii.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Měna",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Celé jméno",
|
||||
"header-logo-title": "Jit zpět na stránku s tably.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Vytvořit tablo",
|
||||
"home": "Domů",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Spouštěč",
|
||||
"r-action": "Akce",
|
||||
"r-when-a-card": "Pokud karta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Přijmout",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Vytvořit pole",
|
||||
"createCustomFieldPopup-title": "Vytvořit pole",
|
||||
"current": "Aktuální",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Nelze vrátit zpět. Toto odebere toto vlastní pole ze všech karet a zničí jeho historii.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Měna",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Celé jméno",
|
||||
"header-logo-title": "Jit zpět na stránku s tably.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Vytvořit tablo",
|
||||
"home": "Domů",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Spouštěč",
|
||||
"r-action": "Akce",
|
||||
"r-when-a-card": "Pokud karta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Derbyn",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Creu Maes",
|
||||
"createCustomFieldPopup-title": "Creu Maes",
|
||||
"current": "presennol",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Does dim dadwneud. Bydd hyn yn dileu'r maes arfer hwn o bob cerdyn ac yn dinistrio ei hanes.",
|
||||
"custom-field-checkbox": "Blwch ticio",
|
||||
"custom-field-currency": "Arian cyfred",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Enw Llawn",
|
||||
"header-logo-title": "Ewch yn ôl i dudalen eich byrddau.",
|
||||
"show-activities": "Gweithgareddau Sioe",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Creu Bwrdd",
|
||||
"home": "Cartref",
|
||||
"import": "Mewnforio",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Sbardun",
|
||||
"r-action": "Gweithred",
|
||||
"r-when-a-card": "Pan fydd cerdyn",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Derbyn",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Creu Maes",
|
||||
"createCustomFieldPopup-title": "Creu Maes",
|
||||
"current": "presennol",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Does dim dadwneud. Bydd hyn yn dileu'r maes arfer hwn o bob cerdyn ac yn dinistrio ei hanes.",
|
||||
"custom-field-checkbox": "Blwch ticio",
|
||||
"custom-field-currency": "Arian cyfred",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Enw Llawn",
|
||||
"header-logo-title": "Ewch yn ôl i dudalen eich byrddau.",
|
||||
"show-activities": "Gweithgareddau Sioe",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Creu Bwrdd",
|
||||
"home": "Cartref",
|
||||
"import": "Mewnforio",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Sbardun",
|
||||
"r-action": "Gweithred",
|
||||
"r-when-a-card": "Pan fydd cerdyn",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepter",
|
||||
"activity-changedTitle": "ændrede titel til %s af %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "slettede kortet __card__ fra listen __list__ i svømmebanen __swimlane__ på tavlen __board__",
|
||||
"act-removeBoard": "slettede tavlen __board__",
|
||||
"act-removeList": "slettede listen __list__ fra tavlen __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Opret felt",
|
||||
"createCustomFieldPopup-title": "Opret felt",
|
||||
"current": "nuværende",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Du kan ikke fortryde handlingen. Dette vil fjerne dette brugerdefinerede felt fra alle kort og tilintetgøre dens historik.",
|
||||
"custom-field-checkbox": "Afkrydsningsfelt",
|
||||
"custom-field-currency": "Valuta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Fuldt navn",
|
||||
"header-logo-title": "Gå tilbage til siden med dine tavler",
|
||||
"show-activities": "Visa aktiviteter",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Opret tavle",
|
||||
"home": "Hjem",
|
||||
"import": "Importér",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Træk en trigger og en handling ind i byggeren, og tilføj derefter reglen. Træk en handling over på en eksisterende regel for at ændre, hvad den gør.",
|
||||
"r-drop-trigger": "træk en udløser hertil",
|
||||
"r-drop-action": "træk en handling hertil",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Eksporter regler til JSON",
|
||||
"r-export-csv": "Eksporter regler til CSV",
|
||||
"r-import-json": "Importer regler fra JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Markér kort som ikke fuldført",
|
||||
"r-move-all-cards": "Flyt alle kort i en liste",
|
||||
"r-set-date-relative": "Angiv dato i forhold til dags dato",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Udløser",
|
||||
"r-action": "Handling",
|
||||
"r-when-a-card": "Når et kort",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Akzeptieren",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Feld erstellen",
|
||||
"createCustomFieldPopup-title": "Feld erstellen",
|
||||
"current": "aktuell",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"custom-field-checkbox": "Kontrollkästchen",
|
||||
"custom-field-currency": "Währung",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Vollständiger Name",
|
||||
"header-logo-title": "Zurück zur Board Seite.",
|
||||
"show-activities": "Aktivitäten anzeigen",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Board erstellen",
|
||||
"home": "Home",
|
||||
"import": "Importieren",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Auslöser",
|
||||
"r-action": "Aktion",
|
||||
"r-when-a-card": "Wenn Karte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Akzeptieren",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Feld erstellen",
|
||||
"createCustomFieldPopup-title": "Feld erstellen",
|
||||
"current": "aktuell",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"custom-field-checkbox": "Kontrollkästchen",
|
||||
"custom-field-currency": "Währung",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Vollständiger Name",
|
||||
"header-logo-title": "Zurück zur Board Seite.",
|
||||
"show-activities": "Aktivitäten anzeigen",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Board erstellen",
|
||||
"home": "Home",
|
||||
"import": "Importieren",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Auslöser",
|
||||
"r-action": "Aktion",
|
||||
"r-when-a-card": "Wenn Karte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Akzeptieren",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Feld erstellen",
|
||||
"createCustomFieldPopup-title": "Feld erstellen",
|
||||
"current": "aktuell",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"custom-field-checkbox": "Kontrollkästchen",
|
||||
"custom-field-currency": "Währung",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Vollständiger Name",
|
||||
"header-logo-title": "Zurück zur Board Seite.",
|
||||
"show-activities": "Aktivitäten anzeigen",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Board erstellen",
|
||||
"home": "Home",
|
||||
"import": "Importieren",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Auslöser",
|
||||
"r-action": "Aktion",
|
||||
"r-when-a-card": "Wenn Karte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Akzeptieren",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Feld erstellen",
|
||||
"createCustomFieldPopup-title": "Feld erstellen",
|
||||
"current": "aktuell",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"custom-field-checkbox": "Kontrollkästchen",
|
||||
"custom-field-currency": "Währung",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Vollständiger Name",
|
||||
"header-logo-title": "Zurück zur Board Seite.",
|
||||
"show-activities": "Aktivitäten anzeigen",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Board erstellen",
|
||||
"home": "Home",
|
||||
"import": "Importieren",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Auslöser",
|
||||
"r-action": "Aktion",
|
||||
"r-when-a-card": "Wenn Karte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Αποδοχή",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Δημιουργία Πεδίου",
|
||||
"createCustomFieldPopup-title": "Δημιουργία Πεδίου",
|
||||
"current": "τρέχων",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Non potrai tornare indietro. Questa azione rimuoverà questo campo personalizzato da tutte le schede ed eliminerà ogni sua traccia.",
|
||||
"custom-field-checkbox": "Casella di scelta",
|
||||
"custom-field-currency": "Νόμισμα",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Πλήρες Όνομα",
|
||||
"header-logo-title": "Επιστροφή στη σελίδα των πινάκων σας.",
|
||||
"show-activities": "Mostra Attività",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Δημιουργία Πίνακα",
|
||||
"home": "Αρχική",
|
||||
"import": "Εισαγωγή",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Ενέργεια",
|
||||
"r-when-a-card": "Όταν μία κάρτα",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Αποδοχή",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Δημιουργία Πεδίου",
|
||||
"createCustomFieldPopup-title": "Δημιουργία Πεδίου",
|
||||
"current": "τρέχων",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Non potrai tornare indietro. Questa azione rimuoverà questo campo personalizzato da tutte le schede ed eliminerà ogni sua traccia.",
|
||||
"custom-field-checkbox": "Casella di scelta",
|
||||
"custom-field-currency": "Νόμισμα",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Πλήρες Όνομα",
|
||||
"header-logo-title": "Επιστροφή στη σελίδα των πινάκων σας.",
|
||||
"show-activities": "Mostra Attività",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Δημιουργία Πίνακα",
|
||||
"home": "Αρχική",
|
||||
"import": "Εισαγωγή",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Ενέργεια",
|
||||
"r-when-a-card": "Όταν μία κάρτα",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"current": "current",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Akcepti",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Plena nomo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Krei tavolon",
|
||||
"home": "Hejmo",
|
||||
"import": "Importi",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear Campo",
|
||||
"createCustomFieldPopup-title": "Crear Campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre Completo",
|
||||
"header-logo-title": "Retroceder a tu página de tableros.",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear Tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Divisa",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a su página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Desencadenador",
|
||||
"r-action": "Acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"show-activities": "Mostrar actividades",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Aktsepteeri",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Loo väli",
|
||||
"createCustomFieldPopup-title": "Loo väli",
|
||||
"current": "praegune",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Tagasivõtmist ei ole võimalik teha. See eemaldab selle kohandatud välja kõikidest kaartidest ja hävitab selle ajaloo.",
|
||||
"custom-field-checkbox": "Kontrollkast",
|
||||
"custom-field-currency": "Valuuta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Täielik nimi",
|
||||
"header-logo-title": "Mine tagasi oma foorumite lehele.",
|
||||
"show-activities": "Show Activities",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Loo juhatus",
|
||||
"home": "Kodu",
|
||||
"import": "Import",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Tegevus",
|
||||
"r-when-a-card": "Kui kaart",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Ados",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Sortu eremua",
|
||||
"createCustomFieldPopup-title": "Sortu eremua",
|
||||
"current": "unekoa",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Ez du atzera bueltarik. Honek eremu pertsonalizatua txartel guztietatik kenduko du eta bere historia ezabatuko du.",
|
||||
"custom-field-checkbox": "Kontrol-laukia",
|
||||
"custom-field-currency": "Moneta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Izen abizenak",
|
||||
"header-logo-title": "Itzuli zure arbelen orrira.",
|
||||
"show-activities": "Erakutsi jarduerak",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Sortu arbela",
|
||||
"home": "Hasiera",
|
||||
"import": "Inportatu",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "پذیرفتن",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "ایجاد فیلد",
|
||||
"createCustomFieldPopup-title": "ایجاد فیلد",
|
||||
"current": "جاری",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "واحد پولی",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "نام و نام خانوادگی",
|
||||
"header-logo-title": "بازگشت به صفحه بردها.",
|
||||
"show-activities": "نمایش فعالیت ها",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "ایجاد برد",
|
||||
"home": "خانه",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "پذیرفتن",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "ایجاد فیلد",
|
||||
"createCustomFieldPopup-title": "ایجاد فیلد",
|
||||
"current": "جاری",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "واحد پولی",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "نام و نام خانوادگی",
|
||||
"header-logo-title": "بازگشت به صفحه بردها.",
|
||||
"show-activities": "نمایش فعالیت ها",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "ایجاد برد",
|
||||
"home": "خانه",
|
||||
"import": "وارد کردن",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Hyväksy",
|
||||
"activity-changedTitle": "muokkasi otsikoksi %s / %s",
|
||||
"activity-changedDescription": "muokkasi kuvausta / %s",
|
||||
"act-deleteCard": "poistettu kortti __card__ listalla __list__ uimaradalla __swimlane__ taululla __board__",
|
||||
"act-removeBoard": "poistettu taulu __board__",
|
||||
"act-removeList": "poistettu lista __list__ taululla __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Luo kenttä",
|
||||
"createCustomFieldPopup-title": "Luo kenttä",
|
||||
"current": "nykyinen",
|
||||
"custom-color": "Mukautettu väri",
|
||||
"custom-field-delete-pop": "Tätä ei voi peruuttaa. Tämä poistaa tämän mukautetun kentän kaikista korteista ja poistaa sen historian.",
|
||||
"custom-field-checkbox": "Valintaruutu",
|
||||
"custom-field-currency": "Valuutta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Koko nimi",
|
||||
"header-logo-title": "Palaa taulut sivullesi.",
|
||||
"show-activities": "Näytä toimet",
|
||||
"hide-activities": "Piilota toimet",
|
||||
"headerBarCreateBoardPopup-title": "Luo taulu",
|
||||
"home": "Koti",
|
||||
"import": "Tuo",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Vedä liipaisin ja toiminto rakentajaan, ja lisää sitten sääntö. Vedä toiminto olemassa olevaan sääntöön muuttaaksesi sen toimintaa.",
|
||||
"r-drop-trigger": "pudota liipaisin tähän",
|
||||
"r-drop-action": "pudota toiminto tähän",
|
||||
"r-w-card-created": "Kortti luodaan",
|
||||
"r-w-card-archived": "Kortti arkistoidaan",
|
||||
"r-w-card-unarchived": "Kortti palautetaan arkistosta",
|
||||
"r-w-label-added": "Mikä tahansa nimilappu lisätään",
|
||||
"r-w-label-removed": "Mikä tahansa nimilappu poistetaan",
|
||||
"r-w-member-added": "Jäsen lisätään",
|
||||
"r-w-member-removed": "Jäsen poistetaan",
|
||||
"r-w-checklist-added": "Tarkistuslista lisätään",
|
||||
"r-w-attachment-added": "Liitetiedosto lisätään",
|
||||
"r-w-every-day-at": "Joka päivä klo __time__",
|
||||
"r-w-set-received-now": "Aseta vastaanottopäivä nykyhetkeen",
|
||||
"r-export-json": "Vie säännöt JSON-muodossa",
|
||||
"r-export-csv": "Vie säännöt CSV-muodossa",
|
||||
"r-import-json": "Tuo säännöt JSON:sta",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Merkitse kortti keskeneräiseksi",
|
||||
"r-move-all-cards": "Siirrä kaikki listan kortit",
|
||||
"r-set-date-relative": "Aseta päivämäärä suhteessa nykyhetkeen",
|
||||
"r-later": "myöhemmin",
|
||||
"r-unit-minutes": "minuuttia",
|
||||
"r-unit-hours": "tuntia",
|
||||
"r-unit-days": "päivää",
|
||||
"r-unit-weeks": "viikkoa",
|
||||
"r-unit-months": "kuukautta",
|
||||
"r-trigger": "Liipaisin",
|
||||
"r-action": "Toiminto",
|
||||
"r-when-a-card": "Kun kortti",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepter",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
"createCustomFieldPopup-title": "Créer un champ personnalisé",
|
||||
"current": "actuel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Cette action est irréversible. Elle supprimera ce champ personnalisé de toutes les cartes et détruira son historique.",
|
||||
"custom-field-checkbox": "Case à cocher",
|
||||
"custom-field-currency": "Devise",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"show-activities": "Afficher les activités",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Créer un tableau",
|
||||
"home": "Accueil",
|
||||
"import": "Importer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Quand une carte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepter",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
"createCustomFieldPopup-title": "Créer un champ personnalisé",
|
||||
"current": "actuel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Cette action est irréversible. Elle supprimera ce champ personnalisé de toutes les cartes et détruira son historique.",
|
||||
"custom-field-checkbox": "Case à cocher",
|
||||
"custom-field-currency": "Devise",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"show-activities": "Afficher les activités",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Créer un tableau",
|
||||
"home": "Accueil",
|
||||
"import": "Importer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Quand une carte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Accepter",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Créer un champ personnalisé",
|
||||
"createCustomFieldPopup-title": "Créer un champ personnalisé",
|
||||
"current": "actuel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Cette action est irréversible. Elle supprimera ce champ personnalisé de toutes les cartes et détruira son historique.",
|
||||
"custom-field-checkbox": "Case à cocher",
|
||||
"custom-field-currency": "Devise",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"show-activities": "Afficher les activités",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Créer un tableau",
|
||||
"home": "Accueil",
|
||||
"import": "Importer",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Déclencheur",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Quand une carte",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Oannimme",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Meitsje fjild",
|
||||
"createCustomFieldPopup-title": "Meitsje fjild",
|
||||
"current": "aktueel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Der is gjin undo. Dit sil fuortsmite dit oanpaste fjild fan alle kaarten en ferneatigje syn skiednis.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Faluta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Folsleine namme",
|
||||
"header-logo-title": "Gean werom nei jo boards side.",
|
||||
"show-activities": "Aktiviteiten sjen litte",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Meitsje Board",
|
||||
"home": "Thús",
|
||||
"import": "Ymport",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Aksje",
|
||||
"r-when-a-card": "Wannear't in kaart",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"accept": "Oannimme",
|
||||
"activity-changedTitle": "changed title to %s of %s",
|
||||
"activity-changedDescription": "changed description of %s",
|
||||
"act-deleteCard": "deleted card __card__ from list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeBoard": "deleted board __board__",
|
||||
"act-removeList": "deleted list __list__ at board __board__",
|
||||
@@ -441,6 +442,7 @@
|
||||
"createCustomField": "Meitsje fjild",
|
||||
"createCustomFieldPopup-title": "Meitsje fjild",
|
||||
"current": "aktueel",
|
||||
"custom-color": "Custom color",
|
||||
"custom-field-delete-pop": "Der is gjin undo. Dit sil fuortsmite dit oanpaste fjild fan alle kaarten en ferneatigje syn skiednis.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Faluta",
|
||||
@@ -582,6 +584,7 @@
|
||||
"fullname": "Folsleine namme",
|
||||
"header-logo-title": "Gean werom nei jo boards side.",
|
||||
"show-activities": "Aktiviteiten sjen litte",
|
||||
"hide-activities": "Hide Activities",
|
||||
"headerBarCreateBoardPopup-title": "Meitsje Board",
|
||||
"home": "Thús",
|
||||
"import": "Ymport",
|
||||
@@ -1016,6 +1019,17 @@
|
||||
"r-workflow-help": "Drag a trigger and an action into the builder, then add the rule. Drag an action onto an existing rule to change what it does.",
|
||||
"r-drop-trigger": "drop a trigger here",
|
||||
"r-drop-action": "drop an action here",
|
||||
"r-w-card-created": "Card is created",
|
||||
"r-w-card-archived": "Card is archived",
|
||||
"r-w-card-unarchived": "Card is unarchived",
|
||||
"r-w-label-added": "Any label is added",
|
||||
"r-w-label-removed": "Any label is removed",
|
||||
"r-w-member-added": "A member is added",
|
||||
"r-w-member-removed": "A member is removed",
|
||||
"r-w-checklist-added": "A checklist is added",
|
||||
"r-w-attachment-added": "An attachment is added",
|
||||
"r-w-every-day-at": "Every day at __time__",
|
||||
"r-w-set-received-now": "Set received date to now",
|
||||
"r-export-json": "Export rules to JSON",
|
||||
"r-export-csv": "Export rules to CSV",
|
||||
"r-import-json": "Import rules from JSON",
|
||||
@@ -1069,6 +1083,12 @@
|
||||
"r-mark-incomplete": "Mark card incomplete",
|
||||
"r-move-all-cards": "Move all cards in list",
|
||||
"r-set-date-relative": "Set date relative to now",
|
||||
"r-later": "later",
|
||||
"r-unit-minutes": "minute(s)",
|
||||
"r-unit-hours": "hour(s)",
|
||||
"r-unit-days": "day(s)",
|
||||
"r-unit-weeks": "week(s)",
|
||||
"r-unit-months": "month(s)",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Aksje",
|
||||
"r-when-a-card": "Wannear't in kaart",
|
||||
|
||||
Loaded 100 of 244 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user