benmanns-atreides 2.0.4

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 (449) hide show
  1. data/LICENSE +7 -0
  2. data/README.rdoc +1 -0
  3. data/app/assets/javascripts/atreides/admin.facebook.js +137 -0
  4. data/app/assets/javascripts/atreides/admin.js +23 -0
  5. data/app/assets/javascripts/atreides/admin_base.js.erb +273 -0
  6. data/app/assets/javascripts/atreides/admin_edit.js +9 -0
  7. data/app/assets/javascripts/atreides/application.js +15 -0
  8. data/app/assets/javascripts/atreides/public.js +24 -0
  9. data/app/assets/javascripts/atreides/public_base.js.erb +119 -0
  10. data/app/assets/javascripts/atreides/terryblr.js +57 -0
  11. data/app/assets/stylesheets/atreides/admin.css +21 -0
  12. data/app/assets/stylesheets/atreides/admin_base.css.erb +1693 -0
  13. data/app/assets/stylesheets/atreides/application.css +13 -0
  14. data/app/assets/stylesheets/atreides/formtastic_changes.css +10 -0
  15. data/app/assets/stylesheets/atreides/iphone-checkboxes.css.erb +97 -0
  16. data/app/assets/stylesheets/atreides/jBreadCrumb.css +109 -0
  17. data/app/assets/stylesheets/atreides/public.css +15 -0
  18. data/app/assets/stylesheets/atreides/public_base.css +101 -0
  19. data/app/assets/stylesheets/atreides/swfupload.css.erb +63 -0
  20. data/app/controllers/admin/atreides/content_parts_controller.rb +43 -0
  21. data/app/controllers/admin/atreides/dropbox_controller.rb +40 -0
  22. data/app/controllers/admin/atreides/facebook_controller.rb +38 -0
  23. data/app/controllers/admin/atreides/features_controller.rb +63 -0
  24. data/app/controllers/admin/atreides/github_controller.rb +35 -0
  25. data/app/controllers/admin/atreides/links_controller.rb +3 -0
  26. data/app/controllers/admin/atreides/messages_controller.rb +3 -0
  27. data/app/controllers/admin/atreides/orders_controller.rb +35 -0
  28. data/app/controllers/admin/atreides/pages_controller.rb +59 -0
  29. data/app/controllers/admin/atreides/photos_controller.rb +79 -0
  30. data/app/controllers/admin/atreides/posts_controller.rb +109 -0
  31. data/app/controllers/admin/atreides/products_controller.rb +39 -0
  32. data/app/controllers/admin/atreides/sessions_controller.rb +7 -0
  33. data/app/controllers/admin/atreides/sizes_controller.rb +4 -0
  34. data/app/controllers/admin/atreides/tags_controller.rb +20 -0
  35. data/app/controllers/admin/atreides/users_controller.rb +50 -0
  36. data/app/controllers/admin/atreides/videos_controller.rb +53 -0
  37. data/app/controllers/atreides/admin_controller.rb +96 -0
  38. data/app/controllers/atreides/admin_home_controller.rb +215 -0
  39. data/app/controllers/atreides/application_controller.rb +93 -0
  40. data/app/controllers/atreides/home_controller.rb +71 -0
  41. data/app/controllers/atreides/likes_controller.rb +44 -0
  42. data/app/controllers/atreides/pages_controller.rb +34 -0
  43. data/app/controllers/atreides/posts_controller.rb +119 -0
  44. data/app/controllers/atreides/public_controller.rb +43 -0
  45. data/app/helpers/admin/atreides/dropbox_helper.rb +42 -0
  46. data/app/helpers/admin/atreides/features_helper.rb +4 -0
  47. data/app/helpers/admin/atreides/github_helper.rb +43 -0
  48. data/app/helpers/admin/atreides/links_helper.rb +4 -0
  49. data/app/helpers/admin/atreides/messages_helper.rb +4 -0
  50. data/app/helpers/admin/atreides/orders_helper.rb +30 -0
  51. data/app/helpers/admin/atreides/pages_helper.rb +17 -0
  52. data/app/helpers/admin/atreides/photos_helper.rb +14 -0
  53. data/app/helpers/admin/atreides/posts_helper.rb +41 -0
  54. data/app/helpers/admin/atreides/products_helper.rb +37 -0
  55. data/app/helpers/admin/atreides/sizes_helper.rb +4 -0
  56. data/app/helpers/admin/atreides/user_sessions_helper.rb +4 -0
  57. data/app/helpers/admin/atreides/users_helper.rb +8 -0
  58. data/app/helpers/admin/atreides/videos_helper.rb +4 -0
  59. data/app/helpers/atreides/admin_helper.rb +243 -0
  60. data/app/helpers/atreides/admin_home_helper.rb +4 -0
  61. data/app/helpers/atreides/application_helper.rb +210 -0
  62. data/app/helpers/atreides/home_helper.rb +4 -0
  63. data/app/helpers/atreides/posts_helper.rb +119 -0
  64. data/app/inputs/files_input.rb +13 -0
  65. data/app/inputs/price_input.rb +18 -0
  66. data/app/inputs/underline_input.rb +16 -0
  67. data/app/models/atreides/ability.rb +24 -0
  68. data/app/models/atreides/content_part.rb +106 -0
  69. data/app/models/atreides/facebook_user.rb +103 -0
  70. data/app/models/atreides/feature.rb +90 -0
  71. data/app/models/atreides/github.rb +74 -0
  72. data/app/models/atreides/like.rb +35 -0
  73. data/app/models/atreides/line_item.rb +4 -0
  74. data/app/models/atreides/link.rb +32 -0
  75. data/app/models/atreides/message.rb +34 -0
  76. data/app/models/atreides/order.rb +209 -0
  77. data/app/models/atreides/page.rb +114 -0
  78. data/app/models/atreides/photo.rb +130 -0
  79. data/app/models/atreides/post.rb +271 -0
  80. data/app/models/atreides/preferences.rb +31 -0
  81. data/app/models/atreides/product.rb +75 -0
  82. data/app/models/atreides/site.rb +59 -0
  83. data/app/models/atreides/size.rb +44 -0
  84. data/app/models/atreides/tag.rb +31 -0
  85. data/app/models/atreides/tweet.rb +123 -0
  86. data/app/models/atreides/user.rb +129 -0
  87. data/app/models/atreides/video.rb +206 -0
  88. data/app/models/atreides/vote.rb +43 -0
  89. data/app/models/fb_post_publisher_job.rb +72 -0
  90. data/app/models/settings.rb +19 -0
  91. data/app/models/tumblr_post_publisher_job.rb +75 -0
  92. data/app/models/tw_post_publisher_job.rb +54 -0
  93. data/app/views/admin/_edit_head_content.html.haml +2 -0
  94. data/app/views/admin/atreides/content_parts/_form.html.haml +21 -0
  95. data/app/views/admin/atreides/content_parts/_photos.html.haml +18 -0
  96. data/app/views/admin/atreides/content_parts/_text.html.haml +1 -0
  97. data/app/views/admin/atreides/content_parts/_videos.html.haml +12 -0
  98. data/app/views/admin/atreides/content_parts/destroy.js.haml +3 -0
  99. data/app/views/admin/atreides/content_parts/edit.html.haml +0 -0
  100. data/app/views/admin/atreides/content_parts/new.html.haml +0 -0
  101. data/app/views/admin/atreides/content_parts/new.js.haml +11 -0
  102. data/app/views/admin/atreides/dropbox/_uploader.html.haml +134 -0
  103. data/app/views/admin/atreides/dropbox/list.html.haml +27 -0
  104. data/app/views/admin/atreides/dropbox/setup.html.haml +8 -0
  105. data/app/views/admin/atreides/facebook/index.html.haml +29 -0
  106. data/app/views/admin/atreides/features/_form.html.haml +60 -0
  107. data/app/views/admin/atreides/features/edit.html.haml +1 -0
  108. data/app/views/admin/atreides/features/index.html.haml +24 -0
  109. data/app/views/admin/atreides/features/new.html.haml +1 -0
  110. data/app/views/admin/atreides/github/index.html.haml +26 -0
  111. data/app/views/admin/atreides/github/show.html.haml +19 -0
  112. data/app/views/admin/atreides/likes/create.js.haml +2 -0
  113. data/app/views/admin/atreides/orders/_sidebar.html.haml +20 -0
  114. data/app/views/admin/atreides/orders/edit.html.haml +52 -0
  115. data/app/views/admin/atreides/orders/index.html.haml +8 -0
  116. data/app/views/admin/atreides/pages/_form.html.haml +31 -0
  117. data/app/views/admin/atreides/pages/edit.html.haml +3 -0
  118. data/app/views/admin/atreides/pages/index.html.haml +15 -0
  119. data/app/views/admin/atreides/pages/index.js.haml +4 -0
  120. data/app/views/admin/atreides/pages/new.html.haml +2 -0
  121. data/app/views/admin/atreides/photos/create.js.haml +18 -0
  122. data/app/views/admin/atreides/photos/destroy.js.haml +3 -0
  123. data/app/views/admin/atreides/posts/_archives.html.haml +19 -0
  124. data/app/views/admin/atreides/posts/_form.html.haml +66 -0
  125. data/app/views/admin/atreides/posts/_form_buttons.html.haml +9 -0
  126. data/app/views/admin/atreides/posts/_form_sidebar.html.haml +85 -0
  127. data/app/views/admin/atreides/posts/edit.html.haml +2 -0
  128. data/app/views/admin/atreides/posts/index.html.haml +24 -0
  129. data/app/views/admin/atreides/posts/index.js.haml +1 -0
  130. data/app/views/admin/atreides/posts/new.html.haml +2 -0
  131. data/app/views/admin/atreides/products/edit.html.haml +69 -0
  132. data/app/views/admin/atreides/products/index.html.haml +31 -0
  133. data/app/views/admin/atreides/sessions/new.html.haml +13 -0
  134. data/app/views/admin/atreides/user_sessions/new.html.haml +10 -0
  135. data/app/views/admin/atreides/users/_form.html.haml +19 -0
  136. data/app/views/admin/atreides/users/edit.html.haml +6 -0
  137. data/app/views/admin/atreides/users/index.html.haml +11 -0
  138. data/app/views/admin/atreides/users/new.html.haml +6 -0
  139. data/app/views/admin/atreides/users/show.html.haml +4 -0
  140. data/app/views/admin/atreides/videos/create.js.haml +9 -0
  141. data/app/views/admin/atreides/videos/destroy.js.haml +3 -0
  142. data/app/views/admin/common/_archive_sidebar.html.haml +28 -0
  143. data/app/views/admin/common/_list_table.html.erb +37 -0
  144. data/app/views/admin/common/_list_table_row.html.erb +18 -0
  145. data/app/views/admin/common/_pagination.html.erb +1 -0
  146. data/app/views/admin/common/_search_form.html.erb +6 -0
  147. data/app/views/admin/common/access_denied.html.haml +1 -0
  148. data/app/views/atreides/admin/_content_nav.html.haml +7 -0
  149. data/app/views/atreides/admin_home/_analytics.html.haml +93 -0
  150. data/app/views/atreides/admin_home/_fb_page_likes_analytics_tbody.haml +10 -0
  151. data/app/views/atreides/admin_home/_fb_page_views_analytics_tbody.haml +10 -0
  152. data/app/views/atreides/admin_home/_top_landing_pages_analytics_tbody.haml +14 -0
  153. data/app/views/atreides/admin_home/_top_referrers_analytics_tbody.haml +12 -0
  154. data/app/views/atreides/admin_home/_tweets_analytics_tbody.html.haml +8 -0
  155. data/app/views/atreides/admin_home/_visitors_analytics_tbody.html.haml +12 -0
  156. data/app/views/atreides/admin_home/index.html.haml +57 -0
  157. data/app/views/atreides/admin_home/search.html.haml +11 -0
  158. data/app/views/atreides/admin_home/setup.html.haml +15 -0
  159. data/app/views/atreides/common/_gallery_params.xml.erb +174 -0
  160. data/app/views/atreides/common/slideshow.xml.haml +6 -0
  161. data/app/views/atreides/errors/404.html.haml +10 -0
  162. data/app/views/atreides/errors/500.html.haml +4 -0
  163. data/app/views/atreides/home/index.html.haml +30 -0
  164. data/app/views/atreides/home/index.js.haml +1 -0
  165. data/app/views/atreides/home/robots.txt.erb +5 -0
  166. data/app/views/atreides/home/sitemap.xml.builder +35 -0
  167. data/app/views/atreides/pages/show.html.haml +3 -0
  168. data/app/views/atreides/posts/_archives.html.haml +19 -0
  169. data/app/views/atreides/posts/_featured_posts.html.haml +10 -0
  170. data/app/views/atreides/posts/_list.html.haml +9 -0
  171. data/app/views/atreides/posts/archives.html.haml +3 -0
  172. data/app/views/atreides/posts/archives.js.haml +1 -0
  173. data/app/views/atreides/posts/gallery_params.xml.haml +1 -0
  174. data/app/views/atreides/posts/index.atom.builder +22 -0
  175. data/app/views/atreides/posts/index.html.haml +13 -0
  176. data/app/views/atreides/posts/index.rss.builder +21 -0
  177. data/app/views/atreides/posts/show.html.haml +8 -0
  178. data/app/views/atreides/posts/tagged.html.haml +4 -0
  179. data/app/views/atreides/posts/tagged.js.haml +1 -0
  180. data/app/views/layouts/admin.html.haml +65 -0
  181. data/app/views/layouts/application.html.haml +37 -0
  182. data/app/views/layouts/atreides/application.html.erb +14 -0
  183. data/app/views/layouts/public.html.haml +39 -0
  184. data/config/cucumber.yml +11 -0
  185. data/config/locales/en.yml +207 -0
  186. data/config/locales/fr.yml +199 -0
  187. data/config/routes.rb +119 -0
  188. data/lib/assets/images/atreides/admin/add.png +0 -0
  189. data/lib/assets/images/atreides/admin/add_btn.png +0 -0
  190. data/lib/assets/images/atreides/admin/add_dashboard.png +0 -0
  191. data/lib/assets/images/atreides/admin/add_photo_button_sprite.png +0 -0
  192. data/lib/assets/images/atreides/admin/add_photos_btn.png +0 -0
  193. data/lib/assets/images/atreides/admin/background.png +0 -0
  194. data/lib/assets/images/atreides/admin/calendar.png +0 -0
  195. data/lib/assets/images/atreides/admin/chevron.gif +0 -0
  196. data/lib/assets/images/atreides/admin/chevron_overlay.png +0 -0
  197. data/lib/assets/images/atreides/admin/choose_photos_button_sprite.png +0 -0
  198. data/lib/assets/images/atreides/admin/content_bg.png +0 -0
  199. data/lib/assets/images/atreides/admin/content_bg_edit_form.png +0 -0
  200. data/lib/assets/images/atreides/admin/content_part_break.png +0 -0
  201. data/lib/assets/images/atreides/admin/content_part_drop_target.png +0 -0
  202. data/lib/assets/images/atreides/admin/content_part_icons.png +0 -0
  203. data/lib/assets/images/atreides/admin/content_part_photos.png +0 -0
  204. data/lib/assets/images/atreides/admin/content_part_text.png +0 -0
  205. data/lib/assets/images/atreides/admin/content_part_videos.png +0 -0
  206. data/lib/assets/images/atreides/admin/content_top_edit_form.png +0 -0
  207. data/lib/assets/images/atreides/admin/dashboard-indicator.gif +0 -0
  208. data/lib/assets/images/atreides/admin/dashboard_controls_activity.png +0 -0
  209. data/lib/assets/images/atreides/admin/dashboard_controls_customize.png +0 -0
  210. data/lib/assets/images/atreides/admin/dashboard_controls_drafts.png +0 -0
  211. data/lib/assets/images/atreides/admin/dashboard_controls_open.png +0 -0
  212. data/lib/assets/images/atreides/admin/dashboard_controls_posts.png +0 -0
  213. data/lib/assets/images/atreides/admin/dashboard_controls_queue.png +0 -0
  214. data/lib/assets/images/atreides/admin/dashboard_nav_border.png +0 -0
  215. data/lib/assets/images/atreides/admin/delete_bg.png +0 -0
  216. data/lib/assets/images/atreides/admin/down_arrow.png +0 -0
  217. data/lib/assets/images/atreides/admin/dropbox_big.jpg +0 -0
  218. data/lib/assets/images/atreides/admin/dropbox_btn.png +0 -0
  219. data/lib/assets/images/atreides/admin/dropbox_folder.png +0 -0
  220. data/lib/assets/images/atreides/admin/dropbox_icon.gif +0 -0
  221. data/lib/assets/images/atreides/admin/dropbox_icon.png +0 -0
  222. data/lib/assets/images/atreides/admin/expand_collapse.png +0 -0
  223. data/lib/assets/images/atreides/admin/form_sidebar_divider.png +0 -0
  224. data/lib/assets/images/atreides/admin/grey_hatch_bg.png +0 -0
  225. data/lib/assets/images/atreides/admin/header.png +0 -0
  226. data/lib/assets/images/atreides/admin/icon_dropbox.gif +0 -0
  227. data/lib/assets/images/atreides/admin/icon_home.gif +0 -0
  228. data/lib/assets/images/atreides/admin/input_bg.gif +0 -0
  229. data/lib/assets/images/atreides/admin/large_loading.gif +0 -0
  230. data/lib/assets/images/atreides/admin/new_content_icons.png +0 -0
  231. data/lib/assets/images/atreides/admin/off.png +0 -0
  232. data/lib/assets/images/atreides/admin/on.png +0 -0
  233. data/lib/assets/images/atreides/admin/page_icon.png +0 -0
  234. data/lib/assets/images/atreides/admin/permalink.png +0 -0
  235. data/lib/assets/images/atreides/admin/photos-display-type-gallery.png +0 -0
  236. data/lib/assets/images/atreides/admin/photos-display-type-photos.png +0 -0
  237. data/lib/assets/images/atreides/admin/product.png +0 -0
  238. data/lib/assets/images/atreides/admin/remove.png +0 -0
  239. data/lib/assets/images/atreides/admin/resize.png +0 -0
  240. data/lib/assets/images/atreides/admin/save_btn.png +0 -0
  241. data/lib/assets/images/atreides/admin/search_icon.png +0 -0
  242. data/lib/assets/images/atreides/admin/select_arrows.png +0 -0
  243. data/lib/assets/images/atreides/admin/slider.png +0 -0
  244. data/lib/assets/images/atreides/admin/slider_center.png +0 -0
  245. data/lib/assets/images/atreides/admin/slider_left.png +0 -0
  246. data/lib/assets/images/atreides/admin/slider_right.png +0 -0
  247. data/lib/assets/images/atreides/admin/sprite.png +0 -0
  248. data/lib/assets/images/atreides/admin/upload_btn.png +0 -0
  249. data/lib/assets/images/atreides/admin/video_bg.png +0 -0
  250. data/lib/assets/images/atreides/blank.gif +0 -0
  251. data/lib/assets/images/atreides/closelabel.png +0 -0
  252. data/lib/assets/images/atreides/loading.gif +0 -0
  253. data/lib/assets/images/atreides/sprite.png +0 -0
  254. data/lib/assets/images/atreides/tipsy.gif +0 -0
  255. data/lib/atreides.rb +81 -0
  256. data/lib/atreides/base/aasmstates.rb +117 -0
  257. data/lib/atreides/base/base.rb +40 -0
  258. data/lib/atreides/base/taggable.rb +43 -0
  259. data/lib/atreides/base/validation.rb +23 -0
  260. data/lib/atreides/configuration.rb +61 -0
  261. data/lib/atreides/engine.rb +41 -0
  262. data/lib/atreides/extendable.rb +12 -0
  263. data/lib/atreides/i18n_helpers.rb +65 -0
  264. data/lib/atreides/railties/tasks.rake +68 -0
  265. data/lib/atreides/time_formats.rb +19 -0
  266. data/lib/atreides/validators.rb +15 -0
  267. data/lib/atreides/version.rb +4 -0
  268. data/lib/generators/atreides/USAGE +0 -0
  269. data/lib/generators/atreides/atreides_generator.rb +57 -0
  270. data/lib/generators/templates/Procfile +2 -0
  271. data/lib/generators/templates/add_role_to_users.rb +16 -0
  272. data/lib/generators/templates/add_userid_to_resources.rb +15 -0
  273. data/lib/generators/templates/create_content_parts.rb +66 -0
  274. data/lib/generators/templates/create_features.rb +21 -0
  275. data/lib/generators/templates/create_likes.rb +16 -0
  276. data/lib/generators/templates/create_line_items.rb +21 -0
  277. data/lib/generators/templates/create_links.rb +16 -0
  278. data/lib/generators/templates/create_messages.rb +24 -0
  279. data/lib/generators/templates/create_orders.rb +31 -0
  280. data/lib/generators/templates/create_pages.rb +29 -0
  281. data/lib/generators/templates/create_photos.rb +22 -0
  282. data/lib/generators/templates/create_posts.rb +36 -0
  283. data/lib/generators/templates/create_preferences.rb +14 -0
  284. data/lib/generators/templates/create_products.rb +22 -0
  285. data/lib/generators/templates/create_sessions.rb +16 -0
  286. data/lib/generators/templates/create_sites.rb +35 -0
  287. data/lib/generators/templates/create_sizes.rb +16 -0
  288. data/lib/generators/templates/create_tweets.rb +25 -0
  289. data/lib/generators/templates/create_videos.rb +24 -0
  290. data/lib/generators/templates/create_votes.rb +20 -0
  291. data/lib/generators/templates/delayed_job.rb +5 -0
  292. data/lib/generators/templates/devise_create_users.rb +42 -0
  293. data/lib/generators/templates/em-net-http_override.rb +74 -0
  294. data/lib/generators/templates/initializer.rb +21 -0
  295. data/lib/generators/templates/new_relic.rb +6 -0
  296. data/lib/generators/templates/oembed.yml +63 -0
  297. data/lib/generators/templates/settings.yml +78 -0
  298. data/lib/generators/templates/string_extensions.rb +20 -0
  299. data/lib/generators/templates/unicorn.rb +2 -0
  300. data/lib/tasks/atreides_tasks.rake +4 -0
  301. data/lib/tasks/cucumber.rake +58 -0
  302. data/lib/tasks/tasks.rake +403 -0
  303. data/lib/tasks/yard.rake +18 -0
  304. data/vendor/assets/flash/atreides/player.swf +0 -0
  305. data/vendor/assets/flash/atreides/slideshowpro.swf +0 -0
  306. data/vendor/assets/flash/atreides/swfupload.swf +0 -0
  307. data/vendor/assets/images/atreides/share/aim_16.png +0 -0
  308. data/vendor/assets/images/atreides/share/apple_16.png +0 -0
  309. data/vendor/assets/images/atreides/share/bebo_16.png +0 -0
  310. data/vendor/assets/images/atreides/share/blogger_16.png +0 -0
  311. data/vendor/assets/images/atreides/share/brightkite_16.png +0 -0
  312. data/vendor/assets/images/atreides/share/cargo_16.png +0 -0
  313. data/vendor/assets/images/atreides/share/delicious_16.png +0 -0
  314. data/vendor/assets/images/atreides/share/designfloat_16.png +0 -0
  315. data/vendor/assets/images/atreides/share/designmoo_16.png +0 -0
  316. data/vendor/assets/images/atreides/share/deviantart_16.png +0 -0
  317. data/vendor/assets/images/atreides/share/digg_16.png +0 -0
  318. data/vendor/assets/images/atreides/share/digg_alt_16.png +0 -0
  319. data/vendor/assets/images/atreides/share/dopplr_16.png +0 -0
  320. data/vendor/assets/images/atreides/share/dribbble_16.png +0 -0
  321. data/vendor/assets/images/atreides/share/email_16.png +0 -0
  322. data/vendor/assets/images/atreides/share/ember_16.png +0 -0
  323. data/vendor/assets/images/atreides/share/evernote_16.png +0 -0
  324. data/vendor/assets/images/atreides/share/facebook_16.png +0 -0
  325. data/vendor/assets/images/atreides/share/flickr_16.png +0 -0
  326. data/vendor/assets/images/atreides/share/friendfeed_16.png +0 -0
  327. data/vendor/assets/images/atreides/share/gamespot_16.png +0 -0
  328. data/vendor/assets/images/atreides/share/google_16.png +0 -0
  329. data/vendor/assets/images/atreides/share/google_voice_16.png +0 -0
  330. data/vendor/assets/images/atreides/share/google_wave_16.png +0 -0
  331. data/vendor/assets/images/atreides/share/googletalk_16.png +0 -0
  332. data/vendor/assets/images/atreides/share/gowalla_16.png +0 -0
  333. data/vendor/assets/images/atreides/share/grooveshark_16.png +0 -0
  334. data/vendor/assets/images/atreides/share/ilike_16.png +0 -0
  335. data/vendor/assets/images/atreides/share/komodomedia_azure_16.png +0 -0
  336. data/vendor/assets/images/atreides/share/komodomedia_wood_16.png +0 -0
  337. data/vendor/assets/images/atreides/share/lastfm_16.png +0 -0
  338. data/vendor/assets/images/atreides/share/license.txt +9 -0
  339. data/vendor/assets/images/atreides/share/linkedin_16.png +0 -0
  340. data/vendor/assets/images/atreides/share/mixx_16.png +0 -0
  341. data/vendor/assets/images/atreides/share/mobileme_16.png +0 -0
  342. data/vendor/assets/images/atreides/share/mynameise_16.png +0 -0
  343. data/vendor/assets/images/atreides/share/myspace_16.png +0 -0
  344. data/vendor/assets/images/atreides/share/netvibes_16.png +0 -0
  345. data/vendor/assets/images/atreides/share/newsvine_16.png +0 -0
  346. data/vendor/assets/images/atreides/share/openid_16.png +0 -0
  347. data/vendor/assets/images/atreides/share/orkut_16.png +0 -0
  348. data/vendor/assets/images/atreides/share/pandora_16.png +0 -0
  349. data/vendor/assets/images/atreides/share/paypal_16.png +0 -0
  350. data/vendor/assets/images/atreides/share/picasa_16.png +0 -0
  351. data/vendor/assets/images/atreides/share/plurk_16.png +0 -0
  352. data/vendor/assets/images/atreides/share/posterous_16.png +0 -0
  353. data/vendor/assets/images/atreides/share/qik_16.png +0 -0
  354. data/vendor/assets/images/atreides/share/readernaut_16.png +0 -0
  355. data/vendor/assets/images/atreides/share/reddit_16.png +0 -0
  356. data/vendor/assets/images/atreides/share/roboto_16.png +0 -0
  357. data/vendor/assets/images/atreides/share/rss_16.png +0 -0
  358. data/vendor/assets/images/atreides/share/sharethis_16.png +0 -0
  359. data/vendor/assets/images/atreides/share/skype_16.png +0 -0
  360. data/vendor/assets/images/atreides/share/stumbleupon_16.png +0 -0
  361. data/vendor/assets/images/atreides/share/technorati_16.png +0 -0
  362. data/vendor/assets/images/atreides/share/tumblr_16.png +0 -0
  363. data/vendor/assets/images/atreides/share/twitter_16.png +0 -0
  364. data/vendor/assets/images/atreides/share/viddler_16.png +0 -0
  365. data/vendor/assets/images/atreides/share/vimeo_16.png +0 -0
  366. data/vendor/assets/images/atreides/share/virb_16.png +0 -0
  367. data/vendor/assets/images/atreides/share/windows_16.png +0 -0
  368. data/vendor/assets/images/atreides/share/wordpress_16.png +0 -0
  369. data/vendor/assets/images/atreides/share/xing_16.png +0 -0
  370. data/vendor/assets/images/atreides/share/yahoo_16.png +0 -0
  371. data/vendor/assets/images/atreides/share/yahoobuzz_16.png +0 -0
  372. data/vendor/assets/images/atreides/share/yelp_16.png +0 -0
  373. data/vendor/assets/images/atreides/share/youtube_16.png +0 -0
  374. data/vendor/assets/javascripts/atreides/backbone-0.3.3.js +1100 -0
  375. data/vendor/assets/javascripts/atreides/cufon-yui.js +7 -0
  376. data/vendor/assets/javascripts/atreides/facebox.js +309 -0
  377. data/vendor/assets/javascripts/atreides/fileuploader.js +1250 -0
  378. data/vendor/assets/javascripts/atreides/g.raphael-min.js +7 -0
  379. data/vendor/assets/javascripts/atreides/galleria.js +2 -0
  380. data/vendor/assets/javascripts/atreides/galleria/src/galleria.js +3816 -0
  381. data/vendor/assets/javascripts/atreides/galleria/src/plugins/galleria.flickr.js +221 -0
  382. data/vendor/assets/javascripts/atreides/galleria/src/plugins/galleria.history.js +602 -0
  383. data/vendor/assets/javascripts/atreides/galleria/src/themes/classic/classic-loader.gif +0 -0
  384. data/vendor/assets/javascripts/atreides/galleria/src/themes/classic/classic-map.png +0 -0
  385. data/vendor/assets/javascripts/atreides/galleria/src/themes/classic/galleria.classic.css +202 -0
  386. data/vendor/assets/javascripts/atreides/galleria/src/themes/classic/galleria.classic.js +92 -0
  387. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/b.png +0 -0
  388. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/down.gif +0 -0
  389. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/fix.gif +0 -0
  390. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/fullscreen-demo.html +34 -0
  391. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/galleria.fullscreen.css +46 -0
  392. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/galleria.fullscreen.js +193 -0
  393. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/i.png +0 -0
  394. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/l.gif +0 -0
  395. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/l2.png +0 -0
  396. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/loader.gif +0 -0
  397. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/n.gif +0 -0
  398. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/p.gif +0 -0
  399. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/r.gif +0 -0
  400. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/r2.png +0 -0
  401. data/vendor/assets/javascripts/atreides/galleria/src/themes/fullscreen/up.gif +0 -0
  402. data/vendor/assets/javascripts/atreides/jquery-1.7.js +4 -0
  403. data/vendor/assets/javascripts/atreides/jquery-ui.js +11603 -0
  404. data/vendor/assets/javascripts/atreides/jquery.autogrow.js +132 -0
  405. data/vendor/assets/javascripts/atreides/jquery.cookie.js +96 -0
  406. data/vendor/assets/javascripts/atreides/jquery.countdown.js +759 -0
  407. data/vendor/assets/javascripts/atreides/jquery.cycle.js +918 -0
  408. data/vendor/assets/javascripts/atreides/jquery.easing.1.3.js +205 -0
  409. data/vendor/assets/javascripts/atreides/jquery.flash.js +288 -0
  410. data/vendor/assets/javascripts/atreides/jquery.iphone-checkboxes.js +214 -0
  411. data/vendor/assets/javascripts/atreides/jquery.jBreadCrumb.1.1.js +240 -0
  412. data/vendor/assets/javascripts/atreides/jquery.multipleselectbox-min.js +15 -0
  413. data/vendor/assets/javascripts/atreides/jquery.multipleselectbox.js +446 -0
  414. data/vendor/assets/javascripts/atreides/jquery.swfupload.js +64 -0
  415. data/vendor/assets/javascripts/atreides/jquery.tipsy.js +104 -0
  416. data/vendor/assets/javascripts/atreides/jquery.uniform.js +461 -0
  417. data/vendor/assets/javascripts/atreides/jquery_ujs.js +316 -0
  418. data/vendor/assets/javascripts/atreides/jtags.js +125 -0
  419. data/vendor/assets/javascripts/atreides/raphael-min.js +7 -0
  420. data/vendor/assets/javascripts/atreides/raphael.analytics.js +205 -0
  421. data/vendor/assets/javascripts/atreides/raphael.path.methods.js +53 -0
  422. data/vendor/assets/javascripts/atreides/raphael.pie.js +44 -0
  423. data/vendor/assets/javascripts/atreides/sifr.js +18 -0
  424. data/vendor/assets/javascripts/atreides/swfobject.js +4 -0
  425. data/vendor/assets/javascripts/atreides/swfupload/handlers.js +290 -0
  426. data/vendor/assets/javascripts/atreides/swfupload/swfupload.cookies.js +53 -0
  427. data/vendor/assets/javascripts/atreides/swfupload/swfupload.js +980 -0
  428. data/vendor/assets/javascripts/atreides/swfupload/swfupload.queue.js +98 -0
  429. data/vendor/assets/javascripts/atreides/swfupload/swfupload.speed.js +342 -0
  430. data/vendor/assets/javascripts/atreides/swfupload/swfupload.swfobject.js +111 -0
  431. data/vendor/assets/javascripts/atreides/underscore-1.1.6.js +807 -0
  432. data/vendor/assets/stylesheets/atreides/admin_grid.css +258 -0
  433. data/vendor/assets/stylesheets/atreides/facebox.css +80 -0
  434. data/vendor/assets/stylesheets/atreides/formtastic.css +144 -0
  435. data/vendor/assets/stylesheets/atreides/galleria.css +24 -0
  436. data/vendor/assets/stylesheets/atreides/ie.css +35 -0
  437. data/vendor/assets/stylesheets/atreides/images/bg_fallback.png +0 -0
  438. data/vendor/assets/stylesheets/atreides/images/icon_sprite.png +0 -0
  439. data/vendor/assets/stylesheets/atreides/images/progress_bar.gif +0 -0
  440. data/vendor/assets/stylesheets/atreides/images/slider_handles.png +0 -0
  441. data/vendor/assets/stylesheets/atreides/images/ui-icons_222222_256x240.png +0 -0
  442. data/vendor/assets/stylesheets/atreides/images/ui-icons_454545_256x240.png +0 -0
  443. data/vendor/assets/stylesheets/atreides/jquery-ui.css +738 -0
  444. data/vendor/assets/stylesheets/atreides/multipleselectbox.css +33 -0
  445. data/vendor/assets/stylesheets/atreides/print.css +29 -0
  446. data/vendor/assets/stylesheets/atreides/public_grid.css +258 -0
  447. data/vendor/assets/stylesheets/atreides/tipsy.css +7 -0
  448. data/vendor/assets/stylesheets/atreides/uniform.default.css +476 -0
  449. metadata +1566 -0
@@ -0,0 +1,40 @@
1
+ module Atreides
2
+
3
+ # Base class inherited by every model in Atreides
4
+ class Base < ActiveRecord::Base
5
+
6
+ #
7
+ # Includes
8
+ #
9
+ include ActiveModel::Validations
10
+
11
+ #
12
+ # Class definitions
13
+ #
14
+ self.abstract_class = true
15
+
16
+ # Give a string identifying the model based on it's properties.
17
+ # In order:
18
+ # - _slug_ if it has a property *slug*
19
+ # - _id-name_ if it has a property *name*
20
+ # - _id-title_ if it has a property *title*
21
+ # - _id_ otherwise
22
+ # @return A string describing an instance of a model
23
+ def to_param
24
+ return slug.to_s if self.respond_to?(:slug) and !slug.blank?
25
+ return "#{id}-#{name.to_s.parameterize}" if self.respond_to?(:name) and self.name?
26
+ return "#{id}-#{title.to_s.parameterize}" if self.respond_to?(:title) and self.title?
27
+ id.to_s
28
+ end
29
+
30
+ # Give a DOM friendly ID for an object. This is used extensively with UI Javascript behaviours.
31
+ # @param [Prefix] prefix the id with a custom name. Defaults to the objects model name.
32
+ # @return [String] the dom id
33
+ def dom_id(prefix=nil)
34
+ display_id = new_record? ? "new" : id
35
+ prefix ||= self.class.name.demodulize
36
+ prefix != :bare ? "#{prefix.to_s.parameterize('_')}_#{display_id}" : display_id
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ module Atreides
2
+ class Base < ActiveRecord::Base
3
+
4
+ #
5
+ # Module providing common tagging functionality. Uses the _acts_as_taggable_ mixin.
6
+ #
7
+ module Taggable
8
+ def self.included(recipient)
9
+ recipient.class_eval do
10
+
11
+ # Throws errors if table doesn't exist on first project setup
12
+ if recipient.table_exists?
13
+ acts_as_taggable
14
+
15
+ if Rails.env.development? || Rails.env.staging?
16
+ Settings.load! # Needed for dev env when reloading class caches
17
+ end
18
+
19
+ if defined?(Settings.tags[self.table_name]) && defined?(Settings.tags[self.table_name]['groups'])
20
+ acts_as_taggable_on Settings.tags[self.table_name]['groups']
21
+ scope :tagged, lambda { |tags|
22
+ tags_sql = tags.is_a?(Array) ? tags.map{|t|"'#{t}'"}.join(",") : "'#{tags}'"
23
+ select("#{table_name}.*").
24
+ joins("JOIN taggings ON taggings.taggable_id = #{table_name}.id AND taggings.taggable_type IN ('#{to_s}')").
25
+ where("taggings.tag_id in (SELECT id from tags where LOWER(name) IN (#{tags_sql.downcase}))")
26
+ }
27
+ end
28
+ end
29
+
30
+ # Add callback to normalize tags
31
+ before_save :normalize_tags
32
+
33
+ private
34
+
35
+ def normalize_tags
36
+ self.tag_list = self.tag_list.map(&:parameterize)
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,23 @@
1
+ module Atreides
2
+ class Base < ActiveRecord::Base
3
+
4
+ #
5
+ # Module providing common validations functionality.
6
+ #
7
+ module Validation
8
+ def self.included(recipient)
9
+ recipient.class_eval do
10
+ before_validation :update_slug
11
+
12
+ # Sets the object's slug. Slugs are used to create SEO friendly URLs.
13
+ def update_slug
14
+ # Set slug if not set
15
+ if respond_to?(:slug) and respond_to?(:title)
16
+ self.slug = title? ? title.parameterize : id if !slug? or slug.match(/^\d+$/)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,61 @@
1
+ class Atreides::Configuration
2
+ attr_accessor :user_model
3
+ attr_accessor :admin_route_prefix
4
+ attr_accessor :admin_route_redirect
5
+
6
+ @@overrides ||= {}
7
+ @@overriden_from ||= {}
8
+
9
+ # Configuration defaults
10
+ def initialize
11
+ @user_model = 'User'
12
+ @admin_route_prefix = 'admin'
13
+ @admin_route_redirect = "/#{@admin_route_prefix}/pages"
14
+ end
15
+
16
+ def overrides
17
+ @@overrides
18
+ end
19
+
20
+ def override *args
21
+ from = caller[0]
22
+ overrides = args.extract_options!
23
+ args.each { |arg| overrides[arg] = arg.to_sym }
24
+ overrides.each do | atreides_classname, host_concern_name |
25
+ unless atreides_classname.to_s.starts_with? 'Atreides::'
26
+ atreides_classname = "Atreides::#{atreides_classname}"
27
+ end
28
+ @@overrides[atreides_classname.to_sym] = [] if @@overrides[atreides_classname.to_sym].nil?
29
+ @@overrides[atreides_classname.to_sym] << host_concern_name
30
+ @@overriden_from[atreides_classname.to_sym] = from
31
+ end
32
+ end
33
+
34
+ def inject_overrides atreides_class
35
+ # Rails.logger.debug { "Injecting overrides in class #{atreides_class.inspect} !" }
36
+
37
+ modules = @@overrides[atreides_class.to_s.to_sym] || []
38
+
39
+ modules.uniq.each do |hostapp_module_name|
40
+ begin
41
+ host_module = hostapp_module_name.to_s.constantize
42
+ # puts "\t\tInjecting #{host_module} into #{atreides_class}"
43
+ atreides_class.instance_eval {
44
+ include host_module
45
+ }
46
+ rescue NameError => e
47
+ from = @overriden_from[atreides_class.to_s.to_sym] rescue "---"
48
+ puts <<-ERR
49
+ Atreides configuration error !
50
+ Following Atreides's configuration, here: #{from.inspect}
51
+
52
+ Atreides's' '#{atreides_class.to_s}' class should be overriden by a class named #{hostapp_module_name.inspect}.
53
+
54
+ This #{hostapp_module_name.inspect} class could not be loaded !
55
+
56
+ ERR
57
+ raise e
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,41 @@
1
+ require "rails"
2
+
3
+ module Atreides
4
+ class Engine < Rails::Engine
5
+ paths['db/migrate'] = 'db/migrate'
6
+ # paths['atreides/base'] = 'atreides/base'
7
+ paths['app/inputs'] = 'app/inputs'
8
+
9
+ # Since the database can't be set up when running the generators,
10
+ # we move the models path to autoload instead of eager_load.
11
+ # otherwise, we would get "could not find table 'xxxx'" exceptions.
12
+ config.eager_load_paths -= [ paths["app/models"].first ]
13
+ config.autoload_paths << paths["app/models"].first
14
+ config.autoload_paths += %W(#{Rails.root}/app/atreides/models)
15
+ config.eager_load_paths += [ paths["app/inputs"].first ]
16
+
17
+ # Force routes to be loaded if we are doing any eager load.
18
+ config.before_eager_load { |app| app.reload_routes! }
19
+
20
+ initializer :load_overrides do
21
+ filename = File.expand_path('config/initializers/overrides', Rails.root)
22
+ require filename if File.exists?(filename)
23
+ end
24
+
25
+ initializer "atreides.asset_pipeline" do |app|
26
+ app.config.assets.precompile += %w( atreides/admin_edit.js atreides/admin.js atreides/public.js atreides/admin.css atreides/public.css )
27
+ end
28
+
29
+ initializer 'atreides.formtastic.inputs' do
30
+ load_path = paths['app/inputs'].first
31
+ matcher = /\A#{Regexp.escape(load_path)}\/(.*)\.rb\Z/
32
+ Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
33
+ require_dependency file.sub(matcher, '\1')
34
+ end
35
+ end
36
+
37
+ rake_tasks do
38
+ load 'atreides/railties/tasks.rake'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,12 @@
1
+ module Atreides
2
+ module Extendable
3
+ extend ActiveSupport::Concern
4
+
5
+ included do |base|
6
+ base.class_exec {
7
+ public
8
+ Atreides.configuration.inject_overrides base
9
+ }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,65 @@
1
+ require 'unicode_utils'
2
+
3
+ module Atreides
4
+
5
+ # Implement a series of helpers to translate Atreides.
6
+ # These are injected into ActionView::Helpers::TranslationHelper
7
+ module I18nHelpers
8
+
9
+ def self.included(recipient)
10
+ recipient.class_eval do
11
+
12
+ def atreides_translate *args
13
+ options = args.extract_options!
14
+ scope_ = options.fetch(:scope, [])
15
+ # puts "ttt: #{args[0]}, scope_: #{scope_.inspect}"
16
+ if args[0].to_s.starts_with?('.') && scope_.include?('atreides')
17
+ # puts "already correctly scoped"
18
+ args << options
19
+ translate(*args)
20
+ else
21
+ # puts "re-scoping"
22
+ raise "NotImplemented" unless scope_.empty?
23
+ options[:scope] = 'atreides'
24
+ args << options
25
+ translate(*args)
26
+ end
27
+ end
28
+
29
+ def capitalize(str)
30
+ str.sub str.first, UnicodeUtils.upcase(str.first, I18n.locale)
31
+ end
32
+
33
+ def atreides_translate_capitalize(*args)
34
+ capitalize atreides_translate(*args)
35
+ end
36
+
37
+ def atreides_translate_titleize(*args)
38
+ if I18n.locale == :en
39
+ UnicodeUtils.titlecase atreides_translate(*args), I18n.locale
40
+ else
41
+ capitalize atreides_translate(*args)
42
+ end
43
+ end
44
+
45
+ alias :tt :atreides_translate
46
+ alias :ttc :atreides_translate_capitalize
47
+ alias :ttt :atreides_translate_titleize
48
+
49
+ if recipient.respond_to? :helper_method
50
+ helper_method :atreides_translate, :atreides_translate_capitalize, :atreides_translate_titleize
51
+ helper_method :tt, :ttc, :ttt
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ module ActionView
59
+ module Helpers
60
+ module TranslationHelper
61
+ unloadable
62
+ include Atreides::I18nHelpers
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,68 @@
1
+ module ActiveRecord
2
+ class Migration
3
+ class << self
4
+ def copy(destination, sources, options = {})
5
+ copied = []
6
+
7
+ FileUtils.mkdir_p(destination) unless File.exists?(destination)
8
+
9
+ destination_migrations = ActiveRecord::Migrator.migrations(destination)
10
+ last = destination_migrations.last
11
+ sources.each do |name, path|
12
+ source_migrations = ActiveRecord::Migrator.migrations(path)
13
+
14
+ source_migrations.each do |migration|
15
+ source = File.read(migration.filename)
16
+ source = "# This migration comes from #{name} (originally #{migration.version})\n#{source}"
17
+
18
+ if duplicate = destination_migrations.detect { |m| m.name == migration.name }
19
+ options[:on_skip].call(name, migration) if File.read(duplicate.filename) != source && options[:on_skip]
20
+ next
21
+ end
22
+
23
+ # migration.version = next_migration_number(last ? last.version + 1 : 0).to_i
24
+ new_path = File.join(destination, "#{migration.version}_#{migration.name.underscore}.rb")
25
+ old_path, migration.filename = migration.filename, new_path
26
+ last = migration
27
+
28
+ FileUtils.cp(old_path, migration.filename)
29
+ copied << migration
30
+ options[:on_copy].call(name, migration, old_path) if options[:on_copy]
31
+ destination_migrations << migration
32
+ end
33
+ end
34
+
35
+ copied
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ # class Hash
42
+ # def to_query
43
+ # result = []
44
+ # each do |k, v|
45
+ # result << "#{k}=#{v}"
46
+ # end
47
+ # result.join("&")
48
+ # end
49
+ # end
50
+
51
+ namespace :atreides do
52
+ namespace :install do
53
+ desc "Copy migrations from Atreides to application"
54
+ task :migrations => :"db:load_config" do
55
+
56
+ # Adapted from rails edge activerecord/lib/active_record/railties/databases.rake
57
+ on_skip = Proc.new do |name, migration|
58
+ puts "NOTE: Migration #{migration.name} from #{name} has been skipped. Migration with the same name already exists."
59
+ end
60
+
61
+ on_copy = Proc.new do |name, migration, old_path|
62
+ puts "Copied migration #{migration.name} from #{name}"
63
+ end
64
+
65
+ ActiveRecord::Migration.copy( 'db/migrate', { 'atreides' => Atreides::Engine.new.paths['db/migrate'].first }, :on_skip => on_skip, :on_copy => on_copy)
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,19 @@
1
+ Time::DATE_FORMATS[:default] = "%d %B %Y %I:%M %p"
2
+ Time::DATE_FORMATS[:month_and_year] = "%B %Y"
3
+ Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
4
+ Time::DATE_FORMATS[:month_and_day_ordinal] = "%d %b"
5
+ Time::DATE_FORMATS[:long_ordinal] = lambda { |time|
6
+ time.strftime("#{time.day.ordinalize}, %b %Y %I:%M %p (#{Time.zone.utc_offset==-18000 ? 'EST' : Time.zone.name})")
7
+ }
8
+ Time::DATE_FORMATS[:date_ordinal] = lambda { |time|
9
+ time.strftime("%d %b '%y")
10
+ }
11
+ Time::DATE_FORMATS[:long_date_ordinal] = lambda { |time|
12
+ time.strftime("%B #{time.day.ordinalize} %Y")
13
+ }
14
+ Time::DATE_FORMATS[:datetime_ordinal] = lambda { |time|
15
+ time.strftime("%d %b '%y %I:%M %p")
16
+ }
17
+ Time::DATE_FORMATS[:short_month_and_year] = "%b %Y"
18
+ Time::DATE_FORMATS[:month_and_day] = "%B %d"
19
+ Time::DATE_FORMATS[:day] = "%d"
@@ -0,0 +1,15 @@
1
+ # Custom validator checking for an email address
2
+ class EmailValidator < ActiveModel::EachValidator
3
+ def validate_each(record, attribute, value) #:nodoc:
4
+ record.errors[attribute] << (options[:message] || "is not an email") unless
5
+ value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
6
+ end
7
+ end
8
+
9
+ # Custom validator checking for an URL
10
+ class UrlValidator < ActiveModel::EachValidator
11
+ def validate_each(record, attribute, value) #:nodoc:
12
+ record.errors[attribute] << (options[:message] || "is not a url") unless
13
+ value =~ URI::regexp(%w(http https))
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ # Version string of the Atreides engine
2
+ module Atreides
3
+ VERSION = "2.0.4".freeze
4
+ end
File without changes
@@ -0,0 +1,57 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record/migration'
4
+
5
+ module Atreides
6
+ module Generators
7
+ class AtreidesGenerator < Rails::Generators::Base
8
+ namespace "atreides"
9
+ include Rails::Generators::Migration
10
+
11
+ def self.source_root
12
+ @source_root ||= File.join(File.dirname(__FILE__), '..', 'templates')
13
+ end
14
+
15
+ # Implement the required interface for Rails::Generators::Migration.
16
+ def self.next_migration_number(dirname)
17
+ next_migration_number = current_migration_number(dirname) + 1
18
+ if ActiveRecord::Base.timestamped_migrations
19
+ [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
20
+ else
21
+ "%.3d" % next_migration_number
22
+ end
23
+ end
24
+
25
+ def create_migration_file
26
+ generate('acts_as_taggable_on:migration')
27
+ generate('delayed_job:active_record')
28
+ generate('devise:install')
29
+
30
+ %w(create_videos create_photos create_orders create_posts
31
+ create_pages create_likes create_messages
32
+ create_features create_products create_line_items create_links
33
+ create_votes create_tweets create_sessions create_sites
34
+ create_content_parts add_userid_to_resources devise_create_users
35
+ add_role_to_users create_preferences).each do |f|
36
+ src = "#{f}.rb"
37
+ dst = "db/migrate/#{src}"
38
+ migration_template(src, dst) rescue puts $!
39
+ end
40
+ end
41
+
42
+ def create_configuration_file
43
+ copy_file 'initializer.rb', 'config/initializers/atreides.rb'
44
+ copy_file 'string_extensions.rb', 'config/initializers/string_extensions.rb'
45
+ copy_file 'new_relic.rb', 'config/initializers/new_relic.rb'
46
+ copy_file 'unicorn.rb', 'config/unicorn.rb'
47
+ copy_file 'settings.yml', 'config/settings.yml'
48
+ copy_file 'oembed.yml', 'config/oembed.yml'
49
+ copy_file 'delayed_job.rb', 'config/initializers/delayed_job.rb'
50
+ copy_file 'Procfile', 'Procfile'
51
+ gsub_file 'config/application.rb', 'config.active_record.whitelist_attributes = true', 'config.active_record.whitelist_attributes = false'
52
+ remove_file 'public/index.html'
53
+ remove_file 'assets/images/rails.png'
54
+ end
55
+ end
56
+ end
57
+ end