module Ez::Resources::Manager

Public Class Methods

included(base) click to toggle source
# File lib/ez/resources/manager.rb, line 11
def self.included(base)
  base.extend(DSL)

  base.rescue_from UnavailableError do
    if Ez::Resources.config.ui_failed_hook
      instance_exec(&Ez::Resources.config.ui_failed_hook)
    else
      flash[:alert] = t('messages.unavailable', scope: Ez::Resources.config.i18n_scope)
      redirect_to '/'
    end
  end
end

Public Instance Methods

create() click to toggle source
# File lib/ez/resources/manager.rb, line 46
def create
  Manager::Hooks.can!(:can_create?, ez_resource_config)

  @ez_resource = ez_resource_config.model.new(ez_resource_params)

  if @ez_resource.save
    flash[:notice] = t('messages.created',
                       resource_name: ez_resource_config.resource_name,
                       scope:         Ez::Resources.config.i18n_scope)

    redirect_to ez_resource_config.path_for(action: :index)
  else
    flash[:alert] = t('messages.invalid',
                      resource_name: ez_resource_config.resource_name,
                      scope:         Ez::Resources.config.i18n_scope)

    ez_resource_view :form, ez_resource_config
  end
end
destroy() click to toggle source
# File lib/ez/resources/manager.rb, line 92
def destroy
  Manager::Hooks.can?(:can_destroy?, ez_resource_config, ez_resource_config.data)
  ez_resource_config.data.delete

  flash[:notice] = t('messages.removed',
                     resource_name: ez_resource_config.resource_name,
                     scope:         Ez::Resources.config.i18n_scope)

  redirect_to ez_resource_config.path_for(action: :index)
end
edit() click to toggle source
# File lib/ez/resources/manager.rb, line 66
def edit
  Manager::Hooks.can!(:can_update?, ez_resource_config, ez_resource_config.data)

  ez_resource_view :form, ez_resource_config
end
index() click to toggle source
# File lib/ez/resources/manager.rb, line 24
def index
  Manager::Hooks.can!(:can_list?, ez_resource_config)

  ez_resource_view :collection, ez_resource_config
end
new() click to toggle source
# File lib/ez/resources/manager.rb, line 40
def new
  Manager::Hooks.can!(:can_create?, ez_resource_config)

  ez_resource_view :form, ez_resource_config
end
show() click to toggle source
# File lib/ez/resources/manager.rb, line 30
def show
  Manager::Hooks.can!(:can_read?, ez_resource_config)

  if ez_resource_config.show_action_renders_form?
    ez_resource_view :form, ez_resource_config
  else
    # TODO: render show cell
  end
end
update() click to toggle source
# File lib/ez/resources/manager.rb, line 72
def update
  Manager::Hooks.can!(:can_update?, ez_resource_config, ez_resource_config.data)

  @ez_resource = ez_resource_config.data

  if @ez_resource.update(ez_resource_params)
    flash[:notice] = t('messages.updated',
                       resource_name: ez_resource_config.resource_name,
                       scope:         Ez::Resources.config.i18n_scope)

    redirect_to ez_resource_config.path_for(action: :index)
  else
    flash[:alert] = t('messages.invalid',
                      resource_name: ez_resource_config.resource_name,
                      scope:         Ez::Resources.config.i18n_scope)

    ez_resource_view :form, ez_resource_config
  end
end

Private Instance Methods

ez_resource_config() click to toggle source
# File lib/ez/resources/manager.rb, line 113
def ez_resource_config
  Config.new(
    controller: self,
    dsl_config: self.class.ez_resource_config_store,
    data:       @ez_resource
  )
end
ez_resource_params() click to toggle source
# File lib/ez/resources/manager.rb, line 109
def ez_resource_params
  params.require(:ez_resource).permit(ez_resource_config.form_fields.map(&:name))
end
ez_resource_view(cell_name, *args) click to toggle source
# File lib/ez/resources/manager.rb, line 105
def ez_resource_view(cell_name, *args)
  render html: cell("ez/resources/#{cell_name}", *args), layout: true
end