cloudrider 0.3.0 → 0.3.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/cloudrider.gemspec +1 -0
- data/generica/.gitignore +18 -0
- data/generica/Gemfile +8 -1
- data/generica/Gemfile.lock +3 -0
- data/generica/app/assets/javascripts/apiv1.js.ls +6 -1
- data/generica/app/assets/javascripts/components/offers-summary.js.em +2 -0
- data/generica/app/assets/javascripts/components/picture-chunk.js.em +17 -0
- data/generica/app/assets/javascripts/components/pictures-group.js.em +21 -0
- data/generica/app/assets/javascripts/components/search-and-filter.js.em +4 -0
- data/generica/app/assets/javascripts/components/site-nav.js.em +5 -1
- data/generica/app/assets/javascripts/components/taggable-field.js.em +28 -0
- data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +6 -2
- data/generica/app/assets/javascripts/controllers/index_controller.js.em +19 -2
- data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +23 -9
- data/generica/app/assets/javascripts/controllers/modals/register_controller.js.em +24 -0
- data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +23 -13
- data/generica/app/assets/javascripts/controllers/products/product/offers/new_controller.js.em +17 -0
- data/generica/app/assets/javascripts/controllers/users/offers/index_controller.js.em +10 -0
- data/generica/app/assets/javascripts/controllers/users/product/edit_controller.js.em +31 -0
- data/generica/app/assets/javascripts/controllers/users/products/index_controller.js.em +8 -0
- data/generica/app/assets/javascripts/controllers/users/products/new_controller.js.em +22 -0
- data/generica/app/assets/javascripts/controllers/users/products/slice_controller.js.em +4 -0
- data/generica/app/assets/javascripts/helpers/filte_previewer.js.ls +21 -0
- data/generica/app/assets/javascripts/helpers/listing_picture.js.em +17 -0
- data/generica/app/assets/javascripts/models/offer.js.em +9 -8
- data/generica/app/assets/javascripts/models/user.js.em +12 -0
- data/generica/app/assets/javascripts/models/users/product.js.em +12 -0
- data/generica/app/assets/javascripts/routes/application_route.js.em +10 -2
- data/generica/app/assets/javascripts/routes/products/index_route.js.em +23 -2
- data/generica/app/assets/javascripts/routes/products/product/offers/new_route.js.em +18 -0
- data/generica/app/assets/javascripts/routes/users/offers/index_route.js.em +1 -0
- data/generica/app/assets/javascripts/routes/users/product_route.js.em +3 -0
- data/generica/app/assets/javascripts/routes/users/products/index_route.js.em +3 -0
- data/generica/app/assets/javascripts/routes/users/products/new_route.js.em +3 -0
- data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +2 -0
- data/generica/app/assets/javascripts/templates/admin/products/_form-core.emblem +44 -0
- data/generica/app/assets/javascripts/templates/admin/products/new.emblem +4 -42
- data/generica/app/assets/javascripts/templates/components/offers-summary.emblem +9 -0
- data/generica/app/assets/javascripts/templates/components/picture-chunk.emblem +9 -0
- data/generica/app/assets/javascripts/templates/components/pictures-group.emblem +6 -0
- data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +5 -1
- data/generica/app/assets/javascripts/templates/components/taggable-field.emblem +1 -0
- data/generica/app/assets/javascripts/templates/modals/register.emblem +57 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/_anonymous-form.emblem +11 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/_offer-form.emblem +55 -0
- data/generica/app/assets/javascripts/templates/products/product/offers/new.emblem +37 -0
- data/generica/app/assets/javascripts/templates/products/product/show.emblem +26 -1
- data/generica/app/assets/javascripts/templates/users.emblem +24 -0
- data/generica/app/assets/javascripts/templates/users/index.emblem +3 -0
- data/generica/app/assets/javascripts/templates/users/offers/index.emblem +25 -0
- data/generica/app/assets/javascripts/templates/users/offers/slice.emblem +31 -0
- data/generica/app/assets/javascripts/templates/users/product/edit.emblem +82 -0
- data/generica/app/assets/javascripts/templates/users/products/index.emblem +22 -0
- data/generica/app/assets/javascripts/templates/users/products/new.emblem +28 -0
- data/generica/app/assets/javascripts/templates/users/products/slice.emblem +27 -0
- data/generica/app/assets/stylesheets/apiv1/_application.css.scss +4 -0
- data/generica/app/assets/stylesheets/apiv1/components/_offers-summary.css.scss +20 -0
- data/generica/app/assets/stylesheets/apiv1/components/_pictures-group.css.scss +32 -0
- data/generica/app/assets/stylesheets/apiv1/components/_taggable-field.css.scss +32 -0
- data/generica/app/assets/stylesheets/apiv1/products/product/offers/_new.css.scss +8 -0
- data/generica/app/controllers/admin/base_controller.rb +1 -1
- data/generica/app/controllers/admin/sessions/destroy_controller.rb +16 -0
- data/generica/app/controllers/apiv1/offers/create_controller.rb +30 -0
- data/generica/app/controllers/apiv1/offers/index_controller.rb +22 -0
- data/generica/app/controllers/apiv1/offers/show_controller.rb +12 -0
- data/generica/app/controllers/apiv1/products/destroy_controller.rb +6 -0
- data/generica/app/controllers/apiv1/products/index_controller.rb +8 -2
- data/generica/app/controllers/apiv1/products/show_controller.rb +7 -3
- data/generica/app/controllers/apiv1/taxons/index_controller.rb +5 -1
- data/generica/app/controllers/apiv1/users/create_controller.rb +17 -0
- data/generica/app/controllers/apiv1/users/show_controller.rb +12 -0
- data/generica/app/controllers/apiv1/users_controller.rb +9 -0
- data/generica/app/controllers/application_controller.rb +3 -0
- data/generica/app/controllers/users/offers/create_controller.rb +26 -0
- data/generica/app/controllers/users/products/create_controller.rb +26 -0
- data/generica/app/controllers/users/products/update_controller.rb +35 -0
- data/generica/app/mailers/apiv1/aggregate_mailer.rb +13 -0
- data/generica/app/mailers/apiv1/aggregate_mailer/summary_context.rb +121 -0
- data/generica/app/mailers/apiv1/notifications_mailer.rb +19 -0
- data/generica/app/mailers/apiv1/notifications_mailer/new_offer_context.rb +53 -0
- data/generica/app/models/admin/user.rb +43 -2
- data/generica/app/models/apiv1/attachment.rb +2 -0
- data/generica/app/models/apiv1/email_object.rb +35 -0
- data/generica/app/models/apiv1/email_request.rb +107 -0
- data/generica/app/models/apiv1/offer_message.rb +53 -0
- data/generica/app/models/apiv1/offer_postboy.rb +33 -0
- data/generica/app/models/apiv1/picture.rb +2 -0
- data/generica/app/models/apiv1/product.rb +28 -6
- data/generica/app/models/apiv1/products/offer_message_factory.rb +13 -0
- data/generica/app/models/apiv1/products_machine.rb +8 -2
- data/generica/app/models/apiv1/taxon.rb +1 -1
- data/generica/app/models/apiv1/users/product_factory.rb +22 -0
- data/generica/app/models/apiv1/users/product_relationship.rb +19 -0
- data/generica/app/models/users/products/offer_factory.rb +40 -0
- data/generica/app/varissets/javascripts/templates/application.emblem.erb +2 -2
- data/generica/app/varissets/javascripts/templates/components/offers-overview.emblem.erb +1 -0
- data/generica/app/varissets/javascripts/templates/components/search-and-filter.emblem.erb +33 -0
- data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +8 -0
- data/generica/app/varissets/javascripts/templates/components/taggable-field.emblem.erb +11 -0
- data/generica/app/varissets/javascripts/templates/modals/login.emblem.erb +36 -0
- data/generica/app/varissets/javascripts/templates/products.emblem.erb +4 -0
- data/generica/app/varissets/javascripts/templates/products/index.emblem.erb +17 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/_anonymous-form.emblem.erb +11 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/_offer-form.emblem.erb +55 -0
- data/generica/app/varissets/javascripts/templates/products/product/offers/new.emblem.erb +37 -0
- data/generica/app/varissets/javascripts/templates/products/product/show.emblem.erb +108 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_offers-overview.css.scss.erb +3 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_offers_overview.css.scss.erb +3 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_search-and-filter.css.scss.erb +15 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_site-footer.css.scss.erb +23 -0
- data/generica/app/varissets/stylesheets/apiv1/components/_taggable-field.css.scss.erb +32 -0
- data/generica/app/views/apiv1/home/index.html.haml +3 -1
- data/generica/app/views/apiv1/layouts/application.html.haml +37 -2
- data/generica/config/{database.yml.erb → database.yml.str} +3 -3
- data/generica/config/email.yml +11 -0
- data/generica/config/email_slave.god +9 -0
- data/generica/config/initializers/premailer.rb +1 -0
- data/generica/config/initializers/squash.rb.erb +3 -0
- data/generica/config/nginx.conf.erb +4 -4
- data/generica/config/routes.rb +14 -0
- data/generica/db/migrate/20141114213427_add_user_rank_to_admin_users.rb +9 -0
- data/generica/db/migrate/20141114225019_create_apiv1_users_products.rb +9 -0
- data/generica/db/migrate/20141116053522_create_apiv1_offer_messages.rb +16 -0
- data/generica/db/migrate/20141116235011_add_deleted_at_to_apiv1_products.rb +5 -0
- data/generica/db/migrate/20141116235209_add_deleted_at_to_apiv1_offer_messages.rb +5 -0
- data/generica/db/migrate/20141116235651_add_deleted_at_to_apiv1_pictures.rb +5 -0
- data/generica/db/migrate/20141116235808_add_deleted_at_to_apiv1_attachments.rb +5 -0
- data/generica/db/migrate/20141127230304_create_apiv1_email_requests.rb +16 -0
- data/generica/db/migrate/20141127230455_create_apiv1_email_objects.rb +11 -0
- data/generica/lib/generica/assets_unretardifier.rb +32 -0
- data/generica/lib/generica/email_slave.rb +92 -0
- data/generica/lib/tasks/email_slave.rake +11 -0
- data/generica/lib/tasks/production.rake +1 -1
- data/generica/public/tests/bermese.jpg +0 -0
- data/generica/public/tests/chow.jpg +0 -0
- data/generica/public/tests/malamute.jpg +0 -0
- data/generica/public/tests/malamute2.JPG +0 -0
- data/generica/spec/controllers/apiv1/users/create_controller_spec.rb +17 -0
- data/generica/spec/controllers/users/products/create_controller_spec.rb +31 -0
- data/generica/spec/mailers/apiv1/aggregate_mailer_spec.rb +29 -0
- data/generica/spec/models/apiv1/email_request_spec.rb +4 -0
- data/generica/spec/models/apiv1/offer_postboy_spec.rb +22 -0
- data/generica/spec/models/apiv1/product_spec.rb +1 -0
- data/generica/spec/models/apiv1/products/offer_message_factory_spec.rb +37 -0
- data/generica/spec/models/apiv1/products_machine_spec.rb +77 -0
- data/generica/spec/models/apiv1/users/product_factory_spec.rb +47 -0
- data/generica/spec/models/users/products/offer_factory_spec.rb +38 -0
- data/generica/test/mailers/.keep +0 -0
- data/generica/test/mailers/previews/apiv1/aggregate_preview.rb +6 -0
- data/generica/test/mailers/previews/apiv1/notifications_preview.rb +5 -0
- data/lib/cloudrider.rb +1 -1
- data/lib/cloudrider/apiv1/base.rb +2 -2
- data/lib/cloudrider/apiv1/login_modal_emblem.rb +25 -0
- data/lib/cloudrider/apiv1/offers_anonymous_form_partial_emblem.rb +12 -0
- data/lib/cloudrider/apiv1/offers_new_emblem.rb +15 -0
- data/lib/cloudrider/apiv1/offers_overview_component.rb +8 -0
- data/lib/cloudrider/apiv1/offers_overview_sass.rb +8 -0
- data/lib/cloudrider/apiv1/product_show_emblem.rb +31 -0
- data/lib/cloudrider/apiv1/products_emblem.rb +11 -0
- data/lib/cloudrider/apiv1/products_index_emblem.rb +14 -0
- data/lib/cloudrider/apiv1/search_and_filter_component.rb +11 -0
- data/lib/cloudrider/apiv1/search_and_filter_sass.rb +11 -0
- data/lib/cloudrider/apiv1/site_footer_component.rb +7 -7
- data/lib/cloudrider/apiv1/site_footer_sass.rb +9 -0
- data/lib/cloudrider/application_commander.rb +46 -34
- data/lib/cloudrider/backend_commander.rb +15 -9
- data/lib/cloudrider/protofile.rb +18 -2
- data/lib/cloudrider/protosite.example.json +26 -0
- data/lib/cloudrider/protosite.rb +66 -0
- data/lib/cloudrider/serverside/base.rb +2 -2
- data/lib/cloudrider/serverside/database_yaml.rb +9 -4
- data/lib/cloudrider/serverside/nginx_conf.rb +7 -2
- data/lib/cloudrider/serverside/squash_ruby.rb +14 -0
- data/lib/cloudrider/serverside/unicorn_conf_ruby.rb +2 -1
- data/lib/cloudrider/version.rb +1 -1
- data/lib/cloudrider/web_firm.rb +16 -0
- data/lib/cloudrider/web_firm/component_architect.rb +23 -0
- data/lib/cloudrider/web_firm/page_designer.rb +13 -0
- data/lib/cloudrider/web_firm/project_lead.rb +30 -0
- data/lib/cloudrider/web_firm/scumbag_engineer.rb +40 -0
- data/lib/cloudrider/web_firm/support_intern.rb +113 -0
- data/lib/generators/cloudrider/server/server_generator.rb +4 -8
- data/lib/generators/cloudrider/website/website_generator.rb +25 -0
- data/spec/cloudrider/protosite_spec.rb +63 -0
- data/vanilla/.bowerrc +4 -0
- data/vanilla/.editorconfig +33 -0
- data/vanilla/.ember-cli +9 -0
- data/vanilla/.gitignore +17 -0
- data/vanilla/.jshintrc +32 -0
- data/vanilla/.travis.yml +16 -0
- data/vanilla/Brocfile.js +20 -0
- data/vanilla/README.md +51 -0
- data/vanilla/app/app.js +16 -0
- data/vanilla/app/components/.gitkeep +0 -0
- data/vanilla/app/controllers/.gitkeep +0 -0
- data/vanilla/app/controllers/admin.coffee +5 -0
- data/vanilla/app/helpers/.gitkeep +0 -0
- data/vanilla/app/index.html +21 -0
- data/vanilla/app/models/.gitkeep +0 -0
- data/vanilla/app/router.js +11 -0
- data/vanilla/app/routes/.gitkeep +0 -0
- data/vanilla/app/styles/.gitkeep +0 -0
- data/vanilla/app/styles/app.css +3 -0
- data/vanilla/app/templates/.gitkeep +0 -0
- data/vanilla/app/templates/application.hbs +3 -0
- data/vanilla/app/templates/components/.gitkeep +0 -0
- data/vanilla/app/views/.gitkeep +0 -0
- data/vanilla/bower.json +17 -0
- data/vanilla/config/environment.js +47 -0
- data/vanilla/package.json +39 -0
- data/vanilla/public/.gitkeep +0 -0
- data/vanilla/public/crossdomain.xml +15 -0
- data/vanilla/public/robots.txt +3 -0
- data/vanilla/testem.json +11 -0
- data/vanilla/tests/.jshintrc +74 -0
- data/vanilla/tests/helpers/resolver.js +11 -0
- data/vanilla/tests/helpers/start-app.js +25 -0
- data/vanilla/tests/index.html +45 -0
- data/vanilla/tests/test-helper.js +12 -0
- data/vanilla/tests/unit/.gitkeep +0 -0
- data/vanilla/tests/unit/controllers/admin-test.coffee +12 -0
- data/vanilla/vendor/.gitkeep +0 -0
- metadata +189 -5
- data/generica/app/views/layouts/application.html.erb +0 -14
- 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
|
-
|
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
|
@@ -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 @@
|
|
1
|
+
h3 offers-overview
|
@@ -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,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 %>
|
data/generica/app/varissets/javascripts/templates/products/product/offers/_anonymous-form.emblem.erb
ADDED
@@ -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"
|
data/generica/app/varissets/javascripts/templates/products/product/offers/_offer-form.emblem.erb
ADDED
@@ -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
|
+
|