Skip to content

Commit

Permalink
Merge pull request #112 from loftwah/dl/users-fix-1
Browse files Browse the repository at this point in the history
add user directory
  • Loading branch information
loftwah authored Sep 6, 2024
2 parents c4406a0 + 2e07f12 commit 68e7244
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 184 deletions.
Binary file added app/assets/images/default_banner.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# app/controllers/users_controller.rb
class UsersController < ApplicationController

def index
@users = User.all
end
end
42 changes: 42 additions & 0 deletions app/views/users/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h1 class="text-3xl font-bold text-white mb-6 text-center">User Directory</h1>

<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-8">
<% @users.each do |user| %>
<div class="bg-gray-800 rounded-lg p-6 text-center shadow-md">
<div class="mb-4">
<% avatar_path = "/avatars/#{user.username}_avatar#{File.extname(user.avatar || '')}" %>

<!-- Use local avatar if it exists, otherwise use the URL -->
<%= link_to user_links_path(user.username), target: "_blank" do %>
<% if File.exist?(Rails.root.join('public' + avatar_path)) %>
<%= image_tag avatar_path, alt: user.email, class: "rounded-full object-cover w-24 h-24 mx-auto" %>
<% elsif user.avatar.present? %>
<%= image_tag user.avatar, alt: user.email, class: "rounded-full object-cover w-24 h-24 mx-auto" %>
<% end %>
<% end %>
</div>

<!-- Link the username to the user's profile -->
<h2 class="text-xl font-bold text-lime-300">
<%= link_to user.full_name, user_links_path(user.username), target: "_blank", class: "hover:underline" %>
</h2>
<p class="text-gray-400">@<%= user.username %></p>

<% if user.parsed_tags.any? %>
<div class="flex flex-wrap justify-center mt-4 space-x-2 space-y-2">
<% user.parsed_tags.each do |tag| %>
<span class="bg-gray-700 text-white rounded px-2 py-1 text-xs"><%= tag %></span>
<% end %>
</div>
<% end %>

<% if user.description.present? %>
<div class="mt-4">
<p class="text-sm text-gray-300"><%= user.description %></p>
</div>
<% end %>
</div>
<% end %>
</div>
</div>
7 changes: 5 additions & 2 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
Rails.application.routes.draw do
# Static and more specific routes first

get 'analytics/index'

# Routes for users directory (static)
resources :users, only: [:index]

# Devise routes for user registration
devise_for :users, controllers: {
Expand All @@ -16,6 +18,7 @@
# Health check route
get 'up' => 'rails/health#show', as: :rails_health_check

# Routes for waiting lists
resources :waiting_lists, only: [:create]

# Root route
Expand All @@ -35,5 +38,5 @@
get '/:username/analytics', to: 'analytics#index', as: :user_analytics

# Dynamic user-specific routes must be last to avoid conflicts with static routes
get '/:username(/:theme)', to: 'links#user_links', as: :user_links, constraints: { theme: /retro|win95|win98/ }
get '/:username(/:theme)', to: 'links#user_links', as: :user_links, constraints: { username: /(?!users).*/, theme: /retro|win95|win98/ }
end
77 changes: 16 additions & 61 deletions public/404.html
Original file line number Diff line number Diff line change
@@ -1,67 +1,22 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<title>The page you were looking for doesn't exist (404)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
.rails-default-error-page {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}

.rails-default-error-page div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}

.rails-default-error-page div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}

.rails-default-error-page h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}

.rails-default-error-page div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 - Page Not Found</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>

<body class="rails-default-error-page">
<!-- This file lives in public/404.html -->
<div class="dialog">
<div>
<h1>The page you were looking for doesn't exist.</h1>
<p>You may have mistyped the address or the page may have moved.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
<body class="bg-gray-900 text-white flex flex-col justify-center items-center min-h-screen">
<div class="text-center">
<h1 class="text-6xl font-bold text-red-500 mb-8">404</h1>
<p class="text-xl mb-6">The page you were looking for doesn't exist.</p>
<p class="text-lg mb-8">You may have mistyped the address or the page may have moved.</p>
<a href="/" class="inline-block bg-lime-500 hover:bg-lime-600 text-white font-bold py-2 px-4 rounded transition duration-300">
Return to Homepage
</a>
</div>
<div class="mt-12">
<img src="/assets/judgemental_linkarooie.jpg" class="w-64 mx-auto" alt="Linkarooie">
</div>
</body>
</html>
76 changes: 15 additions & 61 deletions public/422.html
Original file line number Diff line number Diff line change
@@ -1,67 +1,21 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<title>The change you wanted was rejected (422)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
.rails-default-error-page {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}

.rails-default-error-page div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}

.rails-default-error-page div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}

.rails-default-error-page h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}

.rails-default-error-page div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>422 - Unprocessable Entity</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>

<body class="rails-default-error-page">
<!-- This file lives in public/422.html -->
<div class="dialog">
<div>
<h1>The change you wanted was rejected.</h1>
<p>Maybe you tried to change something you didn't have access to.</p>
</div>
<p>If you are the application owner check the logs for more information.</p>
<body class="bg-gray-900 text-white flex flex-col justify-center items-center min-h-screen">
<div class="text-center">
<h1 class="text-6xl font-bold text-red-500 mb-8">422</h1>
<p class="text-xl mb-6">The request was well-formed but was unable to be followed due to semantic errors.</p>
<a href="/" class="inline-block bg-lime-500 hover:bg-lime-600 text-white font-bold py-2 px-4 rounded transition duration-300">
Return to Homepage
</a>
</div>
<div class="mt-12">
<img src="/assets/judgemental_linkarooie.jpg" class="w-64 mx-auto" alt="Linkarooie">
</div>
</body>
</html>
76 changes: 16 additions & 60 deletions public/500.html
Original file line number Diff line number Diff line change
@@ -1,66 +1,22 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<title>We're sorry, but something went wrong (500)</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
.rails-default-error-page {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
font-family: arial, sans-serif;
margin: 0;
}

.rails-default-error-page div.dialog {
width: 95%;
max-width: 33em;
margin: 4em auto 0;
}

.rails-default-error-page div.dialog > div {
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #BBB;
border-top: #B00100 solid 4px;
border-top-left-radius: 9px;
border-top-right-radius: 9px;
background-color: white;
padding: 7px 12% 0;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}

.rails-default-error-page h1 {
font-size: 100%;
color: #730E15;
line-height: 1.5em;
}

.rails-default-error-page div.dialog > p {
margin: 0 0 1em;
padding: 1em;
background-color: #F7F7F7;
border: 1px solid #CCC;
border-right-color: #999;
border-left-color: #999;
border-bottom-color: #999;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-color: #DADADA;
color: #666;
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>500 - Internal Server Error</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>

<body class="rails-default-error-page">
<!-- This file lives in public/500.html -->
<div class="dialog">
<div>
<h1>We're sorry, but something went wrong.</h1>
</div>
<p>If you are the application owner check the logs for more information.</p>
<body class="bg-gray-900 text-white flex flex-col justify-center items-center min-h-screen">
<div class="text-center">
<h1 class="text-6xl font-bold text-red-500 mb-8">500</h1>
<p class="text-xl mb-6">Oops! Something went wrong on our end.</p>
<p class="text-lg mb-8">We're working to fix it. Please try again later.</p>
<a href="/" class="inline-block bg-lime-500 hover:bg-lime-600 text-white font-bold py-2 px-4 rounded transition duration-300">
Return to Homepage
</a>
</div>
<div class="mt-12">
<img src="/assets/judgemental_linkarooie.jpg" class="w-64 mx-auto" alt="Linkarooie">
</div>
</body>
</html>

0 comments on commit 68e7244

Please sign in to comment.