This commit is contained in:
Aditya Chatterjee 2016-03-01 18:56:12 +05:30
commit 1e9f4b514c
20 changed files with 193 additions and 3786 deletions

View file

@ -52,7 +52,11 @@ gem 'uglifier', '>= 1.3.0'
gem 'bootstrap-sass', '~> 3.3.4.1' gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'autoprefixer-rails' gem 'autoprefixer-rails'
gem 'formtastic-bootstrap' gem 'formtastic-bootstrap'
<<<<<<< HEAD
gem 'formtastic', '~> 2.3.0.rc3' gem 'formtastic', '~> 2.3.0.rc3'
=======
gem 'formtastic', '~> 3.1.1'
>>>>>>> upstream/master
gem 'cocoon' gem 'cocoon'
# frontend javascripts # frontend javascripts
@ -85,7 +89,10 @@ end
gem 'bootstrap3-datetimepicker-rails', '~> 3.0.2' gem 'bootstrap3-datetimepicker-rails', '~> 3.0.2'
gem 'jquery-datatables-rails', '~> 2.2.1' gem 'jquery-datatables-rails', '~> 2.2.1'
# for charts # for charts
<<<<<<< HEAD
gem 'd3_rails' gem 'd3_rails'
=======
>>>>>>> upstream/master
gem 'chart-js-rails' gem 'chart-js-rails'
# for user avatars # for user avatars

View file

@ -9,6 +9,7 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
remote: https://rails-assets.org/ remote: https://rails-assets.org/
specs: specs:
<<<<<<< HEAD
actionmailer (4.2.5.1) actionmailer (4.2.5.1)
actionpack (= 4.2.5.1) actionpack (= 4.2.5.1)
actionview (= 4.2.5.1) actionview (= 4.2.5.1)
@ -18,18 +19,35 @@ GEM
actionpack (4.2.5.1) actionpack (4.2.5.1)
actionview (= 4.2.5.1) actionview (= 4.2.5.1)
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
=======
actionmailer (4.2.5.2)
actionpack (= 4.2.5.2)
actionview (= 4.2.5.2)
activejob (= 4.2.5.2)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.5.2)
actionview (= 4.2.5.2)
activesupport (= 4.2.5.2)
>>>>>>> upstream/master
rack (~> 1.6) rack (~> 1.6)
rack-test (~> 0.6.2) rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
<<<<<<< HEAD
actionview (4.2.5.1) actionview (4.2.5.1)
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
=======
actionview (4.2.5.2)
activesupport (= 4.2.5.2)
>>>>>>> upstream/master
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
active_model_serializers (0.8.1) active_model_serializers (0.8.1)
activemodel (>= 3.0) activemodel (>= 3.0)
<<<<<<< HEAD
activejob (4.2.5.1) activejob (4.2.5.1)
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
globalid (>= 0.3.0) globalid (>= 0.3.0)
@ -41,6 +59,19 @@ GEM
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
arel (~> 6.0) arel (~> 6.0)
activesupport (4.2.5.1) activesupport (4.2.5.1)
=======
activejob (4.2.5.2)
activesupport (= 4.2.5.2)
globalid (>= 0.3.0)
activemodel (4.2.5.2)
activesupport (= 4.2.5.2)
builder (~> 3.1)
activerecord (4.2.5.2)
activemodel (= 4.2.5.2)
activesupport (= 4.2.5.2)
arel (~> 6.0)
activesupport (4.2.5.2)
>>>>>>> upstream/master
i18n (~> 0.7) i18n (~> 0.7)
json (~> 1.7, >= 1.7.7) json (~> 1.7, >= 1.7.7)
minitest (~> 5.1) minitest (~> 5.1)
@ -131,8 +162,6 @@ GEM
term-ansicolor term-ansicolor
thor thor
currencies (0.4.2) currencies (0.4.2)
d3_rails (3.4.6)
railties (>= 3.1.0)
daemons (1.1.9) daemons (1.1.9)
database_cleaner (1.3.0) database_cleaner (1.3.0)
debug_inspector (0.0.2) debug_inspector (0.0.2)
@ -166,10 +195,10 @@ GEM
font-awesome-rails (4.1.0.0) font-awesome-rails (4.1.0.0)
railties (>= 3.2, < 5.0) railties (>= 3.2, < 5.0)
formatador (0.2.4) formatador (0.2.4)
formtastic (2.3.0.rc3) formtastic (3.1.3)
actionpack (>= 3.0) actionpack (>= 3.2.13)
formtastic-bootstrap (3.0.0) formtastic-bootstrap (3.1.1)
formtastic (>= 2.2) formtastic (>= 3.0)
geocoder (1.2.2) geocoder (1.2.2)
globalid (0.3.6) globalid (0.3.6)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
@ -223,7 +252,7 @@ GEM
mail (2.6.3) mail (2.6.3)
mime-types (>= 1.16, < 3) mime-types (>= 1.16, < 3)
method_source (0.8.2) method_source (0.8.2)
mime-types (2.99) mime-types (2.99.1)
mimemagic (0.3.0) mimemagic (0.3.0)
mina (0.3.8) mina (0.3.8)
open4 (~> 1.3.4) open4 (~> 1.3.4)
@ -318,6 +347,7 @@ GEM
ruby-openid (>= 2.1.8) ruby-openid (>= 2.1.8)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
<<<<<<< HEAD
rails (4.2.5.1) rails (4.2.5.1)
actionmailer (= 4.2.5.1) actionmailer (= 4.2.5.1)
actionpack (= 4.2.5.1) actionpack (= 4.2.5.1)
@ -328,6 +358,18 @@ GEM
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
bundler (>= 1.3.0, < 2.0) bundler (>= 1.3.0, < 2.0)
railties (= 4.2.5.1) railties (= 4.2.5.1)
=======
rails (4.2.5.2)
actionmailer (= 4.2.5.2)
actionpack (= 4.2.5.2)
actionview (= 4.2.5.2)
activejob (= 4.2.5.2)
activemodel (= 4.2.5.2)
activerecord (= 4.2.5.2)
activesupport (= 4.2.5.2)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.5.2)
>>>>>>> upstream/master
sprockets-rails sprockets-rails
rails-assets-date.format (1.2.3) rails-assets-date.format (1.2.3)
rails-assets-holderjs (2.9.1) rails-assets-holderjs (2.9.1)
@ -351,9 +393,15 @@ GEM
loofah (~> 2.0) loofah (~> 2.0)
rails-observers (0.1.2) rails-observers (0.1.2)
activemodel (~> 4.0) activemodel (~> 4.0)
<<<<<<< HEAD
railties (4.2.5.1) railties (4.2.5.1)
actionpack (= 4.2.5.1) actionpack (= 4.2.5.1)
activesupport (= 4.2.5.1) activesupport (= 4.2.5.1)
=======
railties (4.2.5.2)
actionpack (= 4.2.5.2)
activesupport (= 4.2.5.2)
>>>>>>> upstream/master
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.1.0) rainbow (2.1.0)
@ -496,7 +544,6 @@ DEPENDENCIES
cocoon cocoon
country_select! country_select!
coveralls coveralls
d3_rails
daemons daemons
database_cleaner database_cleaner
delayed_job_active_record delayed_job_active_record
@ -504,7 +551,7 @@ DEPENDENCIES
devise_ichain_authenticatable devise_ichain_authenticatable
factory_girl_rails factory_girl_rails
font-awesome-rails font-awesome-rails
formtastic (~> 2.3.0.rc3) formtastic (~> 3.1.1)
formtastic-bootstrap formtastic-bootstrap
gravtastic gravtastic
guard-rspec (~> 4.2.8) guard-rspec (~> 4.2.8)

View file

@ -18,7 +18,6 @@
//= require cocoon //= require cocoon
//= require bootstrap //= require bootstrap
//= require Chart //= require Chart
//= require d3
//= require osem //= require osem
//= require osem-dashboard //= require osem-dashboard
//= require ahoy //= require ahoy

View file

@ -1,130 +0,0 @@
$(function() {
var t;
function size(animate){
if (animate == undefined){
animate = false;
}
clearTimeout(t);
t = setTimeout(function(){
$("canvas").each(function(i,el){
$(el).attr({
"width":$(el).parent().width()
});
});
$(".line_chart").each(function(){
draw_line_chart(animate, $(this));
});
$(".doughnut_chart").each(function(){
if($(this).is(":visible")){
draw_doughnut_chart(animate, $(this));
}
});
}, 30);
}
function draw_doughnut_chart(animation, $this){
var options = get_animation({}, animation);
var tmp = $this.data('chart');
if(jQuery.isEmptyObject(tmp)){
// Append error message if there is no data
$this.parent().append("<h4 class=\"text-warning\">No data!</h4>");
// Remove canvas
$this.remove();
}else{
var data = [];
for (var key in tmp) {
data.push(tmp[key]);
}
var ctx = $this.get(0).getContext("2d");
new Chart(ctx).Doughnut(data, options);
}
}
function get_animation(options, animation){
if (!animation){
options.animation = false;
} else {
options.animation = true;
}
return options;
}
function draw_line_chart(animation, $canvas){
var options = get_animation({}, animation);
var chart_data = create_dataset($canvas);
var weeks = $canvas.parent().data('weeks');
var data = {
labels : weeks,
datasets : chart_data
}
var ctx = $canvas.get(0).getContext("2d");
new Chart(ctx).Line(data, options);
}
function create_dataset($canvas){
var selected = getSelectedConferences($canvas);
var chart_data = $canvas.parent().data('chart');
var conferences = $canvas.parent().data('conferences');
var result = [];
for(var i in conferences){
if(selected.indexOf(conferences[i].short_title) >= 0){
var options = {};
options.fillColor = "rgba(255,255,255,0.0)";
options.strokeColor = conferences[i].color;
options.data = chart_data[conferences[i].short_title];
if(options.data == null || options.data.length == 0){
options.data = [0];
}
result.push(options)
}
}
return result
}
function getSelectedConferences($canvas){
var name = $canvas.data('name');
var id = '#' + name + 'Checkboxes'
var selected = [];
var $checkboxes = $(id + ' input');
// If there are checkboxes -> get selected
// Else -> use the active conference
if($checkboxes.length){
$(id + ' input').each(function(){
if($(this).is(":checked")) {
selected.push($(this).attr('name'));
}
});
}else{
var active = $canvas.parent().data('active');
for(i in active){
selected.push(active[i].short_title)
}
}
return selected;
}
$('.conferenceCheckboxes input').change(function(){
var chart_name = $(this).parent().data('chart');
var $canvas = $('#line_chart_' + chart_name);
draw_line_chart(false, $canvas);
});
$(window).on('resize', function(){
size(false);
});
$('#doughnut_tabs a').click(function (e) {
e.preventDefault();
$(this).tab('show');
size(false);
});
size(true);
});

View file

@ -1,126 +0,0 @@
/*
* Date Format 1.2.3
* (c) 2007-2009 Steven Levithan <stevenlevithan.com>
* MIT license
*
* Includes enhancements by Scott Trenda <scott.trenda.net>
* and Kris Kowal <cixar.com/~kris.kowal/>
*
* Accepts a date, a mask, or a date and a mask.
* Returns a formatted version of the given date.
* The date defaults to the current date/time.
* The mask defaults to dateFormat.masks.default.
*/
var dateFormat = function () {
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
timezoneClip = /[^-+\dA-Z]/g,
pad = function (val, len) {
val = String(val);
len = len || 2;
while (val.length < len) val = "0" + val;
return val;
};
// Regexes and supporting functions are cached through closure
return function (date, mask, utc) {
var dF = dateFormat;
// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
mask = date;
date = undefined;
}
// Passing date through Date applies Date.parse, if necessary
date = date ? new Date(date) : new Date;
if (isNaN(date)) throw SyntaxError("invalid date");
mask = String(dF.masks[mask] || mask || dF.masks["default"]);
// Allow setting the utc argument via the mask
if (mask.slice(0, 4) == "UTC:") {
mask = mask.slice(4);
utc = true;
}
var _ = utc ? "getUTC" : "get",
d = date[_ + "Date"](),
D = date[_ + "Day"](),
m = date[_ + "Month"](),
y = date[_ + "FullYear"](),
H = date[_ + "Hours"](),
M = date[_ + "Minutes"](),
s = date[_ + "Seconds"](),
L = date[_ + "Milliseconds"](),
o = utc ? 0 : date.getTimezoneOffset(),
flags = {
d: d,
dd: pad(d),
ddd: dF.i18n.dayNames[D],
dddd: dF.i18n.dayNames[D + 7],
m: m + 1,
mm: pad(m + 1),
mmm: dF.i18n.monthNames[m],
mmmm: dF.i18n.monthNames[m + 12],
yy: String(y).slice(2),
yyyy: y,
h: H % 12 || 12,
hh: pad(H % 12 || 12),
H: H,
HH: pad(H),
M: M,
MM: pad(M),
s: s,
ss: pad(s),
l: pad(L, 3),
L: pad(L > 99 ? Math.round(L / 10) : L),
t: H < 12 ? "a" : "p",
tt: H < 12 ? "am" : "pm",
T: H < 12 ? "A" : "P",
TT: H < 12 ? "AM" : "PM",
Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
};
return mask.replace(token, function ($0) {
return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
});
};
}();
// Some common format strings
dateFormat.masks = {
"default": "ddd mmm dd yyyy HH:MM:ss",
shortDate: "m/d/yy",
mediumDate: "mmm d, yyyy",
longDate: "mmmm d, yyyy",
fullDate: "dddd, mmmm d, yyyy",
shortTime: "h:MM TT",
mediumTime: "h:MM:ss TT",
longTime: "h:MM:ss TT Z",
isoDate: "yyyy-mm-dd",
isoTime: "HH:MM:ss",
isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};
// Internationalization strings
dateFormat.i18n = {
dayNames: [
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
monthNames: [
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
]
};
// For convenience...
Date.prototype.format = function (mask, utc) {
return dateFormat(this, mask, utc);
};

View file

@ -1,18 +1,12 @@
$(function () { $(function () {
$("#registration-arrival-datepicker").datetimepicker({ $("#registration-arrival-datepicker, #registration-departure-datepicker").datetimepicker({
pickTime: true,
useCurrent: false,
minuteStepping: 15,
sideBySide: true,
format: "YYYY-MM-DD HH:mm"
});
$("#registration-departure-datepicker").datetimepicker({
pickTime: true, pickTime: true,
useCurrent: false, useCurrent: false,
minuteStepping: 15, minuteStepping: 15,
sideBySide: true, sideBySide: true,
format: "YYYY-MM-DD HH:mm" format: "YYYY-MM-DD HH:mm"
}); });
$("#registration-arrival-datepicker").on("dp.change",function (e) { $("#registration-arrival-datepicker").on("dp.change",function (e) {
console.log (e.date) console.log (e.date)
$('#registration-departure-datepicker').data("DateTimePicker").setDate(e.date); $('#registration-departure-datepicker').data("DateTimePicker").setDate(e.date);
@ -23,16 +17,14 @@ $(function () {
}); });
$("#conference-start-datepicker").datetimepicker({ const $datetimepickers = $("#conference-start-datepicker, #conference-end-datepicker, #registration-period-start-datepicker, #registration-period-end-datepicker");
pickTime: false,
useCurrent: false, $datetimepickers.datetimepicker({
format: "YYYY-MM-DD"
});
$("#conference-end-datepicker").datetimepicker({
pickTime: false, pickTime: false,
useCurrent: false, useCurrent: false,
format: "YYYY-MM-DD" format: "YYYY-MM-DD"
}); });
$("#conference-start-datepicker").on("dp.change",function (e) { $("#conference-start-datepicker").on("dp.change",function (e) {
console.log (e.date) console.log (e.date)
$('#conference-end-datepicker').data("DateTimePicker").setDate(e.date); $('#conference-end-datepicker').data("DateTimePicker").setDate(e.date);
@ -42,16 +34,6 @@ $(function () {
$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date); $('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date);
}); });
$("#registration-period-start-datepicker").datetimepicker({
format: "YYYY-MM-DD",
pickTime: false,
pickSeconds: false
});
$("#registration-period-end-datepicker").datetimepicker({
format: "YYYY-MM-DD",
pickTime: false,
pickSeconds: false
});
$("#registration-period-start-datepicker").on("dp.change",function (e) { $("#registration-period-start-datepicker").on("dp.change",function (e) {
console.log (e.date) console.log (e.date)
$('#registration-period-end-datepicker').data("DateTimePicker").setDate(e.date); $('#registration-period-end-datepicker').data("DateTimePicker").setDate(e.date);

View file

@ -1,33 +0,0 @@
/**
* SmoothScroll
* This helper script created by DWUser.com. Copyright 2013 DWUser.com.
* Dual-licensed under the GPL and MIT licenses.
* All individual scripts remain property of their copyrighters.
* Date: 10-Sep-2013
* Version: 1.0.1
*/
if (!window['jQuery']) alert('The jQuery library must be included before the smoothscroll.js file. The plugin will not work propery.');
/**
* jQuery.ScrollTo - Easy element scrolling using jQuery.
* Copyright (c) 2007-2013 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* @author Ariel Flesler
* @version 1.4.3.1
*/
;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
/**
* jQuery.LocalScroll
* Copyright (c) 2007-2010 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 05/31/2010
* @author Ariel Flesler
* @version 1.2.8b
**/
;(function(b){function g(a,e,d){var h=e.hash.slice(1),f=document.getElementById(h)||document.getElementsByName(h)[0];if(f){a&&a.preventDefault();var c=b(d.target);if(!(d.lock&&c.is(":animated")||d.onBefore&&!1===d.onBefore(a,f,c))){d.stop&&c._scrollable().stop(!0);if(d.hash){var a=f.id==h?"id":"name",g=b("<a> </a>").attr(a,h).css({position:"absolute",top:b(window).scrollTop(),left:b(window).scrollLeft()});f[a]="";b("body").prepend(g);location=e.hash;g.remove();f[a]=h}c.scrollTo(f,d).trigger("notify.serialScroll",
[f])}}}var i=location.href.replace(/#.*/,""),c=b.localScroll=function(a){b("body").localScroll(a)};c.defaults={duration:1E3,axis:"y",event:"click",stop:!0,target:window,reset:!0};c.hash=function(a){if(location.hash){a=b.extend({},c.defaults,a);a.hash=!1;if(a.reset){var e=a.duration;delete a.duration;b(a.target).scrollTo(0,a);a.duration=e}g(0,location,a)}};b.fn.localScroll=function(a){function e(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,"")==i&&(!a.filter||b(this).is(a.filter))}
a=b.extend({},c.defaults,a);return a.lazy?this.bind(a.event,function(d){var c=b([d.target,d.target.parentNode]).filter(e)[0];c&&g(d,c,a)}):this.find("a,area").filter(e).bind(a.event,function(b){g(b,this,a)}).end().end()}})(jQuery);
// Initialize all .smoothScroll links
jQuery(function($){ $.localScroll({filter:'.smoothScroll'}); });

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,517 +0,0 @@
// Generated by CoffeeScript 1.6.2
/*!
jQuery Waypoints - v2.0.5
Copyright (c) 2011-2014 Caleb Troughton
Licensed under the MIT license.
https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
*/
(function() {
var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
__slice = [].slice;
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
return define('waypoints', ['jquery'], function($) {
return factory($, root);
});
} else {
return factory(root.jQuery, root);
}
})(window, function($, window) {
var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;
$w = $(window);
isTouch = __indexOf.call(window, 'ontouchstart') >= 0;
allWaypoints = {
horizontal: {},
vertical: {}
};
contextCounter = 1;
contexts = {};
contextKey = 'waypoints-context-id';
resizeEvent = 'resize.waypoints';
scrollEvent = 'scroll.waypoints';
waypointCounter = 1;
waypointKey = 'waypoints-waypoint-ids';
wp = 'waypoint';
wps = 'waypoints';
Context = (function() {
function Context($element) {
var _this = this;
this.$element = $element;
this.element = $element[0];
this.didResize = false;
this.didScroll = false;
this.id = 'context' + contextCounter++;
this.oldScroll = {
x: $element.scrollLeft(),
y: $element.scrollTop()
};
this.waypoints = {
horizontal: {},
vertical: {}
};
this.element[contextKey] = this.id;
contexts[this.id] = this;
$element.bind(scrollEvent, function() {
var scrollHandler;
if (!(_this.didScroll || isTouch)) {
_this.didScroll = true;
scrollHandler = function() {
_this.doScroll();
return _this.didScroll = false;
};
return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle);
}
});
$element.bind(resizeEvent, function() {
var resizeHandler;
if (!_this.didResize) {
_this.didResize = true;
resizeHandler = function() {
$[wps]('refresh');
return _this.didResize = false;
};
return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle);
}
});
}
Context.prototype.doScroll = function() {
var axes,
_this = this;
axes = {
horizontal: {
newScroll: this.$element.scrollLeft(),
oldScroll: this.oldScroll.x,
forward: 'right',
backward: 'left'
},
vertical: {
newScroll: this.$element.scrollTop(),
oldScroll: this.oldScroll.y,
forward: 'down',
backward: 'up'
}
};
if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
$[wps]('refresh');
}
$.each(axes, function(aKey, axis) {
var direction, isForward, triggered;
triggered = [];
isForward = axis.newScroll > axis.oldScroll;
direction = isForward ? axis.forward : axis.backward;
$.each(_this.waypoints[aKey], function(wKey, waypoint) {
var _ref, _ref1;
if ((axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll)) {
return triggered.push(waypoint);
} else if ((axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll)) {
return triggered.push(waypoint);
}
});
triggered.sort(function(a, b) {
return a.offset - b.offset;
});
if (!isForward) {
triggered.reverse();
}
return $.each(triggered, function(i, waypoint) {
if (waypoint.options.continuous || i === triggered.length - 1) {
return waypoint.trigger([direction]);
}
});
});
return this.oldScroll = {
x: axes.horizontal.newScroll,
y: axes.vertical.newScroll
};
};
Context.prototype.refresh = function() {
var axes, cOffset, isWin,
_this = this;
isWin = $.isWindow(this.element);
cOffset = this.$element.offset();
this.doScroll();
axes = {
horizontal: {
contextOffset: isWin ? 0 : cOffset.left,
contextScroll: isWin ? 0 : this.oldScroll.x,
contextDimension: this.$element.width(),
oldScroll: this.oldScroll.x,
forward: 'right',
backward: 'left',
offsetProp: 'left'
},
vertical: {
contextOffset: isWin ? 0 : cOffset.top,
contextScroll: isWin ? 0 : this.oldScroll.y,
contextDimension: isWin ? $[wps]('viewportHeight') : this.$element.height(),
oldScroll: this.oldScroll.y,
forward: 'down',
backward: 'up',
offsetProp: 'top'
}
};
return $.each(axes, function(aKey, axis) {
return $.each(_this.waypoints[aKey], function(i, waypoint) {
var adjustment, elementOffset, oldOffset, _ref, _ref1;
adjustment = waypoint.options.offset;
oldOffset = waypoint.offset;
elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
if ($.isFunction(adjustment)) {
adjustment = adjustment.apply(waypoint.element);
} else if (typeof adjustment === 'string') {
adjustment = parseFloat(adjustment);
if (waypoint.options.offset.indexOf('%') > -1) {
adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
}
}
waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;
if ((waypoint.options.onlyOnScroll && (oldOffset != null)) || !waypoint.enabled) {
return;
}
if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {
return waypoint.trigger([axis.backward]);
} else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {
return waypoint.trigger([axis.forward]);
} else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {
return waypoint.trigger([axis.forward]);
}
});
});
};
Context.prototype.checkEmpty = function() {
if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
this.$element.unbind([resizeEvent, scrollEvent].join(' '));
return delete contexts[this.id];
}
};
return Context;
})();
Waypoint = (function() {
function Waypoint($element, context, options) {
var idList, _ref;
if (options.offset === 'bottom-in-view') {
options.offset = function() {
var contextHeight;
contextHeight = $[wps]('viewportHeight');
if (!$.isWindow(context.element)) {
contextHeight = context.$element.height();
}
return contextHeight - $(this).outerHeight();
};
}
this.$element = $element;
this.element = $element[0];
this.axis = options.horizontal ? 'horizontal' : 'vertical';
this.callback = options.handler;
this.context = context;
this.enabled = options.enabled;
this.id = 'waypoints' + waypointCounter++;
this.offset = null;
this.options = options;
context.waypoints[this.axis][this.id] = this;
allWaypoints[this.axis][this.id] = this;
idList = (_ref = this.element[waypointKey]) != null ? _ref : [];
idList.push(this.id);
this.element[waypointKey] = idList;
}
Waypoint.prototype.trigger = function(args) {
if (!this.enabled) {
return;
}
if (this.callback != null) {
this.callback.apply(this.element, args);
}
if (this.options.triggerOnce) {
return this.destroy();
}
};
Waypoint.prototype.disable = function() {
return this.enabled = false;
};
Waypoint.prototype.enable = function() {
this.context.refresh();
return this.enabled = true;
};
Waypoint.prototype.destroy = function() {
delete allWaypoints[this.axis][this.id];
delete this.context.waypoints[this.axis][this.id];
return this.context.checkEmpty();
};
Waypoint.getWaypointsByElement = function(element) {
var all, ids;
ids = element[waypointKey];
if (!ids) {
return [];
}
all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);
return $.map(ids, function(id) {
return all[id];
});
};
return Waypoint;
})();
methods = {
init: function(f, options) {
var _ref;
options = $.extend({}, $.fn[wp].defaults, options);
if ((_ref = options.handler) == null) {
options.handler = f;
}
this.each(function() {
var $this, context, contextElement, _ref1;
$this = $(this);
contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;
if (!$.isWindow(contextElement)) {
contextElement = $this.closest(contextElement);
}
contextElement = $(contextElement);
context = contexts[contextElement[0][contextKey]];
if (!context) {
context = new Context(contextElement);
}
return new Waypoint($this, context, options);
});
$[wps]('refresh');
return this;
},
disable: function() {
return methods._invoke.call(this, 'disable');
},
enable: function() {
return methods._invoke.call(this, 'enable');
},
destroy: function() {
return methods._invoke.call(this, 'destroy');
},
prev: function(axis, selector) {
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
if (index > 0) {
return stack.push(waypoints[index - 1]);
}
});
},
next: function(axis, selector) {
return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
if (index < waypoints.length - 1) {
return stack.push(waypoints[index + 1]);
}
});
},
_traverse: function(axis, selector, push) {
var stack, waypoints;
if (axis == null) {
axis = 'vertical';
}
if (selector == null) {
selector = window;
}
waypoints = jQMethods.aggregate(selector);
stack = [];
this.each(function() {
var index;
index = $.inArray(this, waypoints[axis]);
return push(stack, index, waypoints[axis]);
});
return this.pushStack(stack);
},
_invoke: function(method) {
this.each(function() {
var waypoints;
waypoints = Waypoint.getWaypointsByElement(this);
return $.each(waypoints, function(i, waypoint) {
waypoint[method]();
return true;
});
});
return this;
}
};
$.fn[wp] = function() {
var args, method;
method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (methods[method]) {
return methods[method].apply(this, args);
} else if ($.isFunction(method)) {
return methods.init.apply(this, arguments);
} else if ($.isPlainObject(method)) {
return methods.init.apply(this, [null, method]);
} else if (!method) {
return $.error("jQuery Waypoints needs a callback function or handler option.");
} else {
return $.error("The " + method + " method does not exist in jQuery Waypoints.");
}
};
$.fn[wp].defaults = {
context: window,
continuous: true,
enabled: true,
horizontal: false,
offset: 0,
triggerOnce: false
};
jQMethods = {
refresh: function() {
return $.each(contexts, function(i, context) {
return context.refresh();
});
},
viewportHeight: function() {
var _ref;
return (_ref = window.innerHeight) != null ? _ref : $w.height();
},
aggregate: function(contextSelector) {
var collection, waypoints, _ref;
collection = allWaypoints;
if (contextSelector) {
collection = (_ref = contexts[$(contextSelector)[0][contextKey]]) != null ? _ref.waypoints : void 0;
}
if (!collection) {
return [];
}
waypoints = {
horizontal: [],
vertical: []
};
$.each(waypoints, function(axis, arr) {
$.each(collection[axis], function(key, waypoint) {
return arr.push(waypoint);
});
arr.sort(function(a, b) {
return a.offset - b.offset;
});
waypoints[axis] = $.map(arr, function(waypoint) {
return waypoint.element;
});
return waypoints[axis] = $.unique(waypoints[axis]);
});
return waypoints;
},
above: function(contextSelector) {
if (contextSelector == null) {
contextSelector = window;
}
return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
return waypoint.offset <= context.oldScroll.y;
});
},
below: function(contextSelector) {
if (contextSelector == null) {
contextSelector = window;
}
return jQMethods._filter(contextSelector, 'vertical', function(context, waypoint) {
return waypoint.offset > context.oldScroll.y;
});
},
left: function(contextSelector) {
if (contextSelector == null) {
contextSelector = window;
}
return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
return waypoint.offset <= context.oldScroll.x;
});
},
right: function(contextSelector) {
if (contextSelector == null) {
contextSelector = window;
}
return jQMethods._filter(contextSelector, 'horizontal', function(context, waypoint) {
return waypoint.offset > context.oldScroll.x;
});
},
enable: function() {
return jQMethods._invoke('enable');
},
disable: function() {
return jQMethods._invoke('disable');
},
destroy: function() {
return jQMethods._invoke('destroy');
},
extendFn: function(methodName, f) {
return methods[methodName] = f;
},
_invoke: function(method) {
var waypoints;
waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal);
return $.each(waypoints, function(key, waypoint) {
waypoint[method]();
return true;
});
},
_filter: function(selector, axis, test) {
var context, waypoints;
context = contexts[$(selector)[0][contextKey]];
if (!context) {
return [];
}
waypoints = [];
$.each(context.waypoints[axis], function(i, waypoint) {
if (test(context, waypoint)) {
return waypoints.push(waypoint);
}
});
waypoints.sort(function(a, b) {
return a.offset - b.offset;
});
return $.map(waypoints, function(waypoint) {
return waypoint.element;
});
}
};
$[wps] = function() {
var args, method;
method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (jQMethods[method]) {
return jQMethods[method].apply(null, args);
} else {
return jQMethods.aggregate.call(null, method);
}
};
$[wps].settings = {
resizeThrottle: 100,
scrollThrottle: 30
};
return $w.on('load.waypoints', function() {
return $[wps]('refresh');
});
});
}).call(this);

View file

@ -1,14 +0,0 @@
.row
.col-md-12
.page-header
%h1 Call for Papers
.row
.col-md-8
= semantic_form_for(@call_for_paper, :url => admin_conference_call_for_paper_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" }
= f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" }
= f.input :schedule_public, label: "Show Schedule on the home and splash page"
= f.input :schedule_changes, label: "Allow submitters to change their event after it is scheduled"
= f.input :rating, :hint => "Enter the number of different rating levels you want to have for voting on proposals. Enter 0 if you do not want to vote on proposals."
%p.text-right
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -1,58 +0,0 @@
.row
.col-md-12
.page-header
%h1 Call for Papers
%p.text-muted
Call for people to submit events to your conference
- if @call_for_paper
.row
.col-md-8
%dl.dl-horizontal
%dt
Start Date:
%dd#start_date
= @call_for_paper.start_date.strftime('%A, %B %-d. %Y')
%dt
End Date:
%dd#end_date
= @call_for_paper.end_date.strftime('%A, %B %-d. %Y')
%dt
Days Left:
%dd
= pluralize(@call_for_paper.remaining_days, 'day')
%dt
Event types:
%dd
= event_types(@conference)
%dt
Tracks:
%dd
= tracks(@conference)
%dt
Public Schedule
%dd#schedule_public
- if @call_for_paper.schedule_public
Yes
- else
No
%dt
Schedule changeable?
%dd#schedule_changes
- if @call_for_paper.schedule_changes
Yes
- else
No
%dt
Rating Levels
%dd#rating
= @call_for_paper.rating
.row
.col-md-12.text-right
= link_to(edit_admin_conference_call_for_paper_path(@conference.short_title), class: 'btn btn-primary') do
Edit
= link_to(admin_conference_call_for_paper_path(@conference.short_title), method: 'delete', class: 'btn btn-danger') do
Delete
-else
.row
.col-md-12.text-right
= link_to 'Create Call for Papers', new_admin_conference_call_for_paper_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -60,5 +60,9 @@ module Osem
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
# Errors raised within `after_rollback`/`after_commit` propagate normally
# like in other Active Record callbacks.
config.active_record.raise_in_transactional_callbacks = true
end end
end end

View file

@ -15,7 +15,7 @@ Osem::Application.configure do
config.eager_load = true config.eager_load = true
# Disable Rails's static asset server (Apache or nginx will already do this) # Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false config.serve_static_files = false
# Compress JavaScripts and CSS # Compress JavaScripts and CSS
config.assets.compress = true config.assets.compress = true

View file

@ -8,7 +8,7 @@ Osem::Application.configure do
config.cache_classes = true config.cache_classes = true
# Configure static asset server for tests with Cache-Control for performance # Configure static asset server for tests with Cache-Control for performance
config.serve_static_assets = true config.serve_static_files = true
config.static_cache_control = 'public, max-age=3600' config.static_cache_control = 'public, max-age=3600'
# Do not eager load code on boot. # Do not eager load code on boot.

View file

@ -66,14 +66,48 @@ Formtastic::FormBuilder.required_string = proc { Formtastic::Util.html_safe(%{&n
# specifying that class here. Defaults to Formtastic::FormBuilder. # specifying that class here. Defaults to Formtastic::FormBuilder.
# Formtastic::Helpers::FormHelper.builder = MyCustomBuilder # Formtastic::Helpers::FormHelper.builder = MyCustomBuilder
# All formtastic forms have a class that indicates that they are just that. You
# can change it to any class you want.
# Formtastic::Helpers::FormHelper.default_form_class = 'formtastic'
# Formtastic will infer a class name from the model, array, string ot symbol you pass to the
# form builder. You can customize the way that class is presented by overriding
# this proc.
# Formtastic::Helpers::FormHelper.default_form_model_class_proc = proc { |model_class_name| model_class_name }
# Allows to set a custom field_error_proc wrapper. By default this wrapper
# is disabled since `formtastic` already adds an error class to the LI tag
# containing the input.
# Formtastic::Helpers::FormHelper.formtastic_field_error_proc = proc { |html_tag, instance_tag| html_tag }
# You can opt-in to Formtastic's use of the HTML5 `required` attribute on `<input>`, `<select>` # You can opt-in to Formtastic's use of the HTML5 `required` attribute on `<input>`, `<select>`
# and `<textarea>` tags by setting this to false (defaults to true). # and `<textarea>` tags by setting this to true (defaults to false).
# Formtastic::FormBuilder.use_required_attribute = true # Formtastic::FormBuilder.use_required_attribute = false
# You can opt-in to new HTML5 browser validations (for things like email and url inputs) by setting # You can opt-in to new HTML5 browser validations (for things like email and url inputs) by setting
# this to false. Doing so will add a `novalidate` attribute to the `<form>` tag. # this to true. Doing so will add a `novalidate` attribute to the `<form>` tag.
# See http://diveintohtml5.org/forms.html#validation for more info. # See http://diveintohtml5.org/forms.html#validation for more info.
Formtastic::FormBuilder.perform_browser_validations = true Formtastic::FormBuilder.perform_browser_validations = true
# #
Formtastic::Helpers::FormHelper.builder = FormtasticBootstrap::FormBuilder Formtastic::Helpers::FormHelper.builder = FormtasticBootstrap::FormBuilder
FormtasticBootstrap::FormBuilder.default_inline_hint_class = FormtasticBootstrap::FormBuilder.default_block_hint_class FormtasticBootstrap::FormBuilder.default_inline_hint_class = FormtasticBootstrap::FormBuilder.default_block_hint_class
# By creating custom input class finder, you can change how input classes are looked up.
# For example you can make it to search for TextInputFilter instead of TextInput.
# See # TODO: add link # for more information
# NOTE: this behavior will be default from Formtastic 4.0
Formtastic::FormBuilder.input_class_finder = Formtastic::InputClassFinder
# Define custom namespaces in which to look up your Input classes. Default is
# to look up in the global scope and in Formtastic::Inputs.
# Formtastic::FormBuilder.input_namespaces = [ ::Object, ::MyInputsModule, ::Formtastic::Inputs ]
# By creating custom action class finder, you can change how action classes are looked up.
# For example you can make it to search for MyButtonAction instead of ButtonAction.
# See # TODO: add link # for more information
# NOTE: this behavior will be default from Formtastic 4.0
Formtastic::FormBuilder.action_class_finder = Formtastic::ActionClassFinder
# Define custom namespaces in which to look up your Action classes. Default is
# to look up in the global scope and in Formtastic::Actions.
# Formtastic::FormBuilder.action_namespaces = [ ::Object, ::MyActionsModule, ::Formtastic::Actions ]

View file

@ -13,8 +13,13 @@
ActiveRecord::Schema.define(version: 20160201221411) do ActiveRecord::Schema.define(version: 20160201221411) do
<<<<<<< HEAD
create_table "ahoy_events", force: true do |t| create_table "ahoy_events", force: true do |t|
t.uuid "visit_id" t.uuid "visit_id"
=======
create_table "ahoy_events", force: :cascade do |t|
t.uuid "visit_id", limit: 16
>>>>>>> upstream/master
t.integer "user_id" t.integer "user_id"
t.string "name" t.string "name"
t.text "properties" t.text "properties"
@ -25,13 +30,17 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "ahoy_events", ["user_id"], name: "index_ahoy_events_on_user_id" add_index "ahoy_events", ["user_id"], name: "index_ahoy_events_on_user_id"
add_index "ahoy_events", ["visit_id"], name: "index_ahoy_events_on_visit_id" add_index "ahoy_events", ["visit_id"], name: "index_ahoy_events_on_visit_id"
create_table "answers", force: true do |t| create_table "answers", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
<<<<<<< HEAD
create_table "campaigns", force: true do |t| create_table "campaigns", force: true do |t|
=======
create_table "campaigns", force: :cascade do |t|
>>>>>>> upstream/master
t.integer "conference_id" t.integer "conference_id"
t.string "name" t.string "name"
t.string "utm_source" t.string "utm_source"
@ -43,7 +52,11 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
<<<<<<< HEAD
create_table "cfps", force: true do |t| create_table "cfps", force: true do |t|
=======
create_table "cfps", force: :cascade do |t|
>>>>>>> upstream/master
t.date "start_date", null: false t.date "start_date", null: false
t.date "end_date", null: false t.date "end_date", null: false
t.datetime "created_at" t.datetime "created_at"
@ -51,7 +64,11 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "program_id" t.integer "program_id"
end end
<<<<<<< HEAD
create_table "comments", force: true do |t| create_table "comments", force: true do |t|
=======
create_table "comments", force: :cascade do |t|
>>>>>>> upstream/master
t.string "title", limit: 50, default: "" t.string "title", limit: 50, default: ""
t.text "body" t.text "body"
t.integer "commentable_id" t.integer "commentable_id"
@ -69,7 +86,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "comments", ["commentable_type"], name: "index_comments_on_commentable_type" add_index "comments", ["commentable_type"], name: "index_comments_on_commentable_type"
add_index "comments", ["user_id"], name: "index_comments_on_user_id" add_index "comments", ["user_id"], name: "index_comments_on_user_id"
create_table "commercials", force: true do |t| create_table "commercials", force: :cascade do |t|
t.string "commercial_id" t.string "commercial_id"
t.string "commercial_type" t.string "commercial_type"
t.integer "commercialable_id" t.integer "commercialable_id"
@ -79,7 +96,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.string "url" t.string "url"
end end
create_table "conferences", force: true do |t| create_table "conferences", force: :cascade do |t|
t.string "guid", null: false t.string "guid", null: false
t.string "title", null: false t.string "title", null: false
t.string "short_title", null: false t.string "short_title", null: false
@ -105,12 +122,12 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "registration_limit", default: 0 t.integer "registration_limit", default: 0
end end
create_table "conferences_questions", id: false, force: true do |t| create_table "conferences_questions", id: false, force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "question_id" t.integer "question_id"
end end
create_table "contacts", force: true do |t| create_table "contacts", force: :cascade do |t|
t.string "social_tag" t.string "social_tag"
t.string "email" t.string "email"
t.string "facebook" t.string "facebook"
@ -123,7 +140,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.string "sponsor_email" t.string "sponsor_email"
end end
create_table "delayed_jobs", force: true do |t| create_table "delayed_jobs", force: :cascade do |t|
t.integer "priority", default: 0, null: false t.integer "priority", default: 0, null: false
t.integer "attempts", default: 0, null: false t.integer "attempts", default: 0, null: false
t.text "handler", null: false t.text "handler", null: false
@ -139,14 +156,18 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority" add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority"
create_table "dietary_choices", force: true do |t| create_table "dietary_choices", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", null: false t.string "title", null: false
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
<<<<<<< HEAD
create_table "difficulty_levels", force: true do |t| create_table "difficulty_levels", force: true do |t|
=======
create_table "difficulty_levels", force: :cascade do |t|
>>>>>>> upstream/master
t.string "title" t.string "title"
t.text "description" t.text "description"
t.string "color" t.string "color"
@ -155,7 +176,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "program_id" t.integer "program_id"
end end
create_table "email_settings", force: true do |t| create_table "email_settings", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.boolean "send_on_registration", default: false t.boolean "send_on_registration", default: false
t.boolean "send_on_accepted", default: false t.boolean "send_on_accepted", default: false
@ -188,7 +209,11 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.text "cfp_dates_updated_body" t.text "cfp_dates_updated_body"
end end
<<<<<<< HEAD
create_table "event_types", force: true do |t| create_table "event_types", force: true do |t|
=======
create_table "event_types", force: :cascade do |t|
>>>>>>> upstream/master
t.string "title", null: false t.string "title", null: false
t.integer "length", default: 30 t.integer "length", default: 30
t.integer "minimum_abstract_length", default: 0 t.integer "minimum_abstract_length", default: 0
@ -198,7 +223,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "program_id" t.integer "program_id"
end end
create_table "event_users", force: true do |t| create_table "event_users", force: :cascade do |t|
t.integer "user_id" t.integer "user_id"
t.integer "event_id" t.integer "event_id"
t.string "event_role", default: "participant", null: false t.string "event_role", default: "participant", null: false
@ -207,7 +232,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "events", force: true do |t| create_table "events", force: :cascade do |t|
t.string "guid", null: false t.string "guid", null: false
t.integer "event_type_id" t.integer "event_type_id"
t.string "title", null: false t.string "title", null: false
@ -236,12 +261,12 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "program_id" t.integer "program_id"
end end
create_table "events_registrations", id: false, force: true do |t| create_table "events_registrations", id: false, force: :cascade do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "event_id" t.integer "event_id"
end end
create_table "lodgings", force: true do |t| create_table "lodgings", force: :cascade do |t|
t.string "name" t.string "name"
t.text "description" t.text "description"
t.string "photo_file_name" t.string "photo_file_name"
@ -254,7 +279,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "conference_id" t.integer "conference_id"
end end
create_table "openids", force: true do |t| create_table "openids", force: :cascade do |t|
t.string "provider" t.string "provider"
t.string "email" t.string "email"
t.string "uid" t.string "uid"
@ -263,7 +288,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "photos", force: true do |t| create_table "photos", force: :cascade do |t|
t.text "description" t.text "description"
t.string "picture_file_name" t.string "picture_file_name"
t.string "picture_content_type" t.string "picture_content_type"
@ -274,7 +299,11 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
<<<<<<< HEAD
create_table "programs", force: true do |t| create_table "programs", force: true do |t|
=======
create_table "programs", force: :cascade do |t|
>>>>>>> upstream/master
t.integer "conference_id" t.integer "conference_id"
t.integer "rating", default: 0 t.integer "rating", default: 0
t.boolean "schedule_public", default: false t.boolean "schedule_public", default: false
@ -283,25 +312,29 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
<<<<<<< HEAD
create_table "qanswers", force: true do |t| create_table "qanswers", force: true do |t|
=======
create_table "qanswers", force: :cascade do |t|
>>>>>>> upstream/master
t.integer "question_id" t.integer "question_id"
t.integer "answer_id" t.integer "answer_id"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "qanswers_registrations", id: false, force: true do |t| create_table "qanswers_registrations", id: false, force: :cascade do |t|
t.integer "registration_id", null: false t.integer "registration_id", null: false
t.integer "qanswer_id", null: false t.integer "qanswer_id", null: false
end end
create_table "question_types", force: true do |t| create_table "question_types", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "questions", force: true do |t| create_table "questions", force: :cascade do |t|
t.string "title" t.string "title"
t.integer "question_type_id" t.integer "question_type_id"
t.integer "conference_id" t.integer "conference_id"
@ -310,7 +343,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "registration_periods", force: true do |t| create_table "registration_periods", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.date "start_date" t.date "start_date"
t.date "end_date" t.date "end_date"
@ -318,7 +351,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "registrations", force: true do |t| create_table "registrations", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.datetime "arrival" t.datetime "arrival"
t.datetime "departure" t.datetime "departure"
@ -333,17 +366,17 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "week" t.integer "week"
end end
create_table "registrations_social_events", id: false, force: true do |t| create_table "registrations_social_events", id: false, force: :cascade do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "social_event_id" t.integer "social_event_id"
end end
create_table "registrations_vchoices", id: false, force: true do |t| create_table "registrations_vchoices", id: false, force: :cascade do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "vchoice_id" t.integer "vchoice_id"
end end
create_table "roles", force: true do |t| create_table "roles", force: :cascade do |t|
t.string "name" t.string "name"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
@ -355,28 +388,32 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id" add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
add_index "roles", ["name"], name: "index_roles_on_name" add_index "roles", ["name"], name: "index_roles_on_name"
create_table "roles_users", id: false, force: true do |t| create_table "roles_users", id: false, force: :cascade do |t|
t.integer "role_id" t.integer "role_id"
t.integer "user_id" t.integer "user_id"
end end
add_index "roles_users", ["user_id", "role_id"], name: "index_roles_users_on_user_id_and_role_id" add_index "roles_users", ["user_id", "role_id"], name: "index_roles_users_on_user_id_and_role_id"
<<<<<<< HEAD
create_table "rooms", force: true do |t| create_table "rooms", force: true do |t|
=======
create_table "rooms", force: :cascade do |t|
>>>>>>> upstream/master
t.string "guid", null: false t.string "guid", null: false
t.string "name", null: false t.string "name", null: false
t.integer "size" t.integer "size"
t.integer "venue_id", null: false t.integer "venue_id", null: false
end end
create_table "social_events", force: true do |t| create_table "social_events", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title" t.string "title"
t.text "description" t.text "description"
t.date "date" t.date "date"
end end
create_table "splashpages", force: true do |t| create_table "splashpages", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.boolean "public" t.boolean "public"
t.boolean "include_tracks" t.boolean "include_tracks"
@ -392,7 +429,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.boolean "include_cfp", default: false t.boolean "include_cfp", default: false
end end
create_table "sponsors", force: true do |t| create_table "sponsors", force: :cascade do |t|
t.string "name" t.string "name"
t.text "description" t.text "description"
t.string "website_url" t.string "website_url"
@ -406,7 +443,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "sponsorship_levels", force: true do |t| create_table "sponsorship_levels", force: :cascade do |t|
t.string "title" t.string "title"
t.integer "conference_id" t.integer "conference_id"
t.datetime "created_at" t.datetime "created_at"
@ -414,14 +451,14 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "position" t.integer "position"
end end
create_table "subscriptions", force: true do |t| create_table "subscriptions", force: :cascade do |t|
t.integer "user_id" t.integer "user_id"
t.integer "conference_id" t.integer "conference_id"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "targets", force: true do |t| create_table "targets", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "campaign_id" t.integer "campaign_id"
t.date "due_date" t.date "due_date"
@ -431,7 +468,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "ticket_purchases", force: true do |t| create_table "ticket_purchases", force: :cascade do |t|
t.integer "ticket_id" t.integer "ticket_id"
t.integer "conference_id" t.integer "conference_id"
t.boolean "paid", default: false t.boolean "paid", default: false
@ -440,7 +477,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "user_id" t.integer "user_id"
end end
create_table "tickets", force: true do |t| create_table "tickets", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", null: false t.string "title", null: false
t.text "description" t.text "description"
@ -448,7 +485,11 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.string "price_currency", default: "USD", null: false t.string "price_currency", default: "USD", null: false
end end
<<<<<<< HEAD
create_table "tracks", force: true do |t| create_table "tracks", force: true do |t|
=======
create_table "tracks", force: :cascade do |t|
>>>>>>> upstream/master
t.string "guid", null: false t.string "guid", null: false
t.string "name", null: false t.string "name", null: false
t.text "description" t.text "description"
@ -458,7 +499,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "program_id" t.integer "program_id"
end end
create_table "users", force: true do |t| create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false
t.string "reset_password_token" t.string "reset_password_token"
@ -498,12 +539,12 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
add_index "users", ["username"], name: "index_users_on_username", unique: true add_index "users", ["username"], name: "index_users_on_username", unique: true
create_table "vchoices", force: true do |t| create_table "vchoices", force: :cascade do |t|
t.integer "vday_id" t.integer "vday_id"
t.integer "vposition_id" t.integer "vposition_id"
end end
create_table "vdays", force: true do |t| create_table "vdays", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.date "day" t.date "day"
t.text "description" t.text "description"
@ -511,7 +552,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "venues", force: true do |t| create_table "venues", force: :cascade do |t|
t.string "guid" t.string "guid"
t.string "name" t.string "name"
t.string "website" t.string "website"
@ -531,7 +572,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "conference_id" t.integer "conference_id"
end end
create_table "versions", force: true do |t| create_table "versions", force: :cascade do |t|
t.string "item_type", null: false t.string "item_type", null: false
t.integer "item_id", null: false t.integer "item_id", null: false
t.string "event", null: false t.string "event", null: false
@ -543,8 +584,8 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id" add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
create_table "visits", force: true do |t| create_table "visits", force: :cascade do |t|
t.uuid "visitor_id" t.uuid "visitor_id", limit: 16
t.string "ip" t.string "ip"
t.text "user_agent" t.text "user_agent"
t.text "referrer" t.text "referrer"
@ -568,7 +609,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
add_index "visits", ["user_id"], name: "index_visits_on_user_id" add_index "visits", ["user_id"], name: "index_visits_on_user_id"
create_table "votes", force: true do |t| create_table "votes", force: :cascade do |t|
t.integer "event_id" t.integer "event_id"
t.integer "rating" t.integer "rating"
t.datetime "created_at" t.datetime "created_at"
@ -576,7 +617,7 @@ ActiveRecord::Schema.define(version: 20160201221411) do
t.integer "user_id" t.integer "user_id"
end end
create_table "vpositions", force: true do |t| create_table "vpositions", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", null: false t.string "title", null: false
t.text "description" t.text "description"

View file

@ -1,8 +0,0 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :call_for_paper do
start_date { 1.day.ago }
end_date { 6.days.from_now }
end
end

View file

@ -1,15 +0,0 @@
require 'spec_helper'
describe 'admin/call_for_papers/show' do
it 'renders call for papers details' do
assign :conference, create(:conference)
assign :call_for_paper, create(:call_for_paper)
render
expect(rendered).to include('Start Date')
expect(rendered).to include('End Date')
expect(rendered).to include(1.day.ago.strftime('%A, %B %-d. %Y'))
expect(rendered).to include(6.days.from_now.strftime('%A, %B %-d. %Y'))
end
end