summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md15
-rw-r--r--Dockerfile8
-rw-r--r--Stackerfile.yml2
-rw-r--r--client/components/main/layouts.js19
-rw-r--r--docker-compose.yml7
-rw-r--r--i18n/oc.i18n.json680
-rw-r--r--i18n/ru.i18n.json44
-rw-r--r--package.json2
-rwxr-xr-xreleases/translations/pull-translations.sh3
-rwxr-xr-xreleases/virtualbox/start-wekan.sh8
-rw-r--r--sandstorm-pkgdef.capnp4
-rwxr-xr-xsnap-src/bin/config18
-rwxr-xr-xsnap-src/bin/wekan-help7
-rwxr-xr-xstart-wekan.bat7
-rwxr-xr-xstart-wekan.sh8
15 files changed, 798 insertions, 34 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cfc766af..f85d3dcf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,20 @@
# Upcoming Wekan release
-This release [adds](https://github.com/wekan/wekan/commit/856872815292590e0c4eff2848ea1b857a318dc4) the following new features, thanks to xet7:
+This release adds the following new features:
+
+- Add language: Occitan.
+
+Thanks to translators for their translations.
+
+# v2.43 2019-03-08 Wekan release
+
+This release adds the following new features, thanks to xet7:
- [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990).
-- Order All Boards by Starred, Color, Title and Description.
+- [Order All Boards by Starred, Color, Title and Description](https://github.com/wekan/wekan/commit/856872815292590e0c4eff2848ea1b857a318dc4).
+- [HTTP header automatic login](https://github.com/wekan/wekan/commit/ff825d6123ecfd033ccb08ce97c11cefee676104)
+ for [3rd party authentication server method](https://github.com/wekan/wekan/issues/2019) like siteminder, and any webserver that
+ handles authentication and based on it adds HTTP headers to be used for login. Please test.
and adds the following partial fix, thanks to andresmanelli:
diff --git a/Dockerfile b/Dockerfile
index 58a1b629..c833bc17 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -77,6 +77,10 @@ ARG LDAP_SYNC_GROUP_ROLES
ARG LDAP_DEFAULT_DOMAIN
ARG LDAP_SYNC_ADMIN_STATUS
ARG LDAP_SYNC_ADMIN_GROUPS
+ARG HEADER_LOGIN_ID
+ARG HEADER_LOGIN_FIRSTNAME
+ARG HEADER_LOGIN_LASTNAME
+ARG HEADER_LOGIN_EMAIL
ARG LOGOUT_WITH_TIMER
ARG LOGOUT_IN
ARG LOGOUT_ON_HOURS
@@ -163,6 +167,10 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
LDAP_DEFAULT_DOMAIN="" \
LDAP_SYNC_ADMIN_STATUS="" \
LDAP_SYNC_ADMIN_GROUPS="" \
+ HEADER_LOGIN_ID="" \
+ HEADER_LOGIN_FIRSTNAME="" \
+ HEADER_LOGIN_LASTNAME="" \
+ HEADER_LOGIN_EMAIL="" \
LOGOUT_WITH_TIMER=false \
LOGOUT_IN="" \
LOGOUT_ON_HOURS="" \
diff --git a/Stackerfile.yml b/Stackerfile.yml
index 1445dc40..ec766564 100644
--- a/Stackerfile.yml
+++ b/Stackerfile.yml
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.42.0"
+appVersion: "v2.43.0"
files:
userUploads:
- README.md
diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js
index 6f7c914a..4305de7c 100644
--- a/client/components/main/layouts.js
+++ b/client/components/main/layouts.js
@@ -101,8 +101,14 @@ Template.defaultLayout.events({
});
async function authentication(event, instance) {
- const match = $('#at-field-username_and_email').val();
- const password = $('#at-field-password').val();
+
+ // If header login id is set, use it for login.
+ // Header username = Email address
+ // Header password = Login ID
+ // Not user currently: req.headers[process.env.HEADER_LOGIN_FIRSTNAME]
+ // and req.headers[process.env.HEADER_LOGIN_LASTNAME]
+ const match = req.headers[process.env.HEADER_LOGIN_EMAIL] || $('#at-field-username_and_email').val();
+ const password = req.headers[process.env.HEADER_LOGIN_ID] || $('#at-field-password').val();
if (!match || !password) return;
@@ -110,9 +116,12 @@ async function authentication(event, instance) {
if (result === 'password') return;
- // Stop submit #at-pwd-form
- event.preventDefault();
- event.stopImmediatePropagation();
+ // If header login id is not set, don't try to login automatically.
+ if (!process.env.HEADER_LOGIN_ID) {
+ // Stop submit #at-pwd-form
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
switch (result) {
case 'ldap':
diff --git a/docker-compose.yml b/docker-compose.yml
index 9646a012..454964e8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -508,6 +508,13 @@ services:
# Comma separated list of admin group names to sync.
#- LDAP_SYNC_ADMIN_GROUPS=group1,group2
#---------------------------------------------------------------------
+ # Login to LDAP automatically with HTTP header.
+ # In below example for siteminder, at right side of = is header name.
+ #- HEADER_LOGIN_ID=BNPPUID
+ #- HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+ #- HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+ #- HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+ #---------------------------------------------------------------------
# ==== LOGOUT TIMER, probably does not work yet ====
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json
new file mode 100644
index 00000000..da28d1a0
--- /dev/null
+++ b/i18n/oc.i18n.json
@@ -0,0 +1,680 @@
+{
+ "accept": "Accept",
+ "act-activity-notify": "Activity Notification",
+ "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-createBoard": "created board __board__",
+ "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+ "act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-createList": "added list __list__ to board __board__",
+ "act-addBoardMember": "added member __member__ to board __board__",
+ "act-archivedBoard": "Board __board__ moved to Archive",
+ "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+ "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+ "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive",
+ "act-importBoard": "imported board __board__",
+ "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+ "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__",
+ "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-moveCard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__",
+ "act-removeBoardMember": "removed member __member__ from board __board__",
+ "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+ "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-withBoardTitle": "__board__",
+ "act-withCardTitle": "[__board__] __card__",
+ "actions": "Actions",
+ "activities": "Activities",
+ "activity": "Activity",
+ "activity-added": "added %s to %s",
+ "activity-archived": "%s moved to Archive",
+ "activity-attached": "attached %s to %s",
+ "activity-created": "created %s",
+ "activity-customfield-created": "created custom field %s",
+ "activity-excluded": "excluded %s from %s",
+ "activity-imported": "imported %s into %s from %s",
+ "activity-imported-board": "imported %s from %s",
+ "activity-joined": "joined %s",
+ "activity-moved": "moved %s from %s to %s",
+ "activity-on": "on %s",
+ "activity-removed": "removed %s from %s",
+ "activity-sent": "sent %s to %s",
+ "activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
+ "activity-checked-item": "checked %s in checklist %s of %s",
+ "activity-unchecked-item": "unchecked %s in checklist %s of %s",
+ "activity-checklist-added": "added checklist to %s",
+ "activity-checklist-removed": "removed a checklist from %s",
+ "activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
+ "activity-checklist-item-added": "added checklist item to '%s' in %s",
+ "activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
+ "add": "Add",
+ "activity-checked-item-card": "checked %s in checklist %s",
+ "activity-unchecked-item-card": "unchecked %s in checklist %s",
+ "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "activity-checklist-uncompleted-card": "uncompleted the checklist %s",
+ "add-attachment": "Add Attachment",
+ "add-board": "Add Board",
+ "add-card": "Add Card",
+ "add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
+ "add-checklist": "Add Checklist",
+ "add-checklist-item": "Add an item to checklist",
+ "add-cover": "Add Cover",
+ "add-label": "Add Label",
+ "add-list": "Add List",
+ "add-members": "Add Members",
+ "added": "Added",
+ "addMemberPopup-title": "Members",
+ "admin": "Admin",
+ "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+ "admin-announcement": "Announcement",
+ "admin-announcement-active": "Active System-Wide Announcement",
+ "admin-announcement-title": "Announcement from Administrator",
+ "all-boards": "All boards",
+ "and-n-other-card": "And __count__ other card",
+ "and-n-other-card_plural": "And __count__ other cards",
+ "apply": "Apply",
+ "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.",
+ "archive": "Move to Archive",
+ "archive-all": "Move All to Archive",
+ "archive-board": "Move Board to Archive",
+ "archive-card": "Move Card to Archive",
+ "archive-list": "Move List to Archive",
+ "archive-swimlane": "Move Swimlane to Archive",
+ "archive-selection": "Move selection to Archive",
+ "archiveBoardPopup-title": "Move Board to Archive?",
+ "archived-items": "Archive",
+ "archived-boards": "Boards in Archive",
+ "restore-board": "Restore Board",
+ "no-archived-boards": "No Boards in Archive.",
+ "archives": "Archive",
+ "template": "Template",
+ "templates": "Templates",
+ "assign-member": "Assign member",
+ "attached": "attached",
+ "attachment": "Attachment",
+ "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+ "attachmentDeletePopup-title": "Delete Attachment?",
+ "attachments": "Attachments",
+ "auto-watch": "Automatically watch boards when they are created",
+ "avatar-too-big": "The avatar is too large (70KB max)",
+ "back": "Back",
+ "board-change-color": "Change color",
+ "board-nb-stars": "%s stars",
+ "board-not-found": "Board not found",
+ "board-private-info": "This board will be <strong>private</strong>.",
+ "board-public-info": "This board will be <strong>public</strong>.",
+ "boardChangeColorPopup-title": "Change Board Background",
+ "boardChangeTitlePopup-title": "Rename Board",
+ "boardChangeVisibilityPopup-title": "Change Visibility",
+ "boardChangeWatchPopup-title": "Change Watch",
+ "boardMenuPopup-title": "Board Settings",
+ "boards": "Boards",
+ "board-view": "Board View",
+ "board-view-cal": "Calendar",
+ "board-view-swimlanes": "Swimlanes",
+ "board-view-lists": "Lists",
+ "bucket-example": "Like “Bucket List” for example",
+ "cancel": "Cancel",
+ "card-archived": "This card is moved to Archive.",
+ "board-archived": "This board is moved to Archive.",
+ "card-comments-title": "This card has %s comment.",
+ "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+ "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+ "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
+ "card-due": "Due",
+ "card-due-on": "Due on",
+ "card-spent": "Spent Time",
+ "card-edit-attachments": "Edit attachments",
+ "card-edit-custom-fields": "Edit custom fields",
+ "card-edit-labels": "Edit labels",
+ "card-edit-members": "Edit members",
+ "card-labels-title": "Change the labels for the card.",
+ "card-members-title": "Add or remove members of the board from the card.",
+ "card-start": "Start",
+ "card-start-on": "Starts on",
+ "cardAttachmentsPopup-title": "Attach From",
+ "cardCustomField-datePopup-title": "Change date",
+ "cardCustomFieldsPopup-title": "Edit custom fields",
+ "cardDeletePopup-title": "Delete Card?",
+ "cardDetailsActionsPopup-title": "Card Actions",
+ "cardLabelsPopup-title": "Labels",
+ "cardMembersPopup-title": "Members",
+ "cardMorePopup-title": "More",
+ "cardTemplatePopup-title": "Create template",
+ "cards": "Cards",
+ "cards-count": "Cards",
+ "casSignIn": "Sign In with CAS",
+ "cardType-card": "Card",
+ "cardType-linkedCard": "Linked Card",
+ "cardType-linkedBoard": "Linked Board",
+ "change": "Change",
+ "change-avatar": "Change Avatar",
+ "change-password": "Change Password",
+ "change-permissions": "Change permissions",
+ "change-settings": "Change Settings",
+ "changeAvatarPopup-title": "Change Avatar",
+ "changeLanguagePopup-title": "Change Language",
+ "changePasswordPopup-title": "Change Password",
+ "changePermissionsPopup-title": "Change Permissions",
+ "changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
+ "checklists": "Checklists",
+ "click-to-star": "Click to star this board.",
+ "click-to-unstar": "Click to unstar this board.",
+ "clipboard": "Clipboard or drag & drop",
+ "close": "Close",
+ "close-board": "Close Board",
+ "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
+ "color-black": "black",
+ "color-blue": "blue",
+ "color-crimson": "crimson",
+ "color-darkgreen": "darkgreen",
+ "color-gold": "gold",
+ "color-gray": "gray",
+ "color-green": "green",
+ "color-indigo": "indigo",
+ "color-lime": "lime",
+ "color-magenta": "magenta",
+ "color-mistyrose": "mistyrose",
+ "color-navy": "navy",
+ "color-orange": "orange",
+ "color-paleturquoise": "paleturquoise",
+ "color-peachpuff": "peachpuff",
+ "color-pink": "pink",
+ "color-plum": "plum",
+ "color-purple": "purple",
+ "color-red": "red",
+ "color-saddlebrown": "saddlebrown",
+ "color-silver": "silver",
+ "color-sky": "sky",
+ "color-slateblue": "slateblue",
+ "color-white": "white",
+ "color-yellow": "yellow",
+ "unset-color": "Unset",
+ "comment": "Comment",
+ "comment-placeholder": "Write Comment",
+ "comment-only": "Comment only",
+ "comment-only-desc": "Can comment on cards only.",
+ "no-comments": "No comments",
+ "no-comments-desc": "Can not see comments and activities.",
+ "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?",
+ "copy-card-link-to-clipboard": "Copy card link to clipboard",
+ "linkCardPopup-title": "Link Card",
+ "searchElementPopup-title": "Search",
+ "copyCardPopup-title": "Copy Card",
+ "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+ "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+ "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
+ "create": "Create",
+ "createBoardPopup-title": "Create Board",
+ "chooseBoardSourcePopup-title": "Import board",
+ "createLabelPopup-title": "Create Label",
+ "createCustomField": "Create Field",
+ "createCustomFieldPopup-title": "Create Field",
+ "current": "current",
+ "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+ "custom-field-checkbox": "Checkbox",
+ "custom-field-date": "Date",
+ "custom-field-dropdown": "Dropdown List",
+ "custom-field-dropdown-none": "(none)",
+ "custom-field-dropdown-options": "List Options",
+ "custom-field-dropdown-options-placeholder": "Press enter to add more options",
+ "custom-field-dropdown-unknown": "(unknown)",
+ "custom-field-number": "Number",
+ "custom-field-text": "Text",
+ "custom-fields": "Custom Fields",
+ "date": "Date",
+ "decline": "Decline",
+ "default-avatar": "Default avatar",
+ "delete": "Delete",
+ "deleteCustomFieldPopup-title": "Delete Custom Field?",
+ "deleteLabelPopup-title": "Delete Label?",
+ "description": "Description",
+ "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+ "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+ "discard": "Discard",
+ "done": "Done",
+ "download": "Download",
+ "edit": "Edit",
+ "edit-avatar": "Change Avatar",
+ "edit-profile": "Edit Profile",
+ "edit-wip-limit": "Edit WIP Limit",
+ "soft-wip-limit": "Soft WIP Limit",
+ "editCardStartDatePopup-title": "Change start date",
+ "editCardDueDatePopup-title": "Change due date",
+ "editCustomFieldPopup-title": "Edit Field",
+ "editCardSpentTimePopup-title": "Change spent time",
+ "editLabelPopup-title": "Change Label",
+ "editNotificationPopup-title": "Edit Notification",
+ "editProfilePopup-title": "Edit Profile",
+ "email": "Email",
+ "email-enrollAccount-subject": "An account created for you on __siteName__",
+ "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+ "email-fail": "Sending email failed",
+ "email-fail-text": "Error trying to send email",
+ "email-invalid": "Invalid email",
+ "email-invite": "Invite via Email",
+ "email-invite-subject": "__inviter__ sent you an invitation",
+ "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+ "email-resetPassword-subject": "Reset your password on __siteName__",
+ "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+ "email-sent": "Email sent",
+ "email-verifyEmail-subject": "Verify your email address on __siteName__",
+ "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+ "enable-wip-limit": "Enable WIP Limit",
+ "error-board-doesNotExist": "This board does not exist",
+ "error-board-notAdmin": "You need to be admin of this board to do that",
+ "error-board-notAMember": "You need to be a member of this board to do that",
+ "error-json-malformed": "Your text is not valid JSON",
+ "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+ "error-list-doesNotExist": "This list does not exist",
+ "error-user-doesNotExist": "This user does not exist",
+ "error-user-notAllowSelf": "You can not invite yourself",
+ "error-user-notCreated": "This user is not created",
+ "error-username-taken": "This username is already taken",
+ "error-email-taken": "Email has already been taken",
+ "export-board": "Export board",
+ "filter": "Filter",
+ "filter-cards": "Filter Cards",
+ "filter-clear": "Clear filter",
+ "filter-no-label": "No label",
+ "filter-no-member": "No member",
+ "filter-no-custom-fields": "No Custom Fields",
+ "filter-on": "Filter is on",
+ "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+ "filter-to-selection": "Filter to selection",
+ "advanced-filter-label": "Advanced Filter",
+ "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",
+ "fullname": "Full Name",
+ "header-logo-title": "Go back to your boards page.",
+ "hide-system-messages": "Hide system messages",
+ "headerBarCreateBoardPopup-title": "Create Board",
+ "home": "Home",
+ "import": "Import",
+ "link": "Link",
+ "import-board": "import board",
+ "import-board-c": "Import board",
+ "import-board-title-trello": "Import board from 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-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
+ "from-trello": "From Trello",
+ "from-wekan": "From previous export",
+ "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
+ "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+ "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
+ "import-json-placeholder": "Paste your valid JSON data here",
+ "import-map-members": "Map members",
+ "import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
+ "import-show-user-mapping": "Review members mapping",
+ "import-user-select": "Pick your existing user you want to use as this member",
+ "importMapMembersAddPopup-title": "Select member",
+ "info": "Version",
+ "initials": "Initials",
+ "invalid-date": "Invalid date",
+ "invalid-time": "Invalid time",
+ "invalid-user": "Invalid user",
+ "joined": "joined",
+ "just-invited": "You are just invited to this board",
+ "keyboard-shortcuts": "Keyboard shortcuts",
+ "label-create": "Create Label",
+ "label-default": "%s label (default)",
+ "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+ "labels": "Labels",
+ "language": "Language",
+ "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+ "leave-board": "Leave Board",
+ "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
+ "leaveBoardPopup-title": "Leave Board ?",
+ "link-card": "Link to this card",
+ "list-archive-cards": "Move all cards in this list to Archive",
+ "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
+ "list-move-cards": "Move all cards in this list",
+ "list-select-cards": "Select all cards in this list",
+ "set-color-list": "Set Color",
+ "listActionPopup-title": "List Actions",
+ "swimlaneActionPopup-title": "Swimlane Actions",
+ "swimlaneAddPopup-title": "Add a Swimlane below",
+ "listImportCardPopup-title": "Import a Trello card",
+ "listMorePopup-title": "More",
+ "link-list": "Link to this list",
+ "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
+ "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
+ "lists": "Lists",
+ "swimlanes": "Swimlanes",
+ "log-out": "Log Out",
+ "log-in": "Log In",
+ "loginPopup-title": "Log In",
+ "memberMenuPopup-title": "Member Settings",
+ "members": "Members",
+ "menu": "Menu",
+ "move-selection": "Move selection",
+ "moveCardPopup-title": "Move Card",
+ "moveCardToBottom-title": "Move to Bottom",
+ "moveCardToTop-title": "Move to Top",
+ "moveSelectionPopup-title": "Move selection",
+ "multi-selection": "Multi-Selection",
+ "multi-selection-on": "Multi-Selection is on",
+ "muted": "Muted",
+ "muted-info": "You will never be notified of any changes in this board",
+ "my-boards": "My Boards",
+ "name": "Name",
+ "no-archived-cards": "No cards in Archive.",
+ "no-archived-lists": "No lists in Archive.",
+ "no-archived-swimlanes": "No swimlanes in Archive.",
+ "no-results": "No results",
+ "normal": "Normal",
+ "normal-desc": "Can view and edit cards. Can't change settings.",
+ "not-accepted-yet": "Invitation not accepted yet",
+ "notify-participate": "Receive updates to any cards you participate as creater or member",
+ "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+ "optional": "optional",
+ "or": "or",
+ "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+ "page-not-found": "Page not found.",
+ "password": "Password",
+ "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+ "participating": "Participating",
+ "preview": "Preview",
+ "previewAttachedImagePopup-title": "Preview",
+ "previewClipboardImagePopup-title": "Preview",
+ "private": "Private",
+ "private-desc": "This board is private. Only people added to the board can view and edit it.",
+ "profile": "Profile",
+ "public": "Public",
+ "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+ "quick-access-description": "Star a board to add a shortcut in this bar.",
+ "remove-cover": "Remove Cover",
+ "remove-from-board": "Remove from Board",
+ "remove-label": "Remove Label",
+ "listDeletePopup-title": "Delete List ?",
+ "remove-member": "Remove Member",
+ "remove-member-from-card": "Remove from Card",
+ "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+ "removeMemberPopup-title": "Remove Member?",
+ "rename": "Rename",
+ "rename-board": "Rename Board",
+ "restore": "Restore",
+ "save": "Save",
+ "search": "Search",
+ "rules": "Rules",
+ "search-cards": "Search from card titles and descriptions on this board",
+ "search-example": "Text to search for?",
+ "select-color": "Select Color",
+ "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
+ "setWipLimitPopup-title": "Set WIP Limit",
+ "shortcut-assign-self": "Assign yourself to current card",
+ "shortcut-autocomplete-emoji": "Autocomplete emoji",
+ "shortcut-autocomplete-members": "Autocomplete members",
+ "shortcut-clear-filters": "Clear all filters",
+ "shortcut-close-dialog": "Close Dialog",
+ "shortcut-filter-my-cards": "Filter my cards",
+ "shortcut-show-shortcuts": "Bring up this shortcuts list",
+ "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+ "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+ "show-cards-minimum-count": "Show cards count if list contains more than",
+ "sidebar-open": "Open Sidebar",
+ "sidebar-close": "Close Sidebar",
+ "signupPopup-title": "Create an Account",
+ "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+ "starred-boards": "Starred Boards",
+ "starred-boards-description": "Starred boards show up at the top of your boards list.",
+ "subscribe": "Subscribe",
+ "team": "Team",
+ "this-board": "this board",
+ "this-card": "this card",
+ "spent-time-hours": "Spent time (hours)",
+ "overtime-hours": "Overtime (hours)",
+ "overtime": "Overtime",
+ "has-overtime-cards": "Has overtime cards",
+ "has-spenttime-cards": "Has spent time cards",
+ "time": "Time",
+ "title": "Title",
+ "tracking": "Tracking",
+ "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+ "type": "Type",
+ "unassign-member": "Unassign member",
+ "unsaved-description": "You have an unsaved description.",
+ "unwatch": "Unwatch",
+ "upload": "Upload",
+ "upload-avatar": "Upload an avatar",
+ "uploaded-avatar": "Uploaded an avatar",
+ "username": "Username",
+ "view-it": "View it",
+ "warn-list-archived": "warning: this card is in an list at Archive",
+ "watch": "Watch",
+ "watching": "Watching",
+ "watching-info": "You will be notified of any change in this board",
+ "welcome-board": "Welcome Board",
+ "welcome-swimlane": "Milestone 1",
+ "welcome-list1": "Basics",
+ "welcome-list2": "Advanced",
+ "card-templates-swimlane": "Card Templates",
+ "list-templates-swimlane": "List Templates",
+ "board-templates-swimlane": "Board Templates",
+ "what-to-do": "What do you want to do?",
+ "wipLimitErrorPopup-title": "Invalid WIP Limit",
+ "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
+ "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
+ "admin-panel": "Admin Panel",
+ "settings": "Settings",
+ "people": "People",
+ "registration": "Registration",
+ "disable-self-registration": "Disable Self-Registration",
+ "invite": "Invite",
+ "invite-people": "Invite People",
+ "to-boards": "To board(s)",
+ "email-addresses": "Email Addresses",
+ "smtp-host-description": "The address of the SMTP server that handles your emails.",
+ "smtp-port-description": "The port your SMTP server uses for outgoing emails.",
+ "smtp-tls-description": "Enable TLS support for SMTP server",
+ "smtp-host": "SMTP Host",
+ "smtp-port": "SMTP Port",
+ "smtp-username": "Username",
+ "smtp-password": "Password",
+ "smtp-tls": "TLS support",
+ "send-from": "From",
+ "send-smtp-test": "Send a test email to yourself",
+ "invitation-code": "Invitation Code",
+ "email-invite-register-subject": "__inviter__ sent you an invitation",
+ "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
+ "email-smtp-test-subject": "SMTP Test Email",
+ "email-smtp-test-text": "You have successfully sent an email",
+ "error-invitation-code-not-exist": "Invitation code doesn't exist",
+ "error-notAuthorized": "You are not authorized to view this page.",
+ "outgoing-webhooks": "Outgoing Webhooks",
+ "outgoingWebhooksPopup-title": "Outgoing Webhooks",
+ "boardCardTitlePopup-title": "Card Title Filter",
+ "new-outgoing-webhook": "New Outgoing Webhook",
+ "no-name": "(Unknown)",
+ "Node_version": "Node version",
+ "OS_Arch": "OS Arch",
+ "OS_Cpus": "OS CPU Count",
+ "OS_Freemem": "OS Free Memory",
+ "OS_Loadavg": "OS Load Average",
+ "OS_Platform": "OS Platform",
+ "OS_Release": "OS Release",
+ "OS_Totalmem": "OS Total Memory",
+ "OS_Type": "OS Type",
+ "OS_Uptime": "OS Uptime",
+ "days": "days",
+ "hours": "hours",
+ "minutes": "minutes",
+ "seconds": "seconds",
+ "show-field-on-card": "Show this field on card",
+ "automatically-field-on-card": "Auto create field to all cards",
+ "showLabel-field-on-card": "Show field label on minicard",
+ "yes": "Yes",
+ "no": "No",
+ "accounts": "Accounts",
+ "accounts-allowEmailChange": "Allow Email Change",
+ "accounts-allowUserNameChange": "Allow Username Change",
+ "createdAt": "Created at",
+ "verified": "Verified",
+ "active": "Active",
+ "card-received": "Received",
+ "card-received-on": "Received on",
+ "card-end": "End",
+ "card-end-on": "Ends on",
+ "editCardReceivedDatePopup-title": "Change received date",
+ "editCardEndDatePopup-title": "Change end date",
+ "setCardColorPopup-title": "Set color",
+ "setCardActionsColorPopup-title": "Choose a color",
+ "setSwimlaneColorPopup-title": "Choose a color",
+ "setListColorPopup-title": "Choose a color",
+ "assigned-by": "Assigned By",
+ "requested-by": "Requested By",
+ "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
+ "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
+ "boardDeletePopup-title": "Delete Board?",
+ "delete-board": "Delete Board",
+ "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",
+ "activity-added-label": "added label '%s' to %s",
+ "activity-removed-label": "removed label '%s' from %s",
+ "activity-delete-attach": "deleted an attachment from %s",
+ "activity-added-label-card": "added label '%s'",
+ "activity-removed-label-card": "removed label '%s'",
+ "activity-delete-attach-card": "deleted an attachment",
+ "r-rule": "Rule",
+ "r-add-trigger": "Add trigger",
+ "r-add-action": "Add action",
+ "r-board-rules": "Board rules",
+ "r-add-rule": "Add rule",
+ "r-view-rule": "View rule",
+ "r-delete-rule": "Delete rule",
+ "r-new-rule-name": "New rule title",
+ "r-no-rules": "No rules",
+ "r-when-a-card": "When a card",
+ "r-is": "is",
+ "r-is-moved": "is moved",
+ "r-added-to": "added to",
+ "r-removed-from": "Removed from",
+ "r-the-board": "the board",
+ "r-list": "list",
+ "set-filter": "Set Filter",
+ "r-moved-to": "Moved to",
+ "r-moved-from": "Moved from",
+ "r-archived": "Moved to Archive",
+ "r-unarchived": "Restored from Archive",
+ "r-a-card": "a card",
+ "r-when-a-label-is": "When a label is",
+ "r-when-the-label-is": "When the label is",
+ "r-list-name": "list name",
+ "r-when-a-member": "When a member is",
+ "r-when-the-member": "When the member",
+ "r-name": "name",
+ "r-when-a-attach": "When an attachment",
+ "r-when-a-checklist": "When a checklist is",
+ "r-when-the-checklist": "When the checklist",
+ "r-completed": "Completed",
+ "r-made-incomplete": "Made incomplete",
+ "r-when-a-item": "When a checklist item is",
+ "r-when-the-item": "When the checklist item",
+ "r-checked": "Checked",
+ "r-unchecked": "Unchecked",
+ "r-move-card-to": "Move card to",
+ "r-top-of": "Top of",
+ "r-bottom-of": "Bottom of",
+ "r-its-list": "its list",
+ "r-archive": "Move to Archive",
+ "r-unarchive": "Restore from Archive",
+ "r-card": "card",
+ "r-add": "Add",
+ "r-remove": "Remove",
+ "r-label": "label",
+ "r-member": "member",
+ "r-remove-all": "Remove all members from the card",
+ "r-set-color": "Set color to",
+ "r-checklist": "checklist",
+ "r-check-all": "Check all",
+ "r-uncheck-all": "Uncheck all",
+ "r-items-check": "items of checklist",
+ "r-check": "Check",
+ "r-uncheck": "Uncheck",
+ "r-item": "item",
+ "r-of-checklist": "of checklist",
+ "r-send-email": "Send an email",
+ "r-to": "to",
+ "r-subject": "subject",
+ "r-rule-details": "Rule details",
+ "r-d-move-to-top-gen": "Move card to top of its list",
+ "r-d-move-to-top-spec": "Move card to top of list",
+ "r-d-move-to-bottom-gen": "Move card to bottom of its list",
+ "r-d-move-to-bottom-spec": "Move card to bottom of list",
+ "r-d-send-email": "Send email",
+ "r-d-send-email-to": "to",
+ "r-d-send-email-subject": "subject",
+ "r-d-send-email-message": "message",
+ "r-d-archive": "Move card to Archive",
+ "r-d-unarchive": "Restore card from Archive",
+ "r-d-add-label": "Add label",
+ "r-d-remove-label": "Remove label",
+ "r-create-card": "Create new card",
+ "r-in-list": "in list",
+ "r-in-swimlane": "in swimlane",
+ "r-d-add-member": "Add member",
+ "r-d-remove-member": "Remove member",
+ "r-d-remove-all-member": "Remove all member",
+ "r-d-check-all": "Check all items of a list",
+ "r-d-uncheck-all": "Uncheck all items of a list",
+ "r-d-check-one": "Check item",
+ "r-d-uncheck-one": "Uncheck item",
+ "r-d-check-of-list": "of checklist",
+ "r-d-add-checklist": "Add checklist",
+ "r-d-remove-checklist": "Remove checklist",
+ "r-by": "by",
+ "r-add-checklist": "Add checklist",
+ "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-when-a-card-is-moved": "When a card is moved to another list",
+ "ldap": "LDAP",
+ "oauth2": "OAuth2",
+ "cas": "CAS",
+ "authentication-method": "Authentication method",
+ "authentication-type": "Authentication type",
+ "custom-product-name": "Custom Product Name",
+ "layout": "Layout",
+ "hide-logo": "Hide 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",
+ "display-authentication-method": "Display Authentication Method",
+ "default-authentication-method": "Default Authentication Method"
+} \ No newline at end of file
diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json
index 0db71a82..c305411d 100644
--- a/i18n/ru.i18n.json
+++ b/i18n/ru.i18n.json
@@ -1,37 +1,37 @@
{
"accept": "Принять",
"act-activity-notify": "Уведомление о действиях участников",
- "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
- "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-addAttachment": "прикрепил вложение __attachment__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-deleteAttachment": "удалил вложение __attachment__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-addSubtask": "добавил подзадачу __subtask__ для карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-addLabel": "Добавлена метка __label__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-removeLabel": "Снята метка __label__ с карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-addChecklist": "добавил контрольный список __checklist__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-addChecklistItem": "добавил пункт __checklistItem__ в контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-removeChecklist": "удалил контрольный список __checklist__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-removeChecklistItem": "удалил пункт __checklistItem__ из контрольного списка __checkList__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-checkedItem": "отметил __checklistItem__ в контрольном списке __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-uncheckedItem": "снял __checklistItem__ в контрольном списке __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-completeChecklist": "завершил контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-uncompleteChecklist": "вновь открыл контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-addComment": "написал в карточке __card__: __comment__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-createBoard": "создал доску __board__",
- "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
- "act-createCustomField": "created custom field __customField__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-createCard": "создал карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
+ "act-createCustomField": "создал поле __customField__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__\n",
"act-createList": "добавил список __list__ на доску __board__",
"act-addBoardMember": "добавил участника __member__ на доску __board__",
"act-archivedBoard": "Доска __board__ перемещена в Архив",
"act-archivedCard": "Карточка __card__ из списка __list__ с дорожки __swimlane__ доски __board__ перемещена в Архив",
- "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive",
+ "act-archivedList": "Список __list__ на дорожке __swimlane__ доски __board__ перемещен в Архив",
"act-archivedSwimlane": "Дорожка __swimlane__ на доске __board__ перемещена в Архив",
"act-importBoard": "импортировал доску __board__",
- "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__",
+ "act-importCard": "импортировал карточку __card__ в список __list__ на дорожку __swimlane__ доски __board__",
"act-importList": "импортировал список __list__ на дорожку __swimlane__ доски __board__",
- "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-joinMember": "добавил участника __member__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-moveCard": "переместил карточку __card__ из списка __oldList__ с дорожки __oldSwimlane__ доски __oldBoard__ в список __list__ на дорожку __swimlane__ доски __board__",
"act-removeBoardMember": "удалил участника __member__ с доски __board__",
"act-restoredCard": "восстановил карточку __card__ в список __list__ на дорожку __swimlane__ доски __board__",
- "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "act-unjoinMember": "удалил участника __member__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Действия",
@@ -56,14 +56,14 @@
"activity-unchecked-item": "снял %s в контрольном списке %s в %s",
"activity-checklist-added": "добавил контрольный список в %s",
"activity-checklist-removed": "удалил контрольный список из %s",
- "activity-checklist-completed": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "activity-checklist-completed": "завершил контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"activity-checklist-uncompleted": "вновь открыл контрольный список %s в %s",
"activity-checklist-item-added": "добавил пункт в контрольный список '%s' в карточке %s",
"activity-checklist-item-removed": "удалил пункт из контрольного списка '%s' в карточке %s",
"add": "Создать",
"activity-checked-item-card": "отметил %s в контрольном списке %s",
"activity-unchecked-item-card": "снял %s в контрольном списке %s",
- "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
+ "activity-checklist-completed-card": "завершил контрольный список __checklist__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"activity-checklist-uncompleted-card": "вновь открыл контрольный список %s",
"add-attachment": "Добавить вложение",
"add-board": "Добавить доску",
diff --git a/package.json b/package.json
index f044c984..27536dc8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "v2.42.0",
+ "version": "v2.43.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
diff --git a/releases/translations/pull-translations.sh b/releases/translations/pull-translations.sh
index bea4d0cb..4639149f 100755
--- a/releases/translations/pull-translations.sh
+++ b/releases/translations/pull-translations.sh
@@ -99,6 +99,9 @@ tx pull -f -l nl
echo "Norwegian:"
tx pull -f -l no
+echo "Occitan:"
+tx pull -f -l oc
+
echo "Polish:"
tx pull -f -l pl
diff --git a/releases/virtualbox/start-wekan.sh b/releases/virtualbox/start-wekan.sh
index 08c79778..31a95728 100755
--- a/releases/virtualbox/start-wekan.sh
+++ b/releases/virtualbox/start-wekan.sh
@@ -251,6 +251,14 @@
#export LDAP_SYNC_ADMIN_STATUS=true
# Comma separated list of admin group names.
#export LDAP_SYNC_ADMIN_GROUPS=group1,group2
+ #---------------------------------------------------------------------
+ # Login to LDAP automatically with HTTP header.
+ # In below example for siteminder, at right side of = is header name.
+ #export HEADER_LOGIN_ID=BNPPUID
+ #export HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+ #export HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+ #export HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+ #---------------------------------------------------------------------
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
#export LOGOUT_WITH_TIMER=
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 181cceb2..27155571 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 = 244,
+ appVersion = 245,
# Increment this for every release.
- appMarketingVersion = (defaultText = "2.42.0~2019-03-07"),
+ appMarketingVersion = (defaultText = "2.43.0~2019-03-08"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
diff --git a/snap-src/bin/config b/snap-src/bin/config
index 3e32c221..eecb7ba1 100755
--- a/snap-src/bin/config
+++ b/snap-src/bin/config
@@ -3,7 +3,7 @@
# All supported keys are defined here together with descriptions and default values
# list of supported keys
-keys="DEBUG 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 EMAIL_NOTIFICATION_TIMEOUT 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 OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP 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 LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
+keys="DEBUG 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 EMAIL_NOTIFICATION_TIMEOUT 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 OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP 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 LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
# default values
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
@@ -326,6 +326,22 @@ DESCRIPTION_LDAP_DEFAULT_DOMAIN="The default domain of the ldap it is used to cr
DEFAULT_LDAP_DEFAULT_DOMAIN=""
KEY_LDAP_DEFAULT_DOMAIN="ldap-default-domain"
+DESCRIPTION_HEADER_LOGIN_ID="Header login ID. Example for siteminder: BNPPUID"
+DEFAULT_HEADER_LOGIN_ID=""
+KEY_HEADER_LOGIN_ID="header-login-id"
+
+DESCRIPTION_HEADER_LOGIN_FIRSTNAME="Header login firstname. Example for siteminder: BNPPFIRSTNAME"
+DEFAULT_HEADER_LOGIN_FIRSTNAME="Header login firstname. Example for siteminder: BNPPFIRSTNAME"
+KEY_HEADER_LOGIN_FIRSTNAME="header-login-firstname"
+
+DESCRIPTION_HEADER_LOGIN_LASTNAME="Header login lastname. Example for siteminder: BNPPLASTNAME"
+DEFAULT_HEADER_LOGIN_LASTNAME="Header login firstname. Example for siteminder: BNPPLASTNAME"
+KEY_HEADER_LOGIN_LASTNAME="header-login-lastname"
+
+DESCRIPTION_HEADER_LOGIN_EMAIL="Header login email. Example for siteminder: BNPPEMAILADDRESS"
+DEFAULT_HEADER_LOGIN_EMAIL="Header login email. Example for siteminder: BNPPEMAILADDRESS"
+KEY_HEADER_LOGIN_EMAIL="header-login-email"
+
DESCRIPTION_LOGOUT_WITH_TIMER="Enables or not the option logout with timer"
DEFAULT_LOGOUT_WITH_TIMER="false"
KEY_LOGOUT_WITH_TIMER="logout-with-timer"
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
index e1945357..766a7df7 100755
--- a/snap-src/bin/wekan-help
+++ b/snap-src/bin/wekan-help
@@ -307,6 +307,13 @@ echo -e "Logout with timer."
echo -e "Enable or not the option that allows to disconnect an user after a given time:"
echo -e "\t$ snap set $SNAP_NAME logout-with-timer='true'"
echo -e "\n"
+echo -e "Login to LDAP automatically with HTTP header."
+echo -e "In below example for siteminder, at right side of = is header name."
+echo -e "\t$ snap set $SNAP_NAME header-login-id='BNPPUID'"
+echo -e "\t$ snap set $SNAP_NAME header-login-firstname='BNPPFIRSTNAME'"
+echo -e "\t$ snap set $SNAP_NAME header-login-lastname='BNPPLASTNAME'"
+echo -e "\t$ snap set $SNAP_NAME header-login-email='BNPPEMAILADDRESS'"
+echo -e "\n"
echo -e "Logout in."
echo -e "Logout in how many days:"
echo -e "\t$ snap set $SNAP_NAME logout-in='1'"
diff --git a/start-wekan.bat b/start-wekan.bat
index 229bf2db..001700f3 100755
--- a/start-wekan.bat
+++ b/start-wekan.bat
@@ -254,6 +254,13 @@ REM SET LDAP_SYNC_ADMIN_STATUS=true
REM # Comma separated list of admin group names to sync.
REM SET LDAP_SYNC_ADMIN_GROUPS=group1,group2
+REM # Login to LDAP automatically with HTTP header.
+REM # In below example for siteminder, at right side of = is header name.
+REM SET HEADER_LOGIN_ID=BNPPUID
+REM SET HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+REM SET HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+REM SET HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+
REM ------------------------------------------------
REM # LOGOUT_WITH_TIMER : Enables or not the option logout with timer
diff --git a/start-wekan.sh b/start-wekan.sh
index 78084c1c..184be575 100755
--- a/start-wekan.sh
+++ b/start-wekan.sh
@@ -269,6 +269,14 @@ function wekan_repo_check(){
#export LDAP_SYNC_ADMIN_STATUS=true
# Comma separated list of admin group names to sync.
#export LDAP_SYNC_ADMIN_GROUPS=group1,group2
+ #---------------------------------------------------------------------
+ # Login to LDAP automatically with HTTP header.
+ # In below example for siteminder, at right side of = is header name.
+ #export HEADER_LOGIN_ID=BNPPUID
+ #export HEADER_LOGIN_FIRSTNAME=BNPPFIRSTNAME
+ #export HEADER_LOGIN_LASTNAME=BNPPLASTNAME
+ #export HEADER_LOGIN_EMAIL=BNPPEMAILADDRESS
+ #---------------------------------------------------------------------
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
# example : LOGOUT_WITH_TIMER=true
#export LOGOUT_WITH_TIMER=