Add garden stall owner display and update related views and styles

This commit is contained in:
Brenda Wallace committed 2026-11-02 18:06:42 +13:00
1 parent ae8fddbc7b
commit 61e0200be4
9 files changed
+90 -25

No files matched your search

+42 -10
View File
@@ -10,6 +10,42 @@ $stall-label: #fff8e1;
margin: 0 auto;
}
.stall-owner {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1.5rem;
}
.stall-owner-avatar img {
display: block;
border-radius: 50%;
}
.stall-owner-name {
margin: 0;
font-size: 1.4rem;
}
// On the shutter: the avatar over a label, like the "Closed for now" tag.
.stall-shutter .stall-owner {
flex-direction: column;
gap: 0.5rem;
margin: 0;
img {
border: 3px solid $stall-outline;
}
.stall-owner-name {
padding: 2px 14px;
border: 3px solid $stall-outline;
border-radius: 4px 12px 12px 4px;
background: $stall-label;
font-size: 1.1rem;
}
}
.stall {
position: relative;
overflow: clip;
@@ -119,6 +155,8 @@ $stall-label: #fff8e1;
position: absolute;
inset: 0;
z-index: 5;
flex-direction: column;
gap: 1rem;
align-items: center;
justify-content: center;
border: 3px solid $stall-outline;
@@ -142,18 +180,12 @@ $stall-label: #fff8e1;
}
.stall-closed {
.stall-awning {
transform: scaleY(0);
}
min-height: 300px;
.stall-sign,
.stall-table {
opacity: 0;
}
// Keeps the shutter from collapsing to nothing with the contents hidden.
// Nothing shows behind the shutter, and it must not hold the box open.
.stall-awning,
.stall-body {
min-height: 300px;
display: none;
}
}
+1 -1
View File
@@ -23,7 +23,7 @@
.mb-3
= render 'jobs/ideas_banner', href: suggestions_path, open: false,
text: t('.suggested_plantings', count: @suggestion_count), go: t('.suggested_plantings_go')
= render 'stalls/card', garden: @garden
= render 'stalls/card', member: @garden.owner if @garden.nursery?
= render 'gardens/facts', garden: @garden, growing_now: @current_plantings.size
= render 'gardens/description', garden: @garden
= render 'gardens/join_prompt', garden: @garden unless member_signed_in?
+1
View File
@@ -88,6 +88,7 @@
= render "contact", member: @member, flickr_auth: @flickr_auth
.col-md-10#content
= render 'stalls/card', member: @member
.row
%section.order-3.order-md-1.col-12= render "map", member: @member
- if @harvesting.size.positive?
+5 -6
View File
@@ -1,11 +1,10 @@
-# On the nursery garden: where the owner opens their garden stall, or goes to it.
- if garden.nursery? && can?(:edit, garden) && Feature.enabled?(:garden_stall)
- stall = garden.owner.stall
-# Where a member opens their garden stall, or goes to it. Only they see it.
- if member == current_member && Feature.enabled?(:garden_stall)
.stall-card.mb-3
%h2.h5= t('.heading')
- if stall&.open?
- if member.stall&.open?
%p= t('.open_text')
= link_to t('.go'), member_stall_path(garden.owner), class: 'btn btn-outline-success'
= link_to t('.go'), member_stall_path(member), class: 'btn btn-outline-success'
- else
%p= t('.text')
= link_to t('.open'), member_stall_path(garden.owner), class: 'btn btn-success'
= link_to t('.open'), member_stall_path(member), class: 'btn btn-success'
+7
View File
@@ -0,0 +1,7 @@
-# Whose stall this is: their avatar (always a circle) and name.
.stall-owner
= link_to member, class: 'stall-owner-avatar', title: member.to_s do
= image_tag avatar_uri(member, 128), alt: member.to_s, width: 64, height: 64
%p.stall-owner-name
= t('stalls.owner.garden_of')
%strong= link_to member, member
+2 -1
View File
@@ -14,5 +14,6 @@
- %i(seedlings seeds more).each do |spot|
.stall-spot= t(".spots.#{spot}")
.stall-tabletop
.stall-shutter{ 'aria-hidden': 'true' }
.stall-shutter
= render 'stalls/owner', member: member
%span.stall-shutter-sign= t('.closed')
+2 -6
View File
@@ -5,12 +5,8 @@
%li.breadcrumb-item.active= t('.breadcrumb')
.stall-page
.record-identity.mb-4
= render 'shared/record_owner', owner: @member
.record-identity-text
%p.garden-grower
= t('.garden_of')
%strong.record-grower-name= link_to @member, @member
-# Closed, the owner is on the shutter instead.
= render 'stalls/owner', member: @member if @stall.open?
= render 'stalls/stall', member: @member, open: @stall.open?, opening: @opening
+1 -1
View File
@@ -2,7 +2,7 @@
require 'rails_helper'
describe GardensController, 'garden stall card', flipper: :garden_stall do
describe GardensController, '#show', flipper: :garden_stall do
let(:owner) { create(:member) }
let(:nursery) { create(:garden, owner:, nursery: true) }
+29
View File
@@ -0,0 +1,29 @@
# frozen_string_literal: true
require 'rails_helper'
describe MembersController, '#show', flipper: :garden_stall do
let(:owner) { create(:member) }
context 'when members look at their own profile' do
before do
sign_in owner
get member_path(owner)
end
it 'offers to open a stall' do
expect(Capybara.string(response.body)).to have_link('Open a garden stall', href: member_stall_path(owner))
end
end
context 'when someone else looks at the profile' do
before do
sign_in create(:member)
get member_path(owner)
end
it 'has no stall card' do
expect(Capybara.string(response.body)).to have_no_css('.stall-card')
end
end
end