Skip to content

Customize

alpaca-tc edited this page Dec 20, 2017 · 2 revisions

Customize

Change messages

module AdminScript
  class ExpireUserSession < AdminScript::Base
    self.description = 'Your description message'

    # Define as a method
    def description
      "Update time to #{Time.now}"
    end

    def success_message
      'it will be displayed when script succeed'
    end

    def failed_message
      'it will be displayed when script fails'
    end
  end
end

Redirect url on success

module AdminScript
  class UserScript < AdminScript::Base
    attribute :id, :integer

    def perform
      return false unless invalid?
      self.location_url = url_helpers.user_path(id)

      # Do something

      true
    end

    # Define as a method
    def location_url
      url_helpers.user_path(id)
    end
  end
end

Custom views

Create custom view for AdminScript::UserScript

# app/views/admin_script/admin_scripts/_user_script.html.slim
javascript:
  $(document).on('ready page:load', function() {
    $('[href="#expire"]').on('click', function() {
      $('input[name="admin_script[id]"]').val('')
    });
  });

.form-group
  - if f.object.id
    = link_to user_path(f.object.id), user_path(f.object.id)
  = f.number_field :id, class: 'form-control'

= link_to('Expire', '#expire')

Locales

Example of locales

# config/locales/admin_script/en.yml
en:
  activemodel:
    models:
      admin_script/base: AdminScript

    attributes:
      admin_script/base:
        description: Description

  admin_script:
    admin_scripts:
      index:
        title: Listing of AdminScripts
        open: Open
      edit:
        title: 'AdminScript - %{id}'
        perform: Perform
        confirm: Are you sure?
      update:
        successfully_performed: Successfully performed
        failed_performing: Failed performing
# config/locales/models/admin_script/expire_user_session/en.yml
en:
  activemodel:
    attributes:
      models:
        admin_script/expire_user_session:
          id: User ID
    errors:
      models:
        admin_script/expire_user_session:
          attributes:
            id:
              invalid: is invalid User ID

Action button from application view

= link_to 'Expire user session', admin_script.admin_script_path(AdminScript::ExpireUserSession, admin_script: { id: @user.id }), data: { method: :patch }
Clone this wiki locally