diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index 086a5c238..30da15afe 100644 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -179,6 +179,10 @@ html { margin: 14px 0; padding: 5px 20px; + .post__group_label { + margin-left: 10px; + } + h4 { font-weight: bold; display: block; @@ -710,3 +714,9 @@ label[required]::after{ line-height: 1.6em; } } + +.inline-checkbox { + vertical-align: middle; + display: inline; + margin: 0 !important; +} diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 71c35f9b1..83d88fea2 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -108,7 +108,7 @@ def set_user_id(p) def post_params permitted_fields = [:description, :end_on, :global, :joinable, :permanent, - :start_on, :title, :category_id, :user_id, + :start_on, :title, :category_id, :user_id, :is_group, :publisher_id, :active, tag_list: []] params.fetch(resource, {}).permit(*permitted_fields).tap do |p| diff --git a/app/views/shared/_post.html.erb b/app/views/shared/_post.html.erb index 3751e5de3..15ee103f5 100644 --- a/app/views/shared/_post.html.erb +++ b/app/views/shared/_post.html.erb @@ -7,6 +7,9 @@

<%= post.class.model_name.human %> + <% if post.is_group %> +
<%= I18n.t("activerecord.attributes.#{post.class.name.downcase}.is_group") %>
+ <% end %>

diff --git a/app/views/shared/_post_form.html.erb b/app/views/shared/_post_form.html.erb index 7717e54c2..59613136a 100644 --- a/app/views/shared/_post_form.html.erb +++ b/app/views/shared/_post_form.html.erb @@ -24,6 +24,10 @@ { include_blank: true }, class: "form-control" %>
+
+ <%= label :post, :is_group, I18n.t("shared.post_form.group_#{post.class.name.downcase}"), required: true %> + <%= f.check_box :is_group, class: 'inline-checkbox' %> +
<%= f.label :tag_list %> <%= f.select :tag_list, diff --git a/app/views/shared/_posts.html.erb b/app/views/shared/_posts.html.erb index 1e2dc89e6..69fbd1e7c 100644 --- a/app/views/shared/_posts.html.erb +++ b/app/views/shared/_posts.html.erb @@ -2,6 +2,9 @@

<%= link_to post.title, post %> + <% if post.is_group %> +
<%= I18n.t("activerecord.attributes.#{post.class.name.downcase}.is_group") %>
+ <% end %>

<%= strip_tags(post.rendered_description.to_html) %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 199e837fc..0bdfdcba8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -34,6 +34,10 @@ en: reg_number_seq: User sequence number theme: Theme updated_at: Updated + offer: + is_group: Group offer + inquiry: + is_group: Group inquiry post: category: Category created_at: Created @@ -419,6 +423,8 @@ en: delete_reason: Are you sure to delete this comment? movements: Movements post_form: + group_offer: Is it a group offer? + group_inquiry: Is it a group inquiry? you_can_use: You can use simple_form: error_notification: diff --git a/db/migrate/20190319121401_add_is_group_to_post.rb b/db/migrate/20190319121401_add_is_group_to_post.rb new file mode 100644 index 000000000..5e62aee63 --- /dev/null +++ b/db/migrate/20190319121401_add_is_group_to_post.rb @@ -0,0 +1,5 @@ +class AddIsGroupToPost < ActiveRecord::Migration + def change + add_column :posts, :is_group, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 38963d039..bcb4a05c1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20181004200104) do +ActiveRecord::Schema.define(version: 20190319121401) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -146,10 +146,11 @@ t.boolean "global" t.datetime "created_at" t.datetime "updated_at" - t.text "tags", array: true + t.text "tags", array: true t.integer "publisher_id" t.integer "organization_id" t.boolean "active", default: true + t.boolean "is_group", default: false end add_index "posts", ["category_id"], name: "index_posts_on_category_id", using: :btree diff --git a/spec/views/inquiries/show.html.erb_spec.rb b/spec/views/inquiries/show.html.erb_spec.rb new file mode 100644 index 000000000..6fea82f5c --- /dev/null +++ b/spec/views/inquiries/show.html.erb_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' + +RSpec.describe 'inquiries/show' do + let(:organization) { Fabricate(:organization) } + let(:member) { Fabricate(:member, organization: organization) } + let(:inquiry) { Fabricate(:inquiry, user: member.user, organization: organization) } + let(:group_inquiry) { Fabricate(:inquiry, user: member.user, organization: organization, is_group: true) } + let(:destination_account) { Fabricate(:account) } + + + context 'when the user is not logged in' do + before do + allow(view).to receive(:current_user).and_return(nil) + allow(view).to receive(:current_organization).and_return(nil) + end + + context 'when it is not a group inquiry' do + it 'displays a label' do + assign :inquiry, inquiry + assign :destination_account, destination_account + render template: 'inquiries/show' + + expect(rendered).to_not include(I18n.t('activerecord.attributes.inquiry.is_group')) + end + end + + context 'when it is a group inquiry' do + it 'displays a label' do + assign :inquiry, group_inquiry + assign :destination_account, destination_account + render template: 'inquiries/show' + + expect(rendered).to include(I18n.t('activerecord.attributes.inquiry.is_group')) + end + end + end +end diff --git a/spec/views/offers/show.html.erb_spec.rb b/spec/views/offers/show.html.erb_spec.rb index 42b992c78..f7cdf4338 100644 --- a/spec/views/offers/show.html.erb_spec.rb +++ b/spec/views/offers/show.html.erb_spec.rb @@ -4,6 +4,7 @@ let(:organization) { Fabricate(:organization) } let(:member) { Fabricate(:member, organization: organization) } let(:offer) { Fabricate(:offer, user: member.user, organization: organization) } + let(:group_offer) { Fabricate(:offer, user: member.user, organization: organization, is_group: true) } let(:destination_account) { Fabricate(:account) } before do @@ -152,5 +153,25 @@ expect(rendered).to_not include(offer.user.email) end + + context 'when it is not a group offer' do + it 'displays a label' do + assign :offer, offer + assign :destination_account, destination_account + render template: 'offers/show' + + expect(rendered).to_not include(I18n.t('activerecord.attributes.offer.is_group')) + end + end + + context 'when it is a group offer' do + it 'displays a label' do + assign :offer, group_offer + assign :destination_account, destination_account + render template: 'offers/show' + + expect(rendered).to include(I18n.t('activerecord.attributes.offer.is_group')) + end + end end end