Skip to content

Commit 5079707

Browse files
authored
Merge branch '2.2' into hm-458
2 parents b8a6f5d + bd9e804 commit 5079707

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+473
-35
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ gem 'jquery-ui-rails'
6565
gem 'selectize-rails'
6666
gem 'highcharts-rails', '~> 6.0'
6767
gem 'bootstrap', '~> 4.3.1'
68+
gem 'fullcalendar-rails'
69+
gem 'momentjs-rails'
6870

6971
# Markdown parsing
7072
gem 'redcarpet'

Gemfile.lock

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ GEM
129129
dotenv (= 2.7.5)
130130
railties (>= 3.2, < 6.1)
131131
errbase (0.2.0)
132-
erubi (1.9.0)
132+
erubi (1.10.0)
133133
erubis (2.7.0)
134134
et-orbi (1.2.4)
135135
tzinfo
@@ -152,6 +152,10 @@ GEM
152152
fugit (1.3.6)
153153
et-orbi (~> 1.1, >= 1.1.8)
154154
raabro (~> 1.3)
155+
fullcalendar-rails (3.9.0.0)
156+
jquery-rails (>= 4.0.5, < 5.0.0)
157+
jquery-ui-rails (>= 5.0.2)
158+
momentjs-rails (>= 2.9.0)
155159
globalid (0.4.2)
156160
activesupport (>= 4.2.0)
157161
groupdate (5.0.0)
@@ -205,7 +209,7 @@ GEM
205209
rb-fsevent (~> 0.9, >= 0.9.4)
206210
rb-inotify (~> 0.9, >= 0.9.7)
207211
ruby_dep (~> 1.2)
208-
loofah (2.7.0)
212+
loofah (2.8.0)
209213
crass (~> 1.0.2)
210214
nokogiri (>= 1.5.9)
211215
lumberjack (1.2.6)
@@ -226,14 +230,16 @@ GEM
226230
builder
227231
minitest (>= 5.0)
228232
ruby-progressbar
233+
momentjs-rails (2.20.1)
234+
railties (>= 3.1)
229235
msgpack (1.3.3)
230236
multi_json (1.15.0)
231237
multi_xml (0.6.0)
232238
multipart-post (2.1.1)
233239
mustache (1.1.1)
234240
mysql2 (0.5.3)
235241
nenv (0.3.0)
236-
nio4r (2.5.3)
242+
nio4r (2.5.4)
237243
nokogiri (1.10.10)
238244
mini_portile2 (~> 2.4.0)
239245
notiffany (0.1.3)
@@ -386,7 +392,7 @@ GEM
386392
sprockets (4.0.2)
387393
concurrent-ruby (~> 1.0)
388394
rack (> 1, < 3)
389-
sprockets-rails (3.2.1)
395+
sprockets-rails (3.2.2)
390396
actionpack (>= 4.0)
391397
activesupport (>= 4.0)
392398
sprockets (>= 3.0.0)
@@ -402,7 +408,7 @@ GEM
402408
turbolinks (5.2.1)
403409
turbolinks-source (~> 5.2)
404410
turbolinks-source (5.2.0)
405-
tzinfo (1.2.7)
411+
tzinfo (1.2.8)
406412
thread_safe (~> 0.1)
407413
uglifier (4.2.0)
408414
execjs (>= 0.3.0, < 3)
@@ -451,6 +457,7 @@ DEPENDENCIES
451457
factory_bot_rails
452458
file_validators
453459
font-awesome-rails (~> 4.0)
460+
fullcalendar-rails
454461
groupdate
455462
guard
456463
guard-minitest
@@ -461,6 +468,7 @@ DEPENDENCIES
461468
jquery-ui-rails
462469
listen (>= 3.0.5, < 3.2)
463470
minitest-reporters
471+
momentjs-rails
464472
mustache (~> 1.0)
465473
mysql2 (>= 0.4.4, < 0.6.0)
466474
omniauth-mlh (~> 0.4.1)

app/assets/javascripts/application.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@
2121
//= require_directory .
2222
//= require_directory ./channels
2323
//= require ./vendor/simplemde.min.js
24+
//= require moment
25+
//= require fullcalendar
26+
//= require fullcalendar/locale-all

app/assets/javascripts/events.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function eventCalendar() {
2+
return $('#calendar').fullCalendar({
3+
defaultView: 'listYear',
4+
buttonText: {
5+
today: 'Today'
6+
},
7+
eventRender: function (event, element, view) {
8+
var description = event.description ? event.description : '';
9+
var location = event.location ? event.location : '';
10+
element.find('.fc-event-dot').css('display','none');
11+
element.find('.fc-list-item-title').append('<div></div><span style="font-size: 12px">' + description + '</span>');
12+
element.find('.fc-list-item-title').append('<div></div><span style="font-size: 12px">' + location + '</span>');
13+
},
14+
events: {
15+
url: '/manage/events.json',
16+
success: function(response) {
17+
// due to "end" being a keyword in ruby and what fullcalender uses it is stored as finish and than it is
18+
// converted to "end" when sending it to fullcalendar
19+
response = JSON.parse(JSON.stringify(response).split('"finish":').join('"end":'));
20+
return response;
21+
}
22+
},
23+
eventClick: function (info) {
24+
window.location = 'events/' + info.id;
25+
},
26+
height: 'auto',
27+
});
28+
}
29+
30+
function clearCalendar() {
31+
$('#calendar').fullCalendar('delete');
32+
$('#calendar').html('');
33+
}
34+
35+
document.addEventListener('turbolinks:load', function () {
36+
eventCalendar();
37+
});
38+
document.addEventListener('turbolinks:before-cache', clearCalendar);

app/assets/stylesheets/manage.sass

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
@import general/variables
77
@import general/css4
88
@import manage/autocomplete
9+
@import manage/events
910

1011
$grey-dark: #555
1112
$grey-med: #999
@@ -15,6 +16,7 @@ $grey-med: #999
1516
@import vendor/datatables.min
1617
@import selectize
1718
@import selectize.default
19+
@import fullcalendar
1820

1921
.icon-space-r
2022
margin-right: 0.5em
@@ -137,6 +139,10 @@ $grey-med: #999
137139
height: calc(100vh - 2.25rem)
138140
overflow: scroll
139141

142+
.calendar-list
143+
width: 100%
144+
min-width: 500px
145+
margin: auto
140146

141147
/*
142148
* Datatable changes
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.fc-list-item
2+
cursor: pointer !important
3+
4+
.event_start select:first-child, .event_finish select:first-child
5+
margin-left: 0 !important
6+
7+
.event_start select:last-child, .event_finish select:last-child
8+
margin-right: 0 !important
9+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
class Manage::EventsController < Manage::ApplicationController
2+
before_action :require_director
3+
respond_to :html, :json
4+
5+
def index
6+
@start_date = HackathonConfig['event_start_date']
7+
respond_to do |format|
8+
format.html
9+
format.json { render json: Event.all }
10+
end
11+
end
12+
13+
def new
14+
@event = ::Event.new
15+
end
16+
17+
def create
18+
@event = ::Event.new(event_params)
19+
if @event.save
20+
redirect_to(manage_events_path)
21+
else
22+
render('new')
23+
end
24+
end
25+
26+
def show
27+
@event = Event.find_by_id(params[:id])
28+
respond_with(:manage, @event)
29+
end
30+
31+
def update
32+
@event = Event.find_by_id(params[:id])
33+
if @event.update(event_params)
34+
redirect_to(manage_events_path)
35+
else
36+
render('show')
37+
end
38+
end
39+
40+
def destroy
41+
@event = Event.find_by_id(params[:id])
42+
if @event.destroy
43+
redirect_to(manage_events_path)
44+
else
45+
render('show')
46+
end
47+
end
48+
49+
def event_params
50+
params.require(:event).permit(
51+
:title, :description, :location, :public, :start, :finish, owner: []
52+
)
53+
end
54+
end

app/models/event.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Event < ApplicationRecord
2+
validates_presence_of :title, :start
3+
4+
validate :finish_before_start
5+
6+
def finish_before_start
7+
return if finish.nil?
8+
unless finish > start
9+
errors.add(:finish, 'time must be after start time')
10+
end
11+
end
12+
end

app/views/application/_questionnaire_summary.html.haml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
= Questionnaire::POSSIBLE_EXPERIENCES[@questionnaire.experience]
88
%p
99
%b Portfolio link:
10-
= @questionnaire.portfolio_url? ? link_to(@questionnaire.portfolio_url, @questionnaire.portfolio_url, target: '_blank') : 'Not provided'
10+
= @questionnaire.portfolio_url? ? link_to(@questionnaire.portfolio_url, @questionnaire.portfolio_url, target: '_blank', rel: 'noopener') : 'Not provided'
1111
%p
1212
%b GitHub/GitLab/Bitbucket link:
13-
= @questionnaire.vcs_url? ? link_to(@questionnaire.vcs_url, @questionnaire.vcs_url, target: '_blank') : 'Not provided'
13+
= @questionnaire.vcs_url? ? link_to(@questionnaire.vcs_url, @questionnaire.vcs_url, target: '_blank', rel: 'noopener') : 'Not provided'
1414
%p
1515
%b Resume:
1616
= @questionnaire.resume.attached? ? link_to("Download &raquo;".html_safe, @questionnaire.resume) : 'Not provided'

app/views/devise/registrations/new.html.haml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
- title 'Register'
22
.form-container.signup
33
%h1.section-title.center
4-
Register for
5-
.emphasized.text-overflow-center= HackathonConfig['name']
4+
Create an
5+
.emphasized.text-overflow-center
6+
Account
67

78
- if !HackathonConfig['accepting_questionnaires'] || HackathonConfig['disclaimer_message'].present?
89
#disclaimer

0 commit comments

Comments
 (0)