summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-08-28 21:21:10 +0300
committerLauri Ojansivu <x@xet7.org>2018-08-28 21:21:10 +0300
commit24f59b1855a2bdd2c77232b435055431e40f7695 (patch)
tree86d46a4469e28ae4942fd33ea5fa945ae097e9a6
parent5e128583ac536df2a45d124d6cf6d3336be5f7d0 (diff)
parentc0df1dd4aa8b03d28d9f63cd62c9b910b6da3b2c (diff)
downloadwekan-24f59b1855a2bdd2c77232b435055431e40f7695.tar.gz
wekan-24f59b1855a2bdd2c77232b435055431e40f7695.tar.bz2
wekan-24f59b1855a2bdd2c77232b435055431e40f7695.zip
Merge branch 'devel'
-rw-r--r--CHANGELOG.md11
-rw-r--r--i18n/it.i18n.json66
-rw-r--r--i18n/pl.i18n.json82
-rw-r--r--models/cards.js6
-rw-r--r--openshift/wekan.yml37
-rw-r--r--package.json2
-rw-r--r--sandstorm-pkgdef.capnp4
-rwxr-xr-xsnap-src/bin/wekan-help6
8 files changed, 132 insertions, 82 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ff980d9..462f4f1f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+# v1.37 2018-08-28 Wekan release
+
+This release fixes the following bugs:
+
+- [Add Missing Index on cards.parentId since Swimlane integration
+ to speedup Wekan](https://github.com/wekan/wekan/issues/1863);
+- [Update OpenShift template to add Route and parameterize](https://github.com/wekan/wekan/pull/1865);
+- [Fix typos in Wekan snap help](https://github.com/wekan/wekan/commit/0c5fc6d7fd899a6bc67a446ab43e53290d8571e4).
+
+Thanks to GitHub users Clement87, InfoSec812 and xet7 for their contributions.
+
# v1.36 2018-08-25 Wekan release
This release adds the following new features:
diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json
index b4d13dbe..9447819c 100644
--- a/i18n/it.i18n.json
+++ b/i18n/it.i18n.json
@@ -2,7 +2,7 @@
"accept": "Accetta",
"act-activity-notify": "[Wekan] Notifiche attività",
"act-addAttachment": "ha allegato __attachment__ a __card__",
- "act-addSubtask": "added subtask __checklist__ to __card__",
+ "act-addSubtask": "ha aggiunto il sotto compito__checklist__in_card__",
"act-addChecklist": "aggiunta checklist __checklist__ a __card__",
"act-addChecklistItem": "aggiunto __checklistItem__ alla checklist __checklist__ di __card__",
"act-addComment": "ha commentato su __card__: __comment__",
@@ -42,7 +42,7 @@
"activity-removed": "rimosso %s da %s",
"activity-sent": "inviato %s a %s",
"activity-unjoined": "ha abbandonato %s",
- "activity-subtask-added": "added subtask to %s",
+ "activity-subtask-added": "aggiunto il sottocompito a 1%s",
"activity-checklist-added": "aggiunta checklist a %s",
"activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
"add": "Aggiungere",
@@ -50,7 +50,7 @@
"add-board": "Aggiungi Bacheca",
"add-card": "Aggiungi Scheda",
"add-swimlane": "Aggiungi Corsia",
- "add-subtask": "Add Subtask",
+ "add-subtask": "Aggiungi sotto-compito",
"add-checklist": "Aggiungi Checklist",
"add-checklist-item": "Aggiungi un elemento alla checklist",
"add-cover": "Aggiungi copertina",
@@ -103,13 +103,13 @@
"boardMenuPopup-title": "Menu bacheca",
"boards": "Bacheche",
"board-view": "Visualizza bacheca",
- "board-view-cal": "Calendar",
+ "board-view-cal": "Calendario",
"board-view-swimlanes": "Corsie",
"board-view-lists": "Liste",
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
"cancel": "Cancella",
"card-archived": "Questa scheda è stata spostata nel cestino.",
- "board-archived": "This board is moved to Recycle Bin.",
+ "board-archived": "Questa bacheca è stata spostata nel cestino.",
"card-comments-title": "Questa scheda ha %s commenti.",
"card-delete-notice": "L'eliminazione è permanente. Tutte le azioni associate a questa scheda andranno perse.",
"card-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di riaprire la scheda. Non potrai tornare indietro.",
@@ -135,10 +135,10 @@
"cardMorePopup-title": "Altro",
"cards": "Schede",
"cards-count": "Schede",
- "casSignIn": "Sign In with CAS",
- "cardType-card": "Card",
- "cardType-linkedCard": "Linked Card",
- "cardType-linkedBoard": "Linked Board",
+ "casSignIn": "Entra con CAS",
+ "cardType-card": "Scheda",
+ "cardType-linkedCard": "Scheda collegata",
+ "cardType-linkedBoard": "Bacheca collegata",
"change": "Cambia",
"change-avatar": "Cambia avatar",
"change-password": "Cambia password",
@@ -149,7 +149,7 @@
"changePasswordPopup-title": "Cambia password",
"changePermissionsPopup-title": "Cambia permessi",
"changeSettingsPopup-title": "Cambia impostazioni",
- "subtasks": "Subtasks",
+ "subtasks": "Sotto-compiti",
"checklists": "Checklist",
"click-to-star": "Clicca per stellare questa bacheca",
"click-to-unstar": "Clicca per togliere la stella da questa bacheca",
@@ -172,11 +172,11 @@
"comment-only": "Solo commenti",
"comment-only-desc": "Puoi commentare solo le schede.",
"computer": "Computer",
- "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
+ "confirm-subtask-delete-dialog": "Sei sicuro di voler eliminare il sotto-compito?",
+ "confirm-checklist-delete-dialog": "Sei sicuro di voler eliminare la checklist?",
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
- "linkCardPopup-title": "Link Card",
- "searchCardPopup-title": "Search Card",
+ "linkCardPopup-title": "Collega scheda",
+ "searchCardPopup-title": "Cerca scheda",
"copyCardPopup-title": "Copia Scheda",
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
"copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
@@ -260,14 +260,14 @@
"filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
"filter-to-selection": "Seleziona",
"advanced-filter-label": "Filtro avanzato",
- "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
+ "advanced-filter-description": "Il filtro avanzato permette di scrivere una stringa contenente i seguenti operatori: == != <= >= && || ( ) Uno spazio è usato come separatore tra gli operatori. Si può filtrare per tutti i campi personalizzati, scrivendo i loro nomi e valori. Per esempio: Campo1 == Valore1. Nota: Se i campi o i valori contengono spazi, è necessario incapsularli all'interno di paici singoli. Per esempio: 'Campo 1' == 'Valore 1'. Per i singoli caratteri di controllo (' V) che devono essere ignorati, si può usare \\. Per esempio: C1 == Campo1 == L'\\ho. Si possono anche combinare condizioni multiple. Per esempio: C1 == V1 || C1 ==V2. Di norma tutti gli operatori vengono lettti da sinistra a destra. Si può cambiare l'ordine posizionando delle parentesi. Per esempio: C1 == V1 && ( C2 == V2 || C2 == V3) . Inoltre è possibile cercare nei campi di testo usando le espressioni regolari (n.d.t. regex): F1 ==/Tes.*/i",
"fullname": "Nome completo",
"header-logo-title": "Torna alla tua bacheca.",
"hide-system-messages": "Nascondi i messaggi di sistema",
"headerBarCreateBoardPopup-title": "Crea bacheca",
"home": "Home",
"import": "Importa",
- "link": "Link",
+ "link": "Collegamento",
"import-board": "Importa bacheca",
"import-board-c": "Importa bacheca",
"import-board-title-trello": "Importa una bacheca da Trello",
@@ -489,21 +489,21 @@
"delete-board-confirm-popup": "Tutte le liste, schede, etichette e azioni saranno rimosse e non sarai più in grado di recuperare il contenuto della bacheca. L'azione non è annullabile.",
"boardDeletePopup-title": "Eliminare la bacheca?",
"delete-board": "Elimina bacheca",
- "default-subtasks-board": "Subtasks for __board__ board",
- "default": "Default",
- "queue": "Queue",
- "subtask-settings": "Subtasks Settings",
- "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
- "show-subtasks-field": "Cards can have subtasks",
- "deposit-subtasks-board": "Deposit subtasks to this board:",
- "deposit-subtasks-list": "Landing list for subtasks deposited here:",
- "show-parent-in-minicard": "Show parent in minicard:",
- "prefix-with-full-path": "Prefix with full path",
- "prefix-with-parent": "Prefix with parent",
- "subtext-with-full-path": "Subtext with full path",
- "subtext-with-parent": "Subtext with parent",
- "change-card-parent": "Change card's parent",
- "parent-card": "Parent card",
- "source-board": "Source board",
- "no-parent": "Don't show parent"
+ "default-subtasks-board": "Sottocompiti per la bacheca __board__",
+ "default": "Predefinito",
+ "queue": "Coda",
+ "subtask-settings": "Impostazioni sotto-compiti",
+ "boardSubtaskSettingsPopup-title": "Impostazioni sotto-compiti della bacheca",
+ "show-subtasks-field": "Le schede posso avere dei sotto-compiti",
+ "deposit-subtasks-board": "Deposita i sotto compiti in questa bacheca",
+ "deposit-subtasks-list": "Lista di destinaizoni per questi sotto-compiti",
+ "show-parent-in-minicard": "Mostra genirotri nelle mini schede:",
+ "prefix-with-full-path": "Prefisso con percorso completo",
+ "prefix-with-parent": "Prefisso con genitore",
+ "subtext-with-full-path": "Sottotesto con percorso completo",
+ "subtext-with-parent": "Sotto-testo con genitore",
+ "change-card-parent": "Cambia la scheda genitore",
+ "parent-card": "Scheda genitore",
+ "source-board": "Bacheca d'origine",
+ "no-parent": "Non mostrare i genitori"
} \ No newline at end of file
diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json
index 5208ffba..cb29eb66 100644
--- a/i18n/pl.i18n.json
+++ b/i18n/pl.i18n.json
@@ -2,27 +2,27 @@
"accept": "Akceptuj",
"act-activity-notify": "[Wekan] Powiadomienia - aktywności",
"act-addAttachment": "załączono __attachement__ do __karty__",
- "act-addSubtask": "added subtask __checklist__ to __card__",
+ "act-addSubtask": "dodano podzadanie __checklist__ do __card__",
"act-addChecklist": "dodano listę zadań __checklist__ to __card__",
"act-addChecklistItem": "dodano __checklistItem__ do listy zadań __checklist__ na karcie __card__",
- "act-addComment": "commented on __card__: __comment__",
- "act-createBoard": "created __board__",
- "act-createCard": "added __card__ to __list__",
- "act-createCustomField": "created custom field __customField__",
- "act-createList": "added __list__ to __board__",
- "act-addBoardMember": "added __member__ to __board__",
- "act-archivedBoard": "__board__ moved to Recycle Bin",
- "act-archivedCard": "__card__ moved to Recycle Bin",
- "act-archivedList": "__list__ moved to Recycle Bin",
- "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
- "act-importBoard": "imported __board__",
- "act-importCard": "imported __card__",
- "act-importList": "imported __list__",
- "act-joinMember": "added __member__ to __card__",
- "act-moveCard": "moved __card__ from __oldList__ to __list__",
- "act-removeBoardMember": "removed __member__ from __board__",
- "act-restoredCard": "restored __card__ to __board__",
- "act-unjoinMember": "removed __member__ from __card__",
+ "act-addComment": "skomentowano __card__: __comment__",
+ "act-createBoard": "utworzono __board__",
+ "act-createCard": "dodano __card__ do __list__",
+ "act-createCustomField": "dodano niestandardowe pole __customField__",
+ "act-createList": "dodano __list__ do __board__",
+ "act-addBoardMember": "dodano __member__ do __board__",
+ "act-archivedBoard": "__board__ została przeniesiona do kosza",
+ "act-archivedCard": "__card__ została przeniesiona do Kosza",
+ "act-archivedList": "__list__ została przeniesiona do Kosza",
+ "act-archivedSwimlane": "__swimlane__ została przeniesiona do Kosza",
+ "act-importBoard": "zaimportowano __board__",
+ "act-importCard": "zaimportowano __card__",
+ "act-importList": "zaimportowano __list__",
+ "act-joinMember": "dodano __member_ do __card__",
+ "act-moveCard": "przeniesiono __card__ z __oldList__ do __list__",
+ "act-removeBoardMember": "usunięto __member__ z __board__",
+ "act-restoredCard": "przywrócono __card__ do __board__",
+ "act-unjoinMember": "usunięto __member__ z __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Akcje",
@@ -32,7 +32,7 @@
"activity-archived": "%s przeniesiono do Kosza",
"activity-attached": "załączono %s z %s",
"activity-created": "utworzono %s",
- "activity-customfield-created": "created custom field %s",
+ "activity-customfield-created": "utworzono niestandardowe pole %s",
"activity-excluded": "wyłączono %s z %s",
"activity-imported": "zaimportowano %s to %s z %s",
"activity-imported-board": "zaimportowano %s z %s",
@@ -42,15 +42,15 @@
"activity-removed": "usunięto %s z %s",
"activity-sent": "wysłano %s z %s",
"activity-unjoined": "odłączono %s",
- "activity-subtask-added": "added subtask to %s",
- "activity-checklist-added": "added checklist to %s",
- "activity-checklist-item-added": "added checklist item to '%s' in %s",
+ "activity-subtask-added": "dodano podzadanie do %s",
+ "activity-checklist-added": "dodano listę zadań do %s",
+ "activity-checklist-item-added": "dodano zadanie '%s' do %s",
"add": "Dodaj",
"add-attachment": "Dodaj załącznik",
"add-board": "Dodaj tablicę",
"add-card": "Dodaj kartę",
"add-swimlane": "Add Swimlane",
- "add-subtask": "Add Subtask",
+ "add-subtask": "Dodano Podzadanie",
"add-checklist": "Dodaj listę kontrolną",
"add-checklist-item": "Dodaj element do listy kontrolnej",
"add-cover": "Dodaj okładkę",
@@ -62,33 +62,33 @@
"admin": "Admin",
"admin-desc": "Może widzieć i edytować karty, usuwać członków oraz zmieniać ustawienia tablicy.",
"admin-announcement": "Ogłoszenie",
- "admin-announcement-active": "Active System-Wide Announcement",
+ "admin-announcement-active": "Aktywne Ogólnosystemowe Ogłoszenie ",
"admin-announcement-title": "Ogłoszenie od Administratora",
"all-boards": "Wszystkie tablice",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Zastosuj",
- "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
+ "app-is-offline": "Wekan jest aktualnie ładowany, proszę czekać. Odświeżenie strony spowoduję utratę danych. Jeżeli Wekan się nie ładuje, prosimy o upewnienie się czy serwer Wekan nie został zatrzymany.",
"archive": "Przenieś do Kosza",
- "archive-all": "Move All to Recycle Bin",
- "archive-board": "Move Board to Recycle Bin",
- "archive-card": "Move Card to Recycle Bin",
- "archive-list": "Move List to Recycle Bin",
+ "archive-all": "Przenieś Wszystkie do Kosza",
+ "archive-board": "Przenieś Tablicę do Kosza",
+ "archive-card": "Przenieś Kartę do Kosza",
+ "archive-list": "Przenieś Listę do Kosza",
"archive-swimlane": "Move Swimlane to Recycle Bin",
- "archive-selection": "Move selection to Recycle Bin",
- "archiveBoardPopup-title": "Move Board to Recycle Bin?",
- "archived-items": "Recycle Bin",
- "archived-boards": "Boards in Recycle Bin",
+ "archive-selection": "Przenieś zaznaczenie do Kosza",
+ "archiveBoardPopup-title": "Przenieść Tablicę do Kosza?",
+ "archived-items": "Kosz",
+ "archived-boards": "Tablice w Koszu",
"restore-board": "Przywróć tablicę",
- "no-archived-boards": "No Boards in Recycle Bin.",
- "archives": "Recycle Bin",
+ "no-archived-boards": "Brak Tablic w Koszu.",
+ "archives": "Kosz",
"assign-member": "Dodaj członka",
"attached": "załączono",
"attachment": "Załącznik",
"attachment-delete-pop": "Usunięcie załącznika jest nieodwracalne.",
"attachmentDeletePopup-title": "Usunąć załącznik?",
"attachments": "Załączniki",
- "auto-watch": "Automatically watch boards when they are created",
+ "auto-watch": "Automatycznie obserwuj tablice gdy zostaną stworzone",
"avatar-too-big": "Awatar jest za duży (maksymalnie 70Kb)",
"back": "Wstecz",
"board-change-color": "Zmień kolor",
@@ -103,17 +103,17 @@
"boardMenuPopup-title": "Menu tablicy",
"boards": "Tablice",
"board-view": "Board View",
- "board-view-cal": "Calendar",
+ "board-view-cal": "Kalendarz",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Listy",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Anuluj",
- "card-archived": "This card is moved to Recycle Bin.",
- "board-archived": "This board is moved to Recycle Bin.",
+ "card-archived": "Ta Karta została przeniesiona do Kosza.",
+ "board-archived": "Ta Tablica została przeniesiona do Kosza.",
"card-comments-title": "Ta karta ma %s komentarzy.",
"card-delete-notice": "Usunięcie jest trwałe. Stracisz wszystkie akcje powiązane z tą kartą.",
"card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty. Usunięcie jest nieodwracalne.",
- "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
+ "card-delete-suggest-archive": "Możesz przenieść Kartę do Kosza by usunąć ją z tablicy i zachować aktywności.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
diff --git a/models/cards.js b/models/cards.js
index 302beddc..11f08283 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -1017,6 +1017,12 @@ if (Meteor.isServer) {
// queries more efficient.
Meteor.startup(() => {
Cards._collection._ensureIndex({boardId: 1, createdAt: -1});
+ // https://github.com/wekan/wekan/issues/1863
+ // Swimlane added a new field in the cards collection of mongodb named parentId.
+ // When loading a board, mongodb is searching for every cards, the id of the parent (in the swinglanes collection).
+ // With a huge database, this result in a very slow app and high CPU on the mongodb side.
+ // To correct it, add Index to parentId:
+ Cards._collection._ensureIndex({parentId: 1});
});
Cards.after.insert((userId, doc) => {
diff --git a/openshift/wekan.yml b/openshift/wekan.yml
index dd23f6ea..0bc96ce8 100644
--- a/openshift/wekan.yml
+++ b/openshift/wekan.yml
@@ -147,7 +147,7 @@ objects:
- name: MONGO_URL
value: mongodb://${MONGODB_USER}:${MONGODB_PASSWORD}@${DATABASE_SERVICE_NAME}:27017/${MONGODB_DATABASE}
- name: ROOT_URL
- value: http://localhost
+ value: https://${FQDN}/
- name: PORT
value: "8080"
ports:
@@ -272,12 +272,45 @@ objects:
from:
kind: ImageStreamTag
name: mongodb:${MONGODB_VERSION}
- namespace: "${NAMESPACE}"
+ namespace: "openshift"
lastTriggeredImage: ''
type: ImageChange
- type: ConfigChange
status: {}
+- apiVersion: route.openshift.io/v1
+ kind: Route
+ metadata:
+ labels:
+ app: wekan
+ service: wekan
+ template: wekan-mongodb-persistent-template
+ name: wekan
+ namespace: ${NAMESPACE}
+ spec:
+ host: ${FQDN}
+ port:
+ targetPort: wekan
+ tls:
+ termination: edge
+ to:
+ kind: Service
+ name: wekan
+ weight: 100
+ wildcardPolicy: None
+ status:
+ ingress:
+ - conditions:
+ - lastTransitionTime: '2018-08-28T14:45:21Z'
+ status: 'True'
+ type: Admitted
+ host: ${FQDN}
+ routerName: router
+ wildcardPolicy: None
parameters:
+- description: The Fully Qualified Hostname (FQDN) of the application
+ displayName: FQDN
+ name: FQDN
+ required: true
- description: Maximum amount of memory the container can use.
displayName: Memory Limit
name: MEMORY_LIMIT
diff --git a/package.json b/package.json
index 96fe2878..76d61684 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "1.36.0",
+ "version": "1.37.0",
"description": "The open-source kanban",
"private": true,
"scripts": {
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 9586a991..92ef8ae7 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 = 121,
+ appVersion = 122,
# Increment this for every release.
- appMarketingVersion = (defaultText = "1.36.0~2018-08-25"),
+ appMarketingVersion = (defaultText = "1.37.0~2018-08-28"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
index 8edaf24f..95814d36 100755
--- a/snap-src/bin/wekan-help
+++ b/snap-src/bin/wekan-help
@@ -77,19 +77,19 @@ echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL='https://chat.example.com'"
echo -e "\t-Disable the OAuth2 Server URL of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_SERVER_URL=''"
echo -e "\n"
-echo -e "OAuth2 Authorization Endpoint. Example: /oauth/authorize""
+echo -e "OAuth2 Authorization Endpoint. Example: /oauth/authorize"
echo -e "To enable the OAuth2 Authorization Endpoint of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_AUTH_ENDPOINT='/oauth/authorize'"
echo -e "\t-Disable the OAuth2 Authorization Endpoint of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_AUTH_ENDPOINT=''"
echo -e "\n"
-echo -e "OAuth2 Userinfo Endpoint. Example: /oauth/userinfo""
+echo -e "OAuth2 Userinfo Endpoint. Example: /oauth/userinfo"
echo -e "To enable the OAuth2 Userinfo Endpoint of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_USERINFO_ENDPOINT='/oauth/authorize'"
echo -e "\t-Disable the OAuth2 Userinfo Endpoint of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_USERINFO_ENDPOINT=''"
echo -e "\n"
-echo -e "OAuth2 Token Endpoint. Example: /oauth/token""
+echo -e "OAuth2 Token Endpoint. Example: /oauth/token"
echo -e "To enable the OAuth2 Token Endpoint of Wekan:"
echo -e "\t$ snap set $SNAP_NAME OAUTH2_TOKEN_ENDPOINT='/oauth/token'"
echo -e "\t-Disable the OAuth2 Token Endpoint of Wekan:"