Change donations to contrbutions, add tabbed nav
Introduces components for tabbed navigation and adds a tab menu and item for non-financial contributions to the donations/contributions page.
This commit is contained in:
		
							parent
							
								
									3f49e4a3b8
								
							
						
					
					
						commit
						3197743a55
					
				
							
								
								
									
										14
									
								
								app/components/main_with_tabnav_component.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								app/components/main_with_tabnav_component.html.erb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					<main class="w-full max-w-6xl mx-auto pb-12 px-4 md:px-6 lg:px-8">
 | 
				
			||||||
 | 
					  <div class="bg-white rounded-lg shadow">
 | 
				
			||||||
 | 
					    <div class="px-6 sm:px-12 pt-2 sm:pt-4">
 | 
				
			||||||
 | 
					      <div class="border-b border-gray-200">
 | 
				
			||||||
 | 
					        <nav class="-mb-px flex" aria-label="Tabs">
 | 
				
			||||||
 | 
					          <%= render partial: @tabnav_partial %>
 | 
				
			||||||
 | 
					        </nav>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="px-6 sm:px-12 py-8 sm:py-12">
 | 
				
			||||||
 | 
					      <%= content %>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</main>
 | 
				
			||||||
							
								
								
									
										7
									
								
								app/components/main_with_tabnav_component.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/components/main_with_tabnav_component.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MainWithTabnavComponent < ViewComponent::Base
 | 
				
			||||||
 | 
					  def initialize(tabnav_partial:)
 | 
				
			||||||
 | 
					    @tabnav_partial = tabnav_partial
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										3
									
								
								app/components/tabnav_link_component.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/components/tabnav_link_component.html.erb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					<%= link_to @path, class: @link_class do %>
 | 
				
			||||||
 | 
					  <%= @name %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
							
								
								
									
										21
									
								
								app/components/tabnav_link_component.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								app/components/tabnav_link_component.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TabnavLinkComponent < ViewComponent::Base
 | 
				
			||||||
 | 
					  def initialize(name:, path:, active: false, disabled: false)
 | 
				
			||||||
 | 
					    @name = name
 | 
				
			||||||
 | 
					    @path = path
 | 
				
			||||||
 | 
					    @active = active
 | 
				
			||||||
 | 
					    @disabled = disabled
 | 
				
			||||||
 | 
					    @link_class = class_names_link(path)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def class_names_link(path)
 | 
				
			||||||
 | 
					    if @active
 | 
				
			||||||
 | 
					      "border-indigo-500 text-indigo-600 w-1/2 py-4 px-1 text-center border-b-2"
 | 
				
			||||||
 | 
					    elsif @disabled
 | 
				
			||||||
 | 
					      "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 w-1/2 py-4 px-1 text-center border-b-2"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 w-1/2 py-4 px-1 text-center border-b-2"
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
class DonationsController < ApplicationController
 | 
					class Contributions::DonationsController < ApplicationController
 | 
				
			||||||
  before_action :require_user_signed_in
 | 
					  before_action :require_user_signed_in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # GET /donations
 | 
					  # GET /donations
 | 
				
			||||||
							
								
								
									
										8
									
								
								app/controllers/contributions/projects_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								app/controllers/contributions/projects_controller.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					class Contributions::ProjectsController < ApplicationController
 | 
				
			||||||
 | 
					  before_action :require_user_signed_in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # GET /contributions
 | 
				
			||||||
 | 
					  def index
 | 
				
			||||||
 | 
					    @current_section = :contributions
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
<%= render HeaderComponent.new(title: "Donations") %>
 | 
					<%= render HeaderComponent.new(title: "Contributions") %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<%= render MainSimpleComponent.new do %>
 | 
					<%= render MainWithTabnavComponent.new(tabnav_partial: "shared/tabnav_contributions") do %>
 | 
				
			||||||
  <section>
 | 
					  <section>
 | 
				
			||||||
    <p class="mb-12">
 | 
					    <p class="mb-12">
 | 
				
			||||||
      Your financial contributions to the development and upkeep of Kosmos
 | 
					      Your financial contributions to the development and upkeep of Kosmos
 | 
				
			||||||
@ -34,7 +34,9 @@
 | 
				
			|||||||
      </ul>
 | 
					      </ul>
 | 
				
			||||||
    <% else %>
 | 
					    <% else %>
 | 
				
			||||||
      <p class="text-gray-500">
 | 
					      <p class="text-gray-500">
 | 
				
			||||||
        No donations to show.
 | 
					        The donation process is not automated yet. Please
 | 
				
			||||||
 | 
					        <a href="https://wiki.kosmos.org/Main_Page#Community_.2F_Getting_in_touch_.2F_Getting_involved" class="ks-text-link" target="_blank">contact us</a>
 | 
				
			||||||
 | 
					        if you'd like to contribute this way right now.
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
    <% end %>
 | 
					    <% end %>
 | 
				
			||||||
  </section>
 | 
					  </section>
 | 
				
			||||||
							
								
								
									
										16
									
								
								app/views/contributions/projects/index.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/views/contributions/projects/index.html.erb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<%= render HeaderComponent.new(title: "Contributions") %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<%= render MainWithTabnavComponent.new(tabnav_partial: "shared/tabnav_contributions") do %>
 | 
				
			||||||
 | 
					  <section>
 | 
				
			||||||
 | 
					    <p class="mb-8">
 | 
				
			||||||
 | 
					      Project contributions are how we develop and run all Kosmos software and
 | 
				
			||||||
 | 
					      services. Everything we create and provide is free and open-source
 | 
				
			||||||
 | 
					      software, even the page you're looking at right now!
 | 
				
			||||||
 | 
					    </p>
 | 
				
			||||||
 | 
					    <p>
 | 
				
			||||||
 | 
					      Soon you will find a summary of your contributions here. Until then,
 | 
				
			||||||
 | 
					      please refer to the
 | 
				
			||||||
 | 
					      <a href="https://kredits.kosmos.org/" class="ks-text-link" target="_blank">Kredits dashboard</a>.
 | 
				
			||||||
 | 
					    </p>
 | 
				
			||||||
 | 
					  </section>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
json.array! @donations, partial: "donations/donation", as: :donation
 | 
					 | 
				
			||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
<%= link_to "Services", root_path,
 | 
					<%= link_to "Services", root_path,
 | 
				
			||||||
      class: main_nav_class(@current_section, :dashboard) %>
 | 
					      class: main_nav_class(@current_section, :dashboard) %>
 | 
				
			||||||
 | 
					<%= link_to "Contributions", contributions_donations_path,
 | 
				
			||||||
 | 
					      class: main_nav_class(@current_section, :contributions) %>
 | 
				
			||||||
<%= link_to "Invitations", invitations_path,
 | 
					<%= link_to "Invitations", invitations_path,
 | 
				
			||||||
      class: main_nav_class(@current_section, :invitations) %>
 | 
					      class: main_nav_class(@current_section, :invitations) %>
 | 
				
			||||||
<%= link_to "Donations", donations_path,
 | 
					 | 
				
			||||||
      class: main_nav_class(@current_section, :contributions) %>
 | 
					 | 
				
			||||||
<%= link_to "Wallet", wallet_path,
 | 
					<%= link_to "Wallet", wallet_path,
 | 
				
			||||||
      class: main_nav_class(@current_section, :wallet) %>
 | 
					      class: main_nav_class(@current_section, :wallet) %>
 | 
				
			||||||
<%= link_to "Settings", security_path,
 | 
					<%= link_to "Settings", security_path,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								app/views/shared/_tabnav_contributions.html.erb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								app/views/shared/_tabnav_contributions.html.erb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<%= render TabnavLinkComponent.new(
 | 
				
			||||||
 | 
					  name: "Donations", path: contributions_donations_path,
 | 
				
			||||||
 | 
					  active: current_page?(contributions_donations_path)
 | 
				
			||||||
 | 
					) %>
 | 
				
			||||||
 | 
					<%= render TabnavLinkComponent.new(
 | 
				
			||||||
 | 
					  name: "Projects", path: contributions_projects_path,
 | 
				
			||||||
 | 
					  active: current_page?(contributions_projects_path)
 | 
				
			||||||
 | 
					) %>
 | 
				
			||||||
@ -15,9 +15,13 @@ Rails.application.routes.draw do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  get 'security', to: 'security#index'
 | 
					  get 'security', to: 'security#index'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  resources :invitations, only: ['index', 'show', 'create', 'destroy']
 | 
					  namespace :contributions do
 | 
				
			||||||
 | 
					    root to: 'donations#index'
 | 
				
			||||||
 | 
					    get 'projects', to: 'projects#index'
 | 
				
			||||||
 | 
					    resources :donations, only: ['index']
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  resources :donations
 | 
					  resources :invitations, only: ['index', 'show', 'create', 'destroy']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get 'wallet', to: 'wallet#index'
 | 
					  get 'wallet', to: 'wallet#index'
 | 
				
			||||||
  get 'wallet/transactions', to: 'wallet#transactions'
 | 
					  get 'wallet/transactions', to: 'wallet#transactions'
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user