pg_rails 7.6.21.pre.11 → 7.6.21

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/pg_associable/app/helpers/pg_associable/form_builder_methods.rb +1 -0
  3. data/pg_engine/app/controllers/pg_engine/base_controller.rb +2 -0
  4. data/pg_engine/app/controllers/pg_engine/base_users_controller.rb +2 -0
  5. data/pg_engine/app/controllers/tenant/user_accounts_controller.rb +7 -16
  6. data/pg_engine/app/controllers/users/accounts_controller.rb +1 -1
  7. data/pg_engine/app/controllers/users/invitations_controller.rb +10 -4
  8. data/pg_engine/app/controllers/users/registrations_controller.rb +0 -2
  9. data/pg_engine/app/decorators/account_decorator.rb +3 -1
  10. data/pg_engine/app/decorators/pg_engine/base_record_decorator.rb +3 -2
  11. data/pg_engine/app/decorators/user_account_decorator.rb +4 -1
  12. data/pg_engine/app/helpers/pg_engine/flash_helper.rb +1 -1
  13. data/pg_engine/app/lib/pg_engine/default_url_options.rb +16 -12
  14. data/pg_engine/app/mailers/pg_engine/base_devise_mailer.rb +4 -0
  15. data/pg_engine/app/mailers/pg_engine/base_mailer.rb +16 -1
  16. data/pg_engine/app/models/account.rb +2 -6
  17. data/pg_engine/app/models/current.rb +1 -2
  18. data/pg_engine/app/models/email.rb +1 -1
  19. data/pg_engine/app/models/user.rb +6 -8
  20. data/pg_engine/app/models/user_account.rb +0 -4
  21. data/pg_engine/app/policies/account_policy.rb +9 -4
  22. data/pg_engine/app/policies/user_account_policy.rb +1 -5
  23. data/pg_engine/app/views/layouts/_logo.html.slim +8 -0
  24. data/pg_engine/app/views/users/accounts/show.html.slim +4 -3
  25. data/pg_engine/config/locales/es.rb +2 -0
  26. data/pg_engine/config/locales/es.yml +7 -2
  27. data/pg_engine/lib/pg_engine/active_job_extensions.rb +15 -0
  28. data/pg_engine/lib/pg_engine/configuracion.rb +2 -0
  29. data/pg_engine/lib/pg_engine/engine.rb +0 -3
  30. data/pg_engine/lib/pg_engine/site_brand.rb +39 -0
  31. data/pg_engine/lib/pg_engine/test/dummy_brand.rb +81 -0
  32. data/pg_engine/lib/pg_engine.rb +11 -1
  33. data/pg_engine/spec/factories/users.rb +6 -3
  34. data/pg_engine/spec/mailers/pg_engine/base_mailer_spec.rb +53 -0
  35. data/pg_engine/spec/requests/devise/invitations_spec.rb +13 -4
  36. data/pg_engine/spec/requests/users/accounts_spec.rb +19 -10
  37. data/pg_engine/spec/requests/users/base_controller_spec.rb +13 -12
  38. data/pg_engine/spec/requests/users/registrations_spec.rb +19 -18
  39. data/pg_engine/spec/requests/users/user_accounts_spec.rb +37 -1
  40. data/pg_layout/app/views/devise/invitations/new.html.erb +2 -1
  41. data/pg_layout/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
  42. data/pg_layout/app/views/devise/mailer/invitation_instructions.text.erb +1 -1
  43. data/pg_layout/app/views/layouts/pg_layout/base.html.slim +1 -1
  44. data/pg_layout/app/views/layouts/pg_layout/container_logo.html.slim +2 -3
  45. data/pg_layout/app/views/layouts/pg_layout/containerized.html.slim +2 -1
  46. data/pg_layout/app/views/layouts/pg_layout/devise_mailer.html.slim +3 -7
  47. data/pg_layout/app/views/layouts/pg_layout/devise_mailer.text.erb +2 -4
  48. data/pg_layout/app/views/layouts/pg_layout/mailer.html.slim +3 -7
  49. data/pg_layout/app/views/layouts/pg_layout/mailer.text.erb +2 -4
  50. data/pg_layout/app/views/pg_layout/_navbar.html.slim +7 -8
  51. data/pg_layout/app/views/pg_layout/_sidebar.html.slim +1 -1
  52. data/pg_layout/app/views/pg_layout/_sidebar_mobile.html.slim +1 -1
  53. data/pg_layout/app/views/pg_layout/_signed_in_links.html.slim +4 -4
  54. data/pg_rails/lib/version.rb +1 -1
  55. metadata +7 -2
@@ -4,7 +4,9 @@ require_relative 'pg_engine/engine'
4
4
  require_relative 'pg_engine/core_ext'
5
5
  require_relative 'pg_engine/error'
6
6
  require_relative 'pg_engine/configuracion'
7
+ require_relative 'pg_engine/site_brand'
7
8
  require_relative 'pg_engine/navigator'
9
+ require_relative 'pg_engine/active_job_extensions'
8
10
  require_relative 'pg_engine/email_observer'
9
11
  require_relative 'pg_engine/mailgun/log_sync'
10
12
  require_relative 'pg_engine/route_helpers'
@@ -84,12 +86,16 @@ end
84
86
 
85
87
  module PgEngine
86
88
  class << self
87
- attr_writer :configuracion
89
+ attr_writer :configuracion, :site_brand
88
90
 
89
91
  def configuracion
90
92
  @configuracion ||= Configuracion.new
91
93
  end
92
94
 
95
+ def site_brand
96
+ @site_brand || (raise PgEngine::Error, 'no site brand manager')
97
+ end
98
+
93
99
  def config
94
100
  configuracion
95
101
  end
@@ -115,3 +121,7 @@ module PgEngine
115
121
  @deprecator ||= ActiveSupport::Deprecation.new('7.5', 'PgEngine')
116
122
  end
117
123
  end
124
+
125
+ ActiveSupport.on_load(:active_job) do |base|
126
+ base.prepend PgEngine::ActiveJobExtensions
127
+ end
@@ -72,9 +72,12 @@ FactoryBot.define do
72
72
  trait :owner do
73
73
  after(:create) do |model|
74
74
  model.user_accounts.create!(profiles: [:account__owner])
75
- # ActsAsTenant.with_tenant(create(:account)) do
76
- # model.user_accounts.create!(profiles: [:account__owner])
77
- # end
75
+ end
76
+ end
77
+
78
+ trait :guest do
79
+ after(:create) do |model|
80
+ model.user_accounts.create!(profiles: [])
78
81
  end
79
82
  end
80
83
  end
@@ -0,0 +1,53 @@
1
+ require 'rails_helper'
2
+
3
+ class DummyMailer < ApplicationMailer
4
+ def test_mail
5
+ mail(to: 'fake@mail.com') do |format|
6
+ format.html { render inline: erb_template } # rubocop:disable Rails/RenderInline
7
+ end
8
+ end
9
+
10
+ private
11
+
12
+ def erb_template
13
+ <<-ERB
14
+ <%= root_url %>
15
+ ERB
16
+ end
17
+ end
18
+
19
+ describe PgEngine::BaseMailer do
20
+ describe 'default_url_options' do
21
+ subject do
22
+ mail.deliver
23
+ end
24
+
25
+ let(:mail) { DummyMailer.test_mail }
26
+
27
+ # rubocop:disable Style/GlobalVars
28
+ before do
29
+ $site_brand_before = PgEngine.site_brand
30
+ PgEngine.site_brand = PgEngine::Test::DummyBrand.new(include_all: true)
31
+ end
32
+
33
+ after do
34
+ PgEngine.site_brand = $site_brand_before
35
+ end
36
+ # rubocop:enable Style/GlobalVars
37
+
38
+ it 'cuando elige el default' do
39
+ expect { subject }.to have_warned('Default site brand chosen')
40
+ expect(mail.body.encoded).to include 'factura.localhost'
41
+ expect(mail.header_fields.get_field(:from).value).to include 'Factura Bien'
42
+ expect(mail.header_fields.get_field(:from).value).to include 'noreply@factura'
43
+ end
44
+
45
+ it 'cuando es un brand específico' do
46
+ Current.app_name = :procura
47
+ subject
48
+ expect(mail.body.encoded).to include 'procura.localhost'
49
+ expect(mail.header_fields.get_field(:from).value).to include 'Procura Bien'
50
+ expect(mail.header_fields.get_field(:from).value).to include 'noreply@procura'
51
+ end
52
+ end
53
+ end
@@ -2,7 +2,7 @@ require 'rails_helper'
2
2
 
3
3
  RSpec::Matchers.define_negated_matcher :not_change, :change
4
4
 
5
- describe 'invite users to the platform and to an account' do
5
+ describe 'invite users to the platform and to an account #' do
6
6
  let(:account) { ActsAsTenant.current_tenant }
7
7
 
8
8
  describe 'send an invitation to the platform', :tpath_req do
@@ -108,7 +108,7 @@ describe 'invite users to the platform and to an account' do
108
108
  end
109
109
  end
110
110
 
111
- describe 'update an invitation' do
111
+ describe 'when updating an invitation' do
112
112
  let(:logged_user) { create :user, account: }
113
113
  let(:user_account) do
114
114
  logged_user.user_accounts.first
@@ -119,7 +119,7 @@ describe 'invite users to the platform and to an account' do
119
119
  user_account.update(membership_status:, invitation_status: :ist_invited)
120
120
  end
121
121
 
122
- context 'when accepting an invite' do
122
+ context 'accepting an invite' do
123
123
  subject do
124
124
  put "/u/espacios/#{account.to_param}/update_invitation", params: { accept: 1 }
125
125
  end
@@ -130,7 +130,16 @@ describe 'invite users to the platform and to an account' do
130
130
  expect { subject }.to change { user_account.reload.invitation_status }.to('ist_accepted')
131
131
  end
132
132
 
133
- pending 'and doesnt belong to the account'
133
+ context 'and doesnt belong to the account' do
134
+ before do
135
+ user_account.destroy
136
+ end
137
+
138
+ it 'returns unauthorized' do
139
+ subject
140
+ expect(response).to have_http_status(:unauthorized)
141
+ end
142
+ end
134
143
  end
135
144
 
136
145
  context 'when rejecting an invite' do
@@ -9,7 +9,7 @@ describe 'Users::AccountsController' do
9
9
  create_list :user, 2
10
10
  end
11
11
 
12
- describe 'show' do
12
+ describe '#show' do
13
13
  it 'shows the owned account' do
14
14
  get "/u/espacios/#{account.to_param}"
15
15
  expect(response).to have_http_status(:ok)
@@ -21,7 +21,7 @@ describe 'Users::AccountsController' do
21
21
  expect(response).to have_http_status(:unauthorized)
22
22
  end
23
23
 
24
- context 'when not the owner' do
24
+ context 'when is guest user' do
25
25
  subject do
26
26
  get "/u/espacios/#{other_account.to_param}"
27
27
  end
@@ -38,23 +38,21 @@ describe 'Users::AccountsController' do
38
38
  end
39
39
  end
40
40
 
41
- context 'when its active' do
41
+ context 'and has access to user list' do
42
42
  let(:profiles) { [:user_accounts__read] }
43
43
 
44
- pending 'See the users'
45
-
46
44
  it do
47
45
  subject
48
- # expect(response.body).to have_text('Lista de usuarios')
49
- expect(response.body).to have_text('Dejar la cuenta')
46
+ expect(response.body).to include('embedded__user_accounts')
47
+ expect(response.body).to have_text('Dejar el espacio')
50
48
  end
51
49
  end
52
50
 
53
51
  context 'when its active and dont have user_accounts__read access' do
54
52
  it do
55
53
  subject
56
- expect(response.body).to have_no_text('Lista de usuarios')
57
- expect(response.body).to have_text('Dejar la cuenta')
54
+ expect(response.body).not_to include('embedded__user_accounts')
55
+ expect(response.body).to have_text('Dejar el espacio')
58
56
  end
59
57
  end
60
58
 
@@ -64,7 +62,7 @@ describe 'Users::AccountsController' do
64
62
  it do
65
63
  subject
66
64
  expect(response.body).to have_text('Deshabilitado')
67
- expect(response.body).to have_text('Dejar la cuenta')
65
+ expect(response.body).to have_text('Dejar el espacio')
68
66
  end
69
67
  end
70
68
 
@@ -79,6 +77,17 @@ describe 'Users::AccountsController' do
79
77
  end
80
78
  end
81
79
 
80
+ describe '#edit' do
81
+ let(:nombre) { Faker::Lorem.sentence }
82
+
83
+ it do
84
+ get "/u/espacios/#{account.to_param}/edit"
85
+ expect(response).to have_http_status(:ok)
86
+ patch "/u/espacios/#{account.to_param}", params: { account: { nombre: } }
87
+ expect(account.reload.nombre).to eq nombre
88
+ end
89
+ end
90
+
82
91
  describe 'index' do
83
92
  subject do
84
93
  get '/u/espacios'
@@ -30,17 +30,18 @@ describe 'redirection' do
30
30
  end
31
31
  end
32
32
 
33
- context 'when belongs to other account', pending: 'subdomains not ready' do
34
- before do
35
- create :account, subdomain: 'other'
36
- host! 'other.example.com'
37
- end
38
-
39
- it do
40
- get '/u/t/cosas'
41
-
42
- expect(response).to redirect_to new_user_session_path, tpath: false
43
- end
44
- end
33
+ # TODO: activar subdomains
34
+ # context 'when belongs to other account', pending: 'subdomains not ready' do
35
+ # before do
36
+ # create :account, subdomain: 'other'
37
+ # host! 'other.example.com'
38
+ # end
39
+
40
+ # it do
41
+ # get '/u/t/cosas'
42
+
43
+ # expect(response).to redirect_to new_user_session_path, tpath: false
44
+ # end
45
+ # end
45
46
  end
46
47
  end
@@ -70,24 +70,25 @@ describe 'registrations controller' do
70
70
  end
71
71
  end
72
72
 
73
- context 'cuando hay tenant' do
74
- before do
75
- host! 'bien.localhost.com'
76
- create :account, subdomain: 'bien'
77
- end
78
-
79
- it do
80
- expect { subject }.to change(User, :count).by(1)
81
- end
82
-
83
- it 'creates the user account', pending: 'subdomains not working' do
84
- expect { subject }.to change(UserAccount, :count).by(1)
85
- end
86
-
87
- it do
88
- expect { subject }.not_to change(Account, :count)
89
- end
90
- end
73
+ # TODO: activar subdomains
74
+ # context 'cuando hay tenant' do
75
+ # before do
76
+ # host! 'bien.localhost.com'
77
+ # create :account, subdomain: 'bien'
78
+ # end
79
+
80
+ # it do
81
+ # expect { subject }.to change(User, :count).by(1)
82
+ # end
83
+
84
+ # it 'creates the user account', pending: 'subdomains not working' do
85
+ # expect { subject }.to change(UserAccount, :count).by(1)
86
+ # end
87
+
88
+ # it do
89
+ # expect { subject }.not_to change(Account, :count)
90
+ # end
91
+ # end
91
92
  end
92
93
 
93
94
  describe '#edit' do
@@ -10,7 +10,43 @@ describe 'user accounts', :tpath_req do
10
10
  sign_in logged_user
11
11
  end
12
12
 
13
- pending 'index'
13
+ describe '#index' do
14
+ subject do
15
+ get '/u/t/user_accounts'
16
+ end
17
+
18
+ it do
19
+ subject
20
+ expect(response).to have_http_status(:ok)
21
+ end
22
+
23
+ context 'when user is owner' do
24
+ it 'shows the permissions' do
25
+ subject
26
+ expect(response.body).to have_text('Permisos')
27
+ end
28
+ end
29
+
30
+ context 'when user is guest' do
31
+ before do
32
+ create :user, :owner
33
+ end
34
+
35
+ let!(:logged_user) { create :user, :guest }
36
+
37
+ it 'when cant see the user list returns unauthorized' do
38
+ subject
39
+ expect(response).to have_http_status(:unauthorized)
40
+ end
41
+
42
+ it 'when can see user list dont shows the permissions' do
43
+ logged_user.user_account_for(account).update(profiles: [:user_accounts__read])
44
+ subject
45
+ expect(response).to have_http_status(:ok)
46
+ expect(response.body).to have_no_text('Permisos')
47
+ end
48
+ end
49
+ end
14
50
 
15
51
  describe 'show' do
16
52
  it do
@@ -1,4 +1,5 @@
1
- <h2><%= t "devise.invitations.new.header" %></h2>
1
+ <h2><%= UserAccount.new.decorate.submit_default_value %></h2>
2
+
2
3
  <div style="max-width: 40em" data-controller="pg_form">
3
4
  <%= pg_form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
4
5
  <div class="form-inputs">
@@ -1,4 +1,4 @@
1
- <p><%= t("devise.mailer.invitation_instructions.someone_invited_you", inviter: @resource.invited_by, app_name: I18n.t(@resource.invited_to_app, scope: 'app_name')) %></p>
1
+ <p><%= t("devise.mailer.invitation_instructions.someone_invited_you", inviter: @resource.invited_by, app_name: PgEngine.site_brand.name) %></p>
2
2
 
3
3
  <p><%= t("devise.mailer.invitation_instructions.follow_link") %></p>
4
4
 
@@ -1,4 +1,4 @@
1
- <%= t("devise.mailer.invitation_instructions.someone_invited_you", inviter: @resource.invited_by, app_name: I18n.t(@resource.invited_to_app, scope: 'app_name')) %>
1
+ <%= t("devise.mailer.invitation_instructions.someone_invited_you", inviter: @resource.invited_by, app_name: PgEngine.site_brand.name) %>
2
2
 
3
3
  <%= t("devise.mailer.invitation_instructions.follow_link") %>
4
4
 
@@ -9,7 +9,7 @@ html
9
9
  meta name="turbo-visit-control" content="reload"
10
10
 
11
11
  - cache :title_icon
12
- title = t(Current.app_name, scope: 'app_name')
12
+ title = PgEngine.site_brand.name
13
13
  - begin
14
14
  = render partial: 'layouts/favicon'
15
15
  - rescue ActionView::MissingTemplate => e
@@ -1,9 +1,8 @@
1
1
  - content_for :content do
2
2
  .container-fluid.pt-4
3
3
  .text-center
4
- - if @navbar.logo_xl_url.present?
5
- .mb-4
6
- = image_tag @navbar.logo_xl_url, class: 'img-fluid', style: 'max-height: 4em'
4
+ .mb-4
5
+ = image_tag PgEngine.site_brand.logo_xl_url, class: 'img-fluid', style: 'max-height: 4em'
7
6
 
8
7
  = content_for?(:container_logo_content) ? yield(:container_logo_content) : yield
9
8
 
@@ -1,5 +1,6 @@
1
1
  - content_for :content do
2
- div class="pt-3 #{modal_targeted? ? '' : @container_class || 'container-fluid'}" style=@container_style
2
+ - klass = modal_targeted? ? '' : (@container_class || 'container-fluid')
3
+ div class="pt-3 #{klass}" style=@container_style
3
4
  = content_for?(:containerized_content) ? yield(:containerized_content) : yield
4
5
 
5
6
  = render template: 'layouts/pg_layout/base'
@@ -3,10 +3,6 @@ html
3
3
  center
4
4
  = yield
5
5
 
6
- - if @footer_href.present?
7
- footer style="margin-top: 2em;"
8
- = link_to @footer_href, rel: 'noreferrer', target: :_blank do
9
- - if @footer_image_src.present?
10
- = image_tag @footer_image_src, alt: @footer_image_alt
11
- - else
12
- = @footer_image_alt
6
+ footer style="margin-top: 2em;"
7
+ = link_to PgEngine.site_brand.landing_site_url, rel: 'noreferrer', target: :_blank do
8
+ = image_tag @footer_image_src, alt: PgEngine.site_brand.name
@@ -1,7 +1,5 @@
1
1
  <%= yield %>
2
2
 
3
- <% if @footer_href.present? %>
4
3
  ----------------------
5
- <%= @footer_image_alt %>
6
- <%= @footer_href %>
7
- <% end %>
4
+ <%= PgEngine.site_brand.name %>
5
+ <%= PgEngine.site_brand.landing_site_url %>
@@ -2,10 +2,6 @@ html
2
2
  body style="font-family: sans-serif"
3
3
  = yield
4
4
 
5
- - if @footer_href.present?
6
- footer style="margin-top: 2em;"
7
- = link_to @footer_href, rel: 'noreferrer', target: :_blank do
8
- - if @footer_image_src.present?
9
- = image_tag @footer_image_src, alt: @footer_image_alt
10
- - else
11
- = @footer_image_alt
5
+ footer style="margin-top: 2em;"
6
+ = link_to PgEngine.site_brand.landing_site_url, rel: 'noreferrer', target: :_blank do
7
+ = image_tag @footer_image_src, alt: PgEngine.site_brand.name
@@ -1,7 +1,5 @@
1
1
  <%= yield %>
2
2
 
3
- <% if @footer_href.present? %>
4
3
  ----------------------
5
- <%= @footer_image_alt %>
6
- <%= @footer_href %>
7
- <% end %>
4
+ <%= PgEngine.site_brand.name %>
5
+ <%= PgEngine.site_brand.landing_site_url %>
@@ -1,21 +1,20 @@
1
1
  nav class="navbar navbar-expand-#{@breakpoint_navbar_expand}" data-bs-theme="dark"
2
- .container-fluid.xgap-2
2
+ .container-fluid.gap-2
3
3
  div
4
4
  - unless @sidebar == false
5
5
  button data-controller="navbar" data-action="navbar#expandNavbar" class="btn btn-outline-light me-2 d-none d-#{@breakpoint_navbar_expand}-inline-block"
6
6
  i class="bi #{@navbar_chevron_class}"
7
- - if @navbar.logo.present?
8
- span.ms-3
9
- = render @navbar.logo
7
+ span.ms-3
8
+ = render partial: 'layouts/logo'
10
9
  - if user_signed_in? && @notifications_bell.present?
11
10
  div class="d-#{@breakpoint_navbar_expand}-none"
12
11
  = render @notifications_bell
13
- div
12
+ .d-flex
13
+ - @navbar.extensiones.each do |extension|
14
+ = extension
14
15
  - if user_signed_in?
15
16
  .collapse.navbar-collapse.justify-content-end
16
17
  = render partial: 'pg_layout/signed_in_links'
17
- - @navbar.extensiones.each do |extension|
18
- = extension
19
18
  div class="d-#{@breakpoint_navbar_expand}-none"
20
19
  - if user_signed_in?
21
20
  a.d-flex.align-items-center.gap-2 href="#" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample"
@@ -38,7 +37,7 @@ nav class="navbar navbar-expand-#{@breakpoint_navbar_expand}" data-bs-theme="dar
38
37
  = render NotificationComponent.with_collection(@notifications) if @notifications&.any?
39
38
  - else
40
39
  span.text-light.text-center
41
- | No hay notificaciones
40
+ | No hay notificaciones
42
41
  .text-center
43
42
  button.btn.btn-link.text-light.btn-sm[type="button" data-bs-toggle="collapse" data-bs-target="#notifications-collapse"]
44
43
  i.bi-chevron-up.fs-3
@@ -1,7 +1,7 @@
1
1
  div id="sidebar" class="#{@navbar_opened_class} flex-shrink-0 d-none d-#{@breakpoint_navbar_expand}-block"
2
2
  .mt-1
3
3
  .m-3
4
- = render @navbar.logo if @navbar.logo.present?
4
+ = render partial: 'layouts/logo'
5
5
  ul.list-unstyled.ps-0.mt-5
6
6
  - @navbar.sidebar.each do |entry|
7
7
  - next if @navbar.hide_entry?(entry)
@@ -14,4 +14,4 @@
14
14
  = entry[:title]
15
15
  css:
16
16
  .offcanvas a { text-decoration: none; }
17
- .offcanvas li { xmargin-top: 0.75em; }
17
+ .offcanvas li { xmargin-top: 0.75em; }
@@ -18,19 +18,19 @@ ul.navbar-nav.gap-3.align-items-center class="gap-#{@breakpoint_navbar_expand}-0
18
18
  li = link_to ua.account, tenant_root_path(tid: ua.to_param), class: 'dropdown-item'
19
19
  li
20
20
  hr.dropdown-divider
21
- li = link_to "Administrar #{Account.model_name.human(count: 2).downcase}", users_accounts_path(tid: nil), class: 'dropdown-item'
21
+ li = link_to "Administrar #{Account.nombre_plural.downcase}", users_accounts_path(tid: nil), class: 'dropdown-item'
22
22
  - elsif @other_active_accounts&.any?
23
23
  li.nav-item.dropdown.d-flex
24
24
  = link_to '#', class: 'nav-link dropdown-toggle py-0 d-flex align-items-center',
25
25
  role: :button, 'data-bs-toggle': :dropdown, 'aria-expanded': 'false' do
26
26
  i.bi.bi-bag-fill.me-2 style="font-size: 1.7em"
27
- = Account.model_name.human(count: 2)
27
+ = Account.nombre_plural
28
28
  ul.dropdown-menu
29
29
  - @other_active_accounts.each do |ua|
30
30
  li = link_to ua.account, tenant_root_path(tid: ua.to_param), class: 'dropdown-item'
31
31
  li
32
32
  hr.dropdown-divider
33
- li = link_to "Administrar #{Account.model_name.human(count: 2).downcase}", users_accounts_path(tid: nil), class: 'dropdown-item'
33
+ li = link_to "Administrar #{Account.nombre_plural.downcase}", users_accounts_path(tid: nil), class: 'dropdown-item'
34
34
 
35
35
  .vr.bg-white.mx-3.d-none class="d-#{@breakpoint_navbar_expand}-inline-block"
36
36
  - if Current.user.present? && @notifications_bell.present?
@@ -47,7 +47,7 @@ ul.navbar-nav.gap-3.align-items-center class="gap-#{@breakpoint_navbar_expand}-0
47
47
  = Current.user
48
48
  ul.dropdown-menu
49
49
  li = link_to 'Mi cuenta', edit_user_registration_path(tid: nil), class: 'dropdown-item'
50
- li = link_to Account.model_name.human(count: 2), users_accounts_path(tid: nil), class: 'dropdown-item'
50
+ li = link_to Account.nombre_plural, users_accounts_path(tid: nil), class: 'dropdown-item'
51
51
  - if Current.user.developer?
52
52
  li = link_to 'Admin', admin_users_path, class: 'dropdown-item'
53
53
  li = link_to 'Cerrar sesión', destroy_user_session_path(tid: nil),
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRails
4
- VERSION = '7.6.21-11'
4
+ VERSION = '7.6.21'
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.21.pre.11
4
+ version: 7.6.21
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-11-05 00:00:00.000000000 Z
11
+ date: 2024-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -807,6 +807,7 @@ files:
807
807
  - pg_engine/app/views/admin/users/edit.html.slim
808
808
  - pg_engine/app/views/admin/users/new.html.slim
809
809
  - pg_engine/app/views/admin/users/show.html.slim
810
+ - pg_engine/app/views/layouts/_logo.html.slim
810
811
  - pg_engine/app/views/layouts/action_text/contents/_content.html.erb
811
812
  - pg_engine/app/views/pg_engine/admin_mailer/admin_mail.html.slim
812
813
  - pg_engine/app/views/pg_engine/base/download.xlsx.axlsx
@@ -864,6 +865,7 @@ files:
864
865
  - pg_engine/db/migrate/20241027225618_add_membership_status_to_user_accounts.rb
865
866
  - pg_engine/db/seeds.rb
866
867
  - pg_engine/lib/pg_engine.rb
868
+ - pg_engine/lib/pg_engine/active_job_extensions.rb
867
869
  - pg_engine/lib/pg_engine/configuracion.rb
868
870
  - pg_engine/lib/pg_engine/core_ext.rb
869
871
  - pg_engine/lib/pg_engine/email_observer.rb
@@ -872,6 +874,8 @@ files:
872
874
  - pg_engine/lib/pg_engine/mailgun/log_sync.rb
873
875
  - pg_engine/lib/pg_engine/navigator.rb
874
876
  - pg_engine/lib/pg_engine/route_helpers.rb
877
+ - pg_engine/lib/pg_engine/site_brand.rb
878
+ - pg_engine/lib/pg_engine/test/dummy_brand.rb
875
879
  - pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
876
880
  - pg_engine/lib/pg_engine/utils/pg_logger.rb
877
881
  - pg_engine/lib/pg_engine/utils/resource_reports.rb
@@ -913,6 +917,7 @@ files:
913
917
  - pg_engine/spec/lib/pg_engine/mailgun/log_sync_spec.rb
914
918
  - pg_engine/spec/lib/pg_engine/utils/pg_engine/pg_logger_spec.rb
915
919
  - pg_engine/spec/lib/pg_form_builder_spec.rb
920
+ - pg_engine/spec/mailers/pg_engine/base_mailer_spec.rb
916
921
  - pg_engine/spec/mailers/previews/devise_preview.rb
917
922
  - pg_engine/spec/models/account_spec.rb
918
923
  - pg_engine/spec/models/concerns/pg_engine/child_record_spec.rb