overlord 0.1.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.
Files changed (548) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +73 -0
  6. data/VERSION +1 -0
  7. data/app/helpers/overlord_google_helper.rb +298 -0
  8. data/app/views/google/_combined_feed.html.erb +54 -0
  9. data/app/views/google/_dynamic_feeds_vertical.html.erb +22 -0
  10. data/app/views/google/_feed.html.erb +43 -0
  11. data/app/views/google/_feed_search.html.erb +26 -0
  12. data/app/views/google/_feeds_scripts.html.erb +36 -0
  13. data/app/views/google/_hot_trends.html.erb +5 -0
  14. data/app/views/google/_search.html.erb +39 -0
  15. data/app/views/google/_slide_show.html.erb +14 -0
  16. data/lib/overlord.rb +3 -0
  17. data/lib/overlord/google_feed_request.rb +116 -0
  18. data/rails/init.rb +5 -0
  19. data/test/rails_root/.gitignore +8 -0
  20. data/test/rails_root/.rake_tasks +103 -0
  21. data/test/rails_root/Rakefile +18 -0
  22. data/test/rails_root/app/controllers/application_controller.rb +9 -0
  23. data/test/rails_root/app/controllers/default_controller.rb +27 -0
  24. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  25. data/test/rails_root/app/models/.keep +0 -0
  26. data/test/rails_root/app/views/default/index.html.erb +0 -0
  27. data/test/rails_root/app/views/layouts/default.html.erb +43 -0
  28. data/test/rails_root/config/amazon_s3.yml +14 -0
  29. data/test/rails_root/config/boot.rb +109 -0
  30. data/test/rails_root/config/database.yml +17 -0
  31. data/test/rails_root/config/environment.rb +19 -0
  32. data/test/rails_root/config/environments/cucumber.rb +21 -0
  33. data/test/rails_root/config/environments/development.rb +36 -0
  34. data/test/rails_root/config/environments/production.rb +1 -0
  35. data/test/rails_root/config/environments/test.rb +34 -0
  36. data/test/rails_root/config/global_config.yml +31 -0
  37. data/test/rails_root/config/initializers/inflections.rb +10 -0
  38. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  39. data/test/rails_root/config/initializers/requires.rb +13 -0
  40. data/test/rails_root/config/initializers/session_store.rb +8 -0
  41. data/test/rails_root/config/routes.rb +5 -0
  42. data/test/rails_root/db/.keep +0 -0
  43. data/test/rails_root/db/migrate/20091031181115_create_sessions.rb +16 -0
  44. data/test/rails_root/features/feeds.feature +13 -0
  45. data/test/rails_root/features/step_definitions/common_steps.rb +93 -0
  46. data/test/rails_root/features/step_definitions/visit_steps.rb +6 -0
  47. data/test/rails_root/features/step_definitions/webrat_steps.rb +128 -0
  48. data/test/rails_root/features/support/env.rb +14 -0
  49. data/test/rails_root/features/support/paths.rb +36 -0
  50. data/test/rails_root/features/visit.feature +10 -0
  51. data/test/rails_root/lib/tasks/cucumber.rake +20 -0
  52. data/test/rails_root/public/.htaccess +40 -0
  53. data/test/rails_root/public/404.html +30 -0
  54. data/test/rails_root/public/422.html +30 -0
  55. data/test/rails_root/public/500.html +30 -0
  56. data/test/rails_root/public/dispatch.rb +10 -0
  57. data/test/rails_root/public/ecs_to_rss-wishlist.xslt +41 -0
  58. data/test/rails_root/public/favicon.ico +0 -0
  59. data/test/rails_root/public/images/arrow_left.gif +0 -0
  60. data/test/rails_root/public/images/arrow_right.gif +0 -0
  61. data/test/rails_root/public/images/blue/preview.gif +0 -0
  62. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  63. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  64. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  65. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  66. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  67. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  68. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  69. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  70. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  71. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  72. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  73. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  74. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  75. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  76. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  77. data/test/rails_root/public/images/icons/accept.png +0 -0
  78. data/test/rails_root/public/images/icons/add.png +0 -0
  79. data/test/rails_root/public/images/icons/blue_guy.png +0 -0
  80. data/test/rails_root/public/images/icons/cancel.png +0 -0
  81. data/test/rails_root/public/images/icons/close.png +0 -0
  82. data/test/rails_root/public/images/icons/comment.png +0 -0
  83. data/test/rails_root/public/images/icons/delete.png +0 -0
  84. data/test/rails_root/public/images/icons/exclaim.png +0 -0
  85. data/test/rails_root/public/images/icons/grey_guy.png +0 -0
  86. data/test/rails_root/public/images/icons/hide.png +0 -0
  87. data/test/rails_root/public/images/icons/information.png +0 -0
  88. data/test/rails_root/public/images/icons/minus.png +0 -0
  89. data/test/rails_root/public/images/icons/question.png +0 -0
  90. data/test/rails_root/public/images/icons/search_box.png +0 -0
  91. data/test/rails_root/public/images/icons/star.png +0 -0
  92. data/test/rails_root/public/images/icons/stop.png +0 -0
  93. data/test/rails_root/public/images/icons/thumb_down.png +0 -0
  94. data/test/rails_root/public/images/icons/thumb_up.png +0 -0
  95. data/test/rails_root/public/images/icons/vote.png +0 -0
  96. data/test/rails_root/public/images/loading.gif +0 -0
  97. data/test/rails_root/public/images/profile_default.jpg +0 -0
  98. data/test/rails_root/public/images/rails.png +0 -0
  99. data/test/rails_root/public/images/red/preview.gif +0 -0
  100. data/test/rails_root/public/images/service_icons/16/amazon.png +0 -0
  101. data/test/rails_root/public/images/service_icons/16/ask.png +0 -0
  102. data/test/rails_root/public/images/service_icons/16/bibsonomy.png +0 -0
  103. data/test/rails_root/public/images/service_icons/16/bing.png +0 -0
  104. data/test/rails_root/public/images/service_icons/16/blogger.png +0 -0
  105. data/test/rails_root/public/images/service_icons/16/bloglines.png +0 -0
  106. data/test/rails_root/public/images/service_icons/16/citeulike.png +0 -0
  107. data/test/rails_root/public/images/service_icons/16/clipmarks.png +0 -0
  108. data/test/rails_root/public/images/service_icons/16/connotea.png +0 -0
  109. data/test/rails_root/public/images/service_icons/16/dailymotion.png +0 -0
  110. data/test/rails_root/public/images/service_icons/16/delicious.png +0 -0
  111. data/test/rails_root/public/images/service_icons/16/digg.png +0 -0
  112. data/test/rails_root/public/images/service_icons/16/diigo.png +0 -0
  113. data/test/rails_root/public/images/service_icons/16/facebook.png +0 -0
  114. data/test/rails_root/public/images/service_icons/16/feed.png +0 -0
  115. data/test/rails_root/public/images/service_icons/16/flickr.png +0 -0
  116. data/test/rails_root/public/images/service_icons/16/fotolog.png +0 -0
  117. data/test/rails_root/public/images/service_icons/16/friendfeed.png +0 -0
  118. data/test/rails_root/public/images/service_icons/16/friendster.png +0 -0
  119. data/test/rails_root/public/images/service_icons/16/furl.png +0 -0
  120. data/test/rails_root/public/images/service_icons/16/goodreads.png +0 -0
  121. data/test/rails_root/public/images/service_icons/16/google.png +0 -0
  122. data/test/rails_root/public/images/service_icons/16/googleblog.png +0 -0
  123. data/test/rails_root/public/images/service_icons/16/googlenews.png +0 -0
  124. data/test/rails_root/public/images/service_icons/16/icerocket.png +0 -0
  125. data/test/rails_root/public/images/service_icons/16/identica.png +0 -0
  126. data/test/rails_root/public/images/service_icons/16/joost.png +0 -0
  127. data/test/rails_root/public/images/service_icons/16/lastfm.png +0 -0
  128. data/test/rails_root/public/images/service_icons/16/librarything.png +0 -0
  129. data/test/rails_root/public/images/service_icons/16/linkedin.png +0 -0
  130. data/test/rails_root/public/images/service_icons/16/livejournal.png +0 -0
  131. data/test/rails_root/public/images/service_icons/16/magnolia.png +0 -0
  132. data/test/rails_root/public/images/service_icons/16/mendeley.png +0 -0
  133. data/test/rails_root/public/images/service_icons/16/metacafe.png +0 -0
  134. data/test/rails_root/public/images/service_icons/16/mixx.png +0 -0
  135. data/test/rails_root/public/images/service_icons/16/myspace.png +0 -0
  136. data/test/rails_root/public/images/service_icons/16/netflix.png +0 -0
  137. data/test/rails_root/public/images/service_icons/16/netvibes.png +0 -0
  138. data/test/rails_root/public/images/service_icons/16/newsvine.png +0 -0
  139. data/test/rails_root/public/images/service_icons/16/oai.png +0 -0
  140. data/test/rails_root/public/images/service_icons/16/odeo.png +0 -0
  141. data/test/rails_root/public/images/service_icons/16/opml.png +0 -0
  142. data/test/rails_root/public/images/service_icons/16/pandora.png +0 -0
  143. data/test/rails_root/public/images/service_icons/16/photobucket.png +0 -0
  144. data/test/rails_root/public/images/service_icons/16/picasa.png +0 -0
  145. data/test/rails_root/public/images/service_icons/16/polyvore.png +0 -0
  146. data/test/rails_root/public/images/service_icons/16/pownce.png +0 -0
  147. data/test/rails_root/public/images/service_icons/16/reddit.png +0 -0
  148. data/test/rails_root/public/images/service_icons/16/simpy.png +0 -0
  149. data/test/rails_root/public/images/service_icons/16/smugmug.png +0 -0
  150. data/test/rails_root/public/images/service_icons/16/stumbleupon.png +0 -0
  151. data/test/rails_root/public/images/service_icons/16/tag.png +0 -0
  152. data/test/rails_root/public/images/service_icons/16/technorati.png +0 -0
  153. data/test/rails_root/public/images/service_icons/16/tumblr.png +0 -0
  154. data/test/rails_root/public/images/service_icons/16/twine.png +0 -0
  155. data/test/rails_root/public/images/service_icons/16/twitter.png +0 -0
  156. data/test/rails_root/public/images/service_icons/16/vimeo.png +0 -0
  157. data/test/rails_root/public/images/service_icons/16/webshots.png +0 -0
  158. data/test/rails_root/public/images/service_icons/16/wordpress.png +0 -0
  159. data/test/rails_root/public/images/service_icons/16/xanga.png +0 -0
  160. data/test/rails_root/public/images/service_icons/16/yahoo.png +0 -0
  161. data/test/rails_root/public/images/service_icons/16/yelp.png +0 -0
  162. data/test/rails_root/public/images/service_icons/16/youtube.png +0 -0
  163. data/test/rails_root/public/images/service_icons/16/zooomr.png +0 -0
  164. data/test/rails_root/public/images/service_icons/16/zotero.png +0 -0
  165. data/test/rails_root/public/images/service_icons/24/amazon.png +0 -0
  166. data/test/rails_root/public/images/service_icons/24/ask.png +0 -0
  167. data/test/rails_root/public/images/service_icons/24/bibsonomy.png +0 -0
  168. data/test/rails_root/public/images/service_icons/24/bing.png +0 -0
  169. data/test/rails_root/public/images/service_icons/24/blogger.png +0 -0
  170. data/test/rails_root/public/images/service_icons/24/bloglines.png +0 -0
  171. data/test/rails_root/public/images/service_icons/24/citeulike.png +0 -0
  172. data/test/rails_root/public/images/service_icons/24/clipmarks.png +0 -0
  173. data/test/rails_root/public/images/service_icons/24/connotea.png +0 -0
  174. data/test/rails_root/public/images/service_icons/24/dailymotion.png +0 -0
  175. data/test/rails_root/public/images/service_icons/24/delicious.png +0 -0
  176. data/test/rails_root/public/images/service_icons/24/digg.png +0 -0
  177. data/test/rails_root/public/images/service_icons/24/diigo.png +0 -0
  178. data/test/rails_root/public/images/service_icons/24/facebook.png +0 -0
  179. data/test/rails_root/public/images/service_icons/24/feed.png +0 -0
  180. data/test/rails_root/public/images/service_icons/24/flickr.png +0 -0
  181. data/test/rails_root/public/images/service_icons/24/fotolog.png +0 -0
  182. data/test/rails_root/public/images/service_icons/24/friendfeed.png +0 -0
  183. data/test/rails_root/public/images/service_icons/24/friendster.png +0 -0
  184. data/test/rails_root/public/images/service_icons/24/furl.png +0 -0
  185. data/test/rails_root/public/images/service_icons/24/goodreads.png +0 -0
  186. data/test/rails_root/public/images/service_icons/24/google.png +0 -0
  187. data/test/rails_root/public/images/service_icons/24/googleblog.png +0 -0
  188. data/test/rails_root/public/images/service_icons/24/googlenews.png +0 -0
  189. data/test/rails_root/public/images/service_icons/24/icerocket.png +0 -0
  190. data/test/rails_root/public/images/service_icons/24/identica.png +0 -0
  191. data/test/rails_root/public/images/service_icons/24/joost.png +0 -0
  192. data/test/rails_root/public/images/service_icons/24/lastfm.png +0 -0
  193. data/test/rails_root/public/images/service_icons/24/librarything.png +0 -0
  194. data/test/rails_root/public/images/service_icons/24/linkedin.png +0 -0
  195. data/test/rails_root/public/images/service_icons/24/livejournal.png +0 -0
  196. data/test/rails_root/public/images/service_icons/24/magnolia.png +0 -0
  197. data/test/rails_root/public/images/service_icons/24/mendeley.png +0 -0
  198. data/test/rails_root/public/images/service_icons/24/metacafe.png +0 -0
  199. data/test/rails_root/public/images/service_icons/24/mixx.png +0 -0
  200. data/test/rails_root/public/images/service_icons/24/myspace.png +0 -0
  201. data/test/rails_root/public/images/service_icons/24/netflix.png +0 -0
  202. data/test/rails_root/public/images/service_icons/24/netvibes.png +0 -0
  203. data/test/rails_root/public/images/service_icons/24/newsvine.png +0 -0
  204. data/test/rails_root/public/images/service_icons/24/oai.png +0 -0
  205. data/test/rails_root/public/images/service_icons/24/odeo.png +0 -0
  206. data/test/rails_root/public/images/service_icons/24/opml.png +0 -0
  207. data/test/rails_root/public/images/service_icons/24/pandora.png +0 -0
  208. data/test/rails_root/public/images/service_icons/24/photobucket.png +0 -0
  209. data/test/rails_root/public/images/service_icons/24/picasa.png +0 -0
  210. data/test/rails_root/public/images/service_icons/24/polyvore.png +0 -0
  211. data/test/rails_root/public/images/service_icons/24/pownce.png +0 -0
  212. data/test/rails_root/public/images/service_icons/24/reddit.png +0 -0
  213. data/test/rails_root/public/images/service_icons/24/simpy.png +0 -0
  214. data/test/rails_root/public/images/service_icons/24/smugmug.png +0 -0
  215. data/test/rails_root/public/images/service_icons/24/stumbleupon.png +0 -0
  216. data/test/rails_root/public/images/service_icons/24/tag.png +0 -0
  217. data/test/rails_root/public/images/service_icons/24/technorati.png +0 -0
  218. data/test/rails_root/public/images/service_icons/24/tumblr.png +0 -0
  219. data/test/rails_root/public/images/service_icons/24/twine.png +0 -0
  220. data/test/rails_root/public/images/service_icons/24/twitter.png +0 -0
  221. data/test/rails_root/public/images/service_icons/24/vimeo.png +0 -0
  222. data/test/rails_root/public/images/service_icons/24/webshots.png +0 -0
  223. data/test/rails_root/public/images/service_icons/24/wordpress.png +0 -0
  224. data/test/rails_root/public/images/service_icons/24/xanga.png +0 -0
  225. data/test/rails_root/public/images/service_icons/24/yahoo.png +0 -0
  226. data/test/rails_root/public/images/service_icons/24/yelp.png +0 -0
  227. data/test/rails_root/public/images/service_icons/24/youtube.png +0 -0
  228. data/test/rails_root/public/images/service_icons/24/zooomr.png +0 -0
  229. data/test/rails_root/public/images/service_icons/24/zotero.png +0 -0
  230. data/test/rails_root/public/images/service_icons/48/amazon.png +0 -0
  231. data/test/rails_root/public/images/service_icons/48/ask.png +0 -0
  232. data/test/rails_root/public/images/service_icons/48/bibsonomy.png +0 -0
  233. data/test/rails_root/public/images/service_icons/48/bing.png +0 -0
  234. data/test/rails_root/public/images/service_icons/48/blogger.png +0 -0
  235. data/test/rails_root/public/images/service_icons/48/bloglines.png +0 -0
  236. data/test/rails_root/public/images/service_icons/48/citeulike.png +0 -0
  237. data/test/rails_root/public/images/service_icons/48/clipmarks.png +0 -0
  238. data/test/rails_root/public/images/service_icons/48/connotea.png +0 -0
  239. data/test/rails_root/public/images/service_icons/48/dailymotion.png +0 -0
  240. data/test/rails_root/public/images/service_icons/48/delicious.png +0 -0
  241. data/test/rails_root/public/images/service_icons/48/digg.png +0 -0
  242. data/test/rails_root/public/images/service_icons/48/diigo.png +0 -0
  243. data/test/rails_root/public/images/service_icons/48/facebook.png +0 -0
  244. data/test/rails_root/public/images/service_icons/48/feed.png +0 -0
  245. data/test/rails_root/public/images/service_icons/48/flickr.png +0 -0
  246. data/test/rails_root/public/images/service_icons/48/fotolog.png +0 -0
  247. data/test/rails_root/public/images/service_icons/48/friendfeed.png +0 -0
  248. data/test/rails_root/public/images/service_icons/48/friendster.png +0 -0
  249. data/test/rails_root/public/images/service_icons/48/furl.png +0 -0
  250. data/test/rails_root/public/images/service_icons/48/goodreads.png +0 -0
  251. data/test/rails_root/public/images/service_icons/48/google.png +0 -0
  252. data/test/rails_root/public/images/service_icons/48/googleblog.png +0 -0
  253. data/test/rails_root/public/images/service_icons/48/googlenews.png +0 -0
  254. data/test/rails_root/public/images/service_icons/48/icerocket.png +0 -0
  255. data/test/rails_root/public/images/service_icons/48/identica.png +0 -0
  256. data/test/rails_root/public/images/service_icons/48/joost.png +0 -0
  257. data/test/rails_root/public/images/service_icons/48/lastfm.png +0 -0
  258. data/test/rails_root/public/images/service_icons/48/librarything.png +0 -0
  259. data/test/rails_root/public/images/service_icons/48/linkedin.png +0 -0
  260. data/test/rails_root/public/images/service_icons/48/livejournal.png +0 -0
  261. data/test/rails_root/public/images/service_icons/48/magnolia.png +0 -0
  262. data/test/rails_root/public/images/service_icons/48/mendeley.png +0 -0
  263. data/test/rails_root/public/images/service_icons/48/metacafe.png +0 -0
  264. data/test/rails_root/public/images/service_icons/48/mixx.png +0 -0
  265. data/test/rails_root/public/images/service_icons/48/myspace.png +0 -0
  266. data/test/rails_root/public/images/service_icons/48/netflix.png +0 -0
  267. data/test/rails_root/public/images/service_icons/48/netvibes.png +0 -0
  268. data/test/rails_root/public/images/service_icons/48/newsvine.png +0 -0
  269. data/test/rails_root/public/images/service_icons/48/oai.png +0 -0
  270. data/test/rails_root/public/images/service_icons/48/odeo.png +0 -0
  271. data/test/rails_root/public/images/service_icons/48/opml.png +0 -0
  272. data/test/rails_root/public/images/service_icons/48/pandora.png +0 -0
  273. data/test/rails_root/public/images/service_icons/48/photobucket.png +0 -0
  274. data/test/rails_root/public/images/service_icons/48/picasa.png +0 -0
  275. data/test/rails_root/public/images/service_icons/48/polyvore.png +0 -0
  276. data/test/rails_root/public/images/service_icons/48/pownce.png +0 -0
  277. data/test/rails_root/public/images/service_icons/48/reddit.png +0 -0
  278. data/test/rails_root/public/images/service_icons/48/simpy.png +0 -0
  279. data/test/rails_root/public/images/service_icons/48/smugmug.png +0 -0
  280. data/test/rails_root/public/images/service_icons/48/stumbleupon.png +0 -0
  281. data/test/rails_root/public/images/service_icons/48/tag.png +0 -0
  282. data/test/rails_root/public/images/service_icons/48/technorati.png +0 -0
  283. data/test/rails_root/public/images/service_icons/48/tumblr.png +0 -0
  284. data/test/rails_root/public/images/service_icons/48/twine.png +0 -0
  285. data/test/rails_root/public/images/service_icons/48/twitter.png +0 -0
  286. data/test/rails_root/public/images/service_icons/48/vimeo.png +0 -0
  287. data/test/rails_root/public/images/service_icons/48/webshots.png +0 -0
  288. data/test/rails_root/public/images/service_icons/48/wordpress.png +0 -0
  289. data/test/rails_root/public/images/service_icons/48/xanga.png +0 -0
  290. data/test/rails_root/public/images/service_icons/48/yahoo.png +0 -0
  291. data/test/rails_root/public/images/service_icons/48/yelp.png +0 -0
  292. data/test/rails_root/public/images/service_icons/48/youtube.png +0 -0
  293. data/test/rails_root/public/images/service_icons/48/zooomr.png +0 -0
  294. data/test/rails_root/public/images/service_icons/48/zotero.png +0 -0
  295. data/test/rails_root/public/images/service_icons/60/amazon.png +0 -0
  296. data/test/rails_root/public/images/service_icons/60/ask.png +0 -0
  297. data/test/rails_root/public/images/service_icons/60/bibsonomy.png +0 -0
  298. data/test/rails_root/public/images/service_icons/60/bing.png +0 -0
  299. data/test/rails_root/public/images/service_icons/60/blogger.png +0 -0
  300. data/test/rails_root/public/images/service_icons/60/bloglines.png +0 -0
  301. data/test/rails_root/public/images/service_icons/60/citeulike.png +0 -0
  302. data/test/rails_root/public/images/service_icons/60/clipmarks.png +0 -0
  303. data/test/rails_root/public/images/service_icons/60/connotea.png +0 -0
  304. data/test/rails_root/public/images/service_icons/60/dailymotion.png +0 -0
  305. data/test/rails_root/public/images/service_icons/60/delicious.png +0 -0
  306. data/test/rails_root/public/images/service_icons/60/digg.png +0 -0
  307. data/test/rails_root/public/images/service_icons/60/diigo.png +0 -0
  308. data/test/rails_root/public/images/service_icons/60/facebook.png +0 -0
  309. data/test/rails_root/public/images/service_icons/60/feed.png +0 -0
  310. data/test/rails_root/public/images/service_icons/60/flickr.png +0 -0
  311. data/test/rails_root/public/images/service_icons/60/fotolog.png +0 -0
  312. data/test/rails_root/public/images/service_icons/60/friendfeed.png +0 -0
  313. data/test/rails_root/public/images/service_icons/60/friendster.png +0 -0
  314. data/test/rails_root/public/images/service_icons/60/furl.png +0 -0
  315. data/test/rails_root/public/images/service_icons/60/goodreads.png +0 -0
  316. data/test/rails_root/public/images/service_icons/60/google.png +0 -0
  317. data/test/rails_root/public/images/service_icons/60/googleblog.png +0 -0
  318. data/test/rails_root/public/images/service_icons/60/googlenews.png +0 -0
  319. data/test/rails_root/public/images/service_icons/60/icerocket.png +0 -0
  320. data/test/rails_root/public/images/service_icons/60/identica.png +0 -0
  321. data/test/rails_root/public/images/service_icons/60/joost.png +0 -0
  322. data/test/rails_root/public/images/service_icons/60/lastfm.png +0 -0
  323. data/test/rails_root/public/images/service_icons/60/librarything.png +0 -0
  324. data/test/rails_root/public/images/service_icons/60/linkedin.png +0 -0
  325. data/test/rails_root/public/images/service_icons/60/livejournal.png +0 -0
  326. data/test/rails_root/public/images/service_icons/60/magnolia.png +0 -0
  327. data/test/rails_root/public/images/service_icons/60/mendeley.png +0 -0
  328. data/test/rails_root/public/images/service_icons/60/metacafe.png +0 -0
  329. data/test/rails_root/public/images/service_icons/60/mixx.png +0 -0
  330. data/test/rails_root/public/images/service_icons/60/myspace.png +0 -0
  331. data/test/rails_root/public/images/service_icons/60/netflix.png +0 -0
  332. data/test/rails_root/public/images/service_icons/60/netvibes.png +0 -0
  333. data/test/rails_root/public/images/service_icons/60/newsvine.png +0 -0
  334. data/test/rails_root/public/images/service_icons/60/oai.png +0 -0
  335. data/test/rails_root/public/images/service_icons/60/odeo.png +0 -0
  336. data/test/rails_root/public/images/service_icons/60/opml.png +0 -0
  337. data/test/rails_root/public/images/service_icons/60/pandora.png +0 -0
  338. data/test/rails_root/public/images/service_icons/60/photobucket.png +0 -0
  339. data/test/rails_root/public/images/service_icons/60/picasa.png +0 -0
  340. data/test/rails_root/public/images/service_icons/60/polyvore.png +0 -0
  341. data/test/rails_root/public/images/service_icons/60/pownce.png +0 -0
  342. data/test/rails_root/public/images/service_icons/60/reddit.png +0 -0
  343. data/test/rails_root/public/images/service_icons/60/simpy.png +0 -0
  344. data/test/rails_root/public/images/service_icons/60/smugmug.png +0 -0
  345. data/test/rails_root/public/images/service_icons/60/stumbleupon.png +0 -0
  346. data/test/rails_root/public/images/service_icons/60/tag.png +0 -0
  347. data/test/rails_root/public/images/service_icons/60/technorati.png +0 -0
  348. data/test/rails_root/public/images/service_icons/60/tumblr.png +0 -0
  349. data/test/rails_root/public/images/service_icons/60/twine.png +0 -0
  350. data/test/rails_root/public/images/service_icons/60/twitter.png +0 -0
  351. data/test/rails_root/public/images/service_icons/60/vimeo.png +0 -0
  352. data/test/rails_root/public/images/service_icons/60/webshots.png +0 -0
  353. data/test/rails_root/public/images/service_icons/60/wordpress.png +0 -0
  354. data/test/rails_root/public/images/service_icons/60/xanga.png +0 -0
  355. data/test/rails_root/public/images/service_icons/60/yahoo.png +0 -0
  356. data/test/rails_root/public/images/service_icons/60/yelp.png +0 -0
  357. data/test/rails_root/public/images/service_icons/60/youtube.png +0 -0
  358. data/test/rails_root/public/images/service_icons/60/zooomr.png +0 -0
  359. data/test/rails_root/public/images/service_icons/60/zotero.png +0 -0
  360. data/test/rails_root/public/images/service_icons/ReadMe.rtf +52 -0
  361. data/test/rails_root/public/images/service_icons/amazon.png +0 -0
  362. data/test/rails_root/public/images/service_icons/facebook_friend_links.jpg +0 -0
  363. data/test/rails_root/public/images/service_icons/facebook_my_links.jpg +0 -0
  364. data/test/rails_root/public/images/service_icons/source/Aquaticus_Social_Icon_template_by_jwloh.psd +0 -0
  365. data/test/rails_root/public/images/service_icons/source/Google.psd +0 -0
  366. data/test/rails_root/public/images/service_icons/source/Quake 9 Design.webloc b/data/test/rails_root/public/images/service_icons/source/Quake 9 → Design.webloc +0 -0
  367. data/test/rails_root/public/images/service_icons/source/ReadMe.rtf +52 -0
  368. data/test/rails_root/public/images/service_icons/source/aquaticus.social.png +0 -0
  369. data/test/rails_root/public/images/service_icons/source/ask.psd +0 -0
  370. data/test/rails_root/public/images/service_icons/source/bibsonomy.psd +0 -0
  371. data/test/rails_root/public/images/service_icons/source/bing.psd +0 -0
  372. data/test/rails_root/public/images/service_icons/source/bloglines.psd +0 -0
  373. data/test/rails_root/public/images/service_icons/source/citeulike.png +0 -0
  374. data/test/rails_root/public/images/service_icons/source/clipmarks.png +0 -0
  375. data/test/rails_root/public/images/service_icons/source/connotea.psd +0 -0
  376. data/test/rails_root/public/images/service_icons/source/icerocket.psd +0 -0
  377. data/test/rails_root/public/images/service_icons/source/metacafe.psd +0 -0
  378. data/test/rails_root/public/images/service_icons/source/netflix.png +0 -0
  379. data/test/rails_root/public/images/service_icons/source/oai.png +0 -0
  380. data/test/rails_root/public/images/service_icons/source/odeo.png +0 -0
  381. data/test/rails_root/public/images/service_icons/source/opml.png +0 -0
  382. data/test/rails_root/public/images/service_icons/source/pandora.png +0 -0
  383. data/test/rails_root/public/images/service_icons/source/simpy.png +0 -0
  384. data/test/rails_root/public/images/service_icons/source/template.png +0 -0
  385. data/test/rails_root/public/images/service_icons/source/twine.psd +0 -0
  386. data/test/rails_root/public/images/service_icons/source/xanga.png +0 -0
  387. data/test/rails_root/public/images/spinner.gif +0 -0
  388. data/test/rails_root/public/images/sprites.png +0 -0
  389. data/test/rails_root/public/javascripts/application.js +2 -0
  390. data/test/rails_root/public/javascripts/builder.js +136 -0
  391. data/test/rails_root/public/javascripts/controls.js +963 -0
  392. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  393. data/test/rails_root/public/javascripts/effects.js +1120 -0
  394. data/test/rails_root/public/javascripts/fancyzoom.min.js +1 -0
  395. data/test/rails_root/public/javascripts/jquery-ui.js +188 -0
  396. data/test/rails_root/public/javascripts/jquery.js +19 -0
  397. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +273 -0
  398. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  399. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  400. data/test/rails_root/public/javascripts/jquery/jquery.form.js +637 -0
  401. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +2 -0
  402. data/test/rails_root/public/javascripts/jquery/jquery.js +19 -0
  403. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +69 -0
  404. data/test/rails_root/public/javascripts/jquery/jrails.js +1 -0
  405. data/test/rails_root/public/javascripts/jrails.js +1 -0
  406. data/test/rails_root/public/javascripts/muck.js +81 -0
  407. data/test/rails_root/public/javascripts/muck_activities.js +107 -0
  408. data/test/rails_root/public/javascripts/muck_raker.js +94 -0
  409. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  410. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  411. data/test/rails_root/public/javascripts/slider.js +277 -0
  412. data/test/rails_root/public/javascripts/sound.js +60 -0
  413. data/test/rails_root/public/robots.txt +1 -0
  414. data/test/rails_root/public/stylesheets/.keep +0 -0
  415. data/test/rails_root/public/stylesheets/admin.css +12 -0
  416. data/test/rails_root/public/stylesheets/application.css +0 -0
  417. data/test/rails_root/public/stylesheets/blueprint/ie.css +26 -0
  418. data/test/rails_root/public/stylesheets/blueprint/liquid_screen.css +203 -0
  419. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  420. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  421. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  422. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  423. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  424. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  425. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  426. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  427. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  428. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  429. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  430. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  431. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  432. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  433. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  434. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  435. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  436. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/liquid.css +134 -0
  437. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/src/liquid.css +197 -0
  438. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  439. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/screen.css +109 -0
  440. data/test/rails_root/public/stylesheets/blueprint/print.css +30 -0
  441. data/test/rails_root/public/stylesheets/blueprint/screen.css +251 -0
  442. data/test/rails_root/public/stylesheets/blueprint/sprite.css +1 -0
  443. data/test/rails_root/public/stylesheets/blueprint/src/forms.css +49 -0
  444. data/test/rails_root/public/stylesheets/blueprint/src/grid.css +213 -0
  445. data/test/rails_root/public/stylesheets/blueprint/src/grid.png +0 -0
  446. data/test/rails_root/public/stylesheets/blueprint/src/ie.css +59 -0
  447. data/test/rails_root/public/stylesheets/blueprint/src/print.css +85 -0
  448. data/test/rails_root/public/stylesheets/blueprint/src/reset.css +38 -0
  449. data/test/rails_root/public/stylesheets/blueprint/src/typography.css +105 -0
  450. data/test/rails_root/public/stylesheets/frame.css +56 -0
  451. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  452. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  453. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
  454. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
  455. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  456. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
  457. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  458. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  459. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
  460. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_222222_256x240.png +0 -0
  461. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2694e8_256x240.png +0 -0
  462. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2e83ff_256x240.png +0 -0
  463. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_72a7cf_256x240.png +0 -0
  464. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_888888_256x240.png +0 -0
  465. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png +0 -0
  466. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png +0 -0
  467. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css +404 -0
  468. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  469. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  470. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  471. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  472. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  473. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  474. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  475. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  476. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  477. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  478. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  479. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  480. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  481. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  482. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  483. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  484. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css +404 -0
  485. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  486. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  487. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  488. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  489. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  490. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  491. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  492. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  493. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_222222_256x240.png +0 -0
  494. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  495. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_454545_256x240.png +0 -0
  496. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png +0 -0
  497. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  498. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css +404 -0
  499. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  500. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  501. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  502. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  503. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  504. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  505. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  506. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  507. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  508. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  509. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  510. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  511. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  512. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  513. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css +404 -0
  514. data/test/rails_root/public/stylesheets/reset.css +0 -0
  515. data/test/rails_root/public/stylesheets/styles.css +84 -0
  516. data/test/rails_root/script/about +3 -0
  517. data/test/rails_root/script/breakpointer +3 -0
  518. data/test/rails_root/script/console +3 -0
  519. data/test/rails_root/script/create_project.rb +52 -0
  520. data/test/rails_root/script/cucumber +8 -0
  521. data/test/rails_root/script/dbconsole +3 -0
  522. data/test/rails_root/script/destroy +3 -0
  523. data/test/rails_root/script/generate +3 -0
  524. data/test/rails_root/script/performance/benchmarker +3 -0
  525. data/test/rails_root/script/performance/profiler +3 -0
  526. data/test/rails_root/script/performance/request +3 -0
  527. data/test/rails_root/script/plugin +3 -0
  528. data/test/rails_root/script/process/inspector +3 -0
  529. data/test/rails_root/script/process/reaper +3 -0
  530. data/test/rails_root/script/process/spawner +3 -0
  531. data/test/rails_root/script/runner +3 -0
  532. data/test/rails_root/script/server +3 -0
  533. data/test/rails_root/test/factories.rb +31 -0
  534. data/test/rails_root/test/functional/.keep +0 -0
  535. data/test/rails_root/test/functional/default_controller_test.rb +74 -0
  536. data/test/rails_root/test/integration/.keep +0 -0
  537. data/test/rails_root/test/mocks/development/.keep +0 -0
  538. data/test/rails_root/test/mocks/test/.keep +0 -0
  539. data/test/rails_root/test/shoulda_macros/controller.rb +49 -0
  540. data/test/rails_root/test/shoulda_macros/forms.rb +32 -0
  541. data/test/rails_root/test/shoulda_macros/models.rb +50 -0
  542. data/test/rails_root/test/shoulda_macros/pagination.rb +53 -0
  543. data/test/rails_root/test/shoulda_macros/plugins.rb +34 -0
  544. data/test/rails_root/test/test_helper.rb +30 -0
  545. data/test/rails_root/test/unit/.keep +0 -0
  546. data/test/rails_root/test/unit/google_feed_request_test.rb +57 -0
  547. data/test/test_helper.rb +10 -0
  548. metadata +641 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Justin Ball
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ = overlord
2
+
3
+ A gem to talk to the Google ajax apis.
4
+
5
+ == Copyright
6
+
7
+ Copyright (c) 2009 Justin Ball. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,73 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+
6
+ begin
7
+ require 'jeweler'
8
+ Jeweler::Tasks.new do |gem|
9
+ gem.name = "overlord"
10
+ gem.summary = "Talk with our Google overlords"
11
+ gem.description = "Code to interact with the google ajax apis on the server and the client."
12
+ gem.email = "justinball@gmail.com"
13
+ gem.homepage = "http://github.com/jbasdf/overlord"
14
+ gem.authors = ["Justin Ball"]
15
+ gem.add_development_dependency "thoughtbot-shoulda"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
21
+ end
22
+
23
+ desc 'Test overlord.'
24
+ Rake::TestTask.new(:test) do |t|
25
+ t.libs << 'lib'
26
+ t.libs << 'test/rails_root/test'
27
+ t.pattern = 'test/rails_root/test/**/*_test.rb'
28
+ t.verbose = true
29
+ end
30
+
31
+ begin
32
+ require 'rcov/rcovtask'
33
+ Rcov::RcovTask.new do |t|
34
+ #t.libs << 'lib'
35
+ t.libs << 'test/rails_root/lib'
36
+ t.pattern = 'test/rails_root/test/**/*_test.rb'
37
+ t.verbose = true
38
+ t.output_dir = 'coverage'
39
+ t.rcov_opts << '--exclude "gems/*"'
40
+ end
41
+ rescue LoadError
42
+ task :rcov do
43
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
44
+ end
45
+ end
46
+
47
+ task :test => :check_dependencies
48
+
49
+ desc 'Run default tests.'
50
+ task :default => :test
51
+
52
+ require 'rake/rdoctask'
53
+ desc 'Generate documentation for the recommender plugin.'
54
+ Rake::RDocTask.new do |rdoc|
55
+ if File.exist?('VERSION')
56
+ version = File.read('VERSION')
57
+ else
58
+ version = ""
59
+ end
60
+
61
+ rdoc.rdoc_dir = 'rdoc'
62
+ rdoc.title = "overlord #{version}"
63
+ rdoc.rdoc_files.include('README*')
64
+ rdoc.rdoc_files.include('lib/**/*.rb')
65
+ end
66
+
67
+ desc 'Translate this gem'
68
+ task :translate do
69
+ file = File.join(File.dirname(__FILE__), 'locales', 'en.yml')
70
+ system("babelphish -o -y #{file}")
71
+ path = File.join(File.dirname(__FILE__), 'app', 'views', 'raker_mailer')
72
+ system("babelphish -o -h #{path} -l en")
73
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,298 @@
1
+ module OverlordGoogleHelper
2
+
3
+ # Render a google custom search control. If feeds are provided then the search will be restricted to the
4
+ # 'display_url' for each feed. If search_for is specified then a default search will be executed.
5
+ # It is not recommended that you provide feeds and locale since the overlap between the feeds provided
6
+ # and the languages might be nothing.
7
+ # Examples:
8
+ #
9
+ # Create a custom search over a specific set of feeds:
10
+ # <%= google_search('Google Search (Search within these results)', [], '', %w{web}, 'google_restricted_search') %>
11
+ #
12
+ # Create a general google search based on the current locale:
13
+ # <%= google_search('Google Search', [], @terms, %w{web video blog news image local book patent}, 'google_search', I18n.locale) %>
14
+ #
15
+ # feeds: An array of feeds to render each with a property 'display_uri' defined
16
+ # search_for: Terms to search for by default. If none are specified then no default search will be performed.
17
+ # search_types: Types of google searches to add to the dialog. Valid values are web video blog news image local book patent
18
+ # content_id: Name of the div that will hold the widget google generates.
19
+ # If this method is called more than once on a given page then you will need to
20
+ # specify different content_ids for each call.
21
+ # locale: Locale to restrict searches. For example, to restrict the search to only German sites specify 'de'
22
+ # A complete set of valid Google languages can be found here:
23
+ # http://code.google.com/apis/ajaxlanguage/documentation/#SupportedLanguages
24
+ # For a list of valid codes you can also look at the babelphish gem. Codes can be found in languages.rb.
25
+ def google_search(title, feeds = [], search_for = '', search_types = %w{web video blog news image local book patent}, content_id = 'google_search', locale = nil)
26
+ render :partial => 'google/search', :locals => { :title => title,
27
+ :feeds => feeds,
28
+ :search_for => search_for,
29
+ :search_types => search_types,
30
+ :content_id => content_id,
31
+ :locale => locale }
32
+ end
33
+
34
+ # Utility method for generating scripts required to to build google search
35
+ # type: Type of Google search. Should be one of web video blog news image local book patent
36
+ # feeds: An array of feeds to render each with a property 'display_uri' defined
37
+ # locale: Locale to restrict searches. For example, to restrict the search to only German sites specify 'de'
38
+ # A complete set of valid Google languages can be found here:
39
+ # http://code.google.com/apis/ajaxlanguage/documentation/#SupportedLanguages
40
+ # For a list of valid codes you can also look at the babelphish gem. Codes can be found in languages.rb.
41
+ def google_typed_search(type, feeds = [], locale = nil)
42
+ content = "var #{type}Search = new google.search.#{type.capitalize}Search();\n"
43
+ if !['video', 'blog'].include?(type)
44
+ if !locale.blank?
45
+ content << "#{type}Search.setRestriction(google.search.Search.RESTRICT_EXTENDED_ARGS, {lr:'lang_#{locale}'});\n"
46
+ end
47
+ end
48
+ if !['video', 'local', 'patent', 'book'].include?(type)
49
+ feeds.each do |feed|
50
+ if !feed.display_uri.blank?
51
+ content << "#{type}Search.setSiteRestriction('#{feed.display_uri}');\n"
52
+ end
53
+ end
54
+ end
55
+ content << "searchControl.addSearcher(#{type}Search);\n"
56
+ end
57
+
58
+ # Render feeds using Google's api
59
+ # feeds: Feed object.
60
+ # show_controls: Indicates whether or not to show editing controls. ie Remove
61
+ # number_of_items: Number of items to display for the given feed.
62
+ # number_of_images: Number of images to get from the feed.
63
+ # number_of_videos: Number of videos to get from the feed.
64
+ # use_uri_for_control: If set to true then a hidden field will be generated containing the feed's uri. If false then the hidden field will contain the feed's service id. This is used to
65
+ # regenerate the feed after submission to the server.
66
+ # javascript_callback: Name of a javascript method to call after the feed has finished loading. The
67
+ # method should accept the feed uri and the content id. ie feed_callback(uri, content_id).
68
+ def google_feeds(feeds, show_controls = false, number_of_items = 6, number_of_images = 20, number_of_videos = 6,
69
+ use_uri_for_control = false, run_load_scripts = false, javascript_callback = 'google_load_complete')
70
+ render :partial => 'google/feed', :collection => feeds, :locals => {:number_of_items => number_of_items,
71
+ :number_of_images => number_of_images,
72
+ :number_of_videos => number_of_videos,
73
+ :javascript_callback => javascript_callback,
74
+ :show_controls => show_controls,
75
+ :use_uri_for_control => use_uri_for_control,
76
+ :run_load_scripts => run_load_scripts}
77
+ end
78
+
79
+ # Render combined feed using Google's api
80
+ #
81
+ # feeds: Array of feeds that have attribute 'uri' defined.
82
+ # content_id: Name of the div that will hold the widget google generates.
83
+ # If this method is called more than once on a given page then you will need to
84
+ # specify different content_ids for each call.
85
+ # javascript_callback: Name of a javascript method to call after the feed has finished loading. The
86
+ # method should accept the feed uri and the content id. ie feed_callback(uri, content_id).
87
+ def google_combined_feeds(feeds, content_id = 'google_combined_feed', javascript_callback = nil)
88
+ render :partial => 'google/combined_feed', :locals => { :feeds => feeds, :content_id => content_id, :javascript_callback => javascript_callback }
89
+ end
90
+
91
+ # Render a google dynamic feed control.
92
+ #
93
+ # feeds: An array of feeds to render each with a property 'title' and 'uri' defined
94
+ # content_id: Name of the div that will hold the widget google generates.
95
+ # If this method is called more than once on a given page then you will need to
96
+ # specify different content_ids for each call.
97
+ # options: A hash containing the values to pass to the Google widget. The available options are defined here:
98
+ # http://www.google.com/uds/solutions/dynamicfeed/reference.html.
99
+ def google_dynamic_feeds_vertical(feeds,
100
+ content_id = 'dynamic_feed_vertical_content',
101
+ options = { :numResults => 20, :stacked => true, :horizontal => false })
102
+ render :partial => 'google/dynamic_feeds_vertical', :locals => { :feeds => feeds, :content_id => content_id, :options => options }
103
+ end
104
+
105
+ # Find and output feeds related to the given query
106
+ #
107
+ # query: A tag or search query to pass to Google. Google will find feeds that match this value.
108
+ # content_id: Name of the div that will hold the widget google generates.
109
+ # If this method is called more than once on a given page then you will need to
110
+ # specify different content_ids for each call.
111
+ def google_feed_search(query, content_id = 'feed_search_content')
112
+ render :partial => 'google/feed_search', :locals => { :query => query, :content_id => content_id }
113
+ end
114
+
115
+ # Generate a slide show from a feed
116
+ # feed: Url for which to generate the feed.
117
+ # content_id: Name of the div that will hold the widget google generates.
118
+ # If this method is called more than once on a given page then you will need to
119
+ # specify different content_ids for each call.
120
+ # options: A hash containing the values to pass to the Google widget. The available options are defined here:
121
+ # http://www.google.com/uds/solutions/slideshow/index.html
122
+ def google_slide_show(feed,
123
+ content_id = 'slide_show_content',
124
+ options = { :displayTime => 2000, :transistionTime => 600, :scaleImages => true, :fullControlPanel => true })
125
+ render :partial => 'google/slide_show', :locals => { :feed => feed, :content_id => content_id, :options => options }
126
+ end
127
+
128
+ # Given a feed attempts to assign an appropriate class
129
+ def feed_class(feed)
130
+ if feed.service.photo?
131
+ "feed-photos"
132
+ elsif feed.service.bookmark?
133
+ "feed-bookmarks"
134
+ elsif feed.service.video?
135
+ "feed-videos"
136
+ elsif feed.service.music?
137
+ "feed-music"
138
+ end
139
+ end
140
+
141
+ # Generates a valid dom id for the feed
142
+ def feed_content_id(feed)
143
+ "feed_#{feed.id}_#{feed.title.parameterize}_#{feed.service.name.parameterize}".gsub('+', '-')
144
+ end
145
+
146
+ # Outputs the appropriate script for handling the google response once the feed is loaded
147
+ # feed: Url for which to generate the feed.
148
+ # content_id: Name of the div that will hold the widget google generates.
149
+ # If this method is called more than once on a given page then you will need to
150
+ # specify different content_ids for each call.
151
+ # javascript_callback: Name of a javascript method to call after the feed has finished loading. The
152
+ # method should accept the feed uri and the content id. ie feed_callback(uri, content_id).
153
+ def google_muck_load_script(feed, content_id = nil, javascript_callback = nil)
154
+ if feed.service.photo?
155
+ google_load_images_script(javascript_callback, feed.uri, content_id)
156
+ elsif feed.service.bookmark?
157
+ google_load_bookmarks_script(javascript_callback, feed.uri, content_id)
158
+ elsif feed.service.video?
159
+ google_load_videos_script(javascript_callback, feed.uri, content_id)
160
+ elsif feed.service.music?
161
+ # TODO need to get music feeds into tag system so that we can search for music feeds and then integrate in a way that can play the tunes.
162
+ google_load_entries_script(javascript_callback, feed.uri, content_id)
163
+ else
164
+ google_load_entries_script(javascript_callback, feed.uri, content_id)
165
+ end
166
+ end
167
+
168
+ def google_muck_load_callback_script(feed, content_id, number_of_items = 4, number_of_images = 6, number_of_videos = 6)
169
+ if feed.service.photo?
170
+ "google_load_images('#{feed.uri}', '#{content_id}', #{number_of_images});"
171
+ elsif feed.service.bookmark?
172
+ "google_load_bookmarks('#{feed.uri}', '#{content_id}', #{number_of_items});"
173
+ elsif feed.service.video?
174
+ "google_load_videos('#{feed.uri}', '#{content_id}', #{number_of_videos});"
175
+ elsif feed.service.music?
176
+ "google_load_entries('#{feed.uri}', '#{content_id}', #{number_of_items});"
177
+ else
178
+ "google_load_entries('#{feed.uri}', '#{content_id}', #{number_of_items});"
179
+ end
180
+ end
181
+
182
+ def google_load_videos_script(javascript_callback, uri, content_id)
183
+ google_load_template_script 'google_load_videos', javascript_callback, uri, content_id do
184
+ %Q{var link = jQuery(item.content).find('img').parent('a');
185
+ link.attr('rel', '#{content_id}');
186
+ link.addClass('feed-video');
187
+ jQuery('#' + content_id).append(link);}
188
+ end
189
+ end
190
+
191
+ def google_load_images_script(javascript_callback, uri, content_id)
192
+ google_load_template_script 'google_load_images', javascript_callback, uri, content_id do
193
+ %Q{var link = jQuery(item.content).find('img').parent('a');
194
+ link.attr('rel', '#{content_id}');
195
+ link.addClass('feed-photo');
196
+ jQuery('#' + content_id).append(link);}
197
+ end
198
+ end
199
+
200
+ def google_load_entries_script(javascript_callback, uri, content_id)
201
+ google_load_template_script 'google_load_entries', javascript_callback, uri, content_id do
202
+ %Q{var status_class = 'even';
203
+ if(i%2 > 0) { status_class = 'odd'; }
204
+ jQuery('#' + content_id).append('<div class="hentry ' + status_class + '"><h4 class="title"><a class="entry-link" href="#" target="blank">' + item.title + '</a><span class="entry-close"><a class="entry-link-close" href="#">#{t('muck.raker.close')}</a></span></h4><div class="entry">' + item.content + ' <p><a href="' + item.link + '">#{t('muck.raker.read_more')}</a></p></div></div>');}
205
+ end
206
+ end
207
+
208
+ def google_load_bookmarks_script(javascript_callback, uri, content_id)
209
+ google_load_template_script 'google_load_bookmarks', javascript_callback, uri, content_id do
210
+ %Q{var status_class = 'even';
211
+ if(i%2 > 0) { status_class = 'odd'; }
212
+ jQuery('#' + content_id).append('<div class="hentry ' + status_class + '"><h4 class="title"><a class="bookmark-link" href="' + item.link + '" target="_blank">' + item.title + '</a></h4></div>');}
213
+ end
214
+ end
215
+
216
+ # Generates the template code used by all the calls to google.
217
+ def google_load_template_script(method_name, javascript_callback, uri, content_id)
218
+ included_name = "@#{method_name}_included"
219
+ return '' if instance_variable_get(included_name) rescue false
220
+ instance_variable_set(included_name, true)
221
+ %Q{<script type="text/javascript">
222
+ function #{method_name}(uri, content_id, number_of_items){
223
+ jQuery('#' + content_id).html('');
224
+ var feed = new google.feeds.Feed(uri);
225
+ feed.setNumEntries(number_of_items);
226
+ feed.load(function(result) {
227
+ if (!result.error) {
228
+ jQuery.each(result.feed.entries, function(i,item){
229
+ #{yield}
230
+ #{javascript_callback}('#{uri}', '#{content_id}');
231
+ });
232
+ }
233
+ if (result.error || result.feed.entries.length <= 0) {
234
+ jQuery('#' + content_id).append('<div class="hentry">#{t('muck.raker.no_entries_found')}</div>');
235
+ }
236
+ });
237
+ }
238
+ </script>}
239
+ end
240
+
241
+ # Renders a partial with the latest trends from google.
242
+ def google_hot_trends(limit = 10)
243
+ feed = Feed.fetch_feed('http://www.google.com/trends/hottrends/atom/hourly')
244
+ result = Nokogiri::HTML(feed.entries[0].content)
245
+ google_hot_trends_terms = result.css('a').collect{ |a| change_chars(a.text) }.compact
246
+ render :partial => 'google/hot_trends', :locals => { :google_hot_trends_terms => google_hot_trends_terms[0, limit] }
247
+ end
248
+
249
+ # Outputs include script for google ajax api
250
+ def google_ajax_api_scripts
251
+ return '' if defined?(@google_ajax_api_scripts_included)
252
+ script = '<script type="text/javascript" src="http://www.google.com/jsapi'
253
+ script << "?key=#{GlobalConfig.google_ajax_api_key}" if GlobalConfig.google_ajax_api_key
254
+ script << '"></script>'
255
+ @google_ajax_api_scripts_included = true
256
+ script
257
+ end
258
+
259
+ # Output include script for google slideshows
260
+ def google_ajax_slideshow_scripts
261
+ return '' if defined?(@google_ajax_slideshow_scripts_included)
262
+ @google_ajax_slideshow_scripts_included = true
263
+ '<script src="http://www.google.com/uds/solutions/slideshow/gfslideshow.js" type="text/javascript"></script>'
264
+ end
265
+
266
+ # Output include script for google feeds
267
+ def google_load_feeds
268
+ return '' if defined?(@google_load_feeds_included)
269
+ @google_load_feeds_included = true
270
+ google_ajax_api_scripts + '<script type="text/javascript">google.load("feeds", "1");</script>'
271
+ end
272
+
273
+ # Output include script for google search
274
+ def google_load_search
275
+ return '' if defined?(@google_load_search_included)
276
+ @google_load_search_included = true
277
+ google_ajax_api_scripts + '<script type="text/javascript">google.load("search", "1");</script>'
278
+ end
279
+
280
+ # Output include script to load jquery from google
281
+ def google_load_jquery
282
+ return '' if defined?(@google_load_jquery_included)
283
+ @google_load_jquery_included = true
284
+ google_ajax_api_scripts + '<script type="text/javascript">google.load("jquery", "1");</script>'
285
+ end
286
+
287
+ # Output include script to load jquery ui from google
288
+ def google_load_jquery_ui
289
+ return '' if defined?(@google_load_jquery_ui_included)
290
+ @google_load_jquery_ui_included = true
291
+ google_ajax_api_scripts + '<script type="text/javascript">google.load("jqueryui", "1");</script>'
292
+ end
293
+
294
+ def change_chars(term)
295
+ term.gsub('+', ' ').gsub('.', '-')
296
+ end
297
+
298
+ end
@@ -0,0 +1,54 @@
1
+ <% content_for :head do -%>
2
+ <%= google_ajax_api_scripts -%>
3
+ <%= google_load_feeds -%>
4
+ <% end -%>
5
+
6
+ <script type="text/javascript">
7
+ entries = [];
8
+ function feed_loaded(result) {
9
+ if (!result.error) {
10
+ jQuery('#<%= content_id %> .waiting').hide();
11
+ jQuery('#<%= content_id %> ul').html('');
12
+ new_entries = result.feed.entries;
13
+ for (var i=0; i<new_entries.length; i++){
14
+ new_entries[i].feed = result.feed;
15
+ }
16
+ entries = jQuery.merge(entries, new_entries);
17
+ entries = entries.sort(function(a,b){
18
+ return a.publishedDate > b.publishedDate;
19
+ });
20
+ for (var i=0; i<entries.length; i++) {
21
+ var html = '<li class="feed-item" style="background: transparent url(/images/service_icons/24/' + get_service_name(entries[i]) + ') no-repeat scroll left top;">';
22
+ html += '<div class="feed-title"><a href="' + entries[i].link + '" target="_blank">' + entries[i].title + '</a></div>';
23
+ html += '<div class="feed-content" style="display:none;">';
24
+ html += '<h3><a href="' + entries[i].link + '" target="_blank">' + entries[i].title + '</a></h3>';
25
+ html += entries[i].content;
26
+ html += '</div>';
27
+ html += '</li>';
28
+ jQuery('#<%= content_id %> ul').append(html);
29
+ }
30
+ apply_show_entry_content();
31
+ <%= "#{javascript_callback}('#{content_id}');" if javascript_callback -%>
32
+ }
33
+ }
34
+ google.setOnLoadCallback(function(){
35
+ <% feeds.each do |feed| -%>
36
+ new google.feeds.Feed("<%=feed.uri%>").load(feed_loaded);
37
+ <% end -%>
38
+ });
39
+
40
+ function get_service_name(entry) {
41
+ var services = eval(<%= Service.all.to_json(:only => [ :uri_key, :icon ]) %>);
42
+ for(var i=0; i<services.length; i++){
43
+ if(services[i].uri_key && (entry.link.indexOf(services[i].uri_key) >= 0 || entry.feed.link.indexOf(services[i].uri_key) >= 0)){
44
+ return services[i].icon;
45
+ }
46
+ }
47
+ return 'feed.png';
48
+ }
49
+ </script>
50
+
51
+ <div id="<%= content_id %>" class="combined-feed">
52
+ <span class="waiting"><%= t('muck.raker.loading_message') %></span>
53
+ <ul class="combined-feed-list"></ul>
54
+ </div>