Sha256: a429119a663f17bcfd3a09b2b2bee11c8a91a746b784d76b2de34bf39a79405e

Contents?: true

Size: 1.58 KB

Versions: 153

Compression:

Stored size: 1.58 KB

Contents

module Mappable
  extend ActiveSupport::Concern
  
  included do
    
    if RocketCMS.mongoid?
      include Geocoder::Model::Mongoid
      field :coordinates, type: Array
      field :address, type: String
      
      field :map_address, type: String
      field :map_hint, type: String
      
      field :lat, type: Float
      field :lon, type: Float
    end
    
    geocoded_by :geo_address
    after_validation :do_geocode
  end

  if RocketCMS.active_record?
    def coordinates
      if latitude.nil? || longitude.nil?
        nil
      else
        [longitude, latitude]
      end
    end
  end

  def do_geocode
    if geo_address.blank?
      if RocketCMS.mongoid?
        self.coordinates = nil
      else
        self.latitude = nil
        self.longitude = nil
      end
    else
      if (lat.nil? || lon.nil?) && (new_record? || address_changed? || coordinates.nil? || map_address_changed?)
        geocode
      end
    end
  end
  
  def get_lat
    if lat.blank? 
      if coordinates.nil?
        nil
      else
        coordinates[1]
      end
    else
      lat
    end
  end
  def get_lon
    if lon.blank? 
      if coordinates.nil?
        nil
      else
        coordinates[0]
      end
    else
      lon
    end
  end
  
  def has_map?
    (!lat.blank? && !lon.blank?) || !coordinates.nil?
  end
  
  def to_map
    {
      id: id.to_s,
      hint: map_hint,
      addr: address,
      lat: get_lat,
      lon: get_lon,
    }
  end
  
  def geo_address
    if map_address.blank?
      address
    else
      map_address
    end
  end
  
  def self.admin
    RocketCMS.map_config
  end
end

Version data entries

153 entries across 153 versions & 2 rubygems

Version Path
rocket_cms-0.37.1 app/models/concerns/mappable.rb
rocket_cms-0.37.0 app/models/concerns/mappable.rb
rocket_cms-0.36.0 app/models/concerns/mappable.rb
rocket_cms-0.35.0 app/models/concerns/mappable.rb
rocket_cms-0.34.0 app/models/concerns/mappable.rb
rocket_cms-0.33.1 app/models/concerns/mappable.rb
rocket_cms-0.33.0 app/models/concerns/mappable.rb
rocket_cms-0.32.0 app/models/concerns/mappable.rb
rocket_cms-0.31.1 app/models/concerns/mappable.rb
rocket_cms-0.31.0 app/models/concerns/mappable.rb
rocket_cms-0.30.0 app/models/concerns/mappable.rb
rocket_cms-0.29.0 app/models/concerns/mappable.rb
rocket_cms-0.28.0 app/models/concerns/mappable.rb
rocket_cms-0.27.8 app/models/concerns/mappable.rb
rocket_cms-0.27.7 app/models/concerns/mappable.rb
rocket_cms-0.27.6 app/models/concerns/mappable.rb
rocket_cms-0.27.5 app/models/concerns/mappable.rb
rocket_cms-0.27.4 app/models/concerns/mappable.rb
rocket_cms-0.27.3 app/models/concerns/mappable.rb
rocket_cms-0.27.2 app/models/concerns/mappable.rb