PluginProbe
Timetics – Appointment Booking Calendar & Scheduling / trunk
Timetics – Appointment Booking Calendar & Scheduling vtrunk
1.0.61 1.0.60 1.0.59 1.0.58 1.0.57 1.0.56 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 All 62 releases
timetics / core / admin / menu.php

menu.php in Timetics – Appointment Booking Calendar & Scheduling trunk, at core/admin/menu.php

175 lines 8.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Admin meni class
5 *
6 * @package Timetics
7 */
8
9 namespace Timetics\Core\Admin;
10
11 defined( 'ABSPATH' ) || exit;
12
13 /**
14 * Class Menu
15 */
16 class Menu
17 {
18
19 use \Timetics\Utils\Singleton;
20
21 /**
22 * Initialize
23 *
24 * @return void
25 */
26 public function init()
27 {
28 add_action('admin_menu', array($this, 'register_admin_menu'));
29
30 add_action('timetics_menu', array($this, 'add_pro_admin_menu'));
31 }
32
33
34 /**
35 * Register admin menu
36 *
37 * @return void
38 */
39
40 public function register_admin_menu()
41 {
42 global $submenu;
43 $capability = 'manage_timetics';
44 $slug = 'timetics';
45 $url = 'admin.php?page=' . $slug . '#';
46 $menu_items = array(
47 [
48 'id' => 'overview',
49 'title' => esc_html__('Overview', 'timetics'),
50 'link' => '/',
51 'capability' => apply_filters('timetics_menu_permission_overview', $capability),
52 'position' => apply_filters('timetics_menu_position_overview', 1),
53 ],
54 [
55 'id' => 'meeting',
56 'title' => esc_html__('Meetings', 'timetics'),
57 'link' => '/meetings',
58 'capability' => apply_filters('timetics_menu_permission_meeting', 'read_booking'),
59 'position' => apply_filters('timetics_menu_position_meeting', 2),
60 ],
61 [
62 'id' => 'staff',
63 'title' => esc_html__('Team Members', 'timetics'),
64 'link' => '/staff',
65 'capability' => apply_filters('timetics_menu_permission_staff', 'edit_staff'),
66 'position' => apply_filters('timetics_menu_position_staff', 3),
67 ],
68
69 [
70 'id' => 'booking',
71 'title' => esc_html__('Calendar', 'timetics'),
72 'link' => '/bookings',
73 'capability' => apply_filters('timetics_menu_permission_booking', 'read_booking'),
74 'position' => apply_filters('timetics_menu_position_booking', 1.5),
75 ],
76 [
77 'id' => 'customer',
78 'title' => esc_html__('Customers', 'timetics'),
79 'link' => '/customers',
80 'capability' => apply_filters('timetics_menu_permission_customer', 'manage_options'),
81 'position' => apply_filters('timetics_menu_position_customer', 5),
82 ],
83 [
84 'id' => 'settings',
85 'title' => esc_html__('Settings', 'timetics'),
86 'link' => '/settings',
87 'capability' => apply_filters('timetics_menu_permission_settings', 'manage_options'),
88 'position' => apply_filters('timetics_menu_position_settings', 6),
89 ],
90 [
91 'id' => 'my-profile',
92 'title' => esc_html__('My Profile', 'timetics'),
93 'link' => '/my-profile',
94 'capability' => apply_filters('timetics_menu_permission_my_profile', 'edit_profile'),
95 'position' => apply_filters('timetics_menu_position_my_profile', 7),
96 ],
97 [
98 'id' => 'shortcode',
99 'title' => esc_html__('Shortcodes', 'timetics'),
100 'link' => '/shortcodes',
101 'capability' => apply_filters('timetics_menu_permission_shortcode', 'manage_options'),
102 'position' => apply_filters('timetics_menu_position_shortcode', 8),
103 ],
104 [
105 'id' => 'onboard',
106 'title' => esc_html__('Setup Wizard', 'timetics'),
107 'link' => '/onboard',
108 'capability' => apply_filters('timetics_menu_permission_onboard', 'manage_options'),
109 'position' => apply_filters('timetics_menu_position_onboard', 9),
110 ],
111 [
112 'id' => 'about-us',
113 'title' => esc_html__('About Us', 'timetics'),
114 'link' => '/about-us',
115 'capability' => apply_filters('timetics_menu_permission_about_us', 'manage_options'),
116 'position' => apply_filters('timetics_menu_position_about_us', 10),
117 ],
118 );
119
120 add_menu_page(
121 esc_html__('Timetics', 'timetics'),
122 esc_html__('Timetics', 'timetics'),
123 $capability,
124 $slug,
125 array($this, 'timetics_dashboard_view'),
126 "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE0MjhfMTE1OSkiPgo8cGF0aCBkPSJNOC42NDc0NSAxMy40NTEyQzUuMTc5MjQgMTMuNDUxMiAyLjQwNDY3IDEwLjY2NjcgMi43OTc3NCA3LjM4OTY0QzMuMDk4MzIgNC44MTkzNiA1LjM2NDIxIDIuNzg0NTUgOC4xMzg3OCAyLjU3MDM2QzkuOTQyMjUgMi40NDE4NSAxMS42MDcgMy4wNjMgMTIuNzYzMSA0LjEzMzk1TDE0Ljc3NDYgMi4zNzc1OUMxMy4wODY4IDAuNzkyNTg1IDEwLjcwNTMgLTAuMTI4NDMyIDguMDkyNTQgMC4wMjE1MDA3QzMuODE1MDggMC4yNTcxMSAwLjMyMzc0OSAzLjQ2OTk2IDAuMDIzMTcwNiA3LjQzMjQ4Qy0wLjMyMzY1IDEyLjEwMTggMy42NzYzNSAxNi4wMDAxIDguNjQ3NDUgMTYuMDAwMUMxMC41MjAzIDE2LjAwMDEgMTIuMjMxMyAxNS40NDMyIDEzLjY0MTcgMTQuNTIyMkMxNC4zMzUzIDE0LjA3MjQgMTQuNDA0NyAxMy4xNTE0IDEzLjgwMzUgMTIuNTk0NUwxMy43ODA0IDEyLjU3M0MxMy4yOTQ4IDEyLjEyMzIgMTIuNTU1IDEyLjEwMTggMTIuMDAwMSAxMi40NDQ1QzExLjA1MjEgMTMuMDg3MSA5Ljg5NiAxMy40NTEyIDguNjQ3NDUgMTMuNDUxMloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik04LjY0NzQ1IDEzLjQ1MTJDNS4xNzkyNCAxMy40NTEyIDIuNDA0NjcgMTAuNjY2NyAyLjc5Nzc0IDcuMzg5NjRDMy4wOTgzMiA0LjgxOTM2IDUuMzY0MjEgMi43ODQ1NSA4LjEzODc4IDIuNTcwMzZDOS45NDIyNSAyLjQ0MTg1IDExLjYwNyAzLjA2MyAxMi43NjMxIDQuMTMzOTVMMTQuNzc0NiAyLjM3NzU5QzEzLjA4NjggMC43OTI1ODUgMTAuNzA1MyAtMC4xMjg0MzIgOC4wOTI1NCAwLjAyMTUwMDdDMy44MTUwOCAwLjI1NzExIDAuMzIzNzQ5IDMuNDY5OTYgMC4wMjMxNzA2IDcuNDMyNDhDLTAuMzIzNjUgMTIuMTAxOCAzLjY3NjM1IDE2LjAwMDEgOC42NDc0NSAxNi4wMDAxQzEwLjUyMDMgMTYuMDAwMSAxMi4yMzEzIDE1LjQ0MzIgMTMuNjQxNyAxNC41MjIyQzE0LjMzNTMgMTQuMDcyNCAxNC40MDQ3IDEzLjE1MTQgMTMuODAzNSAxMi41OTQ1TDEzLjc4MDQgMTIuNTczQzEzLjI5NDggMTIuMTIzMiAxMi41NTUgMTIuMTAxOCAxMi4wMDAxIDEyLjQ0NDVDMTEuMDUyMSAxMy4wODcxIDkuODk2IDEzLjQ1MTIgOC42NDc0NSAxMy40NTEyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzE0MjhfMTE1OSkiLz4KPHBhdGggZD0iTTE0LjQyNzggMi4wNzc1M0MxNC4yMTk3IDEuOTA2MTggMTMuOTg4NSAxLjcxMzQxIDEzLjc1NzMgMS41NjM0OEMxMy45MTkxIDEuODIwNSAxNC4wMTE2IDIuMTIwMzcgMTQuMDExNiAyLjQyMDI0QzE0LjAxMTYgMi44MjcyIDEzLjgwMzUgMy4yMzQxNiAxMy40Nzk4IDMuNTEyNjFMMTIuNzg2MiA0LjExMjM0TDguNTc4MDggNy44MTc4M0w3LjA5ODMxIDYuNDQ3MDFDNi41ODk2NCA1Ljk3NTc5IDUuNzU3MjcgNS44OTAxMiA1LjIwMjM2IDYuMzE4NUM0LjU1NDk2IDYuODExMTMgNC41MzE4NCA3LjY4OTMxIDUuMTA5ODcgOC4yMDMzN0w3LjU4Mzg2IDEwLjQ5NTJDNy44NjEzMiAxMC43NTIyIDguMjA4MTQgMTAuODU5MyA4LjU1NDk2IDEwLjg1OTNDOC45MDE3OCAxMC44NTkzIDkuMjQ4NiAxMC43NTIyIDkuNTAyOTQgMTAuNTE2NkwxNC4yNDI4IDYuMzM5OTJMMTUuNTYwNyA1LjE4MzI5QzE2LjA2OTQgNC43MzM0OSAxNi4xNjE5IDQuMDA1MjQgMTUuNzY4OCAzLjQ0ODM1QzE1LjQ2ODMgMy4wODQyMyAxNC44NDQgMi4zOTg4MiAxNC40Mjc4IDIuMDc3NTNaIiBmaWxsPSIjRTlGMkZGIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNDI4XzExNTkiIHgxPSIxMy45ODg4IiB5MT0iMC45NDY1NTYiIHgyPSI5LjI0NzY4IiB5Mj0iNS42NDI5OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMEMzOTc1IiBzdG9wLW9wYWNpdHk9IjAuMzgiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzE2MUYxIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xNDI4XzExNTkiPgo8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==",
127 10
128 );
129
130 $menu_items = apply_filters('timetics_menu', $menu_items);
131 $position = array_column($menu_items, 'position');
132
133 array_multisort($position, SORT_ASC, $menu_items);
134
135 foreach ($menu_items as $item) {
136 $external = !empty($item['external_link']) ? $item['external_link'] : false;
137
138 $link = !$external ? $url . $item['link'] : $item['link'];
139 $submenu[$slug][] = [$item['title'], $item['capability'], $link]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
140 }
141 }
142
143 /**
144 * Admin dashboard view
145 *
146 * @return void
147 */
148 public function timetics_dashboard_view()
149 {
150 ?>
151 <div class="wrap" id="time_tics_dashboard">
152 </div>
153 <?php
154 }
155
156 // Add submenu page under "Settings"
157 public function add_pro_admin_menu($menu_items)
158 {
159 if (class_exists('TimeticsPro')) {
160 return $menu_items;
161 }
162
163 $menu_items[] = [
164 'id' => 'go-pro',
165 'title' => esc_html__('Go Pro', 'timetics'),
166 'link' => 'https://arraytics.com/timetics',
167 'external_link' => true,
168 'capability' => 'manage_options',
169 'position' => 9,
170 ];
171
172 return $menu_items;
173 }
174 }
175