Integrate the splash page into the general layout

* Cleanup the CSS
* Fix more views then you have fingers and toes
* Introduce position(weight) for sponsor levels
* Fix bootstrap/datatable integration
This commit is contained in:
Henne Vogelsang 2014-11-14 11:58:36 +01:00
parent 7acd16f923
commit f2cdea4f1a
56 changed files with 1191 additions and 1266 deletions

View file

@ -111,6 +111,9 @@ gem 'daemons'
# to encapsulate money in objects # to encapsulate money in objects
gem 'money-rails' gem 'money-rails'
# for lists
gem 'acts_as_list'
# Use guard and spring for testing in development # Use guard and spring for testing in development
group :development do group :development do
# rspec Guard rules # rspec Guard rules

View file

@ -36,6 +36,8 @@ GEM
activerecord (>= 3.0) activerecord (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
awesome_nested_set (>= 2.0) awesome_nested_set (>= 2.0)
acts_as_list (0.4.0)
activerecord (>= 3.0)
addressable (2.3.6) addressable (2.3.6)
ahoy_matey (1.0.0) ahoy_matey (1.0.0)
addressable addressable
@ -166,10 +168,10 @@ GEM
i18n (0.6.11) i18n (0.6.11)
inversion (0.12.3) inversion (0.12.3)
loggability (~> 0.4) loggability (~> 0.4)
jquery-datatables-rails (2.2.2) jquery-datatables-rails (2.2.3)
jquery-rails jquery-rails
sass-rails sass-rails
jquery-rails (3.1.0) jquery-rails (3.1.2)
railties (>= 3.0, < 5.0) railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
json (1.8.1) json (1.8.1)
@ -193,7 +195,7 @@ GEM
open4 open4
rake rake
mini_portile (0.6.0) mini_portile (0.6.0)
minitest (5.4.2) minitest (5.4.3)
momentjs-rails (2.8.1) momentjs-rails (2.8.1)
railties (>= 3.1) railties (>= 3.1)
monetize (0.3.0) monetize (0.3.0)
@ -351,10 +353,10 @@ GEM
ruby-progressbar (1.5.1) ruby-progressbar (1.5.1)
rubyzip (1.0.0) rubyzip (1.0.0)
sass (3.2.19) sass (3.2.19)
sass-rails (4.0.3) sass-rails (4.0.4)
railties (>= 4.0.0, < 5.0) railties (>= 4.0.0, < 5.0)
sass (~> 3.2.0) sass (~> 3.2.2)
sprockets (~> 2.8, <= 2.11.0) sprockets (~> 2.8, < 2.12)
sprockets-rails (~> 2.0) sprockets-rails (~> 2.0)
shoulda (3.5.0) shoulda (3.5.0)
shoulda-context (~> 1.0, >= 1.0.1) shoulda-context (~> 1.0, >= 1.0.1)
@ -371,7 +373,7 @@ GEM
spring (1.1.2) spring (1.1.2)
spring-commands-rspec (1.0.2) spring-commands-rspec (1.0.2)
spring (>= 0.9.1) spring (>= 0.9.1)
sprockets (2.11.0) sprockets (2.11.3)
hike (~> 1.2) hike (~> 1.2)
multi_json (~> 1.0) multi_json (~> 1.0)
rack (~> 1.0) rack (~> 1.0)
@ -417,6 +419,7 @@ DEPENDENCIES
active_model_serializers active_model_serializers
activeuuid activeuuid
acts_as_commentable_with_threading acts_as_commentable_with_threading
acts_as_list
ahoy_matey ahoy_matey
awesome_nested_set (~> 3.0.0.rc.5) awesome_nested_set (~> 3.0.0.rc.5)
axlsx_rails axlsx_rails

View file

@ -1,14 +1,11 @@
$(function () { $(function () {
$(document).ready(function() { $(document).ready(function() {
$('#registrations-datatable').dataTable(); $('.datatable').DataTable({
// ajax: ...,
autoWidth: false,
pagingType: 'full_numbers'
}); });
$(document).ready(function() { });
$('#users-datatable').dataTable(); });
});
$(document).ready(function() {
$('#events-datatable').dataTable();
});
$(document).ready(function() {
$('#buyers-datatable').dataTable();
});
} );

View file

@ -8,6 +8,7 @@
*= require osem-schedule-print *= require osem-schedule-print
*= require osem-dashboard *= require osem-dashboard
*= require osem-fonts *= require osem-fonts
*= require osem-splash
*= require font-awesome *= require font-awesome
*= require bootstrap-markdown.min *= require bootstrap-markdown.min
*= require bootstrap-datetimepicker *= require bootstrap-datetimepicker

View file

@ -0,0 +1,59 @@
.flex-col {
display: flex;
display: -webkit-flex;
flex: 1 100%;
flex-flow: column nowrap;
}
.flex-grow {
display: flex;
-webkit-flex: 2;
flex: 2;
}
.row-flex, .row-flex > div[class*='col-'] {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex:1 1 auto;
}
.row-flex-wrap {
-webkit-flex-flow: row wrap;
align-content: flex-start;
flex:0;
}
.row-flex > div[class*='col-'], .container-flex > div[class*='col-'] {
margin:-.2px; /* hack adjust for wrapping */
}
.nav-header-bigger {
font-size: 15px;
font-weight: bold;
text-transform: uppercase;
}
.mySidebar {
.fa {
margin-right: 10px;
}
hr {
margin: 1px;
}
}
.dl-horizontal dt { white-space: normal; }
.table20 {
width: 20%;
}
@media only screen and (max-width: 768px) {
.mySidebar ul.subNav {
display: block;
}
}

View file

@ -11,4 +11,49 @@
@include breakpoint(lg) { @include breakpoint(lg) {
font-size: 5em; font-size: 5em;
} }
} }
.dashbox {
padding-top: 20px;
padding-bottom: 20px;
}
.dashbox .icon {
padding-left: 8px;
display: block;
font-size: 3.8em;
}
.dashbox label {
display: block;
font-size: 1.1em;
}
.todolist-missing span {
color: #ff0000;
}
.todolist-ok {
text-decoration: line-through;
}
.todolist-ok span {
color: #02A10F;
}
.top-submitter img {
margin: 0 auto;
}
#doughnut .tab-content {
padding-bottom: 20px;
}
#submissions {
padding-bottom: 20px;
}
.conferenceCheckboxes div {
display: inline-block;
padding: 0px 10px 0px 0px;
}

View file

@ -44,4 +44,4 @@
.fa-suse:before { .fa-suse:before {
content: "a"; content: "a";
} }

View file

@ -0,0 +1,124 @@
#splash {
section {
padding-top: 60px;
padding-bottom: 60px;
}
section:nth-child(even) {
background: none repeat scroll 0 0 #e0e0e0;
color: #555;
}
section:nth-child(odd) {
background: none repeat scroll 0 0 #ffffff;
color: #7b7b7b;
}
}
#splash-banner{
background: none;
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
min-height: 700px;
margin-top: -10px;
.container {
padding-top: 60px;
}
h1, h3{
color:#3399CC;
}
h3{
font-family: 'Coustard', serif;
font-weight: 600;
text-shadow: 0.2em 0.2em 0 #4A4F6A;
}
h1{
font-size: 5em;
font-weight: 700;
text-shadow:0.04em 0.04em 0 black;
}
p {
color: #fff;
font-weight: 500;
}
}
#program {
.tracks:hover{
background-color: white;
}
}
#callforpapers {
.timer-box{
width: 130px;
margin: 35px 24px 20px 0;
border-radius: 50%;
border:4px solid #989797;
}
#cfp-date{
font-size: 40px;
color: #ff6633;
}
}
#location {
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
min-height: 500px;
h1,h2,p{
color: #fff;
}
h1,h2,li,p{
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
font-weight: 400;
}
}
#social-media{
i{
color: #4a4a4a;
}
i:hover{
color: #16a085;
}
}
.scroll-top-wrapper {
position: fixed;
opacity: 0;
visibility: hidden;
overflow: hidden;
text-align: center;
z-index: 99999999;
background-color: #424242;
width: 50px;
height: 48px;
line-height: 48px;
right: 30px;
bottom: 30px;
padding-top: 2px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
i.fa {
line-height: inherit;
}
&.show {
visibility:visible;
cursor:pointer;
opacity: 1.0;
}
a {
color: white;
}
}

View file

@ -17,158 +17,11 @@ body {
/* Set the fixed height of the footer here */ /* Set the fixed height of the footer here */
height: 60px; height: 60px;
background-color: #f5f5f5; background-color: #f5f5f5;
} .container {
padding: 15px;
.container .text-muted {
margin: 20px 0;
}
#footer > .container {
padding: 15px;
}
.nav-header-bigger {
font-size: 15px;
font-weight: bold;
text-transform: uppercase;
}
.fa {
margin-right: 10px;
}
.mySidebar hr {
margin: 1px;
}
@media only screen and (max-width: 768px) {
.mySidebar ul.subNav {
display: block;
} }
} }
.conferenceCheckboxes div { .nav-tabs {
display: inline-block; margin-bottom: 15px;
padding: 0px 10px 0px 0px; }
}
.dashbox {
padding-top: 20px;
padding-bottom: 20px;
}
.dashbox .icon {
padding-left: 8px;
display: block;
font-size: 3.8em;
}
.dashbox label {
display: block;
font-size: 1.1em;
}
.todolist-missing span {
color: #ff0000;
}
.todolist-ok {
text-decoration: line-through;
}
.todolist-ok span {
color: #02A10F;
}
.top-submitter img {
margin: 0 auto;
}
#doughnut .tab-content {
padding-bottom: 20px;
}
#submissions {
padding-bottom: 20px;
}
.banner-disp{
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
-webkit-background-size:cover;
}
#location .with-background {
min-height: 500px;
}
#splash-banner .with-background{
min-height: 700px;
}
.location-links li{
display: inline-block;
margin-right: 2em;
}
.banner-text{
padding-top: 10%;
}
.pad{
padding-top: 35px;
padding-bottom: 35px;
}
.dl-horizontal dt { white-space: normal; }
.equal, .equal > div[class*='col-'] {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex:1 0 auto;
}
.row-flex, .row-flex > div[class*='col-'] {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex:1 1 auto;
}
.row-flex-wrap {
-webkit-flex-flow: row wrap;
align-content: flex-start;
flex:0;
}
.row-flex > div[class*='col-'], .container-flex > div[class*='col-'] {
margin:-.2px; /* hack adjust for wrapping */
}
.container-flex > div[class*='col-'] div,.row-flex > div[class*='col-'] div {
width:100%;
}
.flex-col {
display: flex;
display: -webkit-flex;
flex: 1 100%;
flex-flow: column nowrap;
}
.flex-grow {
display: flex;
-webkit-flex: 2;
flex: 2;
}
.table20 {
width: 20%;
}

View file

@ -1,265 +0,0 @@
@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 300;
src: local('Lato Light'), local('Lato-Light'), url("fonts/Lato-Light.woff") format('woff');
}
@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 400;
src: local('Lato Regular'), local('Lato-Regular'), url("fonts/Lato-Regular.woff") format('woff');
}
@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 700;
src: local('Lato Bold'), local('Lato-Bold'), url("fonts/Lato-Bold.woff") format('woff');
}
@font-face {
font-family: 'Lato';
font-style: italic;
font-weight: 300;
src: local('Lato Light Italic'), local('Lato-LightItalic'), url("fonts/Lato-LightItalic.woff") format('woff');
}
@font-face {
font-family: 'Lato';
font-style: italic;
font-weight: 400;
src: local('Lato Italic'), local('Lato-Italic'), url("fonts/Lato-Italic.woff") format('woff');
}
@font-face {
font-family: 'Raleway';
font-style: normal;
font-weight: 300;
src: local('Raleway Light'), local('Raleway-Light'), url("fonts/Raleway-Light.woff") format('woff');
}
@font-face {
font-family: 'Raleway';
font-style: normal;
font-weight: 400;
src: local('Raleway'), url("fonts/Raleway.woff") format('woff');
}
@font-face {
font-family: 'Raleway';
font-style: normal;
font-weight: 700;
src: local('Raleway Bold'), local('Raleway-Bold'), url("fonts/Raleway-Bold.woff") format('woff');
}
@font-face {
font-family: 'Coustard';
font-style: normal;
font-weight: 400;
src: local('Coustard'), url("fonts/Coustard.woff") format('woff');
}
@font-face {
font-family: 'Coustard';
font-style: normal;
font-weight: 900;
src: local('Coustard-Black'), url("fonts/Coustard-Black.woff") format('woff');
}
.splash {
background-color: #f2f2f2;
font-family: 'Lato';
font-weight: 300;
font-size: 16px;
color: #555;
margin-top: -10px;
-webkit-font-smoothing: antialiased;
/*-webkit-overflow-scrolling: touch;*/
/* Titles */
h1, h2, h3, h4, h5, h6 {
font-family: "Raleway";
font-weight: 300;
color: #333;
}
/* Links */
a {
color: #f85c37;
word-wrap: break-word;
-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;
-moz-transition: color 0.1s ease-in, background 0.1s ease-in;
-ms-transition: color 0.1s ease-in, background 0.1s ease-in;
-o-transition: color 0.1s ease-in, background 0.1s ease-in;
transition: color 0.1s ease-in, background 0.1s ease-in;
}
a:hover,
a:focus {
color: #7b7b7b;
text-decoration: none;
outline: 0;
}
a:before,
a:after {
-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;
-moz-transition: color 0.1s ease-in, background 0.1s ease-in;
-ms-transition: color 0.1s ease-in, background 0.1s ease-in;
-o-transition: color 0.1s ease-in, background 0.1s ease-in;
transition: color 0.1s ease-in, background 0.1s ease-in;
}
hr {
display: block;
height: 1px;
border: 0;
border-top: 1px solid #ccc;
margin: 1em 0;
padding: 0;
}
/* ==========================================================================
Wrap Sections
========================================================================== */
#splash-banner{
h1, h3{
color:#3399CC;
}
h3{
font-family: 'Coustard', serif;
font-weight: 600;
text-shadow: 0.2em 0.2em 0 #4A4F6A;
}
h1{
font-size: 5em;
font-weight: 700;
text-shadow:0.04em 0.04em 0 black;
}
p {
color: #fff;
font-weight: 500;
}
}
#program{
.tracks:hover{
background-color: white;
}
}
#callforpapers{
.timer-box{
width: 130px;
margin: 35px 24px 20px 0;
border-radius: 50%;
border:4px solid #989797;
}
#cfp-date{
font-size: 40px;
font-family: 'Coustard', serif;
color: #ff6633;
}
}
#registration{
background-color: #e0e0e0;
}
#sponsors{
h2,h3,h4{
color: #fff;
font-weight: 400;
}
color: #fff;
background-color: #343b3d;
}
#social-media{
i{
color: #4a4a4a;
}
i:hover{
color: #16a085;
}
}
#location{
h1,h2,p{
color: #fff;
}
h1,h2,li,p{
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
font-weight: 400;
}
}
#gallery{
min-height: 600px;
.item{
img {
height: 600px;
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
-webkit-background-size:cover;
}
}
.modal-body{
i{
margin-top: 35%;
}
}
#carousel-example-generic{
visibility: hidden;
}
}
.scroll-top-wrapper {
position: fixed;
opacity: 0;
visibility: hidden;
overflow: hidden;
text-align: center;
z-index: 99999999;
background-color: #424242;
width: 50px;
height: 48px;
line-height: 48px;
right: 30px;
bottom: 30px;
padding-top: 2px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
i.fa {
line-height: inherit;
}
&.show {
visibility:visible;
cursor:pointer;
opacity: 1.0;
}
a {
color: white;
}
}
}

View file

@ -1,22 +1,65 @@
module Admin module Admin
class SponsorshipLevelsController < Admin::BaseController class SponsorshipLevelsController < Admin::BaseController
load_and_authorize_resource :conference, find_by: :short_title load_and_authorize_resource :conference, find_by: :short_title
authorize_resource through: :conference load_and_authorize_resource through: :conference
def index def index
authorize! :index, SponsorshipLevel.new(conference_id: @conference.id) authorize! :index, SponsorshipLevel.new(conference_id: @conference.id)
end end
def update def edit; end
if @conference.update_attributes(params[:conference])
redirect_to(admin_conference_sponsorship_levels_path( def new
conference_id: @conference.short_title), @sponsorship_level = @conference.sponsorship_levels.new
notice: 'Sponsorship levels were successfully updated.') end
def create
@sponsorship_level = @conference.sponsorship_levels.new(sponsorship_level_params)
if @sponsorship_level.save
redirect_to(admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
notice: 'Sponsorship level successfully created.')
else else
flash[:error] = "Creating Sponsorship Level failed: #{@sponsorship_level.errors.full_messages.join('. ')}."
render :new
end
end
def update
if @sponsorship_level.update_attributes(sponsorship_level_params)
redirect_to(admin_conference_sponsorship_levels_path( redirect_to(admin_conference_sponsorship_levels_path(
conference_id: @conference.short_title), conference_id: @conference.short_title),
alert: 'Sponsorship levels update failed') notice: 'Sponsorship level successfully updated.')
else
flash[:error] = "Update Sponsorship level failed: #{@sponsorship_level.errors.full_messages.join('. ')}."
render :edit
end end
end end
def destroy
if @sponsorship_level.destroy
redirect_to(admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
notice: 'Sponsorship level successfully deleted.')
else
redirect_to(admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
error: 'Deleting sponsorship level failed! ' \
"#{@sponsorship_level.errors.full_messages.join('. ')}.")
end
end
def up
@sponsorship_level.move_higher
redirect_to(admin_conference_sponsorship_levels_path(conference_id: @conference.short_title))
end
def down
@sponsorship_level.move_lower
redirect_to(admin_conference_sponsorship_levels_path(conference_id: @conference.short_title))
end
private
def sponsorship_level_params
params[:sponsorship_level]
end
end end
end end

View file

@ -57,7 +57,7 @@ class Conference < ActiveRecord::Base
has_many :participants, through: :registrations, source: :user has_many :participants, through: :registrations, source: :user
has_many :vdays, dependent: :destroy has_many :vdays, dependent: :destroy
has_many :vpositions, dependent: :destroy has_many :vpositions, dependent: :destroy
has_many :sponsorship_levels, dependent: :destroy has_many :sponsorship_levels, -> { order('position ASC') }, dependent: :destroy
has_many :sponsors, dependent: :destroy has_many :sponsors, dependent: :destroy
has_many :photos, dependent: :destroy has_many :photos, dependent: :destroy
has_many :targets, dependent: :destroy has_many :targets, dependent: :destroy

View file

@ -2,5 +2,6 @@ class SponsorshipLevel < ActiveRecord::Base
attr_accessible :title, :conference_id attr_accessible :title, :conference_id
validates_presence_of :title validates_presence_of :title
belongs_to :conference belongs_to :conference
acts_as_list scope: :conference
has_many :sponsors has_many :sponsors
end end

View file

@ -6,7 +6,7 @@
Events Events
- if @events - if @events
= "(#{@events.length})" = "(#{@events.length})"
%table.table.table-striped.table-bordered.table-hover#events-datatable %table.table.table-striped.table-bordered.table-hover.datatable
%thead %thead
%th %th
%b ID %b ID

View file

@ -3,7 +3,7 @@
- if @conference.rooms.any? - if @conference.rooms.any?
.row .row
.col-md-12 .col-md-12
%table.table %table.table#rooms
%thead %thead
%th # %th #
%th Name %th Name

View file

@ -0,0 +1,2 @@
= f.input :title
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }

View file

@ -1,6 +0,0 @@
<div class="nested-fields">
<%= f.inputs do %>
<%= f.input :title %>
<%= remove_association_link :sponsorship_level, f %>
<% end %>
</div>

View file

@ -0,0 +1,8 @@
%h1 Editing Sponsorship Level
.row
.col-md-8
= semantic_form_for @sponsorship_level, url: admin_conference_sponsorship_level_path(conference_id: @conference.short_title, id: @sponsorship_level.id) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_sponsorship_levels_path

View file

@ -1,4 +1,29 @@
.col-md-9 %h1 Sponsorship Levels
= semantic_form_for(@conference, :url => admin_conference_sponsorship_level_path(@conference.short_title, @conference.sponsorship_levels)) do |f|
= dynamic_association :sponsorship_levels, "Sponsorship Levels", f - if @conference.sponsorship_levels.any?
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} .row
.col-md-12
%table.table#sponsorship_levels
%thead
%th Title
%th Position
%th Actions
%tbody
- @conference.sponsorship_levels.each_with_index do |sponsorship_level, index|
%tr
%td
= sponsorship_level.title
%td
= sponsorship_level.position
.btn-group-vertical{role: "group"}
= link_to(up_admin_conference_sponsorship_level_path(@conference.short_title, sponsorship_level.id), method: :patch, class: 'btn btn-default btn-xs') do
%i.fa.fa-chevron-up
= link_to(down_admin_conference_sponsorship_level_path(@conference.short_title, sponsorship_level.id), method: :patch, class: 'btn btn-default btn-xs') do
%i.fa.fa-chevron-down
%td
= link_to 'Edit', edit_admin_conference_sponsorship_level_path(@conference.short_title, sponsorship_level.id),
method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_sponsorship_level_path(@conference.short_title, sponsorship_level.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete the sponsorship level #{sponsorship_level.title}?" }
= link_to 'New Sponsorship Level', new_admin_conference_sponsorship_level_path(@conference.short_title), class: 'btn btn-success'

View file

@ -0,0 +1,7 @@
%h1 New Sponsorship Level
.row
.col-md-8
= semantic_form_for @sponsorship_level, url: admin_conference_sponsorship_levels_path(conference_id: @conference.short_title) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_sponsorship_levels_path

View file

@ -7,7 +7,7 @@
= markdown(@ticket.description) = markdown(@ticket.description)
%h4 The following persons bought this ticket: %h4 The following persons bought this ticket:
%table.table#buyers-datatable %table.table.table-striped.table-bordered.table-hover.datatable
%thead %thead
%th # %th #
%th Name %th Name

View file

@ -1,12 +1,14 @@
.row .row
.col-md-12 .col-md-12
%h2 .page-header
Users %h2
- if @users Users
= "(#{@users.length})" - if @users
= "(#{@users.length})"
= link_to 'New User', new_admin_user_path, class: 'btn btn-success pull-right' = link_to 'New User', new_admin_user_path, class: 'btn btn-success pull-right'
%table.table.table-striped.table-bordered.table-hover#users-datatable .row
.col-md-12
%table.table.table-striped.table-bordered.table-hover.datatable
%thead %thead
%th ID %th ID
%th State %th State
@ -53,4 +55,4 @@
disabled: true, class: 'btn btn-primary disabled btn-danger', role: 'button' disabled: true, class: 'btn btn-primary disabled btn-danger', role: 'button'
- else - else
= link_to 'Delete',admin_user_path(user), method: :delete, = link_to 'Delete',admin_user_path(user), method: :delete,
data: { confirm: 'Are you sure ?' }, class: 'btn btn-primary btn-danger' data: { confirm: 'Are you sure ?' }, class: 'btn btn-primary btn-danger'

View file

@ -1,8 +1,10 @@
%h1 Editing Commercial .container
.row
.row .col-md-12
.col-md-8 .page-header
= semantic_form_for @commercial, url: conference_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event.id, id: @commercial.id) do |f| %h1 Editing Commercial
= render 'form', f: f .row
.col-md-12
= link_to 'Back', edit_conference_proposal_path(conference_id: @conference.short_title, id: @event.id) = semantic_form_for @commercial, url: conference_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event.id, id: @commercial.id) do |f|
= render 'form', f: f
= link_to 'Back', edit_conference_proposal_path(conference_id: @conference.short_title, id: @event.id)

View file

@ -1,7 +1,10 @@
%h1 New Commercial .container
.row .row
.col-md-8 .col-md-12
= semantic_form_for @commercial, url: conference_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event.id) do |f| .page-header
= render 'form', f: f %h1 New Commercial
.row
= link_to 'Back', edit_conference_proposal_path(conference_id: @conference.short_title, id: @event.id) .col-md-12
= semantic_form_for @commercial, url: conference_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event.id) do |f|
= render 'form', f: f
= link_to 'Back', edit_conference_proposal_path(conference_id: @conference.short_title, id: @event.id)

View file

@ -2,41 +2,36 @@
%li %li
%a.smoothscroll{ href: '#callforpapers' } Call For Papers %a.smoothscroll{ href: '#callforpapers' } Call For Papers
%div.container#callforpapers.text-center .container
%div.row .row
%div.col-md-12 .col-md-12.text-center
%h1 %h1
Call For Papers Call For Papers
- if !@conference.call_for_papers.description.blank? - if !@conference.call_for_papers.description.blank?
.lead = markdown(@conference.call_for_papers.description)
= markdown(@conference.call_for_papers.description) .row
.col-md-12.text-center
.lead
= link_to "Submit Your Proposals Today", conference_proposal_index_path(@conference.short_title), class: 'btn btn-info', target: '_blank'
- if !@conference.call_for_papers.start_date.blank? && !@conference.call_for_papers.end_date.blank? - if !@conference.call_for_papers.start_date.blank? && !@conference.call_for_papers.end_date.blank?
.lead Proposals will be accepted between %p
#cfp-date Proposals will be accepted between
%p#cfp-date
= date_string(@conference.call_for_papers.start_date, @conference.call_for_papers.end_date) = date_string(@conference.call_for_papers.start_date, @conference.call_for_papers.end_date)
- if @conference.cfp_open? .row
- if @conference.call_for_papers.end_date.to_time < Time.now .col-md-8.col-md-offset-3.text-center
.lead Today is the last day. Hurry Up! %div.col-md-2.timer-box
- else %h2#days
.row .lead Days
.col-md-8.col-md-offset-3 %div.col-md-2.timer-box
%div.col-md-2.timer-box %h2#hours
%h2#days .lead Hours
.lead Days %div.col-md-2.timer-box
%div.col-md-2.timer-box %h2#minutes
%h2#hours .lead Minutes
.lead Hours %div.col-md-2.timer-box
%div.col-md-2.timer-box %h2#seconds
%h2#minutes .lead Seconds
.lead Minutes
%div.col-md-2.timer-box
%h2#seconds
.lead Seconds
.row
.lead
= link_to "Submit Your Proposals Today", conference_proposal_index_path(@conference.short_title), class: 'btn btn-info', target: '_blank'
-else
%h3 Call for Papers is currently closed!
:javascript :javascript
$( document ).ready(function(){ $( document ).ready(function(){

View file

@ -1,11 +0,0 @@
%div.row.text-center
%div.col-md-12
%h3 Keynote Speakers
- @keynote_speakers.each do |k|
%div{ class: (@keynote_speakers.count.to_i <= 2 ? "col-md-#{12/@keynote_speakers.count.to_i}" : "col-md-4") }
= image_tag(k.gravatar_url(size: '80'), class: 'img-circle') unless k.gravatar_url.blank?
%h4
= k.name
-unless k.biography.blank?
%p
= k.biography

View file

@ -2,25 +2,19 @@
%li %li
%a.smoothscroll{ href: '#location' } Location %a.smoothscroll{ href: '#location' } Location
.container
%div.banner-disp{ style: ("background-image: url(#{@conference.venue.photo})" unless @conference.venue.photo.blank?), class:('with-background' unless @conference.venue.photo.blank?) } .row
%div.container.text-center .col-md-12.text-center
.div.row.col-md-12
- unless @conference.venue.name.blank? - unless @conference.venue.name.blank?
%h1 %h1
%strong #{ @conference.venue.name } %strong #{ @conference.venue.name }
- unless @conference.venue.address.blank? - unless @conference.venue.address.blank?
%h2 = link_to("http://maps.google.com/maps?q=#{@conference.venue.address}") do
%strong #{ @conference.venue.address } %h2
#{ @conference.venue.address }
- unless @conference.venue.description.blank? - unless @conference.venue.description.blank?
.lead .lead
= markdown(@conference.venue.description) = markdown(@conference.venue.description)
%ul.location-links - unless @conference.venue.website.blank?
- unless @conference.venue.address.blank? %p.lead
%li = link_to(@conference.venue.website, @conference.venue.website)
%b
= link_to 'View in Google Maps', "http://maps.google.com/maps?q=#{@conference.venue.address}", target: '_blank'
- unless @conference.venue.website.blank?
%li
%b
= link_to 'Visit Venue Website', @conference.venue.website, target: '_blank'

View file

@ -1,10 +1,10 @@
%div.container.text-center .container
%h2 Lodging .row
-unless @conference.splashpage.lodging_description.blank? .col-md-12.text-center
.lead %h2 Accommodation Deals
= markdown(@conference.splashpage.lodging_description) %p.lead
We have prepared affordable accommodation deals for your visit.
%div.row.text-center .row
- @conference.venue.lodgings.each do |r| - @conference.venue.lodgings.each do |r|
%div{ class: (@conference.venue.lodgings.count.to_i <= 2 ? "col-md-#{12/@conference.venue.lodgings.count.to_i}" : "col-md-4") } %div{ class: (@conference.venue.lodgings.count.to_i <= 2 ? "col-md-#{12/@conference.venue.lodgings.count.to_i}" : "col-md-4") }
.div.thumbnail .div.thumbnail

View file

@ -1,22 +1,36 @@
= content_for :splash_nav do = content_for :splash_nav do
%li %li
%a.smoothscroll{ href: '#program' } Program =link_to('#program', class: 'smoothscroll') do
Program
%div.container.text-center .container
%div.row .row
%div.col-md-12 .col-md-12.text-center
%h1 Program %h1 Program
- if @conference.call_for_papers and @conference.call_for_papers.schedule_public - if @conference.splashpage and @conference.splashpage.include_tracks
%span You can check out our .row
%span .col-md-12
= link_to 'Schedule', conference_schedule_path(@conference.short_title), target: '_blank' - @conference.tracks.each do |t|
- else .tracks{ class: (@conference.tracks.count.to_i <= 2 ? "col-md-#{12/@conference.tracks.count.to_i}" : "col-md-4") }
%span The schedule is not ready yet. Stay tuned! %h4.text-center
= t.name
- unless @keynote_speakers.blank? %p
= render 'keynote_speakers' = markdown(t.description)
- if @conference.call_for_papers and @conference.call_for_papers.schedule_public
-unless @conference.tracks.blank? .row
- if @conference.splashpage.include_tracks .col-md-12
= render 'tracks' %p.text-center
Check out our
= link_to 'Schedule', conference_schedule_path(@conference.short_title)
- if !@keynote_speakers.blank?
%div.row.text-center
%div.col-md-12
%h3 Keynote Speakers
- @keynote_speakers.each do |k|
%div{ class: (@keynote_speakers.count.to_i <= 2 ? "col-md-#{12/@keynote_speakers.count.to_i}" : "col-md-4") }
= image_tag(k.gravatar_url(size: '80'), class: 'img-circle') unless k.gravatar_url.blank?
%h4
= k.name
-unless k.biography.blank?
%p
= k.biography

View file

@ -1,22 +1,16 @@
= content_for :splash_nav do = content_for :splash_nav do
%li %li
%a.smoothscroll{ href: '#registration' } Registration %a.smoothscroll{ href: '#registration' } Registration
%div.container.text-center
%div.row .container
%h1 Registration .row
- if !@conference.splashpage.registration_description.blank? .col-md-12.text-center
.lead %h1 Registration
= markdown(@conference.splashpage.registration_description) %p.lead
- if @conference.registration_dates_given? Going to
-if @conference.registration_period.end_date >= Date.today = @conference.short_title
%h4 Registration period #{ date_string(@conference.registration_period.start_date, @conference.registration_period.end_date) } is free of charge. We only ask you to
-else = link_to "register yourself", new_conference_conference_registrations_path(@conference.short_title)
%h4 Registration is Closed, it was from #{ date_string(@conference.registration_period.start_date, @conference.registration_period.end_date) } until
- if @conference.registration_open? = @conference.registration_period.end_date
- if current_user && @conference.user_registered?(current_user)
= link_to "Modify Registration for #{@conference.short_title}", edit_conference_conference_registrations_path(@conference.short_title), class: "btn btn-success btn-lg", target: '_blank'
- else
= link_to "Register for #{@conference.short_title}", new_conference_conference_registrations_path(@conference.short_title), class: "btn btn-success btn-lg", target: '_blank'
- if @conference.tickets.any?
- if @conference.splashpage.include_tickets
= render 'tickets'

View file

@ -1,24 +0,0 @@
= content_for :splash_nav do
%li
%a.smoothscroll{ href: '#sponsors' } Sponsors
%div.container#sponsors.text-center
%div.row
%div.col-md-12
%h2 Sponsors
-if !@conference.splashpage.sponsor_description.blank?
.lead
= markdown(@conference.splashpage.sponsor_description)
-if @conference.contact && @conference.contact.sponsor_email.present?
%h3= mail_to "#{ @conference.contact.sponsor_email }", 'Become a Sponsor'
- if !@conference.sponsorship_levels.blank?
- @conference.sponsorship_levels.each do |l|
- if !l.sponsors.blank?
%div.row.text-center
%h4 #{l.title}
- l.sponsors.each_with_index do |r,index|
%div.text-center{ class: (l.sponsors.count.to_i <= 2 ? "col-md-#{12/l.sponsors.count.to_i}" : "col-md-4") }
- if !r.logo.blank?
= link_to image_tag(r.logo(:large), alt: "#{r.name} Logo", title: "#{r.description}"), "http://#{r.website_url}"
- unless index == 0
- if index%2 == 0
%div.clearfix.visible-md.visible-lg

View file

@ -0,0 +1,33 @@
= content_for :splash_nav do
%li
%a.smoothscroll{ href: '#sponsors' } Sponsors
.container
.row
.col-md-12
%h2 Sponsors
%p.lead
whom without,
= @conference.short_title
wouldn't be possible!
- @conference.sponsorship_levels.each do |sponsorship_level|
-if sponsorship_level.sponsors.any?
.row
.col-md-12.text-center
%h3
= sponsorship_level.title
- sponsorship_level.sponsors.each_slice(3) do |slice|
.row
- slice.each do |sponsor|
.col-md-4
= link_to("http://#{sponsor.website_url}", class: 'thumbnail') do
= image_tag(sponsor.logo(:large), alt: "#{sponsor.name} Logo", title: "#{sponsor.description}")
-if @conference.contact and !@conference.contact.sponsor_email.blank?
.row
.col-md-12
%p.text-muted.text-center
%small
Want to sponsor #{@conference.short_title}?
= link_to("mailto: #{@conference.contact.sponsor_email}?subject=#{@conference.short_title}%20Sponsorship") do
Please contact us!

View file

@ -1,15 +1,21 @@
%div.row .container
%h3 Tickets .row
-if @conference.splashpage.ticket_description.present? .col-md-12.text-center
.lead %h1
= markdown(@conference.splashpage.ticket_description) Support
- @conference.tickets.each do |s| =@conference.short_title
%div.col-md-6 %p.lead
To support our event you can purchase tickets
.row
- @conference.tickets.each do |ticket|
%div{ class: (@conference.tickets.count <= 2 ? "col-md-#{12/@conference.tickets.count}" : "col-md-4") }
- if ticket.title.present? - if ticket.title.present?
%h4 #{ ticket.title } %h4.text-center
=ticket.title
- if ticket.description.present? - if ticket.description.present?
.lead = markdown(ticket.description)
= markdown(ticket.description) .text-center
%div.btn-group .btn-group
= link_to "Buy Ticket", conference_tickets_path(@conference.short_title), class: 'btn btn-success' = link_to(conference_tickets_path(@conference.short_title), class: 'btn btn-success') do
= button_tag "#{humanized_money_with_symbol ticket.price}", class: 'btn btn-success' Buy Ticket
= "#{humanized_money_with_symbol ticket.price}"

View file

@ -1,9 +0,0 @@
%div.row.text-center
%div.col-md-12
%h2 Tracks
- @conference.tracks.each do |t|
%div.tracks{ class: (@conference.tracks.count.to_i <= 2 ? "col-md-#{12/@conference.tracks.count.to_i}" : "col-md-4") }
%h4
= t.name
%p
= markdown(t.description)

View file

@ -1,60 +1,51 @@
= content_for :splash do #splash
- if @conference.splashpage - if @conference.splashpage
.splash - if @conference.splashpage.include_banner?
- if @conference.splashpage.include_banner? #splash-banner{ style: ("background-image: url(#{@conference.splashpage.banner_photo})" unless @conference.splashpage.banner_photo.blank?) }
%section{ id: 'splash-banner' } .container
%div.banner-disp{ style: ("background-image: url(#{@conference.splashpage.banner_photo})" unless @conference.splashpage.banner_photo.blank?), class:('with-background' unless @conference.splashpage.banner_photo.blank?) } .row
%div.container.text-center.banner-text .col-md-12.text-center
.row %h1= @conference.title
%h1
= @conference.title
- if @conference.start_date && @conference.end_date - if @conference.start_date && @conference.end_date
.row %h3= date_string(@conference.start_date, @conference.end_date)
%h3
= date_string(@conference.start_date, @conference.end_date)
- unless @conference.splashpage.banner_description.blank? - unless @conference.splashpage.banner_description.blank?
.row-fluid %p.lead
.col-md-12.lead = markdown(@conference.splashpage.banner_description)
.lead
= markdown(@conference.splashpage.banner_description)
-unless @conference.photos.blank? -unless @conference.photos.blank?
= link_to 'Gallery', gallery_photos_conference_path(@conference.short_title), class: 'btn btn-primary btn-lg', id: 'gallery-btn', remote: true = link_to 'Gallery', gallery_photos_conference_path(@conference.short_title), class: 'btn btn-primary btn-lg', id: 'gallery-btn', remote: true
= render 'gallery' = render 'gallery'
- if @conference.splashpage.include_program
%section{ id: 'program' } - if @conference.splashpage.include_program
.pad %section#program
= render 'program' = render 'program'
- if @conference.splashpage.include_registrations - if @conference.cfp_open? and @conference.call_for_papers.include_cfp_in_splash?
%section{ id: 'registration' } %section#callforpapers
.pad = render 'call_for_papers'
= render 'registration'
- if @conference.venue and @conference.splashpage.include_venue
#location{ style: ("background-image: url(#{@conference.venue.photo})" unless @conference.venue.photo.blank?) }
-unless @conference.call_for_papers.blank? = render 'location'
- if @conference.call_for_papers.include_cfp_in_splash?
%section{ id:'callforpapers' } - if @conference.registration_open? and @conference.splashpage.include_registrations
.pad %section#registration
= render 'call_for_papers' = render 'registration'
-unless @conference.venue.blank? - if @conference.tickets.any? and @conference.splashpage.include_tickets
- if @conference.splashpage.include_venue %section#tickets
%section{ id: 'location' } = render 'tickets'
.pad
= render 'location' - if @conference.venue.lodgings.any? and @conference.splashpage.include_lodgings
- unless @conference.venue.lodgings.empty? %section#lodging
- if @conference.splashpage.include_lodgings = render 'lodging'
= render 'lodging'
- if @conference.sponsors.any? and @conference.splashpage.include_sponsors
- if @conference.splashpage.include_sponsors %section#sponsors
%section{ id: 'sponsors' } = render 'sponsors'
.pad
= render 'sponsor' - if @conference.splashpage.include_social_media
%section#social-media
- if @conference.splashpage.include_social_media = render 'social_media'
%section{ id: 'social-media' }
.pad // grmbl
= render 'social_media' = render 'footer'
= render 'footer'

View file

@ -1,22 +1,23 @@
.row .container
.col-md-12 .row
= semantic_form_for(@registration, url: conference_conference_registrations_path(@conference.short_title)) do |f| .col-md-12
.tabbable = semantic_form_for(@registration, url: conference_conference_registrations_path(@conference.short_title)) do |f|
%ul.nav.nav-tabs .tabbable
%li.active %ul.nav.nav-tabs
= link_to 'Register', '#register-content', 'data-toggle' => 'tab' %li.active
- if @conference.use_volunteers = link_to 'Register', '#register-content', 'data-toggle' => 'tab'
%li - if @conference.use_volunteers
= link_to 'Volunteer', '#volunteer-content', 'data-toggle' => 'tab' %li
.tab-content = link_to 'Volunteer', '#volunteer-content', 'data-toggle' => 'tab'
#register-content.tab-pane.active .tab-content
= render 'conference_registrations/registration', f: f #register-content.tab-pane.active
- if @conference.use_volunteers = render 'conference_registrations/registration', f: f
#volunteer-content.tab-pane - if @conference.use_volunteers
= render 'conference_registrations/volunteer', f: f #volunteer-content.tab-pane
- if @conference.user_registered?(current_user) = render 'conference_registrations/volunteer', f: f
= f.action :submit, button_html: { value: 'Update Registration', class: 'btn btn-primary' } - if @conference.user_registered?(current_user)
= link_to 'Unregister', conference_conference_registrations_path(@conference.short_title), = f.action :submit, button_html: { value: 'Update Registration', class: 'btn btn-primary' }
method: :delete, class: 'btn btn-danger', confirm: 'Are you sure you want to unregister?' = link_to 'Unregister', conference_conference_registrations_path(@conference.short_title),
- else method: :delete, class: 'btn btn-danger', confirm: 'Are you sure you want to unregister?'
= f.action :submit, button_html: { value: 'Register', class: 'btn btn-primary', id: 'register' } - else
= f.action :submit, button_html: { value: 'Register', class: 'btn btn-primary', id: 'register' }

View file

@ -1,126 +1,119 @@
%h1 .container
= @conference.title .row
%small .col-md-12
= date_string(@conference.start_date, @conference.end_date) .page-header
- if @conference.venue.name and @conference.venue.website and @conference.venue.address %h1
%p = @conference.title
%small %small
at = date_string(@conference.start_date, @conference.end_date)
= link_to @conference.venue.name, @conference.venue.website .row
, .col-md-6
\#{link_to @conference.venue.address, "http://maps.google.com/maps?q=#{@conference.venue.address}"} - if @conference.venue.name and @conference.venue.website and @conference.venue.address
.row %p
.col-md-4 %small
.row at
= link_to @conference.venue.name, @conference.venue.website
,
= link_to @conference.venue.address, "http://maps.google.com/maps?q=#{@conference.venue.address}"
.col-md-4
- if @conference.contact.facebook.present? - if @conference.contact.facebook.present?
%div.col-md-3 = link_to "#{ @conference.contact.facebook }" do
= link_to "#{ @conference.contact.facebook }" do %i.fa.fa-facebook-square
%i.fa.fa-facebook-square.fa-2x
- if @conference.contact.twitter.present? - if @conference.contact.twitter.present?
%div.col-md-3 = link_to "#{ @conference.contact.twitter }" do
= link_to "#{ @conference.contact.twitter }" do %i.fa.fa-twitter
%i.fa.fa-twitter.fa-2x
- if @conference.contact.instagram.present? - if @conference.contact.instagram.present?
%div.col-md-3 = link_to "#{ @conference.contact.instagram }" do
= link_to "#{ @conference.contact.instagram }" do %i.fa.fa-instagram
%i.fa.fa-instagram.fa-2x
- if @conference.contact.googleplus.present? - if @conference.contact.googleplus.present?
%div.col-md-3 = link_to "#{ @conference.contact.googleplus }" do
= link_to "#{ @conference.contact.googleplus }" do %i.fa.fa-google-plus-square
%i.fa.fa-google-plus-square.fa-2x .row
.col-md-12
%br - if @conference.tickets.any?
%h3
- if @conference.tickets.any? Tickets
%h3 - if current_user.tickets.any?
Tickets %p
- if current_user.tickets.any? You have purchased the following tickets:
%p = render partial: 'tickets_bought', locals: { tickets: current_user.tickets }
You have already purchased the following tickets: - else
%p = render partial: 'tickets', locals: { tickets: @conference.tickets }
If you would like to buy more tickets, please click %p
= link_to 'here', conference_tickets_path(@conference.short_title) If you would like to buy more tickets, please click
= render partial: 'tickets_bought', locals: { tickets: current_user.tickets } = link_to 'here', conference_tickets_path(@conference.short_title)
.row
- else .col-md-12
= render partial: 'tickets', locals: { tickets: @conference.tickets } - if @conference.speakers.confirmed.any?
%br %h3
- if @conference.speakers.confirmed.any? = pluralize(@conference.speakers.confirmed.count, 'Speaker')
%h3 - @conference.speakers.confirmed.limit(12).each_slice(4) do |slice|
= pluralize(@conference.speakers.confirmed.count, 'Speaker')
- @conference.speakers.confirmed.limit(12).each_slice(4) do |slice|
.row
- slice.each do |speaker|
.col-md-3
.row .row
.col-md-3 - slice.each do |speaker|
= image_tag(speaker.gravatar_url(size: '25'), .col-md-3
title: "Yo #{speaker.name}!", .row
alt: '', 'class' => 'img-circle img-responsive text-center') .col-md-3
.col-md-9 = image_tag(speaker.gravatar_url(size: '25'),
title: "Yo #{speaker.name}!",
alt: '', 'class' => 'img-circle img-responsive text-center')
.col-md-9
%h4
= speaker.name
.row
.col-md-12
- if @conference.events.confirmed.any?
%h3
= pluralize(@conference.events.confirmed.count, 'Event')
%ul.list-unstyled
- @conference.events.confirmed.limit(10).each do |event|
%li
%h4 %h4
= speaker.name = link_to event.title, conference_proposal_path(@conference.short_title, event.id)
%hr %strong
presented by
- if @conference.events.confirmed.any? = event.speaker_names
%h3 .row
= pluralize(@conference.events.confirmed.count, 'Event') .col-md-12
%ul.list-unstyled - if @conference.participants.any?
- @conference.events.confirmed.limit(10).each do |event| %h3
%li = pluralize(@conference.participants.count, 'Participant')
%h4 - @conference.participants.limit(36).each_slice(12) do |slice|
= link_to event.title, conference_proposal_path(@conference.short_title, event.id) .row
%strong - slice.each do |participant|
presented by .col-md-1
= event.speaker_names = image_tag(participant.gravatar_url(size: '25'),
%hr title: "Yo #{participant.name}!",
alt: '', 'class' => 'img-circle img-responsive text-center')
- if @conference.participants.any? .row
%h3 .col-md-12
= pluralize(@conference.participants.count, 'Participant') - if @registration
- @conference.participants.limit(36).each_slice(12) do |slice| %h2
.row Congratulations! You are now registered for
- slice.each do |participant| = "#{@conference.title}!"
.col-md-1 - if @conference.questions.any?
= image_tag(participant.gravatar_url(size: '25'), %h3 Your answers to the registrations questions are:
title: "Yo #{participant.name}!", - @conference.questions.each do |q|
alt: '', 'class' => 'img-circle img-responsive text-center') %p
%hr %b Question:
= q.title
- if @registration %b Your Answer:
%h2 - @registration.qanswers.where(:question_id => q.id).each do |qa|
Congratulations! You are now registered for = qa.answer.title
= "#{@conference.title}!" - if @workshops.any?
%h3 You are registered for the following workshops:
- if @conference.questions.any? %ul.list-unstyled
%h3 Your answers to the registrations questions are: - @workshops.each do |workshop|
- @conference.questions.each do |q| %li
%p %h4
%b Question: = link_to workshop.title, conference_proposal_path(@conference.short_title, workshop.id)
= q.title %strong
presented by
%b Your Answer: = workshop.speaker_names
- @registration.qanswers.where(:question_id => q.id).each do |qa| %div
= qa.answer.title = link_to 'Modify your Registration', edit_conference_conference_registrations_path(@conference.short_title), class: 'btn btn-success'
%br = link_to 'Unregister', conference_conference_registrations_path(@conference.short_title),
method: :delete, class: 'btn btn-danger', confirm: 'Are you sure you want to unregister?'
- if @workshops.any? - else
%h3 You are registered for the following workshops: %p.lead
%ul.list-unstyled = "Unfortunately you are not registered for #{@conference.title}. If you want to register click"
- @workshops.each do |workshop| = link_to 'here.', new_conference_conference_registrations_path(@conference.short_title)
%li
%h4
= link_to workshop.title, conference_proposal_path(@conference.short_title, workshop.id)
%strong
presented by
= workshop.speaker_names
%br
%div
= link_to 'Modify your Registration', edit_conference_conference_registrations_path(@conference.short_title), class: 'btn btn-success'
= link_to 'Unregister', conference_conference_registrations_path(@conference.short_title),
method: :delete, class: 'btn btn-danger', confirm: 'Are you sure you want to unregister?'
- else
%p.lead
= "Unfortunately you are not registered for #{@conference.title}. If you want to register click"
= link_to 'here.', new_conference_conference_registrations_path(@conference.short_title)

View file

@ -1,25 +1,28 @@
%h1 Edit your Account .container
.row .row
.col-md-12 .col-md-12
= semantic_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| .page-header
= f.inputs name: 'Account' do %h1 Edit your Account
.row
.col-md-12
= semantic_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
= f.input :username, required: false, input_html: { autocomplete: 'off' } = f.input :username, required: false, input_html: { autocomplete: 'off' }
= f.input :email, required: false, input_html: { autocomplete: 'off' } = f.input :email, required: false, input_html: { autocomplete: 'off' }
= f.input :password, hint: "(Leave blank if you don't want to change it)", input_html: { autocomplete: 'off' } = f.input :password, hint: "(Leave blank if you don't want to change it)", input_html: { autocomplete: 'off' }
= f.input :password_confirmation, input_html: { autocomplete: 'off' } = f.input :password_confirmation, input_html: { autocomplete: 'off' }
= f.inputs name: 'OpenID' do = f.inputs name: 'OpenID' do
%h4 %h4
Currently the following openIDs are associated with your account Currently the following openIDs are associated with your account
- @openids.each do |openid| - @openids.each do |openid|
%li= "#{openid.provider}:#{openid.email}" %li= "#{openid.provider}:#{openid.email}"
%br %br
%h4 %h4
To add an openID with a different email address to your account, sign in with your To add an openID with a different email address to your account, sign in with your
openID while logged in to OSEM openID while logged in to OSEM
- if User.omniauth_providers.present? - if User.omniauth_providers.present?
#openidlinks #openidlinks
= render 'devise/shared/openid' = render 'devise/shared/openid'
= f.inputs name: 'Confirmation' do = f.inputs name: 'Confirmation' do
= f.input :current_password, input_html: {autocomplete: 'off'}, = f.input :current_password, input_html: {autocomplete: 'off'},
hint: '(we need your current password to confirm password, email or username changes)' hint: '(we need your current password to confirm password, email or username changes)'
= f.action :submit, as: :button, label: 'Update Account', button_html: {class: 'btn btn-primary'} = f.action :submit, as: :button, label: 'Update Account', button_html: {class: 'btn btn-primary'}

View file

@ -1,33 +1,34 @@
.row .container
.col-md-6.col-md-offset-3 .row
.panel.panel-default .col-md-6.col-md-offset-3
.panel-heading .panel.panel-default
%h3.panel-title .panel-heading
Sign Up %h3.panel-title
.panel-body Sign Up
= semantic_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| .panel-body
= f.input :username, required: true = semantic_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= f.input :email = f.input :username, required: true
= f.input :name, required: true = f.input :email
= f.input :password = f.input :name, required: true
= f.input :password_confirmation = f.input :password
%p.text-right = f.input :password_confirmation
= f.action :submit, as: :button, label: 'Sign Up', button_html: {class: 'btn btn-success' } %p.text-right
- unless omniauth_configured.empty? = f.action :submit, as: :button, label: 'Sign Up', button_html: {class: 'btn btn-success' }
.row - unless omniauth_configured.empty?
.col-md-4 .row
%hr .col-md-4
.col-md-4 %hr
%h4.text-center .col-md-4
or sign up using %h4.text-center
.col-md-4 or sign up using
%hr .col-md-4
.row %hr
.col-md-12 .row
#openidlinks .col-md-12
= render 'devise/shared/openid' #openidlinks
%p.text-right = render 'devise/shared/openid'
%a.small{"data-toggle" => "collapse", "data-target" => "#devise-help"} %p.text-right
Need Help? %a.small{"data-toggle" => "collapse", "data-target" => "#devise-help"}
#devise-help.collapse Need Help?
= render 'devise/shared/links' #devise-help.collapse
= render 'devise/shared/links'

View file

@ -100,7 +100,7 @@
%ul %ul
- if can? :update, @conference.sponsorship_levels.build - if can? :update, @conference.sponsorship_levels.build
%li{:class=> "#{active_nav_li(admin_conference_sponsorship_levels_path(@conference.short_title))}" } %li{:class=> "#{active_nav_li(admin_conference_sponsorship_levels_path(@conference.short_title))}" }
= link_to 'Sponsorship', admin_conference_sponsorship_levels_path(@conference.short_title) = link_to 'Sponsorship Levels', admin_conference_sponsorship_levels_path(@conference.short_title)
- if can? :update, @conference.sponsors.build - if can? :update, @conference.sponsors.build
%li{:class=> active_nav_li(admin_conference_sponsors_path(@conference.short_title))} %li{:class=> active_nav_li(admin_conference_sponsors_path(@conference.short_title))}
= link_to 'Sponsors', admin_conference_sponsors_path(@conference.short_title) = link_to 'Sponsors', admin_conference_sponsors_path(@conference.short_title)

View file

@ -8,8 +8,11 @@
%p %p
OSEM requires JavaScript to be enabled to function. Please turn on JavaScript in your browser's settings and reload the page to continue. OSEM requires JavaScript to be enabled to function. Please turn on JavaScript in your browser's settings and reload the page to continue.
- flash.each do |type, message| - flash.each do |type, message|
%div{:class=>"alert alert-dismissable #{bootstrap_class_for(type)}", :id=>"flash"} .container
.button.close{"data-dismiss" => "alert", "aria-hidden"=>"true"} .row
&times; .col-md-12
%p %div{:class=>"alert alert-dismissable #{bootstrap_class_for(type)}", :id=>"flash"}
= message .button.close{"data-dismiss" => "alert", "aria-hidden"=>"true"}
&times;
%p
= message

View file

@ -6,7 +6,6 @@
%meta{:content => "", :name => "description"} %meta{:content => "", :name => "description"}
%meta{:content => "", :name => "author"} %meta{:content => "", :name => "author"}
= stylesheet_link_tag "application", :media => "all" = stylesheet_link_tag "application", :media => "all"
= stylesheet_link_tag "splash" if content_for :splash
= javascript_include_tag "application" = javascript_include_tag "application"
= csrf_meta_tags = csrf_meta_tags
:javascript :javascript
@ -25,23 +24,16 @@
= javascript_include_tag "//cdn.transifex.com/live.js" = javascript_include_tag "//cdn.transifex.com/live.js"
= yield(:head) = yield(:head)
%body{ data: (content_for?(:splash_nav) ? {spy: 'scroll', offset: 0, target: 'splash-nav'} : {} ) } %body
= render 'layouts/navigation' = render 'layouts/navigation'
-# 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
.container#messages #messages
.row = render 'layouts/messages'
.col-md-12 #content
= render 'layouts/messages' = yield
- if content_for :splash
#content
= yield :splash
-else
.container#content
= yield
#footer #footer
.container .container
%p.muted.text-center %p.muted.text-center

View file

@ -1,34 +1,35 @@
.row .container
.col-md-12 .row
.tabbable .col-md-12
%ul.nav.nav-tabs .tabbable
%li.active %ul.nav.nav-tabs
= link_to "Proposal", "#proposal-content", "data-toggle"=>"tab" %li.active
%li = link_to "Proposal", "#proposal-content", "data-toggle"=>"tab"
= link_to 'Commercials', '#commercials-content', 'data-toggle'=>'tab' %li
.tab-content = link_to 'Commercials', '#commercials-content', 'data-toggle'=>'tab'
#proposal-content.tab-pane.active .tab-content
= render 'proposal/proposal_form' #proposal-content.tab-pane.active
#commercials-content.tab-pane = render 'proposal/proposal_form'
%p.text-muted #commercials-content.tab-pane
You can add commercials for your event. These commercials will be displayed on the event detail site. %p.text-muted
If you don't add a commercial, the conference commercial will be displayed! You can add commercials for your event. These commercials will be displayed on the event detail site.
We currently support the following commercial types: YouTube, Vimeo, Instagram, Flickr, Speakerdeck and SlideShare. If you don't add a commercial, the conference commercial will be displayed!
We currently support the following commercial types: YouTube, Vimeo, Instagram, Flickr, Speakerdeck and SlideShare.
- @event.commercials.each_slice(3) do |slice|
.row - @event.commercials.each_slice(3) do |slice|
- slice.each do |commercial| .row
.col-md-4 - slice.each do |commercial|
.thumbnail .col-md-4
%h3.text-center .thumbnail
= commercial.commercial_type %h3.text-center
.flexvideo = commercial.commercial_type
= render partial: 'shared/media_item', locals: { commercial_type: commercial.commercial_type, commercial_id: commercial.commercial_id } .flexvideo
- if can? :update, commercial = render partial: 'shared/media_item', locals: { commercial_type: commercial.commercial_type, commercial_id: commercial.commercial_id }
= link_to 'Edit', edit_conference_proposal_commercial_path(@conference.short_title, @event.id, commercial.id), class: 'btn btn-primary' - if can? :update, commercial
- if can? :destroy, commercial = link_to 'Edit', edit_conference_proposal_commercial_path(@conference.short_title, @event.id, commercial.id), class: 'btn btn-primary'
= link_to 'Delete', conference_proposal_commercial_path(@conference.short_title, @event.id, commercial.id), - if can? :destroy, commercial
:method => :delete, :data => { :confirm => 'Are you sure?' }, class: 'btn btn-danger' = link_to 'Delete', conference_proposal_commercial_path(@conference.short_title, @event.id, commercial.id),
- if can? :create, @event.commercials.new :method => :delete, :data => { :confirm => 'Are you sure?' }, class: 'btn btn-danger'
%hr - if can? :create, @event.commercials.new
= link_to 'Add Commercial', new_conference_proposal_commercial_path(@conference.short_title, @event.id), class: 'btn btn-primary' %hr
= link_to 'Add Commercial', new_conference_proposal_commercial_path(@conference.short_title, @event.id), class: 'btn btn-primary'

View file

@ -1,46 +1,47 @@
.row .container
.col-md-12.page-header
%h1
= "My Proposals for #{@conference.title}"
- if @conference.cfp_open? || (current_user.has_role? :organizer, @conference)
= link_to "New Proposal", new_conference_proposal_path(@conference.short_title), :class => "btn btn-success pull-right"
- if current_user.proposal_count(@conference) > 0
.row .row
.col-md-12 .col-md-12.page-header
%table.table.table-bordered.table-striped %h1
%thead = "My Proposals for #{@conference.title}"
%th - if @conference.cfp_open? || (current_user.has_role? :organizer, @conference)
%b Title = link_to "New Proposal", new_conference_proposal_path(@conference.short_title), :class => "btn btn-success pull-right"
%th - if current_user.proposal_count(@conference) > 0
%b Status .row
%th .col-md-12
- @events.each do |event| %table.table.table-bordered.table-striped
%tr %thead
%td %th
= link_to event.title, conference_proposal_path(@conference.short_title, event.id) %b Title
%td %th
- if event.state == 'new' %b Status
Review pending %th
- else - @events.each do |event|
= event.state.humanize %tr
- if event.state == 'confirmed' && event.require_registration == true %td
(Pre-registered: #{pre_registered(event).count}) = link_to event.title, conference_proposal_path(@conference.short_title, event.id)
- if event.confirmed? && !@conference.user_registered?(current_user) %td
%br - if event.state == 'new'
= link_to "Register to attend", new_conference_conference_registrations_path(@conference.short_title), :style => "font-size:10px;" Review pending
%td - else
.pull-right = event.state.humanize
- if event.transition_possible? :confirm - if event.state == 'confirmed' && event.require_registration == true
= link_to 'Confirm', (Pre-registered: #{pre_registered(event).count})
confirm_conference_proposal_path(@conference.short_title, event), - if event.confirmed? && !@conference.user_registered?(current_user)
method: :patch, class: 'btn btn-mini btn-success', id: "confirm_proposal_#{event.id}" %br
= link_to 'Edit', edit_conference_proposal_path(@conference.short_title, event.id), = link_to "Register to attend", new_conference_conference_registrations_path(@conference.short_title), :style => "font-size:10px;"
class: 'btn btn-mini btn-primary', id: "edit_proposal_#{event.id}" %td
- if event.transition_possible? :withdraw .pull-right
= link_to 'Withdraw', conference_proposal_path(@conference.short_title, event.id), method: :delete, - if event.transition_possible? :confirm
confirm: 'Are you sure you want to withdraw this proposal?', class: 'btn btn-mini btn-warning', = link_to 'Confirm',
id: "delete_proposal_#{event.id}" confirm_conference_proposal_path(@conference.short_title, event),
- if event.state == 'withdrawn' || event.state == 'rejected' method: :patch, class: 'btn btn-mini btn-success', id: "confirm_proposal_#{event.id}"
= link_to 'Re-Submit', = link_to 'Edit', edit_conference_proposal_path(@conference.short_title, event.id),
restart_conference_proposal_path(@conference.short_title, event.id), class: 'btn btn-mini btn-primary', id: "edit_proposal_#{event.id}"
method: :patch, class: 'btn btn-mini btn-success', id: "review_event_#{event.id}" - if event.transition_possible? :withdraw
= link_to 'Withdraw', conference_proposal_path(@conference.short_title, event.id), method: :delete,
confirm: 'Are you sure you want to withdraw this proposal?', class: 'btn btn-mini btn-warning',
id: "delete_proposal_#{event.id}"
- if event.state == 'withdrawn' || event.state == 'rejected'
= link_to 'Re-Submit',
restart_conference_proposal_path(@conference.short_title, event.id),
method: :patch, class: 'btn btn-mini btn-success', id: "review_event_#{event.id}"

View file

@ -1,6 +1,7 @@
.row .container
.col-md-12 .row
= simple_format(@conference.call_for_papers.description) .col-md-12
.row = simple_format(@conference.call_for_papers.description)
.col-md-12 .row
= render 'proposal_form' .col-md-12
= render 'proposal_form'

View file

@ -1,71 +1,72 @@
.row .container
.col-md-12.page-header .row
%h2 .col-md-12.page-header
= @event.title %h2
- if @event.subtitle = @event.title
%br - if @event.subtitle
%small %br
= @event.subtitle %small
= link_to "Schedule", conference_schedule_path(@conference.short_title), :class =>"btn btn-success pull-right" = @event.subtitle
- if can? :edit, @event = link_to "Schedule", conference_schedule_path(@conference.short_title), :class =>"btn btn-success pull-right"
= link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary pull-right" - if can? :edit, @event
.row = link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary pull-right"
.col-md-3 .row
%p .col-md-3
= simple_format(@event.abstract) %p
%dl = simple_format(@event.abstract)
%dt Date: %dl
%dd= @event.start_time.strftime("%Y %B %e %H:%M") if @event.start_time %dt Date:
%dt Duration: %dd= @event.start_time.strftime("%Y %B %e %H:%M") if @event.start_time
%dd= show_time(@event.event_type.length) %dt Duration:
%dt Room: %dd= show_time(@event.event_type.length)
%dd %dt Room:
- if @event.room_id %dd
= @event.room.name - if @event.room_id
%dt Conference: = @event.room.name
%dd= @event.conference.title %dt Conference:
%dt Language: %dd= @event.conference.title
%dd= @event.language if @event.language %dt Language:
%dt Track: %dd= @event.language if @event.language
%dd %dt Track:
- if @event.track_id %dd
%span.label{:style =>"background-color: #{@event.track.color};"} - if @event.track_id
= @event.track.name %span.label{:style =>"background-color: #{@event.track.color};"}
%dt Difficulty: = @event.track.name
%dd %dt Difficulty:
- if @event.difficulty_level_id %dd
%span.label{:style =>"background-color: #{@event.difficulty_level.color};"} - if @event.difficulty_level_id
= @event.difficulty_level.title %span.label{:style =>"background-color: #{@event.difficulty_level.color};"}
- if @event.require_registration = @event.difficulty_level.title
= link_to "Registration required!", new_conference_conference_registrations_path(@conference.short_title), :class => "btn btn-xs btn-warning" - if @event.require_registration
.col-md-9 = link_to "Registration required!", new_conference_conference_registrations_path(@conference.short_title), :class => "btn btn-xs btn-warning"
.row .col-md-9
.col-md-12 .row
- if @event.commercials.empty? .col-md-12
%h5.text-warning - if @event.commercials.empty?
No video of the event yet, sorry! %h5.text-warning
No video of the event yet, sorry!
- unless @conference.commercials.empty?
Meanwhile...
- unless @conference.commercials.empty? - unless @conference.commercials.empty?
Meanwhile... = render partial: 'shared/media_items', locals: { commercials: @conference.commercials }
- unless @conference.commercials.empty? - else
= render partial: 'shared/media_items', locals: { commercials: @conference.commercials } %p
- else = render partial: 'shared/media_items', locals: { commercials: @event.commercials }
%p .row
= render partial: 'shared/media_items', locals: { commercials: @event.commercials } .speakerinfo
.row .col-md-8
.speakerinfo %h3
.col-md-8 by
%h3 = @speaker.name
by (
= @speaker.name = @speaker.email
( )
= @speaker.email - if @speaker.affiliation?
) %br
- if @speaker.affiliation? %span.muted
%br from
%span.muted = @speaker.affiliation
from -if @speaker.biography?
= @speaker.affiliation = simple_format(@speaker.biography)
-if @speaker.biography? .col-md-4
= simple_format(@speaker.biography) = image_tag @speaker.gravatar_url(:size => 200), :class => "img-responsive img-rounded"
.col-md-4
= image_tag @speaker.gravatar_url(:size => 200), :class => "img-responsive img-rounded"

View file

@ -1,98 +1,99 @@
<div id="schedule-content"> <div class="container">
<h2> Schedule for <%= @conference.title %></h2> <div id="schedule-content">
<ul class="nav nav-tabs"> <h2> Schedule for <%= @conference.title %></h2>
<% @dates.each do |date| %> <ul class="nav nav-tabs">
<li <%= "class=active" if @dates.first == date %>> <% @dates.each do |date| %>
<%= link_to date, "#" + "#{date}", "data-toggle" => "tab" %> <li <%= "class=active" if @dates.first == date %>>
</li> <%= link_to date, "#" + "#{date}", "data-toggle" => "tab" %>
<% end %> </li>
</ul>
<div class="tab-content">
<% @dates.each do |date| %>
<div class="tab-pane <%= 'active' if @dates.first == date %>" id ="<%= date %>" >
<table class="table table-bordered" id="schedule" width="100%">
<tr>
<th>Time</th>
<% @rooms.each do |room| %>
<th><%= room.name %></th>
<% end %>
</tr>
<% span = {} %>
<% @rooms.each do |room| %>
<% span[room.id] = 1 %>
<% end %>
<% conf_start = DateTime.parse("#{date} 09:00") %>
<% conf_end = DateTime.parse("#{date} 19:00") %>
<% while conf_start < conf_end %>
<%-
start_hour = conf_start.hour
start_min = conf_start.min %>
<tr>
<td style="width:5%">
<%= conf_start.strftime("%H:%M") %>
</td>
<% @rooms.each do |room| %>
<% events_for_date = @events.find_all {|e| e.room_id == room.id && e.start_time && e.start_time.to_date == date } %>
<% event = events_for_date.find_all{|e| e.start_time.hour == start_hour && e.start_time.min == start_min } %>
<% if !event.empty? %>
<!-- There is an event, calculate the span and show it -->
<% span[room.id] = event[0].event_type.length / 15 %>
<td style="width: <%= 95 / @rooms.length %>%; cursor:pointer"
rowspan ="<%= span[room.id] %>"
class="event" role="button"
data-href="<%= url_for(conference_proposal_path(@conference.short_title, event[0].id)) %>">
<%- if speaker = event[0].speakers.first %>
<%= image_tag speaker.gravatar_url, :class => "img-circle pull-right",
:alt => speaker.name,
:title => speaker.name,
:style => "padding:8px;" %>
<%- end %>
<h5>
<span class="fa fa-comment"></span>
<%= event[0].title %>
<% unless event[0].subtitle.blank? %>
<span class="schedule-subtitle">
<%= event[0].subtitle %>
<span>
<% end %>
</h5>
</span>
<span class="schedule-speaker">
<span class="fa fa-user"></span>
<%= "#{speaker.name}" %>
</span>
<% if event[0].track%>
<span class="schedule-track">
<span class="fa fa-road"></span>
<span class="label" style="background-color:<%= event[0].track.color if event[0].track %>"><%= event[0].track.name %></span>
</span>
<% end -%>
</td>
<% span[room.id] = span[room.id] + 1 %>
<% elsif span[room.id] > 1 %>
<!-- span is <%= span[room.id] %> and bigger than 1, substract 1 from span -->
<% span[room.id] = ( span[room.id] - 1 ) if span[room.id] > 1 %>
<% end %>
<% if span[room.id] == 1 %>
<!-- span equals 1 show an empty td -->
<td style="width: <%= 95 / @rooms.length %>%">
</td>
<% end %>
<%end %>
</tr>
<% conf_start += 15.minutes %>
<%end %>
</table>
</div>
<% end %> <% end %>
</div> </ul>
<div class="tab-content">
<% @dates.each do |date| %>
<div class="tab-pane <%= 'active' if @dates.first == date %>" id ="<%= date %>" >
<table class="table table-bordered" id="schedule" width="100%">
<tr>
<th>Time</th>
<% @rooms.each do |room| %>
<th><%= room.name %></th>
<% end %>
</tr>
<% span = {} %>
<% @rooms.each do |room| %>
<% span[room.id] = 1 %>
<% end %>
<% conf_start = DateTime.parse("#{date} 09:00") %>
<% conf_end = DateTime.parse("#{date} 19:00") %>
<% while conf_start < conf_end %>
<%-
start_hour = conf_start.hour
start_min = conf_start.min %>
<tr>
<td style="width:5%">
<%= conf_start.strftime("%H:%M") %>
</td>
<% @rooms.each do |room| %>
<% events_for_date = @events.find_all {|e| e.room_id == room.id && e.start_time && e.start_time.to_date == date } %>
<% event = events_for_date.find_all{|e| e.start_time.hour == start_hour && e.start_time.min == start_min } %>
<% if !event.empty? %>
<!-- There is an event, calculate the span and show it -->
<% span[room.id] = event[0].event_type.length / 15 %>
<td style="width: <%= 95 / @rooms.length %>%; cursor:pointer"
rowspan ="<%= span[room.id] %>"
class="event" role="button"
data-href="<%= url_for(conference_proposal_path(@conference.short_title, event[0].id)) %>">
<%- if speaker = event[0].speakers.first %>
<%= image_tag speaker.gravatar_url, :class => "img-circle pull-right",
:alt => speaker.name,
:title => speaker.name,
:style => "padding:8px;" %>
<%- end %>
<h5>
<span class="fa fa-comment"></span>
<%= event[0].title %>
<% unless event[0].subtitle.blank? %>
<span class="schedule-subtitle">
<%= event[0].subtitle %>
<span>
<% end %>
</h5>
</span>
<span class="schedule-speaker">
<span class="fa fa-user"></span>
<%= "#{speaker.name}" %>
</span>
<% if event[0].track%>
<span class="schedule-track">
<span class="fa fa-road"></span>
<span class="label" style="background-color:<%= event[0].track.color if event[0].track %>"><%= event[0].track.name %></span>
</span>
<% end -%>
</td>
<% span[room.id] = span[room.id] + 1 %>
<% elsif span[room.id] > 1 %>
<!-- span is <%= span[room.id] %> and bigger than 1, substract 1 from span -->
<% span[room.id] = ( span[room.id] - 1 ) if span[room.id] > 1 %>
<% end %>
<% if span[room.id] == 1 %>
<!-- span equals 1 show an empty td -->
<td style="width: <%= 95 / @rooms.length %>%">
</td>
<% end %>
<%end %>
</tr>
<% conf_start += 15.minutes %>
<%end %>
</table>
</div>
<% end %>
</div>
</div>
<%= javascript_tag do %> <%= javascript_tag do %>
jQuery( function($) { jQuery( function($) {
$('tbody tr td[data-href]').addClass('clickable').mouseup(function(e) { $('tbody tr td[data-href]').addClass('clickable').mouseup(function(e) {

View file

@ -1,37 +1,38 @@
.row .container
.col-sm-12.col-md-10.col-md-offset-1 .row
%h1 .col-md-12
Tickets .page-header
%p.lead %h1
Please buy a ticket if you want to support Tickets
%b %p.lead
= @conference.title Please buy a ticket to support
! %b
=form_tag(conference_ticket_purchases_path, method: :post) do |f| = @conference.title
%table.table.table-hover =form_tag(conference_ticket_purchases_path, method: :post) do |f|
%thead %table.table.table-hover
%tr %thead
%th Ticket %tr
%th Quantity %th Ticket
%th Price %th Quantity
%th Total %th Price
%tbody %th Total
- @conference.tickets.each do |ticket| %tbody
= render partial: 'ticket', f: f, locals: {ticket: ticket} - @conference.tickets.each do |ticket|
%tr = render partial: 'ticket', f: f, locals: {ticket: ticket}
%td %tr
%td %td
%td.col-sm-1.col-md-1.text-center %td
%h4 %td.col-sm-1.col-md-1.text-center
Total %h4
%td.col-sm-1.col-md-1.text-center Total
%h4 %td.col-sm-1.col-md-1.text-center
%strong %h4
%span{id: 'total_price'} %strong
0 %span{id: 'total_price'}
.pull-right 0
= button_tag(type: 'submit', class: 'btn btn-success btn-lg') do .pull-right
Support = button_tag(type: 'submit', class: 'btn btn-success btn-lg') do
%i.fa.fa-shopping-cart Support
= link_to 'Continue without a Ticket!', conference_conference_registrations_path(@conference.short_title), %i.fa.fa-shopping-cart
class: 'btn btn-danger btn-sm' = link_to 'Continue without a Ticket!', conference_conference_registrations_path(@conference.short_title),
class: 'btn btn-danger btn-sm'

View file

@ -1,8 +1,11 @@
%h1 Edit your profile .container
.row .row
.col-md-12 .col-md-12
= semantic_form_for(@user, url: user_path(@user.id)) do |f| .page-header
= f.inputs name: 'Profile' do %h1 Edit your profile
.row
.col-md-12
= semantic_form_for(@user, url: user_path(@user.id)) do |f|
= f.input :name, as: :string = f.input :name, as: :string
= f.input :nickname, as: :string = f.input :nickname, as: :string
= f.input :affiliation, as: :string, = f.input :affiliation, as: :string,
@ -14,4 +17,4 @@
words. Biographies are limited to 150 words. words. Biographies are limited to 150 words.
%br %br
%br %br
= f.action :submit, as: :button, label: 'Update', button_html: {class: 'btn btn-primary'} = f.action :submit, as: :button, label: 'Update', button_html: {class: 'btn btn-primary'}

View file

@ -1,16 +1,24 @@
%h1 .container
= @user.name .row
%h4 .col-md-12
= @user.biography .page-header
%h1
- if @user.events.confirmed.any? = image_tag(current_user.gravatar_url(size: '48'), title: "Yo #{current_user.name}!", :alt => '')
%h3 = @user.name
= "#{@user.name} presents #{pluralize(@user.events.confirmed.count, 'Event')}:" %small
%ul.list-unstyled = @user.nickname
- @user.events.confirmed.each do |event| %p
%li = @user.biography
%h4 .row
= link_to event.title, conference_proposal_path(event.conference.short_title, event.id) .col-md-12
%strong - if @user.events.confirmed.any?
at %h3
= event.conference.title = "#{@user.name} presents #{pluralize(@user.events.confirmed.count, 'Event')}:"
%ul.list-unstyled
- @user.events.confirmed.each do |event|
%li
%h4
= link_to event.title, conference_proposal_path(event.conference.short_title, event.id)
%strong
at
= event.conference.title

View file

@ -48,7 +48,12 @@ Osem::Application.routes.draw do
resources :tracks, only: [:show, :update, :index] resources :tracks, only: [:show, :update, :index]
resources :sponsorship_levels, only: [:show, :update, :index] resources :sponsorship_levels, except: [:show] do
member do
patch :up
patch :down
end
end
resources :sponsors, only: [:show, :update, :index] resources :sponsors, only: [:show, :update, :index]

View file

@ -0,0 +1,5 @@
class AddPositionToSponsorshipLevel < ActiveRecord::Migration
def change
add_column :sponsorship_levels, :position, :integer
end
end

View file

@ -11,7 +11,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: 20141109172204) do ActiveRecord::Schema.define(version: 20141113134103) do
create_table "ahoy_events", force: true do |t| create_table "ahoy_events", force: true do |t|
t.uuid "visit_id" t.uuid "visit_id"
@ -423,6 +423,7 @@ ActiveRecord::Schema.define(version: 20141109172204) do
t.integer "conference_id" t.integer "conference_id"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
t.integer "position"
end end
create_table "subscriptions", force: true do |t| create_table "subscriptions", force: true do |t|

View file

@ -11,22 +11,22 @@ feature Room do
visit admin_conference_rooms_path( visit admin_conference_rooms_path(
conference_id: conference.short_title) conference_id: conference.short_title)
expect(page.has_content?('Room Name')).to be false expect(page.has_no_table?('#rooms')).to be true
expect(page.has_content?('100')).to be false
# Add room # Add room
click_link 'New Room' click_link 'New Room'
fill_in 'room_name', with: 'Room Name' fill_in 'room_name', with: 'Auditorium'
fill_in 'room_size', with: '100' fill_in 'room_size', with: '100'
click_button 'Create Room' click_button 'Create Room'
# Validations # Validations
expect(flash).to eq('Room successfully created.') expect(flash).to eq('Room successfully created.')
within('table#rooms') do
expect(page.has_content?('Room Name')).to be true expect(page.has_content?('Auditorium')).to be true
expect(page.has_content?('100')).to be true expect(page.assert_selector('tr', count: 2)).to be true
end
end end
scenario 'updates a room', feature: true, js: true do scenario 'updates a room', feature: true, js: true do
@ -35,17 +35,19 @@ feature Room do
visit edit_admin_conference_room_path( visit edit_admin_conference_room_path(
conference_id: conference.short_title, id: room.id) conference_id: conference.short_title, id: room.id)
fill_in 'room_name', with: 'Room Name' fill_in 'room_name', with: 'Auditorium'
fill_in 'room_size', with: '100' fill_in 'room_size', with: '100'
click_button 'Update Room' click_button 'Update Room'
# Validations # Validations
expect(flash).to eq('Room successfully updated.') expect(flash).to eq('Room successfully updated.')
expect(page.has_content?('Room Name')).to be true within('table#rooms') do
expect(page.has_content?('100')).to be true expect(page.has_content?('Auditorium')).to be true
expect(page.assert_selector('tr', count: 2)).to be true
end
room.reload room.reload
expect(room.name).to eq('Room Name') expect(room.name).to eq('Auditorium')
expect(room.size).to eq(100) expect(room.size).to eq(100)
end end
end end

View file

@ -5,37 +5,51 @@ feature SponsorshipLevel do
let!(:organizer_role) { create(:organizer_role, resource: conference) } let!(:organizer_role) { create(:organizer_role, resource: conference) }
let!(:organizer) { create(:user, role_ids: [organizer_role.id]) } let!(:organizer) { create(:user, role_ids: [organizer_role.id]) }
shared_examples 'sponsorship levels' do shared_examples 'sponsorship_levels' do
scenario 'adds and updates sponsorship level', feature: true, js: true do scenario 'adds a sponsorship level', feature: true, js: true do
sign_in organizer sign_in organizer
visit admin_conference_sponsorship_levels_path( visit admin_conference_sponsorship_levels_path(
conference_id: conference.short_title) conference_id: conference.short_title)
# Add sponsorship level
click_link 'Add sponsorship_level'
expect(page.all('div.nested-fields').count == 1).to be true
page. expect(page.has_no_table?('#sponsorship_levels')).to be true
find('div.nested-fields:nth-of-type(1) div:nth-of-type(1) input').
set('Example sponsorship level')
click_button 'Update Conference' # Add SponsorshipLevel
click_link 'New Sponsorship Level'
fill_in 'sponsorship_level_title', with: 'Platin'
click_button 'Create Sponsorship level'
# Validations # Validations
expect(flash).to eq('Sponsorship levels were successfully updated.') expect(flash).to eq('Sponsorship level successfully created.')
expect(find('div.nested-fields:nth-of-type(1) div:nth-of-type(1) input'). within('table#sponsorship_levels') do
value).to eq('Example sponsorship level') expect(page.has_content?('Platin')).to be true
expect(page.assert_selector('tr', count: 2)).to be true
end
end
# Remove sponsorship level scenario 'updates a sponsorship level', feature: true, js: true do
click_link 'Remove sponsorship_level' level = create(:sponsorship_level, conference_id: conference.id)
expect(page.all('div.nested-fields').count == 0).to be true sign_in organizer
click_button 'Update Conference' visit edit_admin_conference_sponsorship_level_path(
expect(flash).to eq('Sponsorship levels were successfully updated.') conference_id: conference.short_title, id: level.id)
expect(page.all('div.nested-fields').count == 0).to be true
fill_in 'sponsorship_level_title', with: 'Gold'
click_button 'Update Sponsorship level'
# Validations
expect(flash).to eq('Sponsorship level successfully updated.')
within('table#sponsorship_levels') do
expect(page.has_content?('Gold')).to be true
expect(page.assert_selector('tr', count: 2)).to be true
end
level.reload
expect(level.title).to eq('Gold')
end end
end end
describe 'organizer' do describe 'organizer' do
it_behaves_like 'sponsorship levels' it_behaves_like 'sponsorship_levels'
end end
end end

View file

@ -5,9 +5,9 @@ describe 'conference/show.html.haml' do
@conference = create(:conference) @conference = create(:conference)
@conference.splashpage = create(:splashpage, @conference.splashpage = create(:splashpage,
banner_description: 'Lorem Ipsum', banner_description: 'Banner Description',
sponsor_description: 'Lorem Ipsum Dolor', sponsor_description: 'Sponsor Description',
registration_description: 'Lorem Ipsum Dolor', registration_description: 'Registration Description',
include_registrations: true, include_registrations: true,
include_program: true, include_program: true,
include_sponsors: true, include_sponsors: true,
@ -19,13 +19,13 @@ describe 'conference/show.html.haml' do
include_lodgings: true) include_lodgings: true)
@conference.contact.update(sponsor_email: 'example@example.com', @conference.contact.update(sponsor_email: 'example@example.com',
facebook: 'http://www.fbexample.com', facebook: 'http://facebook.com',
googleplus: 'http://www.google-example.com', googleplus: 'http://google.com',
instagram: 'http://instagram.com', instagram: 'http://instagram.com',
twitter: 'http://twitter.com') twitter: 'http://twitter.com')
@conference.registration_period = create(:registration_period, @conference.registration_period = create(:registration_period,
start_date: Date.today, start_date: Date.yesterday,
end_date: Date.tomorrow) end_date: Date.tomorrow)
@conference.call_for_papers = create(:call_for_papers, conference: @conference, @conference.call_for_papers = create(:call_for_papers, conference: @conference,
@ -43,8 +43,8 @@ describe 'conference/show.html.haml' do
end end
it 'renders banner component' do it 'renders banner component' do
expect(view.content_for(:splash)).to include("#{@conference.splashpage.banner_description}") expect(rendered).to match(/#{@conference.splashpage.banner_description}/)
expect(view.content_for(:splash)).to include("#{@conference.short_title}") expect(rendered).to match(/#{@conference.short_title}/)
end end
it 'renders program partial' do it 'renders program partial' do
@ -52,45 +52,43 @@ describe 'conference/show.html.haml' do
end end
it 'renders registration partial' do it 'renders registration partial' do
expect(view.content_for(:splash)).to include("#{@conference.splashpage.registration_description}")
expect(view).to render_template(partial: 'conference/_registration') expect(view).to render_template(partial: 'conference/_registration')
end end
it 'renders call_for_papers partial' do it 'renders call_for_papers partial' do
expect(view.content_for(:splash)).to include("#{@conference.call_for_papers.description}") expect(rendered).to match(/#{@conference.call_for_papers.description}/)
end end
it 'renders sponsors partial' do it 'renders sponsors partial' do
expect(view).to render_template(partial: 'conference/_sponsor') expect(view).to render_template(partial: 'conference/_sponsors')
expect(view.content_for(:splash)).to include('Lorem Ipsum Dolor') expect(rendered).to match(/example@example.com/)
expect(view.content_for(:splash)).to include('example@example.com') expect(rendered).to match(/Platin/)
expect(view.content_for(:splash)).to include('Platin') expect(rendered).to match(/Example sponsor/)
expect(view.content_for(:splash)).to include('Example sponsor') expect(rendered).to match(/www.example.com/)
expect(view.content_for(:splash)).to include('http://www.example.com') expect(rendered).to match(/Lorem Ipsum Dolor/)
expect(view.content_for(:splash)).to include('Lorem Ipsum Dolor') expect(rendered).to match(/rails.jpg/)
expect(view.content_for(:splash)).to include('rails.jpg')
end end
it 'renders social media partial' do it 'renders social media partial' do
expect(view).to render_template('conference/_social_media') expect(view).to render_template('conference/_social_media')
expect(view.content_for(:splash)).to include('http://www.fbexample.com') expect(rendered).to match(/facebook.com/)
expect(view.content_for(:splash)).to include('http://www.google-example.com') expect(rendered).to match(/google.com/)
expect(view.content_for(:splash)).to include('http://instagram.com') expect(rendered).to match(/instagram.com/)
expect(view.content_for(:splash)).to include('http://twitter.com') expect(rendered).to match(/twitter.com/)
end end
it 'renders location partial' do it 'renders location partial' do
expect(view).to render_template(partial: 'conference/_location') expect(view).to render_template(partial: 'conference/_location')
expect(view.content_for(:splash)).to include('Suse Office') expect(rendered).to match(/Suse Office/)
expect(view.content_for(:splash)).to include('Maxfeldstrasse 5 \n90409 Nuremberg') expect(rendered).to match(/Maxfeldstrasse 5/)
expect(view.content_for(:splash)).to include('www.opensuse.org') expect(rendered).to match(/www.opensuse.org/)
expect(view.content_for(:splash)).to include('Lorem Ipsum Dolor') expect(rendered).to match(/Lorem Ipsum Dolor/)
end end
it 'renders lodging partial' do it 'renders lodging partial' do
expect(view).to render_template(partial: 'conference/_lodging') expect(view).to render_template(partial: 'conference/_lodging')
expect(view.content_for(:splash)).to include('Example Hotel') expect(rendered).to match(/Example Hotel/)
expect(view.content_for(:splash)).to include('Lorem Ipsum Dolor') expect(rendered).to match(/Lorem Ipsum Dolor/)
expect(view.content_for(:splash)).to include('http://www.example.com') expect(rendered).to match(/www.example.com/)
end end
end end