benmanns-atreides 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
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,4 @@
1
+ module Admin::Atreides::FeaturesHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,43 @@
1
+ require 'digest/md5'
2
+
3
+ require 'redcarpet'
4
+
5
+ module Admin::Atreides::GithubHelper
6
+
7
+ GH_OPTIONS = {
8
+ :filter_html => true,
9
+ :autolink => true,
10
+ :no_intra_emphasis => true,
11
+ :fenced_code_blocks => true,
12
+ :hard_wrap => true
13
+ }
14
+
15
+ def gfm(text)
16
+ # Extract pre blocks
17
+ extractions = {}
18
+ text.gsub!(%r{<pre>.*?</pre>}m) do |match|
19
+ md5 = Digest::MD5.hexdigest(match)
20
+ extractions[md5] = match
21
+ "{gfm-extraction-#{md5}}"
22
+ end
23
+
24
+ # prevent foo_bar_baz from ending up with an italic word in the middle
25
+ text.gsub!(/(^(?! {4}|\t)\w+_\w+_\w[\w_]*)/) do |x|
26
+ x.gsub('_', '\_') if x.split('').sort.to_s[0..1] == '__'
27
+ end
28
+
29
+ # in very clear cases, let newlines become <br /> tags
30
+ text.gsub!(/(\A|^$\n)(^\w[^\n]*\n)(^\w[^\n]*$)+/m) do |x|
31
+ x.gsub(/^(.+)$/, "\\1 ")
32
+ end
33
+
34
+ # Insert pre block extractions
35
+ text.gsub!(/\{gfm-extraction-([0-9a-f]{32})\}/) do
36
+ extractions[$1]
37
+ end
38
+
39
+ markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(GH_OPTIONS), GH_OPTIONS)
40
+ markdown.render(text)
41
+ end
42
+
43
+ end
@@ -0,0 +1,4 @@
1
+ module Admin::Atreides::LinksHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,4 @@
1
+ module Admin::Atreides::MessagesHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,30 @@
1
+ module Admin::Atreides::OrdersHelper
2
+
3
+ def order_column(order)
4
+ link_to order.number, admin_order_path(order)
5
+ end
6
+
7
+ def date_column(order)
8
+ order.created_at
9
+ end
10
+
11
+ def buyer_column(order)
12
+ content_tag(:div, content_tag(:abbr, order.full_name, :title => order.address), :class => "order-name")
13
+ end
14
+
15
+ def items_column(order)
16
+ order.line_items.map{|li|
17
+ photo = li.product.photos.first
18
+ link_to(
19
+ image_tag(photo ? photo.image.url(:thumb) : "atreides/admin/product.png", :size => "50x50"), admin_product_path(li.product),
20
+ :title => "#{li.product.title} - #{li.size} x #{li.qty}"
21
+ )
22
+ }.join
23
+ end
24
+
25
+ def total_column(order)
26
+ order.final_amount.format
27
+ end
28
+
29
+ include Atreides::Extendable
30
+ end
@@ -0,0 +1,17 @@
1
+ module Admin::Atreides::PagesHelper
2
+
3
+ def page_column(page)
4
+ content_tag(:span, (page.children.empty? ? '&nbsp;' : link_to("", admin_pages_path(:parent_id => page.id, :format => "js"), :remote => true, :method => :get)), {:class => 'collapsed', :style => "margin-left:#{page.parents.size*17}px"}, false) +
5
+ link_to(image_tag('atreides/admin/page_icon.png', :class => "page_icon")+page.title, edit_admin_page_path(page))
6
+ end
7
+
8
+ def state_column(page)
9
+ page.state.titleize
10
+ end
11
+
12
+ def add_child_link(page)
13
+ link_to 'Add Child', new_admin_page_path(:parent_id => page.id)
14
+ end
15
+
16
+ include Atreides::Extendable
17
+ end
@@ -0,0 +1,14 @@
1
+ module Admin::Atreides::PhotosHelper
2
+
3
+ include Atreides::Extendable
4
+
5
+ def photos_uploaders(part, photos_list_id, resource_type, part_uid)
6
+ if Settings.dropbox.key && Settings.dropbox.secret
7
+ render(:partial => 'admin/atreides/dropbox/uploader', :locals => { :part_id => (part.id || '-'), :list_id => photos_list_id }) +
8
+ content_tag('span', 'or', :class => 'or') +
9
+ multi_file_uploader(:url => send("admin_#{resource_type.to_s}_part_photos_path", :"#{resource_type.to_s}_id" => (part.contentable_id || '-'), :part_id => (part.id || '-'), :format => :js, :list_id => photos_list_id), :css_parent_class => "photos-upload", :dom_id => "multi_file_uploader_#{part_uid}")
10
+ else
11
+ multi_file_uploader(:url => send("admin_#{resource_type.to_s}_part_photos_path", :"#{resource_type.to_s}_id" => (part.contentable_id || '-'), :part_id => (part.id || '-'), :format => :js, :list_id => photos_list_id), :css_parent_class => "photos-upload", :dom_id => "multi_file_uploader_#{part_uid}")
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,41 @@
1
+ module Admin::Atreides::PostsHelper
2
+
3
+ def error_messages_for_post
4
+ error_messages_for :post,
5
+ :header_message => ttt(:validation_error_header, :model => @type.to_s),
6
+ :message => ttt(:validation_error_message)
7
+ end
8
+
9
+ def edit_videos_for_assoc(resource, list_id = "videos_list", resource_type="post")
10
+ if resource and resource.respond_to?(:videos)
11
+ content_tag(:div, :id => "#{list_id}_container", :class => "videos-list media-list") do
12
+ content_tag(:ul, :id => list_id) do
13
+ resource.videos.map do |video|
14
+ video_for_assoc(video, list_id, resource_type)
15
+ end.join.html_safe
16
+ end +
17
+ sortable_element(list_id, :axis => "x")
18
+ end
19
+ end
20
+ end
21
+
22
+ def video_for_assoc(video, list_id, resource_type="post")
23
+ # Each video
24
+ width = 186
25
+ height = 124
26
+ embed = video.embedable?
27
+ content_tag(:li, :id => video.dom_id(list_id)) do
28
+ hidden_field_tag("#{resource_type}[parts_attributes][0][video_ids][]", video.id) +
29
+ if video.new_record?
30
+ link_to_function image_tag("atreides/admin/remove.png"), "$('##{video.dom_id(list_id)}').fadeOut(function(){ $(this).remove() })"
31
+ else
32
+ link_to(image_tag("atreides/admin/remove.png"), admin_video_path(video, :format => :js, :list_id => list_id), :remote => true, :'data-method' => :delete, :confirm => "Are you sure?")
33
+ end +
34
+ content_tag(:div, video.embed(:width => width, :height => height).html_safe, :id => video.dom_id) +
35
+ text_area_tag("#{resource_type}[parts_attributes][0][videos_attributes][][caption]", video.caption) +
36
+ hidden_field_tag("#{resource_type}[parts_attributes][0][videos_attributes][][id]", video.id)
37
+ end
38
+ end
39
+
40
+ include Atreides::Extendable
41
+ end
@@ -0,0 +1,37 @@
1
+ module Admin::Atreides::ProductsHelper
2
+
3
+ def image_column(product)
4
+ !product.photos.empty? ? image_tag(product.photos.first.image.url(:thumb)) : ""
5
+ end
6
+
7
+ def product_column(product)
8
+ link_to product.title, edit_admin_product_path(product)
9
+ end
10
+
11
+ def inventory_column(product)
12
+ content_tag(:table) do
13
+ content_tag(:thead) do
14
+ content_tag(:th, "Size") +
15
+ content_tag(:th, "Qty")
16
+ end +
17
+ content_tag(:tbody) do
18
+ product.sizes.map do |s|
19
+ content_tag(:tr) do
20
+ content_tag(:td, s.name) +
21
+ content_tag(:td, s.qty)
22
+ end
23
+ end.join
24
+ end
25
+ end
26
+ end
27
+
28
+ def total_column(product)
29
+ product.sizes.sum(:qty)
30
+ end
31
+
32
+ def sales_column(product)
33
+ Money.new(product.orders.sum(:final_amount_cents)).format
34
+ end
35
+
36
+ include Atreides::Extendable
37
+ end
@@ -0,0 +1,4 @@
1
+ module Admin::Atreides::SizesHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,4 @@
1
+ module Admin::Atreides::UserSessionsHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,8 @@
1
+ module Admin::Atreides::UsersHelper
2
+
3
+ def name_column(user)
4
+ link_to user.full_name, admin_user_path(user)
5
+ end
6
+
7
+ include Atreides::Extendable
8
+ end
@@ -0,0 +1,4 @@
1
+ module Admin::Atreides::VideosHelper
2
+
3
+ include Atreides::Extendable
4
+ end
@@ -0,0 +1,243 @@
1
+ module Atreides::AdminHelper
2
+
3
+ def multi_file_uploader(opts = {})
4
+ opts.reverse_merge!({
5
+ :file_upload_limit => 50,
6
+ :file_queue_limit => 0,
7
+ :dom_id => "multi_file_uploader_#{Time.now.to_f.to_s.parameterize('_')}",
8
+ :resource_type => "post"
9
+ })
10
+
11
+ url = opts[:url]
12
+ css_parent_class = opts[:css_parent_class]
13
+ dom_id = opts[:dom_id]
14
+ css_class = "upload-btn"
15
+ css_upload = "upload-progress"
16
+
17
+ content_tag(:div, :id => dom_id, :class => "upload-container") do
18
+ content_tag(:div, :class => "#{css_class}") do
19
+ content_tag(:noscript, "Please enable JavaScript to use file uploader.")
20
+ end +
21
+ content_tag(:div, :class => css_upload, :style => "display:none") do
22
+ content_tag(:span, "Uploading...")
23
+ end
24
+ end +
25
+ javascript_tag(%Q{
26
+ $(function() {
27
+ new qq.FileUploader({
28
+ element: $('##{dom_id} .#{css_class}')[0],
29
+ action: '#{url}',
30
+ allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
31
+ minSizeLimit: 100,
32
+ sizeLimit: #{10.megabytes},
33
+ params: {
34
+ resource_type: '#{opts[:resource_type]}',
35
+ post_type: 'photos'
36
+ },
37
+ debug: #{Rails.env.development?},
38
+ onSubmit: function(id, fileName){
39
+ $('##{dom_id} .#{css_upload}').progressbar()
40
+ $('##{dom_id} .#{css_upload}').show()
41
+ $('##{dom_id} .#{css_upload} span').text('Uploading...')
42
+ },
43
+ onProgress: function(id, fileName, loaded, total){
44
+ $('##{dom_id} .#{css_upload}').show()
45
+ $('##{dom_id} .#{css_upload} span').text('Uploading file '+ fileName)
46
+ // console.log('bytes_complete: '+loaded)
47
+ // console.log('total_bytes: '+total)
48
+ // console.log('progress: '+(loaded/total))
49
+ $('##{dom_id} .#{css_upload}').progressbar('value',((loaded/total)*100))
50
+ },
51
+ onComplete: function(id, fileName, responseJSON){
52
+ // console.log('responseJSON: '+responseJSON)
53
+ $('##{dom_id} .#{css_upload}').hide()
54
+ $('##{dom_id} .upload-progress span').text('Awaiting response...')
55
+ },
56
+ onCancel: function(id, fileName){
57
+ $('##{dom_id} .#{css_upload}').hide()
58
+ $('##{dom_id} .upload-progress span').text('Canceled...')
59
+ },
60
+ showMessage: function(message){
61
+ $('##{dom_id} .upload-progress span').text('')
62
+ // message
63
+ // $('#flash').html(message).addClass('error flash').show()
64
+ }
65
+ })
66
+ })
67
+ })
68
+ end
69
+
70
+ def add_inline_photo(url)
71
+ css_flash = "add_photo_flash"
72
+ css_link = ".add-inline-photo a"
73
+ css_loading = ".add-inline-photo img"
74
+ link_to_function(tt(:'.add_inline_photo'), "$('##{css_flash}').swfupload('selectFile')") +
75
+ image_tag("atreides/loading.gif", :style => "display:none") +
76
+ content_tag(:div, "", :id => css_flash) do
77
+ content_tag(:span, "", :id => "spanButtonPlaceholder")
78
+ end +
79
+ javascript_tag("
80
+ $(document).ready(function() {
81
+ $('##{css_flash}').swfupload({
82
+ upload_url: '#{url}', // Relative to the SWF file (or you can use absolute paths)
83
+ post_params: {
84
+ '#{session_key}': '#{cookies[session_key]}',
85
+ 'authenticity_token': '#{form_authenticity_token}',
86
+ },
87
+ // File Upload Settings
88
+ file_size_limit : '102400', // 100MB
89
+ file_types : '*.jpg;*.jpeg;*.png;*.gif',
90
+ file_types_description : 'Image Files',
91
+ file_upload_limit : '0',
92
+ file_queue_limit : '1',
93
+ // Button Settings
94
+ //button_image_url : '#{image_path('atreides/blank.gif')}', // Relative to the SWF file
95
+ button_placeholder_id : 'spanButtonPlaceholder',
96
+ //button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
97
+ button_cursor: 'pointer',
98
+ button_width: $('##{css_flash}').width(),
99
+ button_height: $('##{css_flash}').height(),
100
+ // Flash Settings
101
+ flash_url : '#{asset_path('atreides/swfupload.swf')}'
102
+ });
103
+ // assign our event handlers
104
+ $('##{css_flash}')
105
+ .bind('fileQueued', function(event, file){
106
+ $('#{css_link}').hide()
107
+ $('#{css_loading}').show()
108
+ $(this).swfupload('startUpload');
109
+ })
110
+ .bind('uploadSuccess',function(event, file, server_data, response) {
111
+ $('#{css_link}').show()
112
+ $('#{css_loading}').hide()
113
+ if (response) {
114
+ jQuery.globalEval(server_data)
115
+ }
116
+ })
117
+ .bind('uploadError',function(event, file, error, message) {
118
+ // console.log('uploadError')
119
+ $('#flash').html('Error from server trying to upload image: '+message).addClass('error flash').show()
120
+ })
121
+ });
122
+ ")
123
+ end
124
+
125
+ def edit_photos_for_assoc(object, list_id = nil)
126
+ if object and object.respond_to?(:photos) and object.respond_to?(:dom_id)
127
+ list_id ||= object.dom_id("photos_list")
128
+ content_tag(:div, :id => "#{list_id}_container", :class => "media-list photos-list") do
129
+ content_tag(:ul, :id => list_id) do
130
+ object.photos.map do |photo|
131
+ # Each photo
132
+ photo_for_assoc(photo, object.class.to_s.downcase, list_id)
133
+ end.join.html_safe
134
+ end +
135
+ edit_photos_sortable(list_id)
136
+ end
137
+ end
138
+ end
139
+
140
+ def photo_for_assoc(photo, object, list_id = "photos_list")
141
+ if defined?(Atreides::Feature) and object.is_a?(Atreides::Feature)
142
+ feature_photo_for_assoc(photo, object, list_id)
143
+ else
144
+ post_photo_for_assoc(photo, object, list_id)
145
+ end
146
+ end
147
+
148
+ def post_photo_for_assoc(photo, object, list_id = "photos_list", thumb_size = :thumb)
149
+ param_name = (object.is_a?(String) ? object : object.class.to_s).demodulize.downcase
150
+ content_tag(:li, :id => photo.dom_id(list_id), :class => "post-photo-for-assoc") do
151
+ link_to(image_tag("atreides/admin/remove.png"), admin_photo_path(photo, :format => :js, :list_id => list_id), :remote => true, :method => :delete, :confirm => "Are you absolutely sure?") +
152
+ image_tag(photo.image.url(thumb_size), :class => "photo-thumb", :size => photo.size(thumb_size).values.join('x')) +
153
+ hidden_field_tag("post[parts_attributes][0][photo_ids][]", photo.id) +
154
+ text_area_tag("post[parts_attributes][0][photos_attributes][][caption]", photo.caption) +
155
+ hidden_field_tag("post[parts_attributes][0][photos_attributes][][id]", photo.id) +
156
+ hidden_field_tag("post[parts_attributes][0][photos_attributes][][display_order]", photo.display_order)
157
+ end
158
+ end
159
+
160
+ def feature_photo_for_assoc(photo, object, list_id = "photos_list", thumb_size = :thumb)
161
+ attr_name = 'photo_attributes'
162
+
163
+ content_tag(:li, :id => (photo ? photo.dom_id(list_id) : nil), :class => "feature-photo-for-assoc") do
164
+ # Do full photo delete if used just by feature, otherwise remove from feature
165
+ if photo
166
+ image_tag(photo.image.url(thumb_size), :class => "photo-thumb", :size => photo.size(thumb_size).values.join('x')) +
167
+ hidden_field_tag("#{object.class.to_s.downcase}[#{attr_name}][id]", photo.id) +
168
+ hidden_field_tag("#{object.class.to_s.downcase}[#{attr_name}][display_order]", photo.display_order)
169
+ end
170
+ end
171
+ end
172
+
173
+ def edit_photos_sortable(list_id = "photos_list")
174
+ sortable_element("##{list_id}",
175
+ # :url => reorder_admin_photos_path(:format => :js),
176
+ :axis => false,
177
+ :update => "function() { $('##{list_id} input[id$=display_order]').each(function(i, el){ el.value = i }) }"
178
+ )
179
+ end
180
+
181
+ def calendar_day(day, posts)
182
+ content_tag(:span, day.mday, :class => "mday #{'future' if day>Date.today}") +
183
+ if (p = posts.detect{|b| b.published_at.mday==day.mday })
184
+ link_to(image_tag(p.image.url(:thumb)), admin_post_path(p))
185
+ else
186
+ ""
187
+ end
188
+ end
189
+
190
+ def sidebar_new_content_link
191
+ name = controller.controller_name.split('/').last
192
+ content_type = case name
193
+ when "pages", "posts", "users"
194
+ controller_name.singularize
195
+ when "orders", "products"
196
+ "product"
197
+ when "features"
198
+ "feature"
199
+ else
200
+ name.to_s.singularize
201
+ end
202
+ link_to ttc("new_#{content_type}"), admin_new_content_path(content_type) if content_type
203
+ end
204
+
205
+ def ga_visitors_graph(results)
206
+ content_tag(:div, "", :id => "ga_visitors", :class => "graph") +
207
+ javascript_tag("
208
+ $(document).ready(function() {
209
+
210
+ })
211
+ ")
212
+ end
213
+
214
+ def link_to_preview
215
+ obj = params[:controller]=~/pages/ ? 'page' : 'post'
216
+
217
+ link_to_function(ttt(:preview), %Q{
218
+ $('iframe.preview-pane').dialog({
219
+ modal: true,
220
+ width:960,
221
+ height:500,
222
+ open: function() {
223
+ $(this).css('width',960)
224
+ var form = $('form##{obj}_edit, form##{obj}_new').
225
+ clone().
226
+ attr('id','#{obj}_preview_form').
227
+ attr('action','#{send("preview_#{obj}_path")}').
228
+ attr('method','post').
229
+ attr('target','#{obj}_preview').
230
+ hide().
231
+ appendTo($('#body'));
232
+ form.submit().remove();
233
+ } })
234
+ }, :class => "preview") +
235
+ content_tag(:iframe, "", :id => "#{obj}_preview", :class => "preview-pane", :src => "about:blank", :width => 1, :height => 1, :name => "#{obj}_preview")
236
+ end
237
+
238
+ def seconds_from_now(datetime)
239
+ Time.now.to_i - Time.at(datetime.to_i).to_i
240
+ end
241
+
242
+ include Atreides::Extendable
243
+ end