Make it possible to select favourites events
Make it possible for users to select events which they want to see in the public schedule and in the All events section of the public schedule.
This commit is contained in:
parent
39e05a29fa
commit
c6906675f9
5 changed files with 80 additions and 17 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
// ADMIN SCHEDULE
|
||||||
|
|
||||||
var url; // Should be initialize in Schedule.initialize
|
var url; // Should be initialize in Schedule.initialize
|
||||||
var schedule_id; // Should be initialize in Schedule.initialize
|
var schedule_id; // Should be initialize in Schedule.initialize
|
||||||
|
|
||||||
|
|
@ -114,6 +116,34 @@ $(document).ready( function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// PUBLIC SCHEDULE
|
||||||
|
|
||||||
|
function starClicked(e){
|
||||||
|
// stops the click from propagating
|
||||||
|
if (!e) var e = window.event;
|
||||||
|
e.preventDefault();
|
||||||
|
e.cancelBubble = true;
|
||||||
|
if (e.stopPropagation) e.stopPropagation();
|
||||||
|
|
||||||
|
var callback = function(data) {
|
||||||
|
$(e.target).toggleClass('fa-star fa-star-o');
|
||||||
|
}
|
||||||
|
|
||||||
|
var params = { favourite_user_id: $(e.target).data('user') };
|
||||||
|
if($(e.target).hasClass('fa-star-o')){
|
||||||
|
params['add'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: $(e.target).data('url'),
|
||||||
|
type: 'PATCH',
|
||||||
|
data: params,
|
||||||
|
success: callback,
|
||||||
|
dataType : 'json'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function eventClicked(e, element){
|
function eventClicked(e, element){
|
||||||
var url = $(element).data('url');
|
var url = $(element).data('url');
|
||||||
if(e.ctrlKey)
|
if(e.ctrlKey)
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,15 @@ td.no-padding{
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#star{
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#star-events{
|
||||||
|
margin-right: 5px;
|
||||||
|
vertical-align: text-top;
|
||||||
|
}
|
||||||
|
|
||||||
/* Small devices (tablets, 768px and up) */
|
/* Small devices (tablets, 768px and up) */
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.room, .event-title{
|
.room, .event-title{
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,8 @@ class ProposalsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
respond_to do |format|
|
||||||
|
format.html do
|
||||||
@url = conference_program_proposal_path(@conference.short_title, params[:id])
|
@url = conference_program_proposal_path(@conference.short_title, params[:id])
|
||||||
|
|
||||||
track = Track.find_by(id: params[:event][:track_id])
|
track = Track.find_by(id: params[:event][:track_id])
|
||||||
|
|
@ -81,10 +83,22 @@ class ProposalsController < ApplicationController
|
||||||
redirect_to conference_program_proposals_path(conference_id: @conference.short_title),
|
redirect_to conference_program_proposals_path(conference_id: @conference.short_title),
|
||||||
notice: 'Proposal was successfully updated.'
|
notice: 'Proposal was successfully updated.'
|
||||||
else
|
else
|
||||||
flash.now[:error] = "Could not update proposal: #{@event.errors.full_messages.join(', ')}"
|
flash[:error] = "Could not update proposal: #{@event.errors.full_messages.join(', ')}"
|
||||||
render action: 'edit'
|
render action: 'edit'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
format.json do
|
||||||
|
user = User.find(params[:favourite_user_id])
|
||||||
|
users = @event.favourite_users
|
||||||
|
if users.include? user
|
||||||
|
@event.favourite_users.delete(user)
|
||||||
|
else
|
||||||
|
@event.favourite_users << User.find(params[:favourite_user_id])
|
||||||
|
end
|
||||||
|
render json: {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def withdraw
|
def withdraw
|
||||||
authorize! :update, @event
|
authorize! :update, @event
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,15 @@
|
||||||
= image_tag speaker.gravatar_url, :class => "img-circle pull-right all-speaker-pic", |
|
= image_tag speaker.gravatar_url, :class => "img-circle pull-right all-speaker-pic", |
|
||||||
:alt => speaker.name, |
|
:alt => speaker.name, |
|
||||||
:title => speaker.name |
|
:title => speaker.name |
|
||||||
|
|
||||||
%p
|
%p
|
||||||
= canceled_replacement_event_label(event, event_schedule)
|
= canceled_replacement_event_label(event, event_schedule)
|
||||||
= replacement_event_notice(event_schedule)
|
= replacement_event_notice(event_schedule)
|
||||||
|
- if current_user
|
||||||
|
= link_to('#', onClick: 'starClicked();') do
|
||||||
|
%span#star-events{ class: "fa fa-lg #{ event.favourite_users.exists?(current_user.id) ? 'fa-star' : 'fa-star-o' }", |
|
||||||
|
"aria-hidden" => "true", |
|
||||||
|
"data-url" => conference_program_proposal_path(@conference.short_title, event.id), |
|
||||||
|
"data-user" => current_user.id }
|
||||||
%span.h3
|
%span.h3
|
||||||
= event.title
|
= event.title
|
||||||
%br
|
%br
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
%td.event{ width: "#{ width * span }%" , |
|
%td.event{ width: "#{ width * span }%" , |
|
||||||
colspan: span, |
|
colspan: span, |
|
||||||
role: "button" }
|
role: "button" }
|
||||||
%a.unstyled-link{href: url_for(conference_program_proposal_path(@conference.short_title, event.id))}
|
%div{ onClick: 'eventClicked(event, this);', "data-url" => "#{url_for(conference_program_proposal_path(@conference.short_title, event.id))}" }
|
||||||
%div{ class: "elipsis break-words event-title", |
|
%div{ class: "elipsis break-words event-title", |
|
||||||
style: "-webkit-line-clamp: #{ event_lines(@rooms) }; height: #{ event_height(@rooms) }px;"} |
|
style: "-webkit-line-clamp: #{ event_lines(@rooms) }; height: #{ event_height(@rooms) }px;"} |
|
||||||
|
|
||||||
|
|
@ -9,9 +9,15 @@
|
||||||
|
|
||||||
= event.title
|
= event.title
|
||||||
|
|
||||||
|
- if current_user
|
||||||
|
= link_to('#', onClick: 'starClicked();') do
|
||||||
|
%span#star{ class: "fa fa-lg #{ event.favourite_users.exists?(current_user.id) ? 'fa-star' : 'fa-star-o' }", |
|
||||||
|
"aria-hidden" =>"true", |
|
||||||
|
"data-url" => conference_program_proposal_path(@conference.short_title, event.id), |
|
||||||
|
"data-user" => current_user.id }
|
||||||
|
|
||||||
- event.speakers_ordered.each do |speaker|
|
- event.speakers_ordered.each do |speaker|
|
||||||
= image_tag speaker.gravatar_url, :class => "img-circle pull-right speaker-pic", |
|
= image_tag speaker.gravatar_url, :class => "img-circle pull-right speaker-pic", |
|
||||||
:alt => speaker.name, |
|
:alt => speaker.name, |
|
||||||
:title => speaker.name, |
|
:title => speaker.name, |
|
||||||
:style => "height: #{ speaker_height(@rooms) }px; width: #{ speaker_width(@rooms) }px;"
|
:style => "height: #{ speaker_height(@rooms) }px; width: #{ speaker_width(@rooms) }px;"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue