Initial Rails4 Port

This commit is contained in:
Henne Vogelsang 2014-04-23 15:45:55 +02:00
parent 5923a66a88
commit 2e9b92c3af
19 changed files with 394 additions and 817 deletions

110
Gemfile
View file

@ -1,60 +1,92 @@
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'rails', '3.2.17' # Use rails as framework
gem 'rails', '4.0.0'
# Bundle edge Rails instead: # Use mysql as the database for Active Record
# gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'mysql2'
# Gems used only for assets and not required # Use rails-observers for observing records
# in production environments by default. gem 'rails-observers'
group :assets do
# gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes # User paper_trail for tracking data changes
gem 'therubyracer', :platforms => :ruby gem 'paper_trail'
gem 'uglifier', '>= 1.2.2' # Use devise as authentification framework
end gem 'devise'
group :development, :test do # Use cancan as authorization framework
gem 'pry' gem 'cancan'
gem 'sqlite3'
gem 'thin'
gem 'letter_opener'
gem 'rspec-rails', '~> 3.0.0.beta'
gem 'capybara'
gem 'rdoc-generator-fivefish'
gem 'factory_girl_rails'
end
group :production do # Use transitions as state machine
gem 'mysql2' gem 'transitions', :require => ["transitions", "active_record/transitions"]
end
gem 'will_paginate' # Use acts_as_commentable_with_threading for comments
gem 'paperclip', '~> 3.0' gem 'acts_as_commentable_with_threading'
# Use haml as templating language
gem "haml-rails"
# Use SCSS for stylesheets
gem "sass-rails", ">= 4.0.2"
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use bootstrap as the front-end framework
gem 'bootstrap-sass'
gem 'formtastic-bootstrap'
# Use jquery as the JavaScript library
gem 'jquery-rails' gem 'jquery-rails'
gem 'jquery-ui-rails' gem 'jquery-ui-rails'
gem 'jquery-fileupload-rails' gem 'jquery-fileupload-rails'
gem 'devise'
gem 'cancan'
gem "haml"
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 'cocoon'
gem 'transitions', :require => ["transitions", "active_record/transitions"]
gem 'acts_as_commentable_with_threading' # Use gravtastic for user avatars
gem 'gravtastic'
# Use paperclip for upload management
gem 'paperclip'
# Use prawn as PDF generator
gem 'prawn' gem 'prawn'
gem 'prawn_rails' gem 'prawn_rails'
gem 'gravtastic'
gem 'active_model_serializers' # Use axlsx_rails to render XLS spreadsheets
gem 'axlsx_rails' gem 'axlsx_rails'
# Use d3js for building our statistics
gem 'd3_rails' gem 'd3_rails'
# We use coveralls for measuring test coverage
gem 'coveralls', require: false gem 'coveralls', require: false
# Use a self-hosted errbit with the old notifier # Use a self-hosted errbit with the old notifier
gem 'hoptoad_notifier', "~> 2.3" gem 'hoptoad_notifier', "~> 2.3"
gem 'rails-observers'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Use active_model_serializers for JSON serializatioin our API
gem 'active_model_serializers'
# Use sqlite3 as the database in development
gem 'sqlite3', group: [:development]
# Use letter_opener to open mails in development
gem 'letter_opener', group: [:development]
# Use rspec and capybara as testing framework
gem 'rspec-rails', '~> 3.0.0.beta', group: [:test]
gem 'capybara', group: [:test]
# FIXME: We should use http://weblog.rubyonrails.org/2012/3/21/strong-parameters/
gem 'protected_attributes'
# We use this bootstrap/html5 rdoc generator
gem 'rdoc-generator-fivefish'
# We use factory_girl for seeds
gem 'factory_girl_rails'

View file

@ -1,56 +1,51 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
actionmailer (3.2.17) actionmailer (4.0.0)
actionpack (= 3.2.17) actionpack (= 4.0.0)
mail (~> 2.5.4) mail (~> 2.5.3)
actionpack (3.2.17) actionpack (4.0.0)
activemodel (= 3.2.17) activesupport (= 4.0.0)
activesupport (= 3.2.17) builder (~> 3.1.0)
builder (~> 3.0.0)
erubis (~> 2.7.0) erubis (~> 2.7.0)
journey (~> 1.0.4) rack (~> 1.5.2)
rack (~> 1.4.5) rack-test (~> 0.6.2)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
active_model_serializers (0.8.1) active_model_serializers (0.8.1)
activemodel (>= 3.0) activemodel (>= 3.0)
activemodel (3.2.17) activemodel (4.0.0)
activesupport (= 3.2.17) activesupport (= 4.0.0)
builder (~> 3.0.0) builder (~> 3.1.0)
activerecord (3.2.17) activerecord (4.0.0)
activemodel (= 3.2.17) activemodel (= 4.0.0)
activesupport (= 3.2.17) activerecord-deprecated_finders (~> 1.0.2)
arel (~> 3.0.2) activesupport (= 4.0.0)
tzinfo (~> 0.3.29) arel (~> 4.0.0)
activeresource (3.2.17) activerecord-deprecated_finders (1.0.3)
activemodel (= 3.2.17) activesupport (4.0.0)
activesupport (= 3.2.17)
activesupport (3.2.17)
i18n (~> 0.6, >= 0.6.4) i18n (~> 0.6, >= 0.6.4)
multi_json (~> 1.0) minitest (~> 4.2)
multi_json (~> 1.3)
thread_safe (~> 0.1)
tzinfo (~> 0.3.37)
acts_as_commentable_with_threading (1.2.0) acts_as_commentable_with_threading (1.2.0)
activerecord (>= 3.0) activerecord (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
awesome_nested_set (>= 2.0) awesome_nested_set (>= 2.0)
addressable (2.3.5) addressable (2.3.6)
arel (3.0.3) arel (4.0.2)
atomic (1.1.16)
awesome_nested_set (2.1.6) awesome_nested_set (2.1.6)
activerecord (>= 3.0.0) activerecord (>= 3.0.0)
axlsx (2.0.1) axlsx (2.0.1)
htmlentities (~> 4.3.1) htmlentities (~> 4.3.1)
nokogiri (>= 1.4.1) nokogiri (>= 1.4.1)
rubyzip (~> 1.0.0) rubyzip (~> 1.0.0)
axlsx_rails (0.1.5) axlsx_rails (0.2.0)
axlsx axlsx (>= 2.0.1)
rails (>= 3.1) rails (>= 3.1)
bcrypt (3.1.7) bcrypt (3.1.7)
bcrypt-ruby (3.0.1) bootstrap-sass (3.1.1.1)
bootstrap-sass (3.1.1.0)
sass (~> 3.2) sass (~> 3.2)
builder (3.0.4) builder (3.1.4)
cancan (1.6.10) cancan (1.6.10)
capybara (2.2.1) capybara (2.2.1)
mime-types (>= 1.16) mime-types (>= 1.16)
@ -60,19 +55,24 @@ GEM
xpath (~> 2.0) xpath (~> 2.0)
climate_control (0.0.3) climate_control (0.0.3)
activesupport (>= 3.0) activesupport (>= 3.0)
cocaine (0.5.3) cocaine (0.5.4)
climate_control (>= 0.0.3, < 1.0) climate_control (>= 0.0.3, < 1.0)
cocoon (1.2.5) cocoon (1.2.6)
coderay (1.1.0) coffee-rails (4.0.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.7.0)
coveralls (0.7.0) coveralls (0.7.0)
multi_json (~> 1.3) multi_json (~> 1.3)
rest-client rest-client
simplecov (>= 0.7) simplecov (>= 0.7)
term-ansicolor term-ansicolor
thor thor
d3_rails (3.4.3) d3_rails (3.4.6)
railties (>= 3.1.0) railties (>= 3.1.0)
daemons (1.1.9)
devise (3.2.4) devise (3.2.4)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
@ -82,7 +82,6 @@ GEM
diff-lcs (1.2.5) diff-lcs (1.2.5)
docile (1.1.3) docile (1.1.3)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.0.2) execjs (2.0.2)
factory_girl (4.4.0) factory_girl (4.4.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
@ -96,6 +95,11 @@ GEM
gravtastic (3.2.6) gravtastic (3.2.6)
haml (4.0.5) haml (4.0.5)
tilt tilt
haml-rails (0.5.1)
actionpack (~> 4.0.0)
activesupport (~> 4.0.0)
haml (>= 3.1, < 5.0)
railties (~> 4.0.0)
hike (1.2.3) hike (1.2.3)
hoptoad_notifier (2.4.11) hoptoad_notifier (2.4.11)
activesupport activesupport
@ -104,83 +108,75 @@ GEM
i18n (0.6.9) i18n (0.6.9)
inversion (0.12.3) inversion (0.12.3)
loggability (~> 0.4) loggability (~> 0.4)
journey (1.0.4)
jquery-fileupload-rails (0.4.1) jquery-fileupload-rails (0.4.1)
actionpack (>= 3.1) actionpack (>= 3.1)
railties (>= 3.1) railties (>= 3.1)
jquery-rails (3.1.0) jquery-rails (3.1.0)
railties (>= 3.0, < 5.0) railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (4.1.2) jquery-ui-rails (4.2.1)
railties (>= 3.1.0) railties (>= 3.2.16)
json (1.8.1) json (1.8.1)
launchy (2.4.2) launchy (2.4.2)
addressable (~> 2.3) addressable (~> 2.3)
letter_opener (1.2.0) letter_opener (1.2.0)
launchy (~> 2.2) launchy (~> 2.2)
libv8 (3.16.14.3) loggability (0.11.0)
loggability (0.10.1)
mail (2.5.4) mail (2.5.4)
mime-types (~> 1.16) mime-types (~> 1.16)
treetop (~> 1.4.8) treetop (~> 1.4.8)
method_source (0.8.2)
mime-types (1.25.1) mime-types (1.25.1)
mini_portile (0.5.3) mini_portile (0.5.3)
minitest (4.7.5)
multi_json (1.9.2) multi_json (1.9.2)
mysql2 (0.3.15) mysql2 (0.3.15)
nokogiri (1.6.1) nokogiri (1.6.1)
mini_portile (~> 0.5.0) mini_portile (~> 0.5.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
paper_trail (3.0.0) paper_trail (3.0.1)
activerecord (>= 3.0, < 5.0) activerecord (>= 3.0, < 5.0)
activesupport (>= 3.0, < 5.0) activesupport (>= 3.0, < 5.0)
paperclip (3.5.4) paperclip (4.1.1)
activemodel (>= 3.0.0) activemodel (>= 3.0.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
cocaine (~> 0.5.3) cocaine (~> 0.5.3)
mime-types mime-types
pdf-core (0.1.6) pdf-core (0.2.5)
polyglot (0.3.4) polyglot (0.3.4)
prawn (0.15.0) prawn (1.0.0)
pdf-core (~> 0.1.3) pdf-core (~> 0.2.2)
ttfunk (~> 1.1.0) ttfunk (~> 1.1.1)
prawn_rails (0.0.11) prawn_rails (0.0.11)
prawn (>= 0.11.1) prawn (>= 0.11.1)
railties (>= 3.0.0) railties (>= 3.0.0)
pry (0.9.12.6) protected_attributes (1.0.3)
coderay (~> 1.0) activemodel (>= 4.0.0, < 5.0)
method_source (~> 0.8) rack (1.5.2)
slop (~> 3.4)
rack (1.4.5)
rack-cache (1.2)
rack (>= 0.4)
rack-ssl (1.3.4)
rack
rack-test (0.6.2) rack-test (0.6.2)
rack (>= 1.0) rack (>= 1.0)
rails (3.2.17) rails (4.0.0)
actionmailer (= 3.2.17) actionmailer (= 4.0.0)
actionpack (= 3.2.17) actionpack (= 4.0.0)
activerecord (= 3.2.17) activerecord (= 4.0.0)
activeresource (= 3.2.17) activesupport (= 4.0.0)
activesupport (= 3.2.17) bundler (>= 1.3.0, < 2.0)
bundler (~> 1.0) railties (= 4.0.0)
railties (= 3.2.17) sprockets-rails (~> 2.0.0)
railties (3.2.17) rails-observers (0.1.2)
actionpack (= 3.2.17) activemodel (~> 4.0)
activesupport (= 3.2.17) railties (4.0.0)
rack-ssl (~> 1.3.2) actionpack (= 4.0.0)
activesupport (= 4.0.0)
rake (>= 0.8.7) rake (>= 0.8.7)
rdoc (~> 3.4) thor (>= 0.18.1, < 2.0)
thor (>= 0.14.6, < 2.0) rake (10.3.1)
rake (10.2.2) rdoc (4.1.1)
rdoc (3.12.2)
json (~> 1.4) json (~> 1.4)
rdoc-generator-fivefish (0.0.1) rdoc-generator-fivefish (0.1.0)
inversion (~> 0.10) inversion (~> 0.12)
rdoc (~> 3.12) loggability (~> 0.6)
rdoc (~> 4.0)
yajl-ruby (~> 1.1) yajl-ruby (~> 1.1)
ref (1.0.5)
rest-client (1.6.7) rest-client (1.6.7)
mime-types (>= 1.16) mime-types (>= 1.16)
rspec-collection_matchers (0.0.3) rspec-collection_matchers (0.0.3)
@ -204,35 +200,31 @@ GEM
rspec-support (= 3.0.0.beta2) rspec-support (= 3.0.0.beta2)
rspec-support (3.0.0.beta2) rspec-support (3.0.0.beta2)
rubyzip (1.0.0) rubyzip (1.0.0)
sass (3.2.14) sass (3.2.19)
sass-rails (3.2.6) sass-rails (4.0.3)
railties (~> 3.2.0) railties (>= 4.0.0, < 5.0)
sass (>= 3.1.10) sass (~> 3.2.0)
tilt (~> 1.3) sprockets (~> 2.8, <= 2.11.0)
sprockets-rails (~> 2.0)
simplecov (0.8.2) simplecov (0.8.2)
docile (~> 1.1.0) docile (~> 1.1.0)
multi_json multi_json
simplecov-html (~> 0.8.0) simplecov-html (~> 0.8.0)
simplecov-html (0.8.0) simplecov-html (0.8.0)
slop (3.4.7) sprockets (2.11.0)
sprockets (2.2.2)
hike (~> 1.2) hike (~> 1.2)
multi_json (~> 1.0) multi_json (~> 1.0)
rack (~> 1.0) rack (~> 1.0)
tilt (~> 1.1, != 1.3.0) tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.0.1)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (~> 2.8)
sqlite3 (1.3.9) sqlite3 (1.3.9)
term-ansicolor (1.3.0) term-ansicolor (1.3.0)
tins (~> 1.0) tins (~> 1.0)
therubyracer (0.12.1) thor (0.19.1)
libv8 (~> 3.16.14.0) thread_safe (0.3.3)
ref
thin (1.6.2)
daemons (>= 1.0.9)
eventmachine (>= 1.0.0)
rack (>= 1.0.0)
thor (0.18.1)
thread_safe (0.3.1)
atomic (>= 1.1.7, < 2)
tilt (1.4.1) tilt (1.4.1)
tins (1.1.0) tins (1.1.0)
transitions (0.1.12) transitions (0.1.12)
@ -240,13 +232,14 @@ GEM
polyglot polyglot
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
ttfunk (1.1.1) ttfunk (1.1.1)
tzinfo (0.3.38) turbolinks (2.2.2)
uglifier (2.4.0) coffee-rails
tzinfo (0.3.39)
uglifier (2.5.0)
execjs (>= 0.3.0) execjs (>= 0.3.0)
json (>= 1.8.0) json (>= 1.8.0)
warden (1.2.3) warden (1.2.3)
rack (>= 1.0) rack (>= 1.0)
will_paginate (3.0.5)
xpath (2.0.0) xpath (2.0.0)
nokogiri (~> 1.3) nokogiri (~> 1.3)
yajl-ruby (1.2.0) yajl-ruby (1.2.0)
@ -258,7 +251,6 @@ DEPENDENCIES
active_model_serializers active_model_serializers
acts_as_commentable_with_threading acts_as_commentable_with_threading
axlsx_rails axlsx_rails
bcrypt-ruby (~> 3.0.0)
bootstrap-sass bootstrap-sass
cancan cancan
capybara capybara
@ -269,7 +261,7 @@ DEPENDENCIES
factory_girl_rails factory_girl_rails
formtastic-bootstrap formtastic-bootstrap
gravtastic gravtastic
haml haml-rails
hoptoad_notifier (~> 2.3) hoptoad_notifier (~> 2.3)
jquery-fileupload-rails jquery-fileupload-rails
jquery-rails jquery-rails
@ -277,17 +269,16 @@ DEPENDENCIES
letter_opener letter_opener
mysql2 mysql2
paper_trail paper_trail
paperclip (~> 3.0) paperclip
prawn prawn
prawn_rails prawn_rails
pry protected_attributes
rails (= 3.2.17) rails (= 4.0.0)
rails-observers
rdoc-generator-fivefish rdoc-generator-fivefish
rspec-rails (~> 3.0.0.beta) rspec-rails (~> 3.0.0.beta)
sass-rails (>= 3.2) sass-rails (>= 4.0.2)
sqlite3 sqlite3
therubyracer
thin
transitions transitions
uglifier (>= 1.2.2) turbolinks
will_paginate uglifier (>= 1.3.0)

View file

@ -11,8 +11,8 @@
// GO AFTER THE REQUIRES BELOW. // GO AFTER THE REQUIRES BELOW.
// //
//= require jquery //= require jquery
//= require jquery_ujs
//= require jquery.ui.all //= require jquery.ui.all
//= require jquery_ujs
//= require jquery-fileupload //= require jquery-fileupload
//= require jquery-ui-timepicker-addon //= require jquery-ui-timepicker-addon
//= require jquery.dataTables //= require jquery.dataTables

View file

@ -1,7 +1,7 @@
/* /*
*= require strap-on.css.scss *= require strap-on
*= require formtastic-bootstrap *= require formtastic-bootstrap
*= require jquery-ui-1.9.2.custom *= require jquery.ui.all
*= require jquery.fileupload-ui *= require jquery.fileupload-ui
*= require jquery-ui-timepicker-addon *= require jquery-ui-timepicker-addon
*= require jquery.dataTables_themeroller *= require jquery.dataTables_themeroller

View file

@ -1,462 +0,0 @@
/*! jQuery UI - v1.9.2 - 2013-01-20
* http://jqueryui.com
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ece8da&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=100&borderColorHeader=d4ccb0&fcHeader=433f38&iconColorHeader=847e71&bgColorContent=f5f3e5&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dfd9c3&fcContent=312e25&iconColorContent=808080&bgColorDefault=459e00&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=15&borderColorDefault=327E04&fcDefault=ffffff&iconColorDefault=eeeeee&bgColorHover=67b021&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=327E04&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=fafaf4&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=100&borderColorActive=d4ccb0&fcActive=459e00&iconColorActive=8DC262&bgColorHighlight=fcf0ba&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=e8e1b5&fcHighlight=363636&iconColorHighlight=8DC262&bgColorError=ffedad&bgTextureError=03_highlight_soft.png&bgImgOpacityError=95&borderColorError=e3a345&fcError=cd5c0a&iconColorError=cd0a0a&bgColorOverlay=2b2922&bgTextureOverlay=05_inset_soft.png&bgImgOpacityOverlay=15&opacityOverlay=90&bgColorShadow=cccccc&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=95&opacityShadow=20&thicknessShadow=12px&offsetTopShadow=-12px&offsetLeftShadow=-12px&cornerRadiusShadow=10px
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
.ui-helper-clearfix:after { clear: both; }
.ui-helper-clearfix { zoom: 1; }
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
.ui-autocomplete {
position: absolute;
top: 0;
left: 0;
cursor: default;
}
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
.ui-menu .ui-menu-item a.ui-state-focus,
.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
.ui-menu .ui-state-disabled a { cursor: default; }
/* icon support */
.ui-menu-icons { position: relative; }
.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
/* left-aligned */
.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
/* right-aligned */
.ui-menu .ui-menu-icon { position: static; float: right; }
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
.ui-spinner-up { top: 0; }
.ui-spinner-down { bottom: 0; }
/* TR overrides */
.ui-spinner .ui-icon-triangle-1-s {
/* need to fix icons sprite */
background-position:-65px -16px;
}
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tooltip {
padding: 8px;
position: absolute;
z-index: 9999;
max-width: 300px;
-webkit-box-shadow: 0 0 5px #aaa;
box-shadow: 0 0 5px #aaa;
}
/* Fades and background-images don't work well together in IE6, drop the image */
* html .ui-tooltip {
background-image: none;
}
body .ui-tooltip { border-width: 2px; }
/* Component containers
----------------------------------*/
.ui-widget { font-family: segoe ui,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dfd9c3; background: #f5f3e5 url(images/ui-bg_highlight-hard_100_f5f3e5_1x100.png) 50% top repeat-x; color: #312e25; }
.ui-widget-content a { color: #312e25; }
.ui-widget-header { border: 1px solid #d4ccb0; background: #ece8da url(images/ui-bg_gloss-wave_100_ece8da_500x100.png) 50% 50% repeat-x; color: #433f38; font-weight: bold; }
.ui-widget-header a { color: #433f38; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #327E04; background: #459e00 url(images/ui-bg_highlight-hard_15_459e00_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #327E04; background: #67b021 url(images/ui-bg_highlight-soft_25_67b021_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #ffffff; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #d4ccb0; background: #fafaf4 url(images/ui-bg_highlight-hard_100_fafaf4_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #459e00; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #459e00; text-decoration: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #e8e1b5; background: #fcf0ba url(images/ui-bg_glass_55_fcf0ba_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e3a345; background: #ffedad url(images/ui-bg_highlight-soft_95_ffedad_1x100.png) 50% top repeat-x; color: #cd5c0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd5c0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd5c0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_808080_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_808080_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_847e71_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_eeeeee_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_8DC262_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_8DC262_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
/* Overlays */
.ui-widget-overlay { background: #2b2922 url(images/ui-bg_inset-soft_15_2b2922_1x100.png) 50% bottom repeat-x; opacity: .9;filter:Alpha(Opacity=90); }
.ui-widget-shadow { margin: -12px 0 0 -12px; padding: 12px; background: #cccccc url(images/ui-bg_highlight-hard_95_cccccc_1x100.png) 50% top repeat-x; opacity: .2;filter:Alpha(Opacity=20); -moz-border-radius: 10px; -khtml-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }

View file

@ -11,6 +11,10 @@ body > #messages {
padding: 60px 15px 0; padding: 60px 15px 0;
} }
body > #content {
padding-bottom: 60px;
}
#footer { #footer {
position: absolute; position: absolute;
bottom: 0; bottom: 0;

View file

@ -59,8 +59,7 @@ class Conference < ActiveRecord::Base
:start_date, :start_date,
:end_date :end_date
validates_uniqueness_of :short_title validates_uniqueness_of :short_title
validates_format_of :short_title, :with => /^[a-zA-Z0-9_-]*$/ validates_format_of :short_title, :with => /\A[a-zA-Z0-9_-]*\z/
before_create :generate_guid before_create :generate_guid
before_create :create_venue before_create :create_venue
before_create :create_email_settings before_create :create_email_settings

View file

@ -8,7 +8,7 @@ class Event < ActiveRecord::Base
has_many :event_people, :dependent => :destroy has_many :event_people, :dependent => :destroy
has_many :event_attachments, :dependent => :destroy has_many :event_attachments, :dependent => :destroy
has_many :people, :through => :event_people has_many :people, :through => :event_people
has_many :speakers, :through => :event_people, :source => :person, :conditions => {"event_people.event_role" => "speaker"} has_many :speakers, :through => :event_people, :source => :person
has_many :votes has_many :votes
has_many :voters, :through => :votes, :source => :person has_many :voters, :through => :votes, :source => :person
belongs_to :event_type belongs_to :event_type
@ -31,7 +31,7 @@ class Event < ActiveRecord::Base
validates :abstract, :presence => true validates :abstract, :presence => true
validates :media_type, :allow_nil => true, inclusion: {in: Conference.media_types.values} validates :media_type, :allow_nil => true, inclusion: {in: Conference.media_types.values}
scope :confirmed, where(:state => "confirmed") scope :confirmed, -> { where(state: 'confirmed') }
state_machine :initial => :new do state_machine :initial => :new do
state :new state :new

View file

@ -1,13 +1,14 @@
= semantic_form_for(@conference, :url => admin_conference_index_path) do |f| .row
= f.inputs "Basic Information" do .col-md-6.col-md-offset-3
= f.input :title, :hint => "The name of your conference as it shall appear throughout the site. Example: 'OpenSUSE Conference 2013'" = semantic_form_for(@conference, :url => admin_conference_index_path) do |f|
= f.input :short_title, :hint => "A short and unique handle for your conference, using only lower-case letters, numbers and underscores. This will be used to identify your conference in URLs etc. Example: 'froscon2011'" = f.inputs "Basic Information" do
= f.input :social_tag, :hint => "The hashtag you'll use on Twitter and Google+. Don't include the '#' sign!'" = f.input :title, :hint => "The name of your conference as it shall appear throughout the site. Example: 'OpenSUSE Conference 2013'"
= f.input :contact_email, :hint => "Contact email address for your conference. Will be used as reply-to address in emails sent out by the system." = f.input :short_title, :hint => "A short and unique handle for your conference, using only lower-case letters, numbers and underscores. This will be used to identify your conference in URLs etc. Example: 'froscon2011'"
= f.inputs "Scheduling" do = f.input :social_tag, :hint => "The hashtag you'll use on Twitter and Google+. Don't include the '#' sign!'"
= f.input :timezone, :as => :time_zone, :hint => "Please select in what time zone your conference will take place. This is needed to correctly display times for your events." = f.input :contact_email, :hint => "Contact email address for your conference. Will be used as reply-to address in emails sent out by the system."
= f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" } = f.inputs "Scheduling" do
= f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" } = f.input :timezone, :as => :time_zone, :hint => "Please select in what time zone your conference will take place."
= f.input :html_export_path, :hint => "The path for static HTML exports" = f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" }
= f.actions do = f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" }
= f.action :submit, :button_html => {:class => "btn primary"} = f.actions do
= f.action :submit, :button_html => {:class => "btn btn-success pull-right"}

View file

@ -7,7 +7,7 @@
%span.icon-bar %span.icon-bar
%span.icon-bar %span.icon-bar
%span.icon-bar %span.icon-bar
= link_to "OSEM", root_path, :class => 'navbar-brand', :title => "Open Source Event Manager" = link_to CONFIG['name'], root_path, :class => 'navbar-brand', :title => "Open Source Event Manager"
.collapse.navbar-collapse .collapse.navbar-collapse
- if @conference && !@conference.short_title.nil? - if @conference && !@conference.short_title.nil?
%p.navbar-text %p.navbar-text

View file

@ -37,7 +37,13 @@
#footer #footer
.container .container
%p.muted.text-center %p.muted.text-center
OSEM is (C) 2013 %small
= link_to "Matt Barringer", "http://incoherent.de" ©#{Date.today.year}
and released under the GPL. You can get the source code from = link_to "Matt Barringer.", "http://incoherent.de"
= link_to "Github.", "https://github.com/mbarringer/osem" This tool is
=link_to "free software,", "http://www.gnu.org/philosophy/free-sw.html"
released under the
=link_to "MIT license.", "http://opensource.org/licenses/MIT"
You can run, copy, distribute, study, change and improve it.
The source code and the developers are on
=link_to "github.", "https://github.com/openSUSE/osem"

View file

@ -1,8 +1,12 @@
defaults: &defaults defaults: &defaults
# The name of your instance
name: OSEM
# The sender address of emails # The sender address of emails
devise_mail_sender: "no-reply@localhost" devise_mail_sender: "no-reply@localhost"
# The hostname to be used when building the URL in the emails # The hostname to be used when building the URL in the emails
url_for_emails: "localhost:3000" url_for_emails: "localhost:3000"
# A secret key for your rails app. You can generate one with 'rake secret'
secret_key: 12345
# A secret key. You can generate one with 'rake secret' # A secret key. You can generate one with 'rake secret'
devise_secret_key: '12345' devise_secret_key: '12345'
# errbit configuration, get your own instance: https://github.com/errbit/errbit # errbit configuration, get your own instance: https://github.com/errbit/errbit

View file

@ -1,8 +1,8 @@
# Load the rails application # Load the rails application
require File.expand_path('../application', __FILE__) require File.expand_path('../application', __FILE__)
# Load the configuration file
path = Rails.root.join("config", "config.yml") path = Rails.root.join("config", "config.yml")
begin begin
CONFIG = YAML.load_file(path)[Rails.env] CONFIG = YAML.load_file(path)[Rails.env]
rescue Exception rescue Exception
@ -12,3 +12,4 @@ end
# Initialize the rails application # Initialize the rails application
Osem::Application.initialize! Osem::Application.initialize!
Osem::Application.config.secret_keybase = CONFIG['secret_key']

View file

@ -9,9 +9,6 @@ Osem::Application.configure do
# since you don't have to restart the web server when you make code changes. # since you don't have to restart the web server when you make code changes.
config.cache_classes = false config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching # Show full error reports and disable caching
config.consider_all_requests_local = true config.consider_all_requests_local = true
config.action_controller.perform_caching = false config.action_controller.perform_caching = false
@ -28,15 +25,16 @@ Osem::Application.configure do
# Raise exception on mass assignment protection for Active Record models # Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict config.active_record.mass_assignment_sanitizer = :strict
# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5
# Do not compress assets # Do not compress assets
config.assets.compress = false config.assets.compress = false
# Expands the lines which load the assets # Expands the lines which load the assets
config.assets.debug = true config.assets.debug = true
# Do not eager load code on boot.
config.eager_load = false
# Set the detault url for action mailer
config.action_mailer.default_url_options = { :host => CONFIG['url_for_emails'] } config.action_mailer.default_url_options = { :host => CONFIG['url_for_emails'] }
end end

View file

@ -8,6 +8,12 @@ Osem::Application.configure do
config.consider_all_requests_local = false config.consider_all_requests_local = false
config.action_controller.perform_caching = true config.action_controller.perform_caching = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Disable Rails's static asset server (Apache or nginx will already do this) # Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false config.serve_static_assets = false
# Compress JavaScripts and CSS # Compress JavaScripts and CSS
@ -60,10 +66,6 @@ Osem::Application.configure do
# Send deprecation notices to registered listeners # Send deprecation notices to registered listeners
config.active_support.deprecation = :notify config.active_support.deprecation = :notify
# Log the query plan for queries taking more than this (works # Set the detault url for action mailer
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5
config.action_mailer.default_url_options = { :host => CONFIG['url_for_emails'] } config.action_mailer.default_url_options = { :host => CONFIG['url_for_emails'] }
end end

View file

@ -11,8 +11,8 @@ Osem::Application.configure do
config.serve_static_assets = true config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600" config.static_cache_control = "public, max-age=3600"
# Log error messages when you accidentally call methods on nil # Do not eager load code on boot.
config.whiny_nils = true config.eager_load = false
# Show full error reports and disable caching # Show full error reports and disable caching
config.consider_all_requests_local = true config.consider_all_requests_local = true

View file

@ -1,12 +1,13 @@
# Use this hook to configure devise mailer, warden hooks and so forth. # Use this hook to configure devise mailer, warden hooks and so forth.
# Many of these configuration options can be set straight in your model. # Many of these configuration options can be set straight in your model.
Devise.setup do |config| Devise.setup do |config|
# ==> Secret key # ==> Secret key, generate one with `rake secret`
config.secret_key = CONFIG['devise_secret_key'] config.secret_key = CONFIG['devise_secret_key']
# ==> Mailer Configuration # ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer, # Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class with default "from" parameter. # note that it will be overwritten if you use your own mailer class with default "from" parameter.
config.mailer_sender = CONFIG['devise_mail_sender'] config.mailer_sender = CONFIG['sender_for_emails']
# Configure the class responsible to send e-mails. # Configure the class responsible to send e-mails.
# config.mailer = "Devise::Mailer" # config.mailer = "Devise::Mailer"

View file

@ -17,13 +17,13 @@ Osem::Application.routes.draw do
delete "/registrations" => "registrations#delete" delete "/registrations" => "registrations#delete"
put "/registrations/change_field" => "registrations#change_field" put "/registrations/change_field" => "registrations#change_field"
get "/emailsettings" => "emails#show", :as => "email_settings" get "/emailsettings" => "emails#show", :as => "email_settings"
put "/emailsettings" => "emails#update", :as => "email_settings" put "/emailsettings" => "emails#update"
get "/supporter_levels" => "SupporterLevels#show" get "/supporter_levels" => "supporter_levels#show"
put "/supporter_levels" => "SupporterLevels#update" put "/supporter_levels" => "supporter_levels#update"
get "/venue" => "venue#show", :as => "venue_info" get "/venue" => "venue#show", :as => "venue_info"
put "/venue" => "venue#update", :as => "venue_update" put "/venue" => "venue#update", :as => "venue_update"
get "/social_events" => "SocialEvents#show", :as => "social_events" get "/social_events" => "social_events#show", :as => "social_events"
put "/social_events" => "SocialEvents#update", :as => "social_events" put "/social_events" => "social_events#update"
get "/rooms" => "rooms#show", :as => "rooms_list" get "/rooms" => "rooms#show", :as => "rooms_list"
put "/rooms" => "rooms#update", :as => "rooms_update" put "/rooms" => "rooms#update", :as => "rooms_update"
get "/tracks" => "tracks#show", :as => "tracks_list" get "/tracks" => "tracks#show", :as => "tracks_list"
@ -57,16 +57,16 @@ Osem::Application.routes.draw do
resources :conference, :only => [] do resources :conference, :only => [] do
resources :proposal do resources :proposal do
resources :event_attachment, :controller => "EventAttachments" resources :event_attachment, :controller => "event_attachments"
put "/confirm" => "proposal#confirm" put "/confirm" => "proposal#confirm"
end end
resource :schedule, :only => [] do resource :schedule, :only => [] do
get "/" => "schedule#index" get "/" => "schedule#index"
end end
member do member do
get "/register" => "ConferenceRegistration#register" get "/register" => "conference_registration#register"
put "/register" => "ConferenceRegistration#update" put "/register" => "conference_registration#update"
delete "/register" => "ConferenceRegistration#unregister" delete "/register" => "conference_registration#unregister"
end end
end end
@ -86,7 +86,7 @@ Osem::Application.routes.draw do
end end
end end
match "/admin" => redirect("/admin/conference") get "/admin" => redirect("/admin/conference")
root :to => "home#index" root :to => "home#index"
end end

View file

@ -9,161 +9,161 @@
# from scratch. The latter is a flawed and unsustainable approach (the more migrations # from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues). # you'll amass, the slower it'll run and the greater likelihood for issues).
# #
# It's strongly recommended to 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 => 20140414131028) do ActiveRecord::Schema.define(version: 20140414131028) do
create_table "answers", :force => true do |t| create_table "answers", force: true do |t|
t.string "title" t.string "title"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "call_for_papers", :force => true do |t| create_table "call_for_papers", force: true do |t|
t.date "start_date", :null => false t.date "start_date", null: false
t.date "end_date", :null => false t.date "end_date", null: false
t.date "hard_deadline", :null => false t.date "hard_deadline", null: false
t.text "description", :null => false t.text "description", null: false
t.integer "conference_id" t.integer "conference_id"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.boolean "schedule_changes", :default => false t.boolean "schedule_changes", default: false
t.integer "rating", :default => 3 t.integer "rating", default: 3
t.text "rating_desc" t.text "rating_desc"
t.boolean "schedule_public" t.boolean "schedule_public"
end end
create_table "comments", :force => true do |t| create_table "comments", force: true do |t|
t.string "title", :limit => 50, :default => "" t.string "title", limit: 50, default: ""
t.text "body" t.text "body"
t.integer "commentable_id" t.integer "commentable_id"
t.string "commentable_type" t.string "commentable_type"
t.integer "user_id" t.integer "user_id"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.string "subject" t.string "subject"
t.integer "parent_id" t.integer "parent_id"
t.integer "lft" t.integer "lft"
t.integer "rgt" t.integer "rgt"
end end
add_index "comments", ["commentable_id"], :name => "index_comments_on_commentable_id" add_index "comments", ["commentable_id"], name: "index_comments_on_commentable_id"
add_index "comments", ["commentable_type"], :name => "index_comments_on_commentable_type" add_index "comments", ["commentable_type"], name: "index_comments_on_commentable_type"
add_index "comments", ["user_id"], :name => "index_comments_on_user_id" add_index "comments", ["user_id"], name: "index_comments_on_user_id"
create_table "conferences", :force => true do |t| create_table "conferences", force: true do |t|
t.string "guid", :null => false t.string "guid", null: false
t.string "title", :null => false t.string "title", null: false
t.string "short_title", :null => false t.string "short_title", null: false
t.string "social_tag" t.string "social_tag"
t.string "contact_email", :null => false t.string "contact_email", null: false
t.string "timezone", :null => false t.string "timezone", null: false
t.string "html_export_path" t.string "html_export_path"
t.date "start_date", :null => false t.date "start_date", null: false
t.date "end_date", :null => false t.date "end_date", null: false
t.integer "venue_id" t.integer "venue_id"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.date "registration_start_date" t.date "registration_start_date"
t.date "registration_end_date" t.date "registration_end_date"
t.string "logo_file_name" t.string "logo_file_name"
t.string "logo_content_type" t.string "logo_content_type"
t.integer "logo_file_size" t.integer "logo_file_size"
t.datetime "logo_updated_at" t.datetime "logo_updated_at"
t.boolean "use_dietary_choices", :default => false t.boolean "use_dietary_choices", default: false
t.boolean "use_supporter_levels", :default => false t.boolean "use_supporter_levels", default: false
t.integer "revision" t.integer "revision"
t.boolean "use_vpositions", :default => false t.boolean "use_vpositions", default: false
t.boolean "use_vdays", :default => false t.boolean "use_vdays", default: false
t.boolean "use_difficulty_levels", :default => false t.boolean "use_difficulty_levels", default: false
t.boolean "use_volunteers" t.boolean "use_volunteers"
t.string "media_id" t.string "media_id"
t.string "media_type" t.string "media_type"
end end
create_table "conferences_questions", :id => false, :force => true do |t| create_table "conferences_questions", id: false, force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "question_id" t.integer "question_id"
end end
create_table "dietary_choices", :force => true do |t| create_table "dietary_choices", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", :null => false t.string "title", null: false
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "difficulty_levels", :force => true do |t| create_table "difficulty_levels", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title" t.string "title"
t.text "description" t.text "description"
t.string "color", :default => "#ffffff" t.string "color", default: "#ffffff"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "email_settings", :force => true do |t| create_table "email_settings", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.boolean "send_on_registration", :default => true t.boolean "send_on_registration", default: true
t.boolean "send_on_accepted", :default => true t.boolean "send_on_accepted", default: true
t.boolean "send_on_rejected", :default => true t.boolean "send_on_rejected", default: true
t.boolean "send_on_confirmed_without_registration", :default => true t.boolean "send_on_confirmed_without_registration", default: true
t.text "registration_email_template" t.text "registration_email_template"
t.text "accepted_email_template" t.text "accepted_email_template"
t.text "rejected_email_template" t.text "rejected_email_template"
t.text "confirmed_email_template" t.text "confirmed_email_template"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.string "registration_subject" t.string "registration_subject"
t.string "accepted_subject" t.string "accepted_subject"
t.string "rejected_subject" t.string "rejected_subject"
t.string "confirmed_without_registration_subject" t.string "confirmed_without_registration_subject"
end end
create_table "event_attachments", :force => true do |t| create_table "event_attachments", force: true do |t|
t.integer "event_id" t.integer "event_id"
t.string "title", :null => false t.string "title", null: false
t.string "attachment_file_name" t.string "attachment_file_name"
t.string "attachment_content_type" t.string "attachment_content_type"
t.integer "attachment_file_size" t.integer "attachment_file_size"
t.datetime "attachment_updated_at" t.datetime "attachment_updated_at"
t.boolean "public", :default => false t.boolean "public", default: false
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "event_people", :force => true do |t| create_table "event_people", force: true do |t|
t.integer "proposal_id" t.integer "proposal_id"
t.integer "person_id" t.integer "person_id"
t.integer "event_id" t.integer "event_id"
t.string "event_role", :default => "participant", :null => false t.string "event_role", default: "participant", null: false
t.string "comment" t.string "comment"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "event_types", :force => true do |t| create_table "event_types", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", :null => false t.string "title", null: false
t.integer "length", :default => 30 t.integer "length", default: 30
t.integer "minimum_abstract_length", :default => 0 t.integer "minimum_abstract_length", default: 0
t.integer "maximum_abstract_length", :default => 500 t.integer "maximum_abstract_length", default: 500
end end
create_table "events", :force => true do |t| create_table "events", force: true do |t|
t.string "guid", :null => false t.string "guid", null: false
t.integer "conference_id" t.integer "conference_id"
t.integer "event_type_id" t.integer "event_type_id"
t.string "title", :null => false t.string "title", null: false
t.string "subtitle" t.string "subtitle"
t.integer "time_slots" t.integer "time_slots"
t.string "state", :default => "new", :null => false t.string "state", default: "new", null: false
t.string "progress", :default => "new", :null => false t.string "progress", default: "new", null: false
t.string "language" t.string "language"
t.datetime "start_time" t.datetime "start_time"
t.text "abstract" t.text "abstract"
t.text "description" t.text "description"
t.boolean "public", :default => true t.boolean "public", default: true
t.string "logo_file_name" t.string "logo_file_name"
t.string "logo_content_type" t.string "logo_content_type"
t.integer "logo_file_size" t.integer "logo_file_size"
@ -171,26 +171,26 @@ ActiveRecord::Schema.define(:version => 20140414131028) do
t.text "proposal_additional_speakers" t.text "proposal_additional_speakers"
t.integer "track_id" t.integer "track_id"
t.integer "room_id" t.integer "room_id"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.string "media_id" t.string "media_id"
t.string "media_type" t.string "media_type"
t.boolean "require_registration" t.boolean "require_registration"
t.integer "difficulty_level_id" t.integer "difficulty_level_id"
end end
create_table "events_registrations", :id => false, :force => true do |t| create_table "events_registrations", id: false, force: true do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "event_id" t.integer "event_id"
end end
create_table "people", :force => true do |t| create_table "people", force: true do |t|
t.string "guid", :null => false t.string "guid", null: false
t.string "first_name", :default => "" t.string "first_name", default: ""
t.string "last_name", :default => "" t.string "last_name", default: ""
t.string "public_name", :default => "" t.string "public_name", default: ""
t.string "company", :default => "" t.string "company", default: ""
t.string "email", :null => false t.string "email", null: false
t.boolean "email_public" t.boolean "email_public"
t.string "avatar_file_name" t.string "avatar_file_name"
t.string "avatar_content_type" t.string "avatar_content_type"
@ -198,8 +198,8 @@ ActiveRecord::Schema.define(:version => 20140414131028) do
t.datetime "avatar_updated_at" t.datetime "avatar_updated_at"
t.text "biography" t.text "biography"
t.integer "user_id" t.integer "user_id"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.string "irc_nickname" t.string "irc_nickname"
t.text "volunteer_experience" t.text "volunteer_experience"
t.string "tshirt" t.string "tshirt"
@ -207,119 +207,119 @@ ActiveRecord::Schema.define(:version => 20140414131028) do
t.string "languages" t.string "languages"
end end
create_table "qanswers", :force => true do |t| create_table "qanswers", force: true do |t|
t.integer "question_id" t.integer "question_id"
t.integer "answer_id" t.integer "answer_id"
end end
create_table "qanswers_registrations", :id => false, :force => true do |t| create_table "qanswers_registrations", id: false, force: true do |t|
t.integer "registration_id", :null => false t.integer "registration_id", null: false
t.integer "qanswer_id", :null => false t.integer "qanswer_id", null: false
end end
create_table "question_types", :force => true do |t| create_table "question_types", force: true do |t|
t.string "title" t.string "title"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "questions", :force => true do |t| create_table "questions", force: true do |t|
t.string "title" t.string "title"
t.integer "question_type_id" t.integer "question_type_id"
t.integer "conference_id" t.integer "conference_id"
t.boolean "global" t.boolean "global"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "registrations", :force => true do |t| create_table "registrations", force: true do |t|
t.integer "person_id" t.integer "person_id"
t.integer "conference_id" t.integer "conference_id"
t.boolean "attending_social_events", :default => true t.boolean "attending_social_events", default: true
t.boolean "attending_with_partner", :default => false t.boolean "attending_with_partner", default: false
t.boolean "using_affiliated_lodging", :default => false t.boolean "using_affiliated_lodging", default: false
t.datetime "arrival" t.datetime "arrival"
t.datetime "departure" t.datetime "departure"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
t.integer "dietary_choice_id" t.integer "dietary_choice_id"
t.text "other_dietary_choice" t.text "other_dietary_choice"
t.boolean "handicapped_access_required", :default => false t.boolean "handicapped_access_required", default: false
t.text "other_special_needs" t.text "other_special_needs"
t.boolean "attended", :default => false t.boolean "attended", default: false
t.boolean "volunteer" t.boolean "volunteer"
end end
create_table "registrations_social_events", :id => false, :force => true do |t| create_table "registrations_social_events", id: false, force: true do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "social_event_id" t.integer "social_event_id"
end end
create_table "registrations_vchoices", :id => false, :force => true do |t| create_table "registrations_vchoices", id: false, force: true do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "vchoice_id" t.integer "vchoice_id"
end end
create_table "roles", :force => true do |t| create_table "roles", force: true do |t|
t.string "name" t.string "name"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "roles_users", :id => false, :force => true do |t| create_table "roles_users", id: false, force: true do |t|
t.integer "role_id" t.integer "role_id"
t.integer "user_id" t.integer "user_id"
end end
create_table "rooms", :force => true do |t| create_table "rooms", force: true do |t|
t.string "guid", :null => false t.string "guid", null: false
t.integer "conference_id" t.integer "conference_id"
t.string "name", :null => false t.string "name", null: false
t.integer "size" t.integer "size"
t.boolean "public", :default => true t.boolean "public", default: true
end end
create_table "social_events", :force => true do |t| create_table "social_events", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title" t.string "title"
t.text "description" t.text "description"
t.date "date" t.date "date"
end end
create_table "supporter_levels", :force => true do |t| create_table "supporter_levels", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", :null => false t.string "title", null: false
t.string "url" t.string "url"
end end
create_table "supporter_registrations", :force => true do |t| create_table "supporter_registrations", force: true do |t|
t.integer "registration_id" t.integer "registration_id"
t.integer "supporter_level_id" t.integer "supporter_level_id"
t.integer "conference_id" t.integer "conference_id"
t.string "name" t.string "name"
t.string "email" t.string "email"
t.string "code" t.string "code"
t.boolean "code_is_valid", :default => false t.boolean "code_is_valid", default: false
t.datetime "created_at" t.datetime "created_at"
end end
create_table "tracks", :force => true do |t| create_table "tracks", force: true do |t|
t.string "guid", :null => false t.string "guid", null: false
t.integer "conference_id" t.integer "conference_id"
t.string "name", :null => false t.string "name", null: false
t.text "description" t.text "description"
t.string "color", :default => "#ffffff" t.string "color", default: "#ffffff"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "users", :force => true do |t| create_table "users", force: true do |t|
t.string "email", :default => "", :null => false t.string "email", default: "", null: false
t.string "encrypted_password", :default => "", :null => false t.string "encrypted_password", default: "", null: false
t.string "reset_password_token" t.string "reset_password_token"
t.datetime "reset_password_sent_at" t.datetime "reset_password_sent_at"
t.datetime "remember_created_at" t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0 t.integer "sign_in_count", default: 0
t.datetime "current_sign_in_at" t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at" t.datetime "last_sign_in_at"
t.string "current_sign_in_ip" t.string "current_sign_in_ip"
@ -328,65 +328,65 @@ ActiveRecord::Schema.define(:version => 20140414131028) do
t.datetime "confirmed_at" t.datetime "confirmed_at"
t.datetime "confirmation_sent_at" t.datetime "confirmation_sent_at"
t.string "unconfirmed_email" t.string "unconfirmed_email"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
create_table "vchoices", :force => true do |t| create_table "vchoices", force: true do |t|
t.integer "vday_id" t.integer "vday_id"
t.integer "vposition_id" t.integer "vposition_id"
end end
create_table "vdays", :force => true do |t| create_table "vdays", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.date "day" t.date "day"
t.text "description" t.text "description"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "venues", :force => true do |t| create_table "venues", force: true do |t|
t.string "guid" t.string "guid"
t.text "name", :limit => 255 t.text "name", limit: 255
t.text "address", :limit => 255 t.text "address", limit: 255
t.string "website" t.string "website"
t.text "description" t.text "description"
t.string "offline_map_url" t.string "offline_map_url"
t.string "offline_map_bounds" t.string "offline_map_bounds"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "versions", :force => true do |t| create_table "versions", force: true do |t|
t.string "item_type", :null => false t.string "item_type", null: false
t.integer "item_id", :null => false t.integer "item_id", null: false
t.string "event", :null => false t.string "event", null: false
t.string "whodunnit" t.string "whodunnit"
t.text "object" t.text "object"
t.text "object_changes" t.text "object_changes"
t.datetime "created_at" t.datetime "created_at"
end end
add_index "versions", ["item_type", "item_id"], :name => "index_versions_on_item_type_and_item_id" add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
create_table "votes", :force => true do |t| create_table "votes", force: true do |t|
t.integer "person_id" t.integer "person_id"
t.integer "event_id" t.integer "event_id"
t.integer "rating" t.integer "rating"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
create_table "vpositions", :force => true do |t| create_table "vpositions", force: true do |t|
t.integer "conference_id" t.integer "conference_id"
t.string "title", :null => false t.string "title", null: false
t.text "description" t.text "description"
t.datetime "created_at", :null => false t.datetime "created_at"
t.datetime "updated_at", :null => false t.datetime "updated_at"
end end
end end