- reorder_allowed = policy(@site).reorder? - if reorder_allowed - reorder_controller = { controller: 'reorder' } - reorder_target = { target: 'reorder.row' } - else - reorder_target = reorder_controller = {} %main.row %aside.menu.col-lg-3 .mb-3 = render 'sites/header', site: @site = render 'sites/status', site: @site = render 'sites/build', site: @site, class: 'btn-block' = render 'sites/moderation_queue', site: @site, class: 'btn-block' = render 'layouts/details', summary: t('posts.filters.title') do %form{ method: :get } .border.border-magenta.p-1 - @filter_params.each do |param, values| - next if param == :layout - [values].flatten.each do |value| %input{ type: 'hidden', name: values.is_a?(Array) ? "#{param}[]" : param, value: value } %legend.font-weight-bold.m-0.h6= 'Tipo de contenido' - @site.schema_organization.each do |key, _| .custom-control.custom-checkbox - schema = @site.layouts[key] = render 'schemas/filter', site: @site, key: key, schema: schema, filter: @filter_params %button.btn.btn-secondary.mt-3{ type: 'submit' }= t('posts.filters.submit') = render 'layouts/details', summary: t('posts.new'), summary_class: 'h4 magenta font-weight-bold m-0 px-2', details_class: 'details-agregar', open: '+', closed: '+', open_class: 'h1 magenta font-weight-bold m-0', closed_class: 'h1 magenta font-weight-bold m-0' do %table.table-sm.w-100 %tbody - @site.schema_organization.each do |schema, _| - schema = @site.layouts[schema] - next if schema.hidden? = render 'schemas/row', site: @site, schema: schema, filter: @filter_params - if policy(@site_stat).index? = link_to t('stats.index.title'), site_stats_path(@site), class: 'btn btn-secondary' - if policy(@site).edit? = link_to t('sites.edit.btn', site: @site.title), edit_site_path(@site), class: 'btn btn-secondary' - if policy(@site).private? = link_to t('sites.private'), "../private/#{@site.name}", class: 'btn btn-secondary', target: '_blank', rel: 'noopener' - 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) - if @site.design.credits = render 'bootstrap/alert' do = sanitize_markdown @site.design.credits = link_to t('sites.donations.text'), t('sites.donations.url'), class: 'btn btn-secondary' - if @site.design.designer_url = link_to t('sites.designer_url'), @site.design.designer_url, class: 'btn btn-secondary' %section.col .d-flex.justify-content-between.align-items-center.pl-2-plus.pr-2-plus.mb-2 - if @site.locales.size > 1 %nav#locales - @site.locales.each do |locale| = link_to @site.data.dig(locale.to_s, 'locale') || locale, site_posts_path(@site, **@filter_params.merge(locale: locale)), class: "mr-2 mt-2 mb-2 #{locale == @locale ? 'active font-weight-bold' : ''}" - if @posts.empty? %h2= t('posts.empty') - else = form_tag site_posts_reorder_path, method: :post do %table.table{ data: reorder_controller } %caption.sr-only= t('posts.caption') %thead %tr.sticky-top %th.border-0.p-0.p-md-2-plus{ colspan: '4' } .d-flex.flex-row.justify-content-between %div - if reorder_allowed = submit_tag t('posts.reorder.submit'), class: 'btn btn-secondary' %button.btn.btn-secondary{ data: { action: 'reorder#unselect' } } = t('posts.reorder.unselect') %span.badge{ data: { target: 'reorder.counter' } } 0 %button.btn.btn-secondary{ data: { action: 'reorder#up' } }= t('posts.reorder.up') %button.btn.btn-secondary{ data: { action: 'reorder#down' } }= t('posts.reorder.down') %button.btn.btn-secondary{ data: { action: 'reorder#top' } }= t('posts.reorder.top') %button.btn.btn-secondary{ data: { action: 'reorder#bottom' } }= t('posts.reorder.bottom') %input{ type: 'hidden', name: 'post[lang]', value: @locale } - if @site.pagination %div = link_to_prev_page @posts, t('posts.prev'), class: 'btn btn-secondary' = link_to_next_page @posts, t('posts.next'), class: 'btn btn-secondary' %tbody - dir = @site.data.dig(params[:locale], 'dir') - size = @posts.size - @posts.each_with_index do |post, i| -# TODO: Solo les usuaries cachean porque tenemos que separar les botones por permisos. - cache_if @usuarie, [post, I18n.locale] do - checkbox_id = "checkbox-#{post.post_id}" %tr{ id: post.post_id, data: reorder_target } - if reorder_allowed %td .custom-control.custom-checkbox %input.custom-control-input{ id: checkbox_id, type: 'checkbox', autocomplete: 'off', data: { action: 'reorder#select' } } %label.custom-control-label{ for: checkbox_id } %span.sr-only= t('posts.reorder.select') -# Orden más alto es mayor prioridad = hidden_field 'post[reorder]', post.post_id, value: size - i, data: { reorder: true } %td.w-100{ class: dir } = link_to site_post_path(@site, post.path) do %span{ lang: post.locale, dir: dir }= post.title - if post.front_matter['draft'].present? %span.badge.badge-primary= I18n.t('posts.attributes.draft.label') %br %small = link_to @site.layouts[post.layout].humanized_name, site_posts_path(@site, **@filter_params.merge(layout: [post.layout])) - post.front_matter['categories']&.each do |category| = link_to site_posts_path(@site, **@filter_params.merge(category: category)) do %span{ lang: post.locale, dir: dir }= category = '/' unless post.front_matter['categories'].last == category %td.text-nowrap = post.created_at.strftime('%F') %br/ = post.order %td.text-nowrap .d-flex.flex-row.align-items-start - if @usuarie || policy(post).edit? = link_to t('posts.edit_post'), edit_site_post_path(@site, post.path), class: 'btn btn-secondary' - if @usuarie || policy(post).destroy? = link_to t('posts.destroy'), site_post_path(@site, post.path), class: 'btn btn-secondary', method: :delete, data: { confirm: t('posts.confirm_destroy') } -# Rescatar cualquier error en un post, notificarlo e ignorar su renderización. - rescue ActionView::Template::Error => e - ExceptionNotifier.notify_exception(e.cause, data: { site: @site.name, post: @post.path.absolute, usuarie: current_usuarie.id }) #footnotes{ hidden: true } - @filter_params.each do |param, value| - if param == 'layout' - value = @site.layouts[value.to_sym].humanized_name %label{ id: "help-filter-#{param}" }= t('posts.remove_filter_help', filter: value)