Initial events CRUD
This commit is contained in:
parent
f173f42834
commit
4963c74925
|
@ -1,4 +1,10 @@
|
|||
class ApplicationController < ActionController::Base
|
||||
def require_current_conference
|
||||
if not current_conference?
|
||||
redirect_to '/', alert: 'No conference selected'
|
||||
end
|
||||
end
|
||||
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
|
|
|
@ -1,9 +1,50 @@
|
|||
module Management
|
||||
class EventsController < ManagementController
|
||||
before_action :require_current_conference
|
||||
|
||||
def index
|
||||
# TODO (2015-07-14) Scoped by conference? Why no conference_id
|
||||
@events = Event.all
|
||||
end
|
||||
|
||||
def show
|
||||
@event = Event.find(params[:id])
|
||||
end
|
||||
|
||||
def edit
|
||||
@event = Event.find(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
@event = Event.find(params[:id])
|
||||
|
||||
if @event.update_attributes(event_params)
|
||||
flash[:notice] = 'Event was successfully updated.'
|
||||
redirect_to [:management, @event]
|
||||
else
|
||||
render action: 'edit'
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@event = Event.find(params[:id])
|
||||
@event.destroy
|
||||
|
||||
redirect_to action: :index
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def event_params
|
||||
params.require(:event).permit(
|
||||
:title,
|
||||
:subtitle,
|
||||
:length,
|
||||
:language,
|
||||
:abstract,
|
||||
:description,
|
||||
:notes
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,2 +1,38 @@
|
|||
module ApplicationHelper
|
||||
def action_buttons(record, actions = [:index, :show, :edit, :destroy])
|
||||
klass = record.class
|
||||
output = ''
|
||||
|
||||
if actions.include? :index
|
||||
output += link_to(icon(:list), [:management, klass], {
|
||||
title: t('actions.index.button', models: klass.model_name.human(count: 2)),
|
||||
class: 'btn btn-info'
|
||||
})
|
||||
end
|
||||
|
||||
if actions.include? :show
|
||||
output += link_to(icon(:eye), [:management, record], {
|
||||
title: t('actions.view.button', model: klass.model_name.human),
|
||||
class: 'btn btn-info'
|
||||
})
|
||||
end
|
||||
|
||||
if actions.include? :edit
|
||||
output += link_to(icon(:edit), [:edit, :management, record], {
|
||||
title: t('actions.edit.button', model: klass.model_name.human),
|
||||
class: 'btn btn-primary'
|
||||
})
|
||||
end
|
||||
|
||||
if actions.include? :destroy
|
||||
output += link_to(icon(:trash), [:management, record], {
|
||||
method: :delete,
|
||||
data: {confirm: t('actions.are_you_sure')},
|
||||
title: t('actions.edit.button', model: klass.model_name.human),
|
||||
class: 'btn btn-danger'
|
||||
})
|
||||
end
|
||||
|
||||
output.html_safe
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
.row
|
||||
.col-lg-12
|
||||
= simple_nested_form_for [:management, @event], wrapper: :horizontal_form, html: { class: 'form-horizontal' } do |f|
|
||||
.panel.panel-primary
|
||||
.panel-heading
|
||||
h1.panel-title
|
||||
= t 'views.user.info'
|
||||
= link_to icon(:eye), [:management, @event], class: 'btn btn-xs btn-info pull-right'
|
||||
|
||||
.panel-body
|
||||
.row
|
||||
.col-lg-12
|
||||
= f.input :title
|
||||
= f.input :subtitle
|
||||
= f.input :length
|
||||
= f.input :language, collection: %w(en bg)
|
||||
= f.input :abstract
|
||||
= f.input :description
|
||||
= f.input :notes
|
||||
|
||||
.panel-footer.text-right
|
||||
= f.submit class: 'btn btn-primary'
|
|
@ -1 +1,26 @@
|
|||
p Hello
|
||||
.row
|
||||
.col-lg-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h2.panel-title= Event.model_name.human(count: 2).mb_chars.capitalize
|
||||
|
||||
.panel-body
|
||||
table.table.table-striped.table-hover.record-table
|
||||
thead
|
||||
tr
|
||||
th = Event.human_attribute_name :title
|
||||
th = Event.human_attribute_name :subtitle
|
||||
th = Event.human_attribute_name :length
|
||||
th = Event.human_attribute_name :language
|
||||
th.actions
|
||||
tbody
|
||||
- @events.each do |event|
|
||||
tr
|
||||
td= event.title
|
||||
td= event.subtitle
|
||||
td #{event.length} minutes
|
||||
td= event.language
|
||||
|
||||
td.actions
|
||||
div.btn-group.btn-group-sm
|
||||
= action_buttons(event, [:show, :edit, :destroy])
|
||||
|
|
|
@ -1 +1,25 @@
|
|||
p Hello
|
||||
.row
|
||||
.col-lg-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h2= @event.title
|
||||
br
|
||||
h3= @event.subtitle
|
||||
|
||||
h4 #{Event.human_attribute_name :length}: #{@event.length}m, #{Event.human_attribute_name :language}: #{@event.language}
|
||||
|
||||
.panel-body
|
||||
h3= Event.human_attribute_name :abstract
|
||||
p= simple_format @event.abstract
|
||||
|
||||
h3= Event.human_attribute_name :description
|
||||
p= simple_format @event.description
|
||||
|
||||
h3= Event.human_attribute_name :notes
|
||||
p= simple_format @event.notes
|
||||
|
||||
h3 TODO Author?
|
||||
|
||||
.panel-footer
|
||||
div.btn-group.btn-group-sm
|
||||
= action_buttons(@event, [:index, :edit, :destroy])
|
||||
|
|
|
@ -24,6 +24,9 @@ bg:
|
|||
bg: БГ
|
||||
en: EN
|
||||
actions:
|
||||
index:
|
||||
button: Виж всички %{models}
|
||||
title: Всички %{models}
|
||||
create:
|
||||
button: Създай %{model}
|
||||
title: Създаване на %{model}
|
||||
|
|
Loading…
Reference in New Issue