Merge release/16.0 into dev

This commit is contained in:
Henriette Darge
2025-05-16 14:56:25 +02:00
parent 1aa808f3eb
commit f496da2aad
251 changed files with 1390 additions and 722 deletions
-5
View File
@@ -81,11 +81,6 @@ jobs:
- name: "Fix root key in Portuguese crowdin translation files"
run: |
script/i18n/fix_crowdin_pt_language_root_key
- name: "Fix storages.health.checks.failures.zero key in Arabic and Latvian crowdin translation files"
# Only run if the file exists
if: ${{ hashFiles('script/i18n/fix_crowdin_storages_health_checks_failures_zero_key') != '' }}
run: |
script/i18n/fix_crowdin_storages_health_checks_failures_zero_key
- name: "Commit translations"
env:
BRANCH: ${{ matrix.branch }}
+1
View File
@@ -35,6 +35,7 @@ jobs:
echo "OPENPROJECT_HSTS=false" >> .env.pullpreview
echo "OPENPROJECT_NOTIFICATIONS_POLLING_INTERVAL=10000" >> .env.pullpreview
echo "OPENPROJECT_ENTERPRISE__CHARGEBEE__SITE=openproject-enterprise-test" >> .env.pullpreview
echo "OPENPROJECT_ENTERPRISE__TRIAL__CREATION__HOST=start.openproject-edge.com" >> .env.pullpreview
- name: Boot as BIM edition
if: contains(github.ref, 'bim/') || contains(github.head_ref, 'bim/')
run: |
Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

@@ -43,16 +43,21 @@ module Admin
name: "general",
path: admin_settings_attachments_path,
label: t("settings.general")
},
{
}
]
if Setting.antivirus_scan_available?
tabs << {
name: "virus",
path: admin_settings_virus_scanning_path,
label: t(:"settings.antivirus.title"),
enterprise_feature: :virus_scanning
}
]
end
if User.current.admin? && (EnterpriseToken.allows_to?(:virus_scanning) || Attachment.status_quarantined.any?)
if Setting.antivirus_scan_available? &&
User.current.admin? &&
(EnterpriseToken.allows_to?(:virus_scanning) || Attachment.status_quarantined.any?)
tabs << {
name: "quarantined",
path: admin_quarantined_attachments_path,
@@ -1,8 +1,9 @@
<%=
component_wrapper(tag: "turbo-frame") do
grid_layout("op-enterprise-banner",
**@system_arguments) do |grid|
grid_layout(
"op-enterprise-banner",
**@system_arguments
) do |grid|
if inline?
grid.with_area(:visual) do
render(Primer::Beta::Octicon.new(icon: :"op-enterprise-addons", classes: "op-enterprise-banner--icon"))
@@ -15,9 +16,13 @@
if medium?
flex_layout(align_items: :center, mb: 3) do |title_flex|
title_flex.with_column do
render(Primer::Beta::Octicon.new(icon: :"op-enterprise-addons",
size: :medium,
classes: "upsell-colored"))
render(
Primer::Beta::Octicon.new(
icon: :"op-enterprise-addons",
size: :medium,
classes: "upsell-colored"
)
)
end
title_flex.with_column(ml: 2) do
@@ -36,7 +41,7 @@
if features.present?
flex.with_row do
content_tag(:ul) { safe_join features.map { |text| render(Primer::Beta::Text.new(tag: :li)) { text } } }
content_tag(:ul) { safe_join(features.map { |text| render(Primer::Beta::Text.new(tag: :li)) { text } }) }
end
end
@@ -46,6 +51,10 @@
end
end
if medium?
grid.with_area(:image, **@image_arguments)
end
if @dismissable
grid.with_area(:dismiss) do
classes = medium? ? "op-enterprise-banner--close-icon_hovering" : ""
@@ -89,10 +89,8 @@ module EnterpriseEdition
end
def before_render
@system_arguments[:style] = join_style_arguments(
@system_arguments[:style],
medium? ? "background-image: url(#{helpers.image_path(@image)})" : nil
)
@image_arguments = {}
@image_arguments[:style] = @image.present? ? "background-image: url(#{helpers.image_path(@image)})" : nil
end
def medium?
@@ -43,34 +43,28 @@ $op-enterprise-banner-fixed-height: 220px
overflow: hidden
&_medium
position: relative
padding: 0
grid-template-areas: "content graphic"
grid-template-columns: 2fr 1fr
height: $op-enterprise-banner-fixed-height
background-repeat: no-repeat
background-position: center right
@media screen and (max-width: $breakpoint-lg)
grid-template-columns: 1fr
background-image: none !important
height: auto
@media screen and (max-width: $breakpoint-xl)
background-size: cover
&_medium &
padding: 0
grid-template-areas: "content graphic"
grid-template-columns: 1fr 1fr
&--content
z-index: 1
align-self: center
padding: var(--base-size-16)
&--image
width: 100%
height: 100%
object-fit: cover
@include upsell-image
&--visual
display: grid
@@ -68,7 +68,10 @@ module EnterpriseEdition
return if EnterpriseToken.active?
return unless User.current.admin?
helpers.angular_component_tag("opce-free-trial-button")
helpers.angular_component_tag(
"opce-free-trial-button",
inputs: helpers.enterprise_angular_trial_inputs
)
end
# Allow providing a custom upgrade now button
@@ -1,8 +1,3 @@
<% if respond_to?(:gon) %>
<% helpers.write_augur_to_gon %>
<% helpers.write_trial_key_to_gon if !EnterpriseToken.current.present? %>
<% end %>
<div class="op-enterprise-upsell-page" data-test-selector="op-enterprise-upsell-page">
<%=
render(Primer::OpenProject::FlexLayout.new(justify_content: :center, align_items: :center)) do |flex|
@@ -1,14 +1,5 @@
<%=
modal_content.with_row(data: { "test-selector": "op-share-dialog-upsell-block" }) do
render Primer::OpenProject::FeedbackMessage.new(icon_arguments: { icon: :"op-enterprise-addons", classes: "upsell-colored" }, border: true) do |component|
component.with_heading(tag: :h2, classes: "upsell-colored").with_content(I18n.t(:"ee.upsell.title"))
component.with_description { I18n.t("sharing.project_queries.upsell.message") }
href = "#{OpenProject::Static::Links.links[:upsell][:href]}/?utm_source=unknown&utm_medium=community-edition&utm_campaign=project-list-sharing-modal"
component.with_secondary_action(href:) do |link|
link.with_trailing_visual_icon(icon: "link-external")
I18n.t("admin.enterprise.enterprise_link")
end
end
render(EnterpriseEdition::BannerComponent.new(:project_list_sharing))
end
%>
@@ -1,14 +1,5 @@
<%=
component_wrapper(tag: "turbo-frame") do
render Primer::OpenProject::FeedbackMessage.new(icon_arguments: { icon: :"op-enterprise-addons", classes: "upsell-colored" }, border: true) do |component|
component.with_heading(tag: :h2, classes: "upsell-colored").with_content(I18n.t(:"ee.upsell.title"))
component.with_description { I18n.t("mail.sharing.work_packages.enterprise_text") }
href = "#{OpenProject::Static::Links.links[:upsell][:href]}/?utm_source=unknown&utm_medium=community-edition&utm_campaign=work-package-sharing-modal"
component.with_secondary_action(href:) do |link|
link.with_trailing_visual_icon(icon: "link-external")
I18n.t("admin.enterprise.enterprise_link")
end
end
render(EnterpriseEdition::BannerComponent.new(:work_package_sharing))
end
%>
@@ -31,6 +31,8 @@ module Admin
class QuarantinedAttachmentsController < ApplicationController
layout "admin"
before_action :require_admin
before_action :check_available
before_action :find_quarantined_attachments
before_action :find_attachment, only: %i[destroy]
@@ -53,6 +55,12 @@ module Admin
private
def check_available
return if Setting.antivirus_scan_available?
render_404
end
def create_journal(container, user, notes)
::Journals::CreateService
.new(container, user)
@@ -32,6 +32,7 @@ module Admin::Settings
class VirusScanningSettingsController < ::Admin::SettingsController
menu_item :attachments
before_action :check_available
before_action :require_ee, except: :show # rubocop:disable Rails/LexicallyScopedActionFilter
before_action :check_clamav, only: %i[update], if: -> { scan_enabled? }
@@ -55,6 +56,12 @@ module Admin::Settings
redirect_to action: :show
end
def check_available
return if Setting.antivirus_scan_available?
render_404
end
def mark_unscanned_attachments
@unscanned_attachments = Attachment.status_uploaded
end
@@ -27,7 +27,6 @@
#++
class CustomActionsController < ApplicationController
include EnterpriseTrialHelper
before_action :require_admin
before_action :require_enterprise_token
@@ -44,7 +44,6 @@ class CustomStylesController < ApplicationController
except: UNGUARDED_ACTIONS + %i[upsell]
skip_before_action :check_if_login_required,
only: UNGUARDED_ACTIONS
before_action :write_augur_to_gon, only: %i[upsell]
no_authorization_required! *UNGUARDED_ACTIONS
def default_url_options
-13
View File
@@ -26,25 +26,16 @@
# See COPYRIGHT and LICENSE files for more details.
#++
class EnterprisesController < ApplicationController
include EnterpriseTrialHelper
layout "admin"
menu_item :enterprise
before_action :chargebee_content_security_policy
before_action :youtube_content_security_policy
before_action :require_admin
before_action :check_user_limit, only: [:show]
before_action :check_domain, only: [:show]
before_action :render_gon
def show
@current_token = EnterpriseToken.current
@token = @current_token || EnterpriseToken.new
if !@current_token.present?
helpers.write_trial_key_to_gon
end
end
def create # rubocop:disable Metrics/AbcSize
@@ -94,10 +85,6 @@ class EnterprisesController < ApplicationController
private
def render_gon
helpers.write_augur_to_gon
end
def check_user_limit
if OpenProject::Enterprise.user_limit_reached?
flash.now[:warning] = I18n.t(
@@ -27,7 +27,6 @@
#++
class PlaceholderUsersController < ApplicationController
include EnterpriseTrialHelper
layout "admin"
before_action :authorize_global, except: %i[show]
no_authorization_required! :show
@@ -49,7 +49,7 @@ class Projects::Settings::GeneralController < Projects::SettingsController
redirect_to action: :show, status: :see_other
end
def update
def update # rubocop:disable Metrics/AbcSize
call = Projects::UpdateService
.new(model: @project, user: current_user)
.call(permitted_params.project)
@@ -60,6 +60,7 @@ class Projects::Settings::GeneralController < Projects::SettingsController
flash[:notice] = I18n.t(:notice_successful_update)
redirect_to project_settings_general_path(@project)
else
flash[:error] = I18n.t(:notice_unsuccessful_update_with_reason, reason: call.message)
render action: :show, status: :unprocessable_entity
end
end
+17 -11
View File
@@ -29,19 +29,25 @@
#++
module EnterpriseHelper
def write_augur_to_gon
gon.augur_url = OpenProject::Configuration.enterprise_trial_creation_host
gon.token_version = OpenProject::Token::VERSION
def enterprise_angular_trial_inputs
trial_key = Token::EnterpriseTrialKey.find_by(user_id: User.system.id)
token = EnterpriseToken.current
if token.present? || trial_key.blank?
enterprise_angular_static_inputs
else
enterprise_angular_static_inputs.merge(
trialKey: trial_key.value,
trialCreatedAt: trial_key.created_at.to_date.iso8601
)
end
end
def write_trial_key_to_gon
trial_key = Token::EnterpriseTrialKey.find_by(user_id: User.system.id)
if trial_key
gon.ee_trial_key = {
value: trial_key.value,
created: trial_key.created_at
}
end
def enterprise_angular_static_inputs
{
augurUrl: OpenProject::Configuration.enterprise_trial_creation_host,
tokenVersion: OpenProject::Token::VERSION
}
end
def enterprise_token_plan_name(enterprise_token)
-18
View File
@@ -1,18 +0,0 @@
module EnterpriseTrialHelper
def chargebee_content_security_policy
script_src = %w(js.chargebee.com)
default_src = script_src + ["#{OpenProject::Configuration.enterprise_chargebee_site}.chargebee.com"]
append_content_security_policy_directives(
script_src:,
style_src: default_src,
frame_src: default_src
)
end
def youtube_content_security_policy
append_content_security_policy_directives(
frame_src: %w(https://www.youtube.com)
)
end
end
+3 -1
View File
@@ -29,7 +29,9 @@
class Setting
module VirusScanning
def self.enabled?
Setting.antivirus_scan_mode != :disabled && EnterpriseToken.allows_to?(:virus_scanning)
Setting.antivirus_scan_available? &&
Setting.antivirus_scan_mode != :disabled &&
EnterpriseToken.allows_to?(:virus_scanning)
end
end
end
@@ -1,3 +1,5 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
@@ -25,9 +27,28 @@
#
# See COPYRIGHT and LICENSE files for more details.
#++
module WorkPackage::Exports
module Formatters
class RemainingHours < ::WorkPackage::Exports::Formatters::CompoundHours
# Adds extra columns when some particular columns are present.
#
# For instance, adds a 'Total work' column when the 'Work' column is present.
module AdditionalColumns
ADDITIONAL_COLUMNS = {
estimated_hours: [:derived_estimated_hours],
remaining_hours: [:derived_remaining_hours],
done_ratio: [:derived_done_ratio]
}.freeze
def get_columns
super.flat_map { |column| [column] + additional_columns(column) }
end
def additional_columns(column)
ADDITIONAL_COLUMNS
.fetch(column.name, [])
.map do |additional_column_name|
Queries::WorkPackages::Selects::PropertySelect.new(additional_column_name)
end
end
end
end
+11 -19
View File
@@ -29,38 +29,30 @@
module WorkPackage::Exports
class CSV < QueryExporter
include ::Exports::Concerns::CSV
include AdditionalColumns
alias :records :work_packages
def get_columns
if with_descriptions
super + [description_column]
else
super
end
end
private
def title
query.new_record? ? I18n.t(:label_work_package_plural) : query.name
end
def csv_headers
return super unless with_descriptions
super + [WorkPackage.human_attribute_name(:description)]
end
def with_descriptions
ActiveModel::Type::Boolean.new.cast(options[:show_descriptions])
end
# fetch all row values
def csv_row(work_package)
return super unless with_descriptions
super.tap do |row|
if row.any?
row << if work_package.description
work_package.description.squish
else
""
end
end
end
def description_column
Queries::WorkPackages::Selects::PropertySelect.new(:description)
end
end
end
@@ -1,3 +1,5 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
@@ -27,7 +29,22 @@
#++
module WorkPackage::Exports
module Formatters
class EstimatedHours < ::WorkPackage::Exports::Formatters::CompoundHours
class CompoundDoneRatio < ::Exports::Formatters::Default
def self.apply?(name, export_format)
name.to_sym == :done_ratio && export_format == :pdf
end
def format(work_package, **)
derived_done_ratio = work_package.derived_done_ratio
derived = derived_done_ratio&.positive? ? " · Σ #{format_value(derived_done_ratio)}" : ""
"#{format_value(work_package.done_ratio)}#{derived}"
end
def format_value(value, _options = {})
return "" if value.nil?
"#{value}%"
end
end
end
end
@@ -28,8 +28,8 @@
module WorkPackage::Exports
module Formatters
class CompoundHours < ::Exports::Formatters::Default
def self.apply?(name, _export_format)
name.to_sym == key
def self.apply?(name, export_format)
name.to_sym.in?(%i[estimated_hours remaining_hours]) && export_format == :pdf
end
def format(work_package, **)
@@ -45,10 +45,6 @@ module WorkPackage::Exports
private
def attribute
self.class.key
end
def total_prefix(value)
value && "· Σ #{value}"
end
@@ -1,3 +1,5 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
@@ -28,14 +30,8 @@
module WorkPackage::Exports
module Formatters
class DoneRatio < ::Exports::Formatters::Default
def self.apply?(name, _export_format)
name.to_sym == :done_ratio
end
def format(work_package, **)
derived_done_ratio = work_package.derived_done_ratio
derived = derived_done_ratio&.positive? ? " · Σ #{format_value(derived_done_ratio)}" : ""
"#{format_value(work_package.done_ratio)}#{derived}"
def self.apply?(name, export_format)
name.to_sym.in?(%i[done_ratio derived_done_ratio]) && export_format != :pdf
end
def format_value(value, _options = {})
+5 -1
View File
@@ -33,7 +33,11 @@ See COPYRIGHT and LICENSE files for more details.
<div class="upsell--information-container">
<div class='upsell-information'>
<opce-enterprise-base></opce-enterprise-base>
<%= angular_component_tag(
"opce-enterprise-base",
inputs: enterprise_angular_trial_inputs
)
%>
</div>
<div class='upsell-actions'>
+12 -6
View File
@@ -1,12 +1,15 @@
<div class="widget-box--blocks--upsell-container"
style="background-image: url(<%= image_path("enterprise/homescreen.png") %>)">
<div class="widget-box--blocks--upsell-container">
<div class="widget-box--blocks--upsell-text">
<%=
render(Primer::OpenProject::FlexLayout.new(align_items: :center, mb: 3)) do |title_flex|
title_flex.with_column do
render(Primer::Beta::Octicon.new(icon: :"op-enterprise-addons",
size: :medium,
classes: "upsell-colored"))
render(
Primer::Beta::Octicon.new(
icon: :"op-enterprise-addons",
size: :medium,
classes: "upsell-colored"
)
)
end
title_flex.with_column(ml: 2) do
@@ -21,6 +24,9 @@
<p class="widget-box--blocks--upsell-description">
<%= t("ee.upsell.homescreen_subline") %>
</p>
<%= render EnterpriseEdition::UpsellButtonsComponent.new(nil) %>
</div>
<%= render EnterpriseEdition::UpsellButtonsComponent.new(nil) %>
<div class="widget-box--blocks--upsell-image"
style="background-image: url(<%= image_path("enterprise/homescreen.png") %>)"></div>
</div>
-2
View File
@@ -27,6 +27,4 @@ See COPYRIGHT and LICENSE files for more details.
++#%>
<% write_augur_to_gon %>
<%= render template: "layouts/base", locals: local_assigns.merge({ menu_name: :notifications_menu }) %>
+4
View File
@@ -102,6 +102,10 @@ module Settings
description: "Time in minutes to wait before uploaded files not attached to any container are removed",
default: 180
},
antivirus_scan_available: {
description: "Virus scanning option selectable in the UI",
default: true
},
antivirus_scan_mode: {
description: "Virus scanning option for files uploaded to OpenProject",
format: :symbol,
+32 -2
View File
@@ -1,3 +1,33 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
Rails.application.configure do |application|
application.config.to_prepare do
Exports::Register.register do
@@ -6,13 +36,13 @@ Rails.application.configure do |application|
single WorkPackage, WorkPackage::PDFExport::WorkPackageToPdf
formatter WorkPackage, WorkPackage::Exports::Formatters::EstimatedHours
formatter WorkPackage, WorkPackage::Exports::Formatters::RemainingHours
formatter WorkPackage, WorkPackage::Exports::Formatters::CompoundHours
formatter WorkPackage, WorkPackage::Exports::Formatters::SpentUnits
formatter WorkPackage, WorkPackage::Exports::Formatters::Hours
formatter WorkPackage, WorkPackage::Exports::Formatters::Days
formatter WorkPackage, WorkPackage::Exports::Formatters::Currency
formatter WorkPackage, WorkPackage::Exports::Formatters::Costs
formatter WorkPackage, WorkPackage::Exports::Formatters::CompoundDoneRatio
formatter WorkPackage, WorkPackage::Exports::Formatters::DoneRatio
formatter WorkPackage, WorkPackage::Exports::Formatters::Date
formatter WorkPackage, Exports::Formatters::CustomField
+14 -3
View File
@@ -51,11 +51,22 @@ Rails.application.config.after_initialize do
assets_src << asset_host if asset_host.present?
# Valid for iframes
frame_src = %w['self' https://player.vimeo.com]
frame_src = %w['self' https://player.vimeo.com https://www.youtube.com]
frame_src << OpenProject::Configuration[:security_badge_url]
# Default src
default_src = %w('self') + OpenProject::Configuration.remote_storage_hosts
default_src = %w('self')
# Attachment uploaders
default_src += OpenProject::Configuration.remote_storage_hosts
# Chargebee self-service
frame_src += [
"https://js.chargebee.com/",
"#{OpenProject::Configuration.enterprise_chargebee_site}.chargebee.com"
]
default_src << "#{OpenProject::Configuration.enterprise_chargebee_site}.chargebee.com"
# Allow requests to CLI in dev mode
connect_src = default_src + [OpenProject::Configuration.enterprise_trial_creation_host]
@@ -78,7 +89,7 @@ Rails.application.config.after_initialize do
end
# Allow to extend the script-src in specific situations
script_src = assets_src
script_src = assets_src + %w(js.chargebee.com)
# Allow unsafe-eval for rack-mini-profiler
if Rails.env.development? && ENV.fetch("OPENPROJECT_RACK_PROFILER_ENABLED", false)
+2
View File
@@ -2054,6 +2054,8 @@ af:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2214,6 +2214,8 @@ ar:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ az:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2134,6 +2134,8 @@ be:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Заўвага: выкарыстаны лагатып будзе агульнадаступным."
+2
View File
@@ -2054,6 +2054,8 @@ bg:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Забележка: използваното лого ще бъде публично достъпно."
+2
View File
@@ -2051,6 +2051,8 @@ ca:
description: "Amb les alertes per dates, se't notificarà quan una data d'inici o finalització s'apropi de tal manera que no se't puguin oblidar o passar dates rellevants."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Nota: el logotip utilitzat serà accessible públicament."
+2
View File
@@ -2054,6 +2054,8 @@ ckb-IR:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2134,6 +2134,8 @@ cs:
description: "S upozorněním na datum budete upozorněni na blížící se datum zahájení nebo ukončení, abyste nikdy nezmeškali nebo nezapomněli na důležitou lhůtu."
work_package_sharing:
description: "Sdílejte pracovní balíčky s uživateli, kteří nejsou členy projektu."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Poznámka: použité logo bude veřejně přístupné."
+2
View File
@@ -2052,6 +2052,8 @@ da:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2047,6 +2047,8 @@ de:
description: "Mit Datums-Erinnerungen werden Sie über bevorstehende Start- oder Endtermine informiert, so dass Sie nie einen wichtigen Termin verpassen oder übersehen."
work_package_sharing:
description: "Teilen Sie Arbeitspakete mit Benutzern, die nicht Mitglieder des Projekts sind."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Selbstdefiniertes Farbthema und Logo"
more_info: "Hinweis: Das verwendete Logo wird öffentlich zugänglich sein."
+2
View File
@@ -2050,6 +2050,8 @@ el:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ eo:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2052,6 +2052,8 @@ es:
description: "Con las alertas de fecha, recibirá notificaciones de próximas fechas de inicio o finalización para que nunca olvide una fecha límite importante."
work_package_sharing:
description: "Compartir paquetes de trabajo con usuarios que no son miembros del proyecto."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Tema de color y logotipo personalizados"
more_info: "Nota: el logotipo utilizado será de acceso público."
+2
View File
@@ -2054,6 +2054,8 @@ et:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ eu:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ fa:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ fi:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ fil:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2052,6 +2052,8 @@ fr:
description: "Avec les alarmes, vous serez informé(e) à l'approche des dates de début ou de fin vous concernant afin de ne jamais manquer ou oublier une échéance importante."
work_package_sharing:
description: "Partagez les lots de travaux avec des utilisateurs qui ne sont pas membres du projet."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Thème de couleur et logo personnalisés"
more_info: "Remarque : le logo utilisé sera accessible publiquement."
+2
View File
@@ -2134,6 +2134,8 @@ he:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2052,6 +2052,8 @@ hi:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2094,6 +2094,8 @@ hr:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2053,6 +2053,8 @@ hu:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Megjegyzés: a használt logó nyilvánosan elérhető lesz."
+2
View File
@@ -2010,6 +2010,8 @@ id:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Catatan: logo yang digunakan akan dapat diakses publik."
+2
View File
@@ -2051,6 +2051,8 @@ it:
description: "Con gli avvisi sulle date, sarai avvisato delle prossime date di inizio o di fine in modo da non perdere mai o dimenticare una scadenza importante."
work_package_sharing:
description: "Condividi macro-attività con utenti che non sono membri del progetto."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Tema e logo a colori personalizzati"
more_info: "Nota: il logo utilizzato sarà accessibile al pubblico."
+2
View File
@@ -2012,6 +2012,8 @@ ja:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+1
View File
@@ -434,6 +434,7 @@ hu:
label_filename: "File"
label_filesize: "Méret"
label_general: "Általános"
label_global_roles: "Globális szerepek"
label_greater_or_equal: ">="
label_group: "Csoport"
label_group_by: "Csoportosítás a következők szerint"
+2
View File
@@ -2054,6 +2054,8 @@ ka:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ kk:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2014,6 +2014,8 @@ ko:
description: "날짜 경보를 사용하면, 중요 마감일을 놓치거나 잊지 않도록 향후 시작 날짜 또는 종료 날짜에 대한 알림을 받게 됩니다."
work_package_sharing:
description: "프로젝트 멤버가 아닌 사용자와 작업 패키지를 공유합니다."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "사용자 지정 색상 테마 및 로고"
more_info: "참고: 사용된 로그는 공개적으로 액세스 가능합니다."
+2
View File
@@ -2131,6 +2131,8 @@ lt:
description: "Su datos įspėjimais jus informuos apie ateinančias pradžios ir pabaigos datas, kad niekada nepraleistumėte ar nepamirštumėte svarbių terminų."
work_package_sharing:
description: "Bendrinkite darbo paketus su naudotojais, kurie nėra projekto nariai."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Pastaba: panaudotas logotipas bus viešai prieinamas."
+2
View File
@@ -2094,6 +2094,8 @@ lv:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ mn:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2012,6 +2012,8 @@ ms:
description: "Dengan peringatan tarikh, anda akan dimaklumkan tentang tarikh mula dan akhir yang akan datang supaya anda tidak pernah terlepas atau lupa tarikh akhir yang penting."
work_package_sharing:
description: "Kongsi pakej kerja dengan pengguna yang bukan ahli projek."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Perhatian: logo yang digunakan akan boleh diakses secara umum."
+2
View File
@@ -2054,6 +2054,8 @@ ne:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "नोट: प्रयोग गरिएको लोगो सार्वजनिक रूपमा पहुँचयोग्य हुनेछ।"
+2
View File
@@ -2050,6 +2050,8 @@ nl:
description: "Met datummeldingen wordt u op de hoogte gebracht van de start- of einddatum, zodat u nooit een belangrijke deadline mist of vergeet."
work_package_sharing:
description: "Werkpakketten delen met gebruikers die geen lid zijn van het project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Opmerking: het gebruikte logo is openbaar toegankelijk."
+2
View File
@@ -2053,6 +2053,8 @@
description: "Med datovarsler, vil du bli varslet om kommende start- eller sluttdatoer slik at du aldri går glipp av eller glemmer en viktig frist."
work_package_sharing:
description: "Del arbeidspakker med brukere som ikke er medlemmer i prosjektet."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Merk: den brukte logoen vil være offentlig tilgjengelig."
+2
View File
@@ -2131,6 +2131,8 @@ pl:
description: "Dzięki alertom dotyczącym dat będziesz otrzymywać powiadomienia o zbliżających się terminach rozpoczęcia lub zakończenia pracy, dzięki czemu nigdy nie przegapisz ani nie zapomnisz ważnego terminu."
work_package_sharing:
description: "Udostępnij pakiety robocze użytkownikom, którzy nie są członkami projektu."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Niestandardowy motyw kolorystyczny i logotyp"
more_info: "Uwaga: użyte logo będzie ogólnodostępne."
+2
View File
@@ -2051,6 +2051,8 @@ pt-BR:
description: "Com os alertas de data, você receberá uma notificação das futuras datas de início e conclusão, assim você nunca perderá ou esquecerá prazos importante. "
work_package_sharing:
description: "Compartilhe pacotes de trabalho com usuários que não são membros do projeto."
project_list_sharing:
description: "Compartilhar listas de projetos com usuários individuais."
define_custom_style:
title: "Tema de cor e logotipo personalizados"
more_info: "Obs.: o logotipo usado pode ser acessado publicamente."
+2
View File
@@ -2051,6 +2051,8 @@ pt-PT:
description: "Com os alertas de data, receberá uma notificação sobre as próximas datas de início e conclusão, para que não nunca perca ou esqueça prazos importantes. "
work_package_sharing:
description: "Partilhe pacotes de trabalho com utilizadores que não são membros do projeto."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Tema e logótipo de cor personalizada"
more_info: "Nota: o logótipo usado estará acessível ao público."
+2
View File
@@ -2094,6 +2094,8 @@ ro:
description: "Cu alertele de date, veți fi notificat cu privire la următoarele date de început sau de sfârșit, astfel încât să nu ratați sau să uitați niciodată un termen limită important."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Notă: logo-ul utilizat va fi accesibil publicului."
+2
View File
@@ -2132,6 +2132,8 @@ ru:
description: "С уведомлениями по дате вы будете получать уведомления о предстоящих датах начала или датах конца, чтобы никогда не пропустить или не забыть важный срок."
work_package_sharing:
description: "Поделиться пакетом работ с пользователями, которые не являются участниками проекта."
project_list_sharing:
description: "Делитесь списками проектов с отдельными пользователями."
define_custom_style:
title: "Пользовательская цветовая тема и логотип"
more_info: "Примечание: используемый логотип будет общедоступным."
+2
View File
@@ -2054,6 +2054,8 @@ rw:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ si:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2134,6 +2134,8 @@ sk:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2133,6 +2133,8 @@ sl:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2094,6 +2094,8 @@ sr:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2054,6 +2054,8 @@ sv:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Obs: logotypen som används kommer att vara allmänt tillgänglig."
+2
View File
@@ -2014,6 +2014,8 @@ th:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2053,6 +2053,8 @@ tr:
description: "Tarih uyarıları ile yaklaşan başlangıç veya bitiş tarihleri hakkında bilgilendirileceksiniz, böylece önemli bir teslim tarihini asla kaçırmaz veya unutmazsınız."
work_package_sharing:
description: "İş paketlerini proje üyesi olmayan kullanıcılarla paylaşın."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Not: Kullanılan logo herkese açık olacaktır."
+2
View File
@@ -2128,6 +2128,8 @@ uk:
description: "Завдяки оповіщенням про дати ви завжди знатимете про заплановані дати початку або завершення, тож ніколи не пропускатимете важливі терміни й не забуватимете про них."
work_package_sharing:
description: "Діліться пакетами робіт із користувачами, які не належать до учасників проєкту."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Користувацький колір теми й логотип"
more_info: "Примітка: вибраний логотип буде загальнодоступний."
+2
View File
@@ -2054,6 +2054,8 @@ uz:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+2
View File
@@ -2014,6 +2014,8 @@ vi:
description: "Với cảnh báo ngày, bạn sẽ được thông báo về các ngày bắt đầu hoặc kết thúc sắp tới để không bao giờ bỏ lỡ hoặc quên hạn chót quan trọng."
work_package_sharing:
description: "Chia sẻ gói công việc với người dùng không phải là thành viên của dự án."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Lưu ý: logo sử dụng sẽ được công khai truy cập."
+2
View File
@@ -2010,6 +2010,8 @@ zh-CN:
description: "通过日期提醒,您将收到即将开始或完成日期的通知,以免错过或忘记重要截止日期。"
work_package_sharing:
description: "与非此项目成员的用户共享工作包。"
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "自定义颜色主题和 Logo"
more_info: "注:使用的 Logo 将可公开访问。"
+2
View File
@@ -2012,6 +2012,8 @@ zh-TW:
description: "透過日期提醒,您將收到即將到來的開始或結束日期的通知,這樣您就不會錯過或忘記重要的截止日期。"
work_package_sharing:
description: "與不是專案成員的使用者共同參與工作項目。"
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "自訂布景主題顏色與logo"
more_info: "備註:Logo可被公開存取。"
+2
View File
@@ -2131,6 +2131,8 @@ en:
description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline."
work_package_sharing:
description: "Share work packages with users who are not members of the project."
project_list_sharing:
description: "Share project lists with individual users."
define_custom_style:
title: "Custom color theme and logo"
more_info: "Note: the used logo will be publicly accessible."
+1 -1
View File
@@ -136,7 +136,7 @@ enterprise_features:
default:
href: https://www.openproject.org/enterprise-edition
work_package_subject_generation:
href: https://www.openproject.org/docs/system-admin-guide/manage-work-packages/automatic-subjects/
href: https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-types/automatic-subjects/
form_configuration:
href: https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on
attribute_highlighting:
+6 -2
View File
@@ -3,12 +3,12 @@ title: OpenProject 16.0.0
sidebar_navigation:
title: 16.0.0
release_version: 16.0.0
release_date: 2025-05-01
release_date: 2025-05-21
---
# OpenProject 16.0.0
Release date: 2025-05-01
Release date: 2025-05-21
We released [OpenProject 16.0.0](https://community.openproject.org/versions/1412). This major release contains many features and bug fixes and we recommend updating to the newest version. In these Release Notes, we will give an overview of important updates, important feature changes and important technical updates. At the end, you will find a complete list of all changes and bug fixes for 16.0.0.
@@ -138,6 +138,10 @@ Instead of mutually acting as OAuth servers and clients, both OpenProject and Ne
Please see [our system admin guide](../../system-admin-guide/integrations/nextcloud/oidc-sso/) to learn how to set up this integration.
This is the first version of OpenProject to support this new integration method with Nextcloud. Since this feature was not yet
exposed to large installations, we still consider it experimental. Please share your feedback regarding this new feature with us and stay tuned
for further enhancements around it.
## Breaking: API requests with JWT issued by OpenID Connect provider require scope
In [OpenProject 14.4.0](../../release-notes/14/14-0-0/) we introduced the possibility to access the OpenProject API through a JSON Web Token created by an OpenID Connect
@@ -11,13 +11,14 @@ Manage work packages in OpenProject.
## Overview
| Popular Topics | Description |
| --------------------------------------------------- | :----------------------------------------------------------- |
| [Settings](work-package-settings) | Configure general work package settings and defaults, such as display options and more. |
| [Types](work-package-types) | Create and manage work package types. |
| [Status](work-package-status) | Create and manage work package status. |
| [Priorities](work-package-priorities) | Create and manage work package priorities. |
| [Progress tracking](work-package-progress-tracking) | Manage work package progress reporting settings. |
| [Workflows](work-package-workflows) | Create and manage workflows for work packages in OpenProject. |
| [Custom actions](custom-actions) | Create custom actions for work packages (Enterprise add-on). |
| [FAQs](work-packages-faq) | Frequently asked questions about work packages in OpenProject. |
| Popular Topics | Description |
| ----------------------------------------------------------- | :----------------------------------------------------------- |
| [Settings](work-package-settings) | Configure general work package settings and defaults, such as display options and more. |
| [Types](work-package-types) | Create and manage work package types. |
| [Automatic subjects](work-package-types/automatic-subjects) | Define automatic work package subjects (Enterprise add-on). |
| [Status](work-package-status) | Create and manage work package status. |
| [Priorities](work-package-priorities) | Create and manage work package priorities. |
| [Progress tracking](work-package-progress-tracking) | Manage work package progress reporting settings. |
| [Workflows](work-package-workflows) | Create and manage workflows for work packages in OpenProject. |
| [Custom actions](custom-actions) | Create custom actions for work packages (Enterprise add-on). |
| [FAQs](work-packages-faq) | Frequently asked questions about work packages in OpenProject. |
@@ -95,6 +95,14 @@ The embedded related work package table in the work package form will look like
![Sys-admin-related-work-package-table](open_project_admin_related_wp_table.png)
## Work package automatic subject configuration (Enterprise add-on)
> [!NOTE]
> Configuring automatically generated work package subjects is an Enterprise add-on and can only be used with [Enterprise cloud](../../../enterprise-guide/enterprise-cloud-guide/) or [Enterprise on-premises](../../../enterprise-guide/enterprise-on-premises-guide/). An upgrade from the free Community edition is easily possible.
Please refer to [this guide](automatic-subjects) for a detailed description of automatically generated work packages subjects in OpenProject.
## Activate work package types for projects
Under *Administration -> Work packages -> Types* on the tab **Projects** you can select for which projects this work package type should be activated.
@@ -110,3 +118,5 @@ Under the **Generate PDF** tab of *Administration -> Work packages -> Types* yo
The template determines the design and attributes visible in the exported PDF of a work package using this type. The first template on the list is selected by default.
![Generate PDF tab under work package types settings in OpenProject administration](openproject_system_guide_work_package_types_pdf_tab.png)
@@ -1,46 +1,76 @@
# Configuring automatic subjects
---
sidebar_navigation:
title: Automatic subjects
priority: 900
description: Configure automatic work package subjects in OpenProject.
keywords: work package subject, automatic subject, subject pattern
---
This guide explains how administrators configure **automatic subject patterns** for work packages in OpenProject. Subject patterns combine static text with dynamic attributes - such as dates, author names, or custom fields - to automatically generate consistent and informative work package titles.
# Configure automatic work package subjects (Enterprise add-on)
Automatic subject patterns help teams quickly identify tasks, reduce manual errors, and standardize naming conventions across your projects.
> [!NOTE]
> Configuring automatically generated work package subjects is an Enterprise add-on and can only be used with [Enterprise cloud](../../../../enterprise-guide/enterprise-cloud-guide/) or [Enterprise on-premises](../../../../enterprise-guide/enterprise-on-premises-guide/). An upgrade from the free Community edition is easily possible.
This guide explains how administrators can configure **automatic subject patterns** for work packages in OpenProject. Please also refer to the [user guide on automatic work package subjects](../../../../user-guide/work-packages/automatic-subjects/) for more details on automatic subjects within projects.
Subject patterns combine static text with dynamic attributes - such as dates, author names, or custom fields - to automatically generate consistent and informative work package subjects.
## 1. How subject patterns work
Automatic subject patterns help teams quickly identify tasks, reduce manual errors, and standardize naming conventions across your projects. Specific patterns can be defined for different work package types.
## How subject patterns work
A subject pattern includes a combination of:
- **Static text** (e.g., `Invoice`, `Vacation Request`)
> [!TIP]
>
> Use the company-approved language for static text, as it will not be translated into language users can specify for their personal accounts.
- **Dynamic attribute placeholders** (e.g., `[Author]`, `[Start date]`, `[Custom Field: Invoice ID]`)
> [!TIP]
>
> Dynamic attribute placeholders will be shown in the default language defined globally for all users in your organization (under Administration -> Users and permissions -> User settings). Users can still change language settings for their personal accounts, but this will have no bearing on the automatic work package subjects.
When users create or edit work packages, OpenProject automatically replaces these placeholders with real attribute values, generating clear subjects.
![Example of automatic work package subject configuration in OpenProject administration](openproject_system_guide_work_package_automatic_subject_configuration_settings.png)
## Add, edit and delete attributes
## 2. Adding, changing, and deleting attributes
Administrators configure subject patterns using a simple editor in the administration settings:
Administrators configure subject patterns using a simple editor in the admin settings:
### How to add attributes
### 2.1 Adding attributes
1. Navigate to *Administration → Work Packages → Types*, choose a type, then open **Subject configuration**.
1. Navigate to **Administration → Work Package Types**, choose a type, then open **Subject configuration**.
2. Type `/` in the input field to open attribute search.
3. Search for and select an attribute from the dropdown. The chosen attribute appears as a placeholder (e.g., `[Start date]`).
### 2.2 Changing attributes
> [!TIP]
>
> Some attributes can be selected not only for the work package in question, but also for it's parent work package.
- Click into an existing attribute placeholder to edit it. This triggers the attribute search again.
- Type and select a different attribute from the dropdown. The placeholder updates automatically.
4. Don't forget to *Save* your changes.
### 2.3 Deleting attributes
![Automatic work package subject configuration in OpenProject administration](openproject-automatic-subjects.gif)
- Delete an attribute placeholder just like regular text (e.g., using backspace).
### How to edit attributes
- Click into an existing attribute placeholder to edit it. This will trigger the attribute search again.
- Type and select different attributes from the dropdown list. The placeholder will update automatically.
### How to delete attributes
- Delete an attribute placeholder same as you would a regular text (e.g., using backspace).
## 3. Supported attributes and limitations
## Supported attributes and limitations
### 3.1 Work package attributes
### Work package attributes
Subject patterns can include placeholders referencing the following work package attributes:
@@ -67,8 +97,7 @@ Subject patterns can include placeholders referencing the following work package
> [!NOTE]
> Ensure selected attributes are activated and available in your project and work package types to avoid showing “N/A” in subjects.
### 3.2 Supported project attribute
### Project attributes
| Attribute Name | Data Type | Example |
| - | -- | -- |
@@ -82,28 +111,23 @@ Subject patterns can include placeholders referencing the following work package
**Unsupported project attributes**: Long text and Link custom fields are excluded to keep subjects concise.
## 4. updating automatic subjects
## Update automatic subjects
Automatic subjects update whenever an attribute referenced in the **current work package** changes and the work package is saved.
> [!IMPORTANT]
> Attributes referencing parent work packages or project attributes won't trigger immediate updates. Changes in parent or project attributes appear only when the child work package itself is updated and saved again.
## FAQs
### Why "N/A" appears in subjects
## 5. Why "N/A" appears in subjects
"N/A" indicates an unavailable attribute referenced in the subject pattern. Typical causes:
"N/A" indicates an unavailable attribute referenced in the subject pattern. Typical causes include:
- The attribute isn't activated in the current project.
- The attribute was removed from form configuration after creating the pattern.
- A parent attribute is referenced, but the parent doesn't contain the attribute.
## 5. Why [Attribute Name] appears in subjects
### Why [Attribute Name] appears in subjects
[Attribute Name] indicates an empty attribute referenced in the subject pattern.
@@ -112,14 +136,18 @@ Automatic subjects update whenever an attribute referenced in the **current work
- A project attribute is referenced, but hasn't been filled.
## 6. Tips for effective patterns
## Tips for effective patterns
Good subject patterns should be:
- **Concise**: Keep subjects short and readable.
- **Relevant**: Include only essential attributes needed for quick identification.
- **Descriptive**: Use clear static text (e.g., `Invoice`, `Bug Report`) to define the work package type.
- **Language choice**: Use the company-approved language for
Check our [Example Subject Patterns](https://www.openproject.org/blog/automatically-generated-work-package-subjects/) for inspiration.
> [!TIP]
>
>
@@ -11,7 +11,24 @@ Navigate to *Administration* -> *Time and costs*. Here you can configure costs i
## Default time and cost settings
Navigate to *Administration* -> *Time and costs* -> *Defaults* to define settings for costs in OpenProject.
To define default settings for logging time and costs navigate to *Administration* -> *Time and costs* -> *Defaults* and select *Time* or *Costs* tab respectively.
### Define default time settings (Enterprise add-on)
> [!NOTE]
> Enforcing exact time entries for time logging is an Enterprise add-on and can only be used with [Enterprise cloud](https://www.openproject.org/docs/enterprise-guide/enterprise-cloud-guide) or [Enterprise on-premises](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide). An upgrade from the free Community edition is easily possible.
Under the *Time* tab you can define which fields are required to be fill out when logging time across all projects.
- **Allow exact times tracking**: enables entering start and finish times when logging time. If disabled, only the amount of time spent can be logged, but not the start or end times.
If this option is activated, calendar mode is shown by default under My time tracking page. If not, list view will be shown by default.
- **Require exact times**: makes entering start and finish times mandatory when logging time.
![Default settings for time logging in OpenProject administration](openproject_system_admin_guide_time_time_defaults.png)
### Define default cost settings
1. Configure the **currency used in the system, e.g. EUR**.
2. **Specify the format of the currency**, if the number should be before or after the currency, e.g. 10 EUR, or $ 10.
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+2 -1
View File
@@ -42,8 +42,9 @@ Please choose the module or feature you want to learn more about.
| [Gantt chart](gantt-chart) | How to create and manage a project plan in a Gantt chart. |
| [GitHub](../system-admin-guide/integrations/github-integration/) | How to manage the GitHub integration. |
| [GitLab](../system-admin-guide/integrations/gitlab-integration/) | How to manage the GitLab integration. |
| [Meetings](meetings) | How to manage meetings to create and share meeting agenda and meeting minutes. |
| [Meetings](meetings) | How to manage meetings to create and share meeting agenda and meeting outcomes. |
| [Members](members) | How to manage Members in a project. |
| [My time tracking](my-time-tracking) | How to manage personal time entries in list and calendar views. |
| [News](news) | How to create and manage News for your projects. |
| [Nextcloud integration](./file-management/nextcloud-integration) | How to link and use Nextcloud files and folders in OpenProject. |
| [OneDrive/SharePoint integration](./file-management/one-drive-integration) | How to link and use SharePoint files and folders in OpenProject. |
+113
View File
@@ -0,0 +1,113 @@
---
sidebar_navigation:
title: My time tracking
priority: 950
description: Get an overview of time logs in a calendar or list view. Easily log time directly from My time tracking page.
keywords: time tracking, log time, time spent, calendar, time spent calendar, time logs
---
# My time tracking
## Overview
The *My time tracking* module offers a clear overview of your personal time entries. You can quickly log time directly from this page. To access it, select **My time tracking** from the left-hand menu.
![My tracking page overview in OpenProject](openproject_user_guide_my_time_tracking_module_overview.png)
### My time tracking page filters
1. On the *My time tracking* page, youll find the following interface elements:
1. **Zen mode** button — toggles a distraction-free view.
2. **Tab selector** — switch between *Calendar* and *List* views.
3. **Zoom level dropdown menu** — choose the time scale for the view. Following options are available:
- Day
- Work week
- Week
- Month
4. **Displayed date range** — shows the currently visible timeframe.
5. **Navigation arrows** — move to the previous or next time period.
6. **Today** button — jump directly to the current day.
7. **+ Log time** button — add a new time entry.
![My time tracking module filters explained](openproject_user_guide_my_time_tracking_module_filters_explained.png)
### Calendar view
The *Calendar* view opens by default if start and finish times for time entries have been enabled in [System Administration](../../system-admin-guide/time-and-costs). You can adjust the zoom level using the dropdown menu, with options for **Day**, **Work week**, **Week**, or **Month**.
Existing time entries appear on the corresponding days they were logged. Entry colors reflect the type of work package associated with the logged time.
At the top section of each day in the calendar, there is a dedicated area that allows you to log time without specifying a start or finish time. This is useful for quick entries or for logging effort that isn't tied to a specific time range.
You can log time by selecting a time range anywhere on the calendar or by using the **+ Log time** button.
You can drag and drop time entries to reposition them within the same day or move them to a different day. To adjust the duration of an entry, drag the top or bottom edge of the time entry up or down.
![Example of logging time in OpenProject My time tracking module](openproject-my-time-tracking-page1.gif)
To edit a time entry, click it in the calendar, make your changes, and save. You can also delete it from the same menu.
At the bottom of each day a sum of hours per day is displayed. If week or month is selected, a respective total is also shown in the bottom right corner.
![Sums of hours displayed at the bottom of the Calendar tab under My time tracking module in OpenProject](openproject_user_guide_my_time_tracking_module_calendar_tab_total_sums.png)
### List view
The *List* view opens by default if start and finish times for time entries are **disabled** in [System Administration](../../system-admin-guide/time-and-costs). Just like in the *Calendar* view, you can select the zoom level using the dropdown menu — options include **Day**, **Work week**, **Week**, or **Month**.
In this view, time entries are grouped by day. Each day displays the total number of entries and their combined duration on the right side of the header line.
- When the **Day** zoom is selected, the view is expanded by default.
- When **Week** or **Month** zoom is selected, past days or weeks are collapsed by default. However, the current day (in Week view) or the current week (in Month view) is expanded, along with all future dates.
> [!TIP]
>
> If monthly level is chosen in the list view mode, time entries are aggregated by week and not by day. This is especially useful to get an overview of your tracked hours for each week.
Expanded days display time entries in a table format with the following columns:
- **Time**
- **Hours**
- **Subject** (with a clickable link to the work package)
- **Project**
- **Activity**
- **Comment**
- **+** (last column, used to log time for that specific day)
To log time in *List* view, you can either:
- Click the **+ Log Time** button to add a time entry for any date outside the currently displayed range.
- Use the **+** icon in the table to log time directly for a specific day.
![List view under My time tracking module in OpenProject](openproject_user_guide_my_time_tracking_module_list_view_overview.png)
To edit a time entry in the *List* view, click the **More** (three dots) icon at the end of the entrys row in the table, then select the **Edit** (pencil) icon.
![Icon to edit a time entry under List tab of the My time tracking module in OpenProject](openproject_user_guide_my_time_tracking_module_list_view_edit_icon.png)
## Log time in My time tracking module
To log time on the *My time tracking* page, click the **+ Log time** button. A modal window will appear with the following fields:
- **Date** Select the day for the time entry.
- **Start time** and **Finish time** When both are entered, the **Hours** field is calculated automatically.
> [!TIP]
> These fields are only visible if the **Allow exact times tracking** option is enabled by an administrator.
> If the **Require exact times** option is also enabled, these fields become mandatory in order to save the time entry.
- **Hours** Enter the number of hours you want to log for a specific work package.
- **Work package** Type to search for a work package or select from the list of recently used ones.
- **Activity** Choose an activity that is active for the project the selected work package belongs to.
- **Comment** Add any relevant notes or details for the time entry.
Don't forget to click the **Log** button to save your time entry.
![Modal to log time from My time tracking module in OpenProject](openproject_user_guide_my_time_tracking_module_logging_modal.png)

Some files were not shown because too many files have changed in this diff Show More