Sha256: 087df619b9a5803baedc9872b22aed8d81baee58b72c5c2ae9d0645c803d7a1f

Contents?: true

Size: 1.84 KB

Versions: 128

Compression:

Stored size: 1.84 KB

Contents

require "dry-initializer"

# This object holds some data tha is usually needed to compute blocks around the app.
module Avo
  module Resources
    module Controls
      class ExecutionContext
        extend Dry::Initializer

        option :context, default: proc { Avo::App.context }
        option :params, default: proc { Avo::App.params }
        option :view_context, default: proc { Avo::App.view_context }
        option :current_user, default: proc { Avo::App.current_user }
        option :items_holder, default: proc { Avo::Resources::Controls::ItemsHolder.new }
        option :resource, optional: true
        option :record, optional: true
        option :view, optional: true
        option :block, optional: true

        delegate :authorize, to: Avo::Services::AuthorizationService

        def handle
          instance_exec(&block)
        end

        private

        def back_button(**args)
          items_holder.add_item Avo::Resources::Controls::BackButton.new(**args)
        end

        def delete_button(**args)
          items_holder.add_item Avo::Resources::Controls::DeleteButton.new(**args)
        end

        def detach_button(**args)
          items_holder.add_item Avo::Resources::Controls::DetachButton.new(**args)
        end

        def edit_button(**args)
          items_holder.add_item Avo::Resources::Controls::EditButton.new(**args)
        end

        def link_to(label, path, **args)
          items_holder.add_item Avo::Resources::Controls::LinkTo.new(label: label, path: path, **args)
        end

        def actions_list(**args)
          items_holder.add_item Avo::Resources::Controls::ActionsList.new(**args)
        end

        def action(klass, **args)
          items_holder.add_item Avo::Resources::Controls::Action.new(klass, record: record, resource: resource, view: view, **args)
        end
      end
    end
  end
end

Version data entries

128 entries across 128 versions & 1 rubygems

Version Path
avo-2.53.0 lib/avo/resources/controls/execution_context.rb
avo-2.52.0 lib/avo/resources/controls/execution_context.rb
avo-2.49.0 lib/avo/resources/controls/execution_context.rb
avo-2.48.0 lib/avo/resources/controls/execution_context.rb
avo-2.47.0 lib/avo/resources/controls/execution_context.rb
avo-2.46.0 lib/avo/resources/controls/execution_context.rb
avo-2.45.0 lib/avo/resources/controls/execution_context.rb
avo-2.44.0 lib/avo/resources/controls/execution_context.rb
avo-2.43.0 lib/avo/resources/controls/execution_context.rb
avo-2.42.2 lib/avo/resources/controls/execution_context.rb
avo-2.42.1 lib/avo/resources/controls/execution_context.rb
avo-2.42.0 lib/avo/resources/controls/execution_context.rb
avo-2.41.0 lib/avo/resources/controls/execution_context.rb
avo-2.40.0 lib/avo/resources/controls/execution_context.rb
avo-2.39.0 lib/avo/resources/controls/execution_context.rb
avo-2.38.0 lib/avo/resources/controls/execution_context.rb
avo-2.37.2 lib/avo/resources/controls/execution_context.rb
avo-2.37.1 lib/avo/resources/controls/execution_context.rb
avo-2.37.0 lib/avo/resources/controls/execution_context.rb
avo-2.36.3 lib/avo/resources/controls/execution_context.rb