Schedules!
This commit is contained in:
parent
34e72144cc
commit
bc80c09938
50
Gemfile.lock
50
Gemfile.lock
@ -162,11 +162,11 @@ GEM
|
||||
daemons (1.2.3)
|
||||
database_cleaner (1.5.0)
|
||||
debug_inspector (0.0.2)
|
||||
delayed_job (4.0.6)
|
||||
delayed_job (4.1.1)
|
||||
activesupport (>= 3.0, < 5.0)
|
||||
delayed_job_active_record (4.0.3)
|
||||
activerecord (>= 3.0, < 5.0)
|
||||
delayed_job (>= 3.0, < 4.1)
|
||||
delayed_job_active_record (4.1.0)
|
||||
activerecord (>= 3.0, < 5)
|
||||
delayed_job (>= 3.0, < 5)
|
||||
diff-lcs (1.2.5)
|
||||
diffy (3.0.7)
|
||||
docile (1.1.5)
|
||||
@ -189,16 +189,16 @@ GEM
|
||||
railties (>= 3.2, < 5.0)
|
||||
forgery (0.6.0)
|
||||
formatador (0.2.5)
|
||||
gdk_pixbuf2 (3.0.3)
|
||||
glib2 (= 3.0.3)
|
||||
gdk_pixbuf2 (3.0.3-x86-mingw32)
|
||||
glib2 (= 3.0.3)
|
||||
gdk_pixbuf2 (3.0.5)
|
||||
glib2 (= 3.0.5)
|
||||
gdk_pixbuf2 (3.0.5-x86-mingw32)
|
||||
glib2 (= 3.0.5)
|
||||
geocoder (1.2.11)
|
||||
gherkin3 (3.1.1)
|
||||
git-version-bump (0.15.1)
|
||||
glib2 (3.0.3)
|
||||
glib2 (3.0.5)
|
||||
pkg-config
|
||||
glib2 (3.0.3-x86-mingw32)
|
||||
glib2 (3.0.5-x86-mingw32)
|
||||
cairo (>= 1.12.8)
|
||||
pkg-config
|
||||
globalid (0.3.6)
|
||||
@ -225,7 +225,7 @@ GEM
|
||||
haml (>= 4.0.6, < 5.0)
|
||||
html2haml (>= 1.0.1)
|
||||
railties (>= 4.0.1)
|
||||
highline (1.7.5)
|
||||
highline (1.7.7)
|
||||
html2haml (2.0.0)
|
||||
erubis (~> 2.7.0)
|
||||
haml (~> 4.0.0)
|
||||
@ -266,7 +266,7 @@ GEM
|
||||
mime-types (2.6.2)
|
||||
mini_magick (4.3.3)
|
||||
mini_portile (0.6.2)
|
||||
minitest (5.8.0)
|
||||
minitest (5.8.1)
|
||||
mocha (1.1.0)
|
||||
metaclass (~> 0.0.1)
|
||||
multi_json (1.11.2)
|
||||
@ -278,7 +278,7 @@ GEM
|
||||
net-ssh (>= 2.6.5)
|
||||
net-sftp (2.1.2)
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh (2.9.2)
|
||||
net-ssh (3.0.1)
|
||||
net-ssh-gateway (1.2.0)
|
||||
net-ssh (>= 2.6.5)
|
||||
netrc (0.10.3)
|
||||
@ -296,9 +296,9 @@ GEM
|
||||
jwt (~> 0.1.4)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.2)
|
||||
pango (3.0.3-x86-mingw32)
|
||||
pango (3.0.5-x86-mingw32)
|
||||
cairo (>= 1.14.0)
|
||||
glib2 (= 3.0.3)
|
||||
glib2 (= 3.0.5)
|
||||
paper_trail (3.0.8)
|
||||
activerecord (>= 3.0, < 5.0)
|
||||
activesupport (>= 3.0, < 5.0)
|
||||
@ -314,11 +314,11 @@ GEM
|
||||
cliver (~> 0.3.1)
|
||||
multi_json (~> 1.0)
|
||||
websocket-driver (>= 0.2.0)
|
||||
pry (0.10.1)
|
||||
pry (0.10.2)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
pry (0.10.1-x86-mingw32)
|
||||
pry (0.10.2-x86-mingw32)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
@ -397,13 +397,13 @@ GEM
|
||||
rspec-mocks (~> 3.3.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-support (3.3.0)
|
||||
rsvg2 (3.0.3)
|
||||
rsvg2 (3.0.5)
|
||||
cairo (>= 1.12.8)
|
||||
gdk_pixbuf2 (= 3.0.3)
|
||||
rsvg2 (3.0.3-x86-mingw32)
|
||||
gdk_pixbuf2 (= 3.0.5)
|
||||
rsvg2 (3.0.5-x86-mingw32)
|
||||
cairo (>= 1.12.8)
|
||||
gdk_pixbuf2 (= 3.0.3)
|
||||
pango (>= 3.0.3)
|
||||
gdk_pixbuf2 (= 3.0.5)
|
||||
pango (>= 3.0.5)
|
||||
ruby_parser (3.7.1)
|
||||
sexp_processor (~> 4.1)
|
||||
rubyzip (1.1.7)
|
||||
@ -411,7 +411,7 @@ GEM
|
||||
capistrano (~> 2.15.4)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.18)
|
||||
sass-json-vars (0.3.2)
|
||||
sass-json-vars (0.3.3)
|
||||
sass (>= 3.1)
|
||||
sass-rails (5.0.4)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
@ -438,8 +438,8 @@ GEM
|
||||
bcrypt (~> 3.1)
|
||||
oauth (~> 0.4, >= 0.4.4)
|
||||
oauth2 (>= 0.8.0)
|
||||
sprockets (3.3.4)
|
||||
rack (~> 1.0)
|
||||
sprockets (3.3.5)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (2.3.3)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
|
@ -88,7 +88,6 @@ button,
|
||||
|
||||
&.register {
|
||||
background-color: $colour-4;
|
||||
//@include _(text-shadow, 0 0 0.15em rgba(0, 0, 0, 0.5));
|
||||
}
|
||||
|
||||
form.logout & {
|
||||
@ -102,6 +101,10 @@ button,
|
||||
#main &.delete {
|
||||
background-color: $colour-4;
|
||||
}
|
||||
|
||||
#main &.secondary {
|
||||
background-color: $colour-1;
|
||||
}
|
||||
}
|
||||
|
||||
a.button {
|
||||
@ -505,12 +508,16 @@ input {
|
||||
padding: 0 0.25em;
|
||||
font-weight: normal;
|
||||
@include font-family(secondary);
|
||||
@include _(text-stroke, 0.5px #000)
|
||||
@include _(text-stroke, 0.5px #000);
|
||||
}
|
||||
|
||||
.date-labels {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.date-field {
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
@ -530,6 +537,10 @@ form {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
&.left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.right {
|
||||
text-align: right;
|
||||
|
||||
@ -1940,3 +1951,234 @@ html[data-lingua-franca-example="html"] {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.conferences-edit_schedule {
|
||||
#main {
|
||||
.location {
|
||||
padding-top: 0.25em;
|
||||
}
|
||||
.errors {
|
||||
padding: 0.25em;
|
||||
background-color: $colour-2;
|
||||
color: $white;
|
||||
@include _(text-stroke, 0.5px #000);
|
||||
}
|
||||
.conflict-score {
|
||||
padding: 0.25em;
|
||||
background-color: $colour-3;
|
||||
color: #333;
|
||||
}
|
||||
.all-workshops, .all-events {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
border: 1px solid #CCC;
|
||||
background-color: lighten($colour-1, 35);
|
||||
@include default-box-shadow(top, 2);
|
||||
|
||||
&.error {
|
||||
outline: 0.2em solid $colour-2;
|
||||
outline-offset: -0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.workshop-interest {
|
||||
color: #888;
|
||||
text-align: left;
|
||||
margin: 0.25em 0;
|
||||
}
|
||||
|
||||
.error-description {
|
||||
background-color: $colour-2;
|
||||
color: $white;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.warnings {
|
||||
background-color: $colour-3;
|
||||
color: #333;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-color: transparent;
|
||||
@include _(box-shadow, none);
|
||||
}
|
||||
}
|
||||
}
|
||||
.day_parts {
|
||||
list-style: none;
|
||||
|
||||
h4 {
|
||||
display: inline-block;
|
||||
min-width: 12.5em;
|
||||
margin: 0.25em 0;
|
||||
}
|
||||
|
||||
select, .select {
|
||||
float: right;
|
||||
min-width: 5em;
|
||||
}
|
||||
|
||||
.select {
|
||||
padding-left: 0.25em;
|
||||
}
|
||||
}
|
||||
.actions {
|
||||
margin: 2em;
|
||||
}
|
||||
.unsaved {
|
||||
@include font-family(secondary);
|
||||
background-color: lighten($colour-3, 25);
|
||||
margin: 0 5em 2em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
.all-events {
|
||||
li {
|
||||
background-color: lighten($colour-5, 35);
|
||||
|
||||
&.meal {
|
||||
background-color: lighten($colour-3, 25);
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.programme {
|
||||
|
||||
.schedule {
|
||||
width: auto;
|
||||
margin: 0;
|
||||
min-width: 100%;
|
||||
@include _(box-shadow, none);
|
||||
table-layout: fixed;
|
||||
border-spacing: 0.25em;
|
||||
border-collapse: separate;
|
||||
|
||||
td {
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
@include font-family(secondary);
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
&.previewable {
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
@include default-box-shadow(top, 2);
|
||||
}
|
||||
}
|
||||
|
||||
&.workshop {
|
||||
background-color: lighten($colour-1, 35);
|
||||
border: 0.25em solid $colour-1;
|
||||
|
||||
.preview {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
@include after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.event {
|
||||
background-color: lighten($colour-5, 35);
|
||||
border: 0.25em solid $colour-5;
|
||||
}
|
||||
|
||||
&.meal {
|
||||
background-color: lighten($colour-3, 25);
|
||||
border: 0.25em solid $colour-3;
|
||||
}
|
||||
|
||||
&.not-interested {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.info {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
background-color: $white;
|
||||
text-align: left;
|
||||
overflow-y: auto;
|
||||
@include _(transition, transform 250ms ease-in-out);
|
||||
@include _(transform-origin, center bottom);
|
||||
@include _(transform, rotate(180deg) translate3d(0, 0, 0));
|
||||
|
||||
.close {
|
||||
float: right;
|
||||
font-size: 2em;
|
||||
|
||||
@include before {
|
||||
content: '×';
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
@include after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
&:target .info {
|
||||
@include _(transform, rotate(0) translate3d(0, 0, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.programme-day {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.programme-day-part {
|
||||
overflow-x: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.select-field {
|
||||
line-height: 1.75em;
|
||||
|
||||
select {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 2.1em;
|
||||
font-family: inherit;
|
||||
font-size: 1.5em;
|
||||
padding: 0.25em;
|
||||
@include default-box-shadow(top, 1.5, false);
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ $sidebar-width: rems(19);
|
||||
// $colour-5: #8EA604;
|
||||
|
||||
$colour-1: #00ADEF; // blue
|
||||
$colour-2: #DD57EF; // pink
|
||||
$colour-2: #EF57B4; // #DD57EF; // pink
|
||||
$colour-3: #E6C74B; // yellow
|
||||
$colour-4: #D89E59; // orange
|
||||
$colour-5: #02CA9E; // green
|
||||
|
@ -4,6 +4,8 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
class ApplicationController < LinguaFrancaApplicationController
|
||||
include ScheduleHelper
|
||||
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception, :except => [:do_confirm]
|
||||
@ -35,6 +37,21 @@ class ApplicationController < LinguaFrancaApplicationController
|
||||
super
|
||||
end
|
||||
|
||||
def home
|
||||
@workshops = Workshop.where(:conference_id => @conference.id)
|
||||
|
||||
if @conference.workshop_schedule_published
|
||||
@events = Event.where(:conference_id => @conference.id)
|
||||
schedule = get_schedule_data
|
||||
@schedule = schedule[:schedule]
|
||||
@locations = Hash.new
|
||||
EventLocation.where(:conference_id => @conference.id).each do |l|
|
||||
@locations[l.id.to_s] = l
|
||||
end
|
||||
@day_parts = @conference.day_parts ? JSON.parse(@conference.day_parts) : {:morning => 0, :afternoon => 13, :evening => 18}
|
||||
end
|
||||
end
|
||||
|
||||
def policy
|
||||
@is_policy_page = true
|
||||
end
|
||||
|
@ -2,6 +2,8 @@ require 'geocoder/calculations'
|
||||
require 'rest_client'
|
||||
|
||||
class ConferencesController < ApplicationController
|
||||
include ScheduleHelper
|
||||
|
||||
before_action :set_conference, only: [:show, :edit, :update, :destroy, :registrations]
|
||||
before_filter :authenticate, only: [:registrations]
|
||||
|
||||
@ -890,8 +892,8 @@ class ConferencesController < ApplicationController
|
||||
can_edit = workshop.can_edit?(current_user)
|
||||
do_403 unless can_edit || workshop.can_translate?(current_user, I18n.locale)
|
||||
|
||||
workshop.title = params[:title]
|
||||
workshop.info = params[:info]
|
||||
workshop.title = params[:title]
|
||||
workshop.info = params[:info]
|
||||
|
||||
if can_edit
|
||||
# dont allow translators to edit these fields
|
||||
@ -1033,6 +1035,269 @@ class ConferencesController < ApplicationController
|
||||
return redirect_to view_workshop_url(@this_conference.slug, params[:workshop_id])
|
||||
end
|
||||
|
||||
def schedule
|
||||
set_conference
|
||||
do_404 unless @this_conference.workshop_schedule_published || @this_conference.host?(current_user)
|
||||
|
||||
@events = Event.where(:conference_id => @this_conference.id)
|
||||
@locations = EventLocation.where(:conference_id => @this_conference.id)
|
||||
|
||||
render 'schedule/show'
|
||||
end
|
||||
|
||||
def edit_schedule
|
||||
set_conference
|
||||
set_conference_registration
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
@workshops = Workshop.where(:conference_id => @this_conference.id)
|
||||
@events = Event.where(:conference_id => @this_conference.id)
|
||||
if session[:workshops]
|
||||
(0...@workshops.count).each do |i|
|
||||
id = @workshops[i].id
|
||||
w = session[:workshops][id.to_s]
|
||||
if w
|
||||
@workshops[i].start_time = w[:start_time]
|
||||
@workshops[i].end_time = w[:end_time]
|
||||
@workshops[i].event_location_id = w[:event_location_id]
|
||||
end
|
||||
end
|
||||
end
|
||||
if session[:events]
|
||||
(0...@events.count).each do |i|
|
||||
id = @events[i].id
|
||||
w = session[:events][id.to_s]
|
||||
if w
|
||||
@events[i].start_time = w[:start_time]
|
||||
@events[i].end_time = w[:end_time]
|
||||
@events[i].event_location_id = w[:event_location_id]
|
||||
end
|
||||
end
|
||||
end
|
||||
@locations = EventLocation.where(:conference_id => @this_conference.id)
|
||||
@location_hash = Hash.new
|
||||
@locations.each do |l|
|
||||
@location_hash[l.id.to_s] = l
|
||||
end
|
||||
|
||||
@days = Array.new
|
||||
start_day = @this_conference.start_date.strftime('%u').to_i
|
||||
end_day = start_day + ((@this_conference.end_date - @this_conference.start_date) / 86400)
|
||||
|
||||
(start_day..end_day).each do |i|
|
||||
@days << [(@this_conference.start_date + (i - start_day).days).strftime('%a'), ((i + 1) - start_day)]
|
||||
end
|
||||
|
||||
@hours = Array.new
|
||||
(0..48).each do |i|
|
||||
hour = (Date.today + (i / 2.0).hours).strftime('%R')
|
||||
@hours << hour
|
||||
end
|
||||
|
||||
@event_durations = [['30 mins', 30], ['1 hour', 60], ['1.5 hours', 90], ['2 hours', 120], ['2.5 hours', 150]]
|
||||
@workshop_durations = [['1 hour', 60], ['1.5 hours', 90], ['2 hours', 120]]
|
||||
|
||||
schedule_data = get_schedule_data
|
||||
@schedule = schedule_data[:schedule]
|
||||
@errors = schedule_data[:errors]
|
||||
@warnings = schedule_data[:warnings]
|
||||
@conflict_score = schedule_data[:conflict_score]
|
||||
@error_count = schedule_data[:error_count]
|
||||
if session[:day_parts]
|
||||
@day_parts = JSON.parse(session[:day_parts])
|
||||
elsif @this_conference.day_parts
|
||||
@day_parts = JSON.parse(@this_conference.day_parts)
|
||||
else
|
||||
@day_parts = {:morning => 0, :afternoon => 13, :evening => 18}
|
||||
end
|
||||
@saved = session[:workshops].nil?
|
||||
|
||||
render 'schedule/edit'
|
||||
end
|
||||
|
||||
def save_schedule
|
||||
set_conference
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
@days = Array.new
|
||||
start_day = @this_conference.start_date.strftime('%u').to_i
|
||||
end_day = start_day + ((@this_conference.end_date - @this_conference.start_date) / 86400)
|
||||
|
||||
(start_day..end_day).each do |i|
|
||||
@days << [(@this_conference.start_date + (i - start_day).days).strftime('%a'), i]
|
||||
end
|
||||
|
||||
@workshops = Workshop.where(:conference_id => @this_conference.id)
|
||||
@events = Event.where(:conference_id => @this_conference.id)
|
||||
@locations = EventLocation.where(:conference_id => @this_conference.id)
|
||||
|
||||
do_save = (params[:button] == 'save' || params[:button] == 'publish')
|
||||
session[:workshops] = do_save ? nil : Hash.new
|
||||
session[:events] = do_save ? nil : Hash.new
|
||||
session[:day_parts] = do_save ? nil : Hash.new
|
||||
|
||||
(0...@workshops.count).each do |i|
|
||||
id = @workshops[i].id.to_s
|
||||
if params[:workshop_day][id].present? && params[:workshop_hour][id].present? && params[:workshop_duration][id].present?
|
||||
date = @this_conference.start_date + (params[:workshop_day][id].to_i - 1).days
|
||||
h = params[:workshop_hour][id].split(':')
|
||||
date = date.change({hour: h.first, minute: h.last})
|
||||
@workshops[i].start_time = date
|
||||
@workshops[i].end_time = date + (params[:workshop_duration][id].to_i).minutes
|
||||
else
|
||||
@workshops[i].start_time = nil
|
||||
@workshops[i].end_time = nil
|
||||
end
|
||||
@workshops[i].event_location_id = params[:workshop_location][id]
|
||||
if do_save
|
||||
@workshops[i].save
|
||||
else
|
||||
session[:workshops][id] = {
|
||||
:start_time => @workshops[i].start_time,
|
||||
:end_time => @workshops[i].end_time,
|
||||
:end_time => @workshops[i].end_time,
|
||||
:event_location_id => @workshops[i].event_location_id
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
(0...@events.count).each do |i|
|
||||
id = @events[i].id.to_s
|
||||
if params[:event_day][id].present? && params[:event_hour][id].present? && params[:event_duration][id].present?
|
||||
date = @this_conference.start_date + (params[:event_day][id].to_i - 1).days
|
||||
h = params[:event_hour][id].split(':')
|
||||
date = date.change({hour: h.first, minute: h.last})
|
||||
@events[i].start_time = date
|
||||
@events[i].end_time = date + (params[:event_duration][id].to_i).minutes
|
||||
else
|
||||
@events[i].start_time = nil
|
||||
@events[i].end_time = nil
|
||||
end
|
||||
@events[i].event_location_id = params[:event_location][id]
|
||||
if do_save
|
||||
@events[i].save
|
||||
else
|
||||
session[:events][id] = {
|
||||
:start_time => @events[i].start_time,
|
||||
:end_time => @events[i].end_time,
|
||||
:end_time => @events[i].end_time,
|
||||
:event_location_id => @events[i].event_location_id
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
if params[:day_parts]
|
||||
day_parts = {:morning => 0}
|
||||
params[:day_parts].each do |part, h|
|
||||
h = h.split(':')
|
||||
day_parts[part.to_sym] = h[0].to_f + (h[1].to_i > 0 ? 0.5 : 0)
|
||||
end
|
||||
if do_save
|
||||
@this_conference.day_parts = day_parts.to_json
|
||||
else
|
||||
session[:day_parts] = day_parts.to_json
|
||||
end
|
||||
end
|
||||
|
||||
save_conference = do_save
|
||||
|
||||
if params[:button] == 'publish'
|
||||
@this_conference.workshop_schedule_published = true
|
||||
save_conference = true
|
||||
elsif params[:button] == 'unpublish'
|
||||
@this_conference.workshop_schedule_published = false
|
||||
save_conference = true
|
||||
end
|
||||
|
||||
if save_conference
|
||||
@this_conference.save
|
||||
end
|
||||
|
||||
redirect_to edit_schedule_url(@this_conference.slug)
|
||||
end
|
||||
|
||||
def add_event
|
||||
set_conference
|
||||
set_conference_registration
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
render 'events/edit'
|
||||
end
|
||||
|
||||
def edit_event
|
||||
set_conference
|
||||
set_conference_registration
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
@event = Event.find(params[:id])
|
||||
do_403 unless @event.conference_id == @this_conference.id
|
||||
|
||||
render 'events/edit'
|
||||
end
|
||||
|
||||
def save_event
|
||||
set_conference
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
|
||||
if params[:event_id]
|
||||
event = Event.find(params[:event_id])
|
||||
do_403 unless event.conference_id == @this_conference.id
|
||||
else
|
||||
event = Event.new(:conference_id => @this_conference.id)
|
||||
end
|
||||
|
||||
event.title = params[:title]
|
||||
event.info = params[:info]
|
||||
event.event_type = params[:event_type]
|
||||
|
||||
event.save
|
||||
|
||||
return redirect_to schedule_url(@this_conference.slug)
|
||||
end
|
||||
|
||||
def add_location
|
||||
set_conference
|
||||
set_conference_registration
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
render 'event_locations/edit'
|
||||
end
|
||||
|
||||
def edit_location
|
||||
set_conference
|
||||
set_conference_registration
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
@location = EventLocation.find(params[:id])
|
||||
do_403 unless @location.conference_id == @this_conference.id
|
||||
|
||||
@amenities = JSON.parse(@location.amenities || '[]').map &:to_sym
|
||||
|
||||
render 'event_locations/edit'
|
||||
end
|
||||
|
||||
def save_location
|
||||
set_conference
|
||||
do_404 unless @this_conference.host?(current_user)
|
||||
|
||||
|
||||
if params[:location_id]
|
||||
location = EventLocation.find(params[:location_id])
|
||||
do_403 unless location.conference_id == @this_conference.id
|
||||
else
|
||||
location = EventLocation.new(:conference_id => @this_conference.id)
|
||||
end
|
||||
|
||||
location.title = params[:title]
|
||||
location.address = params[:address]
|
||||
location.amenities = (params[:needs] || {}).keys.to_json
|
||||
|
||||
location.save
|
||||
|
||||
return redirect_to schedule_url(@this_conference.slug)
|
||||
end
|
||||
|
||||
# DELETE /conferences/1
|
||||
#def destroy
|
||||
# @conference.destroy
|
||||
@ -1053,6 +1318,7 @@ class ConferencesController < ApplicationController
|
||||
register_path(@this_conference.slug) => 'registration.Registration',
|
||||
workshops_path(@this_conference.slug) => 'registration.Workshops'
|
||||
}
|
||||
@submenu[schedule_path(@this_conference.slug)] = 'registration.Schedule' if @this_conference.workshop_schedule_published || @is_host
|
||||
if @is_host
|
||||
@submenu[edit_conference_path(@this_conference.slug)] = 'registration.Edit'
|
||||
@submenu[stats_path(@this_conference.slug)] = 'registration.Stats'
|
||||
|
@ -1,6 +1,8 @@
|
||||
require 'redcarpet'
|
||||
|
||||
module ApplicationHelper
|
||||
include ScheduleHelper
|
||||
|
||||
@@keyQueue = nil
|
||||
@@translationsOnThisPage = nil
|
||||
@@lastTranslation = nil
|
||||
|
146
app/helpers/schedule_helper.rb
Normal file
146
app/helpers/schedule_helper.rb
Normal file
@ -0,0 +1,146 @@
|
||||
|
||||
module ScheduleHelper
|
||||
def get_schedule_data
|
||||
schedule = Hash.new
|
||||
workshop_errors = Hash.new
|
||||
workshop_warnings = Hash.new
|
||||
|
||||
all_events = (@workshops + @events)
|
||||
conflicts = 0
|
||||
errors = 0
|
||||
|
||||
(0...all_events.count).each do |i|
|
||||
w = all_events[i]
|
||||
|
||||
if w.start_time.present? && w.end_time.present? && w.event_location_id.present?
|
||||
type = w.is_a?(Workshop) ? :workshop : :event
|
||||
|
||||
hour = w.start_time.strftime('%H').to_i
|
||||
hour += 0.5 if w.start_time.strftime('%M').to_i > 15
|
||||
|
||||
end_hour = w.end_time.strftime('%H').to_i
|
||||
end_hour += 0.5 if w.end_time.strftime('%M').to_i > 15
|
||||
|
||||
day = w.conference_day
|
||||
|
||||
schedule[day] ||= Hash.new
|
||||
schedule[day][:locations] ||= Hash.new
|
||||
schedule[day][:locations][w.event_location_id] ||= Hash.new
|
||||
|
||||
conflict = nil
|
||||
(hour...end_hour).step(0.5).each do |h|
|
||||
h = h.to_i if h == h.to_i
|
||||
if !conflict && schedule[day][:locations][w.event_location_id][h].present?
|
||||
conflict = schedule[day][:locations][w.event_location_id][h]
|
||||
end
|
||||
end
|
||||
|
||||
if conflict.present?
|
||||
w_conflict = get_workshop(conflict, @workshops, @events)
|
||||
workshop_errors[(w_conflict.is_a?(Workshop) ? 'w' : 'e') + w_conflict.id.to_s] = "Time conflict with “<strong>#{w_conflict.title}</strong>”".html_safe
|
||||
workshop_errors[(w.is_a?(Workshop) ? 'w' : 'e') + w.id.to_s] = "Time conflict with “<strong>#{w.title}</strong>”".html_safe
|
||||
errors += 1 if workshop_errors[(w_conflict.is_a?(Workshop) ? 'w' : 'e') + w_conflict.id.to_s].nil?
|
||||
else
|
||||
schedule[day][:start_time] = hour if schedule[day][:start_time].nil? || hour < schedule[day][:start_time]
|
||||
schedule[day][:end_time] = end_hour if schedule[day][:end_time].nil? || end_hour > schedule[day][:end_time]
|
||||
|
||||
schedule[day][:locations][w.event_location_id][hour] = {
|
||||
:span => w.duration / 60.0,
|
||||
:type => w.is_a?(Event) ? w.event_type : :workshop
|
||||
}
|
||||
schedule[day][:locations][w.event_location_id][hour][:workshop] = i if type == :workshop
|
||||
schedule[day][:locations][w.event_location_id][hour][:event] = (i - @workshops.count) if type == :event
|
||||
end
|
||||
else
|
||||
workshop_warnings["w#{w.id}"] ||= Array.new
|
||||
workshop_warnings["w#{w.id}"] << (w.is_a?(Workshop) ? "This workshop is not scheduled" : "This event is not scheduled")
|
||||
end
|
||||
end
|
||||
|
||||
schedule.each do |day, day_data|
|
||||
day_data[:locations].each do |location1, location_data1|
|
||||
location_data1.each do |time1, data1|
|
||||
day_data[:locations].each do |location2, location_data2|
|
||||
location_data2.each do |time2, data2|
|
||||
if data1[:workshop].present?
|
||||
if data2[:workshop].present?
|
||||
unless location1 == location2 && time1 == time2
|
||||
if workshop_errors[data1[:workshop]].nil?
|
||||
w1 = @workshops[data1[:workshop]]
|
||||
w2 = @workshops[data2[:workshop]]
|
||||
if time1 == time2
|
||||
w1.workshop_facilitators.each do |f|
|
||||
u = User.find(f.user_id)
|
||||
if w2.active_facilitator?(u)
|
||||
errors += 1 if workshop_errors[(w2.is_a?(Workshop) ? 'w' : 'e') + w2.id.to_s].nil?
|
||||
workshop_errors["w#{w1.id}"] = "This workshop shares facilitators with “<strong>#{w2.title}</strong>”".html_safe
|
||||
end
|
||||
end
|
||||
connection ||= ActiveRecord::Base.connection
|
||||
common_interest_count = connection.select_value("SELECT COUNT(w1.user_id) FROM workshop_interests AS w1 JOIN workshop_interests AS w2 ON w2.user_id=w1.user_id WHERE w1.workshop_id=#{w1.id} AND w2.workshop_id=#{w2.id}")
|
||||
common_interest_count = common_interest_count ? common_interest_count.to_i : 0
|
||||
if common_interest_count > 0
|
||||
conflicts += common_interest_count
|
||||
workshop_warnings["w#{w1.id}"] ||= Array.new
|
||||
workshop_warnings["w#{w1.id}"] << "<strong>#{common_interest_count}</strong> people are also interested in “<strong>#{w2.title}</strong>”".html_safe
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
{
|
||||
:schedule => schedule.sort,
|
||||
:errors => workshop_errors,
|
||||
:warnings => workshop_warnings,
|
||||
:conflict_score => conflicts,
|
||||
:error_count => errors
|
||||
}
|
||||
end
|
||||
|
||||
def get_workshop(workshop, workshops, events)
|
||||
workshop[:workshop] ? workshops[workshop[:workshop]] : (events[workshop[:event]] || :event)
|
||||
end
|
||||
|
||||
def workshop_classes(workshop, show_interest)
|
||||
classes = [workshop.is_a?(Workshop) ? :workshop : workshop.event_type]
|
||||
if show_interest && workshop.is_a?(Workshop) && current_user && WorkshopInterest.where(:user_id => current_user.id)
|
||||
if workshop.interested?(current_user) || workshop.facilitator?(current_user)
|
||||
classes << 'interested'
|
||||
else
|
||||
classes << 'not-interested'
|
||||
end
|
||||
end
|
||||
|
||||
return classes
|
||||
end
|
||||
|
||||
def schedule_start_and_end_times(day_part, day_parts, day_schedule)
|
||||
start_time = [day_parts[day_parts.keys[day_part]], day_schedule[:start_time]].max
|
||||
end_time = [day_parts[day_parts.keys[day_part + 1]] || 24, day_schedule[:end_time]].min
|
||||
|
||||
min_time = nil
|
||||
max_time = nil
|
||||
|
||||
day_schedule[:locations].each do |location, location_schedule|
|
||||
location_schedule.each do |hour, workshop|
|
||||
t_start = hour
|
||||
t_end = hour + workshop[:span]
|
||||
if t_start >= start_time && t_end <= end_time
|
||||
min_time = [min_time || 24, t_start].min
|
||||
max_time = [max_time || 0, t_end].max
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return nil unless min_time.present? && max_time.present?
|
||||
|
||||
[min_time || 0, max_time || 24]
|
||||
end
|
||||
end
|
@ -1,2 +1,17 @@
|
||||
class Event < ActiveRecord::Base
|
||||
end
|
||||
class Event < ActiveRecord::Base
|
||||
belongs_to :conference
|
||||
|
||||
def conference_day
|
||||
return nil unless start_time.present? && end_time.present?
|
||||
|
||||
start_day = conference.start_date.change(hour: 0, minute: 0, second: 0)
|
||||
w_start_day = start_time.change(hour: 0, minute: 0, second: 0)
|
||||
return (((w_start_day - start_day) / 86400) + 1).to_i
|
||||
end
|
||||
|
||||
def duration
|
||||
return nil unless start_time.present? && end_time.present?
|
||||
((end_time - start_time) / 60).to_i
|
||||
end
|
||||
|
||||
end
|
||||
|
2
app/models/event_location.rb
Normal file
2
app/models/event_location.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class EventLocation < ActiveRecord::Base
|
||||
end
|
@ -87,6 +87,19 @@ class Workshop < ActiveRecord::Base
|
||||
(user.can_translate? && lang.to_sym != locale.to_sym) || can_edit?(user)
|
||||
end
|
||||
|
||||
def conference_day
|
||||
return nil unless start_time.present? && end_time.present?
|
||||
|
||||
start_day = conference.start_date.change(hour: 0, minute: 0, second: 0)
|
||||
w_start_day = start_time.change(hour: 0, minute: 0, second: 0)
|
||||
return (((w_start_day - start_day) / 86400) + 1).to_i
|
||||
end
|
||||
|
||||
def duration
|
||||
return nil unless start_time.present? && end_time.present?
|
||||
((end_time - start_time) / 60).to_i
|
||||
end
|
||||
|
||||
private
|
||||
def make_slug
|
||||
if !self.slug
|
||||
|
@ -4,16 +4,20 @@
|
||||
%article
|
||||
%h2=_!@conference.title
|
||||
=@conference.info.html_safe
|
||||
%h3=_'articles.workshops.headings.Proposed_Workshops'
|
||||
%p=_'articles.workshops.paragraphs.Proposed_Workshops', "Would you like to facilitate your own workshop? Simply register and visit the workshops page. If you have already registered you can access the page by restarting the registration process."
|
||||
- if @conference.workshops
|
||||
%ul.workshop-list
|
||||
- @conference.workshops.sort_by{|w| w.title}.each do |w|
|
||||
%li
|
||||
%h4=w.title
|
||||
.workshop-interest
|
||||
- if w.interested?(current_user)
|
||||
=_'articles.workshops.info.you_are_interested_count', "You and #{w.interested_count - 1} others are interested in this workshop", :vars => {:count => (w.interested_count - 1)}
|
||||
- elsif w.interested_count > 0
|
||||
=_'articles.workshops.info.interested_count', "#{w.interested_count} people are interested in this workshop", :vars => {:count => w.interested_count}
|
||||
.workshop-description=markdown w.info
|
||||
- if @schedule
|
||||
%h3=_'articles.workshops.headings.Schedule'
|
||||
= render 'schedule/programme', :schedule => @schedule, :conference => @conference, :workshops => @workshops, :events => @events, :locations => @locations, :show_interest => true, :day_parts => @day_parts, :show_previews => true
|
||||
- else
|
||||
%h3=_'articles.workshops.headings.Proposed_Workshops'
|
||||
%p=_'articles.workshops.paragraphs.Proposed_Workshops', "Would you like to facilitate your own workshop? Simply register and visit the workshops page. If you have already registered you can access the page by restarting the registration process."
|
||||
%ul.workshop-list
|
||||
- @conference.workshops.sort_by{|w| w.title}.each do |w|
|
||||
%li
|
||||
%h4=w.title
|
||||
.workshop-interest
|
||||
- if w.interested?(current_user)
|
||||
=_'articles.workshops.info.you_are_interested_count', "You and #{w.interested_count - 1} others are interested in this workshop", :vars => {:count => (w.interested_count - 1)}
|
||||
- elsif w.interested_count > 0
|
||||
=_'articles.workshops.info.interested_count', "#{w.interested_count} people are interested in this workshop", :vars => {:count => w.interested_count}
|
||||
.workshop-description=markdown w.info
|
||||
|
23
app/views/event_locations/edit.html.haml
Normal file
23
app/views/event_locations/edit.html.haml
Normal file
@ -0,0 +1,23 @@
|
||||
= render 'conferences/page_header', :page_key => (@location ? 'Edit_Location' : 'New_Location')
|
||||
%article
|
||||
= form_tag save_location_path(@this_conference.slug), class: 'composition' do
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
= (hidden_field_tag :location_id, @location.id) if @location
|
||||
.text-field.input-field.big
|
||||
= label_tag :title
|
||||
= text_field_tag :title, @location ? @location.title : nil, :required => true
|
||||
= row do
|
||||
= columns(medium: 6) do
|
||||
.text-area-field.input-field
|
||||
= label_tag :address
|
||||
= text_area_tag :address, @location ? @location.address : nil, :required => true
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.locations.headings.amenities'
|
||||
- [:sound, :projector, :tools].each do |need|
|
||||
.single-check-box-field.input-field
|
||||
= label_tag "needs_#{need}" do
|
||||
= check_box_tag "needs[#{need}]", 1, @location && @amenities.include?(need)
|
||||
= _"workshop.options.needs.#{need}"
|
||||
.actions
|
||||
= button_tag :save, :value => :save
|
@ -1,7 +1,22 @@
|
||||
%h1 Editing event
|
||||
|
||||
= render 'form'
|
||||
|
||||
= link_to 'Show', @event
|
||||
\|
|
||||
= link_to 'Back', events_path
|
||||
= render 'conferences/page_header', :page_key => (@event ? 'Edit_Event' : 'New_Event')
|
||||
%article
|
||||
= form_tag save_event_path(@this_conference.slug), class: 'composition' do
|
||||
= row do
|
||||
= columns(medium: 9) do
|
||||
= (hidden_field_tag :event_id, @event.id) if @event
|
||||
.text-field.input-field.big
|
||||
= label_tag :title
|
||||
= text_field_tag :title, @event ? @event.title : nil, :required => true
|
||||
= columns(medium: 3) do
|
||||
.select-field.input-field
|
||||
= label_tag :event_type do
|
||||
= select_tag :event_type, options_for_select([:event, :meal], @event ? @event.event_type : nil), :include_blank => true
|
||||
=_'forms.labels.generic.event_type'
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
.text-area-field.input-field
|
||||
= label_tag :info
|
||||
= text_area_tag :info, @event ? @event.info : nil, :required => true
|
||||
= columns(medium: 12) do
|
||||
.actions.right
|
||||
= button_tag :save, :value => :save
|
||||
|
36
app/views/schedule/_programme.html.haml
Normal file
36
app/views/schedule/_programme.html.haml
Normal file
@ -0,0 +1,36 @@
|
||||
.programme
|
||||
- schedule.each do |day, day_schedule|
|
||||
.programme-day
|
||||
%h2=I18n.l(conference.start_date + (day - 1).days, :format => "%A")
|
||||
- (0...day_parts.length).each do |day_part|
|
||||
.programme-day-part
|
||||
- times = schedule_start_and_end_times(day_part, day_parts, day_schedule)
|
||||
- if times.present?
|
||||
%h3=_"articles.headings.schedule.day_parts.#{day_parts.keys[day_part].to_s}" if day_parts.length > 1
|
||||
%table.schedule
|
||||
%tr
|
||||
%th
|
||||
- (times.first...times.last).step(0.5).each do |t|
|
||||
- t = t.to_i if t == t.to_i
|
||||
%th=I18n.l(Date.today + t.hours, :format => :short)
|
||||
- day_schedule[:locations].each do |location, location_schedule|
|
||||
%tr
|
||||
%th=locations[location.to_s].title
|
||||
- skip = 0
|
||||
- (times.first...times.last).step(0.5).each do |t|
|
||||
- t = t.to_i if t == t.to_i
|
||||
- if location_schedule[t].present?
|
||||
- workshop = location_schedule[t]
|
||||
- w = get_workshop(workshop, workshops, events)
|
||||
%td{:class => workshop_classes(w, show_interest) + [show_previews && workshop[:type] == :workshop ? 'previewable' : nil], :colspan => (workshop[:span] * 2), :id => "workshop-#{w.id}"}
|
||||
.title= w.title
|
||||
- if show_previews && workshop[:type] == :workshop
|
||||
.info
|
||||
%a.close{href: "#!"}
|
||||
= render 'workshops/show', :workshop => w, :preview => true
|
||||
%a{class: 'preview', href: "#workshop-#{w.id}"}
|
||||
- skip = workshop[:span] - 0.5
|
||||
- elsif skip > 0
|
||||
- skip -= 0.5
|
||||
- else
|
||||
%td.empty
|
77
app/views/schedule/edit.html.haml
Normal file
77
app/views/schedule/edit.html.haml
Normal file
@ -0,0 +1,77 @@
|
||||
= render 'conferences/page_header', :page_key => 'Edit_Schedule'
|
||||
%article
|
||||
= form_tag save_schedule_path(@this_conference.slug), class: 'composition' do
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
= render 'schedule/programme', :schedule => @schedule, :conference => @this_conference, :workshops => @workshops, :events => @events, :locations => @location_hash, :show_interest => false, :day_parts => @day_parts, :show_previews => false
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
- if @error_count && @error_count > 0
|
||||
%h3.errors
|
||||
=_'errors.schedule.errors',"Errors:"
|
||||
= @error_count
|
||||
- if @conflict_score && @conflict_score > 0
|
||||
%h3.conflict-score
|
||||
=_'errors.schedule.conflict_score',"Interest Conflicts:"
|
||||
= @conflict_score
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
= (hidden_field_tag :location_id, @location.id) if @location
|
||||
.actions
|
||||
- if @this_conference.workshop_schedule_published
|
||||
= button_tag :Unpublish, :value => :unpublish, :class => 'delete'
|
||||
- elsif @error_count < 1
|
||||
= button_tag :Publish, :value => :publish
|
||||
= button_tag :Preview, :value => :preview, :class => 'secondary'
|
||||
- unless @this_conference.workshop_schedule_published && @error_count > 0
|
||||
= button_tag :save, :value => :save
|
||||
- unless @saved
|
||||
.unsaved=_'errors.schedule.unsaved','Your changes will not be saved until you press Save or Publish'
|
||||
= row do
|
||||
= columns(medium: 6) do
|
||||
%h2=_"articles.headings.schedule.day_parts.Workshops"
|
||||
%ul.all-workshops
|
||||
- @workshops.each do |i|
|
||||
- error = @errors["w#{i.id}"]
|
||||
- warnings = @warnings["w#{i.id}"]
|
||||
%li{class: error.present? ? :error : nil}
|
||||
%h3=i.title
|
||||
.workshop-interest=_'articles.workshops.info.interested_count', "#{i.interested_count} people are interested in this workshop", :vars => {:count => i.interested_count}
|
||||
.time
|
||||
= select_tag "workshop_day[#{i.id}]", options_for_select(@days, i.conference_day), :include_blank => true
|
||||
= select_tag "workshop_hour[#{i.id}]", options_for_select(@hours, i.start_time ? i.start_time.strftime('%R') : nil), :include_blank => true
|
||||
= select_tag "workshop_duration[#{i.id}]", options_for_select(@workshop_durations, i.duration || 60)
|
||||
.location
|
||||
= select_tag "workshop_location[#{i.id}]", options_from_collection_for_select(@locations, :id, :title, i.event_location_id), :include_blank => true
|
||||
- if warnings
|
||||
%ul.warnings
|
||||
- warnings.each do |warning|
|
||||
%li=warning
|
||||
- if error
|
||||
.error-description=error
|
||||
= columns(medium: 6) do
|
||||
%h2=_"articles.headings.schedule.day_parts.Events"
|
||||
%ul.all-events
|
||||
- @events.each do |i|
|
||||
- error = @errors["e#{i.id}"]
|
||||
%li{:class => [i.event_type, error.present? ? :error : nil]}
|
||||
%h3=i.title
|
||||
.time
|
||||
= select_tag "event_day[#{i.id}]", options_for_select(@days, i.conference_day)
|
||||
= select_tag "event_hour[#{i.id}]", options_for_select(@hours, i.start_time ? i.start_time.strftime('%R') : '12:00')
|
||||
= select_tag "event_duration[#{i.id}]", options_for_select(@event_durations, i.duration || 60)
|
||||
.location
|
||||
= select_tag "event_location[#{i.id}]", options_from_collection_for_select(@locations, :id, :title, i.event_location_id), :include_blank => true
|
||||
- if error
|
||||
.error-description=error
|
||||
%h2=_"articles.headings.schedule.day_parts.Day_Parts"
|
||||
%ul.day_parts
|
||||
- [:morning, :afternoon, :evening].each do |day_part|
|
||||
%li
|
||||
%h4
|
||||
=_"articles.headings.schedule.day_parts.#{day_part.to_s}"
|
||||
- h = (Date.today + @day_parts[day_part.to_s].to_f.hours).strftime('%R')
|
||||
- if day_part == :morning
|
||||
.select=h
|
||||
- else
|
||||
= select_tag "day_parts[#{day_part.to_s}]", options_for_select(@hours, h)
|
28
app/views/schedule/show.html.haml
Normal file
28
app/views/schedule/show.html.haml
Normal file
@ -0,0 +1,28 @@
|
||||
= render 'conferences/page_header', :page_key => 'Schedule'
|
||||
%article
|
||||
- if @this_conference.host?(current_user)
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
.actions.left
|
||||
= link_to (_'actions.schedule.edit','Edit Schedule'), edit_schedule_path(@this_conference.slug), class: [:button]
|
||||
= row do
|
||||
= columns(medium: 6) do
|
||||
%h2=_'articles.schedule.headings.Events'
|
||||
- if @events
|
||||
%ul
|
||||
- @events.each do |event|
|
||||
%li
|
||||
%h3=_!event.title
|
||||
= link_to (_'actions.events.edit','Edit'), edit_event_path(@this_conference.slug, event.id), class: [:button, :modify]
|
||||
.actions.left
|
||||
= link_to (_'actions.events.create','Add Event'), add_event_path(@this_conference.slug), class: [:button, :modify]
|
||||
= columns(medium: 6) do
|
||||
%h2=_'articles.schedule.headings.Locations'
|
||||
- if @locations
|
||||
%ul
|
||||
- @locations.each do |location|
|
||||
%li
|
||||
%h3=_!location.title
|
||||
= link_to (_'actions.locations.edit','Edit'), edit_location_path(@this_conference.slug, location.id), class: [:button, :modify]
|
||||
.actions.left
|
||||
= link_to (_'actions.schedule.edit','Add Location'), add_location_path(@this_conference.slug), class: [:button, :modify]
|
58
app/views/workshops/_show.html.haml
Normal file
58
app/views/workshops/_show.html.haml
Normal file
@ -0,0 +1,58 @@
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h2=_!workshop.title
|
||||
.workshop-interest
|
||||
- if workshop.interested?(current_user)
|
||||
=_'articles.workshops.info.you_are_interested_count', "You and #{workshop.interested_count - 1} others are interested in this workshop", :vars => {:count => (workshop.interested_count - 1)}
|
||||
- else
|
||||
=_'articles.workshops.info.interested_count', "#{workshop.interested_count} people are interested in this workshop", :vars => {:count => workshop.interested_count}
|
||||
- if !preview && workshop.can_show_interest?(current_user)
|
||||
= form_tag toggle_workshop_interest_path(workshop.conference.slug, workshop.id) do
|
||||
= button_tag (workshop.interested?(current_user) ? :remove_interest : :show_interest), :value => :toggle_interest, :class => (workshop.interested?(current_user) ? 'delete' : 'add')
|
||||
=markdown _!(workshop.info) || ''
|
||||
- if !preview && logged_in? && current_user.can_translate?
|
||||
.actions
|
||||
- I18n.backend.enabled_locales.each do |locale|
|
||||
= (link_to (_'actions.workshops.Translate', "Translate into #{language_name(locale)}", :vars => {:language => language_name(locale)}), edit_workshop_url(workshop.conference.slug, workshop.id, url_params(locale)), :class => 'button translate') if workshop.can_translate?(current_user, locale)
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.facilitators'
|
||||
.facilitators
|
||||
- workshop.workshop_facilitators.each do |f|
|
||||
- u = User.find(f.user_id)
|
||||
- if logged_in? && (workshop.public_facilitator?(u) || f.user_id == current_user.id || workshop.active_facilitator?(current_user))
|
||||
.facilitator
|
||||
.name=_!(u.firstname || u.username || u.email)
|
||||
.role
|
||||
=_"roles.workshops.facilitator.#{workshop.role(u).to_s}"
|
||||
- if !preview && f.role.to_sym == :requested && workshop.active_facilitator?(current_user)
|
||||
=(link_to (_'actions.workshops.Approve'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'approve'), :class => 'button modify')
|
||||
=(link_to (_'actions.workshops.Deny'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'deny'), :class => 'button delete')
|
||||
- elsif !preview && (f.user_id == current_user.id && f.role.to_sym != :creator) || (!workshop.conference.registered?(u) && workshop.active_facilitator?(current_user))
|
||||
=(link_to (_'actions.workshops.Remove'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'remove'), :class => 'button delete')
|
||||
- if !preview
|
||||
.actions
|
||||
=(link_to (_'actions.workshops.Facilitate'), facilitate_workshop_path(workshop.conference.slug, workshop.id), :class => 'button modify') if !workshop.facilitator?(current_user)
|
||||
- if workshop.active_facilitator?(current_user)
|
||||
= form_tag workshop_add_facilitator_path(workshop.conference.slug, workshop.id), :class => 'add-facilitator' do
|
||||
%h4='Add a facilitator'
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
= button_tag :add
|
||||
- if workshop.languages
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.languages','Workshop Language'
|
||||
%p= _!((JSON.parse(workshop.languages || '[]').map { |x| _"languages.#{x}" }).join(', ').to_s.html_safe)
|
||||
- if workshop.theme
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.theme','Theme'
|
||||
%p= [:race_gender, :mechanics, :funding, :organization, :community].include?((workshop.theme || '').to_sym) ? (_"workshop.options.theme.#{workshop.theme}") : workshop.theme
|
||||
- if workshop.active_facilitator?(current_user) || workshop.conference.host?(current_user)
|
||||
- if workshop.needs
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.needs','What do you need?'
|
||||
%p= _!((JSON.parse(workshop.needs || '[]').map { |x| _"workshop.options.needs.#{x}" }).join(', ').to_s.html_safe)
|
||||
- if workshop.notes
|
||||
= columns(medium: 12) do
|
||||
%h3=_'articles.workshops.headings.notes','Notes'
|
||||
=markdown _!(workshop.notes)
|
@ -1,62 +1,7 @@
|
||||
= render 'conferences/page_header', :page_key => 'View_Workshop'
|
||||
%article
|
||||
= render 'workshops/show', :workshop => @workshop, :preview => false
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h2=_!@workshop.title
|
||||
.workshop-interest
|
||||
- if @workshop.interested?(current_user)
|
||||
=_'articles.workshops.info.you_are_interested_count', "You and #{@workshop.interested_count - 1} others are interested in this workshop", :vars => {:count => (@workshop.interested_count - 1)}
|
||||
- else
|
||||
=_'articles.workshops.info.interested_count', "#{@workshop.interested_count} people are interested in this workshop", :vars => {:count => @workshop.interested_count}
|
||||
- if @workshop.can_show_interest?(current_user)
|
||||
= form_tag toggle_workshop_interest_path(@this_conference.slug, @workshop.id) do
|
||||
= button_tag (@workshop.interested?(current_user) ? :remove_interest : :show_interest), :value => :toggle_interest, :class => (@workshop.interested?(current_user) ? 'delete' : 'add')
|
||||
=markdown _!(@workshop.info) || ''
|
||||
- if current_user.can_translate?
|
||||
.actions
|
||||
- I18n.backend.enabled_locales.each do |locale|
|
||||
= (link_to (_'actions.workshops.Translate', "Translate into #{language_name(locale)}", :vars => {:language => language_name(locale)}), edit_workshop_url(@this_conference.slug, @workshop.id, url_params(locale)), :class => 'button translate') if @workshop.can_translate?(current_user, locale)
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.facilitators'
|
||||
.facilitators
|
||||
- @workshop.workshop_facilitators.each do |f|
|
||||
- u = User.find(f.user_id)
|
||||
- if @workshop.public_facilitator?(u) || f.user_id == current_user.id || @workshop.active_facilitator?(current_user)
|
||||
.facilitator
|
||||
.name=_!(u.firstname || u.username || u.email)
|
||||
.role
|
||||
=_"roles.workshops.facilitator.#{@workshop.role(u).to_s}"
|
||||
- if f.role.to_sym == :requested && @workshop.active_facilitator?(current_user)
|
||||
=(link_to (_'actions.workshops.Approve'), approve_facilitate_workshop_request_path(@this_conference.slug, @workshop.id, f.user_id, 'approve'), :class => 'button modify')
|
||||
=(link_to (_'actions.workshops.Deny'), approve_facilitate_workshop_request_path(@this_conference.slug, @workshop.id, f.user_id, 'deny'), :class => 'button delete')
|
||||
- elsif (f.user_id == current_user.id && f.role.to_sym != :creator) || (!@this_conference.registered?(u) && @workshop.active_facilitator?(current_user))
|
||||
=(link_to (_'actions.workshops.Remove'), approve_facilitate_workshop_request_path(@this_conference.slug, @workshop.id, f.user_id, 'remove'), :class => 'button delete')
|
||||
.actions
|
||||
=(link_to (_'actions.workshops.Facilitate'), facilitate_workshop_path(@this_conference.slug, @workshop.id), :class => 'button modify') if !@workshop.facilitator?(current_user)
|
||||
- if @workshop.active_facilitator?(current_user)
|
||||
= form_tag workshop_add_facilitator_path(@this_conference.slug, @workshop.id), :class => 'add-facilitator' do
|
||||
%h4='Add a facilitator'
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
= button_tag :add
|
||||
- if @workshop.languages
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.languages','Workshop Language'
|
||||
%p= _!((JSON.parse(@workshop.languages || '[]').map { |x| _"languages.#{x}" }).join(', ').to_s.html_safe)
|
||||
- if @workshop.theme
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.theme','Theme'
|
||||
%p= [:race_gender, :mechanics, :funding, :organization, :community].include?((@workshop.theme || '').to_sym) ? (_"workshop.options.theme.#{@workshop.theme}") : @workshop.theme
|
||||
- if @workshop.active_facilitator?(current_user) || @this_conference.host?(current_user)
|
||||
- if @workshop.needs
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.needs','What do you need?'
|
||||
%p= _!((JSON.parse(@workshop.needs || '[]').map { |x| _"workshop.options.needs.#{x}" }).join(', ').to_s.html_safe)
|
||||
- if @workshop.notes
|
||||
= columns(medium: 12) do
|
||||
%h3=_'articles.workshops.headings.notes','Notes'
|
||||
=markdown _!(@workshop.notes)
|
||||
= columns(medium: 12) do
|
||||
.actions.right
|
||||
= (link_to (_'actions.workshops.Edit'), edit_workshop_path(@this_conference.slug, @workshop.id), :class => 'button modify') if @workshop.can_edit?(current_user)
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Guadalajara, Jalisco, Mexico</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Mauris Enim Leo, Rhoncus Sed, Vestibulum Sit Amet, Cursus Id, Turpis</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Sed Accumsan Felis</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.you_are_interested_count" data-i18n-needs-translation="0">You are interested in this workshop</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.</p>
|
||||
<p>Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Mauris Enim Leo, Rhoncus Sed, Vestibulum Sit Amet, Cursus Id, Turpis</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Sed Accumsan Felis</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.</p>
|
||||
<p>Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Mauris Enim Leo, Rhoncus Sed, Vestibulum Sit Amet, Cursus Id, Turpis</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Sed Accumsan Felis</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.</p>
|
||||
<p>Proin interdum mauris non ligula pellentesque ultrices. Phasellus id sapien in sapien iaculis congue. Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">San Marcos, Texas</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<div class="row"><div class="columns medium-12"><nav class="sub-menu">
|
||||
<a href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Registration" data-i18n-needs-translation="0">Registration</span></a>
|
||||
<a href="/conferences/MyBikeBike/workshops/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Workshops" data-i18n-needs-translation="0">Workshops</span></a>
|
||||
<a href="/conferences/MyBikeBike/schedule/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Schedule" data-i18n-needs-translation="1">Schedule</span></a>
|
||||
<a href="/conferences/MyBikeBike/edit/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Edit" data-i18n-needs-translation="0">Edit Conference</span></a>
|
||||
<a href="/conferences/MyBikeBike/stats/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Stats" data-i18n-needs-translation="0">Stats</span></a>
|
||||
<a href="/conferences/MyBikeBike/broadcast/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Broadcast" data-i18n-needs-translation="0">Broadcast</span></a>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<div class="row"><div class="columns medium-12"><nav class="sub-menu">
|
||||
<a href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Registration" data-i18n-needs-translation="0">Registration</span></a>
|
||||
<a href="/conferences/MyBikeBike/workshops/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Workshops" data-i18n-needs-translation="0">Workshops</span></a>
|
||||
<a href="/conferences/MyBikeBike/schedule/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Schedule" data-i18n-needs-translation="1">Schedule</span></a>
|
||||
<a href="/conferences/MyBikeBike/edit/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Edit" data-i18n-needs-translation="0">Edit Conference</span></a>
|
||||
<a href="/conferences/MyBikeBike/stats/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Stats" data-i18n-needs-translation="0">Stats</span></a>
|
||||
<a href="/conferences/MyBikeBike/broadcast/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Broadcast" data-i18n-needs-translation="0">Broadcast</span></a>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<div class="row"><div class="columns medium-12"><nav class="sub-menu">
|
||||
<a href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Registration" data-i18n-needs-translation="0">Registration</span></a>
|
||||
<a href="/conferences/MyBikeBike/workshops/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Workshops" data-i18n-needs-translation="0">Workshops</span></a>
|
||||
<a href="/conferences/MyBikeBike/schedule/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Schedule" data-i18n-needs-translation="1">Schedule</span></a>
|
||||
<a href="/conferences/MyBikeBike/edit/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Edit" data-i18n-needs-translation="0">Edit Conference</span></a>
|
||||
<a href="/conferences/MyBikeBike/stats/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Stats" data-i18n-needs-translation="0">Stats</span></a>
|
||||
<a href="/conferences/MyBikeBike/broadcast/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Broadcast" data-i18n-needs-translation="0">Broadcast</span></a>
|
||||
|
@ -77,12 +77,8 @@
|
||||
<td>
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' style='text-align: center' valign='top'>
|
||||
<img class='image_fix' src='http://127.0.0.1:55795'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'>
|
||||
<td colspan='2' valign='top'><p>Lorem Ipsum</p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -93,7 +89,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">San Marcos, Texas</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -84,7 +84,8 @@
|
||||
<p></p>
|
||||
</div><div class="columns medium-12"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.notes" data-i18n-needs-translation="0">Notes</span></h3>
|
||||
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -84,7 +84,8 @@
|
||||
<p></p>
|
||||
</div><div class="columns medium-12"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.notes" data-i18n-needs-translation="0">Notes</span></h3>
|
||||
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -84,7 +84,8 @@
|
||||
<p></p>
|
||||
</div><div class="columns medium-12"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.notes" data-i18n-needs-translation="0">Notes</span></h3>
|
||||
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -84,7 +84,8 @@
|
||||
<p></p>
|
||||
</div><div class="columns medium-12"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.notes" data-i18n-needs-translation="0">Notes</span></h3>
|
||||
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Portland, Oregon</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<div class="row"><div class="columns medium-12"><nav class="sub-menu">
|
||||
<a href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Registration" data-i18n-needs-translation="0">Registration</span></a>
|
||||
<a href="/conferences/MyBikeBike/workshops/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Workshops" data-i18n-needs-translation="0">Workshops</span></a>
|
||||
<a href="/conferences/MyBikeBike/schedule/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Schedule" data-i18n-needs-translation="1">Schedule</span></a>
|
||||
<a href="/conferences/MyBikeBike/edit/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Edit" data-i18n-needs-translation="0">Edit Conference</span></a>
|
||||
<a href="/conferences/MyBikeBike/stats/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Stats" data-i18n-needs-translation="0">Stats</span></a>
|
||||
<a href="/conferences/MyBikeBike/broadcast/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Broadcast" data-i18n-needs-translation="0">Broadcast</span></a>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Guadalajara, Jalisco, Mexico</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Duis At Velit Eu Est Congue Elementum</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Etiam Justo</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.you_are_interested_count" data-i18n-needs-translation="0">You and 4 others are interested in this workshop</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Fusce consequat. Nulla nisl. Nunc nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Duis At Velit Eu Est Congue Elementum</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Etiam Justo</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">4 people are interested in this workshop</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Fusce consequat. Nulla nisl. Nunc nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Duis At Velit Eu Est Congue Elementum</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>Etiam Justo</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">4 people are interested in this workshop</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Fusce consequat. Nulla nisl. Nunc nisl.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Guadalajara, Jalisco, Mexico</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Guadalajara, Jalisco, Mexico</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_denied" data-i18n-needs-translation="0">Your request to become a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a> has been denied. If you think this was in error, you may contact the current facilitators by making another request to facilitate.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_denied" data-i18n-needs-translation="0">Your request to become a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a> has been denied. If you think this was in error, you may contact the current facilitators by making another request to facilitate.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
|
||||
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
|
||||
<title><span class="translated-content" data-i18n-key="email.subject.workshop_facilitator_request" data-i18n-needs-translation="0">Request to facilitate Suspendisse Potenti from John Doe</span></title>
|
||||
<title><span class="translated-content" data-i18n-key="email.subject.workshop_facilitator_request" data-i18n-needs-translation="0">Request to facilitate In Eleifend Quam A Odio from John Doe</span></title>
|
||||
<style>
|
||||
#outlook a {padding:0;}
|
||||
body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}
|
||||
@ -70,19 +70,19 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<meta name="email-from" content='somebody@bikebike.org'/><meta name="email-to" content='et@bikebike.org'/></head>
|
||||
<meta name="email-from" content='somebody@bikebike.org'/><meta name="email-to" content='donec@bikebike.org'/></head>
|
||||
<body>
|
||||
<table border='0' cellpadding='0' cellspacing='0' id='backgroundTable'>
|
||||
<tr>
|
||||
<td>
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_message" data-i18n-needs-translation="0">John Doe has requested to help facilitate Suspendisse Potenti:</span></p>
|
||||
<td colspan='2' valign='top'><p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_message" data-i18n-needs-translation="0">John Doe has requested to help facilitate In Eleifend Quam A Odio:</span></p>
|
||||
<blockquote><p>Please let me join</p>
|
||||
</blockquote>
|
||||
<p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_instructions" data-i18n-needs-translation="0">You can approve or deny this request on your workshop page:</span>
|
||||
<a href='http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1'>http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1</a>
|
||||
<a href='http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1'>http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1</a>
|
||||
</p>
|
||||
<p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_reply_instructions" data-i18n-needs-translation="0">You can also reply directly to this email to ask follow-up questions.</span></p>
|
||||
</td>
|
||||
@ -95,7 +95,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Phasellus in felis. Donec semper sapien a libero. Nam dui.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -100,7 +100,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Phasellus in felis. Donec semper sapien a libero. Nam dui.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -98,7 +98,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Phasellus in felis. Donec semper sapien a libero. Nam dui.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -90,7 +90,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Phasellus in felis. Donec semper sapien a libero. Nam dui.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -96,7 +96,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
<p>Phasellus in felis. Donec semper sapien a libero. Nam dui.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -103,7 +103,8 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/edit/"><span class="translated-content" data-i18n-key="actions.workshops.Edit" data-i18n-needs-translation="0">Edit</span></a>
|
||||
<a class="button delete" href="/conferences/MyBikeBike/workshops/1/delete/"><span class="translated-content" data-i18n-key="actions.workshops.Delete" data-i18n-needs-translation="0">Delete Workshop</span></a>
|
||||
</div>
|
||||
|
@ -53,7 +53,7 @@
|
||||
<article>
|
||||
<div class="row"><form class="composition" action="/conferences/MyBikeBike/workshops/1/facilitate_request/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
<input type="hidden" name="workshop_id" id="workshop_id" value="1">
|
||||
<div class="columns medium-12"><h2><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitate" data-i18n-needs-translation="0">Request to Facilitate ‘Suspendisse Potenti’</span></h2>
|
||||
<div class="columns medium-12"><h2><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitate" data-i18n-needs-translation="0">Request to Facilitate ‘In Eleifend Quam A Odio’</span></h2>
|
||||
<span class="translated-contentblock" data-i18n-key="articles.workshops.paragraphs.facilitate_request" data-i18n-needs-translation="0"><p>Please tell the current workshop facilitators who you are, why you want to help facilitate the workshop, and how you think you will help make the workshop better. All of the current facilitators will be emailed and they may ask more questions before approving or denying your request. Please note that this will reveal your email address to the facilitators.</p>
|
||||
</span>
|
||||
<div class="text-area-field input-field">
|
||||
|
@ -51,7 +51,7 @@
|
||||
</div></div><div id="content">
|
||||
|
||||
<article>
|
||||
<div class="row"><div class="columns medium-12"><h2>Suspendisse Potenti</h2>
|
||||
<div class="row"><div class="columns medium-12"><h2>In Eleifend Quam A Odio</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
<form action="/conferences/MyBikeBike/workshops/1/toggle-interest/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓">
|
||||
@ -59,7 +59,7 @@
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<p>Cras non velit nec nisi vulputate nonummy. Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque.</p>
|
||||
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin risus. Praesent lectus.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
@ -67,7 +67,8 @@
|
||||
<a class="button modify" href="/conferences/MyBikeBike/workshops/1/facilitate/"><span class="translated-content" data-i18n-key="actions.workshops.Facilitate" data-i18n-needs-translation="0">Make a facilitation request</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="columns medium-12"><div class="actions right">
|
||||
</div></div>
|
||||
<div class="row"><div class="columns medium-12"><div class="actions right">
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
|
||||
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
|
||||
<title><span class="translated-content" data-i18n-key="email.subject.workshop_facilitator_request" data-i18n-needs-translation="0">Request to facilitate Suspendisse Potenti from John Doe</span></title>
|
||||
<title><span class="translated-content" data-i18n-key="email.subject.workshop_facilitator_request" data-i18n-needs-translation="0">Request to facilitate In Eleifend Quam A Odio from John Doe</span></title>
|
||||
<style>
|
||||
#outlook a {padding:0;}
|
||||
body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}
|
||||
@ -70,19 +70,19 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<meta name="email-from" content='somebody@bikebike.org'/><meta name="email-to" content='et@bikebike.org'/></head>
|
||||
<meta name="email-from" content='somebody@bikebike.org'/><meta name="email-to" content='donec@bikebike.org'/></head>
|
||||
<body>
|
||||
<table border='0' cellpadding='0' cellspacing='0' id='backgroundTable'>
|
||||
<tr>
|
||||
<td>
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_message" data-i18n-needs-translation="0">John Doe has requested to help facilitate Suspendisse Potenti:</span></p>
|
||||
<td colspan='2' valign='top'><p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_message" data-i18n-needs-translation="0">John Doe has requested to help facilitate In Eleifend Quam A Odio:</span></p>
|
||||
<blockquote><p>Please let me join</p>
|
||||
</blockquote>
|
||||
<p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_instructions" data-i18n-needs-translation="0">You can approve or deny this request on your workshop page:</span>
|
||||
<a href='http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1'>http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1</a>
|
||||
<a href='http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1'>http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1</a>
|
||||
</p>
|
||||
<p><span class="translated-content" data-i18n-key="email.workshop.paragraph.request_reply_instructions" data-i18n-needs-translation="0">You can also reply directly to this email to ask follow-up questions.</span></p>
|
||||
</td>
|
||||
@ -95,7 +95,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_approved" data-i18n-needs-translation="0">You have been added as a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a>.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -78,7 +78,7 @@
|
||||
<table align='center' border='0' cellpadding='0' cellspacing='0'>
|
||||
<tr>
|
||||
<td colspan='2' valign='top'><p>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_denied" data-i18n-needs-translation="0">Your request to become a facilitator of <a href="http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a> has been denied. If you think this was in error, you may contact the current facilitators by making another request to facilitate.</span>
|
||||
<span class="translated-content" data-i18n-key="email.workshop.paragraph.request_denied" data-i18n-needs-translation="0">Your request to become a facilitator of <a href="http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My Awesome Workshop</a> has been denied. If you think this was in error, you may contact the current facilitators by making another request to facilitate.</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -50,7 +50,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Halifax, Nova Scotia</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Sackville, New Brunswick</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -41,7 +41,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Halifax, Nova Scotia</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -62,7 +62,7 @@ Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
|
||||
<h4>My Awesome Workshop</h4>
|
||||
<div class="workshop-interest">
|
||||
</div>
|
||||
<div class="workshop-description"><p>Maecenas leo odio, condimentum id, luctus nec, molestie sed, justo. Pellentesque viverra pede ac diam. Cras pellentesque volutpat dui.</p>
|
||||
<div class="workshop-description"><p>Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis. Integer aliquet, massa id lobortis convallis, tortor risus dapibus augue, vel accumsan tellus nisi eu orci. Mauris lacinia sapien quis libero.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -81,7 +81,7 @@
|
||||
<p>
|
||||
<h3>
|
||||
<b>
|
||||
<a href='/confirm/d4cc113a01e984988ee58162a6a3ffdfb300b72a68d93734d5171979cc8dba13'><span class="translated-content" data-i18n-key="email.confirmation.link.please_confirm" data-i18n-needs-translation="0">Confirm now</span></a>
|
||||
<a href='/confirm/f71e511f84fb17a545ecafaa120ef590c3e5ec99738b603cd76de195b95e41eb'><span class="translated-content" data-i18n-key="email.confirmation.link.please_confirm" data-i18n-needs-translation="0">Confirm now</span></a>
|
||||
</b>
|
||||
</h3>
|
||||
</p>
|
||||
@ -95,7 +95,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -67,8 +67,8 @@
|
||||
<label for="departure"><span class="translated-content" data-i18n-key="forms.labels.generic.departure" data-i18n-needs-translation="0">Departure date</span></label>
|
||||
</div>
|
||||
<div class="date-field input-field">
|
||||
<input type="datetime-local" name="arrival" id="arrival" value="2015-08-22T00:00:00">
|
||||
<input type="datetime-local" name="departure" id="departure" value="2015-08-26T00:00:00">
|
||||
<input type="datetime-local" name="arrival" id="arrival" value="2015-08-27T00:00:00">
|
||||
<input type="datetime-local" name="departure" id="departure" value="2015-08-31T00:00:00">
|
||||
</div>
|
||||
</div>
|
||||
<h3><span class="translated-content" data-i18n-key="articles.conference_registration.headings.languages" data-i18n-needs-translation="0">Which languages do you speak?</span></h3>
|
||||
|
@ -81,7 +81,7 @@
|
||||
<p>
|
||||
<h3>
|
||||
<b>
|
||||
<a href='/confirm/d4cc113a01e984988ee58162a6a3ffdfb300b72a68d93734d5171979cc8dba13'><span class="translated-content" data-i18n-key="email.confirmation.link.please_confirm" data-i18n-needs-translation="0">Confirm now</span></a>
|
||||
<a href='/confirm/f71e511f84fb17a545ecafaa120ef590c3e5ec99738b603cd76de195b95e41eb'><span class="translated-content" data-i18n-key="email.confirmation.link.please_confirm" data-i18n-needs-translation="0">Confirm now</span></a>
|
||||
</b>
|
||||
</h3>
|
||||
</p>
|
||||
@ -95,7 +95,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -90,7 +90,7 @@
|
||||
<img class='image_fix' src='/assets/bblogo-paypal'>
|
||||
</td>
|
||||
<td style='width: 50%; text-align: left'>
|
||||
<a href='http://127.0.0.1:55795'>© Bike!Bike! 2015</a>
|
||||
<a href='http://127.0.0.1:57139'>© Bike!Bike! 2015</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
248
config/locales/data/html_records/View-published-schedule--.html
Normal file
248
config/locales/data/html_records/View-published-schedule--.html
Normal file
@ -0,0 +1,248 @@
|
||||
<!DOCTYPE html><html lang="en"><head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" name="viewport">
|
||||
<title>Bike!Bike!</title>
|
||||
<meta content="Bike!Bike! A conference for bike collectives, co-ops, non-profit DIY bike shops" name="description">
|
||||
|
||||
<link href="/assets/application/safari-7.css" rel="stylesheet" media="all" type="text/css"><link href="/assets/web-fonts/safari-7.css" rel="stylesheet" media="all" type="text/css">
|
||||
<link href="/assets/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
||||
<link href="/assets/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
|
||||
<link href="/apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72">
|
||||
<link href="/apple-touch-icon-114x114.png" rel="apple-touch-icon" sizes="114x114">
|
||||
<link href="/apple-touch-icon-144x144.png" rel="apple-touch-icon" sizes="144x144">
|
||||
|
||||
</head>
|
||||
<body class="home">
|
||||
<nav>
|
||||
<div id="main-nav">
|
||||
<div class="inner-nav">
|
||||
<a class="logo" href="/"><img src="/assets/bb-icon-logo.png" class="sprite icons bb-icon-logo">
|
||||
<img src="/assets/bb-icon-logo-text.png" class="sprite icons bb-icon-logo-text">
|
||||
</a><div class="nav">
|
||||
<a class="current" href="/"><span>My Bike!Bike!</span></a>
|
||||
<a href="/about/"><span><span class="translated-content" data-i18n-key="page_titles.About_BikeBike" data-i18n-needs-translation="0">About Bike!Bike!</span></span></a>
|
||||
<a href="/policy/"><span><span class="translated-content" data-i18n-key="page_titles.Safe_Space_Policy" data-i18n-needs-translation="0">Safer Space Agreement</span></span></a>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a class="button register" href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="conference.actions.Register" data-i18n-needs-translation="0">Register</span>
|
||||
</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main id="main">
|
||||
<header id="banner">
|
||||
<div id="header-title">
|
||||
|
||||
<div class="cover" style="background-image: url(/assets/default_cover.jpg)"></div>
|
||||
<div class="title">
|
||||
<h2 class="background">2015!</h2>
|
||||
<div class="details">
|
||||
<h3 class="primary">Boise, Idaho</h3>
|
||||
<div class="secondary">
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<figure>
|
||||
<img src="/assets/default_poster.jpg">
|
||||
</figure>
|
||||
|
||||
</header>
|
||||
<div id="content">
|
||||
<article>
|
||||
<h2>My Bike!Bike!</h2>
|
||||
Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.
|
||||
<h3><span class="translated-content" data-i18n-key="articles.workshops.headings.Schedule" data-i18n-needs-translation="1">Schedule</span></h3>
|
||||
<div class="programme">
|
||||
<div class="programme-day">
|
||||
<h2>Friday</h2>
|
||||
<div class="programme-day-part">
|
||||
<h3><span class="translated-content" data-i18n-key="articles.headings.schedule.day_parts.morning" data-i18n-needs-translation="1">morning</span></h3>
|
||||
<table class="schedule">
|
||||
<tbody><tr>
|
||||
<th></th>
|
||||
<th> 9:00am</th>
|
||||
<th> 9:30am</th>
|
||||
<th>10:00am</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>The Shop</th>
|
||||
<td class="workshop previewable" colspan="3.0" id="workshop-1">
|
||||
<div class="title">Bikes and Beers</div>
|
||||
<div class="info">
|
||||
<a class="close" href="#!"></a>
|
||||
<div class="row"><div class="columns medium-12"><h2>Bikes and Beers</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Sed sagittis. Nam congue, risus semper porta volutpat, quam pede lobortis ligula, sit amet eleifend pede libero quis orci. Nullam molestie nibh in lectus.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
<a class="preview" href="#workshop-1"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
<div class="programme-day-part">
|
||||
<h3><span class="translated-content" data-i18n-key="articles.headings.schedule.day_parts.afternoon" data-i18n-needs-translation="1">afternoon</span></h3>
|
||||
<table class="schedule">
|
||||
<tbody><tr>
|
||||
<th></th>
|
||||
<th> 2:00pm</th>
|
||||
<th> 2:30pm</th>
|
||||
<th> 3:00pm</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>The Shop</th>
|
||||
<td class="workshop previewable" colspan="3.0" id="workshop-3">
|
||||
<div class="title">Advocacy Now!</div>
|
||||
<div class="info">
|
||||
<a class="close" href="#!"></a>
|
||||
<div class="row"><div class="columns medium-12"><h2>Advocacy Now!</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>In hac habitasse platea dictumst. Etiam faucibus cursus urna. Ut tellus.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
<a class="preview" href="#workshop-3"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
<div class="programme-day-part">
|
||||
<h3><span class="translated-content" data-i18n-key="articles.headings.schedule.day_parts.evening" data-i18n-needs-translation="1">evening</span></h3>
|
||||
<table class="schedule">
|
||||
<tbody><tr>
|
||||
<th></th>
|
||||
<th> 9:00pm</th>
|
||||
<th> 9:30pm</th>
|
||||
<th>10:00pm</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>The Shop</th>
|
||||
<td class="workshop previewable" colspan="3.0" id="workshop-4">
|
||||
<div class="title">Public Outreach</div>
|
||||
<div class="info">
|
||||
<a class="close" href="#!"></a>
|
||||
<div class="row"><div class="columns medium-12"><h2>Public Outreach</h2>
|
||||
<div class="workshop-interest">
|
||||
<span class="translated-content" data-i18n-key="articles.workshops.info.interested_count" data-i18n-needs-translation="0">No one is interested in this workshop yet</span>
|
||||
</div>
|
||||
<p>Duis bibendum. Morbi non quam nec dui luctus rutrum. Nulla tellus.</p>
|
||||
|
||||
</div><div class="columns medium-6"><h3><span class="translated-content" data-i18n-key="articles.workshops.headings.facilitators" data-i18n-needs-translation="0">Facilitators</span></h3>
|
||||
<div class="facilitators">
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
<a class="preview" href="#workshop-4"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="footer">
|
||||
<footer><div class="github">
|
||||
<img src="/assets/bb-icon-github.png" class="sprite icons bb-icon-github">
|
||||
<a href="https://github.com/bikebike/BikeBike/issues" target="_blank">
|
||||
<span class="translated-content" data-i18n-key="links.footer.text.File_an_Issue" data-i18n-needs-translation="0">File an issue</span>
|
||||
</a>
|
||||
|
|
||||
<a href="https://github.com/bikebike/BikeBike/contributing.md" target="_blank">
|
||||
<span class="translated-content" data-i18n-key="links.footer.text.Help_contribute" data-i18n-needs-translation="0">Help contribute</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="facebook">
|
||||
<span class="translated-contentblock" data-i18n-key="links.footer.help_text.facebook" data-i18n-needs-translation="0"><a href="https://www.facebook.com/groups/648758205249998/" target="_blank" title="Join our Facebook group">
|
||||
<img src="/assets/bb-icon-fb.png" class="sprite icons bb-icon-fb">
|
||||
</a>
|
||||
</span></div>
|
||||
<div class="locale">
|
||||
<span class="translated-contentblock" data-i18n-key="links.footer.help_text.select_language" data-i18n-needs-translation="0"><input id="select-language" type="checkbox">
|
||||
<label class="launch" for="select-language" title="Change your language">
|
||||
EN
|
||||
</label>
|
||||
<div class="selector">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/?lang=en">
|
||||
EN
|
||||
</a>
|
||||
<span>English</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/?lang=es">
|
||||
ES
|
||||
</a>
|
||||
<span>español</span>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/?lang=fr">
|
||||
FR
|
||||
</a>
|
||||
<span>français</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</span></div>
|
||||
<div class="copy">
|
||||
<span class="translated-contentblock" data-i18n-key="links.footer.help_text.contributors" data-i18n-needs-translation="0"><a title="Contributors" href="/humans.txt">©2015 Bike!Bike!
|
||||
</a></span></div>
|
||||
</footer>
|
||||
</div>
|
||||
<script>
|
||||
(function() {
|
||||
if (!String.prototype.trim) {
|
||||
(function() {
|
||||
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
||||
String.prototype.trim = function() {
|
||||
return this.replace(rtrim, '');
|
||||
};
|
||||
})();
|
||||
}
|
||||
|
||||
function classExists(elem,className){var p = new RegExp('(^| )'+className+'( |$)');return (elem.className && elem.className.match(p));}
|
||||
function addClass(elem,className){if(classExists(elem,className)){return true;}elem.className += ' '+className;}
|
||||
function removeClass(elem,className){var c = elem.className;var p = new RegExp('(^| )'+className+'( |$)');c = c.replace(p,' ').replace(/ /g,' ');elem.className = c.trim();}
|
||||
|
||||
[].slice.call(document.querySelectorAll('.input-field input')).forEach(function(inputEl) {
|
||||
if (inputEl.value.trim() === '') {
|
||||
inputEl.parentNode.className = inputEl.parentNode.className + ' empty';
|
||||
}
|
||||
|
||||
inputEl.addEventListener('focus', onInputFocus);
|
||||
inputEl.addEventListener('blur', onInputBlur);
|
||||
});
|
||||
|
||||
function onInputFocus(ev) {
|
||||
removeClass(ev.target.parentNode, 'empty')
|
||||
}
|
||||
|
||||
function onInputBlur(ev) {
|
||||
if (ev.target.value.trim() === '') {
|
||||
addClass(ev.target.parentNode, 'empty');
|
||||
}
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
</body></html>
|
@ -46,7 +46,7 @@
|
||||
<div class="details">
|
||||
<h3 class="primary">Anchorage, Alaska</h3>
|
||||
<div class="secondary">
|
||||
August 22 – 26, 2015
|
||||
August 27 – 31, 2015
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<div class="row"><div class="columns medium-12"><nav class="sub-menu">
|
||||
<a href="/conferences/MyBikeBike/register/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Registration" data-i18n-needs-translation="0">Registration</span></a>
|
||||
<a href="/conferences/MyBikeBike/workshops/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Workshops" data-i18n-needs-translation="0">Workshops</span></a>
|
||||
<a href="/conferences/MyBikeBike/schedule/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Schedule" data-i18n-needs-translation="1">Schedule</span></a>
|
||||
<a href="/conferences/MyBikeBike/edit/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Edit" data-i18n-needs-translation="0">Edit Conference</span></a>
|
||||
<a href="/conferences/MyBikeBike/stats/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Stats" data-i18n-needs-translation="0">Stats</span></a>
|
||||
<a href="/conferences/MyBikeBike/broadcast/"><span class="translated-content" data-i18n-key="menu.submenu.registration.Broadcast" data-i18n-needs-translation="0">Broadcast</span></a>
|
||||
|
@ -28,7 +28,7 @@ Excel Spreadsheet
|
||||
<td>Jeff</td>
|
||||
<td>someguy@bikebike.org</td>
|
||||
<td>Somewhere</td>
|
||||
<td>2015-09-22 02:21:25</td>
|
||||
<td>2015-09-27 03:02:26</td>
|
||||
<td>English</td>
|
||||
<td>2015-09-28 00:00:00</td>
|
||||
<td>2015-09-28 00:00:00</td>
|
||||
|
@ -15,6 +15,7 @@ date.formats.span_same_month_date_1:
|
||||
- View-stats--
|
||||
- Broadcast-message--
|
||||
- Edit-a-conference--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--
|
||||
- Be-the-first-to-like-a-workshop--
|
||||
- Like-a-workshop--
|
||||
@ -33,6 +34,7 @@ date.month_names:
|
||||
- View-stats--
|
||||
- Broadcast-message--
|
||||
- Edit-a-conference--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--
|
||||
- Be-the-first-to-like-a-workshop--
|
||||
- Like-a-workshop--
|
||||
@ -48,6 +50,7 @@ date.formats.span_same_month_date_2:
|
||||
- View-stats--
|
||||
- Broadcast-message--
|
||||
- Edit-a-conference--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--
|
||||
- Be-the-first-to-like-a-workshop--
|
||||
- Like-a-workshop--
|
||||
@ -66,6 +69,7 @@ date.date_span:
|
||||
- View-stats--
|
||||
- Broadcast-message--
|
||||
- Edit-a-conference--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--
|
||||
- Be-the-first-to-like-a-workshop--
|
||||
- Like-a-workshop--
|
||||
@ -149,6 +153,7 @@ page_descriptions.home:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -231,6 +236,7 @@ page_titles.About_BikeBike:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -313,6 +319,7 @@ page_titles.Safe_Space_Policy:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -407,6 +414,7 @@ links.footer.text.File_an_Issue:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -489,6 +497,7 @@ links.footer.text.Help_contribute:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -572,6 +581,7 @@ links.footer.help_text.facebook:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -655,6 +665,7 @@ links.footer.help_text.select_language:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -765,6 +776,8 @@ languages.en:
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
@ -914,6 +927,8 @@ languages.es:
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
@ -1063,6 +1078,8 @@ languages.fr:
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
@ -1186,6 +1203,7 @@ links.footer.help_text.contributors:
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- View-published-schedule--
|
||||
- Read-the-about-page--about
|
||||
- Read-the-policy-page--policy
|
||||
- See-a-404-page--error_404
|
||||
@ -1243,6 +1261,7 @@ conference.actions.Register:
|
||||
- Broadcast-message--
|
||||
- Edit-a-conference--confirm.test
|
||||
- Edit-a-conference--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--confirm.test
|
||||
- Create-workshop--
|
||||
- Be-the-first-to-like-a-workshop--confirm.test
|
||||
@ -1969,9 +1988,13 @@ time.formats.long:
|
||||
time.am:
|
||||
pages:
|
||||
- "/conferences/:slug/register"
|
||||
- "/"
|
||||
examples:
|
||||
- Start-registration-from-landing-page--conferences.MyBikeBike.register-6
|
||||
- Start-registration-from-landing-page--conferences.MyBikeBike.register-6
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
articles.conference_registration.headings.departure:
|
||||
pages:
|
||||
- "/conferences/:slug/register"
|
||||
@ -2098,6 +2121,18 @@ articles.conference_registration.headings.Allergies:
|
||||
- "/conferences/:slug/stats"
|
||||
examples:
|
||||
- View-stats--conferences.MyBikeBike.stats
|
||||
menu.submenu.registration.Schedule:
|
||||
pages:
|
||||
- "/conferences/:slug/stats"
|
||||
- "/conferences/:slug/broadcast"
|
||||
- "/conferences/:slug/edit"
|
||||
examples:
|
||||
- View-stats--conferences.MyBikeBike.stats
|
||||
- Broadcast-message--conferences.MyBikeBike.broadcast
|
||||
- Broadcast-message--conferences.MyBikeBike.broadcast-1
|
||||
- Broadcast-message--conferences.MyBikeBike.broadcast-2
|
||||
- Broadcast-message--conferences.MyBikeBike.broadcast-3
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
menu.submenu.registration.Edit:
|
||||
pages:
|
||||
- "/conferences/:slug/stats"
|
||||
@ -2275,6 +2310,108 @@ forms.actions.generic.save:
|
||||
- Edit-a-conference--conferences.MyBikeBike.edit
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.create
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1.edit
|
||||
geography.subregions.US.ID:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
articles.workshops.headings.Schedule:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
date.day_names:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
articles.headings.schedule.day_parts.morning:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
time.formats.short:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
articles.workshops.info.interested_count:
|
||||
pages:
|
||||
- "/"
|
||||
- "/conferences/:slug/workshops/:workshop_id"
|
||||
context: 0 people are interested in this workshop
|
||||
vars:
|
||||
- :count
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-4
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-5
|
||||
articles.workshops.headings.facilitators:
|
||||
pages:
|
||||
- "/"
|
||||
- "/conferences/:slug/workshops/:workshop_id"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-4
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-5
|
||||
articles.headings.schedule.day_parts.afternoon:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
time.pm:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
- View-published-schedule--
|
||||
articles.headings.schedule.day_parts.evening:
|
||||
pages:
|
||||
- "/"
|
||||
examples:
|
||||
- View-published-schedule--
|
||||
page_titles.about.About_BikeBike:
|
||||
pages:
|
||||
- "/about"
|
||||
@ -2660,47 +2797,6 @@ page_titles.conferences.View_Workshop:
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-4
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-5
|
||||
articles.workshops.info.interested_count:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id"
|
||||
context: 0 people are interested in this workshop
|
||||
vars:
|
||||
- :count
|
||||
examples:
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-4
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-5
|
||||
articles.workshops.headings.facilitators:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id"
|
||||
examples:
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Create-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Be-the-first-to-like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Like-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-1
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-2
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-3
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-4
|
||||
- Request-to-facilitate-a-workshop--conferences.MyBikeBike.workshops.1-5
|
||||
roles.workshops.facilitator.creator:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id"
|
||||
@ -2842,7 +2938,7 @@ page_titles.conferences.Facilitate_Workshop:
|
||||
articles.workshops.headings.facilitate:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id/facilitate"
|
||||
context: Request to Facilitate ‘Suspendisse Potenti’
|
||||
context: Request to Facilitate ‘In Eleifend Quam A Odio’
|
||||
vars:
|
||||
- :workshop_title
|
||||
examples:
|
||||
@ -2865,7 +2961,7 @@ forms.labels.generic.message:
|
||||
email.subject.workshop_facilitator_request:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id/facilitate_request"
|
||||
context: Request to facilitate Suspendisse Potenti from John Doe
|
||||
context: Request to facilitate In Eleifend Quam A Odio from John Doe
|
||||
vars:
|
||||
- :workshop_title
|
||||
- :requester_name
|
||||
@ -2963,7 +3059,7 @@ email.workshop.paragraph.request_approved:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id/facilitate_request/:user_id/:approve_or_deny"
|
||||
- "/conferences/:slug/workshops/:workshop_id/add_facilitator"
|
||||
context: You have been added as a facilitator of <a href="http://127.0.0.1:55795http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My
|
||||
context: You have been added as a facilitator of <a href="http://127.0.0.1:57139http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My
|
||||
Awesome Workshop</a>.
|
||||
vars:
|
||||
- :workshop_title
|
||||
@ -2985,7 +3081,7 @@ email.subject.workshop_request_denied:
|
||||
email.workshop.paragraph.request_denied:
|
||||
pages:
|
||||
- "/conferences/:slug/workshops/:workshop_id/facilitate_request/:user_id/:approve_or_deny"
|
||||
context: Your request to become a facilitator of <a href="http://127.0.0.1:55795http://127.0.0.1:55795/conferences/MyBikeBike/workshops/1">My
|
||||
context: Your request to become a facilitator of <a href="http://127.0.0.1:57139http://127.0.0.1:57139/conferences/MyBikeBike/workshops/1">My
|
||||
Awesome Workshop</a> has been denied. If you think this was in error, you may
|
||||
contact the current facilitators by making another request to facilitate.
|
||||
vars:
|
||||
|
@ -221,7 +221,7 @@ en:
|
||||
formats:
|
||||
default: "%a, %d %b %Y %H:%M:%S %z"
|
||||
long: "%l%P, %B %e, %Y"
|
||||
short: "%d %b %H:%M"
|
||||
short: "%l:%M%P"
|
||||
pm: pm
|
||||
languages:
|
||||
af: Afrikaans
|
||||
|
@ -197,7 +197,7 @@ es:
|
||||
formats:
|
||||
default: '%A, %d de %B de %Y %H:%M:%S %z'
|
||||
long: '%d de %B de %Y %H:%M'
|
||||
short: '%d de %b %H:%M'
|
||||
short: '%H:%M'
|
||||
pm: pm
|
||||
languages:
|
||||
af: afrikáans
|
||||
|
@ -1,38 +1,54 @@
|
||||
BikeBike::Application.routes.draw do
|
||||
|
||||
get '/organizations/json' => 'organizations#json', :as => :organizations_json
|
||||
get '/organizations/json' => 'organizations#json', :as => :organizations_json
|
||||
|
||||
get '/conferences/:slug/edit' => 'conferences#edit', :as => :edit_conference
|
||||
post '/conferences/:slug/save' => 'conferences#save', :as => :save_conference
|
||||
|
||||
match '/conferences/:slug/register' => 'conferences#register', :as => :register, via: [:get, :post]
|
||||
match '/conferences/:slug/broadcast' => 'conferences#broadcast', :as => :broadcast, via: [:get, :post]
|
||||
get '/conferences/:slug/stats' => 'conferences#stats', :as => :stats
|
||||
get '/conferences/:slug/register/:button/:confirmation_token' => 'conferences#register', :as => :register_paypal_confirm
|
||||
get '/conferences/:slug/workshops' => 'conferences#workshops', :as => :workshops
|
||||
get '/conferences/:slug/stats' => 'conferences#stats', :as => :stats
|
||||
get '/conferences/:slug/register/:button/:confirmation_token' => 'conferences#register', :as => :register_paypal_confirm
|
||||
|
||||
get '/conferences/:slug/schedule' => 'conferences#schedule', :as => :schedule
|
||||
get '/conferences/:slug/schedule/edit' => 'conferences#edit_schedule', :as => :edit_schedule
|
||||
post '/conferences/:slug/schedule/save' => 'conferences#save_schedule', :as => :save_schedule
|
||||
|
||||
get '/conferences/:slug/schedule/location/add' => 'conferences#add_location', :as => :add_location
|
||||
post '/conferences/:slug/schedule/location/save' => 'conferences#save_location', :as => :save_location
|
||||
get '/conferences/:slug/schedule/location/:id' => 'conferences#view_location', :as => :view_location
|
||||
get '/conferences/:slug/schedule/location/:id/edit' => 'conferences#edit_location', :as => :edit_location
|
||||
|
||||
get '/conferences/:slug/schedule/event/add' => 'conferences#add_event', :as => :add_event
|
||||
post '/conferences/:slug/schedule/event/save' => 'conferences#save_event', :as => :save_event
|
||||
get '/conferences/:slug/schedule/event/:id' => 'conferences#view_event', :as => :view_event
|
||||
get '/conferences/:slug/schedule/event/:id/edit' => 'conferences#edit_event', :as => :edit_event
|
||||
|
||||
get '/conferences/:slug/workshops' => 'conferences#workshops', :as => :workshops
|
||||
match '/conferences/:slug/workshops/create' => 'conferences#create_workshop', :as => :create_workshop, via: [:get, :post]
|
||||
post '/conferences/:slug/workshops/save' => 'conferences#save_workshop', :as => :save_workshop
|
||||
get '/conferences/:slug/workshops/:workshop_id' => 'conferences#view_workshop', :as => :view_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/toggle-interest' => 'conferences#toggle_workshop_interest', :as => :toggle_workshop_interest
|
||||
post '/conferences/:slug/workshops/save' => 'conferences#save_workshop', :as => :save_workshop
|
||||
get '/conferences/:slug/workshops/:workshop_id' => 'conferences#view_workshop', :as => :view_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/toggle-interest' => 'conferences#toggle_workshop_interest', :as => :toggle_workshop_interest
|
||||
match '/conferences/:slug/workshops/:workshop_id/edit' => 'conferences#edit_workshop', :as => :edit_workshop, via: [:get, :post]
|
||||
match '/conferences/:slug/workshops/:workshop_id/delete' => 'conferences#delete_workshop', :as => :delete_workshop, via: [:get, :post]
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate' => 'conferences#facilitate_workshop', :as => :facilitate_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/facilitate_request' => 'conferences#facilitate_request', :as => :facilitate_workshop_request
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate_request/:user_id/:approve_or_deny' => 'conferences#approve_facilitate_request', :as => :approve_facilitate_workshop_request
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate/sent' => 'conferences#sent_facilitate_request', :as => :sent_facilitate_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/add_facilitator' => 'conferences#add_workshop_facilitator', :as => :workshop_add_facilitator
|
||||
get '/conferences/:slug/edit' => 'conferences#edit', :as => :edit_conference
|
||||
post '/conferences/:slug/save' => 'conferences#save', :as => :save_conference
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate' => 'conferences#facilitate_workshop', :as => :facilitate_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/facilitate_request' => 'conferences#facilitate_request', :as => :facilitate_workshop_request
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate_request/:user_id/:approve_or_deny' => 'conferences#approve_facilitate_request', :as => :approve_facilitate_workshop_request
|
||||
get '/conferences/:slug/workshops/:workshop_id/facilitate/sent' => 'conferences#sent_facilitate_request', :as => :sent_facilitate_workshop
|
||||
post '/conferences/:slug/workshops/:workshop_id/add_facilitator' => 'conferences#add_workshop_facilitator', :as => :workshop_add_facilitator
|
||||
|
||||
get '/robots.txt' => 'application#robots', :as => :robots_txt
|
||||
get '/humans.txt' => 'application#humans', :as => :humans_txt
|
||||
get '/robots.txt' => 'application#robots', :as => :robots_txt
|
||||
get '/humans.txt' => 'application#humans', :as => :humans_txt
|
||||
|
||||
get '/confirm/:token' => 'application#confirm', :as => :confirm
|
||||
get '/confirm/:token' => 'application#confirm', :as => :confirm
|
||||
match '/doconfirm' => 'application#do_confirm', :as => :do_confirm, via: [:get, :post]
|
||||
#post '/doconfirm' => 'application#do_confirm', :as => :do_confirm
|
||||
post '/logout' => 'application#user_logout', :as => :logout
|
||||
post '/translator-request' => 'application#translator_request', :as => :translator_request
|
||||
post '/logout' => 'application#user_logout', :as => :logout
|
||||
post '/translator-request' => 'application#translator_request', :as => :translator_request
|
||||
|
||||
get '/error_404' => 'application#error_404'
|
||||
get '/about' => 'application#about', :as => :about
|
||||
get '/policy' => 'application#policy', :as => :policy
|
||||
root 'application#home', :as => :home
|
||||
get '/error_404' => 'application#error_404'
|
||||
get '/about' => 'application#about', :as => :about
|
||||
get '/policy' => 'application#policy', :as => :policy
|
||||
root 'application#home', :as => :home
|
||||
|
||||
end
|
||||
|
14
db/migrate/20150920233402_create_event_locations.rb
Normal file
14
db/migrate/20150920233402_create_event_locations.rb
Normal file
@ -0,0 +1,14 @@
|
||||
class CreateEventLocations < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :event_locations do |t|
|
||||
t.string :title
|
||||
t.integer :conference_id
|
||||
t.float :latitude
|
||||
t.float :longitude
|
||||
t.string :address
|
||||
t.string :amenities
|
||||
|
||||
t.timestamps null: false
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddEventLocationIdToWorkshops < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :workshops, :event_location_id, :integer
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddEventLocationIdToEvents < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :events, :event_location_id, :integer
|
||||
end
|
||||
end
|
5
db/migrate/20150925000217_add_type_to_events.rb
Normal file
5
db/migrate/20150925000217_add_type_to_events.rb
Normal file
@ -0,0 +1,5 @@
|
||||
class AddTypeToEvents < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :events, :event_type, :string
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddDayPartsToConferences < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :conferences, :day_parts, :string
|
||||
end
|
||||
end
|
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150920233755) do
|
||||
ActiveRecord::Schema.define(version: 20150927010559) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@ -120,6 +120,7 @@ ActiveRecord::Schema.define(version: 20150920233755) do
|
||||
t.string "paypal_username"
|
||||
t.string "paypal_password"
|
||||
t.string "paypal_signature"
|
||||
t.string "day_parts"
|
||||
end
|
||||
|
||||
create_table "delayed_jobs", force: :cascade do |t|
|
||||
@ -187,6 +188,7 @@ ActiveRecord::Schema.define(version: 20150920233755) do
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.integer "event_location_id"
|
||||
t.string "type"
|
||||
end
|
||||
|
||||
create_table "locations", force: :cascade do |t|
|
||||
|
26
features/schedule.feature
Normal file
26
features/schedule.feature
Normal file
@ -0,0 +1,26 @@
|
||||
Feature: Workshop Page
|
||||
In order to facilitate and attend workshops
|
||||
As a visitor
|
||||
|
||||
Scenario: View published schedule
|
||||
Given There is an upcoming conference in Boise ID
|
||||
And Registration is open
|
||||
|
||||
And a location named The Shop exists
|
||||
|
||||
And a workshop titled Bikes and Beers exists
|
||||
And the workshop is scheduled for day 2 at 9:00 at The Shop
|
||||
|
||||
And a workshop titled Bike Art exists
|
||||
And the workshop is scheduled for day 2 at 12:00 at The Shop
|
||||
|
||||
And a workshop titled Advocacy Now! exists
|
||||
And the workshop is scheduled for day 2 at 14:00 at The Shop
|
||||
|
||||
And a workshop titled Public Outreach exists
|
||||
And the workshop is scheduled for day 2 at 21:00 at The Shop
|
||||
|
||||
And the workshop schedule is published
|
||||
|
||||
And I am on the landing page
|
||||
Then I see the Bike!Bike! logo
|
@ -111,6 +111,30 @@ Given(/^a workshop( titled .+)? exists?$/) do |title|
|
||||
@last_workshop = workshop
|
||||
end
|
||||
|
||||
Given(/^the workshop is scheduled for day (\d+) at (\d\d?):(\d\d) at (.+)$/) do |day, hour, minute, location|
|
||||
@last_workshop.start_time = @last_conference.start_date.change({hour: hour.to_i, min: minute.to_i}) + (day.to_i - 1).days
|
||||
@last_workshop.end_time = @last_workshop.start_time + 1.5.hours
|
||||
#puts " === [#{location}] === "
|
||||
#puts EventLocation.all.to_yaml.to_s
|
||||
@last_workshop.event_location_id = EventLocation.find_by_title(location).id
|
||||
@last_workshop.save
|
||||
end
|
||||
|
||||
Given(/^the workshop schedule is (not )?published$/) do |is_not_published|
|
||||
@last_conference.workshop_schedule_published = is_not_published ? false : true
|
||||
@last_conference.save
|
||||
end
|
||||
|
||||
Given(/^a location( named .+)? exists?$/) do |title|
|
||||
location = EventLocation.new
|
||||
location.conference_id = @last_conference.id
|
||||
location.title = title ? title.gsub(/^\s*named\s*(.*?)\s*$/, '\1') : Forgery::LoremIpsum.sentence({:random => true}).gsub(/\.$/, '').titlecase
|
||||
#location.info = Forgery::LoremIpsum.paragraph({:random => true})
|
||||
#location.locale = :en
|
||||
location.save
|
||||
@last_location = location
|
||||
end
|
||||
|
||||
Given(/^(I )have created a workshop titled (.+)( with (\d+) facilitators)?$/) do |a, title, b, facilitator_count|
|
||||
workshop = Workshop.new
|
||||
workshop.conference_id = @last_conference.id
|
||||
|
@ -298,3 +298,52 @@
|
||||
- locality
|
||||
- political
|
||||
cache_hit:
|
||||
" in Boise ID": !ruby/object:Geocoder::Result::Google
|
||||
data:
|
||||
address_components:
|
||||
- long_name: Boise
|
||||
short_name: Boise
|
||||
types:
|
||||
- locality
|
||||
- political
|
||||
- long_name: Ada County
|
||||
short_name: Ada County
|
||||
types:
|
||||
- administrative_area_level_2
|
||||
- political
|
||||
- long_name: Idaho
|
||||
short_name: ID
|
||||
types:
|
||||
- administrative_area_level_1
|
||||
- political
|
||||
- long_name: United States
|
||||
short_name: US
|
||||
types:
|
||||
- country
|
||||
- political
|
||||
formatted_address: Boise, ID, USA
|
||||
geometry:
|
||||
bounds:
|
||||
northeast:
|
||||
lat: 43.6898951
|
||||
lng: -116.101909
|
||||
southwest:
|
||||
lat: 43.511717
|
||||
lng: -116.3658869
|
||||
location:
|
||||
lat: 43.6187102
|
||||
lng: -116.2146068
|
||||
location_type: APPROXIMATE
|
||||
viewport:
|
||||
northeast:
|
||||
lat: 43.6898951
|
||||
lng: -116.101909
|
||||
southwest:
|
||||
lat: 43.511717
|
||||
lng: -116.3658869
|
||||
partial_match: true
|
||||
place_id: ChIJnbRH6XLxrlQRm51nNpuYW5o
|
||||
types:
|
||||
- locality
|
||||
- political
|
||||
cache_hit:
|
||||
|
Loading…
x
Reference in New Issue
Block a user