atreides 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. data/LICENSE +7 -0
  2. data/README.rdoc +1 -0
  3. data/app/assets/javascripts/atreides/admin.js +22 -0
  4. data/app/assets/javascripts/atreides/admin_base.js.erb +247 -0
  5. data/app/assets/javascripts/atreides/admin_edit.js +9 -0
  6. data/app/assets/javascripts/atreides/application.js +15 -0
  7. data/app/assets/javascripts/atreides/comments.coffee +50 -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 +1762 -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/comments_controller.rb +47 -0
  21. data/app/controllers/admin/atreides/content_parts_controller.rb +43 -0
  22. data/app/controllers/admin/atreides/dropbox_controller.rb +40 -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 +211 -0
  39. data/app/controllers/atreides/application_controller.rb +93 -0
  40. data/app/controllers/atreides/comments_controller.rb +43 -0
  41. data/app/controllers/atreides/home_controller.rb +71 -0
  42. data/app/controllers/atreides/likes_controller.rb +44 -0
  43. data/app/controllers/atreides/pages_controller.rb +34 -0
  44. data/app/controllers/atreides/posts_controller.rb +119 -0
  45. data/app/controllers/atreides/public_controller.rb +43 -0
  46. data/app/helpers/admin/atreides/comments_helper.rb +8 -0
  47. data/app/helpers/admin/atreides/dropbox_helper.rb +42 -0
  48. data/app/helpers/admin/atreides/features_helper.rb +4 -0
  49. data/app/helpers/admin/atreides/github_helper.rb +43 -0
  50. data/app/helpers/admin/atreides/links_helper.rb +4 -0
  51. data/app/helpers/admin/atreides/messages_helper.rb +4 -0
  52. data/app/helpers/admin/atreides/orders_helper.rb +30 -0
  53. data/app/helpers/admin/atreides/pages_helper.rb +17 -0
  54. data/app/helpers/admin/atreides/photos_helper.rb +14 -0
  55. data/app/helpers/admin/atreides/posts_helper.rb +41 -0
  56. data/app/helpers/admin/atreides/products_helper.rb +37 -0
  57. data/app/helpers/admin/atreides/sizes_helper.rb +4 -0
  58. data/app/helpers/admin/atreides/user_sessions_helper.rb +4 -0
  59. data/app/helpers/admin/atreides/users_helper.rb +8 -0
  60. data/app/helpers/admin/atreides/videos_helper.rb +4 -0
  61. data/app/helpers/atreides/admin_helper.rb +243 -0
  62. data/app/helpers/atreides/admin_home_helper.rb +4 -0
  63. data/app/helpers/atreides/application_helper.rb +210 -0
  64. data/app/helpers/atreides/home_helper.rb +4 -0
  65. data/app/helpers/atreides/posts_helper.rb +119 -0
  66. data/app/inputs/files_input.rb +13 -0
  67. data/app/inputs/price_input.rb +18 -0
  68. data/app/inputs/underline_input.rb +16 -0
  69. data/app/models/atreides/ability.rb +24 -0
  70. data/app/models/atreides/comment.rb +93 -0
  71. data/app/models/atreides/content_part.rb +107 -0
  72. data/app/models/atreides/feature.rb +90 -0
  73. data/app/models/atreides/github.rb +74 -0
  74. data/app/models/atreides/like.rb +35 -0
  75. data/app/models/atreides/line_item.rb +4 -0
  76. data/app/models/atreides/link.rb +32 -0
  77. data/app/models/atreides/message.rb +34 -0
  78. data/app/models/atreides/order.rb +209 -0
  79. data/app/models/atreides/page.rb +114 -0
  80. data/app/models/atreides/photo.rb +130 -0
  81. data/app/models/atreides/post.rb +271 -0
  82. data/app/models/atreides/product.rb +75 -0
  83. data/app/models/atreides/site.rb +59 -0
  84. data/app/models/atreides/size.rb +44 -0
  85. data/app/models/atreides/tag.rb +31 -0
  86. data/app/models/atreides/tweet.rb +123 -0
  87. data/app/models/atreides/user.rb +129 -0
  88. data/app/models/atreides/video.rb +206 -0
  89. data/app/models/atreides/vote.rb +43 -0
  90. data/app/models/fb_post_publisher_job.rb +72 -0
  91. data/app/models/settings.rb +19 -0
  92. data/app/models/tumblr_post_publisher_job.rb +75 -0
  93. data/app/models/tw_post_publisher_job.rb +54 -0
  94. data/app/views/admin/_edit_head_content.html.haml +2 -0
  95. data/app/views/admin/atreides/comments/_line.html.haml +60 -0
  96. data/app/views/admin/atreides/comments/_sidebar.html.haml +52 -0
  97. data/app/views/admin/atreides/comments/create.js.haml +1 -0
  98. data/app/views/admin/atreides/comments/index.html.haml +34 -0
  99. data/app/views/admin/atreides/content_parts/_form.html.haml +21 -0
  100. data/app/views/admin/atreides/content_parts/_photos.html.haml +18 -0
  101. data/app/views/admin/atreides/content_parts/_text.html.haml +1 -0
  102. data/app/views/admin/atreides/content_parts/_videos.html.haml +12 -0
  103. data/app/views/admin/atreides/content_parts/destroy.js.haml +3 -0
  104. data/app/views/admin/atreides/content_parts/edit.html.haml +0 -0
  105. data/app/views/admin/atreides/content_parts/new.html.haml +0 -0
  106. data/app/views/admin/atreides/content_parts/new.js.haml +11 -0
  107. data/app/views/admin/atreides/dropbox/_uploader.html.haml +134 -0
  108. data/app/views/admin/atreides/dropbox/list.html.haml +27 -0
  109. data/app/views/admin/atreides/dropbox/setup.html.haml +8 -0
  110. data/app/views/admin/atreides/features/_form.html.haml +60 -0
  111. data/app/views/admin/atreides/features/edit.html.haml +1 -0
  112. data/app/views/admin/atreides/features/index.html.haml +24 -0
  113. data/app/views/admin/atreides/features/new.html.haml +1 -0
  114. data/app/views/admin/atreides/github/index.html.haml +26 -0
  115. data/app/views/admin/atreides/github/show.html.haml +19 -0
  116. data/app/views/admin/atreides/likes/create.js.haml +2 -0
  117. data/app/views/admin/atreides/orders/_sidebar.html.haml +20 -0
  118. data/app/views/admin/atreides/orders/edit.html.haml +52 -0
  119. data/app/views/admin/atreides/orders/index.html.haml +8 -0
  120. data/app/views/admin/atreides/pages/_form.html.haml +31 -0
  121. data/app/views/admin/atreides/pages/edit.html.haml +3 -0
  122. data/app/views/admin/atreides/pages/index.html.haml +15 -0
  123. data/app/views/admin/atreides/pages/index.js.haml +4 -0
  124. data/app/views/admin/atreides/pages/new.html.haml +2 -0
  125. data/app/views/admin/atreides/photos/create.js.haml +18 -0
  126. data/app/views/admin/atreides/photos/destroy.js.haml +3 -0
  127. data/app/views/admin/atreides/posts/_archives.html.haml +19 -0
  128. data/app/views/admin/atreides/posts/_form.html.haml +66 -0
  129. data/app/views/admin/atreides/posts/_form_buttons.html.haml +9 -0
  130. data/app/views/admin/atreides/posts/_form_sidebar.html.haml +85 -0
  131. data/app/views/admin/atreides/posts/edit.html.haml +2 -0
  132. data/app/views/admin/atreides/posts/index.html.haml +24 -0
  133. data/app/views/admin/atreides/posts/index.js.haml +1 -0
  134. data/app/views/admin/atreides/posts/new.html.haml +2 -0
  135. data/app/views/admin/atreides/products/edit.html.haml +69 -0
  136. data/app/views/admin/atreides/products/index.html.haml +31 -0
  137. data/app/views/admin/atreides/sessions/new.html.haml +13 -0
  138. data/app/views/admin/atreides/user_sessions/new.html.haml +10 -0
  139. data/app/views/admin/atreides/users/_form.html.haml +19 -0
  140. data/app/views/admin/atreides/users/edit.html.haml +6 -0
  141. data/app/views/admin/atreides/users/index.html.haml +11 -0
  142. data/app/views/admin/atreides/users/new.html.haml +6 -0
  143. data/app/views/admin/atreides/users/show.html.haml +4 -0
  144. data/app/views/admin/atreides/videos/create.js.haml +9 -0
  145. data/app/views/admin/atreides/videos/destroy.js.haml +3 -0
  146. data/app/views/admin/common/_archive_sidebar.html.haml +29 -0
  147. data/app/views/admin/common/_list_table.html.erb +37 -0
  148. data/app/views/admin/common/_list_table_row.html.erb +18 -0
  149. data/app/views/admin/common/_pagination.html.erb +1 -0
  150. data/app/views/admin/common/_search_form.html.erb +6 -0
  151. data/app/views/admin/common/access_denied.html.haml +1 -0
  152. data/app/views/atreides/admin/_content_nav.html.haml +8 -0
  153. data/app/views/atreides/admin_home/_analytics.html.haml +93 -0
  154. data/app/views/atreides/admin_home/_fb_page_likes_analytics_tbody.haml +10 -0
  155. data/app/views/atreides/admin_home/_fb_page_views_analytics_tbody.haml +10 -0
  156. data/app/views/atreides/admin_home/_top_landing_pages_analytics_tbody.haml +14 -0
  157. data/app/views/atreides/admin_home/_top_referrers_analytics_tbody.haml +12 -0
  158. data/app/views/atreides/admin_home/_tweets_analytics_tbody.html.haml +8 -0
  159. data/app/views/atreides/admin_home/_visitors_analytics_tbody.html.haml +12 -0
  160. data/app/views/atreides/admin_home/index.html.haml +57 -0
  161. data/app/views/atreides/admin_home/search.html.haml +11 -0
  162. data/app/views/atreides/admin_home/setup.html.haml +15 -0
  163. data/app/views/atreides/common/_gallery_params.xml.erb +174 -0
  164. data/app/views/atreides/common/slideshow.xml.haml +6 -0
  165. data/app/views/atreides/errors/404.html.haml +10 -0
  166. data/app/views/atreides/errors/500.html.haml +4 -0
  167. data/app/views/atreides/home/index.html.haml +30 -0
  168. data/app/views/atreides/home/index.js.haml +1 -0
  169. data/app/views/atreides/home/robots.txt.erb +5 -0
  170. data/app/views/atreides/home/sitemap.xml.builder +35 -0
  171. data/app/views/atreides/pages/show.html.haml +3 -0
  172. data/app/views/atreides/posts/_archives.html.haml +19 -0
  173. data/app/views/atreides/posts/_featured_posts.html.haml +10 -0
  174. data/app/views/atreides/posts/_list.html.haml +9 -0
  175. data/app/views/atreides/posts/archives.html.haml +3 -0
  176. data/app/views/atreides/posts/archives.js.haml +1 -0
  177. data/app/views/atreides/posts/gallery_params.xml.haml +1 -0
  178. data/app/views/atreides/posts/index.atom.builder +22 -0
  179. data/app/views/atreides/posts/index.html.haml +13 -0
  180. data/app/views/atreides/posts/index.rss.builder +21 -0
  181. data/app/views/atreides/posts/show.html.haml +23 -0
  182. data/app/views/atreides/posts/tagged.html.haml +4 -0
  183. data/app/views/atreides/posts/tagged.js.haml +1 -0
  184. data/app/views/layouts/admin.html.haml +62 -0
  185. data/app/views/layouts/application.html.haml +37 -0
  186. data/app/views/layouts/atreides/application.html.erb +14 -0
  187. data/app/views/layouts/public.html.haml +39 -0
  188. data/config/cucumber.yml +11 -0
  189. data/config/locales/en.yml +236 -0
  190. data/config/locales/fr.yml +199 -0
  191. data/config/routes.rb +119 -0
  192. data/lib/assets/images/atreides/admin/add.png +0 -0
  193. data/lib/assets/images/atreides/admin/add_btn.png +0 -0
  194. data/lib/assets/images/atreides/admin/add_dashboard.png +0 -0
  195. data/lib/assets/images/atreides/admin/add_photo_button_sprite.png +0 -0
  196. data/lib/assets/images/atreides/admin/add_photos_btn.png +0 -0
  197. data/lib/assets/images/atreides/admin/background.png +0 -0
  198. data/lib/assets/images/atreides/admin/calendar.png +0 -0
  199. data/lib/assets/images/atreides/admin/chevron.gif +0 -0
  200. data/lib/assets/images/atreides/admin/chevron_overlay.png +0 -0
  201. data/lib/assets/images/atreides/admin/choose_photos_button_sprite.png +0 -0
  202. data/lib/assets/images/atreides/admin/content_bg.png +0 -0
  203. data/lib/assets/images/atreides/admin/content_bg_edit_form.png +0 -0
  204. data/lib/assets/images/atreides/admin/content_part_break.png +0 -0
  205. data/lib/assets/images/atreides/admin/content_part_drop_target.png +0 -0
  206. data/lib/assets/images/atreides/admin/content_part_icons.png +0 -0
  207. data/lib/assets/images/atreides/admin/content_part_photos.png +0 -0
  208. data/lib/assets/images/atreides/admin/content_part_text.png +0 -0
  209. data/lib/assets/images/atreides/admin/content_part_videos.png +0 -0
  210. data/lib/assets/images/atreides/admin/content_top_edit_form.png +0 -0
  211. data/lib/assets/images/atreides/admin/dashboard-indicator.gif +0 -0
  212. data/lib/assets/images/atreides/admin/dashboard_controls_activity.png +0 -0
  213. data/lib/assets/images/atreides/admin/dashboard_controls_customize.png +0 -0
  214. data/lib/assets/images/atreides/admin/dashboard_controls_drafts.png +0 -0
  215. data/lib/assets/images/atreides/admin/dashboard_controls_open.png +0 -0
  216. data/lib/assets/images/atreides/admin/dashboard_controls_posts.png +0 -0
  217. data/lib/assets/images/atreides/admin/dashboard_controls_queue.png +0 -0
  218. data/lib/assets/images/atreides/admin/dashboard_nav_border.png +0 -0
  219. data/lib/assets/images/atreides/admin/delete_bg.png +0 -0
  220. data/lib/assets/images/atreides/admin/down_arrow.png +0 -0
  221. data/lib/assets/images/atreides/admin/dropbox_big.jpg +0 -0
  222. data/lib/assets/images/atreides/admin/dropbox_btn.png +0 -0
  223. data/lib/assets/images/atreides/admin/dropbox_folder.png +0 -0
  224. data/lib/assets/images/atreides/admin/dropbox_icon.gif +0 -0
  225. data/lib/assets/images/atreides/admin/dropbox_icon.png +0 -0
  226. data/lib/assets/images/atreides/admin/expand_collapse.png +0 -0
  227. data/lib/assets/images/atreides/admin/form_sidebar_divider.png +0 -0
  228. data/lib/assets/images/atreides/admin/grey_hatch_bg.png +0 -0
  229. data/lib/assets/images/atreides/admin/header.png +0 -0
  230. data/lib/assets/images/atreides/admin/icon_dropbox.gif +0 -0
  231. data/lib/assets/images/atreides/admin/icon_home.gif +0 -0
  232. data/lib/assets/images/atreides/admin/input_bg.gif +0 -0
  233. data/lib/assets/images/atreides/admin/large_loading.gif +0 -0
  234. data/lib/assets/images/atreides/admin/new_content_icons.png +0 -0
  235. data/lib/assets/images/atreides/admin/off.png +0 -0
  236. data/lib/assets/images/atreides/admin/on.png +0 -0
  237. data/lib/assets/images/atreides/admin/page_icon.png +0 -0
  238. data/lib/assets/images/atreides/admin/permalink.png +0 -0
  239. data/lib/assets/images/atreides/admin/photos-display-type-gallery.png +0 -0
  240. data/lib/assets/images/atreides/admin/photos-display-type-photos.png +0 -0
  241. data/lib/assets/images/atreides/admin/product.png +0 -0
  242. data/lib/assets/images/atreides/admin/remove.png +0 -0
  243. data/lib/assets/images/atreides/admin/resize.png +0 -0
  244. data/lib/assets/images/atreides/admin/save_btn.png +0 -0
  245. data/lib/assets/images/atreides/admin/search_icon.png +0 -0
  246. data/lib/assets/images/atreides/admin/select_arrows.png +0 -0
  247. data/lib/assets/images/atreides/admin/slider.png +0 -0
  248. data/lib/assets/images/atreides/admin/slider_center.png +0 -0
  249. data/lib/assets/images/atreides/admin/slider_left.png +0 -0
  250. data/lib/assets/images/atreides/admin/slider_right.png +0 -0
  251. data/lib/assets/images/atreides/admin/sprite.png +0 -0
  252. data/lib/assets/images/atreides/admin/upload_btn.png +0 -0
  253. data/lib/assets/images/atreides/admin/video_bg.png +0 -0
  254. data/lib/assets/images/atreides/blank.gif +0 -0
  255. data/lib/assets/images/atreides/closelabel.png +0 -0
  256. data/lib/assets/images/atreides/loading.gif +0 -0
  257. data/lib/assets/images/atreides/sprite.png +0 -0
  258. data/lib/assets/images/atreides/tipsy.gif +0 -0
  259. data/lib/atreides.rb +82 -0
  260. data/lib/atreides/base/aasmstates.rb +117 -0
  261. data/lib/atreides/base/base.rb +40 -0
  262. data/lib/atreides/base/taggable.rb +43 -0
  263. data/lib/atreides/base/validation.rb +23 -0
  264. data/lib/atreides/configuration.rb +61 -0
  265. data/lib/atreides/engine.rb +41 -0
  266. data/lib/atreides/extendable.rb +12 -0
  267. data/lib/atreides/i18n_helpers.rb +65 -0
  268. data/lib/atreides/railties/tasks.rake +68 -0
  269. data/lib/atreides/time_formats.rb +19 -0
  270. data/lib/atreides/validators.rb +15 -0
  271. data/lib/atreides/version.rb +4 -0
  272. data/lib/generators/atreides/USAGE +0 -0
  273. data/lib/generators/atreides/atreides_generator.rb +58 -0
  274. data/lib/generators/templates/Procfile +2 -0
  275. data/lib/generators/templates/add_role_to_users.rb +16 -0
  276. data/lib/generators/templates/add_userid_to_resources.rb +15 -0
  277. data/lib/generators/templates/create_comments.rb +19 -0
  278. data/lib/generators/templates/create_content_parts.rb +66 -0
  279. data/lib/generators/templates/create_features.rb +21 -0
  280. data/lib/generators/templates/create_likes.rb +16 -0
  281. data/lib/generators/templates/create_line_items.rb +21 -0
  282. data/lib/generators/templates/create_links.rb +16 -0
  283. data/lib/generators/templates/create_messages.rb +24 -0
  284. data/lib/generators/templates/create_orders.rb +31 -0
  285. data/lib/generators/templates/create_pages.rb +31 -0
  286. data/lib/generators/templates/create_photos.rb +22 -0
  287. data/lib/generators/templates/create_posts.rb +38 -0
  288. data/lib/generators/templates/create_products.rb +24 -0
  289. data/lib/generators/templates/create_sessions.rb +16 -0
  290. data/lib/generators/templates/create_sites.rb +35 -0
  291. data/lib/generators/templates/create_sizes.rb +16 -0
  292. data/lib/generators/templates/create_tweets.rb +25 -0
  293. data/lib/generators/templates/create_videos.rb +24 -0
  294. data/lib/generators/templates/create_votes.rb +20 -0
  295. data/lib/generators/templates/delayed_job.rb +5 -0
  296. data/lib/generators/templates/devise_create_users.rb +42 -0
  297. data/lib/generators/templates/disqussion.rb +30 -0
  298. data/lib/generators/templates/em-net-http_override.rb +74 -0
  299. data/lib/generators/templates/initializer.rb +21 -0
  300. data/lib/generators/templates/new_relic.rb +6 -0
  301. data/lib/generators/templates/oembed.yml +63 -0
  302. data/lib/generators/templates/settings.yml +110 -0
  303. data/lib/generators/templates/string_extensions.rb +20 -0
  304. data/lib/generators/templates/unicorn.rb +2 -0
  305. data/lib/tasks/atreides_tasks.rake +4 -0
  306. data/lib/tasks/cucumber.rake +58 -0
  307. data/lib/tasks/tasks.rake +403 -0
  308. data/lib/tasks/yard.rake +18 -0
  309. metadata +1458 -0
@@ -0,0 +1,43 @@
1
+ class Admin::Atreides::ContentPartsController < Atreides::AdminController
2
+ helper 'admin/atreides/dropbox'
3
+ helper 'admin/atreides/posts'
4
+
5
+ def new
6
+ if Atreides::ContentPart.content_types.include?(params[:content_type])
7
+ resource.content_type = params[:content_type]
8
+ end
9
+ super do |wants|
10
+ wants.js
11
+ end
12
+ end
13
+
14
+ def reorder
15
+ if params[:parts_list].is_a?(Array)
16
+ i = 0
17
+ params[:parts_list].each do |id|
18
+ Atreides::ContentPart.update_all({:display_order => (i+=1)}, {:id => id})
19
+ end
20
+ render :nothing => true, :status => :ok
21
+ else
22
+ render :nothing => true, :status => :error
23
+ end
24
+ end
25
+
26
+ def destroy
27
+ super do |wants|
28
+ wants.html { head :ok }
29
+ wants.xml { head :ok }
30
+ wants.json { head :ok }
31
+ wants.js
32
+ end
33
+ end
34
+
35
+
36
+ private
37
+
38
+ def collection
39
+ @collection ||= post.parts.all
40
+ end
41
+
42
+ include Atreides::Extendable
43
+ end
@@ -0,0 +1,40 @@
1
+ class Admin::Atreides::DropboxController < Atreides::ApplicationController
2
+ layout 'admin', :except => :list
3
+ include Admin::Atreides::DropboxHelper
4
+
5
+ rescue_from CanCan::AccessDenied do |exception|
6
+ Rails.logger.info "AdminHomeController: CanCan::AccessDenied #{exception.inspect}, admin?: #{current_user && !current_user.admin?}; #{current_user.inspect}"
7
+ if current_user && !current_user.admin?
8
+ @message = exception.message
9
+ render 'admin/common/access_denied'
10
+ else
11
+ redirect_to new_user_session_path, :notice => exception.message
12
+ end
13
+ end
14
+
15
+ def unlink
16
+ session[:dropbox_session] = nil
17
+ redirect_to(request.referer.gsub(/\?.+/,"?add_content[]=photos"))
18
+ end
19
+
20
+ def list
21
+ @dropbox_path = request[:path] || '/'
22
+ ls = dropbox_client.metadata(@dropbox_path)['contents']
23
+ @dirs = ls.select { |item| item['is_dir'] }
24
+ @imgs = ls.select { |item| !item['is_dir'] && item['mime_type'] =~ /image/ }
25
+ @imgs = @imgs.delete_if { |item| ['image/x-icon', 'image/x-photoshop'].include? item['mime_type'] }
26
+ end
27
+
28
+ def thumb
29
+ @path = request[:path]
30
+ headers['Content-Type'] = 'image/jpeg'
31
+ self.response_body = dropbox_client.thumbnail(URI.escape(@path))
32
+ end
33
+
34
+ private
35
+
36
+ def authorized?
37
+ dropbox_session.authorized?
38
+ end
39
+
40
+ end
@@ -0,0 +1,63 @@
1
+ class Admin::Atreides::FeaturesController < Atreides::AdminController
2
+
3
+ helper 'admin/atreides/features'
4
+
5
+ def index
6
+ @show_as_dash = true
7
+ @collection = {}
8
+ Settings.tags.posts.features.map do |tag|
9
+ @collection[tag] = end_of_association_chain.live.tagged_with(tag)
10
+ end
11
+ end
12
+
13
+ def new
14
+ # Create feature!
15
+ @feature = end_of_association_chain.new(:state => "pending", :published_at => nil)
16
+ @feature.save!
17
+ super
18
+ end
19
+
20
+ def show
21
+ super do |wants|
22
+ wants.html { redirect_to edit_admin_feature_path(resource) }
23
+ end
24
+ end
25
+
26
+ def create
27
+ super do |wants|
28
+ wants.html { redirect_to admin_features_path }
29
+ end
30
+ end
31
+
32
+ def update
33
+ super do |success, failure|
34
+ success.html { redirect_to admin_features_path }
35
+ end
36
+ end
37
+
38
+ def reorder
39
+ key = params.keys.detect{|k| k.to_s.starts_with?('feature') }
40
+ if params[key].is_a?(Array)
41
+ i = 0
42
+ params[key].each do |id|
43
+ end_of_association_chain.update_all({:display_order => (i+=1)}, {:id => id})
44
+ end
45
+ render :nothing => true, :status => :ok
46
+ else
47
+ render :nothing => true, :status => :error
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def end_of_association_chain
54
+ current_site.features
55
+ end
56
+
57
+ def recource
58
+ @feature ||= super
59
+ end
60
+
61
+
62
+ include Atreides::Extendable
63
+ end
@@ -0,0 +1,35 @@
1
+ class Admin::Atreides::GithubController < Atreides::AdminController
2
+
3
+ skip_before_filter :collection
4
+ skip_before_filter :object
5
+
6
+ def index
7
+ @show_as_dash = true
8
+ @issues = Atreides::Github.all(:state => params[:state] || "open")
9
+ super do |wants|
10
+ wants.html
11
+ wants.js
12
+ end
13
+ end
14
+
15
+ def show
16
+ @issue = Atreides::Github.find(params[:id])
17
+ @comments = @issue.comments
18
+ super do |wants|
19
+ wants.html
20
+ wants.js
21
+ end
22
+ end
23
+
24
+ def connect
25
+ redirect_to(Atreides::Github.authorize_url)
26
+ end
27
+
28
+ def callback
29
+ render :text => Atreides::Github.get_token(params[:code]).inspect
30
+ rescue OAuth2::Error => e
31
+ render :text => e.response.inspect
32
+ end
33
+
34
+
35
+ end
@@ -0,0 +1,3 @@
1
+ class Admin::Atreides::LinksController < Atreides::AdminController
2
+ include Atreides::Extendable
3
+ end
@@ -0,0 +1,3 @@
1
+ class Admin::Atreides::MessagesController < Atreides::AdminController
2
+ include Atreides::Extendable
3
+ end
@@ -0,0 +1,35 @@
1
+ class Admin::Atreides::OrdersController < Atreides::AdminController
2
+ helper 'atreides/admin', 'admin/atreides/orders'
3
+ before_filter :find_by_month, :only => [:filter]
4
+
5
+ def show
6
+ super do |wants|
7
+ wants.html { redirect_to edit_admin_order_path(resource) }
8
+ end
9
+ end
10
+
11
+ def filter
12
+ respond_to do |wants|
13
+ wants.html { render "index" }
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def collection
20
+ conditions = ""
21
+ unless params[:search].blank?
22
+ search_str = "%#{params[:search].downcase}%"
23
+ fields = %w(first_name last_name zip country city province)
24
+ search_sql = fields.map {|f| "LOWER(#{f}) like ?" }.join(' OR ')
25
+ conditions = [search_sql] + fields.size.times.map{|i| search_str }
26
+ end
27
+ @orders ||= end_of_association_chain.all(:conditions => conditions, :order => "created_at desc").paginate(:page => params[:page])
28
+ end
29
+
30
+ def find_by_month
31
+ @orders = end_of_association_chain.by_month(@date.month).by_year(@date.year).paginate(:page => params[:page])
32
+ end
33
+
34
+ include Atreides::Extendable
35
+ end
@@ -0,0 +1,59 @@
1
+ class Admin::Atreides::PagesController < Atreides::AdminController
2
+
3
+ def index
4
+ @list_cols = %w(page state)
5
+ @action_cols = %w(add_child)
6
+ super do |wants|
7
+ wants.html
8
+ wants.js
9
+ end
10
+ end
11
+
12
+ def show
13
+ super do |wants|
14
+ wants.html { redirect_to admin_pages_path }
15
+ end
16
+ end
17
+
18
+ def new
19
+ resource.parent_id = params[:parent_id].to_i if params[:parent_id]
20
+ super
21
+ end
22
+
23
+ def create
24
+ resource.author = current_user
25
+ resource.last_editor = current_user
26
+ super do |success, failure|
27
+ success.html { redirect_to admin_pages_path }
28
+ end
29
+ end
30
+
31
+ def update
32
+ resource.last_editor = current_user
33
+ super do |success, failure|
34
+ success.html { redirect_to admin_pages_path }
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def resource
41
+ @page ||= end_of_association_chain.find_by_slug(params[:id]) ||
42
+ end_of_association_chain.find_by_id(params[:id])
43
+ end
44
+
45
+ def collection
46
+ order = "pages.created_at desc"
47
+ @pages ||= if params[:parent_id]
48
+ end_of_association_chain.by_state(params[:state] || 'published').where(:parent_id => params[:parent_id]).order(order)
49
+ else
50
+ end_of_association_chain.roots.by_state(params[:state] || 'published').order(order)
51
+ end
52
+ end
53
+
54
+ def end_of_association_chain
55
+ current_site.pages
56
+ end
57
+
58
+ include Atreides::Extendable
59
+ end
@@ -0,0 +1,79 @@
1
+ class Admin::Atreides::PhotosController < Atreides::AdminController
2
+
3
+ helper 'admin/atreides/dropbox'
4
+ include Admin::Atreides::DropboxHelper
5
+ skip_before_filter :verify_authenticity_token, :only => [:create]
6
+
7
+ respond_to :html, :js
8
+
9
+ def create
10
+ if params[:dropbox_path]
11
+ puts "Downloading from dropbox..."
12
+ start = Time.now
13
+ data = dropbox_client.get_file(params[:dropbox_path])
14
+ puts "Downloaded in #{Time.now - start}..."
15
+ filename = File.basename params[:dropbox_path]
16
+ puts "Filename: #{filename}"
17
+ else
18
+ # Flash photo upload
19
+ data = request.body.read
20
+ filename = params[:qqfile]
21
+ end
22
+
23
+ extension = File.extname(filename)
24
+ basename = File.basename(filename, extension)
25
+ tempfile = Tempfile.new([basename, extension], :encoding => data.encoding)
26
+ tempfile.write(data)
27
+ tempfile.rewind
28
+
29
+ @photo = end_of_association_chain.new
30
+ @photo.image = tempfile
31
+
32
+ # Features belong to the photo and not the otherway
33
+ if photoable && photoable.is_a?(Atreides::Feature)
34
+ feature = photoable
35
+
36
+ # Delete any others photos unless they belong to posts
37
+ feature.photo.destroy if feature.photo and feature.photo.photoable.nil?
38
+
39
+ @photo.features << feature
40
+ else
41
+ @photo.photoable = photoable
42
+ end
43
+
44
+ super do |success, failure|
45
+ success.json { render @photo.to_json }
46
+ success.js { render :template => "admin/atreides/photos/create.js.haml", :layout => false, :status => :ok }
47
+ success.html { render :template => "admin/atreides/photos/create.js.haml", :layout => false, :status => :ok }
48
+ failure.json { render @photo.errors.to_json }
49
+ failure.js { render :text => @photo.errors.full_messages.to_sentence }
50
+ failure.html { render :text => @photo.errors.full_messages.to_sentence }
51
+ end
52
+ end
53
+
54
+ def reorder
55
+ if params[:photos_list].is_a?(Array)
56
+ i = 0
57
+ params[:photos_list].each do |id|
58
+ Atreides::Photo.update_all({:display_order => (i+=1)}, {:id => id})
59
+ end
60
+ render :nothing => true, :status => :ok
61
+ else
62
+ render :nothing => true, :status => :error
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def photoable
69
+ @photoable ||= if params[:content_part_id] || params[:part_id]
70
+ Atreides::ContentPart.find_by_id((params[:content_part_id] || params[:part_id]).to_i) ||
71
+ Atreides::ContentPart.new(:content_type => 'photos', :photos => [resource])
72
+ elsif params[:feature_id]
73
+ current_site.features.find_by_id(params[:feature_id].to_i) ||
74
+ current_site.features.new
75
+ end
76
+ end
77
+
78
+ include Atreides::Extendable
79
+ end
@@ -0,0 +1,109 @@
1
+ class Admin::Atreides::PostsController < Atreides::AdminController
2
+ helper 'admin/atreides/dropbox'
3
+
4
+ def index
5
+ show_as_dash
6
+ super do |wants|
7
+ wants.html { render :template => "admin/atreides/posts/index" }
8
+ wants.js
9
+ end
10
+ end
11
+
12
+ def new
13
+ # In case we refer with additional types requested
14
+ if params.key?(:add_content)
15
+ params[:add_content].each do |type|
16
+ if Atreides::ContentPart.content_types.include?(type)
17
+ resource.parts.build(:content_type => type)
18
+ end
19
+ end
20
+ end
21
+
22
+ if Atreides::ContentPart.content_types.include?(params[:type])
23
+ resource.parts.build(:content_type => params[:type])
24
+ end
25
+ super
26
+ end
27
+
28
+ def edit
29
+ super do |wants|
30
+ wants.html { render :template => "admin/atreides/posts/edit" }
31
+ end
32
+ end
33
+
34
+ def create
35
+ resource.author = current_user
36
+ resource.last_editor = current_user
37
+ super do |success, failure|
38
+ success.html { redirect_to admin_posts_path }
39
+ failure.html { render :template => "admin/atreides/posts/edit" }
40
+ end
41
+ end
42
+
43
+ def update
44
+ resource.last_editor = current_user
45
+ super do |success, failure|
46
+ success.html {
47
+ if params[:post] and params[:post][:state] == "publish_now"
48
+ flash[:notice] += " <b>Your post is now live!</b>"
49
+ end
50
+ redirect_to admin_posts_path
51
+ }
52
+ end
53
+ end
54
+
55
+ def show
56
+ super do |wants|
57
+ wants.html { redirect_to edit_admin_post_path resource }
58
+ end
59
+ end
60
+
61
+ def destroy
62
+ super do |wants|
63
+ wants.html { redirect_to admin_posts_path }
64
+ end
65
+ end
66
+
67
+ private
68
+
69
+ def show_as_dash
70
+ @show_as_dash ||= true
71
+ end
72
+
73
+ def resource
74
+ @post ||= end_of_association_chain.find_by_slug(params[:id]) ||
75
+ end_of_association_chain.find_by_id(params[:id])
76
+ end
77
+
78
+ def end_of_association_chain
79
+ current_site.posts
80
+ end
81
+
82
+ def collection
83
+ @posts ||= begin
84
+ scope = end_of_association_chain.scoped
85
+ scope = case params[:state]
86
+ when "drafted"
87
+ col = :updated_at
88
+ scope.drafted
89
+ else
90
+ col = :published_at
91
+ scope.published
92
+ end
93
+ if params[:month] and params[:year]
94
+ @date = Date.parse("#{params[:year]}-#{params[:month]}-1")
95
+ scope = scope.for_month @date, col
96
+ end
97
+
98
+ scope.order("#{col} desc, created_at desc")
99
+
100
+ if params[:state] == "drafted"
101
+ scope.all
102
+ else
103
+ scope.paginate(:page => (params[:page] || 1))
104
+ end
105
+ end
106
+ end
107
+
108
+ include Atreides::Extendable
109
+ end