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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +77 -0
  3. data/app/assets/tailwind/panda/cms/_application.css +1 -0
  4. data/app/components/panda/cms/admin/popular_pages_component.rb +62 -0
  5. data/app/components/panda/cms/code_component.rb +2 -2
  6. data/app/components/panda/cms/menu_component.rb +9 -2
  7. data/app/components/panda/cms/rich_text_component.rb +1 -1
  8. data/app/components/panda/cms/text_component.rb +1 -1
  9. data/app/javascript/panda/cms/controllers/editor_form_controller.js +3 -3
  10. data/app/javascript/panda/cms/controllers/editor_iframe_controller.js +4 -4
  11. data/app/jobs/panda/cms/record_visit_job.rb +2 -1
  12. data/app/models/panda/cms/visit.rb +16 -1
  13. data/app/services/panda/social/instagram_feed_service.rb +54 -54
  14. data/app/views/panda/cms/admin/dashboard/show.html.erb +10 -3
  15. data/app/views/panda/cms/admin/forms/new.html.erb +1 -1
  16. data/app/views/panda/cms/admin/menus/edit.html.erb +1 -1
  17. data/app/views/panda/cms/admin/menus/new.html.erb +1 -1
  18. data/app/views/panda/cms/admin/pages/edit.html.erb +77 -3
  19. data/app/views/panda/cms/admin/posts/_form.html.erb +6 -6
  20. data/app/views/panda/cms/shared/_favicons.html.erb +7 -7
  21. data/config/importmap.rb +0 -1
  22. data/config/initializers/groupdate.rb +5 -0
  23. data/config/locales/en.yml +1 -2
  24. data/db/migrate/20240315125421_add_nested_sets_to_panda_cms_pages.rb +0 -10
  25. data/db/migrate/20240316230706_add_nested_to_panda_cms_menu_items.rb +0 -6
  26. data/db/migrate/20240317230622_create_panda_cms_visits.rb +1 -1
  27. data/db/migrate/20240805121123_create_panda_cms_posts.rb +1 -1
  28. data/db/migrate/20240806112735_fix_panda_cms_visits_column_names.rb +1 -1
  29. data/db/migrate/20240923234535_add_depth_to_panda_cms_menus.rb +0 -6
  30. data/db/migrate/20250106223303_add_author_id_to_panda_cms_posts.rb +1 -3
  31. data/db/migrate/20251117234530_add_index_to_visited_at_on_panda_cms_visits.rb +7 -0
  32. data/db/migrate/20251118015100_backfill_visited_at_for_existing_visits.rb +17 -0
  33. data/db/seeds.rb +5 -0
  34. data/lib/panda/cms/asset_loader.rb +18 -4
  35. data/lib/panda/cms/engine/autoload_config.rb +18 -0
  36. data/lib/panda/cms/engine/route_config.rb +1 -2
  37. data/lib/panda/cms/engine.rb +4 -23
  38. data/lib/{panda-cms → panda/cms}/version.rb +1 -1
  39. data/lib/panda/cms.rb +3 -1
  40. data/lib/panda-cms.rb +8 -1
  41. data/lib/tasks/ci.rake +0 -0
  42. metadata +13 -46
  43. data/app/assets/builds/panda.cms.css +0 -2754
  44. data/app/assets/stylesheets/panda/cms/application.tailwind.css +0 -162
  45. data/app/assets/stylesheets/panda/cms/editor.css +0 -120
  46. data/app/assets/tailwind/application.css +0 -178
  47. data/app/assets/tailwind/tailwind.config.js +0 -15
  48. data/config/initializers/panda/cms/healthcheck_log_silencer.rb.disabled +0 -31
  49. data/db/migrate/20240317010532_create_panda_cms_users.rb +0 -14
  50. data/db/migrate/20240324205703_create_active_storage_tables.active_storage.rb +0 -61
  51. data/db/migrate/20240408084718_default_panda_cms_users_admin_to_false.rb +0 -7
  52. data/db/migrate/20240701225422_add_service_name_to_active_storage_blobs.active_storage.rb +0 -24
  53. data/db/migrate/20240701225423_create_active_storage_variant_records.active_storage.rb +0 -30
  54. data/db/migrate/20240701225424_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb +0 -10
  55. data/db/migrate/20241119214548_convert_post_content_to_editor_js.rb +0 -37
  56. data/db/migrate/20250809231125_migrate_users_to_panda_core.rb +0 -113
  57. data/lib/generators/panda/cms/install_generator.rb +0 -28
  58. data/public/panda-cms-assets/editor-js/core/editorjs.min.js +0 -83
  59. data/public/panda-cms-assets/editor-js/plugins/embed.min.js +0 -2
  60. data/public/panda-cms-assets/editor-js/plugins/header.min.js +0 -9
  61. data/public/panda-cms-assets/editor-js/plugins/nested-list.min.js +0 -2
  62. data/public/panda-cms-assets/editor-js/plugins/paragraph.min.js +0 -9
  63. data/public/panda-cms-assets/editor-js/plugins/quote.min.js +0 -2
  64. data/public/panda-cms-assets/editor-js/plugins/simple-image.min.js +0 -2
  65. data/public/panda-cms-assets/editor-js/plugins/table.min.js +0 -2
  66. data/public/panda-cms-assets/favicons/android-chrome-192x192.png +0 -0
  67. data/public/panda-cms-assets/favicons/android-chrome-512x512.png +0 -0
  68. data/public/panda-cms-assets/favicons/apple-touch-icon.png +0 -0
  69. data/public/panda-cms-assets/favicons/browserconfig.xml +0 -9
  70. data/public/panda-cms-assets/favicons/favicon-16x16.png +0 -0
  71. data/public/panda-cms-assets/favicons/favicon-32x32.png +0 -0
  72. data/public/panda-cms-assets/favicons/favicon.ico +0 -0
  73. data/public/panda-cms-assets/favicons/mstile-150x150.png +0 -0
  74. data/public/panda-cms-assets/favicons/safari-pinned-tab.svg +0 -61
  75. data/public/panda-cms-assets/favicons/site.webmanifest +0 -14
  76. data/public/panda-cms-assets/manifest.json +0 -20
  77. data/public/panda-cms-assets/panda-cms-0.7.4.css +0 -26
  78. data/public/panda-cms-assets/panda-cms-0.7.4.js +0 -150
  79. data/public/panda-cms-assets/panda-logo-screenprint.png +0 -0
  80. data/public/panda-cms-assets/panda-nav.png +0 -0
  81. data/public/panda-cms-assets/rich_text_editor.css +0 -568
  82. /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