mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
Fine tune members widget and remove doubled body class which caused additional spacing
This commit is contained in:
@@ -126,7 +126,7 @@ class Member < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.newest_first
|
||||
order "#{table_name}.created_at DESC"
|
||||
order(created_at: :desc)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
+1
-2
@@ -89,9 +89,8 @@ class News < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
# table_name shouldn't be needed :(
|
||||
def self.newest_first
|
||||
order "#{table_name}.created_at DESC"
|
||||
order(created_at: :desc)
|
||||
end
|
||||
|
||||
def new_comment(attributes = {})
|
||||
|
||||
@@ -6,6 +6,4 @@
|
||||
[resource]="resource" />
|
||||
</widget-header>
|
||||
|
||||
<div class="op-widget-box--body -allow-inner-overflow">
|
||||
<turbo-frame [id]="frameId" [src]="src" loading="lazy" />
|
||||
</div>
|
||||
<turbo-frame [id]="frameId" [src]="src" loading="lazy" />
|
||||
|
||||
+1
-3
@@ -10,6 +10,4 @@
|
||||
[resource]="resource" />
|
||||
</widget-header>
|
||||
|
||||
<div class="op-widget-box--body -allow-inner-overflow">
|
||||
<turbo-frame [id]="frameId" [src]="src" />
|
||||
</div>
|
||||
<turbo-frame [id]="frameId" [src]="src" loading="lazy" />
|
||||
|
||||
+1
-3
@@ -6,6 +6,4 @@
|
||||
[resource]="resource" />
|
||||
</widget-header>
|
||||
|
||||
<div class="op-widget-box--body -allow-inner-overflow">
|
||||
<turbo-frame [id]="frameId" [src]="src" loading="lazy" />
|
||||
</div>
|
||||
<turbo-frame [id]="frameId" [src]="src" loading="lazy" />
|
||||
|
||||
@@ -29,17 +29,21 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
|
||||
<%=
|
||||
widget_wrapper do
|
||||
flex_layout do |flex|
|
||||
@newest_members.each do |item|
|
||||
flex.with_row(mb: 3) do
|
||||
render Users::AvatarComponent.new(user: item.principal, size: :mini, link: false, show_name: true)
|
||||
end
|
||||
end
|
||||
flex.with_row do
|
||||
render Primer::Beta::Link.new(href: project_members_path(@project)) do
|
||||
I18n.t(:"overviews.widgets.members.view_all_members")
|
||||
if @newest_members.present?
|
||||
flex_layout do |flex|
|
||||
@newest_members.each do |item|
|
||||
flex.with_row(mb: 3) do
|
||||
render Users::AvatarComponent.new(user: item.principal, size: :mini, link: false, show_name: true)
|
||||
end
|
||||
end
|
||||
flex.with_row do
|
||||
render Primer::Beta::Link.new(href: project_members_path(@project)) do
|
||||
I18n.t(:"overviews.widgets.members.view_all_members")
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
render(Primer::Beta::Text.new(color: :subtle)) { t(:"js.grid.widgets.members.no_results") }
|
||||
end
|
||||
end
|
||||
%>
|
||||
|
||||
@@ -33,19 +33,15 @@ module Overviews
|
||||
class MembersComponent < Grids::WidgetComponent
|
||||
MEMBERS_LIMIT = 5
|
||||
|
||||
attr_reader :project, :current_user
|
||||
param :project
|
||||
|
||||
def initialize(project)
|
||||
super()
|
||||
def initialize(*)
|
||||
super
|
||||
|
||||
@project = project
|
||||
@current_user = current_user
|
||||
@members =
|
||||
if project
|
||||
project.members.visible(current_user).newest_first
|
||||
end
|
||||
|
||||
@newest_members = @members.limit(MEMBERS_LIMIT).to_a
|
||||
if project
|
||||
@members = project.members.visible(current_user).newest_first
|
||||
@newest_members = @members.limit(MEMBERS_LIMIT).to_a
|
||||
end
|
||||
end
|
||||
|
||||
def title
|
||||
@@ -53,7 +49,7 @@ module Overviews
|
||||
end
|
||||
|
||||
def render?
|
||||
current_user.allowed_in_project?(:view_members, project) && @newest_members.present?
|
||||
current_user.allowed_in_project?(:view_members, project)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,17 +33,11 @@ module Overviews
|
||||
class NewsComponent < Grids::WidgetComponent
|
||||
NEWS_LIMIT = 5
|
||||
|
||||
include ApplicationHelper
|
||||
include OpPrimer::ComponentHelpers
|
||||
include OpTurbo::Streamable
|
||||
param :project, optional: true
|
||||
|
||||
attr_reader :project, :current_user
|
||||
def initialize(*)
|
||||
super
|
||||
|
||||
def initialize(project)
|
||||
super()
|
||||
|
||||
@project = project
|
||||
@current_user = current_user
|
||||
@news =
|
||||
if project
|
||||
project.news.visible(current_user).newest_first
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
end
|
||||
|
||||
layout.with_column do
|
||||
render(Primer::Beta::Link.new(ml: 1, font_weight: :bold, href: news_path(item))) { item.title }
|
||||
render(Primer::Beta::Link.new(font_weight: :bold, href: news_path(item))) { item.title }
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
@@ -51,8 +51,8 @@ RSpec.describe Overviews::Widgets::MembersComponent, type: :component do
|
||||
let(:user) { create(:admin) }
|
||||
|
||||
context "with no members" do
|
||||
it "does not render" do
|
||||
expect(rendered_component).not_to have_element "#overviews-widgets-members-component-box"
|
||||
it "does render" do
|
||||
expect(rendered_component).to have_content I18n.t(:"js.grid.widgets.members.no_results")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
RSpec.describe Overviews::Widgets::Members do
|
||||
RSpec.describe Overviews::Widgets::MembersController do
|
||||
shared_let(:project) { create(:project) }
|
||||
shared_let(:user) { create(:user, member_with_permissions: { project => %i[view_member] }) }
|
||||
shared_let(:user) { create(:user, member_with_permissions: { project => %i[view_members] }) }
|
||||
current_user { user }
|
||||
|
||||
describe "GET #show" do
|
||||
|
||||
@@ -34,5 +34,5 @@ require "support/permission_specs"
|
||||
RSpec.describe Overviews::Widgets::MembersController, "permissions", type: :controller do # rubocop:disable RSpec/EmptyExampleGroup,RSpec/SpecFilePathFormat
|
||||
include PermissionSpecs
|
||||
|
||||
check_permission_required_for("overviews/widgets/members#show", :view_member)
|
||||
check_permission_required_for("overviews/widgets/members#show", :view_members)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user