From 477d71e0b90d15b54945a1a04cb0a649344075ae Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Tue, 12 Feb 2019 23:40:12 +0100 Subject: [PATCH 01/17] Fixes --- build/config.gypi | 70 +++++++++++++++++++ client/components/boards/boardsList.jade | 2 + client/components/boards/boardsList.js | 15 ++++ .../rules/triggers/boardTriggers.jade | 3 +- .../rules/triggers/boardTriggers.js | 6 +- logs.txt | 29 ++++++++ models/cards.js | 1 + models/export.js | 28 +++----- models/import.js | 18 +++++ models/wekanCreator.js | 25 +++++++ models/wekanmapper.js | 24 +++++++ server/rulesHelper.js | 4 +- server/triggersDef.js | 6 +- 13 files changed, 207 insertions(+), 24 deletions(-) create mode 100644 build/config.gypi create mode 100644 logs.txt create mode 100644 models/wekanmapper.js diff --git a/build/config.gypi b/build/config.gypi new file mode 100644 index 000000000..760db73d5 --- /dev/null +++ b/build/config.gypi @@ -0,0 +1,70 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [] + }, + "variables": { + "asan": 0, + "build_v8_with_gn": "false", + "coverage": "false", + "debug_nghttp2": "false", + "enable_lto": "false", + "enable_pgo_generate": "false", + "enable_pgo_use": "false", + "force_dynamic_crt": 0, + "host_arch": "x64", + "icu_gyp_path": "tools/icu/icu-system.gyp", + "icu_small": "false", + "icu_ver_major": "63", + "llvm_version": "0", + "node_byteorder": "little", + "node_debug_lib": "false", + "node_enable_d8": "false", + "node_enable_v8_vtunejit": "false", + "node_experimental_http_parser": "false", + "node_install_npm": "false", + "node_module_version": 67, + "node_no_browser_globals": "false", + "node_prefix": "/usr/local/Cellar/node/11.6.0", + "node_release_urlbase": "", + "node_shared": "false", + "node_shared_cares": "false", + "node_shared_http_parser": "false", + "node_shared_libuv": "false", + "node_shared_nghttp2": "false", + "node_shared_openssl": "false", + "node_shared_zlib": "false", + "node_tag": "", + "node_target_type": "executable", + "node_use_bundled_v8": "true", + "node_use_dtrace": "true", + "node_use_etw": "false", + "node_use_large_pages": "false", + "node_use_openssl": "true", + "node_use_pch": "false", + "node_use_v8_platform": "true", + "node_with_ltcg": "false", + "node_without_node_options": "false", + "openssl_fips": "", + "shlib_suffix": "67.dylib", + "target_arch": "x64", + "v8_enable_gdbjit": 0, + "v8_enable_i18n_support": 1, + "v8_enable_inspector": 1, + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 1, + "v8_promise_internal_field_count": 1, + "v8_random_seed": 0, + "v8_trace_maps": 0, + "v8_typed_array_max_size_in_heap": 0, + "v8_use_snapshot": "true", + "want_separate_host_toolset": 0, + "xcode_version": "10.0", + "nodedir": "/Users/angtrim/.node-gyp/11.6.0", + "standalone_static_library": 1 + } +} diff --git a/client/components/boards/boardsList.jade b/client/components/boards/boardsList.jade index 89852570d..109c25ed9 100644 --- a/client/components/boards/boardsList.jade +++ b/client/components/boards/boardsList.jade @@ -22,6 +22,8 @@ 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") if hasSpentTimeCards i.fa.js-has-spenttime-cards( diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js index 1ed881467..68f4a1dce 100644 --- a/client/components/boards/boardsList.js +++ b/client/components/boards/boardsList.js @@ -42,6 +42,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/rules/triggers/boardTriggers.jade b/client/components/rules/triggers/boardTriggers.jade index b8c11d694..ff1406f65 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 d4b9b81c3..1dc5c4371 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/logs.txt b/logs.txt new file mode 100644 index 000000000..2f3fa7464 --- /dev/null +++ b/logs.txt @@ -0,0 +1,29 @@ +[[[[[ ~/Projects/wekan ]]]]] + +=> Started proxy. +=> A patch (Meteor 1.6.1.4) for your current release is available! + Update this project now with 'meteor update --patch'. +=> Started MongoDB. +I20190104-18:05:07.115(1)? Presence started serverId=5obj8Jf6oCDspWgMz +W20190104-18:05:07.463(1)? (STDERR) Note: you are using a pure-JavaScript implementation of bcrypt. +W20190104-18:05:07.464(1)? (STDERR) While this implementation will work correctly, it is known to be +W20190104-18:05:07.464(1)? (STDERR) approximately three times slower than the native implementation. +W20190104-18:05:07.465(1)? (STDERR) In order to use the native implementation instead, run +W20190104-18:05:07.465(1)? (STDERR)  +W20190104-18:05:07.466(1)? (STDERR)  meteor npm install --save bcrypt +W20190104-18:05:07.466(1)? (STDERR)  +W20190104-18:05:07.467(1)? (STDERR) in the root directory of your application. +=> Started your app. + +=> App running at: http://localhost:3000/ +=> Server modified -- restarting... I20190104-18:06:15.969(1)? Presence started serverId=XNprswJmWsvaCxBEb +W20190104-18:06:16.274(1)? (STDERR) Note: you are using a pure-JavaScript implementation of bcrypt. +W20190104-18:06:16.275(1)? (STDERR) While this implementation will work correctly, it is known to be +W20190104-18:06:16.276(1)? (STDERR) approximately three times slower than the native implementation. +W20190104-18:06:16.276(1)? (STDERR) In order to use the native implementation instead, run +W20190104-18:06:16.277(1)? (STDERR)  +W20190104-18:06:16.277(1)? (STDERR)  meteor npm install --save bcrypt +W20190104-18:06:16.278(1)? (STDERR)  +W20190104-18:06:16.278(1)? (STDERR) in the root directory of your application. +=> Meteor server restarted +=> Client modified -- refreshing \ No newline at end of file diff --git a/models/cards.js b/models/cards.js index ff19a9a0e..9b93bd7c7 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1239,6 +1239,7 @@ function cardMove(userId, doc, fieldNames, oldListId, oldSwimlaneId) { listId: doc.listId, boardId: doc.boardId, cardId: doc._id, + cardTitle:doc.title, swimlaneName: Swimlanes.findOne(doc.swimlaneId).title, swimlaneId: doc.swimlaneId, oldSwimlaneId, diff --git a/models/export.js b/models/export.js index 76f2da06a..21710067f 100644 --- a/models/export.js +++ b/models/export.js @@ -6,38 +6,32 @@ 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) { + console.error("LOGG API"); 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); - if (exporter.canExport(user)) { + if (true||exporter.canExport(user)) { JsonRoutes.sendResult(res, { code: 200, data: exporter.build(), @@ -50,7 +44,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 5cdf8dc12..c73959b71 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,19 @@ 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); + let data = exporter.build(); + let addData = {}; + addData.membersMapping = wekanMembersMapper.getMembersToMap(data); + const creator = new WekanCreator(addData); + return creator.create(data, currentBoardId); + }, +}); + + + diff --git a/models/wekanCreator.js b/models/wekanCreator.js index 2d3ec5de4..acf77734d 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 000000000..f4c110f76 --- /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/server/rulesHelper.js b/server/rulesHelper.js index 163bd41ee..5bad7c2e7 100644 --- a/server/rulesHelper.js +++ b/server/rulesHelper.js @@ -139,13 +139,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 Date: Tue, 2 Apr 2019 06:32:34 -0700 Subject: [PATCH 02/17] Add license scan report and status Signed-off-by: fossabot --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 075cda828..324d310b0 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 From a974ec9dee6fa376467d7db0f92fd9d3e4cc4e6d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Thu, 4 Apr 2019 20:22:25 +0300 Subject: [PATCH 03/17] Update translations. --- i18n/de.i18n.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 86a091ebb..babd12c94 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", From 4bc3acb14d9c226c30da9b72ca5988d75f083ddf Mon Sep 17 00:00:00 2001 From: chotaire Date: Fri, 5 Apr 2019 02:59:35 +0200 Subject: [PATCH 04/17] Add proper variables for unjoin card --- models/cards.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/models/cards.js b/models/cards.js index 124883543..047a760ed 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1403,6 +1403,9 @@ function cardMembers(userId, doc, fieldNames, modifier) { activityType: 'unjoinMember', boardId: doc.boardId, cardId: doc._id, + memberId, + listId: doc.listId, + swimlaneId: doc.swimlaneId, }); } } From 8aca82a5939273fd7d4fce4aa4855dea7b4fde6f Mon Sep 17 00:00:00 2001 From: hupptechnologies Date: Fri, 5 Apr 2019 13:27:41 +0530 Subject: [PATCH 05/17] Issue: Center (or reduce left margin) in card view on mobile browser #2188 Resolved #2188 --- .meteor/packages | 8 ++++---- .meteor/versions | 9 --------- client/components/cards/cardDetails.styl | 3 ++- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index 9a3f9bcae..b9b7ba818 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -31,9 +31,9 @@ kenton:accounts-sandstorm service-configuration@1.0.11 useraccounts:unstyled useraccounts:flow-routing -wekan:wekan-ldap -wekan:accounts-cas -wekan-accounts-oidc +#wekan:wekan-ldap +#wekan:accounts-cas +#wekan-accounts-oidc # Utilities check@1.2.5 @@ -87,7 +87,7 @@ momentjs:moment@2.22.2 browser-policy-framing mquandalle:moment msavin:usercache -wekan-scrollbar +#wekan-scrollbar mquandalle:perfect-scrollbar mdg:meteor-apm-agent meteorhacks:unblock diff --git a/.meteor/versions b/.meteor/versions index 390cda637..72c1fd554 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,6 +1,5 @@ 3stack:presence@1.1.2 accounts-base@1.4.0 -accounts-oauth@1.1.15 accounts-password@1.5.0 aldeed:collection2@2.10.0 aldeed:collection2-core@1.2.0 @@ -122,8 +121,6 @@ mquandalle:perfect-scrollbar@0.6.5_2 msavin:usercache@1.0.0 npm-bcrypt@0.9.3 npm-mongo@2.2.33 -oauth@1.2.1 -oauth2@1.2.0 observe-sequence@1.0.16 ongoworks:speakingurl@1.1.0 ordered-dict@1.0.9 @@ -179,10 +176,4 @@ useraccounts:unstyled@1.14.2 verron:autosize@3.0.8 webapp@1.4.0 webapp-hashing@1.0.9 -wekan-accounts-oidc@1.0.10 -wekan-oidc@1.0.12 -wekan-scrollbar@3.1.3 -wekan:accounts-cas@0.1.0 -wekan:wekan-ldap@0.0.2 -yasaricli:slugify@0.0.7 zimme:active-route@2.3.2 diff --git a/client/components/cards/cardDetails.styl b/client/components/cards/cardDetails.styl index bf50c0719..c1d6b7e14 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 From 48216e16537d50a27579c545c93624c0302a5a78 Mon Sep 17 00:00:00 2001 From: Angelo Gallarello Date: Fri, 5 Apr 2019 10:38:39 +0200 Subject: [PATCH 06/17] Minor fixes --- client/components/boards/boardsList.jade | 4 +--- client/components/boards/boardsList.styl | 13 +++++++++++++ i18n/en.i18n.json | 3 ++- models/export.js | 1 - models/import.js | 1 + 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/client/components/boards/boardsList.jade b/client/components/boards/boardsList.jade index 109c25ed9..753724fc4 100644 --- a/client/components/boards/boardsList.jade +++ b/client/components/boards/boardsList.jade @@ -22,9 +22,7 @@ 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") - + i.fa.js-clone-board(class="fa-clone") 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.styl b/client/components/boards/boardsList.styl index 80e476855..9f0b204e7 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/i18n/en.i18n.json b/i18n/en.i18n.json index d4e817ea0..84975fde1 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -664,5 +664,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", + "copy-tag": "Copy" } diff --git a/models/export.js b/models/export.js index 21710067f..f7f2b7135 100644 --- a/models/export.js +++ b/models/export.js @@ -17,7 +17,6 @@ if (Meteor.isServer) { JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) { - console.error("LOGG API"); const boardId = req.params.boardId; let user = null; // todo XXX for real API, first look for token in Authentication: header diff --git a/models/import.js b/models/import.js index c73959b71..bf3a863ed 100644 --- a/models/import.js +++ b/models/import.js @@ -39,6 +39,7 @@ Meteor.methods({ let addData = {}; addData.membersMapping = wekanMembersMapper.getMembersToMap(data); const creator = new WekanCreator(addData); + data.title = data.title + " - " + TAPi18n.__('copy-tag'); return creator.create(data, currentBoardId); }, }); From a1fe22c08c157c6c795b008be3bf6b822497deb4 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 07:43:14 +0300 Subject: [PATCH 07/17] [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313). Thanks to chotaire. --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdfbba1cd..32f1a8198 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313). + Thanks to chotaire. + # v2.57 2019-04-02 Wekan release This release fixes the following bugs, thanks to justinr1234: From d1e13e48feb568ca89787c8b7f48c3c841bd25fc Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 07:47:08 +0300 Subject: [PATCH 08/17] Restore original meteor packages and versions. Thanks to xet7 ! --- .meteor/packages | 8 ++++---- .meteor/versions | 9 +++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index b9b7ba818..9a3f9bcae 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -31,9 +31,9 @@ kenton:accounts-sandstorm service-configuration@1.0.11 useraccounts:unstyled useraccounts:flow-routing -#wekan:wekan-ldap -#wekan:accounts-cas -#wekan-accounts-oidc +wekan:wekan-ldap +wekan:accounts-cas +wekan-accounts-oidc # Utilities check@1.2.5 @@ -87,7 +87,7 @@ momentjs:moment@2.22.2 browser-policy-framing mquandalle:moment msavin:usercache -#wekan-scrollbar +wekan-scrollbar mquandalle:perfect-scrollbar mdg:meteor-apm-agent meteorhacks:unblock diff --git a/.meteor/versions b/.meteor/versions index 72c1fd554..390cda637 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,5 +1,6 @@ 3stack:presence@1.1.2 accounts-base@1.4.0 +accounts-oauth@1.1.15 accounts-password@1.5.0 aldeed:collection2@2.10.0 aldeed:collection2-core@1.2.0 @@ -121,6 +122,8 @@ mquandalle:perfect-scrollbar@0.6.5_2 msavin:usercache@1.0.0 npm-bcrypt@0.9.3 npm-mongo@2.2.33 +oauth@1.2.1 +oauth2@1.2.0 observe-sequence@1.0.16 ongoworks:speakingurl@1.1.0 ordered-dict@1.0.9 @@ -176,4 +179,10 @@ useraccounts:unstyled@1.14.2 verron:autosize@3.0.8 webapp@1.4.0 webapp-hashing@1.0.9 +wekan-accounts-oidc@1.0.10 +wekan-oidc@1.0.12 +wekan-scrollbar@3.1.3 +wekan:accounts-cas@0.1.0 +wekan:wekan-ldap@0.0.2 +yasaricli:slugify@0.0.7 zimme:active-route@2.3.2 From 959392f8159c9aaf0d5bda92741b23c7a1b1a23f Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 07:57:30 +0300 Subject: [PATCH 09/17] [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314). Thanks to hupptechnologies ! --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32f1a8198..2d09c25d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This release 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. + +Thanks to above GitHub users for their contributions and translators for their translations. # v2.57 2019-04-02 Wekan release From 217b3ae48879c356d40e4281cceac5b38e67bb16 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 08:11:08 +0300 Subject: [PATCH 10/17] Remove not needed ARGS from Dockerfile to reduce amount of Docker layers. Thanks to folhabranca ! Closes #2301 --- Dockerfile | 94 ------------------------------------------------------ 1 file changed, 94 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3a81a4725..73f8e4bc7 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" From b680bb53725103f186ac1c7cb604fbd4a5773051 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 08:14:37 +0300 Subject: [PATCH 11/17] - [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301). Thanks to folhabranca ! Closes #2301 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d09c25d4..a90a8aa2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ This release fixes the following bugs: 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. Thanks to above GitHub users for their contributions and translators for their translations. From 972b9b6e9169b92c1a88bbc873313d7eead42f30 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 08:50:56 +0300 Subject: [PATCH 12/17] Remove extra files. Thanks to xet7 ! --- build/config.gypi | 70 ----------------------------------------------- logs.txt | 29 -------------------- 2 files changed, 99 deletions(-) delete mode 100644 build/config.gypi delete mode 100644 logs.txt diff --git a/build/config.gypi b/build/config.gypi deleted file mode 100644 index 760db73d5..000000000 --- a/build/config.gypi +++ /dev/null @@ -1,70 +0,0 @@ -# Do not edit. File was generated by node-gyp's "configure" step -{ - "target_defaults": { - "cflags": [], - "default_configuration": "Release", - "defines": [], - "include_dirs": [], - "libraries": [] - }, - "variables": { - "asan": 0, - "build_v8_with_gn": "false", - "coverage": "false", - "debug_nghttp2": "false", - "enable_lto": "false", - "enable_pgo_generate": "false", - "enable_pgo_use": "false", - "force_dynamic_crt": 0, - "host_arch": "x64", - "icu_gyp_path": "tools/icu/icu-system.gyp", - "icu_small": "false", - "icu_ver_major": "63", - "llvm_version": "0", - "node_byteorder": "little", - "node_debug_lib": "false", - "node_enable_d8": "false", - "node_enable_v8_vtunejit": "false", - "node_experimental_http_parser": "false", - "node_install_npm": "false", - "node_module_version": 67, - "node_no_browser_globals": "false", - "node_prefix": "/usr/local/Cellar/node/11.6.0", - "node_release_urlbase": "", - "node_shared": "false", - "node_shared_cares": "false", - "node_shared_http_parser": "false", - "node_shared_libuv": "false", - "node_shared_nghttp2": "false", - "node_shared_openssl": "false", - "node_shared_zlib": "false", - "node_tag": "", - "node_target_type": "executable", - "node_use_bundled_v8": "true", - "node_use_dtrace": "true", - "node_use_etw": "false", - "node_use_large_pages": "false", - "node_use_openssl": "true", - "node_use_pch": "false", - "node_use_v8_platform": "true", - "node_with_ltcg": "false", - "node_without_node_options": "false", - "openssl_fips": "", - "shlib_suffix": "67.dylib", - "target_arch": "x64", - "v8_enable_gdbjit": 0, - "v8_enable_i18n_support": 1, - "v8_enable_inspector": 1, - "v8_no_strict_aliasing": 1, - "v8_optimized_debug": 1, - "v8_promise_internal_field_count": 1, - "v8_random_seed": 0, - "v8_trace_maps": 0, - "v8_typed_array_max_size_in_heap": 0, - "v8_use_snapshot": "true", - "want_separate_host_toolset": 0, - "xcode_version": "10.0", - "nodedir": "/Users/angtrim/.node-gyp/11.6.0", - "standalone_static_library": 1 - } -} diff --git a/logs.txt b/logs.txt deleted file mode 100644 index 2f3fa7464..000000000 --- a/logs.txt +++ /dev/null @@ -1,29 +0,0 @@ -[[[[[ ~/Projects/wekan ]]]]] - -=> Started proxy. -=> A patch (Meteor 1.6.1.4) for your current release is available! - Update this project now with 'meteor update --patch'. -=> Started MongoDB. -I20190104-18:05:07.115(1)? Presence started serverId=5obj8Jf6oCDspWgMz -W20190104-18:05:07.463(1)? (STDERR) Note: you are using a pure-JavaScript implementation of bcrypt. -W20190104-18:05:07.464(1)? (STDERR) While this implementation will work correctly, it is known to be -W20190104-18:05:07.464(1)? (STDERR) approximately three times slower than the native implementation. -W20190104-18:05:07.465(1)? (STDERR) In order to use the native implementation instead, run -W20190104-18:05:07.465(1)? (STDERR)  -W20190104-18:05:07.466(1)? (STDERR)  meteor npm install --save bcrypt -W20190104-18:05:07.466(1)? (STDERR)  -W20190104-18:05:07.467(1)? (STDERR) in the root directory of your application. -=> Started your app. - -=> App running at: http://localhost:3000/ -=> Server modified -- restarting... I20190104-18:06:15.969(1)? Presence started serverId=XNprswJmWsvaCxBEb -W20190104-18:06:16.274(1)? (STDERR) Note: you are using a pure-JavaScript implementation of bcrypt. -W20190104-18:06:16.275(1)? (STDERR) While this implementation will work correctly, it is known to be -W20190104-18:06:16.276(1)? (STDERR) approximately three times slower than the native implementation. -W20190104-18:06:16.276(1)? (STDERR) In order to use the native implementation instead, run -W20190104-18:06:16.277(1)? (STDERR)  -W20190104-18:06:16.277(1)? (STDERR)  meteor npm install --save bcrypt -W20190104-18:06:16.278(1)? (STDERR)  -W20190104-18:06:16.278(1)? (STDERR) in the root directory of your application. -=> Meteor server restarted -=> Client modified -- refreshing \ No newline at end of file From ebfc8e5a1bd4cbc5cf6e37a913bc8eb231566050 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 09:00:13 +0300 Subject: [PATCH 13/17] Fix lint errors. Thanks to xet7 ! --- client/components/boards/boardsList.js | 2 +- models/export.js | 2 +- models/import.js | 9 +++--- models/wekanCreator.js | 38 +++++++++++++------------- server/rulesHelper.js | 2 +- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js index ad28fee8a..8c45fbe28 100644 --- a/client/components/boards/boardsList.js +++ b/client/components/boards/boardsList.js @@ -67,7 +67,7 @@ BlazeComponent.extendComponent({ Utils.goBoardId(res); } } - ); + ); evt.preventDefault(); }, 'click .js-accept-invite'() { diff --git a/models/export.js b/models/export.js index d402efe38..49aac828d 100644 --- a/models/export.js +++ b/models/export.js @@ -30,7 +30,7 @@ if (Meteor.isServer) { } const exporter = new Exporter(boardId); - if (true||exporter.canExport(user)) { + if (exporter.canExport(user)) { JsonRoutes.sendResult(res, { code: 200, data: exporter.build(), diff --git a/models/import.js b/models/import.js index f70992827..ddc1a1d09 100644 --- a/models/import.js +++ b/models/import.js @@ -31,18 +31,17 @@ Meteor.methods({ }); Meteor.methods({ - cloneBoard(sourceBoardId,currentBoardId) { + cloneBoard(sourceBoardId, currentBoardId) { check(sourceBoardId, String); check(currentBoardId, Match.Maybe(String)); const exporter = new Exporter(sourceBoardId); - let data = exporter.build(); - let addData = {}; + 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 } - ${ TAPi18n.__('copy-tag')}`; return creator.create(data, currentBoardId); }, }); - diff --git a/models/wekanCreator.js b/models/wekanCreator.js index d0494a769..0f6a9d17b 100644 --- a/models/wekanCreator.js +++ b/models/wekanCreator.js @@ -173,25 +173,25 @@ export class WekanCreator { // 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; + 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) { diff --git a/server/rulesHelper.js b/server/rulesHelper.js index 4c8ec4fa4..197e3756f 100644 --- a/server/rulesHelper.js +++ b/server/rulesHelper.js @@ -141,7 +141,7 @@ RulesHelper = { Swimlanes.insert({ title: action.swimlaneName, boardId, - sort: 0 + sort: 0, }); } if(action.actionType === 'addChecklistWithItems'){ From 93a5bb2baa546d3c0c51a10e429db0c2e2e1482a Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 09:19:33 +0300 Subject: [PATCH 14/17] Add the following new features: - [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225. Thanks to Angtrim. Closes #2257. and fix the following bugs: - [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225). Thanks to Angtrim. --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a90a8aa2f..9ee3cb197 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Upcoming Wekan release +This release adds the following new features: + +- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225. + Thanks to Angtrim. + This release fixes the following bugs: - [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313). @@ -8,6 +13,8 @@ This release fixes the following bugs: 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. +- [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. From 0f15b6d1982c383f76e8411cb501ff27e8febd42 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 13:47:15 +0300 Subject: [PATCH 15/17] - Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board. Thanks to xet7 ! --- client/components/boards/boardsList.jade | 4 +++- i18n/ar.i18n.json | 3 ++- i18n/bg.i18n.json | 3 ++- i18n/br.i18n.json | 3 ++- i18n/ca.i18n.json | 3 ++- i18n/cs.i18n.json | 3 ++- i18n/da.i18n.json | 3 ++- i18n/de.i18n.json | 3 ++- i18n/el.i18n.json | 3 ++- i18n/en-GB.i18n.json | 3 ++- i18n/en.i18n.json | 2 +- i18n/eo.i18n.json | 3 ++- i18n/es-AR.i18n.json | 3 ++- i18n/es.i18n.json | 3 ++- i18n/eu.i18n.json | 3 ++- i18n/fa.i18n.json | 3 ++- i18n/fi.i18n.json | 3 ++- i18n/fr.i18n.json | 3 ++- i18n/gl.i18n.json | 3 ++- i18n/he.i18n.json | 3 ++- i18n/hi.i18n.json | 3 ++- i18n/hu.i18n.json | 3 ++- i18n/hy.i18n.json | 3 ++- i18n/id.i18n.json | 3 ++- i18n/ig.i18n.json | 3 ++- i18n/it.i18n.json | 3 ++- i18n/ja.i18n.json | 3 ++- i18n/ka.i18n.json | 3 ++- i18n/km.i18n.json | 3 ++- i18n/ko.i18n.json | 3 ++- i18n/lv.i18n.json | 3 ++- i18n/mk.i18n.json | 3 ++- i18n/mn.i18n.json | 3 ++- i18n/nb.i18n.json | 3 ++- i18n/nl.i18n.json | 3 ++- i18n/oc.i18n.json | 3 ++- i18n/pl.i18n.json | 3 ++- i18n/pt-BR.i18n.json | 3 ++- i18n/pt.i18n.json | 3 ++- i18n/ro.i18n.json | 3 ++- i18n/ru.i18n.json | 3 ++- i18n/sr.i18n.json | 3 ++- i18n/sv.i18n.json | 3 ++- i18n/sw.i18n.json | 3 ++- i18n/ta.i18n.json | 3 ++- i18n/th.i18n.json | 3 ++- i18n/tr.i18n.json | 3 ++- i18n/uk.i18n.json | 3 ++- i18n/vi.i18n.json | 3 ++- i18n/zh-CN.i18n.json | 3 ++- i18n/zh-TW.i18n.json | 3 ++- models/import.js | 3 ++- 52 files changed, 104 insertions(+), 52 deletions(-) diff --git a/client/components/boards/boardsList.jade b/client/components/boards/boardsList.jade index abb009f73..0da926ef5 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") + 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/i18n/ar.i18n.json b/i18n/ar.i18n.json index 926e04ff4..e63820461 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 1592bc08e..bca2c9151 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 065c1fa58..6a793d2c5 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 f93a60c90..170e8571e 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 c3a3eb050..8f1813150 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 00df0fdbf..94f0bc162 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 babd12c94..e76839bc8 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -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 2f6196935..230943dad 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 00b768690..3dab712e3 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 5217127e6..4e4af38bb 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -686,5 +686,5 @@ "error-ldap-login": "An error occurred while trying to login", "display-authentication-method": "Display Authentication Method", "default-authentication-method": "Default Authentication Method", - "copy-tag": "Copy" + "duplicate-board": "Duplicate Board" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 933f2a580..34fbc2832 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 a5c1fa962..b41236803 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 e09c68bb3..18bded971 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 7a3c5319c..6f1a2d317 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 5f7945272..dbf043739 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 72ff4ef6b..5790a27a4 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 f5b3faab8..9dd778d7b 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 47fbe947a..3158eb9df 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 489b4f61f..9818d9dae 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 514dfa2f8..b58b59117 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 229c9fb4f..aac675ca0 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 e15b7c37c..82e17c076 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 4d64b735a..291fc8943 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 8603ec13a..403766562 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 381766774..b089039f9 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 945d48eba..293262814 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 be5819dd5..2f870f011 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 ba8bcb3e5..b6c8f2726 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 d1cf878f7..1897495d4 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 158f1f1cd..6dc190853 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 10489c66c..0d96f00ba 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 9c4932b5f..1a8194093 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 f61dd08a1..098900a92 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 598aed994..7bb7602b1 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 6b62bbd1e..9c61d0c13 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 b8235f135..a1cf4da57 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 5d82d841b..f92a5305e 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 225b5adb0..42aa4c5eb 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 33564db8f..70fccc462 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 c677bd879..b02f22989 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 0244a0e44..2a5aee109 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 bd9c3a507..46cfa2fde 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 b82240fad..007d1fdb6 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 9473d1943..ef85bad87 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 17a54304e..6c8ea8e68 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 6f6264537..89ad2ac0c 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 79eec8474..d0298ea6e 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 9d1800214..028f1e66e 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 1fde84fb4..510243b34 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 0f14c4a93..9cc6878de 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/import.js b/models/import.js index ddc1a1d09..5e4336690 100644 --- a/models/import.js +++ b/models/import.js @@ -39,7 +39,8 @@ Meteor.methods({ const addData = {}; addData.membersMapping = wekanMembersMapper.getMembersToMap(data); const creator = new WekanCreator(addData); - data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`; + //data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`; + data.title = `${data.title}`; return creator.create(data, currentBoardId); }, }); From 53e76288cb7cb7d13ac6ff6bc112e30163fa431b Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 13:52:05 +0300 Subject: [PATCH 16/17] [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42). Thanks to xet7 ! --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ee3cb197..0a8cb2007 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,17 @@ 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. -This release fixes the following bugs: +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. + Thanks to folhabranca and xet7. - [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225). Thanks to Angtrim. From ad241b9f846cefa14dec6fd979870a715d774705 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 6 Apr 2019 13:54:32 +0300 Subject: [PATCH 17/17] v2.58 --- CHANGELOG.md | 2 +- Stackerfile.yml | 2 +- package.json | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a8cb2007..9fd8ec461 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v2.58 2019-04-06 Wekan release This release adds the following new features: diff --git a/Stackerfile.yml b/Stackerfile.yml index 0b53ab880..f01bea820 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/package.json b/package.json index 690b5cc33..d868f244b 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 7a3b55d80..b47cf8b26 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,