diff --git a/app/models/site.rb b/app/models/site.rb index d47a8e50..9c94c31b 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -289,6 +289,8 @@ class Site < ApplicationRecord # # @return [Hash] { post: Layout } def layouts + return {} if data['layouts'].blank? + # Crea un Struct dinĂ¡mico cuyas llaves son los nombres de todos los # layouts. Si pasamos un layout que no existe, obtenemos un # NoMethodError diff --git a/app/policies/site_usuarie_policy.rb b/app/policies/site_usuarie_policy.rb index f07dc1c9..31e98cfe 100644 --- a/app/policies/site_usuarie_policy.rb +++ b/app/policies/site_usuarie_policy.rb @@ -36,8 +36,7 @@ class SiteUsuariePolicy end def accept_invitation? - su = site_usuarie - (usuarie? || invitade?) && su.usuarie.rol_for_site(su.site).temporal + !!site_usuarie.usuarie.rol_for_site(site_usuarie.site)&.temporal end def reject_invitation? diff --git a/app/views/schemas/_row.haml b/app/views/schemas/_row.haml index 1d1fca87..ece07727 100644 --- a/app/views/schemas/_row.haml +++ b/app/views/schemas/_row.haml @@ -10,4 +10,6 @@ -# XXX: Solo un nivel de recursividad - unless local_assigns[:parent_schema] - schema.schemas.each do |s| + - next if s.hidden? = render 'schemas/row', schema: s, site: site, filter: filter, parent_schema: schema + diff --git a/app/views/sites/index.haml b/app/views/sites/index.haml index fc8184e1..1befa2d0 100644 --- a/app/views/sites/index.haml +++ b/app/views/sites/index.haml @@ -4,7 +4,7 @@ %p.lead= t('.help') - if policy(Site).new? = link_to t('sites.new.title'), new_site_path, - class: 'btn btn-secondary' + class: 'btn btn-secondary' %section.col - if @sites.empty? @@ -15,39 +15,42 @@ %tbody - @sites.each do |site| - next unless site.jekyll? + %tr %td %h2 - if policy(site).show? - = link_to site.title, site_posts_path(site, locale: site.default_locale) + = link_to site.title, + site_posts_path(site, + locale: site.default_locale) - else = site.title %p.lead= site.description - %br - = link_to t('.visit'), site.url, class: 'btn btn-secondary' - - if current_usuarie.rol_for_site(site).temporal? - = render 'components/btn_base', - text: t('sites.invitations.accept'), - path: site_usuaries_accept_invitation_path(site), - title: t('help.sites.invitations.accept'), - class: 'btn-secondary' - = render 'components/btn_base', - text: t('sites.invitations.reject'), - path: site_usuaries_reject_invitation_path(site), - title: t('help.sites.invitations.reject'), - class: 'btn-secondary' - - else - - if policy(site).show? - = render 'layouts/btn_with_tooltip', - tooltip: t('help.sites.edit_posts'), - type: 'success', - link: site_path(site), - text: t('sites.posts') - = render 'sites/build', site: site - = render 'sites/moderation_queue', site: site - - if policy(SiteUsuarie.new(site, current_usuarie)).index? - = render 'layouts/btn_with_tooltip', - tooltip: t('usuaries.index.help.self'), - text: t('usuaries.index.title'), - type: 'info', - link: site_usuaries_path(site) + .d-flex.flex-row + = link_to t('.visit'), site.url, class: 'btn btn-secondary' + - if current_usuarie.rol_for_site(site).temporal? + = render 'components/btn_base', + text: t('sites.invitations.accept'), + path: site_usuaries_accept_invitation_path(site), + title: t('help.sites.invitations.accept'), + class: 'btn-secondary' + = render 'components/btn_base', + text: t('sites.invitations.reject'), + path: site_usuaries_reject_invitation_path(site), + title: t('help.sites.invitations.reject'), + class: 'btn-secondary' + - else + - if policy(site).show? + = render 'layouts/btn_with_tooltip', + tooltip: t('help.sites.edit_posts'), + type: 'success', + link: site_path(site), + text: t('sites.posts') + = render 'sites/build', site: site + = render 'sites/moderation_queue', site: site + - if policy(SiteUsuarie.new(site, current_usuarie)).index? + = render 'layouts/btn_with_tooltip', + tooltip: t('usuaries.index.help.self'), + text: t('usuaries.index.title'), + type: 'info', + link: site_usuaries_path(site)