|
- module PostsHelper
- def post_to_poi(post, subscription)
- # http://layar.com/documentation/browser/api/getpois-response/
-
- if subscription.layer.icon_url.blank?
- image_url = "%s%s/assets/layar-icons/tal-logo-100.png" % [ request.protocol, request.env['HTTP_HOST'] ]
- else
- image_url = subscription.layer.icon_url
- end
-
- res = {
- :id => post.id,
- :imageURL => image_url,
- :anchor => {
- :geolocation => {
- :lat => post.lat,
- :lon => post.lon,
- :alt => 0
- }
- },
- :text => {
- :title => decode_entities(post.title),
- :description => clean_description(post.summary),
- :footnote => "From #{post.feed_title}"
- },
- :actions => [
- {
- :label => "Read more...",
- :uri => post.url,
- :contentType => "text/html",
- :method => "GET",
- :activityType => 1
- },
- ]
- }
-
- unless subscription.icon_url.blank?
- res[:object] = {
- :contentType => "image/vnd.layar.generic",
- :url => subscription.icon_url,
- :reducedURL => subscription.icon_url,
- :size => subscription.icon_size
- }
-
- res[:icon] = {
- :url => subscription.icon_url
- }
-
- # http://layar.com/documentation/browser/api/getpois-response/hotspots/
- # res[:transform] = {
- # :rotate => {
- # :rel => true,
- # :axis => { :x => 0, :y => 0, :z => 1 },
- # :angle => 0
- # },
- # :translate => { :x => 0, :y => -0.075, :z => ENV['APOLLO_TRANSLATE_Z'] || 1.75 },
- # :scale => calculate_scale(post.distance.to_i),
- # :distance => post.distance
- # }
- end
- res
- end
-
- def decode_entities(s)
- HTMLEntities.new.decode s
- end
-
- def clean_description(s)
- if s.nil?
- return ""
- end
-
- if s.size > 137
- s = s[0..136] + '...'
- end
-
- decode_entities(s.gsub(/<.+?>/, ''))
- end
-
- def calculate_scale(distance)
- scale = 1.0
- scale = 0.5 if distance < 100.0
- scale = distance / 1000.0 if distance > 1000.0
- scale
- end
- end
|