Merge pull request #546 from hennevogel/feature-conference-view

Another round of splash design
This commit is contained in:
Henne Vogelsang 2014-11-21 13:49:54 +01:00
commit f6a87331be
65 changed files with 1979 additions and 723 deletions

View file

@ -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'

View file

@ -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:
@ -59,7 +66,7 @@ GEM
axlsx (>= 2.0.1)
rails (>= 3.1)
bcrypt (3.1.7)
bootstrap-sass (3.1.1.1)
bootstrap-sass (3.3.1.0)
sass (~> 3.2)
bootstrap3-datetimepicker-rails (3.0.3)
momentjs-rails (>= 2.8.1)
@ -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)

View file

@ -22,10 +22,13 @@
//= require dashboard
//= require ahoy
//= require smoothscroll
//= require trianglify.min
//= require tinycolor
//= require bootstrap-markdown
//= require to-markdown
//= require markdown
//= require moment
//= require leaflet
//= require bootstrap-datetimepicker
//= require osem-datepickers
//= require osem-datatables

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -12,4 +12,5 @@
*= require font-awesome
*= require bootstrap-markdown.min
*= require bootstrap-datetimepicker
*= require leaflet
*/

View file

@ -8,11 +8,11 @@
}
@else if $class == md {
@media (min-width: 970px) { @content; }
@media (min-width: 992px) { @content; }
}
@else if $class == lg {
@media (min-width: 1170px) { @content; }
@media (min-width: 1200px) { @content; }
}
@else {

View file

@ -1,4 +1,8 @@
@import "breakpoints.css.scss";
#splash {
// Counter the general padding for #content
margin-bottom: -60px;
section {
padding-top: 60px;
padding-bottom: 60px;
@ -11,114 +15,158 @@
section:nth-child(odd) {
background: none repeat scroll 0 0 #ffffff;
color: #7b7b7b;
.thumbnail {
background: none repeat scroll 0 0 #e0e0e0;
}
}
}
#splash-banner{
background: none;
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
min-height: 700px;
margin-top: -10px;
.container {
.cta-button {
padding-top: 30px;
}
#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;
}
}
}
#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;
}
#lodging {
@include breakpoint(xs) {
.img-lodging{
max-width: 280px;
}
}
@include breakpoint(sm) {
.img-lodging{
max-width: 200px;
}
}
@include breakpoint(sm) {
.img-lodging{
max-width: 260px;
}
}
@include breakpoint(lg) {
.img-lodging{
max-width: 300px;
max-height: 200px;
}
}
}
#sponsors {
.img-sponsor {
max-height: 100px;
}
.img-sponsor-1 {
max-height: 200px;
}
.img-sponsor-2 {
max-height: 150px;
}
.img-sponsor-3 {
max-height: 120px;
}
@include breakpoint(xs) {
.img-sponsor, .img-sponsor-1, .img-sponsor-3, .img-sponsor-3{
max-height: unset;
max-width: 280px;
}
}
}
#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;
}
@include breakpoint(xs) {
a{
padding-left: 10px;
}
}
}
h1, h3{
color:#3399CC;
}
h3{
font-family: 'Coustard', serif;
font-weight: 600;
text-shadow: 0.2em 0.2em 0 #4A4F6A;
}
h1{
font-size: 5em;
font-weight: 700;
text-shadow:0.04em 0.04em 0 black;
}
p {
color: #fff;
font-weight: 500;
}
}
#program {
.tracks:hover{
background-color: white;
}
}
#callforpapers {
.timer-box{
width: 130px;
margin: 35px 24px 20px 0;
border-radius: 50%;
border:4px solid #989797;
}
#cfp-date{
font-size: 40px;
color: #ff6633;
}
}
#location {
background-repeat: no-repeat;
background-position: center center;
width: 100%;
background-size: cover;
min-height: 500px;
h1,h2,p{
color: #fff;
}
h1,h2,li,p{
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
font-weight: 400;
}
}
#social-media{
i{
color: #4a4a4a;
}
i:hover{
color: #16a085;
}
}
.scroll-top-wrapper {
position: fixed;
opacity: 0;
visibility: hidden;
overflow: hidden;
text-align: center;
z-index: 99999999;
background-color: #424242;
width: 50px;
height: 48px;
line-height: 48px;
right: 30px;
bottom: 30px;
padding-top: 2px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
i.fa {
line-height: inherit;
}
&.show {
visibility:visible;
cursor:pointer;
opacity: 1.0;
}
a {
color: white;
.scroll-top-wrapper {
position: fixed;
opacity: 0;
visibility: hidden;
overflow: hidden;
text-align: center;
z-index: 99999999;
background-color: #424242;
width: 50px;
height: 48px;
line-height: 48px;
right: 30px;
bottom: 30px;
padding-top: 2px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
i.fa {
line-height: inherit;
}
&.show {
visibility:visible;
cursor:pointer;
opacity: 1.0;
}
a {
color: white;
}
}
}

View file

@ -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;
@ -24,4 +28,25 @@ body {
.nav-tabs {
margin-bottom: 15px;
}
.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;
}

View file

@ -59,4 +59,4 @@ $navbar-default-link-hover-color: #000000;
// Utility classes
@import "bootstrap/utilities";
@import "bootstrap/responsive-utilities";
@import "bootstrap/responsive-utilities";

View file

@ -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('. ')}."

View file

@ -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

View file

@ -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,

View file

@ -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

View file

@ -8,7 +8,7 @@ class Conference < ActiveRecord::Base
default_scope { order('start_date DESC') }
attr_accessible :title, :short_title, :timezone, :html_export_path,
attr_accessible :title, :short_title, :description, :timezone, :html_export_path,
:start_date, :end_date, :rooms_attributes, :tracks_attributes,
:dietary_choices_attributes, :use_dietary_choices,
:tickets_attributes, :social_events_attributes, :event_types_attributes,
@ -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.
#

View file

@ -10,4 +10,9 @@ class Contact < ActiveRecord::Base
validates :facebook, :twitter, :googleplus, :instagram,
format: URI::regexp(%w(http https)), allow_blank: true
def has_social_media?
return true if !facebook.blank? || !twitter.blank? || !googleplus.blank? || !instagram.blank?
false
end
end

View file

@ -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

View file

@ -1,15 +1,8 @@
class Splashpage < ActiveRecord::Base
belongs_to :conference
attr_accessible :banner_description, :ticket_description, :sponsor_description, :lodging_description,
:registration_description, :include_registrations, :include_sponsors,
:include_tracks, :include_tickets, :include_program, :public, :banner_photo, :include_banner,
:include_social_media, :include_lodgings, :include_venue, :lodging_description
has_attached_file :banner_photo,
styles: { thumb: '100x100>', large: '1300x700>' }
validates_attachment_content_type :banner_photo,
content_type: [/jpg/, /jpeg/, /png/, /gif/],
size: { in: 0..500.kilobytes }
attr_accessible :public,
:include_tracks, :include_program,
:include_venue, :include_registrations,
:include_tickets, :include_lodgings,
:include_sponsors, :include_social_media
end

View file

@ -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)

View file

@ -1,8 +1,9 @@
.row
.col-md-8
= semantic_form_for(@conference, :url => admin_conference_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :title, :hint => "The full name of the conference, such as 'openSUSE Conference 2013'"
= f.input :short_title, :hint => "A short title, such as 'osc2013', to be used in URLs"
= f.input :title, :hint => "The full title of the conference, e.g. 'openSUSE Conference 2014'"
= f.input :short_title, :hint => "A short title, e.g. 'oSC14', to be used in URLs"
= f.input :description, hint: markdown_hint('A description of the conference.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :color, :hint => "The color will be used eg for the dashboard.", :input_html => {:size => 6, :type => "color"}
- if !@conference.logo.blank?
= image_tag @conference.logo(:thumb)

View file

@ -9,6 +9,11 @@
Short Title
%dd
= @conference.short_title
%dt
Description
%dd
- unless @conference.description.blank?
= markdown(@conference.description)
%dt
Date
%dd

View file

@ -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' }

View file

@ -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 }

View file

@ -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

View file

@ -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 }

View file

@ -2,26 +2,14 @@
.row
.col-md-8
= semantic_form_for(@splashpage, url: admin_conference_splashpage_path(@conference.short_title)) do |f|
= f.inputs name: 'Banner' do
= f.input :banner_photo, hint: 'This will be the top most component of the splash. This background cover will contain start_date and end_date of the conference and the description.'
= f.input :banner_description, hint: markdown_hint('This description will be shown at the bottom of the banner photo of the Splashpage.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :include_banner, label: 'Display banner on the splashpage?'
= f.inputs name: 'Components' do
= f.input :ticket_description, hint: markdown_hint('This will appear in the Tickets segment of the splash.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :include_tickets, label: 'Display tickets on the splashpage?'
%br
= f.input :sponsor_description, hint: markdown_hint('This will appear in the Sponsors segment of the splash.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :include_sponsors, label: 'Display sponsors on the splashpage?'
%br
= f.input :registration_description, hint: markdown_hint(''), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :include_registrations, label: 'Display the registration period on the splashpage?'
%br
= f.input :lodging_description, hint: markdown_hint('This will appear in the Lodgings segment of the splash.'), input_html: { rows: 5, data: { provide: 'markdown-editable' } }
= f.input :include_lodgings, label: 'Display the lodgings on the splashpage?'
%br
= f.input :include_tracks, label: 'Display tracks on the splashpage?'
= f.input :include_program, label: 'Display program on the splashpage?'
= f.input :include_social_media, label: 'Display social media on the splashpage?'
= f.input :include_venue, label: 'Display venue on the splashpage?'
= f.input :public, label: 'Make splash page public! (Attention: Please do this only after you have finished the configuration of the conference!)'
= f.input :include_registrations, label: 'Display the registration period on the splashpage?'
= f.input :include_tickets, label: 'Display tickets on the splashpage?'
= f.input :include_lodgings, label: 'Display the lodgings on the splashpage?'
= f.input :include_sponsors, label: 'Display sponsors on the splashpage?'
= f.input :include_social_media, label: 'Display social media on the splashpage?'
= f.input :public, label: 'Make splash page public?'
= f.submit 'Save Splashpage', class: 'btn btn-primary'

View file

@ -4,11 +4,6 @@
.row
.col-md-8
%dl.dl-horizontal
%dt
Ticket:
%dd
- unless @splashpage.ticket_description.blank?
= markdown(@splashpage.ticket_description)
%dt
Include Tickets:
%dd
@ -16,11 +11,6 @@
Yes
- else
No
%dt
Sponsor:
%dd
- unless @splashpage.sponsor_description.blank?
= markdown(@splashpage.sponsor_description)
%dt
Include Sponsors:
%dd
@ -28,11 +18,6 @@
Yes
- else
No
%dt
Registration:
%dd
- unless @splashpage.registration_description.blank?
= markdown(@splashpage.registration_description)
%dt
Include Registrations:
%dd
@ -40,11 +25,6 @@
Yes
- else
No
%dt
Lodging:
%dd
- unless @splashpage.lodging_description.blank?
= markdown(@splashpage.lodging_description)
%dt
Include Tracks:
%dd
@ -74,34 +54,6 @@
- else
No
.row.row-flex.row-flex-wrap
.col-md-4
.thumbnail.flex-col
%h3.text-center
Conference Banner
- if @splashpage.banner_photo?
= image_tag(@splashpage.banner_photo(:large), class: 'img-responsive')
.caption.flex-grow
.caption
%p
%dl.dl-horizontal
%dt
Filename
%dd
= @splashpage.banner_photo_file_name
%dt Description
%dd
- unless @splashpage.banner_description.blank?
= markdown(@splashpage.banner_description)
%dt Included
%dd
- if @splashpage.include_banner
Yes
- else
No
- else
%h4.text-center
Not set!
%br
- if can? :update, @splashpage
= link_to 'Edit', edit_admin_conference_splashpage_path, class: 'btn btn-primary'

View file

@ -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

View file

@ -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!

View file

@ -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'

View 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

View file

@ -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.col-sm-10.col-sm-offset-1
%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'

View file

@ -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
,&nbsp;
\#{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)

View file

@ -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

View file

@ -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)

View file

@ -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.col-sm-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)

View file

@ -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.tracks.any? 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-sm-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

View file

@ -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

View file

@ -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

View file

@ -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-sm-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

View file

@ -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.col-sm-3
.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

View 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 &copy; <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

View file

@ -1,51 +1,73 @@
#splash
- if @conference.splashpage
- if @conference.splashpage.include_banner?
#splash-banner{ style: ("background-image: url(#{@conference.splashpage.banner_photo})" unless @conference.splashpage.banner_photo.blank?) }
#banner
.container
.row
.col-md-8.col-md-offset-2#header
.row
.col-md-4
= image_tag(@conference.logo(:original), class: 'img-responsive img-center', id: 'splash-logo') if @conference.logo?
.col-md-8
%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?
%section#about
.container
.row
.col-md-12.text-center
%h1= @conference.title
- if @conference.start_date && @conference.end_date
%h3= date_string(@conference.start_date, @conference.end_date)
- unless @conference.splashpage.banner_description.blank?
%p.lead
= markdown(@conference.splashpage.banner_description)
-unless @conference.photos.blank?
= link_to 'Gallery', gallery_photos_conference_path(@conference.short_title), class: 'btn btn-primary btn-lg', id: 'gallery-btn', remote: true
= render 'gallery'
- 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'
.col-md-8.col-md-offset-2
%h3.text-center
= markdown(@conference.description)
- 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
- if @conference.splashpage.include_social_media and @conference.contact.has_social_media?
%section#social-media
= render 'social_media'
// grmbl
= render 'footer'
- content_for :script_head do
: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);
});
});

View file

@ -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

View file

@ -43,18 +43,18 @@
%li{:class=> "#{active_nav_li(admin_conference_photos_path(@conference.short_title))}"}
= link_to 'Photos', admin_conference_photos_path(@conference.short_title)
- if can? :update, @conference
%li{:class=> active_nav_li(admin_conference_splashpage_path(@conference.short_title))}
= link_to 'Splashpage', 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
%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, 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

View file

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

View file

@ -15,14 +15,9 @@
detectlang: true,
autocollect: true
};
$(function() {
$('.dropdown input, .dropdown label').click(function(e) {
e.stopPropagation();
});
});
= content_for(:script_head)
= javascript_include_tag "//cdn.transifex.com/live.js"
= yield(:head)
%body
= render 'layouts/navigation'
@ -31,7 +26,8 @@
= render 'layouts/admin'
-else
#messages
= render 'layouts/messages'
.container
= render 'layouts/messages'
#content
= yield
#footer
@ -45,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

View file

@ -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]

View file

@ -0,0 +1,25 @@
class MoveBannerDescriptionToConference < ActiveRecord::Migration
class TempConference < ActiveRecord::Base
self.table_name = 'conferences'
attr_accessible :description
end
class TempSplashpage < ActiveRecord::Base
self.table_name = 'splashpages'
end
def change
add_column :conferences, :description, :text
TempConference.reset_column_information
# Copy value from splash to conferenc
TempConference.all.each do |conference|
if TempSplashpage.exists?(conference_id: conference.id)
splash = TempSplashpage.find_by(conference_id: conference.id)
conference.update_attributes(description: splash.banner_description)
end
end
remove_column :splashpages, :banner_description, :text
end
end

View file

@ -0,0 +1,10 @@
class DropSplashDescriptionsAndPhoto < ActiveRecord::Migration
def change
remove_column :splashpages, :ticket_description
remove_column :splashpages, :sponsor_description
remove_column :splashpages, :registration_description
remove_column :splashpages, :lodging_description
remove_column :splashpages, :include_banner
remove_attachment :splashpages, :banner_photo
end
end

View 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

View 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

View file

@ -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

View file

@ -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

View file

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20141113134103) 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: 20141113134103) 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: 20141113134103) 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: 20141113134103) 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"
@ -106,6 +105,7 @@ ActiveRecord::Schema.define(version: 20141113134103) do
t.boolean "use_volunteers"
t.string "color"
t.text "events_per_week"
t.text "description"
end
create_table "conferences_questions", id: false, force: true do |t|
@ -145,8 +145,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -154,37 +154,37 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -193,14 +193,14 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -222,28 +222,28 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -261,10 +261,10 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -276,6 +276,29 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -299,8 +322,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -308,8 +331,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -324,12 +347,12 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -347,8 +370,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -385,21 +408,11 @@ ActiveRecord::Schema.define(version: 20141113134103) do
t.boolean "include_tracks"
t.boolean "include_program"
t.boolean "include_social_media"
t.boolean "include_banner"
t.boolean "include_venue"
t.boolean "include_tickets"
t.text "ticket_description"
t.boolean "include_registrations"
t.text "registration_description"
t.boolean "include_sponsors"
t.text "sponsor_description"
t.boolean "include_lodgings"
t.text "lodging_description"
t.text "banner_description"
t.string "banner_photo_file_name"
t.string "banner_photo_content_type"
t.integer "banner_photo_file_size"
t.datetime "banner_photo_updated_at"
t.datetime "created_at"
t.datetime "updated_at"
end
@ -461,13 +474,13 @@ ActiveRecord::Schema.define(version: 20141113134103) 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|
@ -485,8 +498,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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"
@ -519,33 +532,37 @@ ActiveRecord::Schema.define(version: 20141113134103) 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
@ -579,8 +596,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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
@ -588,8 +605,8 @@ ActiveRecord::Schema.define(version: 20141113134103) 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

View file

@ -5,6 +5,5 @@ FactoryGirl.define do
name 'Example Hotel'
description 'Lorem Ipsum Dolor'
website_link 'http://www.example.com'
venue
end
end

View file

@ -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

View file

@ -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")

View file

@ -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(

View file

@ -13,33 +13,13 @@ feature Splashpage do
visit admin_conference_splashpage_path(conference.short_title)
click_link 'Create Splashpage'
fill_in 'splashpage_banner_description', with: 'banner description'
fill_in 'splashpage_ticket_description', with: 'ticket description'
fill_in 'splashpage_sponsor_description', with: 'sponsor description'
fill_in 'splashpage_registration_description', with: 'registration description'
fill_in 'splashpage_lodging_description', with: 'lodging description'
click_button 'Save Splashpage'
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)
splashpage.reload
expect(splashpage.banner_description).to eq('banner description')
expect(splashpage.ticket_description).to eq('ticket description')
expect(splashpage.sponsor_description).to eq('sponsor description')
expect(splashpage.registration_description).to eq('registration description')
expect(splashpage.lodging_description).to eq('lodging description')
end
context 'splashpage already created' do
# before(:each) do
# @splashpage = create(:splashpage)
# conference.splashpage = @splashpage
# end
#
let!(:splashpage) { create(:splashpage, conference: conference, public: false)}
scenario 'update a valid splashpage', js: true do
@ -47,24 +27,14 @@ feature Splashpage do
visit admin_conference_splashpage_path(conference.short_title)
click_link 'Edit'
fill_in 'splashpage_banner_description', with: 'banner description'
fill_in 'splashpage_ticket_description', with: 'ticket description'
fill_in 'splashpage_sponsor_description', with: 'sponsor description'
fill_in 'splashpage_registration_description', with: 'registration description'
fill_in 'splashpage_lodging_description', with: 'lodging description'
check('Make splash page public')
click_button 'Save Splashpage'
expect(flash).to eq('Splashpage successfully updated.')
expect(current_path).to eq(admin_conference_splashpage_path(conference.short_title))
splashpage.reload
expect(splashpage.banner_description).to eq('banner description')
expect(splashpage.ticket_description).to eq('ticket description')
expect(splashpage.sponsor_description).to eq('sponsor description')
expect(splashpage.registration_description).to eq('registration description')
expect(splashpage.lodging_description).to eq('lodging description')
click_link 'Edit'
expect(page.has_checked_field?('Make splash page public?')).to be true
end
scenario 'delete the splashpage', js: true do

View file

@ -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

View file

@ -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 = []

View file

@ -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')

View file

@ -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

View file

@ -2,18 +2,14 @@ require 'spec_helper'
describe 'conference/show.html.haml' do
before(:each) do
allow(view).to receive(:date_string).and_return('January 17 - 21 2014')
@conference = create(:conference)
@conference = create(:conference, description: 'Lorem Ipsum')
@conference.splashpage = create(:splashpage,
banner_description: 'Banner Description',
sponsor_description: 'Sponsor Description',
registration_description: 'Registration Description',
include_registrations: true,
include_program: true,
include_sponsors: true,
include_tracks: true,
include_tickets: true,
include_banner: true,
include_social_media: true,
include_venue: true,
include_lodgings: true)
@ -37,14 +33,13 @@ 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
it 'renders banner component' do
expect(rendered).to match(/#{@conference.splashpage.banner_description}/)
expect(rendered).to match(/#{@conference.short_title}/)
expect(rendered).to match(/#{@conference.description}/)
end
it 'renders program partial' do
@ -56,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/)
@ -77,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/)