From 72e905675da64d403c2b9a5c51deb01d9084af85 Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 13:41:21 +0100 Subject: Removes the dropdown for the authentication method --- client/components/main/layouts.jade | 1 - client/components/main/layouts.js | 90 +++++++++++------------- client/components/settings/connectionMethod.jade | 6 -- client/components/settings/connectionMethod.js | 34 --------- 4 files changed, 41 insertions(+), 90 deletions(-) delete mode 100644 client/components/settings/connectionMethod.jade delete mode 100644 client/components/settings/connectionMethod.js diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index 55ee2686..1c22fee6 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -23,7 +23,6 @@ template(name="userFormsLayout") br section.auth-dialog +Template.dynamic(template=content) - +connectionMethod if isCas .at-form button#cas(class='at-btn submit' type='submit') {{casSignInLabel}} diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index a50d167e..7c060ca5 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -6,29 +6,14 @@ const i18nTagToT9n = (i18nTag) => { return i18nTag; }; -const validator = { - set(obj, prop, value) { - if (prop === 'state' && value !== 'signIn') { - $('.at-form-authentication').hide(); - } else if (prop === 'state' && value === 'signIn') { - $('.at-form-authentication').show(); - } - // The default behavior to store the value - obj[prop] = value; - // Indicate success - return true; - }, -}; - -Template.userFormsLayout.onCreated(() => { +Template.userFormsLayout.onCreated(function() { + Meteor.call('getDefaultAuthenticationMethod', (error, result) => { + this.data.defaultAuthenticationMethod = new ReactiveVar(error ? undefined : result); + }); Meteor.subscribe('setting'); - }); Template.userFormsLayout.onRendered(() => { - - AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator); - const i18nTag = navigator.language; if (i18nTag) { T9n.setLanguage(i18nTagToT9n(i18nTag)); @@ -101,13 +86,11 @@ Template.userFormsLayout.events({ } }); }, - 'click #at-btn'(event) { - /* All authentication method can be managed/called here. - !! DON'T FORGET to correctly fill the fields of the user during its creation if necessary authenticationMethod : String !! - */ - const authenticationMethodSelected = $('.select-authentication').val(); - // Local account - if (authenticationMethodSelected === 'password') { + 'click #at-btn'(event, instance) { + const email = $('#at-field-username_and_email').val(); + const password = $('#at-field-password').val(); + + if (FlowRouter.getRouteName() !== 'atSignIn' || password === '' || email === '') { return; } @@ -115,29 +98,11 @@ Template.userFormsLayout.events({ event.preventDefault(); event.stopImmediatePropagation(); - const email = $('#at-field-username_and_email').val(); - const password = $('#at-field-password').val(); - - // Ldap account - if (authenticationMethodSelected === 'ldap') { - // Check if the user can use the ldap connection - Meteor.subscribe('user-authenticationMethod', email, { - onReady() { - const user = Users.findOne(); - if (user === undefined || user.authenticationMethod === 'ldap') { - // Use the ldap connection package - Meteor.loginWithLDAP(email, password, function(error) { - if (!error) { - // Connection - return FlowRouter.go('/'); - } - return error; - }); - } - return this.stop(); - }, - }); - } + Meteor.subscribe('user-authenticationMethod', email, { + onReady() { + return authentication.call(this, instance, email, password); + }, + }); }, }); @@ -146,3 +111,30 @@ Template.defaultLayout.events({ Modal.close(); }, }); + +function authentication(instance, email, password) { + const user = Users.findOne(); + + // Authentication with password + if (user && user.authenticationMethod === 'password') { + $('#at-pwd-form').submit(); + return this.stop(); + } + + const authenticationMethod = user ? + user.authenticationMethod : + instance.data.defaultAuthenticationMethod.get(); + + // Authentication with LDAP + if (authenticationMethod === 'ldap') { + // Use the ldap connection package + Meteor.loginWithLDAP(email, password, function(error) { + if (!error) { + return FlowRouter.go('/'); + } + return error; + }); + } + + return this.stop(); +} diff --git a/client/components/settings/connectionMethod.jade b/client/components/settings/connectionMethod.jade deleted file mode 100644 index ac4c8c64..00000000 --- a/client/components/settings/connectionMethod.jade +++ /dev/null @@ -1,6 +0,0 @@ -template(name='connectionMethod') - div.at-form-authentication - label {{_ 'authentication-method'}} - select.select-authentication - each authentications - option(value="{{value}}") {{_ value}} diff --git a/client/components/settings/connectionMethod.js b/client/components/settings/connectionMethod.js deleted file mode 100644 index 9fe8f382..00000000 --- a/client/components/settings/connectionMethod.js +++ /dev/null @@ -1,34 +0,0 @@ -Template.connectionMethod.onCreated(function() { - this.authenticationMethods = new ReactiveVar([]); - - Meteor.call('getAuthenticationsEnabled', (_, result) => { - if (result) { - // TODO : add a management of different languages - // (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')}) - this.authenticationMethods.set([ - {value: 'password'}, - // Gets only the authentication methods availables - ...Object.entries(result).filter((e) => e[1]).map((e) => ({value: e[0]})), - ]); - } - - // If only the default authentication available, hides the select boxe - const content = $('.at-form-authentication'); - if (!(this.authenticationMethods.get().length > 1)) { - content.hide(); - } else { - content.show(); - } - }); -}); - -Template.connectionMethod.onRendered(() => { - // Moves the select boxe in the first place of the at-pwd-form div - $('.at-form-authentication').detach().prependTo('.at-pwd-form'); -}); - -Template.connectionMethod.helpers({ - authentications() { - return Template.instance().authenticationMethods.get(); - }, -}); -- cgit v1.2.3-1-g7c22 From 6b145bb3cca96c16e9b410b6597a3c010cdfe9d7 Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 13:42:51 +0100 Subject: Add a new env var to select the default authentication method --- Dockerfile | 4 +++- docker-compose-build.yml | 3 +++ docker-compose-postgresql.yml | 3 +++ docker-compose.yml | 3 +++ models/settings.js | 4 ++++ sandstorm-pkgdef.capnp | 3 ++- snap-src/bin/config | 7 ++++++- 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1383883e..b64b124a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -70,6 +70,7 @@ 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 @@ -142,7 +143,8 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth LOGOUT_IN="" \ LOGOUT_ON_HOURS="" \ LOGOUT_ON_MINUTES="" \ - CORS="" + CORS="" \ + DEFAULT_AUTHENTICATION_METHOD="" # Copy the app to the image COPY ${SRC_PATH} /home/wekan/app diff --git a/docker-compose-build.yml b/docker-compose-build.yml index a3ee2bd6..f75e7580 100644 --- a/docker-compose-build.yml +++ b/docker-compose-build.yml @@ -223,6 +223,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - wekandb diff --git a/docker-compose-postgresql.yml b/docker-compose-postgresql.yml index ab15d978..2f557fa5 100644 --- a/docker-compose-postgresql.yml +++ b/docker-compose-postgresql.yml @@ -245,6 +245,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - mongodb diff --git a/docker-compose.yml b/docker-compose.yml index 0cb58cff..bb2f833d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -212,6 +212,9 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # example : DEFAULT_AUTHENTICATION_METHOD=ldap + #- DEFAULT_AUTHENTICATION_METHOD= depends_on: - wekandb diff --git a/models/settings.js b/models/settings.js index bfd844b0..97bbe878 100644 --- a/models/settings.js +++ b/models/settings.js @@ -260,5 +260,9 @@ if (Meteor.isServer) { cas: isCasEnabled(), }; }, + + getDefaultAuthenticationMethod() { + return process.env.DEFAULT_AUTHENTICATION_METHOD; + } }); } diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index f0f4cc71..720ce87c 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -254,6 +254,7 @@ const myCommand :Spk.Manifest.Command = ( (key = "OAUTH2_TOKEN_ENDPOINT", value=""), (key = "LDAP_ENABLE", value="false"), (key = "SANDSTORM", value = "1"), - (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}") + (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}"), + (key = "DEFAULT_AUTHENTICATION_METHOD", value = "") ] ); diff --git a/snap-src/bin/config b/snap-src/bin/config index 92532978..0cd3f298 100755 --- a/snap-src/bin/config +++ b/snap-src/bin/config @@ -3,7 +3,7 @@ # All supported keys are defined here together with descriptions and default values # list of supported keys -keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES" +keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD" # default values DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\ @@ -289,3 +289,8 @@ KEY_LOGOUT_ON_HOURS="logout-on-hours" DESCRIPTION_LOGOUT_ON_MINUTES="The number of minutes" DEFAULT_LOGOUT_ON_MINUTES="" KEY_LOGOUT_ON_MINUTES="logout-on-minutes" + + +DESCRIPTION_DEFAULT_AUTHENTICATION_METHOD="The default authentication method used if a user does not exist to create and authenticate him" +DEFAULT_DEFAULT_AUTHENTICATION_METHOD="" +KEY_DEFAULT_AUTHENTICATION_METHOD="default-authentication-method" \ No newline at end of file -- cgit v1.2.3-1-g7c22 From d7529bf6b515375cbb089473c1e2cdca1ec61a3c Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 13:53:05 +0100 Subject: Add help message for the new env var in snap --- snap-src/bin/wekan-help | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help index 804f9ad6..b4835473 100755 --- a/snap-src/bin/wekan-help +++ b/snap-src/bin/wekan-help @@ -254,21 +254,25 @@ echo -e "Ldap Default Domain." echo -e "The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP:" echo -e "\t$ snap set $SNAP_NAME LDAP_DEFAULT_DOMAIN=''" echo -e "\n" -echo -e "Logout with timer." -echo -e "Enable or not the option that allows to disconnect an user after a given time:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_WITH_TIMER='true'" -echo -e "\n" -echo -e "Logout in." -echo -e "Logout in how many days:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_IN='1'" -echo -e "\n" -echo -e "Logout on hours." -echo -e "Logout in how many hours:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_HOURS='9'" -echo -e "\n" -echo -e "Logout on minutes." -echo -e "Logout in how many minutes:" -echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'" +# echo -e "Logout with timer." +# echo -e "Enable or not the option that allows to disconnect an user after a given time:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_WITH_TIMER='true'" +# echo -e "\n" +# echo -e "Logout in." +# echo -e "Logout in how many days:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_IN='1'" +# echo -e "\n" +# echo -e "Logout on hours." +# echo -e "Logout in how many hours:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_HOURS='9'" +# echo -e "\n" +# echo -e "Logout on minutes." +# echo -e "Logout in how many minutes:" +# echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'" +# echo -e "\n" +echo -e "Default authentication method." +echo -e "The default authentication method used if a user does not exist to create and authenticate him" +echo -e "\t$ snap set $SNAP_NAME DEFAULT_AUTHENTICATION_METHOD='ldap'" echo -e "\n" # parse config file for supported settings keys echo -e "wekan supports settings keys" -- cgit v1.2.3-1-g7c22 From 1712368f6a1ec07bad2c1edb17ae480397e0f45f Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 17:21:27 +0100 Subject: Improves UI for ldap error messages --- client/components/main/layouts.js | 41 ++++++++++++++++++++++++++------------- i18n/en.i18n.json | 4 +++- i18n/fr.i18n.json | 4 +++- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index 7c060ca5..abc8f6e1 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -121,20 +121,35 @@ function authentication(instance, email, password) { return this.stop(); } - const authenticationMethod = user ? - user.authenticationMethod : - instance.data.defaultAuthenticationMethod.get(); - - // Authentication with LDAP - if (authenticationMethod === 'ldap') { - // Use the ldap connection package - Meteor.loginWithLDAP(email, password, function(error) { - if (!error) { - return FlowRouter.go('/'); - } - return error; - }); + const authenticationMethod = user + ? user.authenticationMethod + : instance.data.defaultAuthenticationMethod.get(); + + switch (authenticationMethod) { + case 'ldap': + // Use the ldap connection package + Meteor.loginWithLDAP(email, password, function(error) { + if (!error) return FlowRouter.go('/'); + displayError('error-ldap-login'); + }); + break; + + default: + displayError('error-undefined'); } return this.stop(); } + +function displayError(code) { + const translated = TAPi18n.__(code); + + if (translated === code) { + return; + } + + if(!$('.at-error').length) { + $('.at-pwd-form').before('

'); + } + $('.at-error p').text(translated); +} \ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 5aa04e97..a4138f14 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -620,5 +620,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 98fade89..f2a7c5db 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -619,5 +619,7 @@ "layout": "Interface", "hide-logo": "Cacher le logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Une erreur inconnue s'est produite", + "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion" } \ No newline at end of file -- cgit v1.2.3-1-g7c22 From ff1c3722a87768378632e368bfe2c27cddd9ec23 Mon Sep 17 00:00:00 2001 From: guillaume Date: Wed, 19 Dec 2018 17:22:16 +0100 Subject: Patch currentBoard doesn't exist when logout --- client/components/main/editor.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/client/components/main/editor.js b/client/components/main/editor.js index 20ece562..8ea73793 100755 --- a/client/components/main/editor.js +++ b/client/components/main/editor.js @@ -9,10 +9,12 @@ Template.editor.onRendered(() => { match: /\B@([\w.]*)$/, search(term, callback) { const currentBoard = Boards.findOne(Session.get('currentBoard')); - callback(currentBoard.activeMembers().map((member) => { - const username = Users.findOne(member.userId).username; - return username.includes(term) ? username : null; - }).filter(Boolean)); + if (currentBoard) { + callback(currentBoard.activeMembers().map((member) => { + const username = Users.findOne(member.userId).username; + return username.includes(term) ? username : null; + }).filter(Boolean)); + } }, template(value) { return value; @@ -37,6 +39,9 @@ const at = HTML.CharRef({html: '@', str: '@'}); Blaze.Template.registerHelper('mentions', new Template('mentions', function() { const view = this; const currentBoard = Boards.findOne(Session.get('currentBoard')); + if (!currentBoard) { + return HTML.Raw(""); + } const knowedUsers = currentBoard.members.map((member) => { const u = Users.findOne(member.userId); if(u){ -- cgit v1.2.3-1-g7c22 From a9be6b17b9c8c6b4a59a89b9d3670cca1a6ed9af Mon Sep 17 00:00:00 2001 From: hupptechnologies Date: Thu, 20 Dec 2018 14:42:46 +0530 Subject: Issue : UI feature suggestion: drag handles and long press #1772 Resolved #1772 --- .meteor/packages | 6 +++--- .meteor/versions | 4 ---- client/components/cards/minicard.jade | 2 ++ client/components/cards/minicard.styl | 13 +++++++++++++ client/components/lists/list.js | 7 +++++++ 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index 88a0cae6..306cfc1c 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -86,7 +86,7 @@ momentjs:moment@2.22.2 browser-policy-framing mquandalle:moment msavin:usercache -wekan:wekan-ldap -wekan:accounts-cas -wekan-scrollbar +#wekan:wekan-ldap +#wekan:accounts-cas +#wekan-scrollbar mquandalle:perfect-scrollbar diff --git a/.meteor/versions b/.meteor/versions index e09ff33f..8c5c1569 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -179,8 +179,4 @@ useraccounts:unstyled@1.14.2 verron:autosize@3.0.8 webapp@1.4.0 webapp-hashing@1.0.9 -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/minicard.jade b/client/components/cards/minicard.jade index f23e91b3..0dfcee44 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -9,6 +9,8 @@ template(name="minicard") each labels .minicard-label(class="card-label-{{color}}" title="{{name}}") .minicard-title + .handle + .fa.fa-arrows if $eq 'prefix-with-full-path' currentBoard.presentParentTask .parent-prefix | {{ parentString ' > ' }} diff --git a/client/components/cards/minicard.styl b/client/components/cards/minicard.styl index 8fec7238..7ad51161 100644 --- a/client/components/cards/minicard.styl +++ b/client/components/cards/minicard.styl @@ -94,6 +94,19 @@ .minicard-custom-field-item max-width:50%; flex-grow:1; + .handle + width: 20px; + height: 20px; + position: absolute; + right: 5px; + top: 5px; + display:none; + @media only screen and (max-width: 1199px) { + display:block; + } + .fa-arrows + font-size:20px; + color: #ccc; .minicard-title p:last-child margin-bottom: 0 diff --git a/client/components/lists/list.js b/client/components/lists/list.js index 00908faa..043cb77c 100644 --- a/client/components/lists/list.js +++ b/client/components/lists/list.js @@ -26,6 +26,13 @@ BlazeComponent.extendComponent({ const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)'; const $cards = this.$('.js-minicards'); + + if(window.matchMedia('(max-width: 1199px)').matches) { + $( '.js-minicards' ).sortable({ + handle: '.handle', + }); + } + $cards.sortable({ connectWith: '.js-minicards:not(.js-list-full)', tolerance: 'pointer', -- cgit v1.2.3-1-g7c22 From b94bd73d33e39d7c2af15668dd15ea21edea5cc1 Mon Sep 17 00:00:00 2001 From: hupptechnologies Date: Thu, 20 Dec 2018 14:43:21 +0530 Subject: Uncommect packages --- .meteor/packages | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.meteor/packages b/.meteor/packages index 306cfc1c..88a0cae6 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -86,7 +86,7 @@ momentjs:moment@2.22.2 browser-policy-framing mquandalle:moment msavin:usercache -#wekan:wekan-ldap -#wekan:accounts-cas -#wekan-scrollbar +wekan:wekan-ldap +wekan:accounts-cas +wekan-scrollbar mquandalle:perfect-scrollbar -- cgit v1.2.3-1-g7c22 From 1e034a794fcf417a6722c8cc6dea8a537bc5ce51 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 19:47:34 +0200 Subject: - Update translated text. --- docker-compose-build.yml | 2 +- docker-compose-postgresql.yml | 2 +- docker-compose.yml | 2 +- snap-src/bin/config | 4 ++-- snap-src/bin/wekan-help | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose-build.yml b/docker-compose-build.yml index f75e7580..d7276948 100644 --- a/docker-compose-build.yml +++ b/docker-compose-build.yml @@ -223,7 +223,7 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= - # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap. # example : DEFAULT_AUTHENTICATION_METHOD=ldap #- DEFAULT_AUTHENTICATION_METHOD= diff --git a/docker-compose-postgresql.yml b/docker-compose-postgresql.yml index 2f557fa5..215dc7d5 100644 --- a/docker-compose-postgresql.yml +++ b/docker-compose-postgresql.yml @@ -245,7 +245,7 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= - # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. . Method can be password or ldap. # example : DEFAULT_AUTHENTICATION_METHOD=ldap #- DEFAULT_AUTHENTICATION_METHOD= diff --git a/docker-compose.yml b/docker-compose.yml index bb2f833d..7d7bf9d1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -212,7 +212,7 @@ services: # LOGOUT_ON_MINUTES : The number of minutes # example : LOGOUT_ON_MINUTES=55 #- LOGOUT_ON_MINUTES= - # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate him + # DEFAULT_AUTHENTICATION_METHOD : The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap. # example : DEFAULT_AUTHENTICATION_METHOD=ldap #- DEFAULT_AUTHENTICATION_METHOD= diff --git a/snap-src/bin/config b/snap-src/bin/config index 0cd3f298..7eb9a990 100755 --- a/snap-src/bin/config +++ b/snap-src/bin/config @@ -291,6 +291,6 @@ DEFAULT_LOGOUT_ON_MINUTES="" KEY_LOGOUT_ON_MINUTES="logout-on-minutes" -DESCRIPTION_DEFAULT_AUTHENTICATION_METHOD="The default authentication method used if a user does not exist to create and authenticate him" +DESCRIPTION_DEFAULT_AUTHENTICATION_METHOD="The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap." DEFAULT_DEFAULT_AUTHENTICATION_METHOD="" -KEY_DEFAULT_AUTHENTICATION_METHOD="default-authentication-method" \ No newline at end of file +KEY_DEFAULT_AUTHENTICATION_METHOD="default-authentication-method" diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help index b4835473..9c7a67a2 100755 --- a/snap-src/bin/wekan-help +++ b/snap-src/bin/wekan-help @@ -271,7 +271,7 @@ echo -e "\n" # echo -e "\t$ snap set $SNAP_NAME LOGOUT_ON_MINUTES='5'" # echo -e "\n" echo -e "Default authentication method." -echo -e "The default authentication method used if a user does not exist to create and authenticate him" +echo -e "The default authentication method used if a user does not exist to create and authenticate. Method can be password or ldap." echo -e "\t$ snap set $SNAP_NAME DEFAULT_AUTHENTICATION_METHOD='ldap'" echo -e "\n" # parse config file for supported settings keys -- cgit v1.2.3-1-g7c22 From dba9d13b00e3c1a69168ccc89ecc9c4f43e5e23c Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 20:11:32 +0200 Subject: Update translations. --- i18n/ar.i18n.json | 4 +++- i18n/bg.i18n.json | 4 +++- i18n/br.i18n.json | 4 +++- i18n/ca.i18n.json | 4 +++- i18n/cs.i18n.json | 22 ++++++++++++---------- i18n/da.i18n.json | 4 +++- i18n/de.i18n.json | 4 +++- i18n/el.i18n.json | 4 +++- i18n/en-GB.i18n.json | 4 +++- i18n/eo.i18n.json | 4 +++- i18n/es-AR.i18n.json | 4 +++- i18n/es.i18n.json | 4 +++- i18n/eu.i18n.json | 4 +++- i18n/fa.i18n.json | 4 +++- i18n/fi.i18n.json | 4 +++- i18n/fr.i18n.json | 26 +++++++++++++------------- i18n/gl.i18n.json | 4 +++- i18n/he.i18n.json | 4 +++- i18n/hi.i18n.json | 4 +++- i18n/hu.i18n.json | 4 +++- i18n/hy.i18n.json | 4 +++- i18n/id.i18n.json | 4 +++- i18n/ig.i18n.json | 4 +++- i18n/it.i18n.json | 4 +++- i18n/ja.i18n.json | 4 +++- i18n/ka.i18n.json | 4 +++- i18n/km.i18n.json | 4 +++- i18n/ko.i18n.json | 4 +++- i18n/lv.i18n.json | 4 +++- i18n/mn.i18n.json | 4 +++- i18n/nb.i18n.json | 4 +++- i18n/nl.i18n.json | 4 +++- i18n/pl.i18n.json | 4 +++- i18n/pt-BR.i18n.json | 4 +++- i18n/pt.i18n.json | 4 +++- i18n/ro.i18n.json | 4 +++- i18n/ru.i18n.json | 10 ++++++---- i18n/sr.i18n.json | 4 +++- i18n/sv.i18n.json | 4 +++- i18n/sw.i18n.json | 4 +++- i18n/ta.i18n.json | 4 +++- i18n/th.i18n.json | 4 +++- i18n/tr.i18n.json | 4 +++- i18n/uk.i18n.json | 4 +++- i18n/vi.i18n.json | 4 +++- i18n/zh-CN.i18n.json | 4 +++- i18n/zh-TW.i18n.json | 4 +++- 47 files changed, 163 insertions(+), 71 deletions(-) diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index e19f9b40..a2692e96 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index 22e3e770..f26a29c5 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index cc7cb39b..3a94b649 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index e43d799e..d39c6597 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index fe7d8303..c3775d42 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -1,6 +1,6 @@ { "accept": "Přijmout", - "act-activity-notify": "Activity Notification", + "act-activity-notify": "Notifikace aktivit", "act-addAttachment": "přiložen __attachment__ do __card__", "act-addSubtask": "added subtask __checklist__ to __card__", "act-addChecklist": "přidán checklist __checklist__ do __card__", @@ -78,7 +78,7 @@ "and-n-other-card": "A __count__ další karta(y)", "and-n-other-card_plural": "A __count__ dalších karet", "apply": "Použít", - "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "app-is-offline": "Načítá se, prosím čekejte. Obnovení stránky způsobí ztrátu dat. Pokud se načítání nedaří, zkontrolujte prosím server.", "archive": "Move to Archive", "archive-all": "Move All to Archive", "archive-board": "Move Board to Archive", @@ -283,20 +283,20 @@ "import-board": "Importovat tablo", "import-board-c": "Importovat tablo", "import-board-title-trello": "Import board from Trello", - "import-board-title-wekan": "Import board from previous export", + "import-board-title-wekan": "Importovat tablo z předchozího exportu", "import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.", "import-sandstorm-warning": "Importované tablo spaže všechny existující data v tablu a nahradí je importovaným tablem.", "from-trello": "Z Trella", - "from-wekan": "From previous export", + "from-wekan": "Z předchozího exportu", "import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text", - "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.", "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", "import-json-placeholder": "Sem vlož validní JSON data", "import-map-members": "Mapovat členy", - "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.", "import-show-user-mapping": "Zkontrolovat namapování členů", - "import-user-select": "Pick your existing user you want to use as this member", - "importMapMembersAddPopup-title": "Select member", + "import-user-select": "Vyberte existující uživatelský účet, kterého chcete použít pro tuto osobu", + "importMapMembersAddPopup-title": "Zvolte osobu", "info": "Verze", "initials": "Iniciály", "invalid-date": "Neplatné datum", @@ -460,7 +460,7 @@ "send-smtp-test": "Poslat si zkušební email.", "invitation-code": "Kód pozvánky", "email-invite-register-subject": "__inviter__ odeslal pozvánku", - "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", + "email-invite-register-text": "Ahoj __user__,\n\n__inviter__ tě přizval do kanban boardu ke spolupráci.\n\nNásleduj prosím odkaz níže:\n\n__url__\n\nKód Tvé pozvánky je: __icode__\n\nDěkujeme.", "email-smtp-test-subject": "SMTP Test Email", "email-smtp-test-text": "Email byl úspěšně odeslán", "error-invitation-code-not-exist": "Kód pozvánky neexistuje.", @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index 930f9181..f73389d1 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index db620dd6..97288727 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Verstecke Logo", "add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach Anfang hinzu", - "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor Ende hinzu" + "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor Ende hinzu", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index 1534d835..5fafb43e 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 3b4172df..0899b113 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 3613008e..4fdb7fab 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 822c2b7a..0b854479 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 1313e252..7d37a331 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -619,5 +619,7 @@ "layout": "Disñeo", "hide-logo": "Ocultar logo", "add-custom-html-after-body-start": "Añade HTML personalizado después de ", - "add-custom-html-before-body-end": "Añade HTML personalizado después de " + "add-custom-html-before-body-end": "Añade HTML personalizado después de ", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index d2a6e68c..e12e0f19 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index fded3329..e72048d8 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -619,5 +619,7 @@ "layout": "لایه", "hide-logo": "مخفی سازی نماد", "add-custom-html-after-body-start": "افزودن کد های HTML بعد از شروع", - "add-custom-html-before-body-end": "افزودن کد های HTML قبل از پایان" + "add-custom-html-before-body-end": "افزودن کد های HTML قبل از پایان", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index b5a5d025..9f2432b4 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -619,5 +619,7 @@ "layout": "Ulkoasu", "hide-logo": "Piilota Logo", "add-custom-html-after-body-start": "Lisää HTML alun jälkeen", - "add-custom-html-before-body-end": "Lisä HTML ennen loppua" + "add-custom-html-before-body-end": "Lisä HTML ennen loppua", + "error-undefined": "Jotain meni pieleen", + "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään" } \ No newline at end of file diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index f2a7c5db..db70770d 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -1,6 +1,6 @@ { "accept": "Accepter", - "act-activity-notify": "Activity Notification", + "act-activity-notify": "Notification d'activité", "act-addAttachment": "a joint __attachment__ à __card__", "act-addSubtask": "a ajouté une sous-tâche __checklist__ à __card__", "act-addChecklist": "a ajouté la checklist __checklist__ à __card__", @@ -78,7 +78,7 @@ "and-n-other-card": "Et __count__ autre carte", "and-n-other-card_plural": "Et __count__ autres cartes", "apply": "Appliquer", - "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "app-is-offline": "Chargement en cours, veuillez patienter. Vous risquez de perdre des données si vous rechargez la page. Si le chargement échoue, veuillez vérifier que le serveur n'est pas arrêté.", "archive": "Archiver", "archive-all": "Tout archiver", "archive-board": "Archiver le tableau", @@ -283,20 +283,20 @@ "import-board": "importer un tableau", "import-board-c": "Importer un tableau", "import-board-title-trello": "Importer le tableau depuis Trello", - "import-board-title-wekan": "Import board from previous export", - "import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.", + "import-board-title-wekan": "Importer le tableau depuis l'export précédent", + "import-sandstorm-backup-warning": "Ne supprimez pas les données que vous importez du tableau exporté d'origine ou de Trello avant de vérifier que la graine peut se fermer et s'ouvrir à nouveau, ou qu'une erreur \"Tableau introuvable\" survient, sinon vous perdrez vos données.", "import-sandstorm-warning": "Le tableau importé supprimera toutes les données du tableau et les remplacera avec celles du tableau importé.", "from-trello": "Depuis Trello", - "from-wekan": "From previous export", + "from-wekan": "Depuis un export précédent", "import-board-instruction-trello": "Dans votre tableau Trello, allez sur 'Menu', puis sur 'Plus', 'Imprimer et exporter', 'Exporter en JSON' et copiez le texte du résultat", - "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-wekan": "Dans votre tableau, allez dans 'Menu', puis 'Exporter un tableau', et copier le texte du fichier téléchargé.", "import-board-instruction-about-errors": "Si une erreur survient en important le tableau, il se peut que l'import ait fonctionné, et que le tableau se trouve sur la page \"Tous les tableaux\".", "import-json-placeholder": "Collez ici les données JSON valides", "import-map-members": "Faire correspondre aux membres", - "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map": "Le tableau que vous venez d'importer contient des membres. Veuillez associer les membres que vous souhaitez importer à vos utilisateurs.", "import-show-user-mapping": "Contrôler l'association des membres", - "import-user-select": "Pick your existing user you want to use as this member", - "importMapMembersAddPopup-title": "Select member", + "import-user-select": "Sélectionnez l'utilisateur existant que vous voulez associer à ce membre", + "importMapMembersAddPopup-title": "Sélectionner le membre", "info": "Version", "initials": "Initiales", "invalid-date": "Date invalide", @@ -460,8 +460,8 @@ "send-smtp-test": "Envoyer un mail de test à vous-même", "invitation-code": "Code d'invitation", "email-invite-register-subject": "__inviter__ vous a envoyé une invitation", - "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", - "email-smtp-test-subject": "SMTP Test Email", + "email-invite-register-text": "Cher __user__,\n\n__inviter__ vous invite à le rejoindre sur le tableau kanban pour collaborer.\n\nVeuillez suivre le lien ci-dessous :\n__url__\n\nVotre code d'invitation est : __icode__\n\nMerci.", + "email-smtp-test-subject": "Email de test SMTP", "email-smtp-test-text": "Vous avez envoyé un mail avec succès", "error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.", "error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.", @@ -618,8 +618,8 @@ "custom-product-name": "Nom personnalisé", "layout": "Interface", "hide-logo": "Cacher le logo", - "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end", + "add-custom-html-after-body-start": "Ajouter le HTML personnalisé après le début du ", + "add-custom-html-before-body-end": "Ajouter le HTML personnalisé avant la fin du ", "error-undefined": "Une erreur inconnue s'est produite", "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion" } \ No newline at end of file diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index 7302a65c..4a16edff 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 2b13e730..e18f4c57 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -619,5 +619,7 @@ "layout": "פריסה", "hide-logo": "הסתרת לוגו", "add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית בתחילת ה .", - "add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה." + "add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה.", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 17ab8655..ea4276d0 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 671e9ea5..0fc4d4ea 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index 403471ae..a0d91b42 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 2b67e996..e83a7c74 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Sembunyikan Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index f319d9ba..bbbbcc6d 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index 1e3cc86c..2b7c1e6b 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index b5728aca..2091a594 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index 4f80d1ea..d538eae8 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index 6b761777..e8d35789 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index aa46dc6b..91065b35 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index 9675b56b..999335a5 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index 1acbc6c3..647358fa 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index e26f86db..77f1d200 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index a71356bf..96ed163c 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index 6389b240..9c2e2ef0 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -619,5 +619,7 @@ "layout": "Układ strony", "hide-logo": "Ukryj logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index d9589518..2189381b 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index b15d2d66..fc98a27b 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index df2b9c36..a54e1fa0 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 40b7529c..26fbc32d 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -109,7 +109,7 @@ "boardChangeColorPopup-title": "Изменить фон доски", "boardChangeTitlePopup-title": "Переименовать доску", "boardChangeVisibilityPopup-title": "Изменить настройки видимости", - "boardChangeWatchPopup-title": "Изменить Отслеживание", + "boardChangeWatchPopup-title": "Режимы оповещения", "boardMenuPopup-title": "Меню доски", "boards": "Доски", "board-view": "Вид доски", @@ -341,7 +341,7 @@ "moveSelectionPopup-title": "Переместить выделение", "multi-selection": "Выбрать несколько", "multi-selection-on": "Выбрать несколько из", - "muted": "Заглушен", + "muted": "Не беспокоить", "muted-info": "Вы НИКОГДА не будете уведомлены ни о каких изменениях в этой доске.", "my-boards": "Мои доски", "name": "Имя", @@ -429,7 +429,7 @@ "view-it": "Просмотреть", "warn-list-archived": "внимание: эта карточка из списка, который находится в Архиве", "watch": "Следить", - "watching": "Отслеживается", + "watching": "Полный контроль", "watching-info": "Вы будете уведомлены об любых изменениях в этой доске.", "welcome-board": "Приветственная Доска", "welcome-swimlane": "Этап 1", @@ -619,5 +619,7 @@ "layout": "Внешний вид", "hide-logo": "Скрыть логотип", "add-custom-html-after-body-start": "Добавить HTML после начала ", - "add-custom-html-before-body-end": "Добавить HTML до завершения " + "add-custom-html-before-body-end": "Добавить HTML до завершения ", + "error-undefined": "Что-то пошло не так", + "error-ldap-login": "Ошибка при попытке авторизации" } \ No newline at end of file diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index c61a9948..7816ca29 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index dfb59e4e..87da07f9 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Dölj logotypen", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index 040c62b9..be53203f 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 9bfe4310..460f1f12 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index 3724db81..21965a72 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 7ed6a648..bf2d99ac 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -619,5 +619,7 @@ "layout": "Düzen", "hide-logo": "Logoyu Gizle", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 18ebc4b1..0c2ebbc2 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index 08e97a0e..4a9aaeb9 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index 76e062ce..35e9c280 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -619,5 +619,7 @@ "layout": "布局", "hide-logo": "隐藏LOGO", "add-custom-html-after-body-start": "添加定制的HTML在开始之前", - "add-custom-html-before-body-end": "添加定制的HTML在结束之后" + "add-custom-html-before-body-end": "添加定制的HTML在结束之后", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 570e878e..b2e7136a 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -619,5 +619,7 @@ "layout": "Layout", "hide-logo": "Hide Logo", "add-custom-html-after-body-start": "Add Custom HTML after start", - "add-custom-html-before-body-end": "Add Custom HTML before end" + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login" } \ No newline at end of file -- cgit v1.2.3-1-g7c22 From bd66ea8accf808b27737d6dd2e21ead1caf35ad0 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 20:16:35 +0200 Subject: Update translations (ru). --- i18n/ru.i18n.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 26fbc32d..7eda08cc 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -272,7 +272,7 @@ "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.", "filter-to-selection": "Filter to selection", "advanced-filter-label": "Расширенный фильтр", - "advanced-filter-description": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: == != <= >= && || ( ) Пробел используется как разделитель между Операторами. Вы можете фильтровать все настраиваемые поля, введя их имена и значения. Например: Поле1 == Значение1. Примечание. Если поля или значения содержат пробелы, вам необходимо взять их в одинарные кавычки. Например: 'Поле 1' == 'Значение 1'. Для одиночных управляющих символов (' \\/), которые нужно пропустить, вы можете использовать \\. Например: Field1 = I\\'m. Также вы можете комбинировать несколько условий. Например: F1 == V1 || F1 == V2. Обычно все операторы интерпретируются слева направо. Вы можете изменить порядок, разместив скобки. Например: F1 == V1 && (F2 == V2 || F2 == V3). Также вы можете искать текстовые поля с помощью регулярных выражений: F1 == /Tes.*/i", + "advanced-filter-description": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: == != <= >= && || ( ) Пробел используется как разделитель между операторами. Можно фильтровать все настраиваемые поля, вводя их имена и значения. Например: Поле1 == Значение1. Примечание. Если поля или значения содержат пробелы, нужно взять их в одинарные кавычки. Например: 'Поле 1' == 'Значение 1'. Для одиночных управляющих символов (' \\/), которые нужно пропустить, следует использовать \\. Например: Field1 = I\\'m. Также можно комбинировать несколько условий. Например: F1 == V1 || F1 == V2. Обычно все операторы интерпретируются слева направо, но можно изменить порядок, разместив скобки. Например: F1 == V1 && (F2 == V2 || F2 == V3). Также можно искать текстовые поля с помощью регулярных выражений: F1 == /Tes.*/i", "fullname": "Полное имя", "header-logo-title": "Вернуться к доскам.", "hide-system-messages": "Скрыть системные сообщения", -- cgit v1.2.3-1-g7c22 From 417dc9dc428db2fef14130d3de9a91e9efb1f717 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 20:36:26 +0200 Subject: Fix lint errors. --- client/components/main/editor.js | 2 +- client/components/main/layouts.js | 22 +++++++++++++--------- models/settings.js | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/client/components/main/editor.js b/client/components/main/editor.js index 8ea73793..152f69e2 100755 --- a/client/components/main/editor.js +++ b/client/components/main/editor.js @@ -40,7 +40,7 @@ Blaze.Template.registerHelper('mentions', new Template('mentions', function() { const view = this; const currentBoard = Boards.findOne(Session.get('currentBoard')); if (!currentBoard) { - return HTML.Raw(""); + return HTML.Raw(''); } const knowedUsers = currentBoard.members.map((member) => { const u = Users.findOne(member.userId); diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index abc8f6e1..89dcca2d 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -126,16 +126,20 @@ function authentication(instance, email, password) { : instance.data.defaultAuthenticationMethod.get(); switch (authenticationMethod) { - case 'ldap': - // Use the ldap connection package - Meteor.loginWithLDAP(email, password, function(error) { - if (!error) return FlowRouter.go('/'); + case 'ldap': + // Use the ldap connection package + Meteor.loginWithLDAP(email, password, function(error) { + if (error) { displayError('error-ldap-login'); - }); - break; + return this.stop(); + } else { + return FlowRouter.go('/'); + } + }); + break; - default: - displayError('error-undefined'); + default: + displayError('error-undefined'); } return this.stop(); @@ -152,4 +156,4 @@ function displayError(code) { $('.at-pwd-form').before('

'); } $('.at-error p').text(translated); -} \ No newline at end of file +} diff --git a/models/settings.js b/models/settings.js index 97bbe878..674c99a0 100644 --- a/models/settings.js +++ b/models/settings.js @@ -263,6 +263,6 @@ if (Meteor.isServer) { getDefaultAuthenticationMethod() { return process.env.DEFAULT_AUTHENTICATION_METHOD; - } + }, }); } -- cgit v1.2.3-1-g7c22 From 1f512c8ba1396f9c512f6b2bccd9ffe9417c4cf4 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 20:52:48 +0200 Subject: - [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown, and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce29cfb7..b444bf1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# Upcoming Wekan release + +This release adds the following new features: + +- [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown, + and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or + `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31 + +Thanks to above GitHub users for their contributions. + # v1.94 2018-12-18 Wekan version This release adds the following new features: -- cgit v1.2.3-1-g7c22 From 2f747fc09df4a08bcb6d5353a022f2a68aa70ed2 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 21:10:00 +0200 Subject: - Added removed packages back. Thanks to xet7 ! --- .meteor/versions | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.meteor/versions b/.meteor/versions index 8c5c1569..e09ff33f 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -179,4 +179,8 @@ useraccounts:unstyled@1.14.2 verron:autosize@3.0.8 webapp@1.4.0 webapp-hashing@1.0.9 +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 -- cgit v1.2.3-1-g7c22 From 16d53897c7dbee3ab041190a0ab043e1dfb49ac8 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 21:56:30 +0200 Subject: - [Drag handles and long press on mobile when using desktop mode of mobile browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b444bf1d..b5c46fb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ This release adds the following new features: - [Improve authentication](https://github.com/wekan/wekan/pull/2065): remove login dropdown, and add setting `DEFAULT_AUTHENTICATION_METHOD=ldap` or `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31 +- [Drag handles and long press on mobile when using desktop mode of mobile + browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies. Thanks to above GitHub users for their contributions. -- cgit v1.2.3-1-g7c22 From f7153da83d8378bc19b24344ddee013206568e3d Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 22:11:43 +0200 Subject: - Upgrade to node v8.14.1 Thanks to xet7 ! --- Dockerfile | 2 +- rebuild-wekan.sh | 4 ++-- releases/virtualbox/rebuild-wekan.sh | 4 ++-- snapcraft.yaml | 2 +- stacksmith/user-scripts/build.sh | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index b64b124a..896012f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -76,7 +76,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD # DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 # ENV BUILD_DEPS="paxctl" ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7" \ - NODE_VERSION=v8.14.0 \ + NODE_VERSION=v8.14.1 \ METEOR_RELEASE=1.6.0.1 \ USE_EDGE=false \ METEOR_EDGE=1.5-beta.17 \ diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh index bb6456de..37e46f29 100755 --- a/rebuild-wekan.sh +++ b/rebuild-wekan.sh @@ -4,7 +4,7 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." echo " You can still use any other locale as your main locale." -X64NODE="https://nodejs.org/dist/v8.14.0/node-v8.14.0-linux-x64.tar.gz" +X64NODE="https://nodejs.org/dist/v8.14.1/node-v8.14.1-linux-x64.tar.gz" function pause(){ read -p "$*" @@ -74,7 +74,7 @@ do sudo apt install -y build-essential git curl wget # sudo apt -y install nodejs npm # npm_call -g install n -# sudo n 8.14.0 +# sudo n 8.14.1 fi # if [ "$(grep -Ei 'debian' /etc/*release)" ]; then diff --git a/releases/virtualbox/rebuild-wekan.sh b/releases/virtualbox/rebuild-wekan.sh index 64e4fbea..a6135526 100755 --- a/releases/virtualbox/rebuild-wekan.sh +++ b/releases/virtualbox/rebuild-wekan.sh @@ -4,7 +4,7 @@ echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." echo " You can still use any other locale as your main locale." -X64NODE="https://releases.wekan.team/node-v8.14.0-linux-x64.tar.gz" +X64NODE="https://nodejs.org/dist/v8.14.1/node-v8.14.1-linux-x64.tar.gz" function pause(){ read -p "$*" @@ -25,7 +25,7 @@ do sudo apt install -y build-essential git curl wget sudo apt -y install nodejs npm sudo npm -g install n - sudo n 8.14.0 + sudo n 8.14.1 fi if [ "$(grep -Ei 'debian' /etc/*release)" ]; then diff --git a/snapcraft.yaml b/snapcraft.yaml index d7cd86cf..4831f150 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -81,7 +81,7 @@ parts: wekan: source: . plugin: nodejs - node-engine: 8.14.0 + node-engine: 8.14.1 node-packages: - node-gyp - node-pre-gyp diff --git a/stacksmith/user-scripts/build.sh b/stacksmith/user-scripts/build.sh index 8ea6cd91..f589bd82 100755 --- a/stacksmith/user-scripts/build.sh +++ b/stacksmith/user-scripts/build.sh @@ -2,7 +2,7 @@ set -euxo pipefail BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA" -NODE_VERSION=v8.14.0 +NODE_VERSION=v8.14.1 #METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer USE_EDGE=false METEOR_EDGE=1.5-beta.17 -- cgit v1.2.3-1-g7c22 From 68d60f4f6481c63a520c113973500ba547b8f229 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 22:12:54 +0200 Subject: - Upgrade to node v8.14.1 Thanks to xet7 ! --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5c46fb3..1915afc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This release adds the following new features: `sudo snap set wekan default-authentication-method='ldap'`. Thanks to Akuket. Closes wekan/wekan-ldap#31 - [Drag handles and long press on mobile when using desktop mode of mobile browser](https://github.com/wekan/wekan/pull/2067). Thanks to hupptechnologies. +- Upgrade to node v8.14.1 . Thanks to xet7. Thanks to above GitHub users for their contributions. -- cgit v1.2.3-1-g7c22 From 96f33e4052f57706c91a1780a2ad7d77da347021 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Fri, 21 Dec 2018 22:23:12 +0200 Subject: v1.95 --- CHANGELOG.md | 4 ++-- Stackerfile.yml | 2 +- package.json | 2 +- sandstorm-pkgdef.capnp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1915afc7..127f349e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Upcoming Wekan release +# v1.95 2018-12-21 Wekan release This release adds the following new features: @@ -11,7 +11,7 @@ This release adds the following new features: Thanks to above GitHub users for their contributions. -# v1.94 2018-12-18 Wekan version +# v1.94 2018-12-18 Wekan release This release adds the following new features: diff --git a/Stackerfile.yml b/Stackerfile.yml index 625f4354..944d6c0c 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v1.94.0" +appVersion: "v1.95.0" files: userUploads: - README.md diff --git a/package.json b/package.json index 25835b13..f753fb46 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v1.94.0", + "version": "v1.95.0", "description": "Open-Source kanban", "private": true, "scripts": { diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index 720ce87c..461b8b43 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 = 196, + appVersion = 197, # Increment this for every release. - appMarketingVersion = (defaultText = "1.94.0~2018-12-18"), + appMarketingVersion = (defaultText = "1.95.0~2018-12-21"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, -- cgit v1.2.3-1-g7c22