pg_rails 7.0.8.pre.alpha.103 → 7.0.8.pre.alpha.105

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/pg_engine/app/assets/stylesheets/actiontext.css +31 -0
  3. data/pg_engine/app/assets/stylesheets/notifications.scss +31 -2
  4. data/pg_engine/app/components/notification_component.rb +9 -4
  5. data/pg_engine/app/components/notifications_bell_component.rb +25 -0
  6. data/pg_engine/app/controllers/admin/eventos_controller.rb +57 -0
  7. data/pg_engine/app/controllers/concerns/pg_engine/resource.rb +0 -2
  8. data/pg_engine/app/controllers/pg_engine/base_controller.rb +6 -1
  9. data/pg_engine/app/controllers/users/notifications_controller.rb +6 -0
  10. data/pg_engine/app/models/evento.rb +11 -0
  11. data/pg_engine/app/notifiers/simple_user_notifier.rb +4 -0
  12. data/pg_engine/app/views/active_storage/blobs/_blob.html.erb +1 -0
  13. data/pg_engine/app/views/admin/eventos/index.html.slim +6 -0
  14. data/pg_engine/app/views/admin/eventos/new.html.slim +10 -0
  15. data/pg_engine/app/views/layouts/action_text/contents/_content.html.erb +3 -0
  16. data/pg_engine/config/routes.rb +2 -0
  17. data/pg_engine/db/migrate/20240614130246_create_action_text_tables.action_text.rb +26 -0
  18. data/pg_engine/lib/pg_engine/engine.rb +8 -0
  19. data/pg_engine/spec/helpers/pg_engine/pg_rails_helper_spec.rb +0 -2
  20. data/pg_engine/spec/requests/admin/eventos_spec.rb +56 -0
  21. data/pg_engine/spec/system/noticed_spec.rb +3 -0
  22. data/pg_layout/app/javascript/config/index.js +3 -0
  23. data/pg_layout/app/javascript/controllers/notifications_controller.js +21 -3
  24. data/pg_layout/app/views/pg_layout/_navbar.html.erb +2 -9
  25. data/pg_rails/lib/version.rb +1 -1
  26. data/pg_rails/scss/pg_rails.scss +2 -0
  27. metadata +12 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: adf3e1c08971d75321d41dd7af1e1e564429e53ff550f79ba17a9ad68414c5f9
4
- data.tar.gz: 6b2795f204ae9f2cd47b7fec7d1899bc49fb9c07fd2b48eb616aebb7a10e93c9
3
+ metadata.gz: 6449fcb56114d2f214c03476b625c5dbcd2ebf416ddf87cfe23224432cc5a60e
4
+ data.tar.gz: e84b73268092c987312c2530a53945f9281a2364b663e9c331abb8a971971f58
5
5
  SHA512:
6
- metadata.gz: ce8f1e2eda8c93f15128ea12fb6dbf334b8dd7a85e0e9e6286a4e18d19484176105ed975a5cd1f641db05c773d80a72130c9649abfe55e6b0bec736e1f760235
7
- data.tar.gz: b8f789a849733993524a2a403b0782dbb77ec3e043b913ca9641fb707e99261a13ccaf5b42809b20be516dffccb21954ef9411638a6f49a19857d05977f6e432
6
+ metadata.gz: 750cd9d4dd72d4d6bda3e6ebc33edf23eda9d84d41090f6bd8cc5af2889ce04471c01a722c80249055608b7ffe2b0e9f417436252e64c38bfbda315d7f911aa1
7
+ data.tar.gz: 4bd4276d1cc708cdbae0487aa74e180fc5974a71ce1d6e5046f45f7bc1c3a85cec2be3e5146188d2af0a55f5fd2aa8698ce171406d083f8c8717a5d3e480ca3f
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
3
+ * the trix-editor content (whether displayed or under editing). Feel free to incorporate this
4
+ * inclusion directly in any other asset bundle and remove this file.
5
+ *
6
+ *= require trix
7
+ */
8
+
9
+ /*
10
+ * We need to override trix.css’s image gallery styles to accommodate the
11
+ * <action-text-attachment> element we wrap around attachments. Otherwise,
12
+ * images in galleries will be squished by the max-width: 33%; rule.
13
+ */
14
+ .trix-content .attachment-gallery > action-text-attachment,
15
+ .trix-content .attachment-gallery > .attachment {
16
+ flex: 1 0 33%;
17
+ padding: 0 0.5em;
18
+ max-width: 33%;
19
+ }
20
+
21
+ .trix-content .attachment-gallery.attachment-gallery--2 > action-text-attachment,
22
+ .trix-content .attachment-gallery.attachment-gallery--2 > .attachment, .trix-content .attachment-gallery.attachment-gallery--4 > action-text-attachment,
23
+ .trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
24
+ flex-basis: 50%;
25
+ max-width: 50%;
26
+ }
27
+
28
+ .trix-content action-text-attachment .attachment {
29
+ padding: 0 !important;
30
+ max-width: 100% !important;
31
+ }
@@ -1,3 +1,26 @@
1
+ .pg--notifications-bell--tooltip {
2
+ position: relative;
3
+ background-color: #99570b;
4
+ padding: 4px;
5
+ z-index: 10;
6
+ border-radius: 2px;
7
+ }
8
+ .pg--notifications-bell--tooltip::after {
9
+ content: '';
10
+ color: white;
11
+ display: block;
12
+ position: absolute;
13
+ right: -9px;
14
+ top: 3px;
15
+ border-color: transparent;
16
+ border-left-color: #99570b;
17
+ border-style: solid;
18
+ border-top-width: 0.7rem;
19
+ border-bottom-width: 0.7rem;
20
+ border-left-width: 0.7rem;
21
+ z-index: -1;
22
+ }
23
+
1
24
  #notifications {
2
25
  display: flex;
3
26
  align-items: center;
@@ -8,7 +31,8 @@
8
31
  }
9
32
 
10
33
  #notifications-inner {
11
- max-width: 400px;
34
+ width: 100%;
35
+ max-width: 40em;
12
36
  display: flex;
13
37
  flex-direction: column;
14
38
  gap: 0.4em;
@@ -18,10 +42,15 @@
18
42
  border-radius: 2px;
19
43
  position: relative;
20
44
  padding: 0.3em 2.5em;
45
+ padding-right: 0.5em;
21
46
  xpadding-left: 2.5em;
22
47
  display: flex;
23
- align-items: center;
48
+ align-items: stretch;
24
49
  background-color: white;
50
+
51
+ figcaption {
52
+ display: none;
53
+ }
25
54
  }
26
55
  .notification:not(.unseen) {
27
56
  xcolor: #646464;
@@ -8,11 +8,16 @@ class NotificationComponent < BaseComponent
8
8
  <div class="notification d-flex justify-content-between <%= 'unseen' if @notification.unseen? %>"
9
9
  id="<%= dom_id(@notification) %>" data-id="<%= @notification.id %>">
10
10
  <div>
11
- <%= @notification.message %>
11
+ <%= @notification.message.html_safe %>
12
12
  </div>
13
- <div class="notification--time text-body-tertiary text-end ms-4">
14
- hace
15
- <%= distance_of_time_in_words @notification.created_at, Time.zone.now %>
13
+ <div class="notification--time d-flex flex-column justify-content-end text-body-tertiary text-end ms-4">
14
+ <div>
15
+ hace
16
+ <%= distance_of_time_in_words @notification.created_at, Time.zone.now %>
17
+ </div>
18
+ <div>
19
+ <a href="javascript:void" class="link-opacity-50" data-action="notifications#markAsUnseen">Marcar como no leído</a>
20
+ </div>
16
21
  </div>
17
22
  </div>
18
23
  ERB
@@ -0,0 +1,25 @@
1
+ class NotificationsBellComponent < BaseComponent
2
+ def initialize(tooltip:, unseen:)
3
+ @tooltip = tooltip
4
+ @unseen = unseen
5
+ super
6
+ end
7
+
8
+ erb_template <<~ERB
9
+ <div>
10
+ <% if @tooltip.present? %>
11
+ <div class="d-none d-sm-inline-block text-white pg--notifications-bell--tooltip">
12
+ <%= @tooltip %>
13
+ </div>
14
+ <% end %>
15
+ <button type="button" class="btn btn-primary btn-sm position-relative"
16
+ data-bs-toggle="collapse" data-bs-target="#notifications-collapse">
17
+ <i class="bi-bell-fill fs-5 text-light"></i>
18
+ <% if @unseen %>
19
+ <span class="position-absolute p-1 xbg-danger bg-gradient rounded-circle start-50 notifications-unseen-mark">
20
+ </span>
21
+ <% end %>
22
+ </button>
23
+ </div>
24
+ ERB
25
+ end
@@ -0,0 +1,57 @@
1
+ module Admin
2
+ class EventosController < AdminController
3
+ layout 'pg_layout/containerized'
4
+
5
+ add_breadcrumb 'Eventos'
6
+
7
+ def index
8
+ @events = Noticed::Event.order(id: :desc)
9
+ end
10
+
11
+ def new
12
+ @event = Evento.new(type: SimpleUserNotifier.to_s)
13
+ end
14
+
15
+ # rubocop:disable Metrics/MethodLength
16
+ def create # rubocop:disable Metrics/AbcSize
17
+ @event = Evento.new(event_params)
18
+ # @event.message.save!
19
+ unless @event.valid?
20
+ render :new, status: :unprocessable_entity
21
+ return
22
+ end
23
+ json_params_for_event = {
24
+ message: @event.message,
25
+ tooltip: @event.tooltip
26
+ }
27
+ notifier_class = @event.type.constantize
28
+ notifier = notifier_class.with(json_params_for_event)
29
+
30
+ if @event.target == 'todos'
31
+ notifier.deliver(User.all)
32
+ elsif @event.target == 'devs'
33
+ notifier.deliver(User.where(developer: true))
34
+ else
35
+ # :nocov:
36
+ 'shouldnt happen'
37
+ # :nocov:
38
+ end
39
+
40
+ redirect_to admin_eventos_path
41
+ rescue StandardError => e
42
+ # :nocov:
43
+ flash.now[:alert] = e.to_s
44
+ render :new, status: :unprocessable_entity
45
+ # :nocov:
46
+ end
47
+ # rubocop:enable Metrics/MethodLength
48
+
49
+ private
50
+
51
+ def event_params
52
+ params.require(:evento).permit(
53
+ :type, :message, :tooltip, :record_type, :record_id, :target
54
+ )
55
+ end
56
+ end
57
+ end
@@ -212,9 +212,7 @@ module PgEngine
212
212
  if Object.const_defined?('FriendlyId') && @clase_modelo.is_a?(FriendlyId)
213
213
  @clase_modelo.friendly.find(params[:id])
214
214
  elsif @clase_modelo.respond_to? :find_by_hashid!
215
- # rubocop:disable Rails/DynamicFindBy
216
215
  @clase_modelo.find_by_hashid!(params[:id])
217
- # rubocop:enable Rails/DynamicFindBy
218
216
  else
219
217
  @clase_modelo.find(params[:id])
220
218
  end
@@ -92,7 +92,12 @@ module PgEngine
92
92
 
93
93
  if Current.user.present?
94
94
  @notifications = Current.user.notifications.order(id: :desc)
95
- @unseen_notifications = @notifications.unseen.any?
95
+ unseen = @notifications.unseen.any?
96
+ tooltip = @notifications.unseen.map(&:tooltip).first
97
+ @notifications_bell = NotificationsBellComponent.new(
98
+ unseen:,
99
+ tooltip:
100
+ )
96
101
  end
97
102
  end
98
103
 
@@ -1,5 +1,11 @@
1
1
  module Users
2
2
  class NotificationsController < ApplicationController
3
+ def mark_as_unseen
4
+ notification = Noticed::Notification.find(params[:id])
5
+ notification.mark_as_unseen!
6
+ head :ok
7
+ end
8
+
3
9
  def mark_as_seen
4
10
  # No handleo errores porque no debería fallar, y si falla
5
11
  # se notifica a rollbar y al user no le pasa nada
@@ -0,0 +1,11 @@
1
+ class Evento
2
+ include ActiveModel::API
3
+ include ActionText::Attribute
4
+ extend Enumerize
5
+
6
+ attr_accessor :tooltip, :target, :message, :type, :record_type, :record_id
7
+
8
+ validates :target, :type, :message, presence: true
9
+
10
+ enumerize :target, in: { todos: 0, devs: 1 }
11
+ end
@@ -21,6 +21,10 @@ class SimpleUserNotifier < ApplicationNotifier
21
21
  def message
22
22
  params[:message]
23
23
  end
24
+
25
+ def tooltip
26
+ params[:tooltip]
27
+ end
24
28
  end
25
29
  # Add required params
26
30
  #
@@ -0,0 +1 @@
1
+ <%= image_tag blob %>
@@ -0,0 +1,6 @@
1
+ - content_for :actions do
2
+ = link_to 'Nuevo', new_admin_evento_path
3
+ h1 Eventos
4
+
5
+ - @events.each do |event|
6
+ pre.mb-5 = JSON.pretty_generate event.as_json
@@ -0,0 +1,10 @@
1
+ = pg_form_for @event, url: admin_eventos_path do |f|
2
+ = f.mensajes_de_error
3
+
4
+ = f.input :type, as: :select, collection: ApplicationNotifier.descendants.map(&:to_s)
5
+ = f.rich_text_area :message
6
+ = f.input :tooltip
7
+ = f.input :record_type
8
+ = f.input :record_id
9
+ = f.input :target
10
+ = f.submit
@@ -0,0 +1,3 @@
1
+ <div class="trix-content">
2
+ <%= yield -%>
3
+ </div>
@@ -17,9 +17,11 @@ Rails.application.routes.draw do
17
17
  }, failure_app: PgEngine::DeviseFailureApp
18
18
  namespace :users, path: 'u' do
19
19
  post 'notifications/mark_as_seen', to: 'notifications#mark_as_seen'
20
+ post 'notifications/mark_as_unseen', to: 'notifications#mark_as_unseen'
20
21
  end
21
22
  namespace :admin, path: 'a' do
22
23
  pg_resource(:emails)
24
+ pg_resource(:eventos)
23
25
  pg_resource(:email_logs) do
24
26
  collection do
25
27
  post :mailgun_sync
@@ -0,0 +1,26 @@
1
+ # This migration comes from action_text (originally 20180528164100)
2
+ class CreateActionTextTables < ActiveRecord::Migration[6.0]
3
+ def change
4
+ # Use Active Record's configured type for primary and foreign keys
5
+ primary_key_type, foreign_key_type = primary_and_foreign_key_types
6
+
7
+ create_table :action_text_rich_texts, id: primary_key_type do |t|
8
+ t.string :name, null: false
9
+ t.text :body, size: :long
10
+ t.references :record, null: false, polymorphic: true, index: false, type: foreign_key_type
11
+
12
+ t.timestamps
13
+
14
+ t.index [ :record_type, :record_id, :name ], name: "index_action_text_rich_texts_uniqueness", unique: true
15
+ end
16
+ end
17
+
18
+ private
19
+ def primary_and_foreign_key_types
20
+ config = Rails.configuration.generators
21
+ setting = config.options[config.orm][:primary_key_type]
22
+ primary_key_type = setting || :primary_key
23
+ foreign_key_type = setting || :bigint
24
+ [primary_key_type, foreign_key_type]
25
+ end
26
+ end
@@ -13,6 +13,14 @@ module PgEngine
13
13
  g.fallbacks[:pg_active_record] = :active_record
14
14
  end
15
15
 
16
+ # overrides = "#{PgEngine::Engine.root}/app/overrides"
17
+
18
+ # config.to_prepare do
19
+ # Dir.glob("#{overrides}/**/*.rb").each do |override|
20
+ # load override
21
+ # end
22
+ # end
23
+
16
24
  initializer 'pg_engine.set_exceptions_app' do
17
25
  Rails.application.config.exceptions_app = Rails.application.routes
18
26
  end
@@ -1,5 +1,4 @@
1
1
  require 'rails_helper'
2
- # rubocop:disable RSpec/ExampleLength
3
2
  describe PgEngine::PgRailsHelper do
4
3
  describe '#img_placeholder' do
5
4
  it 'si no es fade_in' do
@@ -35,4 +34,3 @@ describe PgEngine::PgRailsHelper do
35
34
  end
36
35
  end
37
36
  end
38
- # rubocop:enable RSpec/ExampleLength
@@ -0,0 +1,56 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Eventos' do
4
+ let(:user) { create :user, :developer }
5
+
6
+ before do
7
+ create :user # no dev
8
+ sign_in user
9
+ SimpleUserNotifier.with(message: 'New post').deliver(User.all, enqueue_job: false)
10
+ end
11
+
12
+ it 'renders the event index' do
13
+ get '/a/eventos'
14
+
15
+ expect(response.body).to include 'New post'
16
+ end
17
+
18
+ describe 'posting events' do
19
+ subject do
20
+ get '/a/eventos/new'
21
+ expect(response.body).to include 'Tooltip'
22
+ post '/a/eventos', params: {
23
+ evento: {
24
+ type: 'SimpleUserNotifier',
25
+ message: 'hola',
26
+ target:
27
+ }
28
+ }
29
+ end
30
+
31
+ context 'cuando se manda a los devs' do
32
+ let(:target) { 'devs' }
33
+
34
+ it do
35
+ expect { subject }.to change(Noticed::Notification, :count).by(1)
36
+ end
37
+ end
38
+
39
+ context 'cuando se manda a todos' do
40
+ let(:target) { 'todos' }
41
+
42
+ it do
43
+ expect { subject }.to change(Noticed::Notification, :count).by(2)
44
+ end
45
+ end
46
+
47
+ context 'cuando hay error' do
48
+ let(:target) { 'bla' }
49
+
50
+ it do
51
+ subject
52
+ expect(response).to have_http_status(:unprocessable_entity)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -29,6 +29,9 @@ describe 'Notifications' do
29
29
  expect(page).to have_css('.notifications-unseen-mark')
30
30
  find('.bi-bell-fill').click
31
31
  expect(page).to have_no_css('.notifications-unseen-mark', wait: 5)
32
+ expect(page).to have_no_css('.unseen')
33
+ click_on 'Marcar como no leído'
34
+ expect(page).to have_css('.unseen')
32
35
  end
33
36
  end
34
37
 
@@ -3,3 +3,6 @@ import './turbo_rails'
3
3
  import './rollbar'
4
4
  import './bootstrap'
5
5
  import './tooltips'
6
+
7
+ import 'trix'
8
+ import '@rails/actiontext'
@@ -18,15 +18,33 @@ export default class extends Controller {
18
18
  })
19
19
  }
20
20
 
21
+ async markAsUnseen (e) {
22
+ const notification = e.target.closest('.notification')
23
+ notification.dataset.markedAsUnseen = true
24
+ const id = notification.dataset.id
25
+ const response = await post('/u/notifications/mark_as_unseen',
26
+ { query: { id } })
27
+
28
+ if (response.ok) {
29
+ notification.classList.add('unseen')
30
+ } else {
31
+ const text = await response.text
32
+ Rollbar.error('Error marking as unseen: ', text)
33
+ }
34
+ }
35
+
21
36
  async markAsSeen () {
22
37
  const ids = []
23
- document.querySelectorAll('.notification')
24
- .forEach((e) => { ids.push(e.dataset.id) })
38
+ const targets = Array.from(document.querySelectorAll('.notification')).filter((e) => {
39
+ return !e.dataset.markedAsUnseen
40
+ })
41
+ targets.forEach((e) => { ids.push(e.dataset.id) })
42
+
25
43
  const response = await post('/u/notifications/mark_as_seen',
26
44
  { query: { ids }, responseKind: 'turbo-stream' })
27
45
 
28
46
  if (response.ok) {
29
- document.querySelectorAll('.notification.unseen').forEach(
47
+ targets.forEach(
30
48
  (notif) => {
31
49
  notif.classList.remove('unseen')
32
50
  }
@@ -10,15 +10,8 @@
10
10
  <% @navbar.extensiones.each do |extension| %>
11
11
  <%= extension %>
12
12
  <% end %>
13
- <% if Current.user.present? %>
14
- <button type="button" class="btn btn-primary btn-sm position-relative"
15
- data-bs-toggle="collapse" data-bs-target="#notifications-collapse">
16
- <i class="bi-bell-fill fs-5 text-light"></i>
17
- <% if @unseen_notifications %>
18
- <span class="position-absolute p-1 xbg-danger bg-gradient rounded-circle start-50 notifications-unseen-mark">
19
- </span>
20
- <% end %>
21
- </button>
13
+ <% if Current.user.present? && @notifications_bell.present? %>
14
+ <%= render @notifications_bell %>
22
15
  <% end %>
23
16
  <%= @navbar.logo if @navbar.logo.present? %>
24
17
  <button class="btn btn-outline-light d-inline-block d-<%= @breakpoint_navbar_expand %>-none"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRails
4
- VERSION = '7.0.8-alpha.103'
4
+ VERSION = '7.0.8-alpha.105'
5
5
  end
@@ -37,3 +37,5 @@ $alert-margin-bottom: 0.5rem;
37
37
  @import './../../pg_layout/app/assets/stylesheets/animations';
38
38
 
39
39
  @import 'bootstrap-icons/font/bootstrap-icons';
40
+
41
+ @import 'trix/dist/trix';
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.8.pre.alpha.103
4
+ version: 7.0.8.pre.alpha.105
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martín Rosso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-19 00:00:00.000000000 Z
11
+ date: 2024-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -981,6 +981,7 @@ files:
981
981
  - pg_engine/app/assets/images/plantita-sm.png
982
982
  - pg_engine/app/assets/images/plantita.png
983
983
  - pg_engine/app/assets/javascripts/active_admin.js
984
+ - pg_engine/app/assets/stylesheets/actiontext.css
984
985
  - pg_engine/app/assets/stylesheets/active_admin.scss
985
986
  - pg_engine/app/assets/stylesheets/notifications.scss
986
987
  - pg_engine/app/assets/stylesheets/pg_rails_b5.scss
@@ -991,10 +992,12 @@ files:
991
992
  - pg_engine/app/components/flash_container_component.rb
992
993
  - pg_engine/app/components/internal_error_component.rb
993
994
  - pg_engine/app/components/notification_component.rb
995
+ - pg_engine/app/components/notifications_bell_component.rb
994
996
  - pg_engine/app/components/page_not_found_component.rb
995
997
  - pg_engine/app/controllers/admin/accounts_controller.rb
996
998
  - pg_engine/app/controllers/admin/email_logs_controller.rb
997
999
  - pg_engine/app/controllers/admin/emails_controller.rb
1000
+ - pg_engine/app/controllers/admin/eventos_controller.rb
998
1001
  - pg_engine/app/controllers/admin/user_accounts_controller.rb
999
1002
  - pg_engine/app/controllers/admin/users_controller.rb
1000
1003
  - pg_engine/app/controllers/concerns/pg_engine/resource.rb
@@ -1034,6 +1037,7 @@ files:
1034
1037
  - pg_engine/app/models/current.rb
1035
1038
  - pg_engine/app/models/email.rb
1036
1039
  - pg_engine/app/models/email_log.rb
1040
+ - pg_engine/app/models/evento.rb
1037
1041
  - pg_engine/app/models/mensaje_contacto.rb
1038
1042
  - pg_engine/app/models/pg_engine/base_record.rb
1039
1043
  - pg_engine/app/models/user.rb
@@ -1048,6 +1052,7 @@ files:
1048
1052
  - pg_engine/app/policies/user_account_policy.rb
1049
1053
  - pg_engine/app/policies/user_policy.rb
1050
1054
  - pg_engine/app/policies/user_registration_policy.rb
1055
+ - pg_engine/app/views/active_storage/blobs/_blob.html.erb
1051
1056
  - pg_engine/app/views/admin/accounts/_account.html.slim
1052
1057
  - pg_engine/app/views/admin/accounts/_form.html.slim
1053
1058
  - pg_engine/app/views/admin/accounts/edit.html.slim
@@ -1059,6 +1064,8 @@ files:
1059
1064
  - pg_engine/app/views/admin/emails/_form.html.slim
1060
1065
  - pg_engine/app/views/admin/emails/_send.html.slim
1061
1066
  - pg_engine/app/views/admin/emails/show.html.slim
1067
+ - pg_engine/app/views/admin/eventos/index.html.slim
1068
+ - pg_engine/app/views/admin/eventos/new.html.slim
1062
1069
  - pg_engine/app/views/admin/user_accounts/_form.html.slim
1063
1070
  - pg_engine/app/views/admin/user_accounts/_user_account.html.slim
1064
1071
  - pg_engine/app/views/admin/user_accounts/edit.html.slim
@@ -1069,6 +1076,7 @@ files:
1069
1076
  - pg_engine/app/views/admin/users/edit.html.slim
1070
1077
  - pg_engine/app/views/admin/users/new.html.slim
1071
1078
  - pg_engine/app/views/admin/users/show.html.slim
1079
+ - pg_engine/app/views/layouts/action_text/contents/_content.html.erb
1072
1080
  - pg_engine/app/views/pg_engine/admin_mailer/admin_mail.html.slim
1073
1081
  - pg_engine/app/views/pg_engine/base/download.xlsx.axlsx
1074
1082
  - pg_engine/app/views/pg_engine/base/edit.html.slim
@@ -1103,6 +1111,7 @@ files:
1103
1111
  - pg_engine/db/migrate/20240523183651_create_email_logs.rb
1104
1112
  - pg_engine/db/migrate/20240611000219_create_noticed_tables.noticed.rb
1105
1113
  - pg_engine/db/migrate/20240611000220_add_notifications_count_to_noticed_event.noticed.rb
1114
+ - pg_engine/db/migrate/20240614130246_create_action_text_tables.action_text.rb
1106
1115
  - pg_engine/db/seeds.rb
1107
1116
  - pg_engine/lib/pg_engine.rb
1108
1117
  - pg_engine/lib/pg_engine/configuracion.rb
@@ -1160,6 +1169,7 @@ files:
1160
1169
  - pg_engine/spec/models/user_account_spec.rb
1161
1170
  - pg_engine/spec/models/user_spec.rb
1162
1171
  - pg_engine/spec/pg_engine/pdf_preview_generator_spec.rb
1172
+ - pg_engine/spec/requests/admin/eventos_spec.rb
1163
1173
  - pg_engine/spec/requests/base_controller_requests_spec.rb
1164
1174
  - pg_engine/spec/system/alerts_spec.rb
1165
1175
  - pg_engine/spec/system/destroy_spec.rb