panda-cms 0.10.2 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +77 -0
- data/app/assets/tailwind/panda/cms/_application.css +1 -0
- data/app/components/panda/cms/admin/popular_pages_component.rb +62 -0
- data/app/components/panda/cms/code_component.rb +2 -2
- data/app/components/panda/cms/menu_component.rb +9 -2
- data/app/components/panda/cms/rich_text_component.rb +1 -1
- data/app/components/panda/cms/text_component.rb +1 -1
- data/app/javascript/panda/cms/controllers/editor_form_controller.js +3 -3
- data/app/javascript/panda/cms/controllers/editor_iframe_controller.js +4 -4
- data/app/jobs/panda/cms/record_visit_job.rb +2 -1
- data/app/models/panda/cms/visit.rb +16 -1
- data/app/services/panda/social/instagram_feed_service.rb +54 -54
- data/app/views/panda/cms/admin/dashboard/show.html.erb +10 -3
- data/app/views/panda/cms/admin/forms/new.html.erb +1 -1
- data/app/views/panda/cms/admin/menus/edit.html.erb +1 -1
- data/app/views/panda/cms/admin/menus/new.html.erb +1 -1
- data/app/views/panda/cms/admin/pages/edit.html.erb +77 -3
- data/app/views/panda/cms/admin/posts/_form.html.erb +6 -6
- data/app/views/panda/cms/shared/_favicons.html.erb +7 -7
- data/config/importmap.rb +0 -1
- data/config/initializers/groupdate.rb +5 -0
- data/config/locales/en.yml +1 -2
- data/db/migrate/20240315125421_add_nested_sets_to_panda_cms_pages.rb +0 -10
- data/db/migrate/20240316230706_add_nested_to_panda_cms_menu_items.rb +0 -6
- data/db/migrate/20240317230622_create_panda_cms_visits.rb +1 -1
- data/db/migrate/20240805121123_create_panda_cms_posts.rb +1 -1
- data/db/migrate/20240806112735_fix_panda_cms_visits_column_names.rb +1 -1
- data/db/migrate/20240923234535_add_depth_to_panda_cms_menus.rb +0 -6
- data/db/migrate/20250106223303_add_author_id_to_panda_cms_posts.rb +1 -3
- data/db/migrate/20251117234530_add_index_to_visited_at_on_panda_cms_visits.rb +7 -0
- data/db/migrate/20251118015100_backfill_visited_at_for_existing_visits.rb +17 -0
- data/db/seeds.rb +5 -0
- data/lib/panda/cms/asset_loader.rb +18 -4
- data/lib/panda/cms/engine/autoload_config.rb +18 -0
- data/lib/panda/cms/engine/route_config.rb +1 -2
- data/lib/panda/cms/engine.rb +4 -23
- data/lib/{panda-cms → panda/cms}/version.rb +1 -1
- data/lib/panda/cms.rb +3 -1
- data/lib/panda-cms.rb +8 -1
- data/lib/tasks/ci.rake +0 -0
- metadata +13 -46
- data/app/assets/builds/panda.cms.css +0 -2754
- data/app/assets/stylesheets/panda/cms/application.tailwind.css +0 -162
- data/app/assets/stylesheets/panda/cms/editor.css +0 -120
- data/app/assets/tailwind/application.css +0 -178
- data/app/assets/tailwind/tailwind.config.js +0 -15
- data/config/initializers/panda/cms/healthcheck_log_silencer.rb.disabled +0 -31
- data/db/migrate/20240317010532_create_panda_cms_users.rb +0 -14
- data/db/migrate/20240324205703_create_active_storage_tables.active_storage.rb +0 -61
- data/db/migrate/20240408084718_default_panda_cms_users_admin_to_false.rb +0 -7
- data/db/migrate/20240701225422_add_service_name_to_active_storage_blobs.active_storage.rb +0 -24
- data/db/migrate/20240701225423_create_active_storage_variant_records.active_storage.rb +0 -30
- data/db/migrate/20240701225424_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb +0 -10
- data/db/migrate/20241119214548_convert_post_content_to_editor_js.rb +0 -37
- data/db/migrate/20250809231125_migrate_users_to_panda_core.rb +0 -113
- data/lib/generators/panda/cms/install_generator.rb +0 -28
- data/public/panda-cms-assets/editor-js/core/editorjs.min.js +0 -83
- data/public/panda-cms-assets/editor-js/plugins/embed.min.js +0 -2
- data/public/panda-cms-assets/editor-js/plugins/header.min.js +0 -9
- data/public/panda-cms-assets/editor-js/plugins/nested-list.min.js +0 -2
- data/public/panda-cms-assets/editor-js/plugins/paragraph.min.js +0 -9
- data/public/panda-cms-assets/editor-js/plugins/quote.min.js +0 -2
- data/public/panda-cms-assets/editor-js/plugins/simple-image.min.js +0 -2
- data/public/panda-cms-assets/editor-js/plugins/table.min.js +0 -2
- data/public/panda-cms-assets/favicons/android-chrome-192x192.png +0 -0
- data/public/panda-cms-assets/favicons/android-chrome-512x512.png +0 -0
- data/public/panda-cms-assets/favicons/apple-touch-icon.png +0 -0
- data/public/panda-cms-assets/favicons/browserconfig.xml +0 -9
- data/public/panda-cms-assets/favicons/favicon-16x16.png +0 -0
- data/public/panda-cms-assets/favicons/favicon-32x32.png +0 -0
- data/public/panda-cms-assets/favicons/favicon.ico +0 -0
- data/public/panda-cms-assets/favicons/mstile-150x150.png +0 -0
- data/public/panda-cms-assets/favicons/safari-pinned-tab.svg +0 -61
- data/public/panda-cms-assets/favicons/site.webmanifest +0 -14
- data/public/panda-cms-assets/manifest.json +0 -20
- data/public/panda-cms-assets/panda-cms-0.7.4.css +0 -26
- data/public/panda-cms-assets/panda-cms-0.7.4.js +0 -150
- data/public/panda-cms-assets/panda-logo-screenprint.png +0 -0
- data/public/panda-cms-assets/panda-nav.png +0 -0
- data/public/panda-cms-assets/rich_text_editor.css +0 -568
- /data/db/migrate/{20251105000001_add_pending_review_status_to_pages_and_posts.panda_cms.rb → 20251105000001_add_pending_review_status_to_pages_and_posts.rb} +0 -0
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
class MigrateUsersToPandaCore < ActiveRecord::Migration[8.0]
|
|
2
|
-
def up
|
|
3
|
-
# First ensure panda_core_users table exists (from Core engine)
|
|
4
|
-
# It should already exist from the Core migration
|
|
5
|
-
|
|
6
|
-
# Migrate data from panda_cms_users to panda_core_users if needed
|
|
7
|
-
if table_exists?(:panda_cms_users) && table_exists?(:panda_core_users)
|
|
8
|
-
# Check if there's any data to migrate
|
|
9
|
-
cms_user_count = ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM panda_cms_users")
|
|
10
|
-
|
|
11
|
-
if cms_user_count > 0
|
|
12
|
-
# Copy all user data
|
|
13
|
-
execute <<-SQL
|
|
14
|
-
INSERT INTO panda_core_users (
|
|
15
|
-
id, name, email, image_url, is_admin, created_at, updated_at
|
|
16
|
-
)
|
|
17
|
-
SELECT
|
|
18
|
-
id,
|
|
19
|
-
COALESCE(name, CONCAT(firstname, ' ', lastname), 'Unknown User'),
|
|
20
|
-
email,
|
|
21
|
-
image_url,
|
|
22
|
-
COALESCE(admin, false),
|
|
23
|
-
created_at,
|
|
24
|
-
updated_at
|
|
25
|
-
FROM panda_cms_users
|
|
26
|
-
WHERE NOT EXISTS (
|
|
27
|
-
SELECT 1 FROM panda_core_users WHERE panda_core_users.id = panda_cms_users.id
|
|
28
|
-
)
|
|
29
|
-
SQL
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Update foreign key references in other tables (always do this, even if no data)
|
|
33
|
-
|
|
34
|
-
# Posts author_id
|
|
35
|
-
if column_exists?(:panda_cms_posts, :author_id)
|
|
36
|
-
remove_foreign_key :panda_cms_posts, column: :author_id if foreign_key_exists?(:panda_cms_posts, :panda_cms_users, column: :author_id)
|
|
37
|
-
add_foreign_key :panda_cms_posts, :panda_core_users, column: :author_id, primary_key: :id
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Posts user_id (legacy column)
|
|
41
|
-
if column_exists?(:panda_cms_posts, :user_id)
|
|
42
|
-
remove_foreign_key :panda_cms_posts, column: :user_id if foreign_key_exists?(:panda_cms_posts, :panda_cms_users, column: :user_id)
|
|
43
|
-
add_foreign_key :panda_cms_posts, :panda_core_users, column: :user_id, primary_key: :id
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Visits user_id
|
|
47
|
-
if column_exists?(:panda_cms_visits, :user_id)
|
|
48
|
-
remove_foreign_key :panda_cms_visits, column: :user_id if foreign_key_exists?(:panda_cms_visits, :panda_cms_users, column: :user_id)
|
|
49
|
-
add_foreign_key :panda_cms_visits, :panda_core_users, column: :user_id, primary_key: :id
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Always drop the old table if it exists (even if it was empty)
|
|
53
|
-
drop_table :panda_cms_users
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def down
|
|
58
|
-
# Recreate panda_cms_users table
|
|
59
|
-
create_table :panda_cms_users, id: :uuid do |t|
|
|
60
|
-
t.string :name
|
|
61
|
-
t.string :firstname
|
|
62
|
-
t.string :lastname
|
|
63
|
-
t.string :email, null: false
|
|
64
|
-
t.string :image_url
|
|
65
|
-
t.boolean :admin, default: false
|
|
66
|
-
t.string :current_theme, default: "default"
|
|
67
|
-
t.timestamps
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
add_index :panda_cms_users, :email, unique: true
|
|
71
|
-
|
|
72
|
-
# Migrate data back
|
|
73
|
-
if table_exists?(:panda_core_users) && table_exists?(:panda_cms_users)
|
|
74
|
-
execute <<-SQL
|
|
75
|
-
INSERT INTO panda_cms_users (
|
|
76
|
-
id, firstname, lastname, name, email, image_url, admin, current_theme, created_at, updated_at
|
|
77
|
-
)
|
|
78
|
-
SELECT
|
|
79
|
-
id,
|
|
80
|
-
split_part(name, ' ', 1),
|
|
81
|
-
CASE
|
|
82
|
-
WHEN position(' ' IN name) > 0
|
|
83
|
-
THEN substring(name FROM position(' ' IN name) + 1)
|
|
84
|
-
ELSE ''
|
|
85
|
-
END,
|
|
86
|
-
name,
|
|
87
|
-
email,
|
|
88
|
-
image_url,
|
|
89
|
-
is_admin,
|
|
90
|
-
'default',
|
|
91
|
-
created_at,
|
|
92
|
-
updated_at
|
|
93
|
-
FROM panda_core_users
|
|
94
|
-
SQL
|
|
95
|
-
|
|
96
|
-
# Restore foreign keys to panda_cms_users
|
|
97
|
-
if column_exists?(:panda_cms_posts, :author_id)
|
|
98
|
-
remove_foreign_key :panda_cms_posts, column: :author_id if foreign_key_exists?(:panda_cms_posts, column: :author_id)
|
|
99
|
-
add_foreign_key :panda_cms_posts, :panda_cms_users, column: :author_id, primary_key: :id
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
if column_exists?(:panda_cms_posts, :user_id)
|
|
103
|
-
remove_foreign_key :panda_cms_posts, column: :user_id if foreign_key_exists?(:panda_cms_posts, column: :user_id)
|
|
104
|
-
add_foreign_key :panda_cms_posts, :panda_cms_users, column: :user_id, primary_key: :id
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
if column_exists?(:panda_cms_visits, :user_id)
|
|
108
|
-
remove_foreign_key :panda_cms_visits, column: :user_id if foreign_key_exists?(:panda_cms_visits, column: :user_id)
|
|
109
|
-
add_foreign_key :panda_cms_visits, :panda_cms_users, column: :user_id, primary_key: :id
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Generators
|
|
4
|
-
module Panda
|
|
5
|
-
module CMS
|
|
6
|
-
class InstallGenerator < ::Rails::Generators::Base
|
|
7
|
-
source_root File.expand_path("templates", __dir__)
|
|
8
|
-
|
|
9
|
-
namespace "panda:cms:install"
|
|
10
|
-
desc "Adds the basic configuration for Panda CMS to your Rails app."
|
|
11
|
-
|
|
12
|
-
def create_initializer_file
|
|
13
|
-
# Skip creating initializer - Panda::Core already creates config/initializers/panda.rb
|
|
14
|
-
# See config/initializers/panda/cms.rb in the gem for an example configuration
|
|
15
|
-
|
|
16
|
-
# Add the seed loader to the seeds.rb file
|
|
17
|
-
unless File.read("#{::Rails.root}/db/seeds.rb")&.include?("Panda::CMS::Engine.load_seed")
|
|
18
|
-
existing_seeds = File.read("#{::Rails.root}/db/seeds.rb")
|
|
19
|
-
IO.write("#{::Rails.root}/db/seeds.rb", "Panda::CMS::Engine.load_seed\n\n#{existing_seeds}")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
`rails db:migrate`
|
|
23
|
-
`rails db:seed`
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|