Update gems, use d3 gem, initial bootstrap v3 port

This commit is contained in:
Henne Vogelsang 2014-03-17 16:36:32 +01:00
parent 24e40a5c90
commit 587126218d
71 changed files with 798 additions and 10411 deletions

View file

@ -1,6 +1,6 @@
source 'https://rubygems.org'
gem 'rails', '3.2.15'
gem 'rails', '3.2.17'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
@ -8,9 +8,7 @@ gem 'rails', '3.2.15'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
# gem 'coffee-rails', '~> 3.2.1'
gem 'bootstrap-sass'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
@ -45,6 +43,8 @@ gem 'bcrypt-ruby', '~> 3.0.0'
#gem 'node'
gem 'paper_trail'
gem 'formtastic-bootstrap'
gem 'bootstrap-sass'
gem 'sass-rails', '>= 3.2'
gem 'cocoon'
gem 'transitions', :require => ["transitions", "active_record/transitions"]
gem 'acts_as_commentable_with_threading'
@ -53,3 +53,4 @@ gem 'prawn_rails'
gem 'gravtastic'
gem 'active_model_serializers'
gem 'axlsx_rails'
gem 'd3_rails'

View file

@ -1,13 +1,12 @@
GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.0.2)
actionmailer (3.2.15)
actionpack (= 3.2.15)
actionmailer (3.2.17)
actionpack (= 3.2.17)
mail (~> 2.5.4)
actionpack (3.2.15)
activemodel (= 3.2.15)
activesupport (= 3.2.15)
actionpack (3.2.17)
activemodel (= 3.2.17)
activesupport (= 3.2.17)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
@ -17,26 +16,25 @@ GEM
sprockets (~> 2.2.1)
active_model_serializers (0.8.1)
activemodel (>= 3.0)
activemodel (3.2.15)
activesupport (= 3.2.15)
activemodel (3.2.17)
activesupport (= 3.2.17)
builder (~> 3.0.0)
activerecord (3.2.15)
activemodel (= 3.2.15)
activesupport (= 3.2.15)
activerecord (3.2.17)
activemodel (= 3.2.17)
activesupport (= 3.2.17)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.15)
activemodel (= 3.2.15)
activesupport (= 3.2.15)
activesupport (3.2.15)
activeresource (3.2.17)
activemodel (= 3.2.17)
activesupport (= 3.2.17)
activesupport (3.2.17)
i18n (~> 0.6, >= 0.6.4)
multi_json (~> 1.0)
acts_as_commentable_with_threading (1.1.3)
acts_as_commentable_with_threading (1.2.0)
activerecord (>= 3.0)
activesupport (~> 3.0)
activesupport (>= 3.0)
awesome_nested_set (>= 2.0)
afm (0.2.0)
arel (3.0.2)
arel (3.0.3)
awesome_nested_set (2.1.6)
activerecord (>= 3.0.0)
axlsx (2.0.1)
@ -47,7 +45,7 @@ GEM
axlsx
rails (>= 3.1)
bcrypt-ruby (3.0.1)
bootstrap-sass (2.3.2.2)
bootstrap-sass (3.1.1.0)
sass (~> 3.2)
builder (3.0.4)
cancan (1.6.10)
@ -58,16 +56,18 @@ GEM
rack-test (>= 0.5.4)
selenium-webdriver (~> 2.0)
xpath (~> 0.1.4)
childprocess (0.3.9)
childprocess (0.5.1)
ffi (~> 1.0, >= 1.0.11)
climate_control (0.0.3)
activesupport (>= 3.0)
cocaine (0.5.2)
cocaine (0.5.3)
climate_control (>= 0.0.3, < 1.0)
cocoon (1.2.1)
coderay (1.0.9)
cocoon (1.2.5)
coderay (1.1.0)
d3_rails (3.4.3)
railties (>= 3.1.0)
daemons (1.1.9)
devise (2.2.7)
devise (2.2.8)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
@ -76,26 +76,25 @@ GEM
erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.0.2)
ffi (1.9.0)
ffi (1.9.3)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (2.1.3)
formtastic (~> 2.2)
formtastic-bootstrap (3.0.0)
formtastic (>= 2.2)
gravtastic (3.2.6)
haml (4.0.3)
haml (4.0.5)
tilt
hashery (2.1.1)
hike (1.2.3)
htmlentities (4.3.1)
i18n (0.6.5)
i18n (0.6.9)
journey (1.0.4)
jquery-fileupload-rails (0.4.1)
actionpack (>= 3.1)
railties (>= 3.1)
jquery-rails (3.0.4)
jquery-rails (3.1.0)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.0.5)
jquery-ui-rails (4.1.2)
railties (>= 3.1.0)
json (1.8.1)
libv8 (3.16.14.3)
@ -103,36 +102,31 @@ GEM
mime-types (~> 1.16)
treetop (~> 1.4.8)
method_source (0.8.2)
mime-types (1.25)
mini_portile (0.5.1)
multi_json (1.8.2)
mysql2 (0.3.13)
nokogiri (1.6.0)
mime-types (1.25.1)
mini_portile (0.5.2)
multi_json (1.9.0)
mysql2 (0.3.15)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
orm_adapter (0.4.0)
paper_trail (2.7.2)
activerecord (~> 3.0)
railties (~> 3.0)
paperclip (3.5.1)
orm_adapter (0.5.0)
paper_trail (3.0.0)
activerecord (>= 3.0, < 5.0)
activesupport (>= 3.0, < 5.0)
paperclip (3.5.4)
activemodel (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
cocaine (~> 0.5.3)
mime-types
pdf-reader (1.3.3)
Ascii85 (~> 1.0.0)
afm (~> 0.2.0)
hashery (~> 2.0)
ruby-rc4
ttfunk
polyglot (0.3.3)
prawn (0.12.0)
pdf-reader (>= 0.9.0)
ttfunk (~> 1.0.2)
pdf-core (0.1.6)
polyglot (0.3.4)
prawn (0.15.0)
pdf-core (~> 0.1.3)
ttfunk (~> 1.1.0)
prawn_rails (0.0.11)
prawn (>= 0.11.1)
railties (>= 3.0.0)
pry (0.9.12.2)
coderay (~> 1.0.5)
pry (0.9.12.6)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
rack (1.4.5)
@ -142,22 +136,22 @@ GEM
rack
rack-test (0.6.2)
rack (>= 1.0)
rails (3.2.15)
actionmailer (= 3.2.15)
actionpack (= 3.2.15)
activerecord (= 3.2.15)
activeresource (= 3.2.15)
activesupport (= 3.2.15)
rails (3.2.17)
actionmailer (= 3.2.17)
actionpack (= 3.2.17)
activerecord (= 3.2.17)
activeresource (= 3.2.17)
activesupport (= 3.2.17)
bundler (~> 1.0)
railties (= 3.2.15)
railties (3.2.15)
actionpack (= 3.2.15)
activesupport (= 3.2.15)
railties (= 3.2.17)
railties (3.2.17)
actionpack (= 3.2.17)
activesupport (= 3.2.17)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
rake (10.1.0)
rake (10.1.1)
rdoc (3.12.2)
json (~> 1.4)
ref (1.0.5)
@ -174,43 +168,42 @@ GEM
activesupport (>= 3.0)
railties (>= 3.0)
rspec (~> 2.11.0)
ruby-rc4 (0.1.5)
rubyzip (1.0.0)
sass (3.2.12)
sass (3.2.14)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
selenium-webdriver (2.37.0)
childprocess (>= 0.2.5)
selenium-webdriver (2.40.0)
childprocess (>= 0.5.0)
multi_json (~> 1.0)
rubyzip (~> 1.0.0)
rubyzip (~> 1.0)
websocket (~> 1.0.4)
slop (3.4.6)
slop (3.4.7)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.8)
therubyracer (0.12.0)
sqlite3 (1.3.9)
therubyracer (0.12.1)
libv8 (~> 3.16.14.0)
ref
thin (1.5.1)
thin (1.6.2)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
eventmachine (>= 1.0.0)
rack (>= 1.0.0)
thor (0.18.1)
tilt (1.4.1)
transitions (0.1.11)
transitions (0.1.12)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
ttfunk (1.0.3)
ttfunk (1.1.1)
tzinfo (0.3.38)
uglifier (2.2.1)
uglifier (2.4.0)
execjs (>= 0.3.0)
multi_json (~> 1.0, >= 1.0.2)
json (>= 1.8.0)
warden (1.2.3)
rack (>= 1.0)
websocket (1.0.7)
@ -230,6 +223,7 @@ DEPENDENCIES
cancan
capybara (= 1.1.2)
cocoon
d3_rails
devise (~> 2.2)
formtastic-bootstrap
gravtastic
@ -243,9 +237,9 @@ DEPENDENCIES
prawn
prawn_rails
pry
rails (= 3.2.15)
rails (= 3.2.17)
rspec-rails (= 2.11.0)
sass-rails (~> 3.2.3)
sass-rails (>= 3.2)
sqlite3
therubyracer
thin

View file

@ -19,8 +19,8 @@
//= require cocoon
//= require bootstrap
//= require osem
//= require d3.v3
//= require d3.v3.min
//= require d3
$(document).ready(function() {
$('a[disabled=disabled]').click(function(event){
return false;

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,12 @@
/*
*= require strap-on.css.scss
*= require formtastic-bootstrap
*= require osem
*= require jquery-ui-1.9.2.custom
*= require jquery.fileupload-ui
*= require jquery-ui-timepicker-addon
*= require jquery.dataTables_themeroller
*= require osem
*= require osem-rating
*= require osem-schedule
*= require osem-schedule-print
*/

View file

@ -0,0 +1,18 @@
/* Styling for voting on proposals*/
.myrating.bright { background-image: image-url("star-bright.png"); }
.myrating.glow { background-image: image-url("star-glow.png"); }
.othersrating.bright { background-image: image-url("star-bright.png"); }
.avgrating.bright { background-image: image-url("star-bright.png"); }
.avgrating {
background: image-url("star.png") 0 0;
width: 26px;
height: 26px;
display: inline-block;
}
.myrating, .othersrating {
background: image-url("star.png") 0 0;
width: 26px;
height: 26px;
float: left;
}

View file

@ -0,0 +1,57 @@
#schedule td.event {
background-image: linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -o-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -moz-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -ms-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.24, rgb(247,250,242)),
color-stop(0.97, rgb(194,232,190)),
color-stop(1, rgb(194,232,190))
);
}
#schedule td.event:hover
{
background-image: linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -o-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -moz-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -ms-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.24, rgb(247,250,242)),
color-stop(0.97, rgb(83,171,74)),
color-stop(1, rgb(83,171,74))
);
}
.flexvideo {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
padding-top: 25px;
height: 0;
}
.flexvideo iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.schedule-title, .schedule-subtitle, .schedule-speaker, .schedule-track {
clear: none;
display: block;
}
.schedule-subtitle {
color: rgb(185, 74, 72);
}

View file

@ -1,207 +1,29 @@
/* Sticky footer styles
-------------------------------------------------- */
html,
body {
height: 100%;
/* The html and body elements cannot have any padding or margin. */
}
/* Styling for voting on proposals*/
.myrating.bright { background-image: url(../assets/star-bright.png); }
.myrating.glow { background-image: url(../assets/star-glow.png); }
.othersrating.bright { background-image: url(../assets/star-bright.png); }
.avgrating.bright { background-image: url(../assets/star-bright.png); }
.avgrating {
background: url(../assets/star.png) 0 0;
width: 26px;
height: 26px;
display: inline-block;
}
.myrating, .othersrating {
background: url(../assets/star.png) 0 0;
width: 26px;
height: 26px;
float: left;
}
/* Wrapper for page content to push down footer */
#wrap {
html {
position: relative;
min-height: 100%;
height: auto !important;
height: 100%;
/* Negative indent footer by it's height */
margin: 0 auto -60px;
}
body {
/* Margin bottom by footer height */
margin-bottom: 60px;
}
/* Set the fixed height of the footer here */
#push,
#footer {
height: 60px;
body > #content {
padding: 60px 15px 0;
}
#footer {
position: absolute;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 60px;
background-color: #f5f5f5;
}
.container .credit {
.container .text-muted {
margin: 20px 0;
}
/* Lastly, apply responsive CSS fixes as necessary */
@media (max-width: 767px) {
#footer {
margin-left: -20px;
margin-right: -20px;
padding-left: 20px;
padding-right: 20px;
}
}
@media screen and (min-width: 980px) {
body { padding-top: 60px; }
}
.center {
margin:0 auto;
float:none;
}
textarea {
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
width:100%;
}
div.dataTables_length label {
float: left;
text-align: left;
}
div.dataTables_length select {
width: 75px;
}
div.dataTables_filter label {
float: right;
}
div.dataTables_info {
padding-top: 8px;
}
div.dataTables_paginate {
float: right;
margin: 0;
}
table.table {
clear: both;
margin-bottom: 6px !important;
max-width: none !important;
}
table.table thead .sorting,
table.table thead .sorting_asc,
table.table thead .sorting_desc,
table.table thead .sorting_asc_disabled,
table.table thead .sorting_desc_disabled {
cursor: pointer;
*cursor: hand;
}
table.table thead .sorting { background: url('images/sort_both.png') no-repeat center right; }
table.table thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }
table.table thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }
table.table thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }
table.table thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }
table.dataTable th:active {
outline: none;
}
/* Scrolling */
div.dataTables_scrollHead table {
margin-bottom: 0 !important;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot table {
border-top: none;
}
#schedule td.event {
background-image: linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -o-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -moz-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -ms-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.24, rgb(247,250,242)),
color-stop(0.97, rgb(194,232,190)),
color-stop(1, rgb(194,232,190))
);
}
#schedule td.event:hover
{
background-image: linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -o-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -moz-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -ms-linear-gradient(bottom, rgb(247,250,242) 24%, rgb(83,171,74) 97%, rgb(83,171,74) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.24, rgb(247,250,242)),
color-stop(0.97, rgb(83,171,74)),
color-stop(1, rgb(83,171,74))
);
}
.flexvideo {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
padding-top: 25px;
height: 0;
}
.flexvideo iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.schedule-title, .schedule-subtitle, .schedule-speaker, .schedule-track {
clear: none;
display: block;
}
.schedule-subtitle {
color: rgb(185, 74, 72);
#footer > .container {
padding: 15px;
}

View file

@ -1,471 +0,0 @@
/***
Spectrum Colorpicker v1.0.1
https://github.com/bgrins/spectrum
Author: Brian Grinstead
License: MIT
***/
.sp-container {
position:absolute;
top:0;
left:0;
display:inline-block;
*display: inline;
*zoom: 1;
z-index: 2147483647;
overflow: hidden;
}
.sp-container.sp-flat {
position: relative;
}
/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
.sp-top {
position:relative;
width: 100%;
display:inline-block;
}
.sp-top-inner {
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
}
.sp-color {
position: absolute;
top:0;
left:0;
bottom:0;
right:20%;
}
.sp-hue {
position: absolute;
top:0;
right:0;
bottom:0;
left:84%;
height: 100%;
}
.sp-fill {
padding-top: 80%;
}
.sp-sat, .sp-val {
position: absolute;
top:0;
left:0;
right:0;
bottom:0;
}
.sp-alpha-enabled .sp-top
{
margin-bottom: 18px;
}
.sp-alpha-enabled .sp-alpha
{
display: block;
}
.sp-alpha-handle
{
position:absolute;
top:-4px;
bottom: -4px;
width: 6px;
left: 50%;
cursor: pointer;
border: 1px solid black;
background: white;
opacity: .8;
}
.sp-alpha
{
display: none;
position: absolute;
bottom: -14px;
right: 0;
left: 0;
height: 8px;
}
.sp-alpha-inner{
border: solid 1px #333;
}
/* Don't allow text selection */
.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
-webkit-user-select:none;
-moz-user-select: -moz-none;
-o-user-select:none;
user-select: none;
}
.sp-container.sp-input-disabled .sp-input-container {
display: none;
}
.sp-container.sp-buttons-disabled .sp-button-container {
display: none;
}
.sp-palette-only .sp-picker-container {
display: none;
}
.sp-palette-disabled .sp-palette-container {
display: none;
}
.sp-initial-disabled .sp-initial {
display: none;
}
/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */
.sp-sat {
background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));
background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));
background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";
filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');
}
.sp-val {
background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));
background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";
filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');
}
.sp-hue {
background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));
background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
}
/* IE filters do not support multiple color stops.
Generate 6 divs, line them up, and do two color gradients for each.
Yes, really.
*/
.sp-1 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
}
.sp-2 {
height:16%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');
}
.sp-3 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');
}
.sp-4 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');
}
.sp-5 {
height:16%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');
}
.sp-6 {
height:17%;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');
}
/* Clearfix hack */
.sp-cf:before, .sp-cf:after { content: ""; display: table; }
.sp-cf:after { clear: both; }
.sp-cf { *zoom: 1; }
/* Mobile devices, make hue slider bigger so it is easier to slide */
@media (max-device-width: 480px) {
.sp-color { right: 40%; }
.sp-hue { left: 63%; }
.sp-fill { padding-top: 60%; }
}
.sp-dragger {
border-radius: 5px;
height: 5px;
width: 5px;
border: 1px solid #fff;
background: #000;
cursor: pointer;
position:absolute;
top:0;
left: 0;
}
.sp-slider {
position: absolute;
top:0;
cursor:pointer;
height: 3px;
left: -1px;
right: -1px;
border: 1px solid #000;
background: white;
opacity: .8;
}
/* Basic display options (colors, fonts, global widths) */
.sp-container {
border-radius: 0;
background-color: #ECECEC;
border: solid 1px #f0c49B;
padding: 0;
}
.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue
{
font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.sp-top
{
margin-bottom: 3px;
}
.sp-color, .sp-hue
{
border: solid 1px #666;
}
/* Input */
.sp-input-container {
float:right;
width: 100px;
margin-bottom: 4px;
}
.sp-initial-disabled .sp-input-container {
width: 100%;
}
.sp-input {
font-size: 12px !important;
border: 1px inset;
padding: 4px 5px;
margin: 0;
width: 100%;
background:transparent;
border-radius: 3px;
color: #222;
}
.sp-input:focus {
border: 1px solid orange;
}
.sp-input.sp-validation-error
{
border: 1px solid red;
background: #fdd;
}
.sp-picker-container , .sp-palette-container
{
float:left;
position: relative;
padding: 10px;
padding-bottom: 300px;
margin-bottom: -290px;
}
.sp-picker-container
{
width: 172px;
border-left: solid 1px #fff;
}
/* Palettes */
.sp-palette-container
{
border-right: solid 1px #ccc;
}
.sp-palette .sp-thumb-el {
display: block;
position:relative;
float:left;
width: 24px;
height: 15px;
margin: 3px;
cursor: pointer;
border:solid 2px transparent;
}
.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active {
border-color: orange;
}
.sp-thumb-el
{
position:relative;
}
/* Initial */
.sp-initial
{
float: left;
border: solid 1px #333;
}
.sp-initial span {
width: 30px;
height: 25px;
border:none;
display:block;
float:left;
margin:0;
}
/* Buttons */
.sp-button-container {
float: right;
}
/* Replacer (the little preview div that shows up instead of the <input>) */
.sp-replacer {
margin:0;
overflow:hidden;
cursor:pointer;
padding: 4px;
display:inline-block;
*zoom: 1;
*display: inline;
border: solid 1px #91765d;
background: #eee;
color: #333;
vertical-align: middle;
}
.sp-replacer:hover, .sp-replacer.sp-active {
border-color: #F0C49B;
color: #111;
}
.sp-replacer.sp-disabled {
cursor:default;
border-color: silver;
color: silver;
}
.sp-dd {
padding: 2px 0;
height: 16px;
line-height: 16px;
float:left;
font-size:10px;
}
.sp-preview
{
position:relative;
width:25px;
height: 20px;
border: solid 1px #222;
margin-right: 5px;
float:left;
z-index: 0;
}
.sp-palette
{
*width: 220px;
max-width: 220px;
}
.sp-palette .sp-thumb-el
{
width:16px;
height: 16px;
margin:2px 1px;
border: solid 1px #d0d0d0;
}
.sp-container
{
padding-bottom:0;
}
/* Buttons: http://hellohappy.org/css3-buttons/ */
.sp-container button {
background-color: #eeeeee;
background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
background-image: linear-gradient(to bottom, #eeeeee, #cccccc);
border: 1px solid #ccc;
border-bottom: 1px solid #bbb;
border-radius: 3px;
color: #333;
font-size: 14px;
line-height: 1;
padding: 5px 4px;
text-align: center;
text-shadow: 0 1px 0 #eee;
vertical-align: middle;
}
.sp-container button:hover {
background-color: #dddddd;
background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -o-linear-gradient(top, #dddddd, #bbbbbb);
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
background-image: linear-gradient(to bottom, #dddddd, #bbbbbb);
border: 1px solid #bbb;
border-bottom: 1px solid #999;
cursor: pointer;
text-shadow: 0 1px 0 #ddd;
}
.sp-container button:active {
border: 1px solid #aaa;
border-bottom: 1px solid #888;
-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
-o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
}
.sp-cancel
{
font-size: 11px;
color: #d93f3f !important;
margin:0;
padding:2px;
margin-right: 5px;
vertical-align: middle;
text-decoration:none;
}
.sp-cancel:hover
{
color: #d93f3f !important;
text-decoration: underline;
}
.sp-palette span:hover, .sp-palette span.sp-thumb-active
{
border-color: #000;
}
.sp-preview, .sp-alpha, .sp-thumb-el
{
position:relative;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
}
.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner
{
display:block;
position:absolute;
top:0;left:0;bottom:0;right:0;
}
.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=);
}
.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);
}

View file

@ -1,15 +1,8 @@
$navbarBackground: #299a0b;
$navbarBackgroundHighlight: #299a0b;
$navbarBorder: 1px solid #d4d4d4;
$navbarText: #ffffff;
$navbarLinkColor: white;
$navbarLinkColorHover: black;
$navbarLinkBackgroundActive: #DFE0DF;
$navbar-default-bg: #299a0b;
$navbar-default-link-active-bg: #DFE0DF;
$navbar-default-border: 1px solid #d4d4d4;
$navbar-default-color: #ffffff;
$navbar-default-link-color: #ffffff;
$navbar-default-link-hover-color: #000000;
@import "bootstrap";
@import "bootstrap-responsive";
/* Set to navbarBackgroundHighlight otherwise */
.navbar .nav > li > a {
text-shadow: none;
}

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@cfp, :url => admin_conference_cfp_update_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" }
= f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" }

View file

@ -1,8 +1,5 @@
.well.sidebar-nav
%ul.nav.nav-list
%li.nav-header
=@conference.short_title
Settings
%ul.nav.nav-pills.nav-stacked
%li{:class=> active_nav_li(admin_conference_path(@conference.short_title))}
= link_to "Conference", admin_conference_path(@conference.short_title)
%li{:class=> active_nav_li(admin_conference_venue_info_path(@conference.short_title))}

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :title, :hint => "The full name of the conference, such as 'OpenSUSE Conference 2013'"
= f.input :short_title, :hint => "A short title, such as 'osc2013', to be used in URLs"

View file

@ -1,5 +1,4 @@
.container-fluid
.row-fluid
.row
.span3
= render 'admin/conference/sidebar', :activated => "Diet"
.span9

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_difficulty_levels_path(@conference.short_title)) do |f|
= f.input :use_difficulty_levels, :label => false
= dynamic_association :difficulty_levels, "Difficulty_Levels", f

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= link_to "Template Help", "#", :id => "template-help-link"
#template-help
Valid attributes:
@ -25,7 +24,6 @@
%tr
%td {eventtitle}
%td The title of an accepted or rejected proposal
= semantic_form_for(@settings, :url => admin_conference_email_settings_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :send_on_registration, :label => false, :hint => "Send an email when the user registers for the conference?"
= f.input :registration_subject

View file

@ -1,9 +1,7 @@
.row-fluid
.row
.span12
%h5{:style=>"text-align: right"}
= link_to "Events Stats", "#", :id => "events-stats-link", :class => "btn btn-success"
.col-md-12
= link_to "Show Events Stats", "#", :id => "events-stats-link", :class => "btn btn-default pull-right"
.clearfix
#events-stats
.span12
%table.table.table-bordered.table-striped
@ -16,7 +14,6 @@
Total
%br
No & Time
%tr
%td
%b Total

View file

@ -1,15 +1,14 @@
.row-fluid
.span10
.row
.col-md-12
%h3
= @event.title
%br
%span.muted
%small
= @event.subtitle
.span2
= link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary"
= link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-default pull-right"
.row-fluid
.span12
.row
.col-md-12
%table.table
%tr
%td{:style => "width:15%"}
@ -161,7 +160,7 @@
= link_to "Delete", conference_proposal_event_attachment_path(@conference.short_title, @event.id, a.id),
:method => :delete, :confirm => "Are you sure you want to delete this attachment? It's permanant!"
.row-fluid
.row
= link_to "Comments (#{@comment_count})", "#", :id => "event-comment-link"
#comments-div
%hr

View file

@ -1,2 +1 @@
.container
= render 'proposal/form'

View file

@ -1,7 +1,7 @@
= render :partial => "events_stats"
.row-fluid
.span12
.row
.col-md-12
%h2
Events
- if @events

View file

@ -8,7 +8,7 @@
#proposal-content.tab-pane.active
= render 'proposal'
#history-content.tab-pane
.span12
.col-md-12
%table.table
%thead
%th

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_eventtype_update_path(@conference.short_title)) do |f|
= dynamic_association :event_types, "Event Types", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -1,15 +1,14 @@
.row-fluid
.span6
%h2
.row
.col-md-12
.page-header
%h1
People
- if @people
= "(#{@people.length})"
.span6
.pull-right{:style=>"margin-top:20px; margin-bottom:20px;"}
= link_to "New person", new_admin_person_path, :class => "btn btn-success"
= link_to "New person", new_admin_person_path, :class => "btn btn-success pull-right"
.row-fluid
.span12
.row
.col-md-12
.well
%table.table.table-striped.table-bordered.table-hover#people
%thead

View file

@ -1,8 +1,8 @@
.row-fluid
.span6
.row
.col-md-6
%legend Question
= f.input :title, :label => "Your Question"
= f.input :question_type
= f.input :global, :label => "Make Global", :hint => "(Global questions are available for selection to all conferences)"
.span6
.col-md-6
= dynamic_association :answers, "Answers", f, :hint => "Insert your answers in the order you want them to appear"

View file

@ -1,23 +1,21 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
.pull-right
%b= link_to "Create New Question","#", "data-toggle" => "modal", "data-target" => "#new-question", :class => "btn btn-success"
%br
%br
- if @questions.count > 0
= semantic_form_for(@conference, :url => admin_conference_questions_update_conference_path(@conference.short_title), :method => 'put') do |f|
.questions{:id => "myquestions"}
= render :partial => "questions"
= f.submit "Update Questions for #{@conference.short_title}", :class => "btn btn-primary", :confirm => "Are you sure you want to make these changes?"
.modal.hide.fade{:id => "new-question", "role" => "dialog", "aria-hidden" => "true"}
.modal.fade{:id => "new-question", "role" => "dialog", "aria-hidden" => "true"}
.modal-dialog
.modal-content
.modal-header
%h3{:id => "new-question-header"}
Add new question

View file

@ -1,13 +1,11 @@
.container-fluid
.row-fluid
.span12
.row
.col-md-12
%h3
Edit registration of #{@person.public_name} (#{@person.email}) for #{@conference.title}
%br
.row-fluid
.span12
.row
.col-md-12
= semantic_form_for(@registration, :url => admin_conference_registrations_edit_path(@conference.short_title, @registration.id), :html => { :method => :put }) do |f|
= f.inputs "Personal Information" do
= f.fields_for :person do |p|
= p.input :first_name, :as => :string
@ -16,25 +14,21 @@
= p.text_field :irc_nickname, :as => :string
= p.label :Affiliation
= p.text_field :company, :placeholder => "Company/User Group/nothing", :as => :string
= f.inputs "Registration Information" do
- if @conference.use_supporter_levels? and @conference.supporter_levels.length > 0
= f.semantic_fields_for :supporter_registration do |reg|
= reg.input :supporter_level, :as => :select, :collection => @conference.supporter_levels
= reg.input :code, :label => "Confirmation or registration code (if applicable)"
%span#supporter-link.help-block
= f.input :attending_with_partner, :label => false
= f.input :using_affiliated_lodging, :label => false
= f.input :handicapped_access_required, :label => false
= f.input :other_special_needs, :label => "Any other special needs?", :input_html => {:rows => 2, :class => "span6"}
- if @conference.social_events.count > 0
= f.inputs "Are you planning to attend any of the parties?" do
%br Yes, I'll be attending...
%br
= f.input :social_events, :as => :check_boxes, :label => false, :collection => @conference.social_events
= f.action :submit, :button_html => { :value => "Edit Registration", :class => "btn btn-primary" }
:javascript
$("#registration_supporter_registration_attributes_supporter_level_id").change(function () {

View file

@ -1,9 +1,9 @@
.row
.span12
.col-md-12
%h3
Create new account and registration
.row
.span12
.col-md-12
= semantic_form_for(@registration, :url => admin_conference_registrations_new_path(@conference.short_title), :html => { :method => :put }) do |f|
= f.inputs "Your details" do

View file

@ -1,16 +1,15 @@
.row-fluid
.span12
.pull-right{:style=>"margin-top:20px; margin-bottom:20px;"}
= link_to "New", admin_conference_registrations_new_path(@conference.short_title), :class => "btn btn-primary"
= link_to "Export PDF", admin_conference_registrations_path(@conference.short_title, :format => :pdf), :class => "btn btn-success"
= link_to "Export xlsx", {:format => :xlsx}, :class => "btn btn-success"
.row-fluid
.span12
.row
.col-md-12
.page-header
%h2
Registrations
- if @registrations
= "(#{@registrations.length})"
= " - Attended (#{@attended})"
.btn-group.pull-right
= link_to "New", admin_conference_registrations_new_path(@conference.short_title), :class => "btn btn-default"
= link_to "Export PDF", admin_conference_registrations_path(@conference.short_title, :format => :pdf), :class => "btn btn-default"
= link_to "Export XLS", {:format => :xlsx}, :class => "btn btn-default"
%table.table.table-bordered.table-striped.table-hover#registrations
%thead
%th

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_rooms_update_path(@conference.short_title)) do |f|
= dynamic_association :rooms, "Rooms", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_social_events_path(@conference.short_title)) do |f|
= dynamic_association :social_events, "Social Events", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -1,5 +1,5 @@
.row-fluid
.span4
.row
.col-md-4
- if @registered > 0
- if @attendees > 0
%h4{:style => "text-indent: 25px"}= "Registrations - Attendees (#{(@attendees.to_f / @registered * 100).round }%)"
@ -11,30 +11,29 @@
- else
%h5 There are no registrations yet.
.span4
.col-md-4
- if @registered > 0
%h4{:style => "text-indent: 10px"}= "Attendance of pre-registered"
.row-fluid
.span12#registered_attended
= render :partial => "registered_attended"
.span4
.col-md-4
- if @registered > 0
%h4{:style => "text-indent: 25px"}= "% of pre-registered"
.row-fluid
.span12#preregistered_onsite
= render :partial => "preregistered_onsite"
.row-fluid
.span6
.row
.col-md-6
- if @registered > 0
%h4= "Other Info"
.row-fluid
.span12#other_info
= render :partial => "other_info"
.span6
.col-md-6
- if @registered > 0
%h4{:style => "text-indent: 98px"}= "Registrations over time"
.row-fluid

View file

@ -1,5 +1,5 @@
.row-fluid
.span12
.row
.col-md-12
%ul.nav.nav-tabs#myTab
%li.active
%a{:href=>"#registrations", "data-toggle"=>"tab"} Registrations

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_supporter_levels_path(@conference.short_title)) do |f|
= f.input :use_supporter_levels, :label => false
= dynamic_association :supporter_levels, "Supporter Levels", f

View file

@ -7,12 +7,12 @@
= f.input :code_is_valid, :as => :boolean, :label => false
= f.action :submit, :button_html => { :value => "Save", :class => "btn btn-primary" }
.row-fluid
.span12
.row
.col-md-12
.pull-right{:style=>"margin-top:20px; margin-bottom:20px;"}
= link_to "New Supporter", "#", :id => "new-supporter-button", :class => "btn btn-success"
.row-fluid
.span12
.row
.col-md-12
%h2 Supporters
.well
%table.table.table-striped#supporters

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_tracks_update_path(@conference.short_title)) do |f|
= dynamic_association :tracks, "Tracks", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}

View file

@ -1,6 +1,5 @@
.container-fluid
.row-fluid
.span12
.row
.col-md-12
%h2
Users
- if @users
@ -57,7 +56,6 @@
%br
%button{:class=> "btn btn-danger", "data-dismiss"=> "modal", "aria-hidden"=>"true"}
Cancel
- else
= "Give #{user.public_name} (#{user.email}) the following roles:"
= semantic_form_for(user, :url => admin_user_path(user), :method => :put) do |f|

View file

@ -1,8 +1,7 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@venue, :url => admin_conference_venue_update_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :name, :input_html => {:rows => 1}
= f.input :address, :input_html => {:rows => 1}

View file

@ -1,7 +1,7 @@
<div class="nested-fields">
<%= f.inputs do %>
<%= f.date_select :day %>
<%= f.input :description, :input_html => {:rows => "2", :class => "span8"} %>
<%= f.input :description, :input_html => {:rows => "2", :class => "col-md-8"} %>
<%= remove_association_link :vday, f %>
<% end %>
</div>

View file

@ -1,7 +1,7 @@
<div class="nested-fields">
<%= f.inputs do %>
<%= f.input :title %>
<%= f.input :description, :input_html => {:rows => "2", :class => "span8"}%>
<%= f.input :description, :input_html => {:rows => "2", :class => "col-md-8"}%>
<%= f.input :vdays, :collection => @conference.vdays.map {|x| [x.day, x.id]}, :label => "Position is required for the following days:"%>
<%= remove_association_link :vposition, f %>
<% end %>

View file

@ -1,17 +1,16 @@
.container-fluid
.row-fluid
.span3
.row
.col-md-3
= render 'admin/conference/sidebar'
.span9
.col-md-9
= semantic_form_for(@conference, :url => admin_conference_volunteers_update_path(@conference.short_title)) do |f|
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
%br
%br
= f.input :use_volunteers, :label => "Enable Volunteering"
.row-fluid
.span6
.row
.col-md-6
= f.input :use_vdays, :label => false
= dynamic_association :vdays, "Volunteer Days", f
.span6
.col-md-6
= f.input :use_vpositions, :label => false
= dynamic_association :vpositions, "Volunteer positions", f

View file

@ -1,15 +1,15 @@
.row
.span12
.col-md-12
%h3
Registration for
= @conference.title
- if @person.proposal_count(@conference) > 0
.row
.span12
.col-md-12
%i
Please note: Registration is not automatically performed for speakers. If you're scheduled to speak at the conference, you still need to register!
.row
.span12
.col-md-12
= f.inputs :name => "Your Details" do
%br
Your public name (required)

View file

@ -1,5 +1,5 @@
.row
.span12
.col-md-12
= f.input :volunteer, :label => "Click here if you want to become a volunteer at #{@conference.short_title}", :input_html => {:maxlength => 15, :size => 40}
= f.fields_for :person do |p|
= render :partial => 'devise/registrations/volunteerperson', :locals => {:p => p}

View file

@ -1,5 +1,5 @@
.row
.span12
.col-md-12
= semantic_form_for(@registration, :url => register_conference_path(@conference.short_title), :html => { :method => :put }) do |f|
.tabbable
%ul.nav.nav-tabs

View file

@ -1,5 +0,0 @@
<p>Welcome <%= @resource.email %>!</p>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

View file

@ -1,8 +0,0 @@
<p>Hello <%= @resource.email %>!</p>
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>

View file

@ -1,7 +0,0 @@
<p>Hello <%= @resource.email %>!</p>
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
<p>Click the link below to unlock your account:</p>
<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>

View file

@ -1,16 +0,0 @@
<h2>Change your password</h2>
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
<%= devise_error_messages! %>
<%= f.hidden_field :reset_password_token %>
<div><%= f.label :password, "New password" %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation, "Confirm new password" %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Change my password" %></div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -1,12 +0,0 @@
<h2>Forgot your password?</h2>
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Send me reset password instructions" %></div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -1,21 +0,0 @@
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password, :autocomplete => "off" %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %></div>
<div><%= f.submit "Update" %></div>
<% end %>
<h3>Cancel my account</h3>
<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %>.</p>
<%= link_to "Back", :back %>

View file

@ -1,20 +0,0 @@
<% if false %>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
<%= f.fields_for :person do |p| %>
<h2><%= p.label :first_name %></h2>
<p><%= p.text_field :first_name %></p>
<h2><%= p.label :last_name %></h2>
<p><%= p.text_field :last_name %></p>
<% end %>
<div><%= f.submit "Update" %></div>
<% end %>
<% end %>
<%= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
<%= f.fields_for :person do |p| %>
<%= f.inputs :first_name, :last_name, :for => :person %>
<% end %>
<div><%= f.submit "Update" %></div>
<% end %>

View file

@ -1,18 +0,0 @@
<%= devise_error_messages! %>
<%= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
<%= f.inputs :name => "Profile" do %>
<%= f.fields_for :person do |p| %>
<%= f.inputs :first_name, :last_name, :for => :person %>
<% end %>
<% end %>
<%= f.inputs :name => "Account" do %>
<%= f.input :email %>
<%= 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 :current_password, :input_html => {:autocomplete => "off"}, :hint => "(we need your current password to confirm your changes)" %>
<% end %>
<div><%= f.submit "Update" %></div>
<% end %>

View file

@ -1,5 +1,5 @@
.container
.row-fluid
.row
.col-md-12
= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f|
= f.inputs :name => "Profile" do
= f.fields_for :person do |p|
@ -8,8 +8,6 @@
= p.input :public_name, :as => :string
= p.input :irc_nickname, :label => "IRC nick:", :as => :string
= p.input :company, :label => "Affiliation", :as => :string, :hint => "This could be a company, a user group, or nothing at all."
= image_tag current_user.person.avatar(:small)
= p.input :avatar, :label => "Picture", :hint => "Upload a new picture."
= p.input :biography, :input_html => {:rows => 5, "onkeyup" => "word_count(this, 'biography-count', 150)"}, :for => :person
You have used
%span#biography-count #{current_user.person.biography_word_count}
@ -17,7 +15,6 @@
%br
%br
= render :partial => 'devise/registrations/volunteerperson', :locals => {:p => p}
= f.inputs :name => "Account" do
= f.input :email, :required => false
= f.input :password, :hint => "(Leave blank if you don't want to change it)", :input_html => {:autocomplete => "off"}

View file

@ -1,18 +0,0 @@
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -1,14 +1,15 @@
.container
%h2.text-center
Sign Up
.row-fluid
.well.span3.offset2
.row
.page-header
%h1.text-center Sign Up
.col-md-5.col-md-offset-1
.well
= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= f.input :email
= f.input :password
= f.input :password_confirmation
= f.action :submit, :as => :button, :label => "Sign Up", :button_html => {:class => "btn btn-primary"}
.well.span3.offset2
.col-md-3.col-md-offset-2
.well
%h4
Already have an account?
= render "devise/shared/links"

View file

@ -1,18 +0,0 @@
/
<h2>Sign in</h2>
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<div><%= f.submit "Sign in" %></div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -1,15 +0,0 @@
.container
%h2.text-center
Sign In
.row-fluid
.well.span3.offset2
= semantic_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|
= f.input :email
= f.input :password
- if devise_mapping.rememberable?
= f.input :remember_me, :as=> :boolean, :label => false
= f.action :submit, :as => :button, :label => "Sign In", :button_html => {:class => "btn btn-primary"}
.well.span3.offset2
%h4
No account?
= render "devise/shared/links"

View file

@ -1,22 +0,0 @@
- if controller_name != 'sessions'
= button_to "Sign In", new_session_path(resource_name), :method => :get, :class => "btn btn-primary", :style=> "margin-top: 5px"
- if devise_mapping.registerable? && controller_name != 'registrations'
= button_to "Sign Up", new_registration_path(resource_name), :method => :get, :class => "btn btn-primary", :style=> "margin-top: 5px"
- if devise_mapping.recoverable? && controller_name != 'passwords'
= link_to "Forgot your password?", new_password_path(resource_name)
%br
- if devise_mapping.confirmable? && controller_name != 'confirmations'
= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name)
%br
- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name)
%br
- if devise_mapping.omniauthable?
- resource_class.omniauth_providers.each do |provider|
= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider)

View file

@ -1,12 +0,0 @@
<h2>Resend unlock instructions</h2>
<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Resend unlock instructions" %></div>
<% end %>
<%= render "devise/shared/links" %>

View file

@ -1,55 +0,0 @@
<div class="row">
<div class="span12">
<h2 class="text-center">Upcoming Conferences</h2>
</div>
</div>
<% @current.each do |conference| %>
<div class="row-fluid" style="margin-top: 30px;">
<div clas="span12">
<div class="well">
<div class="row">
<div class="span4 text-center">
<%= image_tag conference.logo(:original) %>
</div>
<div class="span6">
<h3>
<%= conference.title %>
<br>
<span class="muted"><%= conference.date_range_string %></span>
</h3>
<% if conference.venue.name and conference.venue.website and conference.venue.address %>
<p>
<small>
<%= link_to conference.venue.name, conference.venue.website %>,
<%= link_to conference.venue.address, "http://maps.google.com/maps?q=#{conference.venue.address}" %>
</small>
<% end -%>
<% if conference.venue.description %>
<%= simple_format(conference.venue.description, class: 'lead') %>
<% end -%>
</div>
<div class="span2">
<ul class="nav nav-tabs nav-stacked">
<% if conference.registration_open? %>
<%- if conference.user_registered?(current_user) %>
<li><%= link_to "Modify Registration", register_conference_path(conference.short_title) %></li>
<%- else %>
<li><%= link_to "Register", register_conference_path(conference.short_title) %></li>
<% end %>
<% end %>
<li><%= link_to "Schedule", conference_schedule_path(conference.short_title) %></li>
<%- if !current_user.nil? && current_user.person.proposal_count(conference) > 0 %>
<li><%= link_to "View My Proposals", conference_proposal_index_path(conference.short_title) %></li>
<%- elsif conference.cfp_open? %>
<li><%= link_to "Submit Proposal", conference_proposal_index_path(conference.short_title) %></li>
<% end %>
</ul>
</div>
</div>
</div>
</div>
</div>
<% end %>

View file

@ -0,0 +1,36 @@
.row
.col-md-12.page-header
%h2.text-center Upcoming Conferences
- @current.each do |conference|
.row
.col-md-12
.well
.row
.col-md-4.text-center
= image_tag(conference.logo(:original), class: 'img-responsive')
.col-md-6
%h3
= conference.title
%small
%b
= conference.date_range_string
- if conference.venue.name and conference.venue.website and conference.venue.address
%p
%small
= link_to conference.venue.name, conference.venue.website
,
\#{link_to conference.venue.address, "http://maps.google.com/maps?q=#{conference.venue.address}"}
- if conference.venue.description
= simple_format(conference.venue.description, class: 'lead')
.col-md-2
.btn-group-vertical
- if conference.registration_open?
- if conference.user_registered?(current_user)
= link_to "Modify Registration", register_conference_path(conference.short_title), :class =>"btn btn-default"
- else
= link_to "Register", register_conference_path(conference.short_title), :class =>"btn btn-success"
= link_to "Schedule", conference_schedule_path(conference.short_title), :class =>"btn btn-default"
- if !current_user.nil? && current_user.person.proposal_count(conference) > 0
= link_to "View My Proposals", conference_proposal_index_path(conference.short_title), :class =>"btn btn-default"
- elsif conference.cfp_open?
= link_to "Submit Proposal", conference_proposal_index_path(conference.short_title), :class =>"btn btn-default"

View file

@ -0,0 +1,30 @@
%ul.nav.navbar-nav
%li{:class=> active_nav_li(admin_conference_path(@conference.short_title))}
= link_to(admin_conference_path(@conference.short_title)) do
%span.glyphicon.glyphicon-wrench
Settings
%li{:class=> active_nav_li(admin_conference_registrations_path(@conference.short_title))}
= link_to(admin_conference_registrations_path(@conference.short_title)) do
%span.glyphicon.glyphicon-user
Registrations
- if @conference.use_supporter_levels? and @conference.supporter_levels.length > 0
%li{:class=> active_nav_li(admin_conference_supporters_path(@conference.short_title))}
= link_to(admin_conference_supporters_path(@conference.short_title)) do
%span.glyphicon.glyphicon-star
Supporters
%li{:class=> active_nav_li(admin_conference_events_path(@conference.short_title))}
= link_to(admin_conference_events_path(@conference.short_title)) do
%span.glyphicon.glyphicon-comment
Events
%li{:class=> active_nav_li(admin_conference_stats_path(@conference.short_title))}
= link_to(admin_conference_stats_path(@conference.short_title)) do
%span.glyphicon.glyphicon-tasks
Statistics
%li{:class=> active_nav_li(admin_conference_volunteers_list_path(@conference.short_title))}
= link_to(admin_conference_volunteers_list_path(@conference.short_title)) do
%span.glyphicon.glyphicon-user
Volunteers
%li
= link_to(admin_conference_schedule_path(@conference.short_title), :target => "_blank") do
%span.glyphicon.glyphicon-calendar
Schedule

View file

@ -1,74 +1,50 @@
%a.btn.btn-navbar{"data-target" => ".nav-collapse", "data-toggle" => "collapse", :id => "mobmenu" }
%span.icon-th
= link_to "OSEM", root_path, :class => 'brand', :title => "Open Source Event Manager"
.navbar.navbar-default.navbar-fixed-top{:role=>"navigation"}
.container
.navbar-header
%button{"data-target"=>".navbar-collapse", "data-toggle"=>"collapse", :class=>"navbar-toggle", :type=>"button"}
%span.sr-only
Toggle navigation
%span.icon-bar
%span.icon-bar
%span.icon-bar
= link_to "OSEM", root_path, :class => 'navbar-brand', :title => "Open Source Event Manager"
.collapse.navbar-collapse
- if @conference && !@conference.short_title.nil?
%span.brand
%p.navbar-text
= @conference.short_title
.nav-collapse.collapse
/ The Admin Menu for Conferences /
- if user_signed_in?
- if has_role?(current_user, "admin") || has_role?(current_user, "organizer")
- if controller.class.name.split("::").first=="Admin"
- if @conference and !@conference.short_title.nil?
%ul.nav
%li.nav-header.hidden-desktop
= @conference.short_title
%li{:class=> active_nav_li(admin_conference_path(@conference.short_title))}
= link_to(admin_conference_path(@conference.short_title)) do
%i.icon-wrench
Settings
%li{:class=> active_nav_li(admin_conference_registrations_path(@conference.short_title))}
= link_to(admin_conference_registrations_path(@conference.short_title)) do
%i.icon-user
Registrations
- if @conference.use_supporter_levels? and @conference.supporter_levels.length > 0
%li{:class=> active_nav_li(admin_conference_supporters_path(@conference.short_title))}
= link_to(admin_conference_supporters_path(@conference.short_title)) do
%i.icon-star
Supporters
%li{:class=> active_nav_li(admin_conference_events_path(@conference.short_title))}
= link_to(admin_conference_events_path(@conference.short_title)) do
%i.icon-comment
Events
%li{:class=> active_nav_li(admin_conference_stats_path(@conference.short_title))}
= link_to(admin_conference_stats_path(@conference.short_title)) do
%i.icon-tasks
Statistics
%li{:class=> active_nav_li(admin_conference_volunteers_list_path(@conference.short_title))}
= link_to(admin_conference_volunteers_list_path(@conference.short_title)) do
%i.icon-user
Volunteers
%li
= link_to(admin_conference_schedule_path(@conference.short_title), :target => "_blank") do
%i.icon-calendar
Schedule
%ul.nav.hidden-desktop
= render 'layouts/user_menu'
%ul.nav.pull-right.visible-desktop
- if @conference and not @conference.short_title.nil?
= render 'layouts/admin_menu'
%ul.nav.navbar-nav.navbar-right
%li.dropdown
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
#{current_user.person.public_name} (#{current_user.email})
- if not current_user.person.public_name.empty?
#{current_user.person.public_name}
-else
#{current_user.email}
= image_tag(current_user.person.gravatar_url(:size => "18"), :title => "Yo #{current_user.person.public_name}!")
%b.caret
%ul.dropdown-menu{:style => "padding: 15px;"}
%ul.dropdown-menu
= render 'layouts/user_menu'
- else
%ul.nav.pull-right
%ul.nav.navbar-nav.navbar-right
- if current_page?(new_registration_path('user'))
%li.active
= link_to(new_registration_path('user')) do
%i.icon-heart
%span.glyphicon.glyphicon-heart
Sign Up
- else
%li
= link_to(new_registration_path('user')) do
%i.icon-heart
%span.glyphicon.glyphicon-heart
Sign Up
%li.dropdown.visible-desktop
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
%i.icon-user.icon-2x
%span.glyphicon.glyphicon-user
Sign In
%i.icon-angle-down
%span.caret
.dropdown-menu{:style => "padding: 17px;"}
= form_tag user_session_path do
= text_field_tag 'user[email]'
@ -79,5 +55,5 @@
%button.btn.btn-block Sign in
%br
= link_to "Forgot your password?", new_password_path('user')
%li.hidden-desktop
%li.hidden-lg
= link_to('Sign In', new_user_session_path)

View file

@ -1,5 +1,3 @@
%li.nav-header
= current_user.person.public_name if current_user.person
%li
= link_to(edit_user_registration_path) do
%i.icon-wrench
@ -15,7 +13,7 @@
Sign out
-if has_role?(current_user, "admin") || has_role?(current_user, "organizer")
%li.divider
%li.nav-header
%li.dropdown-header
Conferences
- @conferences.each do |conference|
%li
@ -28,7 +26,7 @@
%i.icon-plus
New Conference
%li.divider
%li.nav-header
%li.dropdown-header
People
%li
= link_to(admin_users_path) do

View file

@ -17,14 +17,10 @@
});
= yield(:head)
%body
#wrap
.navbar.navbar-fixed-top
.navbar-inner
.container-fluid
= render 'layouts/navigation'
.container#messages
.row
.span12
.col-md-12
= render 'layouts/messages'
%noscript
:css
@ -37,11 +33,10 @@
OSEM requires JavaScript to be enabled to function. Please turn on JavaScript in your browser's settings and reload the page to continue.
.container#content
= yield
#push
#footer
.container
%p.muted.credit.text-center
%p.muted.text-center
OSEM is (C) 2013
= link_to "Matt Barringer", "http://incoherent.de"
and released under the GPL. You can get the source code from

View file

@ -1,5 +1,5 @@
.row
.span12
.col-md-12
.tabbable
%ul.nav.nav-tabs
%li.active

View file

@ -1,2 +1 @@
.container
= render 'form'

View file

@ -1,14 +1,12 @@
.container-fluid
.row-fluid
.span13
%h2.pull-left
.row
.col-md-12.page-header
%h1
= "My Proposals for #{@conference.title}"
.pull-right{:style=>"margin-top:20px;"}
- if @conference.cfp_open? || organizer_or_admin?
= link_to "New Proposal", new_conference_proposal_path(@conference.short_title), :class => "btn btn-primary"
= link_to "New Proposal", new_conference_proposal_path(@conference.short_title), :class => "btn btn-primary pull-right"
- if @person.proposal_count(@conference) > 0
.row-fluid
.span12
.row
.col-md-12
%table.table.table-bordered.table-striped
%thead
%th

View file

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

View file

@ -1,13 +1,13 @@
.row
.span12
.col-md-12.page-header
%h2
= @event.title
- if @event.subtitle
%br
%span.muted
%small
= @event.subtitle
.row-fluid
.span3
.row
.col-md-3
%p
= simple_format(@event.abstract)
%dl
@ -22,31 +22,32 @@
- if @event.track_id
%span.label{:style =>"background-color: #{@event.track.color};"}
= @event.track.name
.span9
.col-md-9
-unless @event.video_id
.row-fluid
.span12
.row
.col-md-12
%h5.text-error
No video of the event yet, sorry! Meanwhile...
.row-fluid
.span12.flexvideo
.row
.col-md-12
.flexvideo
-if @event.video_id
%iframe{:width=>"560", :height=>"315", :frameborder=>"0", :allowfullscreen=>"true", :src=>"http://www.youtube.com/embed/#{@event.video_id}?rel=0"}
-else
%iframe{:width=>"560", :height=>"315", :frameborder=>"0", :allowfullscreen=>"true", :src=>"http://www.youtube.com/embed/Eiv4e5ZxTmg?rel=0"}
.row-fluid
.span8
.row
.col-md-8
%h3
by
= @speaker.public_name
- if @speaker.company
- if @speaker.company?
%br
%span.muted
from
= @speaker.company
-if @speaker.biography
-if @speaker.biography?
= simple_format(@speaker.biography)
.span4
= image_tag @speaker.gravatar_url(:size => 200), :class => "img-rounded pull-right", :style => "margin: 8px;"
.col-md-4
= image_tag @speaker.gravatar_url(:size => 200), :class => "img-responsive img-rounded"