Skip to content

Commit

Permalink
Release OpenProject 13.1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
ulferts committed Dec 22, 2023
2 parents 8aa2add + 92a708e commit cd4ce02
Show file tree
Hide file tree
Showing 71 changed files with 212 additions and 134 deletions.
41 changes: 21 additions & 20 deletions app/services/journals/create_service.rb
Expand Up @@ -229,6 +229,14 @@ def journal_modification_sql(predecessor, notes, cause)
def relation_modifications_sql(predecessor)
relations = []

for_supported_associations do |association|
relations << association_modifications_sql(association, predecessor)
end

relations
end

def for_supported_associations
associations = {
attachable?: :attachable,
customizable?: :customizable,
Expand All @@ -238,11 +246,9 @@ def relation_modifications_sql(predecessor)

associations.each do |is_associated, association|
if journable.respond_to?(is_associated)
relations << association_modifications_sql(association, predecessor)
yield association
end
end

relations
end

def association_modifications_sql(association, predecessor)
Expand Down Expand Up @@ -612,28 +618,23 @@ def select_max_journal_sql(predecessor)
end

def select_changed_sql
<<~SQL
sql = <<~SQL
SELECT
*
FROM
(#{data_changes_sql}) data_changes
FULL JOIN
(#{customizable_changes_sql}) customizable_changes
ON
customizable_changes.journable_id = data_changes.journable_id
FULL JOIN
(#{attachable_changes_sql}) attachable_changes
ON
attachable_changes.journable_id = data_changes.journable_id
FULL JOIN
(#{storable_changes_sql}) storable_changes
ON
storable_changes.journable_id = data_changes.journable_id
FULL JOIN
(#{agenda_itemable_changes_sql}) agenda_itemable_changes
ON
agenda_itemable_changes.journable_id = data_changes.journable_id
SQL

for_supported_associations do |association|
sql += <<~SQL
FULL JOIN
(#{send(:"#{association}_changes_sql")}) #{association}_changes
ON
#{association}_changes.journable_id = data_changes.journable_id
SQL
end

sql
end

def attachable_changes_sql
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/js-lt.yml
Expand Up @@ -759,7 +759,7 @@ lt:
last_day: 'Paskutinė diena'
text_are_you_sure: "Ar esate įsitikinę?"
text_data_lost: "Visa įvesta informacija bus prarasta."
text_user_wrote: "%{value} wrote:"
text_user_wrote: "%{value} parašė:"
types:
attribute_groups:
error_duplicate_group_name: "%{group} grupės pavadinimas naudotas daugiau nei kartą. Grupių pavadinimai privalo būti unikalūs."
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/js-pt.yml
Expand Up @@ -756,7 +756,7 @@ pt:
last_day: 'Último dia'
text_are_you_sure: "Você tem certeza?"
text_data_lost: "Todos os dados inseridos serão perdidos."
text_user_wrote: "%{value} wrote:"
text_user_wrote: "%{value} escreveu:"
types:
attribute_groups:
error_duplicate_group_name: "O nome %{group} foi usado mais de uma vez. Nomes de Grupos devem ser únicos."
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/js-ru.yml
Expand Up @@ -758,7 +758,7 @@ ru:
last_day: 'Последний день'
text_are_you_sure: "Уверены?"
text_data_lost: "Все введенные данные будут потеряны."
text_user_wrote: "%{value} wrote:"
text_user_wrote: "%{value} написал(а):"
types:
attribute_groups:
error_duplicate_group_name: "Имя %{group} используется более одного раза. Имена групп должны быть уникальными."
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/lt.yml
Expand Up @@ -3316,7 +3316,7 @@ lt:
oauth_returned_json_error: "OAuth2 grąžino JSON klaidą"
oauth_returned_http_error: "OAuth2 grąžino tinklo klaidą"
oauth_returned_standard_error: "OAuth2 grąžino vidinę klaidą"
client_id_blank: "ID can't be blank."
client_id_blank: "ID negali būti tuščias."
wrong_token_type_returned: "OAuth2 grąžino netinkamą žetono tipą, tikėtasi AccessToken::Bearer"
oauth_issue_contact_admin: "OAuth2 grąžino klaidą. Prašome susisiekti su jūsų sistemos administratoriumi."
oauth_client_not_found: "OAuth2 klientas nerastas „callback“ taške (redirect_uri)."
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/pt.yml
Expand Up @@ -3258,7 +3258,7 @@ pt:
oauth_returned_json_error: "OAuth2 retornou um erro JSON"
oauth_returned_http_error: "OAuth2 retornou um erro de rede"
oauth_returned_standard_error: "OAuth2 retornou um erro interno"
client_id_blank: "ID can't be blank."
client_id_blank: "O ID não pode estar em branco."
wrong_token_type_returned: "OAuth2 retornou um tipo errado de token, aguardando AccessToken::Bearer"
oauth_issue_contact_admin: "OAuth2 comunicou um erro. Entre em contato com o administrador do sistema."
oauth_client_not_found: "Cliente OAuth2 não encontrado no ponto de extremidade 'callback' (redirect_uri)."
Expand Down
4 changes: 2 additions & 2 deletions config/locales/crowdin/ru.yml
Expand Up @@ -214,7 +214,7 @@ ru:
concatenation:
single: "или"
global_search:
placeholder: "Search in %{app_title}"
placeholder: "Поиск в %{app_title}"
overwritten_tabs:
wiki_pages: "Wiki"
messages: "Форум"
Expand Down Expand Up @@ -3319,7 +3319,7 @@ ru:
oauth_returned_json_error: "OAuth2 вернул ошибку JSON"
oauth_returned_http_error: "OAuth2 вернул ошибку сети"
oauth_returned_standard_error: "OAuth2 вернул внутреннюю ошибку"
client_id_blank: "ID can't be blank."
client_id_blank: "ID не может быть пустым."
wrong_token_type_returned: "OAuth2 вернул неверный тип токена, ожидая AccessToken::Bearer"
oauth_issue_contact_admin: "OAuth2 сообщил об ошибке. Обратитесь к системному администратору."
oauth_client_not_found: "OAuth2 'state' не найден в конечной точке 'callback' (redirect_uri)."
Expand Down
5 changes: 5 additions & 0 deletions docs/development/code-review-guidelines/README.md
Expand Up @@ -135,6 +135,11 @@ Verify that the appropriate tests have been added as documented above.

When testing a feature or change, check out the code test at least the happy paths according to the specification of the ticket.

### Documenting changes right away

If possible, add smaller documentation changes right away.

If there are breaking changes (e.g., to permissions, code relevant for developers), add them to the release notes draft for the release or create a new draft if none exists yet.


## Other
Expand Down
33 changes: 32 additions & 1 deletion docs/installation-and-operations/installation/docker/README.md
Expand Up @@ -445,12 +445,43 @@ RUN ./docker/prod/setup/postinstall.sh
The file is based on the normal OpenProject docker image.
All the Dockerfile does is copy your custom plugins gemfile into the image, install the gems and precompile any new assets.

**slim image**

If you are using the `-slim` tag you will need to do the following to add your plugin.

```
FROM openproject/community:13 AS plugin
# If installing a local plugin (using `path:` in the `Gemfile.plugins` above),
# you will have to copy the plugin code into the container here and use the
# path inside of the container. Say for `/app/vendor/plugins/openproject-slack`:
# COPY /path/to/my/local/openproject-slack /app/vendor/plugins/openproject-slack
COPY Gemfile.plugins /app/
# If the plugin uses any external NPM dependencies you have to install them here.
# RUN npm add npm <package-name>*
RUN bundle config unset deployment && bundle install && bundle config set deployment 'true'
RUN ./docker/prod/setup/postinstall.sh
FROM openproject/community:13-slim
COPY --from=plugin /usr/bin/git /usr/bin/git
COPY --chown=$APP_USER:$APP_USER --from=plugin /app/vendor/bundle /app/vendor/bundle
COPY --chown=$APP_USER:$APP_USER --from=plugin /usr/local/bundle /usr/local/bundle
COPY --chown=$APP_USER:$APP_USER --from=plugin /app/public/assets /app/public/assets
COPY --chown=$APP_USER:$APP_USER --from=plugin /app/config/frontend_assets.manifest.json /app/config/frontend_assets.manifest.json
COPY --chown=$APP_USER:$APP_USER --from=plugin /app/Gemfile.* /app/
```

**4. Build the image**

To actually build the docker image run:

```shell
docker build -t openproject-with-slack .
docker build --pull -t openproject-with-slack .
```

The `-t` option is the tag for your image. You can choose what ever you want.
Expand Down
25 changes: 25 additions & 0 deletions docs/release-notes/13-1-2/README.md
@@ -0,0 +1,25 @@
---
title: OpenProject 13.1.2
sidebar_navigation:
title: 13.1.2
release_version: 13.1.2
release_date: 2023-12-22
---

# OpenProject 13.1.2

Release date: 2023-12-22

We released [OpenProject 13.1.2](https://community.openproject.com/versions/1982).
The release contains several bug fixes and we recommend updating to the newest version.

<!--more-->

## Bug fixes and changes

<!-- update this list when updating the draft -->

- Fixed: Unnecessary bullet displayed for TODO checkboxes in wp comments \[[#45469](https://community.openproject.com/wp/45469)\]
- Fixed: Black text invisible on some darker colors in the Task modal of the Task board \[[#49934](https://community.openproject.com/wp/49934)\]
- Fixed: White space at the end of page when scrolling a wiki page \[[#51680](https://community.openproject.com/wp/51680)\]
- Fixed: Migration from 12.x to 13.1 fails for installations already having file links in the database \[[#51801](https://community.openproject.com/wp/51801)\]
7 changes: 7 additions & 0 deletions docs/release-notes/README.md
Expand Up @@ -14,6 +14,13 @@ Stay up to date and get an overview of the new features included in the releases
<!--- New release notes are generated below. Do not remove comment. -->
<!--- RELEASE MARKER -->

## 13.1.2

Release date: 2023-12-22

[Release Notes](13-1-2/)


## 13.1.1

Release date: 2023-12-20
Expand Down
4 changes: 2 additions & 2 deletions docs/user-guide/work-packages/share-work-packages/README.md
Expand Up @@ -20,7 +20,7 @@ To share a work package with a project non-member select the detailed view of a

A dialogue window will open, showing the list of all users, who this work package has already been shared with. If the work package has not yet been shared, the list will be empty.

> **Note**: In order to be able to share a work package with non members you need to have specific rights. If you do not see the option to share a work package, please contact your administrator.
> **Note**: In order to be able to share a work package with non members you need to have been assigned a [global role *create users*](./././system-admin-guide/users-permissions/users/#create-users). If you do not see the option to share a work package, please contact your administrator.
![List of users with access to a work package in OpenProject](openproject_user_guide_shared_with_list.png)

Expand All @@ -46,7 +46,7 @@ Following user roles are available as filters:

![Filter list of users by user role](openproject_user_guide_sharing_member_role_filter.png)

**Note:** Please keep in mind that users listed after you have applied a filter may have additional permissions. For example if you select the **View** filter, it is possible that a user is listed, which has inherited additional role as part of user group with permissions exceeding the viewing ones.
> **Note:** Please keep in mind that users listed after you have applied a filter may have additional permissions. For example if you select the **View** filter, it is possible that a user is listed, which has inherited additional role as part of user group with permissions exceeding the viewing ones.
You can search for a user or a group via a user name, group name or an email address. You can either select an existing user from the dropdown menu or enter an email address for an entirely new user, who will receive an invitation to create an account on your instance.

Expand Down
1 change: 0 additions & 1 deletion frontend/src/global_styles/content/editor/_ckeditor.sass
Expand Up @@ -103,7 +103,6 @@ ckeditor-augmented-textarea .op-ckeditor--wrapper
border-bottom-right-radius: 0

.document-editor__editable-container
overflow-y: auto
border: 1px solid var(--ck-color-base-border)
border-top: none
border-radius: var(--ck-border-radius)
Expand Down
Expand Up @@ -66,8 +66,6 @@
display: inline-block

.comment ul
list-style-type: disc !important

li
padding: 0 !important
margin: 0 !important
Expand Down
2 changes: 1 addition & 1 deletion lib/open_project/version.rb
Expand Up @@ -33,7 +33,7 @@ module OpenProject
module VERSION # :nodoc:
MAJOR = 13
MINOR = 1
PATCH = 1
PATCH = 2

class << self
# Used by semver to define the special version (if any).
Expand Down
Expand Up @@ -43,7 +43,7 @@ class MeetingAgendaItem::MeetingForm < ApplicationForm
) do |select|
MeetingAgendaItems::CreateContract
.assignable_meetings(User.current)
.where('meetings.start_time >= ?', Time.zone.now)
.where("meetings.start_time + (interval '1 hour' * meetings.duration) >= ?", Time.zone.now)
.find_each do |meeting|
select.option(
label: "#{meeting.title} #{format_date(meeting.start_time)} #{format_time(meeting.start_time, false)}",
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/af.yml
Expand Up @@ -171,7 +171,7 @@ af:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/ar.yml
Expand Up @@ -175,7 +175,7 @@ ar:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/az.yml
Expand Up @@ -171,7 +171,7 @@ az:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/be.yml
Expand Up @@ -173,7 +173,7 @@ be:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/bg.yml
Expand Up @@ -171,7 +171,7 @@ bg:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/ca.yml
Expand Up @@ -171,7 +171,7 @@ ca:
text_meeting_not_present_anymore: "Aquesta reunió es va eliminar. Si us plau, selecciona una altra reunió."
label_add_work_package_to_meeting_dialog_title: "Afegeix un paquet de treball a una reunió"
label_add_work_package_to_meeting_dialog_button: "Afegir a la reunió"
label_meeting_selection_caption: "Només es pot afegir aquest paquet de treball a reunions en el futur i obertes."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "Un paquet de treball es pot afegir a una o múltiples reunions per a discussió. Qualsevol nota relacionada apareixerà aquí."
text_agenda_item_no_notes: "Notes no proporcionades"
text_agenda_item_not_editable_anymore: "Aquesta agenda ja no es pot editar."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/ckb-IR.yml
Expand Up @@ -171,7 +171,7 @@ ckb-IR:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/cs.yml
Expand Up @@ -173,7 +173,7 @@ cs:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Přidat pracovní balíček k schůzce"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down
2 changes: 1 addition & 1 deletion modules/meeting/config/locales/crowdin/da.yml
Expand Up @@ -171,7 +171,7 @@ da:
text_meeting_not_present_anymore: "This meeting was deleted. Please select another meeting."
label_add_work_package_to_meeting_dialog_title: "Add work package to meeting"
label_add_work_package_to_meeting_dialog_button: "Add to meeting"
label_meeting_selection_caption: "It's only possible to add this work package to open, upcoming meetings."
label_meeting_selection_caption: "It's only possible to add this work package to upcoming or ongoing open meetings."
text_add_work_package_to_meeting_description: "A work package can be added to one or multiple meetings for discussion. Any notes concerning it are also visible here."
text_agenda_item_no_notes: "No notes provided"
text_agenda_item_not_editable_anymore: "This agenda item is not editable anymore."
Expand Down

0 comments on commit cd4ce02

Please sign in to comment.