Commit Graph

63 Commits

Author SHA1 Message Date
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
Ron Rennick a88a708286 remove privacy page dropdown 2020-06-18 10:40:17 -03:00
picocodes 91b01ccaff
fix typo 2020-02-12 17:13:13 +03:00
Claudio Sanches 02ae29c8fc Fixed support to older versions of WordPress 2019-12-10 22:12:50 -03:00
dsmithweb 5a17c63cc9 Update links 2019-12-10 18:41:55 -06:00
Gerhard 84b6fa144f Update description for automatic username generation to reflect how it actually works. 2019-06-12 12:13:41 +02:00
Timmy Crawford f2b55bf060 Move suggestions/tracks settings to new Advanced | WooCommerce.com page. 2019-04-09 09:38:26 -07:00
Timmy Crawford b35945c5f5 PHPCS fix. 2019-04-08 17:21:50 -07:00
Timmy Crawford e4552c571d Only show suggestions setting when current user can install_plugins 2019-04-08 16:27:32 -07:00
Timmy Crawford 4a2c706cc0 Add setting to control display of marketplace suggestions. 2019-04-08 16:24:52 -07:00
Timmy Crawford 886d1acca5 Updates to usage tracking text per feedback. 2019-04-08 12:00:11 -07:00
Timmy Crawford 72b9555706 Update opt-out usage tracking text. 2019-04-05 12:59:32 -07:00
Paul Sealock 9ee0912104 even more 2019-03-08 10:11:43 +13:00
Paul Sealock d968b95b53 Add opt in/out to settings page 2019-03-05 11:06:45 +13:00
Mike Jolley 8ad3491b99 Add option to control if remove personal data bulk action is allowed 2019-01-07 11:22:29 +00:00
Nico Mollet 0dcf6e2796
"account erasure request" text is not translatable
`esc_html__` should be used instead of `esc_html`
2018-11-05 14:47:28 +01:00
Ron Rennick ec44a36913 only include erasure tools link in erasure desc_tip when user has manage_privacy_options, escape the desc_tip 2018-10-12 21:49:05 -03:00
Mike Jolley 03dfd9b262 Remove . from strings 2018-05-21 17:02:33 +01:00
pierrebuet 3850f4f13a Diverse typos 2018-05-04 16:57:01 +02:00
Mike Jolley 2f8f30cd29 Make some strings easier to translate for translators 2018-05-03 14:50:39 +01:00
Mike Jolley 43f6a5114c Typos and unused variables 2018-05-01 13:54:18 +01:00
Mike Jolley f59acf1350 Merge branch 'master' into update/erasure-requests 2018-05-01 13:46:53 +01:00
Mike Jolley 6f6f15d22a Link to erasure page 2018-04-30 15:41:38 +01:00
Mike Jolley c765ce644d Inactive account handling 2018-04-30 15:38:45 +01:00
Mike Jolley e15a4f63a0 Update defaults so account creation is disabled until setup by admin 2018-04-26 11:50:15 +01:00
Mike Jolley c8005a8c00 Wording updates 2018-04-24 16:47:55 +01:00
Mike Jolley f71ffb5f5e Added erasure code and moved into separate classes. 2018-04-20 16:47:58 +01:00
claudiulodro c15cb09700 Resolve merge conflicts 2018-04-18 09:46:15 -07:00
Mike Jolley 30ba25d535 Remove defaults 2018-04-18 11:24:07 +01:00
Mike Jolley 6c5d4c7cda Add privacy settings 2018-04-17 18:32:31 +01:00
Mike Jolley 314d949d2c Background process to cleanup 2018-04-17 15:21:03 +01:00
Mike Jolley 27cf41bbf0 Added personal data cleanup settings 2018-04-17 11:45:24 +01:00
Mike Jolley 78f96fcd40 Hook mapping/bw compat 2018-04-16 14:27:03 +01:00
Mike Jolley 1b34cd4745 Moved settings tabs around to allow for privacy page. 2018-04-12 16:59:42 +01:00
Mike Jolley eb886c924e Rename option tabs 2018-04-12 11:13:01 +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
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
Umesh Ghimire 3f2742fd6f Tweak - Add remove icon on Account page my account page dropdown 2017-06-19 12:59:12 +05:45
Mike Jolley e2c73c2277 Tweak labels for customer reg
Closes #13676
2017-03-21 13:23:38 +00:00
Mike Jolley bbf8e750ce Tidy up includes 2017-02-16 11:46:01 +00:00
Rami Yushuvaev 0c1e531091 few more i18n updates (#12185)
* i18n: simpler translation strings

* i18n: simpler translation strings

* i18n: readble printf(), and moving the %s placeholder to `%s product`

* i18n: make string translatable and remove the HTML tags

* i18n: avoide using HTML tags in translatino strings
2016-10-26 11:31:32 -02: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
Aristeides Stathopoulos 0b0f67ad28 WordPress.Arrays.ArrayDeclaration.SpaceAfterDoubleArrow 2016-08-27 05:36:32 +03:00
Aristeides Stathopoulos b063bcfe4c last item in a multiline-array should end in a comma 2016-08-27 04:46:45 +03:00
Nicola Mustone 0aed3bd8b8 missing ) 2016-07-26 16:13:09 +02:00
Nicola Mustone e799b1e234 reduce number of strings 2016-07-26 15:46:50 +02:00
Claudio Sanches 18b1b8c238 Disable empty my account endpoints, closes #11274 2016-06-30 13:58:10 -03:00
Mike Jolley cc41c38ff8 Tweak page titles on account pages 2016-05-24 19:09:07 +01:00
Mike Jolley b0dfb55710 Tweak account settings grouping
Closes #10766
2016-04-22 12:29:06 +01:00