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,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"
|