[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:
parent
532c379eff
commit
d6a7102f3b
6 changed files with 69 additions and 83 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
41
app/views/internal/events/_event_form.html.erb
Normal file
41
app/views/internal/events/_event_form.html.erb
Normal 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>
|
||||
|
|
@ -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 %>
|
||||
|
|
|
|||
|
|
@ -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 %>
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue