[Done] Fix update and create events (#404)

* Close out a div properly

* Rename file to .html.erb

* Move new event form back to index page

* Update test to use index view
This commit is contained in:
Andy Zhao 2018-06-07 15:35:09 -04:00 committed by Ben Halpern
parent 532c379eff
commit d6a7102f3b
6 changed files with 69 additions and 83 deletions

View file

@ -2,36 +2,35 @@ module Internal
class EventsController < ApplicationController
layout "internal"
def index
@events = Event.order("starts_at ASC")
end
def new
@event = Event.new(
location_name: "dev.to/live",
location_url: "https://dev.to",
description_markdown: "*Description* *Pre-requisites:* *Bio*"
description_markdown: "*Description* *Pre-requisites:* *Bio*",
)
@events = Event.order("starts_at ASC")
end
def create
@event = Event.new(event_params)
if @event.save!
@events = Event.order("starts_at ASC")
if @event.save
flash[:success] = "Successfully created event: #{@event.title}"
redirect_to(action: :index)
else
flash[:danger] = @event.errors.full_messages
render "new.html.erb"
render "index.html.erb"
end
end
def update
@event = Event.find(params[:id])
@events = Event.order("starts_at ASC")
if @event.update(event_params)
CacheBuster.new.bust "/live_articles"
flash[:success] = "#{@event.title} was successfully updated"
redirect_to "/internal/events"
else
flash[:danger] = @event.errors.full_messages
@events = Event.order("starts_at ASC")
render "index.html.erb"
end
end

View file

@ -1,58 +0,0 @@
<div>
<%= f.label :cover_image %>:
<%= f.file_field :cover_image %>
</div>
<br>
<div>
<img src="<%= event.profile_image_url %>" style="width: 25%;">
<br>
<%= f.label :profile_image %> (for live notification):
<%= f.file_field :profile_image %>
</div>
<br>
<div>
<%= f.label :title %>
<%= f.text_field :title, maxlength: 90, size: 40, required: true %>
</div>
<div>
<%= f.label :host_name %>
<%= f.text_field :host_name, size: 40, required: true %>
</div>
<div>
<%= f.label :category %>
<%= f.select :category, ['AMA', 'Workshop', 'Talk', 'Town Hall'], required: true %>
</div>
<div>
<%= f.label :starts_at %>
<%= f.datetime_select :starts_at, required: true, include_blank: true, start_year: Date.today.year, end_year: Date.today.year + 2 %> UTC Time Only (4 hours ahead of eastern time)
</div>
<div>
<%= f.label :ends_at %>
<%= f.datetime_select :ends_at, required: true, include_blank: true, start_year: Date.today.year, end_year: Date.today.year + 2 %> UTC Time Only (4 hours ahead of eastern time)
</div>
<div>
<%= f.label :location_name %>
<%= f.text_field :location_name, required: true %>
</div>
<div>
<%= f.label :location_url %>
<%= f.text_field :location_url, required: true %>
</div>
<div>
<%= f.label :description_markdown %>
<br>
<%= f.text_area :description_markdown, size: "45x10", required: true %>
</div>
<div>
<%= f.label :publish %>
<%= f.check_box :published %>
<div>
<div>
<%= f.label :live_now %>
<%= f.check_box :live_now %>
</div>
<%= f.submit %>
</div>
<hr>

View file

@ -0,0 +1,41 @@
<%= f.label :cover_image %>:
<%= f.file_field :cover_image %>
<br>
<img src="<%= event.profile_image_url %>" style="width: 25%;">
<br>
<%= f.label :profile_image %> (for live notification):
<%= f.file_field :profile_image %>
<br>
<%= f.label :title %>
<%= f.text_field :title, maxlength: 90, size: 40, required: true %>
<br>
<%= f.label :host_name %>
<%= f.text_field :host_name, size: 40, required: true %>
<br>
<%= f.label :category %>
<%= f.select :category, ['AMA', 'Workshop', 'Talk', 'Town Hall'], required: true %>
<br>
<%= f.label :starts_at %>
<%= f.datetime_select :starts_at, required: true, include_blank: true, start_year: Date.today.year, end_year: Date.today.year + 2 %> UTC Time Only (4 hours ahead of eastern time)
<br>
<%= f.label :ends_at %>
<%= f.datetime_select :ends_at, required: true, include_blank: true, start_year: Date.today.year, end_year: Date.today.year + 2 %> UTC Time Only (4 hours ahead of eastern time)
<br>
<%= f.label :location_name %>
<%= f.text_field :location_name, required: true %>
<br>
<%= f.label :location_url %>
<%= f.text_field :location_url, required: true %>
<br>
<%= f.label :description_markdown %>
<br>
<%= f.text_area :description_markdown, size: "45x10", required: true %>
<br>
<%= f.label :publish %>
<%= f.check_box :published %>
<br>
<%= f.label :live_now %>
<%= f.check_box :live_now %>
<br>
<%= f.submit %>
<hr>

View file

@ -4,16 +4,26 @@
}
</style>
<h1><a href="/internal/events/new">Create New Event</a></h1>
<h1>Create New Event</h1>
<hr>
<div class="event-form">
<%= form_for @event, url: { controller: "events", action: "create" } do |f| %>
<%= render "event_form", f: f, event: @event %>
<% end %>
</div>
<div class="event-list">
<h1> Upcoming Events </h1>
<% @events.each do |event| %>
<% if event.starts_at.future? %>
<img src="<%= event.cover_image_url %>">
<%= form_for [:internal, event] do |f| %>
<%= render 'event_form', f:f, event: event %>
<% end %>
<div class="event-form">
<%= form_for [:internal, event] do |f| %>
<%= render 'event_form', f:f, event: event %>
<% end %>
</div>
<% end %>
<% end %>
<br>
@ -21,9 +31,11 @@
<% @events.each do |event| %>
<% if !event.starts_at.future? %>
<img src="<%= event.cover_image_url %>">
<%= form_for [:internal, event] do |f| %>
<%= render 'event_form', f:f, event: event %>
<% end %>
<div class="event-form">
<%= form_for [:internal, event] do |f| %>
<%= render 'event_form', f:f, event: event %>
<% end %>
</div>
<% end %>
<br>
<% end %>

View file

@ -1,8 +0,0 @@
<h1><a href="/internal/events">See All Events</a></h1>
<h1>Create New Event</h1>
<hr>
<%= form_for @event, url: { controller: "events", action: "create" } do |f| %>
<%= render "event_form", f: f, event: @event %>
<% end %>

View file

@ -9,7 +9,7 @@ feature "Admin creates new event" do
end
before do
visit "/internal/events/new"
visit "/internal/events"
end
def select_date_and_time(year, month, date, hour, min, field_name)
@ -28,7 +28,7 @@ feature "Admin creates new event" do
click_button("Create Event")
end
it "loads /internal/events/new" do
it "loads /internal/events" do
expect(page).to have_content("Create New Event")
end