Compare commits

...

619 Commits

Author SHA1 Message Date
Matt-Yorkley
c73defa8a1 Merge pull request #5494 from Matt-Yorkley/group-maps-fix
Fix group maps
2020-05-29 12:05:55 +02:00
Pau Pérez Fabregat
c0ad992352 Merge pull request #5465 from luisramos0/rename_accessible_by
[Rails 4.1] Rename order_cycle.accessible_by to remove name clash with active record
2020-05-29 12:04:19 +02:00
Maikel
2f82a58055 Merge pull request #5365 from mbudm/task/orderCycleSpecSplit
Split order_cycle_spec into smaller specs grouped by theme
2020-05-29 13:46:42 +10:00
Luis Ramos
bb8401a0fc Merge pull request #5444 from luisramos0/dead_js_code
Remove some dead JS code related to admin sub menus
2020-05-28 19:54:42 +01:00
Luis Ramos
83edfbd1dd Merge pull request #5266 from luchiago/improve-order-cancellation-email
Improve order cancellation email
2020-05-28 19:48:26 +01:00
Matt-Yorkley
ea7a2c91ee Update all locales with the latest Transifex translations 2020-05-28 13:12:12 +02:00
Matt-Yorkley
2ae84ad710 Merge pull request #5491 from openfoodfoundation/transifex
Transifex
2020-05-28 13:08:36 +02:00
Pau Pérez Fabregat
3b4266cbc8 Merge pull request #5495 from luisramos0/byebug
Fix error in dependency requirement specification for byebug and pry-byebug
2020-05-27 08:54:32 +02:00
Pau Pérez Fabregat
22be41ebed Merge pull request #5498 from mbudm/task/local_db_port_config
Add support for an env var to override DB port
2020-05-27 08:53:29 +02:00
Pau Pérez Fabregat
127e48e579 Merge pull request #5413 from luisramos0/edit_orders_mobile
Show order edit link on mobile instead of the cancel link
2020-05-27 08:51:41 +02:00
Pau Pérez Fabregat
4d3ae8fa53 Merge pull request #5439 from coopdevs/fix-misplaced-paragraph
[mobile ux] Fix misplaced paragraph in shop tab
2020-05-27 08:51:13 +02:00
Luis Ramos
7313e3c096 Merge pull request #5501 from luisramos0/grumpy_cat_take_2
Enterprises Controller: reset_distributor must be called before any call to memoized current_distributor
2020-05-26 23:06:59 +01:00
Transifex-Openfoodnetwork
d2e46b8561 Updating translations for config/locales/ca.yml 2020-05-27 00:32:12 +10:00
Transifex-Openfoodnetwork
8d3c8c62fb Updating translations for config/locales/en_CA.yml 2020-05-27 00:02:52 +10:00
Transifex-Openfoodnetwork
daf9fab16d Updating translations for config/locales/en_CA.yml 2020-05-26 23:59:48 +10:00
Luis Ramos
52810b0f4a Make enterprises controller spec assert the corrrect state of current_distributor
This validates bug #5496 is fixed
2020-05-26 11:26:20 +01:00
Luis Ramos
4026e072d5 Break OrderCartReset in two steps so that memoized method current_customer (that uses memoized current_distributor) is called after reset_distributor 2020-05-26 11:13:16 +01:00
Luis Ramos
a582261d7a Merge pull request #5493 from luisramos0/display_on_4_managers
Make display_on attribute available for managers to change in shipping and payment methods
2020-05-26 09:57:56 +01:00
Pau Pérez Fabregat
c3f66203bb Merge pull request #5497 from openfoodfoundation/dependabot/bundler/rack-mini-profiler-2.0.2
Bump rack-mini-profiler from 2.0.1 to 2.0.2
2020-05-26 09:55:26 +02:00
Steve Roberts
d4a256fcca Add support for an env var to override DB port 2020-05-26 11:04:42 +10:00
Steve Roberts
2bb3cf1c54 Name checkbox element id var more informatively 2020-05-26 09:53:51 +10:00
dependabot-preview[bot]
fc186f5342 Bump rack-mini-profiler from 2.0.1 to 2.0.2
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.0.1...v2.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-25 21:24:42 +00:00
Luis Ramos
50e4896e32 Fix error in dependency requirement specification
~> 11.0 allows upgrades to 11.1, we want to lock it to 11.0.x so we need ~> 11.0.0

Same logic for pry-byebug
2020-05-25 18:15:47 +01:00
Matt-Yorkley
8095371304 Ensure OpenStreetMap credits are aways shown with map and fix credits positioning for /groups page map display 2020-05-25 14:12:12 +02:00
Matt-Yorkley
a3660dfe37 Extract repeated map code to new partial 2020-05-25 14:04:11 +02:00
Matt-Yorkley
e03005ed56 Fix maps and tidy up groups map code 2020-05-25 13:52:56 +02:00
Luis Ramos
cb0aefd29c Make display on attribute available for managers to change, not just super admins 2020-05-25 11:21:53 +01:00
Transifex-Openfoodnetwork
d9d221e4f3 Updating translations for config/locales/en_GB.yml 2020-05-25 18:46:48 +10:00
Transifex-Openfoodnetwork
5de3fbba1e Updating translations for config/locales/en_FR.yml 2020-05-24 19:14:49 +10:00
Transifex-Openfoodnetwork
ed27ed32e3 Updating translations for config/locales/fr.yml 2020-05-24 19:14:25 +10:00
Kristina Lim
cf534237cd Update all locales with the latest Transifex translations 2020-05-23 01:51:23 +08:00
Pau Pérez Fabregat
da88399ca6 Merge pull request #5411 from Matt-Yorkley/orders-closed-fullwidth
Fix closed shop message not displaying full-width
2020-05-22 19:32:08 +02:00
Pau Pérez Fabregat
a5b4c5316c Merge pull request #5458 from Matt-Yorkley/oc-form-ui-bug
Fix display issue on order cycle edit form
2020-05-22 19:31:41 +02:00
Pau Pérez Fabregat
f1dbad1007 Merge pull request #5466 from Matt-Yorkley/shop-search-fix
Fix search bar in /shops and /groups
2020-05-22 18:40:27 +02:00
Pau Pérez Fabregat
17e77df14f Merge pull request #5451 from Matt-Yorkley/oc-selector-fix
Fix tab-buttons element overlapping order cycle selector
2020-05-22 18:39:10 +02:00
Pau Pérez Fabregat
3f593d6246 Merge pull request #5440 from luisramos0/grumpy_cat
Fix Grumpy Cat on shop page (cart with items from a closed OC)
2020-05-22 18:38:41 +02:00
Pau Pérez Fabregat
72399cb6df Merge pull request #5485 from luisramos0/byeby_phantom_js
Rename method refering to phantomjs
2020-05-22 18:37:28 +02:00
Pau Pérez Fabregat
b804036822 Merge pull request #5469 from openfoodfoundation/transifex
Transifex
2020-05-22 18:24:14 +02:00
Transifex-Openfoodnetwork
88ab5c2dd7 Updating translations for config/locales/fr.yml 2020-05-22 23:31:48 +10:00
Transifex-Openfoodnetwork
466bbe52ae Updating translations for config/locales/en_FR.yml 2020-05-22 23:29:08 +10:00
Luis Ramos
9a71ffc093 Merge pull request #5438 from Matt-Yorkley/cart-stock-ux
Cart stock UX
2020-05-22 14:21:16 +01:00
Pau Perez
be9fbae300 Fix misplaced paragraph in shop tab
By wrapping message within 12-cols container, keeping consistency with
the other shop tabs.
2020-05-22 12:37:07 +02:00
Luis Ramos
b7c601abcd Merge pull request #5424 from luisramos0/ship_method_warning
Add warning to enterprise Shipping Method list and to Shipping method edit page
2020-05-22 11:24:12 +01:00
Luis Ramos
639c1e1ccc Rename method, it's not phantomjs running underneath any more 2020-05-22 10:57:51 +01:00
Luis Ramos
6fcca0197c Merge pull request #5450 from rmklaus12/5095-ordercycle-amtqty-translations
Changed report_header fields for amount and quantity to reflect corre…
2020-05-21 21:21:14 +01:00
Transifex-Openfoodnetwork
adb3c9e56f Updating translations for config/locales/en_NZ.yml 2020-05-22 00:22:33 +10:00
Pau Pérez Fabregat
c6c9dcc345 Merge pull request #5478 from luisramos0/bundler1-17-3
Upgrade bundler, byebug and pry-byebug
2020-05-21 16:10:38 +02:00
Luis Ramos
6e6dab8f72 Merge pull request #5474 from openfoodfoundation/dependabot/bundler/activerecord-import-1.0.5
Bump activerecord-import from 1.0.4 to 1.0.5
2020-05-21 13:17:51 +01:00
Luis Ramos
574e4a02c0 Force pry to 0.12 so that it works well with pry-byebug 3.7 2020-05-21 13:10:59 +01:00
Luis Ramos
01eda90a00 Upgrade bundler, byebug and pry-byebug 2020-05-21 12:59:57 +01:00
Pau Pérez Fabregat
6851921e9d Merge pull request #5443 from openfoodfoundation/dependabot/bundler/mini_racer-0.2.14
Bump mini_racer from 0.2.11 to 0.2.14
2020-05-21 13:32:30 +02:00
Luis Ramos
8cdc9b82df Merge pull request #5427 from luisramos0/jquery-ui-rails
Upgrade jquery-ui-rails to v4.2.1
2020-05-21 10:57:10 +01:00
Luis Ramos
2ae34d8df3 Merge pull request #5355 from jeduardo824/enhancement/make-shop-names-links-on-transactions-page
change shop name to be link to shop on transactions page
2020-05-21 10:56:19 +01:00
Luis Ramos
35b249f40d Merge pull request #5390 from rmklaus12/fix-enyml-keys
Fix translation keys in en.yml file from previous conflicting PRs
2020-05-21 10:56:01 +01:00
Luis Ramos
a6ea79d3a5 Add warning message to enterprise ship methods list and ship method edit page 2020-05-21 10:47:22 +01:00
Luis Ramos
d017c0b701 Change base translation from applies to active so the naming is consistent: ship methods can be active or inactive for an enterprises which means they can be linked or not to that enterprise 2020-05-21 10:45:58 +01:00
Luis Ramos
cf0ad179a1 Move hubs_sidebar to the last 4 columns at the top of the page 2020-05-21 10:45:58 +01:00
Transifex-Openfoodnetwork
8bb47ef467 Updating translations for config/locales/en_NZ.yml 2020-05-21 16:43:58 +10:00
Maikel
da55956a6e Merge pull request #5392 from luisramos0/ship_method_bo
Make "backoffice only" ship methods work and remove option "frontoffice only"
2020-05-21 10:16:15 +10:00
dependabot-preview[bot]
0e1ae03454 Bump activerecord-import from 1.0.4 to 1.0.5
Bumps [activerecord-import](https://github.com/zdennis/activerecord-import) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/zdennis/activerecord-import/releases)
- [Changelog](https://github.com/zdennis/activerecord-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zdennis/activerecord-import/compare/v1.0.4...v1.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-20 20:02:29 +00:00
Luis Ramos
e287680c1b Merge pull request #5429 from mkllnk/5400-orders-distributors-report
5400 List each order only once in Orders And Distributors report
2020-05-20 20:36:58 +01:00
Matt-Yorkley
6b3a7228ce Update flash message with instruction to update the quantities 2020-05-20 09:43:29 +02:00
Transifex-Openfoodnetwork
8387c71b6e Updating translations for config/locales/tr.yml 2020-05-20 15:55:52 +10:00
Luis Ramos
76b721b663 Merge pull request #5457 from Matt-Yorkley/cart-fix
Fix cart fields sharing same scope
2020-05-19 19:31:49 +01:00
Matt-Yorkley
3df2d4721b Fix search bar in /shops and /groups 2020-05-19 14:00:20 +02:00
Luis Ramos
758d7c82f7 Rename order_cycle.accessible_by to remove name clash with active record 2020-05-19 12:21:13 +01:00
Matt-Yorkley
4a837e8c07 Fix display issue on order cycle form
Some of the form elements on the first OC edit page were covered up by the save bar in some cases. this ensures they are always visible and clickable.
2020-05-19 11:56:41 +02:00
Matt-Yorkley
05e6f5792d Fix cart fields sharing same scope
All cart page quantity fields were displaying a single max quantity instead of a different value for each one.
2020-05-19 10:23:12 +02:00
Matt-Yorkley
e54fad9bfd Add spec for maximum quantities with multiple items in cart
This currently fails
2020-05-19 10:21:24 +02:00
Steve Roberts
446bf268b4 scroll_to substitute 2020-05-19 14:16:45 +10:00
Lucas Hiago
ba30f55e70 Add fullwidth for table selector 2020-05-18 22:53:46 -03:00
Maikel Linke
2d95e9ebc0 List each order only once in report 2020-05-19 10:38:28 +10:00
Maikel Linke
19f7f04816 Add spec for report bug 2020-05-19 10:38:28 +10:00
Maikel Linke
359fd1ac98 Improve readability of report spec 2020-05-19 10:38:28 +10:00
Steve Roberts
049b1b4638 Split up the specs again.
This now shows that there is one consistent spec erroring, spec/features/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb:
Capybara::ElementNotFound:
       Unable to find visible checkbox "order_cycle_incoming_exchange_0_select_all_variants" that is not disabled
2020-05-19 10:14:26 +10:00
Matt-Yorkley
e3c337ef7e Fix mixed error display issue 2020-05-18 16:41:57 +02:00
Matt-Yorkley
d70174becc Use fresh scope for each quantity field 2020-05-18 16:28:07 +02:00
Matt-Yorkley
f9f76f9082 Move reused available stock logic to service 2020-05-18 16:19:49 +02:00
Matt-Yorkley
111e700799 Update invalid input feedback 2020-05-18 16:14:14 +02:00
Matt-Yorkley
f7b4717f29 Improve validation code 2020-05-18 14:51:11 +02:00
Matt-Yorkley
fe27c8466e Add feature specs for full cart page stock correction process 2020-05-18 14:51:11 +02:00
Matt-Yorkley
63e4430ea4 Update cart page links to be disabled when changes are required and form is unsaved
See: https://stackoverflow.com/questions/23425254/enable-disable-anchor-tags-using-angularjs
2020-05-18 14:51:08 +02:00
Matt-Yorkley
5dd801b432 Fix tab-buttons element overlapping order cycle selector 2020-05-18 14:27:05 +02:00
Matt-Yorkley
3a46f32aa3 Merge pull request #5435 from openfoodfoundation/transifex
Transifex
2020-05-18 13:44:32 +02:00
Luis Ramos
ea8157a5c6 Merge pull request #5304 from dacook/5299-orders-filter-several-tags
5299 Impossible to filter orders with several tags
2020-05-18 11:25:54 +01:00
Luis Ramos
37350fcbb0 Add table name to condition so it doesnt cause trouble in the future if mixed with other tables in the same query 2020-05-18 10:55:03 +01:00
Luis Ramos
05136b51d1 Merge pull request #5356 from rmklaus12/4534-mobile-searchkey
Changed search input to inputmode to enable 'go' button on dynamic mo…
2020-05-18 10:30:56 +01:00
Robin Klaus
311bbd2aa2 Changed report_header fields for amount and quantity to reflect correct translation to French 2020-05-18 18:41:04 +10:00
Transifex-Openfoodnetwork
d2b8b5e888 Updating translations for config/locales/pt_BR.yml 2020-05-18 05:14:19 +10:00
Luis Ramos
6c81c19f00 Remove dead code 2020-05-16 14:19:25 +01:00
Robin Klaus
438c0ecde9 delete extra lines 2020-05-16 20:12:54 +10:00
Robin Klaus
ba8ecf19ac Added input code to two additional pages to cover shop tab search boxes 2020-05-16 12:56:06 +10:00
dependabot-preview[bot]
f4afc8ffcd Bump mini_racer from 0.2.11 to 0.2.14
Bumps [mini_racer](https://github.com/discourse/mini_racer) from 0.2.11 to 0.2.14.
- [Release notes](https://github.com/discourse/mini_racer/releases)
- [Changelog](https://github.com/rubyjs/mini_racer/blob/master/CHANGELOG)
- [Commits](https://github.com/discourse/mini_racer/compare/v0.2.11...v0.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 19:20:08 +00:00
Luis Ramos
ace73be4e2 Add unit tests to order_cart_reset 2020-05-15 20:05:45 +01:00
Luis Ramos
1c749a8029 Extract order_cycle_not_listed? method and rename order_cycles to listed_order_cycles 2020-05-15 19:36:59 +01:00
Luis Ramos
f22eae752d Adapt spec to validate issue #5340 2020-05-15 19:30:01 +01:00
Luis Ramos
a438317d69 Extract order_cart_reset service from enterprises_controller 2020-05-15 19:30:00 +01:00
Luis Ramos
35824c7aa1 Rename restartCheckout to order_checkout_restart to make it follow service naming convention 2020-05-15 19:29:37 +01:00
Luis Ramos
ba585064e1 Rename ResetOrderService to OrderCompletionReset to follow new service naming convention and also to make it more specific to completed orders 2020-05-15 19:29:37 +01:00
Luis Ramos
21d1a7bc04 Remove dead code 2020-05-15 19:29:37 +01:00
Luis Ramos
6827ce5c7f Refactor order.set_order_cycle, return early and remove indentation 2020-05-15 19:29:37 +01:00
Luis Ramos
493adc8b1f Fix problem in spec where wrong enterprise was being used 2020-05-15 19:29:37 +01:00
Luis Ramos
94bb95861b If selected OC is not in the available OCs, empty the order 2020-05-15 19:29:35 +01:00
Lucas Hiago
98cbe5762a Remove unused css property from image in cancel email 2020-05-15 10:59:56 -03:00
Lucas Hiago
0caa91d057 Remove second table of cancel email instructions style 2020-05-15 10:59:56 -03:00
Lucas Hiago
5d286cb349 Add i18n of new symbols for order cancel mail 2020-05-15 10:59:56 -03:00
Lucas Hiago
f72da4abe4 Add refund message in order cancel mail 2020-05-15 10:59:56 -03:00
Lucas Hiago
42012d6482 Add new order sumary in order cancel mail 2020-05-15 10:59:55 -03:00
Lucas Hiago
1c1200125e Add new greeting table in order cancel mail 2020-05-15 10:59:55 -03:00
Lucas Hiago
0b8771ccf0 Add connect with us footer to order cancelation email 2020-05-15 10:59:55 -03:00
Luis Ramos
52e7ca2417 Select first default OC only if no OC is already selected 2020-05-15 14:26:56 +01:00
Luis Ramos
c3f0c0ed7f Extract method to prepare work ahead 2020-05-15 14:25:20 +01:00
Transifex-Openfoodnetwork
4f14d7910a Updating translations for config/locales/en_IE.yml 2020-05-15 23:04:12 +10:00
Pau Pérez Fabregat
5c7541e63d Merge pull request #5415 from openfoodfoundation/dependabot/bundler/bugsnag-6.13.1
Bump bugsnag from 6.13.0 to 6.13.1
2020-05-15 13:47:46 +02:00
Matt-Yorkley
c2efa901c2 Don't highlight update button when form is invalid 2020-05-15 13:38:17 +02:00
Matt-Yorkley
3ba1182661 Dynamically mark quantity field as invalid when stock is incorrect 2020-05-15 12:59:29 +02:00
Matt-Yorkley
42195b76d3 Highlight update button when cart page form is "dirty" 2020-05-15 12:59:29 +02:00
Matt-Yorkley
73b533690e Refactor cart update button syntax 2020-05-15 12:59:29 +02:00
Matt-Yorkley
78f736db45 Add red border on quantity field when it must be updated 2020-05-15 12:59:28 +02:00
Luis Ramos
367de87c61 Upgrade jquery-ui-rails to v4.2 2020-05-15 08:58:40 +01:00
Luis Ramos
4fe1135a33 Merge pull request #5376 from rmklaus12/5104-mobile-keyboard-inputs
Added inputmode attribute to show appropriate mobile keyboard for sel…
2020-05-15 08:49:42 +01:00
Transifex-Openfoodnetwork
78db7e0e5f Updating translations for config/locales/en_GB.yml 2020-05-15 17:36:21 +10:00
David Cook
b4228e8cdd 5299 Remove unnecessary comments 2020-05-15 15:11:26 +10:00
David Cook
f5629d59b0 5299: Add trailing square brackets for array parameters (distributor and order_cycle) 2020-05-15 15:04:01 +10:00
David Cook
8a2c65b6bb Remove duplicate line 2020-05-15 15:04:01 +10:00
David Cook
79df4868de 5299: Unit and feature test for filtering by multiple order cycles 2020-05-15 15:04:01 +10:00
Maikel Linke
51feef83ca Update translations from Transifex 2020-05-15 14:10:36 +10:00
Maikel
90baec0e2c Merge pull request #5393 from openfoodfoundation/transifex
Transifex
2020-05-15 13:53:56 +10:00
Maikel
d566051e7d Merge pull request #5432 from openfoodfoundation/dependabot/bundler/mini_racer-0.2.11
Bump mini_racer from 0.2.10 to 0.2.11
2020-05-15 11:20:46 +10:00
Maikel
6c409d6c70 Merge pull request #5380 from ckhung5/5201-fix-missing-jquery-ui
Update jquery-ui-rails version to 4.1.1
2020-05-15 11:11:36 +10:00
dependabot-preview[bot]
4613502707 Bump bugsnag from 6.13.0 to 6.13.1
Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.13.0 to 6.13.1.
- [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.13.0...v6.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 21:04:00 +00:00
dependabot-preview[bot]
99ab7688b6 Bump mini_racer from 0.2.10 to 0.2.11
Bumps [mini_racer](https://github.com/discourse/mini_racer) from 0.2.10 to 0.2.11.
- [Release notes](https://github.com/discourse/mini_racer/releases)
- [Changelog](https://github.com/rubyjs/mini_racer/blob/master/CHANGELOG)
- [Commits](https://github.com/discourse/mini_racer/compare/v0.2.10...v0.2.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 20:36:44 +00:00
Luis Ramos
644c65b124 Merge pull request #5430 from coopdevs/make-logger-spec-more-reliable
Make JobLogger spec more reliable
2020-05-14 14:33:52 +01:00
Pau Perez
403e1d317d Make JobLogger spec more reliable
This will hopefully fix our bild. I believe that the underlying issue is
that the logger's test double gets leaked into other examples, as RSpec
tells when running `spec/jobs/` specs.

```
5) SubscriptionPlacementJob performing the job when unplaced proxy_orders exist processes placeable proxy_orders
     Failure/Error: JobLogger.logger.info("Placing Order for Proxy Order #{proxy_order.id}")
       #<InstanceDouble(Logger) (anonymous)> was originally created in one example but has leaked into another example and can no longer be used. rspec-mocks' doubles are designed to only last for one example, and you need to create a new one in each example you wish to use it for.
     # ./app/jobs/subscription_placement_job.rb:31:in `place_order_for'
```
Read more: https://relishapp.com/rspec/rspec-mocks/v/3-4/docs/basics/scope#doubles-cannot-be-reused-in-another-example

For whatever reason the JobLogger keeps its `.logger` being stubbed
after this spec.
2020-05-14 13:51:57 +02:00
Transifex-Openfoodnetwork
bd8b3f11d1 Updating translations for config/locales/en_FR.yml 2020-05-14 05:42:38 +10:00
Transifex-Openfoodnetwork
937c981dd8 Updating translations for config/locales/fr.yml 2020-05-14 05:41:55 +10:00
Luis Ramos
5f7c1474a2 Merge pull request #5377 from manvil/1782_enterprise_at_same_address
Handling multiple enterprises at the same location
2020-05-13 19:31:14 +01:00
Transifex-Openfoodnetwork
9b7de5ee6e Updating translations for config/locales/en_NZ.yml 2020-05-13 19:27:55 +10:00
Luis Ramos
ef2d7f9485 Merge pull request #5330 from openfoodfoundation/mobile-ux-filters
[mobile ux] Merge search and filter epic to master
2020-05-13 08:59:32 +01:00
Luis Ramos
58842e8cab Show order edit link on mobile instead of the cancel link 2020-05-12 19:44:01 +01:00
Matt-Yorkley
598071fa78 Remove conflicting "clear search" buttons added by Chrome 2020-05-12 18:59:15 +02:00
Matt-Yorkley
70e3f0f1f1 Fix closed shop message not displaying full-width 2020-05-12 18:29:48 +02:00
Matt-Yorkley
265a8ed573 Move messages and products form outside of row and columns to enable full-width 2020-05-12 18:24:10 +02:00
Luis Ramos
41645e8351 Merge pull request #5334 from coopdevs/output-logs-in-djs-log-file
Output logs in Delayed Job's log file
2020-05-12 10:05:26 +01:00
Luis Ramos
5f4882fc32 Merge pull request #5403 from openfoodfoundation/dependabot/bundler/ddtrace-0.35.2
Bump ddtrace from 0.35.1 to 0.35.2
2020-05-12 08:39:26 +01:00
dependabot-preview[bot]
1114e062b5 Bump ddtrace from 0.35.1 to 0.35.2
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.35.1 to 0.35.2.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.35.1...v0.35.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 22:07:52 +00:00
Luis Ramos
dcd097a22e Merge pull request #5231 from pacodelaluna/add-dfc-provider-engine
Add DFC Provider engine
2020-05-11 20:27:21 +01:00
Matt-Yorkley
ab143ceaed Merge pull request #5352 from pacodelaluna/change-date-displayed-on-sales-tax-report
Change date displayed on sales_tax reports
2020-05-11 09:56:38 +02:00
Matt-Yorkley
0cd4ad0a1a Ensure large amount of search text doesn't break layout with clear all button 2020-05-10 09:44:12 +02:00
Matt-Yorkley
9f882a8674 Ensure search results feedback wraps nicely onto next line 2020-05-10 09:44:12 +02:00
Matt-Yorkley
cb9c56d8aa Ensure correct left-alignment on text in search results feedback 2020-05-10 09:44:12 +02:00
Matt-Yorkley
dee793a392 Change join word between the two filter sets to be "and", to match the actual logic 2020-05-10 09:44:12 +02:00
Matt-Yorkley
7e6683581a Remove full stop from translation
This doesn't fit with the new syntax structure
2020-05-10 09:44:12 +02:00
Matt-Yorkley
b78976fcd7 Ensure consistent styling in both "no results" and "searching for" text 2020-05-10 09:44:12 +02:00
Matt-Yorkley
82b11d6947 Ensure join words are not bold 2020-05-10 09:44:12 +02:00
Matt-Yorkley
a75d3276a4 Include applied filters list in "no results" feedback 2020-05-10 09:44:12 +02:00
Matt-Yorkley
a1435e78c9 Extract applied filters feedback to partial 2020-05-10 09:44:12 +02:00
Matt-Yorkley
7be85d1dab Use bold font with teal colour for both applied taxons and applied properties 2020-05-10 09:44:12 +02:00
Matt-Yorkley
483a654d31 Add join word "or" when both categories and properties are present
Previously for example with "Organic" property and "Fruit" and "Nuts" categories it rendered as: "Fruit or Nuts Organic" instead of: "Fruit or Nuts or Organic"
2020-05-10 09:44:12 +02:00
Matt-Yorkley
f6b910b38a Fix clear search (x) button position on some layouts
Hopefully this will work on iPhones as well...?
2020-05-10 09:44:12 +02:00
Matt-Yorkley
ea06ec7ede Remove smaller (less than 1em) scaling in search bar on mobile 2020-05-10 09:44:12 +02:00
Matt-Yorkley
07ac7dd9c7 Add explicit 'search' input type to search field.
In theory this should improve some of the custom-keyboard functionality added by mobiles, but the implementations will be vary...
2020-05-10 09:44:12 +02:00
Matt-Yorkley
71fb3b1845 Focus search field after it's cleared, ready for immediate typing of new search term on mobile 2020-05-10 09:44:12 +02:00
Matt-Yorkley
e0cb514cad Add hover state to filters button with darker background 2020-05-10 09:44:12 +02:00
Matt-Yorkley
5ceaff24e9 Darken overlay background colour to reduce distraction 2020-05-10 09:44:11 +02:00
Matt-Yorkley
a7771a20c4 Adjust border-radius on filters button 2020-05-10 09:44:11 +02:00
Matt-Yorkley
03afae01b3 Decrease sidebar width on mobile for more tapping space 2020-05-10 09:44:11 +02:00
Matt-Yorkley
96c6da304a Increase margin between filter selectors 2020-05-10 09:44:11 +02:00
Matt-Yorkley
2964ec138d Update display of join words in filters list and rearrange code a bit for clarity
Here we need to build a really dynamic structure on the page like "Results for: <search-term> in <filter1> or <filter2>" and the styling on each of the words needs to be a bit different, specifically the filter terms need to be differently styled to the join words like "in" and "or". We have to generate those bits on the Angular side, but they also have to be wrapped in HTML in a specific way.

$sce.trustAsHtml() marks the injected HTML as "safe" (in relation to security issues like XSS). In this case the injected content doesn't involve any user-defined data, so it should be fine.
2020-05-10 09:44:11 +02:00
Matt-Yorkley
14d928c39d Fix feature specs where UI has changed 2020-05-10 09:44:11 +02:00
Matt-Yorkley
6b66787004 Update "no results" layout on mobile and tablet 2020-05-10 09:44:11 +02:00
Matt-Yorkley
4b695014e4 Update "no results" styling 2020-05-10 09:44:11 +02:00
Matt-Yorkley
c9bfccf465 Update styling on search feedback bar 2020-05-10 09:44:11 +02:00
Matt-Yorkley
026b98022c Add clear search button in shop searchbar 2020-05-10 09:44:11 +02:00
Matt-Yorkley
ff69389bb0 Make search bar "sticky" for tablets and mobile 2020-05-10 09:44:11 +02:00
Matt-Yorkley
f24969edb1 Remove gutter padding on shop content to gain a bit more horizontal real-estate 2020-05-10 09:44:11 +02:00
Matt-Yorkley
cbb67e15ed Extract button styles 2020-05-10 09:44:11 +02:00
Matt-Yorkley
865dcf79cb Extract some properties to variables 2020-05-10 09:44:11 +02:00
Matt-Yorkley
ebe00bdc31 Update filters clear button functionality 2020-05-10 09:44:11 +02:00
Matt-Yorkley
9eaf55f4c0 Add missing translation key 2020-05-10 09:44:11 +02:00
Matt-Yorkley
d1ea2c5f77 Extract shop searchbar styles to separate file 2020-05-10 09:44:11 +02:00
Matt-Yorkley
035bde9eff Define breakpoints in mixin and refactor 2020-05-10 09:44:11 +02:00
Matt-Yorkley
cbd77b4941 Improve element sizing and position on small screens 2020-05-10 09:44:11 +02:00
Matt-Yorkley
f337fd49e1 Extract search feedback bar into partial and move into main column 2020-05-10 09:44:11 +02:00
Matt-Yorkley
e25e4e7482 Fix issue with button submitting form instead of opening popup 2020-05-10 09:44:11 +02:00
Matt-Yorkley
ff07b97033 Add sidebar footer and buttons
Also includes a minor refactor to resolve an issue with animation timings. Angular was not adding the "shown" class to the different elements at the same time in the digest cycle, and it looked a bit shaky.
2020-05-10 09:44:11 +02:00
Matt-Yorkley
94145d0f7e Improve layout and sizing on mobile 2020-05-10 09:44:11 +02:00
Matt-Yorkley
da1d8e90e2 Update search placeholder 2020-05-10 09:44:11 +02:00
Matt-Yorkley
7c00d41fc4 Add some animation effects 2020-05-10 09:44:11 +02:00
Matt-Yorkley
8e9833fd06 Implement overlaid sidebar on mobile and tablet 2020-05-10 09:44:11 +02:00
Matt-Yorkley
f43bf3880c Add filters button on mobile and tablet 2020-05-10 09:44:11 +02:00
Matt-Yorkley
142cef3f3a Add filters count 2020-05-10 09:44:11 +02:00
Matt-Yorkley
0d9f049d24 Add inner icon and restyle search input element 2020-05-10 09:44:11 +02:00
Matt-Yorkley
f46ca0c595 Move search to new searchbar
This required a lot of refactoring, as the search needed to be inside both the form element and the Angular ProductsCtrl element, but to get a full-width row for the searchbar it needed to be outside of the 12 column layout of the other shop page elements...
2020-05-10 09:44:11 +02:00
Matt-Yorkley
532e27b7e1 Move filters into new column on desktop 2020-05-10 09:37:56 +02:00
Matt-Yorkley
3ca491683a Merge pull request #5317 from Matt-Yorkley/caching-timed-shops
[Caching] Timed caching on shops data
2020-05-09 15:33:26 +02:00
Transifex-Openfoodnetwork
644d06fb08 Updating translations for config/locales/en_FR.yml 2020-05-09 18:41:29 +10:00
Transifex-Openfoodnetwork
3044e62d8b Updating translations for config/locales/fr.yml 2020-05-09 18:06:16 +10:00
Pau Pérez Fabregat
b85e439b0e Merge pull request #5395 from coopdevs/skip-broken-spec
Skip unreliable caching test
2020-05-08 17:11:12 +02:00
Pau Perez
fa8c1270ce Skip unreliable caching test
This spec failed two times in a row and it's blocking the release.
2020-05-08 16:37:30 +02:00
Pau Pérez Fabregat
09caf88b6c Merge pull request #5396 from coopdevs/fix-brittle-test
Make test not depend on response's order
2020-05-08 16:37:06 +02:00
Pau Perez
b99bcc3c12 Make test not depend on response's order
I'm assuming this is failing in CI due to the order in which the closed
shops are returned.
2020-05-08 15:56:20 +02:00
Transifex-Openfoodnetwork
296a927900 Updating translations for config/locales/en_FR.yml 2020-05-08 22:49:17 +10:00
Transifex-Openfoodnetwork
32ead7b6b7 Updating translations for config/locales/fr.yml 2020-05-08 22:49:02 +10:00
Luis Ramos
0a6bd1424c Make ship method display on back_end work correcly by making checkout ignore ship methods configured for backoffice only
Adding both unit and feature tests as this is important enough for that
2020-05-08 12:59:17 +01:00
Luis Ramos
34d8b1957e Improve variable names 2020-05-08 12:42:32 +01:00
Luis Ramos
40dd307a35 Remove shipping method display on front_end option, it is not working and it's not straight forward to make it work correctly 2020-05-08 12:00:58 +01:00
Transifex-Openfoodnetwork
4485dcd7fe Updating translations for config/locales/en_GB.yml 2020-05-08 20:57:56 +10:00
Pau Perez
ad70a63370 Update all locales with the latest Transifex translations 2020-05-08 12:01:42 +02:00
Pau Pérez Fabregat
60470aaf9f Merge pull request #5332 from coopdevs/add-timestamps-to-oc-schedule
Add timestamps to OC schedule join table
2020-05-08 10:51:43 +02:00
Pau Pérez Fabregat
2cf407ce35 Merge pull request #5349 from openfoodfoundation/transifex
Transifex
2020-05-08 10:20:07 +02:00
Pau Pérez Fabregat
c38c59b0b9 Merge pull request #5223 from luisramos0/def_user
Change default user from spree@example.com to ofn@example.com ❤️
2020-05-08 09:51:31 +02:00
Luis Ramos
424932d61b Merge pull request #5262 from luisramos0/closed_shop_msg
[Mobile] Improve the design of shop page messages (closed shop, private shop and select OC)
2020-05-08 07:52:58 +01:00
Robin Klaus
aa46aec935 Fix translation keys in en.yml file from previous conflicting PRs 2020-05-08 13:21:47 +10:00
Kok Hung Cheah
19d5bcb150 Upgrade jquery-ui-rails to 4.1.2 instead of 4.1.1 2020-05-08 09:54:10 +10:00
Matt-Yorkley
5518ffa856 Ensure validations are called when updating attributes in test 2020-05-07 19:37:43 +02:00
Luis Ramos
dd5041db65 Remove unnecessary default user email and pwd from docker setup
These are now the default values in the app
2020-05-07 18:18:42 +01:00
Luis Ramos
052dbca1ba Merge pull request #5370 from Matt-Yorkley/dont-render-twice
Don't render twice
2020-05-07 18:15:47 +01:00
Matt-Yorkley
86bfd1bebb Add explanatory comments on usages of Timecop.travel 2020-05-07 17:29:58 +02:00
Pau Perez
ee94101edd Log subs jobs to DJ's log file
There's a bunch of logging bits we need to find out what happened in
`#5294`, the first of which is logging as we are used to for Rails
itself.  Turns out we were already logging but the log lines weren't
displayed.

That's because workers have no access to the Rails logger unless we hack
things a bit in the config/initializer. If we want to keep DJ's logs in
a different file, which I think is good for debugging purposes, we need
to diverge from Rails.logger.

However, there's no access to Delayed::Worker.logger in custom job
classes either so there's no way other than mimicking that logger's format
if we want log lines to be consistent.

Now the current logs will see the light like:

```
2020-05-07T14:09:42+0000: [Worker(host:8dc5e7e6f434 pid:1)] Job SubscriptionPlacementJob (id=54) RUNNING
2020-05-07T14:09:42+0000: Placing Order for Proxy Order 1
2020-05-07T14:09:42+0000: Issue in Subscription Order 2: complete
2020-05-07T14:09:42+0000: Placing Order for Proxy Order 7
2020-05-07T14:09:42+0000: Issue in Subscription Order 3: complete
2020-05-07T14:09:43+0000: [Worker(host:8dc5e7e6f434 pid:1)] Job SubscriptionPlacementJob (id=54) COMPLETED after 0.3378
2020-05-07T14:09:43+0000: [Worker(host:8dc5e7e6f434 pid:1)] 1 jobs processed at 2.8054 j/s, 0 failed
```

We'll see if we need to format these messages differently to make them
more greppeable.
2020-05-07 17:21:39 +02:00
Luis Ramos
468576ee8a Merge pull request #5329 from romale/master
Correct translations
2020-05-07 16:04:24 +01:00
Luis Ramos
c9b60d0f62 Merge pull request #5341 from mathewdbutton/5173-show-outstanding-order-balance-on-orders-page
Show outstanding balance on orders page
2020-05-07 16:03:58 +01:00
Luis Ramos
52b39d04a4 Merge pull request #5359 from mbudm/issue/5108
Add NavigationCheck to order cycles edit form
2020-05-07 14:37:32 +01:00
Matt-Yorkley
01d741509f Fix test of rendered properties AMS
Here the displayed properties that we're testing also rely on shops data (including the list of supplied properties), which is now cached for 15 seconds. We clear that cache entry so we can cleanly test only the caching of the properties AMS array.
2020-05-07 15:20:37 +02:00
Manvil George
63a1a6fefa More optimsations: removing unwanted code 2020-05-07 22:58:09 +10:00
Luis Ramos
66fe26fcc5 Merge pull request #5295 from Matt-Yorkley/shopfront-optimising
Enterprise serializer optimisations
2020-05-07 13:08:14 +01:00
Matt-Yorkley
460ab6cdb4 Use #allow instead of #stub 2020-05-07 13:20:30 +02:00
Matt-Yorkley
7457543c2b Adds spec for timed caching on shops data 2020-05-07 13:20:30 +02:00
Matt-Yorkley
6b6ab864ef Improve comment on Fragment Caching 2020-05-07 13:20:30 +02:00
Matt-Yorkley
e73c8232de Improve unit test in cache_service_spec 2020-05-07 13:20:30 +02:00
Matt-Yorkley
37821beb1b Extract home stats caching to method in service 2020-05-07 13:20:30 +02:00
Matt-Yorkley
2292cbaae4 Extract timed enterprise AMS fragment caching options to service 2020-05-07 13:20:28 +02:00
Luis Ramos
987347d5ab Move translation keys to new correct location 2020-05-07 12:18:40 +01:00
Luis Ramos
3c7970f72f Add select oc message when there are multiple OCs 2020-05-07 12:18:40 +01:00
Luis Ramos
d4980893a1 Refactor darker-background directive, extract method 2020-05-07 12:17:43 +01:00
Luis Ramos
0d6d071db2 Remove dead class .shopfront_hidden_message 2020-05-07 12:17:43 +01:00
Luis Ramos
cba9382230 Replace line-height with margin 2020-05-07 12:17:43 +01:00
Luis Ramos
7fcee0fe6d Fix problem in warning sign 2020-05-07 12:17:43 +01:00
Luis Ramos
f3347a8e16 Make teal links appear only when the darker background is activated
This way links in producers, about, etc, where the background is white will still appear as orange, as per design
2020-05-07 12:17:43 +01:00
Luis Ramos
782988b61c Fix with-darker-background class by moving it inside page-view selector and using opacity instead of just grey so that other elements in the page (shadow from element above) can be seen 2020-05-07 12:17:43 +01:00
Luis Ramos
21a1ba2fb5 Move translation keys according to new location in the customer_required partial 2020-05-07 12:17:43 +01:00
Luis Ramos
ba25986756 Fix some css rubocop issues 2020-05-07 12:17:43 +01:00
Luis Ramos
098ad6f250 Merge partial messages back to home partial where it is only used 2020-05-07 12:17:43 +01:00
Luis Ramos
319657d2c5 Move closed shop partial to /messages 2020-05-07 12:17:43 +01:00
Luis Ramos
eb773a813e Extract open shop message to partial 2020-05-07 12:17:43 +01:00
Luis Ramos
5dedbc4231 Extract customer_required message to separate partial 2020-05-07 12:17:43 +01:00
Luis Ramos
84c00fe215 Remove duplicate conditionals already present in ShopHelper#shop_tabs, when these partials are rendered, these conditions will always be true
In the shops partial, by adding the else, we avoid rendering empty space with an empty
products list in case the shop is closed
2020-05-07 12:17:43 +01:00
Luis Ramos
77d7d2b804 Make the background darker only in specific cases 2020-05-07 12:17:43 +01:00
Luis Ramos
b34fb79d69 Move content div to messages partial so that it's not used in the closed shop message (no margin according to design) 2020-05-07 12:17:43 +01:00
Luis Ramos
1c41061f9e If shop is closed show closed shop message partial in the home tab 2020-05-07 12:17:43 +01:00
Luis Ramos
b86081090f Extract closed shop message to a partial 2020-05-07 12:17:43 +01:00
Luis Ramos
dbdbe01d6a Add new style to closed shop message 2020-05-07 12:17:43 +01:00
Luis Ramos
0996c28c09 Memoize helper methods that are called several times in the views 2020-05-07 12:17:43 +01:00
Luis Ramos
5f70ef6e75 Improve style of closed shop message and remove border from message 2020-05-07 12:17:43 +01:00
Luis Ramos
e0b3e9a040 Remove border of message and paddings, add background color, change link color and split message in two lines 2020-05-07 12:17:43 +01:00
Matt-Yorkley
2876b98155 Use time-based caching on rendered AMS data for shops 2020-05-07 13:11:53 +02:00
Matt-Yorkley
545ca85644 Extract caching of homepage stats to service 2020-05-07 13:11:28 +02:00
Luis Ramos
c64ba75e8d Merge pull request #5348 from luisramos0/single_oc_selector
Replace select box with text when only one OC is available for selection
2020-05-07 12:07:19 +01:00
Luis Ramos
56b9737676 Merge pull request #5343 from luisramos0/windows
Make OC selector options color explicitly gray and not white
2020-05-07 11:44:14 +01:00
Luis Ramos
d967d855fc Merge pull request #5319 from Matt-Yorkley/caching-by-class
[Caching] Caching data by class
2020-05-07 11:43:44 +01:00
Luis Ramos
1e9b4516cb Merge pull request #5318 from Matt-Yorkley/caching-api
[Caching] API Action Caching on shop filters
2020-05-07 11:42:52 +01:00
Transifex-Openfoodnetwork
ffebaee9c7 Updating translations for config/locales/tr.yml 2020-05-07 17:34:22 +10:00
Manvil George
a629e1ecb7 Remove incorrect commenting 2020-05-07 11:46:49 +10:00
Manvil George
d7cf825531 Minimised version of the svg 2020-05-07 11:33:35 +10:00
Manvil George
585a754b18 Missed out on inverting the boolean expression 2020-05-07 11:31:27 +10:00
Kok Hung Cheah
edcdae6b58 Update jquery-ui-rails version to 4.1.1 2020-05-07 10:48:07 +10:00
Manvil George
d3504c177e A better SVG 2020-05-07 10:40:48 +10:00
Manvil George
7123d8347a XML Formatted The SVG 2020-05-07 09:50:27 +10:00
Manvil George
7847c4ed9e Removing unwanted blank lines 2020-05-07 09:37:35 +10:00
Manvil George
5b009f606a More optimizations around coding standards 2020-05-07 09:07:32 +10:00
Luis Ramos
066f978c59 Update ruby version in GETTING_STARTED 2020-05-06 22:19:43 +01:00
François Turbelin
d5b69ec90c Remove before call when no factorization 2020-05-06 22:04:56 +02:00
François Turbelin
13f00480ce Use serialized_data 2020-05-06 22:04:56 +02:00
François Turbelin
f6e06b5658 Use default enterprise_id to get the entreprise 2020-05-06 22:04:56 +02:00
François Turbelin
99798b010f Use ActionController::Base 2020-05-06 22:04:56 +02:00
François Turbelin
43293f00df Make the endpoint unrelated to enterprise id
Better to avoid to have endpoint specific to an enterprise
as we don't know the enterprise id yet on DFC side
2020-05-06 22:04:56 +02:00
François Turbelin
f0f8224934 Put back former lighter inclusions 2020-05-06 22:04:56 +02:00
François Turbelin
013198b33b Update routes 2020-05-06 22:04:56 +02:00
François Turbelin
830bf796d0 Update authors and remove emails 2020-05-06 22:04:56 +02:00
François Turbelin
dd9c994f9d Use spree_api_controller_setup layer 2020-05-06 22:04:56 +02:00
François Turbelin
c1d173d601 Add the access token logic, light version 2020-05-06 22:04:56 +02:00
François Turbelin
a8fb059482 Add basic spec 2020-05-06 22:04:56 +02:00
François Turbelin
496174255f Add REAME.md file 2020-05-06 22:04:56 +02:00
François Turbelin
80bbd5d513 Adjust namespace and scope for routes 2020-05-06 22:04:56 +02:00
François Turbelin
b152e532d2 Cosmetics 2020-05-06 22:04:56 +02:00
François Turbelin
d9d218f661 Add DFC Provider engine 2020-05-06 22:04:56 +02:00
Luis Ramos
d1392d400a Merge pull request #5350 from luisramos0/edit_order_snail
Improve order edit page in data inconsistency scenario (follow up from S2 #4186)
2020-05-06 20:33:40 +01:00
Luis Ramos
20984ac008 Merge pull request #5379 from openfoodfoundation/dependabot/bundler/ddtrace-0.35.1
Bump ddtrace from 0.35.0 to 0.35.1
2020-05-06 20:31:20 +01:00
dependabot-preview[bot]
7f9dfb6142 Bump ddtrace from 0.35.0 to 0.35.1
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.35.0 to 0.35.1.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.35.0...v0.35.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 19:20:07 +00:00
Transifex-Openfoodnetwork
6c71259b25 Updating translations for config/locales/en_FR.yml 2020-05-07 03:10:34 +10:00
Transifex-Openfoodnetwork
29a54cbfe4 Updating translations for config/locales/fr.yml 2020-05-07 03:10:22 +10:00
Manvil George
bf3bb4fb63 Review Comments incorporation 2020-05-07 00:54:01 +10:00
Transifex-Openfoodnetwork
05820c7ef0 Updating translations for config/locales/tr.yml 2020-05-07 00:14:33 +10:00
Transifex-Openfoodnetwork
492f96c90f Updating translations for config/locales/tr.yml 2020-05-07 00:11:28 +10:00
Pau Pérez Fabregat
ace3767eb2 Merge pull request #5333 from coopdevs/add-worker-docker-container
Create a container to run a DJ worker in dev
2020-05-06 16:11:21 +02:00
Luis Ramos
c7c8bfe212 Merge pull request #5347 from luisramos0/hide_oc_selector_for_private_shop
[Mobile] Hide OC selector if shop requires login/customer
2020-05-06 14:31:52 +01:00
Pau Pérez Fabregat
dadc17398f Merge pull request #5371 from Matt-Yorkley/cart-add-error
Cart add error handling
2020-05-06 15:22:06 +02:00
Pau Pérez Fabregat
194c87e805 Merge pull request #5361 from Matt-Yorkley/cart-with-soft-deletion
Cart with soft-deletion
2020-05-06 15:20:35 +02:00
Manvil George
6c51841039 Reverting unrelated changes 2020-05-06 23:05:34 +10:00
Manvil George
d1e03909ec Minor CSS alterations to make the button visible at the bottom 2020-05-06 22:30:33 +10:00
Pau Pérez Fabregat
ead21a97cc Merge pull request #5327 from openfoodfoundation/luisramos0-patch-2
Add link to docker tips wiki page to Docker.md
2020-05-06 14:10:37 +02:00
Pau Pérez Fabregat
a0012e1c5b Merge pull request #5326 from openfoodfoundation/luisramos0-patch-1-1
Add link to Docker.md from GETTING_STARTED.md
2020-05-06 12:31:00 +02:00
Matt-Yorkley
9c24c1cd05 Ensure #caches_action works in test suite 2020-05-06 12:24:33 +02:00
Matt-Yorkley
4aac97c985 Add feature spec for action caching of taxon and properties endpoints 2020-05-06 11:47:51 +02:00
Matt-Yorkley
7e4c00ba3f Ensure caching works in cache tests for API controllers 2020-05-06 11:47:45 +02:00
Pau Pérez Fabregat
65433c6ac6 Merge pull request #5351 from luisramos0/improve_sample_data
Improve ship methods names on sample data
2020-05-06 11:27:34 +02:00
Pau Pérez Fabregat
b3205c5459 Merge pull request #5309 from luisramos0/better-karma
Make dockerfile install node and adapt karma browser config to work inside a docker container
2020-05-06 11:11:00 +02:00
Transifex-Openfoodnetwork
d52db51b29 Updating translations for config/locales/nb.yml 2020-05-06 17:25:07 +10:00
Mathew Button
e088b27a13 Always display the outstanding balance if not zero 2020-05-06 16:45:44 +10:00
Manvil George
f802775ad6 Fixing up old Enterprise Modal references 2020-05-06 15:37:28 +10:00
Manvil George
e9cba32f31 Appeasing the Codeclimate Workers 2020-05-06 13:13:35 +10:00
Manvil George
19b5f6a562 Handling multiple enterprises at the same location
Changes:
* Introduced a cluster marker to denote multiple points of interest at
the same location
* Seperated out a plain enterprise modal into 2 parts
  * A modal called EnterpriseModal for showing a list of enterprises at
  the same location
  * A box called EnterpriseBox(which by the way is also a technically a
  modal) that shows the details of that particular enterprise selected
* If at a location there exists only a single enterprise then only the
box is shown
2020-05-06 12:54:42 +10:00
Robin Klaus
f43380fce5 Added inputmode attribute to show appropriate mobile keyboard for selected field 2020-05-06 12:52:53 +10:00
Robin Klaus
7dce53a77b Added inputmode attribute to show appropriate mobile keyboard for selected field 2020-05-06 12:46:37 +10:00
Steve Roberts
4573127c59 Add NavigationCheck to order cycles edit form
- Simplify if statements with safe navigation operator
- Simplify order cycle nav check spec
- Rename nav check callback so a comment is not needed and remove unnecessary assignation to $scope
2020-05-06 10:43:21 +10:00
Matt-Yorkley
61d7adaf74 Enable optional caching tag in test metadata 2020-05-05 18:43:09 +02:00
Matt-Yorkley
bdc2d002fa Update karma tests 2020-05-05 17:22:12 +02:00
Matt-Yorkley
13e4411b89 Add error message on cart populate failure and don't keep re-sending the data to the server.
This was triggering many requests to be continuously re-sent in a very problematic way (server-melting), and with no user feedback.
2020-05-05 17:22:10 +02:00
Luis Ramos
c2a9a698f4 Merge pull request #5312 from openfoodfoundation/dependabot/bundler/unicorn-5.5.5
Bump unicorn from 5.5.4 to 5.5.5
2020-05-05 15:24:59 +01:00
Matt-Yorkley
9a7807b134 Don't continuously re-post data on cart error 2020-05-05 16:04:05 +02:00
Luis Ramos
24414b83dd Merge pull request #5325 from oeoeaio/enhancement-5214
Add order number and date/time to order cycles customer report
2020-05-05 14:34:47 +01:00
Matt-Yorkley
4f4b3fb206 Don't render twice 🙈 2020-05-05 15:21:05 +02:00
Matt-Yorkley
6afda87baf Add explanatory comment on soft-deleted variant stock logic 2020-05-05 13:57:50 +02:00
Matt-Yorkley
0a28abbf2d Add additional feature specs for soft-deleted variants in cart 2020-05-05 13:57:50 +02:00
Matt-Yorkley
26ba76cff9 Fix soft-deletion in CartService and update spec 2020-05-05 13:57:50 +02:00
Matt-Yorkley
a3458aa562 Ensure VariantStockLevels can process soft-deleted variants 2020-05-05 13:57:50 +02:00
Matt-Yorkley
0e429da377 Return zero available stock (total_on_hand) for variants that are soft-deleted 2020-05-05 13:57:50 +02:00
Matt-Yorkley
eb51b87bea Add spec for current soft deletion behaviour in OrderCycle#variants_distributed_by scope 2020-05-05 13:57:50 +02:00
Matt-Yorkley
d3de1ce47e Add spec for current soft deletion behaviour in VariantOverride#indexed 2020-05-05 13:57:50 +02:00
Matt-Yorkley
5639b21c77 Add tests for current soft-deleted variant behavior in CartService 2020-05-05 13:57:50 +02:00
Matt-Yorkley
068c8feea7 Merge pull request #5289 from Matt-Yorkley/cart-populate
Cart populate
2020-05-05 13:56:17 +02:00
François Turbelin
6e5cbebf4a Change date value on order_and_distributor_report 2020-05-05 12:27:17 +02:00
François Turbelin
9cfd7db99d Change date displayed on sales_tax reports 2020-05-05 12:27:17 +02:00
Luis Ramos
bcfa8982ef Merge pull request #5364 from openfoodfoundation/dependabot/bundler/ddtrace-0.35.0
Bump ddtrace from 0.34.2 to 0.35.0
2020-05-05 10:58:13 +01:00
Matt-Yorkley
805f91e838 Remove unnecessary #all call 2020-05-05 09:56:08 +02:00
Matt-Yorkley
a3757992b5 Use #tap to destroy and remove before block 2020-05-05 09:55:14 +02:00
Steve Roberts
3b8acdc577 Split order_cycle_spec into smaller specs grouped by theme 2020-05-05 15:39:45 +10:00
dependabot-preview[bot]
7180af2736 Bump ddtrace from 0.34.2 to 0.35.0
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.34.2 to 0.35.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.34.2...v0.35.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 22:46:59 +00:00
Eduardo
2fca16f02f change shop name to be link to shop on transactions page 2020-05-04 07:06:07 -03:00
Mathew Button
fe6c810505 Add brackets in view instead of API response 2020-05-04 19:09:18 +10:00
Luis Ramos
44872844ed Make ship methods in sample data have the name of the enterprise so it's easier to distinguish them 2020-05-03 16:36:12 +01:00
Luis Ramos
bf0b941e1c Merge pull request #4935 from coopdevs/data-archiving
Allow data archiving using the :truncate_data task
2020-05-03 12:58:31 +01:00
Luis Ramos
e2b26b2e9c Replace break with if
What we would need would be a continue, not break, so that other units will be processed without halting the cycle through the units
2020-05-03 12:00:23 +01:00
Luis Ramos
92d0a5b735 Change default user from spree@example.com to ofn@example.com 2020-05-03 10:12:43 +01:00
Luis Ramos
8e27ace563 Adapt specs where there is only one OC available to the absence of the OC selector 2020-05-02 20:16:41 +01:00
Transifex-Openfoodnetwork
93881a742e Updating translations for config/locales/en_GB.yml 2020-05-03 05:09:16 +10:00
Luis Ramos
b92e257e44 Fix codeclimate issue 2020-05-02 19:12:47 +01:00
Luis Ramos
fa908d4024 Extract change_order_cycle partial from main enterprise shop view 2020-05-02 19:01:36 +01:00
Luis Ramos
7fd14cf29b Adjust line height of select label and select itself 2020-05-02 19:01:36 +01:00
Luis Ramos
ef0e9dc0ca Replace select box with text when only one OC is available for selection 2020-05-02 19:01:33 +01:00
Luis Ramos
89cb447387 Hide OC selector if shop requires login/customer 2020-05-02 17:56:49 +01:00
Luis Ramos
b568d25446 Update all locales with the latest Transifex translations 2020-05-02 17:08:53 +01:00
Luis Ramos
303464a04e Merge pull request #5297 from openfoodfoundation/transifex
Transifex
2020-05-02 15:40:54 +01:00
Luis Ramos
0662c57d9d Merge pull request #5344 from luisramos0/debug_assets
Move PROFILE debug assets flag to another ENV var
2020-05-02 14:21:15 +01:00
Luis Ramos
acb7e9751b Move debug assets flag to another env var so we go back to having both profile and debug assets disabled by default 2020-05-02 10:42:49 +01:00
Luis Ramos
9ae3ad9279 Move rule on option out of the select rule to fix rubocop issue 2020-05-01 17:43:52 +01:00
Luis Ramos
240e2a36d3 Make option color explicitly gray and not white otherwise we will have options render white on white on some browsers, namely chrome on windows 10 2020-05-01 17:39:12 +01:00
Mathew Button
8087e6b31b Show outstanding balance on orders page
Prior to this change, there was no way of knowing how much was owed (or
in need of refunding) at a glance for each order on the orders index page,
this information was only available by clicking through to an order
payment page

This change adds the outstanding balance for each order
2020-05-01 21:38:20 +10:00
Transifex-Openfoodnetwork
39875308c2 Updating translations for config/locales/en_FR.yml 2020-05-01 04:55:35 +10:00
Transifex-Openfoodnetwork
c424e7b65e Updating translations for config/locales/fr.yml 2020-05-01 04:55:21 +10:00
Pau Perez
9d253e1e3e Create a container to run a DJ worker in dev 2020-04-30 17:52:22 +02:00
Matt-Yorkley
1990417b72 Test values are not fetched from database when cache exists 2020-04-30 17:37:48 +02:00
Matt-Yorkley
7a22f7f783 Move and rename caching spec 2020-04-30 17:37:45 +02:00
Luis Ramos
74c7a01151 Merge pull request #5259 from luchiago/add-extra-social-media-to-emails
Add extra social media to order confirmation email
2020-04-30 15:01:09 +01:00
Matt-Yorkley
f724d1b572 Add feature spec for caching properties and taxons AMS 2020-04-30 15:35:39 +02:00
Luis Ramos
8845260979 Merge pull request #5285 from rmklaus12/5246-missing-translation-orders-list
5246 missing translation orders list
2020-04-30 14:00:26 +01:00
Pau Perez
1903134e13 Add timestamps to OC schedule join table
This is critical to debug bugs related to subscriptions.

Essentially, `has_and_belongs_to_many` doesn't give us the option for
any other column that the foreign keys themselves:

> A has_and_belongs_to_many association creates a direct many-to-many
> connection with another model, with no intervening model.

Source: https://guides.rubyonrails.org/v3.2/association_basics.html#the-has_and_belongs_to_many-association

Note however, that there's no way to update an order_cycle_schedule,
that I can think of but `updated_at` doesn't do any harm.
2020-04-30 15:00:13 +02:00
Pau Pérez Fabregat
4174ea69a1 Merge pull request #5247 from chrishil1/Placeholders_variant
Added placeholders in variant edit page
2020-04-30 12:05:59 +02:00
Pau Pérez Fabregat
676add18c3 Merge pull request #5322 from luisramos0/dead_content
Delete some dead views
2020-04-30 12:02:14 +02:00
Matt-Yorkley
a35f8cdb02 Move cache keys used in views into the cache service 2020-04-30 09:45:15 +02:00
Luis Ramos
8a107bee98 Merge pull request #5235 from luisramos0/mail_methods
Remove smtp config from admin config page
2020-04-29 19:10:02 +01:00
Matt-Yorkley
210029aaff Enable optional caching tag in test metadata 2020-04-29 20:04:54 +02:00
Transifex-Openfoodnetwork
5bc5ef9a9d Updating translations for config/locales/pt_BR.yml 2020-04-30 03:52:57 +10:00
Matt-Yorkley
f2cd122ec8 Update variant_stock_spec for unsaved and soft-deleted cases 2020-04-29 18:29:44 +02:00
Matt-Yorkley
4054bdd722 Add Bugsnag call for "variant with no stock item" case 2020-04-29 17:34:48 +02:00
romale
3a4ef2697c Correct translations
Without it, some labels not translated to other language.
And, please check code:
en.admin.subscription.subscriptions - does not exists
but
en.admin.subscriptions.subscriptions - is exist
2020-04-29 18:27:09 +03:00
Matt-Yorkley
2bdda7de04 Change order of methods for easier reading 2020-04-29 17:22:46 +02:00
Matt-Yorkley
92a881c584 Simplify relation used in #exchanges_supplying 2020-04-29 17:19:16 +02:00
Pau Perez
647a7bdddf Clarify we won't use truncate_date in prod yet
We initially aimed at implementing data archiving in production reusing
this rake task but priorities have changed. It'll be just a refactor for
now.
2020-04-29 17:00:53 +02:00
Pau Perez
e0228f66af Default to archiving data older than 2 years.
This is safer than the current 3 months.
2020-04-29 16:49:43 +02:00
Pau Perez
38ea95ea85 Prevent nil input to turn into 0 2020-04-29 16:49:43 +02:00
Pau Perez
6ceeda7d9e Instrument TruncateData logging start and end 2020-04-29 16:49:43 +02:00
Pau Perez
703706ee0b Replace one-letter variable with full word 2020-04-29 16:49:43 +02:00
Pau Perez
e2a3dd0c6f Delete only return auths. of the deleted orders
They are associated to order and as such we can't remove them all
blindly.
2020-04-29 16:49:43 +02:00
Pau Perez
a3b8638faf Delete sessions older than two weeks
This affects users that are actively purchasing, so 2 weeks data is more
than enough. Others can afford to log in again.
2020-04-29 16:49:43 +02:00
Pau Perez
4f015320a3 Upper case DELETE statement
This keeps it consistent with the rest of the log.
2020-04-29 16:49:43 +02:00
Pau Perez
0f1d57db73 Delete LogEntries older than a month
They are useful for troubleshooting but a month data seems enough.
2020-04-29 16:49:43 +02:00
Pau Perez
5f84c51c13 Delete StateChanges older than a month
They are useful for troubleshooting but a month data seems enough.
2020-04-29 16:49:43 +02:00
Pau Perez
d215c76bc9 Make it even more explicit the action is dangerous
We're yelling at the person to make a backup before proceeding.
2020-04-29 16:49:43 +02:00
Pau Perez
e1a80edb7e Carefully doc how to archive data from an instance 2020-04-29 16:49:43 +02:00
Pau Perez
a4372e4d31 Fix long lines 2020-04-29 16:49:43 +02:00
Pau Perez
b6d3c3039a Fix "Method has too many lines" violation 2020-04-29 16:49:43 +02:00
Pau Perez
f199cb1bea Warn but allow executing :truncate_data in prod 2020-04-29 16:49:43 +02:00
Pau Perez
be123b2a72 Specify how much data to remove in :truncate_data 2020-04-29 16:49:43 +02:00
Pau Perez
60d29d619f Replace :truncate_data definition with new class
And cover it with a test.
2020-04-29 16:49:43 +02:00
Pau Perez
78fd785f0c Extract TruncateData out of :truncate_data task 2020-04-29 16:49:43 +02:00
Pau Pérez Fabregat
f9f4bdae8f Merge pull request #5238 from Matt-Yorkley/moar-performance
Improve Pain Points
2020-04-29 16:36:15 +02:00
Luis Ramos
0f16c43f21 Add link to docker tips wiki page to Docker.md 2020-04-29 14:16:59 +01:00
Luis Ramos
865024fc1f Add link to the docker setup guide to the getting started guide. 2020-04-29 14:05:45 +01:00
Luis Ramos
407d890d23 Merge pull request #5315 from Matt-Yorkley/ordercyles-controller-tweaks
OrderCylesController tweaks
2020-04-29 13:50:10 +01:00
Luis Ramos
0e5d7c1eb1 Add migration to drop dead spree_mail_methods table and some dead mail_methods preferences 2020-04-29 13:34:50 +01:00
Luis Ramos
a38b18bd0d Remove smtp config from admin config page 2020-04-29 13:34:19 +01:00
Rob H
6405c34428 Add order number and date/time to order cycles customer report 2020-04-29 21:20:14 +10:00
Pau Pérez Fabregat
e7df9bb58d Merge pull request #5178 from coopdevs/dont-populate-empty-cart
Dont populate empty cart
2020-04-29 13:08:26 +02:00
Matt-Yorkley
d3af3d3f27 Avoid extra query on stock_items every time #on_demand is called on a variant.
In the case where the variant has not been saved yet, we can use #new_record? here instead of #stock_items.empty?, to avoid an additional query. This can be called a vast number of times per request, in various N+1s. The other case where we need to return here is when a variant has been deleted, so #stock_items will be empty and #stock_item will be nil. Likewise, we can just check that with #deleted? and avoid #stock_items.empty?
2020-04-28 20:54:04 +02:00
Matt-Yorkley
9682544442 Eager-load and update BasicEnterpriseSerializer 2020-04-28 20:10:40 +02:00
Matt-Yorkley
f4bcf6c6d5 Eager-load line_item associations in order 2020-04-28 20:10:40 +02:00
Luis Ramos
e6fa08edfc Delete some dead views 2020-04-28 19:07:19 +01:00
Transifex-Openfoodnetwork
18fc4b7c92 Updating translations for config/locales/ca.yml 2020-04-29 01:13:42 +10:00
Transifex-Openfoodnetwork
612cc45ab7 Updating translations for config/locales/en_FR.yml 2020-04-29 01:13:35 +10:00
Transifex-Openfoodnetwork
16e289bf37 Updating translations for config/locales/en_GB.yml 2020-04-29 01:13:29 +10:00
Transifex-Openfoodnetwork
b54c6fcb26 Updating translations for config/locales/nb.yml 2020-04-29 01:13:26 +10:00
Transifex-Openfoodnetwork
8365c66add Updating translations for config/locales/fil_PH.yml 2020-04-29 01:13:22 +10:00
Transifex-Openfoodnetwork
5590671c23 Updating translations for config/locales/fr.yml 2020-04-29 01:13:19 +10:00
Luis Ramos
9e43661127 Merge pull request #5153 from luisramos0/bye_bye_ga
Bye bye Google Analytics
2020-04-28 16:09:16 +01:00
Matt-Yorkley
ec581dccb8 Use class-based caching for queries in EnterpriseInjectionData 2020-04-28 15:11:59 +02:00
Matt-Yorkley
4d098448f5 Cache rendered AMS arrays in darkswarm layout based on latest timestamps of rendered object classes 2020-04-28 15:11:59 +02:00
Matt-Yorkley
53ebe10483 Fix issue with generic primary taxon in product factory changing which taxons are correctly counted as being in open order cycles. 2020-04-28 15:11:59 +02:00
Matt-Yorkley
eb5f8b85ff Touch primary taxon when a product's primary_taxon is changed 2020-04-28 15:11:59 +02:00
Matt-Yorkley
1b18808d21 Touch ShippingMethod when it's assigned to a new distributor 2020-04-28 15:11:59 +02:00
Matt-Yorkley
6ef345c5d8 Touch taxon when a taxon is applied to a product 2020-04-28 15:11:59 +02:00
Matt-Yorkley
a25a75bbe8 Ensure action caching includes GET params
By default the auto-generated action cache keys looks like this:
`views/0.0.0.0:3000/api/order_cycles/1/properties`

With this change the cache keys now look like this:
`views/0.0.0.0:3000/api/order_cycles/1/properties?distributor=3`
2020-04-28 15:11:14 +02:00
Matt-Yorkley
ea1ec1a1c6 Use ActionCaching in OrderCyclesController (taxons and properties) 2020-04-28 15:11:12 +02:00
Matt-Yorkley
975afb3152 Enable use of Action Caching in the API 🎉
See: https://guides.rubyonrails.org/api_app.html#adding-other-modules
2020-04-28 15:11:00 +02:00
Kristina Lim
265871932f Merge pull request #5146 from coopdevs/dev-mode-profiling-settings
Add PROFILE var to set production-like settings
2020-04-28 20:31:13 +08:00
Kristina Lim
c34570e96e Merge pull request #5313 from kristinalim/fix/mirror_db_script_bucket
Fix script for syncing public/ in AWS bucket to local
2020-04-28 20:28:05 +08:00
Matt-Yorkley
ac166f3590 Add CacheService 2020-04-28 14:15:16 +02:00
Matt-Yorkley
e4985a9d51 Avoid needlessly fetching the current user records (for authentication and API key checks)
These endpoints are absolutely public, and don't need the current user at any point.
2020-04-28 14:06:02 +02:00
Matt-Yorkley
eb7de18298 Return early (before hitting the DB) in complex product list rendering if we already know the order cycle is closed 2020-04-28 13:51:25 +02:00
Matt-Yorkley
67a7140642 Memoize distributor and order_cycle in Api::OrderCyclesController 2020-04-28 13:48:07 +02:00
Luis Ramos
868929eed3 Merge pull request #4993 from luisramos0/move_ent_fees
Change engine routes to better work with specs in rails 4
2020-04-28 11:48:41 +01:00
Transifex-Openfoodnetwork
8e6d53f6c6 Updating translations for config/locales/nb.yml 2020-04-28 17:59:10 +10:00
Robin Klaus
f072e9d9c2 Add missing translations on order list page 2020-04-28 16:47:39 +10:00
Kristina Lim
7c985f39ab Fix script for syncing public/ in AWS bucket to local 2020-04-28 13:22:48 +08:00
Kristina Lim
efb83c2f95 Merge pull request #5250 from mkllnk/mirror-db-script
Add cache to mirror_db script
2020-04-28 13:18:29 +08:00
Matt-Yorkley
74e81b078f Avoid N+1s in Order#cap_quantity_at_stock! 2020-04-28 01:11:28 +02:00
Matt-Yorkley
3fa2b3161f Avoid N+1s when using OrderCycle#exchanges_supplying 2020-04-28 01:10:07 +02:00
Matt-Yorkley
fe2bf8d531 Eager-load variants and stock items when doing stock checks on multiple variants 2020-04-28 01:05:42 +02:00
Matt-Yorkley
eb858159ce Eager-load :default_price on variants 2020-04-28 01:04:22 +02:00
Matt-Yorkley
43869fc140 Replace fired events with clearer method call
The 'spree.cart.add' event has no listeners in spree_core on in ofn. The 'spree.order.contents_changed' just has a single listener that calls `order.update_distribution_charge`.
2020-04-28 00:56:18 +02:00
Matt-Yorkley
a5c4364f92 Fetch (or create) current_order only once 2020-04-28 00:52:09 +02:00
dependabot-preview[bot]
02775d033d Bump unicorn from 5.5.4 to 5.5.5
Bumps [unicorn](https://yhbt.net/unicorn/) from 5.5.4 to 5.5.5.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 20:50:56 +00:00
Luis Ramos
6559b4d3a4 Make dockerfile install node and adapt karma browser config to work inside a docker container 2020-04-27 19:05:11 +01:00
Luis Ramos
d851aa5106 Add model definition to migration to make migration more resilient 2020-04-27 18:40:56 +01:00
Luis Ramos
c5b9727177 Remove ga_cookies_preference from DB 2020-04-27 18:40:56 +01:00
Luis Ramos
248b0016d4 Remove trackers and google analytics 2020-04-27 18:40:33 +01:00
Luis Ramos
d8d6bad11c Remove config and sections related to google analytics in the cookies banner and cookies page 2020-04-27 18:40:00 +01:00
Luis Ramos
ab16931d70 Merge pull request #5257 from luisramos0/stripe_sca_payments_last
StripeSCA - reuse better method to fetch last payment of an order to avoid nasty bugs in the future
2020-04-27 18:34:35 +01:00
Matt-Yorkley
e33de8a20e Update specs and refactor a bit 2020-04-27 19:27:07 +02:00
Matt-Yorkley
468cb3f57e Remove obviously private methods from the public interface in CartService
These methods are not called from anywhere in the app, only in a couple of tests in cart_service_spec.
2020-04-27 19:27:07 +02:00
Matt-Yorkley
1152f307e2 Eager-load associated line_items data in #update_distribution_charge! 2020-04-27 19:27:07 +02:00
Matt-Yorkley
25525d4f75 Use guard clause in each block 2020-04-27 19:27:07 +02:00
Matt-Yorkley
a759d8c7c7 Avoid N+1s for variants and for line_items of variants 2020-04-27 19:27:07 +02:00
Matt-Yorkley
b3242041e5 Return earlier (before scoping process, if possible) 2020-04-27 19:27:07 +02:00
Matt-Yorkley
106bb7a27f Rename some variables and add comments for clarity in cart_service 2020-04-27 19:27:07 +02:00
Matt-Yorkley
2334ab6d00 Delete some dead code in cart_service
This Bugsnag error was added a year ago and hasn't been seen
2020-04-27 19:27:07 +02:00
Matt-Yorkley
11af5dffdc Memoize scoper in cart_service
Avoids fetching all of the hub's variant overrides from the db every time it's initialized.
2020-04-27 19:27:07 +02:00
Matt-Yorkley
3ce7e96777 Add some debounce and an onwheel hack to product add to basket field
Debounce ensures we don't get a million requests if the up/down buttons are clicked rapidly. The onwheel hack adds some protection against scrolling triggering the quantity up/down. See: https://stackoverflow.com/a/51076231
2020-04-27 19:27:07 +02:00
Transifex-Openfoodnetwork
670fff9d36 Updating translations for config/locales/es_CR.yml 2020-04-28 02:38:07 +10:00
Transifex-Openfoodnetwork
171ba09663 Updating translations for config/locales/fr.yml 2020-04-28 01:40:44 +10:00
Transifex-Openfoodnetwork
65c9c287e8 Updating translations for config/locales/en_FR.yml 2020-04-28 01:37:49 +10:00
Transifex-Openfoodnetwork
4332734f27 Updating translations for config/locales/ca.yml 2020-04-28 01:37:44 +10:00
Transifex-Openfoodnetwork
340f669506 Updating translations for config/locales/en_GB.yml 2020-04-28 01:37:36 +10:00
Transifex-Openfoodnetwork
3b7ad0ef4e Updating translations for config/locales/ca.yml 2020-04-27 23:49:48 +10:00
Luis Ramos
6e23f5bdac Merge pull request #5233 from luisramos0/stripe_sca_bo
[StripeSCA] Fix card payments in the Backoffice
2020-04-27 13:00:24 +01:00
Luis Ramos
8b5378e673 Merge pull request #5251 from luisramos0/Issue4654
Change Result of PriceSack Calculation from Integers to Floats, clone #4812
2020-04-27 12:36:18 +01:00
Transifex-Openfoodnetwork
ba32e2d676 Updating translations for config/locales/fil_PH.yml 2020-04-27 18:08:38 +10:00
Pau Pérez Fabregat
74c4722cfe Merge pull request #5286 from rmklaus12/4966-missing-translation-admin-prod-list
4966 missing translation admin prod list
2020-04-27 09:28:57 +02:00
Luis Ramos
b3eda9fecb Merge pull request #5256 from dacook/5190-fix-order-sorting
Fix sorting of orders list
2020-04-26 14:24:00 +01:00
Pau Perez
c224df9b6a Do not trigger an orderChanged with null quantity
When loading the page $watchGroup calls the listener function for every
listed line item but with a set variant and null quantity and
max_quantity. There's no point on computing an order change when there
was none.

This saves an empty request on the second most used endpoint of the app,
specially busy when users are placing orders.
2020-04-24 15:54:46 +02:00
Luis Ramos
b9c86d54b0 Merge pull request #5261 from luisramos0/search-iphone
[Mobile] Make search box font size be 16px so that no zoom happens on iphone
2020-04-24 11:30:26 +01:00
Transifex-Openfoodnetwork
cebba4dd43 Updating translations for config/locales/en_GB.yml 2020-04-24 18:22:49 +10:00
Matt-Yorkley
43ba73ac19 Avoid expensive queries for supplied product properties if enterprise is not a supplier 2020-04-23 21:51:39 +02:00
Matt-Yorkley
728326c2a5 Eager-load :properties on supplied products in enterprise_shopfront_serializer 2020-04-23 21:48:41 +02:00
Transifex-Openfoodnetwork
8bcc9456d8 Updating translations for config/locales/en_FR.yml 2020-04-24 04:30:04 +10:00
Transifex-Openfoodnetwork
5f51b21fe9 Updating translations for config/locales/fr.yml 2020-04-24 04:29:52 +10:00
Luis Ramos
2984829790 Merge pull request #5253 from luisramos0/edit_order
Make edit order page work even if inventory_items dont have a corresponding line_item in the order
2020-04-23 19:27:31 +01:00
Luis Ramos
f366aa2605 Merge pull request #5290 from openfoodfoundation/dependabot/bundler/mini_racer-0.2.10
Bump mini_racer from 0.2.9 to 0.2.10
2020-04-23 18:53:14 +01:00
Matt-Yorkley
bf16a10129 Update all locales with the latest Transifex translations 2020-04-23 19:05:22 +02:00
Matt-Yorkley
43836d2b30 Merge pull request #5292 from openfoodfoundation/transifex
Transifex
2020-04-23 18:53:36 +02:00
Pau Pérez Fabregat
82156e32e0 Merge pull request #4920 from luisramos0/api_var_ctrl
Bring Spree::Variant#active from Spree so that we can improve it
2020-04-23 17:35:49 +02:00
Matt-Yorkley
69cf7dff2c Memoize :active in enterprise serializers that call it multiple times 2020-04-23 13:17:44 +02:00
Pau Pérez Fabregat
a8ca471cd2 Merge pull request #5189 from Matt-Yorkley/mobile-buttons
[Mobile UX] Style updates on buttons
2020-04-23 12:56:49 +02:00
Luis Ramos
aa52cf8bf0 Merge pull request #5254 from chrishil1/missing_translation_save_as_default
Added missing translation to column dropdown
2020-04-23 11:08:33 +01:00
Luis Ramos
ac6501c5d8 Merge pull request #5195 from luisramos0/prod_helper
Delete dead code from several places...
2020-04-23 11:07:44 +01:00
Luis Ramos
568e570b4b Move method to more generic helper to use it in mailers 2020-04-23 16:08:10 +10:00
Luis Ramos
42be6c905f Added spec for OrderPaymentFinder 2020-04-23 16:08:10 +10:00
Luis Ramos
d482cccefe Use OrderPaymentFinder methods instead of payments.last and payments.pending.last 2020-04-23 16:08:10 +10:00
Luis Ramos
52becf6abc Extract payment method logic from OrderPaymentFinder into the orders helper 2020-04-23 16:08:10 +10:00
Transifex-Openfoodnetwork
15319d66e2 Updating translations for config/locales/es_CR.yml 2020-04-23 12:27:58 +10:00
Robin Klaus
d8f4df4bcc Fixed missing translation, added keys to en.yml file 2020-04-23 09:58:47 +10:00
dependabot-preview[bot]
240d4a7802 Bump mini_racer from 0.2.9 to 0.2.10
Bumps [mini_racer](https://github.com/discourse/mini_racer) from 0.2.9 to 0.2.10.
- [Release notes](https://github.com/discourse/mini_racer/releases)
- [Changelog](https://github.com/rubyjs/mini_racer/blob/master/CHANGELOG)
- [Commits](https://github.com/discourse/mini_racer/compare/v0.2.9...v0.2.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 19:41:50 +00:00
Luis Ramos
3dff11e405 Merge pull request #5182 from luisramos0/nokogiri
Bump Nokogiri
2020-04-22 20:40:04 +01:00
Pau Perez
2d9b41729e Use memory cache-store when profiling
Or you want see any change when playing fragment-caching or other caching
strategies.
2020-04-22 17:56:56 +02:00
Pau Perez
de8d8e658c Add PROFILE var to set production-like settings
I took this from a recent newsletter I read. Sometimes replication
performance issues locally is actually slower than production due to dev
mode settings (code reloading, etc.), heavy de-only gems and the asset
pipeline.

The PROFILE env var switches these settings all at the same time,
giving us an environment closer to production, essential for reliable
profiling. Then, rack-mini-profiler is going to be more accurate.

Apparently it's something
[RubyGems](b026df86ae/config/environments/development.rb (L72-L92))
and
[CodeTriage](a3c957647d)
both use.
2020-04-22 17:53:17 +02:00
Pau Pérez Fabregat
a7013b5542 Merge pull request #5241 from Matt-Yorkley/remove-old-migrations
Remove old migrations!
2020-04-22 17:01:01 +02:00
Maikel
24fe7e8878 Merge pull request #5280 from openfoodfoundation/transifex
Transifex
2020-04-22 16:08:57 +10:00
Maikel
eb94c5a5bd Merge pull request #5283 from Matt-Yorkley/customer-tags
Fix disappearing tags issue
2020-04-22 16:03:17 +10:00
Matt-Yorkley
4ef61b642e Fix disappearing tags issue 2020-04-22 01:33:38 +02:00
Luis Ramos
23f4faf192 Merge pull request #4841 from luisramos0/kill_rabl
Hide broken product taxons field, remove last rabl template and rabl itself
2020-04-21 18:49:12 +01:00
Transifex-Openfoodnetwork
becd57f7a4 Updating translations for config/locales/fr.yml 2020-04-21 22:52:47 +10:00
Transifex-Openfoodnetwork
2e4b224d48 Updating translations for config/locales/en_FR.yml 2020-04-21 22:42:53 +10:00
Transifex-Openfoodnetwork
2b210bd096 Updating translations for config/locales/fr.yml 2020-04-21 22:42:34 +10:00
Matt-Yorkley
53183b8598 Eager-load properties in inject_enterprise_and_relatives 2020-04-21 11:13:20 +02:00
Pau Perez
91306d5ce4 Update all locales with the latest Transifex translations 2020-04-21 10:13:00 +02:00
Pau Pérez Fabregat
e20e19f963 Merge pull request #5244 from coopdevs/include-deleted-variants-and-products
Include deleted products in OC mailer
2020-04-20 20:46:21 +02:00
Luis Ramos
2ab07bc6a9 Make search box font size be 16px so that no zoom happens on iphone 2020-04-18 18:50:25 +01:00
Luis Ramos
15e56b21ae Merge pull request #5229 from chrishil1/missing_translation
Added missing translations to enterprise_relationship page
2020-04-18 18:15:54 +01:00
Luis Ramos
629db3ae4d Merge pull request #5230 from chrishil1/missing_translation_2
Add product translations to admin order creation
2020-04-18 18:15:01 +01:00
Luis Ramos
43274ecb4f Remove dead code
Dead since https://github.com/openfoodfoundation/openfoodnetwork/pull/3305
2020-04-18 14:47:33 +01:00
Luis Ramos
437c7367db Remove dead code 2020-04-18 14:37:07 +01:00
Lucas Hiago
acfe0c540a Create instagram css property and apply 2020-04-18 10:06:14 -03:00
Lucas Hiago
ac2ab34e11 Add connect with us footer to customer order confirmation email 2020-04-18 10:06:06 -03:00
Lucas Hiago
41c0204cfa Update instagram and linkedin links 2020-04-18 10:05:59 -03:00
Luis Ramos
910cc99c2f Add spec to cover orders_controller watch sortOptions 2020-04-18 10:23:02 +01:00
David Cook
a0a361673a Fix sorting of orders
(wrong copied function call)
2020-04-18 15:03:39 +10:00
jeffrey s hill md
70005a99a3 Added missing translations 2020-04-17 17:02:37 -05:00
Luis Ramos
8f8dce4bab Do not render inventory items in the shipment that dont have a line item in the order 2020-04-17 20:23:29 +01:00
Luis Ramos
8973a1b76c Merging 6 specs in one takes around 1 minute of execution time 2020-04-17 20:18:13 +01:00
Luis Ramos
c1b28543c6 Extract print ticket spec to a separate file 2020-04-17 20:07:45 +01:00
Luis Ramos
c33352904a Make spec a bit more resilient 2020-04-17 18:48:20 +01:00
Luis Ramos
8bd3062b16 Fix rubocop issues 2020-04-17 18:17:54 +01:00
jeffrey s hill md
ed91c179cd Changed translation paths 2020-04-17 12:04:27 -05:00
Luis Ramos
c7fb85a715 Replace background with members with before with let statements 2020-04-17 17:34:36 +01:00
Luis Ramos
e901615b61 Make spec simpler 2020-04-17 16:56:56 +01:00
Pau Perez
d8e6d98912 Preload line item's option_values
This fixes an N+1 with the query

```sql
SELECT "spree_option_values".* FROM "spree_option_values"
INNER JOIN "spree_option_types"
  ON "spree_option_types"."id" = "spree_option_values"."option_type_id"
INNER JOIN "spree_option_values_line_items"
  ON "spree_option_values"."id" = "spree_option_values_line_items"."option_value_id"
WHERE "spree_option_values_line_items"."line_item_id" = 1679
ORDER BY spree_option_types.position asc
```
2020-04-17 17:34:53 +02:00
Luis Ramos
c455dfb609 Make some specs faster by going directly to the order edit page and move incomplete order spec to a specific context 2020-04-17 16:28:27 +01:00
Pau Perez
63eb0980eb Memoize result of line items query
No need to fetch twice what we just loaded from DB.
2020-04-17 17:27:21 +02:00
Pau Perez
06ead827d8 Split long method 2020-04-17 17:27:21 +02:00
Pau Perez
6dd4a866e5 Address some Rubocop violations 2020-04-17 17:25:35 +02:00
Pau Perez
04c962432a Skip deleted default_scope in OC notification
This fixes the RuntimeError we get when accessing deleted variants due
to the variant being nil.

https://github.com/rails/rails/issues/11036 is still an open Rails bug,
as some people mention in https://github.com/rails/rails/pull/21550.

The issue is that `includes` doesn't respect `unscoped`. I found
a potential solution for the entire app in
https://github.com/rails/rails/issues/11036#issuecomment-302133116 but
our friend @markets has a gem,
https://github.com/markets/unscoped_associations, that solves that too.
2020-04-17 17:25:34 +02:00
Luis Ramos
d96d6b2337 Split orders_spec in two: tests for orders list page and tests for orders edit page 2020-04-17 15:21:03 +01:00
Luis Ramos
9147518422 Remove some unnecessary code 2020-04-17 14:51:06 +01:00
Luis Ramos
d23397f250 Move float test to a separate context 2020-04-17 14:49:09 +01:00
blainebillings
993a684e44 Add Price Sack Spec for Float Amounts 2020-04-17 14:43:28 +01:00
blainebillings
427dc54945 Change Result of PriceSack Calculation from Integers to Floats 2020-04-17 14:43:28 +01:00
Luis Ramos
ffceff3f0a Update GETTING_STARTED.md
Update link to osx catalina setup guide in wiki
2020-04-17 11:41:02 +01:00
Maikel Linke
b5d159e163 Add cache to mirror_db script
Also added some better error handling around image syncing.
2020-04-17 16:09:22 +10:00
Maikel Linke
4658a53aeb Update translations from Transifex 2020-04-17 15:37:54 +10:00
Maikel
3bc834435d Merge pull request #5152 from Matt-Yorkley/missing-indexes
Add missing indexes to spree_orders and spree_products
2020-04-17 15:16:03 +10:00
Maikel
9111ff1a38 Merge pull request #5211 from openfoodfoundation/transifex
Transifex
2020-04-17 14:24:26 +10:00
Maikel
b0eac1ecaa Merge branch 'master' into missing-indexes 2020-04-17 14:17:32 +10:00
Maikel
2e31f234d6 Merge pull request #5196 from Matt-Yorkley/customers-performance
Admin Customers performance
2020-04-17 13:28:39 +10:00
Maikel
e29a81cacc Merge pull request #5186 from oeoeaio/customer-totals-inventory-sku
Take sku overrides into account in customer totals report
2020-04-17 13:27:43 +10:00
Maikel
a672af1a79 Merge pull request #5237 from luisramos0/master_with_change
Clone of #5176
2020-04-17 13:27:14 +10:00
Maikel Linke
75207247e6 Correct database commands 2020-04-17 12:52:05 +10:00
Maikel Linke
8af40f4675 Format and indent migration message
It's much clearer to read this way:

```
==  OldMigrationsRemoved: migrating ===========================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

      You haven't updated your dev environment in a long time!
      Legacy migration files before 2019 have now been removed.
      Run `rails db:schema:load` before running `rails db:migrate`.

```
2020-04-17 12:47:49 +10:00
Maikel Linke
63ac6c5088 Remove superfluous conditional
A migration's `up` method is only run when the migration needs to be
applied. The only case we could have a higher version number is when a
migration with a higher version got merged before the current one. And
in that case, we still want this migration to fail, because it hasn't
been applied yet.
2020-04-17 12:40:54 +10:00
jeffrey s hill md
d8444dcf3c Added placeholders 2020-04-16 14:59:41 -05:00
Matt-Yorkley
71c7c35679 Remove old migrations! 🎉 2020-04-16 13:44:18 +02:00
Maikel
f282ff805d Merge pull request #5172 from kristinalim/feature/5170-increase_locale_chars_in_spree_users
Increase max characters for locale in spree_users
2020-04-16 18:18:45 +10:00
Transifex-Openfoodnetwork
2f7dc9a578 Updating translations for config/locales/es.yml 2020-04-16 17:09:44 +10:00
chrishil1
a9829ba5d9 Update _enterprise_relationship.html.haml 2020-04-15 17:01:22 -05:00
Luis Ramos
8532fa16cd Merge pull request #5202 from luisramos0/improve_checkout_js
Improve Checkout error handling in JS
2020-04-15 22:25:05 +01:00
chrishil1
c3f01be580 Fixed display all required tag 2020-04-15 19:00:35 +01:00
Luis Ramos
fcc746a1b7 Fix long lines in payments_controller_spec 2020-04-15 16:18:17 +01:00
Luis Ramos
8f7b3df9b5 Make payment controller authorize stripe_sca payments before processing them or advancing order workflow (that also calls payment.process) 2020-04-15 16:07:34 +01:00
jeffrey s hill md
e23045b19e Add product translations 2020-04-14 14:15:57 -05:00
jeffrey s hill md
5e1dea61a8 added missing translations to enterprise_relationship page 2020-04-14 11:20:56 -05:00
Luis Ramos
cedf1b26f2 If no flash is sent from the server, show the generic error 2020-04-14 14:31:34 +01:00
Luis Ramos
47a93568dc Make code simpler by extracting methods 2020-04-14 13:55:20 +01:00
Luis Ramos
62471bf2ab Clear Loading spinner when exception is caught 2020-04-14 13:50:38 +01:00
Luis Ramos
cdf5bcb7eb Improve unexpected error handling and add test cases for it 2020-04-14 13:44:58 +01:00
Luis Ramos
7414047b92 Switch from old success/error to modern then/catch structure
Catch() will get a few more errors then errors()

Also, add try/catch inside catch to detect any errors parsing the
response error payload
2020-04-14 13:04:28 +01:00
Pau Pérez Fabregat
4ef5dfe430 Merge pull request #5199 from openfoodfoundation/dependabot/bundler/rubocop-rails-2.5.2
Bump rubocop-rails from 2.5.1 to 2.5.2
2020-04-14 10:17:59 +02:00
Pau Pérez Fabregat
e58a1d080f Merge pull request #5205 from openfoodfoundation/dependabot/bundler/ddtrace-0.34.2
Bump ddtrace from 0.34.1 to 0.34.2
2020-04-14 10:17:06 +02:00
Luis Ramos
357a88fa22 Merge pull request #4786 from luisramos0/stripe_sca_extra_subs_fix
Make StripeSCA (with new authorize/purchase workflow) work with Subscriptions again
2020-04-13 17:21:53 +01:00
Rob H
f71045b3f2 Improve naming of variables in VariantOverridesIndexed for readability 2020-04-13 22:24:25 +10:00
Rob H
dcdd3f2444 Modify interface of VariantOverridesIndexed#indexed
Stop using keyword args and accept variant_ids instead of line_items
2020-04-13 22:11:58 +10:00
Rob H
6820919552 Rename VariantOverrides class to VariantOverridesIndexed 2020-04-13 21:56:37 +10:00
Rob H
4a4173bdc0 Move VariantOverrides class to app/services 2020-04-13 21:54:10 +10:00
Rob H
9a7e782102 Only load up variant overrides for relevant hubs 2020-04-13 12:07:17 +10:00
Transifex-Openfoodnetwork
9fa892346e Updating translations for config/locales/es_CR.yml 2020-04-13 10:30:00 +10:00
Transifex-Openfoodnetwork
7341912390 Updating translations for config/locales/pt_BR.yml 2020-04-12 07:14:21 +10:00
Transifex-Openfoodnetwork
d0c797b797 Updating translations for config/locales/es_CR.yml 2020-04-12 07:12:21 +10:00
Transifex-Openfoodnetwork
cb2e17d7dc Updating translations for config/locales/es_CR.yml 2020-04-12 07:09:21 +10:00
Transifex-Openfoodnetwork
147654df41 Updating translations for config/locales/es_CR.yml 2020-04-12 07:05:59 +10:00
Rob H
14cf168e3b Take sku overrides into account in customer totals report 2020-04-11 16:05:15 +10:00
dependabot-preview[bot]
c3ee7b7c64 Bump ddtrace from 0.34.1 to 0.34.2
Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.34.1 to 0.34.2.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](https://github.com/DataDog/dd-trace-rb/compare/v0.34.1...v0.34.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-10 19:19:13 +00:00
Matt-Yorkley
a6414b6dbe Make sure taggable_type is 'Customer' when querying customer tags 2020-04-10 20:14:14 +02:00
Matt-Yorkley
4c41c84cc1 Refactor tag rules loading for customers
Fixes N+1 queries on customer tags
2020-04-10 10:12:32 +02:00
Matt-Yorkley
e53f733966 Eager-load addresses in customer serializer 2020-04-10 08:20:15 +02:00
Matt-Yorkley
2a8809e6e8 Eager-load default card in customer serializer 2020-04-10 08:20:15 +02:00
Matt-Yorkley
31a54e49c5 Allow User#default_card to work with eager-loading 2020-04-10 08:20:13 +02:00
dependabot-preview[bot]
0fabde8849 Bump rubocop-rails from 2.5.1 to 2.5.2
Bumps [rubocop-rails](https://github.com/rubocop-hq/rubocop-rails) from 2.5.1 to 2.5.2.
- [Release notes](https://github.com/rubocop-hq/rubocop-rails/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop-rails/compare/v2.5.1...v2.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-09 19:21:30 +00:00
Luis Ramos
314fed063d Merge property with property_decorator both in our codebase 2020-04-09 19:09:22 +01:00
Luis Ramos
0d5c08c363 Remove dead code, there's no Spree::Money in app/models/spree and the Spree::Money in lib/spree already has a class_eval with this function 2020-04-09 19:06:05 +01:00
Luis Ramos
59f56cb0f6 Remove before delivery method in checkout controller, this differentiator is never used in OFN, only in Spree frontend code 2020-04-09 17:32:28 +01:00
Matt-Yorkley
cf712e9478 Select only enterprise id 2020-04-09 17:41:13 +02:00
Luis Ramos
2ff8356c63 Delete dead code from products helper 2020-04-09 16:33:17 +01:00
Luis Ramos
4aad80c134 Update message for capybara with new upgrade blocker 2020-04-09 13:39:40 +01:00
Luis Ramos
71ffa6b178 Upgrade nokogiri as much as possible (it's not an explicit dependency of OFN and we dont need to control the version now, so I remove it from Gemfile) 2020-04-09 13:39:40 +01:00
Luis Ramos
e3de71668a Depend on a spree version in which spree_core doesnt depend on deface AND remove deface from list of dependencies 2020-04-09 13:39:40 +01:00
Matt-Yorkley
538e4e54d2 Set cart buttons to fixed width and expand when screen is too small 2020-04-08 11:19:14 +02:00
Matt-Yorkley
1ddbabd841 Adjust colours of primary buttons to use (bright) orange instead of (warning) red 2020-04-08 10:57:33 +02:00
Matt-Yorkley
0414f4984d Align buttons left and right on cart page 2020-04-08 10:55:55 +02:00
Matt-Yorkley
9c421e146e Remove arrows from cart and checkout buttons 2020-04-08 10:23:18 +02:00
Kristina Lim
e6cd33ee57 Increase max characters for locale in spree_users
There are many locales that have six (6) characters.
2020-04-07 15:08:49 +08:00
Matt-Yorkley
8a544f3ab3 Add missing indexes to spree_orders and spree_products 2020-04-04 10:12:15 +02:00
Luis Ramos
635ea9c505 Fix some long lines on variant_decorator 2020-03-30 11:21:47 +01:00
Luis Ramos
fbbe586996 Avoid rails 3 bug where the first where clause is overriden by a second where clause
Co-Authored-By: Maikel <maikel@email.org.au>
2020-03-30 11:21:47 +01:00
Luis Ramos
a5184cce9d Make method a bit more readable and add comment with details 2020-03-30 11:21:47 +01:00
Luis Ramos
69b57544f1 Bring Spree::Variant#active so that we can make it return just variants without includes
This makes the variants returned not readonly in rails 4 and thus fixes a spec in Spree::VariantsController#destroy
2020-03-30 11:21:47 +01:00
Matt-Yorkley
e014e6c1a4 Ensure perform_deliveries is correctly set when testing user confirmation emails 2020-03-24 13:12:20 +00:00
Luis Ramos
9994bc75ca Adapt reports controller to handle routes of reports in the order_management engine differently 2020-03-20 11:07:23 +00:00
Luis Ramos
3f5a964dec Move enterprise_fee_summaries_spec to order_management engine, moving
translation keys for the views and adapting some routes
2020-03-20 11:07:23 +00:00
Luis Ramos
b4befea606 Fix namespace in spec 2020-03-20 11:07:23 +00:00
Luis Ramos
58465c4645 Adapt routes placeholder in the new catalog engine to make it similar to the other engines 2020-03-20 11:07:23 +00:00
Luis Ramos
0b05312f19 Move cookies spec to web engine and adapt routes to the fact they are now normal main apps routes 2020-03-20 11:07:23 +00:00
Luis Ramos
e209452f8b Make engine routes just prepend to apps routes instead of creating engine routes
This makes things a bit simpler in terms of routing, we avoid a problem running specs and we can still have the engine routes separated in specific files
2020-03-20 11:07:23 +00:00
Luis Ramos
a8078b22f8 Move enterprise fees summaries controller and views to ordermanagement engine 2020-03-20 11:07:23 +00:00
Luis Ramos
da837ff100 Remove rabl dependency 🎉 2020-03-17 15:51:50 +00:00
Luis Ramos
da2598282b Can be object or {}, it's what the injector is doing, not related to rabl any more 2020-03-17 15:51:26 +00:00
Luis Ramos
0308f1465d Remove taxons/search action and respective rabl view
This is dead code
2020-03-17 15:51:26 +00:00
Luis Ramos
a6e4893287 Remove taxons list field from product edit form.
It is not working and it's not used in any other place in the app, there's the product category already (product.primary_taxon_id)
2020-03-17 15:51:25 +00:00
Luis Ramos
26769b4150 Add StripeSCA payment authorize and use it both subs_confirm job as well as on teh checkout stripe redirect 2020-03-16 20:04:59 +00:00
Luis Ramos
84745e4ccb Add stripe payment setup spec and make minor tweaks to the code itself.
Also, add a missing . to card_set? that eanbles it! If the card was
already set, it would anyway set the default card. Now it will use the
defined card if there is one already.
2020-03-16 20:03:12 +00:00
Luis Ramos
aac7a5e559 Adapt PaymentSetup spec to new version and remove some private method testing (payment) as well as some tests testing order.pending_payments logic 2020-03-16 20:03:12 +00:00
Luis Ramos
0a2941ed96 Extract StripePaymentSetup from PaymentSetup 2020-03-16 20:03:12 +00:00
786 changed files with 14529 additions and 12411 deletions

1
.gitignore vendored
View File

@@ -31,6 +31,7 @@ public/system
public/stylesheets
public/images
public/spree
public/assets
config/abr.yml
config/initializers/feature_toggle.rb
NERD_tree*

View File

@@ -88,7 +88,6 @@ Layout/LineLength:
- app/models/spree/tax_rate_decorator.rb
- app/models/spree/taxon_decorator.rb
- app/models/spree/user.rb
- app/models/spree/variant_decorator.rb
- app/models/subscription.rb
- app/models/variant_override.rb
- app/models/variant_override_set.rb
@@ -156,7 +155,6 @@ Layout/LineLength:
- spec/controllers/spree/admin/orders/customer_details_controller_spec.rb
- spec/controllers/spree/admin/orders_controller_spec.rb
- spec/controllers/spree/admin/payment_methods_controller_spec.rb
- spec/controllers/spree/admin/payments_controller_spec.rb
- spec/controllers/spree/admin/products_controller_spec.rb
- spec/controllers/spree/admin/reports_controller_spec.rb
- spec/controllers/spree/admin/variants_controller_spec.rb
@@ -181,7 +179,6 @@ Layout/LineLength:
- spec/features/admin/image_settings_spec.rb
- spec/features/admin/multilingual_spec.rb
- spec/features/admin/order_cycles_spec.rb
- spec/features/admin/orders_spec.rb
- spec/features/admin/overview_spec.rb
- spec/features/admin/payment_method_spec.rb
- spec/features/admin/product_import_spec.rb
@@ -229,7 +226,6 @@ Layout/LineLength:
- spec/lib/open_food_network/group_buy_report_spec.rb
- spec/lib/open_food_network/lettuce_share_report_spec.rb
- spec/lib/open_food_network/option_value_namer_spec.rb
- spec/lib/open_food_network/order_and_distributor_report_spec.rb
- spec/lib/open_food_network/order_cycle_form_applicator_spec.rb
- spec/lib/open_food_network/order_cycle_permissions_spec.rb
- spec/lib/open_food_network/order_grouper_spec.rb
@@ -377,7 +373,6 @@ Metrics/AbcSize:
- app/helpers/spree/admin/base_helper.rb
- app/helpers/spree/admin/zones_helper.rb
- app/helpers/spree/orders_helper.rb
- app/mailers/producer_mailer.rb
- app/models/calculator/flat_percent_per_item.rb
- app/models/column_preference.rb
- app/models/enterprise.rb
@@ -468,7 +463,6 @@ Metrics/BlockLength:
- spec/factories/shipping_method_factory.rb
- spec/factories/subscription_factory.rb
- spec/factories/variant_factory.rb
- spec/features/admin/orders_spec.rb
- spec/features/consumer/shopping/embedded_shopfronts_spec.rb
- spec/lib/open_food_network/group_buy_report_spec.rb
- spec/models/tag_rule/discount_order_spec.rb
@@ -574,7 +568,6 @@ Metrics/MethodLength:
- app/helpers/spree/admin/navigation_helper.rb
- app/helpers/spree/admin/base_helper.rb
- app/jobs/subscription_placement_job.rb
- app/mailers/producer_mailer.rb
- app/models/column_preference.rb
- app/models/enterprise.rb
- app/models/enterprise_relationship.rb
@@ -680,7 +673,6 @@ Metrics/ModuleLength:
- engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/form_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/payment_setup_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb
- engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb

View File

@@ -173,7 +173,6 @@ Naming/MethodParameterName:
Naming/PredicateName:
Exclude:
- 'spec/**/*'
- 'app/mailers/producer_mailer.rb'
- 'app/models/enterprise.rb'
- 'app/models/enterprise_relationship.rb'
- 'app/models/order_cycle.rb'
@@ -630,7 +629,6 @@ Style/FrozenStringLiteralComment:
- 'app/jobs/subscription_placement_job.rb'
- 'app/jobs/welcome_enterprise_job.rb'
- 'app/mailers/enterprise_mailer.rb'
- 'app/mailers/producer_mailer.rb'
- 'app/mailers/spree/base_mailer_decorator.rb'
- 'app/mailers/spree/order_mailer_decorator.rb'
- 'app/mailers/spree/user_mailer.rb'
@@ -855,7 +853,6 @@ Style/FrozenStringLiteralComment:
- 'app/validators/date_time_string_validator.rb'
- 'app/validators/distributors_validator.rb'
- 'app/validators/integer_array_validator.rb'
- 'app/views/spree/admin/taxons/search.rabl'
- 'config.ru'
- 'engines/order_management/app/controllers/order_management/application_controller.rb'
- 'engines/order_management/app/services/order_management/reports/enterprise_fee_summary/authorizer.rb'

View File

@@ -52,3 +52,5 @@ The default admin user is 'ofn@example.com' with 'ofn123' password.
Check the app in the browser at `http://localhost:3000`.
You will then get the trace of the containers in the terminal. You can stop the containers using Ctrl-C in the terminal.
You can find some useful tips and commands [here](https://github.com/openfoodfoundation/openfoodnetwork/wiki/Docker:-useful-tips-and-commands).

View File

@@ -27,6 +27,9 @@ RUN sh -c "echo 'deb https://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main'
apt-get update && \
apt-get install -yqq --no-install-recommends postgresql-client-9.5 libpq-dev
# Install node
RUN apt-get install -y nodejs
# Install Chrome
RUN wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
sh -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list" && \

View File

@@ -2,6 +2,8 @@
This is a general guide to setting up an Open Food Network development environment on your local machine.
The fastest way to make it work locally is to use Docker, see the [Docker setup guide](DOCKER.md).
The following guides are located in the wiki and provide more OS-specific step-by-step instructions:
- [Ubuntu Setup Guide][ubuntu]
@@ -11,7 +13,7 @@ The following guides are located in the wiki and provide more OS-specific step-b
### Dependencies
* Rails 3.2.x
* Ruby 2.1.9
* Ruby 2.3.7
* PostgreSQL database
* PhantomJS (for testing)
* See Gemfile for a list of gems required
@@ -58,10 +60,10 @@ Now, your dreams of spinning up a development server can be realised:
bundle exec rails server
To login as Spree default user, use:
To login as the default user, use:
email: spree@example.com
password: spree123
email: ofn@example.com
password: ofn123
### Testing
@@ -118,7 +120,7 @@ $ createdb open_food_network_test --owner=ofn
If these commands succeed, you should be able to [continue the setup process](#get-it-running).
[developer-wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki
[sierra]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup%3A-macOS-%28Sierra%2C-HighSierra-and-Mojave%29
[sierra]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup%3A-macOS-%28Sierra%2C-HighSierra%2C-Mojave-and-Catalina%29
[el-capitan]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-OS-X-(El-Capitan)
[ubuntu]: https://github.com/openfoodfoundation/openfoodnetwork/wiki/Development-Environment-Setup:-Ubuntu
[wiki]: https://github.com/openfoodfoundation/openfoodnetwork/wiki

16
Gemfile
View File

@@ -9,10 +9,9 @@ gem 'rails-i18n', '~> 3.0.0'
gem 'rails_safe_tasks', '~> 1.0'
gem "activerecord-import"
# Patched version. See http://rubysec.com/advisories/CVE-2015-5312/.
gem 'nokogiri', '>= 1.6.7.1'
gem "catalog", path: "./engines/catalog"
gem 'dfc_provider', path: './engines/dfc_provider'
gem "order_management", path: "./engines/order_management"
gem 'web', path: './engines/web'
@@ -55,7 +54,6 @@ gem 'aws-sdk'
gem 'bugsnag'
gem 'db2fog'
gem 'haml'
gem 'rabl'
gem 'redcarpet'
gem 'sass', "~> 3.3"
gem 'sass-rails', '~> 3.2.3'
@@ -70,7 +68,6 @@ gem 'angularjs-file-upload-rails', '~> 2.4.1'
gem 'blockenspiel'
gem 'custom_error_message', github: 'jeremydurham/custom-err-msg'
gem 'dalli'
gem 'deface', '1.0.2'
gem 'diffy'
gem 'figaro'
gem 'geocoder'
@@ -98,7 +95,7 @@ gem 'test-unit', '~> 3.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'compass-rails'
gem 'mini_racer', '0.2.9'
gem 'mini_racer', '0.2.14'
gem 'uglifier', '>= 1.0.3'
@@ -111,7 +108,7 @@ gem "foundation-rails"
gem 'jquery-migrate-rails'
gem 'jquery-rails', '3.1.5'
gem 'jquery-ui-rails', '~> 4.0.0'
gem 'jquery-ui-rails', '~> 4.2'
gem 'select2-rails', '~> 3.4.7'
gem 'ofn-qz', github: 'openfoodfoundation/ofn-qz', ref: '60da2ae4c44cbb4c8d602f59fb5fff8d0f21db3c'
@@ -125,7 +122,7 @@ group :test, :development do
# Pretty printed test output
gem 'atomic'
gem 'awesome_print'
gem 'capybara', '>= 2.18.0' # 3.0 requires nokogiri 1.8
gem 'capybara', '>= 2.18.0' # 3.0 requires rack 1.6 that only works with Rails 4.2
gem 'database_cleaner', '0.7.1', require: false
gem "factory_bot_rails", require: false
gem 'fuubar', '~> 2.5.0'
@@ -149,10 +146,11 @@ group :test do
end
group :development do
gem 'byebug', '~> 9.0.0' # 9.1 requires ruby 2.2
gem 'byebug', '~> 11.0.0' # 11.1 requires ruby 2.4
gem 'debugger-linecache'
gem "newrelic_rpm", "~> 3.0"
gem 'pry-byebug', '>= 3.4.3'
gem "pry", "~> 0.12.0" # pry 0.13 is not compatible with pry-byebug 3.7
gem 'pry-byebug', '~> 3.7.0' # 3.8 requires ruby 2.4
gem 'rubocop'
gem 'rubocop-rails'
gem 'spring', '1.7.2'

View File

@@ -23,7 +23,7 @@ GIT
GIT
remote: https://github.com/openfoodfoundation/spree.git
revision: 8a8585a43cd04d1a50dc65227f337a91b18d66d5
revision: e10ca1f689b1658040b081939b7523f6fb68895a
branch: 2-0-4-stable
specs:
spree_core (2.0.4)
@@ -32,14 +32,13 @@ GIT
awesome_nested_set (= 2.1.5)
aws-sdk (~> 1.11.1)
cancan (~> 1.6.10)
deface (>= 0.9.1)
ffaker (~> 1.16)
highline (= 1.6.18)
httparty (~> 0.11)
json (>= 1.7.7)
kaminari (~> 0.14.1)
money (= 5.1.1)
paperclip (~> 3.0)
paperclip (~> 3.4.1)
paranoia (~> 1.3)
rails (~> 3.2.14)
ransack (= 0.7.2)
@@ -62,6 +61,13 @@ PATH
specs:
catalog (0.0.1)
PATH
remote: engines/dfc_provider
specs:
dfc_provider (0.0.1)
jwt (~> 2.2)
rspec (~> 3.9)
PATH
remote: engines/order_management
specs:
@@ -104,7 +110,7 @@ GEM
activesupport (= 3.2.22.5)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activerecord-import (1.0.4)
activerecord-import (1.0.5)
activerecord (>= 3.2)
activerecord-postgresql-adapter (0.0.1)
pg
@@ -141,10 +147,10 @@ GEM
bcrypt-ruby (3.1.5)
bcrypt (>= 3.1.3)
blockenspiel (0.5.0)
bugsnag (6.13.0)
bugsnag (6.13.1)
concurrent-ruby (~> 1.0)
builder (3.0.4)
byebug (9.0.6)
byebug (11.0.1)
cancan (1.6.10)
capybara (2.18.0)
addressable
@@ -167,7 +173,6 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.10.0)
colorize (0.8.1)
combine_pdf (1.0.16)
ruby-rc4 (>= 0.1.5)
compass (1.0.3)
@@ -186,7 +191,7 @@ GEM
compass (~> 1.0.0)
sass-rails (< 5.1)
sprockets (< 4.0)
concurrent-ruby (1.1.5)
concurrent-ruby (1.1.6)
crack (0.4.3)
safe_yaml (~> 1.0.0)
css_parser (1.7.0)
@@ -198,14 +203,9 @@ GEM
activerecord (>= 3.2.0, < 5.0)
fog (~> 1.0)
rails (>= 3.2.0, < 5.0)
ddtrace (0.34.1)
ddtrace (0.35.2)
msgpack
debugger-linecache (1.2.0)
deface (1.0.2)
colorize (>= 0.5.8)
nokogiri (~> 1.6.0)
polyglot
rails (>= 3.1)
delayed_job (4.1.8)
activesupport (>= 3.0, < 6.1)
delayed_job_active_record (4.1.4)
@@ -238,7 +238,7 @@ GEM
railties (>= 3.0.0)
faraday (1.0.0)
multipart-post (>= 1.2, < 3)
ffaker (1.22.1)
ffaker (1.32.1)
ffi (1.12.2)
figaro (1.1.1)
thor (~> 0.14)
@@ -425,8 +425,8 @@ GEM
jquery-rails (3.1.5)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.0.5)
railties (>= 3.1.0)
jquery-ui-rails (4.2.1)
railties (>= 3.2.16)
json (1.8.6)
json_spec (1.1.5)
multi_json (~> 1.0)
@@ -449,9 +449,9 @@ GEM
method_source (0.9.2)
mime-types (1.25.1)
mini_mime (1.0.1)
mini_portile2 (2.1.0)
mini_racer (0.2.9)
libv8 (>= 6.9.411)
mini_portile2 (2.4.0)
mini_racer (0.2.14)
libv8 (> 7.3)
momentjs-rails (2.20.1)
railties (>= 3.1)
money (5.1.1)
@@ -461,8 +461,8 @@ GEM
multi_xml (0.6.0)
multipart-post (2.1.1)
newrelic_rpm (3.18.1.330)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
nokogiri (1.10.9)
mini_portile2 (~> 2.4.0)
oauth2 (1.4.4)
faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0)
@@ -483,7 +483,7 @@ GEM
parallel (1.19.1)
paranoia (1.3.4)
activerecord (~> 3.1)
parser (2.7.0.5)
parser (2.7.1.0)
ast (~> 2.4.0)
paypal-sdk-core (0.2.10)
multi_json (~> 1.0)
@@ -498,16 +498,14 @@ GEM
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry-byebug (3.4.3)
byebug (>= 9.0, < 9.1)
pry-byebug (3.7.0)
byebug (~> 11.0)
pry (~> 0.10)
public_suffix (4.0.3)
rabl (0.8.4)
activesupport (>= 2.3.14)
rack (1.4.7)
rack-cache (1.11.0)
rack (>= 0.4)
rack-mini-profiler (2.0.1)
rack-mini-profiler (2.0.2)
rack (>= 1.2.0)
rack-protection (1.5.5)
rack
@@ -596,7 +594,7 @@ GEM
rexml
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-rails (2.5.1)
rubocop-rails (2.5.2)
activesupport
rack (>= 1.1)
rubocop (>= 0.72.0)
@@ -652,11 +650,11 @@ GEM
turbo-sprockets-rails3 (0.3.14)
railties (> 3.2.8, < 4.0.0)
sprockets (>= 2.2.0)
tzinfo (0.3.56)
tzinfo (0.3.57)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.7.0)
unicorn (5.5.4)
unicorn (5.5.5)
kgio (~> 2.6)
raindrops (~> 0.7)
unicorn-rails (2.2.1)
@@ -702,7 +700,7 @@ DEPENDENCIES
aws-sdk
blockenspiel
bugsnag
byebug (~> 9.0.0)
byebug (~> 11.0.0)
capybara (>= 2.18.0)
catalog!
coffee-rails (~> 3.2.1)
@@ -715,11 +713,11 @@ DEPENDENCIES
db2fog
ddtrace
debugger-linecache
deface (= 1.0.2)
delayed_job_active_record
delayed_job_web
devise (~> 2.2.5)
devise-encryptable (= 0.2.0)
dfc_provider!
diffy
eventmachine (>= 1.2.3)
factory_bot_rails
@@ -736,16 +734,15 @@ DEPENDENCIES
immigrant
jquery-migrate-rails
jquery-rails (= 3.1.5)
jquery-ui-rails (~> 4.0.0)
jquery-ui-rails (~> 4.2)
json_spec (~> 1.1.4)
jwt (~> 2.2)
kaminari (~> 0.14.1)
knapsack
letter_opener (>= 1.4.1)
mini_racer (= 0.2.9)
mini_racer (= 0.2.14)
momentjs-rails
newrelic_rpm (~> 3.0)
nokogiri (>= 1.6.7.1)
oauth2 (~> 1.4.4)
ofn-qz!
oj
@@ -753,8 +750,8 @@ DEPENDENCIES
paper_trail (~> 5.2.3)
paperclip (~> 3.4.1)
pg (~> 0.21.0)
pry-byebug (>= 3.4.3)
rabl
pry (~> 0.12.0)
pry-byebug (~> 3.7.0)
rack-mini-profiler (< 3.0.0)
rack-rewrite
rack-ssl
@@ -800,4 +797,4 @@ RUBY VERSION
ruby 2.3.7p456
BUNDLED WITH
1.17.2
1.17.3

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="33px" enable-background="new 0 0 28 33" version="1.1" viewBox="0 0 28 33" xmlns="http://www.w3.org/2000/svg"><path d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643 C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643 C24.988,26.679,20.059,25,14,25z" fill="#282828" opacity=".25"/><path d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32 c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z" fill="#fff"/><g><g fill="#0b8c61"><path d="m14 0c-7.72 0-14 6.717-14 13.333 0 9.941 13.132 18.169 13.691 18.571 0.089 0.064 0.2 0.096 0.309 0.096 0.107 0 0.217-0.031 0.305-0.094 0.559-0.395 13.695-8.456 13.695-18.573 0-6.616-6.28-13.333-14-13.333zm9.5 12.057c0 0.863-0.567 1.661-1.325 1.942l-1.025 5.889c-0.015 0.976-0.889 1.831-1.94 1.831h-10.466c-1.052 0-1.925-0.855-1.947-1.906l-1.024-5.828c-0.737-0.294-1.273-1.075-1.273-1.928v-0.827c0-1.074 0.874-1.948 1.948-1.948h2.302l1.396-2.247c0.4-0.698 1.417-0.978 2.145-0.555 0.755 0.435 1.015 1.403 0.58 2.159l-0.41 0.642h2.662l-0.39-0.61c-0.227-0.391-0.284-0.823-0.174-1.235 0.109-0.406 0.37-0.745 0.734-0.955 0.716-0.417 1.739-0.148 2.159 0.579l1.381 2.223h2.718c1.074 0 1.948 0.874 1.948 1.948v0.826z"/><rect x="3.6006" y="6.9915" width="20.415" height="15.521"/><rect x="8.9841" y="5.6631" width="10.487" height="3.6356"/></g><text x="5.0698848" y="20.243376" fill="#000000" font-family="sans-serif" font-size="16px" style="line-height:1.25" xml:space="preserve"><tspan x="5.0698848" y="20.243376" fill="#ffffff" font-family="Arial" font-size="16px" font-weight="bold">1+</tspan></text></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -29,7 +29,7 @@ angular.module("admin.enterprises")
# 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.
enterpriseNavCallback = ->
if $scope.enterprise_form != undefined && $scope.enterprise_form.$dirty
if $scope.enterprise_form?.$dirty
t('admin.unsaved_confirm_leave')
# Register the NavigationCheck callback

View File

@@ -1,5 +1,5 @@
angular.module('admin.orderCycles')
.controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, ocInstance) ->
.controller 'AdminEditOrderCycleCtrl', ($scope, $controller, $filter, $location, $window, OrderCycle, Enterprise, EnterpriseFee, StatusMessage, Schedules, RequestMonitor, NavigationCheck, ocInstance) ->
$controller('AdminOrderCycleBasicCtrl', {$scope: $scope, ocInstance: ocInstance})
order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1]
@@ -18,5 +18,12 @@ angular.module('admin.orderCycles')
$scope.submit = ($event, destination) ->
$event.preventDefault()
NavigationCheck.clear()
StatusMessage.display 'progress', t('js.saving')
OrderCycle.update(destination, $scope.order_cycle_form)
warnAboutUnsavedChanges = ->
if $scope.order_cycle_form?.$dirty
t('admin.unsaved_confirm_leave')
NavigationCheck.register(warnAboutUnsavedChanges)

View File

@@ -34,9 +34,8 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, $timeout, Reque
'q[bill_address_lastname_start]': $scope['q']['bill_address_lastname_start'],
# Set default checkbox values to null. See: https://github.com/openfoodfoundation/openfoodnetwork/pull/3076#issuecomment-440010498
'q[completed_at_not_null]': $scope['q']['completed_at_not_null'] || null,
'q[distributor_id_in]': $scope['q']['distributor_id_in'],
'q[order_cycle_id_in]': $scope['q']['order_cycle_id_in'],
'q[order_cycle_id_in]': $scope['q']['order_cycle_id_in'],
'q[distributor_id_in][]': $scope['q']['distributor_id_in'],
'q[order_cycle_id_in][]': $scope['q']['order_cycle_id_in'],
'q[s]': $scope.sorting || 'completed_at desc',
per_page: $scope.per_page,
page: page
@@ -67,7 +66,7 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, $timeout, Reque
return unless sort && sort.predicate != ""
$scope.sorting = sort.getSortingExpr()
$scope.fetchProducts()
$scope.fetchResults()
, true
$scope.capturePayment = (order) ->

View File

@@ -4,7 +4,6 @@ angular.module("admin.side_menu")
items: []
selected: null
# Checks for path and uses it to set the view
# If no path, loads first view
init: =>
@@ -31,11 +30,3 @@ angular.module("admin.side_menu")
for item in @items when item.name is name
return item
null
hide_item_by_name: (name) =>
item = @find_by_name(name)
item.visible = false if item
show_item_by_name: (name) =>
item = @find_by_name(name)
item.visible = true if item

View File

@@ -0,0 +1,2 @@
Darkswarm.controller "CartFormCtrl", ($scope) ->

View File

@@ -1,6 +1,3 @@
Darkswarm.controller "GroupPageCtrl", ($scope, enterprises, Enterprises, MapConfiguration, OfnMap) ->
Darkswarm.controller "GroupPageCtrl", ($scope, enterprises, Enterprises) ->
$scope.Enterprises = Enterprises
$scope.map = angular.copy MapConfiguration.options
$scope.mapMarkers = OfnMap.enterprise_markers enterprises
$scope.embedded_layout = window.location.search.indexOf("embedded_shopfront=true") != -1

View File

@@ -1,4 +1,4 @@
Darkswarm.controller "ProductsCtrl", ($scope, $filter, $rootScope, Products, OrderCycle, OrderCycleResource, FilterSelectorsService, Cart, Dereferencer, Taxons, Properties, currentHub, $timeout) ->
Darkswarm.controller "ProductsCtrl", ($scope, $sce, $filter, $rootScope, Products, OrderCycle, OrderCycleResource, FilterSelectorsService, Cart, Dereferencer, Taxons, Properties, currentHub, $timeout) ->
$scope.Products = Products
$scope.Cart = Cart
$scope.query = ""
@@ -10,6 +10,7 @@ Darkswarm.controller "ProductsCtrl", ($scope, $filter, $rootScope, Products, Ord
$scope.order_cycle = OrderCycle.order_cycle
$scope.supplied_taxons = null
$scope.supplied_properties = null
$scope.showFilterSidebar = false
$rootScope.$on "orderCycleSelected", ->
$scope.update_filters()
@@ -75,15 +76,24 @@ Darkswarm.controller "ProductsCtrl", ($scope, $filter, $rootScope, Products, Ord
$scope.appliedTaxonsList = ->
$scope.activeTaxons.map( (taxon_id) ->
Taxons.taxons_by_id[taxon_id].name
).join(" #{t('products_or')} ") if $scope.activeTaxons?
).join($scope.filtersJoinWord()) if $scope.activeTaxons?
$scope.appliedPropertiesList = ->
$scope.activeProperties.map( (property_id) ->
Properties.properties_by_id[property_id].name
).join(" #{t('products_or')} ") if $scope.activeProperties?
).join($scope.filtersJoinWord()) if $scope.activeProperties?
$scope.filtersJoinWord = ->
$sce.trustAsHtml(" <span class='join-word'>#{t('products_or')}</span> ")
$scope.clearAll = ->
$scope.clearQuery()
$scope.clearFilters()
$scope.clearQuery = ->
$scope.query = ""
$scope.clearFilters = ->
$scope.taxonSelectors.clearAll()
$scope.propertySelectors.clearAll()
@@ -94,3 +104,9 @@ Darkswarm.controller "ProductsCtrl", ($scope, $filter, $rootScope, Products, Ord
$scope.Products.products = []
$scope.update_filters()
$scope.loadProducts()
$scope.filtersCount = () ->
$scope.taxonSelectors.totalActive() + $scope.propertySelectors.totalActive()
$scope.toggleFilterSidebar = ->
$scope.showFilterSidebar = !$scope.showFilterSidebar

View File

@@ -1,2 +1,2 @@
Darkswarm.controller "ProducersTabCtrl", ($scope, Shopfront, EnterpriseModal) ->
Darkswarm.controller "ProducersTabCtrl", ($scope, Shopfront) ->
$scope.shopfront = Shopfront.shopfront

View File

@@ -0,0 +1,11 @@
Darkswarm.directive "darkerBackground", ->
restrict: "A"
link: (scope, elm, attr)->
toggleClass = (value) ->
elm.closest('.page-view').toggleClass("with-darker-background", value)
toggleClass(true)
# if an OrderCycle is selected, disable darker background
scope.$watch 'order_cycle.order_cycle_id', (newvalue, oldvalue) ->
toggleClass(false) if newvalue

View File

@@ -0,0 +1,12 @@
# Allows disabling of link buttons via disabled attribute.
# This is normally ignored, ie the link appears disabled but is still clickable.
Darkswarm.directive "disableDynamically", ->
restrict: 'A'
link: (scope, element, attrs) ->
element.on 'click', (e) ->
if attrs.disabled
e.preventDefault()
return

View File

@@ -7,4 +7,4 @@ Darkswarm.directive "enterpriseModal", (EnterpriseModal) ->
elem.on "click", (event) =>
event.stopPropagation()
scope.modalInstance = EnterpriseModal.open scope.enterprise
scope.modalInstance = EnterpriseModal.open scope.enterprise

View File

@@ -0,0 +1,6 @@
Darkswarm.directive "focusSearch", ->
restrict: 'A'
link: (scope, element, attr)->
element.bind 'click', (event) ->
# Focus seach field, ready for typing
$(element).siblings('#search').focus()

View File

@@ -1,6 +1,7 @@
Darkswarm.directive "ofnOnHand", ->
Darkswarm.directive "ofnOnHand", (StockQuantity) ->
restrict: 'A'
require: "ngModel"
scope: true
link: (scope, elem, attr, ngModel) ->
# In cases where this field gets its value from the HTML element rather than the model,
@@ -23,6 +24,4 @@ Darkswarm.directive "ofnOnHand", ->
viewValue
scope.available_quantity = ->
on_hand = parseInt(attr.ofnOnHand)
finalized_quantity = parseInt(attr.finalizedquantity) || 0 # finalizedquantity is optional
on_hand + finalized_quantity
StockQuantity.available_quantity(attr.ofnOnHand, attr.finalizedquantity)

View File

@@ -5,5 +5,9 @@ Darkswarm.directive "shopVariant", ->
scope:
variant: '='
controller: ($scope, Cart) ->
$scope.$watchGroup ['variant.line_item.quantity', 'variant.line_item.max_quantity'], ->
$scope.$watchGroup [
'variant.line_item.quantity',
'variant.line_item.max_quantity'
], (new_value, old_value) ->
return if old_value[0] == null && new_value[0] == null
Cart.adjust($scope.variant.line_item)

View File

@@ -0,0 +1,16 @@
Darkswarm.directive "validateStockQuantity", (StockQuantity) ->
restrict: 'A'
require: "ngModel"
scope: true
link: (scope, element, attr, ngModel) ->
ngModel.$parsers.push (selectedQuantity) ->
valid_number = parseInt(selectedQuantity) != NaN
valid_quantity = parseInt(selectedQuantity) <= scope.available_quantity()
ngModel.$setValidity('stock', (valid_number && valid_quantity) );
selectedQuantity
scope.available_quantity = ->
StockQuantity.available_quantity(attr.ofnOnHand, attr.finalizedquantity)

View File

@@ -1,4 +1,4 @@
Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $rootScope, $resource, localStorageService) ->
Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $rootScope, $resource, localStorageService, RailsFlashLoader) ->
# Handles syncing of current cart/order state to server
new class Cart
dirty: false
@@ -50,7 +50,7 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $roo
@popQueue() if @update_enqueued
.error (response, status)=>
@scheduleRetry(status)
RailsFlashLoader.loadFlash({error: t('js.cart.add_to_cart_failed')})
@update_running = false
compareAndNotifyStockLevels: (stockLevels) =>
@@ -87,13 +87,6 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $roo
max_quantity: li.max_quantity
{variants: variants}
scheduleRetry: (status) =>
console.log "Error updating cart: #{status}. Retrying in 3 seconds..."
$timeout =>
console.log "Retrying cart update"
@orderChanged()
, 3000
saved: =>
@dirty = false
$(window).unbind "beforeunload"

View File

@@ -14,15 +14,28 @@ Darkswarm.factory 'Checkout', ($injector, CurrentOrder, ShippingMethods, StripeE
submit: =>
Loading.message = t 'submitting_order'
$http.put('/checkout.json', {order: @preprocess()}).success (data, status)=>
Navigation.go data.path
.error (response, status)=>
if response.path
Navigation.go response.path
else
Loading.clear()
@errors = response.errors
RailsFlashLoader.loadFlash(response.flash)
$http.put('/checkout.json', {order: @preprocess()})
.then (response) =>
Navigation.go response.data.path
.catch (response) =>
try
@handle_checkout_error_response(response)
catch error
@loadFlash(error: t("checkout.failed")) # inform the user about the unexpected error
throw error # generate a BugsnagJS alert
handle_checkout_error_response: (response) =>
if response.data.path
Navigation.go response.data.path
else
throw response unless response.data.flash
@errors = response.data.errors
@loadFlash(response.data.flash)
loadFlash: (flash) =>
Loading.clear()
RailsFlashLoader.loadFlash(flash)
# Rails wants our Spree::Address data to be provided with _attributes
preprocess: ->

View File

@@ -0,0 +1,10 @@
Darkswarm.factory "EnterpriseListModal", ($modal, $rootScope, $http, EnterpriseModal)->
new class EnterpriseListModal
open: (enterprises)->
scope = $rootScope.$new(true)
scope.enterprises = enterprises
scope.openModal = EnterpriseModal.open
if Object.keys(enterprises).length > 1
$modal.open(templateUrl: "enterprise_list_modal.html", scope: scope)
else
EnterpriseModal.open enterprises[Object.keys(enterprises)[0]]

View File

@@ -1,21 +1,39 @@
Darkswarm.factory "OfnMap", (Enterprises, EnterpriseModal) ->
Darkswarm.factory "OfnMap", (Enterprises, EnterpriseListModal, MapConfiguration) ->
new class OfnMap
constructor: ->
@enterprises = @enterprise_markers(Enterprises.enterprises)
@enterprises = @enterprises.filter (enterprise) ->
enterprise.latitude != null || enterprise.longitude != null # Remove enterprises w/o lat or long
@coordinates = {}
@enterprises = Enterprises.enterprises.filter (enterprise) ->
# Remove enterprises w/o lat or long
enterprise.latitude != null || enterprise.longitude != null
@enterprises = @enterprise_markers(@enterprises)
enterprise_markers: (enterprises) ->
@extend(enterprise) for enterprise in enterprises
enterprise_hash: (hash, enterprise) ->
hash[enterprise.id] = { id: enterprise.id, name: enterprise.name, icon: enterprise.icon_font }
hash
extend_marker: (marker, enterprise) ->
marker.latitude = enterprise.latitude
marker.longitude = enterprise.longitude
marker.icon = enterprise.icon
marker.id = [enterprise.id]
marker.enterprises = @enterprise_hash({}, enterprise)
# Adding methods to each enterprise
extend: (enterprise) ->
new class MapMarker
# We cherry-pick attributes because GMaps tries to crawl
# our data, and our data is cyclic, so it breaks
latitude: enterprise.latitude
longitude: enterprise.longitude
icon: enterprise.icon
id: enterprise.id
reveal: =>
EnterpriseModal.open enterprise
marker = @coordinates[[enterprise.latitude, enterprise.longitude]]
if marker
marker.icon = MapConfiguration.options.cluster_icon
@enterprise_hash(marker.enterprises, enterprise)
marker.id.push(enterprise.id)
else
marker = new class MapMarker
# We cherry-pick attributes because GMaps tries to crawl
# our data, and our data is cyclic, so it breaks
reveal: =>
EnterpriseListModal.open this.enterprises
@extend_marker(marker, enterprise)
@coordinates[[enterprise.latitude, enterprise.longitude]] = marker
marker

View File

@@ -4,6 +4,7 @@ Darkswarm.factory "MapConfiguration", ->
center:
latitude: -37.4713077
longitude: 144.7851531
cluster_icon: 'assets/map_009-cluster.svg'
zoom: 12
additional_options:
# mapTypeId: 'satellite'

View File

@@ -1,6 +1,6 @@
Darkswarm.factory 'OrderCycle', ($resource, orderCycleData) ->
class OrderCycle
@order_cycle = orderCycleData # Object or {} due to RABL
@order_cycle = orderCycleData # Object or {}
@push_order_cycle: (callback) ->
new $resource("/shop/order_cycle").save {order_cycle_id: @order_cycle.order_cycle_id}, (order_data)->
OrderCycle.order_cycle.orders_close_at = order_data.orders_close_at

View File

@@ -0,0 +1,7 @@
Darkswarm.factory "StockQuantity", ->
new class StockQuantity
available_quantity: (on_hand, finalized_quantity) ->
on_hand = parseInt(on_hand)
finalized_quantity = parseInt(finalized_quantity) || 0 # finalized_quantity is optional
on_hand + finalized_quantity

View File

@@ -8,4 +8,4 @@
%hr
%div.menu_item.text-center
%input.fullwidth.orange{ type: "button", ng: { value: "saved() ? 'Saved': 'Saving'", show: "saved() || saving", disabled: "saved()" } }
%input.fullwidth.red{ type: "button", value: 'Save As Default', ng: { show: "!saved() && !saving", click: "saveColumnPreferences(action)"} }
%input.fullwidth.red{ type: "button", :value => t('admin.column_save_as_default').html_safe, ng: { show: "!saved() && !saving", click: "saveColumnPreferences(action)"} }

View File

@@ -0,0 +1,2 @@
%ng-include{src: "'partials/enterprise_listing.html'"}
%ng-include{src: "'partials/close.html'"}

View File

@@ -1,4 +1,3 @@
%ul
%active-selector{ ng: { repeat: "selector in allSelectors", show: "ifDefined(selector.fits, true)" } }
%render-svg{path: "{{selector.object.icon}}", ng: { if: "selector.object.icon"} }
%span{"ng-bind" => "::selector.object.name"}

View File

@@ -20,6 +20,7 @@
type: "email",
id: "email",
tabindex: 1,
inputmode: "email",
"ng-model" => "spree_user.email"}
.row
.large-12.columns
@@ -27,3 +28,4 @@
tabindex: "3",
type: "submit",
value: "{{'reset_password' | t}}"}

View File

@@ -15,6 +15,7 @@
type: "email",
id: "email",
tabindex: 1,
inputmode: "email",
"ng-model" => "spree_user.email"}
.row
.large-12.columns
@@ -24,6 +25,7 @@
id: "password",
autocomplete: "off",
tabindex: 2,
inputmode: "password",
"ng-model" => "spree_user.password"}
.row
.large-12.columns
@@ -39,3 +41,4 @@
tabindex: "3",
type: "submit",
value: "{{'label_login' | t}}"}

View File

@@ -0,0 +1,10 @@
.modal-list
.row{"ng-repeat" => "(id, enterprise) in ::enterprises"}
.highlight
.highlight-top.row.enterprise
.small-12.medium-12.large-12.columns
%h4
%a.heading{"ng-click" => "::openModal(enterprise)"}
%i{"ng-class" => "enterprise.icon"}
%span{"ng-bind" => "enterprise.name"}
%img.hero-img{"ng-src" => "{{::enterprise.promo_image}}"}

View File

@@ -6,6 +6,8 @@
min: 0,
placeholder: "0",
"ofn-disable-scroll" => true,
"ng-debounce" => "500",
onwheel: "this.blur()",
"ng-model" => "variant.line_item.quantity",
"ofn-on-hand" => "{{variant.on_demand && 9999 || variant.on_hand }}",
"ng-disabled" => "!variant.on_demand && variant.on_hand == 0",

View File

@@ -9,6 +9,8 @@
"ng-model" => "variant.line_item.quantity",
placeholder: "{{::'shop_variant_quantity_min' | t}}",
"ofn-disable-scroll" => true,
"ng-debounce" => "500",
onwheel: "this.blur()",
"ofn-on-hand" => "{{variant.on_demand && 9999 || variant.on_hand }}",
name: "variants[{{::variant.id}}]", id: "variants_{{::variant.id}}"}
%span.bulk-input
@@ -19,6 +21,8 @@
"ng-model" => "variant.line_item.max_quantity",
placeholder: "{{::'shop_variant_quantity_max' | t}}",
"ofn-disable-scroll" => true,
"ng-debounce" => "500",
onwheel: "this.blur()",
min: "{{variant.line_item.quantity}}",
name: "variant_attributes[{{::variant.id}}][max_quantity]",
id: "variants_{{::variant.id}}_max"}

View File

@@ -1,2 +1,2 @@
%button.graph-button{"ng-class" => "{open: tt_isOpen}"}
%button.graph-button{"ng-class" => "{open: tt_isOpen}", type: 'button'}
/ %i.ofn-i_058-graph

View File

@@ -14,6 +14,7 @@
type: "email",
id: "email",
tabindex: 1,
inputmode: "email",
"ng-model" => "spree_user.email"}
%span.error{"ng-show" => "errors.email != null"}
{{ errors.email.join(' ') }}
@@ -25,6 +26,7 @@
id: "password",
autocomplete: "off",
tabindex: 2,
inputmode: "password",
"ng-model" => "spree_user.password"}
%span.error{"ng-show" => "errors.password != null"}
{{ errors.password.join(' ') }}
@@ -36,6 +38,7 @@
id: "password_confirmation",
autocomplete: "off",
tabindex: 2,
inputmode: "password",
"ng-model" => "spree_user.password_confirmation"}
.row
.large-12.columns
@@ -43,3 +46,4 @@
tabindex: "3",
type: "submit",
value: "{{'action_signup' | t}}"}

View File

@@ -1,5 +1,9 @@
@import "variables";
form.order_cycle {
margin-bottom: 5em;
}
#schedule-dialog {
table {
border: none;

View File

@@ -2,6 +2,7 @@
@import "branding";
@import "big-input";
@import "animations";
@import "variables";
@mixin filter-selector($base-clr, $border-clr, $hover-clr) {
&.inline-block, ul.inline-block {
@@ -14,7 +15,7 @@
@include border-radius(0);
padding: 0;
margin: 0 0 0.25rem 0.25rem;
margin: 0 0.5rem 0.5rem 0;
&:hover, &:focus {
background: transparent;
@@ -107,26 +108,63 @@
// Alert when search, taxon, filter is triggered
.alert-box.search-alert {
background-color: $clr-yellow-light;
border-color: $clr-yellow-light;
background-color: $white;
color: #777;
font-size: 0.75rem;
padding: 0.5rem 0.75rem;
font-size: 1em;
padding: 0.35em 0 0;
border: 0;
margin: 0;
span.applied-properties {
color: #333;
.clear-all {
color: $grey-500;
margin-left: 1.5em;
&:hover {
color: $grey-600;
}
}
span.applied-taxons {
color: $clr-blue;
.no-results-bar {
@include breakpoint(desktop) {
text-align: center;
}
}
span.applied-search {
color: $clr-brick;
.no-results {
color: $grey-800;
font-style: italic;
font-size: 1.25em;
}
span.filter-label {
opacity: 0.75;
.clear-search {
background-color: transparent;
padding: 0;
margin: 0;
color: $orange-500;
font-size: 1.25em;
&:hover {
color: $orange-400;
}
}
span {
color: $grey-800;
font-style: italic;
&.applied-taxons, &.applied-properties {
color: $clr-blue;
font-weight: bold;
.join-word {
font-weight: normal;
}
}
&.applied-search {
font-weight: bold;
color: $teal-500;
}
}
}
@@ -140,25 +178,6 @@
.filter-shopfront {
&.taxon-selectors, &.property-selectors {
background: transparent;
single-line-selectors {
overflow-x: hidden;
white-space: nowrap;
.f-dropdown {
overflow-x: auto;
white-space: normal;
}
}
ul {
margin: 0;
display: inline-block;
}
ul, ul li {
list-style: none;
}
}
// Shopfront taxons
@@ -170,4 +189,8 @@
&.property-selectors {
@include filter-selector(#666, #ccc, #777);
}
ul {
margin: 0;
}
}

View File

@@ -7,10 +7,6 @@
// #search
@include placeholder(rgba(0, 0, 0, 0.4), #777);
input#search {
@include medium-input(rgba(0, 0, 0, 0.3), #777, $clr-brick);
}
// ordering
product {
input {
@@ -27,22 +23,22 @@
border-color: #b3b3b3;
text-align: right;
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
width: 8rem;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
width: 7rem;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
float: left !important;
font-size: 0.75rem;
padding-left: 0.25rem;
padding-right: 0.25rem;
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
width: 5.8rem;
}
@@ -66,15 +62,15 @@
input.bulk {
width: 5rem;
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
width: 4rem;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
width: 3.5rem;
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
width: 2.8rem;
}
}
@@ -90,7 +86,7 @@
.bulk-input-container {
float: right;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
float: left !important;
}

View File

@@ -1,11 +1,13 @@
@import "mixins";
@import "typography";
@import "variables";
ordercycle {
float: right;
background: $grey-050;
color: $grey-800;
width: 100%;
border-radius: 0.5em 0.5em 0 0;
border-radius: $radius-medium $radius-medium 0 0;
margin-top: 1em;
padding: 1em 1.25em 0;
@@ -17,7 +19,7 @@ ordercycle {
margin-right: 0.3rem;
}
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
float: none;
padding: 0.5em 1em;
width: 100%;
@@ -33,7 +35,7 @@ ordercycle {
}
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
padding: 0.5em 1em 0.75em;
}
@@ -41,15 +43,15 @@ ordercycle {
border: 1px solid $teal-300;
display: inline-block;
font-size: 1em;
border-radius: 0.25em;
border-radius: $radius-small;
.select-label {
background-color: rgba($teal-300, 0.5);
display: inline-block;
border-radius: 0.25em 0 0 0.25em;
border-radius: $radius-small 0 0 $radius-small;
float: left;
font-size: 1em;
line-height: 1.5em;
line-height: 1.3em;
padding: 0.5em 0.75em;
height: 2.35em;
@@ -60,6 +62,15 @@ ordercycle {
}
select {
background-image: url('/assets/white-caret.svg');
}
p {
text-align: left;
}
select,
p {
width: inherit;
display: inline-block;
color: $white;
@@ -67,29 +78,34 @@ ordercycle {
border: 0;
margin-bottom: 0;
font-size: 1em;
line-height: 1.5em;
line-height: 1.3em;
padding: 0.5em 1.25em 0.5em 0.75em;
height: 2.35em;
background-image: url('/assets/white-caret.svg');
background-size: 30px auto;
border-radius: 0 0.25em 0.25em 0;
border-radius: 0 $radius-small $radius-small 0;
min-width: 13em;
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
width: 100%;
min-width: 0;
}
}
@media all and (max-width: 1024px) {
option {
color: $grey-700;
}
@include breakpoint(desktop) {
float: none;
margin-right: 1em;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
float: none;
margin-right: 0;
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
display: flex;
}
}
@@ -102,7 +118,7 @@ ordercycle {
padding: 0.5em 0;
span {
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
font-size: 0.875em;
}
}
@@ -136,7 +152,7 @@ shop ordercycle {
color: $white;
padding: 0 0 12px;
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
float: none;
display: inline-block;
padding: 0.2em 0 0;
@@ -144,7 +160,7 @@ shop ordercycle {
margin-right: 1em;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
float: none;
padding: 0 0 10px;
}

View File

@@ -114,7 +114,7 @@ button.graph-button {
}
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
// Hide for small
display: none;
}

View File

@@ -1,3 +1,4 @@
@import "mixins";
@import "branding";
@import "animations";
@@ -14,11 +15,11 @@
// outline: 1px solid red
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
font-size: 0.875rem;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
font-size: 0.75rem;
}
}
@@ -56,13 +57,13 @@
.variant-name {
padding-left: 7.9375rem;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
padding-left: 4.9375rem;
}
}
.variant-name {
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
background: #333;
color: white;
padding-left: 0.9375rem;
@@ -82,7 +83,7 @@
font-size: 0.875rem;
overflow: hidden;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
font-size: 0.75rem;
}
}
@@ -92,7 +93,7 @@
padding-left: 0.25rem;
padding-right: 0.25rem;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
text-align: right;
}
}
@@ -106,7 +107,7 @@
color: $med-drk-grey;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
background: #777;
color: $disabled-med;
@@ -132,7 +133,7 @@
padding-bottom: 1em;
line-height: 1;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
padding-top: 0.65rem;
padding-bottom: 0.65rem;
}
@@ -141,11 +142,11 @@
.summary-header {
padding-left: 7.9375rem;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
padding-left: 4.9375rem;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
padding-left: 0.9375rem;
}

View File

@@ -1,3 +1,4 @@
@import "mixins";
@import "branding";
@import "animations";
@@ -56,7 +57,7 @@
}
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
top: 2px;
width: 4rem;
height: 4rem;
@@ -70,7 +71,7 @@
}
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
display: none;
width: 0rem;
height: 0rem;

View File

@@ -1,3 +1,5 @@
@import "mixins";
.darkswarm {
products {
product {
@@ -10,7 +12,7 @@
padding-top: 0.25rem;
z-index: 999999;
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
background-size: 28px 32px;
min-height: 32px;
width: 28px;
@@ -27,11 +29,11 @@
}
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
margin-top: -0.85rem;
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
render-svg {
svg {
width: 18px;

View File

@@ -1,5 +1,6 @@
@import "branding";
@import "mixins";
@import "variables";
.account-summary {
color: #4a4a4a;
@@ -99,7 +100,7 @@
table {
width: 100%;
border-radius: 0.5em 0.5em 0 0;
border-radius: $radius-medium $radius-medium 0 0;
tr:nth-of-type(even) {
background: transparent;

View File

@@ -26,7 +26,7 @@
display: block;
border: 0;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
margin-bottom: 1rem;
}
@@ -45,7 +45,7 @@
}
// Generic text resize
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
&, & * {
font-size: 0.875rem;
}
@@ -114,7 +114,7 @@
.fat > div {
border-top: 1px solid #aaa;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
margin-top: 1em;
}

View File

@@ -16,7 +16,7 @@
margin-top: 2px;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
margin-bottom: 1em;
}
}
@@ -158,7 +158,7 @@ products .filter-box {
@include placeholder(rgba(0, 0, 0, 0.4), #777);
input[type="text"] {
input[type="text"], input[type="search"] {
@include big-input(rgba(0, 0, 0, 0.3), #777, $clr-brick);
}
}

View File

@@ -23,7 +23,7 @@
box-shadow: none;
color: $inputactv;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
font-size: 1.25rem;
}

View File

@@ -38,14 +38,18 @@ $med-drk-grey: #444;
$dark-grey: #333;
$light-grey: #ddd;
$light-grey-transparency: rgba(0, 0, 0, .1);
$very-light-grey-transparency: rgba(0, 0, 0, .05);
$black: #000;
$white: #fff;
$grey-050: #f7f7f7;
$grey-100: #e6e6e6;
$grey-200: #ddd;
$grey-300: #ccc;
$grey-400: #bbb;
$grey-500: #999;
$grey-600: #777;
$grey-650: #666;
$grey-700: #555;
$grey-800: #333;
@@ -54,6 +58,7 @@ $teal-400: #4cb5c5;
$teal-500: #0096ad;
$orange-400: #ff9466;
$orange-450: #f4704c;
$orange-500: #f27052;
$orange-600: #d7583a;

View File

@@ -13,7 +13,7 @@
checkout {
display: block;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
&.row .row {
margin-left: 0;
margin-right: 0;
@@ -24,7 +24,7 @@ checkout {
.button, table {
width: 100%;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
form.edit_order {
border: 1px solid $disabled-bright;
margin-bottom: 2rem;

View File

@@ -1,3 +1,4 @@
@import "mixins";
@import 'typography';
section {
@@ -34,7 +35,7 @@ section {
@include headingFont;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
location, location + small {
display: block;
}
@@ -44,7 +45,7 @@ section {
margin-top: 0;
padding-top: 0.45em;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
margin-bottom: 8px;
}
}

View File

@@ -1,3 +1,4 @@
@import "mixins";
@import "typography";
$large-menu-height: 4.6875rem;
@@ -97,7 +98,7 @@ body.embedded {
display: none;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
nav.top-bar {
height: 3.4rem;
padding: 0.2rem $gutter-width;
@@ -141,7 +142,7 @@ body.embedded {
}
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
ul.left li.powered-by span {
display: none;
}

View File

@@ -66,7 +66,7 @@
font-weight: 300;
}
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
h2 {
font-size: 52px;
}
@@ -87,7 +87,7 @@
padding-bottom: 0;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.row .row {
padding: 0;
}
@@ -139,7 +139,7 @@
font-weight: 300;
color: $brand-colour;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
font-size: 45px;
}
}

View File

@@ -45,7 +45,7 @@
}
//Hub Link
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
a.hub {
display: block;
}
@@ -67,7 +67,7 @@
.active_table_row {
border: 1px solid transparent;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
border-color: $clr-brick-light;
}
@@ -85,7 +85,7 @@
}
&.open, &.closed {
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.active_table_row:first-child .skinny-head {
background-color: $clr-brick-light;
@@ -164,7 +164,7 @@
}
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.active_table_row:first-child .skinny-head {
background-color: rgba(255, 255, 255, 0.85);
}
@@ -218,7 +218,7 @@
}
// Small devices
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.active_table_row:first-child .skinny-head {
background-color: $disabled-bright;
}
@@ -226,7 +226,7 @@
}
// Small devices
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.active_table_row, .active_table_row:first-child, .active_table_row:last-child {
border-color: $disabled-bright;
background-color: transparent;
@@ -253,7 +253,7 @@
cursor: auto;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
border-color: transparent;
}
}

View File

@@ -13,7 +13,7 @@
&.placeholder {
opacity: 0.35;
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
display: none;
}
}
@@ -31,7 +31,7 @@
max-height: 260px;
overflow: hidden;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
min-height: 68px;
}
}

View File

@@ -1,6 +1,7 @@
// Place all the styles related to the map controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
@import "mixins";
@import "big-input";
.map-container {
@@ -29,7 +30,7 @@
margin-top: 1.2rem;
margin-left: 1rem;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
width: 80%;
}
@@ -62,3 +63,8 @@
left: 0px;
}
}
.tabs-content .map-footer {
position: relative;
bottom: 30px;
}

View File

@@ -171,7 +171,7 @@ nav.top-bar {
.tab-bar {
background-color: white;
border-bottom: 1px solid $light-grey-transparency;
height: 2.8em;
height: $mobile-nav-height;
position: fixed;
width: 100%;
z-index: 1;
@@ -210,6 +210,10 @@ nav.top-bar {
}
}
.off-canvas-wrap {
overflow: inherit;
}
.off-canvas-list li.language-switcher ul li {
list-style-type: none;
padding-left: 0.5em;

View File

@@ -16,7 +16,7 @@
padding-top: 100px;
padding-bottom: 100px;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
padding-top: 25px;
}
}
@@ -255,3 +255,18 @@
background-repeat: no-repeat;
background-size: 922px 922px;
}
@mixin breakpoint($point) {
@if $point == desktop {
@media all and (max-width: 1024px) { @content; }
}
@else if $point == tablet {
@media all and (max-width: 768px) { @content; }
}
@else if $point == phablet {
@media all and (max-width: 640px) { @content; }
}
@else if $point == mobile {
@media all and (max-width: 480px) { @content; }
}
}

View File

@@ -1,5 +1,6 @@
@import "branding";
@import "mixins";
@import 'branding';
@import 'mixins';
@import 'admin/globals/variables';
// Generic styles for use
@@ -22,6 +23,24 @@
margin-bottom: 0.5rem;
}
.modal-list {
text-align: center;
font-size: 1rem;
font-weight: 400;
border-bottom: 1px solid $light-grey;
margin-top: 0.75rem;
margin-bottom: 0.5rem;
a.heading {
color: $color-link;
&:hover {
color: $color-link-hover;
text-decoration: underline;
}
}
}
// Enterprise promo image and text
.highlight {
@@ -54,10 +73,16 @@
color: $clr-brick;
}
&.enterprise {
margin: auto;
text-align: center;
width: 100%;
}
p {
line-height: 2.4;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
line-height: 1.4;
}
}
@@ -193,7 +218,7 @@
display: inline-block;
border-bottom: 1px solid transparent;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
display: none;
}
}

View File

@@ -1,3 +1,4 @@
@import "mixins";
@import "branding";
@import "animations";
@import "compass/css3/transition";
@@ -19,7 +20,7 @@ $page-alert-height: 55px;
margin: 0;
h6 {
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
font-size: 10px;
line-height: 24px;
}

View File

@@ -4,7 +4,7 @@
.producers {
.active_table .active_table_node {
// Header row
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
.skinny-head {
background-color: $clr-turquoise-light;
@@ -137,7 +137,7 @@
.active_table_row.closed {
border: 1px solid transparent;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
border-color: $clr-turquoise-light;
}

View File

@@ -11,18 +11,98 @@
@import "shop-taxon-flag";
@import "shop-popovers";
$sidebar-small-width: 75%;
$sidebar-medium-width: 65%;
$sidebar-large-width: 45%;
$sidebar-footer-height: 5em;
.darkswarm {
.shop-filters-sidebar {
display: flex;
flex-direction: column;
height: 100%;
.background {
position: fixed;
top: 0;
right: 0;
z-index: 200;
height: 100%;
width: 100%;
background-color: $shop-sidebar-overlay;
opacity: 0;
transition: opacity $transition-sidebar;
}
&.shown {
.background {
opacity: 1;
}
.sidebar, .sidebar-footer {
margin-right: 0;
}
}
.sidebar {
position: fixed;
top: 0;
right: 0;
z-index: 210;
height: 100%;
width: $sidebar-large-width;
margin-right: -$sidebar-large-width;
background-color: rgba($white, 0.95);
padding: 1em;
transition: margin $transition-sidebar;
overflow-y: scroll;
.property-selectors {
margin-bottom: $sidebar-footer-height + 2em;
}
}
.sidebar-footer {
background-color: $grey-800;
width: $sidebar-large-width;
margin-right: -$sidebar-large-width;
height: $sidebar-footer-height;
position: fixed;
bottom: 0;
right: 0;
transition: margin $transition-sidebar;
padding: 1em;
button {
width: 48%;
}
}
@include breakpoint(tablet) {
.sidebar, .sidebar-footer {
width: $sidebar-medium-width;
margin-right: -$sidebar-medium-width;
}
}
@include breakpoint(mobile) {
.sidebar, .sidebar-footer {
width: $sidebar-small-width;
margin-right: -$sidebar-small-width;
}
}
}
products {
display: block;
padding-top: 20px;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
input.button.right {
float: left;
}
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
.add_to_cart {
margin-top: 2rem;
}
@@ -69,7 +149,7 @@
.bulk-buy {
font-size: 0.875rem;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
font-size: 0.75rem;
}
}
@@ -92,7 +172,7 @@
font-size: 0.75em;
padding-right: 0.9375rem;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
padding-right: 0.25rem;
}
}
@@ -114,7 +194,16 @@
margin-bottom: 0px;
}
.shopfront-message {
.select-oc-message {
margin-top: 1rem;
.highlighted {
color: $red-700;
font-weight: bold;
}
}
.open-shop-message {
a {
color: #0096ad;
@@ -125,21 +214,44 @@
}
}
.shopfront_closed_message, .shopfront_hidden_message {
padding: 15px;
border-radius: 5px;
.closed-shop-header {
background-color: $grey-650;
color: $white;
h4 {
color: $white;
}
p {
margin: 1rem 0 0.4rem;
}
.message {
display: inline-block;
}
}
.shopfront_closed_message {
border: 2px solid #eb4c46;
}
.warning-sign {
margin: 0 10px 0 5px;
display: inline-block;
.shopfront_closed_message {
margin: 2em 0em;
}
strong {
color: $grey-650;
display: block;
position: relative;
text-align: center;
width: 23px;
}
.shopfront_hidden_message {
border: 2px solid #db4;
margin: 2em 0em;
.rectangle {
background-color: $white;
border-radius: 4px;
color: $grey-650;
height: 23px;
position: absolute;
top: 27px;
transform: rotate(-315deg);
width: 23px;
}
}
}

View File

@@ -0,0 +1,75 @@
@import "mixins";
@import "branding";
@import "variables";
.shop-searchbar {
background-color: $grey-100;
height: 5em;
padding: 1em 0;
margin-bottom: 1em;
position: relative;
z-index: 5;
.search-wrap {
position: relative;
width: 100%;
display: inline-flex;
.clear {
height: 1em;
width: 1em;
margin-top: 1em;
position: absolute;
right: 1em;
}
}
input#search {
height: 3em;
border-radius: $radius-small;
border: solid 1px $grey-300;
margin: 0;
padding: 0 2.25em 0 2.75em;
width: 100%;
min-width: 0;
background: $white url("/assets/icn-search-grey.png") 1em center no-repeat;
font-size: 1rem; // avoid zoom on iphone, see issue #4535
&::placeholder {
font-style: italic;
}
// Remove conflicting "clear search" buttons added by Chrome
&::-webkit-search-decoration,
&::-webkit-search-cancel-button,
&::-webkit-search-results-button,
&::-webkit-search-results-decoration {
display: none;
}
}
button {
background-color: $grey-600;
margin-left: 1em;
height: 3em;
width: 7em;
padding: 0;
font-size: 1em;
border-radius: $radius-small;
transition: none;
&:hover {
background-color: $grey-700;
}
@include breakpoint(mobile) {
margin-left: 0.75em;
}
}
@include breakpoint(desktop) {
position: -webkit-sticky;
position: sticky;
top: $mobile-nav-height;
}
}

View File

@@ -8,16 +8,17 @@
.tab-buttons {
color: $dark-grey;
box-shadow: $distributor-header-shadow;
position: relative;
.columns {
display: flex;
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
display: table;
width: 100%;
}
@media all and (max-width: 480px) {
@include breakpoint(mobile) {
padding: 0;
}
}
@@ -54,7 +55,7 @@
background: none;
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
padding: 0.35em 0 0.65em 0;
}
}
@@ -67,7 +68,7 @@
}
}
@media all and (max-width: 1024px) {
@include breakpoint(desktop) {
display: table-cell;
width: auto;
}
@@ -76,9 +77,9 @@
// content revealed in accordion
.page-view {
margin-bottom: 5em;
background: none;
border: none;
padding-bottom: 5em;
.content {
padding: 1.25em 0;
@@ -104,7 +105,7 @@
p {
max-width: 100%;
@media all and (max-width: 768px) {
@include breakpoint(tablet) {
height: auto !important;
}
}
@@ -121,5 +122,13 @@
margin-bottom: 2px;
}
}
&.with-darker-background {
background-color: $very-light-grey-transparency;
a {
color: $teal-500;
}
}
}
}

View File

@@ -72,6 +72,12 @@
}
// Shopping cart
#update-cart {
#errorExplanation {
display: none;
}
}
#cart-detail {
.cart-item-delete, .bought-item-delete {
a {
@@ -102,6 +108,12 @@
float: right;
}
}
input {
&.ng-invalid-stock, &.ng-invalid-number {
border: 1px solid $clr-brick;
}
}
}
.item-thumb-image {
@@ -115,3 +127,14 @@
height: 36px;
}
}
.links {
.button {
padding: 1.125rem 0 1.1875rem;
width: 210px;
@media all and (max-width: 480px) {
width: 100%;
}
}
}

View File

@@ -10,7 +10,7 @@
.tab {
text-align: center;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
text-align: left;
}
@@ -24,7 +24,7 @@
padding: 1em;
border: none;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
padding: 0.35em 0 0.65em 0;
text-shadow: none;
}
@@ -37,7 +37,7 @@
border-bottom: 4px solid $clr-brick-bright;
cursor: pointer;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
transition: none;
color: white;
background-color: $clr-brick-bright;
@@ -46,7 +46,7 @@
a {
color: $clr-brick-bright;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
color: #ffffff;
}
}
@@ -55,14 +55,14 @@
&.selected {
border-bottom: 4px solid $clr-brick;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
background-color: $clr-brick;
}
a {
color: $clr-brick;
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
color: #ffffff;
}
}

View File

@@ -57,7 +57,7 @@
}
}
@media all and (max-width: 640px) {
@include breakpoint(phablet) {
render-svg {
svg {
width: 24px;

View File

@@ -2,6 +2,7 @@
@import "branding";
@import "mixins";
@import "typography";
@import "variables";
// Button class extensions
@@ -64,13 +65,13 @@
.button.primary, button.primary {
font-family: $body-font;
background: $clr-brick;
background: $orange-450;
color: white;
}
.button.primary:hover, .button.primary:active, .button.primary:focus, button.primary:hover, button.primary:active, button.primary:focus {
background: $clr-brick-bright;
text-shadow: 0 1px 0 $clr-brick;
background: $orange-400;
text-shadow: 0 1px 0 $orange-450;
}
button.success, .button.success {
@@ -123,9 +124,37 @@ button.success, .button.success {
}
}
button.large {
height: 3em;
font-size: 1em;
color: $white;
border-radius: $radius-medium;
margin: 0;
padding: 0;
&.dark {
background-color: $grey-800;
border: 1px solid $grey-600;
}
&.bright {
background-color: $orange-500;
border: none;
}
}
// Responsive
@media screen and (min-width: 768px) {
[role="main"] {
padding: 0;
}
}
.flex {
display: flex;
}
.no-gutter {
padding-right: 0;
padding-left: 0;
}

View File

@@ -30,3 +30,11 @@ $topbar-dropdown-link-color: $black;
$topbar-dropdown-bg: $white;
$topbar-dropdown-link-bg: $white;
$topbar-dropdown-link-bg-hover: $white;
$mobile-nav-height: 2.8em;
$radius-small: 0.25em;
$radius-medium: 0.5em;
$shop-sidebar-overlay: rgba(0, 0, 0, 0.5);
$transition-sidebar: 250ms ease-in-out 0s;

View File

@@ -68,6 +68,10 @@ table.social {
background-color: white !important;
border: 1px solid #ebebeb;
}
&.fullwidth {
width: 100%;
}
}
table.order-summary {
@@ -138,6 +142,10 @@ a {
&.ms {
background-color: #000 !important;
}
&.ig {
background-color: #fb3958 !important;
}
}
.sidebar .soc-btn {

View File

@@ -17,8 +17,9 @@ module Admin
respond_to do |format|
format.html
format.json do
tag_rule_mapping = TagRule.mapping_for(Enterprise.where(id: params[:enterprise_id]))
render_as_json @collection, tag_rule_mapping: tag_rule_mapping
render_as_json @collection,
tag_rule_mapping: tag_rule_mapping,
customer_tags: customer_tags_by_id
end
end
end
@@ -64,8 +65,13 @@ module Admin
def collection
return Customer.where("1=0") unless json_request? && params[:enterprise_id].present?
enterprise = Enterprise.managed_by(spree_current_user).find_by_id(params[:enterprise_id])
Customer.of(enterprise)
Customer.of(managed_enterprise_id).
includes(:bill_address, :ship_address, user: :credit_cards)
end
def managed_enterprise_id
@managed_enterprise_id ||= Enterprise.managed_by(spree_current_user).
select('enterprises.id').find_by_id(params[:enterprise_id])
end
def load_managed_shops
@@ -80,5 +86,28 @@ module Admin
def ams_prefix_whitelist
[:subscription]
end
def tag_rule_mapping
TagRule.mapping_for(Enterprise.where(id: managed_enterprise_id))
end
# Fetches tags for all customers of the enterprise and returns a hash indexed by customer_id
def customer_tags_by_id
customer_tags = ::ActsAsTaggableOn::Tag.
joins(:taggings).
includes(:taggings).
where(taggings:
{ taggable_type: 'Customer',
taggable_id: Customer.of(managed_enterprise_id),
context: 'tags' })
customer_tags.each_with_object({}) do |tag, indexed_hash|
tag.taggings.each do |tagging|
customer_id = tagging.taggable_id
indexed_hash[customer_id] ||= []
indexed_hash[customer_id] << tag.name
end
end
end
end
end

View File

@@ -1,9 +1,13 @@
module Admin
class EnterpriseRelationshipsController < ResourceController
def index
@my_enterprises = Enterprise.managed_by(spree_current_user).by_name
@all_enterprises = Enterprise.by_name
@enterprise_relationships = EnterpriseRelationship.by_name.involving_enterprises @my_enterprises
@my_enterprises = Enterprise.
includes(:shipping_methods, :payment_methods).
managed_by(spree_current_user).by_name
@all_enterprises = Enterprise.includes(:shipping_methods, :payment_methods).by_name
@enterprise_relationships = EnterpriseRelationship.
includes(:parent, :child).
by_name.involving_enterprises @my_enterprises
end
def create

View File

@@ -145,7 +145,7 @@ module Admin
preload(:schedules).
ransack(params[:q]).
result.
accessible_by(spree_current_user)
visible_by(spree_current_user)
end
def load_data_for_index

View File

@@ -1,11 +1,18 @@
module Api
class OrderCyclesController < Api::BaseController
include EnterprisesHelper
respond_to :json
include ApiActionCaching
skip_authorization_check
skip_before_filter :authenticate_user, :ensure_api_key, only: [:taxons, :properties]
caches_action :taxons, :properties,
expires_in: CacheService::FILTERS_EXPIRY,
cache_path: proc { |controller| controller.request.url }
def products
return render_no_products unless order_cycle.open?
products = ProductsRenderer.new(
distributor,
order_cycle,
@@ -15,7 +22,7 @@ module Api
render json: products
rescue ProductsRenderer::NoProducts
render status: :not_found, json: ''
render_no_products
end
def taxons
@@ -35,6 +42,10 @@ module Api
private
def render_no_products
render status: :not_found, json: ''
end
def product_properties
Spree::Property.
joins(:products).
@@ -70,11 +81,11 @@ module Api
end
def distributor
Enterprise.find_by_id(params[:distributor])
@distributor ||= Enterprise.find_by_id(params[:distributor])
end
def order_cycle
OrderCycle.find_by_id(params[:id])
@order_cycle ||= OrderCycle.find_by_id(params[:id])
end
def customer

View File

@@ -14,10 +14,6 @@ class BaseController < ApplicationController
helper 'spree/base'
# Spree::Core::ControllerHelpers declares helper_method get_taxonomies, so we need to
# include Spree::ProductsHelper so that method is available on the controller
include Spree::ProductsHelper
before_filter :set_locale
before_filter :check_order_cycle_expiry

View File

@@ -4,24 +4,24 @@ class CartController < BaseController
before_filter :check_authorization
def populate
order = current_order(true)
# Without intervention, the Spree::Adjustment#update_adjustable callback is called many times
# during cart population, for both taxation and enterprise fees. This operation triggers a
# costly Spree::Order#update!, which only needs to be run once. We avoid this by disabling
# callbacks on Spree::Adjustment and then manually invoke Spree::Order#update! on success.
Spree::Adjustment.without_callbacks do
cart_service = CartService.new(current_order(true))
cart_service = CartService.new(order)
if cart_service.populate(params.slice(:products, :variants, :quantity), true)
fire_event('spree.cart.add')
fire_event('spree.order.contents_changed')
current_order.cap_quantity_at_stock!
current_order.update!
order.update_distribution_charge!
order.cap_quantity_at_stock!
order.update!
variant_ids = variant_ids_in(cart_service.variants_h)
render json: { error: false,
stock_levels: VariantsStockLevels.new.call(current_order, variant_ids) },
stock_levels: VariantsStockLevels.new.call(order, variant_ids) },
status: :ok
else
render json: { error: true }, status: :precondition_failed

View File

@@ -40,7 +40,7 @@ class CheckoutController < Spree::StoreController
# This is only required because of spree_paypal_express. If we implement
# a version of paypal that uses this controller, and more specifically
# the #update_failed method, then we can remove this call
RestartCheckout.new(@order).call
OrderCheckoutRestart.new(@order).call
end
def update
@@ -133,13 +133,6 @@ class CheckoutController < Spree::StoreController
@order.ship_address = finder.ship_address
end
def before_delivery
return if params[:order].present?
packages = @order.shipments.map(&:to_package)
@differentiator = Spree::Stock::Differentiator.new(@order, packages)
end
def before_payment
current_order.payments.destroy_all if request.put?
end
@@ -153,10 +146,12 @@ class CheckoutController < Spree::StoreController
end
def valid_payment_intent_provided?
params["payment_intent"]&.starts_with?("pi_") &&
@order.state == "payment" &&
@order.payments.last.state == "pending" &&
@order.payments.last.response_code == params["payment_intent"]
return false unless params["payment_intent"]&.starts_with?("pi_")
last_payment = OrderPaymentFinder.new(@order).last_payment
@order.state == "payment" &&
last_payment&.state == "pending" &&
last_payment&.response_code == params["payment_intent"]
end
def handle_redirect_from_stripe

View File

@@ -65,49 +65,15 @@ class EnterprisesController < BaseController
def reset_order
order = current_order(true)
reset_distributor(order, distributor)
reset_user_and_customer(order) if try_spree_current_user
reset_order_cycle(order, distributor)
order.save!
# reset_distributor must be called before any call to current_customer or current_distributor
order_cart_reset = OrderCartReset.new(order, params[:id])
order_cart_reset.reset_distributor
order_cart_reset.reset_other!(try_spree_current_user, current_customer)
rescue ActiveRecord::RecordNotFound
flash[:error] = I18n.t(:enterprise_shop_show_error)
redirect_to shops_path
end
def distributor
@distributor ||= Enterprise.is_distributor.find_by_permalink(params[:id]) ||
Enterprise.is_distributor.find(params[:id])
end
def reset_distributor(order, distributor)
if order.distributor && order.distributor != distributor
order.empty!
order.set_order_cycle! nil
end
order.distributor = distributor
end
def reset_user_and_customer(order)
order.associate_user!(spree_current_user) if order.user.blank? || order.email.blank?
order.__send__(:associate_customer) if order.customer.nil? # Only associates existing customers
end
def reset_order_cycle(order, distributor)
order_cycles = Shop::OrderCyclesList.new(distributor, current_customer).call
order.order_cycle = order_cycles.first if order_cycles.size == 1
end
def shop_order_cycles
if current_order_cycle
[current_order_cycle]
else
OrderCycle.not_closed.with_distributor(current_distributor)
end
end
def set_noindex_meta_tag
@noindex_meta_tag = true unless current_distributor.visible?
end

View File

@@ -18,9 +18,9 @@ class HomeController < BaseController
private
# Cache the value of the query count for 24 hours
def cached_count(key, query)
Rails.cache.fetch("home_stats_count_#{key}", expires_in: 1.day, race_condition_ttl: 10) do
# Cache the value of the query count
def cached_count(statistic, query)
CacheService.home_stats(statistic) do
query.count
end
end

View File

@@ -4,10 +4,6 @@ module Spree
after_filter :initialize_mail_settings
def update
if params[:smtp_password].blank?
params.delete(:smtp_password)
end
params.each do |name, value|
next unless Spree::Config.has_preference? name

View File

@@ -29,6 +29,8 @@ module Spree
return
end
authorize_stripe_sca_payment
if @order.completed?
@payment.process!
flash[:success] = flash_message_for(@payment, :successfully_created)
@@ -93,7 +95,7 @@ module Spree
available(:back_end).
select{ |pm| pm.has_distributor? @order.distributor }
@payment_method = if @payment && @payment.payment_method
@payment_method = if @payment&.payment_method
@payment.payment_method
else
@payment_methods.first
@@ -124,6 +126,13 @@ module Spree
def load_payment
@payment = Payment.find(params[:id])
end
def authorize_stripe_sca_payment
return unless @payment.payment_method.class == Spree::Gateway::StripeSCA
@payment.authorize!
raise Spree::Core::GatewayError, I18n.t('authorization_failure') unless @payment.pending?
end
end
end
end

View File

@@ -1,66 +0,0 @@
module Spree
module Admin
module Reports
class EnterpriseFeeSummariesController < BaseController
before_filter :load_report_parameters
before_filter :load_permissions
def new; end
def create
return respond_to_invalid_parameters unless @report_parameters.valid?
@report_parameters.authorize!(@permissions)
@report = report_klass::ReportService.new(@permissions, @report_parameters)
renderer.render(self)
rescue ::Reports::Authorizer::ParameterNotAllowedError => e
flash[:error] = e.message
render_report_form
end
private
def respond_to_invalid_parameters
flash[:error] = I18n.t("invalid_filter_parameters", scope: i18n_scope)
render_report_form
end
def i18n_scope
"order_management.reports.enterprise_fee_summary"
end
def render_report_form
render action: :new
end
def report_klass
OrderManagement::Reports::EnterpriseFeeSummary
end
def load_report_parameters
@report_parameters = report_klass::Parameters.new(params[:report] || {})
end
def load_permissions
@permissions = report_klass::Permissions.new(spree_current_user)
end
def report_renderer_klass
case params[:report_format]
when "csv"
report_klass::Renderers::CsvRenderer
when nil, "", "html"
report_klass::Renderers::HtmlRenderer
else
raise Reports::UnsupportedReportFormatException
end
end
def renderer
@renderer ||= report_renderer_klass.new(@report)
end
end
end
end
end

View File

@@ -255,7 +255,7 @@ module Spree
def my_order_cycles
OrderCycle.
active_or_complete.
accessible_by(spree_current_user).
visible_by(spree_current_user).
order('orders_close_at DESC')
end
@@ -298,11 +298,20 @@ module Spree
end
def url_for_report(report)
public_send("#{report}_admin_reports_url".to_sym)
if report_in_order_management_engine?(report)
main_app.public_send("new_order_management_reports_#{report}_url".to_sym)
else
public_send("#{report}_admin_reports_url".to_sym)
end
rescue NoMethodError
url_for([:new, :admin, :reports, report.to_s.singularize])
end
# List of reports that have been moved to the Order Management engine
def report_in_order_management_engine?(report)
report == :enterprise_fee_summary
end
def timestamp
Time.zone.now.strftime("%Y%m%d")
end

View File

@@ -3,14 +3,6 @@ module Spree
class TaxonsController < Spree::Admin::BaseController
respond_to :html, :json, :js
def search
@taxons = if params[:ids]
Spree::Taxon.where(id: params[:ids].split(','))
else
Spree::Taxon.limit(20).search(name_cont: params[:q]).result
end
end
def create
@taxonomy = Taxonomy.find(params[:taxonomy_id])
@taxon = @taxonomy.taxons.build(params[:taxon])

View File

@@ -22,7 +22,7 @@ Spree::PaypalController.class_eval do
if current_order.complete?
flash[:notice] = t(:order_processed_successfully)
ResetOrderService.new(self, current_order).call
OrderCompletionReset.new(self, current_order).call
session[:access_token] = current_order.token
end
end

View File

@@ -14,7 +14,7 @@ module EnterprisesHelper
def available_shipping_methods
return [] if current_distributor.blank?
shipping_methods = current_distributor.shipping_methods
shipping_methods = current_distributor.shipping_methods.display_on_checkout.to_a
applicator = OpenFoodNetwork::TagRuleApplicator.new(current_distributor, "FilterShippingMethods", current_customer.andand.tag_list)
applicator.filter!(shipping_methods)

View File

@@ -47,7 +47,7 @@ module InjectionHelper
enterprises_and_relatives = current_distributor.
relatives_including_self.
activated.
includes(address: [:state, :country]).
includes(:properties, address: [:state, :country], supplied_products: :properties).
all
inject_json_ams "enterprises",

View File

@@ -0,0 +1,7 @@
# frozen_string_literal: true
module OrderHelper
def last_payment_method(order)
OrderPaymentFinder.new(order).last_payment&.payment_method
end
end

View File

@@ -13,7 +13,7 @@ module ShopHelper
end
def require_customer?
current_distributor.require_login? && !user_is_related_to_distributor?
@require_customer ||= current_distributor.require_login? && !user_is_related_to_distributor?
end
def user_is_related_to_distributor?
@@ -48,6 +48,6 @@ module ShopHelper
end
def no_open_order_cycles?
@order_cycles && @order_cycles.empty?
@no_open_order_cycles ||= @order_cycles&.empty?
end
end

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
module Spree
module ProductsHelper
def product_has_variant_unit_option_type?(product)
product.option_types.any? { |option_type| variant_unit_option_type? option_type }
end
def variant_unit_option_type?(option_type)
Spree::Product.all_variant_unit_option_types.include? option_type
end
end
end

View File

@@ -1,23 +0,0 @@
module Spree
ProductsHelper.class_eval do
# Return the price of the variant, overriding sprees price diff capability.
# This will allways return the variant price as if the show_variant_full_price is set.
def variant_price_diff(variant)
"(#{Spree::Money.new(variant.price)})"
end
def product_has_variant_unit_option_type?(product)
product.option_types.any? { |option_type| variant_unit_option_type? option_type }
end
def variant_unit_option_type?(option_type)
Spree::Product.all_variant_unit_option_types.include? option_type
end
def product_variant_unit_options
[[I18n.t(:weight), 'weight'],
[I18n.t(:volume), 'volume'],
[I18n.t(:items), 'items']]
end
end
end

18
app/jobs/job_logger.rb Normal file
View File

@@ -0,0 +1,18 @@
# frozen_string_literal: false
module JobLogger
class Formatter < ::Logger::Formatter
def call(_severity, timestamp, _progname, msg)
time = timestamp.strftime('%FT%T%z')
"#{time}: #{msg.is_a?(String) ? msg : msg.inspect}\n"
end
end
def self.logger
@logger ||= begin
logger = Delayed::Worker.logger.clone
logger.formatter = Formatter.new
logger
end
end
end

View File

@@ -24,7 +24,7 @@ class SubscriptionConfirmJob
# Confirm these proxy orders
ProxyOrder.where(id: unconfirmed_proxy_orders_ids).each do |proxy_order|
Rails.logger.info "Confirming Order for Proxy Order #{proxy_order.id}"
JobLogger.logger.info "Confirming Order for Proxy Order #{proxy_order.id}"
confirm_order!(proxy_order.order)
end
@@ -57,16 +57,28 @@ class SubscriptionConfirmJob
return true unless order.payment_required?
setup_payment!(order)
return false if order.errors.present?
return false if order.errors.any?
authorize_payment!(order)
return false if order.errors.any?
order.process_payments!
return false if order.errors.present?
return false if order.errors.any?
true
end
def setup_payment!(order)
OrderManagement::Subscriptions::PaymentSetup.new(order).call!
return if order.errors.any?
OrderManagement::Subscriptions::StripePaymentSetup.new(order).call!
end
def authorize_payment!(order)
return if order.subscription.payment_method.class != Spree::Gateway::StripeSCA
OrderManagement::Subscriptions::StripeScaPaymentAuthorize.new(order).call!
end
def send_confirmation_email(order)

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