Skip to content

Commit 870504e

Browse files
Release OpenProject 12.2.4
2 parents 314690e + 154c455 commit 870504e

File tree

44 files changed

+251
-133
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+251
-133
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ GEM
665665
octokit (4.25.1)
666666
faraday (>= 1, < 3)
667667
sawyer (~> 0.9)
668-
oj (3.13.16)
668+
oj (3.13.21)
669669
okcomputer (1.18.4)
670670
omniauth-saml (1.10.3)
671671
omniauth (~> 1.3, >= 1.3.2)

config/locales/crowdin/ar.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ ar:
7272
required_for_feature: "This feature is only available with an active Enterprise Edition support token."
7373
enterprise_link: "For more information, click here."
7474
start_trial: 'Start free trial'
75-
book_now: 'Book now'
75+
book_now: 'احجز الآن'
7676
get_quote: 'Get a quote'
7777
buttons:
78-
upgrade: "Upgrade now"
78+
upgrade: "الترقية الآن"
7979
contact: "Contact us for a demo"
8080
enterprise_info_html: "is an Enterprise <strong class='icon-medal'></strong> feature."
8181
upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team."

config/locales/crowdin/hu.yml

Lines changed: 51 additions & 51 deletions
Large diffs are not rendered by default.

config/locales/crowdin/js-tr.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ tr:
6262
button_confirm: "Onaylamak"
6363
button_continue: "Devam et"
6464
button_copy: "Kopyalamak"
65-
button_copy_to_other_project: "Copy to other project"
65+
button_copy_to_other_project: "Başka bir projeye kopyala"
6666
button_custom-fields: "Özel Alanlar"
6767
button_delete: "silmek"
6868
button_delete_watcher: "Takipçi sil"
@@ -520,7 +520,7 @@ tr:
520520
timeline_button: 'You can activate the <b>Gantt chart</b> view to create a timeline for your project.'
521521
timeline: 'Here you can <b>edit your project plan</b>, create new work packages, such as tasks, milestones, phases, and more, as well as <b>add dependencies</b>. All team members can see and update the latest plan at any time.'
522522
team_planner:
523-
overview: 'The team planner lets you visually assign tasks to team members and get an overview of who is working on what.'
523+
overview: 'Takım planlayıcı, takım üyelerine görsel olarak görevler atamanıza ve kimin ne üzerinde çalıştığına dair bir genel bakış elde etmenize olanak tanır.'
524524
calendar: 'The weekly or biweekly planning board displays all work packages assigned to your team members.'
525525
add_assignee: 'To get started, add assignees to the team planner.'
526526
add_existing: 'Search for existing work packages and drag them to the team planner to instantly assign them to a team member and define start and end dates.'
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class FixInvalidJournals < ActiveRecord::Migration[7.0]
2+
def up
3+
get_broken_journals.each do |journable_type, relation|
4+
next unless relation.any?
5+
6+
# rubocop:disable Rails/Output
7+
puts "Cleaning up broken journals on #{journable_type}"
8+
# rubocop:enable Rails/Output
9+
relation.destroy_all
10+
end
11+
end
12+
13+
def down
14+
# nothing to do
15+
end
16+
17+
def get_broken_journals
18+
Journal
19+
.pluck('DISTINCT(journable_type)')
20+
.compact
21+
.to_h do |journable_type|
22+
journal_class = journable_type.constantize.journal_class
23+
24+
relation = Journal
25+
.where(journable_type:)
26+
.where.not(data_type: journal_class.to_s)
27+
28+
[journable_type, relation]
29+
end
30+
end
31+
end

docs/enterprise-guide/enterprise-cloud-guide/backups/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ It is sometimes good to have backups on other locations (e.g. local vs cloud). Y
4040
1. The Token must be already generated and stored in a secure keystore
4141
2. The API Key must be known and stored in a secure keystore
4242

43-
You could use our [example bash script](/script/backup-via-apiv3.sh) and integrate it in your crond for running it daily.
43+
You could use our [example bash script](./script/backup-via-apiv3.sh) and integrate it in your crond for running it daily.

docs/enterprise-guide/enterprise-on-premises-guide/support/installation-support/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Our Premium and Corporate Enterprise on-premises support plans include installat
1111

1212
## Support Data Collector
1313

14-
Please run [our script](/script/op-support-data.sh) and send us the complete terminal output prior to the on-premise installation.
14+
Please run [our script](./script/op-support-data.sh) and send us the complete terminal output prior to the on-premise installation.
1515

1616
The script should run once on the OpenProject on-premises host with or without OpenProject installed
1717
It will ask you some questions that are needed to be answered interactively.

docs/installation-and-operations/installation/docker/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ Please be aware that only those variables shall be edited which are documented a
7777

7878
#### BIM Edition
7979

80-
In order to install or change to BIM inside a Docker environment, please navigate to the [Docker](../installation-and-operations/changing-to-bim-edition/#docker) paragraph at the [Changing to BIM Edition](../installation-and-operations/changing-to-bim-edition) documentation.
80+
In order to install or change to BIM inside a Docker environment, please navigate to the [Docker](../../changing-to-bim-edition/#docker) paragraph at the [Changing to BIM Edition](../../changing-to-bim-edition/) documentation.
8181

8282
### Disabling services in the docker-compose file
8383

docs/release-notes/12-2-3/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ Release date: 2022-09-12
1313
We released [OpenProject 12.2.3](https://community.openproject.com/versions/1598).
1414
The release contains several bug fixes and we recommend updating to the newest version.
1515

16+
### Fixed: Installing custom plugins in packaged installations
17+
18+
Newer bundler versions would prevent custom plugins being installed in packaged installation.
19+
This has been fixed in this released version. For more information, please see [#44058](https://community.openproject.com/wp/44058)
20+
1621
<!--more-->
1722
#### Bug fixes and changes
1823

19-
- Changed: Add meaningful tooltips to the most essential actions \[[#43299](https://community.openproject.com/wp/43299)\]
24+
- Fixed: RPM/DEB installation fails with a custom gemfile \[[#44058](https://community.openproject.com/wp/44058)\]

docs/release-notes/12-2-4/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
title: OpenProject 12.2.4
3+
sidebar_navigation:
4+
title: 12.2.4
5+
release_version: 12.2.4
6+
release_date: 2022-09-15
7+
---
8+
9+
# OpenProject 12.2.4
10+
11+
Release date: 2022-09-15
12+
13+
We released [OpenProject 12.2.4](https://community.openproject.com/versions/1599).
14+
The release contains several bug fixes and we recommend updating to the newest version.
15+
16+
<!--more-->
17+
#### Bug fixes and changes
18+
19+
- Fixed: Remaining hours sum not well formed \[[#43833](https://community.openproject.com/wp/43833)\]
20+
- Fixed: Destroy journals with invalid data_type associations \[[#44132](https://community.openproject.com/wp/44132)\]
21+
- Fixed: Internal error / Illegal instruction error \[[#44155](https://community.openproject.com/wp/44155)\]
22+
- Fixed: Dragging images to CKEditor on Grid custom texts not working with direct upload \[[#44156](https://community.openproject.com/wp/44156)\]
23+
24+
#### Contributions
25+
A big thanks to community members for reporting bugs and helping us identifying and providing fixes.
26+
27+
Special thanks for reporting and finding bugs go to
28+
29+
Nico Aymet

docs/release-notes/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ Stay up to date and get an overview of the new features included in the releases
1414
<!--- New release notes are generated below. Do not remove comment. -->
1515
<!--- RELEASE MARKER -->
1616

17+
## 12.2.4
18+
19+
Release date: 2022-09-15
20+
21+
[Release Notes](12-2-4/)
22+
23+
1724
## 12.2.3
1825

1926
Release date: 2022-09-12

docs/user-guide/work-packages/work-packages-faq/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,7 @@ In the details view of the work package: Click on **More** (button with three do
192192

193193
### Can I group tasks into folders?
194194

195-
There are no folders for work packages. I suggest either setting all work packages belonging together as children of the same parent work package (e.g. a Phase) or to create multiple projects for different topics. Alternatively you could use the [work package categories](../../projects/project-settings/work-package-categories) or a custom field to group work packages. You can also indent hierarchy for for tasks to associate it with another work package like a phase, then they are relatete to the Pahase in the gantt chart.
196-
195+
There are no folders for work packages. To group work packages, such as tasks, you can use the [filter and grouping options](../work-package-table-configuration/#work-package-table-configuration) and [save the filters](../work-package-table-configuration/#save-work-package-views). You can also define all related work packages as children of the same parent work package (e.g. a phase). you can indent the hierarchy for work packages in the work packages list (with a right mouse click -> *Indent hierarchy*) to add them as children to another work package, for example a phase. This will then also be displayed in the Gantt chart. Alternatively, you can use the [work package categories](../../projects/project-settings/work-package-categories/#manage-work-package-categories) or a custom field to filter and group work packages. Also, you can create multiple projects to group different topics.
197196

198197
## Custom fields
199198

frontend/.eslintrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ module.exports = {
8383
// no param reassignment is a pain when trying to set props on elements
8484
"no-param-reassign": "off",
8585

86+
// destructuring doesn't always look better, only when object/array destructuring
87+
"prefer-destructuring": "off",
88+
8689
// No void at all collides with `@typescript-eslint/no-floating-promises` which wants us to handle each promise.
8790
// Until we do that, `void` is a good way to explicitly mark unhandled promises.
8891
"no-void": ["error", { allowAsStatement: true }],

frontend/src/app/shared/components/fields/display/display-field.initializer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export function initializeCoreDisplayFields(displayFieldService:DisplayFieldServ
7575
.addFieldType(MultipleUserFieldModule, 'users', ['[]User'])
7676
.addFieldType(FormattableDisplayField, 'formattable', ['Formattable'])
7777
.addFieldType(DaysDurationDisplayField, 'duration', ['duration'])
78+
.addFieldType(HoursDurationDisplayField, 'remainingTime', ['remainingTime'])
7879
.addFieldType(EstimatedTimeDisplayField, 'estimatedTime', ['estimatedTime'])
7980
.addFieldType(DateDisplayField, 'date', ['Date'])
8081
.addFieldType(DateTimeDisplayField, 'datetime', ['DateTime'])
@@ -88,7 +89,6 @@ export function initializeCoreDisplayFields(displayFieldService:DisplayFieldServ
8889
.addSpecificFieldType('WorkPackage', WorkPackageIdDisplayField, 'id', ['id'])
8990
.addSpecificFieldType('WorkPackage', WorkPackageSpentTimeDisplayField, 'spentTime', ['spentTime'])
9091
.addSpecificFieldType('WorkPackage', CombinedDateDisplayField, 'combinedDate', ['combinedDate'])
91-
.addSpecificFieldType('WorkPackage', HoursDurationDisplayField, 'remainingTime', ['remainingTime'])
9292
.addSpecificFieldType('TimeEntry', PlainFormattableDisplayField, 'comment', ['comment'])
9393
.addSpecificFieldType('Project', ProjectStatusDisplayField, 'status', ['status'])
9494
.addSpecificFieldType('TimeEntry', WorkPackageDisplayField, 'work_package', ['workPackage']);

frontend/src/app/shared/components/grids/widgets/custom-text/custom-text-edit-field.service.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';
1010
import { UploadFile } from 'core-app/core/file-upload/op-file-upload.service';
1111
import { ICKEditorContext } from 'core-app/shared/components/editor/components/ckeditor/ckeditor.types';
1212
import { HalResource } from 'core-app/features/hal/resources/hal-resource';
13+
import { GridResource } from 'core-app/features/hal/resources/grid-resource';
1314

1415
@Injectable()
1516
export class CustomTextEditFieldService extends EditFieldHandler {
@@ -138,21 +139,27 @@ export class CustomTextEditFieldService extends EditFieldHandler {
138139
*/
139140
private initializeChangeset(value:GridWidgetResource) {
140141
const schemaHref = 'customtext-schema';
141-
const resourceSource = {
142+
const grid:GridResource = value.grid;
143+
const resourceSource:HalSource = {
142144
text: value.options.text,
143145
getEditorContext: () => ({
144146
type: 'full',
145147
macros: 'resource',
146148
} as ICKEditorContext),
147149
canAddAttachments: value.grid.canAddAttachments as boolean,
148150
_links: {
149-
attachments: (value.grid as HalResource).attachments as { href?:string },
151+
attachments: grid.attachments as { href?:string },
150152
schema: {
151153
href: schemaHref,
152154
},
153155
},
154156
};
155157

158+
if (grid.prepareAttachment as { href?:string }) {
159+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access
160+
resourceSource._links.prepareAttachment = grid.prepareAttachment;
161+
}
162+
156163
const resource = this.halResource.createHalResource(resourceSource, true);
157164

158165
const schemaSource = {

lib/open_project/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module OpenProject
3333
module VERSION # :nodoc:
3434
MAJOR = 12
3535
MINOR = 2
36-
PATCH = 3
36+
PATCH = 4
3737

3838
class << self
3939
# Used by semver to define the special version (if any).

modules/backlogs/spec/features/work_packages/remaining_time_spec.rb

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
status:
5656
end
5757

58-
it 'is can set and edit the remaining time in hours (Regression #43549)' do
58+
it 'can set and edit the remaining time in hours (Regression #43549)' do
5959
wp_page = Pages::FullWorkPackage.new(work_package)
6060

6161
wp_page.visit!
@@ -65,10 +65,31 @@
6565

6666
wp_page.update_attributes remainingTime: '125' # rubocop:disable Rails/ActiveRecordAliases
6767

68-
wp_page.expect_attributes remainingTime: '125'
68+
wp_page.expect_attributes remainingTime: '125 h'
6969

7070
work_package.reload
7171

7272
expect(work_package.remaining_hours).to eq 125.0
7373
end
74+
75+
it 'displays the remaining time sum properly in hours (Regression #43833)' do
76+
work_package
77+
wp_table_page = Pages::WorkPackagesTable.new(project)
78+
79+
query_props = JSON.dump(c: %w(id subject remainingTime),
80+
s: true)
81+
82+
wp_table_page.visit_with_params("query_props=#{query_props}")
83+
84+
wp_table_page.expect_work_package_with_attributes work_package, remainingTime: '-'
85+
86+
wp_table_page.update_work_package_attributes work_package, remainingTime: '125'
87+
88+
wp_table_page.expect_work_package_with_attributes work_package, remainingTime: '125 h'
89+
90+
wp_table_page.expect_sums_row_with_attributes remainingTime: '125 h'
91+
92+
work_package.reload
93+
expect(work_package.remaining_hours).to eq 125.0
94+
end
7495
end

modules/bim/config/locales/crowdin/lv.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ lv:
1414
exceptions:
1515
file_invalid: "BCF file invalid"
1616
x_bcf_issues:
17-
zero: 'No BCF issues'
1817
one: 'One BCF issue'
1918
other: '%{count} BCF issues'
2019
bcf_xml:

modules/boards/config/locales/crowdin/js-hu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ hu:
77
label_unnamed_list: 'Névtelen lista'
88
label_board_type: 'Tábla típus'
99
upsale:
10-
teaser_text: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise feature. Please upgrade to a paid plan.'
10+
teaser_text: 'Szeretné automatizálni a munkafolyamatait a Boards-al? A fejlett táblák Enterprise funkció. Kérjük, frissítsen fizetős csomagra.'
1111
upgrade: 'Frissítés most'
1212
lists:
1313
delete: 'Törölt lista'

modules/budgets/config/locales/crowdin/hu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ hu:
6363
label_example_placeholder: 'például %{decimal}'
6464
label_view_all_budgets: "Minden költség megtekintése"
6565
label_yes: "Igen"
66-
notice_budget_conflict: "Work packages must be of the same project."
66+
notice_budget_conflict: "A munkacsomagoknak ugyanabba a projektbe kell tartozniuk."
6767
notice_no_budgets_available: "Nincs költségvetés."
6868
permission_edit_budgets: "Költségvetés szerkesztése"
6969
permission_view_budgets: "Költségvetések megtekintése"

modules/costs/config/locales/crowdin/et.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ et:
8080
label_costlog: "Logged unit costs"
8181
label_cost_plural: "Kulud"
8282
label_cost_type_plural: "Kulu liigid"
83-
label_cost_type_specific: "Cost type #%{id}: %{name}"
83+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8484
label_costs_per_page: "Costs per page"
8585
label_currency: "Currency"
8686
label_currency_format: "Valuuta vorming"

modules/costs/config/locales/crowdin/fil.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ fil:
8080
label_costlog: "Logged unit costs"
8181
label_cost_plural: "Costs"
8282
label_cost_type_plural: "Cost types"
83-
label_cost_type_specific: "Cost type #%{id}: %{name}"
83+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8484
label_costs_per_page: "Costs per page"
8585
label_currency: "Currency"
8686
label_currency_format: "Format of currency"

modules/costs/config/locales/crowdin/hr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ hr:
8181
label_costlog: "Zabilježeni jedinični troškovi"
8282
label_cost_plural: "Troškovi"
8383
label_cost_type_plural: "Vrsta troška"
84-
label_cost_type_specific: "Cost type #%{id}: %{name}"
84+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8585
label_costs_per_page: "Troškova po stranici"
8686
label_currency: "Valuta"
8787
label_currency_format: "Oblik valute"

modules/costs/config/locales/crowdin/lv.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ lv:
8181
label_costlog: "Logged unit costs"
8282
label_cost_plural: "Costs"
8383
label_cost_type_plural: "Cost types"
84-
label_cost_type_specific: "Cost type #%{id}: %{name}"
84+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8585
label_costs_per_page: "Costs per page"
8686
label_currency: "Currency"
8787
label_currency_format: "Format of currency"

modules/costs/config/locales/crowdin/no.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
label_costlog: "Logged unit costs"
8181
label_cost_plural: "Costs"
8282
label_cost_type_plural: "Cost types"
83-
label_cost_type_specific: "Cost type #%{id}: %{name}"
83+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8484
label_costs_per_page: "Costs per page"
8585
label_currency: "Currency"
8686
label_currency_format: "Format of currency"

modules/costs/config/locales/crowdin/th.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ th:
7979
label_costlog: "Logged unit costs"
8080
label_cost_plural: "Costs"
8181
label_cost_type_plural: "Cost types"
82-
label_cost_type_specific: "Cost type #%{id}: %{name}"
82+
label_cost_type_specific: "Cost type #%{id}: %{name}" #%{id}: %{name}"
8383
label_costs_per_page: "Costs per page"
8484
label_currency: "Currency"
8585
label_currency_format: "Format of currency"

modules/github_integration/config/locales/crowdin/js-th.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ th:
2828
title: "คำขอ Pull"
2929
copy_menu:
3030
label: Git snippets
31-
description: คัดลอกข้อมูล git snippets ไปยังคลิปบอร์ด
31+
description: คัดลอกข้อมูล git snippets ไปยังคลิปบอร์ด
3232
git_actions:
3333
branch_name: ชื่อสาขา
3434
commit_message: Commit message

modules/github_integration/config/locales/crowdin/th.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ th:
3232
pull_request_referenced_comment: >
3333
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
3434
pull_request_ready_for_review_comment: >
35-
**PR Ready for Review:** คำขอดึง %{pr_number} [%{pr_title}](%{pr_url}) สำหรับ [%{repository}](%{repository_url}) ถูกทำเครื่องหมายว่าพร้อมสำหรับการตรวจสอบโดย [%{github_user}](%{github_user_url})
35+
**PR Ready for Review:** คำขอดึง %{pr_number} [%{pr_title}](%{pr_url}) สำหรับ [%{repository}](%{repository_url}) ถูกทำเครื่องหมายว่าพร้อมสำหรับการตรวจสอบโดย [%{github_user}](%{github_user_url})

modules/grids/config/locales/crowdin/js-hu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ hu:
55
remove: 'Widget eltávolítása'
66
configure: 'Widget konfigurálása'
77
upsale:
8-
text: "Some widgets, like the work package graph widget, are only available in the Enterprise Edition."
8+
text: "Néhány widget, például a munkacsomag-grafikon widget, csak az Enterprise Edition-ben érhető el."
99
link: 'Vállalati kiadás.'
1010
widgets:
1111
custom_text:

modules/ldap_groups/config/locales/crowdin/et.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ et:
4242
group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.'
4343
filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.'
4444
base_dn_text: >
45-
Enter the search base DN to use for this filter. It needs to be below the base DN of the selected LDAP connection.
46-
Leave this option empty to reuse the base DN of the connection
45+
Enter the search base DN to use for this filter. It needs to be below the base DN of the selected LDAP connection. Leave this option empty to reuse the base DN of the connection
4746
synchronized_groups:
4847
add_new: 'Add synchronized LDAP group'
4948
destroy:

0 commit comments

Comments
 (0)