summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md22
-rw-r--r--Dockerfile94
-rw-r--r--README.md4
-rw-r--r--Stackerfile.yml2
-rw-r--r--client/components/boards/boardsList.jade4
-rw-r--r--client/components/boards/boardsList.js15
-rw-r--r--client/components/boards/boardsList.styl13
-rw-r--r--client/components/cards/cardDetails.styl3
-rw-r--r--client/components/rules/triggers/boardTriggers.jade3
-rw-r--r--client/components/rules/triggers/boardTriggers.js6
-rw-r--r--i18n/ar.i18n.json3
-rw-r--r--i18n/bg.i18n.json3
-rw-r--r--i18n/br.i18n.json3
-rw-r--r--i18n/ca.i18n.json3
-rw-r--r--i18n/cs.i18n.json3
-rw-r--r--i18n/da.i18n.json3
-rw-r--r--i18n/de.i18n.json11
-rw-r--r--i18n/el.i18n.json3
-rw-r--r--i18n/en-GB.i18n.json3
-rw-r--r--i18n/en.i18n.json3
-rw-r--r--i18n/eo.i18n.json3
-rw-r--r--i18n/es-AR.i18n.json3
-rw-r--r--i18n/es.i18n.json3
-rw-r--r--i18n/eu.i18n.json3
-rw-r--r--i18n/fa.i18n.json3
-rw-r--r--i18n/fi.i18n.json3
-rw-r--r--i18n/fr.i18n.json3
-rw-r--r--i18n/gl.i18n.json3
-rw-r--r--i18n/he.i18n.json3
-rw-r--r--i18n/hi.i18n.json3
-rw-r--r--i18n/hu.i18n.json3
-rw-r--r--i18n/hy.i18n.json3
-rw-r--r--i18n/id.i18n.json3
-rw-r--r--i18n/ig.i18n.json3
-rw-r--r--i18n/it.i18n.json3
-rw-r--r--i18n/ja.i18n.json3
-rw-r--r--i18n/ka.i18n.json3
-rw-r--r--i18n/km.i18n.json3
-rw-r--r--i18n/ko.i18n.json3
-rw-r--r--i18n/lv.i18n.json3
-rw-r--r--i18n/mk.i18n.json3
-rw-r--r--i18n/mn.i18n.json3
-rw-r--r--i18n/nb.i18n.json3
-rw-r--r--i18n/nl.i18n.json3
-rw-r--r--i18n/oc.i18n.json3
-rw-r--r--i18n/pl.i18n.json3
-rw-r--r--i18n/pt-BR.i18n.json3
-rw-r--r--i18n/pt.i18n.json3
-rw-r--r--i18n/ro.i18n.json3
-rw-r--r--i18n/ru.i18n.json3
-rw-r--r--i18n/sr.i18n.json3
-rw-r--r--i18n/sv.i18n.json3
-rw-r--r--i18n/sw.i18n.json3
-rw-r--r--i18n/ta.i18n.json3
-rw-r--r--i18n/th.i18n.json3
-rw-r--r--i18n/tr.i18n.json3
-rw-r--r--i18n/uk.i18n.json3
-rw-r--r--i18n/vi.i18n.json3
-rw-r--r--i18n/zh-CN.i18n.json3
-rw-r--r--i18n/zh-TW.i18n.json3
-rw-r--r--models/cards.js4
-rw-r--r--models/export.js25
-rw-r--r--models/import.js19
-rw-r--r--models/wekanCreator.js25
-rw-r--r--models/wekanmapper.js24
-rw-r--r--package.json2
-rw-r--r--sandstorm-pkgdef.capnp4
-rw-r--r--server/rulesHelper.js4
-rw-r--r--server/triggersDef.js6
69 files changed, 260 insertions, 177 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bdfbba1c..9fd8ec46 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,25 @@
+# v2.58 2019-04-06 Wekan release
+
+This release adds the following new features:
+
+- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225.
+ Thanks to Angtrim.
+- [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42).
+ Thanks to xet7.
+
+amd fixes the following bugs:
+
+- [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313).
+ Thanks to chotaire.
+- [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314).
+ Thanks to hupptechnologies.
+- [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301).
+ Thanks to folhabranca and xet7.
+- [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225).
+ Thanks to Angtrim.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
# v2.57 2019-04-02 Wekan release
This release fixes the following bugs, thanks to justinr1234:
diff --git a/Dockerfile b/Dockerfile
index 3a81a472..73f8e4bc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,100 +1,6 @@
FROM ubuntu:cosmic
LABEL maintainer="wekan"
-# Declare Arguments
-ARG DEBUG
-ARG NODE_VERSION
-ARG METEOR_RELEASE
-ARG METEOR_EDGE
-ARG USE_EDGE
-ARG NPM_VERSION
-ARG FIBERS_VERSION
-ARG ARCHITECTURE
-ARG SRC_PATH
-ARG WITH_API
-ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE
-ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD
-ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW
-ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE
-ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD
-ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW
-ARG EMAIL_NOTIFICATION_TIMEOUT
-ARG MATOMO_ADDRESS
-ARG MATOMO_SITE_ID
-ARG MATOMO_DO_NOT_TRACK
-ARG MATOMO_WITH_USERNAME
-ARG BROWSER_POLICY_ENABLED
-ARG TRUSTED_URL
-ARG WEBHOOKS_ATTRIBUTES
-ARG OAUTH2_ENABLED
-ARG OAUTH2_LOGIN_STYLE
-ARG OAUTH2_CLIENT_ID
-ARG OAUTH2_SECRET
-ARG OAUTH2_SERVER_URL
-ARG OAUTH2_AUTH_ENDPOINT
-ARG OAUTH2_USERINFO_ENDPOINT
-ARG OAUTH2_TOKEN_ENDPOINT
-ARG OAUTH2_ID_MAP
-ARG OAUTH2_USERNAME_MAP
-ARG OAUTH2_FULLNAME_MAP
-ARG OAUTH2_EMAIL_MAP
-ARG LDAP_ENABLE
-ARG LDAP_PORT
-ARG LDAP_HOST
-ARG LDAP_BASEDN
-ARG LDAP_LOGIN_FALLBACK
-ARG LDAP_RECONNECT
-ARG LDAP_TIMEOUT
-ARG LDAP_IDLE_TIMEOUT
-ARG LDAP_CONNECT_TIMEOUT
-ARG LDAP_AUTHENTIFICATION
-ARG LDAP_AUTHENTIFICATION_USERDN
-ARG LDAP_AUTHENTIFICATION_PASSWORD
-ARG LDAP_LOG_ENABLED
-ARG LDAP_BACKGROUND_SYNC
-ARG LDAP_BACKGROUND_SYNC_INTERVAL
-ARG LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED
-ARG LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS
-ARG LDAP_ENCRYPTION
-ARG LDAP_CA_CERT
-ARG LDAP_REJECT_UNAUTHORIZED
-ARG LDAP_USER_SEARCH_FILTER
-ARG LDAP_USER_SEARCH_SCOPE
-ARG LDAP_USER_SEARCH_FIELD
-ARG LDAP_SEARCH_PAGE_SIZE
-ARG LDAP_SEARCH_SIZE_LIMIT
-ARG LDAP_GROUP_FILTER_ENABLE
-ARG LDAP_GROUP_FILTER_OBJECTCLASS
-ARG LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE
-ARG LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE
-ARG LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT
-ARG LDAP_GROUP_FILTER_GROUP_NAME
-ARG LDAP_UNIQUE_IDENTIFIER_FIELD
-ARG LDAP_UTF8_NAMES_SLUGIFY
-ARG LDAP_USERNAME_FIELD
-ARG LDAP_FULLNAME_FIELD
-ARG LDAP_EMAIL_FIELD
-ARG LDAP_EMAIL_MATCH_ENABLE
-ARG LDAP_EMAIL_MATCH_REQUIRE
-ARG LDAP_EMAIL_MATCH_VERIFIED
-ARG LDAP_MERGE_EXISTING_USERS
-ARG LDAP_SYNC_USER_DATA
-ARG LDAP_SYNC_USER_DATA_FIELDMAP
-ARG LDAP_SYNC_GROUP_ROLES
-ARG LDAP_DEFAULT_DOMAIN
-ARG LDAP_SYNC_ADMIN_STATUS
-ARG LDAP_SYNC_ADMIN_GROUPS
-ARG HEADER_LOGIN_ID
-ARG HEADER_LOGIN_FIRSTNAME
-ARG HEADER_LOGIN_LASTNAME
-ARG HEADER_LOGIN_EMAIL
-ARG LOGOUT_WITH_TIMER
-ARG LOGOUT_IN
-ARG LOGOUT_ON_HOURS
-ARG LOGOUT_ON_MINUTES
-ARG CORS
-ARG DEFAULT_AUTHENTICATION_METHOD
-
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
diff --git a/README.md b/README.md
index 075cda82..324d310b 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@
[![Code Climate](https://codeclimate.com/github/wekan/wekan/badges/gpa.svg "Code Climate")](https://codeclimate.com/github/wekan/wekan)
[![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
[![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_shield)
## [Translate Wekan at Transifex](https://transifex.com/wekan/wekan)
@@ -133,3 +134,6 @@ with [Meteor](https://www.meteor.com).
[free_software]: https://en.wikipedia.org/wiki/Free_software
[vanila_badge]: https://vanila.io/img/join-chat-button2.png
[wekan_chat]: https://community.vanila.io/wekan
+
+
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_large) \ No newline at end of file
diff --git a/Stackerfile.yml b/Stackerfile.yml
index 0b53ab88..f01bea82 100644
--- a/Stackerfile.yml
+++ b/Stackerfile.yml
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.57.0"
+appVersion: "v2.58.0"
files:
userUploads:
- README.md
diff --git a/client/components/boards/boardsList.jade b/client/components/boards/boardsList.jade
index e36b8fc6..0da926ef 100644
--- a/client/components/boards/boardsList.jade
+++ b/client/components/boards/boardsList.jade
@@ -22,7 +22,9 @@ template(name="boardList")
i.fa.js-star-board(
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
title="{{_ 'star-board-title'}}")
-
+ i.fa.js-clone-board(
+ class="fa-clone"
+ title="{{_ 'duplicate-board'}}")
if hasSpentTimeCards
i.fa.js-has-spenttime-cards(
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js
index 3aacdedb..8c45fbe2 100644
--- a/client/components/boards/boardsList.js
+++ b/client/components/boards/boardsList.js
@@ -55,6 +55,21 @@ BlazeComponent.extendComponent({
Meteor.user().toggleBoardStar(boardId);
evt.preventDefault();
},
+ 'click .js-clone-board'(evt) {
+ Meteor.call('cloneBoard',
+ this.currentData()._id,
+ Session.get('fromBoard'),
+ (err, res) => {
+ if (err) {
+ this.setError(err.error);
+ } else {
+ Session.set('fromBoard', null);
+ Utils.goBoardId(res);
+ }
+ }
+ );
+ evt.preventDefault();
+ },
'click .js-accept-invite'() {
const boardId = this.currentData()._id;
Meteor.user().removeInvite(boardId);
diff --git a/client/components/boards/boardsList.styl b/client/components/boards/boardsList.styl
index 80e47685..9f0b204e 100644
--- a/client/components/boards/boardsList.styl
+++ b/client/components/boards/boardsList.styl
@@ -93,14 +93,27 @@ $spaceBetweenTiles = 16px
.is-star-active
color: white
+ .fa-clone
+ position: absolute;
+ bottom: 0
+ font-size: 14px
+ height: 18px
+ line-height: 18px
+ opacity: 0
+ right: 0
+ padding: 9px 9px
+ transition-duration: .15s
+ transition-property: color, font-size, background
li:hover a
&:hover
.fa-star,
+ .fa-clone,
.fa-star-o
color: white
.fa-star,
+ .fa-clone,
.fa-star-o
color: white
opacity: .75
diff --git a/client/components/cards/cardDetails.styl b/client/components/cards/cardDetails.styl
index bf50c071..c1d6b7e1 100644
--- a/client/components/cards/cardDetails.styl
+++ b/client/components/cards/cardDetails.styl
@@ -133,7 +133,8 @@ input[type="submit"].attachment-add-link-submit
.card-details-canvas
width: 100%
-
+ padding-left: 0px;
+
.card-details-header
.close-card-details
margin-right: 0px
diff --git a/client/components/rules/triggers/boardTriggers.jade b/client/components/rules/triggers/boardTriggers.jade
index b8c11d69..ff1406f6 100644
--- a/client/components/rules/triggers/boardTriggers.jade
+++ b/client/components/rules/triggers/boardTriggers.jade
@@ -64,8 +64,7 @@ template(name="boardTriggers")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
- input(id="create-swimlane-name",type=text,placeholder="{{_'r-swimlane-name'}}")
- div.trigger-button.trigger-button-person.js-show-user-field
+ input(id="create-swimlane-name-2",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
diff --git a/client/components/rules/triggers/boardTriggers.js b/client/components/rules/triggers/boardTriggers.js
index d4b9b81c..1dc5c437 100644
--- a/client/components/rules/triggers/boardTriggers.js
+++ b/client/components/rules/triggers/boardTriggers.js
@@ -39,15 +39,18 @@ BlazeComponent.extendComponent({
'click .js-add-moved-trigger' (event) {
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
- const swimlaneName = this.find('#create-swimlane-name').value;
+ const swimlaneName = this.find('#create-swimlane-name-2').value;
const actionSelected = this.find('#move-action').value;
const listName = this.find('#move-list-name').value;
const boardId = Session.get('currentBoard');
+ const divId = $(event.currentTarget.parentNode).attr('id');
+ const cardTitle = this.cardTitleFilters[divId];
if (actionSelected === 'moved-to') {
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
listName,
+ cardTitle,
swimlaneName,
'oldListName': '*',
desc,
@@ -57,6 +60,7 @@ BlazeComponent.extendComponent({
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
+ cardTitle,
swimlaneName,
'listName': '*',
'oldListName': listName,
diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json
index 926e04ff..e6382046 100644
--- a/i18n/ar.i18n.json
+++ b/i18n/ar.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json
index 1592bc08..bca2c915 100644
--- a/i18n/bg.i18n.json
+++ b/i18n/bg.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json
index 065c1fa5..6a793d2c 100644
--- a/i18n/br.i18n.json
+++ b/i18n/br.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json
index f93a60c9..170e8571 100644
--- a/i18n/ca.i18n.json
+++ b/i18n/ca.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json
index c3a3eb05..8f181315 100644
--- a/i18n/cs.i18n.json
+++ b/i18n/cs.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Něco se pokazilo",
"error-ldap-login": "Během přihlašování nastala chyba",
"display-authentication-method": "Zobraz způsob ověřování",
- "default-authentication-method": "Zobraz způsob ověřování"
+ "default-authentication-method": "Zobraz způsob ověřování",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json
index 00df0fdb..94f0bc16 100644
--- a/i18n/da.i18n.json
+++ b/i18n/da.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json
index 86a091eb..e76839bc 100644
--- a/i18n/de.i18n.json
+++ b/i18n/de.i18n.json
@@ -576,16 +576,16 @@
"r-rule": "Regel",
"r-add-trigger": "Auslöser hinzufügen",
"r-add-action": "Aktion hinzufügen",
- "r-board-rules": "Board Regeln",
+ "r-board-rules": "Boardregeln",
"r-add-rule": "Regel hinzufügen",
"r-view-rule": "Regel anzeigen",
"r-delete-rule": "Regel löschen",
"r-new-rule-name": "Neuer Regeltitel",
"r-no-rules": "Keine Regeln",
- "r-when-a-card": "Wenn eine Karte",
- "r-is": "ist",
+ "r-when-a-card": "Wenn Karte",
+ "r-is": "wird",
"r-is-moved": "verschoben wird",
- "r-added-to": "hinzugefügt wird zu",
+ "r-added-to": "hinzugefügt zu",
"r-removed-from": "Entfernt von",
"r-the-board": "das Board",
"r-list": "Liste",
@@ -682,5 +682,6 @@
"error-undefined": "Etwas ist schief gelaufen",
"error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten",
"display-authentication-method": "Anzeige Authentifizierungsverfahren",
- "default-authentication-method": "Standardauthentifizierungsverfahren"
+ "default-authentication-method": "Standardauthentifizierungsverfahren",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json
index 2f619693..230943da 100644
--- a/i18n/el.i18n.json
+++ b/i18n/el.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json
index 00b76869..3dab712e 100644
--- a/i18n/en-GB.i18n.json
+++ b/i18n/en-GB.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index 47ad61ec..4e4af38b 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -685,5 +685,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
}
diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json
index 933f2a58..34fbc283 100644
--- a/i18n/eo.i18n.json
+++ b/i18n/eo.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json
index a5c1fa96..b4123680 100644
--- a/i18n/es-AR.i18n.json
+++ b/i18n/es-AR.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json
index e09c68bb..18bded97 100644
--- a/i18n/es.i18n.json
+++ b/i18n/es.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Algo no está bien",
"error-ldap-login": "Ocurrió un error al intentar acceder",
"display-authentication-method": "Mostrar el método de autenticación",
- "default-authentication-method": "Método de autenticación por defecto"
+ "default-authentication-method": "Método de autenticación por defecto",
+ "duplicate-board": "Duplicar tablero"
} \ No newline at end of file
diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json
index 7a3c5319..6f1a2d31 100644
--- a/i18n/eu.i18n.json
+++ b/i18n/eu.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json
index 5f794527..dbf04373 100644
--- a/i18n/fa.i18n.json
+++ b/i18n/fa.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "یک اشتباه رخ داده شده است",
"error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
"display-authentication-method": "نمایش نوع اعتبارسنجی",
- "default-authentication-method": "نوع اعتبارسنجی پیشفرض"
+ "default-authentication-method": "نوع اعتبارسنجی پیشفرض",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json
index 72ff4ef6..5790a27a 100644
--- a/i18n/fi.i18n.json
+++ b/i18n/fi.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Jotain meni pieleen",
"error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään",
"display-authentication-method": "Näytä kirjautumistapa",
- "default-authentication-method": "Oletus kirjautumistapa"
+ "default-authentication-method": "Oletus kirjautumistapa",
+ "duplicate-board": "Tee kaksoiskappale taulusta"
} \ No newline at end of file
diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json
index f5b3faab..9dd778d7 100644
--- a/i18n/fr.i18n.json
+++ b/i18n/fr.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Une erreur inconnue s'est produite",
"error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion",
"display-authentication-method": "Afficher la méthode d'authentification",
- "default-authentication-method": "Méthode d'authentification par défaut"
+ "default-authentication-method": "Méthode d'authentification par défaut",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json
index 47fbe947..3158eb9d 100644
--- a/i18n/gl.i18n.json
+++ b/i18n/gl.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json
index 489b4f61..9818d9da 100644
--- a/i18n/he.i18n.json
+++ b/i18n/he.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "מהו השתבש",
"error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה",
"display-authentication-method": "הצגת שיטת אימות",
- "default-authentication-method": "שיטת אימות כבררת מחדל"
+ "default-authentication-method": "שיטת אימות כבררת מחדל",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json
index 514dfa2f..b58b5911 100644
--- a/i18n/hi.i18n.json
+++ b/i18n/hi.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json
index 229c9fb4..aac675ca 100644
--- a/i18n/hu.i18n.json
+++ b/i18n/hu.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Valami hiba történt",
"error-ldap-login": "Hiba történt bejelentkezés közben",
"display-authentication-method": "Hitelelesítési mód mutatása",
- "default-authentication-method": "Alapértelmezett hitelesítési mód"
+ "default-authentication-method": "Alapértelmezett hitelesítési mód",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json
index e15b7c37..82e17c07 100644
--- a/i18n/hy.i18n.json
+++ b/i18n/hy.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json
index 4d64b735..291fc894 100644
--- a/i18n/id.i18n.json
+++ b/i18n/id.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json
index 8603ec13..40376656 100644
--- a/i18n/ig.i18n.json
+++ b/i18n/ig.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json
index 38176677..b089039f 100644
--- a/i18n/it.i18n.json
+++ b/i18n/it.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Qualcosa è andato storto",
"error-ldap-login": "C'è stato un errore mentre provavi ad effettuare il login",
"display-authentication-method": "Mostra il metodo di autenticazione",
- "default-authentication-method": "Metodo di autenticazione predefinito"
+ "default-authentication-method": "Metodo di autenticazione predefinito",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json
index 945d48eb..29326281 100644
--- a/i18n/ja.i18n.json
+++ b/i18n/ja.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json
index be5819dd..2f870f01 100644
--- a/i18n/ka.i18n.json
+++ b/i18n/ka.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json
index ba8bcb3e..b6c8f272 100644
--- a/i18n/km.i18n.json
+++ b/i18n/km.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json
index d1cf878f..1897495d 100644
--- a/i18n/ko.i18n.json
+++ b/i18n/ko.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json
index 158f1f1c..6dc19085 100644
--- a/i18n/lv.i18n.json
+++ b/i18n/lv.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json
index 10489c66..0d96f00b 100644
--- a/i18n/mk.i18n.json
+++ b/i18n/mk.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json
index 9c4932b5..1a819409 100644
--- a/i18n/mn.i18n.json
+++ b/i18n/mn.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json
index f61dd08a..098900a9 100644
--- a/i18n/nb.i18n.json
+++ b/i18n/nb.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json
index 598aed99..7bb7602b 100644
--- a/i18n/nl.i18n.json
+++ b/i18n/nl.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json
index 6b62bbd1..9c61d0c1 100644
--- a/i18n/oc.i18n.json
+++ b/i18n/oc.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json
index b8235f13..a1cf4da5 100644
--- a/i18n/pl.i18n.json
+++ b/i18n/pl.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Coś poszło nie tak",
"error-ldap-login": "Wystąpił błąd w trakcie logowania",
"display-authentication-method": "Wyświetl metodę logowania",
- "default-authentication-method": "Domyślna metoda logowania"
+ "default-authentication-method": "Domyślna metoda logowania",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json
index 5d82d841..f92a5305 100644
--- a/i18n/pt-BR.i18n.json
+++ b/i18n/pt-BR.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Algo deu errado",
"error-ldap-login": "Um erro ocorreu enquanto tentava entrar",
"display-authentication-method": "Mostrar Método de Autenticação",
- "default-authentication-method": "Método de Autenticação Padrão"
+ "default-authentication-method": "Método de Autenticação Padrão",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json
index 225b5adb..42aa4c5e 100644
--- a/i18n/pt.i18n.json
+++ b/i18n/pt.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json
index 33564db8..70fccc46 100644
--- a/i18n/ro.i18n.json
+++ b/i18n/ro.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json
index c677bd87..b02f2298 100644
--- a/i18n/ru.i18n.json
+++ b/i18n/ru.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Что-то пошло не так",
"error-ldap-login": "Ошибка при попытке авторизации",
"display-authentication-method": "Показывать способ авторизации",
- "default-authentication-method": "Способ авторизации по умолчанию"
+ "default-authentication-method": "Способ авторизации по умолчанию",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json
index 0244a0e4..2a5aee10 100644
--- a/i18n/sr.i18n.json
+++ b/i18n/sr.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json
index bd9c3a50..46cfa2fd 100644
--- a/i18n/sv.i18n.json
+++ b/i18n/sv.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Något gick fel",
"error-ldap-login": "Ett fel uppstod när du försökte logga in",
"display-authentication-method": "Visa autentiseringsmetod",
- "default-authentication-method": "Standard autentiseringsmetod"
+ "default-authentication-method": "Standard autentiseringsmetod",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json
index b82240fa..007d1fdb 100644
--- a/i18n/sw.i18n.json
+++ b/i18n/sw.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json
index 9473d194..ef85bad8 100644
--- a/i18n/ta.i18n.json
+++ b/i18n/ta.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json
index 17a54304..6c8ea8e6 100644
--- a/i18n/th.i18n.json
+++ b/i18n/th.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json
index 6f626453..89ad2ac0 100644
--- a/i18n/tr.i18n.json
+++ b/i18n/tr.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Bir şeyler yanlış gitti",
"error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json
index 79eec847..d0298ea6 100644
--- a/i18n/uk.i18n.json
+++ b/i18n/uk.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json
index 9d180021..028f1e66 100644
--- a/i18n/vi.i18n.json
+++ b/i18n/vi.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json
index 1fde84fb..510243b3 100644
--- a/i18n/zh-CN.i18n.json
+++ b/i18n/zh-CN.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "出了点问题",
"error-ldap-login": "尝试登陆时出错",
"display-authentication-method": "显示认证方式",
- "default-authentication-method": "缺省认证方式"
+ "default-authentication-method": "缺省认证方式",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json
index 0f14c4a9..9cc6878d 100644
--- a/i18n/zh-TW.i18n.json
+++ b/i18n/zh-TW.i18n.json
@@ -682,5 +682,6 @@
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login",
"display-authentication-method": "Display Authentication Method",
- "default-authentication-method": "Default Authentication Method"
+ "default-authentication-method": "Default Authentication Method",
+ "duplicate-board": "Duplicate Board"
} \ No newline at end of file
diff --git a/models/cards.js b/models/cards.js
index 12488354..6de95123 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -1338,6 +1338,7 @@ function cardMove(userId, doc, fieldNames, oldListId, oldSwimlaneId, oldBoardId)
listId: doc.listId,
boardId: doc.boardId,
cardId: doc._id,
+ cardTitle:doc.title,
swimlaneName: Swimlanes.findOne(doc.swimlaneId).title,
swimlaneId: doc.swimlaneId,
oldSwimlaneId,
@@ -1403,6 +1404,9 @@ function cardMembers(userId, doc, fieldNames, modifier) {
activityType: 'unjoinMember',
boardId: doc.boardId,
cardId: doc._id,
+ memberId,
+ listId: doc.listId,
+ swimlaneId: doc.swimlaneId,
});
}
}
diff --git a/models/export.js b/models/export.js
index f281b34a..49aac828 100644
--- a/models/export.js
+++ b/models/export.js
@@ -6,34 +6,27 @@ if (Meteor.isServer) {
// `ApiRoutes.path('boards/export', boardId)``
// on the client instead of copy/pasting the route path manually between the
// client and the server.
- /**
- * @operation export
- * @tag Boards
- *
- * @summary This route is used to export the board.
- *
- * @description If user is already logged-in, pass loginToken as param
- * "authToken": '/api/boards/:boardId/export?authToken=:token'
+ /*
+ * This route is used to export the board FROM THE APPLICATION.
+ * If user is already logged-in, pass loginToken as param "authToken":
+ * '/api/boards/:boardId/export?authToken=:token'
*
* See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
* for detailed explanations
- *
- * @param {string} boardId the ID of the board we are exporting
- * @param {string} authToken the loginToken
*/
+
+
JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) {
const boardId = req.params.boardId;
let user = null;
-
+ // todo XXX for real API, first look for token in Authentication: header
+ // then fallback to parameter
const loginToken = req.query.authToken;
if (loginToken) {
const hashToken = Accounts._hashLoginToken(loginToken);
user = Meteor.users.findOne({
'services.resume.loginTokens.hashedToken': hashToken,
});
- } else if (!Meteor.settings.public.sandstorm) {
- Authentication.checkUserId(req.userId);
- user = Users.findOne({ _id: req.userId, isAdmin: true });
}
const exporter = new Exporter(boardId);
@@ -50,7 +43,7 @@ if (Meteor.isServer) {
});
}
-class Exporter {
+export class Exporter {
constructor(boardId) {
this._boardId = boardId;
}
diff --git a/models/import.js b/models/import.js
index 343e1c24..5e433669 100644
--- a/models/import.js
+++ b/models/import.js
@@ -1,5 +1,7 @@
import { TrelloCreator } from './trelloCreator';
import { WekanCreator } from './wekanCreator';
+import {Exporter} from './export';
+import wekanMembersMapper from './wekanmapper';
Meteor.methods({
importBoard(board, data, importSource, currentBoard) {
@@ -27,3 +29,20 @@ Meteor.methods({
return creator.create(board, currentBoard);
},
});
+
+Meteor.methods({
+ cloneBoard(sourceBoardId, currentBoardId) {
+ check(sourceBoardId, String);
+ check(currentBoardId, Match.Maybe(String));
+ const exporter = new Exporter(sourceBoardId);
+ const data = exporter.build();
+ const addData = {};
+ addData.membersMapping = wekanMembersMapper.getMembersToMap(data);
+ const creator = new WekanCreator(addData);
+ //data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`;
+ data.title = `${data.title}`;
+ return creator.create(data, currentBoardId);
+ },
+});
+
+
diff --git a/models/wekanCreator.js b/models/wekanCreator.js
index 3a627424..0f6a9d17 100644
--- a/models/wekanCreator.js
+++ b/models/wekanCreator.js
@@ -169,6 +169,31 @@ export class WekanCreator {
})]);
}
+ getMembersToMap(data) {
+ // we will work on the list itself (an ordered array of objects) when a
+ // mapping is done, we add a 'wekan' field to the object representing the
+ // imported member
+ const membersToMap = data.members;
+ const users = data.users;
+ // auto-map based on username
+ membersToMap.forEach((importedMember) => {
+ importedMember.id = importedMember.userId;
+ delete importedMember.userId;
+ const user = users.filter((user) => {
+ return user._id === importedMember.id;
+ })[0];
+ if (user.profile && user.profile.fullname) {
+ importedMember.fullName = user.profile.fullname;
+ }
+ importedMember.username = user.username;
+ const wekanUser = Users.findOne({ username: importedMember.username });
+ if (wekanUser) {
+ importedMember.wekanId = wekanUser._id;
+ }
+ });
+ return membersToMap;
+ }
+
checkActions(wekanActions) {
// XXX More check based on action type
check(wekanActions, [Match.ObjectIncluding({
diff --git a/models/wekanmapper.js b/models/wekanmapper.js
new file mode 100644
index 00000000..f4c110f7
--- /dev/null
+++ b/models/wekanmapper.js
@@ -0,0 +1,24 @@
+export function getMembersToMap(data) {
+ // we will work on the list itself (an ordered array of objects) when a
+ // mapping is done, we add a 'wekan' field to the object representing the
+ // imported member
+ const membersToMap = data.members;
+ const users = data.users;
+ // auto-map based on username
+ membersToMap.forEach((importedMember) => {
+ importedMember.id = importedMember.userId;
+ delete importedMember.userId;
+ const user = users.filter((user) => {
+ return user._id === importedMember.id;
+ })[0];
+ if (user.profile && user.profile.fullname) {
+ importedMember.fullName = user.profile.fullname;
+ }
+ importedMember.username = user.username;
+ const wekanUser = Users.findOne({ username: importedMember.username });
+ if (wekanUser) {
+ importedMember.wekanId = wekanUser._id;
+ }
+ });
+ return membersToMap;
+}
diff --git a/package.json b/package.json
index f4e7d54c..19f7d77f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "v2.57.0",
+ "version": "v2.58.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 7a3b55d8..b47cf8b2 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
- appVersion = 259,
+ appVersion = 260,
# Increment this for every release.
- appMarketingVersion = (defaultText = "2.57.0~2019-04-02"),
+ appMarketingVersion = (defaultText = "2.58.0~2019-04-06"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
diff --git a/server/rulesHelper.js b/server/rulesHelper.js
index 83710057..197e3756 100644
--- a/server/rulesHelper.js
+++ b/server/rulesHelper.js
@@ -141,13 +141,15 @@ RulesHelper = {
Swimlanes.insert({
title: action.swimlaneName,
boardId,
+ sort: 0,
});
}
if(action.actionType === 'addChecklistWithItems'){
const checkListId = Checklists.insert({'title':action.checklistName, 'cardId':card._id, 'sort':0});
const itemsArray = action.checklistItems.split(',');
+ const checkList = Checklists.findOne({_id:checkListId});
for(let i = 0; i <itemsArray.length; i++){
- ChecklistItems.insert({title:itemsArray[i], checklistId:checkListId, cardId:card._id, 'sort':0});
+ ChecklistItems.insert({title:itemsArray[i], checklistId:checkListId, cardId:card._id, 'sort':checkList.itemCount()});
}
}
if(action.actionType === 'createCard'){
diff --git a/server/triggersDef.js b/server/triggersDef.js
index 092da7ad..56d0a84f 100644
--- a/server/triggersDef.js
+++ b/server/triggersDef.js
@@ -3,13 +3,13 @@ TriggersDef = {
matchingFields: ['boardId', 'listName', 'userId', 'swimlaneName', 'cardTitle'],
},
moveCard:{
- matchingFields: ['boardId', 'listName', 'oldListName', 'userId', 'swimlaneName'],
+ matchingFields: ['boardId', 'listName', 'oldListName', 'userId', 'swimlaneName', 'cardTitle'],
},
archivedCard:{
- matchingFields: ['boardId', 'userId'],
+ matchingFields: ['boardId', 'userId', 'cardTitle'],
},
restoredCard:{
- matchingFields: ['boardId', 'userId'],
+ matchingFields: ['boardId', 'userId', 'cardTitle'],
},
joinMember:{
matchingFields: ['boardId', 'username', 'userId'],