diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index ff9fafaf4d00..1cfd925aa018 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -308,3 +308,20 @@ jobs:
with:
subject: "Docker build failed"
body: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+ trigger_helm_release:
+ needs: [setup, build, merge]
+ permissions:
+ contents: none
+ if: github.repository == 'opf/openproject'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Trigger Helm charts release
+ env:
+ TOKEN: ${{ secrets.OPENPROJECT_CI_TOKEN }}
+ REPOSITORY: opf/helm-charts
+ WORKFLOW_ID: core_release.yml
+ run: |
+ curl -i --fail-with-body -H"authorization: Bearer $TOKEN" \
+ -XPOST -H"Accept: application/vnd.github.v3+json" \
+ https://api.github.com/repos/$REPOSITORY/actions/workflows/$WORKFLOW_ID/dispatches \
+ -d '{"ref": "dev", "inputs": { "tag" : "${{ needs.setup.outputs.version }}" }}'
diff --git a/app/controllers/work_packages/menus_controller.rb b/app/controllers/work_packages/menus_controller.rb
index a4d8d3c570c8..8ede9319d366 100644
--- a/app/controllers/work_packages/menus_controller.rb
+++ b/app/controllers/work_packages/menus_controller.rb
@@ -30,7 +30,7 @@ class MenusController < ApplicationController
before_action :load_and_authorize_in_optional_project
def show
- @sidebar_menu_items = WorkPackages::Menu.new(project: @project, params:, request:).menu_items
+ @sidebar_menu_items = WorkPackages::Menu.new(project: @project, params:).menu_items
render layout: nil
end
end
diff --git a/app/menus/work_packages/menu.rb b/app/menus/work_packages/menu.rb
index e2415fa4fc92..ca1c96b59922 100644
--- a/app/menus/work_packages/menu.rb
+++ b/app/menus/work_packages/menu.rb
@@ -29,9 +29,8 @@ module WorkPackages
class Menu < Submenu
attr_reader :view_type, :project, :params
- def initialize(project: nil, params: nil, request: nil)
+ def initialize(project: nil, params: nil)
@view_type = "work_packages_table"
- @request = request
super(view_type:, project:, params:)
end
@@ -66,16 +65,17 @@ def query_path(query_params)
def selected?(query_params)
return true if check_for_redirected_urls(query_params)
-
- if query_params[:work_package_default] &&
- (%i[filters query_props query_id name].none? { |k| params.key? k }) &&
- @request.referer.include?("work_packages")
- return true
- end
+ return true if highlight_on_work_packages?(query_params)
super
end
+ def highlight_on_work_packages?(query_params)
+ query_params[:work_package_default] &&
+ (%i[filters query_props query_id name].none? { |k| params.key? k }) &&
+ params[:on_work_package_path] == "true"
+ end
+
def ee_upsale_path(query_params)
share_upsale_work_packages_path({ name: query_params[:name] })
end
diff --git a/app/views/work_packages/menus/_menu.html.erb b/app/views/work_packages/menus/_menu.html.erb
index 6391327f2b94..5cf2f9bd53c7 100644
--- a/app/views/work_packages/menus/_menu.html.erb
+++ b/app/views/work_packages/menus/_menu.html.erb
@@ -1,5 +1,14 @@
+<%
+ on_work_package_path = request.path.include?('/work_packages')
+ path =
+ if @project
+ menu_project_work_packages_path(@project, **params.permit(:query_props, :query_id, :name), on_work_package_path:)
+ else
+ work_packages_menu_path(**params.permit(:query_props, :query_id, :name), on_work_package_path:)
+ end
+%>
<%= turbo_frame_tag "work_packages_sidemenu",
- src: @project ? menu_project_work_packages_path(@project, params.permit(:query_props, :query_id, :name)) : work_packages_menu_path(params.permit(:query_props, :query_id, :name)),
+ src: path,
target: "_top",
data: { turbo: false },
loading: :lazy %>
diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml
index 9be1b3f132dc..5d638f0d60e2 100644
--- a/config/locales/crowdin/de.yml
+++ b/config/locales/crowdin/de.yml
@@ -3142,14 +3142,14 @@ de:
Dies legt fest, was als "Tag" angesehen wird, wenn eine zeitliche Dauer angezeigt werden (zum Beispiel: Wenn die Länge eines Tages 8 Stunden beträgt, wird eine Eingabe von 32 Stunden als 4 Tage angezeigt).
setting_invitation_expiration_days: "Aktivierungs-Mail läuft ab nach"
setting_work_package_done_ratio: "Modus der Fortschrittsberechnung"
- setting_work_package_done_ratio_field: "Arbeitsbezogen"
+ setting_work_package_done_ratio_field: "Aufwandsbezogen"
setting_work_package_done_ratio_field_caption_html: >-
% abgeschlossen kann auf jeden beliebigen Wert gesetzt werden. Wenn Sie optional einen Wert für Aufwand eingeben, wird verbleibender Aufwand automatisch abgeleitet.
setting_work_package_done_ratio_status: "Statusbezogen"
setting_work_package_done_ratio_status_caption_html: >-
Jeder Status ist mit einem Wert für % abgeschlossen verbunden. Wenn Sie den Status ändern, ändert sich auch % abgeschlossen.
setting_work_package_done_ratio_explanation_html: >
- Im arbeitsbezogenen Modus ist % abgeschlossen frei wählbar. Falls Sie einen Wert für Aufwand angeben, wird Verbleibender Aufand automatisch abgeleitet. Im statusbasierten Modus ist jedem Status ein Wert für % abgeschlossen zugeordnet. Wenn Sie den Status ändern, ändert sich % abgeschlossen.
+ Im aufwandsbezogenen Modus ist % abgeschlossen frei wählbar. Falls Sie einen Wert für Aufwand angeben, wird Verbleibender Aufand automatisch abgeleitet. Im statusbasierten Modus ist jedem Status ein Wert für % abgeschlossen zugeordnet. Wenn Sie den Status ändern, ändert sich % abgeschlossen.
setting_work_package_properties: "Arbeitspaket-Eigenschaften"
setting_work_package_startdate_is_adddate: "Neue Arbeitspakete haben \"Heute\" als Anfangsdatum"
setting_work_packages_projects_export_limit: "Arbeitspakete / Exportlimit für Projekte"
diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml
index 6d97ad57d414..e42e23b1ddbd 100644
--- a/config/locales/crowdin/zh-TW.yml
+++ b/config/locales/crowdin/zh-TW.yml
@@ -374,7 +374,7 @@ zh-TW:
will_remove_all_group_access_priveleges: "刪除該成員將刪除該組對項目的所有訪問權限。該組仍將作為實例的一部分存在。"
cannot_delete_inherited_membership: "您不能刪除此成員,因為他們所屬的組本身就是此項目的成員。"
cannot_delete_inherited_membership_note_admin_html: "您可以在 %{administration_settings_link} 中刪除作為項目成員的組或組中的特定成員。"
- cannot_delete_inherited_membership_note_non_admin: "您可以將該組作為項目成員移除,或者聯繫管理員將該特定成員從組中移除。"
+ cannot_delete_inherited_membership_note_non_admin: "您可以將該群組作為專案成員移除,或者聯繫管理員將該特定成員從組中移除。"
delete_work_package_shares_dialog:
title: "撤銷已共用的工作項目"
shared_with_this_user_html:
@@ -804,7 +804,7 @@ zh-TW:
blank: "不可空白"
blank_nested: "需要設置屬性 '%{property}' "
cannot_delete_mapping: "必需項,不能刪除"
- is_for_all_cannot_modify: "is for all projects and can therefore not be modified."
+ is_for_all_cannot_modify: "適用於所有專案,因此無法修改。"
cant_link_a_work_package_with_a_descendant: "一個工作項目不能聯結到它的一個子項目"
circular_dependency: "這個關係會建立一個循環依賴"
confirmation: "不吻合 %{attribute}。"
@@ -2628,7 +2628,7 @@ zh-TW:
body: "您的 %{app_title} 帳戶已關聯到外部身份驗證服務提供商 (%{name})。"
subtext: "無法在應用程序中更改外部帳戶的密碼。請使用您的身份驗證服務提供商的密碼丟失功能。"
mail_body_register: "歡迎使用 %{app_title}。請點擊此鏈接啟用您的帳戶:"
- mail_body_register_header_title: "項目成員邀請電子郵件"
+ mail_body_register_header_title: "專案成員邀請電子郵件"
mail_body_register_user: "親 %{name},"
mail_body_register_links_html: |
請隨時瀏覽我們提供網絡研討會 (%{webinar_link}) 的 YouTube 頻道 (%{youtube_link})
diff --git a/docs/release-notes/14-6-1/README.md b/docs/release-notes/14-6-1/README.md
new file mode 100644
index 000000000000..e02c0df4efe3
--- /dev/null
+++ b/docs/release-notes/14-6-1/README.md
@@ -0,0 +1,28 @@
+---
+title: OpenProject 14.6.1
+sidebar_navigation:
+ title: 14.6.1
+release_version: 14.6.1
+release_date: 2024-10-10
+---
+
+# OpenProject 14.6.1
+
+Release date: 2024-10-10
+
+We released OpenProject [OpenProject 14.6.1](https://community.openproject.org/versions/2130).
+The release contains several bug fixes and we recommend updating to the newest version.
+In these Release Notes, we will give an overview of important feature changes.
+At the end, you will find a complete list of all changes and bug fixes.
+
+
+
+## Bug fixes and changes
+
+
+
+
+- Bugfix: Side menu for work package lists not displayed \[[#57663](https://community.openproject.org/wp/57663)\]
+
+
+
diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md
index 2a9754b263f3..8c33113d8586 100644
--- a/docs/release-notes/README.md
+++ b/docs/release-notes/README.md
@@ -13,6 +13,13 @@ Stay up to date and get an overview of the new features included in the releases
+## 14.6.1
+
+Release date: 2024-10-10
+
+[Release Notes](14-6-1/)
+
+
## 14.6.0
Release date: 2024-10-09
diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb
index 843934d97407..5686820abc52 100644
--- a/lib/open_project/version.rb
+++ b/lib/open_project/version.rb
@@ -33,7 +33,7 @@ module OpenProject
module VERSION # :nodoc:
MAJOR = 14
MINOR = 6
- PATCH = 0
+ PATCH = 1
class << self
# Used by semver to define the special version (if any).
diff --git a/modules/storages/config/locales/crowdin/zh-TW.yml b/modules/storages/config/locales/crowdin/zh-TW.yml
index 6720545c9368..e22a8e821715 100644
--- a/modules/storages/config/locales/crowdin/zh-TW.yml
+++ b/modules/storages/config/locales/crowdin/zh-TW.yml
@@ -114,8 +114,8 @@ zh-TW:
hide_inactive_folders:
permission_not_set: 無法在 %{path} 上設定權限。
remote_folders:
- not_allowed: The %{username} doesn't have access to the %{group_folder} folder. Please check the folder permissions on Nextcloud.
- not_found: "%{group_folder} folder wasn't found. Please check your Nextcloud setup."
+ not_allowed: '%{username} 無法存取 %{group_folder}。請檢查 Nextcloud 上的資料夾權限。'
+ not_found: "%{group_folder} 未找到。請檢查您的 Nextcloud 設定。"
remove_user_from_group:
conflict: '使用者 %{user} 無法從 %{group} 群組中移除,原因如下: %{reason}'
failed_to_remove: '使用者 %{user} 無法從 %{group} 群組中移除,原因如下: %{reason}'
@@ -128,7 +128,7 @@ zh-TW:
group_does_not_exist: "%{group} 不存在。請檢查您的 Nextcloud 實例配置。"
insufficient_privileges: OpenProject 沒有足夠的權限將 %{user} 加入 %{group}。請檢查 Nextcloud 中的群組設定。
not_allowed: Nextcloud 封鎖該請求。
- unauthorized: OpenProject could not sync with Nextcloud. Please check your storage and Nextcloud configuration.
+ unauthorized: OpenProject 無法與 Nextcloud 同步。請檢查您的儲存空間和 Nextcloud 設定。
user_does_not_exist: "%{user} 在 Nextcloud 中不存在。"
one_drive_sync_service:
attributes:
@@ -147,7 +147,7 @@ zh-TW:
permission_not_set: 無法在 %{path} 上設定權限。
error: 發生意外錯誤。請確保您的 Nextcloud 可以連線,並檢查 OpenProject 日誌以取得更多資訊。
not_allowed: OpenProject 不允許存取您的 OneDrive 磁碟機。請檢查 Azure 應用程式上設定的權限。
- unauthorized: OpenProject could not sync with OneDrive. Please check your storage and Azure Application configuration.
+ unauthorized: OpenProject 無法與 OneDrive 同步。請檢查您的儲存空間和 Azure 應用程式設定。
user_does_not_exist: "%{user} 在 Nextcloud 中不存在。"
upload_link_service:
not_found: 在 %{storage_name} 上找不到目標資料夾 %{folder}。
@@ -385,7 +385,7 @@ zh-TW:
storage_list_blank_slate:
description: 新增的儲存空間將在此顯示
heading: 目前沒有任何儲存空間
- successful_storage_connection: Storage connected successfully! Remember to activate the storage in the Projects tab for each desired project to use it.
+ successful_storage_connection: 儲存已成功連接!請記住在每個所需專案的專案索引標籤中啟動儲存,以便使用。
upsale:
description: |-
整合您的 OneDrive/SharePoint 作為 OpenProject 的檔案儲存空間。上傳檔案並將其直接連結至專案中的