PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.1.1
Kirki – Freeform Page Builder, Website Builder & Customizer v6.1.1
6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / includes / Admin / AdminMenu.php
kirki / includes / Admin Last commit date
views 2 months ago AdminMenu.php 3 weeks ago EditWithButton.php 3 weeks ago PostActions.php 2 months ago
AdminMenu.php
173 lines
1 <?php
2 /**
3 * AdminMenu for wp admin menu and icon management
4 *
5 * @package kirki
6 */
7
8 namespace Kirki\Admin;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit; // Exit if accessed directly.
12 }
13 use Kirki\HelperFunctions;
14
15
16 /**
17 * AdminMenu Class
18 */
19 class AdminMenu {
20
21 /**
22 * Dashboard submenu configuration keyed by menu slug.
23 *
24 * @var array<string, array{title: string, toolbar: string}>
25 */
26 private $dashboard_toolbar_submenus = array(
27 'kirki-home' => array(
28 'title' => 'Canvas',
29 'toolbar' => 'home',
30 ),
31 'kirki-submissions' => array(
32 'title' => 'Submissions',
33 'toolbar' => 'submissions',
34 ),
35 'kirki-role-manager' => array(
36 'title' => 'Role Managers',
37 'toolbar' => 'role-manager',
38 ),
39 'kirki-settings' => array(
40 'title' => 'Settings',
41 'toolbar' => 'settings',
42 )
43 );
44
45
46 /**
47 * Initilize the class
48 *
49 * @return void
50 */
51 public function __construct() {
52 if ( HelperFunctions::user_is( 'administrator' ) ) {
53 \add_action( 'admin_menu', array( $this, 'admin_menu' ) );
54 \add_action( 'admin_enqueue_scripts', array( $this, 'load_script_text_domain' ), 100 );
55 \add_action( 'admin_init', array( $this, 'maybe_redirect_kirki_menu' ) );
56 }
57 \add_action( 'admin_head', array( $this, 'add_kirki_admin_styles' ) );
58 }
59
60 private function get_submenu_items() {
61 return apply_filters( 'kirki_submenu_items', $this->dashboard_toolbar_submenus );
62 }
63
64 /**
65 * Kirki Logo for kirki menu
66 *
67 * @return void
68 */
69 public static function add_kirki_admin_styles() {
70 echo \wp_kses(
71 ' <style> .dashicons-kirki { background-image: url("' . KIRKI_ASSETS_URL . 'images/kirki-20X20.svg"); background-repeat: no-repeat; background-position: center;background-size: 20px 20px; }
72 [href="admin.php?page=kirki-get-pro"] {
73 background: linear-gradient(93.07deg, rgba(78, 94, 218, 0.7) -4.71%, rgba(253, 98, 96, 0.7) 107.25%) !important;
74 color: #fff !important;
75 font-weight: bold !important;
76 width: 125px;
77 }
78 #toplevel_page_kirki .wp-first-item{
79 display: none;
80 }
81
82 #toplevel_page_kirki:hover .dashicons-kirki {
83 background-image: url("' . KIRKI_ASSETS_URL . 'images/kirki-hovered-20X20.svg") !important;
84 }
85 </style> ',
86 array( 'style' => array() )
87 );
88 }
89
90
91 /**
92 * Remove custom menu from sidebar
93 *
94 * @return void
95 */
96 public function remove_custom_menu_from_sidebar() {
97 \remove_menu_page( 'edit.php?post_type=kirki_page' );
98 }
99
100 /**
101 * Load scritp text domain
102 *
103 * @return void
104 */
105 public function load_script_text_domain() {
106 HelperFunctions::load_script_text_domain( 'kirki-admin' );
107 }
108
109
110 /**
111 * Register admin menu
112 *
113 * @return void
114 */
115 public function admin_menu() {
116 $menu_title = apply_filters('kirki_menu_title', 'Kirki');
117 \add_menu_page( 'Kirki - Home', $menu_title, 'edit_posts', 'kirki', array( $this, 'plugin_page' ), 'dashicons-kirki', 25 );
118
119 foreach ( $this->get_submenu_items() as $slug => $submenu ) {
120 \add_submenu_page(
121 'kirki',
122 $submenu['title'],
123 $submenu['title'],
124 'manage_options',
125 $slug,
126 array( $this, 'plugin_page' )
127 );
128 }
129 }
130
131 /**
132 * Render the menu page
133 *
134 * @return void
135 */
136 public function plugin_page() {
137 include_once __DIR__ . '/views/dashboard.php';
138 }
139
140 /**
141 * Redirect Kirki top-level menu to frontend dashboard before headers are sent
142 */
143 public function maybe_redirect_kirki_menu() {
144 if ( empty( $_GET['page'] ) ) {
145 return;
146 }
147
148 $page_slug = \sanitize_key( \wp_unslash( $_GET['page'] ) );
149
150 if ( 'kirki' === $page_slug ) {
151 $dashboard_url = \home_url( '/?action=kirki&screen=dashboard&toolbar=home' );
152 \wp_safe_redirect( $dashboard_url );
153 exit;
154 }
155
156 if ( isset( $this->get_submenu_items()[ $page_slug ] ) ) {
157 $toolbar = $this->get_submenu_items()[ $page_slug ]['toolbar'];
158 $dashboard_url = \home_url( '/?action=kirki&screen=dashboard&toolbar=' . rawurlencode( $toolbar ) );
159 \wp_safe_redirect( $dashboard_url );
160 exit;
161 }
162 }
163
164 /**
165 * Get pro page
166 *
167 * @return void
168 */
169 public function kirki_get_pro_page() {
170 include_once __DIR__ . '/views/get-pro.php';
171 }
172 }
173