-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathclass-enqueue-frontend.php
More file actions
121 lines (98 loc) · 3.82 KB
/
Copy pathclass-enqueue-frontend.php
File metadata and controls
121 lines (98 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
/**
* Class file for enqueueing frontend styles and scripts.
*
* @package Accessibility_Checker
*/
namespace EDAC\Inc;
use EDAC\Admin\Settings;
/**
* Class that initializes and handles enqueueing styles and scripts for the frontend.
*/
class Enqueue_Frontend {
/**
* Constructor
*/
public function __construct() {
}
/**
* Enqueue the scripts and styles.
*/
public static function enqueue() {
self::maybe_enqueue_frontend_highlighter();
}
/**
* Enqueue the frontend highlighter.
*
* @return void
*/
public static function maybe_enqueue_frontend_highlighter() {
// This loads on all pages, so bail as early as possible. Do checks that don't require DB calls first.
// Don't load on admin pages or in an iframe that is running a pageScan.
if (
is_admin() ||
(
isset( $_GET['edac_pageScanner'] ) && // phpcs:ignore WordPress.Security.NonceVerification.Recommended
'1' === $_GET['edac_pageScanner'] // phpcs:ignore WordPress.Security.NonceVerification.Recommended
)
) {
return;
}
// Don't load on the frontend if we don't have a post to work with.
global $post;
$post_id = apply_filters( 'edac_filter_frontend_highlight_post_id', is_object( $post ) ? $post->ID : null );
if ( null === $post_id ) {
return;
}
// Don't load in a customizer preview or user can't edit the page. A filter
// can override the edit requirement to allow anyone to see it.
if (
is_customize_preview() ||
(
/**
* Filter the visibility of the frontend highlighter.
*
* 'edac_filter_frontend_highlighter_visibility' is a filter that can be used
* to allow users without edit permissions on the post to see the frontend
* highlighter. You can use the filter to perform additional permission checks
* on who can see it.
*
* @since 1.14.0
*
* @param bool $visibility The visibility of the frontend highlighter. Default is false, return true to show the frontend highlighter.
*/
! apply_filters( 'edac_filter_frontend_highlighter_visibility', false ) &&
! ( $post_id && current_user_can( 'edit_post', $post_id ) )
)
) {
return;
}
// Don't load if this pagetype is not setup to be scanned.
$post_types = Settings::get_scannable_post_types();
$current_post_type = get_post_type();
$active = ( is_array( $post_types ) && in_array( $current_post_type, $post_types, true ) );
if ( $active ) {
wp_enqueue_style( 'edac-frontend-highlighter-app', plugin_dir_url( EDAC_PLUGIN_FILE ) . 'build/css/frontendHighlighterApp.css', false, EDAC_VERSION, 'all' );
wp_enqueue_script( 'edac-frontend-highlighter-app', plugin_dir_url( EDAC_PLUGIN_FILE ) . 'build/frontendHighlighterApp.bundle.js', false, EDAC_VERSION, false );
wp_localize_script(
'edac-frontend-highlighter-app',
'edacFrontendHighlighterApp',
[
'postID' => $post_id,
'nonce' => wp_create_nonce( 'ajax-nonce' ),
'restNonce' => wp_create_nonce( 'wp_rest' ),
'userCanFix' => current_user_can( apply_filters( 'edac_filter_settings_capability', 'manage_options' ) ),
'userCanEdit' => current_user_can( 'edit_post', $post_id ),
'edacUrl' => esc_url_raw( get_site_url() ),
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'loggedIn' => is_user_logged_in(),
'appCssUrl' => EDAC_PLUGIN_URL . 'build/css/frontendHighlighterApp.css?ver=' . EDAC_VERSION,
'widgetPosition' => get_option( 'edac_frontend_highlighter_position', 'right' ),
'editorLink' => get_edit_post_link( $post_id ),
'scannerBundleUrl' => plugin_dir_url( EDAC_PLUGIN_FILE ) . 'build/pageScanner.bundle.js',
]
);
wp_set_script_translations( 'edac-frontend-highlighter-app', 'accessibility-checker', plugin_dir_path( EDAC_PLUGIN_FILE ) . 'languages' );
}
}
}