diff --git a/Gemfile b/Gemfile
index ec74e2491..610b2d408 100644
--- a/Gemfile
+++ b/Gemfile
@@ -12,6 +12,7 @@ gem 'delayed_job'
gem 'delayed_job_active_record'
gem 'font-awesome-rails'
gem 'foundation-rails', '5.5.3.2'
+gem 'bootstrap', '~> 5.0.0.alpha1'
gem 'friendly_id'
gem 'haml'
gem 'high_voltage'
@@ -34,6 +35,7 @@ gem 'simple_form'
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'
gem 'will_paginate'
+gem 'sprockets-rails', '3.2.1'
gem 'icalendar'
gem 'tzinfo-data'
diff --git a/Gemfile.lock b/Gemfile.lock
index 022f65c6e..9c7c40aa4 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -41,10 +41,16 @@ GEM
public_suffix (>= 2.0.2, < 5.0)
arel (6.0.4)
ast (2.4.1)
+ autoprefixer-rails (10.0.1.0)
+ execjs
better_errors (2.7.1)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
+ bootstrap (5.0.0.alpha1)
+ autoprefixer-rails (>= 9.1.0)
+ popper_js (>= 1.14.3, < 2)
+ sassc-rails (>= 2.0.0)
builder (3.2.4)
bullet (6.1.0)
activesupport (>= 3.0.0)
@@ -213,6 +219,7 @@ GEM
pg (0.20.0)
pickadate-rails (3.5.6.0)
railties (>= 3.1.0)
+ popper_js (1.16.0)
premailer (1.11.1)
addressable
css_parser (>= 1.6.0)
@@ -396,6 +403,7 @@ PLATFORMS
DEPENDENCIES
acts-as-taggable-on (~> 5.0)
better_errors
+ bootstrap (~> 5.0.0.alpha1)
bullet
capybara
carrierwave
@@ -452,8 +460,10 @@ DEPENDENCIES
sass-rails (~> 5.0.1)
shoulda-matchers (~> 4.3)
simple_form
+ sprockets-rails (= 3.2.1)
simplecov
simplecov-lcov
+ sprockets-rails (= 3.2.1)
stripe
turbolinks
tzinfo-data
diff --git a/app/assets/images/svgs/facebook.svg b/app/assets/images/svgs/facebook.svg
new file mode 100644
index 000000000..76df7ae26
--- /dev/null
+++ b/app/assets/images/svgs/facebook.svg
@@ -0,0 +1 @@
+
diff --git a/app/assets/images/svgs/github.svg b/app/assets/images/svgs/github.svg
new file mode 100644
index 000000000..d3c4b60f1
--- /dev/null
+++ b/app/assets/images/svgs/github.svg
@@ -0,0 +1 @@
+
diff --git a/app/assets/images/svgs/slack.svg b/app/assets/images/svgs/slack.svg
new file mode 100644
index 000000000..fed0e1390
--- /dev/null
+++ b/app/assets/images/svgs/slack.svg
@@ -0,0 +1 @@
+
diff --git a/app/assets/images/svgs/twitter.svg b/app/assets/images/svgs/twitter.svg
new file mode 100644
index 000000000..79e3d586c
--- /dev/null
+++ b/app/assets/images/svgs/twitter.svg
@@ -0,0 +1 @@
+
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 614281353..d1a715e74 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -10,6 +10,8 @@
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
+//= require popper
+//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require jquery-ui
@@ -51,19 +53,4 @@ $(function(){
$('#member_lookup_id').chosen().change(function(e) {
$('#view_profile').attr('href', '/admin/members/' + $(this).val())
});
-
- // Prevent tabbing through side menu links when menu is hidden.
- // This somewhat hacky approach is required because Foundation doesn't
- // allow us to modify the functionality directly :(
- var $menuContainer = $('.off-canvas-wrap');
- var $menuLinks = $('.left-off-canvas-menu').find('a');
- var toggleMenuLinkTabindex = function() {
- // Use rAF to delay the call a frame, to wait until the class has been updated:
- window.requestAnimationFrame(function(){
- var menuIsVisible = $menuContainer.hasClass('move-right');
- $menuLinks.attr('tabindex', menuIsVisible ? 0 : -1);
- });
- };
- toggleMenuLinkTabindex();
- $(document).on('click', toggleMenuLinkTabindex);
});
diff --git a/app/assets/stylesheets/_bootstrap-custom.scss b/app/assets/stylesheets/_bootstrap-custom.scss
new file mode 100644
index 000000000..58ebf8a87
--- /dev/null
+++ b/app/assets/stylesheets/_bootstrap-custom.scss
@@ -0,0 +1,50 @@
+/*!
+ * Bootstrap v5.0.0-alpha1 (https://getbootstrap.com/)
+ * Copyright 2011-2020 The Bootstrap Authors
+ * Copyright 2011-2020 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+// scss-docs-start import-stack
+// Configuration
+@import "bootstrap/functions";
+@import "bootstrap/variables";
+@import "bootstrap/mixins";
+@import "bootstrap/utilities";
+
+// Layout & components
+@import "bootstrap/root";
+@import "bootstrap/reboot";
+@import "bootstrap/type";
+@import "bootstrap/images";
+@import "bootstrap/containers";
+@import "bootstrap/grid";
+@import "bootstrap/tables";
+// @import "bootstrap/forms";
+@import "bootstrap/buttons";
+@import "bootstrap/transitions";
+@import "bootstrap/dropdown";
+// @import "bootstrap/button-group";
+@import "bootstrap/nav";
+@import "bootstrap/navbar";
+@import "bootstrap/card";
+// @import "bootstrap/breadcrumb";
+// @import "bootstrap/pagination";
+@import "bootstrap/badge";
+@import "bootstrap/alert";
+// @import "bootstrap/progress";
+@import "bootstrap/list-group";
+// @import "bootstrap/close";
+// @import "bootstrap/toasts";
+// @import "bootstrap/modal";
+// @import "bootstrap/tooltip";
+// @import "bootstrap/popover";
+// @import "bootstrap/carousel";
+@import "bootstrap/spinners";
+
+// Helpers
+@import "bootstrap/helpers";
+
+// Utilities
+@import "bootstrap/utilities/api";
+// scss-docs-end import-stack
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.scss
similarity index 58%
rename from app/assets/stylesheets/application.css
rename to app/assets/stylesheets/application.scss
index 914e84246..d9c60197d 100644
--- a/app/assets/stylesheets/application.css
+++ b/app/assets/stylesheets/application.scss
@@ -17,6 +17,25 @@
*= require pickadate/classic.time
*= require chosen
*= require jquery-ui
- *= require pagination
- *= require animations
*/
+
+@import "partials/colors";
+@import "partials/links";
+@import "partials/margins";
+@import "partials/layout";
+@import "partials/hero";
+@import "partials/events";
+@import "partials/social_media";
+@import "partials/member_note";
+@import "partials/attendances";
+@import "partials/admin_workshop";
+@import "partials/sponsors";
+@import "partials/organisers";
+@import "partials/jobs";
+@import "partials/star-rating";
+@import "partials/event";
+@import "partials/workshop";
+
+$primary: $dark-codebar-blue !default;
+
+@import "bootstrap-custom";
diff --git a/app/assets/stylesheets/foundation_and_overrides.scss b/app/assets/stylesheets/foundation_and_overrides.scss
index 10608f725..13b8bd139 100644
--- a/app/assets/stylesheets/foundation_and_overrides.scss
+++ b/app/assets/stylesheets/foundation_and_overrides.scss
@@ -1332,20 +1332,10 @@ table thead tr td {
border-bottom: 1px solid rgb(34, 34, 34);
}
-.top-bar-section li:not(.has-form):hover a span {
- text-decoration: underline;
- text-decoration-skip: ink;
-}
-
-.top-bar-section li:not(.has-form):hover a .highlight {
- text-decoration-color: currentColor;
-}
-
.highlight {
color: $secondary-color;
}
-
blockquote {
background: $white;
border-radius: 5px;
diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss
index c1220c608..1543f4d40 100644
--- a/app/assets/stylesheets/main.scss
+++ b/app/assets/stylesheets/main.scss
@@ -1,23 +1,3 @@
-@import 'partials/colors';
-@import 'partials/links';
-@import 'partials/margins';
-@import 'partials/layout';
-@import 'partials/card';
-@import 'partials/hero';
-@import 'partials/events';
-@import 'partials/social_media';
-@import 'partials/chapter';
-@import 'partials/member_note';
-@import 'partials/attendances';
-@import 'partials/admin_workshop';
-@import 'partials/sponsors';
-@import 'partials/organisers';
-@import 'partials/jobs';
-@import 'partials/star-rating';
-@import 'partials/event';
-@import 'partials/workshop';
-@import 'partials/admin_member';
-
.row-spaced {
padding-bottom: 20px;
}
diff --git a/app/assets/stylesheets/partials/_card.scss b/app/assets/stylesheets/partials/_card.scss
deleted file mode 100644
index ef329e8e8..000000000
--- a/app/assets/stylesheets/partials/_card.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-.card {
- background: $white;
- color: #666;
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- width: 100%;
- padding: 1rem;
- border: 1px solid $main-stroke;
- border-radius: 5px;
-
- &:hover {
- box-shadow: 0 0 5px 0 $main-stroke;
- }
-}
\ No newline at end of file
diff --git a/app/assets/stylesheets/partials/_chapter.scss b/app/assets/stylesheets/partials/_chapter.scss
deleted file mode 100644
index 5461fb164..000000000
--- a/app/assets/stylesheets/partials/_chapter.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-#chapter {
- // .date {
- // text-align: center;
- // }
-
- .month {
- font-weight: bold;
- font-size: 1em;
- text-transform: uppercase;
- }
-
- .time {
- font-size: 1em;
- }
-
- .day {
- font-size: 2.5em;
- }
-
- .workshop {
- border-radius: 2px;
- padding: 0 0 30px;
- margin: 0 0 20px 0;
- }
-
- .workshop:not(:last-child) {
- border-bottom: 1px solid #ddd2e9;
- }
-
- .organisers {
- margin-top: 12px;
- }
-}
-
-.organiser {
- border: 1px solid #f7f4fa;
- margin: 4px;
- .row {
- text-align: center;
- padding: 15px;
- margin: 0 5px;
- }
-}
-
-.chapter-header {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
-}
-
-.chapter-header-text {
- padding-top: 1.42857rem;
-}
-
-.chapter-header-image {
- padding: 0;
-}
-
-@media (min-width: 71.42857rem) {
- @supports (display: grid) {
- .chapter-header {
- display: grid;
- margin-left: calc((100vw - 71.42857rem) / 2);
- grid-template-columns: calc(71.42857rem / 2) 1fr;
- }
- .chapter-header-text {
- grid-column: 1;
- width: auto;
- }
- .chapter-header-image {
- grid-column: 2;
- padding-left: 1.07143rem;
- width: 50vw;
- }
- }
-}
diff --git a/app/assets/stylesheets/partials/_colors.sass b/app/assets/stylesheets/partials/_colors.sass
index 7919a4763..1cc27288e 100644
--- a/app/assets/stylesheets/partials/_colors.sass
+++ b/app/assets/stylesheets/partials/_colors.sass
@@ -2,6 +2,8 @@ $codebar-green: #19f3be
$codebar-pink: #ff036a
$codebar-blue: #4bafff
+$dark-codebar-blue: #006cc2
+
$main-stroke: #f2f2f4
$navigation-gray: #fdfdfd
$navigation-gray-separators: #dddedd
diff --git a/app/assets/stylesheets/partials/_dashboard.scss b/app/assets/stylesheets/partials/_dashboard.scss
deleted file mode 100644
index bb30712c2..000000000
--- a/app/assets/stylesheets/partials/_dashboard.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-section.title {
- .lead {
- color: $white;
- }
-}
diff --git a/app/assets/stylesheets/partials/_event.scss b/app/assets/stylesheets/partials/_event.scss
index 05f1523ad..3f071c91f 100644
--- a/app/assets/stylesheets/partials/_event.scss
+++ b/app/assets/stylesheets/partials/_event.scss
@@ -1,78 +1,23 @@
-#sidebar {
- background: #fdfdfd;
- padding: 32px 20px;
-}
-
.event {
- $root: &;
-
- padding: 20px;
- margin-bottom: 30px;
- border-radius: 5px;
-
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1), 0 8px 10px 0 rgba(0, 0, 0, 0.05);
-
- display: flex;
- justify-content: space-between;
-
- &__col-1,
- &__col-2 {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- width: 100%;
- }
-
- &__col-2 {
- align-items: flex-end;
+ .event__header {
+ font-size: 1.2rem;
}
- &__header {
- .title,
- .title a {
- font-size: 1.2rem;
- line-height: 1.2;
- margin: 0;
+ .date,
+ .time {
+ i {
+ font-size: 0.9rem;
+ margin-top: -2px;
+ vertical-align: middle;
+ opacity: 0.5;
}
}
+}
- &__details {
- margin-top: 15px;
- font-size: 0.9rem;
- .date,
- .time {
- i {
- font-size: 0.9rem;
- margin-top: -2px;
- vertical-align: middle;
- opacity: 0.5;
- }
- }
- }
-
- &__organisers {
- margin-top: 12px;
-
- #{$root}__organisers-list {
- margin: 0 !important;
- }
- }
+img.sponsor-sm {
+ max-width: 120px;
+}
- &__sponsors {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-end;
- a {
- border: none;
- margin-top: 10px;
- margin-left: 10px;
- }
- img {
- max-width: 90px;
- max-height: 60px;
- &:not(:last-child) {
- margin-right: 10px;
- }
- }
- }
+img.sponsor-md {
+ max-width: 150px;
}
diff --git a/app/assets/stylesheets/partials/_events.scss b/app/assets/stylesheets/partials/_events.scss
index 743c3e700..2fb210bc0 100644
--- a/app/assets/stylesheets/partials/_events.scss
+++ b/app/assets/stylesheets/partials/_events.scss
@@ -1,7 +1,6 @@
.events {
margin-bottom: 30px;
.navigation {
-
.button {
margin-top: 10px;
}
@@ -40,7 +39,3 @@
.event.date {
color: #138cd3;
}
-
-.monthly-host-logo {
- margin-bottom: 1.4rem;
-}
diff --git a/app/assets/stylesheets/partials/_hero.scss b/app/assets/stylesheets/partials/_hero.scss
index 5a012a1af..6aadd39d5 100644
--- a/app/assets/stylesheets/partials/_hero.scss
+++ b/app/assets/stylesheets/partials/_hero.scss
@@ -1,17 +1,31 @@
-$primary-color: #596677;
+.homepage-hero {
+ background-image: image-url("bg.jpg");
+ background-position: center center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ height: 350px;
+ .text {
+ background-color: rgba(0, 0, 0, 0.6);
+ p {
+ color: $white;
+ }
+ }
+}
+
+// May delete all below
section.hero.opaque {
.lead,
h2 {
color: $white;
- background-color: rgba(0,0,0,0.6);
+ background-color: rgba(0, 0, 0, 0.6);
margin-bottom: 0;
padding: 20px;
}
}
section.hero {
- background-image: image-url('bg.jpg');
+ background-image: image-url("bg.jpg");
background-position: center center;
background-size: cover;
background-repeat: no-repeat;
diff --git a/app/assets/stylesheets/partials/_layout.scss b/app/assets/stylesheets/partials/_layout.scss
index ccc1d6528..72e4b0f8e 100644
--- a/app/assets/stylesheets/partials/_layout.scss
+++ b/app/assets/stylesheets/partials/_layout.scss
@@ -1,34 +1,33 @@
+@import "partials/colors";
+
+#top {
+ margin-top: 73px;
+}
+
+// to delete
.flex-grid {
display: flex;
flex-wrap: wrap;
}
+// to delete
.flex-item {
display: flex;
}
.main-footer {
- background-color: $primary-color;
- padding: 50px 0;
- color: rgba(255, 255, 255, 0.8);
+ background-color: $dark-codebar-blue;
+ color: white;
a {
color: $white;
border: none;
-
&:hover {
- color: $secondary-color;
+ color: $codebar-green;
}
}
.registration {
- color: $white;
font-size: 0.75rem;
- margin-top: 30px;
- margin-bottom: 0;
- }
-
- .social-media a {
- border-bottom: none;
}
}
diff --git a/app/assets/stylesheets/partials/_organisers.scss b/app/assets/stylesheets/partials/_organisers.scss
index 238634f70..aefb3b1dd 100644
--- a/app/assets/stylesheets/partials/_organisers.scss
+++ b/app/assets/stylesheets/partials/_organisers.scss
@@ -1,14 +1,3 @@
.user-link {
border-bottom: none;
}
-
-.organiser-content {
- @extend .card;
- align-items: center;
- justify-content: center;
-}
-
-.organiser-image {
- border-radius: 3.57143rem;
- margin-bottom: 0.5rem;
-}
diff --git a/app/assets/stylesheets/partials/_social_media.scss b/app/assets/stylesheets/partials/_social_media.scss
index 50af99674..54377565e 100644
--- a/app/assets/stylesheets/partials/_social_media.scss
+++ b/app/assets/stylesheets/partials/_social_media.scss
@@ -1,33 +1,8 @@
-li.slack a {
- color: #3eb991;
- color: rgba(62, 185, 145, 0.8);
-
+.social-svg {
+ width: 30px;
+ height: 30px;
+ transition: all 1s ease;
&:hover {
- color: rgba(62, 185, 145, 1);
- }
-}
-
-li.facebook a {
- color: #5279cc;
- color: rgba(82, 121, 204, 0.8);
-
- &:hover {
- color: rgba(82, 121, 204, 1);
- }
-}
-
-li.twitter a {
- color: rgba(85, 172, 238, 0.8);
-
- &:hover {
- color: rgba(85, 172, 238, 1);
- }
-}
-
-li.github a {
- color: rgba(51, 51, 51, 0.8);
-
- &:hover {
- color: rgba(51, 51, 51, 1);
+ transform: scale(1.5);
}
}
diff --git a/app/assets/stylesheets/partials/_sponsors.scss b/app/assets/stylesheets/partials/_sponsors.scss
index 2a2ca3549..b9c26fa11 100644
--- a/app/assets/stylesheets/partials/_sponsors.scss
+++ b/app/assets/stylesheets/partials/_sponsors.scss
@@ -11,7 +11,3 @@
flex-wrap: wrap;
align-items: center;
}
-
-.sponsor-header-margin {
- margin-bottom: 35px;
-}
diff --git a/app/views/chapter/_subscriptions.html.haml b/app/views/chapter/_subscriptions.html.haml
index 5ae291198..c6c287a7c 100644
--- a/app/views/chapter/_subscriptions.html.haml
+++ b/app/views/chapter/_subscriptions.html.haml
@@ -1,14 +1,11 @@
-.row
- .medium-12.columns
- - @chapter.groups.each do |group|
- - if belongs_to_group?(group)
- %span{ "data-tooltip" =>"", "aria-haspopup" => "true", class: "has-tip", title: "Unsubscribe from #{@chapter.name} #{group.name}" }
- = link_to subscriptions_path(subscription: { group_id: group }), method: 'delete', class: 'button secondary small' do
- =group.name
- %i.fa.fa-check
- - else
- %span{ "data-tooltip" =>"", "aria-haspopup" => "true", class: "has-tip", title: "Subscribe to #{@chapter.name} #{group.name}" }
-
- = link_to subscriptions_path(subscription: { group_id: group }), method: 'post', class: 'button small' do
- = group.name
- %i.fa.fa-rss
+- @chapter.groups.each do |group|
+ - if belongs_to_group?(group)
+ %span{ title: "Unsubscribe from #{@chapter.name} #{group.name}" }
+ = link_to subscriptions_path(subscription: { group_id: group }), method: 'delete', class: 'btn btn-success' do
+ = group.name
+ %i.fa.fa-check
+ - else
+ %span{ title: "Subscribe to #{@chapter.name} #{group.name}" }
+ = link_to subscriptions_path(subscription: { group_id: group }), method: 'post', class: 'btn btn-secondary' do
+ = group.name
+ %i.fa.fa-rss
diff --git a/app/views/chapter/show.html.haml b/app/views/chapter/show.html.haml
index e6b0afe57..081c47083 100644
--- a/app/views/chapter/show.html.haml
+++ b/app/views/chapter/show.html.haml
@@ -1,28 +1,29 @@
-%section
- .row.chapter-header
- .medium-6.columns.chapter-header-text
+.container-fluid
+ .row.align-items-center
+ .col-md-6.pt-4.pb-4
%h1= @chapter.name
- if @chapter.description
%p.lead= @chapter.description
- else
- %p.lead= t('chapters.intro_html')
+ %p.lead.mb-0= t('chapters.intro_html')
- if @chapter.image.present?
- .medium-6.columns.chapter-header-image
+ .col-md-6
= image_tag @chapter.image.bg, alt: "#{@chapter.name} chapter"
-.panel
- .row
- .medium-6.columns
- = t('chapters.info', email: h(@chapter.email)).html_safe
- .medium-6.columns.text-center
- - if logged_in?
- = render partial: 'subscriptions'
- - else
- =link_to 'Sign up', new_member_path, class: 'button small radius'
+.alert-primary.pt-4.pb-4
+ .container-fluid
+ .row.align-items-center
+ .col-md-6.mb-4.mb-md-0
+ = t('chapters.info', email: h(@chapter.email)).html_safe
+ .col-md-6.text-center
+ - if logged_in?
+ = render partial: 'subscriptions'
+ - else
+ =link_to 'Sign up', new_member_path, class: 'btn btn-primary'
-%section.stripe.reverse#chapter
+.container.stripe.reverse#chapter
.row
- .large-8.columns
+ .col-md-8.col-sm-12
- if @upcoming_workshops.any?
.events-list.events-list--upcoming
%h3 Upcoming Events
@@ -37,7 +38,7 @@
.grouped-events
= render workshops
- .large-4.columns
+ .col-md-4.col-sm-12
- if @chapter.twitter_handle
%a.twitter-timeline{href: "https://twitter.com/#{@chapter.twitter_handle}", "data-widget-id" => @chapter.twitter_id }="Tweets by #{@chapter.twitter_handle}"
- else
@@ -46,27 +47,15 @@
%script(async src="https://platform.twitter.com/widgets.js" charset="utf-8")
- if @recent_sponsors.any?
- .stripe.reverse
+ .container-fluid.stripe.reverse
.row
- .small-12.columns
- %h2 Sponsors
- .row.sponsor-row
- - @recent_sponsors.each do |sponsor|
- .small-4.medium-2.columns.sponsor-image
- = link_to image_tag(sponsor.avatar, class: "small-image", alt: sponsor.name), sponsor.website, title: sponsor.name
+ .col
+ %h2.text-center Sponsors
+ = render partial: 'shared/sponsors', object: @recent_sponsors
-.stripe.reverse
- .row
- .large-12.columns
- %a{ name: 'organisers' }
- %h2 Team
- .row.flex-grid
- - @chapter.organisers.shuffle.each do |organiser|
- .small-12.medium-6.large-3.columns.flex-item.mb2
- = link_to twitter_url_for(organiser.twitter), title: "#{organiser.full_name} Twitter profile", class: 'organiser-content' do
- = image_tag(organiser.avatar(65), alt: organiser.full_name, class: 'organiser-image')
- = organiser.full_name
- .row
- .large-12.columns
- .panel
- = t('chapters.contact', city: @chapter.name, email: @chapter.email)
+.container-fluid.stripe.reverse
+ = render partial: 'members/organisers_grid', locals: { members: @chapter.organisers.shuffle, show_info: false, title: t('chapters.team') }
+
+ .row.mt-5
+ .col.alert.alert-primary.mb-0
+ = t('chapters.contact', city: @chapter.name, email: @chapter.email)
diff --git a/app/views/coach/_coach.html.haml b/app/views/coach/_coach.html.haml
index 8032ebe01..fb844f790 100644
--- a/app/views/coach/_coach.html.haml
+++ b/app/views/coach/_coach.html.haml
@@ -1,29 +1,23 @@
.stripe.reverse
.row
- .medium-12.columns
- .text-right
- %br
- %br
- %ul.small-block-grid-2.medium-block-grid-4.large-block-grid-4
- - coaches.each do |coach|
- %li.coach
- .row
- .small-12.columns
- .text-center
- =link_to twitter_url_for(coach.twitter), class: 'user-link' do
- =image_tag(coach.avatar(50), class: 'th radius', title: coach.full_name, alt: coach.full_name)
+ - coaches.each do |coach|
+ .col-sm-6.col-md-3.coach
+ .row
+ .col
+ .text-center.mb-4
+ =link_to twitter_url_for(coach.twitter), class: 'border-0' do
+ =image_tag(coach.avatar(50), class: 'rounded-circle', title: coach.full_name, alt: coach.full_name)
- %br
- =link_to twitter_url_for(coach.twitter) do
- = coach.full_name
- %p.small= coach.about_you
- - if coach.skills.any?
- %p
- skills:
- - coach.skills.each do |skill|
- .label= skill.name
+ =link_to twitter_url_for(coach.twitter) do
+ = coach.full_name
+ %p.small.mt-3.mb-3= coach.about_you
+ - if coach.skills.any?
+ %p
+ skills:
+ - coach.skills.each do |skill|
+ = skill.name
.row
- .medium-6.columns.text-left
+ .col-6.float-left
= page_entries_info(@coaches, model: 'coaches')
- .medium-6.columns.text-right
+ .col-6.float-right
= will_paginate(@coaches)
diff --git a/app/views/dashboard/code.html.haml b/app/views/dashboard/code.html.haml
index bcbdda411..0abb2e591 100644
--- a/app/views/dashboard/code.html.haml
+++ b/app/views/dashboard/code.html.haml
@@ -1,18 +1,19 @@
.stripe.reverse#code-of-conduct
- .row
- .large-12.columns
- %h1
+ .row.justify-content-md-center
+ .col.col-md-8
+ %h2
= t('code_of_conduct.title')
+
.stripe.reverse
- .row
- .large-12.columns
- %h2
+ .row.justify-content-md-center
+ .col.col-md-8
+ %h3
= t('code_of_conduct.summary.title')
%p.lead
= t('code_of_conduct.summary.intro')
- %h2
+ %h3
= t('code_of_conduct.content.title')
%p
@@ -35,4 +36,4 @@
%p
= t('code_of_conduct.content.questions')
- =mail_to 'hello@codebar.io', t('code_of_conduct.content.contact'), subject: t('code_of_conduct.content.email_subject')
+ = mail_to 'hello@codebar.io', t('code_of_conduct.content.contact'), subject: t('code_of_conduct.content.email_subject')
diff --git a/app/views/dashboard/dashboard.html.haml b/app/views/dashboard/dashboard.html.haml
index 49bd10cb7..050b87db6 100644
--- a/app/views/dashboard/dashboard.html.haml
+++ b/app/views/dashboard/dashboard.html.haml
@@ -1,45 +1,38 @@
-.stripe.reverse
+.container-fluid.stripe.reverse
.row
- .large-12.columns
- %h2
- Dashboard
-%section
+ .col
+ %h2 Dashboard
+
+.container-fluid
.row
- .large-3.columns#sidebar
- =image_tag(current_user.avatar(33), alt: current_user.full_name)
- = link_to @user.full_name, profile_path
+ .col-12.col-lg-3.mb-4
+ .bg-light.p-3
+ .mb-4.text-lg-center
+ = image_tag(current_user.avatar(80), alt: current_user.full_name, class: 'rounded-circle mb-2')
+ = link_to @user.full_name, profile_path, class: 'd-inline-block'
- %br
- %br
- %br
- .row
- .large-12.columns
- %h4
- Subscriptions
- %small
- =link_to "Edit", subscriptions_path
- - if current_user.chapters.any?
- %ul.stack.button-group.secondary.no-bullet
- - current_user.chapters.each do |chapter|
- %li= link_to chapter.name, chapter_url(chapter.slug)
- - else
- %i.fa.fa-warning
- %small You are not subscribed to any groups.
+ .d-flex.align-items-center.mb-2
+ %h4 Subscriptions
+ %small= link_to 'Edit', subscriptions_path, class: 'ml-2'
+ - if current_user.chapters.any?
+ .list-group.list-group-flush
+ - current_user.chapters.each do |chapter|
+ = link_to chapter.name, chapter_url(chapter.slug), class: 'list-group-item list-group-item-action'
+ - else
+ %i.fa.fa-warning
+ %small You are not subscribed to any groups.
- .large-9.columns#main
+ .col-12.col-lg-8.offset-lg-1#main
- if @announcements.any?
- %p.lead
- %ul.panel.no-bullet
- - @announcements.each do |announcement|
- %li= dot_markdown(announcement.message)
- %section#chapter
- .large-12.columns.events
- - if @ordered_events.none?
- There are no upcoming events announced for the chapters you are subscribed to.
- - @ordered_events.each do |date, workshops|
- .row
- .medium-12.columns
- %h4= date
- = render workshops
- %br
+ .mb-4
+ - @announcements.each do |announcement|
+ .alert.alert-primary
+ = dot_markdown(announcement.message)
+
+ %div
+ - if @ordered_events.none?
+ There are no upcoming events announced for the chapters you are subscribed to.
+ - @ordered_events.each do |date, workshops|
+ %h4= date
+ = render workshops
diff --git a/app/views/dashboard/effective-teacher-guide.html.haml b/app/views/dashboard/effective-teacher-guide.html.haml
index 808797aa5..ec065448b 100644
--- a/app/views/dashboard/effective-teacher-guide.html.haml
+++ b/app/views/dashboard/effective-teacher-guide.html.haml
@@ -1,29 +1,40 @@
.stripe.reverse
- .row
- .large-12.columns
- %h3
+ .row.justify-content-md-center
+ .col.col-lg-8
+ %h2
Coach Guide
- %p
+ %p.lead
This is a brief guide we've put together for our coaches. If you have any suggestions to make open a #{link_to "pull request", "https://github.com/codebar/planner"} or #{link_to "create an issue", "https://github.com/codebar/planner/issues/new"}.
.stripe.reverse
- .row
- .large-12.columns
- %ul.circle
- %li= t('dashboard.teacher_guide.laptop')
- %li= t('dashboard.teacher_guide.keyboard')
- %li= t('dashboard.teacher_guide.typing')
- %li= t('dashboard.teacher_guide.questions')
- %li= t('dashboard.teacher_guide.mistakes')
- %li= t('dashboard.teacher_guide.introduction')
- %li= t('dashboard.teacher_guide.backgrounds')
- %li= t('dashboard.teacher_guide.limits')
- %li= t('dashboard.teacher_guide.collaboration')
- %li= t('dashboard.teacher_guide.discussion')
- %li= t('dashboard.teacher_guide.talk_slow')
- %li= t('dashboard.teacher_guide.mild_approach')
- %li= t('dashboard.teacher_guide.paper')
- %li= t('dashboard.teacher_guide.stubling')
-
- .row
- .large-12.columns
+ .row.justify-content-md-center
+ .col.col-lg-8
+ %ul
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.laptop')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.keyboard')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.typing')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.questions')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.mistakes')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.introduction')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.backgrounds')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.limits')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.collaboration')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.discussion')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.talk_slow')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.mild_approach')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.paper')
+ %li
+ %p.mb-2= t('dashboard.teacher_guide.stubling')
diff --git a/app/views/dashboard/faq.html.haml b/app/views/dashboard/faq.html.haml
index 34192a458..cab12ef35 100644
--- a/app/views/dashboard/faq.html.haml
+++ b/app/views/dashboard/faq.html.haml
@@ -1,10 +1,10 @@
.stripe.reverse#banner
- .row
- .large-8.large-offset-2.columns
+ .row.justify-content-md-center
+ .col-12.col-md-8
%h2 Frequently Asked Questions
.stripe.reverse
- .row
- .large-8.large-offset-2.columns
+ .row.justify-content-md-center
+ .col-12.col-md-8
%dl
%dt= t('faq.payment.q')
%dd
diff --git a/app/views/dashboard/participant_guide.html.haml b/app/views/dashboard/participant_guide.html.haml
index 654a1eb74..9fb7a162f 100644
--- a/app/views/dashboard/participant_guide.html.haml
+++ b/app/views/dashboard/participant_guide.html.haml
@@ -1,8 +1,7 @@
.stripe.reverse#banner
- .row
- .large-12.columns
+ .row.justify-content-md-center
+ .col.col-md-8
%h2= t('participant_student_guide.title')
- %p
= link_to t('participant_student_guide.attendance_policy.title') , '#attendance'
\|
= link_to t('participant_student_guide.eligibility_criteria.title') , '#eligibility'
@@ -10,27 +9,27 @@
= link_to t('participant_student_guide.disability.title') , '#disability'
.stripe.reverse
- .row
- .large-12.columns
+ .row.justify-content-md-center
+ .col.col-md-8
%h3#attendance= t('participant_student_guide.attendance_policy.title')
%p
= t('participant_student_guide.attendance_policy.intro')
%ol
%li
- = raw t('participant_student_guide.attendance_policy.rule1')
+ %p.mb-2= raw t('participant_student_guide.attendance_policy.rule1')
%li
- = raw t('participant_student_guide.attendance_policy.rule2')
+ %p.mb-2= raw t('participant_student_guide.attendance_policy.rule2')
%li
- = t('participant_student_guide.attendance_policy.rule3')
+ %p.mb-2= t('participant_student_guide.attendance_policy.rule3')
%li
- = t('participant_student_guide.attendance_policy.rule4')
+ %p.mb-2= t('participant_student_guide.attendance_policy.rule4')
%li
- = raw t('participant_student_guide.attendance_policy.rule5')
+ %p.mb-2= raw t('participant_student_guide.attendance_policy.rule5')
%li
- = t('participant_student_guide.attendance_policy.rule6')
+ %p.mb-2= t('participant_student_guide.attendance_policy.rule6')
%li
- = t('participant_student_guide.attendance_policy.rule7')
+ %p.mb-2= t('participant_student_guide.attendance_policy.rule7')
%h4= t('dashboard.policy.what_happens')
diff --git a/app/views/dashboard/show.html.haml b/app/views/dashboard/show.html.haml
index 2d4481ab5..09ef9eb3f 100644
--- a/app/views/dashboard/show.html.haml
+++ b/app/views/dashboard/show.html.haml
@@ -1,84 +1,84 @@
- title t('homepage.title')
-%section.hero.opaque
- .row
- .medium-offset-1.medium-6.columns
- %p.lead
- = raw t('homepage.intro')
+.homepage-hero.d-flex.align-items-center
+ .container.d-flex
+ .col-md-4.offset-md-1.p-3.text
+ %p= raw t('homepage.intro')
-%section.stripe.reverse
- .row
- .medium-offset-1.medium-10.columns
- %p.lead
- = t('homepage.explanation')
+.container-fluid.stripe.reverse
+ .row.justify-content-md-center
+ .col-md-8
+ %p.lead.mb-0= raw t('homepage.explanation')
-%section.stripe.reverse
+.container-fluid.stripe.reverse
.row
- .large-4.columns
- .text-center
- %h4
- = t('homepage.participate.students_title')
- %p
- = t('homepage.participate.students_explanation_p1')
- %p
- = t('homepage.participate.students_explanation_p2')
- .text-center
- = link_to t('homepage.participate.students_button'), new_member_path, class: 'button'
+ .col-md-4.mb-4.mb-md-0
+ .card.h-100.text-md-center.border-0
+ .card-body
+ %h3.h4.card-title
+ = t('homepage.participate.students_title')
+ %p.card-text
+ = t('homepage.participate.students_explanation_p1')
+ %p.card-text
+ = t('homepage.participate.students_explanation_p2')
+ .card-footer.border-0.bg-transparent
+ = link_to t('homepage.participate.students_button'), new_member_path, class: 'btn btn-primary'
- .large-4.columns
- .text-center
- %h4
- = t('homepage.participate.coaches_title')
- %p
- = raw t('homepage.participate.coaches_explanation_p1')
- %p
- = t('homepage.participate.coaches_explanation_p2')
- .text-center
- = link_to t('homepage.participate.coaches_button'), new_member_path, class: 'button'
+ .col-md-4.mb-4.mb-md-0
+ .card.h-100.text-md-center.border-0
+ .card-body
+ %h3.h4.card-title
+ = t('homepage.participate.coaches_title')
+ %p.card-text
+ = raw t('homepage.participate.coaches_explanation_p1')
+ %p.card-text
+ = t('homepage.participate.coaches_explanation_p2')
+ .card-footer.border-0.bg-transparent
+ = link_to t('homepage.participate.coaches_button'), new_member_path, class: 'btn btn-primary'
- .large-4.columns
- .text-center
- %h4
- = t('homepage.participate.workshop_title')
- %p
- = t('homepage.participate.workshop_explanation_p1')
- %p
- = t('homepage.participate.workshop_explanation_p2')
- .text-center
- = mail_to "hello@codebar.io", t('homepage.participate.workshop_button'), subject: t('homepage.participate.workshop_email_subject'), class: 'button'
+ .col-md-4
+ .card.h-100.text-md-center.border-0
+ .card-body
+ %h3.h4.card-title
+ = t('homepage.participate.workshop_title')
+ %p.card-text
+ = t('homepage.participate.workshop_explanation_p1')
+ %p.card-text
+ = t('homepage.participate.workshop_explanation_p2')
+ .card-footer.border-0.bg-transparent
+ = mail_to 'hello@codebar.io', t('homepage.participate.workshop_button'), subject: t('homepage.participate.workshop_email_subject'), class: 'btn btn-primary'
-%section.stripe.reverse
+.container-fluid.stripe.reverse
= render partial: 'shared/donation_platforms'
-%section.stripe.reverse
+.container-fluid.stripe.reverse
.row
- .large-8.columns
+ .col-lg-8
- if @upcoming_workshops.empty?
%p
= t('events.no_upcoming_events')
%p
- =link_to t('events.view_past_events'), events_url(anchor: 'past'), class: 'button round expand'
+ =link_to t('events.view_past_events'), events_url(anchor: 'past'), class: 'btn btn-primary btn-block'
- if @upcoming_workshops.any?
- %h2.h3 Upcoming Events
+ %h2.h3.mb-4= t('homepage.events.upcoming')
- @upcoming_workshops.each do |date, workshops|
- .grouped-events
- %h3.date= date
- = render workshops
+ %h3.h5.mb-3= date
+ = render workshops
- .large-4.columns
+ .col-lg-4.pl-lg-5
%h3
= t('homepage.chapters.title')
- %ul.no-bullet
+ %ul.list-unstyled.ml-0
- @chapters.each do |chapter|
%li
= link_to chapter.name, chapter_path(chapter.slug)
- if @testimonials.any?
- %section.stripe.reverse
- .row
- .medium-offset-1.medium-10.columns
+ .container-fluid.stripe.reverse
+ .row.justify-content-md-center
+ .col-md-8
= render partial: 'members/testimonials'
-%section.stripe.reverse
+%section.container-fluid.stripe.reverse
= render partial: 'shared/newsletter'
diff --git a/app/views/dashboard/wall_of_fame.html.haml b/app/views/dashboard/wall_of_fame.html.haml
index 044a5b8c4..26afbdbed 100644
--- a/app/views/dashboard/wall_of_fame.html.haml
+++ b/app/views/dashboard/wall_of_fame.html.haml
@@ -1,21 +1,20 @@
-.stripe.reverse#banner
+.stripe.reverse
.row
- .large-12.columns
+ .col
%h2 Coaches
%p.lead
Here you can find a list of the #{ @coaches_count } volunteers who have coached at codebar.
-
%p.lead
If you’d like to start coaching at a workshop near you, read our #{ link_to "teaching guide", teaching_guide_path } and then #{ link_to "sign up", new_member_path } as a coach. It’s easier than you think!
.row
- .large-12.columns
- .right
+ .col
+ .float-right
%ul.inline-list
- Time.zone.now.year.downto(2013).each do |year|
%li
- if page_year?(year)
- %strong.label.primary= year
+ .btn.btn-sm.btn-outline-success= year
- else
- = link_to year, coaches_path(year: year), class: 'label success'
+ = link_to year, coaches_path(year: year), class: 'btn btn-sm btn-success'
= render partial: '/coach/coach', locals: { coaches: @coaches }
diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml
index 94c9a3596..1ea128492 100644
--- a/app/views/events/_event.html.haml
+++ b/app/views/events/_event.html.haml
@@ -1,41 +1,43 @@
-.event
- .event__col-1
- %header.event__header
- %h3.title
- = link_to event.to_s, event.path
- - if event.venue.present?
- at
- = link_to event.venue.name, event.venue.website
- .event__details
- .date
+.card.event.mb-4
+ .card-body
+ .d-md-flex.justify-content-md-between
+ .order-md-2
+ - if event.chapter
+ %span.badge.bg-primary
+ = event.chapter.name
+ - if @user
+ - if @user.attending?(event.__getobj__)
+ %span.badge.bg-success.ml-2
+ = link_to "Attending", event.path, class: "text-light border-0"
+ - if @user.event_organiser?(event)
+ %span.badge.bg-secondary.ml-2
+ = link_to "Manage", event.admin_path, class: "text-light border-0"
+ .order-md-1
+ %h3.event__header
+ = link_to event.to_s, event.path
+ - if event.venue.present?
+ at
+ = link_to event.venue.name, event.venue.website
+
+ .mt-3
+ %p.date.mb-0
%i.material-icons
calendar_today
= event.date
- .time
+ %p.time
%i.material-icons
access_time
= event.time
-
- - if event.organisers.any?
- .event__organisers
- .event__organisers-list
+ - if event.organisers.any? || event.sponsors.any?
+ .d-md-flex.justify-content-md-between.align-items-md-center
+ - if event.organisers.any?
+ %div
- event.organisers.each do |organiser|
- = link_to twitter_url_for(organiser.twitter), class: 'user-link' do
- = image_tag(organiser.avatar(26), class: 'th radius', title: organiser.full_name, alt: organiser.full_name)
- .event__col-2
- .event__labels
- - if event.chapter
- %span.label.status
- = event.chapter.name
- - if @user
- - if @user.attending?(event.__getobj__)
- = link_to event.path do
- %span.label.success Attending
- - if @user.event_organiser?(event)
- = link_to event.admin_path do
- %span.label Manage
- .event__sponsors
- - if event.sponsors.any?
- - event.sponsors.each do |sponsor|
- = link_to sponsor.website do
- = image_tag(sponsor.avatar.thumb, class: 'sponsor', alt: sponsor.name)
+ = link_to twitter_url_for(organiser.twitter), class: "border-0 d-inline-block" do
+ = image_tag(organiser.avatar(26), class: "rounded-circle", title: organiser.full_name, alt: organiser.full_name)
+
+ - if event.sponsors.any?
+ %div
+ - event.sponsors.each do |sponsor|
+ = link_to sponsor.website, class: "border-0 d-inline-block" do
+ = image_tag(sponsor.avatar.thumb, class: "sponsor-sm", alt: sponsor.name)
\ No newline at end of file
diff --git a/app/views/events/_event_actions.html.haml b/app/views/events/_event_actions.html.haml
index 06c60d5b0..456dc676a 100644
--- a/app/views/events/_event_actions.html.haml
+++ b/app/views/events/_event_actions.html.haml
@@ -1,17 +1,17 @@
- if @event.announce_only
- =link_to @event.external_url, class: 'button round' do
+ =link_to @event.external_url, class: 'btn btn-primary' do
Go to external booking site
- else
- if @event.invitable
- if logged_in?
- unless @event.coaches_only?
- =link_to event_student_rsvp_path(@event), class: 'button round' do
+ =link_to event_student_rsvp_path(@event), class: 'btn btn-primary' do
= t('events.attend_as_student')
- unless @event.students_only?
- =link_to event_coach_rsvp_path(@event), class: 'button round' do
+ =link_to event_coach_rsvp_path(@event), class: 'btn btn-primary' do
= t('events.attend_as_coach')
- else
- = link_to "Sign up", new_member_path, class: 'button'
- = link_to "Log in", login_path, class: 'button'
+ = link_to "Sign up", new_member_path, class: 'btn btn-primary'
+ = link_to "Log in", login_path, class: 'btn btn-primary'
- else
- %em= t('event.not_open_for_rsvp')
+ %p.badge.bg-primary= t('events.not_open_for_rsvp')
diff --git a/app/views/events/_events.html.haml b/app/views/events/_events.html.haml
index 5ed8c1a1e..3946d9954 100644
--- a/app/views/events/_events.html.haml
+++ b/app/views/events/_events.html.haml
@@ -1,7 +1,7 @@
-.events#chapter
- %ul.no-bullet
+.container-fluid
+ .event
- grouped_events.each do |date, workshops|
- .row.grouped-events
- .medium-12.columns
- %h3.date= date
+ .row
+ .col
+ %h3.h5= date
= render workshops
diff --git a/app/views/events/_sponsors.html.haml b/app/views/events/_sponsors.html.haml
deleted file mode 100644
index 219aedf82..000000000
--- a/app/views/events/_sponsors.html.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-- sponsors.each do |sponsor|
- .large-3.columns.sponsor-image
- = link_to image_tag(sponsor.avatar.url, class: "sponsor", alt: sponsor.name), sponsor.website
diff --git a/app/views/events/index.html.haml b/app/views/events/index.html.haml
index bcefc5bd2..5e28d63c3 100644
--- a/app/views/events/index.html.haml
+++ b/app/views/events/index.html.haml
@@ -1,16 +1,15 @@
- title t('events.title')
-%section#banner
+
+.container-fluid
.row
- .large-12.columns
+ .col{"data-test": "upcoming-events"}
- if @events.any?
- .events-list.events-list--upcoming
- %h3 Upcoming Events
- = render partial: 'events', locals: { grouped_events: @events }
+ %h3.mb-4 Upcoming Events
+ = render partial: 'events', locals: { grouped_events: @events }
-.stripe
+.container-fluid.stripe
.row
- .large-12.columns
+ .col{"data-test": "past-events"}
- if @past_events.any?
- .events-list.events-list--past
- %h3 Past Events
- = render partial: 'events', locals: { grouped_events: @past_events }
+ %h3.mb-4 Past Events
+ = render partial: 'events', locals: { grouped_events: @past_events }
diff --git a/app/views/events/show.html.haml b/app/views/events/show.html.haml
index 594a191d6..989f41b4b 100644
--- a/app/views/events/show.html.haml
+++ b/app/views/events/show.html.haml
@@ -1,18 +1,18 @@
.stripe.reverse
.row
- .large-12.columns
+ .col
%h2
= @event.name
%br
%small #{humanize_date(@event.date_and_time, @event.ends_at, with_time: true)}
- %section#banner
- .row
- .medium-12.columns
- %p.lead
- = @event.description.html_safe
.row
- .large-10.columns
+ .col
+ %p.lead
+ = @event.description.html_safe
+
+ .row
+ .col
= render partial: 'event_actions'
.stripe.reverse
@@ -20,81 +20,63 @@
= render partial: 'shared/venue', locals: { venue: @event.venue, address: @host_address}
.row
- .small-12.column
+ .col
- if @event.announce_only
- %a{ name: "information" }
- %h3{ "data-magellan-destination" => "information"} Information
+ %h3 Information
- else
- %a{ name: "schedule" }
- %h3{ "data-magellan-destination" => "schedule"}
+ %h3
= t('events.schedule')
= dot_markdown(@event.schedule)
- if @event.show_faq?
.stripe.reverse
.row
- .large-12.columns
- %a{ name: "faq" }
- %h2{ "data-magellan-destination" => "faq"}
- .text-center FAQ
+ .col
+ %h2.text-center FAQ
- if @event.announce_only
%p.text-center If you have any questions, #{mail_to(@event.email, "get in contact")}
-
- else
= render partial: 'events/faq'
+-if @event.sponsors?
+ #sponsors.container-fluid.stripe.reverse
+ .row
+ .col
+ %h2.text-center
+ = t('events.sponsors')
+ %p.text-center
+ %i= t('events.thx_to_sponsors')
+ - if @event.sponsors?(:gold)
+ .row.mt-4
+ .col
+ %h3.text-center Gold
+ = render partial: 'shared/sponsors', object: @event.gold_sponsors
+ - if @event.sponsors?(:silver)
+ .row.mt-4
+ .col
+ %h3.text-center Silver
+ = render partial: 'shared/sponsors', object: @event.silver_sponsors
+ - if @event.sponsors?(:bronze)
+ .row.mt-4
+ .col
+ %h3.text-center Bronze
+ = render partial: 'shared/sponsors', object: @event.bronze_sponsors
+ - if @event.sponsors?(:standard)
+ = render partial: 'shared/sponsors', object: @event.sponsors
-.stripe.reverse
- .row
- .large-12.columns
- %a{ name: "sponsors" }
- %h2{ "data-magellan-destination" => "sponsors"}
- .text-center= t('events.sponsors')
- %p.text-center
- %i= t('events.thx_to_sponsors')
- %br
- - if @event.sponsors?
- - if @event.sponsors?(:gold)
- %h3.text-center Gold
- = render partial: "sponsors", object: @event.gold_sponsors
- - if @event.sponsors?(:silver)
- %h3.text-center Silver
- = render partial: "sponsors", object: @event.silver_sponsors
- - if @event.sponsors?(:bronze)
- %h3.text-center Bronze
- = render partial: "sponsors", object: @event.bronze_sponsors
- - if @event.sponsors?(:standard)
- = render partial: "sponsors", object: @event.sponsors
- if @event.verified_coaches.any?
- .stripe.reverse
+ .container-fluid.stripe.reverse
.row
- .large-12.columns
- %a{ name: "coaches" }
- %h2{ "data-magellan-destination" => "coaches"}
- .text-center= t('events.coaches')
- %ul.small-block-grid-2.medium-block-grid-4
- - @event.verified_coaches.each do |coach|
- %li.text-center
- =link_to twitter_url_for(coach.twitter), class: 'user-link' do
- =image_tag(coach.avatar(56), class: 'th radius', title: coach.full_name, alt: coach.full_name)
- %br
- %br
- = coach.full_name
- %br
-.stripe.reverse
- .row
- .large-12.columns
- %a{ name: "organisers" }
- %h2{ "data-magellan-destination" => "organisers"}
- .text-center= t('events.organisers')
- %br
- - if @event.organisers.any?
- %ul.small-block-grid-2.medium-block-grid-4
- - @event.organisers.each do |organiser|
- %li.text-center
- =link_to twitter_url_for(organiser.twitter), class: 'user-link' do
- =image_tag(organiser.avatar(56), class: 'th radius', title: organiser.full_name, alt: organiser.full_name)
- %br
- %br
- = organiser.full_name
- %br
+ .col
+ %h2.text-center
+ = t('events.coaches')
+ .row.mt-4.text-center
+ .col-sm-4.col-md-3.mb-4
+ - @event.verified_coaches.each do |coach|
+ = link_to twitter_url_for(coach.twitter), class: 'user-link' do
+ = image_tag(coach.avatar(56), class: 'rounded-circle', title: coach.full_name, alt: coach.full_name)
+ %p.mt-3.mb-1= coach.full_name
+
+- if @event.organisers.any?
+ .container-fluid.stripe.reverse
+ = render partial: 'members/organisers_grid', locals: { members: @event.organisers, show_info: false }
diff --git a/app/views/layouts/_admin_menu.html.haml b/app/views/layouts/_admin_menu.html.haml
index 0d556f62c..6f6043d3e 100644
--- a/app/views/layouts/_admin_menu.html.haml
+++ b/app/views/layouts/_admin_menu.html.haml
@@ -1,18 +1,45 @@
%li
- %label Admin Menu
-%li= link_to 'Admin Dashboard', admin_root_path
-%li= link_to 'View Feedback', admin_feedback_index_path
-%li= link_to 'New Announcement', new_admin_announcement_path
-%li= link_to 'New workshop', new_admin_workshop_path
-%li= link_to 'New sponsor', new_admin_sponsor_path
-%li= link_to 'New event', new_admin_event_path
-%li= link_to 'New monthly', new_admin_meeting_path
-%li= link_to 'New chapter', new_admin_chapter_path
-%li= link_to 'New group', new_admin_group_path
-%li= link_to "Review jobs (#{jobs_pending_approval})", admin_jobs_path
-
+ %hr.dropdown-divider
+%li
+ %label.pl-3 Admin Menu
+%li
+ %hr.dropdown-divider
+%li
+ = link_to admin_root_path, class: "dropdown-item" do
+ Admin Dashboard
+%li
+ = link_to new_admin_announcement_path, class: "dropdown-item" do
+ New Announcement
+%li
+ = link_to new_admin_workshop_path class: "dropdown-item" do
+ New workshop
+%li
+ = link_to new_admin_sponsor_path class: "dropdown-item" do
+ New sponsor
+%li
+ = link_to new_admin_event_path, class: "dropdown-item" do
+ New event
+%li
+ = link_to new_admin_meeting_path, class: "dropdown-item" do
+ New monthly
+%li
+ = link_to new_admin_chapter_path, class: "dropdown-item" do
+ New chapter
+%li
+ = link_to new_admin_group_path, class: "dropdown-item" do
+ New group
+%li
+ = link_to admin_jobs_path, class: "dropdown-item" do
+ Review jobs (#{jobs_pending_approval})
- if current_user.has_role?(:organiser, :any)
%li
- %label My Chapters
+ %hr.dropdown-divider
+ %li
+ %label.pl-3 My Chapters
+ %li
+ %hr.dropdown-divider
+ %li
+ = link_to new_admin_chapter_path, class: "dropdown-item" do
+ New chapter
- current_user.organised_chapters.each do |chapter|
%li= link_to chapter.name, admin_chapter_path(chapter)
diff --git a/app/views/layouts/_aside.html.haml b/app/views/layouts/_aside.html.haml
index 9a0d4179f..96086f447 100644
--- a/app/views/layouts/_aside.html.haml
+++ b/app/views/layouts/_aside.html.haml
@@ -1,23 +1,38 @@
-%aside.left-off-canvas-menu
- %ul.off-canvas-list
- - if current_user.is_admin?
- = render 'layouts/admin_menu'
- - elsif current_user.organiser? || current_user.monthlies_organiser?
- = render 'layouts/organiser_menu'
- %li
- %label Portal
- %li= link_to 'My Jobs', member_jobs_path
- %li= link_to 'List a job', new_member_job_path
- %li
- %label Account
- %li= link_to 'My Profile', profile_path
- %li= link_to 'My Dashboard', dashboard_path
- %li= link_to 'Invitations', invitations_path
- %li= link_to 'Manage subscriptions', subscriptions_path
- %li= link_to 'Update your details', edit_member_path
- %li
- = link_to logout_path do
- Sign out
- %i.fa-stack.fa-lg
- %i.fa.fa-stack-2x
- %i.fa.fa-sign-out.fa-stack-1x
+%ul.dropdown-menu
+ - if current_user.is_admin?
+ = render 'layouts/admin_menu'
+ - elsif current_user.organiser? || current_user.monthlies_organiser?
+ = render 'layouts/organiser_menu'
+ %li
+ %hr.dropdown-divider
+ %li
+ %label.pl-3 Portal
+ %li
+ %hr.dropdown-divider
+ %li
+ = link_to member_jobs_path, class: "dropdown-item" do
+ My Jobs
+ %li
+ = link_to new_member_job_path, class: "dropdown-item" do
+ List a job
+ %li
+ %hr.dropdown-divider
+ %li
+ %label.pl-3 Account
+ %li
+ %hr.dropdown-divider
+ %li
+ = link_to dashboard_path, class: "dropdown-item" do
+ My Dashboard
+ %li
+ = link_to invitations_path, class: "dropdown-item" do
+ Invitations
+ %li
+ = link_to subscriptions_path, class: "dropdown-item" do
+ Manage subscriptions
+ %li
+ = link_to edit_member_path, class: "dropdown-item" do
+ Update your details
+ %li
+ = link_to logout_path, class: "dropdown-item" do
+ Sign out
diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml
index f734f3fa8..0bec6f6f5 100644
--- a/app/views/layouts/_footer.html.haml
+++ b/app/views/layouts/_footer.html.haml
@@ -1,17 +1,16 @@
%footer.main-footer
- .row
- .large-3.columns
- %p.copyright
+ .row.pt-5
+ .col-sm-12.col-md-6.col-lg-3
+ %p
© #{Date.today.year} codebar
-
%p.contact
=t("footer.email_us")
-# encoded email address
hello@codebar.io
- .large-3.columns
- %ul.no-bullet
+ .col-sm-12.col-md-6.col-lg-3
+ %ul.list-unstyled.ml-0
%li= link_to t("navigation.code_of_conduct"), code_of_conduct_path
%li= link_to t("navigation.coach_guide"), teaching_guide_path
%li= link_to t("navigation.student_guide"), student_guide_path
@@ -19,8 +18,8 @@
%li= link_to t("navigation.becoming_sponsor"), "http://manual.codebar.io/becoming-a-sponsor"
%li= link_to t("navigation.faq"), faq_path
- .large-3.columns
- %ul.no-bullet
+ .col-sm-12.col-md-6.col-lg-3
+ %ul.list-unstyled.ml-0
%li= link_to t("navigation.blog"), "https://medium.com/the-codelog"
%li= link_to t("navigation.codebar_stories"), "https://medium.com/codebar-stories"
%li= link_to t("navigation.coaches"), coaches_path
@@ -29,14 +28,13 @@
%li= link_to t("navigation.jobs"), jobs_path
%li.active= link_to t("navigation.donate"), new_donation_path
- .large-3.columns
+ .col-sm-12.col-md-6.col-lg-3
= render partial: 'shared/social_media'
- .row
- .large-12.columns
-
- %ul.inline-list.registration
- %li
+ .row.pb-4
+ .col
+ %ul.list-inline.registration.m-0.p-0
+ %li.list-inline-item
Registered UK and Wales charity no. 1187776
- %li= link_to t("navigation.cookie-policy"), cookie_policy_path
- %li= link_to t("navigation.privacy-policy"), privacy_policy_path
+ %li.list-inline-item= link_to t("navigation.cookie-policy"), cookie_policy_path
+ %li.list-inline-item= link_to t("navigation.privacy-policy"), privacy_policy_path
diff --git a/app/views/layouts/_navigation.html.haml b/app/views/layouts/_navigation.html.haml
index b0e357b89..72a25b462 100644
--- a/app/views/layouts/_navigation.html.haml
+++ b/app/views/layouts/_navigation.html.haml
@@ -1,47 +1,35 @@
-.contain-to-grid.sticky
- %nav.top-bar{ 'data-topbar': '' }
- %ul.title-area
- %li.name
- =link_to root_path do
- .brand
- = image_tag("logo.png", alt: "codebar logo", size: "148x40")
- %li.toggle-topbar
- = link_to '#' do
- .button
- %span.fa.fa-bars{"aria-hidden" => "true"}
- %span Menu
-
- %section.top-bar-section
- %ul.right
- %li
- = link_to 'https://medium.com/@codebar' do
- %span Blog
- %li{class: active_link_class(events_path)}
- = link_to events_path do
- %span Events
- %li
- = link_to 'http://tutorials.codebar.io' do
- %span Tutorials
- %li{class: active_link_class(coaches_path)}
- = link_to coaches_path do
- %span Coaches
- %li{class: active_link_class(sponsors_path)}
- = link_to sponsors_path do
- %span Sponsors
- %li{class: active_link_class(jobs_path)}
- = link_to jobs_path do
- %span Jobs
- %li{class: active_link_class(new_donation_path)}
- = link_to new_donation_path do
- %span.highlight
- Donate
+%nav.navbar.navbar-expand-lg.navbar-light.bg-white.fixed-top.pt-3.pb-3
+ %div.container
+ =link_to root_path, class: "navbar-brand border-0" do
+ = image_tag("logo.png", alt: "codebar logo", size: "148x40")
+ %button.navbar-toggler.m-0{"type": "button", "data-toggle": "collapse", "data-target": "#navbarSupportedContent", "aria-controls": "navbarSupportedContent", "aria-expanded": "false", "aria-label": "Toggle navigation"}
+ %span.navbar-toggler-icon
+ %div.collapse.navbar-collapse.justify-content-end#navbarSupportedContent
+ %ul.navbar-nav
+ %li.nav-item
+ = link_to "https://medium.com/@codebar", class: "nav-link border-0" do
+ Blogs
+ %li.nav-item
+ = link_to events_path, class: "nav-link border-0" do
+ Events
+ %li.nav-item
+ = link_to "http://tutorials.codebar.io", class: "nav-link border-0" do
+ Tutorials
+ %li.nav-item
+ = link_to coaches_path, class: "nav-link border-0" do
+ Coaches
+ %li.nav-item
+ = link_to jobs_path, class: "nav-link border-0" do
+ Jobs
+ %li.nav-item
+ = link_to new_donation_path, class: "nav-link border-0" do
+ Donate
- if !logged_in?
%li
- = link_to '/auth/github', method: :post do
- %span
- Sign in
+ = link_to "/auth/github", class: "nav-link border-0" do
+ Sign in
- else
- %li
- = link_to '#', class: 'left-off-canvas-toggle', id: 'profile' do
- .fa.fa-navicon
+ %li.nav-item.dropdown
+ = link_to "#", {"role": "button", "aria-expanded": "false", "data-toggle": "dropdown", class: "nav-link border-0 dropdown-toggle", id: "navbarDropdown"} do
Menu
+ = render 'layouts/aside'
diff --git a/app/views/layouts/_organiser_menu.html.haml b/app/views/layouts/_organiser_menu.html.haml
index ba1d77a0d..976b287a6 100644
--- a/app/views/layouts/_organiser_menu.html.haml
+++ b/app/views/layouts/_organiser_menu.html.haml
@@ -1,15 +1,31 @@
%li
- %label Admin Menu
- - if current_user.admin_or_organiser?
- %li= link_to "New workshop", new_admin_workshop_path
- %li= link_to "New sponsor", new_admin_sponsor_path
+ %hr.dropdown-divider
+%li
+ %label.pl-3 Admin Menu
+%li
+ %hr.dropdown-dividers
+- if current_user.admin_or_organiser?
+ %li
+ = link_to new_admin_workshop_path, class: "dropdown-item" do
+ New workshop
+ %li
+ = link_to new_admin_sponsor_path, class: "dropdown-item" do
+ New sponsor
- if current_user.monthlies_organiser?
- %li= link_to "New monthly", new_admin_meeting_path
+ %li
+ = link_to new_admin_meeting_path, class: "dropdown-item" do
+ New monthly
-if current_user.organised_chapters.any?
%li
- %label My Chapters
+ %hr.dropdown-divider
+ %li
+ %label.pl-3 My Chapters
+ %li
+ %hr.dropdown-divider
- current_user.organised_chapters.each do |chapter|
- %li= link_to chapter.name, admin_chapter_path(chapter)
- %li= link_to "#{chapter.name} feedback", admin_chapter_feedback_index_path(chapter)
+ %li
+ = link_to chapter.name, admin_chapter_path(chapter)
+ %li
+ = link_to "#{chapter.name} feedback", admin_chapter_feedback_index_path(chapter)
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 5ae6b5d62..8f4ff8dd3 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -20,15 +20,11 @@
= csrf_meta_tags
- %body.no-js{ 'class': "#{params[:controller]}-#{params[:action]}"}
- .off-canvas-wrap{ 'data-offcanvas': true }
- .inner-wrap
- #top
- = render partial: 'layouts/navigation'
- = render partial: 'layouts/messages'
- = render partial: 'layouts/aside' if logged_in?
- = yield
- = render partial: 'layouts/footer'
- %a.exit-off-canvas
+ %body.no-js{ 'class': "#{params[:controller]}-#{params[:action]}", "data-no-jquery": "true"}
+ #top
+ = render partial: 'layouts/navigation'
+ = render partial: 'layouts/messages'
+ = yield
+ = render partial: 'layouts/footer'
= content_for :page_footer
diff --git a/app/views/meetings/_meeting.html.haml b/app/views/meetings/_meeting.html.haml
index 442c43fb9..23c13a96c 100644
--- a/app/views/meetings/_meeting.html.haml
+++ b/app/views/meetings/_meeting.html.haml
@@ -1,39 +1,43 @@
-.event
- .event__col-1
- %header.event__header
- %h3.title
- = link_to meeting.name, meeting_path(meeting.slug)
- - if meeting.venue.present?
- at
- = link_to meeting.venue.name, meeting.venue.website
- .event__details
- .date
- %i.material-icons
- calendar_today
- = meeting.date
- .time
- %i.material-icons
- access_time
- = meeting.time
- - if meeting.organisers.any?
- .event__organisers
- .event__organisers-list
+.container
+ .row.event.border.p-4.mb-4
+ .col-9
+ %div
+ %h3.event__header
+ = link_to meeting.name, meeting_path(meeting.slug)
+ - if meeting.venue.present?
+ at
+ = link_to meeting.venue.name, meeting.venue.website
+ %div.mt-3
+ %p.date.mb-0
+ %i.material-icons
+ calendar_today
+ = meeting.date
+ %p.time
+ %i.material-icons
+ access_time
+ = meeting.time
+
+ - if meeting.organisers.any?
+ %div.mt-3
- meeting.organisers.each do |organiser|
- = link_to twitter_url_for(organiser.twitter), class: 'user-link' do
- = image_tag(organiser.avatar(26), class: 'th radius', title: organiser.full_name, alt: organiser.full_name)
- .event__col-2
- .event__labels
- - if meeting.chapter
- %span.label.status
- = meeting.chapter.name
- - if @user
- - if @user.attending?(meeting)
- = link_to meeting.path do
- %span.label.success Attending
- - if @user.event_organiser?(meeting)
- = link_to meeting.admin_path do
- %span.label Manage
- .event__sponsors
- - if meeting.venue.present?
- = link_to meeting.venue.website do
- = image_tag(meeting.venue.avatar, class: 'sponsor', alt: meeting.venue.name)
+ = link_to twitter_url_for(organiser.twitter), class: 'border-0' do
+ = image_tag(organiser.avatar(26), class: 'rounded-circle', title: organiser.full_name, alt: organiser.full_name)
+
+ .col-3.d-flex.flex-column.align-items-end.justify-content-between
+ .mb-3.d-flex
+ - if meeting.chapter
+ %span.badge.bg-primary.text-light
+ = meeting.chapter.name
+ - if @user
+ - if @user.attending?(meeting)
+ %span.badge.bg-success.ml-2
+ = link_to meeting.path, class: "text-light border-0" do
+ Attending
+ - if @user.event_organiser?(meeting)
+ %span.badge.bg-secondary.ml-2
+ = link_to meeting.admin_path, class: "text-light border-0" do
+ %span.label Manage
+ .d-flex
+ - if meeting.venue.present?
+ = link_to meeting.venue.website, class: "border-0" do
+ = image_tag(meeting.venue.avatar, class: 'sponsor-sm', alt: meeting.venue.name)
diff --git a/app/views/meetings/_meeting_actions.html.haml b/app/views/meetings/_meeting_actions.html.haml
index 688fda3af..768eda854 100644
--- a/app/views/meetings/_meeting_actions.html.haml
+++ b/app/views/meetings/_meeting_actions.html.haml
@@ -2,7 +2,7 @@
%h4 Venue
%p
%strong= @meeting.venue.name
- .monthly-host-logo
+ = link_to @meeting.venue.website, class: 'd-block border-0 mb-4' do
= image_tag(@meeting.venue.avatar.thumb, alt: @meeting.venue.name)
%strong Address
%p= @host_address
@@ -14,29 +14,32 @@
%p= @meeting.venue.accessibility_info
%h4 RSVP
-
- if logged_in?
- if @meeting.past?
- %p This event has already occurred.
+ %p.badge.bg-primary This event has already occurred.
- elsif current_user.banned?
- %p Your invitations have been temporarily suspended.
+ %p.badge.bg-danger Your invitations have been temporarily suspended.
- elsif @meeting.attending?(current_user)
- %h5 You are attending this event.
- %strong
- = link_to "Can't make it anymore? Click here to cancel your spot.", meeting_cancel_path(meeting_id: @meeting.id, token: @invitation.token)
+ %p.badge.bg-success You are attending this event.
+ %p
+ %strong
+ = link_to "Can't make it anymore? Click here to cancel your spot.", meeting_cancel_path(meeting_id: @meeting.id, token: @invitation.token)
- elsif @meeting.invitable && @meeting.not_full
- = link_to "Attend", meeting_invitation_path(@meeting, token: @invitation&.token), class: "button round"
+ = link_to meeting_invitation_path(@meeting), class: 'btn btn-primary' do
+ = 'RSVP here'
- elsif !@meeting.not_full
- %h5 This event is now full.
- %strong To join the waitlist, please fill in your details here.
+ %p.badge.bg-warning.text-dark This event is now full.
+ %p
+ %strong To join the waitlist, please fill in your details here.
- else
- %h5 This event is not open for RSVP.
+ %p
+ %strong This event is not open for RSVP.
- else
- = link_to "Sign up", new_member_path, class: 'button'
- = link_to "Log in", login_path, class: 'button'
+ = link_to 'Sign up', new_member_path, class: 'btn btn-primary'
+ = link_to 'Log in', login_path, class: 'btn btn-primary'
diff --git a/app/views/meetings/show.html.haml b/app/views/meetings/show.html.haml
index 676b6c17c..884797d56 100644
--- a/app/views/meetings/show.html.haml
+++ b/app/views/meetings/show.html.haml
@@ -1,39 +1,37 @@
- title t('meeting.title', name: @meeting.name, date: humanize_date(@meeting.date_and_time))
-%section.stripe.reverse
+.stripe.reverse
.row
- .medium-6.columns
+ .col
%h2
- =@meeting.name
+ = @meeting.name
%h3
- %small=humanize_date(@meeting.date_and_time, @meeting.ends_at, with_time: true)
+ %small= humanize_date(@meeting.date_and_time, @meeting.ends_at, with_time: true)
.row
- .medium-4.columns
+ .col-md-4.col-sm-12
= render partial: 'meeting_actions'
- .medium-8.columns
+ .col-md-8.col-sm-12
%h4 Agenda
%p= @meeting.description.html_safe
.stripe.reverse
.row
- .large-12.columns
+ .col
%iframe{ width: '100%', height: '250', frameborder: '0', scrolling: 'no', marginheight: '0', marginwidth: '0', src: %{https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=#{@host_address.for_map}&ie=UTF8&t=m&z=15&output=embed} }
- =link_to "View larger map", %{https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=#{@host_address.for_map}&ie=UTF8&hq=&t=m&z=15}, style: "color:#0000FF;text-align:left"
+ = link_to 'View larger map', %{https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=#{@host_address.for_map}&ie=UTF8&hq=&t=m&z=15}, style: "color:#0000FF;text-align:left"
-.stripe.reverse
- .row
- .large-12.columns
- %h4.text-center Who else will be there?
- %br
- %ul.small-block-grid-2.medium-block-grid-4
- - @attendees.each do |a|
- %li.text-center
- =image_tag(a.member.avatar(96), class: 'th radius', title: a.member.full_name, alt: a.member.full_name)
- %br
- %br
- =a.member.full_name
+- if @attendees.any?
+ .container-fluid.stripe.reverse.text-center
+ .row
+ .col
+ %h3 Who else will be there?
+ .row
+ - @attendees.each do |attendee|
+ .col-sm-4.col-md-3.mt-4
+ = image_tag(attendee.member.avatar(56), class: 'rounded-circle', title: attendee.member.full_name, alt: attendee.member.full_name)
+ %p.mt-3= attendee.member.full_name
.stripe.reverse
= render partial: 'members/organisers_grid', locals: { members: @meeting.organisers, show_info: false }
diff --git a/app/views/member/details/edit.html.haml b/app/views/member/details/edit.html.haml
index d5da9300f..48fca7eb9 100644
--- a/app/views/member/details/edit.html.haml
+++ b/app/views/member/details/edit.html.haml
@@ -1,36 +1,25 @@
-%section#banner
- .row
- .medium-12.columns
+.container-fluid
+ .row.justify-content-md-center.pt-3
+ .col-12.col-md-7
%h1= t('member.details.edit.title')
%p= t('member.details.edit.summary')
= simple_form_for @member, url: member_details_path, method: :put do |f|
- .row
- .large-6.large-offset-3.columns
+ .row.justify-content-md-center
+ .col-12.col-md-7
= f.input :name, required: true
- .row
- .large-6.large-offset-3.columns
= f.input :surname, required: true
- .row
- .large-6.large-offset-3.columns
= f.input :pronouns
-
- .row
- .large-6.large-offset-3.columns
= f.input :email, required: true
- .row
- .large-6.large-offset-3.columns
- if @member.coach?
= f.input :about_you, as: :text, label: t('member.details.edit.coach.about_you'), required: true
- else
= f.input :about_you, as: :text, label: t('member.details.edit.student.about_you'), required: true
- .row
- .large-6.large-offset-3.columns
= f.input :newsletter, as: :boolean, boolean_style: :inline, checked_value: true, unchecked_value: false
- .row
- .large-6.large-offset-3.columns.text-right
+ .row.justify-content-md-center.mt-4.mb-4
+ .col-12.col-md-7.text-right
= hidden_field_tag :next_page, step2_member_path(member_type: @type)
- = f.submit t('member.details.edit.submit'), class: 'button round right'
+ = f.submit t('member.details.edit.submit'), class: 'btn-lg btn-primary border-0'
diff --git a/app/views/members/_avatar_listing.html.haml b/app/views/members/_avatar_listing.html.haml
index 68926e757..1d1d5f4c2 100644
--- a/app/views/members/_avatar_listing.html.haml
+++ b/app/views/members/_avatar_listing.html.haml
@@ -1,10 +1,7 @@
-%ul.small-block-grid-2.medium-block-grid-4
- - member.each do |member|
- %li.text-center
- =link_to twitter_url_for(member.twitter), class: 'user-link' do
- =image_tag(member.avatar(56), class: 'th radius', title: member.full_name, alt: member.full_name)
- %br
- %br
- = member.full_name
- - if show_info
- = member.mobile
+- member.each do |member|
+ .col-sm-4.col-md-3.mt-4
+ = link_to twitter_url_for(member.twitter), class: 'border-0' do
+ = image_tag(member.avatar(56), class: 'rounded-circle', title: member.full_name, alt: member.full_name)
+ %p.mt-3= member.full_name
+ - if show_info
+ %p.mt-1= member.mobile
diff --git a/app/views/members/_organisers_grid.html.haml b/app/views/members/_organisers_grid.html.haml
index 6d9efb6bf..8fd713f2f 100644
--- a/app/views/members/_organisers_grid.html.haml
+++ b/app/views/members/_organisers_grid.html.haml
@@ -1,7 +1,9 @@
-.row#organisers
- .large-12.columns
- .text-center
- %h3= t('events.organisers')
- %br
- %br
+- title = local_assigns[:title] ? local_assigns[:title] : t('events.organisers')
+
+#organisers.text-center
+ .row
+ .col
+ %h3= title
+
+ .row
= render partial: 'members/avatar_listing', locals: { member: members, show_info: show_info }
diff --git a/app/views/members/_show.html.haml b/app/views/members/_show.html.haml
deleted file mode 100644
index 5b57e9907..000000000
--- a/app/views/members/_show.html.haml
+++ /dev/null
@@ -1,48 +0,0 @@
-%section
- .stripe.reverse
- .row
- .medium-1.columns
- =image_tag(member.avatar(100), class: 'th radius', title: member.full_name, alt: member.full_name)
- .medium-11.columns
- %h2
- = member.full_name
- %br
- .row
- .medium-8.columns
- %dl
- - if member.pronouns.present?
- %dt Pronouns
- %dd= member.pronouns || "Not specified"
-
- %dt Email
- %dd= mail_to member.email, member.email
-
- %dt Twitter handle
- %dd= link_to "@#{member.twitter}", twitter_url_for(member.twitter)
-
- %dt Phone number
- %dd= member.mobile || "N/A"
-
- %dt About
- %dd= member.about_you
-
- = render "shared/skills", member: member
- = link_to "Update your details", edit_member_path, class: 'button tiny round'
-
- .medium-4.columns
- - if member.groups.any?
- %h3 Subscriptions
- %ul.no-bullet
- - member.groups.each do |group|
- %li
- = link_to chapter_path(group.chapter.slug) do
- #{group.name} (#{group.chapter.name})
- - else
- %label.label.secondary You are not subscribed to any chapters
- %br
- %br
-
- = link_to "Manage subscriptions", subscriptions_path, class: 'button tiny round'
- %br
- Member since
- %em #{l(member.created_at, format: :website_format)}
diff --git a/app/views/members/new.html.haml b/app/views/members/new.html.haml
index 6adac6615..10dc3edda 100644
--- a/app/views/members/new.html.haml
+++ b/app/views/members/new.html.haml
@@ -1,10 +1,10 @@
-.stripe.reverse#banner
+.container.pt-5.pb-5
.row
- .large-12.columns
+ .cols
%h2=@page_title
-.stripe.reverse
+.container-fluid.stripe.reverse
.row
- .medium-12.columns
+ .col
%p.lead
= t('members.new.intro')
= link_to t('members.code_of_conduct'), code_of_conduct_path
@@ -15,10 +15,10 @@
= t('members.new.students.criteria_brief')
%p.lead
= t('members.new.students.github')
- = link_to registration_path(member_type: "student"), class: "button round" do
- = t('members.sign_up_as_student')
- %i.fa.fa-github.fa-fw
- %br
- = link_to registration_path(member_type: "coach"), class: "button round" do
- = t('members.sign_up_as_coach')
- %i.fa.fa-github.fa-fw
+ .d-flex.flex-column.align-items-start
+ = link_to registration_path(member_type: "student"), class: "btn-lg btn-primary mb-4" do
+ = t('members.sign_up_as_student')
+ %i.fa.fa-github.fa-fw
+ = link_to registration_path(member_type: "coach"), class: "btn-lg btn-primary" do
+ = t('members.sign_up_as_coach')
+ %i.fa.fa-github.fa-fw
diff --git a/app/views/members/show.html.haml b/app/views/members/show.html.haml
index 6e3957e04..9385be072 100644
--- a/app/views/members/show.html.haml
+++ b/app/views/members/show.html.haml
@@ -1,3 +1,52 @@
-= render partial: 'shared/title', locals: { title: "My Profile", date: nil }
-#member_profile
- = render partial: 'members/show', locals: { member: @member }
+.container-fluid.stripe.reverse
+ .row.align-items-center
+ .col-auto
+ = image_tag(@member.avatar(80), alt: @member.full_name, class: 'rounded-circle mb-2')
+ .col-auto
+ %h2.mb-0= @member.full_name
+ %small
+ Member since
+ %em #{l(@member.created_at, format: :website_format)}
+
+.container-fluid#member_profile
+ .row
+ .col-12.col-md-7.mb-4
+ %h4 Details
+ %dl
+ - if @member.pronouns.present?
+ %dt Pronouns
+ %dd= @member.pronouns || 'Not specified'
+
+ %dt Email
+ %dd= mail_to @member.email, @member.email
+
+ %dt Twitter handle
+ %dd= link_to "@#{@member.twitter}", twitter_url_for(@member.twitter)
+
+ %dt Phone number
+ %dd= @member.mobile || 'N/A'
+
+ %dt About
+ %dd= @member.about_you
+
+ - if @member.skills.any?
+ %dt Skills
+ %dd
+ - @member.skills.each do |skill|
+ .badge.bg-secondary= skill.name
+
+ = link_to 'Update your details', edit_member_path, class: 'btn btn-primary', role: 'button'
+
+ .col-12.col-md-4.offset-md-1.mb-4
+ - if @member.groups.any?
+ %h4 Subscriptions
+ %ul.list-unstyled.ml-0
+ - @member.groups.each do |group|
+ %li
+ = link_to chapter_path(group.chapter.slug) do
+ #{group.name} (#{group.chapter.name})
+ - else
+ %i.fa.fa-warning
+ %small You are not subscribed to any groups.
+
+ = link_to 'Manage subscriptions', subscriptions_path, class: 'btn btn-secondary btn-sm', role: 'button'
diff --git a/app/views/pages/cookie-policy.html.haml b/app/views/pages/cookie-policy.html.haml
index e6ef976c1..22aa8e244 100644
--- a/app/views/pages/cookie-policy.html.haml
+++ b/app/views/pages/cookie-policy.html.haml
@@ -1,50 +1,77 @@
-.row.mt2
- .large-12.columns
- :markdown
-
- ##{t('pages.cookies.title')}
-
- #{t('pages.cookies.p1')}
-
- #{t('pages.cookies.p2')}
-
- #{t('pages.cookies.sub.title')}
-
-
- ## #{t('pages.cookies.functional.title')}
-
- #{t('pages.cookies.functional.description')}
-
-
- | Cookie name | Purpose | Expires |
- | ---- | ------- | ----- |
- | `_planner_session` | #{t('pages.cookies.functional.planner')} | #{t('pages.cookies.functional.planner_expiry ')} |
-
-