GeoRSS aggregator and Layar augmented reality server
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

posts_helper.rb 1.4 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. module PostsHelper
  2. def post_to_poi(post, subscription)
  3. # http://layar.com/documentation/browser/api/getpois-response/
  4. res = {
  5. :id => post.id,
  6. :imageURL => "%s%s/assets/layar-icons/tal-logo-100.png" % [ request.protocol, request.env['HTTP_HOST'] ],
  7. :anchor => {
  8. :geolocation => {
  9. :lat => post.lat,
  10. :lon => post.lon,
  11. :alt => 0
  12. }
  13. },
  14. :text => {
  15. :title => decode_entities(post.title),
  16. :description => clean_description(post.summary),
  17. :footnote => "From #{post.feed_title}"
  18. },
  19. :actions => [
  20. {
  21. :label => "Read more...",
  22. :uri => post.url,
  23. :contentType => "text/html",
  24. :method => "GET",
  25. :activityType => 1
  26. },
  27. ]
  28. }
  29. unless subscription.icon_url.blank?
  30. res[:object] = {
  31. :contentType => "image/vnd.layar.generic",
  32. :url => subscription.icon_url,
  33. :reducedURL => subscription.icon_url,
  34. :size => 10
  35. }
  36. res[:transform] = {
  37. :rel => true # icon always faces the user
  38. }
  39. end
  40. res
  41. end
  42. def decode_entities(s)
  43. HTMLEntities.new.decode s
  44. end
  45. def clean_description(s)
  46. if s.nil?
  47. return ""
  48. end
  49. if s.size > 137
  50. s = s[0..136] + '...'
  51. end
  52. decode_entities(s.gsub(/<.+?>/, ''))
  53. end
  54. end