From c62ce001841c5f6411e4c7685e1193fbdb8063a8 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sun, 27 Dec 2020 14:03:40 +0100 Subject: [PATCH 1/5] Add main navigation bar Make donations and invitations accessible to everyone --- app/assets/stylesheets/_variables.scss | 10 ++++++++ app/assets/stylesheets/fonts.scss | 3 +++ app/assets/stylesheets/layout.scss | 23 +++++++---------- app/assets/stylesheets/main_nav.scss | 31 +++++++++++++++++++++++ app/controllers/dashboard_controller.rb | 1 + app/controllers/donations_controller.rb | 1 + app/controllers/invitations_controller.rb | 1 + app/views/layouts/application.html.erb | 4 +++ app/views/shared/_main_nav.html.erb | 22 ++++++++++++++++ 9 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 app/assets/stylesheets/_variables.scss create mode 100644 app/assets/stylesheets/main_nav.scss create mode 100644 app/views/shared/_main_nav.html.erb diff --git a/app/assets/stylesheets/_variables.scss b/app/assets/stylesheets/_variables.scss new file mode 100644 index 0000000..d2a9d21 --- /dev/null +++ b/app/assets/stylesheets/_variables.scss @@ -0,0 +1,10 @@ +$content-width: 800px; +$content-max-width: 100%; + +$text-color-body: #222; +$text-color-discreet: #888; + +$background-color-notice: #efffc4; +$background-color-alert: #fff4c2; +$color-blue: #0d4f99; +$color-purple: #8955a0; diff --git a/app/assets/stylesheets/fonts.scss b/app/assets/stylesheets/fonts.scss index ce3de15..2d1842f 100644 --- a/app/assets/stylesheets/fonts.scss +++ b/app/assets/stylesheets/fonts.scss @@ -1,3 +1,5 @@ +@import "variables"; + @font-face { font-family: 'Raleway'; src: url('/fonts/raleway-light.woff') format('woff2'); @@ -8,6 +10,7 @@ body { font-family: "Open Sans", Helvetica, Arial, sans-serif; font-weight: 400; + color: $text-color-body; } h1, h2, h3 { diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index c615505..3182e82 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -1,11 +1,6 @@ +@import "variables"; @import "mediaqueries"; -$content-width: 800px; -$content-max-width: 100%; - -body { -} - #wrapper { width: 100%; text-align: center; @@ -14,8 +9,8 @@ body { margin: 0 auto; padding: 4rem 0; text-align: center; - background: #0d4f99; - background: linear-gradient(35deg, #8955a0 0, #0d4f99 100%); + background: $color-blue; + background: linear-gradient(35deg, $color-purple 0, $color-blue 100%); @include media-max(small) { padding: 3rem 0; @@ -77,18 +72,18 @@ body { padding: 2rem 0; &.notice { - background: #efffc4; + background: $background-color-notice; } &.alert { - background: #fff4c2; + background: $background-color-alert; } } main { width: $content-width; max-width: $content-max-width; - margin: 4rem auto; + margin: 4rem auto 6rem auto; text-align: left; @include media-max(medium) { @@ -135,8 +130,8 @@ main { section { border-bottom: 1px dotted #ccc; - padding-bottom: 4rem; - margin-bottom: 4rem; + padding-bottom: 3rem; + margin-bottom: 3rem; @include media-max(small) { padding-bottom: 3rem; @@ -169,7 +164,7 @@ main { .grid-item { p { - color: #888; + color: $text-color-discreet; font-size: 0.85rem; } } diff --git a/app/assets/stylesheets/main_nav.scss b/app/assets/stylesheets/main_nav.scss new file mode 100644 index 0000000..cd84cc5 --- /dev/null +++ b/app/assets/stylesheets/main_nav.scss @@ -0,0 +1,31 @@ +@import "variables"; + +#main-nav { + width: 100%; + text-align: center; + background-color: #efefef; + + .wrapper { + width: $content-width; + max-width: $content-max-width; + margin: 0 auto; + } + + ul { + li { + display: inline; + + a { + display: inline-block; + padding: 1.5rem; + text-decoration: none; + color: $text-color-discreet; + + &.active { + color: $text-color-body; + border-bottom: 2px solid #ffd000; + } + } + } + } +} diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index cbcbe43..ff44b1f 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -2,5 +2,6 @@ class DashboardController < ApplicationController before_action :require_user_signed_in def index + @current_section = "dashboard" end end diff --git a/app/controllers/donations_controller.rb b/app/controllers/donations_controller.rb index 74ee81c..b4ec3b9 100644 --- a/app/controllers/donations_controller.rb +++ b/app/controllers/donations_controller.rb @@ -5,5 +5,6 @@ class DonationsController < ApplicationController # GET /donations.json def index @donations = current_user.donations.completed + @current_section = "contributions" end end diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index c0affd8..88603c3 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -8,6 +8,7 @@ class InvitationsController < ApplicationController def index @invitations_unused = current_user.invitations.unused @invitations_used = current_user.invitations.used + @current_section = "invitations" end # GET /invitations/a-random-invitation-token diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index b9aa28c..4afa39a 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -27,6 +27,10 @@ <% end %> + <% if user_signed_in? && current_user.confirmed? %> + <%= render partial: 'shared/main_nav' %> + <% end %> + <% flash.each do |type, msg| %>

<%= msg %>

diff --git a/app/views/shared/_main_nav.html.erb b/app/views/shared/_main_nav.html.erb new file mode 100644 index 0000000..05a6b41 --- /dev/null +++ b/app/views/shared/_main_nav.html.erb @@ -0,0 +1,22 @@ + From 9372ea7343856dd279df589e620e4639f4ef91d9 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sun, 27 Dec 2020 14:14:53 +0100 Subject: [PATCH 2/5] Add small-screen layout for main navigation --- app/assets/stylesheets/main_nav.scss | 24 ++++++++++++++++++++++-- app/views/shared/_main_nav.html.erb | 4 ---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/main_nav.scss b/app/assets/stylesheets/main_nav.scss index cd84cc5..eaa1756 100644 --- a/app/assets/stylesheets/main_nav.scss +++ b/app/assets/stylesheets/main_nav.scss @@ -1,4 +1,5 @@ @import "variables"; +@import "mediaqueries"; #main-nav { width: 100%; @@ -12,15 +13,34 @@ } ul { + @include media-max(large) { + display: grid; + grid-template-columns: repeat(1fr); + grid-template-columns: 1fr 1fr 1fr; + } + li { - display: inline; + @include media-min(large) { + display: inline; + } + + @include media-max(large) { + display: block; + } a { display: inline-block; - padding: 1.5rem; + padding: 1.5rem 2rem; text-decoration: none; color: $text-color-discreet; + @include media-max(large) { + display: block; + text-align: center; + padding-left: 0; + padding-right: 0; + } + &.active { color: $text-color-body; border-bottom: 2px solid #ffd000; diff --git a/app/views/shared/_main_nav.html.erb b/app/views/shared/_main_nav.html.erb index 05a6b41..719a723 100644 --- a/app/views/shared/_main_nav.html.erb +++ b/app/views/shared/_main_nav.html.erb @@ -1,7 +1,5 @@ From 9ddd36c4144bd015df1e01451a2a5209b8f30fd7 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sun, 27 Dec 2020 14:21:16 +0100 Subject: [PATCH 3/5] Add missing section markup --- app/views/invitations/index.html.erb | 36 +++++++++++++++------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/app/views/invitations/index.html.erb b/app/views/invitations/index.html.erb index c38b98d..a35d313 100644 --- a/app/views/invitations/index.html.erb +++ b/app/views/invitations/index.html.erb @@ -24,23 +24,25 @@ <% if @invitations_used.any? %> -

Accepted Invitations

- - - - - - - - - - <% @invitations_used.each do |invitation| %> +
+

Accepted Invitations

+
URLAcceptedInvited user
+ - - - + + + - <% end %> - -
<%= invitation_url(invitation.token) %><%= invitation.used_at.strftime("%Y-%m-%d") %><%= User.find(invitation.invited_user_id).address %>URLAcceptedInvited user
+ + + <% @invitations_used.each do |invitation| %> + + <%= invitation_url(invitation.token) %> + <%= invitation.used_at.strftime("%Y-%m-%d") %> + <%= User.find(invitation.invited_user_id).address %> + + <% end %> + + + <% end %> From 2bdf08a52342583fe271d543be7b4df6f3a991b8 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Mon, 28 Dec 2020 09:32:04 +0100 Subject: [PATCH 4/5] Add admin layout with admin navigation And remove the hacky link list from the dashboard. --- app/assets/stylesheets/_variables.scss | 3 ++ app/assets/stylesheets/admin.scss | 22 +++++++++ app/assets/stylesheets/layout.scss | 4 ++ app/controllers/admin/base_controller.rb | 2 + app/controllers/admin/dashboard_controller.rb | 1 + app/controllers/admin/donations_controller.rb | 5 +++ .../admin/ldap_users_controller.rb | 6 +++ app/controllers/dashboard_controller.rb | 2 +- app/controllers/donations_controller.rb | 2 +- app/controllers/invitations_controller.rb | 2 +- app/views/admin/dashboard/index.html.erb | 9 +--- app/views/layouts/admin.html.erb | 45 +++++++++++++++++++ app/views/shared/_admin_nav.html.erb | 18 ++++++++ app/views/shared/_main_nav.html.erb | 6 +-- 14 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 app/assets/stylesheets/admin.scss create mode 100644 app/views/layouts/admin.html.erb create mode 100644 app/views/shared/_admin_nav.html.erb diff --git a/app/assets/stylesheets/_variables.scss b/app/assets/stylesheets/_variables.scss index d2a9d21..04f158f 100644 --- a/app/assets/stylesheets/_variables.scss +++ b/app/assets/stylesheets/_variables.scss @@ -6,5 +6,8 @@ $text-color-discreet: #888; $background-color-notice: #efffc4; $background-color-alert: #fff4c2; + $color-blue: #0d4f99; $color-purple: #8955a0; +$color-red-bright: #c00; +$color-red-dark: #990c0e; diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss new file mode 100644 index 0000000..6013c66 --- /dev/null +++ b/app/assets/stylesheets/admin.scss @@ -0,0 +1,22 @@ +@import "variables"; + +body#admin-panel { + #wrapper { + > header { + background: $color-red-bright; + background: linear-gradient(35deg, $color-purple 0, $color-red-dark 100%); + } + } + + #main-nav { + ul { + li { + a { + &.active { + border-bottom: 2px solid $color-red-bright; + } + } + } + } + } +} diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index 3182e82..41ff821 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -170,3 +170,7 @@ main { } } } + +.text-centered { + text-align: center; +} diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index 883c829..8688535 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -3,4 +3,6 @@ class Admin::BaseController < ApplicationController before_action :authenticate_user! before_action :authorize_admin + layout "admin" + end diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index 311d077..9cf8114 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -1,4 +1,5 @@ class Admin::DashboardController < Admin::BaseController def index + @current_section = :dashboard end end diff --git a/app/controllers/admin/donations_controller.rb b/app/controllers/admin/donations_controller.rb index 7b00bac..e6c37cc 100644 --- a/app/controllers/admin/donations_controller.rb +++ b/app/controllers/admin/donations_controller.rb @@ -1,5 +1,6 @@ class Admin::DonationsController < Admin::BaseController before_action :set_donation, only: [:show, :edit, :update, :destroy] + before_action :set_current_section, only: [:index, :show, :new, :edit] # GET /donations # GET /donations.json @@ -71,4 +72,8 @@ class Admin::DonationsController < Admin::BaseController def donation_params params.require(:donation).permit(:user_id, :amount_sats, :amount_eur, :amount_usd, :public_name, :paid_at) end + + def set_current_section + @current_section = :donations + end end diff --git a/app/controllers/admin/ldap_users_controller.rb b/app/controllers/admin/ldap_users_controller.rb index def46f4..1dfea57 100644 --- a/app/controllers/admin/ldap_users_controller.rb +++ b/app/controllers/admin/ldap_users_controller.rb @@ -1,4 +1,6 @@ class Admin::LdapUsersController < Admin::BaseController + before_action :set_current_section + def index attributes = %w{dn cn uid mail admin} filter = Net::LDAP::Filter.eq("uid", "*") @@ -38,4 +40,8 @@ class Admin::LdapUsersController < Admin::BaseController def ldap_config ldap_config ||= YAML.load(ERB.new(File.read("#{Rails.root}/config/ldap.yml")).result)[Rails.env] end + + def set_current_section + @current_section = :ldap_users + end end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index ff44b1f..49c0764 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -2,6 +2,6 @@ class DashboardController < ApplicationController before_action :require_user_signed_in def index - @current_section = "dashboard" + @current_section = :dashboard end end diff --git a/app/controllers/donations_controller.rb b/app/controllers/donations_controller.rb index b4ec3b9..7800e09 100644 --- a/app/controllers/donations_controller.rb +++ b/app/controllers/donations_controller.rb @@ -5,6 +5,6 @@ class DonationsController < ApplicationController # GET /donations.json def index @donations = current_user.donations.completed - @current_section = "contributions" + @current_section = :contributions end end diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index 88603c3..72743e5 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -8,7 +8,7 @@ class InvitationsController < ApplicationController def index @invitations_unused = current_user.invitations.unused @invitations_used = current_user.invitations.used - @current_section = "invitations" + @current_section = :invitations end # GET /invitations/a-random-invitation-token diff --git a/app/views/admin/dashboard/index.html.erb b/app/views/admin/dashboard/index.html.erb index 34a898c..2e04a10 100644 --- a/app/views/admin/dashboard/index.html.erb +++ b/app/views/admin/dashboard/index.html.erb @@ -1,8 +1,3 @@ -

Admin Panel

-

- Ohai there, admin human. +

+ With great power comes great responsibility.

-
    -
  • <%= link_to 'LDAP users', admin_ldap_users_path %>
  • -
  • <%= link_to 'Donations', admin_donations_path %>
  • -
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb new file mode 100644 index 0000000..ac24d75 --- /dev/null +++ b/app/views/layouts/admin.html.erb @@ -0,0 +1,45 @@ + + + + Admin Panel | Kosmos Accounts + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> + + + +
+
+

+ Kosmos + Akkounts + beta +

+ <% if user_signed_in? %> +

+ Signed in as <%= current_user.cn %>@kosmos.org. + <%= link_to "Log out", destroy_user_session_path, method: :delete %> +

+ <% end %> +
+ + <% if user_signed_in? && current_user.confirmed? %> + <%= render partial: 'shared/admin_nav' %> + <% end %> + + <% flash.each do |type, msg| %> +
+

<%= msg %>

+
+ <% end %> + +
+ <%= yield %> +
+
+ + diff --git a/app/views/shared/_admin_nav.html.erb b/app/views/shared/_admin_nav.html.erb new file mode 100644 index 0000000..c907b60 --- /dev/null +++ b/app/views/shared/_admin_nav.html.erb @@ -0,0 +1,18 @@ + diff --git a/app/views/shared/_main_nav.html.erb b/app/views/shared/_main_nav.html.erb index 719a723..3b1d5b9 100644 --- a/app/views/shared/_main_nav.html.erb +++ b/app/views/shared/_main_nav.html.erb @@ -3,15 +3,15 @@
  • <%= link_to "Services", root_path, - class: @current_section == "dashboard" ? "active" : nil %> + class: @current_section == :dashboard ? "active" : nil %>
  • <%= link_to "Donations", donations_path, - class: @current_section == "contributions" ? "active" : nil %> + class: @current_section == :contributions ? "active" : nil %>
  • <%= link_to "Invitations", invitations_path, - class: @current_section == "invitations" ? "active" : nil %> + class: @current_section == :invitations ? "active" : nil %>
From e12d02a98828f97d099059f3b28092d3860e7a4d Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Tue, 29 Dec 2020 11:02:24 +0100 Subject: [PATCH 5/5] Fix spec Content changed --- spec/features/admin/dashboard_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/dashboard_spec.rb b/spec/features/admin/dashboard_spec.rb index b6e04c5..3120d5b 100644 --- a/spec/features/admin/dashboard_spec.rb +++ b/spec/features/admin/dashboard_spec.rb @@ -10,6 +10,6 @@ RSpec.describe 'Admin dashboard', type: :feature do scenario 'View dashboard' do visit admin_root_path - expect(page).to have_content('Admin Panel') + expect(page).to have_content('great power') end end