Skip to content

Commit

Permalink
Merge pull request #14259 from opf/fix/meeting-punctutation
Browse files Browse the repository at this point in the history
Render dots in meeting subheader
  • Loading branch information
oliverguenther authored Nov 29, 2023
2 parents 3e00c1b + 570d765 commit 695b736
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 48 deletions.
46 changes: 46 additions & 0 deletions app/components/op_primer/relative_time_component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 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.
#++
#
module OpPrimer
class RelativeTimeComponent < Primer::Component
def initialize(datetime:, **system_arguments)
super()
@system_arguments = deny_tag_argument(**system_arguments)

@system_arguments[:datetime] = datetime
@system_arguments[:lang] ||= I18n.locale
@system_arguments[:prefix] ||= I18n.t(:label_on)
end

def call
render(Primer::Beta::RelativeTime.new(**@system_arguments))
end
end
end
13 changes: 13 additions & 0 deletions lookbook/previews/op_primer/relative_time_component_preview.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module OpPrimer
class RelativeTimeComponentPreview < Lookbook::Preview
def default(datetime: (Time.now - 123456.seconds))
render OpPrimer::RelativeTimeComponent.new(datetime:)
end

def german_locale(datetime: Time.parse('2023-10-25T09:06:03Z'))
I18n.with_locale(:de) do
render OpPrimer::RelativeTimeComponent.new(datetime:)
end
end
end
end
36 changes: 2 additions & 34 deletions modules/meeting/app/components/meetings/header_component.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -57,23 +57,7 @@
end

show_header.with_row do
flex_layout(align_items: :center) do |meta_info|
meta_info.with_column(mr: 1) do
render(Primer::Beta::Text.new(font_size: :small, color: :subtle)) { t("label_meeting_created_by") }
end

meta_info.with_column(mr: 1) do
render_author_link
end

meta_info.with_column(mr: 1) do
render(Primer::Beta::Text.new(font_size: :small, color: :subtle)) { t("label_meeting_last_updated") }
end

meta_info.with_column do
render(Primer::Beta::RelativeTime.new(font_size: :small, color: :subtle, datetime: last_updated_at))
end
end
render(Meetings::HeaderInfolineComponent.new(@meeting))
end
end

Expand Down Expand Up @@ -110,23 +94,7 @@
end

edit_header.with_row do
flex_layout(align_items: :center) do |meta_info|
meta_info.with_column(mr: 1) do
render(Primer::Beta::Text.new(font_size: :small, color: :subtle)) { t("label_meeting_created_by") }
end

meta_info.with_column(mr: 1) do
render_author_link
end

meta_info.with_column(mr: 1) do
render(Primer::Beta::Text.new(font_size: :small, color: :subtle)) { t("label_meeting_last_updated") }
end

meta_info.with_column do
render(Primer::Beta::RelativeTime.new(font_size: :small, color: :subtle, datetime: last_updated_at))
end
end
render(Meetings::HeaderInfolineComponent.new(@meeting))
end
end
end
Expand Down
14 changes: 0 additions & 14 deletions modules/meeting/app/components/meetings/header_component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,8 @@ def initialize(meeting:, state: :show)

private

def render_author_link
render(Primer::Beta::Link.new(font_size: :small, href: user_path(@meeting.author), underline: false,
target: "_blank")) do
"#{@meeting.author.name}"
end
end

def delete_enabled?
User.current.allowed_in_project?(:delete_meetings, @meeting.project)
end

def last_updated_at
latest_agenda_update = @meeting.agenda_items.maximum(:updated_at) || @meeting.updated_at
latest_meeting_update = @meeting.updated_at

[latest_agenda_update, latest_meeting_update].max
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<%= render(Primer::BaseComponent.new(tag: :div, color: :subtle, font_size: :small)) do %>
<%= t("label_meeting_created_by") %>
<%= render(Primer::Beta::Link.new(href: user_path(@meeting.author), underline: false,
target: "_blank")) { @meeting.author.name } %>.
<%= t("label_meeting_last_updated") %>
<%= render(OpPrimer::RelativeTimeComponent.new(font_size: :small, datetime: last_updated_at, prefix: I18n.t(:label_on))) %>.
<% end %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#-- 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.
#++

module Meetings
class HeaderInfolineComponent < ApplicationComponent
def initialize(meeting)
super
@meeting = meeting
end

def last_updated_at
latest_agenda_update = @meeting.agenda_items.maximum(:updated_at) || @meeting.updated_at
latest_meeting_update = @meeting.updated_at

[latest_agenda_update, latest_meeting_update].max
end
end
end

0 comments on commit 695b736

Please sign in to comment.