Another round of splash design
* Add map to splash * Reverse venue<->conference relation * Split venue address into fields * Don't go through venue for lodgings anymore
This commit is contained in:
parent
30e8ab856c
commit
cb227a0afc
55 changed files with 717 additions and 548 deletions
6
Gemfile
6
Gemfile
|
|
@ -59,6 +59,12 @@ gem 'jquery-datatables-rails', '~> 2.2.1'
|
|||
# for user avatars
|
||||
gem 'gravtastic'
|
||||
|
||||
# for maps
|
||||
gem 'leaflet-rails', '~> 0.7.4'
|
||||
|
||||
# for country selects
|
||||
gem 'country_select', github: 'stefanpenner/country_select'
|
||||
|
||||
# for upload management
|
||||
gem 'paperclip'
|
||||
|
||||
|
|
|
|||
13
Gemfile.lock
13
Gemfile.lock
|
|
@ -1,3 +1,10 @@
|
|||
GIT
|
||||
remote: git://github.com/stefanpenner/country_select.git
|
||||
revision: 585e9538a01ae9878e92f12a98261a09842ed015
|
||||
specs:
|
||||
country_select (2.1.0)
|
||||
countries (~> 0.9, >= 0.9.3)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
|
|
@ -98,12 +105,15 @@ GEM
|
|||
execjs
|
||||
coffee-script-source (1.7.0)
|
||||
columnize (0.8.9)
|
||||
countries (0.9.3)
|
||||
currencies (~> 0.4.2)
|
||||
coveralls (0.7.0)
|
||||
multi_json (~> 1.3)
|
||||
rest-client
|
||||
simplecov (>= 0.7)
|
||||
term-ansicolor
|
||||
thor
|
||||
currencies (0.4.2)
|
||||
d3_rails (3.4.6)
|
||||
railties (>= 3.1.0)
|
||||
daemons (1.1.9)
|
||||
|
|
@ -178,6 +188,7 @@ GEM
|
|||
jwt (1.0.0)
|
||||
launchy (2.4.2)
|
||||
addressable (~> 2.3)
|
||||
leaflet-rails (0.7.4)
|
||||
letter_opener (1.2.0)
|
||||
launchy (~> 2.2)
|
||||
listen (2.7.2)
|
||||
|
|
@ -430,6 +441,7 @@ DEPENDENCIES
|
|||
capybara
|
||||
chart-js-rails
|
||||
cocoon
|
||||
country_select!
|
||||
coveralls
|
||||
d3_rails
|
||||
daemons
|
||||
|
|
@ -447,6 +459,7 @@ DEPENDENCIES
|
|||
hoptoad_notifier (~> 2.3)
|
||||
jquery-datatables-rails (~> 2.2.1)
|
||||
jquery-rails
|
||||
leaflet-rails (~> 0.7.4)
|
||||
letter_opener
|
||||
mina
|
||||
momentjs-rails (>= 2.8.1)
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@
|
|||
//= require to-markdown
|
||||
//= require markdown
|
||||
//= require moment
|
||||
//= require leaflet
|
||||
//= require bootstrap-datetimepicker
|
||||
//= require osem-datepickers
|
||||
//= require osem-datatables
|
||||
//= require osem-tickets
|
||||
//= require osem-splash
|
||||
|
||||
$(document).ready(function() {
|
||||
$('a[disabled=disabled]').click(function(event){
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
$(function () {
|
||||
$(document).ready(function() {
|
||||
var t = new Trianglify({cellsize: 100, x_gradient: triangle_colors });
|
||||
var pattern = t.generate(document.body.clientWidth, ($( "#splash-banner" ).height() + 200 ));
|
||||
$('#splash-banner').css('background-image', pattern.dataUrl);
|
||||
});
|
||||
});
|
||||
|
|
@ -12,4 +12,5 @@
|
|||
*= require font-awesome
|
||||
*= require bootstrap-markdown.min
|
||||
*= require bootstrap-datetimepicker
|
||||
*= require leaflet
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#splash {
|
||||
// Counter the general padding for #content
|
||||
margin-bottom: -60px;
|
||||
section {
|
||||
padding-top: 60px;
|
||||
padding-bottom: 60px;
|
||||
|
|
@ -11,100 +13,129 @@
|
|||
section:nth-child(odd) {
|
||||
background: none repeat scroll 0 0 #ffffff;
|
||||
color: #7b7b7b;
|
||||
}
|
||||
}
|
||||
|
||||
#splash-banner{
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
margin-top: -10px;
|
||||
padding-top: 100px;
|
||||
padding-bottom: 100px;
|
||||
.container {
|
||||
#splash-header {
|
||||
background-color: rgba(224, 224, 224,.80);
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
.thumbnail {
|
||||
background: none repeat scroll 0 0 #e0e0e0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#program {
|
||||
.tracks:hover{
|
||||
background-color: white;
|
||||
.cta-button {
|
||||
padding-top: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
#callforpapers {
|
||||
.timer-box{
|
||||
width: 130px;
|
||||
margin: 35px 24px 20px 0;
|
||||
border-radius: 50%;
|
||||
border:4px solid #989797;
|
||||
#banner{
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
margin-top: -10px;
|
||||
padding-top: 100px;
|
||||
padding-bottom: 100px;
|
||||
.container {
|
||||
#header {
|
||||
background-color: rgba(224, 224, 224,.80);
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
#cfp-date{
|
||||
font-size: 40px;
|
||||
color: #ff6633;
|
||||
|
||||
#program {
|
||||
h3 {
|
||||
padding-left: 5px;
|
||||
}
|
||||
.track {
|
||||
padding: 20px;
|
||||
}
|
||||
.track:hover{
|
||||
background-color: #F0FFFF;
|
||||
}
|
||||
}
|
||||
|
||||
#callforpapers {
|
||||
.timer-box{
|
||||
width: 130px;
|
||||
margin: 35px 24px 20px 0;
|
||||
border-radius: 50%;
|
||||
border:4px solid #989797;
|
||||
}
|
||||
}
|
||||
|
||||
#venue {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
#location {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
width: 100%;
|
||||
background-size: cover;
|
||||
min-height: 500px;
|
||||
h1,h2,p{
|
||||
color: #fff;
|
||||
#lodging {
|
||||
.img-lodging {
|
||||
max-height: 200px;
|
||||
}
|
||||
}
|
||||
h1,h2,li,p{
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
|
||||
font-weight: 400;
|
||||
|
||||
#sponsors {
|
||||
.img-sponsor {
|
||||
max-height: 100px;
|
||||
}
|
||||
.img-sponsor-1 {
|
||||
max-height: 200px;
|
||||
}
|
||||
.img-sponsor-2 {
|
||||
max-height: 150px;
|
||||
}
|
||||
.img-sponsor-3 {
|
||||
max-height: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#social-media{
|
||||
i{
|
||||
color: #4a4a4a;
|
||||
#social-media{
|
||||
background: none repeat scroll 0 0 #2f2f2f;
|
||||
padding-top: 60px;
|
||||
padding-bottom: 60px;
|
||||
i{
|
||||
color: #4a4a4a;
|
||||
}
|
||||
i:hover{
|
||||
color: #16a085;
|
||||
}
|
||||
a{
|
||||
padding-left: 100px;
|
||||
}
|
||||
a:nth-child(-n+1) {
|
||||
padding-left: 0px;
|
||||
}
|
||||
}
|
||||
i:hover{
|
||||
color: #16a085;
|
||||
}
|
||||
}
|
||||
|
||||
.scroll-top-wrapper {
|
||||
position: fixed;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
z-index: 99999999;
|
||||
background-color: #424242;
|
||||
width: 50px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
right: 30px;
|
||||
bottom: 30px;
|
||||
padding-top: 2px;
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
-webkit-transition: all 0.5s ease-in-out;
|
||||
-moz-transition: all 0.5s ease-in-out;
|
||||
-ms-transition: all 0.5s ease-in-out;
|
||||
-o-transition: all 0.5s ease-in-out;
|
||||
transition: all 0.5s ease-in-out;
|
||||
i.fa {
|
||||
line-height: inherit;
|
||||
}
|
||||
&.show {
|
||||
visibility:visible;
|
||||
cursor:pointer;
|
||||
opacity: 1.0;
|
||||
}
|
||||
a {
|
||||
color: white;
|
||||
|
||||
.scroll-top-wrapper {
|
||||
position: fixed;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
z-index: 99999999;
|
||||
background-color: #424242;
|
||||
width: 50px;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
right: 30px;
|
||||
bottom: 30px;
|
||||
padding-top: 2px;
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
-webkit-transition: all 0.5s ease-in-out;
|
||||
-moz-transition: all 0.5s ease-in-out;
|
||||
-ms-transition: all 0.5s ease-in-out;
|
||||
-o-transition: all 0.5s ease-in-out;
|
||||
transition: all 0.5s ease-in-out;
|
||||
i.fa {
|
||||
line-height: inherit;
|
||||
}
|
||||
&.show {
|
||||
visibility:visible;
|
||||
cursor:pointer;
|
||||
opacity: 1.0;
|
||||
}
|
||||
a {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,11 +5,15 @@ html {
|
|||
|
||||
body {
|
||||
/* Margin bottom by 2 times the footer height */
|
||||
margin-bottom: 120px;
|
||||
margin-bottom: 60px;
|
||||
/* Margin bottom by navbar height */
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
#content {
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
|
@ -28,4 +32,21 @@ body {
|
|||
|
||||
.img-center {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* centered columns styles */
|
||||
.row-centered {
|
||||
text-align:center;
|
||||
}
|
||||
.col-centered {
|
||||
display:inline-block;
|
||||
float:none;
|
||||
/* reset the text-align */
|
||||
text-align:left;
|
||||
/* inline-block space fix */
|
||||
margin-right:-4px;
|
||||
}
|
||||
|
||||
.col-top {
|
||||
vertical-align:top;
|
||||
}
|
||||
|
|
@ -1,23 +1,21 @@
|
|||
module Admin
|
||||
class LodgingsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :venue, through: :conference, singleton: true
|
||||
load_and_authorize_resource :lodging, through: :venue
|
||||
load_and_authorize_resource :lodging, through: :conference
|
||||
|
||||
def index
|
||||
authorize! :update, Lodging.new(venue_id: @venue.id)
|
||||
end
|
||||
|
||||
def show; end
|
||||
|
||||
def new
|
||||
@lodging = @venue.lodgings.new
|
||||
@lodging = @conference.lodgings.new
|
||||
end
|
||||
|
||||
def create
|
||||
@lodging = @venue.lodgings.new(lodging_params)
|
||||
@lodging = @conference.lodgings.new(lodging_params)
|
||||
if @lodging.save
|
||||
redirect_to(admin_conference_lodging_path(conference_id: @conference.short_title, id: @lodging.id),
|
||||
redirect_to(admin_conference_lodgings_path(conference_id: @conference.short_title),
|
||||
notice: 'Lodging successfully created.')
|
||||
else
|
||||
flash[:error] = "Creating Lodging failed: #{@lodging.errors.full_messages.join('. ')}."
|
||||
|
|
|
|||
|
|
@ -3,16 +3,48 @@ module Admin
|
|||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :venue, through: :conference, singleton: true
|
||||
|
||||
def show; end
|
||||
|
||||
def new
|
||||
@venue = @conference.build_venue
|
||||
end
|
||||
|
||||
def edit; end
|
||||
|
||||
def create
|
||||
@venue = @conference.build_venue(venue_params)
|
||||
|
||||
if @venue.save
|
||||
redirect_to admin_conference_venue_path,
|
||||
notice: 'Venue successfully created.'
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
if @venue.update_attributes(params[:venue])
|
||||
redirect_to(edit_admin_conference_venue_path(conference_id: @conference.short_title),
|
||||
if @venue.update_attributes(venue_params)
|
||||
redirect_to(admin_conference_venue_path(conference_id: @conference.short_title),
|
||||
notice: 'Venue was successfully updated.')
|
||||
else
|
||||
flash[:error] = "Update venue failed: #{@venue.errors.full_messages.join('. ')}."
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @venue.destroy
|
||||
redirect_to admin_conference_venue_path, notice: 'Venue was successfully deleted.'
|
||||
else
|
||||
redirect_to admin_conference_venue_path, alert: 'A error prohibited this Venue from being destroyed: '\
|
||||
"#{@venue.errors.full_messages.join('. ')}."
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def venue_params
|
||||
params[:venue]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -171,6 +171,34 @@ module ApplicationHelper
|
|||
result
|
||||
end
|
||||
|
||||
def event_types(conference)
|
||||
all = conference.event_types.map { |et | et.title.pluralize }
|
||||
first = all[0...-1]
|
||||
last = all[-1]
|
||||
ets = ''
|
||||
if all.length > 1
|
||||
ets << first.join(', ')
|
||||
ets << " and #{last}"
|
||||
else
|
||||
ets = all.join
|
||||
end
|
||||
return ets
|
||||
end
|
||||
|
||||
def tracks(conference)
|
||||
all = conference.tracks.map {|t| t.name}
|
||||
first = all[0...-1]
|
||||
last = all[-1]
|
||||
ts = ''
|
||||
if all.length > 1
|
||||
ts << first.join(', ')
|
||||
ts << " and #{last}"
|
||||
else
|
||||
ts = all.join
|
||||
end
|
||||
return ts
|
||||
end
|
||||
|
||||
def markdown(text)
|
||||
options = {
|
||||
autolink: true,
|
||||
|
|
|
|||
|
|
@ -43,21 +43,15 @@ class Ability
|
|||
|
||||
def user_with_roles(user)
|
||||
conf_ids_for_organizer = []
|
||||
venue_ids_for_organizer = []
|
||||
conf_ids_for_cfp = []
|
||||
venue_ids_for_cfp = []
|
||||
conf_ids_for_info_desk = []
|
||||
conf_ids_for_volunteer_coordinator = []
|
||||
|
||||
# Ids of all the conferences for which the user has an 'organizer' role
|
||||
conf_ids_for_organizer =
|
||||
Conference.with_role(:organizer, user).pluck(:id) if user.has_role? :organizer, :any
|
||||
venue_ids_for_organizer =
|
||||
Conference.with_role(:organizer, user).pluck(:venue_id) if user.has_role? :organizer, :any
|
||||
conf_ids_for_cfp =
|
||||
Conference.with_role(:cfp, user).pluck(:id) if user.has_role? :cfp, :any
|
||||
venue_ids_for_cfp =
|
||||
Conference.with_role(:cfp, user).pluck(:venue_id) if user.has_role? :cfp, :any
|
||||
# Ids of all the conferences for which the user has an 'info_desk' role
|
||||
conf_ids_for_info_desk =
|
||||
Conference.with_role(:info_desk, user).pluck(:id) if user.has_role? :info_desk, :any
|
||||
|
|
@ -74,8 +68,6 @@ class Ability
|
|||
# can :manage, Conference do |conference|
|
||||
# conference.id = conf_ids_for_organizer
|
||||
# end
|
||||
can :manage, Venue, id: venue_ids_for_organizer
|
||||
can :index, Venue, id: venue_ids_for_cfp
|
||||
can :manage, Registration, conference_id: conf_ids_for_organizer + conf_ids_for_info_desk
|
||||
can :manage, Question, conference_id: conf_ids_for_organizer + conf_ids_for_info_desk
|
||||
cannot [:edit, :update, :destroy], Question, global: true
|
||||
|
|
@ -92,7 +84,9 @@ class Ability
|
|||
can :manage, DifficultyLevel, conference_id: conf_ids_for_organizer + conf_ids_for_cfp
|
||||
can :manage, EmailSettings, conference_id: conf_ids_for_organizer + conf_ids_for_cfp
|
||||
can :manage, Campaign, conference_id: conf_ids_for_organizer
|
||||
can :manage, Lodging, venue_id: venue_ids_for_organizer
|
||||
can :manage, Venue, conference_id: conf_ids_for_organizer
|
||||
can :index, Venue, conference_id: conf_ids_for_organizer + conf_ids_for_cfp
|
||||
can :manage, Lodging, conference_id: conf_ids_for_organizer
|
||||
can :manage, Photo, conference_id: conf_ids_for_organizer
|
||||
can :manage, Room, conference_id: conf_ids_for_organizer + conf_ids_for_cfp
|
||||
can :manage, Sponsor, conference_id: conf_ids_for_organizer
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ class Conference < ActiveRecord::Base
|
|||
has_one :registration_period, dependent: :destroy
|
||||
has_one :email_settings, dependent: :destroy
|
||||
has_one :call_for_papers, dependent: :destroy
|
||||
has_one :venue, dependent: :destroy
|
||||
has_many :social_events, dependent: :destroy
|
||||
has_many :ticket_purchases
|
||||
has_many :supporters, through: :ticket_purchases, source: :user
|
||||
|
|
@ -53,6 +54,7 @@ class Conference < ActiveRecord::Base
|
|||
has_many :tracks, dependent: :destroy
|
||||
has_many :difficulty_levels, dependent: :destroy
|
||||
has_many :rooms, dependent: :destroy
|
||||
has_many :lodgings, dependent: :destroy
|
||||
has_many :registrations, dependent: :destroy
|
||||
has_many :participants, through: :registrations, source: :user
|
||||
has_many :vdays, dependent: :destroy
|
||||
|
|
@ -64,7 +66,6 @@ class Conference < ActiveRecord::Base
|
|||
has_many :campaigns, dependent: :destroy
|
||||
has_many :commercials, as: :commercialable, dependent: :destroy
|
||||
has_many :subscriptions, dependent: :destroy
|
||||
belongs_to :venue
|
||||
|
||||
accepts_nested_attributes_for :rooms, reject_if: proc { |r| r['name'].blank? }, allow_destroy: true
|
||||
accepts_nested_attributes_for :tracks, reject_if: proc { |r| r['name'].blank? }, allow_destroy: true
|
||||
|
|
@ -99,7 +100,6 @@ class Conference < ActiveRecord::Base
|
|||
validates_uniqueness_of :short_title
|
||||
validates_format_of :short_title, with: /\A[a-zA-Z0-9_-]*\z/
|
||||
before_create :generate_guid
|
||||
before_create :create_venue
|
||||
before_create :create_event_types
|
||||
before_create :create_email_settings
|
||||
before_create :add_color
|
||||
|
|
@ -727,14 +727,13 @@ class Conference < ActiveRecord::Base
|
|||
rooms.count > 0
|
||||
end
|
||||
|
||||
##
|
||||
# Checks if venue has a name, address and website.
|
||||
# Checks if the conference has a venue object.
|
||||
#
|
||||
# ====Returns
|
||||
# * +True+ -> If venue has a name, address and website.
|
||||
# * +False+ -> venue has a no name, address or website.
|
||||
# * +True+ -> If conference has a venue object.
|
||||
# * +False+ -> IF conference has no venue object.
|
||||
def venue_set?
|
||||
!!venue && !!venue.name && !!venue.address && !!venue.website
|
||||
!!venue
|
||||
end
|
||||
|
||||
##
|
||||
|
|
@ -885,14 +884,6 @@ class Conference < ActiveRecord::Base
|
|||
result
|
||||
end
|
||||
|
||||
##
|
||||
# Creates a Venue for this Conference. Used as before_create.
|
||||
#
|
||||
def create_venue
|
||||
self.venue_id = Venue.create.id
|
||||
true
|
||||
end
|
||||
|
||||
##
|
||||
# Creates default EventTypes for this Conference. Used as before_create.
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
class Lodging < ActiveRecord::Base
|
||||
attr_accessible :name, :description, :photo, :website_link, :venue_id
|
||||
belongs_to :venue
|
||||
attr_accessible :name, :description, :photo, :website_link, :conference_id
|
||||
belongs_to :conference
|
||||
|
||||
validates :name, presence: true
|
||||
|
||||
|
|
|
|||
|
|
@ -1,30 +1,39 @@
|
|||
class Venue < ActiveRecord::Base
|
||||
attr_accessible :name, :description, :website, :address, :photo, :lodgings_attributes,
|
||||
:include_venue_in_splash, :include_lodgings_in_splash
|
||||
has_many :conferences
|
||||
belongs_to :conference
|
||||
has_many :lodgings
|
||||
before_create :generate_guid
|
||||
|
||||
attr_accessible :name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :photo, :lodgings_attributes, :conference_id
|
||||
validates :name, :street, :city, :country, presence: true
|
||||
|
||||
has_attached_file :photo,
|
||||
styles: { thumb: '100x100>', large: '300x300>' }
|
||||
|
||||
validates_attachment_content_type :photo,
|
||||
content_type: [/jpg/, /jpeg/, /png/, /gif/],
|
||||
size: { in: 0..500.kilobytes }
|
||||
|
||||
accepts_nested_attributes_for :lodgings, allow_destroy: true
|
||||
|
||||
after_update :send_mail_notification
|
||||
|
||||
def address
|
||||
"#{conference.venue.street}, #{conference.venue.postalcode} #{conference.venue.city}, #{conference.venue.country}"
|
||||
end
|
||||
|
||||
def country_name
|
||||
name = ISO3166::Country[country]
|
||||
name.name if name
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def send_mail_notification
|
||||
conferences.each do |conference|
|
||||
Mailbot.delay.send_email_on_venue_update(conference) if venue_notify?(conference)
|
||||
end
|
||||
Mailbot.delay.send_email_on_venue_update(conference) if venue_notify?(conference)
|
||||
end
|
||||
|
||||
def venue_notify?(conference)
|
||||
(self.name_changed? || self.address_changed?) &&
|
||||
(!self.name.blank? && !self.address.blank?) &&
|
||||
(self.name_changed? || self.street_changed?) &&
|
||||
(!self.name.blank? && !self.street.blank?) &&
|
||||
(conference.email_settings.send_on_venue_update &&
|
||||
!conference.email_settings.venue_update_subject.blank? &&
|
||||
conference.email_settings.venue_update_template)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
%dt
|
||||
Description
|
||||
%dd
|
||||
= markdown(@conference.description)
|
||||
- unless @conference.description.blank?
|
||||
= markdown(@conference.description)
|
||||
%dt
|
||||
Date
|
||||
%dd
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
= f.input :name
|
||||
= f.input :description, :input_html => {:rows => 2, data: { provide: "markdown-editable" } }, hint: markdown_hint("Write about the hotel/place, of what they are offering, about types of rooms, prices and address.")
|
||||
= image_tag f.object.photo(:thumb) if !f.object.photo.blank?
|
||||
= f.input :photo
|
||||
= f.input :website_link
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }
|
||||
|
||||
= link_to 'Back', admin_conference_lodgings_path(@conference.short_title)
|
||||
= semantic_form_for(@lodging, :url => (@lodging.new_record? ? admin_conference_lodgings_path : admin_conference_lodging_path(@conference.short_title, @lodging))) do |f|
|
||||
= f.input :name
|
||||
= f.input :website_link
|
||||
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
|
||||
- unless @lodging.photo.blank?
|
||||
= image_tag @lodging.photo(:thumb)
|
||||
= f.input :photo
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
%h1
|
||||
Edit Lodging
|
||||
.row
|
||||
.col-md-8
|
||||
= semantic_form_for(@lodging, :url => admin_conference_lodging_path(@conference.short_title, @lodging)) do |f|
|
||||
= render partial: 'form', locals: { f: f }
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
%h1 Lodgings
|
||||
- if @venue.lodgings.any?
|
||||
- if @conference.lodgings.any?
|
||||
.row
|
||||
.col-md-12
|
||||
%table.table
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
%th Edit
|
||||
%th Delete
|
||||
%tbody
|
||||
- @venue.lodgings.each_with_index do |lodging, index|
|
||||
- @conference.lodgings.each_with_index do |lodging, index|
|
||||
%tr
|
||||
%td
|
||||
= index + 1
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
%h1
|
||||
New Lodging
|
||||
.row
|
||||
.col-md-8
|
||||
= semantic_form_for(@lodging, :url => admin_conference_lodgings_path(@conference.short_title, @lodging)) do |f|
|
||||
= render partial: 'form', locals: { f: f }
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
= semantic_form_for(@venue, url: admin_conference_venue_path(@conference.short_title)) do |f|
|
||||
= f.input :name, input_html: { rows: 1 }
|
||||
= f.input :address, input_html: { rows: 1 }
|
||||
= f.input :website
|
||||
= f.inputs :name, :website
|
||||
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
|
||||
= f.inputs :street, :postalcode, :city, :country, :longitude, :latitude
|
||||
- unless @venue.photo.blank?
|
||||
= image_tag @venue.photo(:thumb)
|
||||
= f.input :photo
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
.row{'style'=>'padding-top: 15px;'}
|
||||
.col-md-6
|
||||
%dl.dl-horizontal
|
||||
%dt
|
||||
Name
|
||||
%dd
|
||||
= @venue.name
|
||||
%dt
|
||||
Address
|
||||
%dd
|
||||
= @venue.address
|
||||
%dt
|
||||
Website
|
||||
%dd
|
||||
= @venue.website
|
||||
%dt
|
||||
Description
|
||||
%dd
|
||||
- unless @venue.description.blank?
|
||||
= markdown(@venue.description)
|
||||
.row.row-flex.row-flex-wrap
|
||||
.col-md-4
|
||||
.thumbnail.flex-col
|
||||
%h3.text-center
|
||||
Venue Logo
|
||||
- if @venue.photo
|
||||
= image_tag(@venue.photo(:large), class: 'img-responsive')
|
||||
.caption.flex-grow
|
||||
.caption
|
||||
%p
|
||||
%dl.dl-horizontal
|
||||
%dt
|
||||
Filename
|
||||
%dd
|
||||
= @venue.photo_file_name
|
||||
-else
|
||||
%h4.text-center
|
||||
Not set!
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
.row
|
||||
.col-md-12
|
||||
%ul.nav.nav-tabs{'role'=>'tablist'}
|
||||
%li.active
|
||||
%a{'href'=> '#show', 'role'=>'tab', 'data-toggle'=>'tab'}
|
||||
Show
|
||||
%li
|
||||
%a{'href'=> '#edit', 'role'=>'tab', 'data-toggle'=>'tab'}
|
||||
Edit
|
||||
.row
|
||||
.col-md-8
|
||||
.tab-content
|
||||
.tab-pane.active#show
|
||||
= render partial: 'show'
|
||||
.tab-pane#edit
|
||||
= render partial: 'form'
|
||||
25
app/views/admin/venues/show.html.haml
Normal file
25
app/views/admin/venues/show.html.haml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
-if @venue
|
||||
.row
|
||||
.col-md-6
|
||||
=image_tag(@conference.venue.photo, class: 'img-responsive img-rounded') unless @conference.venue.photo.blank?
|
||||
.col-md-6
|
||||
%address
|
||||
%strong
|
||||
= @venue.name
|
||||
%br
|
||||
= @venue.street
|
||||
%br
|
||||
= "#{@venue.postalcode}, #{@venue.city}"
|
||||
%br
|
||||
= @venue.country_name
|
||||
.row
|
||||
.col-md-12
|
||||
= link_to(edit_admin_conference_venue_path(@conference.short_title), class: 'btn btn-primary') do
|
||||
Edit Venue
|
||||
= link_to(admin_conference_venue_path(@conference.short_title), method: 'delete', class: 'btn btn-danger') do
|
||||
Delete Venue
|
||||
-else
|
||||
.row
|
||||
.col-md-12
|
||||
= link_to(new_admin_conference_venue_path(@conference.short_title), class: 'btn btn-success') do
|
||||
Create Venue
|
||||
|
|
@ -5,55 +5,35 @@
|
|||
.container
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
%h1
|
||||
Call For Papers
|
||||
- if !@conference.call_for_papers.description.blank?
|
||||
= markdown(@conference.call_for_papers.description)
|
||||
%h2
|
||||
Call for Papers
|
||||
%p.lead
|
||||
We are ready to accept your proposals for sessions!
|
||||
.row
|
||||
.col-md-6.col-md-offset-3
|
||||
%p
|
||||
- if @conference.event_types.any?
|
||||
You can submit proposals for
|
||||
= "#{event_types(@conference)}."
|
||||
- if @conference.tracks.any?
|
||||
Proposals should fit in one of the
|
||||
= "#{pluralize(@conference.tracks.count, 'track')}:"
|
||||
= "#{tracks(@conference)}."
|
||||
The submission period has begun
|
||||
%em
|
||||
= @conference.call_for_papers.start_date.strftime('%A, %B %-d. %Y')
|
||||
and closes
|
||||
%em
|
||||
= @conference.call_for_papers.end_date.strftime('%A, %B %-d. %Y.')
|
||||
That means you have only
|
||||
- days = (@conference.call_for_papers.end_date - Date.today).to_i
|
||||
%b
|
||||
= pluralize(days, 'days')
|
||||
left!
|
||||
Remember
|
||||
= @conference.short_title
|
||||
will only be as good as the sessions you present. Submit early, submit often!
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
.lead
|
||||
= link_to "Submit Your Proposals Today", conference_proposal_index_path(@conference.short_title), class: 'btn btn-info', target: '_blank'
|
||||
- if !@conference.call_for_papers.start_date.blank? && !@conference.call_for_papers.end_date.blank?
|
||||
%p
|
||||
Proposals will be accepted between
|
||||
%p#cfp-date
|
||||
= date_string(@conference.call_for_papers.start_date, @conference.call_for_papers.end_date)
|
||||
.row
|
||||
.col-md-8.col-md-offset-3.text-center
|
||||
%div.col-md-2.timer-box
|
||||
%h2#days
|
||||
.lead Days
|
||||
%div.col-md-2.timer-box
|
||||
%h2#hours
|
||||
.lead Hours
|
||||
%div.col-md-2.timer-box
|
||||
%h2#minutes
|
||||
.lead Minutes
|
||||
%div.col-md-2.timer-box
|
||||
%h2#seconds
|
||||
.lead Seconds
|
||||
|
||||
:javascript
|
||||
$( document ).ready(function(){
|
||||
var target_date = new Date("#{@conference.call_for_papers.end_date}").getTime();
|
||||
if(target_date > new Date().getTime())
|
||||
var days, hours, minutes, seconds;
|
||||
setInterval(function () {
|
||||
var current_date = new Date().getTime();
|
||||
var seconds_left = (target_date - current_date) / 1000;
|
||||
days = parseInt(seconds_left / 86400);
|
||||
seconds_left = seconds_left % 86400;
|
||||
|
||||
hours = parseInt(seconds_left / 3600);
|
||||
seconds_left = seconds_left % 3600;
|
||||
|
||||
minutes = parseInt(seconds_left / 60);
|
||||
seconds = parseInt(seconds_left % 60);
|
||||
|
||||
$('#days').text(days);
|
||||
$('#hours').text(hours);
|
||||
$('#minutes').text(minutes);
|
||||
$('#seconds').text(seconds);
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
%p.cta-button
|
||||
= link_to "Submit your paper now", conference_proposal_index_path(@conference.short_title), class: 'btn btn-success btn-lg text-center'
|
||||
|
|
@ -10,14 +10,6 @@
|
|||
%small
|
||||
%b
|
||||
= date_string(conference.start_date, conference.end_date)
|
||||
- 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 current_user.nil? || !current_user.subscribed?(conference)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
%div.scroll-top-wrapper
|
||||
= link_to "#splash-banner", class: "smoothscroll" do
|
||||
= link_to "#banner", class: "smoothscroll" do
|
||||
%i.fa.fa-2x.fa-arrow-circle-up
|
||||
|
||||
:javascript
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
= content_for :splash_nav do
|
||||
%li
|
||||
%a.smoothscroll{ href: '#location' } Location
|
||||
|
||||
.container
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
- unless @conference.venue.name.blank?
|
||||
%h1
|
||||
%strong #{ @conference.venue.name }
|
||||
- unless @conference.venue.address.blank?
|
||||
= link_to("http://maps.google.com/maps?q=#{@conference.venue.address}") do
|
||||
%h2
|
||||
#{ @conference.venue.address }
|
||||
- unless @conference.venue.description.blank?
|
||||
.lead
|
||||
= markdown(@conference.venue.description)
|
||||
- unless @conference.venue.website.blank?
|
||||
%p.lead
|
||||
= link_to(@conference.venue.website, @conference.venue.website)
|
||||
|
|
@ -4,16 +4,23 @@
|
|||
%h2 Accommodation Deals
|
||||
%p.lead
|
||||
We have prepared affordable accommodation deals for your visit.
|
||||
.row
|
||||
- @conference.venue.lodgings.each do |r|
|
||||
%div{ class: (@conference.venue.lodgings.count.to_i <= 2 ? "col-md-#{12/@conference.venue.lodgings.count.to_i}" : "col-md-4") }
|
||||
.div.thumbnail
|
||||
-unless r.photo.blank?
|
||||
= image_tag r.photo(:large), class: 'img-responsive'
|
||||
-unless r.name.blank?
|
||||
%h4.text-center #{ r.name }
|
||||
-unless r.description.blank?
|
||||
.lead.text-left #{ markdown(r.description) }
|
||||
- unless r.website_link.blank?
|
||||
.text-center
|
||||
= link_to 'Go to Website', r.website_link
|
||||
- @conference.lodgings.each_slice(3) do |slice|
|
||||
.row.row-centered
|
||||
- slice.each do |lodging|
|
||||
.col-md-4.ticket.col-centered.col-top
|
||||
.thumbnail
|
||||
- if lodging.photo.blank?
|
||||
%p.text-center
|
||||
%i.fa.fa-home.fa-5x
|
||||
- else
|
||||
-if lodging.website_link.present?
|
||||
= link_to(lodging.website_link, class: 'thumbnail') do
|
||||
= image_tag lodging.photo(:large), class: 'img-responsive img-lodging'
|
||||
- else
|
||||
= image_tag lodging.photo(:large), class: 'img-responsive img-lodging'
|
||||
.caption
|
||||
%h3.text-center
|
||||
= lodging.name
|
||||
-if lodging.description.present?
|
||||
= markdown(lodging.description)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,36 +1,34 @@
|
|||
= content_for :splash_nav do
|
||||
%li
|
||||
=link_to('#program', class: 'smoothscroll') do
|
||||
Program
|
||||
|
||||
.container
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
%h1 Program
|
||||
- if @conference.splashpage and @conference.splashpage.include_tracks
|
||||
.row
|
||||
.col-md-12
|
||||
- @conference.tracks.each do |t|
|
||||
.tracks{ class: (@conference.tracks.count.to_i <= 2 ? "col-md-#{12/@conference.tracks.count.to_i}" : "col-md-4") }
|
||||
%h4.text-center
|
||||
= t.name
|
||||
%p
|
||||
= markdown(t.description)
|
||||
- if @conference.call_for_papers and @conference.call_for_papers.schedule_public
|
||||
.row
|
||||
.col-md-12
|
||||
%p.text-center
|
||||
Check out our
|
||||
= link_to 'Schedule', conference_schedule_path(@conference.short_title)
|
||||
- if !@keynote_speakers.blank?
|
||||
%div.row.text-center
|
||||
%div.col-md-12
|
||||
%h3 Keynote Speakers
|
||||
- @keynote_speakers.each do |k|
|
||||
%div{ class: (@keynote_speakers.count.to_i <= 2 ? "col-md-#{12/@keynote_speakers.count.to_i}" : "col-md-4") }
|
||||
= image_tag(k.gravatar_url(size: '80'), class: 'img-circle') unless k.gravatar_url.blank?
|
||||
%h4
|
||||
= k.name
|
||||
-unless k.biography.blank?
|
||||
%p
|
||||
= k.biography
|
||||
.col-md-12
|
||||
%h2.text-center
|
||||
Program
|
||||
%p.lead.text-center
|
||||
= @conference.short_title
|
||||
has the most awesome program ever!
|
||||
- if @conference.splashpage and @conference.splashpage.include_tracks
|
||||
See rock-star speakers cover the topics of
|
||||
- if @conference.splashpage and @conference.splashpage.include_tracks
|
||||
- @conference.tracks.each_slice(3) do |slice|
|
||||
.row.row-centered
|
||||
- slice.each do |track|
|
||||
.col-md-4.col-centered.col-top.track
|
||||
%h4.text-center
|
||||
= track.name
|
||||
= markdown(track.description)
|
||||
|
||||
- if @conference.call_for_papers and @conference.call_for_papers.schedule_public
|
||||
.row
|
||||
.col-md-12
|
||||
%p.cta-button.text-center
|
||||
= link_to(conference_schedule_path(@conference.short_title), class: 'btn btn-default btn-lg') do
|
||||
Full Schedule
|
||||
|
||||
- #FIXME: Display keynotes https://github.com/openSUSE/osem/issues/544
|
||||
- #FIXME: Display schedule highlights https://github.com/openSUSE/osem/issues/545
|
||||
|
||||
|
||||
= content_for :splash_nav do
|
||||
%li
|
||||
=link_to('#program', class: 'smoothscroll') do
|
||||
Program
|
||||
|
|
@ -9,8 +9,11 @@
|
|||
%p.lead
|
||||
Going to
|
||||
= @conference.short_title
|
||||
is free of charge. We only ask you to
|
||||
= link_to "register yourself", new_conference_conference_registrations_path(@conference.short_title)
|
||||
until
|
||||
= @conference.registration_period.end_date
|
||||
|
||||
is free of charge.
|
||||
%p
|
||||
We only ask you to register yourself until
|
||||
= @conference.registration_period.end_date.strftime('%A, %B %-d. %Y')
|
||||
so we can plan for the right amount of people.
|
||||
%p.cta-button
|
||||
= link_to(new_conference_conference_registrations_path(@conference.short_title), class: 'btn btn-lg btn-success') do
|
||||
Register Now
|
||||
|
|
|
|||
|
|
@ -2,21 +2,18 @@
|
|||
%li
|
||||
%a.smoothscroll{ href: '#social-media' } Social Media
|
||||
|
||||
%div.container#social-media.text-center
|
||||
%div.row
|
||||
- unless @conference.contact.facebook.blank?
|
||||
%div.col-md-3
|
||||
.container
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
- unless @conference.contact.facebook.blank?
|
||||
= link_to "#{ @conference.contact.facebook }" do
|
||||
%i.fa.fa-facebook-square.fa-4x
|
||||
- unless @conference.contact.twitter.blank?
|
||||
%div.col-md-3
|
||||
- unless @conference.contact.twitter.blank?
|
||||
= link_to "#{ @conference.contact.twitter }" do
|
||||
%i.fa.fa-twitter.fa-4x
|
||||
- unless @conference.contact.instagram.blank?
|
||||
%div.col-md-3
|
||||
- unless @conference.contact.instagram.blank?
|
||||
= link_to "#{ @conference.contact.instagram }" do
|
||||
%i.fa.fa-instagram.fa-4x
|
||||
- unless @conference.contact.googleplus.blank?
|
||||
%div.col-md-3
|
||||
- unless @conference.contact.googleplus.blank?
|
||||
= link_to "#{ @conference.contact.googleplus }" do
|
||||
%i.fa.fa-google-plus-square.fa-4x
|
||||
|
|
|
|||
|
|
@ -12,16 +12,21 @@
|
|||
wouldn't be possible!
|
||||
- @conference.sponsorship_levels.each do |sponsorship_level|
|
||||
-if sponsorship_level.sponsors.any?
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
%h3
|
||||
= sponsorship_level.title
|
||||
- sponsorship_level.sponsors.each_slice(3) do |slice|
|
||||
.row
|
||||
.row.row-centered
|
||||
- slice.each do |sponsor|
|
||||
.col-md-4
|
||||
= link_to("http://#{sponsor.website_url}", class: 'thumbnail') do
|
||||
= image_tag(sponsor.logo(:large), alt: "#{sponsor.name} Logo", title: "#{sponsor.description}")
|
||||
.col-md-4.col-centered.col-top
|
||||
.thumbnail
|
||||
- if sponsor.logo.blank?
|
||||
%h3.text-center
|
||||
= link_to(sponsor.website_url, title: "#{sponsor.name}") do
|
||||
= sponsor.name
|
||||
- else
|
||||
= link_to(sponsor.website_url, class: 'thumbnail') do
|
||||
= image_tag sponsor.logo, class: "img-responsive img-sponsor img-sponsor-#{sponsorship_level.position}", title: "#{sponsor.name}"
|
||||
.caption
|
||||
-if sponsor.description.present?
|
||||
= markdown(sponsor.description)
|
||||
-if @conference.contact and !@conference.contact.sponsor_email.blank?
|
||||
.row
|
||||
.col-md-12
|
||||
|
|
|
|||
|
|
@ -1,21 +1,25 @@
|
|||
.container
|
||||
.row
|
||||
.col-md-12.text-center
|
||||
%h1
|
||||
%h2
|
||||
Support
|
||||
=@conference.short_title
|
||||
%p.lead
|
||||
To support our event you can purchase tickets
|
||||
.row
|
||||
- @conference.tickets.each do |ticket|
|
||||
%div{ class: (@conference.tickets.count <= 2 ? "col-md-#{12/@conference.tickets.count}" : "col-md-4") }
|
||||
- if ticket.title.present?
|
||||
%h4.text-center
|
||||
=ticket.title
|
||||
- if ticket.description.present?
|
||||
= markdown(ticket.description)
|
||||
.text-center
|
||||
.btn-group
|
||||
= link_to(conference_tickets_path(@conference.short_title), class: 'btn btn-success') do
|
||||
Buy Ticket
|
||||
= "#{humanized_money_with_symbol ticket.price}"
|
||||
To support our event you can purchase these tickets
|
||||
- @conference.tickets.each_slice(4) do |slice|
|
||||
.row.row-centered
|
||||
- slice.each do |ticket|
|
||||
.col-md-3.col-centered.col-top
|
||||
.thumbnail
|
||||
%p.text-center
|
||||
%i.fa.fa-ticket.fa-5x
|
||||
.caption
|
||||
%h3.text-center
|
||||
= ticket.title
|
||||
-if ticket.description.present?
|
||||
= markdown(ticket.description)
|
||||
%p.text-center
|
||||
= link_to(conference_tickets_path(@conference.short_title), class: 'btn btn-success') do
|
||||
Buy Ticket
|
||||
= humanized_money_with_symbol ticket.price
|
||||
|
||||
|
|
|
|||
43
app/views/conference/_venue.html.haml
Normal file
43
app/views/conference/_venue.html.haml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
= content_for :splash_nav do
|
||||
%li
|
||||
%a.smoothscroll{ href: '#venue' } Venue
|
||||
-if !@conference.venue.latitude.blank? and !@conference.venue.longitude.blank?
|
||||
#map{style: "height: 500px;" }
|
||||
- popup = "<h3>#{@conference.venue.name}</h3><br>#{@conference.venue.street}<br>#{@conference.venue.postalcode}, #{@conference.venue.city}<br>#{@conference.venue.country_name}"
|
||||
- content_for(:script_body) do
|
||||
:javascript
|
||||
// create a map in the "map" div, set the view to a given place and zoom
|
||||
var map = L.map('map', {scrollWheelZoom: false}).setView([#{@conference.venue.longitude}, #{@conference.venue.latitude}], 11);
|
||||
// add an OpenStreetMap tile layer
|
||||
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
|
||||
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
|
||||
maxZoom: 18
|
||||
}).addTo(map);
|
||||
// add a marker in the given location, attach some popup content to it and open the popup
|
||||
L.marker([#{@conference.venue.longitude}, #{@conference.venue.latitude}]).addTo(map)
|
||||
.bindPopup("#{popup}")
|
||||
.openPopup();
|
||||
-else
|
||||
.container
|
||||
.row
|
||||
.col-md-12
|
||||
%h2.text-center
|
||||
= "#{@conference.venue.city} / #{@conference.venue.country_name}"
|
||||
.col-md-6
|
||||
.thumbnail
|
||||
=image_tag(@conference.venue.photo, class: 'img-responsive img-rounded') unless @conference.venue.photo.blank?
|
||||
.caption
|
||||
- unless @conference.venue.description.blank?
|
||||
= markdown(@conference.venue.description)
|
||||
.col-md-6
|
||||
%address
|
||||
%h1
|
||||
= @conference.venue.name
|
||||
= @conference.venue.street
|
||||
%br
|
||||
= "#{@conference.venue.postalcode}, #{@conference.venue.city}"
|
||||
%br
|
||||
= @conference.venue.country_name
|
||||
- if @conference.venue.website
|
||||
%br
|
||||
=link_to @conference.venue.website, @conference.venue.website
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
#splash
|
||||
- if @conference.splashpage
|
||||
#splash-banner
|
||||
#banner
|
||||
.container
|
||||
.row
|
||||
.col-md-8.col-md-offset-2#splash-header
|
||||
.col-md-8.col-md-offset-2#header
|
||||
.row
|
||||
.col-md-4
|
||||
= image_tag(@conference.logo(:original), class: 'img-responsive', id: 'splash-logo') if @conference.logo?
|
||||
|
|
@ -11,7 +11,10 @@
|
|||
%h1
|
||||
= @conference.title
|
||||
%p.lead
|
||||
- if @conference.venue
|
||||
= "#{@conference.venue.city} / #{@conference.venue.country_name}"
|
||||
- if @conference.start_date && @conference.end_date
|
||||
%br
|
||||
= date_string(@conference.start_date, @conference.end_date)
|
||||
|
||||
- unless @conference.description.blank?
|
||||
|
|
@ -22,38 +25,38 @@
|
|||
%h3.text-center
|
||||
= markdown(@conference.description)
|
||||
|
||||
- if @conference.splashpage.include_program
|
||||
%section#program
|
||||
= render 'program'
|
||||
|
||||
- if @conference.cfp_open? and @conference.call_for_papers.include_cfp_in_splash?
|
||||
%section#callforpapers
|
||||
= render 'call_for_papers'
|
||||
|
||||
- if @conference.venue and @conference.splashpage.include_venue
|
||||
#location{ style: ("background-image: url(#{@conference.venue.photo})" unless @conference.venue.photo.blank?) }
|
||||
= render 'location'
|
||||
|
||||
- if @conference.registration_open? and @conference.splashpage.include_registrations
|
||||
%section#registration
|
||||
= render 'registration'
|
||||
|
||||
|
||||
- if @conference.splashpage.include_program
|
||||
%section#program
|
||||
= render 'program'
|
||||
|
||||
- if @conference.cfp_open? and @conference.call_for_papers.include_cfp_in_splash?
|
||||
%section#callforpapers
|
||||
= render 'call_for_papers'
|
||||
|
||||
- if @conference.venue and @conference.splashpage.include_venue
|
||||
%section#venue
|
||||
= render 'venue'
|
||||
|
||||
- if @conference.lodgings.any? and @conference.splashpage.include_lodgings
|
||||
%section#lodging
|
||||
= render 'lodging'
|
||||
|
||||
- if @conference.tickets.any? and @conference.splashpage.include_tickets
|
||||
%section#tickets
|
||||
= render 'tickets'
|
||||
|
||||
- if @conference.venue.lodgings.any? and @conference.splashpage.include_lodgings
|
||||
%section#lodging
|
||||
= render 'lodging'
|
||||
|
||||
|
||||
- if @conference.sponsors.any? and @conference.splashpage.include_sponsors
|
||||
%section#sponsors
|
||||
= render 'sponsors'
|
||||
|
||||
|
||||
- if @conference.splashpage.include_social_media
|
||||
%section#social-media
|
||||
= render 'social_media'
|
||||
|
||||
|
||||
// grmbl
|
||||
= render 'footer'
|
||||
|
||||
|
|
@ -61,3 +64,10 @@
|
|||
:javascript
|
||||
var triangle_tcs = tinycolor("#{@conference.color}").monochromatic();
|
||||
var triangle_colors = triangle_tcs.map(function(t) { return t.toHexString(); });
|
||||
$(function () {
|
||||
$(document).ready(function() {
|
||||
var t = new Trianglify({cellsize: 100, x_gradient: triangle_colors });
|
||||
var pattern = t.generate(document.body.clientWidth, ($( "#banner" ).height() + 200 ));
|
||||
$('#banner').css('background-image', pattern.dataUrl);
|
||||
});
|
||||
});
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
= date_string(@conference.start_date, @conference.end_date)
|
||||
.row
|
||||
.col-md-6
|
||||
- if @conference.venue.name and @conference.venue.website and @conference.venue.address
|
||||
- if @conference.venue.name and @conference.venue.website and @conference.venue.street
|
||||
%p
|
||||
%small
|
||||
at
|
||||
|
|
|
|||
|
|
@ -45,16 +45,16 @@
|
|||
- if can? :update, @conference
|
||||
%li{:class=> active_nav_li(edit_admin_conference_splashpage_path(@conference.short_title))}
|
||||
= link_to 'Splashpage', edit_admin_conference_splashpage_path(@conference.short_title)
|
||||
- if can? :index, @conference.venue
|
||||
%li{:class=> "#{active_nav_li(edit_admin_conference_venue_path(@conference.short_title))}"}
|
||||
= link_to(edit_admin_conference_venue_path(@conference.short_title)) do
|
||||
- if can? :index, Venue.new(conference_id: @conference.id)
|
||||
%li{:class=> "#{active_nav_li(admin_conference_venue_path(@conference.short_title))}"}
|
||||
= link_to(admin_conference_venue_path(@conference.short_title)) do
|
||||
%span.fa.fa-road
|
||||
Venue
|
||||
%ul
|
||||
- if can? :update, @conference.rooms.build
|
||||
%li{:class=> active_nav_li(admin_conference_rooms_path(@conference.short_title))}
|
||||
= link_to 'Rooms', admin_conference_rooms_path(@conference.short_title)
|
||||
- if can? :update, @conference.venue.lodgings.build
|
||||
- if can? :update, @conference.lodgings.build
|
||||
%li{ class: active_nav_li(admin_conference_lodgings_path(@conference.short_title)) }
|
||||
= link_to 'Lodgings', admin_conference_lodgings_path(@conference.short_title)
|
||||
%li
|
||||
|
|
|
|||
|
|
@ -41,4 +41,5 @@
|
|||
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"
|
||||
= content_for(:script_body)
|
||||
= piwik_tracking_tag
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ Osem::Application.routes.draw do
|
|||
|
||||
resource :splashpage
|
||||
|
||||
resource :venue, only: [:edit, :update]
|
||||
resource :venue
|
||||
|
||||
resources :difficulty_levels, only: [:show, :update, :index]
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,6 @@ class MoveBannerDescriptionToConference < ActiveRecord::Migration
|
|||
end
|
||||
end
|
||||
|
||||
remove_column :splashpages, :banner_description, :text
|
||||
remove_column :splashpages, :banner_description, :text
|
||||
end
|
||||
end
|
||||
|
|
|
|||
12
db/migrate/20141118143700_add_address_fields_to_venue.rb
Normal file
12
db/migrate/20141118143700_add_address_fields_to_venue.rb
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
class AddAddressFieldsToVenue < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :venues, :street, :string
|
||||
add_column :venues, :postalcode, :integer
|
||||
add_column :venues, :city, :string
|
||||
add_column :venues, :country, :string
|
||||
add_column :venues, :latitude, :string
|
||||
add_column :venues, :longitude, :string
|
||||
|
||||
remove_column :venues, :address, :text
|
||||
end
|
||||
end
|
||||
7
db/migrate/20141118150427_cleanup_venue.rb
Normal file
7
db/migrate/20141118150427_cleanup_venue.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class CleanupVenue < ActiveRecord::Migration
|
||||
def change
|
||||
change_column :venues, :name, :string
|
||||
remove_column :venues, :offline_map_url, :string
|
||||
remove_column :venues, :offline_map_bounds, :string
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
class ChangeVenueConferenceAssociation < ActiveRecord::Migration
|
||||
class TempConference < ActiveRecord::Base
|
||||
self.table_name = 'conferences'
|
||||
end
|
||||
|
||||
class TempVenue < ActiveRecord::Base
|
||||
self.table_name = 'venues'
|
||||
attr_accessible :conference_id
|
||||
end
|
||||
|
||||
def change
|
||||
add_column :venues, :conference_id, :integer
|
||||
TempVenue.reset_column_information
|
||||
|
||||
# Change association from venue and conference
|
||||
TempConference.all.each do |conference|
|
||||
if TempVenue.exists?(id: conference.venue_id)
|
||||
venue = TempVenue.find_by(id: conference.venue_id)
|
||||
venue.update_attributes(conference_id: conference.id)
|
||||
end
|
||||
end
|
||||
|
||||
remove_column :conferences, :venue_id, :integer
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
class ChangeLodgingAssociationToConference < ActiveRecord::Migration
|
||||
class TempConference < ActiveRecord::Base
|
||||
self.table_name = 'conferences'
|
||||
end
|
||||
|
||||
class TempVenue < ActiveRecord::Base
|
||||
self.table_name = 'venues'
|
||||
end
|
||||
|
||||
class TempLodging < ActiveRecord::Base
|
||||
self.table_name = 'lodgings'
|
||||
attr_accessible :conference_id
|
||||
end
|
||||
|
||||
def change
|
||||
add_column :lodgings, :conference_id, :integer
|
||||
TempLodging.reset_column_information
|
||||
|
||||
# Change association from venue and conference
|
||||
TempConference.all.each do |conference|
|
||||
if TempVenue.exists?(conference_id: conference.id)
|
||||
venue = TempVenue.find_by(conference_id: conference.id)
|
||||
lodgings = TempLodging.where(venue_id: venue.id)
|
||||
lodgings.each do |lodging|
|
||||
lodging.update_attributes(conference_id: conference.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
remove_column :lodgings, :venue_id, :integer
|
||||
end
|
||||
end
|
||||
200
db/schema.rb
200
db/schema.rb
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20141117222919) do
|
||||
ActiveRecord::Schema.define(version: 20141118162030) do
|
||||
|
||||
create_table "ahoy_events", force: true do |t|
|
||||
t.uuid "visit_id"
|
||||
|
|
@ -27,21 +27,21 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
|
||||
create_table "answers", force: true do |t|
|
||||
t.string "title"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "call_for_papers", force: true do |t|
|
||||
t.date "start_date", null: false
|
||||
t.date "end_date", null: false
|
||||
t.text "description", null: false
|
||||
t.date "start_date", null: false
|
||||
t.date "end_date", null: false
|
||||
t.text "description", limit: 16777215, null: false
|
||||
t.integer "conference_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.boolean "schedule_changes", default: false
|
||||
t.integer "rating", default: 3
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.boolean "schedule_changes", default: false
|
||||
t.integer "rating", default: 3
|
||||
t.boolean "schedule_public"
|
||||
t.boolean "include_cfp_in_splash", default: false
|
||||
t.boolean "include_cfp_in_splash", default: false
|
||||
end
|
||||
|
||||
create_table "campaigns", force: true do |t|
|
||||
|
|
@ -57,13 +57,13 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
end
|
||||
|
||||
create_table "comments", force: true do |t|
|
||||
t.string "title", limit: 50, default: ""
|
||||
t.text "body"
|
||||
t.string "title", limit: 50, default: ""
|
||||
t.text "body", limit: 16777215
|
||||
t.integer "commentable_id"
|
||||
t.string "commentable_type"
|
||||
t.integer "user_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "subject"
|
||||
t.integer "parent_id"
|
||||
t.integer "lft"
|
||||
|
|
@ -91,9 +91,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.string "html_export_path"
|
||||
t.date "start_date", null: false
|
||||
t.date "end_date", null: false
|
||||
t.integer "venue_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "logo_file_name"
|
||||
t.string "logo_content_type"
|
||||
t.integer "logo_file_size"
|
||||
|
|
@ -146,8 +145,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
create_table "dietary_choices", force: true do |t|
|
||||
t.integer "conference_id"
|
||||
t.string "title", null: false
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "difficulty_levels", force: true do |t|
|
||||
|
|
@ -155,37 +154,37 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.string "title"
|
||||
t.text "description"
|
||||
t.string "color"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "email_settings", force: true do |t|
|
||||
t.integer "conference_id"
|
||||
t.boolean "send_on_registration", default: false
|
||||
t.boolean "send_on_accepted", default: false
|
||||
t.boolean "send_on_rejected", default: false
|
||||
t.boolean "send_on_confirmed_without_registration", default: false
|
||||
t.text "registration_email_template"
|
||||
t.text "accepted_email_template"
|
||||
t.text "rejected_email_template"
|
||||
t.text "confirmed_email_template"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.boolean "send_on_registration", default: false
|
||||
t.boolean "send_on_accepted", default: false
|
||||
t.boolean "send_on_rejected", default: false
|
||||
t.boolean "send_on_confirmed_without_registration", default: false
|
||||
t.text "registration_email_template", limit: 16777215
|
||||
t.text "accepted_email_template", limit: 16777215
|
||||
t.text "rejected_email_template", limit: 16777215
|
||||
t.text "confirmed_email_template", limit: 16777215
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "registration_subject"
|
||||
t.string "accepted_subject"
|
||||
t.string "rejected_subject"
|
||||
t.string "confirmed_without_registration_subject"
|
||||
t.boolean "send_on_updated_conference_dates", default: false
|
||||
t.boolean "send_on_updated_conference_dates", default: false
|
||||
t.string "updated_conference_dates_subject"
|
||||
t.text "updated_conference_dates_template"
|
||||
t.boolean "send_on_updated_conference_registration_dates", default: false
|
||||
t.boolean "send_on_updated_conference_registration_dates", default: false
|
||||
t.string "updated_conference_registration_dates_subject"
|
||||
t.text "updated_conference_registration_dates_template"
|
||||
t.boolean "send_on_venue_update", default: false
|
||||
t.boolean "send_on_venue_update", default: false
|
||||
t.string "venue_update_subject"
|
||||
t.text "venue_update_template"
|
||||
t.boolean "send_on_call_for_papers_dates_updates", default: false
|
||||
t.boolean "send_on_call_for_papers_schedule_public", default: false
|
||||
t.boolean "send_on_call_for_papers_dates_updates", default: false
|
||||
t.boolean "send_on_call_for_papers_schedule_public", default: false
|
||||
t.string "call_for_papers_schedule_public_subject"
|
||||
t.string "call_for_papers_dates_updates_subject"
|
||||
t.text "call_for_papers_schedule_public_template"
|
||||
|
|
@ -194,14 +193,14 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
|
||||
create_table "event_attachments", force: true do |t|
|
||||
t.integer "event_id"
|
||||
t.string "title", null: false
|
||||
t.string "title", null: false
|
||||
t.string "attachment_file_name"
|
||||
t.string "attachment_content_type"
|
||||
t.integer "attachment_file_size"
|
||||
t.datetime "attachment_updated_at"
|
||||
t.boolean "public", default: false
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.boolean "public", default: true
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "event_types", force: true do |t|
|
||||
|
|
@ -223,28 +222,28 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
end
|
||||
|
||||
create_table "events", force: true do |t|
|
||||
t.string "guid", null: false
|
||||
t.string "guid", null: false
|
||||
t.integer "conference_id"
|
||||
t.integer "event_type_id"
|
||||
t.string "title", null: false
|
||||
t.string "title", null: false
|
||||
t.string "subtitle"
|
||||
t.integer "time_slots"
|
||||
t.string "state", default: "new", null: false
|
||||
t.string "progress", default: "new", null: false
|
||||
t.string "state", default: "new", null: false
|
||||
t.string "progress", default: "new", null: false
|
||||
t.string "language"
|
||||
t.datetime "start_time"
|
||||
t.text "abstract"
|
||||
t.text "description"
|
||||
t.boolean "public", default: true
|
||||
t.text "abstract", limit: 16777215
|
||||
t.text "description", limit: 16777215
|
||||
t.boolean "public", default: true
|
||||
t.string "logo_file_name"
|
||||
t.string "logo_content_type"
|
||||
t.integer "logo_file_size"
|
||||
t.datetime "logo_updated_at"
|
||||
t.text "proposal_additional_speakers"
|
||||
t.text "proposal_additional_speakers", limit: 16777215
|
||||
t.integer "track_id"
|
||||
t.integer "room_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.boolean "require_registration"
|
||||
t.integer "difficulty_level_id"
|
||||
t.integer "week"
|
||||
|
|
@ -262,10 +261,10 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.string "photo_content_type"
|
||||
t.integer "photo_file_size"
|
||||
t.datetime "photo_updated_at"
|
||||
t.integer "venue_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.string "website_link"
|
||||
t.integer "conference_id"
|
||||
end
|
||||
|
||||
create_table "openids", force: true do |t|
|
||||
|
|
@ -277,6 +276,29 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
create_table "people", force: true do |t|
|
||||
t.string "guid", null: false
|
||||
t.text "first_name"
|
||||
t.text "last_name"
|
||||
t.text "public_name"
|
||||
t.text "company"
|
||||
t.string "email", null: false
|
||||
t.boolean "email_public"
|
||||
t.string "avatar_file_name"
|
||||
t.string "avatar_content_type"
|
||||
t.integer "avatar_file_size"
|
||||
t.datetime "avatar_updated_at"
|
||||
t.text "biography"
|
||||
t.integer "user_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "irc_nickname"
|
||||
t.text "volunteer_experience"
|
||||
t.string "tshirt"
|
||||
t.string "mobile"
|
||||
t.string "languages"
|
||||
end
|
||||
|
||||
create_table "photos", force: true do |t|
|
||||
t.text "description"
|
||||
t.string "picture_file_name"
|
||||
|
|
@ -300,8 +322,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
|
||||
create_table "question_types", force: true do |t|
|
||||
t.string "title"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "questions", force: true do |t|
|
||||
|
|
@ -309,8 +331,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.integer "question_type_id"
|
||||
t.integer "conference_id"
|
||||
t.boolean "global"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "registration_periods", force: true do |t|
|
||||
|
|
@ -325,12 +347,12 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.integer "conference_id"
|
||||
t.datetime "arrival"
|
||||
t.datetime "departure"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.integer "dietary_choice_id"
|
||||
t.text "other_dietary_choice"
|
||||
t.text "other_special_needs"
|
||||
t.boolean "attended", default: false
|
||||
t.text "other_dietary_choice", limit: 16777215
|
||||
t.text "other_special_needs", limit: 16777215
|
||||
t.boolean "attended", default: false
|
||||
t.boolean "volunteer"
|
||||
t.integer "user_id"
|
||||
t.integer "week"
|
||||
|
|
@ -348,8 +370,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
|
||||
create_table "roles", force: true do |t|
|
||||
t.string "name"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "description"
|
||||
t.integer "resource_id"
|
||||
t.string "resource_type"
|
||||
|
|
@ -452,13 +474,13 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
end
|
||||
|
||||
create_table "tracks", force: true do |t|
|
||||
t.string "guid", null: false
|
||||
t.string "guid", null: false
|
||||
t.integer "conference_id"
|
||||
t.string "name", null: false
|
||||
t.text "description"
|
||||
t.string "name", null: false
|
||||
t.text "description", limit: 16777215
|
||||
t.string "color"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "users", force: true do |t|
|
||||
|
|
@ -476,8 +498,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.datetime "confirmed_at"
|
||||
t.datetime "confirmation_sent_at"
|
||||
t.string "unconfirmed_email"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "name"
|
||||
t.boolean "email_public"
|
||||
t.text "biography"
|
||||
|
|
@ -510,33 +532,37 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.integer "conference_id"
|
||||
t.date "day"
|
||||
t.text "description"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "venues", force: true do |t|
|
||||
t.string "guid"
|
||||
t.text "name", limit: 255
|
||||
t.text "address", limit: 255
|
||||
t.string "name"
|
||||
t.string "website"
|
||||
t.text "description"
|
||||
t.string "offline_map_url"
|
||||
t.string "offline_map_bounds"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "photo_file_name"
|
||||
t.string "photo_content_type"
|
||||
t.integer "photo_file_size"
|
||||
t.datetime "photo_updated_at"
|
||||
t.string "street"
|
||||
t.integer "postalcode"
|
||||
t.string "city"
|
||||
t.string "country"
|
||||
t.string "latitude"
|
||||
t.string "longitude"
|
||||
t.integer "conference_id"
|
||||
end
|
||||
|
||||
create_table "versions", force: true do |t|
|
||||
t.string "item_type", null: false
|
||||
t.integer "item_id", null: false
|
||||
t.string "event", null: false
|
||||
t.string "item_type", null: false
|
||||
t.integer "item_id", null: false
|
||||
t.string "event", null: false
|
||||
t.string "whodunnit"
|
||||
t.text "object"
|
||||
t.text "object_changes"
|
||||
t.text "object", limit: 16777215
|
||||
t.text "object_changes", limit: 16777215
|
||||
t.datetime "created_at"
|
||||
end
|
||||
|
||||
|
|
@ -570,8 +596,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
create_table "votes", force: true do |t|
|
||||
t.integer "event_id"
|
||||
t.integer "rating"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.integer "user_id"
|
||||
end
|
||||
|
||||
|
|
@ -579,8 +605,8 @@ ActiveRecord::Schema.define(version: 20141117222919) do
|
|||
t.integer "conference_id"
|
||||
t.string "title", null: false
|
||||
t.text "description"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,6 +5,5 @@ FactoryGirl.define do
|
|||
name 'Example Hotel'
|
||||
description 'Lorem Ipsum Dolor'
|
||||
website_link 'http://www.example.com'
|
||||
venue
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@
|
|||
FactoryGirl.define do
|
||||
factory :venue do
|
||||
name 'Suse Office'
|
||||
address 'Maxfeldstrasse 5 \n90409 Nuremberg'
|
||||
street 'Maxfeldstrasse 5'
|
||||
city 'Nuremberg'
|
||||
postalcode '90489'
|
||||
country 'DE'
|
||||
website 'www.opensuse.org'
|
||||
description 'Lorem Ipsum Dolor'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ feature 'Has correct abilities' do
|
|||
expect(page).to have_link('Schedule', href: "/admin/conference/#{conference1.short_title}/schedule")
|
||||
expect(page).to have_link('Campaigns', href: "/admin/conference/#{conference1.short_title}/campaigns")
|
||||
expect(page).to have_link('Goals', href: "/admin/conference/#{conference1.short_title}/targets")
|
||||
expect(page).to have_link('Venue', href: "/admin/conference/#{conference1.short_title}/venue/edit")
|
||||
expect(page).to have_link('Venue', href: "/admin/conference/#{conference1.short_title}/venue")
|
||||
expect(page).to have_link('Rooms', href: "/admin/conference/#{conference1.short_title}/rooms")
|
||||
expect(page).to have_link('Lodgings', href: "/admin/conference/#{conference1.short_title}/lodgings")
|
||||
expect(page).to have_link('Sponsorship', href: "/admin/conference/#{conference1.short_title}/sponsorship_levels")
|
||||
|
|
@ -100,7 +100,7 @@ feature 'Has correct abilities' do
|
|||
expect(page).to have_link('Schedule', href: "/admin/conference/#{conference2.short_title}/schedule")
|
||||
expect(page).to_not have_link('Campaigns', href: "/admin/conference/#{conference2.short_title}/campaigns")
|
||||
expect(page).to_not have_link('Goals', href: "/admin/conference/#{conference2.short_title}/targets")
|
||||
expect(page).to have_link('Venue', href: "/admin/conference/#{conference2.short_title}/venue/edit")
|
||||
expect(page).to have_link('Venue', href: "/admin/conference/#{conference2.short_title}/venue")
|
||||
expect(page).to have_link('Rooms', href: "/admin/conference/#{conference2.short_title}/rooms")
|
||||
expect(page).to_not have_link('Lodgings', href: "/admin/conference/#{conference2.short_title}/lodgings")
|
||||
expect(page).to_not have_link('Sponsorship', href: "/admin/conference/#{conference2.short_title}/sponsorship_levels")
|
||||
|
|
@ -171,7 +171,7 @@ feature 'Has correct abilities' do
|
|||
expect(page).to_not have_link('Schedule', href: "/admin/conference/#{conference3.short_title}/schedule")
|
||||
expect(page).to_not have_link('Campaigns', href: "/admin/conference/#{conference3.short_title}/campaigns")
|
||||
expect(page).to_not have_link('Targets', href: "/admin/conference/#{conference3.short_title}/targets")
|
||||
expect(page).to_not have_link('Venue', href: "/admin/conference/#{conference3.short_title}/venue/edit")
|
||||
expect(page).to_not have_link('Venue', href: "/admin/conference/#{conference3.short_title}/venue")
|
||||
expect(page).to_not have_link('Rooms', href: "/admin/conference/#{conference3.short_title}/rooms")
|
||||
expect(page).to_not have_link('Lodgings', href: "/admin/conference/#{conference3.short_title}/lodgings")
|
||||
expect(page).to_not have_link('Sponsorship', href: "/admin/conference/#{conference3.short_title}/sponsorship_levels")
|
||||
|
|
@ -243,7 +243,7 @@ feature 'Has correct abilities' do
|
|||
expect(page).to_not have_link('Schedule', href: "/admin/conference/#{conference4.short_title}/schedule")
|
||||
expect(page).to_not have_link('Campaigns', href: "/admin/conference/#{conference4.short_title}/campaigns")
|
||||
expect(page).to_not have_link('Goals', href: "/admin/conference/#{conference4.short_title}/targets")
|
||||
expect(page).to_not have_link('Venue', href: "/admin/conference/#{conference4.short_title}/venue/edit")
|
||||
expect(page).to_not have_link('Venue', href: "/admin/conference/#{conference4.short_title}/venue")
|
||||
expect(page).to_not have_link('Rooms', href: "/admin/conference/#{conference4.short_title}/rooms")
|
||||
expect(page).to_not have_link('Lodgings', href: "/admin/conference/#{conference4.short_title}/lodgings")
|
||||
expect(page).to_not have_link('Sponsorship', href: "/admin/conference/#{conference4.short_title}/sponsorship_levels")
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ feature Lodging do
|
|||
scenario 'Add a lodging', feature: true, js: true do
|
||||
path = "#{Rails.root}/app/assets/images/rails.png"
|
||||
|
||||
conference.venue = create(:venue)
|
||||
sign_in organizer
|
||||
visit admin_conference_lodgings_path(
|
||||
conference_id: conference.short_title)
|
||||
|
|
@ -16,7 +15,6 @@ feature Lodging do
|
|||
click_link 'Add Lodging'
|
||||
|
||||
fill_in 'lodging_name', with: 'New lodging'
|
||||
fill_in 'lodging_description', with: 'This is the lodging description'
|
||||
fill_in 'lodging_website_link', with: 'http:\\www.google.com'
|
||||
attach_file 'Photo', path
|
||||
|
||||
|
|
@ -25,17 +23,13 @@ feature Lodging do
|
|||
# Validations
|
||||
expect(flash).to eq('Lodging successfully created.')
|
||||
expect(page.has_content?('New lodging')).to be true
|
||||
expect(page.has_content?('This is the lodging description')).to be true
|
||||
expect(page.has_content?('Go to Website')).to be true
|
||||
expect(Lodging.count).to eq(1)
|
||||
end
|
||||
|
||||
scenario 'Update a lodging', feature: true, js: true do
|
||||
path = "#{Rails.root}/app/assets/images/rails.png"
|
||||
|
||||
venue = create(:venue)
|
||||
lodging = create(:lodging, venue: conference.venue)
|
||||
conference.venue = venue
|
||||
lodging = create(:lodging, conference: conference)
|
||||
|
||||
sign_in organizer
|
||||
visit admin_conference_lodgings_path(
|
||||
|
|
@ -48,7 +42,6 @@ feature Lodging do
|
|||
click_link 'Edit'
|
||||
|
||||
fill_in 'lodging_name', with: 'New lodging'
|
||||
fill_in 'lodging_description', with: 'This is the lodging description'
|
||||
fill_in 'lodging_website_link', with: 'http:\\www.google.com'
|
||||
attach_file 'Photo', path
|
||||
|
||||
|
|
@ -57,19 +50,15 @@ feature Lodging do
|
|||
# Validations
|
||||
expect(flash).to eq('Lodging successfully updated.')
|
||||
expect(page.has_content?('New lodging')).to be true
|
||||
expect(page.has_content?('This is the lodging description')).to be true
|
||||
expect(page.has_content?('Go to Website')).to be true
|
||||
lodging.reload
|
||||
expect(lodging.name).to eq('New lodging')
|
||||
expect(lodging.description).to eq('This is the lodging description')
|
||||
expect(lodging.description).to eq('Lorem Ipsum Dolor')
|
||||
expect(lodging.website_link).to eq('http:\\www.google.com')
|
||||
expect(Lodging.count).to eq(1)
|
||||
end
|
||||
|
||||
scenario 'Delete a lodging', feature: true, js: true do
|
||||
venue = create(:venue)
|
||||
create(:lodging, venue: conference.venue)
|
||||
conference.venue = venue
|
||||
conference.lodgings << create(:lodging)
|
||||
|
||||
sign_in organizer
|
||||
visit admin_conference_lodgings_path(
|
||||
|
|
|
|||
|
|
@ -17,8 +17,6 @@ feature Splashpage do
|
|||
|
||||
expect(flash).to eq('Splashpage successfully created.')
|
||||
expect(current_path).to eq(admin_conference_splashpage_path(conference.short_title))
|
||||
|
||||
splashpage = Splashpage.find_by(conference_id: conference.id)
|
||||
end
|
||||
|
||||
context 'splashpage already created' do
|
||||
|
|
|
|||
|
|
@ -17,8 +17,10 @@ feature Conference do
|
|||
text).to eq('Update Venue')
|
||||
|
||||
fill_in 'venue_name', with: 'Example University'
|
||||
fill_in 'venue_address', with: 'Example Street 42 \n' +
|
||||
'12345 Example City \n Germany'
|
||||
fill_in 'venue_street', with: 'Example Street 42'
|
||||
fill_in 'venue_city', with: 'Example City'
|
||||
fill_in 'venue_postalcode', with: '12345'
|
||||
select 'Germany', from: 'venue_country'
|
||||
fill_in 'venue_website', with: 'www.example.com'
|
||||
fill_in 'venue_description',
|
||||
with: 'Lorem ipsum dolor sit amet, consetetur' \
|
||||
|
|
@ -31,15 +33,13 @@ feature Conference do
|
|||
|
||||
venue = Conference.find(conference.id).venue
|
||||
expect(venue.name).to eq('Example University')
|
||||
expect(venue.address).to eq('Example Street 42 \n' \
|
||||
'12345 Example City \n Germany')
|
||||
expect(venue.street).to eq('Example Street 42')
|
||||
expect(venue.website).to eq('www.example.com')
|
||||
expect(venue.description).to eq('Lorem ipsum dolor sit amet, consetetur' \
|
||||
'sadipscing elitr, sed diam nonumy eirmod tempor')
|
||||
|
||||
click_link 'Edit Venue'
|
||||
fill_in 'venue_name', with: 'Example University new'
|
||||
fill_in 'venue_address', with: 'Example Street 42 \n ' \
|
||||
'12345 Example City \n Germany new'
|
||||
fill_in 'venue_website', with: 'www.example.com new'
|
||||
fill_in 'venue_description',
|
||||
with: 'new'
|
||||
|
|
@ -50,8 +50,6 @@ feature Conference do
|
|||
|
||||
venue.reload
|
||||
expect(venue.name).to eq('Example University new')
|
||||
expect(venue.address).to eq('Example Street 42 \n ' \
|
||||
'12345 Example City \n Germany new')
|
||||
expect(venue.website).to eq('www.example.com new')
|
||||
expect(venue.description).to eq('new')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -980,6 +980,7 @@ describe Conference do
|
|||
start_date: Date.today,
|
||||
end_date: Date.today + 14)
|
||||
subject.call_for_papers = nil
|
||||
subject.venue = nil
|
||||
subject.rooms = []
|
||||
subject.tracks = []
|
||||
subject.event_types = []
|
||||
|
|
@ -997,6 +998,7 @@ describe Conference do
|
|||
start_date: Date.today,
|
||||
end_date: Date.today + 14)
|
||||
subject.call_for_papers = create(:call_for_papers)
|
||||
subject.venue = nil
|
||||
subject.rooms = []
|
||||
subject.tracks = []
|
||||
subject.event_types = []
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ describe 'admin/lodgings/index' do
|
|||
it 'renders lodgings list' do
|
||||
@conference = create(:conference)
|
||||
@conference.venue = create(:venue)
|
||||
@conference.venue.lodgings << create(:lodging, venue: @conference.venue)
|
||||
@conference.lodgings << create(:lodging)
|
||||
assign :venue, @conference.venue
|
||||
render
|
||||
expect(rendered).to include('Example Hotel')
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'admin/venues/edit' do
|
||||
|
||||
it 'renders venues#show' do
|
||||
@conference = create(:conference)
|
||||
@venue = @conference.venue
|
||||
@venue.name = 'Croatia'
|
||||
@venue.description = 'Lorem ipsum dolsum'
|
||||
@venue.save!
|
||||
assign :conference, @conference
|
||||
assign :venue, @venue
|
||||
render
|
||||
expect(rendered).to include('Croatia')
|
||||
expect(rendered).to include('Lorem ipsum dolsum')
|
||||
end
|
||||
end
|
||||
|
|
@ -33,7 +33,7 @@ describe 'conference/show.html.haml' do
|
|||
conference: @conference)
|
||||
|
||||
@conference.venue = create(:venue)
|
||||
@conference.venue.lodgings << create(:lodging, venue: @conference.venue)
|
||||
@conference.lodgings << create(:lodging)
|
||||
assign :conference, @conference
|
||||
render
|
||||
end
|
||||
|
|
@ -51,13 +51,12 @@ describe 'conference/show.html.haml' do
|
|||
end
|
||||
|
||||
it 'renders call_for_papers partial' do
|
||||
expect(rendered).to match(/#{@conference.call_for_papers.description}/)
|
||||
expect(rendered).to match(/We are ready to accept your proposals for sessions!/)
|
||||
end
|
||||
|
||||
it 'renders sponsors partial' do
|
||||
expect(view).to render_template(partial: 'conference/_sponsors')
|
||||
expect(rendered).to match(/example@example.com/)
|
||||
expect(rendered).to match(/Platin/)
|
||||
expect(rendered).to match(/Example sponsor/)
|
||||
expect(rendered).to match(/www.example.com/)
|
||||
expect(rendered).to match(/Lorem Ipsum Dolor/)
|
||||
|
|
@ -72,8 +71,8 @@ describe 'conference/show.html.haml' do
|
|||
expect(rendered).to match(/twitter.com/)
|
||||
end
|
||||
|
||||
it 'renders location partial' do
|
||||
expect(view).to render_template(partial: 'conference/_location')
|
||||
it 'renders venue partial' do
|
||||
expect(view).to render_template(partial: 'conference/_venue')
|
||||
expect(rendered).to match(/Suse Office/)
|
||||
expect(rendered).to match(/Maxfeldstrasse 5/)
|
||||
expect(rendered).to match(/www.opensuse.org/)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue