Skip to content

Commit

Permalink
Release OpenProject 13.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
ulferts committed Aug 29, 2023
2 parents f24fb0d + 780d1ad commit 512f811
Show file tree
Hide file tree
Showing 802 changed files with 8,083 additions and 1,789 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/crowdin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,6 @@ jobs:
env:
OPENPROJECT_CROWDIN_PROJECT: ${{ secrets.OPENPROJECT_CROWDINV2_PROJECT }}
OPENPROJECT_CROWDIN_API_KEY: ${{ secrets.OPENPROJECT_CROWDINV2_API_KEY }}
- name: "Fixing translation names"
run: |
ruby script/i18n/fix_crowdin_translation_filenames.rb
- name: "Commit translations"
run: |
git config user.name "OpenProject Actions CI"
Expand Down
3 changes: 1 addition & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,7 @@ group :test do
gem 'capybara', '~> 3.39.0'
gem 'capybara-screenshot', '~> 1.0.17'
gem 'cuprite', '~> 0.14.3'
gem 'selenium-webdriver', '~> 4.0'
gem 'webdrivers', '~> 5.2.0'
gem 'selenium-webdriver', '~> 4.11.0'

gem 'fuubar', '~> 2.5.0'
gem 'timecop', '~> 0.9.0'
Expand Down
9 changes: 2 additions & 7 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
secure_headers (6.5.0)
selenium-webdriver (4.10.0)
selenium-webdriver (4.11.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
Expand Down Expand Up @@ -972,10 +972,6 @@ GEM
rack (>= 2.0.9)
warden-basic_auth (0.2.1)
warden (~> 1.2)
webdrivers (5.2.0)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (~> 4.0)
webfinger (2.1.2)
activesupport
faraday (~> 2.0)
Expand Down Expand Up @@ -1153,7 +1149,7 @@ DEPENDENCIES
rubytree (~> 2.0.0)
sanitize (~> 6.0.2)
secure_headers (~> 6.5.0)
selenium-webdriver (~> 4.0)
selenium-webdriver (~> 4.11.0)
semantic (~> 1.6.1)
shoulda-context (~> 2.0)
shoulda-matchers (~> 5.0)
Expand All @@ -1178,7 +1174,6 @@ DEPENDENCIES
view_component
warden (~> 1.2)
warden-basic_auth (~> 0.2.1)
webdrivers (~> 5.2.0)
webmock (~> 3.12)
will_paginate (~> 4.0.0)
with_advisory_lock (~> 4.6.0)
Expand Down
4 changes: 2 additions & 2 deletions app/mailers/user_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ def wiki_page_added(user, wiki_page)
message_id @wiki_page, user

send_mail(user,
"[#{@wiki_page.project.name}] #{t(:mail_subject_wiki_page_added, id: @wiki_page.title)}")
"[#{@wiki_page.project.name}] #{t(:mail_subject_wiki_content_added, id: @wiki_page.title)}")
end

def wiki_page_updated(user, wiki_page)
Expand All @@ -154,7 +154,7 @@ def wiki_page_updated(user, wiki_page)
message_id @wiki_page, user

send_mail(user,
"[#{@wiki_page.project.name}] #{t(:mail_subject_wiki_page_updated, id: @wiki_page.title)}")
"[#{@wiki_page.project.name}] #{t(:mail_subject_wiki_content_updated, id: @wiki_page.title)}")
end

def message_posted(user, message)
Expand Down
36 changes: 19 additions & 17 deletions app/models/custom_field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def check_searchability

def default_value
if list?
ids = custom_options.select(&:default_value).map(&:id)
ids = custom_options.where(default_value: true).pluck(:id).map(&:to_s)

if multi_value?
ids
Expand Down Expand Up @@ -181,24 +181,26 @@ def possible_values=(arg)
end

def cast_value(value)
casted = nil
if value.present?
case field_format
when 'string', 'text', 'list'
casted = value
when 'date'
casted = begin; value.to_date; rescue StandardError; nil end
when 'bool'
casted = ActiveRecord::Type::Boolean.new.cast(value)
when 'int'
casted = value.to_i
when 'float'
casted = value.to_f
when 'user', 'version'
casted = (value.blank? ? nil : field_format.classify.constantize.find_by(id: value.to_i))
return if value.blank?

case field_format
when 'string', 'text', 'list'
value
when 'date'
begin
value.to_date
rescue StandardError
nil
end
when 'bool'
ActiveRecord::Type::Boolean.new.cast(value)
when 'int'
value.to_i
when 'float'
value.to_f
when 'user', 'version'
field_format.classify.constantize.find_by(id: value.to_i)
end
casted
end

def <=>(other)
Expand Down
16 changes: 14 additions & 2 deletions app/models/custom_value.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,28 @@ def value=(val)
def strategy
@strategy ||= begin
format = custom_field&.field_format || 'empty'
OpenProject::CustomFieldFormat.find_by_name(format).formatter.new(self)
OpenProject::CustomFieldFormat.find_by_name(format).formatter.new(self) # rubocop:disable Rails/DynamicFindBy
end
end

def default?
custom_field.cast_value(value) == custom_field.default_value
value_is_included_in_multi_value_default? \
|| value_is_same_as_default?
end

protected

def value_is_included_in_multi_value_default?
return false unless custom_field.multi_value?

[custom_field.default_value, value].all?(&:blank?) \
|| custom_field.default_value&.include?(custom_field.cast_value(value))
end

def value_is_same_as_default?
custom_field.cast_value(value) == custom_field.default_value
end

def validate_presence_of_required_value
errors.add(:value, :blank) if custom_field.required? && !strategy.value_present?
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ See COPYRIGHT and LICENSE files for more details.
<div class="op-toast--content">
<p>
<%= t("working_days.warning").html_safe %>
</p>
</p>
</div>
</div>

Expand Down
4 changes: 0 additions & 4 deletions config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,4 @@

# Speed up tests by lowering BCrypt's cost function
BCrypt::Engine.cost = BCrypt::Engine::MIN_COST

# Pin Chromedriver version to last version that was released the "old way"
# See https://github.com/titusfortner/webdrivers/issues/247
Webdrivers::Chromedriver.required_version = "114.0.5735.90"
end
35 changes: 35 additions & 0 deletions config/initializers/migration_statement_timeout.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# frozen_string_literal: true

#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2023 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.
#++

require_relative '../../lib_static/open_project/migration_statement_timeout/manager'
require_relative '../../lib_static/open_project/migration_statement_timeout/migration_extensions'

ActiveRecord::Migration.prepend(MigrationStatementTimeout::Manager)
ActiveRecord::Migration.extend(MigrationStatementTimeout::MigrationExtensions)
8 changes: 4 additions & 4 deletions config/locales/crowdin/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2172,9 +2172,9 @@ de:
mail_body_incoming_email_error_logs: "Logs"
mail_body_lost_password: "Benutzen Sie den folgenden Link, um Ihr Kennwort zu ändern:"
mail_password_change_not_possible:
title: "Password change not possible"
body: "Your account at %{app_title} is connected to an external authentication provider (%{name})."
subtext: "Passwords for external account cannot be changed in the application. Please use the lost password functionality of your authentication provider."
title: "Passwortänderung nicht möglich"
body: "Ihr Konto bei %{app_title} ist mit einem externen Authentifizierungsanbieter (%{name}) verbunden."
subtext: "Passwörter für externe Konten können in der Anwendung nicht geändert werden. Bitte verwenden Sie die Passwort-verloren-Funktion Ihres Authentifizierungsanbieters."
mail_body_register: "Willkommen zu %{app_title}. Bitte aktivieren Sie Ihr Konto, indem Sie auf diesen Link klicken:"
mail_body_register_header_title: "Einladung als Projektmitglied"
mail_body_register_user: "Hallo %{name},"
Expand Down Expand Up @@ -2693,7 +2693,7 @@ de:
type: "Ganze Zeile nach Typ"
priority: "Ganze Zeile nach Priorität"
icalendar:
enable_subscriptions_text_html: Allows users with the necessary permissions to subscribe to OpenProject calendars and access work package information via an external calendar client. <strong>Note:</strong> Please read about <a href="%{link}" target="_blank">iCalendar subscriptions</a> to understand potential security risks before enabling this.
enable_subscriptions_text_html: Ermöglicht Benutzern mit den erforderlichen Berechtigungen das Abonnieren von OpenProject-Kalendern und den Zugriff auf Arbeitspaketinformationen über einen externen Kalender-Client. <strong>Hinweis:</strong> Bitte lesen Sie die Informationen über <a href="%{link}" target="_blank">iCalendar-Abonnements</a>, um mögliche Sicherheitsrisiken zu verstehen, bevor Sie dies aktivieren.
language_name_being_default: '%{language_name} (Standard)'
notifications:
events_explanation: 'Bestimmt, für welche Ereignisse eine E-Mail verschickt wird. Arbeitspakete sind von dieser Liste ausgeschlossen, da die Benachrichtigungen hierfür pro Benutzer konfiguriert werden können.'
Expand Down
6 changes: 3 additions & 3 deletions config/locales/crowdin/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1523,15 +1523,15 @@ es:
watched: "Estás viendo a %{work_package}"
update_info_mail:
body: >
Nos complace anunciar la publicación de la versión OpenProject 12.0. Esta, es una nueva versión con muchos cambios que esperamos simplifiquen y mejoren en gran medida la forma en que usa OpenProject.
Nos complace anunciar el lanzamiento de la versión OpenProject 12.0. Esta, es una nueva versión con muchos cambios que esperamos simplifiquen y mejoren en gran medida la forma en que usa OpenProject.
Para empezar, con esta versión introducimos las notificaciones dentro de la aplicación. Des de ahora, va a recibir notificaciones por actualizaciones en los paquetes de trabajo directamente en OpenProject. Puede marcar estas notificaciones como leídas, contestar a comentarios e incluso modificar los atributos de un paquete de trabajo sin salir del centro de notificaciones.
Esto también supone que no se van a usar más los correos electrónicos para este tipo de notificaciones. Creemos que el centro de notificaciones es el mejor sitio para ver y realizar cambios sobre estas actualizaciones. No obstante, si desea continuar recibiendo notificaciones vía correo electrónico, puede seleccionar recibir correos recordatorios diarios en horas concretas de su elección.
Por favor, asegúrese de validar sus nuevas configuraciones de notificaciones que se han reseteado por defecto y a posteriori puede crear y modificar sus preferencias tanto para las notificaciones dentro de la aplicación como para los recordatorios vía correo electrónico en la configuración de su cuenta. También puede hacer estos cambios usando el botón abajo "Cambiar configuración de correo electrónico".
Esperamos que las nuevas notificaciones dentro la aplicación le sean útiles y le ayuden a ser aún más productivo.
Sinceramente, El equipo de OpenProject
body_header: 'Versión 12.0 con el Centro de notificaciones'
body_subheader: 'Noticias'
subject: 'Cambios importantes en las notificaciones con la publicación de la versión 12.0'
subject: 'Cambios importantes en las notificaciones con el lanzamiento de la versión 12.0'
label_accessibility: "Accesibilidad"
label_account: "Cuenta"
label_active: "Activo"
Expand Down Expand Up @@ -1932,7 +1932,7 @@ es:
label_relates_to: "relacionado con"
label_relation_delete: "Eliminar relación"
label_relation_new: "Nueva relación"
label_release_notes: "Notas de publicación"
label_release_notes: "Notas de lanzamiento"
label_remove_columns: "Eliminar columnas seleccionadas"
label_renamed: "nombre cambiado"
label_reply_plural: "Respuestas"
Expand Down
2 changes: 1 addition & 1 deletion config/locales/crowdin/js-es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ es:
standard:
learn_about_link: https://www.openproject.org/blog/openproject-13-0-release/
new_features_html: >
La versión contiene varias características nuevas y mejoras: <br> <ul class="%{list_styling_class}"> <li>Comparación de referencia para facilitar el seguimiento de los cambios.</li> <li>Exportación de PDF para informes sobre planes de trabajo.</li> <li>Suscripción a calendarios de proyectos a través de URL (iCalendar).</li> <li>Carpetas de proyectos con plantillas de documentos para la integración de Nextcloud.</li> <li>Sembrado localizado de todos los datos de semillas.</li> <li>Los módulos globales se enumeran en nuevas páginas de índice.</li> </ul>
El lanzamiento contiene varias características nuevas y mejoras: <br> <ul class="%{list_styling_class}"> <li>Comparación de referencia para facilitar el seguimiento de los cambios.</li> <li>Exportación de PDF para informes sobre planes de trabajo.</li> <li>Suscripción a calendarios de proyectos a través de URL (iCalendar).</li> <li>Carpetas de proyectos con plantillas de documentos para la integración de Nextcloud.</li> <li>Sembrado localizado de todos los datos de semillas.</li> <li>Los módulos globales se enumeran en nuevas páginas de índice.</li> </ul>
ical_sharing_modal:
title: "Suscribirse al calendario"
inital_setup_error_message: "Se ha producido un error al obtener los datos."
Expand Down
4 changes: 2 additions & 2 deletions config/locales/crowdin/js-tr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,7 @@ tr:
work_package_required: 'Önce bir iş paketi seçilmesini gerektirir.'
title: 'Zaman kaydet'
tracking: 'Zaman takibi'
stop: 'Stop'
stop: 'Dur'
timer:
start_new_timer: 'Start new timer'
timer_already_running: 'To start a new timer, you must first stop the current timer:'
Expand Down Expand Up @@ -833,7 +833,7 @@ tr:
placeholder: "Aramak için metni yazın"
notFoundText: "Hiçbir öge bulunamadı"
project:
placeholder: "Select project"
placeholder: "Proje seçin"
repositories:
select_tag: 'Etiket seç'
select_branch: 'Branş seç'
Expand Down
Loading

0 comments on commit 512f811

Please sign in to comment.