From f6302ea3774201544a17a37b7fcd75b6228f74cc Mon Sep 17 00:00:00 2001 From: Petko Bordjukov Date: Sun, 9 Oct 2016 02:13:36 +0300 Subject: [PATCH] Reimplement event editing from the admin interface --- app/assets/stylesheets/management/_forms.scss | 9 +++- .../management/events_controller.rb | 28 +++++++----- app/models/event.rb | 2 + app/models/participation.rb | 2 +- app/views/management/events/edit.html.slim | 45 +++++++++++-------- config/locales/bg.yml | 6 +++ 6 files changed, 62 insertions(+), 30 deletions(-) diff --git a/app/assets/stylesheets/management/_forms.scss b/app/assets/stylesheets/management/_forms.scss index 09a22f7..d82e975 100644 --- a/app/assets/stylesheets/management/_forms.scss +++ b/app/assets/stylesheets/management/_forms.scss @@ -20,4 +20,11 @@ select.date, select.datetime, select.time { form .text { height: 180px; } -} \ No newline at end of file +} + +.form-horizontal { + div.boolean { + padding: 10px; + @extend .col-sm-offset-3; + } +} diff --git a/app/controllers/management/events_controller.rb b/app/controllers/management/events_controller.rb index 44677eb..229634a 100644 --- a/app/controllers/management/events_controller.rb +++ b/app/controllers/management/events_controller.rb @@ -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 diff --git a/app/models/event.rb b/app/models/event.rb index 3ea1076..2199d46 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -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? diff --git a/app/models/participation.rb b/app/models/participation.rb index 0e0b21f..d6506e8 100644 --- a/app/models/participation.rb +++ b/app/models/participation.rb @@ -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 diff --git a/app/views/management/events/edit.html.slim b/app/views/management/events/edit.html.slim index 1f62ddf..766dc40 100644 --- a/app/views/management/events/edit.html.slim +++ b/app/views/management/events/edit.html.slim @@ -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' diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 02e0dfe..cf55568 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -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: доброволци