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

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
class Participation < ActiveRecord::Base class Participation < ActiveRecord::Base
belongs_to :participant, class_name: User belongs_to :participant, class_name: User
belongs_to :event belongs_to :event
validates :participant_id, presence: true
scope :approved, ->() { where approved: true } scope :approved, ->() { where approved: true }
scope :pending, ->() { where.not approved: true } scope :pending, ->() { where.not approved: true }
end 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 .row
.col-xs-12
h1.page-header
= @event.title
small<
= @event.subtitle
.col-lg-12 .col-lg-12
= simple_nested_form_for [:management, @conference, @event], wrapper: :horizontal_form, html: { class: 'form-horizontal' } do |f| = 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'
.panel-body
.row
.col-lg-12
= f.input :title = f.input :title
= f.input :subtitle = f.input :subtitle
= f.input :length = f.association :event_type
= f.input :language, collection: %w(en bg) = 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 :abstract
= f.input :description = f.input :description
= f.input :notes = 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-footer.text-right .text-right
= f.submit class: 'btn btn-primary' .btn-group
= action_buttons(@conference, @event, [:index, :show])
= f.submit class: 'btn btn-warning'

View File

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