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,13 @@
1
+ class Apiv1::Products::OfferMessageFactory < Users::Products::OfferFactory
2
+ def initialize(params)
3
+ @params = params
4
+ end
5
+
6
+ private
7
+ def _offer_params
8
+ _base_offer_params.merge product: _product
9
+ end
10
+ def _base_offer_params
11
+ @params.permit :from_company, :sender_email, :phone_number, :company_address, :price_terms, :notes
12
+ end
13
+ end
@@ -24,6 +24,8 @@ class Apiv1::ProductsMachine
24
24
  lambda do |product|
25
25
  if _query.present?
26
26
  _cached_elasticsearch_product_query product
27
+ elsif _user.present?
28
+ _user.products
27
29
  else
28
30
  product
29
31
  end
@@ -46,7 +48,7 @@ class Apiv1::ProductsMachine
46
48
  def _process_taxons
47
49
  lambda do |product|
48
50
  if _taxon_ids.present?
49
- @taxon_query ||= product.involving_taxon_ids(_taxon_ids)
51
+ product.intersection_of_taxon_ids(_taxon_ids)
50
52
  else
51
53
  product
52
54
  end
@@ -55,11 +57,15 @@ class Apiv1::ProductsMachine
55
57
  def _unify_type
56
58
  -> (t) { t.respond_to?(:records) ? t.records.load : t }
57
59
  end
60
+ def _user
61
+ Admin::User.find_by_id params[:user_id]
62
+ end
58
63
  def _query
59
64
  params[:query]
60
65
  end
61
66
  def _taxon_ids
62
- params[:taxons]
67
+ return params[:taxons].flatten if params[:taxons].respond_to? :flatten
68
+ params[:taxons].to_s.split(/\s*,\s*/)
63
69
  end
64
70
  def _page
65
71
  params[:page] || 0
@@ -73,7 +73,7 @@ class Apiv1::Taxon < ActiveRecord::Base
73
73
  end
74
74
 
75
75
  def listings
76
- Apiv1::Product.belonging_to_taxon self
76
+ Apiv1::Product.union_of_taxon_ids self.id
77
77
  end
78
78
 
79
79
  def to_ember_hash
@@ -0,0 +1,22 @@
1
+ class Apiv1::Users::ProductFactory < Admin::ProductFactory
2
+
3
+ attr_accessor :user
4
+ def initialize(user, input_params)
5
+ @user = user
6
+ super input_params
7
+ end
8
+ def save!
9
+ _product.save!
10
+ _product_relationship.save!
11
+ end
12
+ private
13
+ def _product
14
+ @product ||= Apiv1::Product.new _product_params
15
+ end
16
+ def _product_relationship
17
+ @relationship ||= Apiv1::Users::ProductRelationship.new product: _product, user: user
18
+ end
19
+ def _product_params
20
+ @params
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: apiv1_users_product_relationships
4
+ #
5
+ # id :integer not null, primary key
6
+ # user_id :integer
7
+ # product_id :integer
8
+ # created_at :datetime
9
+ # updated_at :datetime
10
+ #
11
+
12
+ class Apiv1::Users::ProductRelationship < ActiveRecord::Base
13
+ self.table_name = 'apiv1_users_product_relationships'
14
+ belongs_to :user,
15
+ class_name: 'Admin::User'
16
+
17
+ belongs_to :product,
18
+ class_name: 'Apiv1::Product'
19
+ end
@@ -0,0 +1,40 @@
1
+ class Users::Products::OfferFactory
2
+ delegate :save!,
3
+ to: :_offer
4
+ def initialize(user, params)
5
+ @user, @params = user, params
6
+ end
7
+ def satisfy_specifications?
8
+ _offer.valid?
9
+ end
10
+ def offer_hash
11
+ { offer: _offer.to_ember_hash }
12
+ end
13
+ def error_hash
14
+ _offer.errors.to_h
15
+ end
16
+ def offer
17
+ _offer
18
+ end
19
+ private
20
+ def _offer
21
+ @offer ||= Apiv1::OfferMessage.new _offer_params
22
+ end
23
+ def _offer_params
24
+ _base_offer_params.merge(_user_params).merge product: _product
25
+ end
26
+ def _user_params
27
+ {
28
+ from_company: @user.company_name,
29
+ sender_email: @user.email,
30
+ phone_number: @user.phone_number,
31
+ company_address: @user.address
32
+ }
33
+ end
34
+ def _product
35
+ @product ||= Apiv1::Product.find @params[:product_id]
36
+ end
37
+ def _base_offer_params
38
+ @params.permit(:price_terms, :notes)
39
+ end
40
+ end
@@ -3,7 +3,7 @@ preload-billboard
3
3
  <% case nav_style %>
4
4
  <% when :top, :material %>
5
5
  #canvas-menu-top
6
- site-nav
6
+ site-nav action="displayModal"
7
7
  #page-wrapper
8
8
  .site-content
9
9
  .not-site-footer
@@ -11,7 +11,7 @@ preload-billboard
11
11
  site-footer action="displayModal"
12
12
  <% when :left %>
13
13
  #canvas-menu-left
14
- site-nav
14
+ site-nav action="displayModal"
15
15
  #page-wrapper
16
16
  .small-time-header.hide-for-large-up.pointer click=toggleCanvasShift
17
17
  i.fa.fa-bars.fa-3x
@@ -0,0 +1,33 @@
1
+ <% case snf_style %>
2
+ <% when "top2x" %>
3
+ .row
4
+ .small-12.columns.taxons
5
+ tree-taxon-wrapper activeTaxons=activeTaxons taxons=taxons
6
+
7
+ .small-12.columns.query
8
+ .row.collapse
9
+ .small-10.columns
10
+ Ember.TextField value=searchQuery class="full-width" name="search"
11
+ .small-2.columns
12
+ button.button.postfix click="search"
13
+ i.fa.fa-search
14
+
15
+ .row
16
+ .small-12.columns
17
+ == yield
18
+
19
+ <% when "lefttop" %>
20
+ .row
21
+ .small-12.medium-4.large-3.column.taxons
22
+ tree-taxon-wrapper activeTaxons=activeTaxons taxons=taxons
23
+ .small-12.medium-8.large-9.column.query
24
+ .row.collapse
25
+ .small-10.columns
26
+ Ember.TextField value=searchQuery class="full-width" name="search"
27
+ .small-2.columns
28
+ button.button.postfix click="search"
29
+ i.fa.fa-search
30
+ .row
31
+ .small-12.columns
32
+ == yield
33
+ <% end %>
@@ -1,4 +1,12 @@
1
1
  <% case nav_style %>
2
+ <% when :craigslist %>
3
+ .row
4
+ .small-12.columns
5
+ .space-between
6
+ link-to "index" class="button-like"
7
+ span <%= my_company_name %>
8
+ a.pointer.button-like click="displayModal 'login'"
9
+ tr-span en="my account"
2
10
  <% when :left %>
3
11
  .nav-button
4
12
  link-to "index" (query-params anchor="") class="side-nav"
@@ -0,0 +1,11 @@
1
+ <% case field_style %>
2
+ <% when :lastfm %>
3
+ each tag in tags
4
+ .taggable-field-tag
5
+ .centered-fully
6
+ span.colon= tag.taxonName
7
+ span= tag.id
8
+ Ember.TextField class="taggable-textfield" value=text
9
+ <% when :exhentai %>
10
+ Ember.TextField class="taggable-textfield" value=text
11
+ <% end %>
@@ -0,0 +1,36 @@
1
+ .row.apiv1-login-modal
2
+ .action-cancel.pointer click="closeModal"
3
+ i.fa.fa-times
4
+ form-for errors=failureReason submit="formSubmitted"
5
+ .small-12.columns
6
+ fieldset
7
+ legend
8
+ tr-span en="user login"
9
+ <% if registerable? %>
10
+ h3.alt-actions
11
+ a.pointer click="displayModal 'register'"
12
+ span.capitalize.spacebar
13
+ tr-span en="no account?"
14
+ span.capitalize
15
+ tr-span en="register here"
16
+ <% end %>
17
+ .input-section attr-name="email"
18
+ label.form-label
19
+ tr-span en="email"
20
+ Ember.TextField name="email" value=session.email
21
+ .input-section attr-name="password"
22
+ label.form-label
23
+ tr-span en="password"
24
+ Ember.TextField name="password" value=session.password type="password"
25
+
26
+ .small-6.columns
27
+ .input-section
28
+ promise-button model=session class="button expand"
29
+ i.fa.fa-check
30
+ tr-span en="submit"
31
+
32
+ .small-6.columns
33
+ .input-section
34
+ button.button.expand.alert click="closeModal"
35
+ i.fa.fa-times
36
+ tr-span en="cancel"
@@ -0,0 +1,4 @@
1
+ <% if has_cookie_splash? %>
2
+ cookie-splash
3
+ <% end %>
4
+ == outlet
@@ -0,0 +1,17 @@
1
+ <% case theme %>
2
+ <% when :craigslist %>
3
+ search-and-filter taxons=taxons action="search"
4
+ fancy-paginator page=page per=per metadatum=metadatum
5
+
6
+ products-catalog products=products
7
+
8
+ fancy-paginator page=page per=per metadatum=metadatum
9
+ <% else %>
10
+ search-and-filter taxons=taxons action="search"
11
+
12
+ fancy-paginator page=page per=per metadatum=metadatum
13
+
14
+ products-catalog products=products
15
+
16
+ fancy-paginator page=page per=per metadatum=metadatum
17
+ <% end %>
@@ -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"
@@ -0,0 +1,108 @@
1
+ .products-product-show
2
+ .row
3
+ .small-12.columns.goback
4
+ link-to "products.index"
5
+ .prespace
6
+ tr-span en="back to index"
7
+ .row
8
+ .small-12.columns
9
+ h2.material-title
10
+ tr-span en=product.material
11
+ if product.sku
12
+ span.predash= product.sku
13
+
14
+ .row
15
+ .small-12.medium-4.large-3.columns
16
+ a href=mainPic.picUrl target="blank"
17
+ img.main-image.th src=mainPic.picUrl
18
+ .small-12.medium-8.large-9.columns
19
+ .row
20
+ .small-12.columns
21
+ dl.product-specs
22
+ if product.amount
23
+ dt.upcase
24
+ tr-span en="quantity"
25
+ dd
26
+ span.spacebar= product.amount
27
+ if product.price
28
+ dt.upcase
29
+ tr-span en="price"
30
+ dd
31
+ span= product.price
32
+ if product.place
33
+ dt.upcase
34
+ tr-span en="origin"
35
+ dd
36
+ span= product.place
37
+ if product.quality
38
+ dt.upcase
39
+ tr-span en="quality"
40
+ dd
41
+ span= product.quality
42
+ if product.others
43
+ dt.upcase
44
+ tr-span en="description"
45
+ dd
46
+ tr-span en=product.others
47
+
48
+ if product.taxons
49
+ .row
50
+ .small-12.columns
51
+ h4.tags.capitalize
52
+ tr-span en="category tags"
53
+ .taxon-tags
54
+ each taxon in product.taxons
55
+ span.tag= taxon.taxonName
56
+ .row
57
+ .small-12.columns
58
+ ul.pics.small-block-grid-3.medium-block-grid-6.large-block-grid-9
59
+ each picture in product.pictures
60
+ li.pointer click="selectMainPic picture"
61
+ img.other-image.th src=picture.thumbUrl
62
+
63
+ if product.attachments
64
+ .row
65
+ .small-12.columns.files
66
+ h4.capitalize.bold
67
+ tr-span en="related files"
68
+ each attachment in product.attachments
69
+ a href=attachment.fileUrl
70
+ span.spacebar= attachment.fileName
71
+ <% if online_offerable? %>
72
+ .row
73
+ .small-12.columns
74
+ h4.section-title
75
+ tr-span en="offers"
76
+ ul.offers.small-block-grid-2.medium-block-4.large-block-grid-6
77
+ each offer in product.offers
78
+ li
79
+ .offer
80
+ .price= offer.priceTerms
81
+ .created-at= offer.createdAt
82
+ .row
83
+ .small-6.columns
84
+ link-to "products.product.offers.new" product.id class="action"
85
+ tr-span en="Make public offer"
86
+ .small-6.columns
87
+ .action
88
+ tr-span en="Directly contact seller to make a private offer"
89
+ .contact-info
90
+ .company
91
+ span.bold.colon
92
+ tr-span en="seller"
93
+ span= product.user.companyName
94
+ .email
95
+ span.bold.colon
96
+ tr-span en="email"
97
+ span= product.user.email
98
+ .phone
99
+ span.bold.colon
100
+ tr-span en="phone"
101
+ span= product.user.phoneNumber
102
+
103
+ .row
104
+ .small-12.columns
105
+ offers-summary offers=product.offers
106
+ <% end %>
107
+
108
+