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.
- 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,31 @@
|
|
|
1
|
+
class Apiv1.UsersProductEditController extends Ember.ObjectController
|
|
2
|
+
+computed model.taxons.@each
|
|
3
|
+
activeTaxons: ->
|
|
4
|
+
@get("model.taxons") or []
|
|
5
|
+
|
|
6
|
+
+computed model
|
|
7
|
+
rootTaxons: ->
|
|
8
|
+
@store.find "taxon", parent_id: null
|
|
9
|
+
|
|
10
|
+
+computed model.coreAttributes
|
|
11
|
+
usersProduct: ->
|
|
12
|
+
return if Ember.isBlank @model.id
|
|
13
|
+
@store.push "users_product", @model.get("coreAttributes")
|
|
14
|
+
|
|
15
|
+
redirectToIndex: ->
|
|
16
|
+
@transitionToRoute 'users.products.index'
|
|
17
|
+
notifySuccess: ->
|
|
18
|
+
Apiv1.Flash.register "success", "listing updated! Refresh your browser to see changes", 5000
|
|
19
|
+
successUpdate: (product) ->
|
|
20
|
+
@notifySuccess()
|
|
21
|
+
@redirectToIndex()
|
|
22
|
+
failedUpdate: (reason) ->
|
|
23
|
+
Apiv1.Flash.register "warning", "welp, you killed the server", 5000 if reason.status is 500
|
|
24
|
+
@failureReason = reason.responseJSON if reason.responseJSON
|
|
25
|
+
Apiv1.Flash.register "warning", "you're not authorized because #{@failureReason.message}", 5000 if reason.status is 401
|
|
26
|
+
|
|
27
|
+
actions:
|
|
28
|
+
formSubmitted: ->
|
|
29
|
+
@failureReason = null
|
|
30
|
+
@usersProduct.taxons = @activeTaxons.map (t) -> t.get("id")
|
|
31
|
+
@usersProduct.save().then(_.bind @successUpdate, @).catch(_.bind @failedUpdate, @)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class Apiv1.UsersProductsNewController extends Ember.ObjectController
|
|
2
|
+
activeTaxons: []
|
|
3
|
+
+computed model
|
|
4
|
+
rootTaxons: ->
|
|
5
|
+
@store.find "taxon", parent_id: null
|
|
6
|
+
|
|
7
|
+
redirectToIndex: ->
|
|
8
|
+
@transitionToRoute 'users.products.index'
|
|
9
|
+
notifySuccess: ->
|
|
10
|
+
Apiv1.Flash.register "success", "listing created!"
|
|
11
|
+
successfulSave: (product) ->
|
|
12
|
+
@notifySuccess()
|
|
13
|
+
@redirectToIndex()
|
|
14
|
+
failedSave: (reason) ->
|
|
15
|
+
Apiv1.Flash.register "warning", "please fill out the form before clicking submit", 5000 if reason.status is 500
|
|
16
|
+
@failureReason = reason.responseJSON if reason.responseJSON
|
|
17
|
+
|
|
18
|
+
actions:
|
|
19
|
+
formSubmitted: ->
|
|
20
|
+
@failureReason = null
|
|
21
|
+
@model.taxons = @activeTaxons.map (t) -> t.get("id")
|
|
22
|
+
@model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class Apiv1.FilePreviewer
|
|
2
|
+
@generate-data-urls = (files) ->
|
|
3
|
+
_.map files, _.bind(@generateDataUrl, @)
|
|
4
|
+
@generate-data-url = (file) ->
|
|
5
|
+
fp = new Apiv1.FilePreviewer(file)
|
|
6
|
+
fp.data-url!
|
|
7
|
+
(@file) ->
|
|
8
|
+
data-url: ->
|
|
9
|
+
@read-promise!.then (reader) -> reader.result
|
|
10
|
+
read-promise: ->
|
|
11
|
+
@promise-maker (resolve) ~>
|
|
12
|
+
@resolution-file-reader(resolve).readAsDataURL @file
|
|
13
|
+
|
|
14
|
+
promise-maker: (handlers) ->
|
|
15
|
+
DS.PromiseObject.create promise: new Ember.RSVP.Promise(handlers)
|
|
16
|
+
|
|
17
|
+
resolution-file-reader: (resolve) ->
|
|
18
|
+
r = new FileReader()
|
|
19
|
+
r.onloadend = (e) ->
|
|
20
|
+
resolve e.target
|
|
21
|
+
r
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Apiv1.ListingsPicture extends Ember.Object
|
|
2
|
+
+observer file
|
|
3
|
+
manageSource: ->
|
|
4
|
+
Apiv1.FilePreviewer.generateDataUrl(@file).then (source) => @src = source
|
|
5
|
+
|
|
6
|
+
+computed file.name
|
|
7
|
+
fileName: -> @get "file.name"
|
|
8
|
+
|
|
9
|
+
+computed file.size
|
|
10
|
+
fileSize: -> @get "file.size"
|
|
11
|
+
|
|
12
|
+
Apiv1.ListingsPicture.fromFile = (file) ->
|
|
13
|
+
p = new Apiv1.ListingsPicture()
|
|
14
|
+
p.set "file", file
|
|
15
|
+
p.set "permalink", Math.random().toString()
|
|
16
|
+
p
|
|
17
|
+
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
class Apiv1.Offer extends DS.Model
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
priceTerms: DS.attr "string"
|
|
3
|
+
fromCompany: DS.attr "string"
|
|
4
|
+
phoneNumber: DS.attr "string"
|
|
5
|
+
contactPerson: DS.attr "string"
|
|
6
|
+
companyAddress: DS.attr "string"
|
|
7
|
+
senderEmail: DS.attr "string"
|
|
8
8
|
message: DS.attr "string"
|
|
9
|
+
status: DS.attr "string"
|
|
9
10
|
createdAt: DS.attr "date"
|
|
10
11
|
updatedAt: DS.attr "date"
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
deletedAt: DS.attr "date"
|
|
13
|
+
product: DS.belongsTo "product", async: true
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class Apiv1.User extends DS.Model
|
|
2
|
+
email: DS.attr "string"
|
|
3
|
+
userRank: DS.attr "string"
|
|
4
|
+
companyName: DS.attr "string"
|
|
5
|
+
phoneNumber: DS.attr "string"
|
|
6
|
+
address: DS.attr "string"
|
|
7
|
+
aboutMe: DS.attr "string"
|
|
8
|
+
password: DS.attr "string"
|
|
9
|
+
passwordConfirmation: DS.attr "string"
|
|
10
|
+
|
|
11
|
+
+computed userRank
|
|
12
|
+
isAdmin: -> @userRank is "admin"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class Apiv1.UsersProduct extends DS.Model
|
|
2
|
+
sku: DS.attr "string"
|
|
3
|
+
material: DS.attr "string"
|
|
4
|
+
price: DS.attr "string"
|
|
5
|
+
amount: DS.attr "string"
|
|
6
|
+
quality: DS.attr "string"
|
|
7
|
+
place: DS.attr "string"
|
|
8
|
+
others: DS.attr "string"
|
|
9
|
+
|
|
10
|
+
taxons: DS.attr "strings"
|
|
11
|
+
attachments: DS.attr "files"
|
|
12
|
+
pictures: DS.attr "files"
|
|
@@ -4,8 +4,9 @@ class Apiv1.ApplicationRoute extends Ember.Route
|
|
|
4
4
|
@disconnectOutlet
|
|
5
5
|
outlet: 'modal'
|
|
6
6
|
parentView: 'application'
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
sessionify: (someObject) ->
|
|
8
|
+
return someObject if someObject.destroyRecord
|
|
9
|
+
@store.push "adminSession", id: someObject.get("id")
|
|
9
10
|
actions:
|
|
10
11
|
displayModal: (modalName) ->
|
|
11
12
|
$(".modal-background").show()
|
|
@@ -13,6 +14,13 @@ class Apiv1.ApplicationRoute extends Ember.Route
|
|
|
13
14
|
into: 'application'
|
|
14
15
|
outlet: 'modal'
|
|
15
16
|
model: @modalModelFor modalName
|
|
17
|
+
logoutUser: ->
|
|
18
|
+
return Apiv1.Flash.register "warning", "you're not even logged in", 4000 if Ember.isBlank Apiv1.CurrentUserSession
|
|
19
|
+
@sessionify(Apiv1.CurrentUserSession).destroyRecord().then =>
|
|
20
|
+
Apiv1.Flash.register "success", "you've been signed out, refreshing page", 4000
|
|
21
|
+
@transitionTo "index"
|
|
22
|
+
$(".application-container").hide "fade"
|
|
23
|
+
$("#now-loading").show "fade", 400, -> window.location.reload()
|
|
16
24
|
closeModal: ->
|
|
17
25
|
@disconnectModal()
|
|
18
26
|
willTransition: ->
|
|
@@ -1,3 +1,24 @@
|
|
|
1
1
|
class Apiv1.ProductsIndexRoute extends Ember.Route
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
queryParams:
|
|
3
|
+
per:
|
|
4
|
+
refreshModel: true
|
|
5
|
+
page:
|
|
6
|
+
refreshModel: true
|
|
7
|
+
query:
|
|
8
|
+
refreshModel: true
|
|
9
|
+
ati:
|
|
10
|
+
refreshModel: true
|
|
11
|
+
model: (params) ->
|
|
12
|
+
products: @findProducts(params)
|
|
13
|
+
activeTaxons: @findTaxons(params.ati || [])
|
|
14
|
+
|
|
15
|
+
findProducts: (params)->
|
|
16
|
+
ati = params.ati || []
|
|
17
|
+
query = params.query
|
|
18
|
+
per = params.per || 10
|
|
19
|
+
page = params.page || 1
|
|
20
|
+
@store.find("product", taxons: ati, query: query, per: per, page: page)
|
|
21
|
+
|
|
22
|
+
findTaxons: (ids) ->
|
|
23
|
+
DS.PromiseArray.create
|
|
24
|
+
promise: Apiv1.PreloadedTaxons.then (taxons) -> taxons.filter (taxon) -> _.contains ids, taxon.get("id")
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Apiv1.ProductsProductOffersNewRoute extends Ember.Route
|
|
2
|
+
model: -> @attachUserData @store.createRecord "offer", product: @product
|
|
3
|
+
|
|
4
|
+
beforeModel: -> @set "product", @modelFor("products.product")
|
|
5
|
+
|
|
6
|
+
attachUserData: (offer) ->
|
|
7
|
+
return offer if Ember.isBlank Apiv1.CurrentUserSession
|
|
8
|
+
offer.fromCompany = @currentUser 'companyName'
|
|
9
|
+
offer.phoneNumber = @currentUser 'phoneNumber'
|
|
10
|
+
offer.companyAddress = @currentUser 'address'
|
|
11
|
+
offer.senderEmail = @currentUser 'email'
|
|
12
|
+
offer
|
|
13
|
+
|
|
14
|
+
currentUser: (stat) ->
|
|
15
|
+
s1 = stat
|
|
16
|
+
s2 = Ember.String.camelize(stat)
|
|
17
|
+
s3 = Ember.String.underscore(stat)
|
|
18
|
+
get$(Apiv1.CurrentUserSession, s1) || get$(Apiv1.CurrentUserSession, s2) || get$(Apiv1.CurrentUserSession, s3)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class Apiv1.UsersOffersIndexRoute extends Ember.Route
|
|
@@ -64,6 +64,8 @@
|
|
|
64
64
|
span.parantheses
|
|
65
65
|
tr-span en="the first picture will be displayed in the showcase"
|
|
66
66
|
files-field name="pictures" files=adminProduct.pictures class="form-control upload-control"
|
|
67
|
+
.attached-pictures
|
|
68
|
+
pictures-group pictures=adminProduct.pictures
|
|
67
69
|
|
|
68
70
|
.small-12.columns
|
|
69
71
|
fieldset
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.input-section attr-name="material"
|
|
2
|
+
label.form-label
|
|
3
|
+
span.asterisk
|
|
4
|
+
tr-span en="listing name"
|
|
5
|
+
Ember.TextField name="material" value=model.material placeholder="hot dog"
|
|
6
|
+
.input-section attr-name="sku"
|
|
7
|
+
label.form-label
|
|
8
|
+
tr-span en="external reference number"
|
|
9
|
+
Ember.TextField name="sku" value=model.sku placeholder="XYZ-00123"
|
|
10
|
+
.input-section attr-name="price"
|
|
11
|
+
label.form-label
|
|
12
|
+
tr-span en="how much to sell for?"
|
|
13
|
+
Ember.TextField name="price" value=model.price placeholder="0.33 USD / pound FAS Long Beach Port"
|
|
14
|
+
.input-section attr-name="amount"
|
|
15
|
+
label.form-label
|
|
16
|
+
tr-span en="how much of it do you have?"
|
|
17
|
+
Ember.TextField name="amount" value=model.amount placeholder="200 tons every week"
|
|
18
|
+
.input-section attr-name="quality"
|
|
19
|
+
label.form-label
|
|
20
|
+
tr-span en="what sort of goods are these?"
|
|
21
|
+
Ember.TextField name="quality" value=model.quality placeholder="A grade, baled"
|
|
22
|
+
.input-section attr-name="place"
|
|
23
|
+
label.form-label
|
|
24
|
+
tr-span en="where is this?"
|
|
25
|
+
Ember.TextField name="place" value=model.place placeholder="Los Angeles"
|
|
26
|
+
.input-section attr-name="others"
|
|
27
|
+
label.form-label
|
|
28
|
+
tr-span en="anything else?"
|
|
29
|
+
Ember.TextArea name="others" value=model.others
|
|
30
|
+
.input-section attr-name="files"
|
|
31
|
+
label.form-label
|
|
32
|
+
tr-span en="related files"
|
|
33
|
+
span.parantheses
|
|
34
|
+
tr-span en="these will be pubicly available"
|
|
35
|
+
files-field name="attachments" files=model.attachments class="form-control upload-control"
|
|
36
|
+
.input-section attr-name="pictures"
|
|
37
|
+
label.form-label
|
|
38
|
+
span.asterisk
|
|
39
|
+
tr-span en="listing pictures"
|
|
40
|
+
span.parantheses
|
|
41
|
+
tr-span en="the first picture will be displayed in the showcase"
|
|
42
|
+
files-field name="pictures" files=model.pictures class="form-control upload-control"
|
|
43
|
+
.attached-pictures
|
|
44
|
+
pictures-group pictures=model.pictures
|
|
@@ -10,54 +10,16 @@
|
|
|
10
10
|
fieldset
|
|
11
11
|
legend.capitalize.bold
|
|
12
12
|
tr-span en="new listing"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
tr-span en="listing name"
|
|
17
|
-
Ember.TextField name="material" value=model.material placeholder="hot dog"
|
|
18
|
-
.input-section attr-name="sku"
|
|
19
|
-
label.form-label
|
|
20
|
-
tr-span en="external reference number"
|
|
21
|
-
Ember.TextField name="sku" value=model.sku placeholder="XYZ-00123"
|
|
22
|
-
.input-section attr-name="price"
|
|
23
|
-
label.form-label
|
|
24
|
-
tr-span en="how much to sell for?"
|
|
25
|
-
Ember.TextField name="price" value=model.price placeholder="0.33 USD / pound FAS Long Beach Port"
|
|
26
|
-
.input-section attr-name="amount"
|
|
27
|
-
label.form-label
|
|
28
|
-
tr-span en="how much of it do you have?"
|
|
29
|
-
Ember.TextField name="amount" value=model.amount placeholder="200 tons every week"
|
|
30
|
-
.input-section attr-name="quality"
|
|
31
|
-
label.form-label
|
|
32
|
-
tr-span en="what sort of goods are these?"
|
|
33
|
-
Ember.TextField name="quality" value=model.quality placeholder="A grade, baled"
|
|
34
|
-
.input-section attr-name="place"
|
|
35
|
-
label.form-label
|
|
36
|
-
tr-span en="where is this?"
|
|
37
|
-
Ember.TextField name="place" value=model.place placeholder="Los Angeles"
|
|
38
|
-
.input-section attr-name="others"
|
|
39
|
-
label.form-label
|
|
40
|
-
tr-span en="anything else?"
|
|
41
|
-
Ember.TextArea name="others" value=model.others
|
|
13
|
+
|
|
14
|
+
== partial "admin/products/form-core"
|
|
15
|
+
|
|
42
16
|
.input-section attr-name="showcaseOrder"
|
|
43
17
|
label.form-label
|
|
44
18
|
tr-span en="showcase display number"
|
|
45
19
|
span.parantheses
|
|
46
20
|
tr-span en="the smaller the number, the higher up it appears in the showcase on the front page"
|
|
47
21
|
Ember.TextField type="number" name="showcaseOrder" value=model.showcaseOrder
|
|
48
|
-
|
|
49
|
-
label.form-label
|
|
50
|
-
tr-span en="related files"
|
|
51
|
-
span.parantheses
|
|
52
|
-
tr-span en="these will be pubicly available"
|
|
53
|
-
files-field name="attachments" files=model.attachments class="form-control upload-control"
|
|
54
|
-
.input-section attr-name="pictures"
|
|
55
|
-
label.form-label
|
|
56
|
-
span.asterisk
|
|
57
|
-
tr-span en="listing pictures"
|
|
58
|
-
span.parantheses
|
|
59
|
-
tr-span en="the first picture will be displayed in the showcase"
|
|
60
|
-
files-field name="pictures" files=model.pictures class="form-control upload-control"
|
|
22
|
+
|
|
61
23
|
.input-section attr-name="taxons"
|
|
62
24
|
label.form-label
|
|
63
25
|
tr-span en="select appropriate category tags for this product"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Ember.TextField class="taggable-textfield" value=text
|
|
@@ -0,0 +1,57 @@
|
|
|
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.capitalize.bold
|
|
8
|
+
tr-span en="new account"
|
|
9
|
+
h3.alt-actions
|
|
10
|
+
a.pointer click="displayModal 'login'"
|
|
11
|
+
span.capitalize.spacebar
|
|
12
|
+
tr-span en="have account?"
|
|
13
|
+
span.capitalize
|
|
14
|
+
tr-span en="login here"
|
|
15
|
+
.input-section attr-name="companyName"
|
|
16
|
+
label.form-label
|
|
17
|
+
span.asterisk
|
|
18
|
+
tr-span en="company name"
|
|
19
|
+
Ember.TextField name="companyName" value=model.companyName placeholder="Acme Trade Co"
|
|
20
|
+
.input-section attr-name="email"
|
|
21
|
+
label.form-label
|
|
22
|
+
span.asterisk
|
|
23
|
+
tr-span en="email"
|
|
24
|
+
Ember.TextField name="email" value=model.email placeholder="dog@example.co"
|
|
25
|
+
.input-section attr-name="password"
|
|
26
|
+
label.form-label
|
|
27
|
+
span.asterisk
|
|
28
|
+
tr-span en="password"
|
|
29
|
+
Ember.TextField name="password" value=model.password type="password"
|
|
30
|
+
.input-section attr-name="passwordConfirmation"
|
|
31
|
+
label.form-label
|
|
32
|
+
span.asterisk
|
|
33
|
+
tr-span en="password confirmation"
|
|
34
|
+
Ember.TextField name="passwordConfirmation" value=model.passwordConfirmation type="password"
|
|
35
|
+
|
|
36
|
+
.input-section attr-name="phoneNumber"
|
|
37
|
+
label.form-label
|
|
38
|
+
tr-span en="phone number"
|
|
39
|
+
Ember.TextField name="phoneNumber" value=model.phoneNumber placeholder="(555) 123 - 1234"
|
|
40
|
+
|
|
41
|
+
.input-section attr-name="address"
|
|
42
|
+
label.form-label
|
|
43
|
+
tr-span en="company address"
|
|
44
|
+
Ember.TextField name="address" value=model.address placeholder="1234 Main Street, Beverly Hills, CA 90210"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
.small-6.columns
|
|
48
|
+
.input-section
|
|
49
|
+
promise-button model=model class="button expand"
|
|
50
|
+
i.fa.fa-check
|
|
51
|
+
tr-span en="submit"
|
|
52
|
+
|
|
53
|
+
.small-6.columns
|
|
54
|
+
.input-section
|
|
55
|
+
button.button.expand.alert click="closeModal"
|
|
56
|
+
i.fa.fa-times
|
|
57
|
+
tr-span en="cancel"
|