PluginProbe ʕ •ᴥ•ʔ
WP Job Manager / 2.4.6
WP Job Manager v2.4.6
2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.1.3 1.10.0 1.11.0 1.11.1 1.12.0 1.12.1 1.13.0 1.14.0 1.15.0 1.16.0 1.16.1 1.17.0 1.18.0 1.19.0 1.2.0 1.20.0 1.20.1 1.21.0 1.21.1 1.21.2 1.21.3 1.21.4 1.22.0 1.22.1 1.22.2 1.22.3 1.23.0 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.0 1.24.0.1 1.25.0 1.25.0.1 1.25.1 1.25.1.1 1.25.2 1.25.2.1 1.25.3 1.25.3.1 1.26.0 1.26.0.1 1.26.1 1.26.1.1 1.26.2 1.26.2.1 1.27.0 1.27.0.1 1.28.0 1.28.0.1 1.29.0 1.29.0.1 1.29.1 1.29.1.1 1.29.2 1.29.2.1 1.29.3 1.29.3.1 1.3.0 1.3.1 1.30.0 1.30.0.1 1.30.1 1.30.1.1 1.30.2 1.30.2.1 1.31.0 1.31.0.1 1.31.1 1.31.1.1 1.31.2 1.31.3 1.32.0 1.32.1 1.32.2 1.32.3 1.33.0 1.33.1 1.33.2 1.33.3 1.33.4 1.33.5 1.34.0 1.34.1 1.34.2 1.34.3 1.34.4 1.34.5 1.35.0 1.35.1 1.35.2 1.35.3 1.36.0 1.36.1 1.36.2 1.37.0 1.38.0 1.38.1 1.39.0 1.4.0 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.7.1 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 1.9.1 1.9.2 1.9.3 2.0.0 2.1.0 2.1.1 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.4.1
wp-job-manager / includes / ui / class-ui.php
wp-job-manager / includes / ui Last commit date
class-modal-dialog.php 2 years ago class-notice.php 2 years ago class-redirect-message.php 2 years ago class-ui-elements.php 2 weeks ago class-ui-settings.php 2 years ago class-ui.php 2 years ago
class-ui.php
131 lines
1 <?php
2 /**
3 * Frontend UI elements of Job Manager.
4 *
5 * @package wp-job-manager
6 * @since 2.2.0
7 */
8
9 namespace WP_Job_Manager\UI;
10
11 use WP_Job_Manager\Singleton;
12
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit; // Exit if accessed directly.
15 }
16
17 /**
18 * Frontend UI elements of Job Manager.
19 *
20 * @since 2.2.0
21 *
22 * @internal This API is still under development and subject to change.
23 * @access private
24 */
25 class UI {
26
27 use Singleton;
28
29 /**
30 * Whether the UI styles should be loaded the page.
31 *
32 * @var bool
33 */
34 private bool $has_ui;
35
36 /**
37 * An array of css variables to be enqueued with the styles.
38 *
39 * @var array
40 */
41 private array $css_variables;
42
43 /**
44 * Instance constructor
45 */
46 private function __construct() {
47 $this->has_ui = false;
48 $this->css_variables = [];
49 add_action( 'init', [ $this, 'register_styles' ], 5 );
50 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_styles' ], 99 );
51 add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_styles' ], 99 );
52 }
53
54 /**
55 * Register styles.
56 *
57 * @access private
58 */
59 public function register_styles() {
60 \WP_Job_Manager::register_style( 'wp-job-manager-ui', 'css/ui.css', [] );
61 \WP_Job_Manager::register_script( 'wp-job-manager-ui-theme-support', 'js/ui-theme-support.js' );
62 }
63
64 /**
65 * Enqueue styles and inline CSS.
66 *
67 * @access private
68 */
69 public function enqueue_styles() {
70 if ( $this->has_ui || wp_style_is( 'wp-job-manager-ui', 'enqueued' ) ) {
71 wp_enqueue_style( 'wp-job-manager-ui' );
72
73 /**
74 * Filter whether to load the script that detects theme colors and styles for the plugin's UI elements.
75 */
76 if ( apply_filters( 'job_manager_ui_theme_support_script', true ) ) {
77 wp_enqueue_script( 'wp-job-manager-ui-theme-support' );
78 }
79
80 wp_add_inline_style( 'wp-job-manager-ui', $this->generate_inline_css() );
81
82 }
83 }
84
85 /**
86 * Request the styles to be loaded for the page.
87 *
88 * @param array $css_variables An array of CSS variables to be enqueued: <variable_name> => <value>.
89 */
90 public static function ensure_styles( array $css_variables = [] ) {
91 self::instance()->has_ui = true;
92 self::instance()->css_variables = array_merge( self::instance()->css_variables, $css_variables );
93
94 if ( did_action( 'wp_enqueue_scripts' ) ) {
95 self::instance()->enqueue_styles();
96 }
97 }
98
99 /**
100 * Generates CSS to be inlined with the UI styles.
101 *
102 * @return string The CSS.
103 */
104 private function generate_inline_css() {
105
106 $vars = $this->css_variables;
107
108 /**
109 * Set the accent color for frontend components. Leave blank to auto-detect and use the link color.
110 *
111 * @param string|false $color CSS color definition.
112 *
113 * @since 2.3.0
114 */
115 $vars['--jm-ui-accent-color'] = apply_filters( 'job_manager_ui_accent_color', $vars['--jm-ui-accent-color'] ?? false );
116
117 $css = ':root {';
118
119 foreach ( $vars as $name => $value ) {
120 if ( empty( $value ) ) {
121 continue;
122 }
123 $css .= esc_attr( $name ) . ': ' . esc_attr( $value ) . ';';
124 }
125
126 $css .= '}';
127
128 return $css;
129 }
130 }
131