pg_rails 7.6.14 → 7.6.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa1826517f886fd0a5fd3ea458411cd600181118fd4494563f6fbe78e32d65c9
4
- data.tar.gz: d0d832af6e4c1912a3edf1f3a65fefcb36541773e65d681a1697e75d96ad85a7
3
+ metadata.gz: f1be39ed176491e2f5da66a9a1764f6c2f8c8509c7510999f72007cd0a1bb0f7
4
+ data.tar.gz: 591fe03520a040b5651b3a8153d7bdc7bc42afd6c8b6b44cfbf5a6525d883e89
5
5
  SHA512:
6
- metadata.gz: 672e3fe48b7a305c61ab0e2eb5cbf218dc0e56fcfbd23a0faec4c5dc655a08b01170a98ce280781b14e1a3547538afc69d48d95756090348c4544dd69835364c
7
- data.tar.gz: a648588c54f6e1f72265c511164b2109120f8813423f9c9d9d428f87441e90aaf8835953e906ab041a20378d744ef9b7651d7dde30087cd630c87a45561f3d18
6
+ metadata.gz: 06c346252f40b648dc108ada25a3a4ab7dda9cb8ead20964d835aa19231063b165e56c2565d7b854ca8aa073245346c7b269852e4f392ae5d1139acef3cbe629
7
+ data.tar.gz: 619cc8ab8f5ef3ab61f8e825b9c3ca3ba8767a77ee35ebe7e0f6dc23add99b33075d8049f89f2022d42417a94b06ec19c81fc5b36fb8271d42132183d32fce08
@@ -0,0 +1,75 @@
1
+ module Admin
2
+ class SimpleUserNotifiersController < AdminController
3
+ include PgEngine::Resource
4
+
5
+ self.clase_modelo = SimpleUserNotifier
6
+
7
+ before_action :set_instancia_modelo, only: %i[new create show edit update destroy]
8
+
9
+ def column_options_for(object, attribute)
10
+ case attribute
11
+ when :message
12
+ { class: 'column-truncate-30', title: object.send(attribute).to_s }
13
+ else
14
+ super
15
+ end
16
+ end
17
+
18
+ # rubocop:disable Metrics/MethodLength
19
+ def create
20
+ @event = SimpleUserNotifier.new(modelo_params)
21
+ # @event.message.save!
22
+ unless @event.valid?
23
+ render :new, status: :unprocessable_entity
24
+ return
25
+ end
26
+ json_params_for_event = {
27
+ message: @event.message,
28
+ tooltip: @event.tooltip
29
+ }
30
+ notifier = SimpleUserNotifier.with(json_params_for_event)
31
+
32
+ case @event.target
33
+ when 'todos'
34
+ notifier.deliver(User.all)
35
+ when 'devs'
36
+ notifier.deliver(User.where(developer: true))
37
+ when 'user_ids'
38
+ notifier.deliver(User.where(email: @event.user_ids.split(',')))
39
+ else
40
+ # :nocov:
41
+ 'shouldnt happen'
42
+ # :nocov:
43
+ end
44
+
45
+ redirect_to admin_simple_user_notifiers_path
46
+ rescue StandardError => e
47
+ # :nocov:
48
+ flash.now[:alert] = e.to_s
49
+ render :new, status: :unprocessable_entity
50
+ # :nocov:
51
+ end
52
+ # rubocop:enable Metrics/MethodLength
53
+
54
+ private
55
+
56
+ def atributos_permitidos
57
+ %i[
58
+ type message tooltip record_type record_id target subject
59
+ user_ids message_text
60
+ ]
61
+ end
62
+
63
+ def atributos_para_buscar
64
+ %i[]
65
+ end
66
+
67
+ def atributos_para_listar
68
+ %i[message tooltip created_at notifications_count]
69
+ end
70
+
71
+ def atributos_para_mostrar
72
+ %i[tooltip]
73
+ end
74
+ end
75
+ end
@@ -29,4 +29,21 @@ class SimpleUserNotifier < ApplicationNotifier
29
29
  # Add required params
30
30
  #
31
31
  required_param :message
32
+
33
+ attr_accessor :target, :user_ids
34
+
35
+ enumerize :target, in: { todos: 0, devs: 1, user_ids: 2 }
36
+
37
+ %i[message message_text tooltip subject].each do |field|
38
+ define_method :"#{field}" do
39
+ params[field]
40
+ end
41
+ define_method :"#{field}=" do |value|
42
+ params[field] = value
43
+ end
44
+ end
45
+
46
+ def self.policy_class
47
+ ApplicationPolicy
48
+ end
32
49
  end
@@ -0,0 +1,14 @@
1
+ = pg_form_for @simple_user_notifier do |f|
2
+ - if params[:plain_text]
3
+ = link_to 'Change to rich text', url_for
4
+ = f.input :message, as: :text
5
+ - else
6
+ = link_to 'Change to plain text', url_for(plain_text: true)
7
+ = f.rich_text_area :message
8
+ = f.input :tooltip
9
+ / = f.input :record_type
10
+ / = f.input :record_id
11
+ - unless @simple_user_notifier.persisted?
12
+ = f.input :target
13
+ = f.input :user_ids, label: 'User emails'
14
+ = f.submit
@@ -0,0 +1,29 @@
1
+ - content_for :actions do
2
+ = @simple_user_notifier.destroy_link_redirect
3
+ .ms-1
4
+ = @simple_user_notifier.edit_link
5
+
6
+ table.table.table-borderless.table-sm.w-auto.mb-0.m-3
7
+ - atributos_para_mostrar.each do |att|
8
+ tr
9
+ th = @clase_modelo.human_attribute_name(att)
10
+ td = render InlineShowComponent.new(@simple_user_notifier.object, att)
11
+ tr
12
+ th = t('attributes.created_at')
13
+ td = @simple_user_notifier.created_at
14
+ tr
15
+ th = t('attributes.updated_at')
16
+ td = @simple_user_notifier.updated_at
17
+
18
+ .bg-secondary-subtle.p-4.mt-3.trix-content
19
+ = @simple_user_notifier.message.html_safe
20
+
21
+ div style="max-width: 30em"
22
+ table.table.table-sm
23
+ tr
24
+ th Destinatario
25
+ th Visto
26
+ - @simple_user_notifier.notifications.order('seen_at desc nulls last').each do |notification|
27
+ tr
28
+ td = notification.recipient
29
+ td = dmy_time notification.seen_at
@@ -42,7 +42,7 @@ Rails.application.routes.draw do
42
42
 
43
43
  namespace :admin, path: 'a' do
44
44
  pg_resource(:emails)
45
- pg_resource(:eventos)
45
+ pg_resource(:simple_user_notifiers)
46
46
  pg_resource(:email_logs) do
47
47
  collection do
48
48
  post :mailgun_sync
@@ -39,7 +39,7 @@ module PgEngine
39
39
 
40
40
  navbar.add_item('sidebar.signed_in', {
41
41
  name: 'Eventos',
42
- path: 'admin_eventos_path'
42
+ path: 'admin_simple_user_notifiers_path'
43
43
  })
44
44
  navbar.add_item('sidebar.signed_in', {
45
45
  name: 'Emails',
@@ -48,10 +48,12 @@ document.addEventListener('pg:record-created', (ev) => {
48
48
  })
49
49
 
50
50
  document.addEventListener('pg:record-updated', (ev) => {
51
- Turbo.visit(window.location)
52
- setTimeout(() => {
53
- Turbo.cache.clear()
54
- }, 1000)
51
+ if (!ev.data.dataset.inline) {
52
+ Turbo.visit(window.location)
53
+ setTimeout(() => {
54
+ Turbo.cache.clear()
55
+ }, 1000)
56
+ }
55
57
  })
56
58
 
57
59
  document.addEventListener('pg:record-destroyed', (ev) => {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRails
4
- VERSION = '7.6.14'
4
+ VERSION = '7.6.16'
5
5
  end
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.6.14
4
+ version: 7.6.16
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-10-11 00:00:00.000000000 Z
11
+ date: 2024-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -693,7 +693,7 @@ files:
693
693
  - pg_engine/app/controllers/admin/accounts_controller.rb
694
694
  - pg_engine/app/controllers/admin/email_logs_controller.rb
695
695
  - pg_engine/app/controllers/admin/emails_controller.rb
696
- - pg_engine/app/controllers/admin/eventos_controller.rb
696
+ - pg_engine/app/controllers/admin/simple_user_notifiers_controller.rb
697
697
  - pg_engine/app/controllers/admin/user_accounts_controller.rb
698
698
  - pg_engine/app/controllers/admin/users_controller.rb
699
699
  - pg_engine/app/controllers/concerns/pg_engine/require_tenant_set.rb
@@ -746,7 +746,6 @@ files:
746
746
  - pg_engine/app/models/current.rb
747
747
  - pg_engine/app/models/email.rb
748
748
  - pg_engine/app/models/email_log.rb
749
- - pg_engine/app/models/evento.rb
750
749
  - pg_engine/app/models/mensaje_contacto.rb
751
750
  - pg_engine/app/models/pg_engine/base_record.rb
752
751
  - pg_engine/app/models/user.rb
@@ -776,8 +775,8 @@ files:
776
775
  - pg_engine/app/views/admin/emails/_form.html.slim
777
776
  - pg_engine/app/views/admin/emails/_send.html.slim
778
777
  - pg_engine/app/views/admin/emails/show.html.slim
779
- - pg_engine/app/views/admin/eventos/index.html.slim
780
- - pg_engine/app/views/admin/eventos/new.html.slim
778
+ - pg_engine/app/views/admin/simple_user_notifiers/_form.html.slim
779
+ - pg_engine/app/views/admin/simple_user_notifiers/show.html.slim
781
780
  - pg_engine/app/views/admin/user_accounts/_form.html.slim
782
781
  - pg_engine/app/views/admin/user_accounts/_user_account.html.slim
783
782
  - pg_engine/app/views/admin/user_accounts/edit.html.slim
@@ -1,83 +0,0 @@
1
- module Admin
2
- class EventosController < AdminController
3
- layout 'pg_layout/containerized'
4
-
5
- add_breadcrumb 'Eventos'
6
-
7
- before_action do
8
- @notifier_types = %w[
9
- EmailUserNotifier
10
- SimpleUserNotifier
11
- ]
12
- end
13
-
14
- def index
15
- @events = Noticed::Event.order(id: :desc)
16
- end
17
-
18
- # rubocop:disable Metrics/AbcSize
19
- def new
20
- @event = Evento.new(type: 'SimpleUserNotifier')
21
- return if params[:event_id].blank?
22
-
23
- reference = Noticed::Event.find(params[:event_id])
24
- @event.type = reference.type
25
- @event.message = reference.params[:message]
26
- @event.message_text = reference.params[:message_text]
27
- @event.tooltip = reference.params[:tooltip]
28
- @event.subject = reference.params[:subject]
29
- @event.record_type = reference.record_type
30
- @event.record_id = reference.record_id
31
- end
32
- # rubocop:enable Metrics/AbcSize
33
-
34
- # rubocop:disable Metrics/MethodLength
35
- def create # rubocop:disable Metrics/AbcSize
36
- @event = Evento.new(event_params)
37
- # @event.message.save!
38
- unless @event.valid?
39
- render :new, status: :unprocessable_entity
40
- return
41
- end
42
- json_params_for_event = {
43
- record: @event.record,
44
- message: @event.message,
45
- message_text: @event.message_text,
46
- tooltip: @event.tooltip,
47
- subject: @event.subject
48
- }
49
- notifier_class = @event.type.constantize
50
- notifier = notifier_class.with(json_params_for_event)
51
-
52
- case @event.target
53
- when 'todos'
54
- notifier.deliver(User.all)
55
- when 'devs'
56
- notifier.deliver(User.where(developer: true))
57
- when 'user_ids'
58
- notifier.deliver(User.where(email: @event.user_ids.split(',')))
59
- else
60
- # :nocov:
61
- 'shouldnt happen'
62
- # :nocov:
63
- end
64
-
65
- redirect_to admin_eventos_path
66
- rescue StandardError => e
67
- # :nocov:
68
- flash.now[:alert] = e.to_s
69
- render :new, status: :unprocessable_entity
70
- # :nocov:
71
- end
72
- # rubocop:enable Metrics/MethodLength
73
-
74
- private
75
-
76
- def event_params
77
- params.require(:evento).permit(
78
- :type, :message, :tooltip, :record_type, :record_id, :target, :subject,
79
- :user_ids, :message_text
80
- )
81
- end
82
- end
83
- end
@@ -1,27 +0,0 @@
1
- class Evento
2
- include ActiveModel::API
3
- include ActionText::Attribute
4
- extend Enumerize
5
-
6
- attr_accessor :tooltip, :target, :message, :message_text, :type,
7
- :record_type, :record_id,
8
- :subject, :user_ids
9
-
10
- validates :target, :type, :message, presence: true
11
-
12
- enumerize :target, in: { todos: 0, devs: 1, user_ids: 2 }
13
-
14
- validates :message_text, :subject, presence: true, if: lambda {
15
- type == 'EmailUserNotifier'
16
- }
17
-
18
- validates :user_ids, presence: true, if: lambda {
19
- target == 'user_ids'
20
- }
21
-
22
- def record
23
- return if record_id.blank?
24
-
25
- record_type.constantize.find(record_id)
26
- end
27
- end
@@ -1,6 +0,0 @@
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
@@ -1,16 +0,0 @@
1
- = pg_form_for @event, url: admin_eventos_path do |f|
2
- = f.input :type, as: :select, collection: @notifier_types
3
- - if params[:plain_text]
4
- = link_to 'Change to rich text', url_for
5
- = f.input :message, as: :text
6
- - else
7
- = link_to 'Change to plain text', url_for(plain_text: true)
8
- = f.rich_text_area :message
9
- = f.input :message_text, as: :text, hint: 'Solo para emails, para la plain/text part'
10
- = f.input :tooltip
11
- = f.input :subject
12
- = f.input :record_type
13
- = f.input :record_id
14
- = f.input :target
15
- = f.input :user_ids, label: 'User emails'
16
- = f.submit