diff --git a/lib/open_project/journal_formatter/custom_field.rb b/lib/open_project/journal_formatter/custom_field.rb new file mode 100644 index 00000000000..da7aaa21bfb --- /dev/null +++ b/lib/open_project/journal_formatter/custom_field.rb @@ -0,0 +1,51 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2024 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. +#++ + +class OpenProject::JournalFormatter::CustomField + include SharedMethods + + def initialize(journal) + @plain_formatter = Plain.new(journal) + @diff_formatter = Diff.new(journal) + end + + def render(key, values, options = { html: true }) + formatter_for_key(key).render(key, values, options) + end + + private + + def formatter_for_key(key) + case custom_field_for_key(key)&.field_format + when "text" + @diff_formatter + else + @plain_formatter + end + end +end diff --git a/lib/open_project/journal_formatter/custom_field/diff.rb b/lib/open_project/journal_formatter/custom_field/diff.rb new file mode 100644 index 00000000000..af26f9fa715 --- /dev/null +++ b/lib/open_project/journal_formatter/custom_field/diff.rb @@ -0,0 +1,45 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2024 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. +#++ + +class OpenProject::JournalFormatter::CustomField::Diff < OpenProject::JournalFormatter::Diff + include OpenProject::JournalFormatter::CustomField::SharedMethods + + private + + def label(key, html: true) + custom_field = custom_field_for_key(key) + + label = label_for_custom_field(custom_field) + + if html + content_tag("strong", label) + else + label + end + end +end