cloudrider 0.3.0 → 0.3.20

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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -1
  3. data/cloudrider.gemspec +1 -0
  4. data/generica/.gitignore +18 -0
  5. data/generica/Gemfile +8 -1
  6. data/generica/Gemfile.lock +3 -0
  7. data/generica/app/assets/javascripts/apiv1.js.ls +6 -1
  8. data/generica/app/assets/javascripts/components/offers-summary.js.em +2 -0
  9. data/generica/app/assets/javascripts/components/picture-chunk.js.em +17 -0
  10. data/generica/app/assets/javascripts/components/pictures-group.js.em +21 -0
  11. data/generica/app/assets/javascripts/components/search-and-filter.js.em +4 -0
  12. data/generica/app/assets/javascripts/components/site-nav.js.em +5 -1
  13. data/generica/app/assets/javascripts/components/taggable-field.js.em +28 -0
  14. data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +6 -2
  15. data/generica/app/assets/javascripts/controllers/index_controller.js.em +19 -2
  16. data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +23 -9
  17. data/generica/app/assets/javascripts/controllers/modals/register_controller.js.em +24 -0
  18. data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +23 -13
  19. data/generica/app/assets/javascripts/controllers/products/product/offers/new_controller.js.em +17 -0
  20. data/generica/app/assets/javascripts/controllers/users/offers/index_controller.js.em +10 -0
  21. data/generica/app/assets/javascripts/controllers/users/product/edit_controller.js.em +31 -0
  22. data/generica/app/assets/javascripts/controllers/users/products/index_controller.js.em +8 -0
  23. data/generica/app/assets/javascripts/controllers/users/products/new_controller.js.em +22 -0
  24. data/generica/app/assets/javascripts/controllers/users/products/slice_controller.js.em +4 -0
  25. data/generica/app/assets/javascripts/helpers/filte_previewer.js.ls +21 -0
  26. data/generica/app/assets/javascripts/helpers/listing_picture.js.em +17 -0
  27. data/generica/app/assets/javascripts/models/offer.js.em +9 -8
  28. data/generica/app/assets/javascripts/models/user.js.em +12 -0
  29. data/generica/app/assets/javascripts/models/users/product.js.em +12 -0
  30. data/generica/app/assets/javascripts/routes/application_route.js.em +10 -2
  31. data/generica/app/assets/javascripts/routes/products/index_route.js.em +23 -2
  32. data/generica/app/assets/javascripts/routes/products/product/offers/new_route.js.em +18 -0
  33. data/generica/app/assets/javascripts/routes/users/offers/index_route.js.em +1 -0
  34. data/generica/app/assets/javascripts/routes/users/product_route.js.em +3 -0
  35. data/generica/app/assets/javascripts/routes/users/products/index_route.js.em +3 -0
  36. data/generica/app/assets/javascripts/routes/users/products/new_route.js.em +3 -0
  37. data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +2 -0
  38. data/generica/app/assets/javascripts/templates/admin/products/_form-core.emblem +44 -0
  39. data/generica/app/assets/javascripts/templates/admin/products/new.emblem +4 -42
  40. data/generica/app/assets/javascripts/templates/components/offers-summary.emblem +9 -0
  41. data/generica/app/assets/javascripts/templates/components/picture-chunk.emblem +9 -0
  42. data/generica/app/assets/javascripts/templates/components/pictures-group.emblem +6 -0
  43. data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +5 -1
  44. data/generica/app/assets/javascripts/templates/components/taggable-field.emblem +1 -0
  45. data/generica/app/assets/javascripts/templates/modals/register.emblem +57 -0
  46. data/generica/app/assets/javascripts/templates/products/product/offers/_anonymous-form.emblem +11 -0
  47. data/generica/app/assets/javascripts/templates/products/product/offers/_offer-form.emblem +55 -0
  48. data/generica/app/assets/javascripts/templates/products/product/offers/new.emblem +37 -0
  49. data/generica/app/assets/javascripts/templates/products/product/show.emblem +26 -1
  50. data/generica/app/assets/javascripts/templates/users.emblem +24 -0
  51. data/generica/app/assets/javascripts/templates/users/index.emblem +3 -0
  52. data/generica/app/assets/javascripts/templates/users/offers/index.emblem +25 -0
  53. data/generica/app/assets/javascripts/templates/users/offers/slice.emblem +31 -0
  54. data/generica/app/assets/javascripts/templates/users/product/edit.emblem +82 -0
  55. data/generica/app/assets/javascripts/templates/users/products/index.emblem +22 -0
  56. data/generica/app/assets/javascripts/templates/users/products/new.emblem +28 -0
  57. data/generica/app/assets/javascripts/templates/users/products/slice.emblem +27 -0
  58. data/generica/app/assets/stylesheets/apiv1/_application.css.scss +4 -0
  59. data/generica/app/assets/stylesheets/apiv1/components/_offers-summary.css.scss +20 -0
  60. data/generica/app/assets/stylesheets/apiv1/components/_pictures-group.css.scss +32 -0
  61. data/generica/app/assets/stylesheets/apiv1/components/_taggable-field.css.scss +32 -0
  62. data/generica/app/assets/stylesheets/apiv1/products/product/offers/_new.css.scss +8 -0
  63. data/generica/app/controllers/admin/base_controller.rb +1 -1
  64. data/generica/app/controllers/admin/sessions/destroy_controller.rb +16 -0
  65. data/generica/app/controllers/apiv1/offers/create_controller.rb +30 -0
  66. data/generica/app/controllers/apiv1/offers/index_controller.rb +22 -0
  67. data/generica/app/controllers/apiv1/offers/show_controller.rb +12 -0
  68. data/generica/app/controllers/apiv1/products/destroy_controller.rb +6 -0
  69. data/generica/app/controllers/apiv1/products/index_controller.rb +8 -2
  70. data/generica/app/controllers/apiv1/products/show_controller.rb +7 -3
  71. data/generica/app/controllers/apiv1/taxons/index_controller.rb +5 -1
  72. data/generica/app/controllers/apiv1/users/create_controller.rb +17 -0
  73. data/generica/app/controllers/apiv1/users/show_controller.rb +12 -0
  74. data/generica/app/controllers/apiv1/users_controller.rb +9 -0
  75. data/generica/app/controllers/application_controller.rb +3 -0
  76. data/generica/app/controllers/users/offers/create_controller.rb +26 -0
  77. data/generica/app/controllers/users/products/create_controller.rb +26 -0
  78. data/generica/app/controllers/users/products/update_controller.rb +35 -0
  79. data/generica/app/mailers/apiv1/aggregate_mailer.rb +13 -0
  80. data/generica/app/mailers/apiv1/aggregate_mailer/summary_context.rb +121 -0
  81. data/generica/app/mailers/apiv1/notifications_mailer.rb +19 -0
  82. data/generica/app/mailers/apiv1/notifications_mailer/new_offer_context.rb +53 -0
  83. data/generica/app/models/admin/user.rb +43 -2
  84. data/generica/app/models/apiv1/attachment.rb +2 -0
  85. data/generica/app/models/apiv1/email_object.rb +35 -0
  86. data/generica/app/models/apiv1/email_request.rb +107 -0
  87. data/generica/app/models/apiv1/offer_message.rb +53 -0
  88. data/generica/app/models/apiv1/offer_postboy.rb +33 -0
  89. data/generica/app/models/apiv1/picture.rb +2 -0
  90. data/generica/app/models/apiv1/product.rb +28 -6
  91. data/generica/app/models/apiv1/products/offer_message_factory.rb +13 -0
  92. data/generica/app/models/apiv1/products_machine.rb +8 -2
  93. data/generica/app/models/apiv1/taxon.rb +1 -1
  94. data/generica/app/models/apiv1/users/product_factory.rb +22 -0
  95. data/generica/app/models/apiv1/users/product_relationship.rb +19 -0
  96. data/generica/app/models/users/products/offer_factory.rb +40 -0
  97. data/generica/app/varissets/javascripts/templates/application.emblem.erb +2 -2
  98. data/generica/app/varissets/javascripts/templates/components/offers-overview.emblem.erb +1 -0
  99. data/generica/app/varissets/javascripts/templates/components/search-and-filter.emblem.erb +33 -0
  100. data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +8 -0
  101. data/generica/app/varissets/javascripts/templates/components/taggable-field.emblem.erb +11 -0
  102. data/generica/app/varissets/javascripts/templates/modals/login.emblem.erb +36 -0
  103. data/generica/app/varissets/javascripts/templates/products.emblem.erb +4 -0
  104. data/generica/app/varissets/javascripts/templates/products/index.emblem.erb +17 -0
  105. data/generica/app/varissets/javascripts/templates/products/product/offers/_anonymous-form.emblem.erb +11 -0
  106. data/generica/app/varissets/javascripts/templates/products/product/offers/_offer-form.emblem.erb +55 -0
  107. data/generica/app/varissets/javascripts/templates/products/product/offers/new.emblem.erb +37 -0
  108. data/generica/app/varissets/javascripts/templates/products/product/show.emblem.erb +108 -0
  109. data/generica/app/varissets/stylesheets/apiv1/components/_offers-overview.css.scss.erb +3 -0
  110. data/generica/app/varissets/stylesheets/apiv1/components/_offers_overview.css.scss.erb +3 -0
  111. data/generica/app/varissets/stylesheets/apiv1/components/_search-and-filter.css.scss.erb +15 -0
  112. data/generica/app/varissets/stylesheets/apiv1/components/_site-footer.css.scss.erb +23 -0
  113. data/generica/app/varissets/stylesheets/apiv1/components/_taggable-field.css.scss.erb +32 -0
  114. data/generica/app/views/apiv1/home/index.html.haml +3 -1
  115. data/generica/app/views/apiv1/layouts/application.html.haml +37 -2
  116. data/generica/config/{database.yml.erb → database.yml.str} +3 -3
  117. data/generica/config/email.yml +11 -0
  118. data/generica/config/email_slave.god +9 -0
  119. data/generica/config/initializers/premailer.rb +1 -0
  120. data/generica/config/initializers/squash.rb.erb +3 -0
  121. data/generica/config/nginx.conf.erb +4 -4
  122. data/generica/config/routes.rb +14 -0
  123. data/generica/db/migrate/20141114213427_add_user_rank_to_admin_users.rb +9 -0
  124. data/generica/db/migrate/20141114225019_create_apiv1_users_products.rb +9 -0
  125. data/generica/db/migrate/20141116053522_create_apiv1_offer_messages.rb +16 -0
  126. data/generica/db/migrate/20141116235011_add_deleted_at_to_apiv1_products.rb +5 -0
  127. data/generica/db/migrate/20141116235209_add_deleted_at_to_apiv1_offer_messages.rb +5 -0
  128. data/generica/db/migrate/20141116235651_add_deleted_at_to_apiv1_pictures.rb +5 -0
  129. data/generica/db/migrate/20141116235808_add_deleted_at_to_apiv1_attachments.rb +5 -0
  130. data/generica/db/migrate/20141127230304_create_apiv1_email_requests.rb +16 -0
  131. data/generica/db/migrate/20141127230455_create_apiv1_email_objects.rb +11 -0
  132. data/generica/lib/generica/assets_unretardifier.rb +32 -0
  133. data/generica/lib/generica/email_slave.rb +92 -0
  134. data/generica/lib/tasks/email_slave.rake +11 -0
  135. data/generica/lib/tasks/production.rake +1 -1
  136. data/generica/public/tests/bermese.jpg +0 -0
  137. data/generica/public/tests/chow.jpg +0 -0
  138. data/generica/public/tests/malamute.jpg +0 -0
  139. data/generica/public/tests/malamute2.JPG +0 -0
  140. data/generica/spec/controllers/apiv1/users/create_controller_spec.rb +17 -0
  141. data/generica/spec/controllers/users/products/create_controller_spec.rb +31 -0
  142. data/generica/spec/mailers/apiv1/aggregate_mailer_spec.rb +29 -0
  143. data/generica/spec/models/apiv1/email_request_spec.rb +4 -0
  144. data/generica/spec/models/apiv1/offer_postboy_spec.rb +22 -0
  145. data/generica/spec/models/apiv1/product_spec.rb +1 -0
  146. data/generica/spec/models/apiv1/products/offer_message_factory_spec.rb +37 -0
  147. data/generica/spec/models/apiv1/products_machine_spec.rb +77 -0
  148. data/generica/spec/models/apiv1/users/product_factory_spec.rb +47 -0
  149. data/generica/spec/models/users/products/offer_factory_spec.rb +38 -0
  150. data/generica/test/mailers/.keep +0 -0
  151. data/generica/test/mailers/previews/apiv1/aggregate_preview.rb +6 -0
  152. data/generica/test/mailers/previews/apiv1/notifications_preview.rb +5 -0
  153. data/lib/cloudrider.rb +1 -1
  154. data/lib/cloudrider/apiv1/base.rb +2 -2
  155. data/lib/cloudrider/apiv1/login_modal_emblem.rb +25 -0
  156. data/lib/cloudrider/apiv1/offers_anonymous_form_partial_emblem.rb +12 -0
  157. data/lib/cloudrider/apiv1/offers_new_emblem.rb +15 -0
  158. data/lib/cloudrider/apiv1/offers_overview_component.rb +8 -0
  159. data/lib/cloudrider/apiv1/offers_overview_sass.rb +8 -0
  160. data/lib/cloudrider/apiv1/product_show_emblem.rb +31 -0
  161. data/lib/cloudrider/apiv1/products_emblem.rb +11 -0
  162. data/lib/cloudrider/apiv1/products_index_emblem.rb +14 -0
  163. data/lib/cloudrider/apiv1/search_and_filter_component.rb +11 -0
  164. data/lib/cloudrider/apiv1/search_and_filter_sass.rb +11 -0
  165. data/lib/cloudrider/apiv1/site_footer_component.rb +7 -7
  166. data/lib/cloudrider/apiv1/site_footer_sass.rb +9 -0
  167. data/lib/cloudrider/application_commander.rb +46 -34
  168. data/lib/cloudrider/backend_commander.rb +15 -9
  169. data/lib/cloudrider/protofile.rb +18 -2
  170. data/lib/cloudrider/protosite.example.json +26 -0
  171. data/lib/cloudrider/protosite.rb +66 -0
  172. data/lib/cloudrider/serverside/base.rb +2 -2
  173. data/lib/cloudrider/serverside/database_yaml.rb +9 -4
  174. data/lib/cloudrider/serverside/nginx_conf.rb +7 -2
  175. data/lib/cloudrider/serverside/squash_ruby.rb +14 -0
  176. data/lib/cloudrider/serverside/unicorn_conf_ruby.rb +2 -1
  177. data/lib/cloudrider/version.rb +1 -1
  178. data/lib/cloudrider/web_firm.rb +16 -0
  179. data/lib/cloudrider/web_firm/component_architect.rb +23 -0
  180. data/lib/cloudrider/web_firm/page_designer.rb +13 -0
  181. data/lib/cloudrider/web_firm/project_lead.rb +30 -0
  182. data/lib/cloudrider/web_firm/scumbag_engineer.rb +40 -0
  183. data/lib/cloudrider/web_firm/support_intern.rb +113 -0
  184. data/lib/generators/cloudrider/server/server_generator.rb +4 -8
  185. data/lib/generators/cloudrider/website/website_generator.rb +25 -0
  186. data/spec/cloudrider/protosite_spec.rb +63 -0
  187. data/vanilla/.bowerrc +4 -0
  188. data/vanilla/.editorconfig +33 -0
  189. data/vanilla/.ember-cli +9 -0
  190. data/vanilla/.gitignore +17 -0
  191. data/vanilla/.jshintrc +32 -0
  192. data/vanilla/.travis.yml +16 -0
  193. data/vanilla/Brocfile.js +20 -0
  194. data/vanilla/README.md +51 -0
  195. data/vanilla/app/app.js +16 -0
  196. data/vanilla/app/components/.gitkeep +0 -0
  197. data/vanilla/app/controllers/.gitkeep +0 -0
  198. data/vanilla/app/controllers/admin.coffee +5 -0
  199. data/vanilla/app/helpers/.gitkeep +0 -0
  200. data/vanilla/app/index.html +21 -0
  201. data/vanilla/app/models/.gitkeep +0 -0
  202. data/vanilla/app/router.js +11 -0
  203. data/vanilla/app/routes/.gitkeep +0 -0
  204. data/vanilla/app/styles/.gitkeep +0 -0
  205. data/vanilla/app/styles/app.css +3 -0
  206. data/vanilla/app/templates/.gitkeep +0 -0
  207. data/vanilla/app/templates/application.hbs +3 -0
  208. data/vanilla/app/templates/components/.gitkeep +0 -0
  209. data/vanilla/app/views/.gitkeep +0 -0
  210. data/vanilla/bower.json +17 -0
  211. data/vanilla/config/environment.js +47 -0
  212. data/vanilla/package.json +39 -0
  213. data/vanilla/public/.gitkeep +0 -0
  214. data/vanilla/public/crossdomain.xml +15 -0
  215. data/vanilla/public/robots.txt +3 -0
  216. data/vanilla/testem.json +11 -0
  217. data/vanilla/tests/.jshintrc +74 -0
  218. data/vanilla/tests/helpers/resolver.js +11 -0
  219. data/vanilla/tests/helpers/start-app.js +25 -0
  220. data/vanilla/tests/index.html +45 -0
  221. data/vanilla/tests/test-helper.js +12 -0
  222. data/vanilla/tests/unit/.gitkeep +0 -0
  223. data/vanilla/tests/unit/controllers/admin-test.coffee +12 -0
  224. data/vanilla/vendor/.gitkeep +0 -0
  225. metadata +189 -5
  226. data/generica/app/views/layouts/application.html.erb +0 -14
  227. data/lib/cloudrider/master_context.rb +0 -105
@@ -0,0 +1,11 @@
1
+ .somesort-of-request
2
+ button.button.secondary.capitalize click="displayModal 'login'"
3
+ tr-span en="login if you have an account"
4
+ .somesort-of-request
5
+ button.button.secondary.capitalize click="displayModal 'register'"
6
+ tr-span en="or register an account"
7
+ .somesort-of-request
8
+ button.button.secondary.capitalize click="toggleOfferForm"
9
+ tr-span en="or make anonymous offer"
10
+ .the-form class=showOfferForm::hidden
11
+ == partial "products/product/offers/offer-form"
@@ -0,0 +1,55 @@
1
+ form-for errors=failureReason submit="formSubmitted"
2
+ legend.form-legend
3
+ tr-span en="new offer"
4
+ .input-section attr-name="fromCompany"
5
+ label.form-label
6
+ span.capitalize.white
7
+ span.asterisk
8
+ tr-span en="your company name"
9
+ Ember.TextField value=model.fromCompany type="text" placeholder="Acme Purchase Co."
10
+
11
+ .input-section attr-name="contactPerson"
12
+ label.form-label
13
+ span.capitalize.white
14
+ tr-span en="your name"
15
+ Ember.TextField value=model.contactPerson type="text" placeholder="Jack Smith"
16
+
17
+ .input-section attr-name="senderEmail"
18
+ label.form-label
19
+ span.capitalize.white
20
+ span.asterisk
21
+ tr-span en="your company email"
22
+ Ember.TextField value=model.senderEmail type="email" placeholder="ex. jsmith@gmail.com"
23
+
24
+ .input-section attr-name="phoneNumber"
25
+ label.form-label
26
+ span.capitalize.white
27
+ tr-span en="your call back number"
28
+ Ember.TextField value=model.phoneNumber type="text" placeholder="(555) 123 - 1234"
29
+
30
+ .input-section attr-name="companyAddress"
31
+ label.form-label
32
+ span.capitalize.white
33
+ tr-span en="where is your company?"
34
+ span.parantheses
35
+ tr-span en="so the seller has an idea who he is dealing with"
36
+ Ember.TextField value=model.companyAddress type="text" placeholder="1234 Main Street, Los Angeles, California"
37
+
38
+ .input-section attr-name="priceTerms"
39
+ label.form-label
40
+ span.capitalize.white
41
+ span.asterisk
42
+ tr-span en="offer price terms"
43
+ Ember.TextField value=model.priceTerms type="text" placeholder="$0.12/lb FAS Los Angeles"
44
+
45
+ .input-section attr-name="message"
46
+ label.form-label
47
+ span.capitalize.white
48
+ tr-span en="anything else?"
49
+ Ember.TextArea value=model.message
50
+
51
+ .button-forms
52
+ promise-button model=model class="button"
53
+ span.capitalize
54
+ i.fa.fa-check
55
+ tr-span en="submit"
@@ -0,0 +1,37 @@
1
+ .products-product-offers-new
2
+ if alreadySubmitted
3
+ .row
4
+ .small-12.columns
5
+ h2.thank-you-card.text-center
6
+ tr-span en="your message has been submitted"
7
+ h2.go-back.text-center
8
+ link-to "products.product.show" model.product.id
9
+ tr-span en="go back"
10
+
11
+ else
12
+ .row
13
+ .small-12.columns
14
+ h3.go-back.capitalize
15
+ link-to "products.product.show" model.product.id
16
+ i.fa.fa-chevron-circle-left
17
+ tr-span en="back to listing"
18
+ .row
19
+ .small-12.medium-10.large-8.columns.end
20
+ products-showcase id="products" products=productPlural
21
+ .row
22
+ .small-12.medium-10.large-4.large-push-8.columns
23
+ .offers-summary
24
+ h4.section-title
25
+ tr-span en="existing offers"
26
+ ul.offers.small-block-grid-1.medium-block-1.large-block-grid-1
27
+ each offer in model.product.offers
28
+ li
29
+ .offer
30
+ .price= offer.priceTerms
31
+ .created-at= offer.createdAt
32
+
33
+ .small-12.medium-10.large-8.large-pull-4.columns.end
34
+ if userLoggedIn
35
+ == partial "products/product/offers/offer-form"
36
+ else
37
+ == partial "products/product/offers/anonymous-form"
@@ -68,4 +68,29 @@
68
68
  tr-span en="related files"
69
69
  each attachment in product.attachments
70
70
  a href=attachment.fileUrl
71
- span.spacebar= attachment.fileName
71
+ span.spacebar= attachment.fileName
72
+
73
+ .row
74
+ .small-6.columns
75
+ link-to "products.product.offers.new" product.id class="action"
76
+ tr-span en="Make public offer"
77
+ .small-6.columns
78
+ .action
79
+ tr-span en="Directly contact seller to make a private offer"
80
+ .contact-info
81
+ .company
82
+ span.bold.colon
83
+ tr-span en="seller"
84
+ span= product.user.companyName
85
+ .email
86
+ span.bold.colon
87
+ tr-span en="email"
88
+ span= product.user.email
89
+ .phone
90
+ span.bold.colon
91
+ tr-span en="phone"
92
+ span= product.user.phoneNumber
93
+
94
+ .row
95
+ .small-12.columns
96
+ offers-summary offers=product.offers
@@ -0,0 +1,24 @@
1
+ section#user
2
+ .row
3
+ .small-12.columns
4
+ h1.capitalize
5
+ link-to "users"
6
+ tr-span en="user panel"
7
+
8
+ .row.admin-nav-tabs
9
+ .small-4.medium-4.large-2.columns
10
+ link-to "users.products.index" class="admin-nav-tab"
11
+ span.capitalize
12
+ tr-span en="my listings"
13
+ .small-4.medium-4.large-2.columns
14
+ link-to "users.products.new" class="admin-nav-tab"
15
+ span.capitalize
16
+ tr-span en="new listing"
17
+ .small-4.medium-4.large-2.columns.end
18
+ link-to "users.offers.index" class="admin-nav-tab"
19
+ span.capitalize
20
+ tr-span en="my offers"
21
+
22
+ .row
23
+ .small-12.columns
24
+ == outlet
@@ -0,0 +1,3 @@
1
+ h4 welcome
2
+
3
+ p.todo TODO: analytics dashboard goes here
@@ -0,0 +1,25 @@
1
+ .row.admin-messages-index
2
+ .small-12.columns
3
+ if offers.isPending
4
+ .admin-message-slice
5
+ i.fa.fa-cog.fa-spin
6
+ span.prespace
7
+ tr-span en="now loading"
8
+ else
9
+ each offer in offers
10
+ == render "users/offers/slice" offer
11
+ else
12
+ .admin-message-slice
13
+ i.fa.fa-times
14
+ span.prespace
15
+ tr-span en="no one has made you an offer"
16
+
17
+ .row
18
+ .small-4.medium-3.large-2.columns
19
+ span.bold.colon
20
+ tr-span en="offers"
21
+ span.prespace= offers.length
22
+
23
+ .row
24
+ .small-12.columns
25
+ fancy-paginator per=per page=page metadatum=metadatum
@@ -0,0 +1,31 @@
1
+ .admin-message-slice
2
+ .actions
3
+ .view
4
+ i.fa.fa-user
5
+ span.prespace= model.fromCompany
6
+ span.predash= model.senderEmail
7
+ .date
8
+ span.time-created= model.createdAt
9
+
10
+ .summary
11
+ .media-subject
12
+ span.bold= model.priceTerms
13
+ span.spacebar.prespace -
14
+ link-to "products.product.show" model.product.id
15
+ span= model.product.material
16
+
17
+ .media-text= model.message
18
+ .media-extras
19
+ dl
20
+ if model.phoneNumber
21
+ dt
22
+ tr-span en="phone number"
23
+ dd= model.phoneNumber
24
+ if model.contactPerson
25
+ dt
26
+ tr-span en="contact person"
27
+ dd= model.contactPerson
28
+ if model.companyAddress
29
+ dt
30
+ tr-span en="company location"
31
+ dd= model.companyAddress
@@ -0,0 +1,82 @@
1
+ .row
2
+ .small-6.medium-4.large-2.columns.end
3
+ link-to "users.products.index" class="button expand secondary"
4
+ i.fa.fa-chevron-left
5
+ span.capitalize.bold
6
+ tr-span en="back"
7
+
8
+ .row.admin-products-new
9
+ form-for errors=failureReason submit="formSubmitted"
10
+ .small-12.columns
11
+ fieldset
12
+ legend.capitalize.bold
13
+ tr-span en="edit listing core"
14
+ .input-section attr-name="material"
15
+ label.form-label
16
+ span.asterisk
17
+ tr-span en="listing name"
18
+ Ember.TextField name="material" value=usersProduct.material placeholder="hot dog"
19
+ .input-section attr-name="sku"
20
+ label.form-label
21
+ tr-span en="external reference number"
22
+ Ember.TextField name="sku" value=usersProduct.sku placeholder="XYZ-00123"
23
+ .input-section attr-name="price"
24
+ label.form-label
25
+ tr-span en="how much to sell for?"
26
+ Ember.TextField name="price" value=usersProduct.price placeholder="0.33 USD / pound FAS Long Beach Port"
27
+ .input-section attr-name="amount"
28
+ label.form-label
29
+ tr-span en="how much of it do you have?"
30
+ Ember.TextField name="amount" value=usersProduct.amount placeholder="200 tons every week"
31
+ .input-section attr-name="quality"
32
+ label.form-label
33
+ tr-span en="what sort of goods are these?"
34
+ Ember.TextField name="quality" value=usersProduct.quality placeholder="A grade, baled"
35
+ .input-section attr-name="place"
36
+ label.form-label
37
+ tr-span en="where is this?"
38
+ Ember.TextField name="place" value=usersProduct.place placeholder="Los Angeles"
39
+ .input-section attr-name="others"
40
+ label.form-label
41
+ tr-span en="anything else?"
42
+ Ember.TextArea name="others" value=usersProduct.others
43
+
44
+ .small-12.columns
45
+ fieldset
46
+ legend.capitalize.bold
47
+ tr-span en="existing pictures"
48
+ block-grid-pictures pictures=model.pictures
49
+
50
+ .small-12.columns
51
+ fieldset
52
+ legend.capitalize.bold
53
+ tr-span en="upload more pictures"
54
+ .input-section attr-name="pictures"
55
+ label.form-label
56
+ span.asterisk
57
+ tr-span en="your listing needs at least 1 picture"
58
+ span.parantheses
59
+ tr-span en="the first picture will be displayed in the showcase"
60
+ files-field name="pictures" files=usersProduct.pictures class="form-control upload-control"
61
+ .attached-pictures
62
+ pictures-group pictures=usersProduct.pictures
63
+
64
+ .small-12.columns
65
+ fieldset
66
+ legend.capitalize.bold
67
+ tr-span en="categorize"
68
+ .input-section attr-name="taxons"
69
+ label.form-label
70
+ tr-span en="select appropriate category tags for this product"
71
+ tree-taxon-wrapper taxons=rootTaxons activeTaxons=activeTaxons
72
+
73
+ .small-12.columns
74
+ fieldset
75
+ legend.capitalize.bold
76
+ tr-span en="actions"
77
+ .actions.row
78
+ .small-6.columns.end
79
+ promise-button model=usersProduct class="button expand"
80
+ i.fa.fa-check
81
+ span.capitalize.bold
82
+ tr-span en="save"
@@ -0,0 +1,22 @@
1
+ .row
2
+ .small-12.medium-4.large-4.columns
3
+ link-to "users.products.new" class="button expand success"
4
+ span.spacebar
5
+ i.fa.fa-plus
6
+ tr-span en="new listing"
7
+
8
+ .row
9
+ .small-12.columns
10
+ each listing in products
11
+ == render "users/products/slice" listing
12
+ else
13
+ .admin-product-slice
14
+ i.fa.fa-cog.fa-spin
15
+ span.prespace
16
+ tr-span en="now loading"
17
+
18
+ .row
19
+ .small-4.medium-3.large-2.columns
20
+ span.bold.colon
21
+ tr-span en="products"
22
+ span.prespace= products.length
@@ -0,0 +1,28 @@
1
+ .row
2
+ .small-6.medium-4.large-2.columns.end
3
+ link-to "users.products.index" class="button expand secondary"
4
+ i.fa.fa-chevron-left
5
+ span.capitalize.bold
6
+ tr-span en="back"
7
+ .row.admin-products-new
8
+ .small-12.columns
9
+ form-for errors=failureReason submit="formSubmitted"
10
+ fieldset
11
+ legend.capitalize.bold
12
+ tr-span en="new listing"
13
+
14
+ == partial "admin/products/form-core"
15
+
16
+ .input-section attr-name="taxons"
17
+ label.form-label
18
+ tr-span en="select appropriate category tags for this product"
19
+ tree-taxon-wrapper taxons=rootTaxons activeTaxons=activeTaxons
20
+
21
+ .actions.row
22
+ .small-6.columns.end
23
+ promise-button model=model class="button expand"
24
+ i.fa.fa-check
25
+ span.capitalize.bold
26
+ tr-span en="submit"
27
+
28
+
@@ -0,0 +1,27 @@
1
+ .admin-product-slice
2
+ .actions
3
+ .view
4
+ link-to "users.product.edit" model.id
5
+ i.fa.fa-eye
6
+ span.prespace= model.material
7
+ if model.hasShowOrder
8
+ span #
9
+ span= model.showcaseOrder
10
+ .edit
11
+ link-to "users.product.edit" model.id
12
+ i.fa.fa-edit
13
+ span.prespace
14
+ tr-span en="edit"
15
+ .delete
16
+ .pointer click="requestDelete"
17
+ i.fa.fa-times
18
+ span.prespace
19
+ tr-span en="delete"
20
+
21
+ link-to "users.product.edit" model.id class="summary"
22
+ .media-object
23
+ img.product-image.th src=model.pictures.firstObject.picUrl
24
+
25
+ .media-text
26
+ .summary-text= model.roughSummary
27
+ .created-date= model.createdAt
@@ -18,8 +18,12 @@
18
18
  @import 'apiv1/components/block-grid-pictures';
19
19
  @import 'apiv1/components/fancy-paginator';
20
20
  @import 'apiv1/components/preload-billboard';
21
+ @import 'apiv1/components/taggable-field';
22
+ @import 'apiv1/components/pictures-group';
23
+ @import 'apiv1/components/offers-summary';
21
24
  @import "apiv1/modals/login";
22
25
  @import 'apiv1/products/product/show';
26
+ @import 'apiv1/products/product/offers/new';
23
27
 
24
28
  body {
25
29
  background: {
@@ -0,0 +1,20 @@
1
+ .offers-summary {
2
+ .section-title {
3
+ text-transform: capitalize;
4
+ font-size: 1.2rem;
5
+ padding-bottom: 1rem;
6
+ padding-top: 1rem;
7
+ }
8
+ .offer {
9
+ background: #ddd;
10
+ padding-left: 0.5rem;
11
+ padding-right: 0.5rem;
12
+ }
13
+ .price {
14
+ font-size: 0.9rem;
15
+ }
16
+ .created-at {
17
+ font-size: 0.6rem;
18
+ color: #888;
19
+ }
20
+ }
@@ -0,0 +1,32 @@
1
+ .pictures-group {
2
+ .thumbnail {
3
+ margin-bottom: 1rem;
4
+ background: #fff;
5
+ }
6
+ .picture-chunk {
7
+ @include display-flex;
8
+ @include flex-direction(row);
9
+ @include justify-content(space-between);
10
+ }
11
+ .dialogue,
12
+ .avatar,
13
+ .cancel-button {
14
+ padding: 1rem 1rem;
15
+ }
16
+ .dialogue,
17
+ .cancel-button {
18
+ @include display-flex;
19
+ @include flex-direction(column);
20
+ @include justify-content(center);
21
+ }
22
+ .cancel-button {
23
+ color: darken(red, 15%);
24
+ }
25
+ .avatar {
26
+ text-align: center;
27
+ }
28
+ img.img-thumbnail {
29
+ height: 55px;
30
+ max-width: 55px;
31
+ }
32
+ }