Files
growstuff/config/routes.rb
google-labs-jules[bot] 7457edf559 Merge pull request #4380 from Growstuff/community-garden-landing-page
feat: Add community garden landing page
2025-12-03 18:20:40 +10:30

172 lines
4.5 KiB
Ruby

# frozen_string_literal: true
Rails.application.routes.draw do
mount Rswag::Ui::Engine => '/api-docs'
mount Rswag::Api::Engine => '/api-docs'
get '/robots.txt' => 'robots#robots'
resources :garden_types
resources :plant_parts
devise_for :members, controllers: {
registrations: "registrations",
passwords: "passwords",
sessions: "sessions",
omniauth_callbacks: "omniauth_callbacks"
}
devise_scope :member do
get '/members/unsubscribe/:message' => 'members#unsubscribe', as: 'unsubscribe_member'
post '/members/regenerate_api_token' => 'registrations#regenerate_api_token', as: 'regenerate_api_token'
end
match '/members/:id/finish_signup' => 'members#finish_signup', via: %i(get patch), as: :finish_signup
resources :authentications, only: %i(create destroy)
get "home/index"
get '/community-gardens', to: 'home#community_gardens'
root to: 'home#index'
concern :has_photos do
resources :photos, only: :index
end
resources :gardens, concerns: :has_photos, param: :slug do
get 'timeline' => 'charts/gardens#timeline', constraints: { format: 'json' }
resources :garden_collaborators
end
resources :plantings, concerns: :has_photos, param: :slug do
resources :harvests
resources :seeds
collection do
get 'crop/:crop' => 'plantings#index', as: 'plantings_by_crop'
end
member do
post :transplant
end
end
resources :seeds, concerns: :has_photos, param: :slug do
get 'plantings' => 'plantings#index'
get 'crop/:crop' => 'seeds#index', as: 'seeds_by_crop', on: :collection
end
resources :harvests, concerns: :has_photos, param: :slug do
get 'crop/:crop' => 'harvests#index', as: 'harvests_by_crop', on: :collection
end
resources :posts do
get 'author/:author' => 'posts#index', as: 'by_author', on: :collection
end
resources :scientific_names do
collection do
get :gbif_suggest
end
end
resources :alternate_names
resources :plant_parts
resources :photos
resources :photo_associations, only: :destroy
resources :crops, param: :slug, concerns: :has_photos do
get 'harvests' => 'harvests#index'
get 'plantings' => 'plantings#index'
get 'seeds' => 'seeds#index'
get 'places' => 'places#index'
get 'members' => 'members#index'
# Charts json
get 'sunniness' => 'charts/crops#sunniness', constraints: { format: 'json' }
get 'planted_from' => 'charts/crops#planted_from', constraints: { format: 'json' }
get 'harvested_for' => 'charts/crops#harvested_for', constraints: { format: 'json' }
post :gbif
collection do
get 'requested'
get 'wrangle'
get 'hierarchy'
get 'search'
get 'data_improvement'
end
end
namespace :admin do
resources :crops, only: [:index]
resources :versions, only: [] do
post :revert, on: :member, as: :revert
end
end
resources :comments
resources :forums
resources :follows, only: %i(create destroy)
post 'likes' => 'likes#create'
delete 'likes' => 'likes#destroy'
resources :timeline
resources :members, param: :slug do
resources :gardens
resources :seeds
resources :plantings
resources :harvests
resources :posts
resources :activities
resources :follows
get 'followers' => 'follows#followers'
end
resources :messages
resources :activities, param: :slug
resources :conversations do
collection do
delete 'destroy_multiple'
end
end
resources :places, only: %i(index show), param: :place do
get 'search', on: :collection
end
get 'auth/:provider/callback' => 'authentications#create'
get 'members/auth/:provider/callback' => 'authentications#create'
scope :admin do
get '/' => 'admin#index', as: 'admin'
get '/newsletter' => 'admin#newsletter', as: 'admin_newsletter'
comfy_route :cms_admin, path: '/cms'
end
namespace :admin do
resources :members, param: :slug
resources :roles
resources :crops, param: :slug do
resources :crop_companions
end
end
namespace :api do
namespace :v1 do
jsonapi_resources :activities
jsonapi_resources :crops
jsonapi_resources :gardens
jsonapi_resources :harvests
jsonapi_resources :members
jsonapi_resources :photos
jsonapi_resources :plantings
jsonapi_resources :seeds
end
end
get '/.well-known/acme-challenge/:id' => 'pages#letsencrypt'
# CMS stuff -- must remain LAST
comfy_route :cms, path: '/', sitemap: false
end