diff --git a/.eslintrc b/.eslintrc index b68d119..21ba75c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,7 +3,8 @@ "ignorePatterns": [ "node_modules/", "**/*.bundle.js", - "vendor/" + "vendor/", + "usage-tracking.js" ], "parserOptions": { "requireConfigFile": false diff --git a/package-lock.json b/package-lock.json index 25c6d78..e1b6387 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4291,7 +4291,7 @@ }, "node_modules/@siteimprove/accessibility-cms-components": { "version": "0.1.0", - "resolved": "git+ssh://git@github.com/siteimprove/cms-alfa-fe-app.git#204716ee7a1aff0b6ff65318b7b604be2e67c581", + "resolved": "git+ssh://git@github.com/siteimprove/cms-alfa-fe-app.git#48c9545be55760bad66db82de9a752525b79d85d", "dependencies": { "@siteimprove/fancylab": "^97.3.2", "@siteimprove/fancylib": "^7.5.1", diff --git a/siteimprove-accessibility/assets/usage-tracking.js b/siteimprove-accessibility/assets/usage-tracking.js new file mode 100644 index 0000000..45fe913 --- /dev/null +++ b/siteimprove-accessibility/assets/usage-tracking.js @@ -0,0 +1,10 @@ +/* global jQuery, siteimproveUsageTrackingInitParams */ +(function (apiKey,$) { + (function (p,e,n,d,o){p[o]=p[o] || function (){(p[o].q=p[o].q || []).push(arguments);};const t=e.createElement(n),s=e.getElementsByTagName(n)[0];t.async=1;t.src=d;s.parentNode.insertBefore(t,s);})(window,document,'script','https://cdn.pendo.io/agent/static/'+apiKey+'/pendo.js','pendo'); + /* global pendo */ + window.addEventListener('load', function () { + if (typeof pendo === 'undefined') return; + const defaultParams = {apiKey, visitor: {id: 'WORDPRESS-ANONYMOUS-ID'}, account: {id: '017065616813'}, disableGuides: true}; + pendo.initialize($.extend(true, defaultParams, siteimproveUsageTrackingInitParams)); + }); +})('730de0a8-013b-42b8-58b9-5c52d8158b20', jQuery); diff --git a/siteimprove-accessibility/siteimprove-accessibility.php b/siteimprove-accessibility/siteimprove-accessibility.php index 4a76de5..220a2e9 100644 --- a/siteimprove-accessibility/siteimprove-accessibility.php +++ b/siteimprove-accessibility/siteimprove-accessibility.php @@ -55,11 +55,12 @@ */ class Siteimprove_Accessibility { - const OPTION_IS_PAGE_CHECK_USED = 'siteimprove_accessibility_is_page_check_used'; - const OPTION_IS_WIDGET_ENABLED = 'siteimprove_accessibility_is_widget_enabled'; - const OPTION_WIDGET_POSITION = 'siteimprove_accessibility_widget_position'; - const OPTION_ALLOWED_USER_ROLE = 'siteimprove_accessibility_allowed_user_role'; - const OPTION_PREVIEW_AUTO_CHECK = 'siteimprove_accessibility_preview_auto_scan'; + const OPTION_IS_PAGE_CHECK_USED = 'siteimprove_accessibility_is_page_check_used'; + const OPTION_IS_WIDGET_ENABLED = 'siteimprove_accessibility_is_widget_enabled'; + const OPTION_WIDGET_POSITION = 'siteimprove_accessibility_widget_position'; + const OPTION_ALLOWED_USER_ROLE = 'siteimprove_accessibility_allowed_user_role'; + const OPTION_PREVIEW_AUTO_CHECK = 'siteimprove_accessibility_preview_auto_scan'; + const OPTION_PREVIEW_IS_USAGE_TRACKING_ENABLED = 'siteimprove_accessibility_is_usage_tracking_enabled'; private Service_Container $container; diff --git a/siteimprove-accessibility/src/Admin/Issues_Page.php b/siteimprove-accessibility/src/Admin/Issues_Page.php index 6220232..608d924 100644 --- a/siteimprove-accessibility/src/Admin/Issues_Page.php +++ b/siteimprove-accessibility/src/Admin/Issues_Page.php @@ -2,6 +2,7 @@ namespace Siteimprove\Accessibility\Admin; +use Siteimprove\Accessibility\Core\Usage_Tracking_Trait; use Siteimprove\Accessibility\Core\View_Trait; use Siteimprove\Accessibility\Core\Hook_Interface; use Siteimprove\Accessibility\Siteimprove_Accessibility; @@ -9,6 +10,7 @@ class Issues_Page implements Hook_Interface { use View_Trait; + use Usage_Tracking_Trait; const MENU_SLUG = 'siteimprove_accessibility_issues'; @@ -39,6 +41,8 @@ public function enqueue_scripts(): void { SITEIMPROVE_ACCESSIBILITY_VERSION, true ); + + $this->enqueue_usage_tracking_scripts(); } } diff --git a/siteimprove-accessibility/src/Admin/Reports_Page.php b/siteimprove-accessibility/src/Admin/Reports_Page.php index 010c58b..b45f04a 100644 --- a/siteimprove-accessibility/src/Admin/Reports_Page.php +++ b/siteimprove-accessibility/src/Admin/Reports_Page.php @@ -2,12 +2,14 @@ namespace Siteimprove\Accessibility\Admin; -use Siteimprove\Accessibility\Core\View_Trait; +use Siteimprove\Accessibility\Core\Usage_Tracking_Trait; use Siteimprove\Accessibility\Core\Hook_Interface; +use Siteimprove\Accessibility\Core\View_Trait; class Reports_Page implements Hook_Interface { use View_Trait; + use Usage_Tracking_Trait; const MENU_SLUG = 'siteimprove_accessibility_reports'; @@ -32,6 +34,8 @@ public function enqueue_scripts(): void { SITEIMPROVE_ACCESSIBILITY_VERSION, true ); + + $this->enqueue_usage_tracking_scripts(); } } diff --git a/siteimprove-accessibility/src/Admin/Settings.php b/siteimprove-accessibility/src/Admin/Settings.php index 21ab595..c3f70bd 100644 --- a/siteimprove-accessibility/src/Admin/Settings.php +++ b/siteimprove-accessibility/src/Admin/Settings.php @@ -29,6 +29,9 @@ public function init_options(): void { if ( ! get_option( Siteimprove_Accessibility::OPTION_PREVIEW_AUTO_CHECK, null ) ) { add_option( Siteimprove_Accessibility::OPTION_PREVIEW_AUTO_CHECK, 1 ); } + if ( ! get_option( Siteimprove_Accessibility::OPTION_PREVIEW_IS_USAGE_TRACKING_ENABLED, null ) ) { + add_option( Siteimprove_Accessibility::OPTION_PREVIEW_IS_USAGE_TRACKING_ENABLED, 1 ); + } } /** @@ -108,6 +111,14 @@ public function register_settings(): void { 'siteimprove_accessibility_manage_features_section' ); + add_settings_field( + Siteimprove_Accessibility::OPTION_PREVIEW_IS_USAGE_TRACKING_ENABLED, + __( 'Usage tracking', 'siteimprove-accessibility' ), + array( $this, 'render_field_is_usage_tracking_enabled' ), + 'siteimprove_accessibility_settings', + 'siteimprove_accessibility_manage_features_section' + ); + add_settings_field( 'siteimprove_accessibility_customer_support', 'Customer Support', @@ -149,6 +160,14 @@ public function register_settings(): void { 'sanitize_callback' => array( $this, 'sanitize_preview_auto_check' ), ) ); + + register_setting( + 'siteimprove_accessibility_settings', + Siteimprove_Accessibility::OPTION_PREVIEW_IS_USAGE_TRACKING_ENABLED, + array( + 'sanitize_callback' => array( $this, 'sanitize_is_usage_tracking_enabled' ), + ) + ); } /** @@ -191,6 +210,13 @@ public function render_field_preview_auto_check(): void { $this->render( 'views/partials/field_preview_auto_check.php' ); } + /** + * @return void + */ + public function render_field_is_usage_tracking_enabled(): void { + $this->render( 'views/partials/field_is_usage_tracking_enabled.php' ); + } + /** * @return void */ @@ -240,6 +266,15 @@ public function sanitize_preview_auto_check( $value ): int { return (int) rest_sanitize_boolean( $value ); } + /** + * @param $value + * + * @return int + */ + public function sanitize_is_usage_tracking_enabled( $value ): int { + return (int) rest_sanitize_boolean( $value ); + } + /** * @return array */ diff --git a/siteimprove-accessibility/src/Core/Usage_Tracking_Trait.php b/siteimprove-accessibility/src/Core/Usage_Tracking_Trait.php new file mode 100644 index 0000000..8d8db35 --- /dev/null +++ b/siteimprove-accessibility/src/Core/Usage_Tracking_Trait.php @@ -0,0 +1,34 @@ + + +
\ No newline at end of file diff --git a/siteimprove-accessibility/views/scan_panel.php b/siteimprove-accessibility/views/scan_panel.php index bd1b01a..38a3be0 100644 --- a/siteimprove-accessibility/views/scan_panel.php +++ b/siteimprove-accessibility/views/scan_panel.php @@ -1,6 +1,6 @@