module Admin::InheritedResource

  extend ActiveSupport::Concern

  included do
    inherit_resources
    include InheritedResources::DSL

    index! do |format|
      format.json { render json: data_table }
      format.html {}
    end

    edit! do |format|
      format.html { render layout: false }
    end

    new! do |format|
      format.html { render layout: false }
    end

    show! do |format|
      format.html { render layout: false if request.xhr?}
    end

    update! do |success, failure|
      success.js { render 'referesh_datatable' }
      failure.js {render partial: 'form', within: "#edit_#{resource_class.name.underscore}"}
    end

    create! do |success, failure|
      success.js { render 'referesh_datatable' }
      failure.js {render partial: 'form', within: "#add_#{resource_class.name.underscore}"}
    end

    destroy! do |success, failure|
      success.js {}
      failure.js {}
    end

    # This will call DataTable of the given resource.
    def data_table
      "#{resource_class.name.pluralize}Datatable".constantize.new(view_context)
    end

  end

end
