codevise/pageflow

View on GitHub
app/views/components/pageflow/admin/revisions_tab.rb

Summary

Maintainability
B
6 hrs
Test Coverage
module Pageflow
  module Admin
    class RevisionsTab < ViewComponent
      def build(entry)
        embedded_index_table entry.revisions, :blank_slate_text => I18n.t('pageflow.admin.entries.no_revisions') do
          scope(:publications)
          scope(:publications_and_user_snapshots)
          scope(:frozen)

          table_for_collection :class => 'revisions', :i18n => Pageflow::Revision do
            row_attributes do |revision|
              {:class => revision_css_class(revision)}
            end

            column :frozen_at
            column :creator do |revision|
              if authorized? :manage, User
                link_to revision.creator.full_name, admin_user_path(revision.creator)
              else
                revision.creator.full_name
              end
            end
            column :published_until do |revision|
              if revision.published_until
                I18n.l(revision.published_until)
              elsif revision.published?
                I18n.t('pageflow.admin.entries.forever')
              else
                '-'
              end
            end
            column :created_with do |revision|
              span(class: 'tooltip_clue') do
                text_node t(revision.created_with,
                            scope: 'pageflow.admin.entries.revision_created_with')
                span class: 'tooltip_bubble' do
                  t(revision.created_with,
                    scope: 'pageflow.admin.entries.revision_created_with_hint')
                end
              end

              if revision.noindex?
                span(class: 'publication_state_indicator published_with_noindex') do
                  span(class: 'tooltip_bubble') do
                    t('pageflow.admin.entries.noindex')
                  end
                end
              end

              if revision.password_protected?
                span(class: 'publication_state_indicator published_with_password_protection') do
                  span(class: 'tooltip_bubble') do
                    t('pageflow.admin.entries.password_protected')
                  end
                end
              end
            end
            column do |revision|
              text_node(link_to(t('pageflow.admin.entries.show'), pageflow.revision_path(revision), :class => 'show'))
              if authorized?(:restore, entry)
                text_node(link_to(t('pageflow.admin.entries.restore'),
                                  restore_admin_revision_path(revision, params.permit(:tab)),
                                  method: :post,
                                  class: 'restore',
                                  data: {
                                    confirm: I18n.t(
                                      'pageflow.admin.entries.confirm_restore'
                                    )
                                  }))
              end
            end
          end
        end

        para(I18n.t('pageflow.admin.entries.published_revision_legend'), :class => 'legend published')

        if authorized?(:snapshot, entry)
          text_node(button_to(t('pageflow.admin.entries.snapshot'),
                              snapshot_admin_entry_path(entry, params.permit(:tab)),
                              method: :post))
        end
      end
    end
  end
end