瀏覽代碼

Merge branch 'devel' of github.com:wekan/wekan into devel

Gavin Lilly 6 年之前
父節點
當前提交
c1ea3f49ca
共有 72 個文件被更改,包括 553 次插入204 次删除
  1. 1 1
      .eslintrc.json
  2. 1 1
      .meteor/versions
  3. 53 0
      CHANGELOG.md
  4. 2 0
      Dockerfile
  5. 1 1
      Stackerfile.yml
  6. 72 4
      client/components/boards/boardBody.js
  7. 2 4
      client/components/main/layouts.jade
  8. 72 60
      client/components/main/layouts.js
  9. 19 0
      client/components/settings/settingBody.jade
  10. 35 5
      client/components/settings/settingBody.js
  11. 3 0
      client/components/swimlanes/swimlanes.styl
  12. 3 0
      docker-compose.yml
  13. 3 1
      i18n/ar.i18n.json
  14. 3 1
      i18n/bg.i18n.json
  15. 3 1
      i18n/br.i18n.json
  16. 3 1
      i18n/ca.i18n.json
  17. 3 1
      i18n/cs.i18n.json
  18. 3 1
      i18n/da.i18n.json
  19. 3 1
      i18n/de.i18n.json
  20. 3 1
      i18n/el.i18n.json
  21. 3 1
      i18n/en-GB.i18n.json
  22. 3 1
      i18n/en.i18n.json
  23. 3 1
      i18n/eo.i18n.json
  24. 3 1
      i18n/es-AR.i18n.json
  25. 6 4
      i18n/es.i18n.json
  26. 3 1
      i18n/eu.i18n.json
  27. 3 1
      i18n/fa.i18n.json
  28. 3 1
      i18n/fi.i18n.json
  29. 3 1
      i18n/fr.i18n.json
  30. 3 1
      i18n/gl.i18n.json
  31. 11 9
      i18n/he.i18n.json
  32. 3 1
      i18n/hi.i18n.json
  33. 3 1
      i18n/hu.i18n.json
  34. 3 1
      i18n/hy.i18n.json
  35. 3 1
      i18n/id.i18n.json
  36. 3 1
      i18n/ig.i18n.json
  37. 3 1
      i18n/it.i18n.json
  38. 3 1
      i18n/ja.i18n.json
  39. 3 1
      i18n/ka.i18n.json
  40. 3 1
      i18n/km.i18n.json
  41. 3 1
      i18n/ko.i18n.json
  42. 3 1
      i18n/lv.i18n.json
  43. 3 1
      i18n/mk.i18n.json
  44. 3 1
      i18n/mn.i18n.json
  45. 3 1
      i18n/nb.i18n.json
  46. 3 1
      i18n/nl.i18n.json
  47. 56 54
      i18n/pl.i18n.json
  48. 9 7
      i18n/pt-BR.i18n.json
  49. 3 1
      i18n/pt.i18n.json
  50. 3 1
      i18n/ro.i18n.json
  51. 3 1
      i18n/ru.i18n.json
  52. 3 1
      i18n/sr.i18n.json
  53. 3 1
      i18n/sv.i18n.json
  54. 3 1
      i18n/sw.i18n.json
  55. 3 1
      i18n/ta.i18n.json
  56. 3 1
      i18n/th.i18n.json
  57. 3 1
      i18n/tr.i18n.json
  58. 3 1
      i18n/uk.i18n.json
  59. 3 1
      i18n/vi.i18n.json
  60. 3 1
      i18n/zh-CN.i18n.json
  61. 3 1
      i18n/zh-TW.i18n.json
  62. 10 1
      models/settings.js
  63. 1 1
      package.json
  64. 3 0
      releases/virtualbox/start-wekan.sh
  65. 2 2
      sandstorm-pkgdef.capnp
  66. 24 0
      server/migrations.js
  67. 11 1
      server/publications/settings.js
  68. 5 2
      snap-src/bin/config
  69. 1 1
      snap-src/bin/mongodb-control
  70. 6 0
      snap-src/bin/wekan-help
  71. 6 1
      start-wekan.bat
  72. 3 0
      start-wekan.sh

+ 1 - 1
.eslintrc.json

@@ -6,7 +6,7 @@
     "browser": true
   },
   "parserOptions": {
-    "ecmaVersion": 6,
+    "ecmaVersion": 2017,
     "sourceType": "module",
     "ecmaFeatures": {
       "experimentalObjectRestSpread": true

+ 1 - 1
.meteor/versions

@@ -145,7 +145,7 @@ retry@1.0.9
 routepolicy@1.0.12
 rzymek:fullcalendar@3.8.0
 salleman:accounts-oidc@1.0.10
-salleman:oidc@1.0.10
+salleman:oidc@1.0.11
 service-configuration@1.0.11
 session@1.1.7
 sha@1.0.9

+ 53 - 0
CHANGELOG.md

@@ -1,3 +1,56 @@
+# v2.20 2019-02-11 Wekan release
+
+This release adds the following new features:
+
+- [Add OIDC / OAuth2 optional setting DEBUG=true to salleman-oidc and Dockerfile](https://github.com/wekan/wekan/pull/2181).
+  Thanks to danpatdav.
+- [Add OIDC / OAuth2 optional setting DEBUG=true to docker-compose.yml/Snap/Source](https://github.com/wekan/wekan/commits/8e02170dd1d5a638ba47dcca910e6eecbfd03baf).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v2.19 2019-02-09 Wekan release
+
+This release removes the following new features:
+
+- [Remove oplog from snap](https://github.com/wekan/wekan/commit/f1bd36a3b87f97927dfe60572646a457e1f7ef66). Need to think how to do it properly.
+
+Thanks to GitHub user xet7 for conrtibutions.
+
+# v2.18 2019-02-08 Wekan release
+
+This release adds the folloging new features:
+
+- [Improve Authentication: Admin Panel / Layout / Set Default Authentication / Password/LDAP](https://github.com/wekan/wekan/pull/2172). Thanks to Akuket.
+- [Add oplog to snap mongodb](https://github.com/wekan/wekan/commit/79ffb7d50202471c7b7f297286f13e66ce30922e). Thanks to xet7.
+
+and fixes the following bugs with Apache I-CLA, thanks to bentiss:
+
+- [Fix swimlanes sorting](https://github.com/wekan/wekan/pull/2174)
+  since "[Properly fix horizontal rendering on Chrome and Firefox](https://github.com/wekan/wekan/commit/7cc185ac)".
+  The rendering of the new design of the swimlanes was correct, but this
+  commit broke the reordering capability. Having the swimlane header at
+  the same level than the lists of cards makes the whole sortable
+  pattern fail.
+  - 2 solutions:
+    - revert to only have 1 div per swimlane. But this introduces [the firefox
+      bug mentioned](https://github.com/wekan/wekan/commit/7cc185ac), so not ideal
+    - force the sortable pattern to do what we want.
+  - To force the sortable pattern, we need:
+    - add in the helper a clone of the list of cards (to not just move the
+      header)
+    - make sure the placeholder never get placed between the header and the
+      list of cards in a swimlane
+    - fix the finding of the next and previous list of cards. 
+    For all of this to be successful, we need to resize the swimlanes to a
+    known value. This can lead to some visual jumps with scrolling when you
+    drag or drop the swimlanea. I tried to remedy that by computing the new
+    scroll value. Still not ideal however, as there are still some jumps when
+    dropping.    
+    Fixes [#2159](https://github.com/wekan/wekan/issues/2159).
+
+Thanks to above GitHub users and translators for contributions.
+
 # v2.17 2019-02-04 Wekan release
 
 This release fixes the following bugs:

+ 2 - 0
Dockerfile

@@ -2,6 +2,7 @@ FROM debian:buster-slim
 LABEL maintainer="wekan"
 
 # Declare Arguments
+ARG DEBUG
 ARG NODE_VERSION
 ARG METEOR_RELEASE
 ARG METEOR_EDGE
@@ -76,6 +77,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 python3 python3-distutils git ca-certificates gcc-7" \
+    DEBUG=false \
     NODE_VERSION=v8.15.0 \
     METEOR_RELEASE=1.6.0.1 \
     USE_EDGE=false \

+ 1 - 1
Stackerfile.yml

@@ -1,5 +1,5 @@
 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.17.0"
+appVersion: "v2.20.0"
 files:
   userUploads:
     - README.md

+ 72 - 4
client/components/boards/boardBody.js

@@ -1,5 +1,6 @@
 const subManager = new SubsManager();
 const { calculateIndex, enableClickOnTouch } = Utils;
+const swimlaneWhileSortingHeight = 150;
 
 BlazeComponent.extendComponent({
   onCreated() {
@@ -74,21 +75,64 @@ BlazeComponent.extendComponent({
     $swimlanesDom.sortable({
       tolerance: 'pointer',
       appendTo: '.board-canvas',
-      helper: 'clone',
+      helper(evt, item) {
+        const helper = $(`<div class="swimlane"
+                               style="flex-direction: column;
+                                      height: ${swimlaneWhileSortingHeight}px;
+                                      width: $(boardComponent.width)px;
+                                      overflow: hidden;"/>`);
+        helper.append(item.clone());
+        // Also grab the list of lists of cards
+        const list = item.next();
+        helper.append(list.clone());
+        return helper;
+      },
       handle: '.js-swimlane-header',
-      items: '.js-swimlane:not(.placeholder)',
+      items: '.swimlane:not(.placeholder)',
       placeholder: 'swimlane placeholder',
       distance: 7,
       start(evt, ui) {
+        const listDom = ui.placeholder.next('.js-swimlane');
+        const parentOffset = ui.item.parent().offset();
+
         ui.placeholder.height(ui.helper.height());
         EscapeActions.executeUpTo('popup-close');
+        listDom.addClass('moving-swimlane');
         boardComponent.setIsDragging(true);
+
+        ui.placeholder.insertAfter(ui.placeholder.next());
+        boardComponent.origPlaceholderIndex = ui.placeholder.index();
+
+        // resize all swimlanes + headers to be a total of 150 px per row
+        // this could be achieved by setIsDragging(true) but we want immediate
+        // result
+        ui.item.siblings('.js-swimlane').css('height', `${swimlaneWhileSortingHeight - 26}px`);
+
+        // set the new scroll height after the resize and insertion of
+        // the placeholder. We want the element under the cursor to stay
+        // at the same place on the screen
+        ui.item.parent().get(0).scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
+      },
+      beforeStop(evt, ui) {
+        const parentOffset = ui.item.parent().offset();
+        const siblings = ui.item.siblings('.js-swimlane');
+        siblings.css('height', '');
+
+        // compute the new scroll height after the resize and removal of
+        // the placeholder
+        const scrollTop = ui.placeholder.get(0).offsetTop + parentOffset.top - evt.pageY;
+
+        // then reset the original view of the swimlane
+        siblings.removeClass('moving-swimlane');
+
+        // and apply the computed scrollheight
+        ui.item.parent().get(0).scrollTop = scrollTop;
       },
       stop(evt, ui) {
         // To attribute the new index number, we need to get the DOM element
         // of the previous and the following card -- if any.
-        const prevSwimlaneDom = ui.item.prev('.js-swimlane').get(0);
-        const nextSwimlaneDom = ui.item.next('.js-swimlane').get(0);
+        const prevSwimlaneDom = ui.item.prevAll('.js-swimlane').get(0);
+        const nextSwimlaneDom = ui.item.nextAll('.js-swimlane').get(0);
         const sortIndex = calculateIndex(prevSwimlaneDom, nextSwimlaneDom, 1);
 
         $swimlanesDom.sortable('cancel');
@@ -103,6 +147,30 @@ BlazeComponent.extendComponent({
 
         boardComponent.setIsDragging(false);
       },
+      sort(evt, ui) {
+        // get the mouse position in the sortable
+        const parentOffset = ui.item.parent().offset();
+        const cursorY = evt.pageY - parentOffset.top + ui.item.parent().scrollTop();
+
+        // compute the intended index of the placeholder (we need to skip the
+        // slots between the headers and the list of cards)
+        const newplaceholderIndex = Math.floor(cursorY / swimlaneWhileSortingHeight);
+        let destPlaceholderIndex = (newplaceholderIndex + 1) * 2;
+
+        // if we are scrolling far away from the bottom of the list
+        if (destPlaceholderIndex >= ui.item.parent().get(0).childElementCount) {
+          destPlaceholderIndex = ui.item.parent().get(0).childElementCount - 1;
+        }
+
+        // update the placeholder position in the DOM tree
+        if (destPlaceholderIndex !== ui.placeholder.index()) {
+          if (destPlaceholderIndex < boardComponent.origPlaceholderIndex) {
+            ui.placeholder.insertBefore(ui.placeholder.siblings().slice(destPlaceholderIndex - 2, destPlaceholderIndex - 1));
+          } else {
+            ui.placeholder.insertAfter(ui.placeholder.siblings().slice(destPlaceholderIndex - 1, destPlaceholderIndex));
+          }
+        }
+      },
     });
 
     // ugly touch event hotfix

+ 2 - 4
client/components/main/layouts.jade

@@ -23,10 +23,8 @@ 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}}
+      if currentSetting.displayAuthenticationMethod
+        +connectionMethod
       div.at-form-lang
         select.select-lang.js-userform-set-language
           each languages

+ 72 - 60
client/components/main/layouts.js

@@ -20,13 +20,19 @@ const validator = {
   },
 };
 
-Template.userFormsLayout.onCreated(() => {
-  Meteor.subscribe('setting');
-
+Template.userFormsLayout.onCreated(function() {
+  const instance = this;
+  instance.currentSetting = new ReactiveVar();
+
+  Meteor.subscribe('setting', {
+    onReady() {
+      instance.currentSetting.set(Settings.findOne());
+      return this.stop();
+    },
+  });
 });
 
 Template.userFormsLayout.onRendered(() => {
-
   AccountsTemplates.state.form.keys = new Proxy(AccountsTemplates.state.form.keys, validator);
 
   const i18nTag = navigator.language;
@@ -37,12 +43,10 @@ Template.userFormsLayout.onRendered(() => {
 });
 
 Template.userFormsLayout.helpers({
-
   currentSetting() {
-    return Settings.findOne();
+    return Template.instance().currentSetting.get();
   },
 
-
   afterBodyStart() {
     return currentSetting.customHTMLafterBodyStart;
   },
@@ -75,17 +79,6 @@ Template.userFormsLayout.helpers({
     const curLang = T9n.getLanguage() || 'en';
     return t9nTag === curLang;
   },
-/*
-  isCas() {
-    return Meteor.settings.public &&
-      Meteor.settings.public.cas &&
-      Meteor.settings.public.cas.loginUrl;
-  },
-
-  casSignInLabel() {
-    return TAPi18n.__('casSignIn', {}, T9n.getLanguage() || 'en');
-  },
-*/
 });
 
 Template.userFormsLayout.events({
@@ -94,55 +87,74 @@ Template.userFormsLayout.events({
     T9n.setLanguage(i18nTagToT9n(i18nTag));
     evt.preventDefault();
   },
-  'click button#cas'() {
+  'click #at-btn'(event, instance) {
+    if (FlowRouter.getRouteName() === 'atSignIn') {
+      authentication(event, instance);
+    }
+  },
+});
+
+Template.defaultLayout.events({
+  'click .js-close-modal': () => {
+    Modal.close();
+  },
+});
+
+async function authentication(event, instance) {
+  const match = $('#at-field-username_and_email').val();
+  const password = $('#at-field-password').val();
+
+  if (!match || !password) return;
+
+  const result = await getAuthenticationMethod(instance.currentSetting.get(), match);
+
+  if (result === 'password') return;
+
+  // Stop submit #at-pwd-form
+  event.preventDefault();
+  event.stopImmediatePropagation();
+
+  switch (result) {
+  case 'ldap':
+    Meteor.loginWithLDAP(match, password, function() {
+      FlowRouter.go('/');
+    });
+    break;
+
+  case 'cas':
     Meteor.loginWithCas(function() {
-      if (FlowRouter.getRouteName() === 'atSignIn') {
-        FlowRouter.go('/');
-      }
+      FlowRouter.go('/');
     });
-  },
-  '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') {
-      return;
-    }
+    break;
 
-    // Stop submit #at-pwd-form
-    event.preventDefault();
-    event.stopImmediatePropagation();
+  default:
+    break;
+  }
+}
 
-    const email = $('#at-field-username_and_email').val();
-    const password = $('#at-field-password').val();
+function getAuthenticationMethod({displayAuthenticationMethod, defaultAuthenticationMethod}, match) {
+  if (displayAuthenticationMethod) {
+    return $('.select-authentication').val();
+  }
+  return getUserAuthenticationMethod(defaultAuthenticationMethod, match);
+}
 
-    // Ldap account
-    if (authenticationMethodSelected === 'ldap') {
-      // Check if the user can use the ldap connection
-      Meteor.subscribe('user-authenticationMethod', email, {
+function getUserAuthenticationMethod(defaultAuthenticationMethod, match) {
+  return new Promise((resolve) => {
+    try {
+      Meteor.subscribe('user-authenticationMethod', match, {
         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();
+
+          const authenticationMethod = user
+            ? user.authenticationMethod
+            : defaultAuthenticationMethod;
+
+          resolve(authenticationMethod);
         },
       });
+    } catch(error) {
+      resolve(defaultAuthenticationMethod);
     }
-  },
-});
-
-Template.defaultLayout.events({
-  'click .js-close-modal': () => {
-    Modal.close();
-  },
-});
+  });
+}

+ 19 - 0
client/components/settings/settingBody.jade

@@ -141,6 +141,16 @@ template(name='layoutSettings')
         span {{_ 'yes'}}
         input.form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
         span {{_ 'no'}}
+    li.layout-form
+      .title {{_ 'display-authentication-method'}}
+      .form-group.flex
+        input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}")
+        span {{_ 'yes'}}
+        input.form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}")
+        span {{_ 'no'}}
+    li.layout-form
+      .title {{_ 'default-authentication-method'}}
+      +selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
     li.layout-form
       .title {{_ 'custom-product-name'}}
       .form-group
@@ -153,3 +163,12 @@ template(name='layoutSettings')
       textarea#customHTMLbeforeBodyEnd.form-control= currentSetting.customHTMLbeforeBodyEnd
     li
       button.js-save-layout.primary {{_ 'save'}}
+
+
+template(name='selectAuthenticationMethod')
+  select#defaultAuthenticationMethod
+    each authentications
+      if isSelected value
+        option(value="{{value}}" selected) {{_ value}}
+      else
+        option(value="{{value}}") {{_ value}}

+ 35 - 5
client/components/settings/settingBody.js

@@ -62,6 +62,9 @@ BlazeComponent.extendComponent({
   toggleHideLogo() {
     $('#hide-logo').toggleClass('is-checked');
   },
+  toggleDisplayAuthenticationMethod() {
+    $('#display-authentication-method').toggleClass('is-checked');
+  },
   switchMenu(event) {
     const target = $(event.target);
     if (!target.hasClass('active')) {
@@ -140,17 +143,20 @@ BlazeComponent.extendComponent({
 
     const productName = $('#product-name').val().trim();
     const hideLogoChange = ($('input[name=hideLogo]:checked').val() === 'true');
+    const displayAuthenticationMethod = ($('input[name=displayAuthenticationMethod]:checked').val() === 'true');
+    const defaultAuthenticationMethod = $('#defaultAuthenticationMethod').val();
     const customHTMLafterBodyStart = $('#customHTMLafterBodyStart').val().trim();
     const customHTMLbeforeBodyEnd = $('#customHTMLbeforeBodyEnd').val().trim();
 
     try {
-
       Settings.update(Settings.findOne()._id, {
         $set: {
           productName,
           hideLogo: hideLogoChange,
           customHTMLafterBodyStart,
           customHTMLbeforeBodyEnd,
+          displayAuthenticationMethod,
+          defaultAuthenticationMethod,
         },
       });
     } catch (e) {
@@ -165,17 +171,14 @@ BlazeComponent.extendComponent({
 
   sendSMTPTestEmail() {
     Meteor.call('sendSMTPTestEmail', (err, ret) => {
-      if (!err && ret) { /* eslint-disable no-console */
+      if (!err && ret) {
         const message = `${TAPi18n.__(ret.message)}: ${ret.email}`;
-        console.log(message);
         alert(message);
       } else {
         const reason = err.reason || '';
         const message = `${TAPi18n.__(err.error)}\n${reason}`;
-        console.log(message, err);
         alert(message);
       }
-      /* eslint-enable no-console */
     });
   },
 
@@ -190,6 +193,7 @@ BlazeComponent.extendComponent({
       'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
       'click a.js-toggle-hide-logo': this.toggleHideLogo,
       'click button.js-save-layout': this.saveLayout,
+      'click a.js-toggle-display-authentication-method': this.toggleDisplayAuthenticationMethod,
     }];
   },
 }).register('setting');
@@ -262,3 +266,29 @@ BlazeComponent.extendComponent({
     }];
   },
 }).register('announcementSettings');
+
+
+Template.selectAuthenticationMethod.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]})),
+      ]);
+    }
+  });
+});
+
+Template.selectAuthenticationMethod.helpers({
+  authentications() {
+    return Template.instance().authenticationMethods.get();
+  },
+  isSelected(match) {
+    return Template.instance().data.authenticationMethod === match;
+  },
+});

+ 3 - 0
client/components/swimlanes/swimlanes.styl

@@ -53,6 +53,9 @@
 .list-group
   height: 100%
 
+.moving-swimlane
+  display: none
+
 swimlane-color(background, color...)
   background: background !important
   if color

+ 3 - 0
docker-compose.yml

@@ -278,6 +278,9 @@ services:
       # example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
       #- OAUTH2_TOKEN_ENDPOINT=
       #-----------------------------------------------------------------
+      # Debug OIDC OAuth2 etc
+      #- DEBUG=true
+      #-----------------------------------------------------------------
       # ==== LDAP ====
       # https://github.com/wekan/wekan/wiki/LDAP
       # For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys

+ 3 - 1
i18n/ar.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/bg.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/br.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ca.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/cs.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Něco se pokazilo",
-    "error-ldap-login": "Během přihlašování nastala chyba"
+    "error-ldap-login": "Během přihlašování nastala chyba",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/da.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/de.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Füge benutzerdefiniertes HTML nach <body> Anfang hinzu",
     "add-custom-html-before-body-end": "Füge benutzerdefiniertes HTML vor </body>Ende hinzu",
     "error-undefined": "Etwas ist schief gelaufen",
-    "error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten"
+    "error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten",
+    "display-authentication-method": "Anzeige Authentifizierungsverfahren",
+    "default-authentication-method": "Standardauthentifizierungsverfahren"
 }

+ 3 - 1
i18n/el.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/en-GB.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/en.i18n.json

@@ -662,5 +662,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/eo.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/es-AR.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 6 - 4
i18n/es.i18n.json

@@ -363,9 +363,9 @@
     "muted-info": "No serás notificado de ningún cambio en este tablero",
     "my-boards": "Mis tableros",
     "name": "Nombre",
-    "no-archived-cards": "No hay tarjetas en el Archivo",
-    "no-archived-lists": "No hay listas en el Archivo",
-    "no-archived-swimlanes": "No hay carriles en el Archivo",
+    "no-archived-cards": "No hay tarjetas archivadas.",
+    "no-archived-lists": "No hay listas archivadas.",
+    "no-archived-swimlanes": "No hay carriles archivados.",
     "no-results": "Sin resultados",
     "normal": "Normal",
     "normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Añade HTML personalizado después de <body> ",
     "add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
     "error-undefined": "Algo no está bien",
-    "error-ldap-login": "Ocurrió un error al intentar acceder"
+    "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"
 }

+ 3 - 1
i18n/eu.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/fa.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "افزودن کد های HTML بعد از  <body> شروع",
     "add-custom-html-before-body-end": "افزودن کد های HTML قبل از  </body> پایان",
     "error-undefined": "یک اشتباه رخ داده شده است",
-    "error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد"
+    "error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/fi.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Lisää HTML <body> alun jälkeen",
     "add-custom-html-before-body-end": "Lisä HTML ennen </body> loppua",
     "error-undefined": "Jotain meni pieleen",
-    "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään"
+    "error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään",
+    "display-authentication-method": "Näytä kirjautumistapa",
+    "default-authentication-method": "Oletus kirjautumistapa"
 }

+ 3 - 1
i18n/fr.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Ajouter le HTML personnalisé après le début du <body>",
     "add-custom-html-before-body-end": "Ajouter le HTML personnalisé avant la fin du </body>",
     "error-undefined": "Une erreur inconnue s'est produite",
-    "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion"
+    "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"
 }

+ 3 - 1
i18n/gl.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 11 - 9
i18n/he.i18n.json

@@ -14,7 +14,7 @@
     "act-archivedBoard": "__board__ הועבר לארכיון",
     "act-archivedCard": "__card__ הועבר לארכיון",
     "act-archivedList": "__list__ הועבר לארכיון",
-    "act-archivedSwimlane": "__swimlane__ נשמר בארכיון",
+    "act-archivedSwimlane": "__swimlane__ הועבר לארכיון",
     "act-importBoard": "הלוח __board__ יובא",
     "act-importCard": "הכרטיס __card__ יובא",
     "act-importList": "הרשימה  __list__ יובאה",
@@ -84,7 +84,7 @@
     "archive-board": "העברת הלוח לארכיון",
     "archive-card": "העברת הכרטיס לארכיון",
     "archive-list": "העברת הרשימה לארכיון",
-    "archive-swimlane": "שמור נתיב זרימה לארכיון",
+    "archive-swimlane": "העברת מסלול לארכיון",
     "archive-selection": "העברת הבחירה לארכיון",
     "archiveBoardPopup-title": "להעביר לוח זה לארכיון?",
     "archived-items": "להעביר לארכיון",
@@ -335,10 +335,10 @@
     "list-archive-cards-pop": "כל הכרטיסים מרשימה זו יוסרו מהלוח. לצפייה בכרטיסים השמורים בארכיון ולהחזירם ללוח, ניתן ללחוץ על „תפריט” > „פריטים בארכיון”.",
     "list-move-cards": "העברת כל הכרטיסים שברשימה זו",
     "list-select-cards": "בחירת כל הכרטיסים שברשימה זו",
-    "set-color-list": "Set Color",
+    "set-color-list": "הגדרת צבע",
     "listActionPopup-title": "פעולות רשימה",
     "swimlaneActionPopup-title": "פעולות על מסלול",
-    "swimlaneAddPopup-title": "Add a Swimlane below",
+    "swimlaneAddPopup-title": "הוספת מסלול מתחת",
     "listImportCardPopup-title": "יבוא כרטיס מ־Trello",
     "listMorePopup-title": "עוד",
     "link-list": "קישור לרשימה זו",
@@ -365,7 +365,7 @@
     "name": "שם",
     "no-archived-cards": "אין כרטיסים בארכיון",
     "no-archived-lists": "אין רשימות בארכיון",
-    "no-archived-swimlanes": "לא שמורים מסלולים בארכיון",
+    "no-archived-swimlanes": "אין מסלולים בארכיון.",
     "no-results": "אין תוצאות",
     "normal": "רגיל",
     "normal-desc": "הרשאה לצפות ולערוך כרטיסים. לא ניתן לשנות הגדרות.",
@@ -520,9 +520,9 @@
     "editCardReceivedDatePopup-title": "החלפת מועד הקבלה",
     "editCardEndDatePopup-title": "החלפת מועד הסיום",
     "setCardColorPopup-title": "הגדרת צבע",
-    "setCardActionsColorPopup-title": "Choose a color",
-    "setSwimlaneColorPopup-title": "Choose a color",
-    "setListColorPopup-title": "Choose a color",
+    "setCardActionsColorPopup-title": "בחירת צבע",
+    "setSwimlaneColorPopup-title": "בחירת צבע",
+    "setListColorPopup-title": "בחירת צבע",
     "assigned-by": "הוקצה על ידי",
     "requested-by": "התבקש על ידי",
     "board-delete-notice": "מחיקה היא לצמיתות. כל הרשימות, הכרטיבים והפעולות שקשורים בלוח הזה ילכו לאיבוד.",
@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית לאחר ה־<body> הפותח.",
     "add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית לפני ה־</body> הסוגר.",
     "error-undefined": "מהו השתבש",
-    "error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה"
+    "error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה",
+    "display-authentication-method": "הצגת שיטת אימות",
+    "default-authentication-method": "שיטת אימות כבררת מחדל"
 }

+ 3 - 1
i18n/hi.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/hu.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/hy.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/id.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ig.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/it.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ja.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ka.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/km.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ko.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/lv.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/mk.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/mn.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/nb.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/nl.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 56 - 54
i18n/pl.i18n.json

@@ -1,6 +1,6 @@
 {
     "accept": "Akceptuj",
-    "act-activity-notify": "Activity Notification",
+    "act-activity-notify": "Powiadomienia aktywności",
     "act-addAttachment": "dodano załącznik __attachement__ do __card__",
     "act-addSubtask": "dodał podzadanie __checklist__ do __card__",
     "act-addChecklist": "dodał listę zadań __checklist__ to __card__",
@@ -78,7 +78,7 @@
     "and-n-other-card": "I __count__ inna karta",
     "and-n-other-card_plural": "I __count__ inne karty",
     "apply": "Zastosuj",
-    "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": "Trwa ładowanie, proszę czekać. Odświeżenie strony może spowodować utratę danych. Jeśli strona się nie przeładowuje, upewnij się, że serwer działa poprawnie.",
     "archive": "Przenieś do Archiwum",
     "archive-all": "Przenieś wszystko do Archiwum",
     "archive-board": "Przenieś tablicę do Archiwum",
@@ -169,30 +169,30 @@
     "close-board-pop": "Będziesz w stanie przywrócić tablicę poprzez kliknięcie przycisku \"Archiwizuj\" w nagłówku strony domowej.",
     "color-black": "czarny",
     "color-blue": "niebieski",
-    "color-crimson": "crimson",
-    "color-darkgreen": "darkgreen",
-    "color-gold": "gold",
-    "color-gray": "gray",
+    "color-crimson": "karmazynowy",
+    "color-darkgreen": "ciemnozielony",
+    "color-gold": "złoty",
+    "color-gray": "szary",
     "color-green": "zielony",
-    "color-indigo": "indigo",
+    "color-indigo": "indygo",
     "color-lime": "limonkowy",
-    "color-magenta": "magenta",
-    "color-mistyrose": "mistyrose",
-    "color-navy": "navy",
+    "color-magenta": "fuksjowy",
+    "color-mistyrose": "różowy",
+    "color-navy": "granatowy",
     "color-orange": "pomarańczowy",
-    "color-paleturquoise": "paleturquoise",
-    "color-peachpuff": "peachpuff",
+    "color-paleturquoise": "turkusowy",
+    "color-peachpuff": "brzoskwiniowy",
     "color-pink": "różowy",
-    "color-plum": "plum",
+    "color-plum": "śliwkowy",
     "color-purple": "fioletowy",
     "color-red": "czerwony",
-    "color-saddlebrown": "saddlebrown",
-    "color-silver": "silver",
+    "color-saddlebrown": "jasnobrązowy",
+    "color-silver": "srebrny",
     "color-sky": "błękitny",
-    "color-slateblue": "slateblue",
-    "color-white": "white",
+    "color-slateblue": "szaroniebieski",
+    "color-white": "miały",
     "color-yellow": "żółty",
-    "unset-color": "Unset",
+    "unset-color": "Nieustawiony",
     "comment": "Komentarz",
     "comment-placeholder": "Dodaj komentarz",
     "comment-only": "Tylko komentowanie",
@@ -299,19 +299,19 @@
     "import-board": "importuj tablice",
     "import-board-c": "Import tablicy",
     "import-board-title-trello": "Importuj tablicę z 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": "Importuj tablicę z poprzedniego eksportu",
+    "import-sandstorm-backup-warning": "Nie usuwaj danych, które importujesz ze źródłowej tablicy lub Trello zanim upewnisz się, że wszystko zostało prawidłowo przeniesione przy czym brane jest pod uwagę ponowne uruchomienie strony, ponieważ w przypadku błędu braku tablicy stracisz dane.",
     "import-sandstorm-warning": "Zaimportowana tablica usunie wszystkie istniejące dane na aktualnej tablicy oraz zastąpi ją danymi z tej importowanej.",
     "from-trello": "Z Trello",
-    "from-wekan": "From previous export",
+    "from-wekan": "Z poprzedniego eksportu",
     "import-board-instruction-trello": "W twojej tablicy na Trello przejdź do 'Menu', następnie 'Więcej', 'Drukuj i eksportuj', 'Eksportuj jako JSON' i skopiuj wynik",
-    "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": "Na Twojej tablicy przejdź do 'Menu', a następnie wybierz 'Eksportuj tablicę' i skopiuj tekst w pobranym pliku.",
     "import-board-instruction-about-errors": "W przypadku, gdy otrzymujesz błędy importowania tablicy, czasami importowanie pomimo wszystko działa poprawnie i tablica znajduje się w oknie Wszystkie tablice.",
     "import-json-placeholder": "Wklej Twoje dane JSON tutaj",
     "import-map-members": "Przypisz członków",
-    "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
+    "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować dla Twoich użytkowników",
     "import-show-user-mapping": "Przejrzyj wybranych członków",
-    "import-user-select": "Pick your existing user you want to use as this member",
+    "import-user-select": "Wybierz istniejącego użytkownika, który ma stać się członkiem",
     "importMapMembersAddPopup-title": "Wybierz użytkownika",
     "info": "Wersja",
     "initials": "Inicjały",
@@ -335,10 +335,10 @@
     "list-archive-cards-pop": "To usunie wszystkie karty z tej listy z tej tablicy. Aby przejrzeć karty w Archiwum i przywrócić na tablicę, kliknij \"Menu\" > \"Archiwizuj\".",
     "list-move-cards": "Przenieś wszystkie karty z tej listy",
     "list-select-cards": "Zaznacz wszystkie karty z tej listy",
-    "set-color-list": "Set Color",
+    "set-color-list": "Ustaw kolor",
     "listActionPopup-title": "Lista akcji",
     "swimlaneActionPopup-title": "Opcje diagramu czynności",
-    "swimlaneAddPopup-title": "Add a Swimlane below",
+    "swimlaneAddPopup-title": "Dodaj diagram czynności poniżej",
     "listImportCardPopup-title": "Zaimportuj kartę z Trello",
     "listMorePopup-title": "Więcej",
     "link-list": "Podepnij do tej listy",
@@ -478,14 +478,14 @@
     "send-smtp-test": "Wyślij wiadomość testową do siebie",
     "invitation-code": "Kod z zaproszenia",
     "email-invite-register-subject": "__inviter__ wysłał Ci zaproszenie",
-    "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": "Drogi __user__,\n\n__inviter__ zaprasza Cię do współpracy na naszej tablicy kanban.\n\nAby kontynuować, wejdź w poniższy link:\n__url__\n\nTwój kod zaproszenia to: __icode__\n\nDziękuję.",
+    "email-smtp-test-subject": "Wiadomość testowa SMTP",
     "email-smtp-test-text": "Wiadomość testowa została wysłana z powodzeniem.",
     "error-invitation-code-not-exist": "Kod zaproszenia nie istnieje",
     "error-notAuthorized": "Nie jesteś uprawniony do przeglądania tej strony.",
     "outgoing-webhooks": "Wychodzące webhooki",
     "outgoingWebhooksPopup-title": "Wychodzące webhooki",
-    "boardCardTitlePopup-title": "Card Title Filter",
+    "boardCardTitlePopup-title": "Filtruj poprzez nazwę karty",
     "new-outgoing-webhook": "Nowy wychodzący webhook",
     "no-name": "(nieznany)",
     "Node_version": "Wersja Node",
@@ -498,7 +498,7 @@
     "OS_Totalmem": "Dostępna pamięć RAM",
     "OS_Type": "Typ systemu",
     "OS_Uptime": "Czas działania systemu",
-    "days": "days",
+    "days": "dni",
     "hours": "godzin",
     "minutes": "minut",
     "seconds": "sekund",
@@ -519,10 +519,10 @@
     "card-end-on": "Kończy się",
     "editCardReceivedDatePopup-title": "Zmień datę odebrania",
     "editCardEndDatePopup-title": "Zmień datę ukończenia",
-    "setCardColorPopup-title": "Set color",
-    "setCardActionsColorPopup-title": "Choose a color",
-    "setSwimlaneColorPopup-title": "Choose a color",
-    "setListColorPopup-title": "Choose a color",
+    "setCardColorPopup-title": "Ustaw kolor",
+    "setCardActionsColorPopup-title": "Wybierz kolor",
+    "setSwimlaneColorPopup-title": "Wybierz kolor",
+    "setListColorPopup-title": "Wybierz kolor",
     "assigned-by": "Przypisane przez",
     "requested-by": "Zlecone przez",
     "board-delete-notice": "Usuwanie jest permanentne. Stracisz wszystkie listy, kart oraz czynności przypisane do tej tablicy.",
@@ -561,14 +561,14 @@
     "r-delete-rule": "Usuń regułę",
     "r-new-rule-name": "Nowa nazwa reguły",
     "r-no-rules": "Brak regułę",
-    "r-when-a-card": "When a card",
+    "r-when-a-card": "Gdy karta",
     "r-is": "jest",
-    "r-is-moved": "is moved",
-    "r-added-to": "added to",
+    "r-is-moved": "jest przenoszona",
+    "r-added-to": "dodana do",
     "r-removed-from": "Usunięto z",
     "r-the-board": "tablicy",
     "r-list": "lista",
-    "set-filter": "Set Filter",
+    "set-filter": "Ustaw filtr",
     "r-moved-to": "Przeniesiono do",
     "r-moved-from": "Przeniesiono z",
     "r-archived": "Przeniesione z Archiwum",
@@ -576,7 +576,7 @@
     "r-a-card": "karta",
     "r-when-a-label-is": "Gdy etykieta jest",
     "r-when-the-label-is": "Gdy etykieta jest",
-    "r-list-name": "list name",
+    "r-list-name": "nazwa listy",
     "r-when-a-member": "Gdy członek jest",
     "r-when-the-member": "Gdy członek jest",
     "r-name": "nazwa",
@@ -601,7 +601,7 @@
     "r-label": "etykieta",
     "r-member": "członek",
     "r-remove-all": "Usuń wszystkich członków tej karty",
-    "r-set-color": "Set color to",
+    "r-set-color": "Ustaw kolor na",
     "r-checklist": "lista zadań",
     "r-check-all": "Zaznacz wszystkie",
     "r-uncheck-all": "Odznacz wszystkie",
@@ -626,9 +626,9 @@
     "r-d-unarchive": "Przywróć kartę z Archiwum",
     "r-d-add-label": "Dodaj etykietę",
     "r-d-remove-label": "Usuń etykietę",
-    "r-create-card": "Create new card",
-    "r-in-list": "in list",
-    "r-in-swimlane": "in swimlane",
+    "r-create-card": "Utwórz nową kartę",
+    "r-in-list": "na liście",
+    "r-in-swimlane": "w diagramie zdarzeń",
     "r-d-add-member": "Dodaj członka",
     "r-d-remove-member": "Usuń członka",
     "r-d-remove-all-member": "Usuń wszystkich członków",
@@ -639,14 +639,14 @@
     "r-d-check-of-list": "z listy zadań",
     "r-d-add-checklist": "Dodaj listę zadań",
     "r-d-remove-checklist": "Usuń listę zadań",
-    "r-by": "by",
+    "r-by": "przez",
     "r-add-checklist": "Dodaj listę zadań",
-    "r-with-items": "with items",
-    "r-items-list": "item1,item2,item3",
-    "r-add-swimlane": "Add swimlane",
-    "r-swimlane-name": "swimlane name",
-    "r-board-note": "Note: leave a field empty to match every possible value.",
-    "r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
+    "r-with-items": "z elementami",
+    "r-items-list": "element1,element2,element3",
+    "r-add-swimlane": "Dodaj diagram zdarzeń",
+    "r-swimlane-name": "Nazwa diagramu",
+    "r-board-note": "Uwaga: pozostaw pole puste, aby każda wartość była brana pod uwagę.",
+    "r-checklist-note": "Uwaga: wartości elementów listy muszą być oddzielone przecinkami.",
     "r-when-a-card-is-moved": "Gdy karta jest przeniesiona do innej listy",
     "ldap": "LDAP",
     "oauth2": "OAuth2",
@@ -656,8 +656,10 @@
     "custom-product-name": "Niestandardowa nazwa produktu",
     "layout": "Układ strony",
     "hide-logo": "Ukryj logo",
-    "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
-    "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
-    "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "add-custom-html-after-body-start": "Dodaj niestandardowy kod HTML po <body> starcie",
+    "add-custom-html-before-body-end": "Dodaj niestandardowy kod HTML przed </body> końcem",
+    "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"
 }

+ 9 - 7
i18n/pt-BR.i18n.json

@@ -192,7 +192,7 @@
     "color-slateblue": "azul ardósia",
     "color-white": "branco",
     "color-yellow": "amarelo",
-    "unset-color": "Unset",
+    "unset-color": "Remover",
     "comment": "Comentário",
     "comment-placeholder": "Escrever Comentário",
     "comment-only": "Somente comentários",
@@ -335,10 +335,10 @@
     "list-archive-cards-pop": "Isto removerá todos os cartões desta lista para o quadro. Para visualizar cartões arquivados e trazê-los de volta para o quadro, clique em “Menu” > “Arquivo-morto”.",
     "list-move-cards": "Mover todos os cartões desta lista",
     "list-select-cards": "Selecionar todos os cartões nesta lista",
-    "set-color-list": "Set Color",
+    "set-color-list": "Definir Cor",
     "listActionPopup-title": "Listar Ações",
     "swimlaneActionPopup-title": "Ações de Raia",
-    "swimlaneAddPopup-title": "Add a Swimlane below",
+    "swimlaneAddPopup-title": "Adicionar uma Raia abaixo ",
     "listImportCardPopup-title": "Importe um cartão do Trello",
     "listMorePopup-title": "Mais",
     "link-list": "Vincular a esta lista",
@@ -520,9 +520,9 @@
     "editCardReceivedDatePopup-title": "Modificar data de recebimento",
     "editCardEndDatePopup-title": "Mudar data de fim",
     "setCardColorPopup-title": "Definir cor",
-    "setCardActionsColorPopup-title": "Choose a color",
-    "setSwimlaneColorPopup-title": "Choose a color",
-    "setListColorPopup-title": "Choose a color",
+    "setCardActionsColorPopup-title": "Escolha uma cor",
+    "setSwimlaneColorPopup-title": "Escolha uma cor",
+    "setListColorPopup-title": "Escolha uma cor",
     "assigned-by": "Atribuído por",
     "requested-by": "Solicitado por",
     "board-delete-notice": "Excluir é permanente. Você perderá todas as listas, cartões e ações associados nesse quadro.",
@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Adicionar HTML Customizado depois do início do <body>",
     "add-custom-html-before-body-end": "Adicionar HTML Customizado antes do fim do </body>",
     "error-undefined": "Algo deu errado",
-    "error-ldap-login": "Um erro ocorreu enquanto tentava entrar"
+    "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"
 }

+ 3 - 1
i18n/pt.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ro.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ru.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Добавить HTML после начала <body> ",
     "add-custom-html-before-body-end": "Добавить HTML до завершения </body>",
     "error-undefined": "Что-то пошло не так",
-    "error-ldap-login": "Ошибка при попытке авторизации"
+    "error-ldap-login": "Ошибка при попытке авторизации",
+    "display-authentication-method": "Показывать способ авторизации",
+    "default-authentication-method": "Способ авторизации по умолчанию"
 }

+ 3 - 1
i18n/sr.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/sv.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Något gick fel",
-    "error-ldap-login": "Ett fel uppstod när du försökte logga in"
+    "error-ldap-login": "Ett fel uppstod när du försökte logga in",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/sw.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/ta.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/th.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/tr.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Bir şeyler yanlış gitti",
-    "error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu"
+    "error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/uk.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/vi.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 3 - 1
i18n/zh-CN.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前",
     "add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后",
     "error-undefined": "出了点问题",
-    "error-ldap-login": "尝试登陆时出错"
+    "error-ldap-login": "尝试登陆时出错",
+    "display-authentication-method": "显示认证方式",
+    "default-authentication-method": "缺省认证方式"
 }

+ 3 - 1
i18n/zh-TW.i18n.json

@@ -659,5 +659,7 @@
     "add-custom-html-after-body-start": "Add Custom HTML after <body> start",
     "add-custom-html-before-body-end": "Add Custom HTML before </body> end",
     "error-undefined": "Something went wrong",
-    "error-ldap-login": "An error occurred while trying to login"
+    "error-ldap-login": "An error occurred while trying to login",
+    "display-authentication-method": "Display Authentication Method",
+    "default-authentication-method": "Default Authentication Method"
 }

+ 10 - 1
models/settings.js

@@ -40,6 +40,14 @@ Settings.attachSchema(new SimpleSchema({
     type: String,
     optional: true,
   },
+  displayAuthenticationMethod: {
+    type: Boolean,
+    optional: true,
+  },
+  defaultAuthenticationMethod: {
+    type: String,
+    optional: false,
+  },
   hideLogo: {
     type: Boolean,
     optional: true,
@@ -85,7 +93,8 @@ if (Meteor.isServer) {
       const from = `Boards Support <support@${domain}>`;
       const defaultSetting = {disableRegistration: false, mailServer: {
         username: '', password: '', host: '', port: '', enableTLS: false, from,
-      }, createdAt: now, modifiedAt: now};
+      }, createdAt: now, modifiedAt: now, displayAuthenticationMethod: true,
+      defaultAuthenticationMethod: 'password'};
       Settings.insert(defaultSetting);
     }
     const newSetting = Settings.findOne();

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "v2.17.0",
+  "version": "v2.20.0",
   "description": "Open-Source kanban",
   "private": true,
   "scripts": {

+ 3 - 0
releases/virtualbox/start-wekan.sh

@@ -70,6 +70,9 @@
         # example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
         #export OAUTH2_TOKEN_ENDPOINT=''
         #---------------------------------------------
+        # Debug OIDC OAuth2 etc.
+        #export DEBUG=true
+        #---------------------------------------------
         # LDAP_ENABLE : Enable or not the connection by the LDAP
         # example :  export LDAP_ENABLE=true
         #export LDAP_ENABLE=false

+ 2 - 2
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 = 219,
+    appVersion = 222,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "2.17.0~2019-02-04"),
+    appMarketingVersion = (defaultText = "2.20.0~2019-02-11"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,

+ 24 - 0
server/migrations.js

@@ -398,3 +398,27 @@ Migrations.add('add-custom-html-before-body-end', () => {
     },
   }, noValidateMulti);
 });
+
+Migrations.add('add-displayAuthenticationMethod', () => {
+  Settings.update({
+    displayAuthenticationMethod: {
+      $exists: false,
+    },
+  }, {
+    $set: {
+      displayAuthenticationMethod: true,
+    },
+  }, noValidateMulti);
+});
+
+Migrations.add('add-defaultAuthenticationMethod', () => {
+  Settings.update({
+    defaultAuthenticationMethod: {
+      $exists: false,
+    },
+  }, {
+    $set: {
+      defaultAuthenticationMethod: 'password',
+    },
+  }, noValidateMulti);
+});

+ 11 - 1
server/publications/settings.js

@@ -1,5 +1,15 @@
 Meteor.publish('setting', () => {
-  return Settings.find({}, {fields:{disableRegistration: 1, productName: 1, hideLogo: 1, customHTMLafterBodyStart: 1, customHTMLbeforeBodyEnd: 1}});
+  return Settings.find({}, {
+    fields:{
+      disableRegistration: 1,
+      productName: 1,
+      hideLogo: 1,
+      customHTMLafterBodyStart: 1,
+      customHTMLbeforeBodyEnd: 1,
+      displayAuthenticationMethod: 1,
+      defaultAuthenticationMethod: 1,
+    },
+  });
 });
 
 Meteor.publish('mailServer', function () {

+ 5 - 2
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 DEFAULT_AUTHENTICATION_METHOD"
+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 DEBUG"
 
 # default values
 DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\
@@ -290,7 +290,10 @@ 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. Method can be password or ldap."
 DEFAULT_DEFAULT_AUTHENTICATION_METHOD=""
 KEY_DEFAULT_AUTHENTICATION_METHOD="default-authentication-method"
+
+DESCRIPTION_DEBUG="Debug OIDC etc. Example: sudo snap set wekan debug='true'"
+DEFAULT_DEBUG="false"
+KEY_DEBUG="debug"

+ 1 - 1
snap-src/bin/mongodb-control

@@ -29,4 +29,4 @@ if [ "x" != "x${MONGODB_PORT}" ]; then
 fi
 echo "mongodb bind options: $BIND_OPTIONS"
 
-mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS
+mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS --smallfiles

+ 6 - 0
snap-src/bin/wekan-help

@@ -100,6 +100,12 @@ echo -e "\t$ snap set $SNAP_NAME OAUTH2_TOKEN_ENDPOINT='/oauth/token'"
 echo -e "\t-Disable the OAuth2 Token Endpoint of Wekan:"
 echo -e "\t$ snap set $SNAP_NAME OAUTH2_TOKEN_ENDPOINT=''"
 echo -e "\n"
+echo -e "Debug OIDC OAuth2 etc."
+echo -e "To enable the Debug of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME DEBUG='true'"
+echo -e "\t-Disable the Debug of Wekan:"
+echo -e "\t$ snap set $SNAP_NAME DEBUG='false'"
+echo -e "\n"
 echo -e "Ldap Enable."
 echo -e "To enable the ldap of Wekan:"
 echo -e "\t$ snap set $SNAP_NAME LDAP_ENABLE='true'"

+ 6 - 1
start-wekan.bat

@@ -69,6 +69,11 @@ REM SET OAUTH2_TOKEN_ENDPOINT=
 
 REM ------------------------------------------------------------
 
+REM # Debug OIDC OAuth2 etc.
+REM SET DEBUG=true
+
+REM ------------------------------------------------------------
+
 REM # LDAP_ENABLE : Enable or not the connection by the LDAP
 REM # example : LDAP_ENABLE=true
 REM SET LDAP_ENABLE=false
@@ -245,4 +250,4 @@ REM SET LOGOUT_ON_MINUTES=
 
 cd .build\bundle
 node main.js
-cd ..\..
+cd ..\..

+ 3 - 0
start-wekan.sh

@@ -88,6 +88,9 @@ function wekan_repo_check(){
       # example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
       #export OAUTH2_TOKEN_ENDPOINT=''
       #---------------------------------------------
+      # Debug OIDC OAuth2 etc.
+      #export DEBUG=true
+      #---------------------------------------------
       # LDAP_ENABLE : Enable or not the connection by the LDAP
       # example :  export LDAP_ENABLE=true
       #export LDAP_ENABLE=false