acts_as_railable 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/acts_as_railable/humanable.rb +1 -1
- data/lib/acts_as_railable/railtie.rb +21 -1
- data/lib/acts_as_railable/recordable.rb +95 -0
- data/lib/acts_as_railable/routable.rb +62 -0
- data/lib/acts_as_railable/version.rb +1 -1
- data/lib/acts_as_railable/view_helpers.rb +20 -10
- data/lib/acts_as_railable.rb +3 -2
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5b66f87748b72def1cd866dd440815bdc3adf4c0a8289a204d754fa876715676
         | 
| 4 | 
            +
              data.tar.gz: 69e3aa3261ba65dbf414643b0838471c571ae5cce15fc49046e9eeb9e5b6594b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f12a17b7db1a93b59fad23d038a378044097682434f0a5715b2c87b7e154113b77446be3d3e4413b8b9e7308e276fb33f28ef3e94827a035f8e33b1b070fa68f
         | 
| 7 | 
            +
              data.tar.gz: 5f66ccaf9bba349420be4a338316508d87c51f68aff987f9140ea035d1ffa9357d0f7d823d5dc2c28f15fdd87c62472bab68e34c4e2ae58bae8bbe51f08942b0
         | 
| @@ -9,7 +9,7 @@ module ActsAsRailable | |
| 9 9 |  | 
| 10 10 | 
             
                  def i18n_action_name name, default_name=nil
         | 
| 11 11 | 
             
                    action_key = "#{self.table_name}.action.#{name}"
         | 
| 12 | 
            -
                    default_key = " | 
| 12 | 
            +
                    default_key = "helper.action.#{name}" # unless I18n.exists? key
         | 
| 13 13 | 
             
                    default_name ||= name.to_s.capitalize
         | 
| 14 14 | 
             
                    I18n.t(action_key, model: self.model_name.human, default: [ default_key.to_sym, default_name ])
         | 
| 15 15 | 
             
                  end
         | 
| @@ -1,9 +1,29 @@ | |
| 1 1 | 
             
            require 'acts_as_railable/view_helpers'
         | 
| 2 | 
            +
            require "rails"
         | 
| 2 3 |  | 
| 3 4 | 
             
            module ActsAsRailable
         | 
| 4 5 | 
             
              class Railtie < ::Rails::Railtie
         | 
| 5 | 
            -
                initializer "acts_as_railable | 
| 6 | 
            +
                initializer "acts_as_railable" do |app|
         | 
| 6 7 | 
             
                  ActiveSupport.on_load(:action_view) { include ActsAsRailable::ViewHelpers }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  ActsAsRailable::Railtie.instance_eval do
         | 
| 10 | 
            +
                    pattern = pattern_from app.config.i18n.available_locales
         | 
| 11 | 
            +
                    add("rails/locales/#{pattern}.yml")
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                protected
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def self.add(pattern)
         | 
| 18 | 
            +
                  files = Dir[File.join(File.dirname(__FILE__), "../..", pattern)]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  I18n.load_path.concat(files)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def self.pattern_from(args)
         | 
| 24 | 
            +
                  array = Array(args || [])
         | 
| 25 | 
            +
                  array.blank? ? "*" : "{#{array.join ','}}"
         | 
| 7 26 | 
             
                end
         | 
| 8 27 | 
             
              end
         | 
| 9 28 | 
             
            end
         | 
| 29 | 
            +
             | 
| @@ -0,0 +1,95 @@ | |
| 1 | 
            +
            module Recordable
         | 
| 2 | 
            +
              extend ActiveSupport::Concern
         | 
| 3 | 
            +
             | 
| 4 | 
            +
              included do
         | 
| 5 | 
            +
              end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              # class methods
         | 
| 8 | 
            +
              module ClassMethods
         | 
| 9 | 
            +
                def record_name
         | 
| 10 | 
            +
                  self.model_name.singular
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def form_error_placeholder_id
         | 
| 14 | 
            +
                  "#{self.record_name}_error_placeholder_id"
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def titlebar_placeholder_id
         | 
| 18 | 
            +
                  "#{self.record_name}_titlebar_placeholder_id"
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def navbar_placeholder_id
         | 
| 22 | 
            +
                  "#{self.record_name}_navbar_placeholder_id"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def collection_placeholder_id record_parent=nil
         | 
| 26 | 
            +
                  if record_parent.nil?
         | 
| 27 | 
            +
                    "#{self.record_name}_collection_placeholder_id"
         | 
| 28 | 
            +
                  else
         | 
| 29 | 
            +
                    "#{record_parent.record_name}_#{record_parent.id}_#{self.record_name}_collection_placeholder_id"
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def pagination_placeholder_id
         | 
| 34 | 
            +
                  "#{self.record_name}_pagination_placeholder_id"
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                def script_placeholder_id
         | 
| 38 | 
            +
                  "#{self.record_name}_script_placeholder_id"
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                def modal_id
         | 
| 42 | 
            +
                  "#{self.record_name}_modal_id"
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def modal_placeholder_id
         | 
| 46 | 
            +
                  "#{self.record_name}_modal_placeholder_id"
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                # override methods
         | 
| 50 | 
            +
                def per_page
         | 
| 51 | 
            +
                  nil
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              # instance methods
         | 
| 56 | 
            +
              def record_parent
         | 
| 57 | 
            +
                nil
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def record_name
         | 
| 61 | 
            +
                self.class.record_name
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              def form_error_placeholder_id
         | 
| 65 | 
            +
                self.class.form_error_placeholder_id
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              def titlebar_placeholder_id
         | 
| 69 | 
            +
                self.class.titlebar_placeholder_id
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              def navbar_placeholder_id
         | 
| 73 | 
            +
                self.class.navbar_placeholder_id
         | 
| 74 | 
            +
              end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              def collection_placeholder_id record_parent=nil
         | 
| 77 | 
            +
                self.class.collection_placeholder_id record_parent
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              def pagination_placeholder_id
         | 
| 81 | 
            +
                self.class.pagination_placeholder_id
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              def script_placeholder_id
         | 
| 85 | 
            +
                self.class.script_placeholder_id
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              def modal_id
         | 
| 89 | 
            +
                self.class.modal_id
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              def modal_placeholder_id
         | 
| 93 | 
            +
                self.class.modal_placeholder_id
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
            end
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            module ActsAsRailable
         | 
| 2 | 
            +
              module Routable
         | 
| 3 | 
            +
                extend ActiveSupport::Concern
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                included do
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def self.polymorphic_path(record_or_hash_or_array, options = {})
         | 
| 9 | 
            +
                  Rails.application.routes.url_helpers.polymorphic_path(record_or_hash_or_array, options)
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def self.polymorphic_url(record_or_hash_or_array, options = {})
         | 
| 13 | 
            +
                  Rails.application.routes.url_helpers.polymorphic_url(record_or_hash_or_array, options)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def self.record_action_path record_or_hash_or_array, record_self, action, options={}
         | 
| 17 | 
            +
                  record_or_hash_or_array = Array(record_or_hash_or_array)
         | 
| 18 | 
            +
                  record_or_hash_or_array << record_self if record_or_hash_or_array.exclude?(record_self)
         | 
| 19 | 
            +
                  if action.present? && %w(index show).exclude?(action.to_s)
         | 
| 20 | 
            +
                    options.merge!({action: action})
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                  self.polymorphic_path record_or_hash_or_array, options
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def self.record_action_url record_or_hash_or_array, record_self, action, options={}
         | 
| 26 | 
            +
                  record_or_hash_or_array = Array(record_or_hash_or_array)
         | 
| 27 | 
            +
                  record_or_hash_or_array << record_self if record_or_hash_or_array.exclude?(record_self)
         | 
| 28 | 
            +
                  if action.present? && %w(index show).exclude?(action.to_s)
         | 
| 29 | 
            +
                    options.merge!({action: action})
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                  self.polymorphic_url record_or_hash_or_array, options
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                # class methods
         | 
| 35 | 
            +
                module ClassMethods
         | 
| 36 | 
            +
                  def polymorphic_path(record_or_hash_or_array=[], options = {})
         | 
| 37 | 
            +
                    ActsAsRailable::Routable.polymorphic_path(record_or_hash_or_array, options)
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def polymorphic_url(record_or_hash_or_array, options = {})
         | 
| 41 | 
            +
                    ActsAsRailable::Routable.polymorphic_path(record_or_hash_or_array, options)
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def action_path action=nil, record_or_hash_or_array=[], options={}
         | 
| 45 | 
            +
                    ActsAsRailable::Routable.record_action_path record_or_hash_or_array, self, action, options
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  def action_url action=nil, record_or_hash_or_array=[], options={}
         | 
| 49 | 
            +
                    ActsAsRailable::Routable.record_action_url record_or_hash_or_array, self, action, options
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                # instance methods
         | 
| 54 | 
            +
                def action_path action=nil, record_or_hash_or_array=[], options={}
         | 
| 55 | 
            +
                  ActsAsRailable::Routable.record_action_path record_or_hash_or_array, self, action, options
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def action_url action=nil, record_or_hash_or_array=[], options={}
         | 
| 59 | 
            +
                  ActsAsRailable::Routable.record_action_url record_or_hash_or_array, self, action, options
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| @@ -5,7 +5,7 @@ module ActsAsRailable | |
| 5 5 | 
             
                end
         | 
| 6 6 |  | 
| 7 7 | 
             
                def back_link_to name, html_options
         | 
| 8 | 
            -
                  link_to name, : | 
| 8 | 
            +
                  link_to name, "javascript:history.go(-1);", html_options
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 11 | 
             
                def native_flash_messages!
         | 
| @@ -42,6 +42,8 @@ module ActsAsRailable | |
| 42 42 | 
             
                end
         | 
| 43 43 |  | 
| 44 44 | 
             
                def native_form_error_messages!(object)
         | 
| 45 | 
            +
                  form_error_id = object.try(:form_error_placeholder_id) || "error_explanation"
         | 
| 46 | 
            +
             | 
| 45 47 | 
             
                  if object.errors.any?
         | 
| 46 48 | 
             
                    messages = object.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
         | 
| 47 49 | 
             
                    sentence = I18n.t("errors.template.header",
         | 
| @@ -50,14 +52,14 @@ module ActsAsRailable | |
| 50 52 | 
             
                    bodyhead = I18n.t("errors.template.body")
         | 
| 51 53 |  | 
| 52 54 | 
             
                    html = <<-HTML
         | 
| 53 | 
            -
                      <div id="#{ | 
| 55 | 
            +
                      <div id="#{form_error_id}" style="color: red">
         | 
| 54 56 | 
             
                        <h2>#{sentence}</h2>
         | 
| 55 57 | 
             
                        <ul>#{messages}</ul>
         | 
| 56 58 | 
             
                      </div>
         | 
| 57 59 | 
             
                    HTML
         | 
| 58 60 | 
             
                  else
         | 
| 59 61 | 
             
                    html = <<-HTML
         | 
| 60 | 
            -
                      <div id="#{ | 
| 62 | 
            +
                      <div id="#{form_error_id}">
         | 
| 61 63 | 
             
                      </div>
         | 
| 62 64 | 
             
                    HTML
         | 
| 63 65 | 
             
                  end
         | 
| @@ -66,6 +68,8 @@ module ActsAsRailable | |
| 66 68 | 
             
                end
         | 
| 67 69 |  | 
| 68 70 | 
             
                def bootstrap_form_error_messages!(object)
         | 
| 71 | 
            +
                  form_error_id = object.try(:form_error_placeholder_id) || "error_explanation"
         | 
| 72 | 
            +
             | 
| 69 73 | 
             
                  if object.errors.any?
         | 
| 70 74 | 
             
                    messages = object.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
         | 
| 71 75 | 
             
                    sentence = I18n.t("errors.template.header",
         | 
| @@ -74,7 +78,7 @@ module ActsAsRailable | |
| 74 78 | 
             
                    bodyhead = I18n.t("errors.template.body")
         | 
| 75 79 |  | 
| 76 80 | 
             
                    html = <<-HTML
         | 
| 77 | 
            -
                      <div id="#{ | 
| 81 | 
            +
                      <div id="#{form_error_id}">
         | 
| 78 82 | 
             
                        <div class="alert alert-danger" role="alert">
         | 
| 79 83 | 
             
                          <h6 class="alert-heading">#{sentence}</h6>
         | 
| 80 84 | 
             
                          <ul class="mb-0">#{messages}</ul>
         | 
| @@ -83,7 +87,7 @@ module ActsAsRailable | |
| 83 87 | 
             
                    HTML
         | 
| 84 88 | 
             
                  else
         | 
| 85 89 | 
             
                    html = <<-HTML
         | 
| 86 | 
            -
                      <div id="#{ | 
| 90 | 
            +
                      <div id="#{form_error_id}">
         | 
| 87 91 | 
             
                      </div>
         | 
| 88 92 | 
             
                    HTML
         | 
| 89 93 | 
             
                  end
         | 
| @@ -94,6 +98,8 @@ module ActsAsRailable | |
| 94 98 | 
             
                def native_devise_error_messages!(resource)
         | 
| 95 99 | 
             
                  return "" if resource.errors.empty?
         | 
| 96 100 |  | 
| 101 | 
            +
                  form_error_id = resource.try(:form_error_placeholder_id) || "error_explanation"
         | 
| 102 | 
            +
             | 
| 97 103 | 
             
                  messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
         | 
| 98 104 | 
             
                  sentence = I18n.t("errors.messages.not_saved",
         | 
| 99 105 | 
             
                                    count: resource.errors.count,
         | 
| @@ -101,7 +107,7 @@ module ActsAsRailable | |
| 101 107 | 
             
                  bodyhead = I18n.t("errors.template.body")
         | 
| 102 108 |  | 
| 103 109 | 
             
                  html = <<-HTML
         | 
| 104 | 
            -
                    <div id=" | 
| 110 | 
            +
                    <div id="#{form_error_id}">
         | 
| 105 111 | 
             
                      <h2>#{sentence}</h2>
         | 
| 106 112 | 
             
                      <ul>#{messages}</ul>
         | 
| 107 113 | 
             
                    </div>
         | 
| @@ -113,6 +119,8 @@ module ActsAsRailable | |
| 113 119 | 
             
                def bootstrap_devise_error_messages!(resource)
         | 
| 114 120 | 
             
                  return "" if resource.errors.empty?
         | 
| 115 121 |  | 
| 122 | 
            +
                  form_error_id = resource.try(:form_error_placeholder_id) || "error_explanation"
         | 
| 123 | 
            +
             | 
| 116 124 | 
             
                  messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
         | 
| 117 125 | 
             
                  sentence = I18n.t("errors.messages.not_saved",
         | 
| 118 126 | 
             
                                    count: resource.errors.count,
         | 
| @@ -120,10 +128,12 @@ module ActsAsRailable | |
| 120 128 | 
             
                  bodyhead = I18n.t("errors.template.body")
         | 
| 121 129 |  | 
| 122 130 | 
             
                  html = <<-HTML
         | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 131 | 
            +
                    <div id="#{form_error_id}">
         | 
| 132 | 
            +
                      <div class="alert alert-danger" role="alert">
         | 
| 133 | 
            +
                        <h6 class="alert-heading">#{sentence}</h6>
         | 
| 134 | 
            +
                        <ul class="mb-0">#{messages}</ul>
         | 
| 135 | 
            +
                      </div>
         | 
| 136 | 
            +
                    </div>
         | 
| 127 137 | 
             
                  HTML
         | 
| 128 138 |  | 
| 129 139 | 
             
                  html.html_safe
         | 
    
        data/lib/acts_as_railable.rb
    CHANGED
    
    | @@ -1,8 +1,9 @@ | |
| 1 1 | 
             
            require "acts_as_railable/version"
         | 
| 2 | 
            -
            require "acts_as_railable/railtie" if defined?(Rails)
         | 
| 3 2 | 
             
            require "acts_as_railable/core_ext"
         | 
| 4 | 
            -
            require "acts_as_railable/interval"
         | 
| 5 3 | 
             
            require "acts_as_railable/humanable"
         | 
| 4 | 
            +
            require "acts_as_railable/interval"
         | 
| 5 | 
            +
            require "acts_as_railable/routable"
         | 
| 6 | 
            +
            require "acts_as_railable/railtie" if defined?(Rails)
         | 
| 6 7 |  | 
| 7 8 | 
             
            module ActsAsRailable
         | 
| 8 9 | 
             
              # Your code goes here...
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: acts_as_railable
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Li Qi
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-05-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -39,6 +39,8 @@ files: | |
| 39 39 | 
             
            - lib/acts_as_railable/humanable.rb
         | 
| 40 40 | 
             
            - lib/acts_as_railable/interval.rb
         | 
| 41 41 | 
             
            - lib/acts_as_railable/railtie.rb
         | 
| 42 | 
            +
            - lib/acts_as_railable/recordable.rb
         | 
| 43 | 
            +
            - lib/acts_as_railable/routable.rb
         | 
| 42 44 | 
             
            - lib/acts_as_railable/version.rb
         | 
| 43 45 | 
             
            - lib/acts_as_railable/view_helpers.rb
         | 
| 44 46 | 
             
            - lib/tasks/acts_as_railable_tasks.rake
         |