Commit Graph

110 Commits

Author SHA1 Message Date
Nestor Soriano 5af12170d7
Make the WC_Settings_Page::get_settings_for_section final
This helps on conveying the notion that the method to be overriden
is get_settings_for_section_core instead (or get_settings_for_X_section
methods must be added).
2021-04-13 09:31:50 +02:00
Nestor Soriano 56cc063d7f
Rename "get_settings" to "get_settings_for_section" in settings pages.
In PHP 8 overriding a method having an optional parameter with a
method having no parameters throws an error, thus we can't use
the strategy of changing "get_settings()" to "get_settings($section='')"
without breaking existing extensions. So we do the following instead:

- Rename the existing "get_settings" to "get_settings_for_section"
- Rename the existing "get_settings_for_section" to "get_settings_for_section_core"
- Add a "get_settings" that just does "get_settings_for_section('')"
  for compatibility, but mark it as deprecated.
2021-04-12 18:04:41 +02:00
Nestor Soriano d820fbe4a7
Fix wrong handling of the shipping - shipping options section. 2021-04-12 12:42:40 +02:00
Nestor Soriano 5a11d9e064
Refactor the settings pages, and add unit tests for them.
This commit fixes some inconsistencies in the settings pages, and
makes all the existing pages extensible by adding new sections
(that was possible in some pages, but not in others). Main changes:

1. Modify the 'get_sections' method so that it invokes a new protected
   'get_own_sections' method and then triggers the
   'woocommerce_get_sections_' . id filter.

This way the filter is triggered only in the base class
and not in each of the derived classes too.

2. Change the get_settings() method so that it has its signature
   changed to get_settings( $current_section = '' )
   in the base class and in all the derived class.

Some derived classes were already using this signature, but others
(those not having multiple sections natively) weren't, making then
effectively impossible to define multiple sections for these pages
via filters.

With this change all the section pages act consistently and allow
both adding new settings to the default "General" section
and creating new sections via filters.

3. Change the implementation of 'get_settings' in the base class
   so that it searches for a 'get_settings_for_{section_id}_section'
   method in the class and executes it, otherwise it executes the new
   protected method get_settings_for_section( $current_section ); then
   it triggers the 'woocommerce_get_settings_' . id filter.

This makes it easier to separate the code that returns the list
of filters in multiple methods, one per section, instead of using
one big if-else-else... block.

So now instead of overriding get_settings($current_section='') derived
classes need to implement get_settings_for_{$current_section}_section
for each section, or override get_settings_for_section($current_section)
or both. 'get_settings_for_section' returns an empty array by default.

Also, 'woocommerce_get_settings_' . id is triggered in one single
place too.

Other improvements:

* Remove duplicated code from 'output' in 'WC_Settings_Page' children.

Some classes inherited from 'WC_Settings_Page' override the 'output'
method with custom code, which in all cases ended up repeating the code
of the original method as a fallback. These repetitions have been
replaced with 'parent::output()'.

* Fix inconsistencies for 'save' and 'output' in WC_Settings_Tax/Emails

The 'WC_Settings_Tax' and 'WC_Settings_Emails' classes had some
inconsistencies in their 'save' and 'output' methods that prevented the
proper creation new sections and the addition of new settings via the
'woocommerce_get_sections_' and 'woocommerce_get_settings_' filters.
Now they work as expected.

* Deduplicate parts of 'save' in 'WC_Settings_Page' and children.

Two methods have been added to 'WC_Settings_Page' class:
'save_settings_for_current_section' and 'do_update_options_action'.
These are intended to be invoked by derived classes in their 'save'
methods, in order to remove code repetition.

* Add some helper methods to WC_Unit_Test_Case.

Methods added:
- assertOutputsHTML
- assertEqualsHTML
- normalize_html
- capture_output_from
2021-04-12 12:42:26 +02:00
Claudio Sanches d48f1d4e2e Fixed package tag usage 2020-08-05 13:36:24 -03:00
Albert Juhé Lluveras 9a34c4fe75 Update WC shipping settings so no shipping zones banner appears when all are deactivated 2020-05-15 16:32:12 +02:00
Christopher Allford 6ad091a9b7 Changed all of the constant accesses into corresponding Automattic\Jetpack\Constants usages 2020-01-28 21:21:29 -08:00
Mike Jolley 1dea9d6f48 Merge branch 'enhancement/21758' 2019-01-31 13:44:35 +00:00
Mike Jolley e9f0490829
Merge pull request #21719 from vyskoczilova/master
Custom settings on shipping section (#13463, #13461)
2019-01-23 17:07:13 +00:00
Mike Jolley 99f663ad5c
Merge pull request #22131 from willgorham/improve-shipping-zone-continents
Improve shipping zone continents [Fixes #22130]
2019-01-23 13:27:16 +00:00
Will Gorham 45e7f344b1 Use shipping countries instead of selling countries 2019-01-22 13:51:35 -05:00
Will Gorham 1fc4ef6c59 Clean up docblocks and unused vars 2019-01-09 12:54:37 -05:00
Will Gorham da6f425488 phpcs 2019-01-09 12:49:11 -05:00
Will Gorham 8051a0b0fc Only show available shipping continents in zone regions 2019-01-09 12:48:18 -05:00
JeroenSormani f4775ccd90 Use shipping method instead of property through magic + doc return statements 2019-01-04 12:41:38 +00:00
Mike Jolley ff3a852b7f Zones should use shipping countries, not allowed countries 2019-01-04 11:04:17 +00:00
Mike Jolley c4e071480a phpcs 2019-01-04 11:04:12 +00:00
Karolína Vyskočilová 45d2ddc5e8 phpcbf 2018-11-18 10:58:58 +01:00
Karolína Vyskočilová 6687633c92 fix PHP 7.2 travis build 2018-10-28 11:36:55 +01:00
Karolína Vyskočilová 1dec0264bc custom settings on shipping section (#13463, #13461) 2018-10-27 23:53:43 +02:00
claudiulodro 1716538617 Prevent duplicate actions from firing in shipping settings 2018-10-03 15:43:11 -04:00
Mike Jolley 1ff5520512 Pass through JSON context when getting zones for JSON responses and scripts 2018-05-09 17:41:33 +01:00
Mike Jolley 3c34394296 Set more defaults to reduce query count 2018-05-01 12:15:57 +01:00
Rodrigo Primo 23b69eba53 Use phpcbf to fix coding standard violations in includes/admin
After using phpcbf to fix the coding standard violations, I did some manual adjustments to the changes, especially in poorly indented files.
2018-03-05 16:21:35 -03:00
Claudio Sanches fe83dfdba7 Merge branch 'master' into fix/18545 2018-02-21 19:15:45 -03:00
Gerhard Potgieter 057c87c457 Add missing woocommerce_update_options_ action for settings classes save methods overridden from parent. 2018-01-26 11:22:09 +02:00
Mike Jolley 3ce51d9791 JSON context 2018-01-22 14:11:43 +00:00
Mike Jolley a110180643 Saving taxes should invalidate caches. 2018-01-18 17:47:26 +00:00
Jeroen Sormani 607cd878e0 Settings parent construct (#16412)
* Miscellaneous cleanup of typos + change some return types for IDE helpers

* Call/use parent::__construct() to add filters for settings output, saving
2017-08-11 21:36:35 -03:00
Mike Jolley d3666738d8 Merge branch 'pr/15069' 2017-05-23 18:56:58 +01:00
Rasmus Bengtsson 185934fad9 Fix phpdoc to include params and correct types 2017-05-15 13:50:52 +02:00
Rasmus Bengtsson 6a7fc8650f Remove unused local variables 2017-05-15 12:06:52 +02:00
Mike Jolley d744dce594 get_settings for shipping and checkout need to support sections for the API
Fixes #14769
2017-04-28 14:37:44 +01:00
Mike Jolley bbf8e750ce Tidy up includes 2017-02-16 11:46:01 +00:00
Mike Jolley cb04d5985a Fix add zone button and default title
Fixes #12829
2017-01-17 15:25:12 +00:00
Justin Shreve 90e93e1eba Set a blank default name when displaying the shipping zone form, so the placeholder will be used instead. 2016-11-22 10:52:58 -08:00
Justin Shreve 735c1b7a14 Finish moving queries to the shipping zone data store, update usage of deprecated get_zone_id, legacy updates. 2016-11-16 04:53:23 -08:00
Claudio Sanches 657c312cae Fix strings case (#12069)
* Fixed case for all _e, esc_attr_e and esc_html_e strings

* Fixed case for all _n_noop strings

* Fixed case for all _x strings

* Fixed case for all __, esc_html__ and esc_attr__ strings

* Fixed a few more strings

* Fixed strings in unit tests

* Fix PayPal Standard case.

* Save Order text
2016-10-12 11:16:30 +01:00
Mike Jolley 2d270fb405 Fix saving and rest of world 2016-10-10 18:41:07 +01:00
Mike Jolley 160049eddd Remove save button from zones screen. 2016-10-10 17:50:29 +01:00
Mike Jolley 83cc0c7066 Work on shipping zone screens 2016-09-24 03:22:57 +01:00
Aristeides Stathopoulos 72696901f3 WordPress.WhiteSpace.OperatorSpacing.SpacingAfter 2016-08-27 09:14:06 +03:00
Aristeides Stathopoulos b063bcfe4c last item in a multiline-array should end in a comma 2016-08-27 04:46:45 +03:00
Mike Jolley 84487d0f4b Shipping debug mode moved to shipping settings 2016-08-24 16:55:34 +01:00
Mike Jolley 66c61eebc8 Define full path for includes
Closes #11087
2016-07-27 11:58:43 +01:00
Mike Jolley e1ec01c9f9 Zone wording tweaks
Closes #11184
2016-06-20 12:50:55 +01:00
Mike Jolley b3844257a0 Use wc_get_shipping_method_count helper 2016-05-25 12:05:33 +01:00
Mike Jolley 22291e3ead Generate a zone name if left blank
@coderkevin
2016-05-24 18:59:35 +01:00
Mike Jolley 54231c2946 Allow shipping classes interface to be extended. 2016-05-19 12:38:28 +01:00
Mike Jolley 43af207558 Output buffering and redirects after turning off legacy
Closes #10806
2016-04-28 12:36:51 +01:00