Merge branch 'master' into admin-ticketing
* master: (61 commits) Replace more Commercials with Materials Rename more commericals to materials UI -- Repalce "Commerials" with "Materials". Re-order Conference Associations Cleanup CSS add Snap! style block attachments hide venue link if there is no venue link No dropshadow Text with drop shadow for now Tidy up the look of lodging panels Show reg status for tickets. Tweak CSS, fix loding order Move the venue description to below the map. Update lodging styling. Add description for venu when map is shown. CSS tweaks... Make the edit form not so wide. Support markdown in more fields Cleanup CSS ordering, fix coloring for navdropdowns dumb...fix order of link_to args ARRRGHHH, another typo...same line... fix typo ...
This commit is contained in:
commit
4306fbe636
82 changed files with 423 additions and 428 deletions
|
|
@ -1 +1 @@
|
||||||
2.5.0
|
2.5.5
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,12 @@ Not release yet...
|
||||||
|
|
||||||
## Update from 1.0
|
## Update from 1.0
|
||||||
|
|
||||||
|
### Dropped travel information
|
||||||
|
We have dropped input and storage of travel schedules for event registrants. If
|
||||||
|
you would like to continue to collect travel schedules, please create a custom
|
||||||
|
survey for this purpose.
|
||||||
|
_Please be aware that existing travel data will be destroyed during migration._
|
||||||
|
|
||||||
### Multiple Schedules
|
### Multiple Schedules
|
||||||
A conference can have multiple schedules now so it's easier for organizers to
|
A conference can have multiple schedules now so it's easier for organizers to
|
||||||
test schedules and collaborate on different versions.
|
test schedules and collaborate on different versions.
|
||||||
|
|
|
||||||
12
Gemfile
12
Gemfile
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
ruby ENV['OSEM_RUBY_VERSION'] || '2.5.0'
|
ruby ENV['OSEM_RUBY_VERSION'] || '2.5.5'
|
||||||
|
|
||||||
# rails-assets requires >= 1.8.4
|
# rails-assets requires >= 1.8.4
|
||||||
if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
|
if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
|
||||||
|
|
@ -20,7 +20,7 @@ gem 'puma', '~> 3.0'
|
||||||
gem 'responders', '~> 2.0'
|
gem 'responders', '~> 2.0'
|
||||||
|
|
||||||
# as supported databases
|
# as supported databases
|
||||||
gem 'mysql2'
|
# gem 'mysql2'
|
||||||
gem 'pg'
|
gem 'pg'
|
||||||
|
|
||||||
# for tracking data changes
|
# for tracking data changes
|
||||||
|
|
@ -38,12 +38,12 @@ gem 'rails-i18n'
|
||||||
gem 'devise'
|
gem 'devise'
|
||||||
gem 'devise_ichain_authenticatable'
|
gem 'devise_ichain_authenticatable'
|
||||||
|
|
||||||
# for openID authentication
|
|
||||||
gem 'omniauth'
|
gem 'omniauth'
|
||||||
gem 'omniauth-facebook'
|
|
||||||
gem 'omniauth-github'
|
|
||||||
gem 'omniauth-google-oauth2'
|
gem 'omniauth-google-oauth2'
|
||||||
gem 'omniauth-openid'
|
gem 'omniauth-discourse'
|
||||||
|
# gem 'omniauth-openid'
|
||||||
|
# gem 'omniauth-facebook'
|
||||||
|
# gem 'omniauth-github'
|
||||||
|
|
||||||
# Bot-filtering
|
# Bot-filtering
|
||||||
gem 'recaptcha', require: 'recaptcha/rails'
|
gem 'recaptcha', require: 'recaptcha/rails'
|
||||||
|
|
|
||||||
22
Gemfile.lock
22
Gemfile.lock
|
|
@ -304,7 +304,6 @@ GEM
|
||||||
multi_json (1.13.1)
|
multi_json (1.13.1)
|
||||||
multi_xml (0.6.0)
|
multi_xml (0.6.0)
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
mysql2 (0.5.2)
|
|
||||||
nenv (0.3.0)
|
nenv (0.3.0)
|
||||||
net-http-persistent (3.0.1)
|
net-http-persistent (3.0.1)
|
||||||
connection_pool (~> 2.2)
|
connection_pool (~> 2.2)
|
||||||
|
|
@ -324,11 +323,8 @@ GEM
|
||||||
omniauth (1.9.0)
|
omniauth (1.9.0)
|
||||||
hashie (>= 3.4.6, < 3.7.0)
|
hashie (>= 3.4.6, < 3.7.0)
|
||||||
rack (>= 1.6.2, < 3)
|
rack (>= 1.6.2, < 3)
|
||||||
omniauth-facebook (5.0.0)
|
omniauth-discourse (1.0.0)
|
||||||
omniauth-oauth2 (~> 1.2)
|
omniauth (~> 1.0)
|
||||||
omniauth-github (1.3.0)
|
|
||||||
omniauth (~> 1.5)
|
|
||||||
omniauth-oauth2 (>= 1.4.0, < 2.0)
|
|
||||||
omniauth-google-oauth2 (0.6.1)
|
omniauth-google-oauth2 (0.6.1)
|
||||||
jwt (>= 2.0)
|
jwt (>= 2.0)
|
||||||
omniauth (>= 1.1.1)
|
omniauth (>= 1.1.1)
|
||||||
|
|
@ -336,9 +332,6 @@ GEM
|
||||||
omniauth-oauth2 (1.6.0)
|
omniauth-oauth2 (1.6.0)
|
||||||
oauth2 (~> 1.1)
|
oauth2 (~> 1.1)
|
||||||
omniauth (~> 1.9)
|
omniauth (~> 1.9)
|
||||||
omniauth-openid (1.0.1)
|
|
||||||
omniauth (~> 1.0)
|
|
||||||
rack-openid (~> 1.3.1)
|
|
||||||
open4 (1.3.4)
|
open4 (1.3.4)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
paper_trail (10.3.1)
|
paper_trail (10.3.1)
|
||||||
|
|
@ -380,9 +373,6 @@ GEM
|
||||||
public_suffix (3.1.1)
|
public_suffix (3.1.1)
|
||||||
puma (3.12.2)
|
puma (3.12.2)
|
||||||
rack (2.0.8)
|
rack (2.0.8)
|
||||||
rack-openid (1.3.1)
|
|
||||||
rack (>= 1.1.0)
|
|
||||||
ruby-openid (>= 2.1.8)
|
|
||||||
rack-test (1.1.0)
|
rack-test (1.1.0)
|
||||||
rack (>= 1.0, < 3)
|
rack (>= 1.0, < 3)
|
||||||
rails (5.2.3)
|
rails (5.2.3)
|
||||||
|
|
@ -499,7 +489,6 @@ GEM
|
||||||
rubocop-rspec (1.36.0)
|
rubocop-rspec (1.36.0)
|
||||||
rubocop (>= 0.68.1)
|
rubocop (>= 0.68.1)
|
||||||
ruby-oembed (0.12.0)
|
ruby-oembed (0.12.0)
|
||||||
ruby-openid (2.9.2)
|
|
||||||
ruby-progressbar (1.10.1)
|
ruby-progressbar (1.10.1)
|
||||||
ruby-rc4 (0.1.5)
|
ruby-rc4 (0.1.5)
|
||||||
ruby_dep (1.5.0)
|
ruby_dep (1.5.0)
|
||||||
|
|
@ -665,13 +654,10 @@ DEPENDENCIES
|
||||||
mina
|
mina
|
||||||
mini_magick
|
mini_magick
|
||||||
money-rails
|
money-rails
|
||||||
mysql2
|
|
||||||
nokogiri (>= 1.8.1)
|
nokogiri (>= 1.8.1)
|
||||||
omniauth
|
omniauth
|
||||||
omniauth-facebook
|
omniauth-discourse
|
||||||
omniauth-github
|
|
||||||
omniauth-google-oauth2
|
omniauth-google-oauth2
|
||||||
omniauth-openid
|
|
||||||
paper_trail
|
paper_trail
|
||||||
pdf-inspector
|
pdf-inspector
|
||||||
pg
|
pg
|
||||||
|
|
@ -726,7 +712,7 @@ DEPENDENCIES
|
||||||
whenever
|
whenever
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 2.5.0p0
|
ruby 2.5.5p157
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.17.3
|
1.17.3
|
||||||
|
|
|
||||||
BIN
app/assets/images/snapcon_logo.png
Normal file
BIN
app/assets/images/snapcon_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -13,40 +13,6 @@ $(function () {
|
||||||
format: 'YYYY-MM-DD HH:mm'
|
format: 'YYYY-MM-DD HH:mm'
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#registration-arrival-datepicker").datetimepicker({
|
|
||||||
useCurrent: false,
|
|
||||||
stepping: 15,
|
|
||||||
sideBySide: true,
|
|
||||||
format: "YYYY-MM-DD HH:mm",
|
|
||||||
// current_date <= arrival_date <= end_date
|
|
||||||
maxDate : $("#registration-arrival-datepicker").attr('end_date'),
|
|
||||||
minDate : today
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#registration-departure-datepicker").datetimepicker({
|
|
||||||
useCurrent: false,
|
|
||||||
stepping: 15,
|
|
||||||
sideBySide: true,
|
|
||||||
format: "YYYY-MM-DD HH:mm",
|
|
||||||
// departure_date > start_date
|
|
||||||
minDate : $("#registration-arrival-datepicker").attr('start_date')
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#registration-arrival-datepicker").on("dp.change",function (e) {
|
|
||||||
// departure_date > start_date,arrival_date
|
|
||||||
if ((new Date(e.date).getTime()) > (new Date($("#registration-arrival-datepicker").attr('start_date')).getTime())){
|
|
||||||
$('#registration-departure-datepicker').data("DateTimePicker").minDate(e.date);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$('#registration-departure-datepicker').data("DateTimePicker").minDate($("#registration-arrival-datepicker").attr('start_date'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// departure_date >= arrival_date
|
|
||||||
$("#registration-departure-datepicker").on("dp.change",function (e) {
|
|
||||||
$('#registration-arrival-datepicker').data("DateTimePicker").maxDate(e.date);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#conference-start-datepicker").datetimepicker({
|
$("#conference-start-datepicker").datetimepicker({
|
||||||
useCurrent: false,
|
useCurrent: false,
|
||||||
format: "YYYY-MM-DD",
|
format: "YYYY-MM-DD",
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,13 @@
|
||||||
*= require strap-on
|
*= require strap-on
|
||||||
*= require formtastic-bootstrap
|
*= require formtastic-bootstrap
|
||||||
*= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
|
*= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
|
||||||
|
*= require selectize
|
||||||
|
*= require selectize.bootstrap3
|
||||||
|
*= require bootstrap-select
|
||||||
|
*= require bootstrap-markdown
|
||||||
|
*= require bootstrap-datetimepicker
|
||||||
|
*= require leaflet
|
||||||
|
|
||||||
*= require osem
|
*= require osem
|
||||||
*= require osem-rating
|
*= require osem-rating
|
||||||
*= require osem-schedule
|
*= require osem-schedule
|
||||||
|
|
@ -10,15 +17,9 @@
|
||||||
*= require osem-splash
|
*= require osem-splash
|
||||||
*= require font-awesome
|
*= require font-awesome
|
||||||
*= require osem-fonts
|
*= require osem-fonts
|
||||||
*= require bootstrap-markdown
|
|
||||||
*= require bootstrap-datetimepicker
|
|
||||||
*= require leaflet
|
|
||||||
*= require bootstrap3-switch
|
*= require bootstrap3-switch
|
||||||
*= require osem-payments
|
*= require osem-payments
|
||||||
*= require osem-navbar
|
*= require osem-navbar
|
||||||
*= require selectize
|
|
||||||
*= require selectize.bootstrap3
|
|
||||||
*= require mastodon
|
*= require mastodon
|
||||||
*= require bootstrap-select
|
|
||||||
*= require conferences
|
*= require conferences
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
@import "breakpoints.scss";
|
@import "breakpoints.scss";
|
||||||
|
@import "osem-variables.scss";
|
||||||
|
|
||||||
.nav-osem {
|
.nav-osem {
|
||||||
border: none;
|
border: none;
|
||||||
@include breakpoint(xs) {
|
@include breakpoint(xs) {
|
||||||
|
|
@ -29,7 +31,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
padding: 17px;
|
|
||||||
min-width: 225px;
|
min-width: 225px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.navbar-default {
|
||||||
|
.navbar-nav > .open > a {
|
||||||
|
&:hover, &:focus {
|
||||||
|
color: $navbar-default-link-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand img {
|
||||||
|
margin-top: -5px;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.trapezoid {
|
||||||
|
border-top-color: $navbar-default-bg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,9 +64,8 @@
|
||||||
|
|
||||||
#schedule td.event {
|
#schedule td.event {
|
||||||
background-image: linear-gradient(to top, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
|
background-image: linear-gradient(to top, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
|
||||||
|
cursor: pointer;
|
||||||
cursor: pointer;
|
padding: 3px 2px;
|
||||||
padding: 3px 2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#schedule td.event:hover
|
#schedule td.event:hover
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
@import "breakpoints.scss";
|
@import "breakpoints.scss";
|
||||||
|
@import "osem-variables.scss";
|
||||||
|
|
||||||
#splash {
|
#splash {
|
||||||
// Counter the general padding for #content
|
// Counter the general padding for #content
|
||||||
|
|
@ -6,18 +7,30 @@
|
||||||
section {
|
section {
|
||||||
padding-top: 60px;
|
padding-top: 60px;
|
||||||
padding-bottom: 60px;
|
padding-bottom: 60px;
|
||||||
|
|
||||||
|
.trapezoid {
|
||||||
|
top: 60px + $trapezoid-height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
section:nth-child(even) {
|
section:nth-child(even) {
|
||||||
background: none repeat scroll 0 0 #e0e0e0;
|
background: none repeat scroll 0 0 #eee;
|
||||||
color: #555;
|
color: #333;
|
||||||
|
|
||||||
|
.trapezoid {
|
||||||
|
border-top-color: #eee;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
section:nth-child(odd) {
|
section:nth-child(odd) {
|
||||||
background: none repeat scroll 0 0 #ffffff;
|
background: none repeat scroll 0 0 #ffffff;
|
||||||
color: #7b7b7b;
|
color: #333;
|
||||||
.thumbnail {
|
.thumbnail {
|
||||||
background: none repeat scroll 0 0 #e0e0e0;
|
background: none repeat scroll 0 0 #e0e0e0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.trapezoid {
|
||||||
|
border-top-color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cta-button {
|
.cta-button {
|
||||||
|
|
@ -32,11 +45,15 @@
|
||||||
padding-top: 100px;
|
padding-top: 100px;
|
||||||
padding-bottom: 100px;
|
padding-bottom: 100px;
|
||||||
.container {
|
.container {
|
||||||
#header {
|
#header-no-image {
|
||||||
background-color: rgba(224, 224, 224,.80);
|
background-color: rgba(224, 224, 224,.80);
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#header-image {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,6 +84,10 @@
|
||||||
#venue-pic {
|
#venue-pic {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
// The venue section has less padding.
|
||||||
|
.trapezoid {
|
||||||
|
top: $trapezoid-height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#lodging {
|
#lodging {
|
||||||
|
|
@ -93,6 +114,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#tickets {
|
||||||
|
a {
|
||||||
|
&:hover, &:focus {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#sponsors {
|
#sponsors {
|
||||||
.img-sponsor {
|
.img-sponsor {
|
||||||
max-height: 100px;
|
max-height: 100px;
|
||||||
|
|
@ -116,14 +145,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#social-media{
|
#social-media{
|
||||||
background: none repeat scroll 0 0 #2f2f2f;
|
background: none repeat scroll 0 0 #0C3559;
|
||||||
padding-top: 60px;
|
padding: 50px 20px;
|
||||||
padding-bottom: 60px;
|
|
||||||
i{
|
i{
|
||||||
color: #4a4a4a;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
i:hover{
|
i:hover{
|
||||||
color: #16a085;
|
color: #F2E205;
|
||||||
}
|
}
|
||||||
a{
|
a{
|
||||||
padding-left: 100px;
|
padding-left: 100px;
|
||||||
|
|
@ -164,11 +192,11 @@
|
||||||
i.fa {
|
i.fa {
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
}
|
}
|
||||||
&.show {
|
// &.show {
|
||||||
visibility:visible;
|
// visibility:visible;
|
||||||
cursor:pointer;
|
// cursor:pointer;
|
||||||
opacity: 1.0;
|
// opacity: 1.0;
|
||||||
}
|
// }
|
||||||
a {
|
a {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
14
app/assets/stylesheets/osem-variables.scss
Normal file
14
app/assets/stylesheets/osem-variables.scss
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
// This file is included *early* in CSS order!
|
||||||
|
// These variables change bootstrap defaults.
|
||||||
|
|
||||||
|
$navbar-default-bg: #0C3559;
|
||||||
|
$navbar-default-link-active-bg: rgb(8,8,8);
|
||||||
|
$navbar-default-border: 1px solid #d4d4d4;
|
||||||
|
$navbar-default-color: #FFF;
|
||||||
|
$navbar-default-link-color: #FFF;
|
||||||
|
$navbar-default-link-hover-color: #F2E205;
|
||||||
|
$navbar-default-link-active-hover-color: #FFF;
|
||||||
|
|
||||||
|
|
||||||
|
// The hiegh of the section tabs that are like Snap! blocks.
|
||||||
|
$trapezoid-height: 14px;
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
@import "osem-variables";
|
||||||
@import "bootstrap/mixins";
|
@import "bootstrap/mixins";
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
|
@ -7,15 +8,31 @@ html {
|
||||||
|
|
||||||
body {
|
body {
|
||||||
/* Margin bottom by 2 times the footer height */
|
/* Margin bottom by 2 times the footer height */
|
||||||
margin-bottom: 60px;
|
margin-bottom: 85px;
|
||||||
/* Margin bottom by navbar height */
|
/* Margin bottom by navbar height */
|
||||||
padding-top: 60px;
|
padding-top: 60px;
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#content {
|
#content {
|
||||||
padding-bottom: 60px;
|
padding-bottom: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Designed to be the last element in a section / nav
|
||||||
|
// Makes a little "puzzle piece" connector.
|
||||||
|
.trapezoid {
|
||||||
|
position: relative;
|
||||||
|
margin-left: 60px;
|
||||||
|
border-top: $trapezoid-height solid;
|
||||||
|
border-left: 9px solid transparent;
|
||||||
|
border-right: 9px solid transparent;
|
||||||
|
height: 0;
|
||||||
|
width: 64px;
|
||||||
|
margin-top: -1 * $trapezoid-height;
|
||||||
|
top: $trapezoid-height;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
$navbar-default-bg: #299a0b;
|
// Place bootstrap variable customizations in the file below.
|
||||||
$navbar-default-link-active-bg: #DFE0DF;
|
@import "osem-variables";
|
||||||
$navbar-default-border: 1px solid #d4d4d4;
|
|
||||||
$navbar-default-color: #ffffff;
|
|
||||||
$navbar-default-link-color: #ffffff;
|
|
||||||
$navbar-default-link-hover-color: #000000;
|
|
||||||
|
|
||||||
@import 'bootstrap-datetimepicker';
|
@import 'bootstrap-datetimepicker';
|
||||||
@import "bootstrap-sprockets";
|
@import "bootstrap-sprockets";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ module Admin
|
||||||
|
|
||||||
if @commercial.save
|
if @commercial.save
|
||||||
redirect_to admin_conference_commercials_path,
|
redirect_to admin_conference_commercials_path,
|
||||||
notice: 'Commercial was successfully created.'
|
notice: 'Materials were successfully created.'
|
||||||
else
|
else
|
||||||
redirect_to admin_conference_commercials_path,
|
redirect_to admin_conference_commercials_path,
|
||||||
error: 'An error prohibited this Commercial from being saved: '\
|
error: 'An error prohibited materials from being saved: '\
|
||||||
"#{@commercial.errors.full_messages.join('. ')}."
|
"#{@commercial.errors.full_messages.join('. ')}."
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
@ -29,17 +29,17 @@ module Admin
|
||||||
def update
|
def update
|
||||||
if @commercial.update(commercial_params)
|
if @commercial.update(commercial_params)
|
||||||
redirect_to admin_conference_commercials_path,
|
redirect_to admin_conference_commercials_path,
|
||||||
notice: 'Commercial was successfully updated.'
|
notice: 'Materials were successfully updated.'
|
||||||
else
|
else
|
||||||
redirect_to admin_conference_commercials_path,
|
redirect_to admin_conference_commercials_path,
|
||||||
error: 'An error prohibited this Commercial from being saved: '\
|
error: 'An error prohibited materials from being saved: '\
|
||||||
"#{@commercial.errors.full_messages.join('. ')}."
|
"#{@commercial.errors.full_messages.join('. ')}."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@commercial.destroy
|
@commercial.destroy
|
||||||
redirect_to admin_conference_commercials_path, notice: 'Commercial was successfully destroyed.'
|
redirect_to admin_conference_commercials_path, notice: 'Materials were successfully removed.'
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_commercial
|
def render_commercial
|
||||||
|
|
@ -60,9 +60,9 @@ module Admin
|
||||||
errors = Commercial.read_file(params[:file]) if params[:file]
|
errors = Commercial.read_file(params[:file]) if params[:file]
|
||||||
|
|
||||||
if !params[:file]
|
if !params[:file]
|
||||||
flash[:error] = 'Empty file detected while adding commercials to Event'
|
flash[:error] = 'Empty file detected while adding materials to Event'
|
||||||
elsif errors.all? { |_k, v| v.blank? }
|
elsif errors.all? { |_k, v| v.blank? }
|
||||||
flash[:notice] = 'Successfully added commercials.'
|
flash[:notice] = 'Successfully added materials.'
|
||||||
else
|
else
|
||||||
errors_text = ''
|
errors_text = ''
|
||||||
errors_text << 'Unable to find event with ID: ' + errors[:no_event].join(', ') + '. ' if errors[:no_event].any?
|
errors_text << 'Unable to find event with ID: ' + errors[:no_event].join(', ') + '. ' if errors[:no_event].any?
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ module Admin
|
||||||
|
|
||||||
def registration_params
|
def registration_params
|
||||||
params.require(:registration).permit(
|
params.require(:registration).permit(
|
||||||
:user_id, :conference_id, :arrival, :departure, :attended,
|
:user_id, :conference_id, :attended,
|
||||||
:volunteer, :other_special_needs, :accepted_code_of_conduct,
|
:volunteer, :other_special_needs, :accepted_code_of_conduct,
|
||||||
vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: []
|
vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: []
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,10 @@ module Admin
|
||||||
|
|
||||||
if @commercial.save
|
if @commercial.save
|
||||||
redirect_to admin_conference_venue_path,
|
redirect_to admin_conference_venue_path,
|
||||||
notice: 'Commercial was successfully created.'
|
notice: 'Materials successfully created.'
|
||||||
else
|
else
|
||||||
redirect_to admin_conference_venue_path,
|
redirect_to admin_conference_venue_path,
|
||||||
error: 'An error prohibited this Commercial from being saved: '\
|
error: 'An error prohibited materials from being saved: '\
|
||||||
"#{@commercial.errors.full_messages.join('. ')}."
|
"#{@commercial.errors.full_messages.join('. ')}."
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
@ -24,17 +24,17 @@ module Admin
|
||||||
def update
|
def update
|
||||||
if @commercial.update(commercial_params)
|
if @commercial.update(commercial_params)
|
||||||
redirect_to admin_conference_venue_path,
|
redirect_to admin_conference_venue_path,
|
||||||
notice: 'Commercial was successfully updated.'
|
notice: 'Materials successfully updated.'
|
||||||
else
|
else
|
||||||
redirect_to admin_conference_venue_path,
|
redirect_to admin_conference_venue_path,
|
||||||
error: 'An error prohibited this Commercial from being saved: '\
|
error: 'An error prohibited materials from being saved: '\
|
||||||
"#{@commercial.errors.full_messages.join('. ')}."
|
"#{@commercial.errors.full_messages.join('. ')}."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@commercial.destroy
|
@commercial.destroy
|
||||||
redirect_to admin_conference_venue_path, notice: 'Commercial was successfully destroyed.'
|
redirect_to admin_conference_venue_path, notice: 'Materials successfully destroyed.'
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_commercial
|
def render_commercial
|
||||||
|
|
|
||||||
|
|
@ -12,27 +12,27 @@ class CommercialsController < ApplicationController
|
||||||
|
|
||||||
if @commercial.save
|
if @commercial.save
|
||||||
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
||||||
notice: 'Commercial was successfully created.'
|
notice: 'Materials were successfully created.'
|
||||||
else
|
else
|
||||||
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
||||||
error: "An error prohibited this Commercial from being saved: #{@commercial.errors.full_messages.join('. ')}."
|
error: "An error prohibited these materials from being saved: #{@commercial.errors.full_messages.join('. ')}."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
if @commercial.update(commercial_params)
|
if @commercial.update(commercial_params)
|
||||||
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
||||||
notice: 'Commercial was successfully updated.'
|
notice: 'Materials were successfully updated.'
|
||||||
else
|
else
|
||||||
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'),
|
||||||
error: "An error prohibited this Commercial from being saved: #{@commercial.errors.full_messages.join('. ')}."
|
error: "An error prohibited materials from being saved: #{@commercial.errors.full_messages.join('. ')}."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@commercial.destroy
|
@commercial.destroy
|
||||||
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id),
|
redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id),
|
||||||
notice: 'Commercial was successfully destroyed.'
|
notice: 'Materials were successfully destroyed.'
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_commercial
|
def render_commercial
|
||||||
|
|
|
||||||
|
|
@ -108,9 +108,9 @@ class ConferenceRegistrationsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def registration_params
|
def registration_params
|
||||||
params.require(:registration)
|
params.permit(:registration)
|
||||||
.permit(
|
.permit(
|
||||||
:conference_id, :arrival, :departure,
|
:conference_id,
|
||||||
:volunteer, :accepted_code_of_conduct,
|
:volunteer, :accepted_code_of_conduct,
|
||||||
vchoice_ids: [], qanswer_ids: [],
|
vchoice_ids: [], qanswer_ids: [],
|
||||||
qanswers_attributes: [],
|
qanswers_attributes: [],
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ class ConferencesController < ApplicationController
|
||||||
@tickets = @conference.tickets.visible.order('price_cents')
|
@tickets = @conference.tickets.visible.order('price_cents')
|
||||||
end
|
end
|
||||||
if splashpage.include_lodgings
|
if splashpage.include_lodgings
|
||||||
@lodgings = @conference.lodgings.order('name')
|
@lodgings = @conference.lodgings.order('id')
|
||||||
end
|
end
|
||||||
if splashpage.include_sponsors
|
if splashpage.include_sponsors
|
||||||
@sponsorship_levels = @conference.sponsorship_levels.eager_load(
|
@sponsorship_levels = @conference.sponsorship_levels.eager_load(
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,6 @@ class RegistrationDatatable < AjaxDatatablesRails::Base
|
||||||
roles: { source: 'Role.name' },
|
roles: { source: 'Role.name' },
|
||||||
email: { source: 'User.email' },
|
email: { source: 'User.email' },
|
||||||
accepted_code_of_conduct: { source: 'Registration.accepted_code_of_conduct', searchable: false },
|
accepted_code_of_conduct: { source: 'Registration.accepted_code_of_conduct', searchable: false },
|
||||||
arrival: { source: 'Registration.arrival', searchable: false },
|
|
||||||
departure: { source: 'Registration.departure', searchable: false },
|
|
||||||
actions: { source: 'Registration.id', searchable: false, orderable: false }
|
actions: { source: 'Registration.id', searchable: false, orderable: false }
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -36,8 +34,6 @@ class RegistrationDatatable < AjaxDatatablesRails::Base
|
||||||
roles: conference_role_titles(record.user),
|
roles: conference_role_titles(record.user),
|
||||||
email: record.email,
|
email: record.email,
|
||||||
accepted_code_of_conduct: !!record.accepted_code_of_conduct, # rubocop:disable Style/DoubleNegation
|
accepted_code_of_conduct: !!record.accepted_code_of_conduct, # rubocop:disable Style/DoubleNegation
|
||||||
arrival: record.arrival&.utc,
|
|
||||||
departure: record.departure&.utc,
|
|
||||||
questions: {},
|
questions: {},
|
||||||
edit_url: edit_admin_conference_registration_path(conference, record),
|
edit_url: edit_admin_conference_registration_path(conference, record),
|
||||||
DT_RowId: record.id
|
DT_RowId: record.id
|
||||||
|
|
|
||||||
|
|
@ -40,19 +40,20 @@ class UserDatatable < AjaxDatatablesRails::Base
|
||||||
|
|
||||||
# rubocop:disable Naming/AccessorMethodName
|
# rubocop:disable Naming/AccessorMethodName
|
||||||
def get_raw_records
|
def get_raw_records
|
||||||
User.left_outer_joins(:registrations, :roles)
|
User.left_outer_joins(:registrations, :roles).select(
|
||||||
.distinct
|
"DISTINCT users.id, users.name, users.email, users.confirmed_at, COUNT(CASE WHEN registrations.attended = 't' THEN 1 END) AS attended_count"
|
||||||
.select("users.*, COUNT(CASE WHEN registrations.attended = 't' THEN 1 END) AS attended_count")
|
).group(
|
||||||
.group('users.id')
|
'users.id, users.name, users.email, users.confirmed_at'
|
||||||
|
)
|
||||||
end
|
end
|
||||||
# rubocop:enable Naming/AccessorMethodName
|
# rubocop:enable Naming/AccessorMethodName
|
||||||
|
|
||||||
def records_total_count
|
def records_total_count
|
||||||
fetch_records.unscope(:group).count(:all)
|
fetch_records.unscoped.count(:id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def records_filtered_count
|
def records_filtered_count
|
||||||
filter_records(fetch_records).unscope(:group).count(:all)
|
filter_records(fetch_records).unscoped.count
|
||||||
end
|
end
|
||||||
|
|
||||||
# ==== These methods represent the basic operations to perform on records
|
# ==== These methods represent the basic operations to perform on records
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@ module ApplicationHelper
|
||||||
'OSEM'
|
'OSEM'
|
||||||
)
|
)
|
||||||
link_to(
|
link_to(
|
||||||
link_text,
|
image_tag('snapcon_logo.png'),
|
||||||
root_path,
|
root_path,
|
||||||
class: 'navbar-brand',
|
class: 'navbar-brand',
|
||||||
title: 'Open Source Event Manager'
|
title: 'Open Source Event Manager'
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
require 'redcarpet/render_strip'
|
||||||
|
|
||||||
module FormatHelper
|
module FormatHelper
|
||||||
##
|
##
|
||||||
|
|
@ -191,9 +192,12 @@ module FormatHelper
|
||||||
return '' if text.nil?
|
return '' if text.nil?
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
autolink: true,
|
autolink: true,
|
||||||
space_after_headers: true,
|
space_after_headers: true,
|
||||||
no_intra_emphasis: true
|
tables: true,
|
||||||
|
strikethrough: true,
|
||||||
|
footnotes: true,
|
||||||
|
superscript: true
|
||||||
}
|
}
|
||||||
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(escape_html: escape_html), options)
|
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(escape_html: escape_html), options)
|
||||||
markdown.render(text).html_safe
|
markdown.render(text).html_safe
|
||||||
|
|
@ -203,6 +207,11 @@ module FormatHelper
|
||||||
markdown("#{text} Please look at #{link_to '**Markdown Syntax**', 'https://daringfireball.net/projects/markdown/syntax', target: '_blank'} to format your text", false)
|
markdown("#{text} Please look at #{link_to '**Markdown Syntax**', 'https://daringfireball.net/projects/markdown/syntax', target: '_blank'} to format your text", false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Return a plain text markdown stripped of formatting.
|
||||||
|
def plain_text(content)
|
||||||
|
Redcarpet::Markdown.new(Redcarpet::Render::StripDown).render(content)
|
||||||
|
end
|
||||||
|
|
||||||
def quantity_left_of(resource)
|
def quantity_left_of(resource)
|
||||||
return '-/-' if resource.quantity.blank?
|
return '-/-' if resource.quantity.blank?
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -39,7 +39,7 @@ class Commercial < ApplicationRecord
|
||||||
|
|
||||||
commercial = event.commercials.new(url: url)
|
commercial = event.commercials.new(url: url)
|
||||||
unless commercial.save
|
unless commercial.save
|
||||||
errors[:validation_errors] << "Could not create commercial for event with ID #{event.id} (" + commercial.errors.full_messages.to_sentence + ')'
|
errors[:validation_errors] << "Could not create materials for event with ID #{event.id} (" + commercial.errors.full_messages.to_sentence + ')'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
errors
|
errors
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ class Conference < ApplicationRecord
|
||||||
has_one :email_settings, dependent: :destroy
|
has_one :email_settings, dependent: :destroy
|
||||||
has_one :program, dependent: :destroy
|
has_one :program, dependent: :destroy
|
||||||
has_one :venue, dependent: :destroy
|
has_one :venue, dependent: :destroy
|
||||||
has_many :physical_tickets, through: :ticket_purchases
|
|
||||||
has_many :ticket_purchases, dependent: :destroy
|
has_many :ticket_purchases, dependent: :destroy
|
||||||
|
has_many :physical_tickets, through: :ticket_purchases
|
||||||
has_many :payments, dependent: :destroy
|
has_many :payments, dependent: :destroy
|
||||||
has_many :supporters, through: :ticket_purchases, source: :user
|
has_many :supporters, through: :ticket_purchases, source: :user
|
||||||
has_many :tickets, dependent: :destroy
|
has_many :tickets, dependent: :destroy
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,6 @@ class Registration < ApplicationRecord
|
||||||
|
|
||||||
validates :user_id, uniqueness: { scope: :conference_id, message: 'already Registered!' }
|
validates :user_id, uniqueness: { scope: :conference_id, message: 'already Registered!' }
|
||||||
validate :registration_limit_not_exceed, on: :create
|
validate :registration_limit_not_exceed, on: :create
|
||||||
validate :registration_to_events_only_if_present
|
|
||||||
|
|
||||||
validates :accepted_code_of_conduct, acceptance: {
|
validates :accepted_code_of_conduct, acceptance: {
|
||||||
if: -> { conference.try(:code_of_conduct).present? }
|
if: -> { conference.try(:code_of_conduct).present? }
|
||||||
}
|
}
|
||||||
|
|
@ -48,19 +46,6 @@ class Registration < ApplicationRecord
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
##
|
|
||||||
# If the user registers to attend events that are already scheduled,
|
|
||||||
# only allow registration to events if the user will be present
|
|
||||||
# (based on arrival and departure attributes)
|
|
||||||
# No validation if arrival/departure attributes are empty
|
|
||||||
def registration_to_events_only_if_present
|
|
||||||
if (arrival || departure) && events.pluck(:start_time).any?
|
|
||||||
errors.add(:arrival, 'is too late! You cannot register for events that take place before your arrival') if events.pluck(:start_time).compact.map { |x| x < arrival }.any?
|
|
||||||
|
|
||||||
errors.add(:departure, 'is too early! You cannot register for events that take place after your departure') if events.pluck(:start_time).compact.map { |x| x > departure }.any?
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def subscribe_to_conference
|
def subscribe_to_conference
|
||||||
Subscription.create(conference_id: conference.id, user_id: user.id)
|
Subscription.create(conference_id: conference.id, user_id: user.id)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ class User < ApplicationRecord
|
||||||
else
|
else
|
||||||
[:database_authenticatable, :registerable,
|
[:database_authenticatable, :registerable,
|
||||||
:recoverable, :rememberable, :trackable, :validatable, :confirmable,
|
:recoverable, :rememberable, :trackable, :validatable, :confirmable,
|
||||||
:omniauthable, omniauth_providers: [:suse, :google, :facebook, :github]]
|
:omniauthable, omniauth_providers: [:google, :discourse]]
|
||||||
end
|
end
|
||||||
|
|
||||||
devise(*devise_modules)
|
devise(*devise_modules)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1 Commercials
|
%h1 Session Materials
|
||||||
%p.text-muted
|
%p.text-muted
|
||||||
Conference commercials will be displayed on the events in the
|
Conference materials will be displayed on the events in the
|
||||||
= link_to 'schedule,', conference_schedule_path(@conference.short_title)
|
= link_to 'schedule,', conference_schedule_path(@conference.short_title)
|
||||||
if the event speaker didn't add an event commercial.
|
if the event speaker didn't add any event materials.
|
||||||
- if can? :create, @conference.commercials.new
|
- if can? :create, @conference.commercials.new
|
||||||
.row
|
.row
|
||||||
.col-md-6
|
.col-md-6
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,12 @@
|
||||||
Event Type
|
Event Type
|
||||||
= @event_type.title
|
= @event_type.title
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-8
|
||||||
= semantic_form_for(@event_type, url: (@event_type.new_record? ? admin_conference_program_event_types_path : admin_conference_program_event_type_path(@conference.short_title, @event_type))) do |f|
|
- form_url = (@event_type.new_record? ? admin_conference_program_event_types_path : admin_conference_program_event_type_path(@conference.short_title, @event_type))
|
||||||
|
= semantic_form_for(@event_type, url: form_url) do |f|
|
||||||
= f.input :title, input_html: { autofocus: true }
|
= f.input :title, input_html: { autofocus: true }
|
||||||
= f.input :length, input_html: {size: 3, type: 'number', step: @event_type.program.schedule_interval, min: @event_type.program.schedule_interval}
|
= f.input :length, input_html: {size: 3, type: 'number', step: @event_type.program.schedule_interval, min: @event_type.program.schedule_interval}
|
||||||
= f.input :description
|
= f.input :description, as: :text, hint: markdown_hint, input_html: { rows: 5, data: { provide: 'markdown-editable' } }
|
||||||
= f.input :minimum_abstract_length, input_html: {size: 3}
|
= f.input :minimum_abstract_length, input_html: {size: 3}
|
||||||
= f.input :maximum_abstract_length, input_html: {size: 3}
|
= f.input :maximum_abstract_length, input_html: {size: 3}
|
||||||
= f.input :color, input_html: { size: 6, type: 'color' }
|
= f.input :color, input_html: { size: 6, type: 'color' }
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
%td
|
%td
|
||||||
= event_type.title
|
= event_type.title
|
||||||
%td
|
%td
|
||||||
= event_type.description
|
= markdown(event_type.description)
|
||||||
%td
|
%td
|
||||||
= event_type.length
|
= event_type.length
|
||||||
Minutes
|
Minutes
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@
|
||||||
= "(#{@events.length})" if @events.any?
|
= "(#{@events.length})" if @events.any?
|
||||||
|
|
||||||
.btn-group.pull-right
|
.btn-group.pull-right
|
||||||
%button.btn.btn-primary{ title: 'Mass import of commercials for events',
|
%button.btn.btn-primary{ title: 'Mass import of materials for events',
|
||||||
data: { toggle: 'modal', target: '#mass-commercials-modal' } }
|
data: { toggle: 'modal', target: '#mass-commercials-modal' } }
|
||||||
Add Commercials
|
Add Materials
|
||||||
|
|
||||||
- if can? :create, Event
|
- if can? :create, Event
|
||||||
= link_to 'Add Event',
|
= link_to 'Add Event',
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
.modal-dialog
|
.modal-dialog
|
||||||
.modal-content
|
.modal-content
|
||||||
.modal-header
|
.modal-header
|
||||||
%h1 Add commercials to events
|
%h1 Add materials to events
|
||||||
.text-muted
|
.text-muted
|
||||||
Upload your file with data in the following format:
|
Upload your file with data in the following format:
|
||||||
%b Event_ID:Commercial_Link
|
%b Event_ID:Commercial_Link
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
- progress_status = @event.progress_status
|
- progress_status = @event.progress_status
|
||||||
= progress_status.reject{ |_key, value| value || value.nil? }.length
|
= progress_status.reject{ |_key, value| value || value.nil? }.length
|
||||||
%li
|
%li
|
||||||
= link_to 'Commercials', '#proposal-commercials', 'data-toggle' => 'tab'
|
= link_to 'Materials', '#proposal-commercials', 'data-toggle' => 'tab'
|
||||||
|
|
||||||
.tab-content
|
.tab-content
|
||||||
#proposal-content.tab-pane.active
|
#proposal-content.tab-pane.active
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
- else
|
- else
|
||||||
= general_change_description(version)
|
= general_change_description(version)
|
||||||
= link_to 'commercial',
|
= link_to 'materials',
|
||||||
edit_admin_conference_program_event_path(conference_id: @conference.short_title,
|
edit_admin_conference_program_event_path(conference_id: @conference.short_title,
|
||||||
id: @event.id, anchor: 'commercials-content')
|
id: @event.id, anchor: 'commercials-content')
|
||||||
|
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
%td{ 'class' => class_for_todo(progress_status['subtitle']) }
|
%td{ 'class' => class_for_todo(progress_status['subtitle']) }
|
||||||
%span{ 'class' => [icon_for_todo(progress_status['subtitle']), 'fa-lg'] }
|
%span{ 'class' => [icon_for_todo(progress_status['subtitle']), 'fa-lg'] }
|
||||||
%tr
|
%tr
|
||||||
%td= link_to 'Add a commercial', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event, anchor: 'commercials-content')
|
%td= link_to 'Add materials', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event, anchor: 'commercials-content')
|
||||||
%td{ 'class' => class_for_todo(progress_status['commercials']) }
|
%td{ 'class' => class_for_todo(progress_status['commercials']) }
|
||||||
%span{ 'class' => [icon_for_todo(progress_status['commercials']), 'fa-lg'] }
|
%span{ 'class' => [icon_for_todo(progress_status['commercials']), 'fa-lg'] }
|
||||||
- unless progress_status['track'].nil?
|
- unless progress_status['track'].nil?
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,6 @@
|
||||||
%th{ width: '0' } E-Mail
|
%th{ width: '0' } E-Mail
|
||||||
%th{ width: '0' }
|
%th{ width: '0' }
|
||||||
%abbr{ title: 'Code of Conduct' } CoC
|
%abbr{ title: 'Code of Conduct' } CoC
|
||||||
%th{ width: '0' } Arrival
|
|
||||||
%th{ width: '0' } Departure
|
|
||||||
%th{ width: '0' } Actions
|
%th{ width: '0' } Actions
|
||||||
%tbody
|
%tbody
|
||||||
|
|
||||||
|
|
@ -81,22 +79,6 @@
|
||||||
"className": "code-of-conduct text-center",
|
"className": "code-of-conduct text-center",
|
||||||
"searchable": false
|
"searchable": false
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"data": "arrival",
|
|
||||||
"searchable": false,
|
|
||||||
"render": function(data, type, row) {
|
|
||||||
if (data) { return moment(data).format('ll LT'); }
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"data": "departure",
|
|
||||||
"searchable": false,
|
|
||||||
"render": function(data, type, row) {
|
|
||||||
if (data) { return moment(data).format('ll LT'); }
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"data": null,
|
"data": null,
|
||||||
"className": "actions",
|
"className": "actions",
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,7 @@ prawn_document(force_download: true, filename: @pdf_filename, page_layout: :land
|
||||||
'Name',
|
'Name',
|
||||||
'Nickname',
|
'Nickname',
|
||||||
'Affiliation',
|
'Affiliation',
|
||||||
'Email',
|
'Email']
|
||||||
'Arrival Date',
|
|
||||||
'Departure Date']
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
header_array << question.title
|
header_array << question.title
|
||||||
end
|
end
|
||||||
|
|
@ -19,8 +17,6 @@ prawn_document(force_download: true, filename: @pdf_filename, page_layout: :land
|
||||||
row << registration.nickname
|
row << registration.nickname
|
||||||
row << registration.affiliation
|
row << registration.affiliation
|
||||||
row << registration.email
|
row << registration.email
|
||||||
row << registration.arrival.to_s || ''
|
|
||||||
row << registration.departure.to_s || ''
|
|
||||||
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
qa = registration.qanswers.find_by(question: question)
|
qa = registration.qanswers.find_by(question: question)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
wb = xlsx_package.workbook
|
wb = xlsx_package.workbook
|
||||||
wb.add_worksheet(name: 'registrations') do |sheet|
|
wb.add_worksheet(name: 'registrations') do |sheet|
|
||||||
bold_style = wb.styles.add_style(b: true)
|
bold_style = wb.styles.add_style(b: true)
|
||||||
row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email', 'Arrival', 'Departure']
|
row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email']
|
||||||
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
row << question.title
|
row << question.title
|
||||||
|
|
@ -18,8 +18,6 @@ wb.add_worksheet(name: 'registrations') do |sheet|
|
||||||
row << registration.nickname
|
row << registration.nickname
|
||||||
row << registration.affiliation
|
row << registration.affiliation
|
||||||
row << registration.email
|
row << registration.email
|
||||||
row << registration.arrival.to_s
|
|
||||||
row << registration.departure.to_s
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
qa = registration.qanswers.find_by(question: question)
|
qa = registration.qanswers.find_by(question: question)
|
||||||
answer = ( qa ? qa.answer.title : '' )
|
answer = ( qa ? qa.answer.title : '' )
|
||||||
|
|
@ -30,4 +28,3 @@ wb.add_worksheet(name: 'registrations') do |sheet|
|
||||||
sheet.add_row row
|
sheet.add_row row
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
%th Title
|
%th Title
|
||||||
%th Speakers Registered
|
%th Speakers Registered
|
||||||
%th Speakers Biographies
|
%th Speakers Biographies
|
||||||
%th Commercial
|
%th Materials
|
||||||
%th Subtitle
|
%th Subtitle
|
||||||
%th Difficulty Level
|
%th Difficulty Level
|
||||||
- if @program.tracks.any?
|
- if @program.tracks.any?
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1
|
%h1
|
||||||
Events without commercials
|
Events Without Materials
|
||||||
= "(#{@events_missing_commercial.length})"
|
= "(#{@events_missing_commercial.length})"
|
||||||
%p.text-muted
|
%p.text-muted
|
||||||
All submissions that have no commercial
|
All submissions that have no materials
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%table.datatable
|
%table.datatable
|
||||||
%thead
|
%thead
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
= link_to 'All Events', '#all', 'data-toggle' => 'tab'
|
= link_to 'All Events', '#all', 'data-toggle' => 'tab'
|
||||||
%li
|
%li
|
||||||
%a{href: '#missing-commercial', 'data-toggle' => 'tab'}
|
%a{href: '#missing-commercial', 'data-toggle' => 'tab'}
|
||||||
Events without Commercials
|
Events without Materials
|
||||||
%span.label.label-danger{style: 'border-radius: 1em;'}
|
%span.label.label-danger{style: 'border-radius: 1em;'}
|
||||||
= @events_missing_commercial.length
|
= @events_missing_commercial.length
|
||||||
%li
|
%li
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
%li.active
|
%li.active
|
||||||
= link_to 'Details', '#details-content', 'data-toggle' => 'tab'
|
= link_to 'Details', '#details-content', 'data-toggle' => 'tab'
|
||||||
%li
|
%li
|
||||||
= link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab'
|
= link_to 'Materials', '#commercials-content', 'data-toggle' => 'tab'
|
||||||
|
|
||||||
.tab-content
|
.tab-content
|
||||||
#details-content.tab-pane.active
|
#details-content.tab-pane.active
|
||||||
|
|
@ -56,4 +56,4 @@
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
- else
|
- else
|
||||||
First Create Venue, then update commercial
|
First Create Venue, then update materials
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
-else
|
-else
|
||||||
- if @venue.commercial.nil?
|
- if @venue.commercial.nil?
|
||||||
.row
|
.row
|
||||||
%img{ "data-src" => "holder.js/500x300?text=No Commercial Set", class: 'img-responsive img-rounded' }
|
%img{ "data-src" => "holder.js/500x300?text=No Materials Set", class: 'img-responsive img-rounded' }
|
||||||
- else
|
- else
|
||||||
- if @venue.commercial.persisted?
|
- if @venue.commercial.persisted?
|
||||||
.thumbnail
|
.thumbnail
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1 Editing Commercial
|
%h1 Edit Materials
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
= semantic_form_for @commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event.id, id: @commercial.id) do |f|
|
= semantic_form_for @commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event.id, id: @commercial.id) do |f|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1 New Commercial
|
%h1 New Materials
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
= semantic_form_for @commercial, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event.id) do |f|
|
= semantic_form_for @commercial, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event.id) do |f|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
= render partial: 'devise/shared/sign_up_form_embedded'
|
= render partial: 'devise/shared/sign_up_form_embedded'
|
||||||
|
|
||||||
= render partial: 'registration_info', locals: { f: f }
|
= render partial: 'registration_info', locals: { f: f }
|
||||||
|
= f.input :conference_id, as: :hidden, value: @conference.id
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%p.pull-right
|
%p.pull-right
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,4 @@
|
||||||
(Scheduled on: #{event.time.to_date})
|
(Scheduled on: #{event.time.to_date})
|
||||||
%br
|
%br
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
= f.inputs 'Your Travel Info' do
|
|
||||||
= f.input :arrival, as: :string, label: 'Your arrival time', hint: "Leave blank if not sure", input_html: { value: (f.object.arrival.to_formatted_s(:db_without_seconds) unless f.object.arrival.nil?), id: 'registration-arrival-datepicker',start_date: @conference.start_date,end_date: @conference.end_date }
|
|
||||||
= f.input :departure, as: :string, label: 'Your departure time', hint: "Leave blank if not sure", input_html: { value: (f.object.departure.to_formatted_s(:db_without_seconds) unless f.object.departure.nil?), id: 'registration-departure-datepicker' }
|
|
||||||
|
|
||||||
= render 'conferences/code_of_conduct', organization: @conference.organization
|
= render 'conferences/code_of_conduct', organization: @conference.organization
|
||||||
|
|
|
||||||
|
|
@ -33,28 +33,6 @@
|
||||||
data: { toggle: 'modal', target: '#modal-code-of-conduct'}
|
data: { toggle: 'modal', target: '#modal-code-of-conduct'}
|
||||||
= render 'conferences/code_of_conduct',
|
= render 'conferences/code_of_conduct',
|
||||||
organization: @conference.organization
|
organization: @conference.organization
|
||||||
.row
|
|
||||||
.col-md-12
|
|
||||||
%h4
|
|
||||||
%span.fa-stack
|
|
||||||
%i.fa.fa-square-o.fa-stack-2x
|
|
||||||
%i.fa.fa-plane.fa-stack-1x
|
|
||||||
Travel Schedule
|
|
||||||
%ul
|
|
||||||
%li
|
|
||||||
- if @registration.arrival.present?
|
|
||||||
arrive at
|
|
||||||
%strong
|
|
||||||
= @registration.arrival.strftime('%A, %B %-d. %Y %H:%M')
|
|
||||||
- else
|
|
||||||
You haven't scheduled your arrival
|
|
||||||
%li
|
|
||||||
- if @registration.departure.present?
|
|
||||||
depart at
|
|
||||||
%strong
|
|
||||||
= @registration.departure.strftime('%A, %B %-d. %Y %H:%M')
|
|
||||||
- else
|
|
||||||
You haven't scheduled your departure
|
|
||||||
- if @conference.surveys.for_registration.any?
|
- if @conference.surveys.for_registration.any?
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
= content_for :splash_nav do
|
= content_for :splash_nav do
|
||||||
%li
|
%li
|
||||||
%a.smoothscroll{ href: '#call' } Call For Content
|
%a.smoothscroll{ href: '#call' } Call For Participation
|
||||||
|
|
||||||
%section#call
|
%section#call
|
||||||
.container
|
.container
|
||||||
|
|
@ -20,3 +20,4 @@
|
||||||
call: call_for_booths
|
call: call_for_booths
|
||||||
- if two_calls_open(call_for_events, call_for_tracks, call_for_booths)
|
- if two_calls_open(call_for_events, call_for_tracks, call_for_booths)
|
||||||
.col-md-2.col-sm-2.hidden-xs
|
.col-md-2.col-sm-2.hidden-xs
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
expires_in: 1.hour) do
|
expires_in: 1.hour) do
|
||||||
.col-md-4.col-sm-4.text-center
|
.col-md-4.col-sm-4.text-center
|
||||||
%h2
|
%h2
|
||||||
Call for Papers
|
Call for Participation
|
||||||
%p.lead
|
%p.lead
|
||||||
We are now accepting proposals for sessions!
|
We are now accepting proposals for sessions!
|
||||||
%p
|
%p
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
= image_tag(conference.picture_url, class: 'img-responsive') if conference.picture?
|
= image_tag(conference.picture_url, class: 'img-responsive') if conference.picture?
|
||||||
.col-md-6
|
.col-md-6
|
||||||
%h3
|
%h3
|
||||||
= conference.title
|
= conference.title.html_safe
|
||||||
%small
|
%small
|
||||||
%b
|
%b
|
||||||
= date_string(conference.start_date, conference.end_date)
|
= date_string(conference.start_date, conference.end_date)
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
.scroll-top-wrapper
|
-# .scroll-top-wrapper
|
||||||
= link_to "#banner", class: "smoothscroll" do
|
-# = link_to "#banner", class: "smoothscroll" do
|
||||||
%i.fa.fa-2x.fa-arrow-circle-up
|
-# %i.fa.fa-2x.fa-arrow-circle-up
|
||||||
|
|
||||||
:javascript
|
-# :javascript
|
||||||
$(function(){
|
-# $(function(){
|
||||||
$(document).on( 'scroll', function(){
|
-# $(document).on( 'scroll', function(){
|
||||||
if ($(window).scrollTop() > 100) {
|
-# if ($(window).scrollTop() > 100) {
|
||||||
$('.scroll-top-wrapper').addClass('show');
|
-# $('.scroll-top-wrapper').addClass('show');
|
||||||
} else {
|
-# } else {
|
||||||
$('.scroll-top-wrapper').removeClass('show');
|
-# $('.scroll-top-wrapper').removeClass('show');
|
||||||
}
|
-# }
|
||||||
});
|
-# });
|
||||||
});
|
-# });
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
||||||
- cache [conference, venue, '#splash#header'] do
|
- cache [conference, venue, '#splash#header'] do
|
||||||
#banner
|
#banner{ style: ("background-image: url(#{conference.picture_url})" if conference.picture_url) }
|
||||||
.container
|
.container
|
||||||
.row
|
.row
|
||||||
.col-md-8.col-md-offset-2#header
|
.col-md-6.col-md-offset-3{id: (conference.picture? ? "header-image" : "header-no-image")}
|
||||||
.row
|
.row
|
||||||
.col-md-4
|
-# - if conference.picture?
|
||||||
- if conference.picture?
|
-# .col-md-4
|
||||||
= image_tag(conference.picture_url,
|
-# = image_tag(conference.picture_url,
|
||||||
class: 'img-responsive img-center',
|
-# class: 'img-responsive img-center',
|
||||||
id: 'splash-logo')
|
-# id: 'splash-logo')
|
||||||
.col-md-8
|
.col-md-8
|
||||||
%h1
|
%h1
|
||||||
= conference.title
|
= conference.title.html_safe
|
||||||
%h3
|
%h3
|
||||||
- if conference.start_date && conference.end_date
|
- if conference.start_date && conference.end_date
|
||||||
%span.date.text-nowrap
|
%span.date.text-nowrap
|
||||||
= date_string(conference.start_date, conference.end_date)
|
= date_string(conference.start_date, conference.end_date)
|
||||||
- if conference.venue
|
- if conference.venue
|
||||||
%span.venue.text-nowrap
|
%span.venue.text-nowrap
|
||||||
- if venue.website
|
- if venue.website.present?
|
||||||
= sanitize link_to(venue.name, venue.website)
|
= sanitize link_to(venue.name, venue.website)
|
||||||
- else
|
- else
|
||||||
= venue.city
|
= venue.city
|
||||||
- if venue.country_name != 'US'
|
- if venue.country != 'US'
|
||||||
•
|
•
|
||||||
= venue.country_name
|
= venue.country_name
|
||||||
|
|
||||||
|
|
@ -32,3 +32,4 @@
|
||||||
.row
|
.row
|
||||||
.col-md-8.col-md-offset-2
|
.col-md-8.col-md-offset-2
|
||||||
= markdown(conference.description)
|
= markdown(conference.description)
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,11 @@
|
||||||
|
|
||||||
.row.row-centered
|
.row.row-centered
|
||||||
- lodgings.each do |lodging|
|
- lodgings.each do |lodging|
|
||||||
.col-md-4.col-sm-4.col-centered.col-top
|
.col-md-6.col-sm-4.col-centered.col-top
|
||||||
.thumbnail
|
.thumbnail
|
||||||
- if lodging.picture?
|
- if lodging.picture?
|
||||||
- if lodging.website_link.present?
|
- if lodging.website_link.present?
|
||||||
= link_to(lodging.website_link, class: 'thumbnail') do
|
= link_to(lodging.website_link) do
|
||||||
= image_tag lodging.picture.large.url,
|
= image_tag lodging.picture.large.url,
|
||||||
class: 'img-responsive img-lodging'
|
class: 'img-responsive img-lodging'
|
||||||
- else
|
- else
|
||||||
|
|
@ -30,12 +30,16 @@
|
||||||
- else
|
- else
|
||||||
%p.text-center
|
%p.text-center
|
||||||
- if lodging.website_link.present?
|
- if lodging.website_link.present?
|
||||||
= link_to(lodging.website_link, class: 'thumbnail') do
|
= link_to(lodging.website_link) do
|
||||||
%i.fa.fa-home.fa-5x
|
%i.fa.fa-home.fa-5x
|
||||||
- else
|
- else
|
||||||
%i.fa.fa-home.fa-5x
|
%i.fa.fa-home.fa-5x
|
||||||
.caption
|
.caption
|
||||||
%h3.text-center
|
%h3.text-center
|
||||||
= lodging.name
|
- if lodging.website_link.present?
|
||||||
|
= link_to(lodging.name, lodging.website_link)
|
||||||
|
- else
|
||||||
|
= lodging.name
|
||||||
- if lodging.description.present?
|
- if lodging.description.present?
|
||||||
= markdown(lodging.description)
|
= markdown(lodging.description)
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%p.lead.text-center
|
%p.lead.text-center
|
||||||
%span.notranslate
|
%span.notranslate
|
||||||
= conference.title
|
= conference.title.html_safe
|
||||||
has the most awesome program ever!
|
will have an enaging program!
|
||||||
|
|
||||||
- unless highlights.blank?
|
- unless highlights.blank?
|
||||||
= render 'highlights', conference_id: conference.short_title,
|
= render 'highlights', conference_id: conference.short_title,
|
||||||
|
|
@ -31,6 +31,7 @@
|
||||||
= link_to(conference_schedule_path(conference.short_title),
|
= link_to(conference_schedule_path(conference.short_title),
|
||||||
class: 'btn btn-success btn-lg') do
|
class: 'btn btn-success btn-lg') do
|
||||||
Full Schedule
|
Full Schedule
|
||||||
|
.trapezoid
|
||||||
|
|
||||||
- unless booths.blank?
|
- unless booths.blank?
|
||||||
- booths.each do |booth|
|
- booths.each do |booth|
|
||||||
|
|
|
||||||
|
|
@ -37,3 +37,4 @@
|
||||||
= link_to('Register Now',
|
= link_to('Register Now',
|
||||||
new_conference_conference_registration_path(conference_id),
|
new_conference_conference_registration_path(conference_id),
|
||||||
class: 'btn btn-lg btn-success')
|
class: 'btn btn-lg btn-success')
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -27,3 +27,4 @@
|
||||||
- if contact.email?
|
- if contact.email?
|
||||||
= mail_to "#{ contact.email }" do
|
= mail_to "#{ contact.email }" do
|
||||||
%i.fa.fa-envelope-o.fa-4x
|
%i.fa.fa-envelope-o.fa-4x
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,10 @@
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%h3.text-center
|
%h3.text-center
|
||||||
Want to sponsor?
|
= "Interested in sponsoring #{conference.title}?"
|
||||||
= link_to(sponsorship_mailto(conference)) do
|
= link_to(sponsorship_mailto(conference)) do
|
||||||
Contact us!
|
Please, contact us!
|
||||||
|
.trapezoid
|
||||||
|
|
||||||
- sponsors.each do |sponsor|
|
- sponsors.each do |sponsor|
|
||||||
- content_for :modals do
|
- content_for :modals do
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,14 @@
|
||||||
.container
|
.container
|
||||||
.row
|
.row
|
||||||
.col-md-12.text-center
|
.col-md-12.text-center
|
||||||
%h2
|
%h2 Sign Up for Campus Housing
|
||||||
Support
|
%br
|
||||||
= conference.title
|
-# %h2
|
||||||
|
-# Support
|
||||||
|
-# = conference.title
|
||||||
.row.row-centered
|
.row.row-centered
|
||||||
- tickets.each do |ticket|
|
- tickets.each do |ticket|
|
||||||
.col-md-3.col-sm-3.col-centered.col-top
|
.col-lg-4.col-md-3.col-sm-3.col-centered.col-top
|
||||||
= link_to(conference_tickets_path(conference.short_title),
|
= link_to(conference_tickets_path(conference.short_title),
|
||||||
class: 'thumbnail') do
|
class: 'thumbnail') do
|
||||||
.caption
|
.caption
|
||||||
|
|
@ -21,5 +23,6 @@
|
||||||
.word_break
|
.word_break
|
||||||
= markdown(ticket.description)
|
= markdown(ticket.description)
|
||||||
%button.btn-block.btn.btn-lg.btn-success
|
%button.btn-block.btn.btn-lg.btn-success
|
||||||
%i.fa.fa-ticket.fa-fw
|
%i.fa.fa-ticket.fa-fw{"aria-hidden": true}
|
||||||
= humanized_money_with_symbol(ticket.price)
|
= humanized_money_with_symbol(ticket.price)
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@
|
||||||
%section#venue
|
%section#venue
|
||||||
- if venue.location?
|
- if venue.location?
|
||||||
= render '/conferences/venue_map', venue: venue
|
= render '/conferences/venue_map', venue: venue
|
||||||
|
- if venue.description.present?
|
||||||
|
.container
|
||||||
|
.row
|
||||||
|
.col-md-8.col-md-offset-2
|
||||||
|
= markdown(venue.description, escape_html=false)
|
||||||
|
.trapezoid
|
||||||
- else
|
- else
|
||||||
- cache [venue, commercial, '#splash#venue'] do
|
- cache [venue, commercial, '#splash#venue'] do
|
||||||
.container
|
.container
|
||||||
|
|
@ -41,3 +47,4 @@
|
||||||
- if venue.website
|
- if venue.website
|
||||||
%br
|
%br
|
||||||
= sanitize link_to(h(venue.website), h(venue.website))
|
= sanitize link_to(h(venue.website), h(venue.website))
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
- content_for :head do
|
- content_for :head do
|
||||||
%meta{ property: "og:title", content: @conference.title }
|
%meta{ property: "og:title", content: @conference.title }
|
||||||
%meta{ property: "og:site_name", content: (ENV['OSEM_NAME'] || 'OSEM') }
|
%meta{ property: "og:site_name", content: (ENV['OSEM_NAME'] || 'OSEM') }
|
||||||
%meta{ property: "og:description", content: @conference.description }
|
%meta{ property: "og:description", content: plain_text(@conference.description) }
|
||||||
%meta{ property: "og:url", content: conference_url(@conference.short_title) }
|
%meta{ property: "og:url", content: conference_url(@conference.short_title) }
|
||||||
%meta{ property: "twitter:title", content: (@conference.title) }
|
%meta{ property: "twitter:title", content: (@conference.title) }
|
||||||
%meta{ property: "twitter:description", content: @conference.description }
|
%meta{ property: "twitter:description", content: plain_text(@conference.description) }
|
||||||
- if @conference.picture?
|
- if @conference.picture?
|
||||||
%meta{ property: "og:image", content: @image_url }
|
%meta{ property: "og:image", content: @image_url }
|
||||||
%meta{ property: "og:image:secure_url", content: @image_url }
|
%meta{ property: "og:image:secure_url", content: @image_url }
|
||||||
|
|
@ -64,21 +64,22 @@
|
||||||
= render 'social_media', contact: @conference.contact
|
= render 'social_media', contact: @conference.contact
|
||||||
= render 'footer'
|
= render 'footer'
|
||||||
|
|
||||||
- content_for :script_head do
|
|
||||||
:javascript
|
-# - content_for :script_head do
|
||||||
var triangle_tcs = tinycolor("#{h(@conference.color)}").monochromatic();
|
-# :javascript
|
||||||
var triangle_colors = triangle_tcs.map(function(t) {
|
-# var triangle_tcs = tinycolor("#{h(@conference.color)}").monochromatic();
|
||||||
return t.toHexString();
|
-# var triangle_colors = triangle_tcs.map(function(t) {
|
||||||
});
|
-# return t.toHexString();
|
||||||
$(function () {
|
-# });
|
||||||
$(document).ready(function() {
|
-# $(function () {
|
||||||
var triangle_width = document.body.clientWidth;
|
-# $(document).ready(function() {
|
||||||
var triangle_height = ($( "#banner" ).height() + 200 );
|
-# var triangle_width = document.body.clientWidth;
|
||||||
var pattern = Trianglify({ width: triangle_width,
|
-# var triangle_height = ($( "#banner" ).height() + 200 );
|
||||||
height: triangle_height,
|
-# var pattern = Trianglify({ width: triangle_width,
|
||||||
cell_size: 100,
|
-# height: triangle_height,
|
||||||
x_colors: triangle_colors
|
-# cell_size: 100,
|
||||||
});
|
-# x_colors: triangle_colors
|
||||||
$('#banner').css('background-image', 'url("' + pattern.png() + '")');
|
-# });
|
||||||
});
|
-# $('#banner').css('background-image', 'url(' + 0 + ')');
|
||||||
});
|
-# });
|
||||||
|
-# });
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,14 @@
|
||||||
.text-center
|
.text-center
|
||||||
.btn-group.btn-group-lg#openid-btn-grp
|
.btn-group.btn-group-lg#openid-btn-grp
|
||||||
- omniauth_configured.each do |provider|
|
- omniauth_configured.each do |provider|
|
||||||
= link_to "user_#{provider}_omniauth_authorize".to_sym, class: "btn btn-success btn-lg",
|
- if provider != :discourse
|
||||||
id: "omniauth-#{provider}",
|
= link_to "user_#{provider}_omniauth_authorize".to_sym, class: "btn btn-success btn-lg",
|
||||||
title: "Your #{provider} login" do
|
id: "omniauth-#{provider}",
|
||||||
%i{class: "fa fa-#{provider}"}
|
title: "Your #{provider} login" do
|
||||||
|
%i{class: "fa fa-#{provider}"}
|
||||||
|
- else
|
||||||
|
= link_to("Snap!",
|
||||||
|
"user_#{provider}_omniauth_authorize".to_sym,
|
||||||
|
class: "btn btn-success btn-lg",
|
||||||
|
id: "omniauth-#{provider}",
|
||||||
|
title: "Your #{provider} login")
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,26 @@
|
||||||
- if ENV['OSEM_ICHAIN_ENABLED'] != 'true'
|
- if ENV['OSEM_ICHAIN_ENABLED'] != 'true'
|
||||||
= form_tag(new_user_session_path, class: 'form-horizontal') do
|
.container.panel
|
||||||
%legend
|
= form_tag(new_user_session_path, class: '') do
|
||||||
%span
|
%legend
|
||||||
Sign In
|
%span
|
||||||
.form-group
|
Sign In
|
||||||
%label{for: "user[login]", class: 'col-sm-2 control-label'}
|
.form-group
|
||||||
Username
|
%label{for: "user[login]", class: 'col-sm-2 control-label'}
|
||||||
.col-sm-10
|
Username
|
||||||
= text_field_tag 'user[login]', nil, placeholder: 'Username', class: 'form-control', required: 'required'
|
.col-sm-10
|
||||||
.form-group
|
= text_field_tag 'user[login]', nil, placeholder: 'Username', class: 'form-control', required: 'required'
|
||||||
%label{for: "user[password]", class: 'col-sm-2 control-label'}
|
.form-group
|
||||||
Password
|
%label{for: "user[password]", class: 'col-sm-2 control-label'}
|
||||||
.col-sm-10
|
Password
|
||||||
= password_field_tag 'user[password]', nil, placeholder: 'Password', class: 'form-control', required: 'required'
|
.col-sm-10
|
||||||
.form-group
|
= password_field_tag 'user[password]', nil, placeholder: 'Password', class: 'form-control', required: 'required'
|
||||||
.col-sm-12
|
.form-group
|
||||||
%button.btn.btn-success.pull-right
|
.col-sm-12
|
||||||
Sign in
|
%button.btn.btn-success.pull-right
|
||||||
= render partial: 'devise/shared/openid'
|
Sign in
|
||||||
%p.text-right
|
= render partial: 'devise/shared/openid'
|
||||||
%a.small.btn.btn-default{"data-toggle" => "collapse", "data-target" => "#devise-help-sign-in"}
|
%p.text-right
|
||||||
Need Help?
|
%a.small.btn.btn-default{"data-toggle" => "collapse", "data-target" => "#devise-help-sign-in"}
|
||||||
#devise-help-sign-in.collapse
|
Need Help?
|
||||||
= render partial: 'devise/shared/links'
|
#devise-help-sign-in.collapse
|
||||||
|
= render partial: 'devise/shared/links'
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
= link_to 'Contact', edit_admin_conference_contact_path(@conference.short_title)
|
= link_to 'Contact', edit_admin_conference_contact_path(@conference.short_title)
|
||||||
- if can? :index, @conference.commercials.build
|
- if can? :index, @conference.commercials.build
|
||||||
%li{class: "#{active_nav_li(admin_conference_commercials_path(@conference.short_title))}"}
|
%li{class: "#{active_nav_li(admin_conference_commercials_path(@conference.short_title))}"}
|
||||||
= link_to 'Commercials', admin_conference_commercials_path(@conference.short_title)
|
= link_to 'Materials', admin_conference_commercials_path(@conference.short_title)
|
||||||
- if can? :update, @conference
|
- if can? :update, @conference
|
||||||
%li{class: active_nav_li(edit_admin_conference_splashpage_path(@conference.short_title))}
|
%li{class: active_nav_li(edit_admin_conference_splashpage_path(@conference.short_title))}
|
||||||
= link_to 'Splashpage', admin_conference_splashpage_path(@conference.short_title)
|
= link_to 'Splashpage', admin_conference_splashpage_path(@conference.short_title)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
.navbar.navbar-default.navbar-fixed-top.nav-osem{role: 'navigation'}
|
%nav.navbar.navbar-default.navbar-fixed-top.nav-osem{role: 'navigation'}
|
||||||
.container
|
.container
|
||||||
.navbar-header
|
.navbar-header
|
||||||
|
|
||||||
- if controller.class.name.split("::").first=="Admin"
|
- if controller.class.name.split("::").first=="Admin"
|
||||||
%button{ "data-target"=>"#side-nav", "data-toggle"=>"collapse", class: 'navbar-toggle side-nav-btn', type: 'button' }
|
%button{ "data-target"=>"#side-nav", "data-toggle"=>"collapse", class: 'navbar-toggle side-nav-btn', type: 'button' }
|
||||||
%span.sr-only Toggle navigation
|
%span.sr-only Toggle navigation
|
||||||
|
|
@ -14,7 +13,7 @@
|
||||||
%span.icon-bar
|
%span.icon-bar
|
||||||
%span.icon-bar
|
%span.icon-bar
|
||||||
%span.icon-bar
|
%span.icon-bar
|
||||||
= nav_root_link_for conference
|
= nav_root_link_for(conference)
|
||||||
|
|
||||||
.collapse.navbar-collapse#main-nav
|
.collapse.navbar-collapse#main-nav
|
||||||
- if content_for :splash_nav
|
- if content_for :splash_nav
|
||||||
|
|
@ -42,34 +41,41 @@
|
||||||
= link_to(new_registration_path('user')) do
|
= link_to(new_registration_path('user')) do
|
||||||
%span.fa.fa-heart
|
%span.fa.fa-heart
|
||||||
Sign Up
|
Sign Up
|
||||||
%li.dropdown.visible-desktop
|
%li{class: ""}
|
||||||
%a.dropdown-toggle{"data-toggle" => "dropdown", href: '#'}
|
= link_to(sign_in_path) do
|
||||||
%span.fa.fa-user
|
%span.fa.fa-user
|
||||||
Sign In
|
Sign In
|
||||||
%span.caret
|
-# %li.dropdown.visible-desktop
|
||||||
.dropdown-menu
|
-# %a.dropdown-toggle{"data-toggle" => "dropdown", href: '#'}
|
||||||
- if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
|
-# %span.fa.fa-user
|
||||||
= form_tag User.ichain_login_url do
|
-# Sign In
|
||||||
= text_field_tag 'username', nil, id: 'user_ichain_email_dd', class: 'form-control', placeholder: 'Username'
|
-# %span.caret
|
||||||
= password_field_tag 'password', nil, id: 'user_ichain_password_dd', class: 'form-control', placeholder: 'Password'
|
-# .dropdown-menu
|
||||||
%button.btn.btn-success.btn-block Sign in
|
-# - if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
|
||||||
- else
|
-# = form_tag User.ichain_login_url do
|
||||||
= form_tag new_user_session_path do
|
-# = text_field_tag 'username', nil, id: 'user_ichain_email_dd', class: 'form-control', placeholder: 'Username'
|
||||||
= text_field_tag 'user[login]', nil, id: 'user_login_dd', class: 'form-control', placeholder: 'Username / E-Mail'
|
-# = password_field_tag 'password', nil, id: 'user_ichain_password_dd', class: 'form-control', placeholder: 'Password'
|
||||||
= password_field_tag 'user[password]', nil, id: 'user_password_dd', class: 'form-control', placeholder: 'Password'
|
-# %button.btn.btn-success.btn-block Sign in
|
||||||
%p.text-right
|
-# - else
|
||||||
%small
|
-# %div{style: "padding: 6px"}
|
||||||
%label{for: 'user_remember_me'} Remember me
|
-# = form_tag new_user_session_path, class: 'form-group' do
|
||||||
= check_box_tag 'user[remember_me]'
|
-# = text_field_tag 'user[login]', nil, id: 'user_login_dd', class: 'form-control', placeholder: 'Username / E-Mail'
|
||||||
%button.btn.btn-success.btn-block Sign in
|
-# = password_field_tag 'user[password]', nil, id: 'user_password_dd', class: 'form-control', placeholder: 'Password'
|
||||||
- unless omniauth_configured.empty?
|
-# %p.text-right
|
||||||
.divider
|
-# %small
|
||||||
%h6.text-center
|
-# %label{for: 'user_remember_me'} Remember me
|
||||||
or
|
-# = check_box_tag 'user[remember_me]'
|
||||||
= render 'devise/shared/openid_links'
|
-# %br
|
||||||
%p.text-right
|
-# %button.btn.btn-success.btn-block Sign in
|
||||||
%br
|
-# - unless omniauth_configured.empty?
|
||||||
%a.small.btn.btn-xs.btn-default{"data-toggle" => "collapse", "data-target" => "#navbar-devise-help"}
|
-# .divider
|
||||||
Need Help?
|
-# %h6.text-center
|
||||||
#navbar-devise-help.collapse
|
-# or
|
||||||
= render 'devise/shared/links'
|
-# = render 'devise/shared/openid_links'
|
||||||
|
-# %p.text-right
|
||||||
|
-# %br
|
||||||
|
-# %a.small.btn.btn-xs.btn-default{"data-toggle" => "collapse", "data-target" => "#navbar-devise-help"}
|
||||||
|
-# Need Help?
|
||||||
|
-# #navbar-devise-help.collapse
|
||||||
|
-# = render 'devise/shared/links'
|
||||||
|
.trapezoid
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
%html{xmlns: 'http://www.w3.org/1999/html'}
|
%html{lang: 'en'}
|
||||||
%head
|
%head
|
||||||
%meta{charset: 'utf-8'}
|
%meta{charset: 'utf-8'}
|
||||||
%meta{name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1'}
|
%meta{name: 'viewport', content: 'width=device-width, initial-scale=1'}
|
||||||
%title= content_for?(:title) ? yield(:title) : (ENV['OSEM_NAME'] || 'OSEM')
|
%title= content_for?(:title) ? strip_tags( yield(:title) ) : (ENV['OSEM_NAME'] || 'OSEM')
|
||||||
%meta{content: '', name: 'description'}
|
%meta{content: 'Snap!Con -- A conference all about Snap!, a programing language from UC Berkeley.', name: 'description'}
|
||||||
%meta{content: '', name: 'author'}
|
%meta{content: 'Michael Ball, Brian Harvey, Jens Moenig, Bernat Romagosa, Dan Garcia, Lauren Mock', name: 'author'}
|
||||||
= stylesheet_link_tag "application", media: 'all'
|
= stylesheet_link_tag "application", media: 'all'
|
||||||
= javascript_include_tag "application"
|
= javascript_include_tag "application"
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
-# Admin area
|
-# Admin area
|
||||||
- if controller.class.name.split("::").first=="Admin"
|
- if controller.class.name.split("::").first=="Admin"
|
||||||
= render 'layouts/admin'
|
= render 'layouts/admin'
|
||||||
-else
|
- else
|
||||||
#messages
|
#messages
|
||||||
.container
|
.container
|
||||||
= render 'layouts/messages'
|
= render 'layouts/messages'
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
#{link_to "MIT license", "http://opensource.org/licenses/MIT"}.
|
#{link_to "MIT license", "http://opensource.org/licenses/MIT"}.
|
||||||
You can run, copy, distribute, study, change and improve it.
|
You can run, copy, distribute, study, change and improve it.
|
||||||
The source code and the developers are on
|
The source code and the developers are on
|
||||||
#{link_to "GitHub", "https://github.com/openSUSE/osem"}.
|
#{link_to "GitHub", "https://github.com/snap-cloud/snapcon"}. This site is a modification of #{link_to "OSEM", "https://github.com/openSUSE/osem"}.
|
||||||
- if ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"].present?
|
- if ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"].present?
|
||||||
Performance data is available on
|
Performance data is available on
|
||||||
#{link_to "Skylight", ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"]}.
|
#{link_to "Skylight", ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"]}.
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
%th ID
|
%th ID
|
||||||
%th Type
|
%th Type
|
||||||
%th User
|
%th User
|
||||||
|
%th Registration?
|
||||||
%th Actions
|
%th Actions
|
||||||
%tbody
|
%tbody
|
||||||
- @physical_tickets.each do |physical_ticket|
|
- @physical_tickets.each do |physical_ticket|
|
||||||
|
|
@ -23,6 +24,7 @@
|
||||||
%td= physical_ticket.id
|
%td= physical_ticket.id
|
||||||
%td= physical_ticket.ticket.title
|
%td= physical_ticket.ticket.title
|
||||||
%td= physical_ticket.user.name
|
%td= physical_ticket.user.name
|
||||||
|
%td= physical_ticket.ticket.registration_ticket? ? 'Yes' : 'No'
|
||||||
%td
|
%td
|
||||||
.btn-group
|
.btn-group
|
||||||
= link_to 'Show',
|
= link_to 'Show',
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@
|
||||||
%li.active
|
%li.active
|
||||||
= link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab'
|
= link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab'
|
||||||
%li
|
%li
|
||||||
= link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab'
|
= link_to 'Materials', '#commercials-content', 'data-toggle' => 'tab'
|
||||||
.tab-content
|
.tab-content
|
||||||
#proposal-content.tab-pane.active
|
#proposal-content.tab-pane.active
|
||||||
= render 'proposals/proposal_form'
|
= render 'proposals/proposal_form'
|
||||||
#commercials-content.tab-pane
|
#commercials-content.tab-pane
|
||||||
%p.text-muted
|
%p.text-muted
|
||||||
You can add commercials for your proposal. These commercials will be displayed on the
|
You can add materals for your proposal. These materials will be displayed on the
|
||||||
= link_to 'public proposal page.', conference_program_proposal_path(@conference.short_title, @event)
|
= link_to 'public proposal page.', conference_program_proposal_path(@conference.short_title, @event)
|
||||||
If you don't add a commercial, the conference commercial will be displayed!
|
If you don't add any materials, the conference materials will be displayed.
|
||||||
- if can? :create, @event.commercials.new
|
- if can? :create, @event.commercials.new
|
||||||
.row
|
.row
|
||||||
.col-md-6
|
.col-md-6
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
= link_to 'Add a subtitle', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a subtitle', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
%li{'class'=>class_for_todo(progress_status['commercials'])}
|
%li{'class'=>class_for_todo(progress_status['commercials'])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['commercials'])}
|
%span{'class'=>icon_for_todo(progress_status['commercials'])}
|
||||||
= link_to 'Add a commercial', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content')
|
= link_to 'Add materials', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content')
|
||||||
- unless progress_status['track'].nil?
|
- unless progress_status['track'].nil?
|
||||||
%li{'class'=>class_for_todo(progress_status['track'])}
|
%li{'class'=>class_for_todo(progress_status['track'])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['track'])}
|
%span{'class'=>icon_for_todo(progress_status['track'])}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
- if @program.cfp.description.present?
|
- if @program.cfp.description.present?
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
= markdown(@program.cfp.description)
|
= markdown(@program.cfp.description, escape_html=false)
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
= render partial: 'encouragement_text'
|
= render partial: 'encouragement_text'
|
||||||
|
|
@ -43,10 +43,10 @@
|
||||||
|
|
||||||
- @program.event_types.each do |event_type|
|
- @program.event_types.each do |event_type|
|
||||||
%span{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help" }
|
%span{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help" }
|
||||||
= event_type.description
|
= markdown(event_type.description)
|
||||||
|
|
||||||
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown-editable' } },
|
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown-editable' } },
|
||||||
hint: markdown_hint('[Tips to improve your presentations.](http://blog.hubspot.com/blog/tabid/6307/bid/5975/10-Rules-to-Instantly-Improve-Your-Presentations.aspx)')
|
hint: markdown_hint
|
||||||
|
|
||||||
%p
|
%p
|
||||||
You have used
|
You have used
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
.media
|
.media
|
||||||
.media-body
|
.media-body
|
||||||
%h4.media-heading= ticket.title
|
%h4.media-heading= ticket.title
|
||||||
%h5.media-heading= markdown(ticket.description)
|
.media-heading= markdown(ticket.description)
|
||||||
- if @conference.tickets.for_registration.any?
|
%td.col-sm-1.col-md-2
|
||||||
%td.col-sm-1.col-md-2.text-center
|
%span.text-center
|
||||||
= ticket.registration_ticket? ? 'Yes' : 'No'
|
= ticket.registration_ticket? ? 'Yes' : 'No'
|
||||||
%td.col-sm-1.col-md-1
|
%td.col-sm-1.col-md-1
|
||||||
:ruby
|
:ruby
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
%th Ticket
|
%th Ticket
|
||||||
- if @conference.tickets.for_registration.any?
|
%th Registration?
|
||||||
%th Registration Ticket
|
|
||||||
%th Quantity
|
%th Quantity
|
||||||
%th Price
|
%th Price
|
||||||
%th Total
|
%th Total
|
||||||
|
|
@ -23,8 +22,7 @@
|
||||||
= render 'ticket', f: f, ticket: ticket
|
= render 'ticket', f: f, ticket: ticket
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
- if @conference.tickets.for_registration.any?
|
%td
|
||||||
%td
|
|
||||||
%td
|
%td
|
||||||
%td.col-sm-1.col-md-1.text-center
|
%td.col-sm-1.col-md-1.text-center
|
||||||
%h4
|
%h4
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,18 @@ Devise.setup do |config|
|
||||||
# Define the available openID providers that can be used to log in
|
# Define the available openID providers that can be used to log in
|
||||||
# Pass each provider to User model in :omniauth_providers (for open_id providers use their name)
|
# Pass each provider to User model in :omniauth_providers (for open_id providers use their name)
|
||||||
|
|
||||||
config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user'
|
# config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user'
|
||||||
|
|
||||||
config.omniauth :google_oauth2, (ENV['OSEM_GOOGLE_KEY'] || Rails.application.secrets.google_key), (ENV['OSEM_GOOGLE_SECRET'] || Rails.application.secrets.google_secret),
|
config.omniauth :google_oauth2, (ENV['OSEM_GOOGLE_KEY'] || Rails.application.secrets.google_key), (ENV['OSEM_GOOGLE_SECRET'] || Rails.application.secrets.google_secret),
|
||||||
name: 'google',
|
name: 'google',
|
||||||
scope: 'email'
|
scope: 'email'
|
||||||
config.omniauth :facebook, (ENV['OSEM_FACEBOOK_KEY'] || Rails.application.secrets.facebook_key), (ENV['OSEM_FACEBOOK_SECRET'] || Rails.application.secrets.facebook_secret)
|
|
||||||
config.omniauth :github, (ENV['OSEM_GITHUB_KEY'] || Rails.application.secrets.github_key), (ENV['OSEM_GITHUB_SECRET'] || Rails.application.secrets.github_secret)
|
config.omniauth :discourse,
|
||||||
|
sso_url: "https://forum.snap.berkeley.edu/session/sso_provider",
|
||||||
|
sso_secret: ENV['OSEM_DISCOURSE_SECRET']
|
||||||
|
|
||||||
|
# config.omniauth :facebook, (ENV['OSEM_FACEBOOK_KEY'] || Rails.application.secrets.facebook_key), (ENV['OSEM_FACEBOOK_SECRET'] || Rails.application.secrets.facebook_secret)
|
||||||
|
# config.omniauth :github, (ENV['OSEM_GITHUB_KEY'] || Rails.application.secrets.github_key), (ENV['OSEM_GITHUB_SECRET'] || Rails.application.secrets.github_secret)
|
||||||
|
|
||||||
# ==> Mailer Configuration
|
# ==> Mailer Configuration
|
||||||
# Configure the e-mail address which will be shown in Devise::Mailer,
|
# Configure the e-mail address which will be shown in Devise::Mailer,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
class RemoveArrivalDepartureFromRegistrations < ActiveRecord::Migration[5.0]
|
||||||
|
def change
|
||||||
|
remove_column :registrations, :arrival, :datetime
|
||||||
|
remove_column :registrations, :departure, :datetime
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20181113195810) do
|
ActiveRecord::Schema.define(version: 20181229233811) do
|
||||||
|
|
||||||
create_table "answers", force: :cascade do |t|
|
create_table "answers", force: :cascade do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
|
|
@ -364,8 +364,6 @@ ActiveRecord::Schema.define(version: 20181113195810) do
|
||||||
|
|
||||||
create_table "registrations", force: :cascade do |t|
|
create_table "registrations", force: :cascade do |t|
|
||||||
t.integer "conference_id"
|
t.integer "conference_id"
|
||||||
t.datetime "arrival"
|
|
||||||
t.datetime "departure"
|
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.text "other_special_needs"
|
t.text "other_special_needs"
|
||||||
|
|
|
||||||
|
|
@ -290,14 +290,15 @@ describe ConferenceRegistrationsController, type: :controller do
|
||||||
before do
|
before do
|
||||||
@registration = create(:registration,
|
@registration = create(:registration,
|
||||||
conference: conference,
|
conference: conference,
|
||||||
user: user,
|
user: user)
|
||||||
arrival: Date.new(2014, 04, 25))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'updates successfully' do
|
context 'updates successfully' do
|
||||||
before do
|
before do
|
||||||
patch :update, params: { registration: attributes_for(:registration, arrival: Date.new(2014, 04, 29)),
|
patch :update, params: {
|
||||||
conference_id: conference.short_title }
|
registration: attributes_for(:registration, volunteer: true),
|
||||||
|
conference_id: conference.short_title
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'redirects to registration show path' do
|
it 'redirects to registration show path' do
|
||||||
|
|
@ -309,16 +310,17 @@ describe ConferenceRegistrationsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'updates the registration' do
|
it 'updates the registration' do
|
||||||
@registration.reload
|
expect{ @registration.reload }.to change(@registration, :updated_at)
|
||||||
expect(@registration.arrival).to eq Date.new(2014, 04, 29)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'update fails' do
|
context 'update fails' do
|
||||||
before do
|
before do
|
||||||
allow_any_instance_of(Registration).to receive(:update_attributes).and_return(false)
|
allow_any_instance_of(Registration).to receive(:update_attributes).and_return(false)
|
||||||
patch :update, params: { registration: attributes_for(:registration, arrival: Date.new(2014, 04, 27)),
|
patch :update, params: {
|
||||||
conference_id: conference.short_title }
|
registration: attributes_for(:registration, volunteer: true),
|
||||||
|
conference_id: conference.short_title
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'renders edit template' do
|
it 'renders edit template' do
|
||||||
|
|
@ -331,7 +333,7 @@ describe ConferenceRegistrationsController, type: :controller do
|
||||||
|
|
||||||
it 'does not update the registration' do
|
it 'does not update the registration' do
|
||||||
@registration.reload
|
@registration.reload
|
||||||
expect(@registration.arrival).to eq Date.new(2014, 04, 25)
|
expect { @registration.reload }.not_to change(@registration, :updated_at)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ feature Commercial do
|
||||||
|
|
||||||
# Create valid commercial
|
# Create valid commercial
|
||||||
fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
||||||
click_button 'Create Commercial'
|
click_button 'Save Materials'
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully created.')
|
expect(flash).to eq('Materials were successfully created.')
|
||||||
page.find('#flash .button.close').click
|
page.find('#flash .button.close').click
|
||||||
expect(conference.commercials.count).to eq(1)
|
expect(conference.commercials.count).to eq(1)
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ feature Commercial do
|
||||||
fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=VNkDJk5_9eU'
|
fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=VNkDJk5_9eU'
|
||||||
click_button 'Update'
|
click_button 'Update'
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully updated.')
|
expect(flash).to eq('Materials were successfully updated.')
|
||||||
page.find('#flash .button.close').click
|
page.find('#flash .button.close').click
|
||||||
expect(conference.commercials.count).to eq(1)
|
expect(conference.commercials.count).to eq(1)
|
||||||
commercial.reload
|
commercial.reload
|
||||||
|
|
@ -39,7 +39,7 @@ feature Commercial do
|
||||||
click_link 'Delete'
|
click_link 'Delete'
|
||||||
end
|
end
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully destroyed.')
|
expect(flash).to eq('Materials were successfully destroyed.')
|
||||||
expect(conference.commercials.count).to eq(0)
|
expect(conference.commercials.count).to eq(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -56,23 +56,23 @@ feature Commercial do
|
||||||
|
|
||||||
scenario 'adds a valid commercial of an event', feature: true, js: true do
|
scenario 'adds a valid commercial of an event', feature: true, js: true do
|
||||||
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
click_link 'Commercials'
|
click_link 'Materials'
|
||||||
fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
||||||
|
|
||||||
# Workaround to enable the 'Create Commercial' button
|
# Workaround to enable the 'Save Materials' button
|
||||||
page.execute_script("$('#commercial_submit_action').prop('disabled', false)")
|
page.execute_script("$('#commercial_submit_action').prop('disabled', false)")
|
||||||
|
|
||||||
click_button 'Create Commercial'
|
click_button 'Save Materials'
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully created.')
|
expect(flash).to eq('Materials were successfully created.')
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'does not add an invalid commercial of an event', feature: true, js: true do
|
scenario 'does not add an invalid commercial of an event', feature: true, js: true do
|
||||||
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
click_link 'Commercials'
|
click_link 'Materials'
|
||||||
fill_in 'commercial_url', with: 'invalid_commercial_url'
|
fill_in 'commercial_url', with: 'invalid_commercial_url'
|
||||||
expect(page).to have_content('No embeddable content')
|
expect(page).to have_content('No embeddable content')
|
||||||
expect(page).to have_css("button[type='submit']:disabled", text: 'Create Commercial')
|
expect(page).to have_css("button[type='submit']:disabled", text: 'Save Materials')
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'updates a commercial of an event', feature: true, js: true do
|
scenario 'updates a commercial of an event', feature: true, js: true do
|
||||||
|
|
@ -80,11 +80,11 @@ feature Commercial do
|
||||||
commercialable_id: event.id,
|
commercialable_id: event.id,
|
||||||
commercialable_type: 'Event')
|
commercialable_type: 'Event')
|
||||||
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
click_link 'Commercials'
|
click_link 'Materials'
|
||||||
fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=M9bq_alk-sw'
|
||||||
click_button 'Update'
|
click_button 'Update'
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully updated.')
|
expect(flash).to eq('Materials were successfully updated.')
|
||||||
TransactionalCapybara::AjaxHelpers.wait_for_ajax(page)
|
TransactionalCapybara::AjaxHelpers.wait_for_ajax(page)
|
||||||
expect(event.commercials.count).to eq(1)
|
expect(event.commercials.count).to eq(1)
|
||||||
commercial.reload
|
commercial.reload
|
||||||
|
|
@ -97,12 +97,12 @@ feature Commercial do
|
||||||
commercialable_type: 'Event',
|
commercialable_type: 'Event',
|
||||||
url: 'https://www.youtube.com/watch?v=BTTygyxuGj8')
|
url: 'https://www.youtube.com/watch?v=BTTygyxuGj8')
|
||||||
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
click_link 'Commercials'
|
click_link 'Materials'
|
||||||
fill_in "commercial_url_#{commercial.id}", with: 'invalid_commercial_url'
|
fill_in "commercial_url_#{commercial.id}", with: 'invalid_commercial_url'
|
||||||
click_button 'Update'
|
click_button 'Update'
|
||||||
find('#flash')
|
find('#flash')
|
||||||
expect(current_path).to eq edit_conference_program_proposal_path(conference.short_title, event.id)
|
expect(current_path).to eq edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
expect(flash).to include('An error prohibited this Commercial from being saved:')
|
expect(flash).to include('An error prohibited materials from being saved:')
|
||||||
commercial.reload
|
commercial.reload
|
||||||
expect(commercial.url).to eq('https://www.youtube.com/watch?v=BTTygyxuGj8')
|
expect(commercial.url).to eq('https://www.youtube.com/watch?v=BTTygyxuGj8')
|
||||||
end
|
end
|
||||||
|
|
@ -112,12 +112,12 @@ feature Commercial do
|
||||||
commercialable_id: event.id,
|
commercialable_id: event.id,
|
||||||
commercialable_type: 'Event')
|
commercialable_type: 'Event')
|
||||||
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
visit edit_conference_program_proposal_path(conference.short_title, event.id)
|
||||||
click_link 'Commercials'
|
click_link 'Materials'
|
||||||
page.accept_alert do
|
page.accept_alert do
|
||||||
click_link 'Delete'
|
click_link 'Delete'
|
||||||
end
|
end
|
||||||
page.find('#flash')
|
page.find('#flash')
|
||||||
expect(flash).to eq('Commercial was successfully destroyed.')
|
expect(flash).to eq('Materials were successfully destroyed.')
|
||||||
TransactionalCapybara::AjaxHelpers.wait_for_ajax(page)
|
TransactionalCapybara::AjaxHelpers.wait_for_ajax(page)
|
||||||
expect(event.commercials.count).to eq(0)
|
expect(event.commercials.count).to eq(0)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ feature 'Has correct abilities' do
|
||||||
expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
||||||
expect(page).to have_text('Basics')
|
expect(page).to have_text('Basics')
|
||||||
expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
||||||
expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
||||||
expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
||||||
expect(page).to_not have_link('Lodgings', href: "/admin/conferences/#{conference.short_title}/lodgings")
|
expect(page).to_not have_link('Lodgings', href: "/admin/conferences/#{conference.short_title}/lodgings")
|
||||||
expect(page).to_not have_link('Registration Period', href: "/admin/conferences/#{conference.short_title}/registration_period")
|
expect(page).to_not have_link('Registration Period', href: "/admin/conferences/#{conference.short_title}/registration_period")
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ feature 'Has correct abilities' do
|
||||||
expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard')
|
expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard')
|
||||||
expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
||||||
expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
||||||
expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
||||||
expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
||||||
expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
||||||
expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ feature 'Has correct abilities' do
|
||||||
expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard')
|
expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard')
|
||||||
expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
||||||
expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
||||||
expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
||||||
expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
||||||
expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
||||||
expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ feature 'Has correct abilities' do
|
||||||
expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit")
|
||||||
expect(page).to have_text('Basics')
|
expect(page).to have_text('Basics')
|
||||||
expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit")
|
||||||
expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials")
|
||||||
expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage")
|
||||||
expect(page).to_not have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
expect(page).to_not have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue")
|
||||||
expect(page).to_not have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
expect(page).to_not have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms")
|
||||||
|
|
|
||||||
|
|
@ -277,9 +277,9 @@ feature 'Version' do
|
||||||
conference_commercial.destroy
|
conference_commercial.destroy
|
||||||
|
|
||||||
visit admin_revision_history_path
|
visit admin_revision_history_path
|
||||||
expect(page).to have_text("Someone (probably via the console) created new commercial in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) created new materials in conference #{conference.short_title}")
|
||||||
expect(page).to have_text("Someone (probably via the console) updated url of commercial in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) updated url of materials in conference #{conference.short_title}")
|
||||||
expect(page).to have_text("Someone (probably via the console) deleted commercial in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) deleted materials in conference #{conference.short_title}")
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'display changes in event commercials', feature: true, versioning: true, js: true do
|
scenario 'display changes in event commercials', feature: true, versioning: true, js: true do
|
||||||
|
|
@ -288,9 +288,9 @@ feature 'Version' do
|
||||||
event_commercial.destroy
|
event_commercial.destroy
|
||||||
|
|
||||||
visit admin_revision_history_path
|
visit admin_revision_history_path
|
||||||
expect(page).to have_text("Someone (probably via the console) created new commercial in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) created new materals in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
||||||
expect(page).to have_text("Someone (probably via the console) updated url of commercial in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) updated url of materials in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
||||||
expect(page).to have_text("Someone (probably via the console) deleted commercial in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
expect(page).to have_text("Someone (probably via the console) deleted materials in event #{event_with_commercial.title} in conference #{conference.short_title}")
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'display changes in event commercials in event history', feature: true, versioning: true, js: true do
|
scenario 'display changes in event commercials in event history', feature: true, versioning: true, js: true do
|
||||||
|
|
@ -299,10 +299,10 @@ feature 'Version' do
|
||||||
|
|
||||||
visit admin_conference_program_event_path(conference.short_title, event_with_commercial)
|
visit admin_conference_program_event_path(conference.short_title, event_with_commercial)
|
||||||
click_link 'History'
|
click_link 'History'
|
||||||
expect(page).to have_text('Someone (probably via the console) created new commercial')
|
expect(page).to have_text('Someone (probably via the console) created new materials')
|
||||||
visit admin_conference_program_event_path(conference.short_title, event_without_commercial)
|
visit admin_conference_program_event_path(conference.short_title, event_without_commercial)
|
||||||
click_link 'History'
|
click_link 'History'
|
||||||
expect(page).to have_no_text('Someone (probably via the console) created new commercial')
|
expect(page).to have_no_text('Someone (probably via the console) created new materials')
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'display changes in organization', feature: true, versioning: true, js: true do
|
scenario 'display changes in organization', feature: true, versioning: true, js: true do
|
||||||
|
|
|
||||||
|
|
@ -51,26 +51,4 @@ describe Registration do
|
||||||
expect(subject).to receive(:send_registration_mail)
|
expect(subject).to receive(:send_registration_mail)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'registration_to_events_only_if_present' do
|
|
||||||
context 'valid' do
|
|
||||||
it 'when user registers for events happening while user is at the conference' do
|
|
||||||
registration.arrival = conference.start_date
|
|
||||||
registration.departure = conference.end_date
|
|
||||||
registration.events << create(:event, program: conference.program, start_time: conference.end_date)
|
|
||||||
|
|
||||||
expect(registration.valid?).to eq true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'invalid' do
|
|
||||||
it 'when user registers for events happening while user is not at the conference' do
|
|
||||||
registration.arrival = conference.start_date
|
|
||||||
registration.departure = conference.start_date
|
|
||||||
registration.events << create(:event, program: conference.program, start_time: conference.end_date)
|
|
||||||
|
|
||||||
expect(registration.valid?).to eq false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue