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,2 @@
1
+ = render :partial => 'admin/edit_head_content'
2
+ = render :partial => "admin/atreides/posts/form"
@@ -0,0 +1,24 @@
1
+ = render :partial => "atreides/admin/content_nav"
2
+
3
+ - today = Date.today
4
+ - @date ||= today
5
+ - content_for :sidebar do
6
+ %ul.summary
7
+ %li.divider
8
+ %li= pluralize Atreides::Post.published.count, 'Post'
9
+ %li= link_to ttt(:'.published'), admin_posts_path
10
+ %li= link_to ttt(:'.drafts'), filter_admin_posts_path(:state => 'drafted')
11
+ - if params[:state].blank?
12
+ %li.divider
13
+ %li Filter:
14
+ %li
15
+ Month:
16
+ =select_tag "archive_month", options_for_select(Date::MONTHNAMES.map{|m| [m, Date::MONTHNAMES.index(m)]}, @date.month), :onchange => "window.location = '#{filter_admin_posts_path(:state => params[:state] || 'published')}?&month='+this.value+'&year='+$('#archive_year').val()"
17
+ %li
18
+ Year:
19
+ =select_tag "archive_year", options_for_select((today.year-5..today.year).to_a.reverse, @date.year), :onchange => "window.location = '#{filter_admin_posts_path(:state => params[:state] || 'published')}?year='+this.value+'&month='+$('#archive_month').val()"
20
+
21
+ %h2
22
+ Archives: #{ttt :'.x_posts', :count => collection.size}
23
+
24
+ = render :partial => 'admin/atreides/posts/archives'
@@ -0,0 +1 @@
1
+ $("#pagination").replaceWith("#{escape_javascript(render(:partial => "admin/atreides/posts/archives", :locals => { :posts => collection }))}")
@@ -0,0 +1,2 @@
1
+ = render :partial => 'admin/edit_head_content'
2
+ = render :partial => "admin/atreides/posts/form"
@@ -0,0 +1,69 @@
1
+ = render :partial => 'admin/edit_head_content'
2
+
3
+ = semantic_form_for resource, :url => (resource.new_record? ? admin_products_path : admin_product_path(resource)) do |f|
4
+ = f.semantic_errors
5
+ #form_content{:class => "span-17"}
6
+ %h2 #{ttt params[:action].to_s} #{ttt resource.class.to_s}
7
+ = error_messages_for :product, :object => resource
8
+ - f.inputs do
9
+ = f.input :title, :label => ttt(:'.title'), :input_html => { :class => "title" }, :required => true
10
+ %li.photos-upload
11
+ %label #{ttt :'.photos'}
12
+ =multi_file_uploader(:url => admin_product_photos_path(resource, :format => :js), :css_parent_class => "photos-upload")
13
+ .clear
14
+ = edit_photos_for_assoc(resource, f)
15
+ %p.inline-hints.clear #{ttt :'.upload_reorder_and_caption_photos'}
16
+ = f.input :body, :label => ttt(:'.body'), :as => 'text', :wrapper_html => { :class => "rich-text" }, :required => true
17
+
18
+ - f.actions do
19
+ = f.action :submit, :as => :button, :label => "Save #{resource.class.to_s}"
20
+ %li.cancel
21
+ = link_to ttt(:'.back'), admin_products_path, :class => "cancel"
22
+
23
+ #form_sidebar{:class => "sidebar span-6 last"}
24
+ - f.inputs do
25
+ = f.input :state, :as => "select", :collection => resource.states_for_select, :selected => resource.state, :include_blank => false, :wrapper_html => { :class => "post-states" }, :hint => "#{ttt :'.currently'}: '#{resource.state.to_s.capitalize}'"
26
+ = f.input :state, :as => "hidden", :wrapper_html => { :class => "post-hidden" }
27
+ = f.input :published_at, :label => ttt(:'.publish_on'), :as => "string", :wrapper_html => { :class => "date-picker", :style => (resource.publish_on_date? ? "" : "display:none") }
28
+ = f.input :price, :as => 'price', :hint => ttt(:'.price_hint'), :wrapper_html => { :class => "price-input string" }, :required => true
29
+ %li.product-sizes.string
30
+ %label #{ttt :'.sizes'}
31
+ %table
32
+ %thead
33
+ %th
34
+ %th #{ttt :'.name'}
35
+ %th #{ttt :'.qty'}
36
+ %th
37
+ %tfoot
38
+ %tr
39
+ %td
40
+ %td=text_field_tag "product[sizes_attributes][][name]", "", :class => "size_name"
41
+ %td=text_field_tag "product[sizes_attributes][][qty]", "", :class => "size_qty"
42
+ %td=link_to_function "+", ""
43
+ %tbody
44
+ -resource.sizes.each do |s|
45
+ %tr{:id => s.dom_id, :class => "size_fields clear"}
46
+ %td
47
+ %td=text_field_tag "product[sizes_attributes][][name]", s.name, :class => "size_name"
48
+ %td=text_field_tag "product[sizes_attributes][][qty]", s.qty, :class => "size_qty"
49
+ %td
50
+ =hidden_field_tag "product[sizes_attributes][][id]", s.id
51
+ =link_to_function "-", "$(this).parents('tr').remove()"
52
+ %tr{:id => "blank", :class => "size_fields clear", :style => "display:none"}
53
+ %td
54
+ %td=text_field_tag "product[sizes_attributes][][name]", "", :class => "size_name"
55
+ %td=text_field_tag "product[sizes_attributes][][qty]", "", :class => "size_qty"
56
+ %td
57
+ =hidden_field_tag "product[sizes_attributes][][id]", ""
58
+ =link_to_function "-", "$(this).parents('tr').remove()"
59
+ - if defined?(Settings.common_tags)
60
+ %li.common-tags
61
+ %label #{ttt :'.common_tags'}
62
+ %ul
63
+ - Settings.common_tags.each do |tag|
64
+ %li.jq_tags_token
65
+ = tag
66
+ = link_to_function "+", "$('.tag-picker input.jq_tags_editor_input').attr('value','#{tag}').blur()"
67
+ = f.input :tag_list, :label => 'Tags', :as => "text", :wrapper_html => { :class => "tag-picker" }
68
+ = f.input :slug, :label => 'Custom URL', :as => "underline", :prefix => "/products/", :hint => ttt(:'.leave_blank_to_create_automatically'), :wrapper_html => { :class => "underlined-input" }
69
+ .clear
@@ -0,0 +1,31 @@
1
+ - today = Date.today
2
+ - @date ||= today
3
+ - content_for :sidebar do
4
+ %ul.summary
5
+ %li.new-content
6
+ =sidebar_new_content_link
7
+ %li.divider
8
+ %li= pluralize Atreides::Post.published.count, 'Post'
9
+ %li= link_to ttt(:'.published'), url_for(params.merge(:state => 'published'))
10
+ %li= link_to ttt(:'.drafts'), url_for(params.merge(:state => 'drafted', :month => @date.month, :year => @date.year))
11
+ %li= link_to ttt(:'.queued'), url_for(params.merge(:state => 'queued', :month => @date.month, :year => @date.year))
12
+ %li= link_to_function "Stats", ""
13
+ %li.divider
14
+ %li= link_to ttt(:'.posts'), admin_posts_path
15
+ %li= link_to_function "#TERRYTALK", ""
16
+ %li= link_to_function "#TERRY SHOOTS", ""
17
+ %li.divider
18
+ %li #{ttt :'.filter'}:
19
+ %li
20
+ #{ttt :'.month'}:
21
+ =select_tag "archive_month", options_for_select(Date::MONTHNAMES.map{|m| [m, Date::MONTHNAMES.index(m)]}, @date.month), :onchange => "window.location = '#{admin_posts_path}?state=#{params[:state]}&month='+this.value+'&year='+$('#archive_year').val()"
22
+ %li
23
+ #{ttt :'.year'}:
24
+ =select_tag "archive_year", options_for_select((today.year-5..today.year).to_a.reverse, @date.year), :onchange => "window.location = '#{admin_posts_path}?year='+this.value+'&month='+$('#archive_month').val()"
25
+
26
+ = render :partial => 'admin/common/search_form'
27
+
28
+ %h2 #{ttt :'.products'}
29
+
30
+ .clear
31
+ = render :partial => 'admin/common/list_table', :locals => { :records => collection, :class_obj => Atreides::Product, :list_cols => %w(image product price inventory total sales), :action_cols => %w() }
@@ -0,0 +1,13 @@
1
+ %h2= ttt(:'.please_login')
2
+
3
+ = semantic_form_for resource, :as => resource_name, :url => session_path(resource_name) do |form|
4
+ #form_content{:class => "span-10"}
5
+ = form.inputs do
6
+ = form.input :email, :input_html => { :class => "title" }
7
+ = form.input :password, :input_html => { :class => "title" }
8
+ = form.input :remember_me, :as => :boolean if devise_mapping.rememberable?
9
+
10
+ = form.actions do
11
+ = form.action :submit, :as => :button, :label => "Login"
12
+
13
+ /= render :partial => "devise/shared/links"
@@ -0,0 +1,10 @@
1
+ %h2= ttt(:'.please_login')
2
+
3
+ = semantic_form_for resource, :url => admin_user_sessions_path do |form|
4
+ #form_content{:class => "span-10"}
5
+ - form.inputs do
6
+ = form.input :email, :label => ttt(:'.email'), :input_html => { :class => "title" }
7
+ = form.input :password, :input_html => { :class => "title" }
8
+
9
+ - form.actions do
10
+ = form.action :submit, :as => :button, :label => ttt(:'.login')
@@ -0,0 +1,19 @@
1
+ = form.inputs do
2
+ = form.input :first_name, :label => ttt(:'.firstname'), :wrapper_html => { :class => "left half" }, :input_html => { :class => "title" }
3
+ = form.input :last_name, :label => ttt(:'.lastname'), :wrapper_html => { :class => "left half" }, :input_html => { :class => "title" }
4
+ = form.input :email, :label => ttt(:'.email'), :wrapper_html => { :class => "clear" }
5
+ = form.input :password, :label => ttt(:'.password')
6
+ = form.input :password_confirmation, :label => ttt(:'.password_confirmation')
7
+ = form.input :role, :label => ttt(:role), :as => :select, :include_blank => false,
8
+ :collection => Atreides::User.available_roles(current_user).map {|r| [ttc(:".#{r}"), r]},
9
+ :selected => resource.new_record? ? current_user.role : resource.role
10
+
11
+ = form.actions do
12
+ = form.action :submit, :as => :button, :label => ttt(:save)
13
+ %li.cancel
14
+ - if resource.new_record?
15
+ = link_to ttt(:cancel), admin_users_path, :class => "cancel"
16
+ - else
17
+ = link_to ttt(:back), admin_users_path, :class => "cancel"
18
+ %li.delete
19
+ = link_to ttt(:delete), admin_user_path(resource), :class => "cancel", :confirm => ttt(:are_you_sure), :method => "delete" if resource_class.can_destroy_admin? && !resource.new_record?
@@ -0,0 +1,6 @@
1
+ %h2 #{ttt :'edit'} #{resource.full_name}
2
+
3
+ = semantic_form_for resource, :url => admin_user_path(resource), :as => "user" do |form|
4
+ #form_content{:class => "span-17"}
5
+ = error_messages_for :user
6
+ = render :partial => "form", :locals => { :form => form }
@@ -0,0 +1,11 @@
1
+ - today = Date.today
2
+ - @date ||= today
3
+ - content_for :sidebar do
4
+ %ul.summary
5
+ %li.new-content
6
+ =sidebar_new_content_link
7
+
8
+ %h2 #{ttt :users}
9
+
10
+ .clear
11
+ = render :partial => 'admin/common/list_table', :locals => { :records => collection, :class_obj => Atreides::User, :list_cols => %w(name email role), :action_cols => %w() }
@@ -0,0 +1,6 @@
1
+ %h2 #{ttt :new_admin}
2
+
3
+ = semantic_form_for resource, :url => admin_users_path, :as => "user" do |form|
4
+ #form_content{:class => "span-17"}
5
+ = error_messages_for :user
6
+ = render :partial => "form", :locals => { :form => form }
@@ -0,0 +1,4 @@
1
+ %h2 #{ttt :'.user'} #{resource.full_name}
2
+
3
+ %p
4
+ = link_to ttt(:edit), edit_admin_user_path(resource)
@@ -0,0 +1,9 @@
1
+ - list_id = params[:list_id] || "videos_list"
2
+ - resource_type = params[:resource_type] || "post"
3
+ try {
4
+ $("##{list_id}").append("#{escape_javascript(video_for_assoc(@video, list_id, resource_type))}")
5
+ fixRailsEmbeddedFormHashOrder($('#content_parts_container'))
6
+ } catch (err) {
7
+ console.log("Error: "+err.description)
8
+ console.debug(err)
9
+ }
@@ -0,0 +1,3 @@
1
+ - if resource.destroyed?
2
+ $("##{resource.dom_id(params[:list_id]||'videos_list')}").fadeOut(function(){ $(this).remove() })
3
+ $("#flash_messages").html("#{escape_javascript(flash_messages)}").hide().fadeIn()
@@ -0,0 +1,29 @@
1
+ - today = Date.today
2
+ - @date ||= today
3
+ - content_for :sidebar do
4
+ %ul.summary
5
+ %li.new-content
6
+ =sidebar_new_content_link
7
+ %li.divider
8
+ %li= pluralize Atreides::Post.published.count, 'posts'
9
+ %li= link_to ttt(:'.published'), url_for(params.merge(:state => 'published'))
10
+ %li= link_to ttt(:'.drafts'), url_for(params.merge(:state => 'drafted', :month => @date.month, :year => @date.year))
11
+ %li= link_to ttt(:'.queued'), url_for(params.merge(:state => 'queued', :month => @date.month, :year => @date.year))
12
+ %li= link_to_function "Stats", ""
13
+ %li.divider
14
+ %li= link_to ttt(:'.posts'), admin_posts_path
15
+ %li= link_to_function "#TERRYTALK", ""
16
+ %li= link_to_function "#TERRY SHOOTS", ""
17
+ %li.divider
18
+ %li= ttt(:'.sort_by')
19
+ %li= link_to_function ttt(:'.sort_by_date'), ""
20
+ %li= link_to_function ttt(:'.sort_by_comments'), ""
21
+ %li= link_to_function ttt(:'.sort_by_likes'), ""
22
+ %li.divider
23
+ %li #{ttt :'.filter'}
24
+ %li
25
+ Month:
26
+ =select_tag "archive_month", options_for_select(Date::MONTHNAMES.map{|m| [m, Date::MONTHNAMES.index(m)]}, @date.month), :onchange => "window.location = '#{admin_posts_path}?state=#{params[:state]}&month='+this.value+'&year='+$('#archive_year').val()"
27
+ %li
28
+ Year:
29
+ =select_tag "archive_year", options_for_select((today.year-5..today.year).to_a.reverse, @date.year), :onchange => "window.location = '#{admin_posts_path}?year='+this.value+'&month='+$('#archive_month').val()"
@@ -0,0 +1,37 @@
1
+ <%
2
+ records ||= []
3
+ class_obj ||= records.first.class
4
+ record_name = class_obj.to_s.underscore
5
+ ignore_cols ||= []
6
+ ignore_cols.uniq!
7
+ action_cols ||= %w(show edit destroy)
8
+ nosort_cols ||= []
9
+ list_cols ||= class_obj.column_names
10
+ cols_hash = class_obj.columns_hash
11
+ %>
12
+ <table id="<%= record_name.pluralize.parameterize('_') %>_list_<%= records.object_id %>" class="remote_sort_table sort_table <%= record_name.pluralize.parameterize('_') %>_table" cellspacing="0" cellpadding="0">
13
+ <thead>
14
+ <tr>
15
+ <%
16
+ list_cols.each do |col|
17
+ next if cols_hash[col] and cols_hash[col].primary
18
+ next if ignore_cols.include?(col)
19
+ field_func = "#{col}_column"
20
+ label_func = "#{col}_label"
21
+ %>
22
+ <th class="<%= sort_col(cols_hash[col]) %> <%= "sort#{params[:dir]}" if params[:sort]==col %> <%= "sortcol" unless nosort_cols.include?(col) %>">
23
+ <%= self.respond_to?(label_func) ? send(label_func, col) : ttt(col.to_s) %>
24
+ </th>
25
+ <% end %>
26
+ <% unless action_cols.empty? %>
27
+ <th class="nosort actions" colspan="<%= action_cols.size %>"><%= image_tag "atreides/blank.gif" %></th>
28
+ <% end %>
29
+ </tr>
30
+ </thead>
31
+ <tbody>
32
+ <%= render :partial => 'admin/common/list_table_row', :collection => records, :as => :record, :locals => { :list_cols => list_cols, :cols_hash => cols_hash, :ignore_cols => ignore_cols, :action_cols => action_cols, :record_name => record_name } %>
33
+ </tbody>
34
+ </table>
35
+ <p class="pagination">
36
+ <%= will_paginate records if records.respond_to? :total_pages %>
37
+ </p>
@@ -0,0 +1,18 @@
1
+ <tr class="<%= cycle 'even','odd' -%>" id="<%= record.dom_id('tablerow') -%>">
2
+ <% list_cols.each do |col|
3
+ next if cols_hash[col] and cols_hash[col].primary
4
+ next if ignore_cols.include?(col)
5
+ field_func = "#{col}_column"
6
+ %>
7
+ <td class="<%= field_func %>">
8
+ <%= content_tag(:span, (self.respond_to?(field_func) ? send(field_func, record) : record.send(col))) %>
9
+ </td>
10
+ <% end %>
11
+ <% action_cols.each do |action|
12
+ action_func = "#{action}_link"
13
+ %>
14
+ <td class="action_link">
15
+ <%= self.respond_to?(action_func) ? send(action_func, record) : action_link(action, record, record_name) %>
16
+ </td>
17
+ <% end %>
18
+ </tr>
@@ -0,0 +1 @@
1
+ <%= will_paginate collection, :container => false, :inner_window => 2, :outer_window => 1, :params => {:query => params[:query]} %>
@@ -0,0 +1,6 @@
1
+ <div class="search-form" style="float:right;clear:none;margin-left:0.5em;">
2
+ <%= form_tag "", :method => "get", :class => "auto-hide-text" do %>
3
+ <%= link_to ttt(:'.reset'), url_for(:controller => params[:controller], :action => controller.action_name), :class => "submit_btn", :style => "float:right;clear:none;margin-left:0.5em;" %>
4
+ <%= text_field_tag :search, (params[:search] || "Search...") %>
5
+ <% end %>
6
+ </div>
@@ -0,0 +1 @@
1
+ .cause= @message
@@ -0,0 +1,8 @@
1
+ #content_nav
2
+ %ul
3
+ - %w(text photos videos).each do |content_type|
4
+ %li{:class => content_type}= link_to ttt(content_type), admin_new_content_path(content_type)
5
+ %li.features= link_to ttt(:features), admin_features_path
6
+ %li.archives= link_to ttt(:archives), admin_posts_path
7
+ %li.pages= link_to ttt(:pages), admin_pages_path
8
+ %li.comments= link_to ttt(:comments), admin_comments_path
@@ -0,0 +1,93 @@
1
+ :css
2
+ .loading_overlay {
3
+ border: 1px dotted green
4
+ text-align: center;
5
+ }
6
+
7
+ - content_for :head do
8
+ :javascript
9
+ var stats_browsed_date = "#{(Date.today - 1.month).to_s}";
10
+ function toRubyDate(date) { return [date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-'); }
11
+
12
+ analytic_widgets = []
13
+ function refreshAnalytics() {
14
+ for(var i=0, ii = analytic_widgets.length; i < ii; i++) {
15
+ loadAnalyticsAsync.apply(window, analytic_widgets[i]);
16
+ }
17
+ }
18
+
19
+ function loadAnalyticsAsync(table_id, render_graph) {
20
+ var table = $("#" + table_id);
21
+ var url = table.attr('rel') + "?since=" + stats_browsed_date;
22
+ console.log("loading ", table_id, "with URL", url);
23
+ $.get(url, {}, function(data, status, xhr){
24
+ $('.loading_overlay', table.parent('.chart')).hide();
25
+ console.log("Received response:", url, status, table);
26
+ console.log("table !:", table);
27
+ $('tbody', table).remove();
28
+ table.append(data);
29
+ console.log("render_graph:", render_graph);
30
+ if(render_graph) {
31
+ drawTimeSeries(table);
32
+ }
33
+ });
34
+ }
35
+
36
+ - %w(visitors tweets fb_page_views fb_page_likes).each do |rep_title|
37
+ - report_id = rep_title + "_data"
38
+ - if rep_title=='tweets'
39
+ .chart{:class => 'tweet-reach'}
40
+ %h3
41
+ = ttt :'.tweet_reach'
42
+ %span= number_with_delimiter(@tweet_reach)
43
+ .chart{:class => 'tweet-exposure'}
44
+ %h3
45
+ = ttt :'.tweet_exposure'
46
+ %span= number_with_delimiter(@tweet_exposure)
47
+ .clear
48
+
49
+ - if rep_title=='fb_page_views'
50
+ - if @fb_page_views
51
+ .chart{:class => 'fb-page-views'}
52
+ %h3
53
+ #{ttt(:".fb_page_total_views")}:
54
+ %span= number_with_delimiter(@fb_page_views.data.first.values[3].sum{|h| h['value'].to_i})
55
+ - if @fb_page_likes
56
+ .chart{:class => 'fb-page-likes'}
57
+ %h3
58
+ #{ttt(:".fb_page_total_likes")}:
59
+ %span= number_with_delimiter(@fb_page_likes.data.first.values[3].sum{|h| h['value'].to_i})
60
+ .clear
61
+
62
+ .chart{:class => rep_title}
63
+ %h3= ttt(".#{rep_title}")
64
+ %div.loading.loading_overlay
65
+ %br
66
+ %center #{image_tag("atreides/admin/dashboard-indicator.gif")}
67
+ .graph_canvas{:id => "#{rep_title}_graph"}
68
+ %table.graph_data{:id => report_id, :rel => admin_analytics_data_path(:report => rep_title)}
69
+ %thead
70
+ %tr
71
+ %th= ttt(:value)
72
+ %th #
73
+ - content_for :head do
74
+ :javascript
75
+ // $(function(){ loadAnalyticsAsync("#{report_id}", true); })
76
+ window.analytic_widgets.push(["#{report_id}", true]);
77
+
78
+ - %w(top_referrers top_landing_pages).each do |rep_title|
79
+ - report_id = rep_title + "_data"
80
+ .chart{:class => rep_title}
81
+ %h3= ttt(".#{rep_title}")
82
+ %table{:id => report_id, :rel => admin_analytics_data_path(:report => rep_title)}
83
+ %thead
84
+ %tr
85
+ %th= ttt(:value)
86
+ %th #
87
+ - content_for :head do
88
+ :javascript
89
+ // $(function(){ loadAnalyticsAsync("#{report_id}", false); })
90
+ window.analytic_widgets.push(["#{report_id}", false]);
91
+
92
+ :javascript
93
+ $(refreshAnalytics);