Reimplement event editing from the admin interface

This commit is contained in:
Petko Bordjukov 2016-10-09 02:13:36 +03:00
parent e53d4575e6
commit f6302ea377
6 changed files with 62 additions and 30 deletions

View File

@ -20,4 +20,11 @@ select.date, select.datetime, select.time {
form .text {
height: 180px;
}
}
}
.form-horizontal {
div.boolean {
padding: 10px;
@extend .col-sm-offset-3;
}
}

View File

@ -21,9 +21,9 @@ module Management
@conference = find_conference
@event = @conference.events.find(params[:id])
if @event.update_attributes(event_params)
if @event.update(event_params)
flash[:notice] = 'Event was successfully updated.'
redirect_to [:management, @event]
redirect_to [:management, @conference, @event]
else
render action: 'edit'
end
@ -45,14 +45,22 @@ module Management
def event_params
params.require(:event).permit(
:title,
:subtitle,
:length,
:language,
:abstract,
:description,
:notes
)
:title,
:subtitle,
:length,
:language,
:abstract,
:description,
:notes,
:track_id,
:event_type_id,
participations_attributes: [
:id,
:participant_id,
:approved,
:_destroy
]
)
end
end
end

View File

@ -26,6 +26,8 @@ class Event < ActiveRecord::Base
delegate :status, to: :proposition
accepts_nested_attributes_for :participations, allow_destroy: true
def all_participants_have_profiles?
participants.all? do |participant|
participant.personal_profile(conference).present?

View File

@ -1,7 +1,7 @@
class Participation < ActiveRecord::Base
belongs_to :participant, class_name: User
belongs_to :event
validates :participant_id, presence: true
scope :approved, ->() { where approved: true }
scope :pending, ->() { where.not approved: true }
end

View File

@ -1,22 +1,31 @@
- content_for :title
= t('.edit', event_type: @event.event_type.name.mb_chars.downcase, event_title: @event.title)
.row
.col-xs-12
h1.page-header
= @event.title
small<
= @event.subtitle
.col-lg-12
= simple_nested_form_for [:management, @conference, @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, @conference, @event], class: 'btn btn-xs btn-info pull-right'
= f.input :title
= f.input :subtitle
= f.association :event_type
= f.association :track, collection: current_conference.tracks.map { |track| [track.name, track.id, {title: track.description}] }
= f.input :length, hint: t('simple_form.hints.event.length', type: @event.event_type.name.mb_chars.downcase, min: @event.event_type.minimum_length, max: @event.event_type.maximum_length)
= f.input :language, collection: locale_collection, include_blank: false
= f.input :abstract
= f.input :description
= f.input :notes
hr
.row
.col-lg-12
h2 = Participation.model_name.human(count: 2).mb_chars.capitalize
.row
= render partial: 'form_participations', locals: {form: f}
.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'
.text-right
.btn-group
= action_buttons(@conference, @event, [:index, :show])
= f.submit class: 'btn btn-warning'

View File

@ -49,6 +49,9 @@ bg:
title: "Преглед на %{model}"
activerecord:
attributes:
participation:
participant: Участник
approved: Потвърдено от участника
proposition:
status: Състояние
statuses:
@ -149,6 +152,9 @@ bg:
volunteer_teams:
invalid_volunteer_team: "невалиден екип от доброволци"
models:
participation:
one: Участие
other: Участия
volunteership:
one: доброволец
other: доброволци