From fe889589d449b507b1eec7d1a49e1fec3251ae36 Mon Sep 17 00:00:00 2001 From: Robert Smith Date: Wed, 11 Sep 2024 22:18:48 -0230 Subject: [PATCH 001/336] Add support for sub-types of community --- .../better_together/communities_controller.rb | 18 ++++++++++++------ .../better_together/communities/index.html.erb | 6 +++--- .../better_together/communities/new.html.erb | 6 +++--- ..._add_type_to_better_together_communities.rb | 5 +++++ spec/dummy/db/schema.rb | 3 ++- 5 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20240911235546_add_type_to_better_together_communities.rb diff --git a/app/controllers/better_together/communities_controller.rb b/app/controllers/better_together/communities_controller.rb index 641df977..ddae4c2c 100644 --- a/app/controllers/better_together/communities_controller.rb +++ b/app/controllers/better_together/communities_controller.rb @@ -2,14 +2,16 @@ module BetterTogether class CommunitiesController < FriendlyResourceController # rubocop:todo Style/Documentation - before_action :set_community, only: %i[show edit update destroy] + before_action :set_model_instance, only: %i[show edit update destroy] before_action :authorize_community, only: %i[show edit update destroy] after_action :verify_authorized, except: :index + helper_method :resource_class + # GET /communities def index - authorize ::BetterTogether::Community - @communities = policy_scope(::BetterTogether::Community.with_translations) + authorize resource_class + @communities = policy_scope(resource_collection) end # GET /communities/1 @@ -17,7 +19,7 @@ def show; end # GET /communities/new def new - @community = ::BetterTogether::Community.new + @community = resource_class.new authorize_community end @@ -26,7 +28,7 @@ def edit; end # POST /communities def create - @community = ::BetterTogether::Community.new(community_params) + @community = resource_class.new(community_params) authorize_community if @community.save @@ -53,7 +55,7 @@ def destroy private - def set_community + def set_model_instance @community = set_resource_instance end @@ -72,5 +74,9 @@ def authorize_community def resource_class ::BetterTogether::Community end + + def resource_collection + resource_class.with_translations + end end end diff --git a/app/views/better_together/communities/index.html.erb b/app/views/better_together/communities/index.html.erb index 45e6cdb6..83a602c0 100644 --- a/app/views/better_together/communities/index.html.erb +++ b/app/views/better_together/communities/index.html.erb @@ -1,12 +1,12 @@ <% content_for :page_title do %> - Communities + <%= t('.title') %> <% end %>
-

Communities

+

<%= t('.title') %>

<% if policy(::BetterTogether::Community.new).create? %> - <%= link_to 'New Community', new_community_path, class: 'btn btn-success' %> + <%= link_to t('.new-btn-text'), new_community_path, class: 'btn btn-primary' %> <% end %>
diff --git a/app/views/better_together/communities/new.html.erb b/app/views/better_together/communities/new.html.erb index 41626084..b9d86da6 100644 --- a/app/views/better_together/communities/new.html.erb +++ b/app/views/better_together/communities/new.html.erb @@ -1,9 +1,9 @@ <% content_for :page_title do %> - New Community | Communities + <%= t('.title') %> | <%= resource_class.model_name.human.pluralize %> <% end %> -
-

New Community

+
+

<%= t('.title') %>

<%= render "form", community: @community %> diff --git a/db/migrate/20240911235546_add_type_to_better_together_communities.rb b/db/migrate/20240911235546_add_type_to_better_together_communities.rb new file mode 100644 index 00000000..5ad4e290 --- /dev/null +++ b/db/migrate/20240911235546_add_type_to_better_together_communities.rb @@ -0,0 +1,5 @@ +class AddTypeToBetterTogetherCommunities < ActiveRecord::Migration[7.1] + def change + add_column :better_together_communities, :type, :string, null: false, default: 'BetterTogether::Community' + end +end diff --git a/spec/dummy/db/schema.rb b/spec/dummy/db/schema.rb index 176d84f1..805ae7c5 100644 --- a/spec/dummy/db/schema.rb +++ b/spec/dummy/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_09_06_152410) do +ActiveRecord::Schema[7.1].define(version: 2024_09_11_235546) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -65,6 +65,7 @@ t.string "privacy", limit: 50, default: "public", null: false t.string "slug", null: false t.uuid "creator_id" + t.string "type", default: "BetterTogether::Community", null: false t.index ["creator_id"], name: "by_creator" t.index ["host"], name: "index_better_together_communities_on_host", unique: true, where: "(host IS TRUE)" t.index ["identifier"], name: "index_better_together_communities_on_identifier", unique: true From 65a0900f7035c95398a4eebe5fe5eed3313eb84c Mon Sep 17 00:00:00 2001 From: Robert Smith Date: Wed, 11 Sep 2024 22:19:55 -0230 Subject: [PATCH 002/336] Add support for overriding syles in host application --- .../better_together/application.scss | 34 ++++--- .../static_pages/community_engine.html.erb | 90 ++++++++++--------- .../_custom_javascript.html.erb | 0 .../_custom_stylesheets.html.erb | 0 .../layouts/better_together/_footer.html.erb | 7 +- .../layouts/better_together/_header.html.erb | 3 +- .../better_together/_navbar_brand.html.erb | 3 + .../better_together/application.html.erb | 18 ++-- 8 files changed, 86 insertions(+), 69 deletions(-) create mode 100644 app/views/layouts/better_together/_custom_javascript.html.erb create mode 100644 app/views/layouts/better_together/_custom_stylesheets.html.erb create mode 100644 app/views/layouts/better_together/_navbar_brand.html.erb diff --git a/app/assets/stylesheets/better_together/application.scss b/app/assets/stylesheets/better_together/application.scss index b47d6169..f207f25e 100644 --- a/app/assets/stylesheets/better_together/application.scss +++ b/app/assets/stylesheets/better_together/application.scss @@ -14,36 +14,42 @@ *= require_self */ - @import 'bootstrap'; - @import 'font-awesome'; +// Define default color variables (if not overridden by the host app) +$primary: #007bff !default; +$secondary: #28a745 !default; +$text-opposite-theme-color: #333 !default; +$background-opposite-theme-color: #fff !default; +$dark-text-color: #f8f9fa !default; +$dark-background-color: #212529 !default; - /* Default text color for light mode */ - .text-opposite-theme { - color: #333; /* dark text on light background */ +// Import Bootstrap and Font Awesome +@import 'bootstrap'; +@import 'font-awesome'; + +// Styles that use the variables +.text-opposite-theme { + color: $text-opposite-theme-color; /* Use the defined variable */ } -/* When the user's system preference is dark mode, adjust text color */ @media (prefers-color-scheme: dark) { .text-opposite-theme { - color: #f8f9fa; /* light text on dark background */ + color: $dark-text-color; } } -/* Similarly, if the background is meant to be dark, you can set text to be light and vice versa */ -/* Default background color for light mode with dark text */ .background-opposite-theme { - background-color: #fff; - color: #333; + background-color: $background-opposite-theme-color; + color: $text-opposite-theme-color; } -/* When the user's system preference is dark mode, adjust background and text color */ @media (prefers-color-scheme: dark) { .background-opposite-theme { - background-color: #212529; - color: #f8f9fa; + background-color: $dark-background-color; + color: $dark-text-color; } } + .highlight-translation-missing span.translation_missing { background: #e1b1ed; } diff --git a/app/views/better_together/static_pages/community_engine.html.erb b/app/views/better_together/static_pages/community_engine.html.erb index eaf9ddb0..47662092 100644 --- a/app/views/better_together/static_pages/community_engine.html.erb +++ b/app/views/better_together/static_pages/community_engine.html.erb @@ -1,54 +1,56 @@ -