cloudrider 0.3.0 → 0.3.20

Sign up to get free protection for your applications and to get access to all the features.
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
+