Module: Locomotive::Concerns::Site::UrlRedirections
- Extended by:
- ActiveSupport::Concern
- Included in:
- Site
- Defined in:
- app/models/locomotive/concerns/site/url_redirections.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #add_or_update_url_redirection(source, target, information = nil) ⇒ Object
- #remove_url_redirection(source) ⇒ Object
- #url_redirections=(array) ⇒ Object
- #url_redirections_with_information(with_hidden = true) ⇒ Object
Instance Method Details
#add_or_update_url_redirection(source, target, information = nil) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/models/locomotive/concerns/site/url_redirections.rb', line 38 def add_or_update_url_redirection(source, target, information = nil) return false if source.blank? || target.blank? source, target = add_leading_slash_to(source), add_leading_slash_to(target) url_id = Digest::MD5.hexdigest(source) if redirection = url_redirections.detect { |(_source, _)| _source == source } redirection[1] = target else url_redirections << [source, target] end url_redirections_information[url_id] = information end |
#remove_url_redirection(source) ⇒ Object
53 54 55 56 57 58 59 |
# File 'app/models/locomotive/concerns/site/url_redirections.rb', line 53 def remove_url_redirection(source) source = add_leading_slash_to(source) url_id = Digest::MD5.hexdigest(source) url_redirections.delete_if { |(_source, _)| _source == source } url_redirections_information.delete(url_id) end |
#url_redirections=(array) ⇒ Object
61 62 63 64 65 |
# File 'app/models/locomotive/concerns/site/url_redirections.rb', line 61 def url_redirections=(array) super((array || []).flatten.map do |path| add_leading_slash_to(path) end.each_slice(2).to_a) end |
#url_redirections_with_information(with_hidden = true) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/locomotive/concerns/site/url_redirections.rb', line 25 def url_redirections_with_information(with_hidden = true) url_redirections.map do |(source, target)| url_id = Digest::MD5.hexdigest(source) information = url_redirections_information[url_id] || {} if !with_hidden && information['hidden'] nil else { 'source' => source, 'target' => target }.merge(information) end end end |