Compare commits

...

1184 Commits
0.7.2 ... v1.0

Author SHA1 Message Date
Rohan Mitchell
387021929e Merge branch 'master' into rob-github-fixes 2015-06-16 15:05:01 +10:00
Rob Harrington
30af5d4278 Enterprise relatives include self where appropriate for serialized injection data 2015-06-15 19:45:29 +08:00
Rob Harrington
92082ce95c Adding filter back on producers page 2015-06-15 16:35:41 +08:00
Rob Harrington
1558ddb1eb Fixing index enterprise serializer so that payment methods issue displays when no payment methods are present 2015-06-15 16:15:06 +08:00
Rob Harrington
0038ebaa1f Fix styling issue for full sixteen column enterprise index panel 2015-06-15 16:10:33 +08:00
Rob Harrington
943c702e88 Hiding 'more' list if there are no overflow filter selectors 2015-06-15 15:54:55 +08:00
Rob Harrington
fb19feb357 Adding filters back to the hub page 2015-06-15 15:43:43 +08:00
Rob Harrington
e09431fa20 Styling tweaks 2015-06-15 15:43:19 +08:00
Rob Harrington
fb11c93943 Making ul element the root of filter_selectors directive, so resolve issue with using ng-repeat element as root of a replacement directive 2015-06-15 15:43:01 +08:00
Rob Harrington
727e8a81d6 Making sure enterprise serializer serializes no taxons as an empty array 2015-06-15 15:41:25 +08:00
Rob Harrington
0e96a23a52 Fixing filters selector directive to that an allSelector watcher isn't required for generation on selectors to work 2015-06-15 12:06:23 +08:00
Maikel Linke
80bf6e61ad redirect /t/products/:id to / 2015-06-13 11:59:52 +10:00
Maikel Linke
c6d01055d6 updating relationship spec 2015-06-12 19:32:56 +10:00
Rob Harrington
82d31b908f More styling tweaks 2015-06-12 16:09:53 +08:00
Rob Harrington
066c8876ff Only serializing unresolved enterprise issues, styling tweaks and fixes for index 2015-06-12 15:49:01 +08:00
Maikel Linke
de1971072e update relationship js spec 2015-06-12 17:09:04 +10:00
Maikel Linke
f44ac5b27b Merge branch 'url-redirects' into e2e-links 2015-06-12 17:03:31 +10:00
Maikel Linke
d717c38f6d Filter relationships by permission 2015-06-12 17:03:17 +10:00
Maikel Linke
61effc03c1 add "Enterprise Relationships" tab for non-admins 2015-06-12 17:03:17 +10:00
Maikel Linke
f2bc98e812 E2E: select all permissions 2015-06-12 17:03:17 +10:00
Rob Harrington
795b2700b4 Merge branch 'master' into enterprise-index-revamp 2015-06-12 12:47:58 +08:00
Rob Harrington
6ab5efbe02 Last minute styling adjustments 2015-06-12 12:40:24 +08:00
Rob Harrington
59d5ebe9d4 Changes to copy 2015-06-12 12:32:17 +08:00
Rob Harrington
1fb1733644 Adding link to user guide to enterprises index and dashboard 2015-06-12 12:31:57 +08:00
Rob Harrington
775718c776 Adding status panel on enterprise index 2015-06-12 12:09:00 +08:00
Rohan Mitchell
2b763271a7 Merge branch 'master' into optimise-shopfront 2015-06-12 12:15:20 +10:00
Maikel Linke
d61073f08d redirect /enterprises to / 2015-06-12 10:47:50 +10:00
Maikel Linke
2fb8f9f8a3 Redirect /products to /
GitHub issue #571
2015-06-12 10:47:50 +10:00
Rohan Mitchell
4f311543ae Merge branch 'master' into enterprise-index-revamp 2015-06-12 10:26:11 +10:00
Rob Harrington
eed27ceb31 Shipping Method feature specs work with new enteprise user enterprise index 2015-06-12 03:10:50 +08:00
Rob Harrington
77432ffc41 Payment Method feature specs work with new enteprise user enterprise index 2015-06-12 03:10:37 +08:00
Rob Harrington
5d2b36c667 Enterprise Fee feature specs work with new enteprise user enterprise index 2015-06-12 03:10:14 +08:00
Rob Harrington
61beb38e9c Bringing back delayed_job on enterprise emails - acctidentally took it out earlier 2015-06-12 03:09:40 +08:00
Rob Harrington
efca4dde10 Fixing enterprises feature spec 2015-06-12 01:49:39 +08:00
Rob Harrington
d0b7550629 Removing screenshot from spec 2015-06-12 01:49:39 +08:00
Rob Harrington
6f975593fe Splitting enterprise index feature specs into their own file, reinstating old enterprise index for super admin users 2015-06-12 01:49:39 +08:00
Rob Harrington
64ed80f845 Enterprise index action load enterprise_set for super admin 2015-06-12 01:49:39 +08:00
Rob Harrington
f80a5fe558 Fixing reference to change_type_form partial from single enterprise dashboard 2015-06-12 01:49:38 +08:00
Rob Harrington
1b52564d58 Rerouting welcome page to be an enterprise action, updates to copy for package selection 2015-06-12 01:49:38 +08:00
Rob Harrington
1cd6866879 Fixing issue with auto-creation of new contact user for enterprises caused by delayed-job 2015-06-12 01:49:37 +08:00
Rob Harrington
1c1f82f4ee Using events to update index row text on save, adding alert icons for enterprises without producer or package selected 2015-06-12 01:49:37 +08:00
Rob Harrington
95073f6fe7 Adding actual link to the manage link on enterprises index 2015-06-12 01:49:37 +08:00
Rob Harrington
e575b0e490 Switching enterprise index to its own dedicated serializer, so we can spit out ownership 2015-06-12 01:49:37 +08:00
Rob Harrington
5a08344812 Changing 'shop' column and panel to 'package' 2015-06-12 01:49:37 +08:00
Rob Harrington
e3d7c00c8e Removing option of 'producer profile only' from enterprise shop panel 2015-06-12 01:49:36 +08:00
Rob Harrington
8aa55088ab Adding a parent directive to coorindate styling of panel tabs 2015-06-12 01:49:36 +08:00
Rob Harrington
a90cd0f8e0 Owners can update sells on enterprises they own 2015-06-12 01:49:36 +08:00
Rob Harrington
6b35e993bd WIP: More work on panel content, styling and data submission logic 2015-06-12 01:49:36 +08:00
Rob Harrington
a586a52c23 Shortcutting around existing Enterprise service, so that we can use it for something more useful 2015-06-12 01:49:36 +08:00
Rob Harrington
b84f5a26a1 WIP: Splitting type panel into separate producer and shop panels, playing with styling 2015-06-12 01:49:35 +08:00
Rob Harrington
451ba1c01b panel rows adjust to span the number of visible columns 2015-06-12 01:49:35 +08:00
Rob Harrington
c441c8c6cb Columns service holds a column count and notifies rootscope when it changes 2015-06-12 01:49:35 +08:00
Rob Harrington
0c36738472 Adding basic generalised panel row infrastructure to indexUtils 2015-06-12 01:49:35 +08:00
Rob Harrington
ff3d9e27ec Upgrade angular-rails-templates 2015-06-12 01:49:35 +08:00
Rob Harrington
d5f9b40707 WIP: Basic version of revamped enterprise index 2015-06-12 01:49:34 +08:00
Rob Harrington
02d3d34826 Adding basic angular infrastructure for enterprises 2015-06-12 01:49:34 +08:00
Rob Harrington
5215623864 Adding bindonce to admin 2015-06-12 01:49:34 +08:00
Rob Harrington
ed7a53968c Using clearer json_request? method for customers controller 2015-06-12 01:49:34 +08:00
Rob Harrington
c311bcdca7 Overriding enterprises index action to use AMS for json requests, and prevent collection loading for html requests 2015-06-12 01:49:33 +08:00
Rohan Mitchell
ecbf3c8fa7 Ensure we start with consistent config settings 2015-06-11 16:16:36 +10:00
Rohan Mitchell
bfeb63c8d7 Ensure that changes to Spree::Config.products_require_tax_category do not leak out of the relevant spec 2015-06-11 14:16:18 +10:00
Rohan Mitchell
6dea3fa19d Merge branch 'fix-duplicate-fees' into combined/ginerr_bugfixes_fix-duplicate-fees 2015-06-11 12:56:32 +10:00
Rohan Mitchell
075e9edbf6 Merge branch 'ginerr_bugfixes' into combined/ginerr_bugfixes_fix-duplicate-fees 2015-06-11 12:56:27 +10:00
Maikel Linke
a8b6f2942a Releasing Assets Version 1.1
The uglifier update affects only re-compiled assets. In order to replace
the broken assets (e.g. #396) with re-compiled assets, we change the
assets version number.
2015-06-11 10:54:30 +10:00
Rohan Mitchell
604360034b Make filter method private 2015-06-10 17:04:09 +10:00
Rohan Mitchell
a0fd91dc57 Do not preload_app with unicorn, update newrelic agent so that it doesn't require this setting. 2015-06-10 17:03:56 +10:00
Rohan Mitchell
d79129880e Put lock around adjustment clear/re-create to avoid race condition resulting in duplicate fees 2015-06-10 17:02:30 +10:00
Rohan Mitchell
7412e92665 Merge branch 'master' into optimise-shopfront 2015-06-10 16:39:02 +10:00
Rohan Mitchell
ee01113fe1 Fix duplicate factory value spec error 2015-06-10 15:31:53 +10:00
Maikel Linke
5a7231579c update uglifier to 2.7.1 2015-06-10 13:58:52 +10:00
Maikel Linke
3c38c8e504 Merge branch 'adjustment-metadata-deletion' into combined/session-store_adjustment-metadata_uglifier
Conflicts:
	db/schema.rb
2015-06-10 13:56:36 +10:00
Maikel Linke
6c0238deac scoping down large request spec 2015-06-10 13:50:55 +10:00
Maikel Linke
f88f42283a Session stored in ActiveRecored instead of Cookies
The cookie store is not big enough in some cases. In order to solve a
CookieOverflow error and maybe track down the underlying issue this
patch uses the database instead of cookies to store session data.
2015-06-10 13:49:24 +10:00
Maikel Linke
88872b4b49 add spec_helper to customers_controller_spec 2015-06-06 11:49:49 +10:00
Maikel Linke
153360d17b Let the database delete adjustment metadata
GitHub issue #582

We encountered a foreign key violation on adjustment metadata even
though rails should handle that.

    Action: order.adjustments.where(originator_type: 'EnterpriseFee').destroy_all

    Adjustment: has_one :metadata, class_name: 'AdjustmentMetadata' dependent: :destroy

So we update the foreign key to cause a delete in the database.
2015-06-05 16:10:58 +10:00
Rohan Mitchell
80834a0c27 Merge branch 'master' into ginerr_bugfixes 2015-06-05 15:49:43 +10:00
Maikel Linke
d6c630dad9 add spec_helper to customers_controller_spec 2015-06-05 14:25:45 +10:00
Maikel Linke
7461009c3b Merge branch 'handle-invalid-referer-urls' into combined/xero-report_analytics-bugfixes 2015-06-05 14:23:58 +10:00
Maikel Linke
252e9be016 Merge branch 'remove-old-bugsnag-notification' into combined/xero-report_analytics-bugfixes 2015-06-05 14:23:03 +10:00
Maikel Linke
f324471495 Merge branch 'index_enterprise_permalink' into combined/xero-report_analytics-bugfixes 2015-06-05 14:20:13 +10:00
Maikel Linke
f438a44f26 Merge remote-tracking branch 'origin/analytics' into combined/xero-report_analytics-bugfixes
Conflicts:
	app/controllers/spree/admin/orders_controller_decorator.rb
2015-06-05 14:19:54 +10:00
Maikel Linke
1b91082c1c Merge branch 'show-order-without-current-distributor' into combined/xero-report_show-order-without-distributor 2015-06-05 13:48:47 +10:00
Maikel Linke
ffa960b02e Merge remote-tracking branch 'origin/xero-report' into combined/xero-report_show-order-without-distributor 2015-06-05 13:48:24 +10:00
Maikel Linke
41dafce0db Remove obsolete Bugsnag notification 2015-06-05 13:46:15 +10:00
Maikel Linke
e35b39c7cf Handle invalid referer URLs
Rescues URI::InvalidURIError of URL(request.referer).
2015-06-05 12:43:49 +10:00
Maikel Linke
552bbf221c Delete obsolete paragraph in registration #595 2015-06-05 11:01:40 +10:00
Rohan Mitchell
f09fad464e Merge branch 'master' into optimise-shopfront 2015-06-05 07:28:05 +10:00
Rohan Mitchell
fc7e33d706 Fall back on individual calculations when pre-prepared values are not present 2015-06-04 16:43:19 +10:00
Rohan Mitchell
ef3155a16a Pull product listing fee calculations out of serializer loop 2015-06-04 16:27:32 +10:00
Rohan Mitchell
3846d16822 Add methods to load fees for a number of variants in one go 2015-06-04 16:22:06 +10:00
Continuous Integration
6051c81959 Auto-merge from CI [skip ci] 2015-06-04 15:39:43 +10:00
Rohan Mitchell
486c2f9b42 WIP: Skip EnterpriseFeeApplicator step when computing fees 2015-06-04 12:13:04 +10:00
Rohan Mitchell
27bc28ffa4 Index variants by id 2015-06-04 12:09:34 +10:00
Rohan Mitchell
cf0031d9a5 WIP: Optimise enterprise fee calculation 2015-06-04 11:53:09 +10:00
Rohan Mitchell
85d1d67dac Sort orders as required by spec, fixes intermittent fail 2015-06-04 09:43:36 +10:00
Continuous Integration
a1425c5e07 Auto-merge from CI [skip ci] 2015-06-04 07:22:43 +10:00
Maikel Linke
5d77a48ef3 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into show-order-without-current-distributor 2015-06-03 20:36:12 +10:00
Rob Harrington
e93736b123 Ordering managed orders by id to fix spec 2015-06-03 18:16:07 +08:00
Maikel Linke
aea6277b77 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into index_enterprise_permalink 2015-06-03 19:54:29 +10:00
Rob Harrington
3855ae1337 Fixing bug on OC interface that prevented hubs from pulling their own products through 2015-06-03 16:18:44 +08:00
Rob Harrington
359328a96e Producers and distributors lists include self where appropriate 2015-06-03 16:18:44 +08:00
Rob Harrington
dbd81e60a1 Fixing customer index feature spec, only checking shop when something has been selected 2015-06-03 16:18:09 +08:00
Rob Harrington
7c9b4dbc3e Resolving unmerged section in bulk order management template 2015-06-03 15:33:04 +08:00
Rob Harrington
09160c8ea6 Fixing customers controller spec 2015-06-03 15:23:55 +08:00
Rob Harrington
439d122e93 Merge branch 'master' into customers
Conflicts:
	app/assets/javascripts/admin/bulk_order_management.js.coffee
	app/assets/javascripts/admin/bulk_product_update.js.coffee
	app/assets/javascripts/admin/directives/line_item_upd_attr.js.coffee
	app/views/spree/admin/orders/bulk_management.html.haml
	db/schema.rb
	spec/javascripts/unit/bulk_order_management_spec.js.coffee
2015-06-03 15:19:40 +08:00
Rohan Mitchell
f1019e9221 Upgrade unicorn 2015-06-03 16:53:46 +10:00
Rohan Mitchell
2c0da5e350 Output parallel spec runtime log -> evenly split spec grouping 2015-06-03 16:38:47 +10:00
Maikel Linke
d2a61dc096 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into registration-wizard-text 2015-06-03 16:37:25 +10:00
Rohan Mitchell
0569ef0505 Only record analytics in production. Also record them in admin backend. 2015-06-03 16:36:31 +10:00
Rohan Mitchell
17d123db63 ng-cloak producers page 2015-06-03 16:28:43 +10:00
Rohan Mitchell
4d789b70ed Merge branch 'products-and-inventory-report' into combined/bulk-product-edit-and-ng-cloak 2015-06-03 15:12:29 +10:00
Maikel Linke
7302963605 inventory report: filter was broken because filter_to_order_cycle returned nil
[skip ci]
2015-06-03 15:11:32 +10:00
Rohan Mitchell
ad4e17b77a Merge branch 'master' into combined/bulk-product-edit-and-ng-cloak 2015-06-03 15:10:12 +10:00
Rohan Mitchell
cd8084ae3f Merge branch 'master' into parallel-tests
Conflicts:
	script/ci/run_tests.sh
2015-06-03 15:08:15 +10:00
Rohan Mitchell
41b348f594 Merge branch 'master' into combined/bulk-product-edit-and-ng-cloak 2015-06-03 15:05:51 +10:00
Rohan Mitchell
2b3689fd93 Run CI specs in parallel 2015-06-03 14:29:38 +10:00
Rohan Mitchell
db47c01784 Initial config for parallel spec running 2015-06-03 14:29:38 +10:00
Rohan Mitchell
769a04d2e0 Merge branch 'master' into optimise-shopfront 2015-06-03 13:02:58 +10:00
Rohan Mitchell
36dc0d5ccd Do not run performance specs in CI 2015-06-03 13:00:07 +10:00
Rohan Mitchell
b3878b126b Decouple generic injection spec from EnterpriseSerializer 2015-06-03 12:53:46 +10:00
Rohan Mitchell
c6f6c11a43 Add wait between clicks to fix race condition 2015-06-03 12:51:15 +10:00
Rohan Mitchell
473322c7e6 CI: Add more robust merge-to-master script 2015-06-03 12:25:28 +10:00
Rohan Mitchell
8afffdae9a Fix error when product does not have a master variant 2015-06-03 12:13:42 +10:00
Maikel Linke
4b6222bbe2 Updating spec using new button label 2015-06-03 12:08:47 +10:00
Maikel Linke
96177b7cd7 Add unique index to enterprise permalink 2015-06-03 11:57:22 +10:00
Maikel Linke
cb2adea59f Remove executable bit from a migration file 2015-06-03 10:16:29 +10:00
Rohan Mitchell
22230294ab Merge branch 'master' into optimise-shopfront 2015-06-03 10:07:42 +10:00
Maikel Linke
2853885f26 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into registration-wizard-text 2015-06-03 09:47:37 +10:00
Rohan Mitchell
a22da1ae51 Merge branch 'ng-cloak' into combined/bulk-product-edit-and-ng-cloak 2015-05-29 16:54:01 +10:00
Maikel Linke
159b33e2db Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into bulk-product-edit 2015-05-29 16:52:18 +10:00
Maikel Linke
0d3cdb9c69 Expand All button to show all variants in BPE 2015-05-29 16:51:55 +10:00
Rohan Mitchell
5c3a59acab ng-cloak order cycles selector, tabs and shopfront 2015-05-29 16:39:41 +10:00
Rohan Mitchell
50ae331d94 ng-cloak mobile menu 2015-05-29 16:03:16 +10:00
Maikel Linke
fe27b1d446 text changes to the registration wizard 2015-05-29 15:24:17 +10:00
Maikel Linke
bf935623dc changing default mailer url in development from test.com to 0.0.0.0:3000 2015-05-29 15:24:17 +10:00
Maikel Linke
678b591c18 Explain how to disable delayed jobs to send emails again 2015-05-29 15:24:16 +10:00
Maikel Linke
503b687ed1 Display distributor banner only if current_distributor is present 2015-05-29 15:19:05 +10:00
Rohan Mitchell
952353da8c Merge branch 'bulk-product-edit' into combined/single-order-patches-and-bulk-product-edit
Conflicts:
	spec/features/admin/bulk_product_update_spec.rb
2015-05-29 15:08:30 +10:00
Rohan Mitchell
e5b3736e86 Merge branch 'single-order-patches' into combined/single-order-patches-and-bulk-product-edit 2015-05-29 14:36:51 +10:00
Continuous Integration
c14de4e97f Auto-merge from CI [skip ci] 2015-05-29 14:29:23 +10:00
Rohan Mitchell
d478cc1f69 Serialize taxons and relatives in expected format 2015-05-29 14:03:44 +10:00
Continuous Integration
dccc9fb479 Auto-merge from CI [skip ci] 2015-05-29 12:44:44 +10:00
Rohan Mitchell
3f4f8afacd EnterpriseRelationship.relatives does not show duplicates 2015-05-29 12:19:38 +10:00
Rohan Mitchell
69c54e1d70 Only load activated relatives for EnterpriseInjectionData 2015-05-29 12:08:21 +10:00
Rohan Mitchell
cdbf02ca20 EnterpriseRelationship.relatives can find activated enterprises only 2015-05-29 12:07:43 +10:00
Rohan Mitchell
4ce9ea05f0 Merge branch 'master' into require_standard_variant 2015-05-29 10:12:14 +10:00
Rohan Mitchell
835b56b222 Attempt to fix intermittent failures in spec/features/consumer/authentication_spec.rb 2015-05-29 09:44:57 +10:00
Rohan Mitchell
7486daa2a3 Merge branch 'master' into require_standard_variant
Conflicts:
	spec/controllers/spree/admin/variants_controller_spec.rb
	spec/lib/open_food_network/permissions_spec.rb
	spec/lib/open_food_network/products_and_inventory_report_spec.rb
	spec/models/enterprise_spec.rb
2015-05-28 15:08:13 +10:00
Maikel Linke
bf9addfa42 Merge branch 'group-custom-url' into group-pages 2015-05-28 13:27:48 +10:00
Maikel Linke
ff2eed7760 Using permalink in URLs pointing to groups 2015-05-28 11:27:40 +10:00
Maikel Linke
e4f93863fd Finding unique permalink before validation. 2015-05-28 11:27:40 +10:00
Maikel Linke
aef128f2c9 permalink editable 2015-05-28 11:27:40 +10:00
Maikel Linke
19448a182e Add permalink field to enterprise groups 2015-05-28 11:27:39 +10:00
Continuous Integration
a01a53caea Auto-merge from CI [skip ci] 2015-05-28 11:05:07 +10:00
Rohan Mitchell
7f43dbf9bb Fix further intermittent failures in permissions spec 2015-05-28 10:58:12 +10:00
Rohan Mitchell
97e49c2bdb Replace 'array.sort.should == expected.sort' pattern with match_array 2015-05-28 10:46:08 +10:00
Rohan Mitchell
ccf1e2951c Fix intermittent failure in permissions spec 2015-05-28 10:45:47 +10:00
Rohan Mitchell
3ab7df88e6 Allow serialization of nil enterprise 2015-05-27 16:32:15 +10:00
Rohan Mitchell
75f1f673ad Update spec for EnterpriseSerializer 2015-05-27 16:26:31 +10:00
Rohan Mitchell
e74390a013 Remove controller specs for @active_distributors, now set via helper 2015-05-27 16:26:08 +10:00
Rohan Mitchell
41bc67e2d8 Add benchmark for product serialisation 2015-05-27 15:44:02 +10:00
Rohan Mitchell
e1b4c3b1e4 Add benchmarking test for inject_enterprises 2015-05-27 15:44:02 +10:00
Rohan Mitchell
31b726613d Avoid loading enterprise injection data when it's not be needed due to caching 2015-05-27 15:44:01 +10:00
Rohan Mitchell
dd761719ee Fix undefined Api::IdSerializer error 2015-05-27 15:44:01 +10:00
Rohan Mitchell
1a887df412 Pull taxon computation out of the serialization loop 2015-05-27 15:44:01 +10:00
Rohan Mitchell
2c92b5a751 Find all supplied and distributed taxons 2015-05-27 15:44:01 +10:00
Rohan Mitchell
3afd636577 Pull relatives computation out of the serialization loop 2015-05-27 15:44:01 +10:00
Rohan Mitchell
cf79b90044 Load relatives of all enterprises in one go 2015-05-27 15:44:01 +10:00
Rohan Mitchell
4a59c85b3e Inject current hub from AMS rather than RABL 2015-05-27 15:44:01 +10:00
Rohan Mitchell
704955a185 Load active distributors where they're needed rather than in most controllers 2015-05-27 15:44:01 +10:00
Rohan Mitchell
ee8db23fd9 Pull shipping method service computations out of the serialization loop 2015-05-27 15:44:01 +10:00
Rohan Mitchell
f0e909c92b Look up the shipping services (pickup, delivery) that different hubs provide 2015-05-27 15:44:01 +10:00
Rohan Mitchell
f940984ca3 Pull earliest closing time computations out of the serialization loop 2015-05-27 15:44:01 +10:00
Rohan Mitchell
769edbe9d5 Find the earliest closing times for each distributor in an active order cycle 2015-05-27 15:44:01 +10:00
Rohan Mitchell
c5f00d87bd When loading products for shopfront, load all master variants in one go 2015-05-27 15:44:01 +10:00
Rohan Mitchell
99cb09c6f7 When loading products for shopfront, load all variants in one go 2015-05-27 15:44:01 +10:00
Continuous Integration
5377af9cf9 Auto-merge from CI [skip ci] 2015-05-24 09:52:53 +10:00
Rick Giner
a5482c269f #541 Fixed issue of showing negative 'more' numbers, and only working for current Hub 2015-05-24 09:52:34 +10:00
Maikel Linke
5a43ed2046 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into bulk-product-edit 2015-05-22 18:17:20 +10:00
Maikel Linke
28dae3c6c6 Enterprises cannot add themselves to Groups 2015-05-22 15:23:59 +10:00
Rob Harrington
5d47dc2fdb Sort array so that order doesn't cause spec fail 2015-05-22 15:03:21 +10:00
Rob Harrington
5b65f67737 Amending spec expect after_create when we want after_save 2015-05-22 15:02:49 +10:00
Rob Harrington
e931f4b31f Merge branch 'master' into require_standard_variant 2015-05-22 12:22:54 +10:00
Rob Harrington
63f3ede766 Prepare master variants for duplication as standard variant by ensuring they have a unit value and that the product has a variant unit 2015-05-22 12:22:05 +10:00
Rob Harrington
d43df86201 Moving conditional logic into ensure_standard_variant 2015-05-22 12:20:31 +10:00
Maikel Linke
9c137ccf0f provide tax_categories in spec 2015-05-22 11:03:21 +10:00
Maikel Linke
7e4751cb3a updating bulk product js spec 2015-05-21 22:30:23 +10:00
Maikel Linke
e6b6303f5e Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into bulk-product-edit 2015-05-21 18:03:11 +10:00
Maikel Linke
9c884b31a3 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into single-order-patches 2015-05-21 18:01:16 +10:00
Maikel Linke
f017197221 orders list: filter by distributor and order cycle 2015-05-21 18:00:14 +10:00
Rob Harrington
cd44d43b3e Adding price to line_item serializer (oops, forgot to include when merging in master) 2015-05-21 17:48:35 +10:00
Rob Harrington
903ed7e507 Merge branch 'master' into variable_weights
Conflicts:
	app/assets/javascripts/admin/bulk_order_management.js.coffee
	app/views/spree/admin/orders/bulk_management.html.haml
	app/views/spree/api/line_items/bulk_show.v1.rabl
	spec/features/admin/bulk_order_management_spec.rb
2015-05-21 17:31:33 +10:00
Rob Harrington
79a59e2e81 Add order_with_distributor factory 2015-05-21 13:34:32 +10:00
Maikel Linke
73884d4f01 BPE: Display notice about variant overrides 2015-05-21 13:01:28 +10:00
Maikel Linke
2ed519ef50 on_demand checkbox for variants 2015-05-21 12:37:10 +10:00
Maikel Linke
1936767084 BPE: new col for tax category 2015-05-21 11:06:08 +10:00
Rob Harrington
0b28771364 Removing unrequired specs for variant/product 'units_show' 2015-05-20 21:06:20 +10:00
Rob Harrington
1aca4657d9 Oops, switch managed_products to editable_products for Api::ProductsController 2015-05-20 20:59:06 +10:00
Rob Harrington
3431c687b8 Making sure every created by factories has a distributor 2015-05-20 20:54:27 +10:00
Rob Harrington
65a6329132 Products and inventory reports scopes products to visible in permissions 2015-05-20 16:19:08 +10:00
Rob Harrington
8132f07d88 Adding visible products method to permissions 2015-05-20 15:53:10 +10:00
Maikel Linke
1e26466d11 bulk product edit: "on demand" for new product 2015-05-20 15:29:35 +10:00
Maikel Linke
6953f61939 bulk product edit: new col "on demand" 2015-05-20 15:07:22 +10:00
Rob Harrington
01d4cf6ecf Renaming managed_products permissions method to editable_products 2015-05-20 15:02:36 +10:00
Rob Harrington
05131de1ad Use full_name on BOM instead of options_text 2015-05-20 14:11:31 +10:00
Maikel Linke
0a0bb67277 No SKU for cloned products. Community topic 175 2015-05-20 14:05:14 +10:00
Rob Harrington
8d73b2f532 involving... order cycle scopes return distinct OCs 2015-05-20 13:47:01 +10:00
Rob Harrington
c56efabfbe Removing obsolete rabl templates 2015-05-20 11:52:49 +10:00
Rob Harrington
0ad2978926 Removing old managed route from api orders controller and switching BOM over to use new controller action 2015-05-20 11:48:48 +10:00
Rob Harrington
fc55a000b8 Adding managed controller action which uses new order serializer to render json 2015-05-20 11:48:13 +10:00
Rob Harrington
823adf3272 Translating existing order-related rabl templates accross to AMS 2015-05-20 11:45:48 +10:00
Rob Harrington
7f80c02c0e Adding route for managed route for admin orders 2015-05-20 11:45:05 +10:00
Maikel Linke
828456118b Remove forgotten binding.pry 2015-05-20 11:15:18 +10:00
Maikel Linke
fa87c53777 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into group-pages 2015-05-20 10:22:28 +10:00
Maikel Linke
6b956a8a38 Updating product clone spec 2015-05-20 10:19:37 +10:00
Maikel Linke
0c46f963ce Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into bulk-product-edit 2015-05-20 10:19:03 +10:00
Rob Harrington
312a6299a8 Making where clause unambiguous 2015-05-15 21:19:16 +10:00
Rohan Mitchell
f1899a7558 Merge branch 'master' into xero-report 2015-05-15 16:57:11 +10:00
Rohan Mitchell
70b5ac4785 Add column for whether the order has been paid for 2015-05-15 16:55:52 +10:00
Rohan Mitchell
f7642b2a1b When blank values are submitted, do not override defaults 2015-05-15 16:51:04 +10:00
Rohan Mitchell
a467d3c379 Add filtering to xero invoices report - order date range, hub and order cycle 2015-05-15 16:20:56 +10:00
Rohan Mitchell
3d4a0f8407 Xero invoices report: Preserve form fields on submit, do not show rows with no cost 2015-05-15 15:27:46 +10:00
Rohan Mitchell
3640a71ab8 Reorder methods 2015-05-15 15:05:18 +10:00
Rohan Mitchell
ca37efdd26 Display whether there is tax included in shipping 2015-05-15 12:44:48 +10:00
Rohan Mitchell
dc8270ed72 Display amounts on xero invoice report 2015-05-15 12:35:20 +10:00
Rohan Mitchell
0dcd8eb8cc Find adjustments with and without tax 2015-05-15 12:35:19 +10:00
Rohan Mitchell
ca1d88d8b1 Find line items with and without tax 2015-05-15 12:35:19 +10:00
Rohan Mitchell
5660e3737e Extract order rows generation to method 2015-05-15 12:35:19 +10:00
Rohan Mitchell
c5b618b1f4 Admin can customise some fields on Xero invoices report
Add require for xero invoices report spec
2015-05-15 12:35:14 +10:00
Rohan Mitchell
0737ac8da0 Write an rspec table matcher that gives informative error messages 2015-05-15 12:35:14 +10:00
Rohan Mitchell
0a2f2e0fba Output summary data without customisation
Add route for xero invoices report

Add require for reports controller decorator
2015-05-15 12:35:05 +10:00
Rohan Mitchell
38e1bd4139 Fix indentation 2015-05-15 12:17:16 +10:00
Rohan Mitchell
ef064819f9 Add spec for order_cycle_management report access 2015-05-15 10:41:29 +10:00
Rohan Mitchell
924492ec5b Merge branch 'ordercyclemanagementreports2' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-ordercyclemanagementreports2 2015-05-15 10:37:34 +10:00
Continuous Integration
e3723da65a Auto-merge from CI [skip ci] 2015-05-14 14:32:07 +10:00
Rob Harrington
c8502747be Fixing layout of customers index 2015-05-14 12:37:55 +10:00
Rob Harrington
78fc3e376b Fixing styling of inputs for with pending/success/error status 2015-05-14 11:39:37 +10:00
Rob Harrington
50d0d04994 Removing obsolete dataSubmitter service 2015-05-14 11:38:55 +10:00
Rohan Mitchell
b4755c37dc Merge branch 'analytics' into combined/fix-delayed-job-loop-and-analytics 2015-05-14 11:03:27 +10:00
Rob Harrington
640c02570d Splitting out specs for switchClass service 2015-05-13 16:41:28 +10:00
Rob Harrington
3849b39d3e Splitting out specs for pending changes service 2015-05-13 16:39:43 +10:00
Rob Harrington
ffac0e4ceb Adding ngTagsInput to angular spec manifest 2015-05-13 16:06:38 +10:00
Rob Harrington
a473d0ed11 Checking in db version change 2015-05-13 15:58:03 +10:00
Rohan Mitchell
b86872095a Add google analytics 2015-05-13 14:52:17 +10:00
Rob Harrington
34f5cfb6b5 Completed orders require a customer, add association logic 2015-05-13 12:44:38 +10:00
Rob Harrington
1559b4e30a Adding customer reference to orders 2015-05-13 12:44:37 +10:00
Rob Harrington
ed941e211d Don't require a code on customer 2015-05-13 12:44:37 +10:00
Rob Harrington
dd9c192d48 Shuffling layout a little on customer index 2015-05-13 12:44:37 +10:00
Rob Harrington
b364994cc8 Adding tags input to customer index using ngTagsInput 2015-05-13 12:44:37 +10:00
Rob Harrington
3bc69242ce Style tweaks 2015-05-13 12:44:37 +10:00
Rob Harrington
d2e8b23dd4 Creating association between enterprise and customers 2015-05-13 12:44:37 +10:00
Rob Harrington
5b3c9842e4 Adding acts_as_taggable to customer model 2015-05-13 12:44:36 +10:00
Rob Harrington
a03c7a5f22 Adding ngTagsInput to admin assets 2015-05-13 12:44:36 +10:00
Rob Harrington
a60fd3d388 Installing ngTagInput 2015-05-13 12:44:36 +10:00
Rob Harrington
4c5e75c3f9 Adding acts-as-taggable-on gem 2015-05-13 12:44:36 +10:00
Rob Harrington
5b49e64bf2 Hiding bulk checkboxes on customer interface (for now) 2015-05-13 12:44:36 +10:00
Rob Harrington
9add073b17 User can update customer code from customer index page 2015-05-13 12:44:36 +10:00
Rob Harrington
734ad21e82 Customers controller responds with json 2015-05-13 12:44:35 +10:00
Rob Harrington
dcde2d88ad Adding Customer resource to resources service 2015-05-13 12:44:35 +10:00
Rob Harrington
4545e0ff95 Adding request defaults to index utils module 2015-05-13 12:44:35 +10:00
Rob Harrington
3890ba9a11 Wrapping pending changes service in a class 2015-05-13 12:44:35 +10:00
Rob Harrington
8f94390363 Moving a bunch of index related services from general admin module into indexUtils 2015-05-13 12:44:35 +10:00
Rob Harrington
a873278881 Moving line-item-upd-attr to indexUtils module, renaming to obj-for-update 2015-05-13 12:44:35 +10:00
Rob Harrington
2afd501af3 Wiring up update action for customers controller 2015-05-13 12:44:34 +10:00
Rob Harrington
8f35ccf007 Adding quick search and column dropdown to customers index 2015-05-13 12:44:34 +10:00
Rob Harrington
79d50a64ae BPE uses columns controller from intex utils 2015-05-13 12:44:34 +10:00
Rob Harrington
3e7d331892 BOM uses columns controller from index utils module 2015-05-13 12:44:34 +10:00
Rob Harrington
3b7ab086c9 Fix module name 2015-05-13 12:44:34 +10:00
Rob Harrington
69ba8540c1 Moving toggle_column directive to index_utils 2015-05-13 12:44:33 +10:00
Rob Harrington
5bd842fe1a Moving toggle_column directive to dropdown module 2015-05-13 12:44:33 +10:00
Rob Harrington
f5c0ae0f41 Moving dropdown to its own module folder and renaming 2015-05-13 12:44:33 +10:00
Rob Harrington
1c03e27686 Moving dropdown to its own folder 2015-05-13 12:44:33 +10:00
Rob Harrington
7a4f0e214c Adding customers index view 2015-05-13 12:44:33 +10:00
Rob Harrington
307302038a Adding customers controller, service and resource 2015-05-13 12:44:33 +10:00
Rob Harrington
c00c93816c Renaming spec file 2015-05-13 12:44:32 +10:00
Rob Harrington
b3d314cfdb Adding require line for index_utils module to all.js 2015-05-13 12:44:32 +10:00
Rob Harrington
b6d63d40c6 Pulling columns logic out into its own services/controller in a new indexUtils module 2015-05-13 12:44:32 +10:00
Rob Harrington
220f42fcf2 Customers controller serializes data for json requests, just renders view without data for html 2015-05-13 12:44:32 +10:00
Rob Harrington
37ff61d663 Adding basic routing to display customer index page 2015-05-13 12:44:32 +10:00
Rob Harrington
57dbc33a7b Adding resource service to determine submission request based on object type 2015-05-13 12:44:31 +10:00
Rob Harrington
b16fa9cdc1 Generalising datasubmitter pendingChanges and watcher directive 2015-05-13 12:44:31 +10:00
Rob Harrington
30bb948d35 Making ofn-line-item-upd-attr work without ng-model
Conflicts:
	app/assets/javascripts/admin/directives/line_item_upd_attr.js.coffee
	app/views/spree/admin/orders/bulk_management.html.haml
2015-05-13 12:44:31 +10:00
Rohan Mitchell
3520127c41 Fix infinite job loop 2015-05-13 11:06:42 +10:00
Rick Giner
e801d6199a Passing in $event in other views that call toggle() 2015-05-11 20:33:35 +10:00
Rick Giner
62ae38372e #541 add "show more" link to producers lists in hub on home page 2015-05-11 20:31:24 +10:00
Rick Giner
b7c1a43125 Issue #540 Fix up hub list navigation 2015-05-10 18:13:30 +10:00
Rick Giner
98c1a95bd1 Issue #531 remove Google map road markers 2015-05-10 16:51:56 +10:00
Rick Giner
9c3ec950fc Revert "ginerr_#531_remove Google map road markers"
This reverts commit 3e2117134f.
2015-05-10 16:50:58 +10:00
Rick Giner
3e2117134f ginerr_#531_remove Google map road markers 2015-05-10 16:50:00 +10:00
Lynne
90dd1ea4a2 Merge pull request #1 from openfoodfoundation/variable_weights
Merging
2015-05-09 19:25:30 +01:00
Lynne Davis
26ee5c49b2 Fixing merge conflicts 2015-05-09 19:14:50 +01:00
Lynne Davis
3179887842 Do not allow line_item.unit_value to be updated if the variant.unit_value is zero 2015-05-09 19:12:24 +01:00
Lynne Davis
4d025ee7a9 Updating the spec based on @Robs suggestions, hoping for his insights. Still doesn't work. 2015-05-09 19:10:55 +01:00
Lynne Davis
521834bd76 Populate the line item unit value, when line_item created and update old data in migration 2015-05-09 19:10:55 +01:00
Lynne Davis
662c7fe368 Removing notes to myself from this file 2015-05-09 19:10:55 +01:00
Lynne Davis
54da7ae241 Adding additional logic for if the line_item unit_value is nil 2015-05-09 19:10:55 +01:00
Lynne Davis
2a991ad130 Variable Weights: Adding ability to update the weight/volume of a line_item after checkout. The price of the line_item is automatically updated to reflect the value of the new weight. 2015-05-09 19:10:55 +01:00
Lynne Davis
2f463474fb Adding specs for variable weight adjustment via builk order management 2015-05-09 19:10:55 +01:00
Lynne Davis
f7ade48e86 Update DB schema to store updatable weight on items sold 2015-05-09 19:10:55 +01:00
Continuous Integration
3d0880857a Auto-merge from CI [skip ci] 2015-05-08 16:24:39 +10:00
Continuous Integration
df14c10608 Auto-merge from CI [skip ci] 2015-05-08 13:45:56 +10:00
Rohan Mitchell
1531c476e3 Merge branch 'master' into require_standard_variant
Conflicts:
	spec/controllers/spree/admin/variants_controller_spec.rb
2015-05-08 13:45:31 +10:00
Rohan Mitchell
e8c8d8885c Merge branch 'master' into single-order-patches 2015-05-08 12:42:56 +10:00
Rohan Mitchell
6fb3fa55a1 Allow extended time for all parts of this spec to fix intermittent fails 2015-05-07 14:23:58 +10:00
Rob Harrington
f3f0766279 Adding a distributor to order cycle to fix broken feature spec 2015-05-07 12:50:57 +10:00
Rob Harrington
0d5ce5ff57 Fixing issues with reports controller spec 2015-05-07 12:50:57 +10:00
Rob Harrington
68b4cb59be Fixing bulk management specs broken by making order_cycles filter update dates 2015-05-07 12:50:57 +10:00
Rob Harrington
f88fdac710 Adding module - doh! 2015-05-07 12:50:56 +10:00
Rob Harrington
a7019e7e78 Adding permissions method for order report enterprises 2015-05-07 12:50:56 +10:00
Rob Harrington
bd66091d75 Push logic for checking of user super admin status down into private method 2015-05-07 12:50:56 +10:00
Rob Harrington
d8f5669fbb Renaming granted > related_enterprises_granted 2015-05-07 12:50:56 +10:00
Rob Harrington
5806f50a84 Renaming granting > related_enterprises_granting 2015-05-07 12:50:56 +10:00
Rob Harrington
5cd528a87d Removing obsolete related_enterprises_with permission method 2015-05-07 12:50:56 +10:00
Rob Harrington
f0f7e0ee2f Making permissions method managed_and_related_enterprise_with method more specific 2015-05-07 12:50:56 +10:00
Rob Harrington
7ffe0f042e Moving accessible_by scope on Enterprise to permissions 2015-05-07 12:50:55 +10:00
Rob Harrington
f79fba52be Hiding personal details of customers, where the user does not manage the distributor of the order or the coordinator of the order cycle 2015-05-07 12:50:55 +10:00
Rob Harrington
4259b466f5 Using new order and line item permissions to fetch items to display in Orders and Fullfillment reports 2015-05-07 12:50:55 +10:00
Rob Harrington
0a03483e36 Adding permissions methods for visible and editable orders and line_items 2015-05-07 12:50:55 +10:00
Rob Harrington
28bf7037db Updating methods for retrieving allowed producers, distributors and order cycles for order and fulfillment reports 2015-05-07 12:50:55 +10:00
Rob Harrington
ed9bbe2c45 Sorting Hub and Producer filter selectors by name 2015-05-07 12:50:55 +10:00
Rob Harrington
b5c7607d67 Order cycle filter resets date filters on BOM 2015-05-07 12:50:55 +10:00
Rob Harrington
e640376d63 Don't load cancelled orders into bulk order management 2015-05-07 12:50:54 +10:00
Rob Harrington
9ab16d8cec Allowing calls to Api::OrderCyclesController#accessible to specify :as => 'distributor' or 'producer' 2015-05-07 12:50:54 +10:00
Rob Harrington
d8c23d37ac Update accessible_by scope on enterprise, to read from permissions 2015-05-07 12:50:54 +10:00
Rob Harrington
89b153dc2c Update AJAX request to use sells instead of deprecated is_distributor attribute 2015-05-07 12:50:54 +10:00
Rohan Mitchell
bd6bac8874 Display deployment output in real time
This reverts commit 485eee4bdd.
2015-05-06 20:02:22 +10:00
Rohan Mitchell
50d2ddc05f Add progress comments 2015-05-06 20:00:50 +10:00
Rohan Mitchell
10b7a86745 Add debugging to merge script 2015-05-06 19:50:06 +10:00
Rohan Mitchell
6d33dc5070 Add script to merge master into the current branch if required before running specs 2015-05-06 19:41:36 +10:00
Rohan Mitchell
d109e898d2 Preserve newlines when displaying deploy script output 2015-05-06 19:38:20 +10:00
Rohan Mitchell
3dee29cd12 Remove build badge - master branch is always green 2015-05-06 19:37:21 +10:00
Rohan Mitchell
0921cd2dfa Merge branch 'master' into single-order-patches 2015-05-06 18:13:55 +10:00
Rohan Mitchell
7b4130972b Fix first feature spec sometimes timing out 2015-05-06 18:12:17 +10:00
Rohan Mitchell
485eee4bdd Deploy scripts display their output 2015-05-06 18:07:50 +10:00
Rohan Mitchell
f84e704d99 Retry simple push-to-master script 2015-05-06 17:59:36 +10:00
Rohan Mitchell
ad7e5a45bb Add updated merge script 2015-05-06 17:58:36 +10:00
Rohan Mitchell
d9404d3332 Merge branch 'master' into single-order-patches 2015-05-06 17:29:23 +10:00
Rohan Mitchell
e43d726b97 Merge branch 'master' into payments-report-fix 2015-05-06 14:55:10 +10:00
Rob Harrington
8788322492 Alllowing payments in payment reports to access soft-deleted payment methods 2015-05-06 11:10:50 +10:00
Rick Giner
368402f115 Changed selectors' ng-repeat. Using existing variable instead of method call 2015-05-03 15:24:16 +10:00
Rick Giner
9e70c80d1d bind-once in product modal 2015-05-03 14:48:27 +10:00
Rick Giner
8fb11defdb bind-once in groups home page 2015-05-03 14:41:34 +10:00
Rick Giner
9c26b3ebb2 bind-once in partials 2015-05-03 14:34:42 +10:00
Rick Giner
3fc616cdff bind-once on hubs 2015-05-03 14:11:09 +10:00
Rick Giner
16e9f0545b bind-once in products 2015-05-03 14:02:33 +10:00
Rick Giner
a3664d4448 Added bindonce and ng-if improvements to Producers templates 2015-05-03 12:51:59 +10:00
Maikel Linke
11acb3ba59 Allow to remove adjustments
Managers of an order cycle and the distributor of an order are allowed
to remove an adjustment from the order.
2015-05-01 15:59:46 +10:00
Maikel Linke
2edf5aeccd Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into bulk-product-edit 2015-05-01 15:05:14 +10:00
Maikel Linke
993183f2f5 updating js spec: cloning product calls insertProductAfter now 2015-05-01 15:04:12 +10:00
Rohan Mitchell
e91de69d5a Merge branch 'master' into pin-refunds 2015-05-01 14:58:19 +10:00
Rohan Mitchell
03ae740cd6 Revert "Display header for Xero invoices report"
This reverts commit a6cecdcc25.
2015-05-01 14:55:26 +10:00
Maikel Linke
7c55285708 Merge branch 'master' of github.com:openfoodfoundation/openfoodnetwork into single-order-patches 2015-05-01 14:50:51 +10:00
Maikel Linke
e6e063670c Allow managers to remove line items from order
Managers of an order cycle and the distributor of an order are allowed to
remove a line item from the order.
2015-05-01 14:49:34 +10:00
Rohan Mitchell
153604dd64 Merge branch 'single-order-patches' 2015-05-01 14:39:17 +10:00
Maikel Linke
b7bac326bd admin order edit: re-label update button to "update and recalculate fees" 2015-05-01 12:05:43 +10:00
Rohan Mitchell
a6cecdcc25 Display header for Xero invoices report 2015-05-01 11:59:52 +10:00
Maikel Linke
baabb5c07f fixing BPE feature spec 2015-05-01 11:30:26 +10:00
Maikel Linke
66f847f673 showing save button at the bottom as well 2015-04-30 17:22:54 +10:00
Maikel Linke
af78859db6 Merge remote-tracking branch 'origin/master' into single-order-patches 2015-04-30 17:18:02 +10:00
Maikel Linke
295da25dd2 insert clone after cloned product 2015-04-30 17:17:28 +10:00
Maikel Linke
5efc0a5110 quick fix: update fees after updating order 2015-04-30 16:29:51 +10:00
Rohan Mitchell
2c7a5c0656 Update Spree - fixes bug where Payment#method_missing depends on #provider already called. 2015-04-30 15:49:48 +10:00
Rohan Mitchell
0b652a2113 Add refund icon 2015-04-30 15:49:48 +10:00
Rohan Mitchell
b498c28632 Payments can be refunded 2015-04-30 15:49:48 +10:00
Rohan Mitchell
8184a7c7b2 Pin payments can't void or credit, but they can refund 2015-04-30 15:49:48 +10:00
Rohan Mitchell
b09ae550c8 Add spec for payment actions 2015-04-30 15:49:48 +10:00
Rohan Mitchell
f4df227ef0 Buildkite should now support Fuubar 2015-04-30 13:54:27 +10:00
Rohan Mitchell
a207f50aeb Merge branch 'master' into delay-devise-emails
Conflicts:
	script/run_tests.sh
2015-04-30 12:29:06 +10:00
Maikel Linke
ecf635e080 handle missing bill_address on admin order page 2015-04-29 14:32:13 +10:00
Maikel Linke
2e66a082eb add customer notes to admin order index page 2015-04-29 14:31:59 +10:00
Rob Harrington
992fb2347d Merging master branch into require_standard_variant 2015-04-29 14:30:49 +10:00
Rohan Mitchell
3b61d7a1e0 Add ref for country ISO codoes 2015-04-29 14:12:08 +10:00
Rohan Mitchell
c3f99d7540 Merge branch '441-default-country' of https://github.com/folklabs/openfoodnetwork into folklabs-441-default-country 2015-04-29 14:07:58 +10:00
Maikel Linke
f6d87eee87 Merge remote-tracking branch 'origin/master' into single-order-patches 2015-04-29 13:20:44 +10:00
Maikel Linke
e82a3a9d82 add ship button to admin order index page 2015-04-29 12:30:05 +10:00
Maikel Linke
8511bd19ce add ship button to order edit page 2015-04-29 12:03:49 +10:00
Maikel Linke
1268108877 handle ship event on order 2015-04-29 12:03:11 +10:00
Maikel Linke
2b0f867ed8 new order method ready_to_ship? 2015-04-29 11:42:35 +10:00
Rob Harrington
a253b88525 Fixing line item controller spec 2015-04-29 10:42:38 +10:00
Lynne Davis
9e61a7d083 Adding report type drop down to order_cycle_management_report 2015-04-26 11:03:32 +01:00
Lynne Davis
6bbd3f7c13 Added auth for order_cycle_management_report. This report was breaking supplier enterprises reports due to incorrect authorization. 2015-04-26 11:02:06 +01:00
Lynne Davis
d344c3dec8 Updating the spec based on @Robs suggestions, hoping for his insights. Still doesn't work. 2015-04-24 16:22:17 +01:00
Lynne Davis
6045283549 Populate the line item unit value, when line_item created and update old data in migration 2015-04-24 16:17:00 +01:00
Lynne Davis
162a565140 Removing notes to myself from this file 2015-04-24 16:14:24 +01:00
Rob Harrington
6a4de7c7e2 Hiding filters on list views because styling is broken 2015-04-24 19:35:18 +10:00
Rob Harrington
505fd8ff96 Merge branch 'properties' of github.com:openfoodfoundation/openfoodnetwork into properties 2015-04-24 17:20:41 +10:00
Rob Harrington
b1b1bfd8f6 Resolve conflict for overflow dropdown between multiple single-line-selectors on the one page 2015-04-24 16:05:39 +10:00
Maikel Linke
f94a5a975a Edit Order: resend button uses new pretty template. 2015-04-24 15:31:45 +10:00
Rohan Mitchell
29faa5f3c6 Merge branch 'master' into properties 2015-04-24 15:14:52 +10:00
Rohan Mitchell
8e2c224d4d cd before sourcing includes 2015-04-24 15:00:49 +10:00
Rohan Mitchell
bb2f2a6f54 Also stop delayed job before loading staging baseline 2015-04-24 15:00:38 +10:00
Rob Harrington
dab3b59f6a Merge branch 'master' into properties 2015-04-24 14:00:08 +10:00
Rob Harrington
bdf462926d Ensure that producer properties have a position 2015-04-24 13:05:01 +10:00
Maikel Linke
355221a273 Adding customer name to order edit page heading 2015-04-24 12:33:25 +10:00
Rob Harrington
ad2df56bf1 Merge branch 'require_standard_variant' of github.com:openfoodfoundation/openfoodnetwork into require_standard_variant 2015-04-24 12:19:27 +10:00
Rohan Mitchell
9149276048 Kill any postgres connections before dropping and recreating database 2015-04-24 12:17:39 +10:00
Rob Harrington
ed7b763ecf UnitsCtrl can interpret unit_value_with_description without a separating space 2015-04-24 12:15:35 +10:00
Rob Harrington
05c350b5ff Refactoring unitsCtrl 2015-04-24 11:27:47 +10:00
Rob Harrington
c66a7e44b6 Updating product model specs to reflect changes to properties 2015-04-23 15:37:41 +10:00
Rob Harrington
9eb99d1c4a Merge branch 'master' into properties 2015-04-23 14:18:30 +10:00
Rob Harrington
57be445bd4 Merge branch 'master' into require_standard_variant 2015-04-23 14:18:11 +10:00
Rob Harrington
6cde1f7732 Add tooltip with value for selectors 2015-04-23 14:11:50 +10:00
Rob Harrington
7b83438b5e Pulling property values into the shopfront 2015-04-23 13:51:49 +10:00
Rob Harrington
e6a98747b4 correction in read only logic for filter selectors 2015-04-23 13:32:56 +10:00
Rob Harrington
ed15b95de0 Adding properties and taxons to producer modal 2015-04-23 12:31:20 +10:00
Rob Harrington
3df2720b31 Making filter selectors more flexible, allowing no active-selectors to be passed in, ie. read-only 2015-04-23 12:31:06 +10:00
Maikel Linke
eff8681d9b Merge branch 'master' into single-order-patches 2015-04-23 12:11:44 +10:00
Maikel Linke
a937fd3c61 Using variant overrides in variant seach on order edit page 2015-04-23 11:37:10 +10:00
Maikel Linke
3412bc25bf Edit Orders: more variant info in variant search
Displaying variant's full name and the producer's name.
2015-04-23 10:17:01 +10:00
Maikel Linke
f1a8011e13 Documentation of Variant.full_name
The code was confusing for all developers here. Maybe a bit of doco
helps.
2015-04-23 10:02:32 +10:00
Rohan Mitchell
f70bfee481 Merge branch 'master' into require_standard_variant 2015-04-23 09:56:41 +10:00
Rohan Mitchell
92e03e208f Extract load_environment method 2015-04-23 07:23:34 +10:00
Rob Harrington
76d6345ab5 Merge remote-tracking branch 'origin/master' into require_standard_variant 2015-04-22 21:02:47 +10:00
Rob Harrington
0251d8962d Adding sku to BPE 2015-04-22 21:02:07 +10:00
Rob Harrington
1c617994fc User can toggle property inheritence from product property page, and checking the box shows a list of producer properties that will be inherited from 2015-04-22 21:02:07 +10:00
Rob Harrington
4a4b3da551 Using properties_including_inherited for product properties on the shop page 2015-04-22 21:02:07 +10:00
Rob Harrington
e546388784 Rename properties_h to properties_including_inherited 2015-04-22 21:02:07 +10:00
Rob Harrington
976c24cf4c properties_h uses inherit_properties flag, and returns property id rather than presentation 2015-04-22 21:02:07 +10:00
Rob Harrington
f610a709e1 Adding inherits_properties to BPE 2015-04-22 21:02:06 +10:00
Rob Harrington
5d6f265c0a Moving spree namespaced serializers into admin 2015-04-22 21:02:06 +10:00
Rob Harrington
1f293bb787 Adding inherits properties flag to products 2015-04-22 21:02:06 +10:00
Rob Harrington
a4a41ae26a Refactor properties_h 2015-04-22 21:02:06 +10:00
Rohan Mitchell
7aeeb6d18f Add script to run JS specs in CI 2015-04-22 16:36:31 +10:00
Rohan Mitchell
7a78f4870a Use phantomjs for js specs, so we can run them in CI 2015-04-22 16:33:44 +10:00
Rohan Mitchell
28c79cdb50 Use db:test:load instead of db:test:prepare in CI to avoid conflicts between branches 2015-04-22 15:01:22 +10:00
Rohan Mitchell
b9e3ff54b8 Add build script to merge to master 2015-04-22 14:47:54 +10:00
Rohan Mitchell
0c0be0112e Update paths to include ci 2015-04-22 14:31:30 +10:00
Rohan Mitchell
883a2e0a0e WIP: Move CI scripts to their own folder 2015-04-22 14:29:59 +10:00
Rohan Mitchell
6c81109b17 Local branch isn't checked out, so we need to test remote branch 2015-04-22 14:17:07 +10:00
Rohan Mitchell
1c9a95b3d6 Set execute bit 2015-04-22 13:19:17 +10:00
Rohan Mitchell
53c4c8b5b7 Push to staging fails unless master has been merged into current branch 2015-04-22 13:16:39 +10:00
Rohan Mitchell
d406f9ccdf Tests fail unless master has been merged into current branch 2015-04-22 13:14:51 +10:00
Rohan Mitchell
7d4a4f8f9d Pushing to staging first loads staging baseline data 2015-04-22 12:55:36 +10:00
Rohan Mitchell
35536a629c Set execute bit 2015-04-22 12:55:36 +10:00
Rob Harrington
699a28e14c Merge branch 'master' into require_standard_variant 2015-04-22 10:58:43 +10:00
Rohan Mitchell
7b8938b5f6 Run password reset job for spec that requires it 2015-04-22 07:32:22 +10:00
Rohan Mitchell
b2717ffca0 Use db:test:load instead of db:test:prepare in CI to avoid conflicts between branches 2015-04-21 16:40:45 +10:00
Rohan Mitchell
700cb73b8f Send enterprise confirmation emails asynchronously 2015-04-21 16:19:02 +10:00
Rohan Mitchell
9d225142c8 Send password reset instructions asynchronously 2015-04-21 16:10:40 +10:00
Rohan Mitchell
998288e21f Keep failed jobs around for debugging. Limit max runtime to 15 mins (we're only sending emails at present). Notify bugsnag of errors in jobs. 2015-04-21 15:37:36 +10:00
Rohan Mitchell
9f93c9f221 Swap Jenkins build badge out for Buildkite 2015-04-21 15:17:34 +10:00
Rohan Mitchell
22127b2d18 Use progress formatter for less verbose CI output. I miss Fuubar formatter, though. 2015-04-21 15:17:34 +10:00
Rohan Mitchell
692e58e8f7 Output spec-by-spec results to track specs-hanging-at-90-percent issue 2015-04-21 10:52:14 +10:00
Rohan Mitchell
4158663e9a Pushing to production saves staging baseline data 2015-04-21 10:47:36 +10:00
Rob Harrington
a75a76840d Merging master into require_standard_variant 2015-04-17 21:18:24 +10:00
Rob Harrington
ff2e6d9ca4 Test deletion rather than destruction on variant model spec 2015-04-17 17:25:13 +10:00
Maikel Linke
893b743973 tidy (rm comment) 2015-04-17 17:00:18 +10:00
Maikel Linke
03fd148f41 showing profile modals on groups/hubs 2015-04-17 16:58:49 +10:00
Rob Harrington
72d553ef0c Test actual deletion of variants 2015-04-17 16:51:02 +10:00
Rob Harrington
63353ebace Don't try and delete the only variant, that will never work! 2015-04-17 16:49:14 +10:00
Rohan Mitchell
a1673afff0 Allow more time for phantomjs, required by first admin spec where assets are compiled 2015-04-17 15:46:51 +10:00
Rohan Mitchell
0d4dbd23fd Remove redundant spec line, test that sells is not changed 2015-04-17 15:42:42 +10:00
Rohan Mitchell
0d9ba4257d Merge branch 'properties' 2015-04-17 15:25:51 +10:00
Rob Harrington
c43eb9ef72 Merge branch 'email_user' into properties 2015-04-17 15:17:37 +10:00
Rob Harrington
46690faffb Fixing Darkswarm Angular Product Controller spec 2015-04-17 15:14:19 +10:00
Rob Harrington
32f14bca00 Preventing fitting of selectors when there are none 2015-04-17 15:10:41 +10:00
Rohan Mitchell
042e076b58 Fix tax-related spec failures 2015-04-17 14:46:32 +10:00
Rob Harrington
6d96a7a60b Specifiy that allSelectors attribute on filterSelectors directive is optional 2015-04-17 14:43:09 +10:00
Rob Harrington
c8bf207187 Fixing trial expiry test 2015-04-17 14:33:47 +10:00
Rohan Mitchell
9e8483348f Fix spec - enterprise needs to charge sales tax for tax to be charged 2015-04-17 13:41:38 +10:00
Rohan Mitchell
81324f3cc4 Do not charge tax on shipments when distributor does not charge sales tax 2015-04-17 13:41:38 +10:00
Rohan Mitchell
0b8a619274 When the order does not have a hub, all tax rates apply 2015-04-17 13:41:38 +10:00
Rohan Mitchell
048c6a8ee8 Include only the bare minimum of helpers into JS template context to avoid intermittent SASS @include issues 2015-04-17 13:41:38 +10:00
Rohan Mitchell
3e8801b12b Do not charge sales tax on items or on enterprise fees when the distributor of the order does not charge sales tax 2015-04-17 13:41:38 +10:00
Rohan Mitchell
a6a5fdfb3b Require that the user selects whether their enterprise charges sales tax 2015-04-17 13:41:38 +10:00
Rohan Mitchell
0bdb8f7241 User can set whether an enterprise charges sales tax when registering 2015-04-17 13:41:38 +10:00
Rohan Mitchell
05551aa2a9 Make helpers available to javascript templates 2015-04-17 13:41:38 +10:00
Rohan Mitchell
9bbc151cae Admin can set enterprises to charge or not charge sales tax 2015-04-17 13:41:38 +10:00
Rohan Mitchell
08fef890ec Do not show tax lines if there is no tax on the order 2015-04-17 13:41:14 +10:00
Rohan Mitchell
a93633a626 Show tax on order confirmation emails 2015-04-17 13:41:14 +10:00
Rohan Mitchell
4bd1ff2011 Extract the bulk of the confirmation emails into partials, eliminating a lot of duplication 2015-04-17 13:40:08 +10:00
Rohan Mitchell
2914990444 Add save_and_open spec helper method to open HTML emails in the browser 2015-04-17 13:40:08 +10:00
Rohan Mitchell
3ce2c5b84f Show tax on order confirmation page 2015-04-17 13:40:08 +10:00
Rohan Mitchell
77d7255243 Use short syntax for rendering partials 2015-04-17 13:39:10 +10:00
Rohan Mitchell
6bb926f811 Do not show tax in checkout 2015-04-17 13:39:09 +10:00
Rohan Mitchell
829d11d4b2 Deliver a warning if attempting to create an invalid taxed_product from factory 2015-04-17 13:39:09 +10:00
Rohan Mitchell
beec910445 Display tax in cart 2015-04-17 13:39:09 +10:00
Rohan Mitchell
68f0e51c02 Change add_product_to_cart spec helper to use OrderPopulator, reducing inconsistencies in order adjustments, tax etc. 2015-04-17 13:39:09 +10:00
Rohan Mitchell
210c76eddc Checkout won't load without payment and shipping methods; move spec to context where it can test the checkout 2015-04-17 13:39:09 +10:00
Rohan Mitchell
e75c6a8e1d Add helper to display total tax on an order 2015-04-17 13:39:09 +10:00
Rob Harrington
b44f2bcdf5 Fixing trial expiry test 2015-04-17 13:30:36 +10:00
Rob Harrington
f13b52411d Merge branch master into properties 2015-04-17 13:23:33 +10:00
Rob Harrington
0cf8b017b9 Pulling out taxons and properties placeholders from producer and product modals 2015-04-17 13:20:01 +10:00
Rob Harrington
b9f19d5777 Fixing broken specs 2015-04-17 13:00:20 +10:00
Rob Harrington
9ee25c4e42 Making spec better 2015-04-17 11:25:18 +10:00
Rob Harrington
2d7fb3fd67 Updating name of spec 2015-04-17 11:25:18 +10:00
Rob Harrington
7596270154 A few more changes to tidy up standard variant migration 2015-04-17 11:25:18 +10:00
Rob Harrington
5d9e861ee4 Working migration to complete deprecation of master variants 2015-04-17 11:25:18 +10:00
Rob Harrington
447a5481a3 WIP: Building migration to duplicate master variants 2015-04-17 11:25:18 +10:00
Rob Harrington
8248e382f3 Greying out disabled action button 2015-04-17 11:25:18 +10:00
Rob Harrington
4b182f9248 Can't delete final variant on a product from BPE 2015-04-17 11:25:18 +10:00
Rob Harrington
2b47c9145a Cannot delete last variant of product 2015-04-17 11:25:17 +10:00
Rob Harrington
fcb3bc894b Cleanup 2015-04-17 11:25:17 +10:00
Rob Harrington
a223a2d662 Cannot remove all variants from a product 2015-04-17 11:25:17 +10:00
Rob Harrington
5e2fe56c22 Cleanup 2015-04-17 11:25:17 +10:00
Rob Harrington
89afbc80a6 Set initial on_hand to 0 2015-04-17 11:25:17 +10:00
Rob Harrington
971723964e Update outdated spec 2015-04-17 11:25:17 +10:00
Rob Harrington
28486f9e76 Only adds standard variant on create 2015-04-17 11:25:17 +10:00
Rob Harrington
869551a17c Adding a standard variant again 2015-04-17 11:25:17 +10:00
Rob Harrington
13a910c372 Replace validates_associated on master with current spree method for error reporting master saves 2015-04-17 11:25:17 +10:00
Rob Harrington
0a7b01ff07 Product requires variant_unit and master requires unit_value and/or unit_desc 2015-04-17 11:25:16 +10:00
Rob Harrington
dfb513cce7 Use after_create callback to duplicate master variant 2015-04-17 11:25:16 +10:00
Rob Harrington
3f01a459ac Adding a standard variant upon initialisation of a new instance of Spree::Product 2015-04-17 11:25:16 +10:00
Rohan Mitchell
2b5fc656fe Configure delayed job logging, add startup script for monit 2015-04-17 10:40:25 +10:00
Rob Harrington
524f02717b Don't redirect to root when closing login window on checkout page 2015-04-17 10:25:38 +10:00
Rob Harrington
456a6f94f5 On enterprise confirmation: create a new user based on enterprise contact email if one does not already exist, and add it as a manager 2015-04-17 10:24:37 +10:00
Rob Harrington
afe77925ba Allow request to specify a return value when calling user_passwords#edit 2015-04-17 10:21:25 +10:00
Rob Harrington
5940ff2b2c Don't override devise's after_sign_in_path_for, use specific before filters for user sessions and registrations controllers instead 2015-04-16 16:56:27 +10:00
Rohan Mitchell
d1ab2d9dac Add daemons gem for Delayed::Job 2015-04-16 16:54:43 +10:00
Rohan Mitchell
ccc1f3df40 Feature specs test email sending through delayed jobs 2015-04-16 16:54:43 +10:00
Rohan Mitchell
e9fbd74e88 Send emails via jobs instead of synchronously 2015-04-16 16:54:43 +10:00
Rohan Mitchell
bb3bdf37cd Add jobs for user, order and enterprise emails 2015-04-16 16:54:43 +10:00
Rohan Mitchell
af4baabb50 Include DelayedJobHelper for specs 2015-04-16 16:54:43 +10:00
Rohan Mitchell
3bbf42c3e7 WIP: Rename delayed job support to delayed job helper 2015-04-16 16:54:43 +10:00
Rohan Mitchell
530740158c Tolerate no jobs previously in queue 2015-04-16 16:54:43 +10:00
Rohan Mitchell
771b9e0df5 Improve syntax: take job class as a separate argument 2015-04-16 16:54:43 +10:00
Rohan Mitchell
1d5a4c93e4 Add delayed job testing support, original credit Mat Holroyd and Rohan Mitchell, from CERES Fairfood project 2015-04-16 16:54:43 +10:00
Rohan Mitchell
61cb2514cd Add Delayed::Job 2015-04-16 16:54:43 +10:00
Rohan Mitchell
aef3fdf4b4 Merge branch 'group-pages' 2015-04-16 16:53:49 +10:00
Rohan Mitchell
a384f5e3d4 Merge branch 'buildkite' into customer-totals-report-and-perms-fix 2015-04-16 14:08:39 +10:00
Rohan Mitchell
318957551f Freeze time to make spec repeatable 2015-04-16 14:07:38 +10:00
Rohan Mitchell
e017c30ab7 Do not double-run db:test:prepare 2015-04-16 14:07:37 +10:00
Rohan Mitchell
23888b7576 chmod +x 2015-04-16 14:07:37 +10:00
Rohan Mitchell
ff07707af7 Symlink it right 2015-04-16 14:07:37 +10:00
Rohan Mitchell
78bf87614a Buildkite: Symlink config/application.yml if not present 2015-04-16 14:07:37 +10:00
Rohan Mitchell
2b50f993de Load environment before attempting build 2015-04-16 14:07:37 +10:00
Rohan Mitchell
4672cc4863 Add buildkite scripts 2015-04-16 14:07:37 +10:00
Rohan Mitchell
768cfab591 Change field text at checkout 2015-04-16 10:59:15 +10:00
Rohan Mitchell
7f973604e5 Add columns to customer totals report: order cycle, payment method, customer code, tags, billing address 2015-04-16 10:59:15 +10:00
Rohan Mitchell
7f6c02ca29 Add User#customer_of to look up customers 2015-04-16 10:59:15 +10:00
Rohan Mitchell
34d1841d22 Make Variant#full_name resilient to regex chars 2015-04-16 10:59:15 +10:00
Rohan Mitchell
e570352a1b Grant fewer permissions on enterprise creation 2015-04-16 10:59:15 +10:00
Rohan Mitchell
2e021941d1 Fix bug where new enterprises should be created as hubs, but aren't 2015-04-16 10:59:15 +10:00
Rohan Mitchell
48bf87ec73 Perpetually updating copyright year 2015-04-16 10:59:15 +10:00
Maikel Linke
548e3576b9 textAngular editor for group description 2015-04-15 17:13:10 +10:00
Maikel Linke
201bcb133a show profiles checkbox on groups hubs page 2015-04-15 16:15:21 +10:00
Rob Harrington
0c155e6e3a Display message when email has not been confirmed for new enterprise 2015-04-15 15:32:17 +10:00
Lynne Davis
83981fbb15 Adding additional logic for if the line_item unit_value is nil 2015-04-14 17:29:56 +01:00
Rob Harrington
2072744870 User can enter the number of months back to search for order cycles from which to build relationships 2015-04-12 11:38:18 +10:00
Rob Harrington
0f9fbe6e8c Preventing relationships from being created with self 2015-04-12 10:53:22 +10:00
Rob Harrington
b24cad7aeb Providing access to order_cycle_permissions in order cycles controller 2015-04-11 23:25:30 +10:00
Rob Harrington
bc89018ee1 Refer to the right variable doofus 2015-04-11 23:24:50 +10:00
Rob Harrington
88bae32971 Adding method: user_manages_coordinator_or(enterprise) to make code a bit more terse 2015-04-11 23:00:34 +10:00
Rob Harrington
6f81a9ba18 Save common permission method results as instance variables 2015-04-11 22:53:57 +10:00
Rob Harrington
22a37cdc8a Rename managed_producers_in as managed_participating_producers 2015-04-11 22:44:32 +10:00
Rob Harrington
9c376f0b00 Rename managed_hubs_in as managed_participating_hubs 2015-04-11 22:32:15 +10:00
Rob Harrington
59a2c84857 Rename managed_enterprises_in as managed_participating_enterprises 2015-04-11 22:30:21 +10:00
Rob Harrington
6ac45f3dc8 Renaming order_cycle_exchanges as visible_exchanges 2015-04-11 22:26:55 +10:00
Rob Harrington
e3138c3cd2 Renaming order_cycle_enterprises_for as visible_enterprises 2015-04-11 22:25:23 +10:00
Rob Harrington
26d55baa35 Moving order cycle permissions to their own permissions class 2015-04-11 21:11:10 +10:00
Rob Harrington
02f8f293da Only allow managers or coordinator to add/remove fees from exchanges 2015-04-11 18:32:04 +10:00
Maikel Linke
2fd25f6cc4 Injecting all enterprises into group page
The enterprises have related producers and hubs that need to be
dereferenced. Therefore, we need a bigger set of enterprises to be
loaded. Injecting all enterprises is simple and doesn't require changes
if the set of needed enterprise data is growing in future.
2015-04-10 17:42:54 +10:00
Rob Harrington
24e3c9a9e1 Adding bugsnag notify block for catching naughty phantom fees 2015-04-10 16:41:10 +10:00
Rob Harrington
8b7d321dfe Changing delete time to ensure not_deleted scope works 2015-04-10 16:40:33 +10:00
Rob Harrington
72403fd021 Fixing broken enterprise controller spec 2015-04-10 13:16:21 +10:00
Maikel Linke
1e168afd71 giving the enterprise serializer the active_distributors 2015-04-10 12:55:20 +10:00
Rob Harrington
1e6fd94663 Adding rake task to create E2E relationships with P-OC based on past order_cycles 2015-04-10 12:51:15 +10:00
Rob Harrington
96c173414b Adding has_permission method to enterprise_relationship 2015-04-10 12:48:27 +10:00
Rob Harrington
226e2f0e2c Fixing error caused by order show template doing a lookup based on current distributor rather than order distributor 2015-04-10 09:26:20 +10:00
Rob Harrington
2280a71b23 Replace for_order_cycle rabl template with a serializer 2015-04-10 09:25:40 +10:00
Rob Harrington
6f24e969ce Removing stupid unusable spec 2015-04-09 17:20:31 +10:00
Maikel Linke
e26ebf4239 Serialize only activated hubs and producers of an enterprise 2015-04-09 17:15:57 +10:00
Rob Harrington
81a745420e Only check editable status of variants when actually selecting 2015-04-09 15:24:45 +10:00
Rob Harrington
c28ebf63ab As participating Hub, I cannot edit incoming exchanges despite being granted P-OC by the producer 2015-04-09 13:41:43 +10:00
Rob Harrington
69004ac477 Select all box only selects variants I have permission to edit 2015-04-09 13:29:25 +10:00
Rob Harrington
430320e3f9 Oopsie! 2015-04-09 13:28:41 +10:00
Rob Harrington
60a3d8e0d1 Restrict bulk updating order cycles at controller level 2015-04-09 12:27:43 +10:00
Rob Harrington
8a3126f117 Using helper to disable form elements on order cycle index page 2015-04-09 11:11:46 +10:00
Rob Harrington
c7157ce7bd Applying new helper to order cycle name and timing partial 2015-04-09 11:11:06 +10:00
Rob Harrington
133f7e4ec7 Add viewing_as_coodinator_of? helper method 2015-04-09 11:10:56 +10:00
Rob Harrington
fbcfe9b2a4 Add viewing_as_coordiantor flag to serialized order cycles and a managed flag to serialized enterprises for_order_cycle(s) 2015-04-09 10:31:17 +10:00
Rob Harrington
adc1b639bc Merge remote-tracking branch 'origin/master' into complex_oc 2015-04-08 14:38:27 +10:00
Rob Harrington
61a9e2f7cc Add a referer for all admin enterprise controller specs 2015-04-08 14:36:56 +10:00
Rob Harrington
f6e635466b Rearranging elements on the order cycle form a little bit 2015-04-08 14:31:18 +10:00
Rob Harrington
32cc17745a Non-coordinating user cannot alter important attributes of order cycle 2015-04-08 14:12:49 +10:00
Rob Harrington
b1624a733e Editable variants for incoming exchanges for hubs include those for producers that have granted my hub P-OC 2015-04-08 13:38:37 +10:00
Rob Harrington
b8ce6ed0fc Coordinator can see any enterprises that are already in the order cycle 2015-04-08 13:28:49 +10:00
Rob Harrington
104a8ddecf Refactor order_cycle_enterpises_for permission method, now requires an order cycle 2015-04-08 13:00:17 +10:00
Rob Harrington
4dcfec1de9 make enterprises_for_order_cycle permissions more correct 2015-04-08 12:12:02 +10:00
Rob Harrington
8859aa27ee Slight refactor of order cycle enterprises 2015-04-08 10:33:32 +10:00
Rob Harrington
24062e5585 Adding permissions for outgoing hubs to see producers whose variants they are distributing, despite P-OC not existing 2015-04-08 10:15:50 +10:00
Rob Harrington
4a87798bb4 Variants belonging to a producer I manager that are already in an outgoing an exchange need not be editable 2015-04-06 23:30:43 +10:00
Rob Harrington
ae1681b790 Not 1! Zero! 2015-04-06 23:29:15 +10:00
Rob Harrington
36c5cdf556 Only show enterprises with fees in order cycle edit page 2015-04-06 14:08:10 +10:00
Rob Harrington
d516795774 Fetching Enterprise Fees for order cycle, using new enterprisefee serializer 2015-04-06 13:06:21 +10:00
Rob Harrington
7eb735f87e Adding for_enterprises scope on enterprise fee 2015-04-06 10:24:40 +10:00
Rob Harrington
7448d41b27 Adding abilities for new for_order_cycle action 2015-04-06 10:23:39 +10:00
Rob Harrington
7ebea23fda Adding route for now for_order_cycle action on enterprise fees 2015-04-06 10:23:08 +10:00
Rob Harrington
b7de8353bc Renaming existing enterprise fee serializer as basic... 2015-04-06 09:47:37 +10:00
Rob Harrington
52dc313e70 Implementing editable variant scopes in order_cycle_applicator 2015-04-06 09:20:39 +10:00
Rob Harrington
a4b80b1f33 Implement editable scope for variants on order cycles page 2015-04-06 09:15:14 +10:00
Rob Harrington
f20844c2a0 Adding editable scope for variants in outgoing exchanges 2015-04-05 15:25:44 +10:00
Rob Harrington
136d361134 Fixing comment 2015-04-05 14:14:47 +10:00
Rob Harrington
009b25a491 Adding an editable variants scope for incoming exchanges 2015-04-05 13:59:00 +10:00
Rob Harrington
bf87394a76 Fixing order cycle feature spec 2015-04-05 10:58:06 +10:00
Lynne Davis
ff935af18b Variable Weights: Adding ability to update the weight/volume of a line_item after checkout. The price of the line_item is automatically updated to reflect the value of the new weight. 2015-04-04 19:20:56 +01:00
Lynne Davis
ffd850c761 Adding specs for variable weight adjustment via builk order management 2015-04-04 19:20:41 +01:00
Lynne Davis
bf44a1c862 Update DB schema to store updatable weight on items sold 2015-04-04 19:20:27 +01:00
Rob Harrington
d28fc7e42d Hubs can see incoming exchanges of producers who have given them P-OC or whose variants they are actively distributing 2015-04-03 14:58:01 +11:00
Rob Harrington
a10de68430 only load permissions once in serializer 2015-04-02 15:55:03 +11:00
Rob Harrington
3b9824171a Adding with_order_cycles_as_supplier_outer scope to Enterprise 2015-04-02 15:53:32 +11:00
Rob Harrington
5d7659aa3c Fixing product spec, using have_select2 instead of have_field 2015-04-02 14:36:19 +11:00
Rob Harrington
1e1d52cc47 Adding 'selected' option to have_select2 matcher 2015-04-02 14:35:39 +11:00
Rob Harrington
76648b97b0 Update spec, properties must exist for enterprise users before they can be assigned 2015-04-02 14:15:00 +11:00
Rob Harrington
5020eb4e32 And again: override redirect to index page when editing properties from edit page 2015-04-02 14:14:16 +11:00
Rob Harrington
cb376602f2 Override redirect to index page when editing properties from edit page 2015-04-02 14:03:51 +11:00
Rob Harrington
3aa5f6e023 Adding properties tab to admin enterprise edit form 2015-04-02 11:30:32 +11:00
Rob Harrington
8926e3765e Replace free text with with select dropdown for product property names when not super admin 2015-04-02 08:57:15 +11:00
Rob Harrington
5b235f356e Replace free text with with select dropdown for property names when not super admin 2015-04-02 08:56:36 +11:00
Rob Harrington
8ed6653dc4 Ignoring any new product properties submitted by a non-admin user 2015-04-02 08:55:20 +11:00
Rob Harrington
ca1a5b5f8d Ignoring any new producer properties submitted by the user 2015-04-02 08:54:35 +11:00
Rob Harrington
8d95ba2c69 Display full name of variant on order cycle edit form 2015-04-01 15:46:19 +11:00
Rob Harrington
94a88278a9 Ignore the unit_to_display when it is wholly contained within display_name or vice versa 2015-04-01 15:46:11 +11:00
Rob Harrington
588e036c1d Adding SKU to customer totals report 2015-04-01 14:45:23 +11:00
Rob Harrington
aa7ddbcba4 Renaming Dist. column to Admin & Handling 2015-04-01 14:38:15 +11:00
Rob Harrington
54af6886c2 Line items with a quantity of zero return price_with_adjustments of 0.0 2015-04-01 12:34:22 +11:00
Rob Harrington
d49dd62124 Replace unused bugsnag notification with one to test for line items with a quantity of zero 2015-04-01 11:38:06 +11:00
Paul Mackay
d4cf44a6dd Use COUNTRY_CODE instead of COUNTRY in application.yml. 2015-03-29 17:06:05 +01:00
Rob Harrington
6e77a5eebc Using the correct method name duh 2015-03-27 16:47:12 +11:00
Rob Harrington
2d5118290b Fixing broken order cycle feature specs 2015-03-27 16:19:52 +11:00
Rob Harrington
74b7feda53 coordinator of a simple order cycle has permission to add their own variants to outgoing exchanges 2015-03-27 16:16:13 +11:00
Rob Harrington
f5bacf71b7 Permissions for OrderCycleFormApplicator are determined internally 2015-03-27 16:16:13 +11:00
Rob Harrington
3817ef202c Enterprises in simple OC create controller only load after OC initialises 2015-03-27 16:16:12 +11:00
Rob Harrington
aa170ef5f6 Order cycle simple create controller uses 'new' method on OC service to initialise 2015-03-27 16:16:12 +11:00
Rob Harrington
4d14acb64d Don't send non-attributes of js order_cycle object to server 2015-03-27 16:16:12 +11:00
Rob Harrington
43d2eb4d22 Adding 'new' method to admin order cycle service, for loading data from serializer for new OCs 2015-03-27 16:16:12 +11:00
Rob Harrington
887579ecb8 Use managed_by scope on Enterprise instead of user.enterprises 2015-03-27 16:16:12 +11:00
Rob Harrington
9430999540 Filtering exchange variants, for outgoing exchange variant count 2015-03-27 16:16:12 +11:00
Rob Harrington
193a061c44 Order cycle form applicator only updates visible variants, should add an 'editable variants' scope to permissions 2015-03-27 16:16:11 +11:00
Rob Harrington
540ac845da Fixing broken js spec 2015-03-27 16:16:11 +11:00
Rob Harrington
5e015f0611 Rename visibleVariants filter to visibleProductVariants 2015-03-27 16:16:11 +11:00
Rob Harrington
681dada5df Simple OC form loads coordinator into JS 2015-03-27 16:16:11 +11:00
Rob Harrington
99bd6244ed Filtering the list of variants visible within each exchange based on permissions 2015-03-27 16:16:11 +11:00
Rob Harrington
63e345f819 Exchange serializer cuts down list of variants visible to the current user, based on permissions 2015-03-27 16:16:11 +11:00
Rob Harrington
524645aff4 Replacing visible_variants_for(exchange) with more general methods for determining visbility based on the enterprises involced and the current order cyclegs 2015-03-27 16:16:11 +11:00
Rob Harrington
d115ef5f7e Scoping old generalised order cycle helper methods to a specific order cycle 2015-03-27 16:16:10 +11:00
Rob Harrington
35b27fcfd2 Delegating responsibility for returning an empty scope when no options are passed to order_cycle_enterprises_for 2015-03-27 16:16:10 +11:00
Rob Harrington
b747f61eb1 P-OC permissions don't apply when determining which enterprises are loaded for order cycle interface 2015-03-27 16:16:10 +11:00
Rob Harrington
45f6042d3d Enterprises etched by for_order_cycle action now use permissions scoped using an order cycle or coordinator 2015-03-27 16:16:10 +11:00
Rob Harrington
a1aa9512a8 Fixing angular order_cycle controller spec 2015-03-27 16:16:10 +11:00
Rob Harrington
7e24e6743e enterprises_for is now order_cycle_enterprises_for, and can be passed an order_cycle or a coordinator (for new order_cycles) 2015-03-27 16:16:09 +11:00
Rob Harrington
c9f343f680 Swapping over scoping method for displayed enterprises in OC index page from order_cycle_enterprises to enterprises_for(order_cycle) 2015-03-27 16:15:28 +11:00
Rob Harrington
d8c4e292c8 Adding method for determining variant override hubs 2015-03-27 16:09:45 +11:00
Rob Harrington
81765de7a7 Building a permission method to determine which enterprises are visible to the user for a given OC 2015-03-27 16:07:38 +11:00
Rob Harrington
4dff3fe79c Removing unused distributable action from products api 2015-03-27 16:07:38 +11:00
Rob Harrington
1927bc55d0 Load actual variants in the exchange, wrong behaviour was implemented in previous two commits 2015-03-27 16:07:38 +11:00
Rob Harrington
e9f2e743ce Replacing old representative template for OCs with active model serializers 2015-03-27 16:07:38 +11:00
Rob Harrington
1c09b8b76f Limiting variants loaded into representative template to those a visible to the current user 2015-03-27 16:07:38 +11:00
Rob Harrington
00821a60cc More specific references to enterprise id in permissions querying methods 2015-03-27 16:07:37 +11:00
Rob Harrington
252ddf9beb Adding method to permissions library for scoping the list of visible variants in a given exchange to a particular user 2015-03-27 16:07:37 +11:00
Rob Harrington
22161bfd6e rewriting permissions query functions in permissions library, to make scoping easier 2015-03-27 16:07:37 +11:00
Rob Harrington
6c4db7fc22 Adding permission to view outgoing exchanges to producers who have granted P-OC to the relevant outgoing hub 2015-03-27 16:07:37 +11:00
Rob Harrington
df4437ecfe Altering permissions for exchanges, so the exchange is visible to managers of at least one of the enterprises invloved 2015-03-27 16:07:37 +11:00
Rob Harrington
2310a6a7db Splitting out order cycle abilities from general order management abilities 2015-03-27 16:07:37 +11:00
Rob Harrington
85e4b3970c Adding an 'involved' scope to exchanges 2015-03-27 15:56:07 +11:00
Rob Harrington
75a37e16e3 Remove elements of order cycle form that coordinators cannot edit 2015-03-27 15:56:07 +11:00
Rob Harrington
f8a9652333 Moving SASS comments to thier own lines 2015-03-27 15:56:07 +11:00
Rob Harrington
75ed259554 Conditionally show input for coordinator
Conflicts:
	app/views/admin/order_cycles/_form.html.haml
2015-03-27 15:56:07 +11:00
Rob Harrington
a9c7e4b716 Order cycles index shows all OrderCycles I am involved in 2015-03-27 15:56:06 +11:00
Rob Harrington
0b082c964b Restricting which enterprises can coordinate an order cycle 2015-03-27 15:51:27 +11:00
Rohan Mitchell
8037811735 Only make new enterprises as hubs when current user *owns*, not just manages a hub. 2015-03-27 14:38:21 +11:00
Rohan Mitchell
0ed1eeffd6 When registering a new enterprise, if user is signed in, owns a hub and is not making a producer, the new enterprise becomes a hub 2015-03-27 14:05:58 +11:00
Rohan Mitchell
d471368412 Spacing 2015-03-27 13:09:25 +11:00
Rohan Mitchell
09a102bd8b When an enterprise user with a hub creates a new producer, it does not default to sells any #453 2015-03-27 12:02:20 +11:00
Rohan Mitchell
d8656a36c6 Consistency in tax calculations, remove some unneeded local vars 2015-03-25 16:31:15 +11:00
Rohan Mitchell
89d4a59e9d Extract order total tax calculations to model 2015-03-25 16:27:29 +11:00
Rohan Mitchell
84f3097217 Calculate total tax from the tax included in all the adjustments on the order 2015-03-25 16:27:29 +11:00
Rohan Mitchell
333a4ecf2f Include enterprise fee tax on sales tax report 2015-03-25 16:27:29 +11:00
Rohan Mitchell
40b4edeca1 Replace zoned_order factory with zone_with_member. In practice, former had issues with circular dependencies. 2015-03-25 16:27:29 +11:00
Rohan Mitchell
9650692699 Calculate total tax on enterprise fees for an order 2015-03-25 16:27:29 +11:00
Rohan Mitchell
69dc92dec1 Create factories zoned_order and taxed_product 2015-03-25 16:27:29 +11:00
Rohan Mitchell
d489e06009 Retrieve line item sales tax from included_tax rather than tax amount 2015-03-25 16:27:29 +11:00
Rohan Mitchell
daa30ed518 Retrieve the shipping tax on the order instead of calculating it from scratch 2015-03-25 16:27:29 +11:00
Rohan Mitchell
7fb8370c36 Look up shipping tax on an order 2015-03-25 16:27:29 +11:00
Rohan Mitchell
e2a4b9a898 Fix specs that relied on the old login page which we now redirect to the new page 2015-03-25 12:11:06 +11:00
Rohan Mitchell
2a7a106ad8 Merge branch 'folklabs-currency-config' 2015-03-25 11:54:06 +11:00
Rohan Mitchell
1005a06583 Merge branch 'currency-config' of https://github.com/folklabs/openfoodnetwork into folklabs-currency-config 2015-03-25 11:39:43 +11:00
Rohan Mitchell
c36272ead6 Switch to update_column, which will not run geocoding callback of Enterprise 2015-03-25 11:37:10 +11:00
Rohan Mitchell
c6ddf36856 Make migration reversible 2015-03-25 11:35:59 +11:00
Rohan Mitchell
ebb3688add Merge branch 'migrations' of https://github.com/folklabs/openfoodnetwork into folklabs-migrations 2015-03-25 11:30:00 +11:00
Rohan Mitchell
5da9bdc614 Merge branch 'victornava-legacy-login-fix' 2015-03-25 10:37:14 +11:00
Paul Mackay
af9a7a2ed4 #443: Support currency configuration. Fix LOCALE variable name. 2015-03-24 15:34:45 +00:00
Paul Mackay
fcfb1aeb87 #440: Try removing validation from update (to prevent geocoding). 2015-03-23 14:24:16 +00:00
Paul Mackay
e39d2eb113 #440: Reset Enterprise columns before querying them. 2015-03-23 13:47:44 +00:00
summerscope
7090bb518b Tweaking logic for alert bar to make messages more human readable for all use cases. 2015-03-20 14:24:59 +11:00
summerscope
0b1857771e Finally got this slide animation working. stupid angular documentation!
ref: http://www.yearofmoo.com/2013/08/remastered-animation-in-angularjs-1-2.html
2015-03-20 13:09:45 +11:00
summerscope
938eff8482 More layout tweaks to enterprise modal template 2015-03-19 16:13:47 +11:00
summerscope
b99e94cecf WIP on producer and product modals 2015-03-19 16:02:52 +11:00
summerscope
1f97052954 Add a min height to modals so they are not quite so stupidly small when not enough content suppied by users 2015-03-19 15:05:14 +11:00
summerscope
c76aa1d1c2 WIP on product modal 2015-03-19 14:52:09 +11:00
summerscope
cdd41ad651 change animation class 2015-03-19 14:52:00 +11:00
summerscope
3c61bf9cc4 Styling for no image available on product modal overlay 2015-03-19 14:51:41 +11:00
summerscope
8a0bbb374c Animation WIP 2015-03-19 14:51:23 +11:00
summerscope
4e54a3c48e Updating no image all grey, large version larger 2015-03-19 14:50:50 +11:00
Rohan Mitchell
ab9bc7b1dc Output debugging information to help investigate bogus changes to the sells field through the enterprises bulk edit action 2015-03-18 12:50:25 +11:00
Rob Harrington
bfe7f49033 Show and hide search box 2015-03-18 12:01:53 +11:00
Rohan Mitchell
cf4ccc268a Admin may set no tax category on product unless tax category is required 2015-03-18 10:12:32 +11:00
Rohan Mitchell
7af17242f9 EnterpriseFee admin interface allows selecting no fee 2015-03-16 14:05:04 +11:00
Rohan Mitchell
eb5e411a8e Update zeus 2015-03-16 14:00:55 +11:00
Rohan Mitchell
a6f0d8f69a Show a nice error message instead of 500 error when deleting a referenced order cycle 2015-03-16 12:42:35 +11:00
Rohan Mitchell
95c09315f5 Change class delete-product -> delete-order-cycle 2015-03-16 12:42:05 +11:00
Rohan Mitchell
e38772ada0 Enterprise user can delete unreferenced order cycles 2015-03-16 12:41:06 +11:00
Rohan Mitchell
e125bcf451 Add column header for extra action column 2015-03-16 12:15:43 +11:00
Rohan Mitchell
4491d3cc73 Merge branch 'legacy-login-fix' of https://github.com/victornava/openfoodnetwork into victornava-legacy-login-fix
Conflicts:
	app/views/admin/order_cycles/_row.html.haml
	spec/features/admin/order_cycles_spec.rb
2015-03-16 12:14:54 +11:00
Rob Harrington
2b32252aff Filtering between selector lists 2015-03-15 13:25:04 +11:00
Rob Harrington
29c9f70a1c Rename single line selectors 2015-03-15 12:29:05 +11:00
Rob Harrington
2c1ef4c8c1 Refactoring single line selectors to remove flicker 2015-03-15 12:27:40 +11:00
Rob Harrington
bdeca54377 Reloading stale enterprise object in test 2015-03-14 16:17:16 +11:00
Rob Harrington
20d59cf5a5 Fixing authentication spec to work with altered user factory 2015-03-14 11:40:21 +11:00
Rob Harrington
8b241f058b Login to consumer section in a way that ensures user is not an admin 2015-03-14 11:02:45 +11:00
Rob Harrington
cb28843af1 Reload manager before ensuring owner is a manager 2015-03-14 10:41:49 +11:00
Rob Harrington
d684a88697 Merge branch 'order-confirmation' into ready-to-merge 2015-03-13 18:11:53 +11:00
summerscope
d0f66a6053 Fixing label for cart popover to make it write name of product variant without page load 2015-03-13 18:10:59 +11:00
summerscope
d2fbf9f14d Fixing logic for instance where collection instructions are not entered 2015-03-13 18:00:36 +11:00
Rohan Mitchell
8d3f25bb39 Fix intermittent 500 error when updating the cart 2015-03-13 17:50:01 +11:00
summerscope
7b1901253c More work on filters for shopfront rewriting as compared to the rest of filter button styles 2015-03-13 17:32:33 +11:00
Rohan Mitchell
abaaf05631 Merge branch 'user-menu' 2015-03-13 17:00:37 +11:00
Rob Harrington
dd8c769ea9 Hiding fee breakdown on cart page for now 2015-03-13 16:50:57 +11:00
summerscope
864c9ec1da This changes the user menu labels to show Account next to user email.
Small tweak to user account page to make it less awful.
2015-03-13 16:49:26 +11:00
Rob Harrington
b0cfa6a17c Shipping method prices displayed next to options in checkout 2015-03-13 16:18:49 +11:00
Rob Harrington
51258b242c Merge remote-tracking branch 'origin/order-confirmation' into order-confirmation 2015-03-13 16:07:17 +11:00
summerscope
dc1dd2e243 Changing the class .filter-box for shopfront to .filter-shopfront
This prevents the issue with inheritance / styling crossover
2015-03-13 16:06:46 +11:00
Rohan Mitchell
1a44e74a9d When enterprise user creates an enterprise, make it a hub if they have other hubs 2015-03-13 16:06:42 +11:00
summerscope
e3bc7cf894 Styling for search alert on shopfront page 2015-03-13 15:36:06 +11:00
summerscope
e5cc9063e8 Changing the medium input styling to make it same height as taxon filters, and no animation to get big as we want the next row space for tags eventually 2015-03-13 15:35:45 +11:00
summerscope
88edaceee0 Adding a new color to brand colors - yellow light 2015-03-13 15:34:38 +11:00
summerscope
bce64a1ead WIP product modals for shopfront 2015-03-13 15:34:11 +11:00
summerscope
c8c07ed700 Adding position fixed to modals - got lost somehow with upgrading foundation zurb 2015-03-13 12:59:26 +11:00
Rohan Mitchell
efbf2c7ffa Display extended variant name in quick cart 2015-03-13 12:58:53 +11:00
summerscope
0258fc24f3 Moving comments to own line. New version of SASS does not like comments on same line as declarations. 2015-03-13 12:58:45 +11:00
Rohan Mitchell
6365434a94 Merge branch 'lin-d-hop-ordercyclemanagementreports2' 2015-03-13 10:53:03 +11:00
Rohan Mitchell
d9f90be38a Fix indentation 2015-03-13 10:52:44 +11:00
Rohan Mitchell
008b43b1fc Merge branch 'ordercyclemanagementreports2' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-ordercyclemanagementreports2 2015-03-13 10:47:49 +11:00
Rohan Mitchell
5609354136 Fix bug: When there are variant overrides not owned by the current user, user is unable to make any changes to VOs 2015-03-13 10:45:38 +11:00
Lynne Davis
d9e8ce2f0e Fix bug in report that selecting multiple payment methods didn't work. Added spec as well 2015-03-12 17:16:51 +11:00
Rob Harrington
cce65aa462 Merge remote-tracking branch 'origin/master' into order-confirmation 2015-03-12 16:20:21 +11:00
Rob Harrington
44511b8b61 Only display shipping description if it exists 2015-03-12 16:18:30 +11:00
Rob Harrington
eb413ccc84 Committing schema changes 2015-03-12 16:18:07 +11:00
Rob Harrington
6cd6b751c8 Merge branch 'master' into order-confirmation 2015-03-12 15:34:49 +11:00
Rohan Mitchell
af95181245 Merge branch 'lin-d-hop-ordercyclemanagementreports2' 2015-03-12 12:30:49 +11:00
Rohan Mitchell
36fa4896ed Syntax 2015-03-12 12:28:35 +11:00
Rohan Mitchell
7c723c04b6 Show yes/no instead of true/false 2015-03-12 12:23:02 +11:00
Rohan Mitchell
c85d5b86eb Fix temperature_controlled migration - NOT NULL requires default value 2015-03-12 12:22:51 +11:00
Rohan Mitchell
1a97df1d21 Fix whitespace issues 2015-03-12 12:17:15 +11:00
Rohan Mitchell
a5716cf2c2 Merge branch 'ordercyclemanagementreports2' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-ordercyclemanagementreports2 2015-03-12 12:15:22 +11:00
Rohan Mitchell
b4e990a081 Merge branch 'reduce-supplier-list-in-order-cycles' 2015-03-12 11:55:46 +11:00
Rohan Mitchell
eccd97fc28 Merge branch 'master' into reduce-supplier-list-in-order-cycles 2015-03-12 11:55:14 +11:00
Rohan Mitchell
c4d4d10873 Reuse supplier/distributor list 2015-03-12 11:53:13 +11:00
Rohan Mitchell
1e5e009735 Spree init works when database has not been created, remove duplicate FK from db/schema.rb 2015-03-12 11:29:01 +11:00
Rob Harrington
274a7a3c73 Fixing up the one liner filter styling a bit 2015-03-12 09:56:06 +11:00
Victor Nava
f90f7565fb Allow admins to delete Order Cycles 2015-03-11 18:08:09 +11:00
Victor Nava
208fa02ec0 Create a 'Show More' button at the top of the page, next to New Order on on admin order cycles index page 2015-03-11 13:14:45 +11:00
Victor Nava
2c89573441 Shave off a few seconds when showing order_cycles#index by loading order_cycle_enterprises only once. 2015-03-11 11:59:25 +11:00
summerscope
ea96759306 Take styling out of template into SASS 2015-03-10 14:59:46 +11:00
summerscope
d967905b83 Tweaking copy styles and removing references to Open Sans which not using. Silly laura mixing up repos 2015-03-10 14:59:26 +11:00
summerscope
f698408d40 Logic for delivery vs collection - making template 2015-03-10 14:58:58 +11:00
summerscope
75b0b290ae More WIP trying to work on the cart template logic with Rohan 2015-03-10 14:12:43 +11:00
summerscope
21b18a8cc5 WIP commit so i can see what i messed up. 2015-03-10 12:31:53 +11:00
summerscope
91bf588bcc Order details page add in mini thumbnail for product image 2015-03-10 12:03:21 +11:00
summerscope
a8de4dc039 WIP checkout page and order confirmation page. Working on making these pages more consistent to each other, to email confirmation, and to shopping experience. 2015-03-10 11:35:53 +11:00
summerscope
c7cf9695bc WIP on cart menu trying to add the master name back in where a product has variante 2015-03-10 11:35:35 +11:00
summerscope
b9a0579397 Add styling for image thumbnail - hide for small, show small thumbnail for big screens. 2015-03-10 11:35:03 +11:00
summerscope
de6abc3464 Turning off z-index this causes problems on shopping cart page. Needs testing to confirm does not break elsewhere. 2015-03-10 11:34:31 +11:00
Rob Harrington
0a300d1802 Rewriting small cart, so that it doesn't break all of the dropdowns on the page (can't use .row within li elements it seems...) 2015-03-06 19:03:46 +11:00
Rob Harrington
12c6878cbe Using vanilla foundation 2015-03-06 19:02:15 +11:00
Rob Harrington
4c4490a9b7 Upgrading foundation-rails and sass 2015-03-06 19:01:39 +11:00
Rob Harrington
578475a403 Filter products list on shop by active properties 2015-03-06 16:14:11 +11:00
summerscope
881313edf9 Changing the logic on Shipping accordion on checkout to try to show shipping price against option. Not working. 2015-03-06 16:05:42 +11:00
Rohan Mitchell
381bfd383b Allow enterprise fee with no tax category 2015-03-06 12:12:33 +11:00
Liv Galendez
266d6ef834 Fixed handling of distributors field 2015-03-06 11:55:35 +11:00
Victor Nava
3e2142c3cf Remove the hover / pop-up over the # variants on admin order cycles index page 2015-03-06 11:33:03 +11:00
Rob Harrington
e948bf1591 Only render selector icons if the icon exists 2015-03-06 11:32:01 +11:00
Rob Harrington
06f10398da Adding product property filter to shop page 2015-03-06 11:22:52 +11:00
Rohan Mitchell
1e18f773f5 Switch context -> describe, clarify test grammar 2015-03-06 11:15:07 +11:00
Rohan Mitchell
41792395aa Record the tax included in per-item EnterpriseFees 2015-03-06 11:13:47 +11:00
Rohan Mitchell
98ff895f5f Record the tax included in per-order EnterpriseFees 2015-03-06 10:38:55 +11:00
summerscope
c3c1573f54 Adding a comment 2015-03-05 23:22:31 +11:00
Rob Harrington
55b8918ea1 Updating comment 2015-03-05 18:38:01 +11:00
Rob Harrington
067b814daa Making legacy filters work properly with filter-selector directive 2015-03-05 18:29:12 +11:00
Rob Harrington
c992937608 Moving taxon-selector directive to correct location 2015-03-05 18:28:49 +11:00
Rob Harrington
cb623b75c1 Generalising taxons-selector -> filter-selector 2015-03-05 18:15:14 +11:00
Victor Nava
3fe1fc3f67 Use dates way into the future so that test that depend on OrderSycles#recently_closed don't break. 2015-03-05 17:32:55 +11:00
Victor Nava
d6c30ae1ef OrderCycle#recently_closed doesn't return orders that are open 2015-03-05 17:28:24 +11:00
summerscope
a0af22350d Order conf page WIP 2015-03-05 17:21:25 +11:00
summerscope
e3b660abb9 Shopping cart page update to simplify, improve and expose fees 2015-03-05 17:21:13 +11:00
summerscope
9a86e41942 Adding more helper classes 2015-03-05 17:20:02 +11:00
Rob Harrington
e7854bcd8e Moving single line selectors to template, making sure other users of taxons-selector still work 2015-03-05 16:38:21 +11:00
Victor Nava
a21bfc909a Remove the suppliers column on admin order cycles index page 2015-03-05 16:12:31 +11:00
Victor Nava
1b709a3e03 Do not load Order Cycles that closed more than a month a go 2015-03-05 16:04:36 +11:00
Rob Harrington
0142f9467a Improve display of overflow selectors 2015-03-05 16:00:53 +11:00
Rob Harrington
24b40182b5 clearAll for product page also clears any text search filter 2015-03-05 15:34:27 +11:00
Rob Harrington
ed94cf57d3 Adding the 'more' box for single-line-selectors 2015-03-05 15:10:42 +11:00
Rohan Mitchell
b5ce056d06 Fix tax calculations for determining tax included in an amount 2015-03-05 13:03:53 +11:00
Rob Harrington
5bddada013 Removing unnecessary setter 2015-03-05 12:18:34 +11:00
Rob Harrington
4afef8215a Basic implementation of single line selectors 2015-03-05 12:12:36 +11:00
summerscope
574a215525 Order Confirmation Page WIP 2015-03-05 11:26:29 +11:00
summerscope
2cdab7af25 More label tweaks and logic tweaks to templates 2015-03-05 11:26:15 +11:00
summerscope
235bb009e8 Tweaking styling for order confirmation page 2015-03-05 11:25:57 +11:00
Victor Nava
4e1eb33ff5 Redirect users to proper login page when they type /login 2015-03-05 11:25:35 +11:00
Rohan Mitchell
dfb855bd14 Record the tax included in shipping. 2015-03-05 10:44:27 +11:00
Rohan Mitchell
9395f6c808 Record the tax included in adjustments. TaxRate adjustments consist of 100% tax. 2015-03-05 10:44:26 +11:00
Rohan Mitchell
53fa71d1f3 Admin can set enterprise fee's tax category 2015-03-05 10:44:25 +11:00
Rohan Mitchell
61c08997a1 EnterpriseFee has a TaxCategory 2015-03-05 10:44:22 +11:00
Rohan Mitchell
dd61034908 Fix fractional cents appearing on sales tax report totals 2015-03-05 10:43:57 +11:00
Rohan Mitchell
ec22f4c09f Sales tax report pulls sales tax from adjustments instead of recalculating it at report-time 2015-03-05 10:43:57 +11:00
Rohan Mitchell
54894fb222 Update spec with correct tax amounts 2015-03-05 10:43:56 +11:00
Rohan Mitchell
11f59c9f59 Add spec for calculating shipping tax. Fix incorrect formula. 2015-03-05 10:43:56 +11:00
Rohan Mitchell
27a730ef6c Add spec for sales tax report totals calcs 2015-03-05 10:43:56 +11:00
Rohan Mitchell
10e5d09416 Use ReportsHelper for currency_symbol 2015-03-05 10:43:56 +11:00
Rohan Mitchell
3b4d73760b Break up sales tax report into methods 2015-03-05 10:43:55 +11:00
Rohan Mitchell
89199ef30a Use map instead of each and var 2015-03-05 10:43:55 +11:00
Rohan Mitchell
67c77cea81 Tidy up haml 2015-03-05 10:43:54 +11:00
Rohan Mitchell
cc7d6cde1d Shorter syntax 2015-03-05 10:43:54 +11:00
Rohan Mitchell
0b636c1d89 Combine spec cases for faster runtime 2015-03-05 10:43:54 +11:00
Rohan Mitchell
2b9fef6aec Convert to Ruby 1.9 hash syntax 2015-03-05 10:43:53 +11:00
Rohan Mitchell
3aa30af199 Remove unneeded objects from spec setup 2015-03-05 10:43:53 +11:00
Rohan Mitchell
0212351d32 Tighten test 2015-03-05 10:43:53 +11:00
Rohan Mitchell
29653a5595 Fix spec infinite recursion issue 2015-03-05 10:43:52 +11:00
Matt-Yorkley
e6368af757 Update reports_spec.rb 2015-03-05 10:43:52 +11:00
Matt-Yorkley
2c80be7e9e Update 2015-03-05 10:43:52 +11:00
Matt-Yorkley
d194e74eda Rohan's suggested changes 2015-03-05 10:43:51 +11:00
Matt-Yorkley
3f61a5412c Spec file attempt... 2015-03-05 10:43:51 +11:00
Matt-Yorkley
0f3723a923 Added currency symbols to sales tax report 2015-03-05 10:43:51 +11:00
Matt-Yorkley
bbca674937 Update reports_spec.rb 2015-03-05 10:43:51 +11:00
Matt-Yorkley
623882a2a1 Config option for tax rate on shipping 2015-03-05 10:43:50 +11:00
Matt-Yorkley
371f966f63 sales tax view 2015-03-05 10:43:50 +11:00
Matt-Yorkley
be55f461d0 Report: sales tax on orders 2015-03-05 10:43:50 +11:00
summerscope
e6591be55c More tweaking for email templates for use case of Collection from hub. Need to tweak logic on Order confiramtion page. 2015-03-04 17:34:24 +11:00
summerscope
5b6bff1691 Removing bad nasty overrides which are confusing and bad. and nasty. 2015-03-04 17:20:05 +11:00
summerscope
db2e5e7558 Add an extra class helper 2015-03-04 17:19:57 +11:00
summerscope
4867f45ee1 Add an extra style 2015-03-04 17:19:37 +11:00
summerscope
47b08269d6 Order confirmation page changes for responsive layout, adding in more content from the checkout page to match the emails. 2015-03-04 17:19:24 +11:00
summerscope
76f234ee4d Order confirmation top page working on header label 2015-03-04 17:18:55 +11:00
summerscope
163035dcad Tweaking email template to be more like order confirmation 2015-03-04 17:18:37 +11:00
Rohan Mitchell
503bd8f5dd Merge pull request #400 from victornava/admin-account-link
Change admin account link to point to account page instead of edit user.
2015-03-04 16:08:26 +11:00
Victor Nava
6e800341c3 Fixes issue #362 Change admin account link to point to account page instead of edit user. 2015-03-04 16:00:46 +11:00
summerscope
b097a62c7a WIP adding variant name logic to the email templates 2015-03-04 12:37:57 +11:00
Lynne Davis
cfa281478a Adding ability to edit ShippingCategory.temperature_controlled from admin interface 2015-03-04 12:02:07 +11:00
summerscope
f64684dc48 Tweak responsive heading columns now that container is a bit smaller 2015-03-04 11:14:29 +11:00
summerscope
397697d17c Tweak layout. Remove unnecessary row which was messing up the responsive layout for left column on checkout. 2015-03-04 11:13:58 +11:00
Liv Galendez
c940a34ec9 Created order_cycle_permitted_in helper 2015-03-03 21:03:01 +11:00
Liv Galendez
fc63d8719c Used order_cycle_permitted_enterprises helper in order cycles row 2015-03-03 20:53:39 +11:00
Liv Galendez
7ba366e2a6 Added select for coordinator since there are 2 now 2015-03-03 20:46:25 +11:00
Lynne Davis
b26c46d7db Removing default false from temp_controlled - shipping categories 2015-03-03 16:39:55 +11:00
Lynne Davis
72a568ffad Adding not null to temp_controlled field of shipping_categories 2015-03-03 16:33:49 +11:00
Lynne Davis
3ea7ff766a Removing additional merge conflicts 2015-03-03 16:29:17 +11:00
Lynne Davis
3d491d7b5e LD: Adding additional functionality for order cycle management reports - adding hub code model, adding temp_controlled bool, adding delivery report
Conflicts:
	app/models/customer.rb
	db/migrate/20150122145607_create_customers.rb
	db/schema.rb
	lib/open_food_network/order_cycle_management_report.rb
2015-03-03 16:21:17 +11:00
Lynne Davis
1710c8726e Fixing conflict on attempting to rebase and pull 2015-03-03 16:13:44 +11:00
Lynne Davis
2a8ba0bf42 Fixing merge conflicts after rebase 2015-03-03 16:12:07 +11:00
Lynne Davis
3279003fd3 Updating logic on temperature_controlled lookup 2015-03-03 16:01:42 +11:00
Lynne Davis
f2a35e219e Updating migration on customers table with extra validation 2015-03-03 16:01:42 +11:00
Lynne Davis
39c5f8febe Updating Customer model with validations 2015-03-03 16:01:42 +11:00
Lynne Davis
87b1ab9a1a LD: Adding additional functionality for order cycle management reports - adding hub code model, adding temp_controlled bool, adding delivery report 2015-03-03 16:01:42 +11:00
Rob Harrington
85b8adb1aa call to order_cycle_hub_enterprises has no arguments 2015-03-01 15:33:16 +11:00
Rob Harrington
e8818c5191 Adding a ship address to order in spec 2015-03-01 12:22:06 +11:00
Rob Harrington
c91699a11e Using @order_cycle.coordinator instead of @coordinator 2015-02-27 17:24:37 +11:00
Rob Harrington
8d6c8791bb Only hubs (sells any) are available for selection as outgoing enterprises 2015-02-27 17:24:36 +11:00
Rob Harrington
31054c7bf4 Split order_cycle_simple_view logic into index and form scopings 2015-02-27 17:24:36 +11:00
Rob Harrington
5563d23beb Rename set_coordinator method to require_coordinator 2015-02-27 17:24:36 +11:00
Rob Harrington
8de6f983a2 User must set the coordinator first when creating an order cycle 2015-02-27 17:24:36 +11:00
Rob Harrington
53594b3a0f Cannot add unconfirmed enterprises to order cycles 2015-02-27 17:24:36 +11:00
summerscope
f8619092bd Merge branch 'order-confirmation' into master.
Global email tweak - light header, black logo.
This updates the order confirmation emails for better content and styling.
2015-02-27 17:16:35 +11:00
summerscope
2c2352cd4e Final tweaks to different layout use cases for these emails. 2015-02-27 17:14:33 +11:00
summerscope
12bfb9301a More updates dealing with pick up instructions. 2015-02-27 17:09:59 +11:00
summerscope
ba0d4c2111 More order confirmation email updates. Making language correct for hub vs user. 2015-02-27 16:55:36 +11:00
summerscope
4eee86a240 Tweak label 2015-02-27 16:09:14 +11:00
summerscope
587e4ae86d WIP getting all the confirmation details right for collection, delivery, etc. 2015-02-27 16:08:20 +11:00
Maikel Linke
60c246f104 fixing side menu ng-show of items 2015-02-27 15:21:23 +11:00
summerscope
87842ecaf5 More WIP confirmation email for customer and shopfront. fixing up the order summary table. overall design improvements. 2015-02-27 14:00:49 +11:00
summerscope
2ba632456f WIP email mailer updates for customer email confirmation etc. 2015-02-27 12:40:13 +11:00
Maikel Linke
3beff77164 Merge remote-tracking branch 'origin/master' into group-pages 2015-02-26 17:22:13 +11:00
Maikel Linke
69fd3f0b60 Fix link to group pages if someone enters "/groups/" instead of "/group" 2015-02-26 16:41:51 +11:00
Maikel Linke
ff4bd449a2 Setting default_country_id by application.yml
The spree default_country_id was set using ENV["DEFAULT_COUNTRY"] for
production environment, but not for tests and development. Since tests
reset the default_country_id in specs/support/seeds.rb, only the
development environment had a fix id set to 12. This is removed now.

This fixes creating enterprises and enterprise groups without sample
data (12 is Australia).
2015-02-26 16:29:46 +11:00
Maikel Linke
379b702b9b spec: testing array of owned groups without order 2015-02-26 16:22:15 +11:00
Rohan Mitchell
fa4741eb65 Update auto-creation of E2E links: more specific and restricted link creation 2015-02-26 13:49:15 +11:00
Maikel Linke
1f7aec0c1d group owner select box in own tab 2015-02-26 13:09:46 +11:00
summerscope
fc7abd5d02 Changing order of tabs at top of shopfront, leaving more room for long shopfront names in about tab 2015-02-25 16:20:10 +11:00
summerscope
469b383781 Properties and shopfront filters with taxons WIP. 2015-02-25 16:04:32 +11:00
summerscope
15144bdddd WIP search input on shopfront page. 2015-02-25 13:18:45 +11:00
summerscope
d43f367f30 Shopfront Properties - WIP layout work 2015-02-25 11:11:09 +11:00
summerscope
304bde3b9e Working on the filters for shopfront properties and updates. 2015-02-25 10:46:51 +11:00
summerscope
e9fca885db WIP layout changes for shopfront top 2015-02-25 10:46:43 +11:00
summerscope
122cf6c065 Groups index page styling for responsive use cases. 2015-02-25 10:22:33 +11:00
summerscope
9daf7e3955 Removing spans on follow icons as these show up as blank spaces when no data to fill. 2015-02-25 09:38:07 +11:00
Lynne Davis
a3df4bf026 LD: Adding additional functionality for order cycle management reports - adding hub code model, adding temp_controlled bool, adding delivery report 2015-02-24 13:43:00 +10:00
Rohan Mitchell
fdde55f631 Add spec for ext_url filter, refactor 2015-02-23 10:06:42 +11:00
Maikel Linke
f8153c07b1 moving email from "web" to "contact" on group edit page 2015-02-22 16:20:11 +11:00
Maikel Linke
eade689070 linkToService directive to generate external links 2015-02-22 16:15:04 +11:00
Maikel Linke
a522242e7a dealing with invalid live data in migration 2015-02-21 18:43:03 +11:00
summerscope
e05d64a0b4 WIP on groups index page. Needs work from Maikel or Rohan. 2015-02-20 16:43:36 +11:00
summerscope
985887334f Tweak the padding between header and tabs. 2015-02-20 16:43:03 +11:00
summerscope
3aa06ee1e4 Tabs styling for groups page - making it pretty. 2015-02-20 16:14:50 +11:00
summerscope
3ab961a7e2 New mixin for gradients 2015-02-20 16:14:40 +11:00
summerscope
60b7a571c5 Tweak styling and markup for contact info in right column. 2015-02-20 15:35:07 +11:00
Rohan Mitchell
f8ca24c5cd Index enterprise_groups address_id 2015-02-20 14:56:16 +11:00
Rohan Mitchell
f58219eb3d Split inputs into separate partials for each fieldset 2015-02-20 11:36:30 +11:00
Rohan Mitchell
4554c0555d Change locking to use postgres syntax, fixes 'must be first statement in transaction' error 2015-02-20 11:31:39 +11:00
Rohan Mitchell
176db78e64 Extract data fetching from views 2015-02-20 11:17:01 +11:00
Maikel Linke
98063dae60 setting default country by id in groups controller 2015-02-19 16:57:19 +11:00
Maikel Linke
c01d45e3af Serialize move_up and move_down methods of groups
There have been race conditions in other projects using the acts_as_list
gem which could be solved by serializing.
2015-02-19 16:51:58 +11:00
Maikel Linke
d5c2abdd7e stripping "undefined" in after_find and after_save callbacks instead of overriding getters 2015-02-19 16:33:43 +11:00
Maikel Linke
a7b723af93 owner index for enterprise groups 2015-02-19 13:23:50 +11:00
Maikel Linke
6a29b830c2 commenting changes in overridden adaptivemenu.js 2015-02-19 11:35:06 +11:00
Maikel Linke
8e83c6679a extended test of owned groups 2015-02-19 11:25:31 +11:00
Maikel Linke
a0f0b3c93b display only activated enterprises to add to groups 2015-02-19 11:14:25 +11:00
Maikel Linke
ecd7b16ef5 revert setting default country by name in enterprise controller 2015-02-19 11:09:43 +11:00
Maikel Linke
718a5911a3 code style and cleanup 2015-02-19 10:48:39 +11:00
Maikel Linke
bbac5aa803 Using pure css for styling odd and even menu items 2015-02-19 10:22:37 +11:00
Maikel Linke
346a4e71d0 side menu partial does not require showItem defined 2015-02-19 10:17:58 +11:00
Rohan Mitchell
f83ceae5d1 Fix feature: Enterprises list is shortened when error in bulk update 2015-02-18 15:32:56 +11:00
Maikel Linke
08afcac1e5 exposing more group attributes to angular 2015-02-18 14:55:42 +11:00
Maikel Linke
9496987da6 Fix display of admin group side menu 2015-02-18 12:04:17 +11:00
Rohan Mitchell
224864a8d8 Merge pull request #385 from openfoodfoundation/empty-cart-typo
Fixed typo in empty cart error message
2015-02-18 10:59:17 +11:00
Liv Galendez
b9248d3e2c Fixed typo in empty cart error message 2015-02-18 10:47:09 +11:00
Maikel Linke
903bd21577 Merge remote-tracking branch 'origin/master' into group-pages-merge
Conflicts:
	README.markdown
	db/schema.rb
2015-02-13 15:42:36 +11:00
Maikel Linke
87686848bc make group contact fields not null 2015-02-13 15:39:44 +11:00
Rohan Mitchell
32a898b6a2 Remove unnecessary db:schema:load db:seed, these are performed by db:setup 2015-02-13 09:26:34 +11:00
Rohan Mitchell
636ed2ad0d Make bi-directional relationships 2015-02-13 09:24:48 +11:00
Rohan Mitchell
1d61e91afd When enterprise created, grant permission to all co-owned enterprises, not just hubs 2015-02-13 09:24:48 +11:00
Maikel Linke
6b5a1255f8 fixing a bunch of tests 2015-02-12 16:36:18 +11:00
Rob Harrington
12dc0b93aa Scoping users correctly for realz this time 2015-02-12 16:20:46 +11:00
Rob Harrington
5503760ce3 Scoping users correctly 2015-02-12 13:45:25 +11:00
Rob Harrington
9fa5a9e766 Fix before_filter load order for enterprises#shop 2015-02-12 11:34:58 +11:00
Rob Harrington
a62f48441d Restrict ability to change managers of enterprises using update action 2015-02-12 11:34:58 +11:00
Rob Harrington
5c09ebf138 Adding manager managment to enterprise edit form 2015-02-12 11:34:58 +11:00
Rob Harrington
ee5ab22501 Moving interface for changing owner to new 'Users' tab 2015-02-12 11:34:58 +11:00
Rob Harrington
ad1f837c44 Admin users can access all users through known_users 2015-02-12 11:34:58 +11:00
Rob Harrington
dcb24cf06c Controller method to allow enterprise users to search for other users which share management of their enterprises 2015-02-12 11:34:58 +11:00
Rob Harrington
b73619d168 Adding known_users method to Spree::User 2015-02-12 11:34:58 +11:00
Rob Harrington
dde1a27d3a Adding ability to search for known users 2015-02-12 11:34:57 +11:00
Maikel Linke
57e838898f Update documentation of database setup
db:setup is doing db:schema and db:seed already
2015-02-12 11:05:21 +11:00
Maikel Linke
773a5480e9 Activate search input for groups again 2015-02-12 10:44:20 +11:00
Maikel Linke
0fdf313424 Fixing img display of producers if no logo present 2015-02-12 10:31:13 +11:00
Rohan Mitchell
46aee6f77c Upgrade Rails to 3.2.21 2015-02-11 14:30:49 +11:00
Rohan Mitchell
ca558a4ecc Fix admin tab to check correct permission 2015-02-11 11:55:48 +11:00
Maikel Linke
edcef02017 link_to_service helper deals with nil 2015-02-07 19:40:59 +11:00
Maikel Linke
211e9c33a7 Fixing link to group website 2015-02-07 19:31:16 +11:00
Maikel Linke
2293623d2c Display default group logo if no logo was uploaded 2015-02-07 19:24:36 +11:00
Maikel Linke
9e51b19f98 right mapping of contributer's names in git 2015-02-07 18:12:34 +11:00
summerscope
90ba1d2198 Updating the groups header to behave better with a square thumbnail logo image.
Intention is for a square image constrained by PaperClip as per enterprise logos (later down the track)
2015-02-06 17:15:40 +11:00
summerscope
78877f591b Fix template so website links work to push to external pages 2015-02-06 13:58:04 +11:00
summerscope
f292be8c92 Making styling of underlines for contact same color as HRs, bit lighter and brigher 2015-02-06 13:50:34 +11:00
summerscope
755adf4287 Index page stop-gap improvements until we get more variables to display in this list. Commented out search field not working 2015-02-06 13:41:58 +11:00
summerscope
9547f91f46 Groups page rejig the layout to make contact column skinnier in most use cases. Obscure email and website with CTA words for fixed width on content. Styling for anchor fix global issue 2015-02-06 13:31:33 +11:00
Maikel Linke
30601b9203 tidy up group contact with helpers 2015-02-05 20:20:28 +11:00
Maikel Linke
504a053693 link_to_ext helper for group pages 2015-02-05 17:21:41 +11:00
summerscope
148333467f Groups styling and markup - finishing up contact info partial etc 2015-02-05 17:14:56 +11:00
Maikel Linke
242fb49276 checking for undefined phone number in model 2015-02-05 16:17:29 +11:00
Maikel Linke
37dbd376e9 fixing indent 2015-02-05 15:54:53 +11:00
Maikel Linke
b641de6ec9 Merge branch 'group-pages' of github.com:openfoodfoundation/openfoodnetwork into group-pages
Conflicts:
	app/views/groups/show.html.haml
2015-02-05 15:52:00 +11:00
Maikel Linke
313843d798 moving contact partial and giving example code 2015-02-05 15:50:33 +11:00
summerscope
1b51ea0e3a Groups logo default image 2015-02-05 15:42:24 +11:00
summerscope
f2e3d298fa More styling for responsive sizes groups header 2015-02-05 15:17:50 +11:00
summerscope
e19aaf6be8 Styling tabs for responsive design, improving groups page layout 2015-02-05 14:53:09 +11:00
summerscope
28b2dd40dd Kill the pad top for Producers tab content too 2015-02-05 12:31:38 +11:00
summerscope
c9bbe80738 Remove padding class to producers tab content 2015-02-05 12:28:24 +11:00
Maikel Linke
0f7b880409 restoring groups hubs tab 2015-02-05 12:23:08 +11:00
Maikel Linke
78a8f8c1bb Merge remote-tracking branch 'origin/group-pages' into group-pages 2015-02-05 12:07:52 +11:00
summerscope
b1b1aa5b1e Groups page WIP with mikael and rob 2015-02-05 12:07:11 +11:00
Maikel Linke
a7c2a73fa8 make groups editable by group owners 2015-02-05 12:05:39 +11:00
Rohan Mitchell
fce7714994 Load correct set of variant override producers, use variant_override_enterprises_per_hub, tighten specs 2015-02-04 11:20:08 +11:00
Rohan Mitchell
7ca9670073 Admin can access variant override only when it can add hub to order cycle and it can create variant overrides for the producer of the variant 2015-02-04 11:09:48 +11:00
Rohan Mitchell
22f6ece83f When fetching products for variant overrides admin, fetch all overridable products 2015-02-04 10:16:34 +11:00
Rohan Mitchell
a7bb04b890 Find all producers for which we can create variant overrides 2015-02-04 10:13:35 +11:00
Rohan Mitchell
4c586d1b7e Fetching enterprises for which hubs can create variant overrides: allow all hubs that we can add to order cycle, find producers via create_variant_overrides permission 2015-02-04 10:04:57 +11:00
Rohan Mitchell
7ea143d19a Provide AR relation instead of array in stub 2015-02-04 09:42:04 +11:00
Rohan Mitchell
25189d190b Shift method 2015-02-04 09:30:01 +11:00
Maikel Linke
91b35d068c Adding owner to groups
Groups have owners and users own groups. The owners are displayed and
changable on the group's page by admin users.
2015-02-02 15:58:34 +11:00
Maikel Linke
8d9f8beff3 creating facebook url 2015-02-02 10:33:13 +11:00
Rohan Mitchell
c0a7d22a50 Add permitted_by scope to EnterpriseRelationship 2015-01-30 16:36:45 +11:00
Rohan Mitchell
fafbfe8735 Simplify, simplify 2015-01-30 15:56:10 +11:00
summerscope
6fddb491db New partial for groups contact 2015-01-30 14:07:55 +11:00
summerscope
5ea3733c8a Groups page styling WIP 2015-01-30 14:07:38 +11:00
Rohan Mitchell
7ac888ae00 Admin can grant create_variant_overrides permission 2015-01-30 11:56:05 +11:00
Rohan Mitchell
ed4d78bca8 Decorators can't be in same file name as original file, otherwise the original file is ignored 2015-01-30 11:23:49 +11:00
summerscope
d99a54accf WIP groups individual page template markup - still needs alot of love. 2015-01-29 17:43:36 +11:00
summerscope
fd363ff6c2 WIP Groups individual page styling 2015-01-29 17:43:10 +11:00
summerscope
fcd9653a79 Add padding to groups homepage 2015-01-29 15:52:40 +11:00
summerscope
8e42f29bde WIP groups page styling and markup updates 2015-01-29 15:52:20 +11:00
Rohan Mitchell
a25bf32156 Show extended variant name/unit info for admin variant overrides 2015-01-29 15:15:28 +11:00
Rohan Mitchell
7a5c56cbca Do not show out of stock lines on order confirmation page 2015-01-29 13:19:04 +11:00
Rob Harrington
cbae7dcc8e Adding visible to user and enterprises report, and sorting by confirmation date 2015-01-29 10:46:44 +11:00
Rob Harrington
9163b0c1ad Adding missing equals sign to test for equality in permalink migration 2015-01-28 11:37:02 +11:00
Rob Harrington
fd9f65f1b6 Merge branch 'shopfront-filters' into shop-url 2015-01-28 10:57:11 +11:00
Rob Harrington
713999c1d8 Merge branch 'master' into shop-url 2015-01-28 10:53:42 +11:00
Rob Harrington
21db56ce6c Rollback angularjs upgrade 2015-01-28 08:41:14 +11:00
Rob Harrington
adbe127e76 Revert "Update bindonce"
This reverts commit 48dc85cfc2.
2015-01-25 14:08:29 +11:00
Lynne Davis
3c4ad4121f LD adding whitespace to get my master version back in line with origin 2015-01-22 14:00:48 +00:00
Lynne Davis
8e8f38e484 app/controllers/spree/admin/reports_controller_decorator.rb 2015-01-22 12:01:20 +00:00
Maikel Linke
d93a8b6428 Enterprise and Group controllers use default country instead of default country id 2015-01-22 16:22:34 +11:00
Maikel Linke
7a48d7fe22 Updating feature spec for groups 2015-01-22 16:04:46 +11:00
Rob Harrington
b429be707c Split out payment and shipping methods from admin enterprises controller as services 2015-01-22 12:19:41 +11:00
Maikel Linke
87b092fdf7 Adding addresses to existing groups and make them changable 2015-01-22 12:10:54 +11:00
Rob Harrington
4829e59663 Fixing checkout controller spec 2015-01-22 10:46:31 +11:00
Rob Harrington
d12fdd23fb Fixing navcheck callback 2015-01-22 10:46:01 +11:00
Rob Harrington
b0a29801b6 Making spec controller product request spec a little bit more robust 2015-01-22 10:20:03 +11:00
Rob Harrington
6ebd58b67d Updating home spec to reflect new shopfront url 2015-01-22 10:19:47 +11:00
Rob Harrington
0791cc3c2a Making sure that we have a .path() in HashNavigation 2015-01-22 10:19:47 +11:00
Rob Harrington
76acbb6159 Empty arrays are no longer considered falsy by angular.js parser (see bdfc9c02d0) 2015-01-22 10:19:47 +11:00
Rob Harrington
d7ea81e821 Prevent default form action from submitting ordercycle forms 2015-01-22 10:19:47 +11:00
Rob Harrington
9245af6a8f Producer properties routes use enterprise permalink 2015-01-22 10:19:47 +11:00
Rob Harrington
36430d3bad Enterprise permalink generator handles blank permalink case 2015-01-22 10:19:46 +11:00
Rob Harrington
7520552fd7 Removing spec for testing empty permalink, since we now force permalink to be created when empty 2015-01-22 10:19:46 +11:00
Rob Harrington
6991e5e6b1 Finally got all callbacks available to all action that need them 2015-01-22 10:19:46 +11:00
Rob Harrington
42d6695264 Fix permalink migration to handle blank auto-generated permalinks and fixed down migration 2015-01-22 10:19:45 +11:00
Rob Harrington
4d26b3d648 Make unused cart_controller happy 2015-01-22 10:19:45 +11:00
Rob Harrington
177181cd75 CurrentUser always returns a factory 2015-01-22 10:19:45 +11:00
Rob Harrington
4baa205cf9 before_filters for enterprise controller are run in the correct order, and put inside the shop action 2015-01-22 10:19:45 +11:00
Rob Harrington
60313f7a6a Replace delete with parameterize 2015-01-22 10:19:45 +11:00
Rob Harrington
3e5ea3fe63 Adding automatic permalink generation on enterprise creation 2015-01-22 10:19:45 +11:00
Rob Harrington
b98c01b280 Updating permalink controller specs 2015-01-22 10:19:44 +11:00
Rob Harrington
ff624e83eb Require distributor in enterprise controller, so that everything actually works 2015-01-22 10:19:44 +11:00
Rob Harrington
48dc85cfc2 Update bindonce 2015-01-22 10:19:44 +11:00
Rob Harrington
a0990c107f Moving navigation check to controller 2015-01-22 10:19:44 +11:00
Rob Harrington
585c061fb0 Upgrade angularjs 2015-01-22 10:19:44 +11:00
Rob Harrington
83726eba63 Refactoring permalink checker to handle multiple requests elegantly 2015-01-22 10:19:43 +11:00
Rob Harrington
7ad9fdf0be Cleaning permalink before checking 2015-01-22 10:19:43 +11:00
Rob Harrington
6b10a4a775 Restoring enterprise permalinks when they cause errors 2015-01-22 10:19:43 +11:00
Rob Harrington
4088bdc236 Clean up permalink checker 2015-01-22 10:19:43 +11:00
Rob Harrington
9b78963d5a Adding a javascript interface for checking permalinks and user input on enterprise console 2015-01-22 10:19:43 +11:00
Rob Harrington
3ec3441cfa Replacing all uses of the old enterprise shop url helper 2015-01-22 10:19:43 +11:00
Rob Harrington
39889390ef Altering shop page routing so that shop url is copy-and-pastable 2015-01-22 10:19:42 +11:00
Rob Harrington
c3659612ed enterprise routes use permalink 2015-01-22 10:19:42 +11:00
Rob Harrington
7a6cd98646 Fixing failing spec, missing permalink 2015-01-22 10:19:42 +11:00
Rob Harrington
9286c82b43 Removing obsolete methods 2015-01-22 10:19:42 +11:00
Rob Harrington
c330e49a7f Moving permalink check action to enterprise controller 2015-01-22 10:19:42 +11:00
Rob Harrington
e2268e53bb Adding action to check uniquness of enterprise permalink against existing routes 2015-01-22 10:19:41 +11:00
Rob Harrington
9f0aeb5adf Adding unique permalink to enterprises 2015-01-22 10:19:41 +11:00
Maikel Linke
0d9a0919e5 show contact a group's contact footer 2015-01-21 16:39:41 +11:00
Maikel Linke
c1aa2f9b33 Display contact information in the front end 2015-01-21 16:12:28 +11:00
Maikel Linke
650e35c13e Adding contact information to groups backend 2015-01-21 16:11:55 +11:00
Maikel Linke
71de15b3e4 Contact address for enterprise group 2015-01-21 12:32:07 +11:00
Rohan Mitchell
41e42c78c4 Update spec link name 2015-01-16 17:25:38 +11:00
summerscope
1753432f36 Adding new loading animation to replace ugly and large gif 2015-01-16 17:06:40 +11:00
summerscope
0f8809abfc Merge branch 'master' into shopfront-filters 2015-01-16 16:12:34 +11:00
Rob Harrington
1d80bee595 Cart item total reflects total number of items in the cart 2015-01-16 16:06:51 +11:00
summerscope
d04e843315 kill unused line 2015-01-16 16:01:17 +11:00
summerscope
c0eb902eef Turn off text shadow for buttons on popover for top nav 2015-01-16 16:00:18 +11:00
Rob Harrington
2c307f09c3 Changing edit cart button to link 2015-01-16 15:47:56 +11:00
summerscope
23fc428d95 Move spinner icon to left of text 2015-01-16 14:57:30 +11:00
summerscope
3bd77c74a5 Improve logic on shopping cart button to add meaningful labels for various states 2015-01-16 14:57:09 +11:00
summerscope
8334ff736b Styling for shopping cart buttons and spinner 2015-01-16 13:27:34 +11:00
summerscope
51687b5c2c Tweak language and styling for the CTA buttons taking users to shopping cart and checkout pages 2015-01-16 13:27:16 +11:00
summerscope
21108b34b6 Add new animation for spinning 2015-01-16 13:26:40 +11:00
summerscope
2a21889216 Remove border on product thumbnail to clean up UI 2015-01-16 13:06:30 +11:00
summerscope
b451b94fd1 Improving styling on large thumbnail view of product images 2015-01-16 13:06:02 +11:00
summerscope
d2d3a577ea Merging master into this branch to make it easy to pull for staging push 2015-01-15 17:38:35 +11:00
Rob Harrington
b3e67fa164 Take two on disabled logic 2015-01-15 17:34:04 +11:00
Rob Harrington
ac34da4f24 Altering logic around disabled state for 'Your Shopping Cart' button 2015-01-15 17:19:48 +11:00
summerscope
d2277999cc Undo change of logic on disabled state on Shopping cart button 2015-01-15 17:13:10 +11:00
summerscope
cdd6c2daf2 Styling product summary row to allow for hiding product thumb at a larger break point 2015-01-15 16:46:55 +11:00
summerscope
4a881a5aa5 Turn off product thumb at a larger break point 2015-01-15 16:46:18 +11:00
summerscope
d5d218c450 Make taxon flag smaller for smallest device breakpoint 2015-01-15 16:45:54 +11:00
summerscope
f8622be21d Adding in new color variable 2015-01-15 16:45:29 +11:00
summerscope
676e7cb4d6 Make taxon flag 2 cols for small devices 2015-01-15 16:45:09 +11:00
summerscope
1dfbc88813 Change logic on disabled class on Your shopping cart button as this was swapped the wrong way around 2015-01-15 16:16:01 +11:00
summerscope
9db1c4c708 Adding in new color variable 2015-01-15 16:15:23 +11:00
Rohan Mitchell
25a734b208 When creating enterprise, establish relationships with the owner's hubs 2015-01-15 16:08:03 +11:00
summerscope
47a8731b8e Styling for price column to distinguish between product added vs null 2015-01-15 16:01:49 +11:00
summerscope
932604bd69 Add in logic to style price column differently if nul vs has value 2015-01-15 16:01:00 +11:00
summerscope
4d7871a0bb New grey color variable 2015-01-15 16:00:21 +11:00
summerscope
51c8891fac Add animation to product title hover 2015-01-15 15:24:01 +11:00
summerscope
9b258e075b Add styling and animation to img thumbnail 2015-01-15 15:23:36 +11:00
summerscope
891a9b06a8 Add expand icon on top of image thumbnail 2015-01-15 15:23:10 +11:00
Maikel Linke
4dc0701213 Side menu for enterprise group page 2015-01-15 15:04:21 +11:00
summerscope
b5879d51ac Merging master into shopfront-filters branch 2015-01-15 14:15:25 +11:00
Rohan Mitchell
dcc04ea538 On enterprise edit page, do not show side menu links we don't have permission to 2015-01-15 13:43:39 +11:00
Rohan Mitchell
83754a01ef Make side menu item visibility declarative 2015-01-15 13:43:39 +11:00
Rohan Mitchell
2d82f76a43 Fix changed var in ability spec 2015-01-15 13:43:39 +11:00
Rohan Mitchell
d5437e1508 edit_profile permission no longer shows links to manage shipping methods, payment methods and enterprise fees for an enterprise 2015-01-15 13:43:39 +11:00
Rohan Mitchell
f0bd9c1065 Fix failing specs due to addition of another enterprise 2015-01-15 13:43:39 +11:00
Rohan Mitchell
642de2f65f Only show delete enterprise link when user has permission 2015-01-15 13:43:39 +11:00
Rohan Mitchell
f6e9c9494c Enterprise user can edit profiles it has permission to 2015-01-15 13:43:39 +11:00
Rohan Mitchell
90ad2e2b7d Allow enterprises with 'edit profile' permission to edit enterprises 2015-01-15 13:43:39 +11:00
Rohan Mitchell
cfb69ae7d2 Add Permissions#editable_enterprises 2015-01-15 13:43:38 +11:00
Rohan Mitchell
a93a824b83 Admin can grant permission for an enterprise to edit the profile of another 2015-01-15 13:43:38 +11:00
Rohan Mitchell
2170c7ede1 Fix broken JS spec 2015-01-15 13:43:38 +11:00
Rob Harrington
06cf914119 Hopefully resolving order populator strangeness related to concurrency by ensuring a fresh list of line items 2015-01-15 12:10:05 +11:00
Maikel Linke
3e5dfda324 Removing old link to enterprise groups from configuration menu 2015-01-15 10:53:11 +11:00
Maikel Linke
13cbbcef40 Admin Tab Menu: converting .rb to .html.haml.deface
Plus a new menu item for enterprise groups.
2015-01-15 10:26:27 +11:00
Maikel Linke
949808e839 Customising AdaptiveMenu for the admin tab panel
The AdaptiveMenu was design for a menu filling the screen width. Our
menu is in a skeleton structure. The new file overwrites the spree
version and takes the container width as reference.
2015-01-14 18:03:08 +11:00
Maikel Linke
02a276b9c9 Producer and hub lists with search
Fixing map display as well.
2015-01-14 15:18:46 +11:00
Maikel Linke
9f1a773a58 MapController: copy default config instead of referencing
Copying makes it possible to have multiple independent maps.
2015-01-14 14:34:31 +11:00
Maikel Linke
0e510998a4 Handling missing options in shipping filter call 2015-01-14 14:33:37 +11:00
Rohan Mitchell
307cc313df Stub scope_to_hub in spec that wasn't expecting it 2015-01-13 11:46:41 +11:00
Rohan Mitchell
0431e0048c Merge branch 'master' into variant-overrides-frontend
Conflicts:
	app/controllers/shop_controller.rb
	app/views/shop/products/_form.html.haml
	spec/controllers/shop_controller_spec.rb
2015-01-12 16:48:51 +11:00
Rohan Mitchell
20bde803c8 Display overridden prices when products are in the cart 2015-01-12 14:58:35 +11:00
Rohan Mitchell
6b43354386 Restructure spec 2015-01-12 14:37:43 +11:00
Rohan Mitchell
494bb1f3b4 Fix auto-reload nerfing scope_xx_to_hub 2015-01-12 14:24:15 +11:00
Rohan Mitchell
d52b6b34e3 Spec: do not subtract stock from overrides that do not override count_on_hand 2015-01-12 11:33:53 +11:00
Rohan Mitchell
4583e29ae3 When order is placed, subtract stock from variant override 2015-01-12 11:23:53 +11:00
Rohan Mitchell
a4d4622521 Add VariantOverride.decrement_stock 2015-01-12 10:39:23 +11:00
Rohan Mitchell
20f650b472 Add VariantOverride.stock_overriden? 2015-01-12 09:32:02 +11:00
Rohan Mitchell
e013e1fe00 Don't show rspec profile by default 2015-01-09 15:30:49 +11:00
Rohan Mitchell
d40ffeef52 Remove old sidebar 2015-01-09 13:10:17 +11:00
Rohan Mitchell
6200390369 Merge branch 'lin-d-hop-add_shipping_category' 2015-01-09 12:49:09 +11:00
Rohan Mitchell
e9f32f5329 Spec that shipping category can be set when creating new products 2015-01-09 12:46:36 +11:00
Rohan Mitchell
27bc845b0b Add correct markup for tax category required asterisk 2015-01-09 12:45:35 +11:00
Rohan Mitchell
22cb8b7a71 Two-space indentation, change 'Shipping categories' to 'Shipping category' 2015-01-09 12:33:26 +11:00
Rohan Mitchell
c6db1d440c Merge branch 'add_shipping_category' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-add_shipping_category
Conflicts:
	app/overrides/spree/admin/products/new/replace_form.html.haml.deface
	app/views/spree/order_mailer/confirm_email.text.haml
2015-01-09 12:30:19 +11:00
Rohan Mitchell
bc448e5156 Merge branch 'lin-d-hop-report_download_namechange' 2015-01-09 11:51:46 +11:00
Rohan Mitchell
6a42f62eb2 Fix filename on order cycle management report csv, add timestamp to it and also users and enterprises report 2015-01-09 11:49:59 +11:00
Rohan Mitchell
8db09d9590 Merge branch 'report_download_namechange' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-report_download_namechange
Conflicts:
	app/controllers/spree/admin/reports_controller_decorator.rb
2015-01-09 11:48:23 +11:00
Rohan Mitchell
7e55262ce9 Extract most everything to private methods - neatly groups concerns together 2015-01-09 11:28:39 +11:00
Rohan Mitchell
bbc887a692 Test the exact value, not the truncated value 2015-01-09 11:26:25 +11:00
Rohan Mitchell
6f36c0463c Separate data preparation from test conditions 2015-01-09 11:26:25 +11:00
Rohan Mitchell
592ac7856a Variable naming 2015-01-09 11:26:25 +11:00
Rohan Mitchell
261dea37e9 Spec formatting 2015-01-09 11:26:25 +11:00
Rohan Mitchell
80c507cc66 Formatting 2015-01-09 11:26:25 +11:00
Lynne Davis
1ad13f0359 Cleanup of git to remove unnecessary commits from pull request 2015-01-09 11:26:24 +11:00
Rohan Mitchell
532041c07b Use Fuubar formatter for rspec - displays fails as they happen 2015-01-08 12:12:15 +11:00
Rohan Mitchell
05bd0c4168 Merge branch 'Matt-Yorkley-reports_2' 2015-01-08 10:50:27 +11:00
Rohan Mitchell
51b0d7e0eb Move private method to helper 2015-01-08 10:48:02 +11:00
Rohan Mitchell
d2e0d4f44a Fix grammar 2015-01-08 10:39:51 +11:00
Rohan Mitchell
ab26902e4e Move money decorator to lib dir, as it's a decorator for a lib class, not a model 2015-01-08 10:39:14 +11:00
Rohan Mitchell
6adb4194c2 Extract date range form to partial 2015-01-08 10:31:51 +11:00
Rohan Mitchell
b6f29c778e Use haml syntax for defining divs 2015-01-08 10:23:37 +11:00
Rohan Mitchell
4839c00d62 Retrieve currency_symbol via private method rather than before_filter + instance var - cleaner syntax 2015-01-08 10:12:32 +11:00
Rohan Mitchell
a438216189 Merge branch 'reports_2' of https://github.com/Matt-Yorkley/openfoodnetwork into Matt-Yorkley-reports_2
Conflicts:
	app/controllers/spree/admin/reports_controller_decorator.rb
2015-01-08 10:08:12 +11:00
Rohan Mitchell
29f9b3bbd7 Merge branch 'Matt-Yorkley-tax_cat_dropdown' 2015-01-08 09:51:27 +11:00
Rohan Mitchell
ac59665e3c Test validations without creating models in database 2015-01-08 09:48:33 +11:00
Rohan Mitchell
e4efda2f96 Move model spec into validations block 2015-01-08 09:37:35 +11:00
Rohan Mitchell
a9b91bc52a Tighten spec: setting tax category should succeed 2015-01-08 09:35:18 +11:00
Rohan Mitchell
f90ee33c89 Use the tax category factory provided by Spree 2015-01-08 09:27:29 +11:00
Rohan Mitchell
087ccb52f9 Merge branch 'tax_cat_dropdown' of https://github.com/Matt-Yorkley/openfoodnetwork into Matt-Yorkley-tax_cat_dropdown 2015-01-08 09:09:20 +11:00
Rohan Mitchell
4bf8716786 Extract complete_checkout to method 2015-01-07 16:29:15 +11:00
Rohan Mitchell
c0030ddb13 use_short_wait can now take a flexible wait time 2015-01-07 16:28:03 +11:00
Rohan Mitchell
370133b875 Fix minor spec issues 2015-01-07 16:06:23 +11:00
Maikel Linke
3b9657eb17 show map of a group's enterprises 2015-01-07 12:00:55 +11:00
Maikel Linke
9956b967f0 Fixing link to group's page 2015-01-07 10:27:08 +11:00
Maikel Linke
9310bc902a first draft of group page, a lot of TODOs 2015-01-06 22:39:15 +11:00
Maikel Linke
9798b05a24 TabsCtrl can show tabs that don't toggle
toggle: tabs show on first click and hide on second click
select: tabs show on every click, one tab is always active
2015-01-06 22:39:15 +11:00
Maikel Linke
586753015b Reducing the groups page to a oneline list of groups 2015-01-06 22:39:15 +11:00
summerscope
6863dd75ef Restyling button for price breakdown to make it more clear that users press again to close the pop over 2014-12-19 17:05:13 +11:00
summerscope
fafdb29fcb Regenerated icon font, smaller file size and updated graph icon 2014-12-19 17:04:26 +11:00
Rohan Mitchell
85882a73ff Merge branch 'lin-d-hop-266reportsbranch' 2014-12-19 16:51:38 +11:00
Rohan Mitchell
2bad590ef4 Order confirmation and order objects use overridden prices 2014-12-19 16:51:11 +11:00
Rohan Mitchell
c3995ee4d5 Checkout shows overridden prices 2014-12-19 16:51:11 +11:00
Rohan Mitchell
94684e9963 Show overridden price in shopping cart 2014-12-19 16:51:11 +11:00
Rohan Mitchell
1e1a070b2b Scope Variant#price_in 2014-12-19 16:51:10 +11:00
summerscope
d50f8dcd01 Tweak styling shopfront page to allow for new icons and hover state 2014-12-19 14:53:46 +11:00
summerscope
813ef463a2 Tweak markup shopfront page to add icon 2014-12-19 14:53:25 +11:00
Rohan Mitchell
72118f4e2e Fix syntax error, spec for removed column 2014-12-19 10:01:46 +11:00
Rohan Mitchell
e9f04c3c15 Clean up whitespace 2014-12-19 10:01:21 +11:00
Rohan Mitchell
6e0576235d Use create\! instead of build - more concise, raises exception on error 2014-12-19 09:51:32 +11:00
Rohan Mitchell
27d646c0e8 Tweak indentation, remove some blank lines 2014-12-19 09:51:32 +11:00
Rohan Mitchell
0151ecbb32 Add additional rows to payment method selection 2014-12-19 09:51:32 +11:00
Rohan Mitchell
d548515684 Remove unused header column 2014-12-19 09:51:13 +11:00
Rohan Mitchell
343af1f1e0 Rename report_shipping_options to report_shipping_method_options for symmetry with report_payment_method_options 2014-12-19 09:51:07 +11:00
Rohan Mitchell
3b58d99abc Fix spec failure 2014-12-19 09:51:02 +11:00
Rohan Mitchell
4a30f27b3d Merge branch '266reportsbranch' of https://github.com/lin-d-hop/openfoodnetwork into lin-d-hop-266reportsbranch
Conflicts:
	app/controllers/spree/admin/reports_controller_decorator.rb
	spec/models/spree/order_spec.rb
2014-12-19 09:38:02 +11:00
Rohan Mitchell
c4b45bdbbf Fix line items returning prices with fractional cents 2014-12-18 16:24:59 +11:00
Rohan Mitchell
b0f5d0170c Spec that overridden price with fees appears in quick cart 2014-12-18 13:32:28 +11:00
Rohan Mitchell
5fcb2982fa Fees are calculated correctly for items with variant overrides 2014-12-18 11:53:17 +11:00
Rohan Mitchell
ead84aa9ff Add ids to product listing products and variants 2014-12-18 11:00:45 +11:00
Rohan Mitchell
1d3800696e Variant overrides can override stock levels 2014-12-18 10:46:47 +11:00
Rohan Mitchell
f5ee9ba2f3 VariantOverride looks up count_on_hand 2014-12-18 10:21:07 +11:00
Rohan Mitchell
e6eecd3ae2 Replace proxies with modules 2014-12-18 10:20:31 +11:00
Rohan Mitchell
0832a8f63d Viewing products shows overridden prices 2014-12-17 16:00:25 +11:00
Rohan Mitchell
23c7715929 Cosmetic change 2014-12-17 14:03:54 +11:00
Rohan Mitchell
2ea7bdbec6 Move controller spec to serializer spec 2014-12-17 14:01:59 +11:00
Rohan Mitchell
6c300431d2 Move Product#variants_for to Variant.for_distribution scope 2014-12-17 13:42:30 +11:00
Rohan Mitchell
91c500417b Swap param order 2014-12-17 08:55:27 +11:00
Lynne Davis
7e49bd634e Updated the specs with Rohans suggestions 2014-12-12 18:23:43 +00:00
Lynne Davis
eeae72352b Renamed methods and vars to better fit naming conventions 2014-12-12 10:11:33 +00:00
Lynne Davis
079781576b Adding new specs and a couple updates the lib/report 2014-12-11 12:47:56 +00:00
Lynne Davis
f878e18037 Update that works better with the specs 2014-12-08 16:25:18 +00:00
Lynne Davis
633a8a49e2 updating spec based on the wise advice of Rohan 2014-12-03 00:35:53 +00:00
Lynne Davis
a5ae1c490c Fixing typo in report found through testing 2014-12-02 17:48:04 +00:00
Lynne Davis
c2c51a5531 Fixing typo in feature spec 2014-12-02 12:24:34 +00:00
Lynne Davis
35c27bf516 First specs for additional scope to order model. Not liking the repeated code so would appreciate feedback to get rid of it. Thanks! 2014-11-27 20:36:41 +00:00
Matt-Yorkley
e4d1ae7548 Refactored currency symbol display 2014-11-24 18:20:10 +00:00
Matt-Yorkley
4f153714a8 Reports pages improvements and i18n 2014-11-23 17:26:26 +00:00
Matt-Yorkley
451dd3966f form partial 2014-11-23 15:22:56 +00:00
Matt-Yorkley
c3829ae64f Tax category dropdown on create product form 2014-11-23 15:18:16 +00:00
Lynne Davis
b81bf60dc2 267: Cont. Didn't realise commit -a doesn't add a file 2014-11-18 19:30:44 +00:00
Lynne Davis
cc0da142b7 267: Adding to new product form ability to add shipping category to record frozen/chilled 2014-11-18 19:28:49 +00:00
Lynne Davis
03b59eae75 266: Updating with rohans suggestions to tidy up and 'rubify' the code. Thanks for the tips Rohan! 2014-11-14 15:56:07 +00:00
Lynne Davis
e89184de02 286: Last sneaky dollar sign. Updated to use spree_number_to_currency 2014-11-14 14:24:22 +00:00
Lynne Davis
cc3959467d 285: Report downlaod naming - Updating to the cleaner suggestions of Rohan. Note to self, don't be lazy :-) 2014-11-13 10:30:00 +00:00
Lynne Davis
15f29f4c8e 266: Adding ability to search by distribution 2014-11-12 18:52:25 +00:00
Lynne Davis
932d571d2c 266: Updating to incorporate Rohans suggestions. Searching on payment method name rather than id 2014-11-12 11:47:26 +00:00
Lynne Davis
9a5ee81431 Changing report download titles in include download date 2014-11-11 17:49:08 +00:00
Lynne Davis
6f6ae309c6 266 UK: Adding first UK report - Payment Methods Report - to find balances per ordercycle for multiple payment method options. Working, but not complete to spec yet 2014-11-02 11:26:39 +00:00
674 changed files with 16728 additions and 5061 deletions

2
.mailmap Normal file
View File

@@ -0,0 +1,2 @@
Rob Harrington <oeoeaio@gmail.com>
Laura Summers <summerscope@gmail.com>

2
.rspec
View File

@@ -1,2 +1,2 @@
--colour
--profile
--format Fuubar

4
.rspec_parallel Normal file
View File

@@ -0,0 +1,4 @@
--format progress
--format ParallelTests::RSpec::SummaryLogger --out tmp/spec_summary.log
--format ParallelTests::RSpec::RuntimeLogger --out tmp/parallel_runtime_rspec.log
--tag ~performance

16
Gemfile
View File

@@ -1,12 +1,13 @@
source 'https://rubygems.org'
ruby "1.9.3"
gem 'rails', '3.2.19'
gem 'rails', '3.2.21'
gem 'rails-i18n', '~> 3.0.0'
gem 'i18n', '~> 0.6.11'
gem 'pg'
gem 'spree', :github => 'openfoodfoundation/spree', :branch => '1-3-stable'
gem 'spree_i18n', :github => 'spree/spree_i18n'
gem 'spree_i18n', :github => 'spree/spree_i18n', :branch => '1-3-stable'
gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '1-3-stable'
# Waiting on merge of PR #117
@@ -14,6 +15,8 @@ gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '1-3-s
gem 'spree_paypal_express', :github => "openfoodfoundation/better_spree_paypal_express", :branch => "1-3-stable"
#gem 'spree_paypal_express', :github => "spree-contrib/better_spree_paypal_express", :branch => "1-3-stable"
gem 'delayed_job_active_record'
gem 'daemons'
gem 'comfortable_mexican_sofa'
# Fix bug in simple_form preventing collection_check_boxes usage within form_for block
@@ -21,11 +24,11 @@ gem 'comfortable_mexican_sofa'
gem 'simple_form', :github => 'RohanM/simple_form'
gem 'unicorn'
gem 'angularjs-rails'
gem 'angularjs-rails', '1.2.13'
gem 'bugsnag'
gem 'newrelic_rpm'
gem 'haml'
gem 'sass', "~> 3.2"
gem 'sass', "~> 3.3"
gem 'sass-rails', '~> 3.2.3', groups: [:default, :assets]
gem 'aws-sdk'
gem 'db2fog'
@@ -46,6 +49,7 @@ gem 'custom_error_message', :github => 'jeremydurham/custom-err-msg'
gem 'angularjs-file-upload-rails', '~> 1.1.0'
gem 'roadie-rails', '~> 1.0.3'
gem 'figaro'
gem 'acts-as-taggable-on', '~> 3.4'
gem 'foreigner'
gem 'immigrant'
@@ -66,7 +70,7 @@ group :assets do
gem 'turbo-sprockets-rails3'
gem 'foundation-icons-sass-rails'
gem 'momentjs-rails'
gem 'angular-rails-templates'
gem 'angular-rails-templates', '~> 0.2.0'
end
gem "foundation-rails"
gem 'foundation_rails_helper', github: 'willrjmarshall/foundation_rails_helper', branch: "rails3"
@@ -78,6 +82,7 @@ gem 'jquery-rails'
group :test, :development do
# Pretty printed test output
gem 'turn', '~> 0.8.3', :require => false
gem 'fuubar'
gem 'rspec-rails'
gem 'shoulda-matchers'
gem 'factory_girl_rails', :require => false
@@ -108,4 +113,5 @@ group :development do
gem 'guard-rails'
gem 'guard-zeus'
gem 'guard-rspec'
gem 'parallel_tests'
end

View File

@@ -23,7 +23,7 @@ GIT
GIT
remote: git://github.com/openfoodfoundation/spree.git
revision: 4e0075b07acb56864aca89eee3d9670136176c23
revision: afcc23e489eb604a3e2651598a7c8364e2acc7b3
branch: 1-3-stable
specs:
spree (1.3.6.beta)
@@ -86,11 +86,13 @@ GIT
GIT
remote: git://github.com/spree/spree_i18n.git
revision: a96bee02340e008e60549295a4f09e047fd2e628
revision: 752eb67204e9c5a4e22b62591a8fd55fe2285e43
branch: 1-3-stable
specs:
spree_i18n (1.0.0)
i18n (~> 0.5)
spree (~> 1.1)
rails-i18n
spree_core (>= 1.1)
GIT
remote: git://github.com/willrjmarshall/foundation_rails_helper.git
@@ -105,12 +107,12 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actionmailer (3.2.19)
actionpack (= 3.2.19)
actionmailer (3.2.21)
actionpack (= 3.2.21)
mail (~> 2.5.4)
actionpack (3.2.19)
activemodel (= 3.2.19)
activesupport (= 3.2.19)
actionpack (3.2.21)
activemodel (= 3.2.21)
activesupport (= 3.2.21)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
@@ -121,37 +123,33 @@ GEM
active_link_to (1.0.0)
active_model_serializers (0.8.1)
activemodel (>= 3.0)
active_utils (2.2.3)
activesupport (>= 2.3.11)
i18n
activemerchant (1.44.1)
active_utils (~> 2.2.0)
activemerchant (1.48.0)
activesupport (>= 3.2.14, < 5.0.0)
builder (>= 2.1.2, < 4.0.0)
i18n (>= 0.6.9)
json (~> 1.7)
nokogiri (~> 1.4)
offsite_payments (~> 2.0.0)
activemodel (3.2.19)
activesupport (= 3.2.19)
activemodel (3.2.21)
activesupport (= 3.2.21)
builder (~> 3.0.0)
activerecord (3.2.19)
activemodel (= 3.2.19)
activesupport (= 3.2.19)
activerecord (3.2.21)
activemodel (= 3.2.21)
activesupport (= 3.2.21)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.19)
activemodel (= 3.2.19)
activesupport (= 3.2.19)
activesupport (3.2.19)
activeresource (3.2.21)
activemodel (= 3.2.21)
activesupport (= 3.2.21)
activesupport (3.2.21)
i18n (~> 0.6, >= 0.6.4)
multi_json (~> 1.0)
acts-as-taggable-on (3.5.0)
activerecord (>= 3.2, < 5)
acts_as_list (0.1.4)
addressable (2.3.3)
andand (1.3.3)
angular-rails-templates (0.1.1)
angular-rails-templates (0.2.0)
railties (>= 3.1)
sprockets
sprockets (~> 2)
tilt
angularjs-file-upload-rails (1.1.0)
angularjs-rails (1.2.13)
@@ -181,11 +179,11 @@ GEM
celluloid (0.15.2)
timers (~> 1.1.0)
chronic (0.10.2)
chunky_png (1.3.0)
chunky_png (1.3.4)
climate_control (0.0.3)
activesupport (>= 3.0)
cliver (0.3.2)
cocaine (0.5.4)
cocaine (0.5.7)
climate_control (>= 0.0.3, < 1.0)
coderay (1.0.9)
coffee-rails (3.2.2)
@@ -195,22 +193,33 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.3.3)
colorize (0.7.3)
colorize (0.7.7)
columnize (0.3.6)
comfortable_mexican_sofa (1.6.24)
active_link_to (~> 1.0.0)
paperclip (>= 2.3.0)
rails (>= 3.0.0)
compass (0.12.4)
compass (1.0.3)
chunky_png (~> 1.2)
fssm (>= 0.2.7)
sass (~> 3.2.17)
compass-rails (1.0.3)
compass (>= 0.12.2, < 0.14)
compass-core (~> 1.0.2)
compass-import-once (~> 1.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
sass (>= 3.3.13, < 3.5)
compass-core (1.0.3)
multi_json (~> 1.0)
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
compass-rails (2.0.4)
compass (~> 1.0.0)
sass-rails (<= 5.0.1)
sprockets (< 2.13)
crack (0.4.1)
safe_yaml (~> 0.9.0)
css_parser (1.3.5)
addressable
daemons (1.2.2)
dalli (2.7.2)
database_cleaner (0.7.1)
db2fog (0.8.0)
@@ -223,6 +232,11 @@ GEM
debugger-ruby_core_source (~> 1.2.3)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.2.3)
delayed_job (4.0.4)
activesupport (>= 3.0, < 4.2)
delayed_job_active_record (4.0.2)
activerecord (>= 3.0, < 4.2)
delayed_job (>= 3.0, < 4.1)
devise (2.2.8)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
@@ -237,8 +251,7 @@ GEM
erubis (2.7.0)
eventmachine (1.0.3)
excon (0.25.3)
execjs (1.4.0)
multi_json (~> 1.0)
execjs (2.5.2)
factory_girl (3.3.0)
activesupport (>= 3.0.0)
factory_girl_rails (3.3.0)
@@ -265,10 +278,12 @@ GEM
foundation-icons-sass-rails (3.0.0)
railties (>= 3.1.1)
sass-rails (>= 3.1.1)
foundation-rails (5.2.2.0)
foundation-rails (5.5.0.0)
railties (>= 3.1.0)
sass (>= 3.2.0)
fssm (0.2.10)
sass (>= 3.2.0, < 3.4)
fuubar (1.3.3)
rspec (>= 2.14.0, < 3.1.0)
ruby-progressbar (~> 1.4)
geocoder (1.1.8)
gmaps4rails (1.5.6)
guard (2.2.4)
@@ -305,14 +320,14 @@ GEM
jquery-rails (2.2.2)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.1)
json (1.8.3)
json_spec (1.1.1)
multi_json (~> 1.0)
rspec (~> 2.0)
kaminari (0.14.1)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kgio (2.7.4)
kgio (2.9.3)
launchy (2.1.2)
addressable (~> 2.3)
letter_opener (1.0.0)
@@ -326,29 +341,21 @@ GEM
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
method_source (0.8.1)
method_source (0.8.2)
mime-types (1.25.1)
mini_portile (0.6.1)
mini_portile (0.6.2)
momentjs-rails (2.5.1)
railties (>= 3.1)
money (5.1.1)
i18n (~> 0.6.0)
multi_json (1.10.1)
multi_json (1.11.0)
multi_xml (0.5.5)
net-scp (1.1.2)
net-ssh (>= 2.6.5)
net-ssh (2.6.8)
newrelic_rpm (3.6.7.152)
nokogiri (1.6.4.1)
newrelic_rpm (3.12.0.288)
nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
offsite_payments (2.0.1)
active_utils (~> 2.2.0)
activesupport (>= 3.2.14, < 5.0.0)
builder (>= 2.1.2, < 4.0.0)
i18n (~> 0.5)
json (~> 1.7)
money (< 7.0.0)
nokogiri (~> 1.4)
oj (2.1.2)
orm_adapter (0.5.0)
paperclip (3.5.4)
@@ -356,6 +363,9 @@ GEM
activesupport (>= 3.0.0)
cocaine (~> 0.5.3)
mime-types
parallel (1.4.1)
parallel_tests (1.3.7)
parallel
paypal-sdk-core (0.2.10)
multi_json (~> 1.0)
xml-simple
@@ -387,28 +397,28 @@ GEM
rack
rack-ssl (1.3.4)
rack
rack-test (0.6.2)
rack-test (0.6.3)
rack (>= 1.0)
rails (3.2.19)
actionmailer (= 3.2.19)
actionpack (= 3.2.19)
activerecord (= 3.2.19)
activeresource (= 3.2.19)
activesupport (= 3.2.19)
rails (3.2.21)
actionmailer (= 3.2.21)
actionpack (= 3.2.21)
activerecord (= 3.2.21)
activeresource (= 3.2.21)
activesupport (= 3.2.21)
bundler (~> 1.0)
railties (= 3.2.19)
railties (= 3.2.21)
rails-i18n (3.0.1)
i18n (~> 0.5)
rails (>= 3.0.0, < 4.0.0)
railties (3.2.19)
actionpack (= 3.2.19)
activesupport (= 3.2.19)
railties (3.2.21)
actionpack (= 3.2.21)
activesupport (= 3.2.21)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
raindrops (0.9.0)
rake (10.3.2)
raindrops (0.13.0)
rake (10.4.2)
ransack (0.7.2)
actionpack (~> 3.0)
activerecord (~> 3.0)
@@ -449,8 +459,9 @@ GEM
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
ruby-hmac (0.4.0)
ruby-progressbar (1.7.1)
safe_yaml (0.9.5)
sass (3.2.19)
sass (3.3.14)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
@@ -489,11 +500,11 @@ GEM
sprockets (>= 2.0.0)
turn (0.8.3)
ansi
tzinfo (0.3.42)
uglifier (1.2.4)
tzinfo (0.3.44)
uglifier (2.7.1)
execjs (>= 0.3.0)
multi_json (>= 1.0.2)
unicorn (4.3.1)
json (>= 1.8.0)
unicorn (4.9.0)
kgio (~> 2.6)
rack
raindrops (~> 0.7)
@@ -517,7 +528,7 @@ GEM
xml-simple (1.1.4)
xpath (2.0.0)
nokogiri (~> 1.3)
zeus (0.13.3)
zeus (0.15.4)
method_source (>= 0.6.7)
PLATFORMS
@@ -525,10 +536,11 @@ PLATFORMS
DEPENDENCIES
active_model_serializers
acts-as-taggable-on (~> 3.4)
andand
angular-rails-templates
angular-rails-templates (~> 0.2.0)
angularjs-file-upload-rails (~> 1.1.0)
angularjs-rails
angularjs-rails (= 1.2.13)
awesome_print
aws-sdk
bugsnag
@@ -537,17 +549,20 @@ DEPENDENCIES
comfortable_mexican_sofa
compass-rails
custom_error_message!
daemons
dalli
database_cleaner (= 0.7.1)
db2fog
debugger-linecache
deface!
delayed_job_active_record
factory_girl_rails
figaro
foreigner
foundation-icons-sass-rails
foundation-rails
foundation_rails_helper!
fuubar
geocoder
gmaps4rails
guard
@@ -556,6 +571,7 @@ DEPENDENCIES
guard-rspec
guard-zeus
haml
i18n (~> 0.6.11)
immigrant
jquery-rails
json_spec
@@ -564,18 +580,19 @@ DEPENDENCIES
newrelic_rpm
oj
paperclip
parallel_tests
pg
poltergeist
pry-debugger
rabl
rack-livereload
rack-ssl
rails (= 3.2.19)
rails (= 3.2.21)
rails-i18n (~> 3.0.0)
representative_view
roadie-rails (~> 1.0.3)
rspec-rails
sass (~> 3.2)
sass (~> 3.3)
sass-rails (~> 3.2.3)
shoulda-matchers
simple_form!

View File

@@ -1,4 +1,3 @@
[![Build Status](http://ci.openfood.com.au:8080/buildStatus/icon?job=openfoodweb - tests)](http://ci.openfood.com.au:8080/job/openfoodweb%20-%20tests/)
[![Code Climate](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork.png)](https://codeclimate.com/github/openfoodfoundation/openfoodnetwork)
# Open Food Network
@@ -53,14 +52,10 @@ Configure the site:
cp config/application.yml.example config/application.yml
edit config/application.yml
Create the development and test databases, using the settings specified in `config/database.yml`:
Create the development and test databases, using the settings specified in `config/database.yml`, and populate them with a schema and seed data:
rake db:setup
Then load the schema and some seed data with the following command:
rake db:schema:load db:seed
Load some default data for your environment:
rake openfoodnetwork:dev:load_sample_data
@@ -99,4 +94,4 @@ usage instructions.
## Licence
Copyright (c) 2012 - 2013 Open Food Foundation, released under the AGPL licence.
Copyright (c) 2012 - 2015 Open Food Foundation, released under the AGPL licence.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,55 @@
<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
<svg width="58" height="58" viewBox="0 0 58 58" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<g transform="translate(2 1)" stroke="#0096ad" stroke-width="1.5">
<circle cx="42.601" cy="11.462" r="5" fill-opacity="1" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="1;0;0;0;0;0;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="49.063" cy="27.063" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;1;0;0;0;0;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="42.601" cy="42.663" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;1;0;0;0;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="27" cy="49.125" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;0;1;0;0;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="11.399" cy="42.663" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;0;0;1;0;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="4.938" cy="27.063" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;0;0;0;1;0;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="11.399" cy="11.462" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;0;0;0;0;1;0" calcMode="linear"
repeatCount="indefinite" />
</circle>
<circle cx="27" cy="5" r="5" fill-opacity="0" fill="#0096ad">
<animate attributeName="fill-opacity"
begin="0s" dur="1.3s"
values="0;0;0;0;0;0;0;1" calcMode="linear"
repeatCount="indefinite" />
</circle>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -1,3 +1,3 @@
angular.module("ofn.admin", ["ngResource", "ngAnimate", "ofn.dropdown", "admin.products", "admin.taxons", "infinite-scroll"]).config ($httpProvider) ->
angular.module("ofn.admin", ["ngResource", "ngAnimate", "admin.indexUtils", "admin.dropdown", "admin.products", "admin.taxons", "infinite-scroll"]).config ($httpProvider) ->
$httpProvider.defaults.headers.common["X-CSRF-Token"] = $("meta[name=csrf-token]").attr("content")
$httpProvider.defaults.headers.common["Accept"] = "application/json, text/javascript, */*"

View File

@@ -12,13 +12,21 @@
//= require angular
//= require angular-resource
//= require angular-animate
//= require angular-sanitize
//= require admin/spree_core
//= require admin/spree_auth
//= require admin/spree_promo
//= require admin/spree_paypal_express
//= require ../shared/ng-infinite-scroll.min.js
//= require ../shared/ng-tags-input.min.js
//= require angular-rails-templates
//= require_tree ../templates/admin
//= require ./admin
//= require ./customers/customers
//= require ./dropdown/dropdown
//= require ./enterprises/enterprises
//= require ./enterprise_groups/enterprise_groups
//= require ./index_utils/index_utils
//= require ./payment_methods/payment_methods
//= require ./products/products
//= require ./shipping_methods/shipping_methods
@@ -28,5 +36,6 @@
//= require ./users/users
//= require textAngular.min.js
//= require textAngular-sanitize.min.js
//= require ../shared/bindonce.min.js
//= require_tree .

View File

@@ -1,6 +1,6 @@
angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
"$scope", "$http", "dataFetcher", "blankOption", "pendingChanges", "VariantUnitManager", "OptionValueNamer", "SpreeApiKey"
($scope, $http, dataFetcher, blankOption, pendingChanges, VariantUnitManager, OptionValueNamer, SpreeApiKey) ->
"$scope", "$http", "$filter", "dataFetcher", "blankOption", "pendingChanges", "VariantUnitManager", "OptionValueNamer", "SpreeApiKey", "Columns"
($scope, $http, $filter, dataFetcher, blankOption, pendingChanges, VariantUnitManager, OptionValueNamer, SpreeApiKey, Columns) ->
$scope.loading = true
$scope.initialiseVariables = ->
@@ -18,9 +18,7 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
$scope.selectedUnitsProduct = {};
$scope.selectedUnitsVariant = {};
$scope.sharedResource = false
$scope.predicate = ""
$scope.reverse = false
$scope.columns =
$scope.columns = Columns.setColumns
order_no: { name: "Order No.", visible: false }
full_name: { name: "Name", visible: true }
email: { name: "Email", visible: false }
@@ -32,7 +30,8 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
variant: { name: "Variant", visible: true }
quantity: { name: "Quantity", visible: true }
max: { name: "Max", visible: true }
unit_value: { name: "Weight/Volume", visible: false }
price: { name: "Price", visible: false }
$scope.initialise = ->
$scope.initialiseVariables()
authorise_api_reponse = ""
@@ -42,13 +41,15 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
if $scope.spree_api_key_ok
$http.defaults.headers.common["X-Spree-Token"] = SpreeApiKey
dataFetcher("/api/enterprises/accessible?template=bulk_index&q[is_primary_producer_eq]=true").then (data) ->
$scope.suppliers = data
$scope.suppliers = $filter('orderBy')(data, 'name')
$scope.suppliers.unshift blankOption()
dataFetcher("/api/enterprises/accessible?template=bulk_index&q[is_distributor_eq]=true").then (data) ->
$scope.distributors = data
dataFetcher("/api/enterprises/accessible?template=bulk_index&q[sells_in][]=own&q[sells_in][]=any").then (data) ->
$scope.distributors = $filter('orderBy')(data, 'name')
$scope.distributors.unshift blankOption()
ocFetcher = dataFetcher("/api/order_cycles/accessible").then (data) ->
ocFetcher = dataFetcher("/api/order_cycles/accessible?as=distributor&q[orders_close_at_gt]=#{formatDate(daysFromToday(-90))}").then (data) ->
$scope.orderCycles = data
$scope.orderCyclesByID = []
$scope.orderCyclesByID[oc.id] = oc for oc in $scope.orderCycles
$scope.orderCycles.unshift blankOption()
$scope.fetchOrders()
ocFetcher.then ->
@@ -60,7 +61,7 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
$scope.fetchOrders = ->
$scope.loading = true
dataFetcher("/api/orders/managed?template=bulk_index;page=1;per_page=500;q[completed_at_not_null]=true;q[completed_at_gt]=#{$scope.startDate};q[completed_at_lt]=#{$scope.endDate}").then (data) ->
dataFetcher("/admin/orders/managed?template=bulk_index;page=1;per_page=500;q[state_not_eq]=canceled;q[completed_at_not_null]=true;q[completed_at_gt]=#{$scope.startDate};q[completed_at_lt]=#{$scope.endDate}").then (data) ->
$scope.resetOrders data
$scope.loading = false
@@ -162,6 +163,25 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
$scope.supplierFilter = $scope.suppliers[0].id
$scope.orderCycleFilter = $scope.orderCycles[0].id
$scope.quickSearch = ""
$scope.weightAdjustedPrice = (lineItem, oldValue) ->
if oldValue <= 0
oldValue = lineItem.units_variant.unit_value
if lineItem.unit_value <= 0
lineItem.unit_value = lineItem.units_variant.unit_value
lineItem.price = lineItem.price * lineItem.unit_value / oldValue
#$scope.bulk_order_form.line_item.price.$setViewValue($scope.bulk_order_form.line_item.price.$viewValue)
$scope.unitValueLessThanZero = (lineItem) ->
if lineItem.units_variant.unit_value <= 0
true
else
false
$scope.$watch "orderCycleFilter", (newVal, oldVal) ->
unless $scope.orderCycleFilter == "0" || angular.equals(newVal, oldVal)
$scope.startDate = $scope.orderCyclesByID[$scope.orderCycleFilter].first_order
$scope.endDate = $scope.orderCyclesByID[$scope.orderCycleFilter].last_order
]
daysFromToday = (days) ->

View File

@@ -1,16 +1,20 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $http, BulkProducts, DisplayProperties, dataFetcher, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, SpreeApiAuth) ->
angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout, $http, BulkProducts, DisplayProperties, dataFetcher, DirtyProducts, VariantUnitManager, StatusMessage, producers, Taxons, SpreeApiAuth, Columns, tax_categories) ->
$scope.loading = true
$scope.StatusMessage = StatusMessage
$scope.columns =
producer: {name: "Producer", visible: true}
name: {name: "Name", visible: true}
unit: {name: "Unit", visible: true}
price: {name: "Price", visible: true}
on_hand: {name: "On Hand", visible: true}
category: {name: "Category", visible: false}
available_on: {name: "Available On", visible: false}
$scope.columns = Columns.setColumns
producer: {name: "Producer", visible: true}
sku: {name: "SKU", visible: false}
name: {name: "Name", visible: true}
unit: {name: "Unit", visible: true}
price: {name: "Price", visible: true}
on_hand: {name: "On Hand", visible: true}
on_demand: {name: "On Demand", visible: false}
category: {name: "Category", visible: false}
tax_category: {name: "Tax Category", visible: false}
inherits_properties: {name: "Inherits Properties?", visible: false}
available_on: {name: "Available On", visible: false}
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
@@ -30,6 +34,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.producers = producers
$scope.taxons = Taxons.taxons
$scope.tax_categories = tax_categories
$scope.filterProducers = [{id: "0", name: ""}].concat $scope.producers
$scope.filterTaxons = [{id: "0", name: ""}].concat $scope.taxons
$scope.producerFilter = "0"
@@ -104,6 +109,12 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
window.location = "/admin/products/" + product.permalink_live + ((if variant then "/variants/" + variant.id else "")) + "/edit"
$scope.toggleShowAllVariants = ->
showVariants = !DisplayProperties.showVariants 0
$scope.filteredProducts.forEach (product) ->
DisplayProperties.setShowVariants product.id, showVariants
DisplayProperties.setShowVariants 0, showVariants
$scope.addVariant = (product) ->
product.variants.push
id: $scope.nextVariantId()
@@ -135,15 +146,18 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout
$scope.deleteVariant = (product, variant) ->
if !$scope.variantSaved(variant)
$scope.removeVariant(product, variant)
if product.variants.length > 1
if !$scope.variantSaved(variant)
$scope.removeVariant(product, variant)
else
if confirm("Are you sure?")
$http(
method: "DELETE"
url: "/api/products/" + product.permalink_live + "/variants/" + variant.id + "/soft_delete"
).success (data) ->
$scope.removeVariant(product, variant)
else
if confirm("Are you sure?")
$http(
method: "DELETE"
url: "/api/products/" + product.permalink_live + "/variants/" + variant.id + "/soft_delete"
).success (data) ->
$scope.removeVariant(product, variant)
alert("The last variant cannot be deleted!")
$scope.removeVariant = (product, variant) ->
product.variants.splice product.variants.indexOf(variant), 1
@@ -285,6 +299,9 @@ filterSubmitProducts = (productsToFilter) ->
filteredMaster ?= { id: product.master.id }
filteredMaster.display_as = product.master.display_as
if product.hasOwnProperty("sku")
filteredProduct.sku = product.sku
hasUpdatableProperty = true
if product.hasOwnProperty("name")
filteredProduct.name = product.name
hasUpdatableProperty = true
@@ -304,9 +321,18 @@ filterSubmitProducts = (productsToFilter) ->
if product.hasOwnProperty("on_hand") and filteredVariants.length == 0 #only update if no variants present
filteredProduct.on_hand = product.on_hand
hasUpdatableProperty = true
if product.hasOwnProperty("on_demand") and filteredVariants.length == 0 #only update if no variants present
filteredProduct.on_demand = product.on_demand
hasUpdatableProperty = true
if product.hasOwnProperty("category_id")
filteredProduct.primary_taxon_id = product.category_id
hasUpdatableProperty = true
if product.hasOwnProperty("tax_category_id")
filteredProduct.tax_category_id = product.tax_category_id
hasUpdatableProperty = true
if product.hasOwnProperty("inherits_properties")
filteredProduct.inherits_properties = product.inherits_properties
hasUpdatableProperty = true
if product.hasOwnProperty("available_on")
filteredProduct.available_on = product.available_on
hasUpdatableProperty = true
@@ -329,6 +355,9 @@ filterSubmitVariant = (variant) ->
if variant.hasOwnProperty("on_hand")
filteredVariant.on_hand = variant.on_hand
hasUpdatableProperty = true
if variant.hasOwnProperty("on_demand")
filteredVariant.on_demand = variant.on_demand
hasUpdatableProperty = true
if variant.hasOwnProperty("price")
filteredVariant.price = variant.price
hasUpdatableProperty = true

View File

@@ -9,3 +9,26 @@ angular.module("ofn.admin").controller "AdminEnterpriseRelationshipsCtrl", ($sco
$scope.delete = (enterprise_relationship) ->
if confirm("Are you sure?")
$scope.EnterpriseRelationships.delete enterprise_relationship
$scope.toggleKeyword = (string, key) ->
string = '' unless string
words = string.split ' '
words = words.filter (s) ->
s
index = words.indexOf key
if index > -1
words.splice index, 1
else
words.push key
words.join ' '
$scope.allPermissionsChecked = ->
for i in EnterpriseRelationships.all_permissions
if !$scope.permissions[i]
return false
return true
$scope.checkAllPermissions = ->
newValue = !$scope.allPermissionsChecked()
EnterpriseRelationships.all_permissions.forEach (p) ->
$scope.permissions[p] = newValue

View File

@@ -17,7 +17,7 @@ angular.module("ofn.admin").controller "AdminVariantOverridesCtrl", ($scope, $ti
$scope.fetchProducts = ->
url = "/api/products/distributable?page=::page::;per_page=100"
url = "/api/products/overridable?page=::page::;per_page=100"
PagedFetcher.fetch url, (data) => $scope.addProducts data.products

View File

@@ -0,0 +1,17 @@
angular.module("admin.customers").controller "customersCtrl", ($scope, Customers, Columns, pendingChanges, shops) ->
$scope.shop = null
$scope.shops = shops
$scope.submitAll = pendingChanges.submitAll
$scope.columns = Columns.setColumns
email: { name: "Email", visible: true }
code: { name: "Code", visible: true }
tags: { name: "Tags", visible: true }
$scope.$watch "shop", ->
if $scope.shop?
Customers.loaded = false
$scope.customers = Customers.index(enterprise_id: $scope.shop.id)
$scope.loaded = ->
Customers.loaded

View File

@@ -0,0 +1 @@
angular.module("admin.customers", ['ngResource', 'ngTagsInput', 'admin.indexUtils', 'admin.dropdown'])

View File

@@ -0,0 +1,8 @@
angular.module("admin.customers").directive "tagsWithTranslation", ->
restrict: "E"
template: "<tags-input ng-model='object.tags'>"
scope:
object: "="
link: (scope, element, attrs) ->
scope.$watchCollection "object.tags", ->
scope.object.tag_list = (tag.text for tag in scope.object.tags).join(",")

View File

@@ -0,0 +1,8 @@
angular.module("admin.customers").factory 'CustomerResource', ($resource) ->
$resource('/admin/customers.json', {}, {
'index':
method: 'GET'
isArray: true
params:
enterprise_id: '@enterprise_id'
})

View File

@@ -0,0 +1,16 @@
angular.module("admin.customers").factory 'Customers', (CustomerResource) ->
new class Customers
customers: []
customers_by_id: {}
loaded: false
index: (params={}, callback=null) ->
CustomerResource.index params, (data) =>
for customer in data
@customers.push customer
@customers_by_id[customer.id] = customer
@loaded = true
(callback || angular.noop)(@customers)
@customers

View File

@@ -1,23 +0,0 @@
angular.module("ofn.admin").directive "ofnLineItemUpdAttr", [
"switchClass", "pendingChanges"
(switchClass, pendingChanges) ->
require: "ngModel"
link: (scope, element, attrs, ngModel) ->
attrName = attrs.ofnLineItemUpdAttr
element.dbValue = scope.$eval(attrs.ngModel)
scope.$watch ->
scope.$eval(attrs.ngModel)
, (value) ->
if ngModel.$dirty
if value == element.dbValue
pendingChanges.remove(scope.line_item.id, attrName)
switchClass( element, "", ["update-pending", "update-error", "update-success"], false )
else
changeObj =
lineItem: scope.line_item
element: element
attrName: attrName
url: "/api/orders/#{scope.line_item.order.number}/line_items/#{scope.line_item.id}?line_item[#{attrName}]=#{value}"
pendingChanges.add(scope.line_item.id, attrName, changeObj)
switchClass( element, "update-pending", ["update-error", "update-success"], false )
]

View File

@@ -1,11 +0,0 @@
angular.module("ofn.admin").directive "ofnToggleColumn", ->
link: (scope, element, attrs) ->
element.addClass "selected" if scope.column.visible
element.click "click", ->
scope.$apply ->
if scope.column.visible
scope.column.visible = false
element.removeClass "selected"
else
scope.column.visible = true
element.addClass "selected"

View File

@@ -1,10 +1,8 @@
angular.module("ofn.admin").directive "ofnToggleVariants", (DisplayProperties) ->
link: (scope, element, attrs) ->
if DisplayProperties.showVariants scope.product.id
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"
else
element.removeClass "icon-chevron-down"
element.addClass "icon-chevron-right"
element.on "click", ->
@@ -16,4 +14,4 @@ angular.module("ofn.admin").directive "ofnToggleVariants", (DisplayProperties) -
else
DisplayProperties.setShowVariants scope.product.id, true
element.removeClass "icon-chevron-right"
element.addClass "icon-chevron-down"
element.addClass "icon-chevron-down"

View File

@@ -0,0 +1,2 @@
angular.module("admin.dropdown").controller "DropDownCtrl", ($scope) ->
$scope.expanded = false

View File

@@ -0,0 +1,5 @@
angular.module("admin.dropdown").directive "ofnCloseOnClick", ($document) ->
link: (scope, element, attrs) ->
element.click (event) ->
event.stopPropagation()
scope.$emit "offClick"

View File

@@ -1,6 +1,4 @@
dropDownModule = angular.module("ofn.dropdown", [])
dropDownModule.directive "ofnDropDown", ($document) ->
angular.module("admin.dropdown").directive "ofnDropDown", ($document) ->
link: (scope, element, attrs) ->
outsideClickListener = (event) ->
unless $(event.target).is("div.ofn_drop_down##{attrs.id} div.menu") ||
@@ -20,12 +18,3 @@ dropDownModule.directive "ofnDropDown", ($document) ->
scope.$apply ->
scope.expanded = true
element.addClass "expanded"
dropDownModule.directive "ofnCloseOnClick", ($document) ->
link: (scope, element, attrs) ->
element.click (event) ->
event.stopPropagation()
scope.$emit "offClick"
dropDownModule.controller "DropDownCtrl", ($scope) ->
$scope.expanded = false

View File

@@ -0,0 +1 @@
angular.module("admin.dropdown", [])

View File

@@ -0,0 +1,3 @@
angular.module("admin.enterprise_groups")
.controller "enterpriseGroupCtrl", ($scope, SideMenu) ->
$scope.menu = SideMenu

View File

@@ -0,0 +1,15 @@
angular.module("admin.enterprise_groups")
.controller "sideMenuCtrl", ($scope, SideMenu) ->
$scope.menu = SideMenu
$scope.select = SideMenu.select
$scope.menu.setItems [
{ name: 'Primary Details', icon_class: "icon-user" }
{ name: 'Users', icon_class: "icon-user" }
{ name: 'About', icon_class: "icon-pencil" }
{ name: 'Images', icon_class: "icon-picture" }
{ name: 'Contact', icon_class: "icon-phone" }
{ name: 'Web', icon_class: "icon-globe" }
]
$scope.select(0)

View File

@@ -0,0 +1 @@
angular.module("admin.enterprise_groups", ["admin.side_menu", "admin.users", "textAngular"])

View File

@@ -1,68 +1,34 @@
angular.module("admin.enterprises")
.controller "enterpriseCtrl", ($scope, NavigationCheck, Enterprise, PaymentMethods, ShippingMethods, SideMenu) ->
$scope.Enterprise = Enterprise.enterprise
$scope.PaymentMethods = PaymentMethods.paymentMethods
$scope.ShippingMethods = ShippingMethods.shippingMethods
.controller "enterpriseCtrl", ($scope, NavigationCheck, enterprise, EnterprisePaymentMethods, EnterpriseShippingMethods, SideMenu) ->
$scope.Enterprise = enterprise
$scope.PaymentMethods = EnterprisePaymentMethods.paymentMethods
$scope.ShippingMethods = EnterpriseShippingMethods.shippingMethods
$scope.navClear = NavigationCheck.clear
# htmlVariable is used by textAngular wysiwyg for the long descrtiption.
$scope.pristineEmail = $scope.Enterprise.email
$scope.menu = SideMenu
$scope.newManager = { id: '', email: 'Add a manager...' }
# Provide a callback for generating warning messages displayed before leaving the page. This is passed in
# from a directive "nav-check" in the page - if we pass it here it will be called in the test suite,
# and on all new uses of this contoller, and we might not want that .
$scope.enterpriseNavCallback = ->
if $scope.enterprise.$dirty
enterpriseNavCallback = ->
if $scope.Enterprise.$dirty
"Your changes to the enterprise are not saved yet."
for payment_method in $scope.PaymentMethods
payment_method.selected = payment_method.id in $scope.Enterprise.payment_method_ids
# Register the NavigationCheck callback
NavigationCheck.register(enterpriseNavCallback)
$scope.paymentMethodsColor = ->
if $scope.PaymentMethods.length > 0
if $scope.selectedPaymentMethodsCount() > 0 then "blue" else "red"
else
"red"
$scope.removeManager = (manager) ->
if manager.id?
for i, user of $scope.Enterprise.users when user.id == manager.id
$scope.Enterprise.users.splice i, 1
$scope.selectedPaymentMethodsCount = ->
$scope.PaymentMethods.reduce (count, payment_method) ->
count++ if payment_method.selected
count
, 0
for shipping_method in $scope.ShippingMethods
shipping_method.selected = shipping_method.id in $scope.Enterprise.shipping_method_ids
$scope.shippingMethodsColor = ->
if $scope.ShippingMethods.length > 0
if $scope.selectedShippingMethodsCount() > 0 then "blue" else "red"
else
"red"
$scope.selectedShippingMethodsCount = ->
$scope.ShippingMethods.reduce (count, shipping_method) ->
count++ if shipping_method.selected
count
, 0
$scope.$watch "Enterprise.is_primary_producer", (newValue, oldValue) ->
if !newValue && $scope.Enterprise.sells == "none"
$scope.menu.hide_item_by_name('Enterprise Fees')
else
$scope.menu.show_item_by_name('Enterprise Fees')
$scope.$watch "Enterprise.sells", (newValue, oldValue) ->
if newValue == "none"
$scope.menu.hide_item_by_name('Shipping Methods')
$scope.menu.hide_item_by_name('Payment Methods')
$scope.menu.hide_item_by_name('Shop Preferences')
if $scope.Enterprise.is_primary_producer
$scope.menu.show_item_by_name('Enterprise Fees')
$scope.addManager = (manager) ->
if manager.id? and manager.email?
manager =
id: manager.id
email: manager.email
if (user for user in $scope.Enterprise.users when user.id == manager.id).length == 0
$scope.Enterprise.users.push manager
else
$scope.menu.hide_item_by_name('Enterprise Fees')
else
$scope.menu.show_item_by_name('Shipping Methods')
$scope.menu.show_item_by_name('Payment Methods')
$scope.menu.show_item_by_name('Shop Preferences')
$scope.menu.show_item_by_name('Enterprise Fees')
alert "#{manager.email} is already a manager!"

View File

@@ -0,0 +1,49 @@
angular.module("admin.enterprises").controller "EnterpriseIndexRowCtrl", ($scope) ->
$scope.status = ->
if $scope.enterprise.issues.length > 0
"issue"
else if $scope.enterprise.warnings.length > 0
"warning"
else
"ok"
$scope.producerText = ->
switch $scope.enterprise.is_primary_producer
when true
"Producer"
else
"Non-Producer"
$scope.packageText = ->
switch $scope.enterprise.is_primary_producer
when true
switch $scope.enterprise.sells
when "none"
"Profile"
when "own"
"Shop"
when "any"
"Hub"
else
"Choose"
else
switch $scope.enterprise.sells
when "none"
"Profile"
when "any"
"Hub"
else
"Choose"
$scope.updateRowText = ->
$scope.producer = $scope.producerText()
$scope.package = $scope.packageText()
$scope.producerError = ($scope.producer == "Choose")
$scope.packageError = ($scope.package == "Choose")
$scope.updateRowText()
$scope.$on "enterprise:updated", ->
$scope.updateRowText()

View File

@@ -0,0 +1,13 @@
angular.module("admin.enterprises").controller 'enterprisesCtrl', ($scope, Enterprises, Columns) ->
Enterprises.loaded = false
$scope.allEnterprises = Enterprises.index()
$scope.loaded = ->
Enterprises.loaded
$scope.columns = Columns.setColumns
name: { name: "Name", visible: true }
producer: { name: "Producer", visible: true }
package: { name: "Package", visible: true }
status: { name: "Status", visible: true }
manage: { name: "Manage", visible: true }

View File

@@ -0,0 +1,2 @@
angular.module("admin.enterprises").controller 'indexPackagePanelCtrl', ($scope, $controller) ->
angular.extend this, $controller('indexPanelCtrl', {$scope: $scope})

View File

@@ -0,0 +1,23 @@
angular.module("admin.enterprises").controller 'indexPanelCtrl', ($scope, Enterprises) ->
$scope.enterprise = $scope.object
$scope.saving = false
$scope.saved = ->
Enterprises.saved($scope.enterprise)
$scope.save = ->
unless $scope.saved()
$scope.saving = true
Enterprises.save($scope.enterprise).then (data) ->
$scope.$emit("enterprise:updated")
$scope.saving = false
, (response) ->
$scope.saving = false
if response.status == 422 && response.data.errors?
message = 'Please resolve the following errors:\n'
for attr, msg of response.data.errors
message += "#{attr} #{msg}\n"
alert(message)
$scope.resetAttribute = (attribute) ->
Enterprises.resetAttribute($scope.enterprise, attribute)

View File

@@ -0,0 +1,14 @@
angular.module("admin.enterprises").controller 'indexProducerPanelCtrl', ($scope, $controller) ->
angular.extend this, $controller('indexPanelCtrl', {$scope: $scope})
$scope.changeToProducer = ->
$scope.resetAttribute('sells')
$scope.resetAttribute('producer_profile_only')
$scope.enterprise.is_primary_producer = true
$scope.changeToNonProducer = ->
if $scope.enterprise.sells == 'own'
$scope.enterprise.sells = 'any'
if $scope.enterprise.producer_profile_only = true
$scope.enterprise.producer_profile_only = false
$scope.enterprise.is_primary_producer = false

View File

@@ -0,0 +1,3 @@
angular.module("admin.enterprises").controller 'indexStatusPanelCtrl', ($scope, $filter) ->
$scope.issues = $scope.object.issues
$scope.warnings = $scope.object.warnings

View File

@@ -0,0 +1,23 @@
angular.module("admin.enterprises")
.controller "permalinkCtrl", ($scope, PermalinkChecker) ->
# locals
initialPermalink = $scope.Enterprise.permalink
pendingRequest = null
# variables on $scope
$scope.availablility = ""
$scope.checking = false
$scope.$watch "Enterprise.permalink", (newValue, oldValue) ->
$scope.checking = true
pendingRequest = PermalinkChecker.check(newValue)
pendingRequest.then (data) ->
if data.permalink == initialPermalink
$scope.availability = ""
else
$scope.availability = data.available
$scope.Enterprise.permalink = data.permalink
$scope.checking = false
, (data) ->
# Do nothing (this is hopefully an aborted request)

View File

@@ -1,21 +1,45 @@
angular.module("admin.enterprises")
.controller "sideMenuCtrl", ($scope, Enterprise, SideMenu) ->
$scope.Enterprise = Enterprise.enterprise
.controller "sideMenuCtrl", ($scope, $parse, enterprise, SideMenu, enterprisePermissions) ->
$scope.Enterprise = enterprise
$scope.menu = SideMenu
$scope.select = SideMenu.select
$scope.menu.setItems [
{ name: 'Primary Details', icon_class: "icon-user" }
{ name: 'Primary Details', icon_class: "icon-home" }
{ name: 'Users', icon_class: "icon-user" }
{ name: 'Address', icon_class: "icon-map-marker" }
{ name: 'Contact', icon_class: "icon-phone" }
{ name: 'Social', icon_class: "icon-twitter" }
{ name: 'About', icon_class: "icon-pencil" }
{ name: 'Business Details', icon_class: "icon-briefcase" }
{ name: 'Images', icon_class: "icon-picture" }
{ name: "Shipping Methods", icon_class: "icon-truck" }
{ name: "Payment Methods", icon_class: "icon-money" }
{ name: "Enterprise Fees", icon_class: "icon-tasks" }
{ name: "Shop Preferences", icon_class: "icon-shopping-cart" }
{ name: "Properties", icon_class: "icon-tags", show: "showProperties()" }
{ name: "Shipping Methods", icon_class: "icon-truck", show: "showShippingMethods()" }
{ name: "Payment Methods", icon_class: "icon-money", show: "showPaymentMethods()" }
{ name: "Enterprise Fees", icon_class: "icon-tasks", show: "showEnterpriseFees()" }
{ name: "Shop Preferences", icon_class: "icon-shopping-cart", show: "showShopPreferences()" }
]
$scope.select(0)
$scope.showItem = (item) ->
if item.show?
$parse(item.show)($scope)
else
true
$scope.showProperties = ->
!!$scope.Enterprise.is_primary_producer
$scope.showShippingMethods = ->
enterprisePermissions.can_manage_shipping_methods && $scope.Enterprise.sells != "none"
$scope.showPaymentMethods = ->
enterprisePermissions.can_manage_payment_methods && $scope.Enterprise.sells != "none"
$scope.showEnterpriseFees = ->
enterprisePermissions.can_manage_enterprise_fees && ($scope.Enterprise.sells != "none" || $scope.Enterprise.is_primary_producer)
$scope.showShopPreferences = ->
$scope.Enterprise.sells != "none"

View File

@@ -1 +1 @@
angular.module("admin.enterprises", [
angular.module("admin.enterprises", [

View File

@@ -0,0 +1,20 @@
angular.module("admin.enterprises")
.factory "EnterprisePaymentMethods", (enterprise, PaymentMethods) ->
new class EnterprisePaymentMethods
paymentMethods: PaymentMethods.paymentMethods
constructor: ->
for payment_method in @paymentMethods
payment_method.selected = payment_method.id in enterprise.payment_method_ids
displayColor: ->
if @paymentMethods.length > 0 && @selectedCount() > 0
"blue"
else
"red"
selectedCount: ->
@paymentMethods.reduce (count, payment_method) ->
count++ if payment_method.selected
count
, 0

View File

@@ -0,0 +1,8 @@
angular.module("admin.enterprises").factory 'EnterpriseResource', ($resource) ->
$resource('/admin/enterprises/:id.json', {}, {
'index':
method: 'GET'
isArray: true
'update':
method: 'PUT'
})

View File

@@ -0,0 +1,20 @@
angular.module("admin.enterprises")
.factory "EnterpriseShippingMethods", (enterprise, ShippingMethods) ->
new class EnterpriseShippingMethods
shippingMethods: ShippingMethods.shippingMethods
constructor: ->
for shipping_method in @shippingMethods
shipping_method.selected = shipping_method.id in enterprise.shipping_method_ids
displayColor: ->
if @shippingMethods.length > 0 && @selectedCount() > 0
"blue"
else
"red"
selectedCount: ->
@shippingMethods.reduce (count, shipping_method) ->
count++ if shipping_method.selected
count
, 0

View File

@@ -0,0 +1,39 @@
angular.module("admin.enterprises").factory 'Enterprises', ($q, EnterpriseResource) ->
new class Enterprises
enterprises: []
enterprises_by_id: {}
pristine_by_id: {}
loaded: false
index: (params={}, callback=null) ->
EnterpriseResource.index params, (data) =>
for enterprise in data
@enterprises.push enterprise
@pristine_by_id[enterprise.id] = angular.copy(enterprise)
@loaded = true
(callback || angular.noop)(@enterprises)
@enterprises
save: (enterprise) ->
deferred = $q.defer()
enterprise.$update({id: enterprise.permalink})
.then( (data) =>
@pristine_by_id[enterprise.id] = angular.copy(enterprise)
deferred.resolve(data)
).catch (response) ->
deferred.reject(response)
deferred.promise
saved: (enterprise) ->
@diff(enterprise).length == 0
diff: (enterprise) ->
changed = []
for attr, value of enterprise when not angular.equals(value, @pristine_by_id[enterprise.id][attr])
changed.push attr unless attr is "$$hashKey"
changed
resetAttribute: (enterprise, attribute) ->
enterprise[attribute] = @pristine_by_id[enterprise.id][attribute]

View File

@@ -0,0 +1,36 @@
angular.module("admin.enterprises").factory 'PermalinkChecker', ($q, $http) ->
new class PermalinkChecker
deferredRequest: null
deferredAbort: null
check: (permalink) =>
@abort(@deferredAbort) if @deferredRequest && @deferredRequest.promise
@deferredRequest = deferredRequest = $q.defer()
@deferredAbort = deferredAbort = $q.defer()
request = $http(
method: "GET"
url: "/enterprises/check_permalink?permalink=#{permalink}"
headers:
Accept: 'application/javascript'
timeout: deferredAbort.promise
)
.success( (data) =>
deferredRequest.resolve
permalink: data
available: "Available"
).error (data,status) =>
if status == 409
deferredRequest.resolve
permalink: data
available: "Unavailable"
else
# Something went wrong or request was aborted
deferredRequest.reject()
deferredRequest.promise.finally ->
request = deferredRequest.promise = null;
deferredRequest.promise
abort: (deferredAbort) ->
deferredAbort.resolve()

View File

@@ -0,0 +1,7 @@
angular.module("ofn.admin").filter "keywords", ($filter) ->
return (array, query) ->
return array unless query
keywords = query.split ' '
keywords.forEach (key) ->
array = $filter('filter')(array, key)
array

View File

@@ -0,0 +1,4 @@
angular.module("admin.indexUtils").controller "ColumnsCtrl", ($scope, Columns) ->
$scope.columns = Columns.columns
$scope.predicate = ""
$scope.reverse = false

View File

@@ -0,0 +1,36 @@
angular.module("admin.indexUtils").directive "objForUpdate", (switchClass, pendingChanges) ->
scope:
object: "&objForUpdate"
type: "@objForUpdate"
attr: "@attrForUpdate"
link: (scope, element, attrs) ->
scope.savedValue = scope.object()[scope.attr]
scope.$watch "object().#{scope.attr}", (value) ->
if value == scope.savedValue
pendingChanges.remove(scope.object().id, scope.attr)
scope.clear()
else
change =
object: scope.object()
type: scope.type
attr: scope.attr
value: value
scope: scope
scope.pending()
pendingChanges.add(scope.object().id, scope.attr, change)
scope.reset = (value) ->
scope.savedValue = value
scope.success = ->
switchClass( element, "update-success", ["update-pending", "update-error"], 3000 )
scope.pending = ->
switchClass( element, "update-pending", ["update-error", "update-success"], false )
scope.error = ->
switchClass( element, "update-error", ["update-pending", "update-success"], false )
scope.clear = ->
switchClass( element, "", ["update-pending", "update-error", "update-success"], false )

View File

@@ -0,0 +1,37 @@
angular.module("admin.indexUtils").directive "panelRow", (Panels, Columns) ->
restrict: "C"
templateUrl: "admin/panel.html"
scope:
object: "="
panels: "="
link: (scope, element, attrs) ->
scope.template = ""
selected = null
scope.columnCount = Columns.visibleCount
scope.$on "columnCount:changed", (event, count) ->
scope.columnCount = count
setTemplate = ->
if selected?
scope.template = 'admin/panels/' + scope.panels[selected] + '.html'
else
scope.template = ""
scope.getSelected = ->
selected
scope.setSelected = (name) ->
scope.$apply ->
selected = name
setTemplate()
scope.open = (name) ->
element.show 0, ->
scope.setSelected name
scope.close = ->
element.hide 0, ->
scope.setSelected null
Panels.register(scope.object.id, scope)

View File

@@ -0,0 +1,12 @@
angular.module("admin.indexUtils").directive "panelToggle", ->
restrict: "C"
transclude: true
template: '<div ng-transclude></div><i class=\'icon-chevron\'></i>'
require: "^panelToggleRow"
scope:
name: "@"
link: (scope, element, attrs, ctrl) ->
scope.selected = ctrl.register(scope.name, element)
element.on "click", ->
scope.selected = ctrl.select(scope.name)

View File

@@ -0,0 +1,29 @@
angular.module("admin.indexUtils").directive "panelToggleRow", (Panels) ->
restrict: "C"
scope:
object: "="
selected: "@?"
controller: ($scope) ->
panelToggles = {}
this.register = (name, element) ->
panelToggles[name] = element
panelToggles[name].addClass("selected") if $scope.selected == name
$scope.selected == name
this.select = (name) ->
panelToggle.removeClass("selected") for panelName, panelToggle of panelToggles
switch $scope.selected = Panels.toggle($scope.object.id, name)
when null
panelToggles[name].parent(".panel-toggle-row").removeClass("expanded")
else
panelToggles[$scope.selected].addClass("selected")
panelToggles[$scope.selected].parent(".panel-toggle-row").addClass("expanded")
$scope.selected == name
this
#
# link: (scope, element, attrs) ->
# Panels.registerInitialSelection(scope.object.id, scope.selected)

View File

@@ -0,0 +1,8 @@
angular.module("admin.indexUtils").directive "ofnToggleColumn", (Columns) ->
link: (scope, element, attrs) ->
element.addClass "selected" if scope.column.visible
element.click "click", ->
scope.$apply ->
Columns.toggleColumn(scope.column)
element.toggleClass "selected"

View File

@@ -0,0 +1 @@
angular.module("admin.indexUtils", ['ngResource', 'templates']).config ($httpProvider) ->

View File

@@ -0,0 +1,18 @@
angular.module("admin.indexUtils").factory 'Columns', ($rootScope) ->
new class Columns
columns: {}
visibleCount: 0
setColumns: (columns) =>
@columns = {}
@columns[name] = column for name, column of columns
@calculateVisibleCount()
@columns
toggleColumn: (column) =>
column.visible = !column.visible
@calculateVisibleCount()
calculateVisibleCount: =>
@visibleCount = (column for name, column of @columns when column.visible).length
$rootScope.$broadcast "columnCount:changed", @visibleCount

View File

@@ -0,0 +1,19 @@
angular.module("admin.indexUtils").factory 'Panels', ->
new class Panels
panels: {}
register: (id, scope) ->
if id? && scope?
@panels[id] = scope
toggle: (id, name) ->
scope = @panels[id]
selected = scope.getSelected()
switch selected
when name
scope.close()
when null
scope.open(name)
else
scope.setSelected(name)
scope.getSelected()

View File

@@ -0,0 +1,33 @@
angular.module("admin.indexUtils").factory "pendingChanges", (resources) ->
new class pendingChanges
pendingChanges: {}
add: (id, attr, change) =>
@pendingChanges["#{id}"] = {} unless @pendingChanges.hasOwnProperty("#{id}")
@pendingChanges["#{id}"]["#{attr}"] = change
removeAll: =>
@pendingChanges = {}
remove: (id, attr) =>
if @pendingChanges.hasOwnProperty("#{id}")
delete @pendingChanges["#{id}"]["#{attr}"]
delete @pendingChanges["#{id}"] if @changeCount( @pendingChanges["#{id}"] ) < 1
submitAll: =>
all = []
for id, objectChanges of @pendingChanges
for attrName, change of objectChanges
all.push @submit(change)
all
submit: (change) ->
resources.update(change).$promise.then (data) =>
@remove change.object.id, change.attr
change.scope.reset( data["#{change.attr}"] )
change.scope.success()
, (error) ->
change.scope.error()
changeCount: (objectChanges) ->
Object.keys(objectChanges).length

View File

@@ -0,0 +1,30 @@
angular.module("admin.indexUtils").factory "resources", ($resource) ->
LineItem = $resource '/api/orders/:order_number/line_items/:line_item_id.json',
{ order_number: '@order_number', line_item_id: '@line_item_id'},
'update': { method: 'PUT' }
Customer = $resource '/admin/customers/:customer_id.json',
{ customer_id: '@customer_id'},
'update': { method: 'PUT' }
return {
update: (change) ->
params = {}
data = {}
resource = null
switch change.type
when "line_item"
resource = LineItem
params.order_number = change.object.order.number
params.line_item_id = change.object.id
data.line_item = {}
data.line_item[change.attr] = change.value
when "customer"
resource = Customer
params.customer_id = change.object.id
data.customer = {}
data.customer[change.attr] = change.value
else ""
resource.update(params, data)
}

View File

@@ -0,0 +1,10 @@
angular.module("admin.indexUtils").factory "switchClass", ($timeout) ->
return (element,classToAdd,removeClasses,timeout) ->
$timeout.cancel element.timeout if element.timeout
element.removeClass className for className in removeClasses
element.addClass classToAdd
intRegex = /^\d+$/
if timeout && intRegex.test(timeout)
element.timeout = $timeout(->
element.removeClass classToAdd
, timeout, true)

View File

@@ -1,10 +1,10 @@
angular.module('admin.order_cycles', ['ngResource'])
.controller('AdminCreateOrderCycleCtrl', ['$scope', 'OrderCycle', 'Enterprise', 'EnterpriseFee', ($scope, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.enterprises = Enterprise.index()
.controller('AdminCreateOrderCycleCtrl', ['$scope', '$filter', 'OrderCycle', 'Enterprise', 'EnterpriseFee', 'ocInstance', ($scope, $filter, OrderCycle, Enterprise, EnterpriseFee, ocInstance) ->
$scope.enterprises = Enterprise.index(coordinator_id: ocInstance.coordinator_id)
$scope.supplied_products = Enterprise.supplied_products
$scope.enterprise_fees = EnterpriseFee.index()
$scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id)
$scope.order_cycle = OrderCycle.order_cycle
$scope.order_cycle = OrderCycle.new({ coordinator_id: ocInstance.coordinator_id})
$scope.loaded = ->
Enterprise.loaded && EnterpriseFee.loaded
@@ -27,14 +27,14 @@ angular.module('admin.order_cycles', ['ngResource'])
$scope.variantSuppliedToOrderCycle = (variant) ->
OrderCycle.variantSuppliedToOrderCycle(variant)
$scope.incomingExchangesVariants = ->
OrderCycle.incomingExchangesVariants()
$scope.incomingExchangeVariantsFor = (enterprise_id) ->
$filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id])
$scope.exchangeDirection = (exchange) ->
OrderCycle.exchangeDirection(exchange)
$scope.participatingEnterprises = ->
$scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds()
$scope.enterprisesWithFees = ->
$scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0
$scope.toggleProducts = ($event, exchange) ->
$event.preventDefault()
@@ -74,16 +74,17 @@ angular.module('admin.order_cycles', ['ngResource'])
$scope.removeDistributionOfVariant = (variant_id) ->
OrderCycle.removeDistributionOfVariant(variant_id)
$scope.submit = ->
$scope.submit = (event) ->
event.preventDefault()
OrderCycle.create()
])
.controller('AdminEditOrderCycleCtrl', ['$scope', '$location', 'OrderCycle', 'Enterprise', 'EnterpriseFee', ($scope, $location, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.enterprises = Enterprise.index()
$scope.supplied_products = Enterprise.supplied_products
$scope.enterprise_fees = EnterpriseFee.index()
.controller('AdminEditOrderCycleCtrl', ['$scope', '$filter', '$location', 'OrderCycle', 'Enterprise', 'EnterpriseFee', ($scope, $filter, $location, OrderCycle, Enterprise, EnterpriseFee) ->
order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1]
$scope.enterprises = Enterprise.index(order_cycle_id: order_cycle_id)
$scope.supplied_products = Enterprise.supplied_products
$scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: order_cycle_id)
$scope.order_cycle = OrderCycle.load(order_cycle_id)
$scope.loaded = ->
@@ -107,14 +108,14 @@ angular.module('admin.order_cycles', ['ngResource'])
$scope.variantSuppliedToOrderCycle = (variant) ->
OrderCycle.variantSuppliedToOrderCycle(variant)
$scope.incomingExchangesVariants = ->
OrderCycle.incomingExchangesVariants()
$scope.incomingExchangeVariantsFor = (enterprise_id) ->
$filter('filterExchangeVariants')(OrderCycle.incomingExchangesVariants(), $scope.order_cycle.visible_variants_for_outgoing_exchanges[enterprise_id])
$scope.exchangeDirection = (exchange) ->
OrderCycle.exchangeDirection(exchange)
$scope.participatingEnterprises = ->
$scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds()
$scope.enterprisesWithFees = ->
$scope.enterprises[id] for id in OrderCycle.participatingEnterpriseIds() when $scope.enterpriseFeesForEnterprise(id).length > 0
$scope.toggleProducts = ($event, exchange) ->
$event.preventDefault()
@@ -154,7 +155,8 @@ angular.module('admin.order_cycles', ['ngResource'])
$scope.removeDistributionOfVariant = (variant_id) ->
OrderCycle.removeDistributionOfVariant(variant_id)
$scope.submit = ->
$scope.submit = (event) ->
event.preventDefault()
OrderCycle.update()
])

View File

@@ -1,8 +1,9 @@
angular.module('admin.order_cycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, OrderCycle, Enterprise, EnterpriseFee) ->
$scope.enterprises = Enterprise.index (enterprises) =>
$scope.init(enterprises)
$scope.enterprise_fees = EnterpriseFee.index()
$scope.order_cycle = OrderCycle.order_cycle
angular.module('admin.order_cycles').controller "AdminSimpleCreateOrderCycleCtrl", ($scope, OrderCycle, Enterprise, EnterpriseFee, ocInstance) ->
$scope.order_cycle = OrderCycle.new {coordinator_id: ocInstance.coordinator_id}, =>
# TODO: make this a get method, which only fetches one enterprise
$scope.enterprises = Enterprise.index {coordinator_id: ocInstance.coordinator_id}, (enterprises) =>
$scope.init(enterprises)
$scope.enterprise_fees = EnterpriseFee.index(coordinator_id: ocInstance.coordinator_id)
$scope.init = (enterprises) ->
enterprise = enterprises[Object.keys(enterprises)[0]]
@@ -38,6 +39,7 @@ angular.module('admin.order_cycles').controller "AdminSimpleCreateOrderCycleCtrl
$scope.enterpriseFeesForEnterprise = (enterprise_id) ->
EnterpriseFee.forEnterprise(parseInt(enterprise_id))
$scope.submit = ->
$scope.submit = (event) ->
event.preventDefault()
OrderCycle.mirrorIncomingToOutgoingProducts()
OrderCycle.create()

View File

@@ -2,8 +2,8 @@ angular.module('admin.order_cycles').controller "AdminSimpleEditOrderCycleCtrl",
$scope.orderCycleId = ->
$location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1]
$scope.enterprises = Enterprise.index()
$scope.enterprise_fees = EnterpriseFee.index()
$scope.enterprises = Enterprise.index(order_cycle_id: $scope.orderCycleId())
$scope.enterprise_fees = EnterpriseFee.index(order_cycle_id: $scope.orderCycleId())
$scope.order_cycle = OrderCycle.load $scope.orderCycleId(), (order_cycle) =>
$scope.init()
@@ -32,6 +32,7 @@ angular.module('admin.order_cycles').controller "AdminSimpleEditOrderCycleCtrl",
$event.preventDefault()
OrderCycle.removeCoordinatorFee(index)
$scope.submit = ->
$scope.submit = (event) ->
event.preventDefault()
OrderCycle.mirrorIncomingToOutgoingProducts()
OrderCycle.update()

View File

@@ -0,0 +1,6 @@
angular.module("admin.order_cycles").filter "filterExchangeVariants", ->
return (variants, rules) ->
if variants? && rules?
return (variant for variant in variants when variant in rules)
else
return []

View File

@@ -0,0 +1,4 @@
angular.module("admin.order_cycles").filter "visibleProductVariants", ->
return (product, exchange, rules) ->
variants = product.variants.concat( [{ "id": product.master_id}] )
return (variant for variant in variants when variant.id in rules[exchange.enterprise_id])

View File

@@ -0,0 +1,3 @@
angular.module("admin.order_cycles").filter "visibleProducts", ($filter) ->
return (products, exchange, rules) ->
return (product for product in products when $filter('visibleProductVariants')(product, exchange, rules).length > 0)

View File

@@ -1,24 +1,28 @@
angular.module('admin.order_cycles').factory('Enterprise', ($resource) ->
Enterprise = $resource('/admin/enterprises/for_order_cycle/:enterprise_id.json', {}, {'index': {method: 'GET', isArray: true}})
Enterprise = $resource('/admin/enterprises/for_order_cycle/:enterprise_id.json', {}, {
'index':
method: 'GET'
isArray: true
params:
order_cycle_id: '@order_cycle_id'
coordinator_id: '@coordinator_id'
})
{
Enterprise: Enterprise
enterprises: {}
supplied_products: []
loaded: false
index: (callback=null) ->
service = this
Enterprise.index (data) ->
index: (params={}, callback=null) ->
Enterprise.index params, (data) =>
for enterprise in data
service.enterprises[enterprise.id] = enterprise
@enterprises[enterprise.id] = enterprise
for product in enterprise.supplied_products
service.supplied_products.push(product)
@supplied_products.push(product)
service.loaded = true
(callback || angular.noop)(service.enterprises)
@loaded = true
(callback || angular.noop)(@enterprises)
this.enterprises
@@ -40,4 +44,4 @@ angular.module('admin.order_cycles').factory('Enterprise', ($resource) ->
numVariants += if product.variants.length == 0 then 1 else product.variants.length
numVariants
})
})

View File

@@ -1,18 +1,23 @@
angular.module('admin.order_cycles').factory('EnterpriseFee', ($resource) ->
EnterpriseFee = $resource('/admin/enterprise_fees/:enterprise_fee_id.json', {}, {'index': {method: 'GET', isArray: true}})
EnterpriseFee = $resource('/admin/enterprise_fees/for_order_cycle/:enterprise_fee_id.json', {}, {
'index':
method: 'GET'
isArray: true
params:
order_cycle_id: '@order_cycle_id'
coordinator_id: '@coordinator_id'
})
{
EnterpriseFee: EnterpriseFee
enterprise_fees: {}
loaded: false
index: ->
service = this
EnterpriseFee.index (data) ->
service.enterprise_fees = data
service.loaded = true
index: (params={}) ->
EnterpriseFee.index params, (data) =>
@enterprise_fees = data
@loaded = true
forEnterprise: (enterprise_id) ->
enterprise_fee for enterprise_fee in this.enterprise_fees when enterprise_fee.enterprise_id == enterprise_id
enterprise_fee for enterprise_fee in @enterprise_fees when enterprise_fee.enterprise_id == enterprise_id
})

View File

@@ -1,14 +1,12 @@
angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window) ->
OrderCycle = $resource '/admin/order_cycles/:order_cycle_id.json', {}, {
OrderCycle = $resource '/admin/order_cycles/:action_name/:order_cycle_id.json', {}, {
'index': { method: 'GET', isArray: true}
'new' : { method: 'GET', params: { action_name: "new" } }
'create': { method: 'POST'}
'update': { method: 'PUT'}}
{
order_cycle:
incoming_exchanges: []
outgoing_exchanges: []
coordinator_fees: []
order_cycle: {}
loaded: false
@@ -24,7 +22,9 @@ angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window)
exchange.showProducts = !exchange.showProducts
setExchangeVariants: (exchange, variants, selected) ->
exchange.variants[variant] = selected for variant in variants
direction = if exchange.incoming then "incoming" else "outgoing"
editable = @order_cycle["editable_variants_for_#{direction}_exchanges"][exchange.enterprise_id] || []
exchange.variants[variant] = selected for variant in variants when variant in editable
addSupplier: (new_supplier_id) ->
this.order_cycle.incoming_exchanges.push({enterprise_id: new_supplier_id, incoming: true, active: true, variants: {}, enterprise_fees: []})
@@ -84,23 +84,38 @@ angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window)
for exchange in this.order_cycle.outgoing_exchanges
exchange.variants[variant_id] = false
new: (params, callback=null) ->
OrderCycle.new params, (oc) =>
delete oc.$promise
delete oc.$resolved
angular.extend(@order_cycle, oc)
@order_cycle.incoming_exchanges = []
@order_cycle.outgoing_exchanges = []
delete(@order_cycle.exchanges)
@loaded = true
(callback || angular.noop)(@order_cycle)
@order_cycle
load: (order_cycle_id, callback=null) ->
service = this
OrderCycle.get {order_cycle_id: order_cycle_id}, (oc) ->
angular.extend(service.order_cycle, oc)
service.order_cycle.incoming_exchanges = []
service.order_cycle.outgoing_exchanges = []
for exchange in service.order_cycle.exchanges
if exchange.incoming
angular.extend(exchange, {enterprise_id: exchange.sender_id, active: true})
delete(exchange.receiver_id)
service.order_cycle.incoming_exchanges.push(exchange)
else
angular.extend(exchange, {enterprise_id: exchange.receiver_id, active: true})
delete(exchange.sender_id)
service.order_cycle.outgoing_exchanges.push(exchange)
delete oc.$promise
delete oc.$resolved
angular.extend(service.order_cycle, oc)
service.order_cycle.incoming_exchanges = []
service.order_cycle.outgoing_exchanges = []
for exchange in service.order_cycle.exchanges
if exchange.incoming
angular.extend(exchange, {enterprise_id: exchange.sender_id, active: true})
delete(exchange.receiver_id)
service.order_cycle.incoming_exchanges.push(exchange)
else
angular.extend(exchange, {enterprise_id: exchange.receiver_id, active: true})
delete(exchange.sender_id)
service.order_cycle.outgoing_exchanges.push(exchange)
delete(service.order_cycle.exchanges)
service.loaded = true
@@ -126,6 +141,7 @@ angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window)
dataForSubmit: ->
data = this.deepCopy()
data = this.stripNonSubmittableAttributes(data)
data = this.removeInactiveExchanges(data)
data = this.translateCoordinatorFees(data)
data = this.translateExchangeFees(data)
@@ -146,6 +162,14 @@ angular.module('admin.order_cycles').factory('OrderCycle', ($resource, $window)
data
stripNonSubmittableAttributes: (order_cycle) ->
delete order_cycle.id
delete order_cycle.viewing_as_coordinator
delete order_cycle.editable_variants_for_incoming_exchanges
delete order_cycle.editable_variants_for_outgoing_exchanges
delete order_cycle.visible_variants_for_outgoing_exchanges
order_cycle
removeInactiveExchanges: (order_cycle) ->
order_cycle.incoming_exchanges =
(exchange for exchange in order_cycle.incoming_exchanges when exchange.active)

View File

@@ -2,7 +2,7 @@ angular.module("admin.payment_methods")
.factory "PaymentMethods", (paymentMethods) ->
new class PaymentMethods
paymentMethods: paymentMethods
findByID: (id) ->
for paymentMethod in @paymentMethods
return paymentMethod if paymentMethod.id is id

View File

@@ -5,6 +5,13 @@ angular.module("admin.products")
$scope.placeholder_text = ""
$scope.$watchCollection '[product.variant_unit_with_scale, product.master.unit_value_with_description]', ->
$scope.processVariantUnitWithScale()
$scope.processUnitValueWithDescription()
$scope.placeholder_text = new OptionValueNamer($scope.product.master).name()
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
$scope.processVariantUnitWithScale = ->
if $scope.product.variant_unit_with_scale
match = $scope.product.variant_unit_with_scale.match(/^([^_]+)_([\d\.]+)$/)
if match
@@ -16,18 +23,15 @@ angular.module("admin.products")
else
$scope.product.variant_unit = $scope.product.variant_unit_scale = null
$scope.processUnitValueWithDescription = ->
if $scope.product.master.hasOwnProperty("unit_value_with_description")
match = $scope.product.master.unit_value_with_description.match(/^([\d\.]+(?= |$)|)( |)(.*)$/)
match = $scope.product.master.unit_value_with_description.match(/^([\d\.]+(?= *|$)|)( *)(.*)$/)
if match
$scope.product.master.unit_value = parseFloat(match[1])
$scope.product.master.unit_value = null if isNaN($scope.product.master.unit_value)
$scope.product.master.unit_value *= $scope.product.variant_unit_scale if $scope.product.master.unit_value && $scope.product.variant_unit_scale
$scope.product.master.unit_description = match[3]
$scope.placeholder_text = new OptionValueNamer($scope.product.master).name()
$scope.variant_unit_options = VariantUnitManager.variantUnitOptions()
$scope.hasVariants = (product) ->
Object.keys(product.variants).length > 0

View File

@@ -19,7 +19,7 @@ angular.module("ofn.admin").factory "BulkProducts", (PagedFetcher, dataFetcher)
# when a respond_overrride for the clone action is used.
id = data.product.id
dataFetcher("/api/products/" + id + "?template=bulk_show").then (newProduct) =>
@addProducts [newProduct]
@insertProductAfter(product, newProduct)
updateVariantLists: (serverProducts, productsWithUnsavedVariants) ->
for product in productsWithUnsavedVariants
@@ -39,6 +39,10 @@ angular.module("ofn.admin").factory "BulkProducts", (PagedFetcher, dataFetcher)
@unpackProduct product
@products.push product
insertProductAfter: (product, newProduct) ->
index = @products.indexOf(product)
@products.splice(index + 1, 0, newProduct)
unpackProduct: (product) ->
#$scope.matchProducer product
@loadVariantUnit product

View File

@@ -1,13 +0,0 @@
angular.module("ofn.admin").factory "dataSubmitter", [
"$http", "$q", "switchClass"
($http, $q, switchClass) ->
return (changeObj) ->
deferred = $q.defer()
$http.put(changeObj.url).success((data) ->
switchClass changeObj.element, "update-success", ["update-pending", "update-error"], 3000
deferred.resolve data
).error ->
switchClass changeObj.element, "update-error", ["update-pending", "update-success"], false
deferred.reject()
deferred.promise
]

View File

@@ -3,12 +3,10 @@ angular.module("ofn.admin").factory "DisplayProperties", ->
displayProperties: {}
showVariants: (product_id) ->
@initProduct product_id
@displayProperties[product_id].showVariants
@productProperties(product_id).showVariants
setShowVariants: (product_id, showVariants) ->
@initProduct product_id
@displayProperties[product_id].showVariants = showVariants
@productProperties(product_id).showVariants = showVariants
initProduct: (product_id) ->
productProperties: (product_id) ->
@displayProperties[product_id] ||= {showVariants: false}

View File

@@ -4,6 +4,8 @@ angular.module("ofn.admin").factory 'EnterpriseRelationships', ($http, enterpris
all_permissions: [
'add_to_order_cycle'
'manage_products'
'edit_profile'
'create_variant_overrides'
]
constructor: ->
@@ -24,5 +26,7 @@ angular.module("ofn.admin").factory 'EnterpriseRelationships', ($http, enterpris
permission_presentation: (permission) ->
switch permission
when "add_to_order_cycle" then "to add to order cycle"
when "manage_products" then "to manage products"
when "add_to_order_cycle" then "add to order cycle"
when "manage_products" then "manage products"
when "edit_profile" then "edit profile"
when "create_variant_overrides" then "override variant details"

View File

@@ -1,32 +0,0 @@
angular.module("ofn.admin").factory "pendingChanges",[
"dataSubmitter"
(dataSubmitter) ->
pendingChanges: {}
add: (id, attrName, changeObj) ->
@pendingChanges["#{id}"] = {} unless @pendingChanges.hasOwnProperty("#{id}")
@pendingChanges["#{id}"]["#{attrName}"] = changeObj
removeAll: ->
@pendingChanges = {}
remove: (id, attrName) ->
if @pendingChanges.hasOwnProperty("#{id}")
delete @pendingChanges["#{id}"]["#{attrName}"]
delete @pendingChanges["#{id}"] if @changeCount( @pendingChanges["#{id}"] ) < 1
submitAll: ->
all = []
for id,lineItem of @pendingChanges
for attrName,changeObj of lineItem
all.push @submit(id, attrName, changeObj)
all
submit: (id, attrName, change) ->
dataSubmitter(change).then (data) =>
@remove id, attrName
change.element.dbValue = data["#{attrName}"]
changeCount: (lineItem) ->
Object.keys(lineItem).length
]

View File

@@ -1,13 +0,0 @@
angular.module("ofn.admin").factory "switchClass", [
"$timeout"
($timeout) ->
return (element,classToAdd,removeClasses,timeout) ->
$timeout.cancel element.timeout if element.timeout
element.removeClass className for className in removeClasses
element.addClass classToAdd
intRegex = /^\d+$/
if timeout && intRegex.test(timeout)
element.timeout = $timeout(->
element.removeClass classToAdd
, timeout, true)
]

View File

@@ -2,7 +2,7 @@ angular.module("admin.shipping_methods")
.factory "ShippingMethods", (shippingMethods) ->
new class ShippingMethods
shippingMethods: shippingMethods
findByID: (id) ->
for shippingMethod in @shippingMethods
return shippingMethod if shippingMethod.id is id

View File

@@ -13,7 +13,7 @@ angular.module("admin.taxons").factory "Taxons", (taxons, $filter) ->
# For finding multiple Taxons represented by comma delimited string
findByIDs: (ids) ->
@taxonsByID[taxon_id] for taxon_id in ids.split(",")
@taxonsByID[taxon_id] for taxon_id in ids.split(",") when @taxonsByID[taxon_id]
findByTerm: (term) ->
$filter('filter')(@taxons, term)

View File

@@ -1,12 +1,15 @@
angular.module("admin.users").directive "ofnUserAutocomplete", ($http) ->
angular.module("admin.users").directive "userSelect", ->
scope:
user: '&userSelect'
model: '=ngModel'
link: (scope,element,attrs) ->
setTimeout ->
element.select2
multiple: false
initSelection: (element, callback) ->
callback { id: element.val(), email: attrs.email }
callback {id: scope.user().id, email: scope.user().email}
ajax:
url: Spree.routes.user_search
url: '/admin/search/known_users'
datatype: 'json'
data:(term, page) ->
{ q: term }
@@ -15,4 +18,6 @@ angular.module("admin.users").directive "ofnUserAutocomplete", ($http) ->
formatResult: (user) ->
user.email
formatSelection: (user) ->
user.email
scope.$apply ->
scope.model = user if scope.model?
user.email

View File

@@ -1,10 +0,0 @@
angular.module("admin.utils").directive "navCheckCallback", (NavigationCheck)->
restrict: 'A'
scope:
navCheckCallback: '&'
link: (scope,element,attributes) ->
# Provide a callback, otherwise this default will be used:
callback = scope.navCheckCallback()
callback ||= ->
"You will lose any unsaved work!"
NavigationCheck.register(callback)

View File

@@ -36,4 +36,4 @@
$ ->
# Hacky fix for issue - http://foundation.zurb.com/forum/posts/2112-foundation-5100-syntax-error-in-js
Foundation.set_namespace ""
#$(document).foundation()
$(document).foundation()

View File

@@ -11,9 +11,9 @@ $ ->
# Temporarily handles the cart showing stuff
$(document).ready ->
$('#cart_adjustments').hide()
$('.cart_adjustment').hide()
$('th.cart-adjustment-header a').click ->
$('#cart_adjustments').toggle()
$('td.cart-adjustments a').click ->
$('.cart_adjustment').toggle()
$(this).html('Item Handling Fees (included in item totals)')
false

View File

@@ -4,7 +4,7 @@ Darkswarm.controller "CheckoutCtrl", ($scope, storage, Checkout, CurrentUser, Cu
# Bind to local storage
$scope.fieldsToBind = ["bill_address", "email", "payment_method_id", "shipping_method_id", "ship_address"]
prefix = "order_#{Checkout.order.id}#{CurrentUser?.id}#{CurrentHub.hub.id}"
prefix = "order_#{Checkout.order.id}#{CurrentUser.id or ""}#{CurrentHub.hub.id}"
for field in $scope.fieldsToBind
storage.bind $scope, "Checkout.order.#{field}",
@@ -16,7 +16,7 @@ Darkswarm.controller "CheckoutCtrl", ($scope, storage, Checkout, CurrentUser, Cu
$scope.order = Checkout.order # Ordering is important
$scope.secrets = Checkout.secrets
$scope.enabled = !!CurrentUser
$scope.enabled = !!CurrentUser.id?
$scope.purchase = (event, form) ->
event.preventDefault()

View File

@@ -0,0 +1,12 @@
Darkswarm.controller "GroupEnterpriseNodeCtrl", ($scope, CurrentHub) ->
$scope.active = false
$scope.toggle = ->
$scope.active = !$scope.active
$scope.open = ->
$scope.active
$scope.current = ->
$scope.hub.id is CurrentHub.hub.id

View File

@@ -0,0 +1,13 @@
Darkswarm.controller "GroupEnterprisesCtrl", ($scope, Search, FilterSelectorsService, EnterpriseModal) ->
$scope.totalActive = FilterSelectorsService.totalActive
$scope.clearAll = FilterSelectorsService.clearAll
$scope.filterText = FilterSelectorsService.filterText
$scope.FilterSelectorsService = FilterSelectorsService
$scope.query = Search.search()
$scope.openModal = EnterpriseModal.open
$scope.activeTaxons = []
$scope.show_profiles = false
$scope.filtersActive = false
$scope.$watch "query", (query)->
Search.search query

View File

@@ -0,0 +1,14 @@
Darkswarm.controller "GroupPageCtrl", ($scope, group_enterprises, Enterprises, MapConfiguration, OfnMap) ->
$scope.Enterprises = Enterprises
group_enterprises_ids = group_enterprises.map (enterprise) =>
enterprise.id
is_in_group = (enterprise) ->
group_enterprises_ids.indexOf(enterprise.id) != -1
$scope.group_producers = Enterprises.producers.filter is_in_group
$scope.group_hubs = Enterprises.hubs.filter is_in_group
$scope.map = angular.copy MapConfiguration.options
$scope.mapMarkers = OfnMap.enterprise_markers group_enterprises

View File

@@ -1,8 +1,3 @@
Darkswarm.controller "GroupsCtrl", ($scope, Groups, $anchorScroll, $rootScope) ->
$scope.Groups = Groups
$scope.order = 'position'
#$rootScope.$on "$locationChangeSuccess", (newRoute, oldRoute) ->
#$anchorScroll()
#
#

View File

@@ -1,6 +1,6 @@
Darkswarm.controller "HubNodeCtrl", ($scope, HashNavigation, Navigation, $location, $templateCache, CurrentHub) ->
$scope.toggle = ->
HashNavigation.toggle $scope.hub.hash
$scope.toggle = (e) ->
HashNavigation.toggle $scope.hub.hash if !angular.element(e.target).inheritedData('is-link')
$scope.open = ->
HashNavigation.active $scope.hub.hash

View File

@@ -1,3 +1,3 @@
Darkswarm.controller "MapCtrl", ($scope, MapConfiguration, OfnMap)->
$scope.OfnMap = OfnMap
$scope.map = MapConfiguration.options
$scope.map = angular.copy MapConfiguration.options

View File

@@ -1,4 +1,4 @@
Darkswarm.controller "ProductsCtrl", ($scope, $rootScope, Products, OrderCycle, FilterSelectorsService, Cart) ->
Darkswarm.controller "ProductsCtrl", ($scope, $rootScope, Products, OrderCycle, FilterSelectorsService, Cart, Taxons, Properties) ->
$scope.Products = Products
$scope.Cart = Cart
$scope.totalActive = FilterSelectorsService.totalActive
@@ -9,6 +9,9 @@ Darkswarm.controller "ProductsCtrl", ($scope, $rootScope, Products, OrderCycle,
$scope.limit = 3
$scope.order_cycle = OrderCycle.order_cycle
$scope.$watch "Products.loading", (newValue, oldValue) ->
$scope.$broadcast("loadFilterSelectors") if !newValue
$scope.incrementLimit = ->
if $scope.limit < Products.products.length
$scope.limit = $scope.limit + 1
@@ -17,3 +20,17 @@ Darkswarm.controller "ProductsCtrl", ($scope, $rootScope, Products, OrderCycle,
code = e.keyCode || e.which
if code == 13
e.preventDefault()
$scope.appliedTaxonsList = ->
$scope.activeTaxons.map( (taxon_id) ->
Taxons.taxons_by_id[taxon_id].name
).join(" & ") if $scope.activeTaxons?
$scope.appliedPropertiesList = ->
$scope.activeProperties.map( (property_id) ->
Properties.properties_by_id[property_id].name
).join(" & ") if $scope.activeProperties?
$scope.clearAll = ->
$scope.query = ""
FilterSelectorsService.clearAll()

View File

@@ -3,7 +3,7 @@ Darkswarm.controller "RegistrationCtrl", ($scope, RegistrationService, Enterpris
$scope.enterprise = EnterpriseRegistrationService.enterprise
$scope.select = RegistrationService.select
$scope.steps = ['details','contact','type','about','images','social']
$scope.steps = ['details', 'contact', 'type', 'about', 'images', 'social']
$scope.countries = availableCountries

View File

@@ -1,10 +1,14 @@
Darkswarm.controller "TabsCtrl", ($scope, $rootScope, $location, OrderCycle) ->
Darkswarm.controller "TabsCtrl", ($scope, $rootScope, $location) ->
# Return active if supplied path matches url hash path.
$scope.active = (path)->
$location.hash() == path
# Toggle tab selected status by setting the url hash path.
# Select tab by setting the url hash path.
$scope.select = (path)->
$location.hash path
# Toggle tab selected status by setting the url hash path.
$scope.toggle = (path)->
if $scope.active(path)
$location.hash ""
else

View File

@@ -6,10 +6,10 @@ Darkswarm.directive "activeSelector", ->
replace: true
templateUrl: 'active_selector.html'
link: (scope, elem, attr)->
scope.selector.emit = scope.emit
elem.bind "click", ->
scope.$apply ->
scope.selector.active = !scope.selector.active
# This function is a convention, e.g. a callback on the scope applied when active changes
scope.emit() if scope.emit
unless scope.readOnly && scope.readOnly()
scope.selector.emit = scope.emit
elem.bind "click", ->
scope.$apply ->
scope.selector.active = !scope.selector.active
# This function is a convention, e.g. a callback on the scope applied when active changes
scope.emit() if scope.emit

View File

@@ -8,6 +8,6 @@ Darkswarm.directive "ofnEmptiesCart", (CurrentHub, Cart, Navigation, storage) ->
if CurrentHub.hub?.id and CurrentHub.hub.id isnt scope.hub.id and !Cart.empty()
elm.bind 'click', (ev)->
ev.preventDefault()
if confirm "Are you sure? This will change your selected Hub and remove any items in you shopping cart."
if confirm "Are you sure? This will change your selected Hub and remove any items in your shopping cart."
storage.clearAll() # One day this will have to be moar GRANULAR
Navigation.go scope.hub.path

View File

@@ -1,43 +1,48 @@
Darkswarm.directive "taxonSelector", (FilterSelectorsService)->
Darkswarm.directive "filterSelector", (FilterSelectorsService)->
# Automatically builds activeSelectors for taxons
# Lots of magic here
restrict: 'E'
replace: true
scope:
objects: "&"
results: "="
templateUrl: "taxon_selector.html"
activeSelectors: "=?"
allSelectors: "=?" # Optional
templateUrl: "filter_selector.html"
link: (scope, elem, attr)->
selectors_by_id = {}
selectors = null # To get scoping/closure right
scope.readOnly = ->
!attr.activeSelectors?
scope.emit = ->
scope.results = selectors.filter (selector)->
scope.activeSelectors = selectors.filter (selector)->
selector.active
.map (selector)->
selector.taxon.id
selector.object.id
# Build hash of unique taxons, each of which gets an ActiveSelector
scope.selectors = ->
taxons = {}
selectors = []
for object in scope.objects()
for taxon in object.taxons
taxons[taxon.id] = taxon
if object.supplied_taxons
for taxon in object.supplied_taxons
taxons[taxon.id] = taxon
# Generate a selector for each taxon.
scope.$watchCollection "objects()", (newValue, oldValue) ->
scope.allSelectors = scope.buildSelectors()
# Build a list of selectors
scope.buildSelectors = ->
# Generate a selector for each object.
# NOTE: THESE ARE MEMOIZED to stop new selectors from being created constantly, otherwise function always returns non-identical results
# This means the $digest cycle can never close and times out
# See http://stackoverflow.com/questions/19306452/how-to-fix-10-digest-iterations-reached-aborting-error-in-angular-1-2-fil
for id, taxon of taxons
selectors = []
for id, object of scope.objects()
if selector = selectors_by_id[id]
selectors.push selector
else
selector = selectors_by_id[id] = FilterSelectorsService.new
taxon: taxon
object: object
selectors.push selector
selectors
scope.ifDefined = (value, if_undefined) ->
if angular.isDefined(value)
value
else
if_undefined

View File

@@ -0,0 +1,8 @@
Darkswarm.directive "linkToService", ->
restrict: 'E'
replace: true
scope: {
ref: '='
service: '='
}
template: '<a href="{{ref | ext_url: service}}" target="_blank" ng-show="ref"></a>'

Some files were not shown because too many files have changed in this diff Show More