PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 All 506 releases
jetpack / jetpack_vendor / automattic / jetpack-masterbar / src / inline-help / class-inline-help.php

class-inline-help.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-a.5, at jetpack_vendor/automattic/jetpack-masterbar/src/inline-help/class-inline-help.php

127 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Inline Help.
4 *
5 * Handles providing a LiveChat icon within WPAdmin until such time
6 * as the full live chat experience can be run in a non-Calypso environment.
7 *
8 * @package automattic/jetpack-masterbar
9 */
10
11 namespace Automattic\Jetpack\Masterbar;
12
13 use Automattic\Jetpack\Assets;
14
15 /**
16 * Class Inline_Help.
17 *
18 * @phan-constructor-used-for-side-effects
19 */
20 class Inline_Help {
21
22 /**
23 * Inline_Help constructor.
24 */
25 public function __construct() {
26 add_action( 'current_screen', array( $this, 'register_actions' ) );
27 }
28
29 /**
30 * Registers actions.
31 *
32 * @param object $current_screen Current screen object.
33 * @return void
34 */
35 public function register_actions( $current_screen ) {
36 // phpcs:disable WordPress.Security.NonceVerification.Recommended
37 // Do not inject the FAB icon on embedded screens since the parent window may already contain a FAB icon.
38 $is_framed = ! empty( $_GET['frame-nonce'] );
39
40 // Do not inject the FAB icon on Yoast screens to avoid overlap with the Yoast help icon.
41 $is_yoast = ! empty( $current_screen->base ) && str_contains( $current_screen->base, '_page_wpseo_' );
42
43 if ( $is_framed || $is_yoast ) {
44 return;
45 }
46 // phpcs:enable WordPress.Security.NonceVerification.Recommended
47
48 add_action( 'admin_footer', array( $this, 'add_fab_icon' ) );
49
50 add_action( 'admin_enqueue_scripts', array( $this, 'add_fab_styles' ) );
51 }
52
53 /**
54 * Outputs "FAB" icon markup and SVG.
55 *
56 * @return void|string the HTML markup for the FAB or early exit.
57 */
58 public function add_fab_icon() {
59
60 if ( wp_doing_ajax() ) {
61 return;
62 }
63
64 $svg_allowed = array(
65 'svg' => array(
66 'id' => true,
67 'class' => true,
68 'aria-hidden' => true,
69 'aria-labelledby' => true,
70 'role' => true,
71 'xmlns' => true,
72 'width' => true,
73 'height' => true,
74 'viewbox' => true, // <= Must be lower case!
75 ),
76 'g' => array( 'fill' => true ),
77 'title' => array( 'title' => true ),
78 'path' => array(
79 'd' => true,
80 'fill' => true,
81 ),
82 );
83
84 $gridicon_help = file_get_contents( __DIR__ . '/gridicon-help.svg', true );
85
86 // Add tracking data to link to be picked up by Calypso for GA and Tracks usage.
87 $tracking_href = add_query_arg(
88 array(
89 'utm_source' => 'wp_admin',
90 'utm_medium' => 'other',
91 'utm_content' => 'jetpack_masterbar_inline_help_click',
92 'flags' => 'a8c-analytics.on',
93 ),
94 'https://wordpress.com/help'
95 );
96
97 load_template(
98 __DIR__ . '/inline-help-template.php',
99 true,
100 array(
101 'href' => $tracking_href,
102 'icon' => $gridicon_help,
103 'svg_allowed' => $svg_allowed,
104 )
105 );
106 }
107
108 /**
109 * Enqueues FAB CSS styles.
110 *
111 * @return void
112 */
113 public function add_fab_styles() {
114 $assets_base_path = '../../dist/inline-help/';
115
116 Assets::register_script(
117 'a8c-faux-inline-help',
118 $assets_base_path . 'inline-help.js',
119 __FILE__,
120 array(
121 'enqueue' => true,
122 'css_path' => $assets_base_path . 'inline-help.css',
123 )
124 );
125 }
126 }
127