Enable addition of slides to event
This commit is contained in:
parent
deebcbc95a
commit
89b184f776
|
@ -4,7 +4,7 @@ class Api::EventsController < Api::ApplicationController
|
|||
before_action :require_current_conference!
|
||||
|
||||
def index
|
||||
@events = current_conference.events.approved.joins(:proposition).includes(:participations)
|
||||
@events = current_conference.events.approved.joins(:proposition).includes(:participations).with_attached_resources_bundle
|
||||
end
|
||||
|
||||
def halfnarp_friendly
|
||||
|
|
|
@ -9,6 +9,7 @@ module Management
|
|||
.eager_load(:participants_with_personal_profiles,
|
||||
:proposition, :proposer, {track: [:translations]},
|
||||
{event_type: [:translations]}, :feedbacks)
|
||||
.with_attached_resources_bundle
|
||||
.preload(:conference), filters: params[:filters]).results
|
||||
|
||||
# @events = @conference.events.order(:title).includes(:proposition, :proposer, :track, :event_type)
|
||||
|
@ -76,6 +77,7 @@ module Management
|
|||
:abstract,
|
||||
:description,
|
||||
:notes,
|
||||
:resources_bundle,
|
||||
:track_id,
|
||||
:event_type_id,
|
||||
participations_attributes: [
|
||||
|
|
|
@ -2,12 +2,16 @@ module Public
|
|||
class EventsController < Public::ApplicationController
|
||||
before_action :authenticate_user!
|
||||
|
||||
def current_user_events
|
||||
Event.joins(:conference, :proposition, :participations).where(conference: current_conference).where("propositions.proposer_id = ? OR participations.participant_id = ?", current_user.id, current_user.id)
|
||||
end
|
||||
|
||||
def index
|
||||
@events = Event.joins(:conference, :proposition, :participations).where(conference: current_conference).where("propositions.proposer_id = ? OR participations.participant_id = ?", current_user.id, current_user.id)
|
||||
@events = current_user_events
|
||||
end
|
||||
|
||||
def edit
|
||||
@event = Event.joins(:participations).find_by(id: params[:id], participations: {participant_id: current_user.id})
|
||||
@event = current_user_events.find_by(id: params[:id])
|
||||
end
|
||||
|
||||
def new
|
||||
|
@ -30,9 +34,9 @@ module Public
|
|||
end
|
||||
|
||||
def update
|
||||
@event = Event.joins(:participations).find_by(id: params[:id], participations: {participant_id: current_user.id})
|
||||
@event = current_user_events.find_by(id: params[:id])
|
||||
|
||||
if @event.update(event_params)
|
||||
if @event.fields_editable_by_participant && @event.update(event_params.permit(@event.fields_editable_by_participant))
|
||||
flash[:notice] = I18n.t("views.events.event_successfully_updated", event_type: @event.event_type.name.mb_chars.downcase)
|
||||
after_save_redirect
|
||||
else
|
||||
|
@ -56,9 +60,7 @@ module Public
|
|||
|
||||
def event_params
|
||||
params.require(:event).permit(
|
||||
:title, :subtitle, :track_id, :length, :language,
|
||||
:abstract, :description, :notes, :agreement,
|
||||
:event_type_id
|
||||
Event.new.fields_editable_by_participant
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ class Event < ActiveRecord::Base
|
|||
has_many :participants_with_personal_profiles, through: :approved_participations, source: :participant_with_personal_profile
|
||||
has_many :conflict_counts, -> { order(number_of_conflicts: :desc) }, foreign_key: :left_id
|
||||
|
||||
has_one_attached :resources_bundle
|
||||
|
||||
has_many :feedbacks, as: :feedback_receiving
|
||||
has_many :feedbacks_with_comment, -> { where.not(comment: [nil, ""]) }, as: :feedback_receiving, class_name: 'Feedback'
|
||||
include FeedbackReceiving
|
||||
|
@ -69,6 +71,25 @@ class Event < ActiveRecord::Base
|
|||
}
|
||||
end
|
||||
|
||||
def fields_editable_by_participant
|
||||
if not id or conference.start_date > 7.days.from_now
|
||||
[
|
||||
:title, :subtitle, :track_id, :length, :language,
|
||||
:abstract, :description, :notes,
|
||||
:resources_bundle,
|
||||
:agreement,
|
||||
:event_type_id
|
||||
]
|
||||
elsif conference.end_date > -14.days.from_now
|
||||
[
|
||||
:resources_bundle,
|
||||
:agreement,
|
||||
]
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def ranked?
|
||||
conference.has_vote_results? && rank.present? && number_of_votes.present?
|
||||
end
|
||||
|
|
|
@ -11,5 +11,6 @@
|
|||
json.participant_user_ids event.participations.map(&:participant_id)
|
||||
json.feedback_url new_event_feedback_url(event_id: event.id)
|
||||
json.feedback_qr_code_url event_feedback_qr_code_url(event_id: event.id, format: :svg)
|
||||
json.resources_bundle ((event.resources_bundle.attached? && event.conference.end_date < 0.days.from_now) ? rails_blob_url(event.resources_bundle, disposition: "attachment") : nil)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,6 +18,13 @@
|
|||
= f.input :abstract
|
||||
= f.input :description
|
||||
= f.input :notes
|
||||
div class="form-group file optional resources_bundle"
|
||||
dev class="col-sm-3 control-label text optional"
|
||||
= f.label :resources_bundle
|
||||
.col-sm-9
|
||||
= link_to @event.resources_bundle.filename, rails_blob_url(@event.resources_bundle.blob, disposition: "attachment") if @event.resources_bundle.attached?
|
||||
= f.hidden_field :resources_bundle, value:@event.resources_bundle.signed_id if @event.resources_bundle.attached?
|
||||
= f.input :resources_bundle, as: :file, wrapper: false, input_html: {direct_upload: true}, label: false
|
||||
hr
|
||||
.row
|
||||
.col-lg-12
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<%- csv_headers = %w{id title subtitle type track language paticipants length status rank number_of_votes proposer_notes} -%>
|
||||
<%- csv_headers = %w{id title subtitle type track language participants length status rank number_of_votes abstract description proposer_notes resources_bundle} -%>
|
||||
<%= CSV.generate_line(csv_headers).html_safe -%>
|
||||
<%- @events.each do |event| -%>
|
||||
<%= CSV.generate_line([event.id, event.title, event.subtitle, event.event_type.name, event.track.name, event.language, participant_names_with_emails(event).join(', '), event.length, event.status, event.rank, event.number_of_votes, event.notes]).html_safe -%>
|
||||
<%= CSV.generate_line([event.id, event.title, event.subtitle, event.event_type.name, event.track.name, event.language, participant_names_with_emails(event).join(', '), event.length, event.status, event.rank, event.number_of_votes, event.abstract, event.description, event.notes, (rails_blob_url(event.resources_bundle, disposition: "attachment") if event.resources_bundle.attached?)]).html_safe -%>
|
||||
<%- end -%>
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
- if @event.notes.present?
|
||||
h3 = Event.human_attribute_name :notes
|
||||
p = simple_format @event.notes
|
||||
- if @event.resources_bundle.attached?
|
||||
h3 = Event.human_attribute_name :resources_bundle
|
||||
p = link_to @event.resources_bundle.filename, rails_blob_url(@event.resources_bundle.blob, disposition: "attachment")
|
||||
- if @conference.has_vote_results? or @conference.has_voting_endpoint?
|
||||
.col-md-3
|
||||
.panel.panel-info.panel-rank
|
||||
|
|
|
@ -84,6 +84,7 @@ bg:
|
|||
language: "Език"
|
||||
length: "Продължителност"
|
||||
notes: "Допълнителни бележки"
|
||||
resources_bundle: "Ресурси (презентация, код, ...)"
|
||||
subtitle: "Подзаглавие"
|
||||
title: "Заглавие"
|
||||
track: "Поток от лекции"
|
||||
|
@ -357,6 +358,7 @@ bg:
|
|||
language: ""
|
||||
length: "Продължителността на събитието (в минути). Продължителността на %{type} е между %{min} и %{max} минути, заедно с въпросите"
|
||||
notes: "Допълнителни бележки, които искате да споделите с организаторския екип"
|
||||
resources_bundle: "Ресурси за посетителите - слайдове, код, записки, файл с връзки, архив... Те ще бъдат предоставени налични за сваляне от посетителите след конференцията."
|
||||
subtitle: ""
|
||||
title: ""
|
||||
track: "Потокът от лекции, в който искате да попадне предложението ви"
|
||||
|
|
|
@ -84,6 +84,7 @@ en:
|
|||
language: "Language"
|
||||
length: "Length"
|
||||
notes: "Notes"
|
||||
resources_bundle: "Resources bundle"
|
||||
subtitle: "Sub-title"
|
||||
title: "Title"
|
||||
track: "Track"
|
||||
|
@ -357,6 +358,7 @@ en:
|
|||
language: ""
|
||||
length: "Length of the event (in minutes). The length of a %{type} is between %{min} and %{max} minutes"
|
||||
notes: "Notes that you'd like the organisation team to read"
|
||||
resources_bundle: "Resources for the visitors - slides, code, notes, file with links, archive... These will be available to the visitors after the conference."
|
||||
subtitle: ""
|
||||
title: ""
|
||||
track: "The lecture track for your event"
|
||||
|
|
|
@ -1,18 +1,22 @@
|
|||
= simple_form_for @event, wrapper: :default do |form|
|
||||
= form.input :event_type_id, as: :hidden, wrapper: false
|
||||
= form.input :event_type_id, as: :hidden, wrapper: false, disabled: :event_type.in?(@event.fields_editable_by_participant)
|
||||
|
||||
p
|
||||
= form.error_notification
|
||||
|
||||
.form-inputs
|
||||
= form.input :title, autofocus: true
|
||||
= form.input :subtitle
|
||||
= form.association :track, wrapper: :default, collection: current_conference.tracks.map { |track| [track.name, track.id, {title: track.description}] }
|
||||
= form.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)
|
||||
= form.input :language, as: :radio_buttons, collection: locale_collection, include_blank: false, wrapper: :default
|
||||
= form.input :abstract
|
||||
= form.input :description
|
||||
= form.input :notes
|
||||
= form.input :title, autofocus: true, disabled: !:title.in?(@event.fields_editable_by_participant)
|
||||
= form.input :subtitle, disabled: !:subtitle.in?(@event.fields_editable_by_participant)
|
||||
= form.association :track, wrapper: :default, collection: current_conference.tracks.map { |track| [track.name, track.id, {title: track.description}] }, disabled: !:track_id.in?(@event.fields_editable_by_participant)
|
||||
= form.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), disabled: !:length.in?(@event.fields_editable_by_participant)
|
||||
= form.input :language, as: :radio_buttons, collection: locale_collection, include_blank: false, wrapper: :default, disabled: !:language.in?(@event.fields_editable_by_participant)
|
||||
= form.input :abstract, disabled: !:abstract.in?(@event.fields_editable_by_participant)
|
||||
= form.input :description, disabled: !:description.in?(@event.fields_editable_by_participant)
|
||||
= form.input :notes, disabled: !:notes.in?(@event.fields_editable_by_participant)
|
||||
.input
|
||||
= link_to @event.resources_bundle.filename, rails_blob_url(@event.resources_bundle.blob, disposition: "attachment") if @event.resources_bundle.attached?
|
||||
= form.hidden_field :resources_bundle, value:@event.resources_bundle.signed_id if @event.resources_bundle.attached?
|
||||
= form.input :resources_bundle, as: :file, wrapper: false, input_html: {direct_upload: true}, disabled: !:resources_bundle.in?(@event.fields_editable_by_participant)
|
||||
|
||||
= form.input :agreement, as: :boolean, wrapper: :default
|
||||
|
||||
|
|
Loading…
Reference in New Issue