Sha256: 297241663275d0a941119c0c1acc828f4df3188ee1401149152a939db9e54b66

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

module RailsAdmin
  module Config
    module Actions
      class State < Base
        RailsAdmin::Config::Actions.register(self)

        # Is the action acting on the root level (Example: /admin/contact)
        register_instance_option :root? do
          false
        end

        register_instance_option :collection? do
          false
        end

        # Is the action on an object scope (Example: /admin/team/1/edit)
        register_instance_option :member? do
          true
        end

        register_instance_option :controller do
          Proc.new do |klass|
            unless @authorization_adapter.authorized?(:all_events, @abstract_model, @object)
              @authorization_adapter.try(:authorize, params[:event].to_sym, @abstract_model, @object)
            end

            @state_machine_options = ::RailsAdminState::Configuration.new @abstract_model
            if params['id'].present?
              begin
                raise 'event disabled' if @state_machine_options.disabled?(params[:event].to_sym)
                if @object.send("fire_#{params[:attr]}_event".to_sym, params[:event].to_sym)
                  @object.save!
                  flash[:success] = I18n.t('admin.state_machine.event_fired', attr: params[:method], event: params[:event])
                else
                  flash[:error] = obj.errors.full_messages.join(', ')
                end
              rescue Exception => e
                Rails.logger.error e
                flash[:error] = I18n.t('admin.state_machine.error', err: e.to_s)
              end
            else
              flash[:error] = I18n.t('admin.state_machine.no_id')
            end
            redirect_to :back
          end
        end

        register_instance_option :http_methods do
          [:post]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_admin_state-1.3.0 lib/rails_admin_state/action.rb