pg_rails 7.0.8.pre.alpha.103 → 7.0.8.pre.alpha.104
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/pg_engine/app/assets/stylesheets/actiontext.css +31 -0
- data/pg_engine/app/assets/stylesheets/notifications.scss +31 -2
- data/pg_engine/app/components/notification_component.rb +9 -4
- data/pg_engine/app/components/notifications_bell_component.rb +25 -0
- data/pg_engine/app/controllers/admin/eventos_controller.rb +57 -0
- data/pg_engine/app/controllers/concerns/pg_engine/resource.rb +0 -2
- data/pg_engine/app/controllers/pg_engine/base_controller.rb +6 -1
- data/pg_engine/app/controllers/users/notifications_controller.rb +6 -0
- data/pg_engine/app/models/evento.rb +11 -0
- data/pg_engine/app/notifiers/simple_user_notifier.rb +4 -0
- data/pg_engine/app/views/active_storage/blobs/_blob.html.erb +1 -0
- data/pg_engine/app/views/admin/eventos/index.html.slim +6 -0
- data/pg_engine/app/views/admin/eventos/new.html.slim +10 -0
- data/pg_engine/app/views/layouts/action_text/contents/_content.html.erb +3 -0
- data/pg_engine/config/routes.rb +2 -0
- data/pg_engine/db/migrate/20240614130246_create_action_text_tables.action_text.rb +26 -0
- data/pg_engine/lib/pg_engine/engine.rb +8 -0
- data/pg_engine/spec/helpers/pg_engine/pg_rails_helper_spec.rb +0 -2
- data/pg_engine/spec/requests/admin/eventos_spec.rb +56 -0
- data/pg_engine/spec/system/noticed_spec.rb +3 -0
- data/pg_layout/app/javascript/config/index.js +3 -0
- data/pg_layout/app/javascript/controllers/notifications_controller.js +21 -3
- data/pg_layout/app/views/pg_layout/_navbar.html.erb +2 -9
- data/pg_rails/lib/version.rb +1 -1
- data/pg_rails/scss/pg_rails.scss +2 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6fdaccc20ccfd58b84e38d8e40297b88dfeedbb6f7a15537f3e73c8b8df44ec
|
4
|
+
data.tar.gz: c4ade51d7e5e236773a2bd383c7eb57450b62f7c34bd2e2de6dbfb31359bebe7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '009593f789f9711382f098a7fd6cbf71f944374c2da8a5f16c6cc1a3873793412ff03e5496d705e3533cfdb4c8796172b258a54d8becdf72a2253bdbc6404e0d'
|
7
|
+
data.tar.gz: 639c41eb50e2a611522577a8bfc808257e8ca350e7b0a40632749ee6994c797da860de6d4eb39327885c0433f37a4292c2a7b8d7a9aa966f59a9de18dfa0da5b
|
@@ -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
|
-
|
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:
|
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
|
-
|
15
|
-
|
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
|
-
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= image_tag blob %>
|
@@ -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
|
data/pg_engine/config/routes.rb
CHANGED
@@ -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
|
|
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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"
|
data/pg_rails/lib/version.rb
CHANGED
data/pg_rails/scss/pg_rails.scss
CHANGED
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.
|
4
|
+
version: 7.0.8.pre.alpha.104
|
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-
|
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
|