Merge pull request #18635 from opf/merge-release/15.5-20250414123053

Merge release/15.5 into dev
This commit is contained in:
Jens Ulferts
2025-04-14 15:58:38 +02:00
committed by GitHub
250 changed files with 1796 additions and 874 deletions
+2
View File
@@ -25,6 +25,7 @@ targets:
env:
- NODE_ENV=production
- NPM_CONFIG_PRODUCTION=false
- SECRET_KEY_BASE=1
dependencies:
- epel-release
- ImageMagick
@@ -52,3 +53,4 @@ buildpack: https://github.com/opf/heroku-buildpack-multi.git#master
env:
- NODE_ENV=production
- NPM_CONFIG_PRODUCTION=false
- SECRET_KEY_BASE=1
@@ -57,7 +57,7 @@ module WorkPackageRelationsTab
def soonest_start
return @soonest_start if defined?(@soonest_start)
@soonest_start = relation.successor_soonest_start(gap: 0.days)
@soonest_start = relation.successor_soonest_start
end
def inspect
@@ -105,7 +105,6 @@
ignore_non_working_days: work_package.ignore_non_working_days,
schedule_manually:,
is_schedulable: !disabled?,
minimal_scheduling_date:,
is_milestone: milestone?,
date_mode:,
start_date_field_id: "work_package_start_date",
@@ -95,10 +95,6 @@ module WorkPackages
def disabled_checkbox?
!schedule_manually && work_package.children.any?
end
def minimal_scheduling_date
schedule_manually ? nil : work_package.start_date
end
end
end
end
@@ -236,6 +236,8 @@ class WorkPackages::DatePickerController < ApplicationController
.slice(*allowed_touched_params)
.merge(schedule_manually:, date_mode:, triggering_field: params[:triggering_field])
.permit!
else
{}
end
end
+3 -4
View File
@@ -173,11 +173,10 @@ class Relation < ApplicationRecord
successor.start_date || successor.due_date
end
def successor_soonest_start(gap: 1.day)
def successor_soonest_start
if follows? && predecessor_date
days = WorkPackages::Shared::Days.for(from)
relation_start_date = predecessor_date + gap
days.soonest_working_day(relation_start_date, lag:)
days = WorkPackages::Shared::WorkingDays.new
days.add_lag(predecessor_date, lag)
end
end
+41 -22
View File
@@ -1,3 +1,5 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
@@ -33,32 +35,49 @@ module WorkPackage::SchedulingRules
!schedule_manually?
end
# TODO: move into work package contract (possibly a module included into the contract)
# Calculates the minimum date that
# will not violate the precedes relations (max(finish date, start date) + relation lag)
# of this work package or its ancestors
# e.g.
# AP(due_date: 2017/07/25)-precedes(lag: 0)-A
# |
# parent
# |
# BP(due_date: 2017/07/22)-precedes(lag: 2)-B
# |
# parent
# |
# CP(due_date: 2017/07/25)-precedes(lag: 2)-C
# Calculates the minimum date that will not violate the precedes relations
# (max(finish date, start date) + relation lag) of this work package or its
# ancestors
#
# Then soonest_start for:
# C is 2017/07/28
# B is 2017/07/26
# A is 2017/07/26
def soonest_start
# eager load `to` and `from` to avoid n+1 on successor_soonest_start
@soonest_start ||=
# Lag is the number of non working days between 2 work packages of a
# follows/precedes relation.
#
# For instance:
# AP -------------- precedes ----- A
# (due_date: 2017/07/25) (lag: 0) |
# parent
# |
# BP -------------- precedes ----- B
# (due_date: 2017/07/22) (lag: 2) |
# parent
# |
# CP -------------- precedes ----- C
# (due_date: 2017/07/25) (lag: 2)
#
# Then successor_soonest_start for each relation is:
# A is 2017/07/26 (AP due date: 25, no lag => 26)
# B is 2017/07/27 (BP due date: 22, 23 and 24 are non-working days, 25 and 26 is the 2 days lag => 27)
# C is 2017/07/28 (CP due date: 25, 26 and 27 is the 2 days lag => 28)
#
# The soonest start for this work package is the maximum of these values: 2017/07/28.
#
# @param working_days_from [WorkPackage, nil] the work package for which to
# find the next working day after the soonest start given by the scheduling
# relations. If nil, the work package itself is used. Useful for a work
# package calculating the soonest start given by its parent as it may have a
# different `ignore_working_days` value than its parent.
def soonest_start(working_days_from: nil)
@scheduling_relations_soonest_start ||=
Relation
.used_for_scheduling_of(self)
.includes(:to, :from)
.includes(:to) # eager load `to` to avoid n+1 in #successor_soonest_start
.filter_map(&:successor_soonest_start)
.max
# The final result should not be cached as it depends on
# ignore_non_working_days value, which can change between consecutive calls
# to #soonest_start
days = WorkPackages::Shared::Days.for(working_days_from || self)
days.soonest_working_day(@scheduling_relations_soonest_start)
end
end
@@ -56,6 +56,7 @@ class WorkPackages::ScheduleDependency::Dependency
follows_relations
.filter_map(&:successor_soonest_start)
.max
.then { days.soonest_working_day(it) }
end
def start_date
@@ -91,4 +92,8 @@ class WorkPackages::ScheduleDependency::Dependency
def alive_descendants_dates
alive_descendants.filter_map(&:due_date) + alive_descendants.filter_map(&:start_date)
end
def days
WorkPackages::Shared::Days.for(work_package)
end
end
@@ -293,6 +293,7 @@ class WorkPackages::SetAttributesService < BaseServices::SetAttributes
end
def update_dates_from_self
# this method is only called by #update_dates when there are no children
min_start = new_start_date
return unless min_start
@@ -388,6 +389,7 @@ class WorkPackages::SetAttributesService < BaseServices::SetAttributes
end
def new_start_date
# this method is only called by #update_dates_from_self when there are no children
if work_package.schedule_manually?
# Weird rule from SetScheduleService: if the work package does not have a
# start date, it inherits it from the parent soonest start, regardless of
@@ -396,37 +398,38 @@ class WorkPackages::SetAttributesService < BaseServices::SetAttributes
days.soonest_working_day(new_start_date_from_parent)
else
min_start = new_start_date_from_parent || new_start_date_from_self
min_start = [new_start_date_from_parent, work_package.soonest_start].compact.max
days.soonest_working_day(min_start)
end
end
# Returns the soonest start date from the parent if the parent has changed.
# If the parent has changed, #soonest_start would be inaccurate.
def new_start_date_from_parent
return unless work_package.parent_id_changed? &&
work_package.parent
work_package.parent.soonest_start
end
def new_start_date_from_self
return unless work_package.schedule_manually_changed?
[min_child_date, work_package.soonest_start].compact.max
work_package.parent.soonest_start(working_days_from: work_package)
end
def new_due_date(min_start)
duration = children_duration || work_package.duration
return unless work_package.due_date || duration
# this method is only called by #update_dates_from_self when there are no children
if work_package.due_date_came_from_user?
work_package.due_date
elsif reuse_current_due_date?
# if due date is before start date, then start is used as due date.
[min_start, work_package.due_date].max
elsif work_package.duration
days.due_date(min_start, work_package.duration)
end
end
due_date =
if duration
days.due_date(min_start, duration)
else
work_package.due_date
end
def reuse_current_due_date?
return false if work_package.due_date.nil?
return true if work_package.ignore_non_working_days_came_from_user?
# if due date is before start date, then start is used as due date.
[min_start, due_date].max
# use due date only if duration cannot be used
work_package.duration.nil?
end
def work_package
@@ -43,6 +43,11 @@ module WorkPackages
WorkingDays.new.lag(predecessor_date, successor_date)
end
def add_lag(date, lag)
# lag is *always* excluding non-working days (at least for now)
WorkingDays.new.add_lag(date, lag)
end
def start_date(due_date, duration)
return nil unless due_date && duration
raise ArgumentError, "duration must be strictly positive" if duration.is_a?(Integer) && duration <= 0
@@ -57,9 +62,8 @@ module WorkPackages
start_date + duration - 1
end
def soonest_working_day(date, lag: nil)
lag ||= 0
date + lag.days if date
def soonest_working_day(date)
date
end
def working?(_date)
@@ -40,7 +40,7 @@ module WorkPackages
def duration(start_date, due_date)
return nil unless start_date && due_date
(start_date..due_date).count { working?(_1) }
(start_date..due_date).count { working?(it) }
end
# Returns the number of working days between a predecessor date and
@@ -51,6 +51,18 @@ module WorkPackages
duration(predecessor_date + 1.day, successor_date - 1.day)
end
def add_lag(date, lag)
return nil unless date
date_after_lag = date + 1.day
lag ||= 0
while lag > 0
lag -= 1 if working?(date_after_lag)
date_after_lag += 1
end
date_after_lag
end
def start_date(due_date, duration)
assert_strictly_positive_duration(duration)
return nil unless due_date && duration
@@ -75,16 +87,9 @@ module WorkPackages
due_date
end
def soonest_working_day(date, lag: nil)
def soonest_working_day(date)
return unless date
lag ||= 0
while lag > 0
lag -= 1 if working?(date)
date += 1
end
until working?(date)
date += 1
end
@@ -127,7 +132,7 @@ module WorkPackages
def assert_some_working_week_days_exist
return if @working_week_days_exist
if working_week_days.all? { |working| working == false }
if working_week_days.all?(false)
raise "cannot have all week days as non-working days"
end
+1 -1
View File
@@ -870,7 +870,7 @@ zh-CN:
page: "页"
row_count: "行数"
column_count: "列数"
widgets: "小部件"
widgets: "件"
journal:
notes: "备注"
cause_type: "Cause 类型"
@@ -47,7 +47,7 @@ The work package will the be displayed in the table view:
![create work package define project](create-work-package-define-project-6669224.png)
Another option to create a work package is to do it from the header menu. The [work package types](../../user-guide/projects/project-settings/work-package-types/#work-package-types) that are activated, will be shown and you can select the relevant work package type to be created.
Another option to create a work package is to do it from the header menu. The [work package types](../../user-guide/projects/project-settings/work-packages/#work-package-types) that are activated, will be shown and you can select the relevant work package type to be created.
![create-work-package-header](create-work-package-header.png)
+3 -3
View File
@@ -126,7 +126,7 @@ In OpenProject, a custom field is defined as an additional field which can be ad
**More information on custom fields in OpenProject**
- [Read how to enable custom fields in projects to use them in work packages](../user-guide/projects/project-settings/custom-fields/)
- [Read how to enable custom fields in projects to use them in work packages](../user-guide/projects/project-settings/work-packages/#work-package-custom-fields)
- [Read how to create custom fields as a system admin in OpenProject](../system-admin-guide/custom-fields/)
### Custom query
@@ -460,7 +460,7 @@ In OpenProject, a [work package](../user-guide/work-packages/#overview) is defin
### Work package categories
Work package categories are a functionality used to automatically assign a [member](#member) to a work package by specifying a category. [Read more about work package categories in OpenProject](../user-guide/projects/project-settings/work-package-categories/#manage-work-package-categories).
Work package categories are a functionality used to automatically assign a [member](#member) to a work package by specifying a category. [Read more about work package categories in OpenProject](../user-guide/projects/project-settings/work-packages/#work-package-categories).
### Work package ID
@@ -474,7 +474,7 @@ The work package table in OpenProject is defined as the overview of all work pac
### Work package types
Work package types are the different items a work package can represent. Each work package is associated to exactly one type. Examples for most used work package types are a Task, a Milestone, a [Phase](#phase) or a Bug. The work package types can be customized in the system administration. [Read more about work package types in OpenProject](../user-guide/projects/project-settings/work-package-types/#work-package-types).
Work package types are the different items a work package can represent. Each work package is associated to exactly one type. Examples for most used work package types are a Task, a Milestone, a [Phase](#phase) or a Bug. The work package types can be customized in the system administration. [Read more about work package types in OpenProject](../user-guide/projects/project-settings/work-packages/#work-package-types).
### Work package view
+1 -1
View File
@@ -124,7 +124,7 @@ In the activity tab, updates to long text custom fields will be displayed as in
![Example screenshot showing how changes on a custom field will now look like in the work package activity tab](Custom_field__long_text__changed.png)
Clicking on the "Details" link will take the user to the diff view, which is also used for work package descriptions and project status explanations. See our [user guide on custom fields](../../../user-guide/projects/project-settings/custom-fields/) for more information.
Clicking on the "Details" link will take the user to the diff view, which is also used for work package descriptions and project status explanations. See our [user guide on custom fields](../../../user-guide/projects/project-settings/work-packages/#work-package-custom-fields) for more information.
<!--more-->
+1 -1
View File
@@ -44,7 +44,7 @@ Additionally, users can include sub-projects when adding, which automatically se
![Screenshot showing the new administration page to add custom fields to multiple projects](open-project-14-6-custom-fields-new-highlighted.png)
Learn more about [custom fields and how to create them](../../../user-guide/projects/project-settings/custom-fields/) in our user guide.
Learn more about [custom fields and how to create them](../../../user-guide/projects/project-settings/work-packages/#work-package-custom-fields) in our user guide.
### Use relative work package attribute macros
@@ -132,7 +132,7 @@ You can [assign a custom field to a work package type](../manage-work-packages/w
### Add a custom field to one or multiple projects
You can activate the custom field for specific projects under the respective [project settings](../../user-guide/projects/project-settings/custom-fields/).
You can activate the custom field for specific projects under the respective [project settings](../../user-guide/projects/project-settings/work-packages/#work-package-custom-fields).
> [!TIP]
> This is not relevant if the setting **For all projects** has been configured for the custom field.
@@ -150,4 +150,4 @@ To **edit an existing custom field** select the appropriate tab and click on the
To **delete** a custom field, click on the delete icon next to the respective custom field in the list.
![Edit or delete a custom field in OpenProject administration](system-admin-edit-delete-custom-field.png)
![Edit or delete a custom field in OpenProject administration](system-admin-edit-delete-custom-field.png)
@@ -30,7 +30,7 @@ Click the green **+ Type** button to add a new work package type in the system,
4. You can enter a **default text for the work package description field**, which always be shown when creating new work package from this type. This way, you can easily create work package templates, e.g. for risk management or bug tracking which already contain certain required information in the description.
5. Choose whether the type should be a **milestone**, e.g. displayed as a milestone in the Gantt chart with the same start and finish date.
6. Choose whether the type should be displayed in the [roadmap](../../../user-guide/roadmap/) by default.
7. Select if the work package type should be **active in new projects by default**. This way work package types will not need to be [activated in the project settings](../../../user-guide/projects/project-settings/work-package-types/) but will be available for every project.
7. Select if the work package type should be **active in new projects by default**. This way work package types will not need to be [activated in the project settings](../../../user-guide/projects/project-settings/work-packages/#work-package-types) but will be available for every project.
8. Click the **Save** button to add the new type.
![Create a new work package type in OpenProject administration](openproject_system_guide_new_work_package_typ.png)
@@ -19,17 +19,29 @@ You can configure general system settings in OpenProject. Under System settings
5. **Cache formatted text** allows to save formatted text in cache, which will help load Wiki Pages faster.
6. **Enable feeds** enables RSS feeds on wiki pages, forums and news via RSS client.
6. **Allowed link protocols** allows protocols to be rendered as links in work package descriptions, long text fields and comments. Some examples are:
- vis://FE0E3D1D-9DC5-4931-BF6C-9E01216047A4/3/8326584
- dict://term lookup
- vscode://file/path/to/file
- figma://
- element://vector/webapp/#/room/!ID
- tel://number
- sms://number
- facetime://number
One protocol should be entered per line.
> [!NOTE]
> Protocols http, https, and mailto are always allowed.
7. **Enable feeds** enables RSS feeds on wiki pages, forums and news via RSS client.
7. Set **feed content limit**.
8. Set **feed content limit**.
8. **Work packages and projects export limit** defines the maximum items a structured export for work packages and projects can contain (i.e., lines of CSV, XLS etc.). Increasing this value allows you to export more items at once, but at the cost of higher RAM consumption. If you're experiencing errors exporting with a high value, try reducing this number first.
9. **Work packages and projects export limit** defines the maximum items a structured export for work packages and projects can contain (i.e., lines of CSV, XLS etc.). Increasing this value allows you to export more items at once, but at the cost of higher RAM consumption. If you're experiencing errors exporting with a high value, try reducing this number first.
9. **Max size of text files displayed inline** defines the maximum file size up to which different versions of a file are displayed next to each other when comparing (diff) two versions in a repository.
10. **Max size of text files displayed inline** defines the maximum file size up to which different versions of a file are displayed next to each other when comparing (diff) two versions in a repository.
10. **Max number of diff lines displayed** defines the maximum number of lines displayed when comparing (diff) two versions in a repository.
11. **Max number of diff lines displayed** defines the maximum number of lines displayed when comparing (diff) two versions in a repository.
11. **Display security badge** enables to display a badge with your installation status in the [Information administration panel](../../information), and on the [start page](../../../user-guide/home/). It is displayed to administrators only.
12. **Display security badge** enables to display a badge with your installation status in the [Information administration panel](../../information), and on the [start page](../../../user-guide/home/). It is displayed to administrators only.
> [!NOTE]
> If enabled, this will display a badge with your installation status in the [Information](https://qa.openproject-edge.com/admin/info) administration panel, and on the home page. It is displayed to administrators only.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 801 KiB

+2 -1
View File
@@ -18,7 +18,8 @@ Meetings in OpenProject allow you to manage and document your project meetings,
> [!IMPORTANT]
> With OpenProject 13.1 we introduced dynamic meetings alongside [classic meetings](classic-meetings).
> With OpenProject 15.3 dynamic meetings are replaced by [one-time meetings](one-time-meetings) and [recurring meetings](recurring-meetings) to further improve meeting management.
> Please keep in mind that the ability to create classic meetings will eventually be removed from OpenProject.
> Please keep in mind that the ability to create classic meetings will be removed from OpenProject with OpenProject 16.0.
| Topic | Content |
@@ -19,7 +19,11 @@ Meetings in OpenProject allow you to manage and document your project meetings,
> With OpenProject 15.3 dynamic meetings are replaced by [one-time meetings](../one-time-meetings) and [recurring meetings](../recurring-meetings) to further improve meeting management.
> [!IMPORTANT]
> Please keep in mind that the ability to create classic meetings will eventually be removed from OpenProject.At the moment, the Meetings module lets you create classic or dynamic meetings but please keep in mind that the ability to create classic meetings will eventually be removed from OpenProject.
> Please keep in mind that the ability to create classic meetings will be removed with OpenProject 16.0. Don't worry, no data will be lost:
> - All existing classic meetings will be converted into a one-time dynamic meetings.
> - Agenda text will be converted to agenda items.
> - Meeting minutes will be converted into meeting outcome.
> - Author informattion will be saved in the respective presenter fields.
| Topic | Content |
|---------------------------------------------------------------------------|---------------------------------------------|
@@ -16,7 +16,12 @@ With OpenProject 15.3.0, dynamic meetings can either be [one-time meetings](../o
## How long will the classic meetings be available?
[Classic meetings](../classic-meetings) will be deprecated with one of the future releases after 15.3. We will communicate this in advance to ensure a smooth transition for all our users.
[Classic meetings](../classic-meetings) will be deprecated with 16.0 release.
- All existing classic meetings will be converted into a one-time dynamic meetings.
- Agenda text will be converted to agenda items.
- Meeting minutes will be converted into meeting outcome.
- Author informattion will be saved in the respective presenter fields.
## Can I add a meeting to a calendar?
@@ -255,17 +255,17 @@ Clicking on this button will show following status options:
### Open meeting status
When a meeting is *Open*, you can prepare the agenda by adding or removing agenda items. Once the agenda is ready, the meeting can be marked as *In Progress*.
When a meeting is *Open*, you can prepare the agenda by adding or removing agenda items. Once the agenda is ready, the meeting can be started.
> [!TIP]
>
> In an open meeting state in addition to the status menu, you will directly see the **Mark as in progress** link on the right.
> In an open meeting state in addition to the status menu, you will directly see the **Start a meeting** link on the right.
![Mark a meeting as in progress in OpenProject](openproject_userguide_meetings_meeting_mark_in_progress.png)
![Link to start a meeting in OpenProject](openproject_userguide_meetings_meeting_mark_in_progress.png)
### Mark meeting in progress
Once the agenda is ready, the meeting can be marked as *In progress*. To mark a meeting in progress you can use the dropdown status menu on the right side or under the meeting name.
Once the agenda is ready, the meeting can be started. To mark a meeting in progress you can use the dropdown status menu and select *In progress* or click the *Start meeting* link on the right side.
Setting a meeting *In progress* allows adding [**Agenda item outcomes**](#add-agenda-item-outcomes) by using the **+ Outcome** buttons.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 76 KiB

@@ -101,7 +101,7 @@ Within the same menu you also have the following options:
### Edit a recurring meeting occurrence
To edit a single meeting within recurring meeting series you have to open it first by clicking the **Open** button next to the meeting. It will then be displayed under *Open* section on the recurring meeting index page, where you can click the meeting date and time.
To edit a single meeting within recurring meeting series you have to open it first by clicking the **Open** button next to the meeting. It will then be displayed under *Agenda opened* section on the recurring meeting index page, where you can click the meeting date and time.
![Select a meeting occurrence on a recurring meetings series index page](openproject_userguide_meetings_edit_meeting_occurence_link.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 108 KiB

@@ -7,13 +7,12 @@ keywords: project settings
---
# Project settings
Customize your project in the project settings.
In OpenProject you can customize your project settings. To do this, open a project via the *Select a project* drop-down menu and navigate to *Project settings* in the project menu.
Open a project via the Select a project drop-down menu and navigate to -> *Project settings* in the project menu.
![Project settings module selected in left-hand project menu in OpenProject](openproject_user_guide_project_settings_module.png)
![User-guide-open-project-settings](User-guide-open-project-settings.png)
> **Note**: You have to be a project administrator in order to see and access the project settings.
> [!NOTE]
> You need to be a project administrator in order to see and access the project settings.
## Overview
@@ -22,9 +21,9 @@ Open a project via the Select a project drop-down menu and navigate to -> *Proje
| [Project information](project-information) | Define project name, subproject, description, project status, and much more. |
| [Project attributes](project-attributes) | View and edit project attributes in a project. |
| [Modules](modules) | Activate or deactivate modules in a project. |
| [Work package types](work-package-types) | Activate or deactivate work package types in a project. |
| [Work package categories](work-package-categories) | Create and manage work package categories. |
| [Custom fields](custom-fields) | Activate or deactivate custom fields for a project. |
| [Work package types](work-packages) | Activate or deactivate work package types in a project. |
| [Work package categories](work-packages) | Create and manage work package categories. |
| [Work package custom fields](work-packages) | Activate or deactivate custom fields for work packages in a project. |
| [Versions](versions) | Create and manage versions in a project. |
| [Repository](repository) | Activate and manage a SVN or GIT repository for a project. |
| [Activities (time tracking)](activities-time-tracking) | Activate or deactivate Activities (for time tracking) in a project. |
Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

@@ -1,7 +1,7 @@
---
sidebar_navigation:
title: Time tracking activities
priority: 300
priority: 400
description: Manage activities for time tracking.
keywords: activities for time tracking, log time settings
---
@@ -13,8 +13,8 @@ You can [configure available activities](../../../../system-admin-guide/time-and
**Time tracking** is defined as a module which allows users to log time on work packages. Once the time tracking module is activated, time can be logged via the action menu of a work package.
</div>
Navigate to *Project settings -> Time tracking activities*.
To enable time tracking activities for a specific project, navigate to *Project settings -> Time tracking activities*.
Select the activities which you want to activate for time tracking in your project. Press the **Save** button to apply your changes.
![Activate time tracking activities under project settings in OpenProject](openproject_user_guide_project_settings_time_tracking_activities.png)
![Activate time tracking activities under project settings in OpenProject](openproject_user_guide_project_settings_time_tracking_activities.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 63 KiB

@@ -1,22 +1,23 @@
---
sidebar_navigation:
title: Backlogs settings
priority: 200
priority: 300
description: Backlogs settings.
keywords: backlogs settings
---
# Backlogs settings
Configure your backlogs settings for a project.
In OpenProject, you can configure your backlogs settings specific to each project.
## Set the definition of done
You can set the definition of done for your backlogs module. This defines when a work packages should be treated as being done and calculated to the burndown (or burnup chart).
You can define what "done" means for the Backlogs module. This determines when a work package should be considered complete and included in the burndown (or burnup) chart.
Choose the status which should be treated as done.
Choose the status which should be treated as "done".
Press the blue **Save** button to apply your changes.
Press the **Save** button to apply your changes.
![manage backlogs settings](image-20200211134305495.png)
The **Rebuild positions** button recalculates the position of work packages in the product backlog.
![Manage backlogs settings under project settings in OpenProject](openproject_user_guide_project_settings_backlogs.png)
The **Rebuild positions button** for the backlogs re-calculates the position of a work package in the product backlog.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

@@ -1,35 +0,0 @@
---
sidebar_navigation:
title: Enable work package custom fields
priority: 700
description: Manage custom fields in a project.
keywords: custom fields, activate work package custom field
---
# Enable custom fields in projects
Custom fields for work packages can be activated or deactivated under project settings.
<div class="glossary">
**Custom fields** are defined as additional attribute fields which can be added to existing attribute fields. The different sections that can use custom fields are work packages, spent time, projects, versions, users, groups, activities (time tracking), and work package priorities.
</div>
> [!NOTE]
> The instructions in this section *only* apply to custom fields for work packages.
Before you can enable a custom field, it needs to be created in the [system administration](../../../../system-admin-guide/custom-fields). Afterwards, open the respective project and go to *Project settings* -> *Custom fields*.
1. Manage the custom field by clicking on the name.
2. **Select if the custom fields shall be enabled in the project**. If enabled globally in the custom fields settings in the system administration, it will automatically be displayed in all projects.
3. View the work package types for which the custom field is already enabled. Only for the displayed types the custom field will be active. You can add the custom field to additional work package types by [adding them to the respective work package form](../../../../system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on).
4. **Create a new custom field** by clicking the **+ Custom field** button.
> [!TIP]
> Keep in mind that you have to be a system administrator in order to create new custom fields.
5. Press the **Save** button to confirm your changes.
![Custom fields settings in OpenProject project settings](openproject_user_guide_projects_project_settings_custom_fields.png)
@@ -1,13 +1,14 @@
---
sidebar_navigation:
title: File storages
priority: 110
priority: 100
description: Manage the storages connected to the project and add a project folder.
keywords: file storages, project folder, storages
---
# File storages
> **Info**: Before a storage service can be added to a project, an administrator must first set up [Nextcloud integration](../../../../system-admin-guide/integrations/nextcloud/) or [OneDrive/SharePoint integration](../../../../system-admin-guide/integrations/one-drive/) with OpenProject.
> [!NOTE]
> Before a storage service can be added to a project, an administrator must first set up [Nextcloud integration](../../../../system-admin-guide/integrations/nextcloud/) or [OneDrive/SharePoint integration](../../../../system-admin-guide/integrations/one-drive/) with OpenProject.
| Topic | Description |
| ------------------------------------------------------------ | :------------------------------------------------ |
@@ -27,6 +28,7 @@ To activate or de-activate the attachments being shown under **Files** tab in wo
![Show attachments in the work packages files tab in OpenProject](project-settings-attachments.png)
> [!NOTE]
> Please note that you need a *Manage files in project* permission to be able to activate or deactivate this work package attachment option.
## Add a new storage to a project
@@ -43,7 +45,8 @@ In the page that follows, you will be able to select one of the file storages se
## Add a OneDrive/SharePoint storage to a project (Enterprise add-on)
> **Note**: OneDrive/SharePoint integration 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 easy and helps support OpenProject.
> [!NOTE]
> OneDrive/SharePoint integration 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 easy and helps support OpenProject.
If you have selected the OneDrive/SharePoint option in the previous step of storage selection, you will now see the **Project folder** options.
@@ -59,7 +62,8 @@ Click on **Add** to add your new OneDrive/SharePoint file storage to this projec
The SharePoint file storage is now available to all work packages in this project.
> **Note:** Please refer to the [OneDrive/SharePoint user guide](../../../file-management/one-drive-integration) for further instructions on using the integration at a user level.
> [!TIP]
> Please refer to the [OneDrive/SharePoint user guide](../../../file-management/one-drive-integration) for further instructions on using the integration at a user level.
## Add a Nextcloud storage to a project
@@ -79,7 +83,8 @@ Click on **Add** to add your new Nextcloud file storage to this project.
The Nextcloud file storage is now available to all work packages in this project.
> **Note:** For information on how to use the file storage (link Nextcloud user accounts at a user level, link files to a work package, view and download linked files, unlink files), please read our [Nextcloud integration user guide](../../../file-management/nextcloud-integration/).
> [!TIP]
> For information on how to use the file storage (link Nextcloud user accounts at a user level, link files to a work package, view and download linked files, unlink files), please read our [Nextcloud integration user guide](../../../file-management/nextcloud-integration/).
If you do not yet have an access token for the file storage in a project, you will be prompted to log into your file storage. You can choose to login immediately to establish the connection or to do it later.
@@ -105,7 +110,8 @@ For the moment, you will only be able to edit which project folder type is used
![Edit the project folder type](storage-edit.png)
> **Note:** If the previously selected project folder type was **New folder with automatically managed permissions**, changing the project folder type will not delete the already created project folder. Changing it back will try to reconnect the previously created and used project folder.
> [!TIP]
> If the previously selected project folder type was **New folder with automatically managed permissions**, changing the project folder type will not delete the already created project folder. Changing it back will try to reconnect the previously created and used project folder.
### Delete an existing file storage
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

@@ -1,16 +1,16 @@
---
sidebar_navigation:
title: Modules
priority: 900
priority: 700
description: Enable modules in a project.
keywords: modules, select module in project, add
---
# Enable modules in a project
To **activate or deactivate modules** in a project select a project from the select a project drop-down menu in the left header navigation and choose -> *Project settings* -> *Modules*.
To **activate or deactivate modules** in a project, select a project from the **Select a project** drop-down menu in the left header navigation, then go to *Project settings -> Modules*.
Setting a check mark next to a project module will activate the module in the project and a new menu item will appear in the project menu on the left.
Setting a checkmark next to a module will activate it for the project, and a new menu item will appear in the project menu on the left.
![Overview of Modules](Modules-overview.png)
![Overview of modules under project settings in OpenProject](openproject_user_guide_project_settings_modules.png)
Visit our [user guide](../../../#overview-of-modules-in-openproject) overview to get an explanation of the different modules in OpenProject.
Visit our [user guide](../../../#overview-of-modules-in-openproject) for an overview of the different modules available in OpenProject.
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

@@ -1,7 +1,7 @@
---
sidebar_navigation:
title: Project attributes
priority: 985
priority: 800
description: Enabling and disabling project attributes for individual projects in OpenProject
keywords: project attributes, project settings, enable, disable, project admin
---
Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 92 KiB

@@ -7,26 +7,34 @@ keywords: project information
---
# Manage project information
Manage your project information in the Project settings: select a project and open the -> *Project Settings* -> *Information*.
## Edit project information
**To view all details about managing projects**, view our [projects section](../../).
To edit your project information in OpenProject select a project from the **Select a project** drop-down menu. Then navigate to *Project settings → Information* in the project menu on the left.
You will have the following options in the project settings.
You can configure the following settings:
1. Set a **name for your project**. The name will be displayed in the project list.
2. Set **custom fields**, e.g. Responsible Department, Risk assessment, Project ID, Project accountable, etc. (if activated in the -> *Administration* -> *Custom fields* -> within the custom fields for projects). Find out more about project custom fields [here](../../../../system-admin-guide/custom-fields/custom-fields-projects/).
3. Select the **parent project**.
4. Add a project **description**.
5. Display or edit the **project identifier**. This is the part of the project name shown in the URL, e.g. /demo-project.
6. This check-box sets a project to **public**. This ways users will be able to access the project without being a member of it.
7. Set a **project status**. The project status can be displayed in the [project overview](../../../project-overview). If you want to set additional or different status options you can create and use a [project custom field](../../../../system-admin-guide/custom-fields/custom-fields-projects).
8. Add a **project status description**. The status description will be shown on the [project overview](../../../project-overview) page.
9. Display the required disk storage information.
10. **Save** your changes.
11. **Create a new subproject** for this project with the green **+ Subproject** button.
12. **Copy the project**. When [copying a project](../../#copy-a-project) you can choose which modules you'd like to copy.
13. **Archive a project**. This way the [archived project](../../#archive-a-project) will not appear in the project selection anymore and cannot be accessed by team members. You can view archived projects in the view all project lists.
14. **Set as template** or **Remove from templates**. By [setting a project as template](../../project-templates/#create-a-project-template) it can be copied multiple times to create similar projects.
15. **Delete a project**. By [deleting a project](../../#delete-a-project) the whole project with all included information will be removed.
2. Add a project **description**.
3. This check-box sets a project to **public**. This ways users will be able to access the project without being a member of it.
4. Set a **project status**. The project status can be displayed in the [project overview](../../../project-overview). If you want to set additional or different status options you can create and use a [project custom field](../../../../system-admin-guide/custom-fields/custom-fields-projects).
5. Add a **project status description**. The status description will be shown on the [project overview](../../../project-overview) page.
6. Select the **parent project**.
7. Edit **project attributes**.
8. **Save** or **cancel** your changes.
![project-information](image-20201010152113743.png)
![project-information](openproject_user_guide_project_settings_information.png)
Further, in the top right corner you can [add a subproject](../../#create-a-subproject) and edit the **project identifier**. This is the part of the project name shown in the URL, e.g. /demo-project.
![Add a subproject or change a project identifier under project settings in OpenProject](openproject_user_guide_project_settings_information_subproject_and_identifier.png)
If you click the **three dot** icon, you will see a dropdown menu with the following options:
- [Copy a project](../../#copy-a-project)
- [Archive a project](../../#archive-a-project)
- [Set a project as a tempate](../../project-templates)
- [Delete a project](../../#delete-a-project)
![Copy, archive or delete a project in project settings in OpenProject](openproject_user_guide_project_settings_information_more_icon_menu.png)
**To find out more about managing projects in OpenProject**, view the [projects section](../../).
Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

@@ -12,13 +12,14 @@ keywords: repository
You can integrate a SVN or GIT repository in a project in OpenProject and access it directly in the project via the module Repositories.
</div>
> **Note**: Repositories can only be integrated for Community edition and Enterprise on-premises edition versions.
> [!IMPORTANT]
> Repositories can only be integrated for Community edition and Enterprise on-premises edition versions.
Navigate to -> *Project settings* -> *Repository*.
Navigate to *Project settings -> Repository*.
1. Choose a **source control management system** (SVN or GIT).
2. Enter the URL of your existing repository.
3. Enter username and password for your repository.
4. Press the blue **Create** button.
4. Press the **Create** button.
![User-guide-project-settings-repository](User-guide-project-settings-repository-1581424843016.png)
![Repository settings under project settings in OpenProject](openproject_user_guide_project_settings_repository.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

@@ -1,7 +1,7 @@
---
sidebar_navigation:
title: Required disk storage
priority: 150
priority: 200
description: Monitor required disk storage.
keywords: required storage, project folder, storages
---
Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 40 KiB

@@ -1,60 +1,67 @@
---
sidebar_navigation:
title: Versions
priority: 600
priority: 500
description: Manage versions in OpenProject.
keywords: manage versions
---
# Manage versions
Versions will be used, e.g. for roadmap planning to track certain product versions or releases. Work packages can be assigned to a version. They will be displayed in the [Roadmap](../../../roadmap).
Versions are used to track product versions or releases, for example in roadmap planning. Work packages can be assigned to a version and will be displayed in the [Roadmap](../../../roadmap).
Also, version will be used to enable the Backlogs module, i.e. to create a product backlog and sprints in OpenProject.
Versions are also used to enable the Backlogs module, i.e., to create a product backlog and manage sprints in OpenProject.
[Read here how to create a new backlogs version](../../../backlogs-scrum/manage-sprints).
[Learn how to create a new backlogs version](../../../backlogs-scrum/manage-sprints).
## Create a new version
Press the green **+ Version** button to create a new version for a project.
To create a new version for your project, navigate to *Project settings → Versions* in the project menu and click the green **+ Version** button.
![User-guide-project-settings-versions](User-guide-project-settings-versions.png)
![Versions in project settings in OpenProject](openproject_user_guide_project_settings_work_packages_versions.png)
You can configure the following information.
You can configure the following details:
- **Name**: Set a name for the version.
- **Description**: Add a description to clarify the purpose of the version.
- **Status**: Choose the status of the version. The default status is open.
- **Wiki page**: Select a wiki page to link directly from the version in the Roadmap.
- **Start and finish date**: Set the planned start and finish dates.
- **Sharing**: Choose whether the version should be shared with other projects (e.g., in the project hierarchy or with subprojects).
> [!NOTE]
> Note: Youll need to configure the backlog column separately in each project that uses the version.
- **Backlogs column**: Select a column for this version in the backlogs view. This is only necessary if youre managing a [Scrum backlog](../../../backlogs-scrum).
1. Set a **name** for the version.
2. Add a **description** to specify the version.
3. Set **status** of a version, the default status is open.
4. Choose a **wiki page** that you want to open directly from a version in the Roadmap.
5. Set a **start date and finish date** for the version.
6. Choose whether the version shall be **shared** with other projects, e.g. in the project hierarchy or subprojects.
**Please note**: To give you maximum flexibility you will have to choose the column in the backlog individually for all projects using this version.
7. Select a **column in backlogs view**. This is only required if you use the versions to manage your [Scrum backlog](../../../backlogs-scrum).
8. Press the blue **Create** button to save your changes.
![User-guide-project-settings-create-version](User-guide-project-settings-create-version.png)
Click the Create button to save your changes.
![Create new version under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_versions_new.png)
## Edit or delete versions
1. Click on the **edit** icon at the right of the row to edit the version.
2. Press the **delete** button at the right of the version to delete a version.
3. You can **close all completed versions** with the button at the bottom of the list. In order to close only certain versions, open the details view and adapt the version **Status** (see above).
Click on the **edit** icon at the right of the row to edit the version.
Please note: You can only edit versions (i.e. edit icon visible) in their original project, not in projects they're shared with.
To remove a version, press the **delete** button.
![User-guide-project-settings-edit-versions](User-guide-project-settings-edit-versions.png)
To close all completed versions at once, use the **Close completed versions** button at the bottom of the list. To close a specific version, open its details and change the **Status** to *Closed* (see above).
> [!NOTE]
>
> You can only edit versions in the project they were originally created in. In projects where a version is shared, the edit option wont be available.
![Edit or close version under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_versions_edit_close_delete.png)
## Close a version
To close a version, open the details view of a version and set the **Status** to *Closed*.
To close a version, open its details and set the **Status** to *Closed*.
![close version](image-20200129161010953.png)
![Close a version under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_versions_closed.png)
## Differences between open, locked and closed versions
There are (of course) a few differences between open, locked and closed versions:
There are a few differences between open, locked and closed versions:
- **Open version**: Can be used in all places where version can be used. Work packages can be added and removed. The version is visible in the Backlogs module. It will also be shown in the Roadmap module.
- **Locked version**: No work packages can be added or removed. The version is not visible in the Backlogs module anymore. The version is still visible in the Roadmap module.
Use case: E.g. the scope of a new software release or a sprint has been decided and should not be changed anymore. It is currently being worked on.
- **Closed version**: No work packages can be added or removed. The version is not visible in the Backlogs module any more. It will also not be shown in the Roadmap module unless you explicitly filter for it.
Use case: A closed version is meant as a completed version, e.g. the new software release mentioned earlier has been finished and you're working on the next one.
- **Open version**:
Versions in this state can be used throughout the system. Work packages can be added or removed. The version is visible in both the Backlogs and Roadmap modules.
- **Locked version**:
Work packages cannot be added or removed. The version is **not** visible in the Backlogs module but is still shown in the Roadmap module.
*Use case:* Youve finalized the scope of a sprint or release and want to prevent changes while it's being worked on.
- **Closed version**:
Work packages cannot be added or removed. The version is no longer shown in the Backlogs or Roadmap modules, unless you explicitly filter for closed versions.
*Use case:* The release or sprint is complete, and youve moved on to the next one.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

@@ -1,36 +0,0 @@
---
sidebar_navigation:
title: Work package categories
priority: 500
description: Manage work package categories.
keywords: work package categories
---
# Manage work package categories
In the work package forms you have the default attribute to select **work package categories** to differentiate work packages, filter, and group by certain attributes.
You can manage these work package categories in the -> *Project settings* -> *Work package categories*.
## Create a new work package category
Press the green **+ Category** button to create a new category for a project.
![User-guide-project-settings-work-package-categories](User-guide-project-settings-work-package-categories-1581425056359.png)
You can enter the following information.
1. **Name** your category
2. Choose a default **Assignee** if the work package has this category.
3. Press the blue **Create** button.
![User-guide-project-settings-create-category](User-guide-project-settings-create-category.png)
## Edit or delete a category
From the list of categories you can choose a category to edit or delete.
1. Press the **edit** button to make changes to a category.
2. Press the **delete** button to delete a category.
![User-guide-project-settings-edit-category](User-guide-project-settings-edit-category.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

@@ -1,19 +0,0 @@
---
sidebar_navigation:
title: Work package types
priority: 800
description: Enable or disable work package types in a project.
keywords: work package types
---
# Work package types
**Activate or deactivate work package types for a project**.
Select the respective project via the project drop-down menu at the top left in the header navigation and choose -> *Project settings* -> *Work package types* in the project menu.
![project settings work package types](image-20200211133405469.png)
Check the different types which you want to enable for your project. In the table you will also see if the work package types is displayed in the roadmap by default and if it is a milestone.
Press the blue **Save** button to confirm your changes.
[Work package types can be managed](../../../../system-admin-guide/manage-work-packages/work-package-types) in the System *Administration* -> *Work packages* -> *Types*.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,85 @@
---
sidebar_navigation:
title: Work packages
priority: 600
description: Manage work package types, categories and custom fields in OpenProject project settings.
keywords: work package type, work package category, work package custom fields
---
# Work packages
In OpenProject, you can configure several work packagerelated settings individually for each project. This includes enabling work package types, assigning categories, and activating custom fields. To do so, go to *Project settings*, select *Work packages*, and open the relevant tab.
## Work package types
You can enable or disable work package types for a specific project by following these steps:
1. Select a project from the drop-down menu in the top-left corner of the header.
2. Navigate to *Project settings → Work packages* in the project menu. By default, you'll see the **Types** tab, which lists all available work package types.
The table shows whether each type is:
- Enabled in the current project
- Displayed in the roadmap by default
- Considered a milestone
3. Check the work package types you want to enable and click the **Save** button to apply your changes.
![Work package types under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_types.png)
> [!TIP]
>
> [Work package types can be managed](../../../../system-admin-guide/manage-work-packages/work-package-types) under System *Administration* -> *Work packages* -> *Types*.
## Work package categories
In a work package form, you can use **work package categories** to classify work packages. These categories help you differentiate, filter, and group work packages by specific attributes.
You can manage work package categories specific to a project under *Project settings → Work packages → Categories*.
### Create a new work package category
Press the green **+ Category** button to create a new category for a project.
![Work package categories tab under work package module in project settings in OpenProject](openproject_user_guide_project_settings_work_packages_categories.png)
You can then name the category and choose a default **Assignee** if the work package has this category. Press the **Create** button to add the new category.
![A form to create a new work package category under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_categories_new.png)
### Edit or delete a category
From the list of categories you can choose a category to edit or delete.
Press the **edit** button to make changes to a category. Press the **delete** button to delete a category.
![Edit or delete a work package category under project settings in OpenProject](openproject_user_guide_project_settings_work_packages_categories_edit_delete.png)
## Work package custom fields
Custom fields for work packages can be enabled or disabled in the Project settings of each project.
<div class="glossary">
**Custom fields** are additional attribute fields that can be added to extend existing data fields. They can be used in various sections, including work packages, spent time, projects, versions, users, groups, time tracking activities, and work package priorities.
</div>
> [!NOTE]
> The instructions in this section apply *only* to custom fields for work packages.
Before enabling a custom field in a project, it must first be created in the [system administration](../../../../system-admin-guide/custom-fields). Once its created, open the relevant project and go to *Project settings-> Work packages -> Custom fields*.
![Custom fields settings in OpenProject project settings](openproject_user_guide_project_settings_work_packages_custom_fields.png)
Here, you can:
- Manage an existing custom field by clicking on its name.
- Enable or disable the custom field for the project. If a custom field is globally enabled in the system administration, it will appear automatically in all projects.
- View which work package types the custom field is already enabled for. Custom fields will only be active for the work package types displayed under **Contained in type** column. You can add a custom field to additional work package types by [adding them to the respective work package form](../../../../system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on).
**Create a new work package custom field** by clicking the **+ Custom field** button in the top right corner.
> [!TIP]
> Keep in mind that you have to be a system administrator in order to create new custom fields.
Press the **Save** button to apply your changes.
@@ -161,7 +161,13 @@ OpenProject offers two modes for calculating *% Complete* in hierarchy totals:
> [!NOTE]
> The administrator of your instance will have selected a mode for the entire instance. If you are an administrator, you can modify this by following our [admin guide on work package settings](../../../system-admin-guide/manage-work-packages/work-package-progress-tracking).
Total sums of **Work**, **Remaining work** and **% Complete%** will also be shown at the bottom of work package table [if displaying sums is activated](../../work-packages/work-package-table-configuration/#display-sums-in-work-package-table).
> [!TIP]
>
> In this case the sum for % Complete is derived from values of total Work and Remaining work, and not simply as a sum of values for % Complete.
![Example of total sums displayed for Work, Remaining work and % Complete in OpenProject work package table](openproject_user_guide_progress_reporting_total_sums_displayed.png)
### Excluding certain work packages from totals

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