diff --git a/app/components/work_package_relations_tab/add_work_package_child_form_component.rb b/app/components/work_package_relations_tab/add_work_package_child_form_component.rb index f9f4d6863b11..8ad85664a9c8 100644 --- a/app/components/work_package_relations_tab/add_work_package_child_form_component.rb +++ b/app/components/work_package_relations_tab/add_work_package_child_form_component.rb @@ -47,6 +47,6 @@ def initialize(work_package:, base_errors: nil) def submit_url_options { method: :post, - url: work_package_children_path(@work_package) } + url: work_package_children_relations_path(@work_package) } end end diff --git a/app/components/work_package_relations_tab/index_component.html.erb b/app/components/work_package_relations_tab/index_component.html.erb index e78e21510bbf..c12694bc30e6 100644 --- a/app/components/work_package_relations_tab/index_component.html.erb +++ b/app/components/work_package_relations_tab/index_component.html.erb @@ -37,7 +37,7 @@ if should_render_add_child? menu.with_item( label: t("#{I18N_NAMESPACE}.relations.label_child_singular").capitalize, - href: new_work_package_child_path(@work_package), + href: new_work_package_children_relation_path(@work_package), test_selector: new_button_test_selector(relation_type: :child), content_arguments: { data: { turbo_stream: true } diff --git a/app/components/work_package_relations_tab/index_component.rb b/app/components/work_package_relations_tab/index_component.rb index b64aac1cf479..247cc5195945 100644 --- a/app/components/work_package_relations_tab/index_component.rb +++ b/app/components/work_package_relations_tab/index_component.rb @@ -1,5 +1,11 @@ # frozen_string_literal: true +# Component for rendering the relations tab content of a work package +# +# This includes: +# - Controls for adding new relations if the user has permission +# - Related work packages grouped by relation type (follows, precedes, blocks, etc.) +# - Child work packages class WorkPackageRelationsTab::IndexComponent < ApplicationComponent FRAME_ID = "work-package-relations-tab-content" NEW_RELATION_ACTION_MENU = "new-relation-action-menu" @@ -9,16 +15,22 @@ class WorkPackageRelationsTab::IndexComponent < ApplicationComponent include Turbo::FramesHelper include OpTurbo::Streamable - attr_reader :work_package, :relations, :children, :directionally_aware_grouped_relations, :scroll_to_id + attr_reader :work_package, :relations, :children, :directionally_aware_grouped_relations, :relation_to_scroll_to - def initialize(work_package:, relations:, children:, scroll_to_id: nil) + # Initialize the component with required data + # + # @param work_package [WorkPackage] The work package whose relations are being displayed + # @param relations [Array] The relations associated with this work package + # @param children [Array] Child work packages + # @param relation_to_scroll_to [Relation, WorkPackage, nil] Optional relation or child to scroll to when rendering + def initialize(work_package:, relations:, children:, relation_to_scroll_to: nil) super() @work_package = work_package @relations = relations @children = children @directionally_aware_grouped_relations = group_relations_by_directional_context - @scroll_to_id = scroll_to_id + @relation_to_scroll_to = relation_to_scroll_to end def self.wrapper_key @@ -28,6 +40,8 @@ def self.wrapper_key private def should_render_add_child? + return false if @work_package.milestone? + helpers.current_user.allowed_in_project?(:manage_subtasks, @work_package.project) end @@ -72,24 +86,31 @@ def render_header(border_box, title, items) def render_items(border_box, items) items.each do |item| - related_work_package_id = find_related_work_package_id(item) - data_attribute = nil - if related_work_package_id.to_s == @scroll_to_id - data_attribute = { - controller: "work-packages--relations-tab--scroll", - application_target: "dynamic", - "work-packages--relations-tab--scroll-target": "scrollToRow" - } - end border_box.with_row( test_selector: row_test_selector(item), - data: data_attribute + data: data_attribute(item) ) do yield(item) end end end + def data_attribute(item) + if scroll_to?(item) + { + controller: "work-packages--relations-tab--scroll", + application_target: "dynamic", + "work-packages--relations-tab--scroll-target": "scrollToRow" + } + end + end + + def scroll_to?(item) + relation_to_scroll_to \ + && item.id == relation_to_scroll_to.id \ + && item.instance_of?(relation_to_scroll_to.class) + end + def new_relation_path(relation_type:) raise ArgumentError, "Invalid relation type: #{relation_type}" unless Relation::TYPES.key?(relation_type) diff --git a/app/components/work_package_relations_tab/relation_component.rb b/app/components/work_package_relations_tab/relation_component.rb index 08e1452e02c5..5df345651d22 100644 --- a/app/components/work_package_relations_tab/relation_component.rb +++ b/app/components/work_package_relations_tab/relation_component.rb @@ -89,7 +89,7 @@ def edit_path def destroy_path if parent_child_relationship? - work_package_child_path(@work_package, @child) + work_package_children_relation_path(@work_package, @child) else work_package_relation_path(@work_package, @relation) end diff --git a/app/components/work_package_relations_tab/work_package_relation_dialog_component.html.erb b/app/components/work_package_relations_tab/work_package_relation_dialog_component.html.erb index 2a804ff50d0b..7d436a98c102 100644 --- a/app/components/work_package_relations_tab/work_package_relation_dialog_component.html.erb +++ b/app/components/work_package_relations_tab/work_package_relation_dialog_component.html.erb @@ -21,7 +21,11 @@ form: FORM_ID, data: { turbo: true }, type: :submit)) do - t(:button_save) + if @relation.id.present? + t(:button_save) + else + t(:button_add) + end end end end diff --git a/app/controllers/work_package_children_controller.rb b/app/controllers/work_package_children_relations_controller.rb similarity index 64% rename from app/controllers/work_package_children_controller.rb rename to app/controllers/work_package_children_relations_controller.rb index 1b54ea0c28fd..6fecc9b2a93d 100644 --- a/app/controllers/work_package_children_controller.rb +++ b/app/controllers/work_package_children_relations_controller.rb @@ -28,7 +28,7 @@ # See COPYRIGHT and LICENSE files for more details. #++ -class WorkPackageChildrenController < ApplicationController +class WorkPackageChildrenRelationsController < ApplicationController include OpTurbo::ComponentStream include OpTurbo::DialogStreamHelper @@ -36,9 +36,6 @@ class WorkPackageChildrenController < ApplicationController before_action :authorize # Short-circuit early if not authorized - before_action :set_child, except: %i[new create] - before_action :set_relations, except: %i[new create] - def new component = WorkPackageRelationsTab::AddWorkPackageChildDialogComponent .new(work_package: @work_package) @@ -46,57 +43,46 @@ def new end def create - target_work_package_id = params[:work_package][:id] - target_child_work_package = WorkPackage.find(target_work_package_id) + child = WorkPackage.find(params[:work_package][:id]) + service_result = set_relation(child:, parent: @work_package) - target_child_work_package.parent = @work_package + respond_with_relations_tab_update(service_result, relation_to_scroll_to: service_result.result) + end - if target_child_work_package.save - @children = @work_package.children.visible - @relations = @work_package.relations.visible + def destroy + child = WorkPackage.find(params[:id]) + service_result = set_relation(child:, parent: nil) - component = WorkPackageRelationsTab::IndexComponent.new( - work_package: @work_package, - relations: @relations, - children: @children, - scroll_to_id: target_work_package_id - ) - replace_via_turbo_stream(component:) - render_success_flash_message_via_turbo_stream(message: I18n.t(:notice_successful_update)) - respond_with_turbo_streams - end + respond_with_relations_tab_update(service_result) end - def destroy - @child.parent = nil + private - if @child.save + def set_relation(child:, parent:) + WorkPackages::UpdateService.new(user: current_user, model: child) + .call(parent:) + end + + def respond_with_relations_tab_update(service_result, **) + if service_result.success? @work_package.reload - @children = @work_package.children.visible component = WorkPackageRelationsTab::IndexComponent.new( work_package: @work_package, - relations: @relations, - children: @children + relations: @work_package.relations.visible, + children: @work_package.children.visible, + ** ) replace_via_turbo_stream(component:) render_success_flash_message_via_turbo_stream(message: I18n.t(:notice_successful_update)) respond_with_turbo_streams + else + respond_with_turbo_streams(status: :unprocessable_entity) end end - private - def set_work_package @work_package = WorkPackage.find(params[:work_package_id]) @project = @work_package.project end - - def set_child - @child = WorkPackage.find(params[:id]) - end - - def set_relations - @relations = @work_package.relations.visible - end end diff --git a/app/controllers/work_package_relations_controller.rb b/app/controllers/work_package_relations_controller.rb index ca2b6bc06b4c..02e7f68b0134 100644 --- a/app/controllers/work_package_relations_controller.rb +++ b/app/controllers/work_package_relations_controller.rb @@ -60,12 +60,11 @@ def create .call(create_relation_params) if service_result.success? - target_work_package_id = params[:relation][:to_id] @work_package.reload component = WorkPackageRelationsTab::IndexComponent.new(work_package: @work_package, - relations: @work_package.relations, - children: @work_package.children, - scroll_to_id: target_work_package_id) + relations: @work_package.relations.visible, + children: @work_package.children.visible, + relation_to_scroll_to: service_result.result) replace_via_turbo_stream(component:) respond_with_turbo_streams else @@ -82,8 +81,8 @@ def update if service_result.success? @work_package.reload component = WorkPackageRelationsTab::IndexComponent.new(work_package: @work_package, - relations: @work_package.relations, - children: @work_package.children) + relations: @work_package.relations.visible, + children: @work_package.children.visible) replace_via_turbo_stream(component:) respond_with_turbo_streams else @@ -95,11 +94,12 @@ def destroy service_result = Relations::DeleteService.new(user: current_user, model: @relation).call if service_result.success? - @children = WorkPackage.where(parent_id: @work_package.id) + @children = WorkPackage.where(parent_id: @work_package.id).visible @relations = @work_package .relations .reload .includes(:to, :from) + .visible component = WorkPackageRelationsTab::IndexComponent.new(work_package: @work_package, relations: @relations, diff --git a/app/controllers/work_package_relations_tab_controller.rb b/app/controllers/work_package_relations_tab_controller.rb index c8d9ab9ad75b..f457a67fd936 100644 --- a/app/controllers/work_package_relations_tab_controller.rb +++ b/app/controllers/work_package_relations_tab_controller.rb @@ -33,9 +33,10 @@ class WorkPackageRelationsTabController < ApplicationController before_action :authorize_global def index - @children = WorkPackage.where(parent_id: @work_package.id) + @children = WorkPackage.where(parent_id: @work_package.id).visible @relations = @work_package .relations + .visible .includes(:to, :from) component = WorkPackageRelationsTab::IndexComponent.new( diff --git a/app/menus/notifications/menu.rb b/app/menus/notifications/menu.rb index cb3ca4361ce8..a4fd9781af43 100644 --- a/app/menus/notifications/menu.rb +++ b/app/menus/notifications/menu.rb @@ -63,7 +63,7 @@ def inbox_menu end def reason_filters - %w[mentioned assigned responsible watched dateAlert shared reminder].map do |reason| + %w[mentioned assigned responsible watched dateAlert reminder shared].map do |reason| count = unread_by_reason[reason] menu_item(title: I18n.t("notifications.reasons.#{reason}"), icon_key: reason, diff --git a/config/initializers/menus.rb b/config/initializers/menus.rb index 03841396f134..0509c2cd88cf 100644 --- a/config/initializers/menus.rb +++ b/config/initializers/menus.rb @@ -686,7 +686,7 @@ { tab: :relations }, skip_permissions_check: true, badge: ->(work_package:, **) { - work_package.relations.count + work_package.children.count + work_package.relations.visible.count + work_package.children.visible.count }, caption: :"js.work_packages.tabs.relations" menu.push :watchers, diff --git a/config/initializers/permissions.rb b/config/initializers/permissions.rb index 8d369cee59bd..50555c7d6124 100644 --- a/config/initializers/permissions.rb +++ b/config/initializers/permissions.rb @@ -354,7 +354,7 @@ wpt.permission :manage_subtasks, { - work_package_children: %i[new create destroy] + work_package_children_relations: %i[new create destroy] }, permissible_on: :project, dependencies: :view_work_packages diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index e18cda3387fe..f33de3ec2da0 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -674,7 +674,7 @@ af: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index 968e6c8f82ea..9b9fd07f4032 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -710,7 +710,7 @@ ar: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index c1e2f4ffd6aa..4c07c184c0e9 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -674,7 +674,7 @@ az: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index 92cbf93f1d30..02f7790d701f 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -692,7 +692,7 @@ be: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index ada1d4e0987a..c3f1815ebbf9 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -674,7 +674,7 @@ bg: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index 37dee6d81dd8..19a879801b67 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -671,7 +671,7 @@ ca: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index a57cbaec0f58..9e60559100bc 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -674,7 +674,7 @@ ckb-IR: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index e8b7b0ae12dc..c30c2e74bc0b 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -692,7 +692,7 @@ cs: lag: subject: "Zpožďování" title: "Zpoždění (ve dnech)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "související s" label_relates_plural: "související s" diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index a9e0b42631bb..e25ffa7fab46 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -672,7 +672,7 @@ da: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 7d4f9e314d89..5e0c0d6e7cf1 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -667,7 +667,7 @@ de: lag: subject: "Verzögerung" title: "Verzögerung (in Tagen)" - caption: "Die Anzahl der Arbeitstage, die zwischen den beiden Arbeitspaketen liegen" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "Beziehung mit" label_relates_plural: "Beziehungen mit" diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index e4a80a0ce7d6..6c897d2b2fbb 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -670,7 +670,7 @@ el: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 860f7c8c9865..d7c668573a77 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -674,7 +674,7 @@ eo: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index b1decc305607..7ca51e43acfb 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -671,7 +671,7 @@ es: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "relacionado con" label_relates_plural: "relacionado con" diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 96d30885a8fe..5fececc877d6 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -674,7 +674,7 @@ et: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index 72664651ff09..73d544a0f9d9 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -674,7 +674,7 @@ eu: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 46b204098203..7d7051ac9cbc 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -674,7 +674,7 @@ fa: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index 5966740b3abc..a6b32c97523e 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -674,7 +674,7 @@ fi: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 3ba5ffa37564..187ab3472058 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -674,7 +674,7 @@ fil: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 1507ca120307..899846c44462 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -672,7 +672,7 @@ fr: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "lié à" label_relates_plural: "liés à" diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index 73b6488fb6d5..35a50f3fbcff 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -692,7 +692,7 @@ he: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index 78c8122eb33c..e75566b84b0e 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -672,7 +672,7 @@ hi: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index 21d83a89936d..74937c5aef19 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -683,7 +683,7 @@ hr: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index 7f0ca7b96e33..5b7ef62adf80 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -672,7 +672,7 @@ hu: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index cc9946dcb13e..9bab352f5db9 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -659,7 +659,7 @@ id: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index 8f135719a69f..6adaecdc333c 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -670,7 +670,7 @@ it: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "correlata con" label_relates_plural: "correlate con" diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 925d8fac4a7e..97541ecdf2dd 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -661,7 +661,7 @@ ja: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/js-af.yml b/config/locales/crowdin/js-af.yml index 9029dbdce6dc..e6f21bb0e737 100644 --- a/config/locales/crowdin/js-af.yml +++ b/config/locales/crowdin/js-af.yml @@ -357,10 +357,10 @@ af: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml index b26ab7252f82..6e1774da1fe2 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -357,10 +357,10 @@ ar: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-az.yml b/config/locales/crowdin/js-az.yml index 6208cd43e1ca..804407c03f24 100644 --- a/config/locales/crowdin/js-az.yml +++ b/config/locales/crowdin/js-az.yml @@ -357,10 +357,10 @@ az: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-be.yml b/config/locales/crowdin/js-be.yml index 1d6f27250691..e379c7e591bb 100644 --- a/config/locales/crowdin/js-be.yml +++ b/config/locales/crowdin/js-be.yml @@ -357,10 +357,10 @@ be: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml index 4839c753ba29..1d0ee18acda1 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -357,10 +357,10 @@ bg: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index d10e2b083909..a8f03e987c77 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -357,10 +357,10 @@ ca: learn_about: "Més informació sobre les noves funcions" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "S'ha produït un error en carregar les dades." diff --git a/config/locales/crowdin/js-ckb-IR.yml b/config/locales/crowdin/js-ckb-IR.yml index 000b5dbcd56c..8a7fadf66bee 100644 --- a/config/locales/crowdin/js-ckb-IR.yml +++ b/config/locales/crowdin/js-ckb-IR.yml @@ -357,10 +357,10 @@ ckb-IR: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index e315a5c3c470..e022e1adccf3 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -356,10 +356,10 @@ cs: learn_about: "Další informace o nových funkcích" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Přihlásit kalendář k odběru" inital_setup_error_message: "Při načítání dat došlo k chybě." diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml index 2df93a9e5aa5..9b4404641a3a 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -356,10 +356,10 @@ da: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 05021cc761d8..ddb5e5adbc86 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -356,10 +356,10 @@ de: learn_about: "Erfahren Sie mehr über die neuen Funktionen" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Die Version bringt verschiedene Funktionen und Verbesserungen für Sie, z.B.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Kalender abonnieren" inital_setup_error_message: "Beim Abrufen der Daten ist ein Fehler aufgetreten." diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml index cd168665a492..3a82d6fb9a6e 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -356,10 +356,10 @@ el: learn_about: "Μάθετε περισσότερα για τις νέες λειτουργίες" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-eo.yml b/config/locales/crowdin/js-eo.yml index 034b53f4a245..1b680e5372d5 100644 --- a/config/locales/crowdin/js-eo.yml +++ b/config/locales/crowdin/js-eo.yml @@ -357,10 +357,10 @@ eo: learn_about: "Lerni pli pri la novaj plibonigoj" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index 65906d99cd7e..7764a525c47a 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -357,10 +357,10 @@ es: learn_about: "Más información sobre las nuevas funciones" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - La versión trae varias características y mejoras para usted, por ejemplo
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Suscribirse al calendario" inital_setup_error_message: "Se ha producido un error al obtener los datos." diff --git a/config/locales/crowdin/js-et.yml b/config/locales/crowdin/js-et.yml index ba5dd8bec56d..a1aebe3943ca 100644 --- a/config/locales/crowdin/js-et.yml +++ b/config/locales/crowdin/js-et.yml @@ -357,10 +357,10 @@ et: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-eu.yml b/config/locales/crowdin/js-eu.yml index d00522b72610..4bc2b5d87a70 100644 --- a/config/locales/crowdin/js-eu.yml +++ b/config/locales/crowdin/js-eu.yml @@ -357,10 +357,10 @@ eu: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-fa.yml b/config/locales/crowdin/js-fa.yml index 37e4eb21b54b..3b9828dbe6f6 100644 --- a/config/locales/crowdin/js-fa.yml +++ b/config/locales/crowdin/js-fa.yml @@ -357,10 +357,10 @@ fa: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml index 982384035088..9a2383c65914 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -357,10 +357,10 @@ fi: learn_about: "Lisätietoja uusista ominaisuuksista" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml index 4edce0340ef6..7896a2f09d2c 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -357,10 +357,10 @@ fil: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index 7b57df1aa57d..a81344a48206 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -357,10 +357,10 @@ fr: learn_about: "En savoir plus sur les nouvelles fonctionnalités" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Cette version apporte diverses fonctionnalités et améliorations, par exemple
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "S'abonner au calendrier" inital_setup_error_message: "Une erreur est survenue lors de la récupération des données." diff --git a/config/locales/crowdin/js-he.yml b/config/locales/crowdin/js-he.yml index 38591e3808e7..4f1f81574c23 100644 --- a/config/locales/crowdin/js-he.yml +++ b/config/locales/crowdin/js-he.yml @@ -357,10 +357,10 @@ he: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-hi.yml b/config/locales/crowdin/js-hi.yml index 233395eedd8f..3c860962c0f3 100644 --- a/config/locales/crowdin/js-hi.yml +++ b/config/locales/crowdin/js-hi.yml @@ -357,10 +357,10 @@ hi: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml index c5da0b9434db..22498a985307 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -357,10 +357,10 @@ hr: learn_about: "Saznaj više o novim značajkama" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml index 9f0e8d2a5a72..88d60325126e 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -357,10 +357,10 @@ hu: learn_about: "Tudjon meg többet az új funkciókról" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index 4545c825f0ba..f3126972b293 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -357,10 +357,10 @@ id: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml index 3e5c8b3773cd..f51c34f4ee01 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -357,10 +357,10 @@ it: learn_about: "Scopri di più sulle nuove funzionalità" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Questa versione offre varie funzionalità e miglioramenti, ad esempio
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Iscriviti al calendario" inital_setup_error_message: "Si è verificato un errore recuperando i dati." diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml index 7e310d57d43f..b436e7f8ff5d 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -358,10 +358,10 @@ ja: learn_about: "新機能の詳細はこちら" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ka.yml b/config/locales/crowdin/js-ka.yml index abf1e135a680..5fe48ead4137 100644 --- a/config/locales/crowdin/js-ka.yml +++ b/config/locales/crowdin/js-ka.yml @@ -357,10 +357,10 @@ ka: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-kk.yml b/config/locales/crowdin/js-kk.yml index 5ef8a7189d9d..e6c68b019cba 100644 --- a/config/locales/crowdin/js-kk.yml +++ b/config/locales/crowdin/js-kk.yml @@ -357,10 +357,10 @@ kk: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml index d4a2126c9123..79786b1d766d 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -357,10 +357,10 @@ ko: learn_about: "새로운 기능에 대해 자세히 알아보기" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - 이 릴리스에서는 다음과 같은 다양한 기능과 개선 사항이 제공됩니다.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "캘린더 구독" inital_setup_error_message: "데이터를 가져오는 중에 오류가 발생했습니다." diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index c39c925d4967..b12ea603983a 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -357,10 +357,10 @@ lt: learn_about: "Sužinokite daugiau apie naujas galimybes" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Prenumeruoti kalendorių" inital_setup_error_message: "Gaunant duomenis įvyko klaida." diff --git a/config/locales/crowdin/js-lv.yml b/config/locales/crowdin/js-lv.yml index 4ec7e1ef6fbe..3dd9d33903e2 100644 --- a/config/locales/crowdin/js-lv.yml +++ b/config/locales/crowdin/js-lv.yml @@ -357,10 +357,10 @@ lv: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-mn.yml b/config/locales/crowdin/js-mn.yml index 54911bf8e867..962695f656e0 100644 --- a/config/locales/crowdin/js-mn.yml +++ b/config/locales/crowdin/js-mn.yml @@ -357,10 +357,10 @@ mn: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ms.yml b/config/locales/crowdin/js-ms.yml index b472474a53b1..c33b000d8f4d 100644 --- a/config/locales/crowdin/js-ms.yml +++ b/config/locales/crowdin/js-ms.yml @@ -357,10 +357,10 @@ ms: learn_about: "Ketahui lebih lanjut mengenai fitur-fitur baharu." #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Keluaran ini membawakan pelbagai ciri dan penambahbaikan untuk anda, mis.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Langgan kalendar" inital_setup_error_message: "Ralat berlaku ketika sedang mengambil data." diff --git a/config/locales/crowdin/js-ne.yml b/config/locales/crowdin/js-ne.yml index b2814336067e..c9f21d710577 100644 --- a/config/locales/crowdin/js-ne.yml +++ b/config/locales/crowdin/js-ne.yml @@ -357,10 +357,10 @@ ne: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index 0a373280cf22..96c66612d051 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -357,10 +357,10 @@ nl: learn_about: "Meer informatie over de nieuwe functies" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Abonneren op agenda" inital_setup_error_message: "Er is een fout opgetreden tijdens het ophalen van gegevens." diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 836712f0e04f..9a38a22fa7c1 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -357,10 +357,10 @@ learn_about: "Lær mer om de nye funksjonene" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Abonner på kalender" inital_setup_error_message: "En feil oppstod under henting av data." diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml index 00bcdb2b3bf4..754df5878aef 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -357,10 +357,10 @@ pl: learn_about: "Dowiedz się więcej o nowych funkcjach" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Ta wersja wprowadza różne funkcje i ulepszenia, np.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subskrybuj kalendarz" inital_setup_error_message: "Podczas pobierania danych wystąpił błąd." diff --git a/config/locales/crowdin/js-pt-BR.yml b/config/locales/crowdin/js-pt-BR.yml index bb0a96022563..8cdf34153fa6 100644 --- a/config/locales/crowdin/js-pt-BR.yml +++ b/config/locales/crowdin/js-pt-BR.yml @@ -356,10 +356,10 @@ pt-BR: learn_about: "Saiba mais sobre os novos recursos" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - A nova versão traz diversas melhorias e recursos, como:
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Assinar calendário" inital_setup_error_message: "Ocorreu um erro ao buscar dados." diff --git a/config/locales/crowdin/js-pt-PT.yml b/config/locales/crowdin/js-pt-PT.yml index bb91736da3c0..2600c9f019e0 100644 --- a/config/locales/crowdin/js-pt-PT.yml +++ b/config/locales/crowdin/js-pt-PT.yml @@ -357,10 +357,10 @@ pt-PT: learn_about: "Saiba mais sobre os novos recursos" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - A versão oferece várias funcionalidades e melhorias, por exemplo,
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscrever o calendário" inital_setup_error_message: "Ocorreu um erro ao recuperar os dados." diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index 50c5bf17c6bb..1c83c19280b6 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -356,10 +356,10 @@ ro: learn_about: "Aflați mai multe despre noile caracteristici" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index c4c1fbd818d2..072efaa21c03 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -356,10 +356,10 @@ ru: learn_about: "Подробнее о новых функциях" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Этот релиз предлагает Вам различные возможности и улучшения, например,
. + The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Подписаться на календарь" inital_setup_error_message: "Произошла ошибка при получении данных." diff --git a/config/locales/crowdin/js-rw.yml b/config/locales/crowdin/js-rw.yml index 76a3f1d00b7f..e23f6304a06f 100644 --- a/config/locales/crowdin/js-rw.yml +++ b/config/locales/crowdin/js-rw.yml @@ -357,10 +357,10 @@ rw: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-si.yml b/config/locales/crowdin/js-si.yml index 6958e3a88e6e..821f25a72877 100644 --- a/config/locales/crowdin/js-si.yml +++ b/config/locales/crowdin/js-si.yml @@ -357,10 +357,10 @@ si: learn_about: "නව විශේෂාංග ගැන වැඩි විස්තර දැනගන්න" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml index 2cf98ff4e3ab..fbe655968fb4 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -357,10 +357,10 @@ sk: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-sl.yml b/config/locales/crowdin/js-sl.yml index bdaa08def84e..55667b4a8527 100644 --- a/config/locales/crowdin/js-sl.yml +++ b/config/locales/crowdin/js-sl.yml @@ -356,10 +356,10 @@ sl: learn_about: "Preberite več o novostih" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-sr.yml b/config/locales/crowdin/js-sr.yml index 63555e4ecacb..f1b577c76fa6 100644 --- a/config/locales/crowdin/js-sr.yml +++ b/config/locales/crowdin/js-sr.yml @@ -357,10 +357,10 @@ sr: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml index 91ce2aa6cc92..0b68ac48e314 100644 --- a/config/locales/crowdin/js-sv.yml +++ b/config/locales/crowdin/js-sv.yml @@ -356,10 +356,10 @@ sv: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-th.yml b/config/locales/crowdin/js-th.yml index 21045aac32aa..0f8d00c29bb7 100644 --- a/config/locales/crowdin/js-th.yml +++ b/config/locales/crowdin/js-th.yml @@ -357,10 +357,10 @@ th: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml index 2e485bd465f6..3883607a607c 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -356,10 +356,10 @@ tr: learn_about: "Yeni özellikler hakkında daha fazla bilgi edinin" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml index 87f1a7d70c5a..ba6c876a3cca 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -357,10 +357,10 @@ uk: learn_about: "Дізнатися більше про нові функції" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - Цей випуск включає багато нових функцій і покращень.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Підписатися на календар" inital_setup_error_message: "Під час отримання даних сталася помилка." diff --git a/config/locales/crowdin/js-uz.yml b/config/locales/crowdin/js-uz.yml index 0c162a9f71d1..920c71a7548f 100644 --- a/config/locales/crowdin/js-uz.yml +++ b/config/locales/crowdin/js-uz.yml @@ -357,10 +357,10 @@ uz: learn_about: "Learn more about the new features" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Subscribe to calendar" inital_setup_error_message: "An error occured while fetching data." diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml index d9705b95b0f2..175773fdaebc 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -357,10 +357,10 @@ vi: learn_about: "Tìm hiểu thêm về các tính năng mới" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - The release brings various features and improvements for you, e.g.
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "Đăng ký lịch" inital_setup_error_message: "Đã xảy ra lỗi khi lấy dữ liệu." diff --git a/config/locales/crowdin/js-zh-CN.yml b/config/locales/crowdin/js-zh-CN.yml index ec970e98878f..cf655a11257b 100644 --- a/config/locales/crowdin/js-zh-CN.yml +++ b/config/locales/crowdin/js-zh-CN.yml @@ -356,10 +356,10 @@ zh-CN: learn_about: "详细了解新功能" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - 该版本为您带来了多种新功能和改进,例如
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "订阅日历" inital_setup_error_message: "获取数据时发生错误。" diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index 107b2dc4aac5..102e6751c63e 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -355,10 +355,10 @@ zh-TW: learn_about: "瞭解更多新功能的資訊" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > - 該版本為您帶來了各種功能和改進,例如
+ The release brings various features and improvements for you, e.g.
ical_sharing_modal: title: "訂閱日曆" inital_setup_error_message: "更新資料時發生錯誤" diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 1d83c2b08540..8374db7f4205 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -674,7 +674,7 @@ ka: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml index 16bb2688271f..53bf3609bee6 100644 --- a/config/locales/crowdin/kk.yml +++ b/config/locales/crowdin/kk.yml @@ -674,7 +674,7 @@ kk: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index fa0cb61cd5f8..c7cfe4ac6e28 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -664,7 +664,7 @@ ko: lag: subject: "지연" title: "지연(일)" - caption: "두 작업 패키지 간의 근무일 수 차이" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "관련 항목" label_relates_plural: "관련 항목" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index de182d67648c..a454b2c1f997 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -689,7 +689,7 @@ lt: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 915dd2b24bb2..57a34dd4103a 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -683,7 +683,7 @@ lv: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index ea028301e173..8d1a1c1ad44b 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -674,7 +674,7 @@ mn: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml index 385351db25c1..0a80bcaae6a0 100644 --- a/config/locales/crowdin/ms.yml +++ b/config/locales/crowdin/ms.yml @@ -663,7 +663,7 @@ ms: lag: subject: "Lag" title: "Lag (dalam hari)" - caption: "Jurang bilangan hari bekerja di antara dua pakej kerja" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "berkaitan dengan" label_relates_plural: "berkaitan dengan" diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index c0b5dfe07517..c5280f7b69e2 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -674,7 +674,7 @@ ne: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index 4925ae0a7a89..f6e298b6987c 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -671,7 +671,7 @@ nl: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index 826791fd1002..9acd03698869 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -673,7 +673,7 @@ lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index 58b3cd64be19..9d753e121d9b 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -689,7 +689,7 @@ pl: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "ma relację z" label_relates_plural: "ma relację z" diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index dc54b4f6fa73..6c7cbd189580 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -671,7 +671,7 @@ pt-BR: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "relacionado a" label_relates_plural: "relacionado a" diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml index cb1344c7ef6d..67aee1e6cb0f 100644 --- a/config/locales/crowdin/pt-PT.yml +++ b/config/locales/crowdin/pt-PT.yml @@ -671,7 +671,7 @@ pt-PT: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "relacionado com" label_relates_plural: "relacionado com" diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index ef2965006b08..8db1835fdcf7 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -683,7 +683,7 @@ ro: lag: subject: "Lag" title: "Lag (in days)" - caption: "Diferența în numărul de zile lucrătoare dintre cele două pachete de lucru" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "asociat cu" label_relates_plural: "asociat cu" diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index fe87acead7b5..604b4afaf5cd 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -691,7 +691,7 @@ ru: lag: subject: "Отставание" title: "Отставание (в днях)" - caption: "Разница в количестве рабочих дней между двумя пакетами работ" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "связан с" label_relates_plural: "связаны с" diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index d57eb258dc6d..1fe1edba2396 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -674,7 +674,7 @@ rw: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 12a934710860..a0a05227df88 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -674,7 +674,7 @@ si: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index a24d722b501c..44c022b8cae5 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -692,7 +692,7 @@ sk: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index e0dd0c0ffffb..9694a1e9dcdf 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -690,7 +690,7 @@ sl: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index 61effe013e95..c214a6a170ed 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -683,7 +683,7 @@ sr: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index 367f19735b1b..f53faf4fcc5c 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -673,7 +673,7 @@ sv: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index 3c7b260f6670..2393f38ebf99 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -665,7 +665,7 @@ th: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 423cb07fa5ef..4ff7a8e863e9 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -673,7 +673,7 @@ tr: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 1a7737837479..57d8172592e6 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -685,7 +685,7 @@ uk: lag: subject: "Затримка" title: "Затримка (у днях)" - caption: "Різниця в кількості робочих між двома пакетами робіт" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "зв’язано з" label_relates_plural: "зв’язано з" diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml index 73c641ca0085..c16ea4cc02cc 100644 --- a/config/locales/crowdin/uz.yml +++ b/config/locales/crowdin/uz.yml @@ -674,7 +674,7 @@ uz: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index c01ea17cbd75..47422df2bfb7 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -667,7 +667,7 @@ vi: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 8233781915ad..25d6f8360bde 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -661,7 +661,7 @@ zh-CN: lag: subject: "间隔" title: "间隔(天数)" - caption: "两个工作包之间相隔的工作日数" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "关联到" label_relates_plural: "关联到" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index dd37183c8e01..66c4dffb9c96 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -663,7 +663,7 @@ zh-TW: lag: subject: "延遲" title: "延遲(天數)" - caption: "兩個工作項目之間的工作天數差距" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "相關於" label_relates_plural: "相關於" diff --git a/config/locales/en.yml b/config/locales/en.yml index 218ce6ae2465..ff3744163eb9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -746,7 +746,7 @@ en: lag: subject: "Lag" title: "Lag (in days)" - caption: "The gap in number of working days in between the two work packages" + caption: "The minimum number of working days to keep in between the two work packages." relations: label_relates_singular: "related to" label_relates_plural: "related to" diff --git a/config/locales/js-en.yml b/config/locales/js-en.yml index a7de10f0231f..bffc4ecc4b6f 100644 --- a/config/locales/js-en.yml +++ b/config/locales/js-en.yml @@ -400,16 +400,17 @@ en: learn_about: "Learn more about the new features" # Include the version to invalidate outdated translations in other locales. # Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. - "15_1": + "15_2": standard: new_features_html: > The release brings various features and improvements for you, e.g.
ical_sharing_modal: diff --git a/config/routes.rb b/config/routes.rb index fb2c261ca63f..b0ecba6582c6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -620,7 +620,7 @@ end end - resources :children, only: %i[new create destroy], controller: "work_package_children" + resources :children_relations, only: %i[new create destroy], controller: "work_package_children_relations" resource :progress, only: %i[new edit update], controller: "work_packages/progress" collection do diff --git a/frontend/src/app/features/homescreen/blocks/new-features.component.ts b/frontend/src/app/features/homescreen/blocks/new-features.component.ts index 204f008bbee5..6cc7053d53e2 100644 --- a/frontend/src/app/features/homescreen/blocks/new-features.component.ts +++ b/frontend/src/app/features/homescreen/blocks/new-features.component.ts @@ -33,9 +33,9 @@ import { I18nService } from 'core-app/core/i18n/i18n.service'; import { imagePath } from 'core-app/shared/helpers/images/path-helper'; // The key used in the I18n files to distinguish between versions. -const OpVersionI18n = '15_1'; +const OpVersionI18n = '15_2'; -const OpReleaseURL = 'https://www.openproject.org/docs/release-notes/15-1-0/'; +const OpReleaseURL = 'https://www.openproject.org/docs/release-notes'; /** Update the teaser image to the next version */ const featureTeaserImage = `${OpVersionI18n}_features.svg`; diff --git a/frontend/src/assets/images/15_1_features.svg b/frontend/src/assets/images/15_2_features.svg similarity index 100% rename from frontend/src/assets/images/15_1_features.svg rename to frontend/src/assets/images/15_2_features.svg diff --git a/spec/controllers/work_package_children_controller_spec.rb b/spec/controllers/work_package_children_relations_controller_spec.rb similarity index 57% rename from spec/controllers/work_package_children_controller_spec.rb rename to spec/controllers/work_package_children_relations_controller_spec.rb index 57d87f2995d8..e4e0388beeac 100644 --- a/spec/controllers/work_package_children_controller_spec.rb +++ b/spec/controllers/work_package_children_relations_controller_spec.rb @@ -30,11 +30,13 @@ require "spec_helper" -RSpec.describe WorkPackageChildrenController do +RSpec.describe WorkPackageChildrenRelationsController do shared_let(:user) { create(:admin) } - shared_let(:project) { create(:project) } - shared_let(:work_package) { create(:work_package, project:) } - shared_let(:child_work_package) { create(:work_package, parent: work_package, project:) } + shared_let(:task_type) { create(:type_task) } + shared_let(:milestone_type) { create(:type_milestone) } + shared_let(:project) { create(:project, types: [task_type, milestone_type]) } + shared_let(:work_package) { create(:work_package, project:, type: task_type) } + shared_let(:child_work_package) { create(:work_package, parent: work_package, project:, type: task_type) } current_user { user } @@ -55,25 +57,64 @@ end end - describe "DELETE /work_packages/:work_package_id/children/:id" do - before do - allow(WorkPackageRelationsTab::IndexComponent).to receive(:new).and_call_original - allow(controller).to receive(:replace_via_turbo_stream).and_call_original + describe "POST /work_packages/:work_package_id/children" do + shared_let(:future_child_work_package) { create(:work_package, project:) } + + it "creates a child relationship" do + post("create", params: { work_package_id: work_package.id, + work_package: { id: future_child_work_package.id } }, + as: :turbo_stream) + expect(response).to have_http_status(:ok) + expect(future_child_work_package.reload.parent).to eq(work_package) end - it "deletes the child relationship" do + it "can't create a child relationship for a milestone work package" do + work_package.update(type: milestone_type) + post("create", params: { work_package_id: work_package.id, + work_package: { id: future_child_work_package.id } }, + as: :turbo_stream) + expect(response).to have_http_status(:unprocessable_entity) + expect(future_child_work_package.reload.parent).to be_nil + end + end + + describe "DELETE /work_packages/:work_package_id/children/:id" do + def send_delete_request delete("destroy", params: { work_package_id: work_package.id, id: child_work_package.id }, as: :turbo_stream) + end - expect(response).to be_successful + it "deletes the child relationship" do + send_delete_request + + expect(response).to have_http_status(:ok) + expect(child_work_package.reload.parent).to be_nil + end + + it "renders the relations tab index component" do + allow(WorkPackageRelationsTab::IndexComponent).to receive(:new).and_call_original + allow(controller).to receive(:replace_via_turbo_stream).and_call_original + + send_delete_request expect(WorkPackageRelationsTab::IndexComponent).to have_received(:new) .with(work_package:, relations: [], children: []) expect(controller).to have_received(:replace_via_turbo_stream) .with(component: an_instance_of(WorkPackageRelationsTab::IndexComponent)) - expect(child_work_package.reload.parent).to be_nil + end + + it "updates dependent work packages" do + allow(WorkPackages::UpdateAncestorsService).to receive(:new).and_call_original + allow(WorkPackages::SetScheduleService).to receive(:new).and_call_original + + send_delete_request + + expect(WorkPackages::UpdateAncestorsService).to have_received(:new) + .with(user: user, work_package: child_work_package) + expect(WorkPackages::SetScheduleService).to have_received(:new) + .with(a_hash_including(work_package: [child_work_package])) end end end diff --git a/spec/controllers/work_package_relations_controller_spec.rb b/spec/controllers/work_package_relations_controller_spec.rb index 3c617af90b4c..ba571d56983b 100644 --- a/spec/controllers/work_package_relations_controller_spec.rb +++ b/spec/controllers/work_package_relations_controller_spec.rb @@ -117,7 +117,7 @@ new_relation = Relation.last expect(WorkPackageRelationsTab::IndexComponent).to have_received(:new) - .with(work_package:, relations: [relation, new_relation], children:, scroll_to_id: unrelated_work_package.id) + .with(work_package:, relations: [relation, new_relation], children:, relation_to_scroll_to: new_relation) expect(controller).to have_received(:replace_via_turbo_stream) .with(component: an_instance_of(WorkPackageRelationsTab::IndexComponent)) end diff --git a/spec/features/work_packages/details/relations/hierarchy_milestone_spec.rb b/spec/features/work_packages/details/relations/hierarchy_milestone_spec.rb index 4168e34604d0..757f0c950b69 100644 --- a/spec/features/work_packages/details/relations/hierarchy_milestone_spec.rb +++ b/spec/features/work_packages/details/relations/hierarchy_milestone_spec.rb @@ -28,30 +28,34 @@ require "spec_helper" -RSpec.describe "work package hierarchies for milestones", :js, :selenium do +RSpec.describe "work package hierarchies for milestones", :js, :with_cuprite do let(:user) { create(:admin) } - let(:type) { create(:type, is_milestone: true) } - let(:project) { create(:project, types: [type]) } - let(:work_package) { create(:work_package, project:, type:) } - let(:relations) { Components::WorkPackages::Relations.new(work_package) } - let(:tabs) { Components::WorkPackages::Tabs.new(work_package) } - let(:wp_page) { Pages::FullWorkPackage.new(work_package) } - - let(:relations_tab) { find(".op-tab-row--link_selected", text: "RELATIONS") } - let(:visit) { true } + let(:task_type) { create(:type_task) } + let(:milestone_type) { create(:type_milestone) } + let(:project) { create(:project, types: [task_type, milestone_type]) } + let!(:milestone_work_package) { create(:work_package, subject: "milestone_work_package", project:, type: milestone_type) } + let!(:task_work_package) { create(:work_package, subject: "task_work_package", project:, type: task_type) } + let(:relations) { Components::WorkPackages::Relations.new } before do login_as user + end + + def visit_relations_tab_for(work_package) + wp_page = Pages::FullWorkPackage.new(work_package) wp_page.visit_tab!("relations") expect_angular_frontend_initialized wp_page.expect_subject loading_indicator_saveguard end - it "does not provide links to add children or existing children (Regression #28745)" do - expect(page).to have_no_text("Add existing child") - expect(page).to have_no_text("Create new child") - expect(page).to have_no_css("wp-inline-create--add-link") - expect(page).to have_no_text("Children") + it "does not provide links to add children or existing children (Regression #28745 and #60512)" do + # A work package has a menu entry to link a child + visit_relations_tab_for(task_work_package) + relations.expect_new_relation_type("Child") + + # A milestone work package does NOT have a menu entry to link a child + visit_relations_tab_for(milestone_work_package) + relations.expect_no_new_relation_type("Child") end end diff --git a/spec/features/work_packages/details/relations/primerized_relations_spec.rb b/spec/features/work_packages/details/relations/primerized_relations_spec.rb index 280045e8faee..6dbd2958c8bd 100644 --- a/spec/features/work_packages/details/relations/primerized_relations_spec.rb +++ b/spec/features/work_packages/details/relations/primerized_relations_spec.rb @@ -32,8 +32,16 @@ :js, :with_cuprite do include Components::Autocompleter::NgSelectAutocompleteHelpers - shared_let(:user) { create(:admin) } shared_let(:project) { create(:project) } + shared_let(:user) do + create(:user, + member_with_permissions: { + project => %i[add_work_packages + manage_subtasks + manage_work_package_relations + view_work_packages] + }) + end before_all do set_factory_default(:user, user) @@ -41,17 +49,17 @@ set_factory_default(:project_with_types, project) end - shared_let(:parent_work_package) { create(:work_package, subject: "parent") } - shared_let(:work_package) { create(:work_package, subject: "main", parent: parent_work_package) } + shared_let(:parent_work_package) { create(:work_package, subject: "parent_work_package") } + shared_let(:work_package) { create(:work_package, subject: "work_package (main)", parent: parent_work_package) } shared_let(:type1) { create(:type) } shared_let(:type2) { create(:type) } shared_let(:wp_predecessor) do - create(:work_package, type: type1, subject: "predecessor of main", + create(:work_package, type: type1, subject: "wp_predecessor", start_date: Date.current, due_date: Date.current + 1.week) end - shared_let(:wp_related) { create(:work_package, type: type2, subject: "related to main") } - shared_let(:wp_blocker) { create(:work_package, type: type1, subject: "blocks main") } + shared_let(:wp_related) { create(:work_package, type: type2, subject: "wp_related") } + shared_let(:wp_blocker) { create(:work_package, type: type1, subject: "wp_blocker") } shared_let(:relation_follows) do create(:relation, @@ -73,16 +81,39 @@ end shared_let(:child_wp) do create(:work_package, + subject: "child_wp", parent: work_package, type: type1, project: project) end - shared_let(:not_yet_child_wp) do + shared_let(:not_child_yet_wp) do create(:work_package, + subject: "not_child_yet_wp", type: type1, project:) end + # The user should not be able to see any relations to work packages from this + # project because the user does not have the permissions to view this project + shared_let(:restricted_project) { create(:project) } + shared_let(:restricted_work_package) do + create(:work_package, + subject: "restricted_work_package", + project: restricted_project) + end + shared_let(:restricted_child_work_package) do + create(:work_package, + subject: "restricted_child_work_package", + parent: work_package, + project: restricted_project) + end + shared_let(:restricted_relation_relates) do + create(:relation, + from: work_package, + to: restricted_work_package, + relation_type: Relation::TYPE_RELATES) + end + let(:relations_tab) { Components::WorkPackages::Relations.new(work_package) } let(:relations_panel_selector) { ".detail-panel--relations" } let(:relations_panel) { find(relations_panel_selector) } @@ -119,6 +150,10 @@ def label_for_relation_type(relation_type) relations_tab.expect_relation(relation_follows) relations_tab.expect_relation(relation_relates) relations_tab.expect_relation(relation_blocked) + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end end @@ -133,6 +168,10 @@ def label_for_relation_type(relation_type) expect { relation_follows.reload }.to raise_error(ActiveRecord::RecordNotFound) tabs.expect_counter("relations", 3) + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end it "can delete children" do @@ -144,6 +183,10 @@ def label_for_relation_type(relation_type) expect(child_wp.reload.parent).to be_nil tabs.expect_counter("relations", 3) + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end end @@ -165,6 +208,8 @@ def label_for_relation_type(relation_type) # Unchanged tabs.expect_counter("relations", 4) + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) # Edit again relations_tab.edit_relation_description(relation_follows, "And they can be edited!") @@ -174,6 +219,10 @@ def label_for_relation_type(relation_type) # Unchanged tabs.expect_counter("relations", 4) + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end it "does not have an edit action for children" do @@ -246,6 +295,10 @@ def label_for_relation_type(relation_type) tabs.expect_counter("relations", 5) # Relation is created expect(Relation.follows.where(from: wp_successor, to: work_package)).to exist + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end it "does not autocomplete unrelatable work packages" do @@ -278,11 +331,18 @@ def label_for_relation_type(relation_type) tabs.expect_counter("relations", 4) - relations_tab.add_existing_child(not_yet_child_wp) - relations_tab.expect_child(not_yet_child_wp) + relations_tab.add_existing_child(not_child_yet_wp) + relations_tab.expect_child(not_child_yet_wp) # Bumped by one tabs.expect_counter("relations", 5) + + # Child relation is created + expect(not_child_yet_wp.reload.parent).to eq work_package + + # Relations not visible due to lack of permissions on the project + relations_tab.expect_no_relation(restricted_relation_relates) + relations_tab.expect_no_relation(restricted_child_work_package) end it "doesn't autocomplete parent, children, and WP itself" do diff --git a/spec/support/components/work_packages/relations.rb b/spec/support/components/work_packages/relations.rb index d2d22be2a2b8..875d26901ff7 100644 --- a/spec/support/components/work_packages/relations.rb +++ b/spec/support/components/work_packages/relations.rb @@ -39,7 +39,7 @@ class Relations attr_reader :work_package - def initialize(work_package) + def initialize(work_package = nil) @work_package = work_package end @@ -77,17 +77,44 @@ def expect_row(work_package) def expect_no_row(relatable) actual_relatable = find_relatable(relatable) - expect(page).not_to have_test_selector("op-relation-row-#{actual_relatable.id}") + expect(page).not_to have_test_selector("op-relation-row-#{actual_relatable.id}"), + "expected no relation row for work package " \ + "##{actual_relatable.id} #{actual_relatable.subject.inspect}" end def select_relation_type(relation_type) - page.find_test_selector("new-relation-action-menu").click - - within page.find_by_id("new-relation-action-menu-list") do + within_new_relation_action_menu do click_link_or_button relation_type end end + def expect_new_relation_type(relation_type) + within_new_relation_action_menu do + expect(page).to have_link(relation_type, wait: 1) + end + end + + def expect_no_new_relation_type(relation_type) + within_new_relation_action_menu do + expect(page).to have_no_link(relation_type, wait: 1) + end + end + + def open_new_relation_action_menu + return if new_relation_action_menu.visible? + + new_relation_button.click + end + + def new_relation_action_menu + action_menu_id = new_relation_button["aria-controls"] + page.find(id: action_menu_id, visible: :all) + end + + def new_relation_button + page.find_test_selector("new-relation-action-menu").find_button + end + def remove_relation(relatable) actual_relatable = find_relatable(relatable) relatable_row = find_row(actual_relatable) @@ -160,7 +187,7 @@ def add_relation(type:, relatable:, description: nil) fill_in "Description", with: description end - click_link_or_button "Save" + click_link_or_button "Add" wait_for_reload if using_cuprite? @@ -317,6 +344,13 @@ def remove_child(work_package) expect_no_row(work_package) end + + private + + def within_new_relation_action_menu(&) + open_new_relation_action_menu + within(new_relation_action_menu, &) + end end end end