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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5334f23f91a9c3a7cd5b5efef53c2963ca386364
|
|
4
|
+
data.tar.gz: 08302967d39ffd580befd2f26a1f83ae29f7e64f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f698234c8a31c9dbd6e77240733d0d985babcefa394a841fd894b4f1055197d9776f49c3e793dce883d12cdb7f41672bb40b50b383e2e8b92b4fead732ae078
|
|
7
|
+
data.tar.gz: e7ddb9a4cd9e2b6b2558bb9c13e2ba8641801426fd6282331a86bf89da2f1d94a177463928c555d4e27684830358c7913d896dc3ff0248186c5e8c840eed7b18
|
data/README.md
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
# Cloudrider
|
|
2
2
|
|
|
3
|
+
TODO:
|
|
4
|
+
1. rework session / user registration to store static session data outside the controller
|
|
5
|
+
2. extract the image preloader out of the ember app
|
|
6
|
+
3. roll in google analytics
|
|
7
|
+
4. products new form needs testing and the edge case when people don't upload pictures
|
|
8
|
+
5. switch over to using ember cli on top of asshole pipelines
|
|
9
|
+
6. finish up the protosite / protopage input data objects and their scaffolding
|
|
10
|
+
7. work in email dispatching and such services
|
|
11
|
+
8. fix search-and-filter so that clicking on categories automatically fills the search bar, the search into a form so you can enter submit
|
|
12
|
+
|
|
3
13
|
Deployment use for restarting the server
|
|
4
14
|
```bash
|
|
5
|
-
|
|
15
|
+
rake production:on_restart RAILS_ENV=production && kill -QUIT $(cat tmp/pids/unicorn.pid) && unicorn_rails -c config/unicorn.conf.rb -E production -D
|
|
6
16
|
```
|
|
7
17
|
FUTURE TODO:
|
|
8
18
|
switch I18n translations to a key-value storage basis with a redis cluster
|
data/cloudrider.gemspec
CHANGED
data/generica/.gitignore
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config.
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# Ignore the default SQLite database.
|
|
11
|
+
/db/*.sqlite3
|
|
12
|
+
/db/*.sqlite3-journal
|
|
13
|
+
|
|
14
|
+
# Ignore all logfiles and tempfiles.
|
|
15
|
+
/log/*.log
|
|
16
|
+
/tmp
|
|
17
|
+
|
|
18
|
+
/public/system
|
data/generica/Gemfile
CHANGED
|
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
|
|
|
2
2
|
|
|
3
3
|
# Cloudrider requires the following gems
|
|
4
4
|
# Core Backend
|
|
5
|
-
gem 'rails', '4.1.
|
|
5
|
+
gem 'rails', '~> 4.1.8'
|
|
6
6
|
gem 'gctools', '~>0.2.3'
|
|
7
7
|
gem 'functional_support', '>=0.0.12'
|
|
8
8
|
gem 'mysql2'
|
|
@@ -14,6 +14,11 @@ gem 'probability', "1"
|
|
|
14
14
|
gem 'elasticsearch-rails', '~> 0.1.4'
|
|
15
15
|
gem 'elasticsearch-model', '~> 0.1.4'
|
|
16
16
|
gem 'elasticsearch', '~> 1.0.4'
|
|
17
|
+
gem 'paranoia', '~> 2.0.2'
|
|
18
|
+
gem 'premailer-rails', '~> 1.8.0'
|
|
19
|
+
gem 'gmail', '~> 0.4.2'
|
|
20
|
+
gem 'god', '~> 0.13.4'
|
|
21
|
+
gem 'arrows', '>= 0.0.2'
|
|
17
22
|
|
|
18
23
|
# Support
|
|
19
24
|
gem "haml", "~> 4.0.0"
|
|
@@ -22,6 +27,8 @@ gem "stringex", "~> 2.1.2"
|
|
|
22
27
|
gem 'ffaker', ">=1.20.0"
|
|
23
28
|
gem 'numbers_and_words', "~> 0.10.0"
|
|
24
29
|
gem 'decent_exposure', '~> 2.3.1'
|
|
30
|
+
gem 'squash_ruby', '~> 2.0.0', :require => 'squash/ruby'
|
|
31
|
+
gem 'squash_rails', '~>1.3.3', :require => 'squash/rails'
|
|
25
32
|
|
|
26
33
|
# Assets Frameworks
|
|
27
34
|
gem "font-awesome-sass", "~> 4.1.0.0"
|
data/generica/Gemfile.lock
CHANGED
|
@@ -208,6 +208,8 @@ GEM
|
|
|
208
208
|
activesupport (>= 3.0.0)
|
|
209
209
|
cocaine (~> 0.5.3)
|
|
210
210
|
mime-types
|
|
211
|
+
paranoia (2.0.2)
|
|
212
|
+
activerecord (~> 4.0)
|
|
211
213
|
probability (1.0.0)
|
|
212
214
|
rack (1.5.2)
|
|
213
215
|
rack-test (0.6.2)
|
|
@@ -342,6 +344,7 @@ DEPENDENCIES
|
|
|
342
344
|
numbers_and_words (~> 0.10.0)
|
|
343
345
|
painful_translate (>= 0.0.4)
|
|
344
346
|
paperclip (~> 4.2.0)
|
|
347
|
+
paranoia (~> 2.0.2)
|
|
345
348
|
probability (= 1)
|
|
346
349
|
rails (= 4.1.6)
|
|
347
350
|
rails_12factor
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
#= require generica/image-preload
|
|
3
3
|
#= require ./packages/flash
|
|
4
4
|
#= require ./packages/image_preloader
|
|
5
|
+
#= require ./packages/tag_parser
|
|
5
6
|
#= require_tree ./mixins
|
|
6
7
|
#= require_tree ./helpers
|
|
7
8
|
#= require_tree ./controllers
|
|
@@ -23,4 +24,8 @@ Apiv1.ApplicationStore = DS.Store.extend do
|
|
|
23
24
|
# is built to work nicely with the ActiveModel::Serializers gem.
|
|
24
25
|
adapter: DS.ActiveModelAdapter
|
|
25
26
|
|
|
26
|
-
$ _.once ->
|
|
27
|
+
$ _.once ->
|
|
28
|
+
if window.RawCurrentUserSession
|
|
29
|
+
store = Apiv1.__container__.lookup("store:main")
|
|
30
|
+
set$ Apiv1, "CurrentUserSession", store.push "adminSession", window.RawCurrentUserSession
|
|
31
|
+
$('#now-loading').hide "puff", 600
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Apiv1.PictureChunkComponent extends Ember.Component
|
|
2
|
+
classNames: ["picture-chunk"]
|
|
3
|
+
|
|
4
|
+
+computed picture.src
|
|
5
|
+
src: -> @get("picture.src")
|
|
6
|
+
|
|
7
|
+
+computed picture.fileName
|
|
8
|
+
fileName: -> @get("picture.fileName")
|
|
9
|
+
|
|
10
|
+
+computed model
|
|
11
|
+
picture: ->
|
|
12
|
+
return if Ember.isBlank @model
|
|
13
|
+
Apiv1.ListingsPicture.fromFile @model
|
|
14
|
+
|
|
15
|
+
actions:
|
|
16
|
+
killPicture: ->
|
|
17
|
+
@controller.sendAction "action", @model
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class Apiv1.PicturesGroupComponent extends Ember.Component
|
|
2
|
+
classNames: ["pictures-group"]
|
|
3
|
+
pictures: []
|
|
4
|
+
totalAllowedSize: "10 mb"
|
|
5
|
+
|
|
6
|
+
+computed images.@each.fileSize
|
|
7
|
+
totalFileSize: ->
|
|
8
|
+
Apiv1.StringEx.byteUnits @images.reduce @pictureSummer, 0
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
+computed pictures.@each
|
|
12
|
+
images: ->
|
|
13
|
+
return [] if Ember.isBlank @pictures
|
|
14
|
+
@pictures.map (pic) => Apiv1.ListingsPicture.fromFile pic
|
|
15
|
+
|
|
16
|
+
pictureSummer: (sumSizes, image) ->
|
|
17
|
+
sumSizes + image.get("fileSize")
|
|
18
|
+
|
|
19
|
+
actions:
|
|
20
|
+
killPicture: (picture) ->
|
|
21
|
+
@pictures.removeObject picture
|
|
@@ -2,11 +2,15 @@ class Apiv1.SearchAndFilterComponent extends Ember.Component
|
|
|
2
2
|
classNames: ['search-and-filter']
|
|
3
3
|
activeTaxons: []
|
|
4
4
|
searchQuery: ""
|
|
5
|
+
attributeBindings: ['class']
|
|
5
6
|
|
|
6
7
|
+computed activeTaxons.@each, searchQuery
|
|
7
8
|
searchParams: ->
|
|
8
9
|
activeTaxons: @activeTaxons
|
|
9
10
|
searchQuery: @searchQuery
|
|
11
|
+
|
|
12
|
+
didInsertElement: ->
|
|
13
|
+
@searchQuery = @query
|
|
10
14
|
|
|
11
15
|
actions:
|
|
12
16
|
search: ->
|
|
@@ -22,4 +22,8 @@ class Apiv1.SiteNavComponent extends Ember.Component
|
|
|
22
22
|
|
|
23
23
|
willDestroyElement: ->
|
|
24
24
|
$("#page-wrapper").unbind "touchmove"
|
|
25
|
-
$("#page-wrapper").unbind "scroll"
|
|
25
|
+
$("#page-wrapper").unbind "scroll"
|
|
26
|
+
|
|
27
|
+
actions:
|
|
28
|
+
displayModal: (modal) ->
|
|
29
|
+
@sendAction 'action', modal
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Apiv1.TaggableFieldComponent extends Ember.Component
|
|
2
|
+
tags: []
|
|
3
|
+
classNames: ['taggable-field']
|
|
4
|
+
attributeBindings: ["class"]
|
|
5
|
+
text: ""
|
|
6
|
+
|
|
7
|
+
+observer tags.@each.id, tags.@each.taxonName
|
|
8
|
+
fixTextOnTagChange: ->
|
|
9
|
+
tokenFromTags = @batchTokenify @tags
|
|
10
|
+
@appendMissingText tokenFromTags
|
|
11
|
+
@dropUnwantedText tokenFromTags
|
|
12
|
+
|
|
13
|
+
+computed text
|
|
14
|
+
existingTextTokens: ->
|
|
15
|
+
Apiv1.TagParser.parse(@text).tagTokens()
|
|
16
|
+
|
|
17
|
+
appendMissingText: (texts) ->
|
|
18
|
+
missing = _.difference texts, @existingTextTokens
|
|
19
|
+
@text = [@text.trim(), missing.join(" ").trim()].join " "
|
|
20
|
+
|
|
21
|
+
dropUnwantedText: (texts)->
|
|
22
|
+
stuffToRemove = _.difference @existingTextTokens, texts
|
|
23
|
+
for str in stuffToRemove
|
|
24
|
+
@text = @text.split(str).join("")
|
|
25
|
+
|
|
26
|
+
batchTokenify: (tags) ->
|
|
27
|
+
return [] if Ember.isBlank tags
|
|
28
|
+
tags.map Apiv1.TagParser.tokenifyTaxon
|
|
@@ -9,7 +9,7 @@ class Apiv1.TreeTaxonLiComponent extends Ember.Component
|
|
|
9
9
|
return false unless @isExpandable
|
|
10
10
|
if arguments.length > 1
|
|
11
11
|
@expansionCoefficient = expand
|
|
12
|
-
|
|
12
|
+
if Ember.isBlank @expansionCoefficient
|
|
13
13
|
@expansionCoefficient = @isExpandable and @activeTaxons.contains @taxon
|
|
14
14
|
@expansionCoefficient
|
|
15
15
|
|
|
@@ -24,7 +24,7 @@ class Apiv1.TreeTaxonLiComponent extends Ember.Component
|
|
|
24
24
|
return false unless @isSelectable
|
|
25
25
|
if arguments.length > 1
|
|
26
26
|
@selectionCoefficient = select
|
|
27
|
-
|
|
27
|
+
if Ember.isBlank @selectionCoefficient
|
|
28
28
|
@selectionCoefficient = @isSelectable and @activeTaxons.contains @taxon
|
|
29
29
|
@selectionCoefficient
|
|
30
30
|
|
|
@@ -45,9 +45,13 @@ class Apiv1.TreeTaxonLiComponent extends Ember.Component
|
|
|
45
45
|
@selectMe()
|
|
46
46
|
|
|
47
47
|
unexpandMe: ->
|
|
48
|
+
@activeTaxons ||= []
|
|
49
|
+
@activeTaxons.removeObject @taxon
|
|
48
50
|
@isExpanded = false
|
|
49
51
|
|
|
50
52
|
expandMe: ->
|
|
53
|
+
@activeTaxons ||= []
|
|
54
|
+
@activeTaxons.addObject @taxon
|
|
51
55
|
@isExpanded = true
|
|
52
56
|
|
|
53
57
|
unselectMe: ->
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
class Apiv1.IndexController extends Ember.ObjectController
|
|
2
2
|
queryParams: ['anchor']
|
|
3
|
-
anchor:
|
|
3
|
+
anchor: ""
|
|
4
|
+
query: ""
|
|
5
|
+
activeTaxons: []
|
|
4
6
|
|
|
5
7
|
+observer anchor
|
|
6
8
|
scroll2Anchor: ->
|
|
@@ -16,4 +18,19 @@ class Apiv1.IndexController extends Ember.ObjectController
|
|
|
16
18
|
p1 = $(".site-content").position()
|
|
17
19
|
p2 = el$.position()
|
|
18
20
|
return unless p1? and p2?
|
|
19
|
-
p2.top - p1.top
|
|
21
|
+
p2.top - p1.top
|
|
22
|
+
|
|
23
|
+
+observer activeTaxons.@each.id
|
|
24
|
+
manageATI: ->
|
|
25
|
+
return if Ember.isBlank @activeTaxons
|
|
26
|
+
qp = { page: 1, per: 15, query: @query, ati: @activeTaxons.mapBy("id") }
|
|
27
|
+
@transitionToRoute "products.index", queryParams: qp
|
|
28
|
+
|
|
29
|
+
actions:
|
|
30
|
+
search: (params) ->
|
|
31
|
+
@transitionToRoute "products.index",
|
|
32
|
+
queryParams:
|
|
33
|
+
page: 1
|
|
34
|
+
per: 15
|
|
35
|
+
query: params.searchQuery
|
|
36
|
+
ati: params.activeTaxons.mapBy "id"
|
|
@@ -1,24 +1,38 @@
|
|
|
1
1
|
class Apiv1.ModalsLoginController extends Ember.ObjectController
|
|
2
|
+
+computed
|
|
3
|
+
model: -> @store.createRecord("adminSession")
|
|
4
|
+
|
|
2
5
|
+computed model
|
|
3
|
-
session: ->
|
|
4
|
-
@login @model
|
|
5
|
-
@model
|
|
6
|
+
session: -> @model
|
|
6
7
|
|
|
7
|
-
+computed
|
|
8
|
-
isAuthenticated: -> @get("
|
|
8
|
+
+computed model.id
|
|
9
|
+
isAuthenticated: -> @get("model.id")
|
|
9
10
|
|
|
10
11
|
login: (session) ->
|
|
11
12
|
session.save().then(_.bind @successfulLogin, @).catch(_.bind @failedLogin, @)
|
|
12
13
|
|
|
13
14
|
successfulLogin: (session) ->
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
if session.isAdmin
|
|
16
|
+
Apiv1.Flash.register "success", "Admin logged in", 5000
|
|
17
|
+
else
|
|
18
|
+
Apiv1.Flash.register "success", "User logged in", 5000
|
|
19
|
+
Apiv1.CurrentUserSession = session
|
|
20
|
+
@redirectOut()
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
redirectOut: ->
|
|
23
|
+
if @get("model.isAdmin")
|
|
24
|
+
@transitionToRoute "admin.index"
|
|
25
|
+
else
|
|
26
|
+
@transitionToRoute "users.index"
|
|
27
|
+
|
|
28
|
+
failedLogin: (reason) ->
|
|
18
29
|
Apiv1.Flash.register "warning", "login failed", 5000
|
|
19
30
|
@failureReason = reason.responseJSON.admin_session if reason.responseJSON?
|
|
20
31
|
|
|
21
32
|
|
|
22
33
|
actions:
|
|
23
34
|
formSubmitted: ->
|
|
24
|
-
|
|
35
|
+
if @isAuthenticated
|
|
36
|
+
@redirectOut()
|
|
37
|
+
else
|
|
38
|
+
@login @model
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class Apiv1.ModalsRegisterController extends Ember.ObjectController
|
|
2
|
+
|
|
3
|
+
+computed
|
|
4
|
+
model: -> @store.createRecord("user")
|
|
5
|
+
|
|
6
|
+
+computed model
|
|
7
|
+
user: -> @model
|
|
8
|
+
|
|
9
|
+
redirectToIndex: ->
|
|
10
|
+
@transitionToRoute 'users.index'
|
|
11
|
+
notifySuccess: ->
|
|
12
|
+
Apiv1.Flash.register "success", "account created!", 4000
|
|
13
|
+
successfulSave: (user) ->
|
|
14
|
+
@notifySuccess()
|
|
15
|
+
@redirectToIndex()
|
|
16
|
+
Apiv1.CurrentUserSession = user
|
|
17
|
+
failedSave: (reason) ->
|
|
18
|
+
Apiv1.Flash.register "warning", "the server died for some reason", 5000 if reason.status is 500
|
|
19
|
+
@failureReason = reason.responseJSON if reason.responseJSON
|
|
20
|
+
|
|
21
|
+
actions:
|
|
22
|
+
formSubmitted: ->
|
|
23
|
+
@failureReason = null
|
|
24
|
+
@model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
|
|
@@ -2,24 +2,34 @@ class Apiv1.ProductsIndexController extends Ember.ObjectController
|
|
|
2
2
|
queryParams: ["per", "page", "query", "ati"]
|
|
3
3
|
per: 15
|
|
4
4
|
page: 1
|
|
5
|
-
query:
|
|
6
|
-
ati:
|
|
5
|
+
query: ""
|
|
6
|
+
ati: ""
|
|
7
|
+
|
|
8
|
+
+computed model.activeTaxons.@each
|
|
9
|
+
activeTaxons: -> @model.activeTaxons
|
|
7
10
|
|
|
8
|
-
+
|
|
9
|
-
|
|
11
|
+
+observer activeTaxons.@each.id
|
|
12
|
+
manageATI: ->
|
|
13
|
+
return if Ember.isBlank @activeTaxons
|
|
14
|
+
qp = _.extend { query: @query }, @searchParams
|
|
15
|
+
@transitionToRoute "products.index", queryParams: qp
|
|
16
|
+
|
|
17
|
+
+computed Apiv1.PreloadedTaxons.@each.parentId
|
|
18
|
+
taxons: -> Apiv1.PreloadedTaxons.rejectBy "parentId"
|
|
10
19
|
|
|
11
20
|
+computed products.content.meta
|
|
12
21
|
metadatum: -> @get("products.content.meta")
|
|
13
22
|
|
|
14
|
-
+computed
|
|
15
|
-
products: ->
|
|
16
|
-
@store.find("product", taxons: @ati, query: @query, per: @per, page: @page)
|
|
23
|
+
+computed model.products
|
|
24
|
+
products: -> @model.products
|
|
17
25
|
|
|
18
|
-
+computed
|
|
19
|
-
|
|
26
|
+
+computed page, per, activeTaxons.@each.id
|
|
27
|
+
searchParams: ->
|
|
28
|
+
page: @page
|
|
29
|
+
per: @per
|
|
30
|
+
ati: @activeTaxons.mapBy("id")
|
|
20
31
|
|
|
21
32
|
actions:
|
|
22
|
-
search: (opts)
|
|
23
|
-
|
|
24
|
-
@
|
|
25
|
-
@ati = opts.activeTaxons.mapBy "id"
|
|
33
|
+
search: (opts)->
|
|
34
|
+
qp = _.extend { query: opts.searchQuery }, @searchParams
|
|
35
|
+
@transitionToRoute "products.index", queryParams: qp
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Apiv1.ProductsProductOffersNewController extends Ember.ObjectController
|
|
2
|
+
|
|
3
|
+
notifySuccess: ->
|
|
4
|
+
Apiv1.Flash.register "success", "offer message sent!", 5000
|
|
5
|
+
successfulSave: (offer) ->
|
|
6
|
+
@swapOutForm()
|
|
7
|
+
@notifySuccess()
|
|
8
|
+
swapOutForm: ->
|
|
9
|
+
$(".form-for").hide "highlight", {}, 450, => @alreadySubmitted = true
|
|
10
|
+
failedSave: (reason) ->
|
|
11
|
+
Apiv1.Flash.register "warning", "uh-oh, the server is down", 5000 if reason.status is 500
|
|
12
|
+
@failureReason = Apiv1.HashEx.camelize reason.responseJSON if reason.responseJSON
|
|
13
|
+
|
|
14
|
+
actions:
|
|
15
|
+
formSubmitted: ->
|
|
16
|
+
@failureReason = null
|
|
17
|
+
@model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class Apiv1.UsersOffersIndexController extends Ember.ObjectController
|
|
2
|
+
queryParams: ["page", "per"]
|
|
3
|
+
page: 1
|
|
4
|
+
per: 15
|
|
5
|
+
+computed page, per
|
|
6
|
+
offers: ->
|
|
7
|
+
@store.find "offer", page: @page, per: @per
|
|
8
|
+
|
|
9
|
+
+computed offers.content.meta
|
|
10
|
+
metadatum: -> @get("offers.content.meta")
|