muck-raker 0.1.26 → 0.1.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (585) hide show
  1. data/.gitignore +1 -0
  2. data/README.rdoc +39 -4
  3. data/VERSION +1 -1
  4. data/app/controllers/muck/feeds_controller.rb +8 -2
  5. data/app/controllers/muck/identity_feeds_controller.rb +154 -0
  6. data/app/controllers/muck/visits_controller.rb +7 -1
  7. data/app/helpers/muck_raker_services_helper.rb +117 -0
  8. data/app/models/aggregation.rb +17 -0
  9. data/app/models/amazon.rb +59 -0
  10. data/app/models/amazon_request.rb +83 -0
  11. data/app/models/click.rb +0 -8
  12. data/app/models/entry.rb +2 -1
  13. data/app/models/feed.rb +53 -57
  14. data/app/models/feed_parent.rb +0 -5
  15. data/app/models/identity_feed.rb +26 -0
  16. data/app/models/recommendation.rb +0 -5
  17. data/app/models/service.rb +53 -8
  18. data/app/models/service_category.rb +14 -0
  19. data/app/models/tag_cloud.rb +0 -4
  20. data/app/views/activity_templates/_entry_comment.html.erb +8 -0
  21. data/app/views/activity_templates/_entry_share.html.erb +8 -0
  22. data/app/views/identity_feeds/_form.html.erb +20 -0
  23. data/app/views/identity_feeds/_service_categories.html.erb +13 -0
  24. data/app/views/identity_feeds/_services_for_user.html.erb +25 -0
  25. data/app/views/identity_feeds/edit.html.erb +2 -0
  26. data/app/views/identity_feeds/index.html.erb +32 -0
  27. data/app/views/identity_feeds/new.html.erb +1 -0
  28. data/app/views/parts/_add_extended_feed.html.erb +1 -1
  29. data/app/views/parts/_add_feed.html.erb +1 -1
  30. data/app/views/parts/_add_single_feed.html.erb +1 -1
  31. data/app/views/service_templates/_facebook.html.erb +4 -0
  32. data/app/views/service_templates/_friendfeed.html.erb +2 -0
  33. data/app/views/service_templates/_goodreads.html.erb +2 -0
  34. data/app/views/service_templates/_linkedin.html.erb +2 -0
  35. data/app/views/service_templates/_netflix.html.erb +2 -0
  36. data/app/views/service_templates/_polyvore.html.erb +2 -0
  37. data/app/views/service_templates/_zotero_group.html.erb +2 -0
  38. data/app/views/services/_edit_service.html.erb +1 -0
  39. data/app/views/services/_new_service.html.erb +1 -0
  40. data/app/views/services/_summary.html.erb +5 -0
  41. data/app/views/services/_view_service.html.erb +1 -0
  42. data/app/views/visits/_comments_tool.html.erb +19 -0
  43. data/app/views/visits/_frame_scripts.html.erb +26 -0
  44. data/app/views/visits/_share_tool.html.erb +22 -0
  45. data/app/views/visits/_toolbar.html.erb +25 -0
  46. data/app/views/visits/show.html.erb +4 -96
  47. data/config/muck_raker_routes.rb +2 -0
  48. data/db/bootstrap/service_categories.yml +40 -0
  49. data/db/bootstrap/services.yml +605 -153
  50. data/db/migrate/20090826220530_change_services_sequence_to_sort.rb +9 -0
  51. data/db/migrate/20090826225652_create_identity_feeds.rb +14 -0
  52. data/db/migrate/20090827005105_add_identity_fields_to_services.rb +13 -0
  53. data/db/migrate/20090827015308_create_service_categories.rb +12 -0
  54. data/db/migrate/20090827221502_add_prompt_and_template_to_services.rb +11 -0
  55. data/lib/active_record/acts/muck_feed_owner.rb +31 -0
  56. data/lib/active_record/acts/muck_feed_parent.rb +3 -2
  57. data/lib/active_record/acts/muck_raker_comment.rb +39 -0
  58. data/lib/active_record/acts/muck_raker_share.rb +32 -0
  59. data/lib/muck_raker/tasks.rb +19 -0
  60. data/lib/muck_raker.rb +6 -0
  61. data/locales/ar.yml +98 -61
  62. data/locales/bg.yml +90 -53
  63. data/locales/ca.yml +87 -50
  64. data/locales/cs.yml +82 -45
  65. data/locales/da.yml +69 -32
  66. data/locales/de.yml +75 -38
  67. data/locales/el.yml +78 -41
  68. data/locales/en.yml +39 -2
  69. data/locales/es.yml +82 -45
  70. data/locales/et.yml +89 -52
  71. data/locales/fa.yml +82 -45
  72. data/locales/fi.yml +95 -58
  73. data/locales/fr.yml +80 -43
  74. data/locales/gl.yml +94 -57
  75. data/locales/hi.yml +77 -40
  76. data/locales/hr.yml +84 -47
  77. data/locales/hu.yml +101 -64
  78. data/locales/id.yml +81 -44
  79. data/locales/it.yml +84 -47
  80. data/locales/iw.yml +91 -54
  81. data/locales/ja.yml +96 -59
  82. data/locales/ko.yml +77 -40
  83. data/locales/lt.yml +85 -48
  84. data/locales/lv.yml +87 -50
  85. data/locales/mt.yml +90 -53
  86. data/locales/nl.yml +75 -38
  87. data/locales/no.yml +77 -40
  88. data/locales/pl.yml +79 -42
  89. data/locales/pt-PT.yml +87 -50
  90. data/locales/ro.yml +100 -63
  91. data/locales/ru.yml +94 -57
  92. data/locales/sk.yml +83 -46
  93. data/locales/sl.yml +84 -47
  94. data/locales/sq.yml +101 -64
  95. data/locales/sr.yml +106 -69
  96. data/locales/sv.yml +87 -50
  97. data/locales/th.yml +100 -63
  98. data/locales/tl.yml +73 -36
  99. data/locales/tr.yml +84 -47
  100. data/locales/uk.yml +98 -61
  101. data/locales/vi.yml +87 -50
  102. data/locales/zh-CN.yml +82 -45
  103. data/locales/zh-TW.yml +82 -45
  104. data/locales/zh.yml +83 -46
  105. data/muck-raker.gemspec +517 -5
  106. data/public/ecs_to_rss-wishlist.xslt +41 -0
  107. data/public/images/service_icons/16/blogger.png +0 -0
  108. data/public/images/service_icons/16/citeulike.png +0 -0
  109. data/public/images/service_icons/16/clipmarks.png +0 -0
  110. data/public/images/service_icons/16/dailymotion.png +0 -0
  111. data/public/images/service_icons/16/delicious.png +0 -0
  112. data/public/images/service_icons/16/digg.png +0 -0
  113. data/public/images/service_icons/16/diigo.png +0 -0
  114. data/public/images/service_icons/16/facebook.png +0 -0
  115. data/public/images/service_icons/16/feed.png +0 -0
  116. data/public/images/service_icons/16/flickr.png +0 -0
  117. data/public/images/service_icons/16/fotolog.png +0 -0
  118. data/public/images/service_icons/16/friendfeed.png +0 -0
  119. data/public/images/service_icons/16/friendster.png +0 -0
  120. data/public/images/service_icons/16/furl.png +0 -0
  121. data/public/images/service_icons/16/goodreads.png +0 -0
  122. data/public/images/service_icons/16/google.png +0 -0
  123. data/public/images/service_icons/16/googleblog.png +0 -0
  124. data/public/images/service_icons/16/googlenews.png +0 -0
  125. data/public/images/service_icons/16/identica.png +0 -0
  126. data/public/images/service_icons/16/joost.png +0 -0
  127. data/public/images/service_icons/16/lastfm.png +0 -0
  128. data/public/images/service_icons/16/librarything.png +0 -0
  129. data/public/images/service_icons/16/linkedin.png +0 -0
  130. data/public/images/service_icons/16/livejournal.png +0 -0
  131. data/public/images/service_icons/16/magnolia.png +0 -0
  132. data/public/images/service_icons/16/mendeley.png +0 -0
  133. data/public/images/service_icons/16/mixx.png +0 -0
  134. data/public/images/service_icons/16/myspace.png +0 -0
  135. data/public/images/service_icons/16/netflix.png +0 -0
  136. data/public/images/service_icons/16/netvibes.png +0 -0
  137. data/public/images/service_icons/16/newsvine.png +0 -0
  138. data/public/images/service_icons/16/oai.png +0 -0
  139. data/public/images/service_icons/16/odeo.png +0 -0
  140. data/public/images/service_icons/16/opml.png +0 -0
  141. data/public/images/service_icons/16/pandora.png +0 -0
  142. data/public/images/service_icons/16/photobucket.png +0 -0
  143. data/public/images/service_icons/16/picasa.png +0 -0
  144. data/public/images/service_icons/16/polyvore.png +0 -0
  145. data/public/images/service_icons/16/pownce.png +0 -0
  146. data/public/images/service_icons/16/reddit.png +0 -0
  147. data/public/images/service_icons/16/simpy.png +0 -0
  148. data/public/images/service_icons/16/smugmug.png +0 -0
  149. data/public/images/service_icons/16/stumbleupon.png +0 -0
  150. data/public/images/service_icons/16/tag.png +0 -0
  151. data/public/images/service_icons/16/technorati.png +0 -0
  152. data/public/images/service_icons/16/tumblr.png +0 -0
  153. data/public/images/service_icons/16/twitter.png +0 -0
  154. data/public/images/service_icons/16/vimeo.png +0 -0
  155. data/public/images/service_icons/16/webshots.png +0 -0
  156. data/public/images/service_icons/16/wordpress.png +0 -0
  157. data/public/images/service_icons/16/xanga.png +0 -0
  158. data/public/images/service_icons/16/yahoo.png +0 -0
  159. data/public/images/service_icons/16/yelp.png +0 -0
  160. data/public/images/service_icons/16/youtube.png +0 -0
  161. data/public/images/service_icons/16/zooomr.png +0 -0
  162. data/public/images/service_icons/16/zotero.png +0 -0
  163. data/public/images/service_icons/24/amazon.png +0 -0
  164. data/public/images/service_icons/24/blogger.png +0 -0
  165. data/public/images/service_icons/24/citeulike.png +0 -0
  166. data/public/images/service_icons/24/clipmarks.png +0 -0
  167. data/public/images/service_icons/24/dailymotion.png +0 -0
  168. data/public/images/service_icons/24/delicious.png +0 -0
  169. data/public/images/service_icons/24/digg.png +0 -0
  170. data/public/images/service_icons/24/diigo.png +0 -0
  171. data/public/images/service_icons/24/facebook.png +0 -0
  172. data/public/images/service_icons/24/feed.png +0 -0
  173. data/public/images/service_icons/24/flickr.png +0 -0
  174. data/public/images/service_icons/24/fotolog.png +0 -0
  175. data/public/images/service_icons/24/friendfeed.png +0 -0
  176. data/public/images/service_icons/24/friendster.png +0 -0
  177. data/public/images/service_icons/24/furl.png +0 -0
  178. data/public/images/service_icons/24/goodreads.png +0 -0
  179. data/public/images/service_icons/24/google.png +0 -0
  180. data/public/images/service_icons/24/googleblog.png +0 -0
  181. data/public/images/service_icons/24/googlenews.png +0 -0
  182. data/public/images/service_icons/24/identica.png +0 -0
  183. data/public/images/service_icons/24/joost.png +0 -0
  184. data/public/images/service_icons/24/lastfm.png +0 -0
  185. data/public/images/service_icons/24/librarything.png +0 -0
  186. data/public/images/service_icons/24/linkedin.png +0 -0
  187. data/public/images/service_icons/24/livejournal.png +0 -0
  188. data/public/images/service_icons/24/magnolia.png +0 -0
  189. data/public/images/service_icons/24/mendeley.png +0 -0
  190. data/public/images/service_icons/24/mixx.png +0 -0
  191. data/public/images/service_icons/24/myspace.png +0 -0
  192. data/public/images/service_icons/24/netflix.png +0 -0
  193. data/public/images/service_icons/24/netvibes.png +0 -0
  194. data/public/images/service_icons/24/newsvine.png +0 -0
  195. data/public/images/service_icons/24/oai.png +0 -0
  196. data/public/images/service_icons/24/odeo.png +0 -0
  197. data/public/images/service_icons/24/opml.png +0 -0
  198. data/public/images/service_icons/24/pandora.png +0 -0
  199. data/public/images/service_icons/24/photobucket.png +0 -0
  200. data/public/images/service_icons/24/picasa.png +0 -0
  201. data/public/images/service_icons/24/polyvore.png +0 -0
  202. data/public/images/service_icons/24/pownce.png +0 -0
  203. data/public/images/service_icons/24/reddit.png +0 -0
  204. data/public/images/service_icons/24/simpy.png +0 -0
  205. data/public/images/service_icons/24/smugmug.png +0 -0
  206. data/public/images/service_icons/24/stumbleupon.png +0 -0
  207. data/public/images/service_icons/24/tag.png +0 -0
  208. data/public/images/service_icons/24/technorati.png +0 -0
  209. data/public/images/service_icons/24/tumblr.png +0 -0
  210. data/public/images/service_icons/24/twitter.png +0 -0
  211. data/public/images/service_icons/24/vimeo.png +0 -0
  212. data/public/images/service_icons/24/webshots.png +0 -0
  213. data/public/images/service_icons/24/wordpress.png +0 -0
  214. data/public/images/service_icons/24/xanga.png +0 -0
  215. data/public/images/service_icons/24/yahoo.png +0 -0
  216. data/public/images/service_icons/24/yelp.png +0 -0
  217. data/public/images/service_icons/24/youtube.png +0 -0
  218. data/public/images/service_icons/24/zooomr.png +0 -0
  219. data/public/images/service_icons/24/zotero.png +0 -0
  220. data/public/images/service_icons/48/amazon.png +0 -0
  221. data/public/images/service_icons/48/blogger.png +0 -0
  222. data/public/images/service_icons/48/citeulike.png +0 -0
  223. data/public/images/service_icons/48/clipmarks.png +0 -0
  224. data/public/images/service_icons/48/dailymotion.png +0 -0
  225. data/public/images/service_icons/48/delicious.png +0 -0
  226. data/public/images/service_icons/48/digg.png +0 -0
  227. data/public/images/service_icons/48/diigo.png +0 -0
  228. data/public/images/service_icons/48/facebook.png +0 -0
  229. data/public/images/service_icons/48/feed.png +0 -0
  230. data/public/images/service_icons/48/flickr.png +0 -0
  231. data/public/images/service_icons/48/fotolog.png +0 -0
  232. data/public/images/service_icons/48/friendfeed.png +0 -0
  233. data/public/images/service_icons/48/friendster.png +0 -0
  234. data/public/images/service_icons/48/furl.png +0 -0
  235. data/public/images/service_icons/48/goodreads.png +0 -0
  236. data/public/images/service_icons/48/google.png +0 -0
  237. data/public/images/service_icons/48/googleblog.png +0 -0
  238. data/public/images/service_icons/48/googlenews.png +0 -0
  239. data/public/images/service_icons/48/identica.png +0 -0
  240. data/public/images/service_icons/48/joost.png +0 -0
  241. data/public/images/service_icons/48/lastfm.png +0 -0
  242. data/public/images/service_icons/48/librarything.png +0 -0
  243. data/public/images/service_icons/48/linkedin.png +0 -0
  244. data/public/images/service_icons/48/livejournal.png +0 -0
  245. data/public/images/service_icons/48/magnolia.png +0 -0
  246. data/public/images/service_icons/48/mendeley.png +0 -0
  247. data/public/images/service_icons/48/mixx.png +0 -0
  248. data/public/images/service_icons/48/myspace.png +0 -0
  249. data/public/images/service_icons/48/netflix.png +0 -0
  250. data/public/images/service_icons/48/netvibes.png +0 -0
  251. data/public/images/service_icons/48/newsvine.png +0 -0
  252. data/public/images/service_icons/48/oai.png +0 -0
  253. data/public/images/service_icons/48/odeo.png +0 -0
  254. data/public/images/service_icons/48/opml.png +0 -0
  255. data/public/images/service_icons/48/pandora.png +0 -0
  256. data/public/images/service_icons/48/photobucket.png +0 -0
  257. data/public/images/service_icons/48/picasa.png +0 -0
  258. data/public/images/service_icons/48/polyvore.png +0 -0
  259. data/public/images/service_icons/48/pownce.png +0 -0
  260. data/public/images/service_icons/48/reddit.png +0 -0
  261. data/public/images/service_icons/48/simpy.png +0 -0
  262. data/public/images/service_icons/48/smugmug.png +0 -0
  263. data/public/images/service_icons/48/stumbleupon.png +0 -0
  264. data/public/images/service_icons/48/tag.png +0 -0
  265. data/public/images/service_icons/48/technorati.png +0 -0
  266. data/public/images/service_icons/48/tumblr.png +0 -0
  267. data/public/images/service_icons/48/twitter.png +0 -0
  268. data/public/images/service_icons/48/vimeo.png +0 -0
  269. data/public/images/service_icons/48/webshots.png +0 -0
  270. data/public/images/service_icons/48/wordpress.png +0 -0
  271. data/public/images/service_icons/48/xanga.png +0 -0
  272. data/public/images/service_icons/48/yahoo.png +0 -0
  273. data/public/images/service_icons/48/yelp.png +0 -0
  274. data/public/images/service_icons/48/youtube.png +0 -0
  275. data/public/images/service_icons/48/zooomr.png +0 -0
  276. data/public/images/service_icons/48/zotero.png +0 -0
  277. data/public/images/service_icons/60/amazon.png +0 -0
  278. data/public/images/service_icons/60/blogger.png +0 -0
  279. data/public/images/service_icons/60/citeulike.png +0 -0
  280. data/public/images/service_icons/60/clipmarks.png +0 -0
  281. data/public/images/service_icons/60/dailymotion.png +0 -0
  282. data/public/images/service_icons/60/delicious.png +0 -0
  283. data/public/images/service_icons/60/digg.png +0 -0
  284. data/public/images/service_icons/60/diigo.png +0 -0
  285. data/public/images/service_icons/60/facebook.png +0 -0
  286. data/public/images/service_icons/60/feed.png +0 -0
  287. data/public/images/service_icons/60/flickr.png +0 -0
  288. data/public/images/service_icons/60/fotolog.png +0 -0
  289. data/public/images/service_icons/60/friendfeed.png +0 -0
  290. data/public/images/service_icons/60/friendster.png +0 -0
  291. data/public/images/service_icons/60/furl.png +0 -0
  292. data/public/images/service_icons/60/goodreads.png +0 -0
  293. data/public/images/service_icons/60/google.png +0 -0
  294. data/public/images/service_icons/60/googleblog.png +0 -0
  295. data/public/images/service_icons/60/googlenews.png +0 -0
  296. data/public/images/service_icons/60/identica.png +0 -0
  297. data/public/images/service_icons/60/joost.png +0 -0
  298. data/public/images/service_icons/60/lastfm.png +0 -0
  299. data/public/images/service_icons/60/librarything.png +0 -0
  300. data/public/images/service_icons/60/linkedin.png +0 -0
  301. data/public/images/service_icons/60/livejournal.png +0 -0
  302. data/public/images/service_icons/60/magnolia.png +0 -0
  303. data/public/images/service_icons/60/mendeley.png +0 -0
  304. data/public/images/service_icons/60/mixx.png +0 -0
  305. data/public/images/service_icons/60/myspace.png +0 -0
  306. data/public/images/service_icons/60/netflix.png +0 -0
  307. data/public/images/service_icons/60/netvibes.png +0 -0
  308. data/public/images/service_icons/60/newsvine.png +0 -0
  309. data/public/images/service_icons/60/oai.png +0 -0
  310. data/public/images/service_icons/60/odeo.png +0 -0
  311. data/public/images/service_icons/60/opml.png +0 -0
  312. data/public/images/service_icons/60/pandora.png +0 -0
  313. data/public/images/service_icons/60/photobucket.png +0 -0
  314. data/public/images/service_icons/60/picasa.png +0 -0
  315. data/public/images/service_icons/60/polyvore.png +0 -0
  316. data/public/images/service_icons/60/pownce.png +0 -0
  317. data/public/images/service_icons/60/reddit.png +0 -0
  318. data/public/images/service_icons/60/simpy.png +0 -0
  319. data/public/images/service_icons/60/smugmug.png +0 -0
  320. data/public/images/service_icons/60/stumbleupon.png +0 -0
  321. data/public/images/service_icons/60/tag.png +0 -0
  322. data/public/images/service_icons/60/technorati.png +0 -0
  323. data/public/images/service_icons/60/tumblr.png +0 -0
  324. data/public/images/service_icons/60/twitter.png +0 -0
  325. data/public/images/service_icons/60/vimeo.png +0 -0
  326. data/public/images/service_icons/60/webshots.png +0 -0
  327. data/public/images/service_icons/60/wordpress.png +0 -0
  328. data/public/images/service_icons/60/xanga.png +0 -0
  329. data/public/images/service_icons/60/yahoo.png +0 -0
  330. data/public/images/service_icons/60/yelp.png +0 -0
  331. data/public/images/service_icons/60/youtube.png +0 -0
  332. data/public/images/service_icons/60/zooomr.png +0 -0
  333. data/public/images/service_icons/60/zotero.png +0 -0
  334. data/public/images/service_icons/amazon.png +0 -0
  335. data/public/images/service_icons/facebook_friend_links.jpg +0 -0
  336. data/public/images/service_icons/facebook_my_links.jpg +0 -0
  337. data/public/images/service_icons/source/Aquaticus_Social_Icon_template_by_jwloh.psd +0 -0
  338. data/public/images/service_icons/source/Google.psd +0 -0
  339. data/public/images/service_icons/source/Quake 9 Design.webloc +0 -0
  340. data/public/images/service_icons/source/ReadMe.rtf +52 -0
  341. data/public/images/service_icons/source/aquaticus.social.png +0 -0
  342. data/public/images/service_icons/source/citeulike.png +0 -0
  343. data/public/images/service_icons/source/clipmarks.png +0 -0
  344. data/public/images/service_icons/source/netflix.png +0 -0
  345. data/public/images/service_icons/source/oai.png +0 -0
  346. data/public/images/service_icons/source/odeo.png +0 -0
  347. data/public/images/service_icons/source/opml.png +0 -0
  348. data/public/images/service_icons/source/pandora.png +0 -0
  349. data/public/images/service_icons/source/simpy.png +0 -0
  350. data/public/images/service_icons/source/template.png +0 -0
  351. data/public/images/service_icons/source/xanga.png +0 -0
  352. data/public/javascripts/muck_raker.js +19 -5
  353. data/public/stylesheets/frame.css +52 -0
  354. data/raker/lib/aggregatord.jar +0 -0
  355. data/test/rails_root/app/controllers/application_controller.rb +2 -0
  356. data/test/rails_root/app/models/activity.rb +22 -1
  357. data/test/rails_root/app/models/comment.rb +21 -1
  358. data/test/rails_root/app/models/share.rb +19 -2
  359. data/test/rails_root/app/models/user.rb +2 -1
  360. data/test/rails_root/config/global_config.yml +4 -1
  361. data/test/rails_root/config/routes.rb +8 -1
  362. data/test/rails_root/db/bootstrap/service_categories.yml +40 -0
  363. data/test/rails_root/db/bootstrap/services.yml +605 -153
  364. data/test/rails_root/db/migrate/20090818204527_add_activity_indexes.rb +9 -0
  365. data/test/rails_root/db/migrate/20090819030523_add_attachable_to_activities.rb +13 -0
  366. data/test/rails_root/db/migrate/20090826220530_change_services_sequence_to_sort.rb +9 -0
  367. data/test/rails_root/db/migrate/20090826225652_create_identity_feeds.rb +14 -0
  368. data/test/rails_root/db/migrate/20090827005105_add_identity_fields_to_services.rb +13 -0
  369. data/test/rails_root/db/migrate/20090827015308_create_service_categories.rb +12 -0
  370. data/test/rails_root/db/migrate/20090827221502_add_prompt_and_template_to_services.rb +11 -0
  371. data/test/rails_root/public/ecs_to_rss-wishlist.xslt +41 -0
  372. data/test/rails_root/public/images/icons/comment.png +0 -0
  373. data/test/rails_root/public/images/service_icons/16/blogger.png +0 -0
  374. data/test/rails_root/public/images/service_icons/16/citeulike.png +0 -0
  375. data/test/rails_root/public/images/service_icons/16/clipmarks.png +0 -0
  376. data/test/rails_root/public/images/service_icons/16/delicious.png +0 -0
  377. data/test/rails_root/public/images/service_icons/16/digg.png +0 -0
  378. data/test/rails_root/public/images/service_icons/16/facebook.png +0 -0
  379. data/test/rails_root/public/images/service_icons/16/feed.png +0 -0
  380. data/test/rails_root/public/images/service_icons/16/flickr.png +0 -0
  381. data/test/rails_root/public/images/service_icons/16/friendfeed.png +0 -0
  382. data/test/rails_root/public/images/service_icons/16/friendster.png +0 -0
  383. data/test/rails_root/public/images/service_icons/16/furl.png +0 -0
  384. data/test/rails_root/public/images/service_icons/16/google.png +0 -0
  385. data/test/rails_root/public/images/service_icons/16/lastfm.png +0 -0
  386. data/test/rails_root/public/images/service_icons/16/linkedin.png +0 -0
  387. data/test/rails_root/public/images/service_icons/16/livejournal.png +0 -0
  388. data/test/rails_root/public/images/service_icons/16/magnolia.png +0 -0
  389. data/test/rails_root/public/images/service_icons/16/mixx.png +0 -0
  390. data/test/rails_root/public/images/service_icons/16/myspace.png +0 -0
  391. data/test/rails_root/public/images/service_icons/16/netflix.png +0 -0
  392. data/test/rails_root/public/images/service_icons/16/netvibes.png +0 -0
  393. data/test/rails_root/public/images/service_icons/16/newsvine.png +0 -0
  394. data/test/rails_root/public/images/service_icons/16/oai.png +0 -0
  395. data/test/rails_root/public/images/service_icons/16/odeo.png +0 -0
  396. data/test/rails_root/public/images/service_icons/16/opml.png +0 -0
  397. data/test/rails_root/public/images/service_icons/16/pandora.png +0 -0
  398. data/test/rails_root/public/images/service_icons/16/picasa.png +0 -0
  399. data/test/rails_root/public/images/service_icons/16/pownce.png +0 -0
  400. data/test/rails_root/public/images/service_icons/16/reddit.png +0 -0
  401. data/test/rails_root/public/images/service_icons/16/simpy.png +0 -0
  402. data/test/rails_root/public/images/service_icons/16/stumbleupon.png +0 -0
  403. data/test/rails_root/public/images/service_icons/16/technorati.png +0 -0
  404. data/test/rails_root/public/images/service_icons/16/twitter.png +0 -0
  405. data/test/rails_root/public/images/service_icons/16/vimeo.png +0 -0
  406. data/test/rails_root/public/images/service_icons/16/webshots.png +0 -0
  407. data/test/rails_root/public/images/service_icons/16/wordpress.png +0 -0
  408. data/test/rails_root/public/images/service_icons/16/xanga.png +0 -0
  409. data/test/rails_root/public/images/service_icons/16/yahoo.png +0 -0
  410. data/test/rails_root/public/images/service_icons/16/yelp.png +0 -0
  411. data/test/rails_root/public/images/service_icons/16/youtube.png +0 -0
  412. data/test/rails_root/public/images/service_icons/24/blogger.png +0 -0
  413. data/test/rails_root/public/images/service_icons/24/citeulike.png +0 -0
  414. data/test/rails_root/public/images/service_icons/24/clipmarks.png +0 -0
  415. data/test/rails_root/public/images/service_icons/24/delicious.png +0 -0
  416. data/test/rails_root/public/images/service_icons/24/digg.png +0 -0
  417. data/test/rails_root/public/images/service_icons/24/facebook.png +0 -0
  418. data/test/rails_root/public/images/service_icons/24/feed.png +0 -0
  419. data/test/rails_root/public/images/service_icons/24/flickr.png +0 -0
  420. data/test/rails_root/public/images/service_icons/24/friendfeed.png +0 -0
  421. data/test/rails_root/public/images/service_icons/24/friendster.png +0 -0
  422. data/test/rails_root/public/images/service_icons/24/furl.png +0 -0
  423. data/test/rails_root/public/images/service_icons/24/google.png +0 -0
  424. data/test/rails_root/public/images/service_icons/24/lastfm.png +0 -0
  425. data/test/rails_root/public/images/service_icons/24/linkedin.png +0 -0
  426. data/test/rails_root/public/images/service_icons/24/livejournal.png +0 -0
  427. data/test/rails_root/public/images/service_icons/24/magnolia.png +0 -0
  428. data/test/rails_root/public/images/service_icons/24/mixx.png +0 -0
  429. data/test/rails_root/public/images/service_icons/24/myspace.png +0 -0
  430. data/test/rails_root/public/images/service_icons/24/netflix.png +0 -0
  431. data/test/rails_root/public/images/service_icons/24/netvibes.png +0 -0
  432. data/test/rails_root/public/images/service_icons/24/newsvine.png +0 -0
  433. data/test/rails_root/public/images/service_icons/24/oai.png +0 -0
  434. data/test/rails_root/public/images/service_icons/24/odeo.png +0 -0
  435. data/test/rails_root/public/images/service_icons/24/opml.png +0 -0
  436. data/test/rails_root/public/images/service_icons/24/pandora.png +0 -0
  437. data/test/rails_root/public/images/service_icons/24/picasa.png +0 -0
  438. data/test/rails_root/public/images/service_icons/24/pownce.png +0 -0
  439. data/test/rails_root/public/images/service_icons/24/reddit.png +0 -0
  440. data/test/rails_root/public/images/service_icons/24/simpy.png +0 -0
  441. data/test/rails_root/public/images/service_icons/24/stumbleupon.png +0 -0
  442. data/test/rails_root/public/images/service_icons/24/technorati.png +0 -0
  443. data/test/rails_root/public/images/service_icons/24/twitter.png +0 -0
  444. data/test/rails_root/public/images/service_icons/24/vimeo.png +0 -0
  445. data/test/rails_root/public/images/service_icons/24/webshots.png +0 -0
  446. data/test/rails_root/public/images/service_icons/24/wordpress.png +0 -0
  447. data/test/rails_root/public/images/service_icons/24/xanga.png +0 -0
  448. data/test/rails_root/public/images/service_icons/24/yahoo.png +0 -0
  449. data/test/rails_root/public/images/service_icons/24/yelp.png +0 -0
  450. data/test/rails_root/public/images/service_icons/24/youtube.png +0 -0
  451. data/test/rails_root/public/images/service_icons/48/blogger.png +0 -0
  452. data/test/rails_root/public/images/service_icons/48/citeulike.png +0 -0
  453. data/test/rails_root/public/images/service_icons/48/clipmarks.png +0 -0
  454. data/test/rails_root/public/images/service_icons/48/delicious.png +0 -0
  455. data/test/rails_root/public/images/service_icons/48/digg.png +0 -0
  456. data/test/rails_root/public/images/service_icons/48/facebook.png +0 -0
  457. data/test/rails_root/public/images/service_icons/48/feed.png +0 -0
  458. data/test/rails_root/public/images/service_icons/48/flickr.png +0 -0
  459. data/test/rails_root/public/images/service_icons/48/friendfeed.png +0 -0
  460. data/test/rails_root/public/images/service_icons/48/friendster.png +0 -0
  461. data/test/rails_root/public/images/service_icons/48/furl.png +0 -0
  462. data/test/rails_root/public/images/service_icons/48/google.png +0 -0
  463. data/test/rails_root/public/images/service_icons/48/lastfm.png +0 -0
  464. data/test/rails_root/public/images/service_icons/48/linkedin.png +0 -0
  465. data/test/rails_root/public/images/service_icons/48/livejournal.png +0 -0
  466. data/test/rails_root/public/images/service_icons/48/magnolia.png +0 -0
  467. data/test/rails_root/public/images/service_icons/48/mixx.png +0 -0
  468. data/test/rails_root/public/images/service_icons/48/myspace.png +0 -0
  469. data/test/rails_root/public/images/service_icons/48/netflix.png +0 -0
  470. data/test/rails_root/public/images/service_icons/48/netvibes.png +0 -0
  471. data/test/rails_root/public/images/service_icons/48/newsvine.png +0 -0
  472. data/test/rails_root/public/images/service_icons/48/oai.png +0 -0
  473. data/test/rails_root/public/images/service_icons/48/odeo.png +0 -0
  474. data/test/rails_root/public/images/service_icons/48/opml.png +0 -0
  475. data/test/rails_root/public/images/service_icons/48/pandora.png +0 -0
  476. data/test/rails_root/public/images/service_icons/48/picasa.png +0 -0
  477. data/test/rails_root/public/images/service_icons/48/pownce.png +0 -0
  478. data/test/rails_root/public/images/service_icons/48/reddit.png +0 -0
  479. data/test/rails_root/public/images/service_icons/48/simpy.png +0 -0
  480. data/test/rails_root/public/images/service_icons/48/stumbleupon.png +0 -0
  481. data/test/rails_root/public/images/service_icons/48/technorati.png +0 -0
  482. data/test/rails_root/public/images/service_icons/48/twitter.png +0 -0
  483. data/test/rails_root/public/images/service_icons/48/vimeo.png +0 -0
  484. data/test/rails_root/public/images/service_icons/48/webshots.png +0 -0
  485. data/test/rails_root/public/images/service_icons/48/wordpress.png +0 -0
  486. data/test/rails_root/public/images/service_icons/48/xanga.png +0 -0
  487. data/test/rails_root/public/images/service_icons/48/yahoo.png +0 -0
  488. data/test/rails_root/public/images/service_icons/48/yelp.png +0 -0
  489. data/test/rails_root/public/images/service_icons/48/youtube.png +0 -0
  490. data/test/rails_root/public/images/service_icons/60/blogger.png +0 -0
  491. data/test/rails_root/public/images/service_icons/60/citeulike.png +0 -0
  492. data/test/rails_root/public/images/service_icons/60/clipmarks.png +0 -0
  493. data/test/rails_root/public/images/service_icons/60/delicious.png +0 -0
  494. data/test/rails_root/public/images/service_icons/60/digg.png +0 -0
  495. data/test/rails_root/public/images/service_icons/60/facebook.png +0 -0
  496. data/test/rails_root/public/images/service_icons/60/feed.png +0 -0
  497. data/test/rails_root/public/images/service_icons/60/flickr.png +0 -0
  498. data/test/rails_root/public/images/service_icons/60/friendfeed.png +0 -0
  499. data/test/rails_root/public/images/service_icons/60/friendster.png +0 -0
  500. data/test/rails_root/public/images/service_icons/60/furl.png +0 -0
  501. data/test/rails_root/public/images/service_icons/60/google.png +0 -0
  502. data/test/rails_root/public/images/service_icons/60/lastfm.png +0 -0
  503. data/test/rails_root/public/images/service_icons/60/linkedin.png +0 -0
  504. data/test/rails_root/public/images/service_icons/60/livejournal.png +0 -0
  505. data/test/rails_root/public/images/service_icons/60/magnolia.png +0 -0
  506. data/test/rails_root/public/images/service_icons/60/mixx.png +0 -0
  507. data/test/rails_root/public/images/service_icons/60/myspace.png +0 -0
  508. data/test/rails_root/public/images/service_icons/60/netflix.png +0 -0
  509. data/test/rails_root/public/images/service_icons/60/netvibes.png +0 -0
  510. data/test/rails_root/public/images/service_icons/60/newsvine.png +0 -0
  511. data/test/rails_root/public/images/service_icons/60/oai.png +0 -0
  512. data/test/rails_root/public/images/service_icons/60/odeo.png +0 -0
  513. data/test/rails_root/public/images/service_icons/60/opml.png +0 -0
  514. data/test/rails_root/public/images/service_icons/60/pandora.png +0 -0
  515. data/test/rails_root/public/images/service_icons/60/picasa.png +0 -0
  516. data/test/rails_root/public/images/service_icons/60/pownce.png +0 -0
  517. data/test/rails_root/public/images/service_icons/60/reddit.png +0 -0
  518. data/test/rails_root/public/images/service_icons/60/simpy.png +0 -0
  519. data/test/rails_root/public/images/service_icons/60/stumbleupon.png +0 -0
  520. data/test/rails_root/public/images/service_icons/60/technorati.png +0 -0
  521. data/test/rails_root/public/images/service_icons/60/twitter.png +0 -0
  522. data/test/rails_root/public/images/service_icons/60/vimeo.png +0 -0
  523. data/test/rails_root/public/images/service_icons/60/webshots.png +0 -0
  524. data/test/rails_root/public/images/service_icons/60/wordpress.png +0 -0
  525. data/test/rails_root/public/images/service_icons/60/xanga.png +0 -0
  526. data/test/rails_root/public/images/service_icons/60/yahoo.png +0 -0
  527. data/test/rails_root/public/images/service_icons/60/yelp.png +0 -0
  528. data/test/rails_root/public/images/service_icons/60/youtube.png +0 -0
  529. data/test/rails_root/public/images/service_icons/ReadMe.rtf +52 -0
  530. data/test/rails_root/public/images/service_icons/facebook_friend_links.jpg +0 -0
  531. data/test/rails_root/public/images/service_icons/facebook_my_links.jpg +0 -0
  532. data/test/rails_root/public/images/service_icons/source/Aquaticus_Social_Icon_template_by_jwloh.psd +0 -0
  533. data/test/rails_root/public/images/service_icons/source/Google.psd +0 -0
  534. data/test/rails_root/public/images/service_icons/source/Quake 9 Design.webloc +0 -0
  535. data/test/rails_root/public/images/service_icons/source/ReadMe.rtf +52 -0
  536. data/test/rails_root/public/images/service_icons/source/aquaticus.social.png +0 -0
  537. data/test/rails_root/public/images/service_icons/source/citeulike.png +0 -0
  538. data/test/rails_root/public/images/service_icons/source/clipmarks.png +0 -0
  539. data/test/rails_root/public/images/service_icons/source/netflix.png +0 -0
  540. data/test/rails_root/public/images/service_icons/source/oai.png +0 -0
  541. data/test/rails_root/public/images/service_icons/source/odeo.png +0 -0
  542. data/test/rails_root/public/images/service_icons/source/opml.png +0 -0
  543. data/test/rails_root/public/images/service_icons/source/pandora.png +0 -0
  544. data/test/rails_root/public/images/service_icons/source/simpy.png +0 -0
  545. data/test/rails_root/public/images/service_icons/source/template.png +0 -0
  546. data/test/rails_root/public/images/service_icons/source/xanga.png +0 -0
  547. data/test/rails_root/public/javascripts/jquery-ui.js +188 -0
  548. data/test/rails_root/public/javascripts/jquery.js +19 -0
  549. data/test/rails_root/public/javascripts/jrails.js +1 -0
  550. data/test/rails_root/public/javascripts/muck.js +5 -18
  551. data/test/rails_root/public/javascripts/muck_activities.js +3 -3
  552. data/test/rails_root/public/javascripts/muck_raker.js +19 -5
  553. data/test/rails_root/public/stylesheets/application.css +48 -2
  554. data/test/rails_root/public/stylesheets/frame.css +52 -0
  555. data/test/rails_root/public/stylesheets/styles.css +1 -1
  556. data/test/rails_root/test/factories.rb +16 -0
  557. data/test/rails_root/test/functional/feeds_controller_test.rb +2 -2
  558. data/test/rails_root/test/functional/identity_feeds_controller_test.rb +107 -0
  559. data/test/rails_root/test/test_helper.rb +1 -0
  560. data/test/rails_root/test/unit/comment_test.rb +38 -0
  561. data/test/rails_root/test/unit/feed_parent_test.rb +0 -5
  562. data/test/rails_root/test/unit/feed_test.rb +45 -7
  563. data/test/rails_root/test/unit/identity_feed_test.rb +8 -0
  564. data/test/rails_root/test/unit/service_category_test.rb +19 -0
  565. data/test/rails_root/test/unit/service_test.rb +68 -0
  566. data/test/rails_root/test/unit/share_test.rb +31 -0
  567. data/test/rails_root/test/unit/tag_cloud_test.rb +0 -4
  568. data/test/rails_root/test/unit/user_test.rb +30 -1
  569. data/test/rails_root/vendor/plugins/jrails/CHANGELOG +43 -0
  570. data/test/rails_root/vendor/plugins/jrails/LICENSE +18 -0
  571. data/test/rails_root/vendor/plugins/jrails/README.rdoc +21 -0
  572. data/test/rails_root/vendor/plugins/jrails/Rakefile +18 -0
  573. data/test/rails_root/vendor/plugins/jrails/VERSION.yml +4 -0
  574. data/test/rails_root/vendor/plugins/jrails/bin/jrails +30 -0
  575. data/test/rails_root/vendor/plugins/jrails/init.rb +1 -0
  576. data/test/rails_root/vendor/plugins/jrails/install.rb +9 -0
  577. data/test/rails_root/vendor/plugins/jrails/javascripts/jquery-ui.js +188 -0
  578. data/test/rails_root/vendor/plugins/jrails/javascripts/jquery.js +19 -0
  579. data/test/rails_root/vendor/plugins/jrails/javascripts/jrails.js +1 -0
  580. data/test/rails_root/vendor/plugins/jrails/javascripts/sources/jrails.js +197 -0
  581. data/test/rails_root/vendor/plugins/jrails/jrails.gemspec +50 -0
  582. data/test/rails_root/vendor/plugins/jrails/lib/jrails.rb +421 -0
  583. data/test/rails_root/vendor/plugins/jrails/rails/init.rb +15 -0
  584. data/test/rails_root/vendor/plugins/jrails/tasks/jrails.rake +25 -0
  585. metadata +519 -4
data/app/models/feed.rb CHANGED
@@ -12,8 +12,8 @@
12
12
  # top_tags :text
13
13
  # priority :integer(4) default(10)
14
14
  # status :integer(4) default(1)
15
- # last_requested_at :datetime
16
- # last_harvested_at :datetime
15
+ # last_requested_at :datetime default(Wed Jan 01 00:00:00 UTC 1969)
16
+ # last_harvested_at :datetime default(Wed Jan 01 00:00:00 UTC 1969)
17
17
  # harvest_interval :integer(4) default(86400)
18
18
  # failed_requests :integer(4) default(0)
19
19
  # error_message :text
@@ -32,45 +32,7 @@
32
32
  # contributor_id :integer(4)
33
33
  # etag :string(255)
34
34
  #
35
- # Indexes
36
- #
37
- # index_feeds_on_service_id (service_id)
38
- # index_feeds_on_uri (uri)
39
- #
40
35
 
41
- # == Schema Information
42
- #
43
- # Table name: feeds
44
- #
45
- # id :integer(4) not null, primary key
46
- # uri :string(2083)
47
- # display_uri :string(2083)
48
- # title :string(1000)
49
- # short_title :string(100)
50
- # description :text
51
- # tag_filter :string(1000)
52
- # top_tags :text
53
- # priority :integer(4) default(10)
54
- # status :integer(4) default(1)
55
- # last_requested_at :datetime
56
- # last_harvested_at :datetime
57
- # harvest_interval :integer(4) default(86400)
58
- # failed_requests :integer(4) default(0)
59
- # error_message :text
60
- # service_id :integer(4) default(0)
61
- # login :string(255)
62
- # password :string(255)
63
- # created_at :datetime
64
- # updated_at :datetime
65
- # entries_changed_at :datetime
66
- # harvested_from_display_uri :string(2083)
67
- # harvested_from_title :string(1000)
68
- # harvested_from_short_title :string(100)
69
- # entries_count :integer(4)
70
- # default_language_id :integer(4) default(0)
71
- # default_grain_size :string(255) default("unknown")
72
- # contributor_id :integer(4)
73
- #
74
36
  class Feed < ActiveRecord::Base
75
37
 
76
38
  require 'httparty'
@@ -81,10 +43,12 @@ class Feed < ActiveRecord::Base
81
43
  validates_presence_of :uri
82
44
 
83
45
  has_many :feed_parents
84
- has_many :entries
46
+ has_many :identity_feeds
47
+ has_many :entries, :dependent => :destroy
85
48
  belongs_to :contributor, :class_name => 'User', :foreign_key => 'contributor_id'
86
49
  belongs_to :default_language, :class_name => 'Language', :foreign_key => 'default_language_id'
87
-
50
+ belongs_to :service
51
+
88
52
  named_scope :banned, :conditions => "status < 0"
89
53
  named_scope :valid, :conditions => "status >= 0"
90
54
  named_scope :by_title, :order => "title ASC"
@@ -128,6 +92,34 @@ class Feed < ActiveRecord::Base
128
92
  # end
129
93
  end
130
94
 
95
+ # provided to make feed quack like a feedzirra feed
96
+ def url
97
+ display_uri
98
+ end
99
+
100
+ # provided to make feed quack like a feedzirra feed
101
+ def feed_url
102
+ uri
103
+ end
104
+
105
+ # provided to make feed quack like a feedzirra feed
106
+ def last_modified
107
+ entries_changed_at
108
+ end
109
+
110
+ # This will delete a feed if there are no references to it
111
+ def delete_if_unused(user)
112
+ if user.id == contributor_id
113
+ feed = FeedParent.find_by_feed_id(self.id)
114
+ return false if feed # feed is still being used
115
+ feed = IdentityFeed.find_by_feed_id(self.id)
116
+ return false if feed # feed is still being used
117
+ self.destroy
118
+ else
119
+ false
120
+ end
121
+ end
122
+
131
123
  # Gathers all available feed uris from the given uri and parses them into
132
124
  # feed objects
133
125
  def self.gather_information(uri)
@@ -147,24 +139,28 @@ class Feed < ActiveRecord::Base
147
139
  :uri => feed.feed_url)
148
140
  end
149
141
 
150
- # provided to make feed quack like a feedzirra feed
151
- def url
152
- display_uri
153
- end
154
-
155
- # provided to make feed quack like a feedzirra feed
156
- def feed_url
157
- uri
158
- end
159
-
160
- # provided to make feed quack like a feedzirra feed
161
- def last_modified
162
- entries_changed_at
163
- end
164
-
165
142
  # Looks for feeds from a given url
166
143
  def self.discover_feeds(uri)
167
144
  Feedbag.find(uri)
168
145
  end
169
146
 
147
+ # creates a feed for a service with a username and optional password
148
+ def self.create_service_feeds(service, uri, username, password, contributor_id)
149
+ uris = service.generate_uris(username, password, uri)
150
+ uris.collect{ |u| Feed.find_or_create(u.url, u.title, username, password, service.id, contributor_id) } if uris
151
+ end
152
+
153
+ # Finds or creates a feed based on the url. Any give feed uri should only exist once in the system
154
+ def self.find_or_create(uri, title, username, password, service_id, contributor_id)
155
+ Feed.find_by_uri(uri) ||
156
+ Feed.new(:uri => uri,
157
+ :harvest_interval => '01:00:00',
158
+ :last_harvested_at => Time.at(0),
159
+ :title => title,
160
+ :login => username,
161
+ :password => password,
162
+ :service_id => service_id,
163
+ :contributor_id => contributor_id)
164
+ end
165
+
170
166
  end
@@ -9,11 +9,6 @@
9
9
  # created_at :datetime
10
10
  # updated_at :datetime
11
11
  #
12
- # Indexes
13
- #
14
- # index_feed_parents_on_feed_id (feed_id)
15
- # index_feed_parents_on_ownable_id_and_ownable_type (ownable_id,ownable_type)
16
- #
17
12
 
18
13
  class FeedParent < ActiveRecord::Base
19
14
  unloadable
@@ -0,0 +1,26 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: identity_feeds
4
+ #
5
+ # id :integer(4) not null, primary key
6
+ # feed_id :integer(4) not null
7
+ # ownable_id :integer(4) not null
8
+ # ownable_type :string(255) not null
9
+ #
10
+
11
+ class IdentityFeed < ActiveRecord::Base
12
+ belongs_to :ownable, :polymorphic => true
13
+ belongs_to :feed
14
+
15
+ validates_uniqueness_of :feed_id, :scope => [:ownable_id, :ownable_type]
16
+
17
+ # override this method to change the way permissions are handled on comments
18
+ def can_edit?(user)
19
+ if ownable == user || check_user(user)
20
+ true
21
+ else
22
+ false
23
+ end
24
+ end
25
+
26
+ end
@@ -10,11 +10,6 @@
10
10
  # clicks :integer(4) default(0)
11
11
  # avg_time_at_dest :integer(4) default(60)
12
12
  #
13
- # Indexes
14
- #
15
- # index_recommendations_on_dest_entry_id (dest_entry_id)
16
- # index_recommendations_on_entry_id (entry_id)
17
- #
18
13
 
19
14
  class Recommendation < ActiveRecord::Base
20
15
  end
@@ -2,15 +2,60 @@
2
2
  #
3
3
  # Table name: services
4
4
  #
5
- # id :integer(4) not null, primary key
6
- # uri :string(2083) default("")
7
- # name :string(1000) default("")
8
- # api_uri :string(2083) default("")
9
- # uri_template :string(2083) default("")
10
- # icon :string(2083) default("rss.gif")
11
- # sequence :integer(4)
12
- # requires_password :boolean(1)
5
+ # id :integer(4) not null, primary key
6
+ # uri :string(2083) default("")
7
+ # name :string(1000) default("")
8
+ # api_uri :string(2083) default("")
9
+ # uri_template :string(2083) default("")
10
+ # icon :string(2083) default("rss.gif")
11
+ # sort :integer(4)
12
+ # requires_password :boolean(1)
13
+ # is_identity :boolean(1)
14
+ # service_category_id :integer(4)
15
+ # active :boolean(1) default(TRUE)
13
16
  #
14
17
 
15
18
  class Service < ActiveRecord::Base
19
+
20
+ belongs_to :service_category
21
+ named_scope :sorted, :order => "sort ASC"
22
+ named_scope :identity_services, :conditions => ['use_for = ?', 'identity']
23
+ named_scope :tag_services, :conditions => ['use_for = ?', 'tags']
24
+
25
+ def generate_uris(username = '', password = '', uri = '')
26
+ if self.name == 'Facebook'
27
+ # Facebook can't just use feeds like everyone else.
28
+ params = {}
29
+ pairs = uri.split('?')[1].split('&')
30
+ pairs.each do |pair|
31
+ p = pair.split('=')
32
+ params[p[0].to_sym] = p[1]
33
+ end
34
+ uris = []
35
+ uris << OpenStruct.new(:url => "http://www.facebook.com/feeds/notifications.php?id=#{params[:id]}&viewer=#{params[:id]}&key=#{params[:key]}&format=rss20", :title => I18n.t('muck.raker.facebook_notifications'))
36
+ uris << OpenStruct.new(:url => "http://www.facebook.com/feeds/share_posts.php?id=#{params[:id]}&viewer=#{params[:id]}&key=#{params[:key]}&format=rss20", :title => I18n.t('muck.raker.facebook_shares'))
37
+ uris << OpenStruct.new(:url => "http://www.facebook.com/feeds/notes.php?id=#{params[:id]}&viewer=#{params[:id]}&key=#{params[:key]}&format=rss20", :title => I18n.t('muck.raker.facebook_notes'))
38
+ uris
39
+ elsif self.name == 'Amazon'
40
+ # Have to build and sign Amazon wishlist rss feeds
41
+ am = AmazonRequest.new(GlobalConfig.amazon_access_key_id, GlobalConfig.amazon_secret_access_key, GlobalConfig.amazon_associate_tag)
42
+ am.get_amazon_feeds(username) # username needs to be the user's Amazon email
43
+ elsif !self.uri_template.blank? && !username.blank?
44
+ uri = self.uri_template.sub("{username}", username)
45
+ Feed.discover_feeds(uri)
46
+ elsif !uri.blank?
47
+ Feed.discover_feeds(uri)
48
+ end
49
+ end
50
+
51
+ # Generate a uri for the current service
52
+ def generate_tag_uri(tag)
53
+ self.uri_template.sub("{tag}", tag)
54
+ end
55
+
56
+ # Generates uris for 'tag' using all services where 'use_for' is 'tags'
57
+ def self.generate_tag_uris(tag)
58
+ Service.tag_services.collect { |service| service.generate_tag_uri(tag) }
59
+ end
60
+
16
61
  end
@@ -0,0 +1,14 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: service_categories
4
+ #
5
+ # id :integer(4) not null, primary key
6
+ # name :string(255) not null
7
+ # sort :integer(4) default(0)
8
+ #
9
+
10
+ class ServiceCategory < ActiveRecord::Base
11
+ named_scope :sorted, :order => "sort ASC"
12
+ has_many :services, :order => 'sort ASC'
13
+ has_many :identity_services, :class_name => 'Service', :order => 'sort ASC', :conditions => ['use_for = ?', 'identity']
14
+ end
@@ -8,10 +8,6 @@
8
8
  # tag_list :string(5000)
9
9
  # grain_size :string(255) default("all")
10
10
  #
11
- # Indexes
12
- #
13
- # index_tag_clouds_on_grain_size_and_language_id_and_filter (grain_size,language_id,filter) UNIQUE
14
- #
15
11
 
16
12
  class TagCloud < ActiveRecord::Base
17
13
 
@@ -0,0 +1,8 @@
1
+ <% activity_for(activity, :activity_css_class => 'activity-entry-comment') do -%>
2
+ <% if limited -%>
3
+ <%= activity.item.body %>
4
+ <% else -%>
5
+ <%= t('muck.raker.entry_commment_contents', :resource => link_to(activity.item.commentable.title, visit_path(activity.item.commentable, :show_comments => true))) -%>
6
+ <p class="entry-comment-contents"><%= activity.item.body %></p>
7
+ <% end -%>
8
+ <% end -%>
@@ -0,0 +1,8 @@
1
+ <% if activity.item.entry
2
+ link = link_to(activity.item.title, visit_path(activity.item.entry), :target => '_blank')
3
+ else
4
+ link = link_to(activity.item.title, activity.item.uri, :target => '_blank')
5
+ end -%>
6
+ <% activity_for(activity, :activity_css_class => 'activity-share') do -%>
7
+ <%= t('muck.shares.share_activity_content', :link => link, :message => activity.item.message) %>
8
+ <% end -%>
@@ -0,0 +1,20 @@
1
+ <div id="identity-feed">
2
+ <% form_for(:feed, :url => url_by_identity_feed(parent, @identity_feed, service)) do |f| -%>
3
+ <%= service_title(service) %>
4
+ <% if service.template.blank? -%>
5
+ <% if service.uri_template.blank? -%>
6
+ <%= text_field_tag :uri, feed.uri %>
7
+ <% else -%>
8
+ <%= text_field_tag :username, feed.login %>
9
+ <% end -%>
10
+ <% else -%>
11
+ <%= render :partial => "service_templates/#{service.template}", :locals => { :service => service, :feed => feed } -%>
12
+ <% end -%>
13
+ <div class="button form-row">
14
+ <%= f.submit t('muck.raker.import_service', :service => service.name), :id => 'submit_feed', :onclick => "jQuery('#submit_feed').hide();jQuery('#finding_uri_message').show();" %>
15
+ <span id="finding_uri_message" style="display:none;">
16
+ <%= t('muck.raker.submitting_feed_message') %><img src="/images/loading.gif" alt="<%= t('muck.raker.loading_content_image') %>" />
17
+ </span>
18
+ </div>
19
+ <% end -%>
20
+ </div>
@@ -0,0 +1,13 @@
1
+ <div id="available-services" class="services-main <%= css %>">
2
+ <h2><%= title || I18n.t('muck.raker.available_services') %></h2>
3
+ <% service_categories.each do |service_category| -%>
4
+ <% if service_category.identity_services.length > 0 -%>
5
+ <div id="<%= service_category.dom_id %>" class="service-category">
6
+ <h3><%= service_category.name %></h3>
7
+ <ul id="services-list" class="services-list">
8
+ <%= render :partial => 'services/new_service', :collection => service_category.identity_services %>
9
+ </ul>
10
+ </div>
11
+ <% end -%>
12
+ <% end -%>
13
+ </div>
@@ -0,0 +1,25 @@
1
+ <div id="my-services" class="services-main <%= css %>">
2
+ <h2><%= title || I18n.t('muck.raker.my_services') %></h2>
3
+ <ul id="my-services-list" class="services-list">
4
+ <% if edit -%>
5
+ <%= render :partial => 'services/edit_service', :collection => identity_feeds %>
6
+ <% else -%>
7
+ <%= render :partial => 'services/view_service', :collection => identity_feeds %>
8
+ <% end -%>
9
+ </ul>
10
+ </div>
11
+ <% content_for :javascript do -%>
12
+ jQuery(document).ready(function() {
13
+ jQuery('ul#my-services-list li form').hide();
14
+ jQuery('ul#my-services-list li').hover(
15
+ function () { jQuery(this).children('form').show(); },
16
+ function () { jQuery(this).children('form').hide(); }
17
+ );
18
+
19
+ jQuery('.muck_ajax_delete_control').click(function(){
20
+ jQuery(this).parents('li').html(jQuery('#muck_ajax_delete_control_message').html());
21
+ return true;
22
+ });
23
+ });
24
+ <% end -%>
25
+
@@ -0,0 +1,2 @@
1
+ <%= render :partial=> 'identity_feeds/form', :locals => { :service => @identity_feed.feed.service, :parent => @identity_feed.ownable, :feed => @identity_feed.feed } %>
2
+ <%= service_delete(@identity_feed, :text) %>
@@ -0,0 +1,32 @@
1
+ <%= output_errors('', {:class => 'help-box'}) %>
2
+ <%= service_categories(@service_categories, nil, 'span-15') %>
3
+ <%= services_for_user(@user_services, nil, 'span-5') %>
4
+
5
+ <% content_for :javascript do -%>
6
+ jQuery(document).ready(function() {
7
+ jQuery('a.lightbox').fancybox({
8
+ 'hideOnContentClick': false,
9
+ 'overlayShow': true,
10
+ 'frameWidth': 400,
11
+ 'frameHeight': 100
12
+ });
13
+ jQuery('a#facebook-link').fancybox({
14
+ 'hideOnContentClick': false,
15
+ 'overlayShow': true,
16
+ 'frameWidth': 400,
17
+ 'frameHeight': 275
18
+ });
19
+ jQuery('a#zotero-groups-link').fancybox({
20
+ 'hideOnContentClick': false,
21
+ 'overlayShow': true,
22
+ 'frameWidth': 400,
23
+ 'frameHeight': 130
24
+ });
25
+ jQuery('a#netflix-link').fancybox({
26
+ 'hideOnContentClick': false,
27
+ 'overlayShow': true,
28
+ 'frameWidth': 400,
29
+ 'frameHeight': 160
30
+ });
31
+ });
32
+ <% end -%>
@@ -0,0 +1 @@
1
+ <%= render :partial=> 'identity_feeds/form', :locals => { :service => @service, :parent => @parent, :feed => @feed } %>
@@ -23,7 +23,7 @@
23
23
  </div>
24
24
  <% content_for :javascript do -%>
25
25
  jQuery(document).ready(function() {
26
- jQuery('#add_feed_uri').onclick({
26
+ jQuery('#add_feed_uri').click({
27
27
  jQuery(this).hide();
28
28
  jQuery('#finding_uri_message').show();
29
29
  });
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <% content_for :javascript do -%>
14
14
  jQuery(document).ready(function() {
15
- jQuery('#add_feed_uri').onclick({
15
+ jQuery('#add_feed_uri').click({
16
16
  jQuery(this).hide();
17
17
  jQuery('#finding_uri_message').show();
18
18
  });
@@ -13,7 +13,7 @@
13
13
  </div>
14
14
  <% content_for :javascript do -%>
15
15
  jQuery(document).ready(function() {
16
- jQuery('#add_feed_uri').onclick({
16
+ jQuery('#add_feed_uri').click({
17
17
  jQuery(this).hide();
18
18
  jQuery('#finding_uri_message').show();
19
19
  });
@@ -0,0 +1,4 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <p><%= t('muck.raker.facebook_link', :link => '<a href="http://www.facebook.com/posted.php" target="blank">Click Here</a>') %></p>
3
+ <img src="/images/service_icons/facebook_my_links.jpg" />
4
+ <p><%= t('muck.raker.facebook_instructions') %></p>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.friendfeed_rss', :link => '<a href="http://friendfeed.com/">Friendfeed home page</a>') %>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.goodreads_rss') %>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.linkedin_rss', :link => '<a href="http://www.linkedin.com/myprofile?editwp=">LinkedIn Public Profile page</a>') %>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.netflix_rss', :link => '<a href="http://www.netflix.com/RSSFeeds">Netflix Queue RSS page</a>') %>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.polyvore_rss') %>
@@ -0,0 +1,2 @@
1
+ <%= text_field_tag :uri, feed.uri %>
2
+ <%= t('muck.raker.zotero_group_rss') %>
@@ -0,0 +1 @@
1
+ <li id="<%= edit_service.dom_id %>"><%= service_lightbox_edit(@parent, edit_service) %><%= service_delete(edit_service, :image) %></li>
@@ -0,0 +1 @@
1
+ <%= service_lightbox(@parent, new_service) %>
@@ -0,0 +1,5 @@
1
+ <ul class="service-summary">
2
+ <% identity_feeds.each do |identity_feed| -%>
3
+ <%= service_external_link(identity_feed, 'service-summary-item', 'li') %>
4
+ <% end -%>
5
+ </ul>
@@ -0,0 +1 @@
1
+ <li id="<%= view_service.dom_id %>"><%= service_external_link(view_service) %><%= service_delete(view_service, :image) %></li>
@@ -0,0 +1,19 @@
1
+ <div id="comments_tool" class="tool" style="display:none;">
2
+ <div id="comments_tools_close_wrapper" class="close_link_wrapper">
3
+ <a href="#" id="comments_tools_close" class="close_link"><%= t('muck.raker.hide')%></a>
4
+ </div>
5
+ <div class="tools_container">
6
+ <div id="comments_wrapper" class="tools_wrapper">
7
+ <%= cached_activities(@activities, true) %>
8
+ <%= activity_scripts %>
9
+ </div>
10
+ <div id="comments_control">
11
+ <% if logged_in? -%>
12
+ <%= output_errors(t('muck.comments.problem_adding_comment'), {:class => 'help-box'}, @comment) %>
13
+ <%= comment_form(@entry, nil, true, 'entry-comment-submit') %>
14
+ <% else -%>
15
+ <%= link_to t('muck.raker.login_to_comment'), login_path %>
16
+ <% end -%>
17
+ </div>
18
+ </div>
19
+ </div>
@@ -0,0 +1,26 @@
1
+ <% content_for :head do -%>
2
+ <%= javascript_include_tag 'muck_raker.js' %>
3
+ <%= javascript_tag %[var ADD_SHARE_MESSAGE = '#{t('muck.shares.adding_share')}';] %>
4
+ <% end -%>
5
+ <% content_for :javascript do -%>
6
+ jQuery(document).ready(function() {
7
+ <%= "show_tool('comments');" if params[:show_comments] || @entry.comment_count > 0 -%>
8
+ jQuery(window).bind('resize', function() {
9
+ maximize_space();
10
+ });
11
+ jQuery('#comment').click(function(){
12
+ return show_tool('comments');
13
+ });
14
+ jQuery('#share').click(function(){
15
+ return show_tool('share');
16
+ });
17
+ jQuery('.close_link').click(function(){
18
+ jQuery('.tool').hide();
19
+ jQuery("#content_iframe").width('100%');
20
+ return false;
21
+ });
22
+ setup_entry_comment_submit();
23
+ setup_share_submit();
24
+ apply_frame_comment_hover();
25
+ });
26
+ <% end -%>
@@ -0,0 +1,22 @@
1
+ <div id="share_tool" class="tool" style="display:none;">
2
+ <div id="share_tool_close_wrapper" class="close_link_wrapper">
3
+ <a href="#" id="share_tool_close" class="close_link"><%= t('muck.raker.hide')%></a>
4
+ </div>
5
+ <div class="tools_container">
6
+ <div id="shares_control">
7
+ <h2><%= t('muck.shares.share_title') %></h2>
8
+ <% if logged_in? -%>
9
+ <% if already_shared_entry?(current_user, @entry) -%>
10
+ <%= t('muck.raker.already_shared') %>
11
+ <% end -%>
12
+ <%= output_errors(t('muck.shares.problem_adding_share'), {:class => 'help-box'}, @share) %>
13
+ <% share_form(@share) do |f| -%>
14
+ <%= f.hidden_field :entry_id -%>
15
+ <%= hidden_field_tag :render_new, false -%>
16
+ <% end -%>
17
+ <% else -%>
18
+ <%= link_to t('muck.shares.login_prompt'), login_path %>
19
+ <% end -%>
20
+ </div>
21
+ </div>
22
+ </div>
@@ -0,0 +1,25 @@
1
+ <div id="toolbar">
2
+ <div id="toolbar-logo">
3
+
4
+ </div>
5
+ <div id="close" class="section">
6
+ <a id="close_frame" title="Remove frame and go to this web address." class="url_fragment" href="<%= @resource_uri %>"> </a>
7
+ <a id="close_frame_text" title="Remove frame and go to this web address." class="url_fragment" href="<%= @resource_uri %>"><%= t('muck.raker.close') %></a>
8
+ </div>
9
+ <div id="search" class="section">
10
+ <% form_tag(search_entries_path, {:method => :get}) do -%>
11
+ <div id="search_box"><%= text_field_tag(:q, '', :id => 'search-box') %></div>
12
+ <input id="search_go" class="input-button" type="submit" value="<%= t('muck.raker.search_button') %>"/>
13
+ <% end -%>
14
+ </div>
15
+ <div id="tools" class="section">
16
+ <%#= link_to t('muck.raker.remix'), new_content_path(@entry), :id => 'share' - copy the page into the content system %>
17
+ <%#= link_to t('muck.raker.save'), new_content_path(@entry), :id => 'share' - save the content for use later on %>
18
+ <% if logged_in? -%>
19
+ <%= link_to t('muck.raker.share'), new_user_share_path(current_user, :title => @entry.title, :uri => @resource_uri), :id => 'share' if GlobalConfig.enable_raker_shares -%>
20
+ <% else -%>
21
+ <span id="share_login"><%= t('muck.raker.login_or_signup_prompt', :signup => link_to(t('muck.raker.signup'), signup_path, :id => 'signup'), :login => link_to(t('muck.raker.login'), login_path, :id => 'login') ) %></span>
22
+ <% end -%>
23
+ <%= link_to t('muck.raker.comment_entries_count', :count => @comment_count), entry_comments_path(@entry), :id => 'comment' if GlobalConfig.enable_raker_comments -%>
24
+ </div>
25
+ </div>