PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.2.0
Tableberg – Simple Gutenberg Table Block v1.2.0
1.2.0 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 All 43 releases
← All changes | includes/Admin/Tableberg_Admin.php +144 -192 0.4.1 → 1.2.0 View file →
@@ -1,96 +1,38 @@
1 1 <?php
2 2
3 -/**
4 - * The admin-specific functionality of the plugin.
5 - *
6 - * @package tableberg
7 - */
8 -
9 3 namespace Tableberg\Admin;
10 4
5 +// Needed so the qualified name `Tableberg\Assets` below resolves to the root
6 +// namespace instead of `Tableberg\Admin\Tableberg\Assets`.
11 7 use Tableberg;
12 -use Tableberg\Version_Control;
13 8
14 -/**
15 - * Manage Tableberg Admin
16 - */
17 -class Tableberg_Admin
18 -{
19 - /**
20 - * The ID of this plugin.
21 - *
22 - * @access private
23 - * @var string $plugin_name The ID of this plugin.
24 - */
9 +class Tableberg_Admin {
25 10 private $plugin_name;
26 -
27 - /**
28 - * The version of this plugin.
29 - *
30 - * @access private
31 - * @var string $version The current version of this plugin.
32 - */
33 - private $version;
34 -
35 - /**
36 - * The PATH of this plugin.
37 - *
38 - * @access private
39 - * @var string $plugin_path The PATH of this plugin.
40 - */
41 - private $plugin_path;
42 -
43 - /**
44 - * The URL of this plugin.
45 - *
46 - * @access private
47 - * @var string $plugin_url The URL of this plugin.
48 - */
49 11 private $plugin_url;
50 12
51 - /**
52 - * Initialize the class and set its properties.
53 - */
54 - public function __construct()
55 - {
13 + public function __construct() {
56 14
57 15 $this->plugin_name = 'tableberg';
58 - $this->version = TABLEBERG_VERSION;
59 - $this->plugin_path = TABLEBERG_DIR_PATH;
60 16 $this->plugin_url = TABLEBERG_URL;
61 - $this->add_tableberg_admin_hook();
62 17
63 - // initialize version sync manager.
64 - Tableberg\Version_Sync_Manager::init();
18 + add_action('wp_ajax_tableberg_toggle_control', [$this, 'update_toggle_control']);
19 + add_action('wp_ajax_tableberg_block_properties', [$this, 'update_block_properties']);
65 20
66 - // initialize version control manager.
67 - Version_Control::init();
68 -
69 - add_action('admin_menu', array($this, 'register_admin_menus'));
70 - add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_script'));
71 - add_action('admin_notices', array($this, 'tableberg_review_notice'));
72 - add_action('wp_ajax_TablebergReviewNoticeHide', array($this, 'tableberg_hide_review_notify'));
73 - add_filter('tableberg/filter/admin_settings_menu_data', array($this, 'add_settings_menu_data'), 1, 1);
21 + add_action('admin_menu', [$this, 'register_admin_menus']);
22 + add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_script']);
23 + add_action('admin_notices', [$this, 'tableberg_review_notice']);
24 + add_action('wp_ajax_TablebergReviewNoticeHide', [$this, 'tableberg_hide_review_notify']);
25 + add_filter('tableberg/filter/admin_settings_menu_data', [$this, 'add_settings_menu_data'], 1, 1);
74 26 }
75 27
76 - /**
77 - * Add hook
78 - */
79 - public function add_tableberg_admin_hook()
80 - {
81 - add_action('wp_ajax_toggle_control', array($this, 'update_toggle_control'));
82 - add_action('wp_ajax_block_properties', array($this, 'update_block_properties'));
83 - }
84 -
85 - /**
86 - * Block properties control
87 - */
88 - private function update_block_properties()
89 - {
90 - check_ajax_referer('block_properties');
91 -
92 - if (isset($_POST['value']) && isset($_POST['property_name'])) {
28 + private function update_block_properties() {
29 + if (
30 + check_ajax_referer('block_properties') &&
31 + isset($_POST['value']) &&
32 + isset($_POST['property_name']) &&
33 + current_user_can('manage_options')
34 + ) {
93 35 $value = sanitize_text_field(wp_unslash($_POST['value']));
94 36 $property_name = sanitize_text_field(wp_unslash($_POST['property_name']));
95 37 $saved_properties = get_option('tableberg_block_properties', false);
96 38 if ($saved_properties) {
@@ -106,16 +48,16 @@
106 48
107 49 die();
108 50 }
109 51
110 - /**
111 - * Toggle control
112 - */
113 - private function update_toggle_control()
114 - {
115 - check_ajax_referer('toggle_control');
52 + private function update_toggle_control() {
116 53
117 - if (isset($_POST['enable']) && isset($_POST['toggle_name'])) {
54 + if (
55 + check_ajax_referer('toggle_control') &&
56 + isset($_POST['enable']) &&
57 + isset($_POST['toggle_name']) &&
58 + current_user_can('manage_options')
59 + ) {
118 60 $enable = sanitize_text_field(wp_unslash($_POST['enable']));
119 61 $toggle_name = sanitize_text_field(wp_unslash($_POST['toggle_name']));
120 62 update_option($toggle_name, $enable);
121 63 }
@@ -121,160 +63,170 @@
121 63 }
122 64 die();
123 65 }
124 66
125 - /**
126 - * Add data for admin settings menu frontend.
127 - *
128 - * @param array $data frontend data.
129 - *
130 - * @return array filtered frontend data
131 - */
132 - public function add_settings_menu_data($data)
133 - {
134 - $data['assets'] = array(
67 + public function add_settings_menu_data($data) {
68 + $data['assets'] = [
135 69 'logo' => trailingslashit($this->plugin_url) . 'includes/Admin/images/logos/menu-icon-colored.svg',
136 - );
70 + 'logoTransparent' => trailingslashit($this->plugin_url) . 'includes/Admin/images/logos/menu-icon-colored-transparent.svg',
71 + ];
137 72
138 - $data['individual_control'] = array(
73 + $data['individual_control'] = [
139 74 'data' => get_option('tableberg_individual_control', false),
140 - 'ajax' => array(
141 - 'toggleControl' => array(
75 + 'ajax' => [
76 + 'toggleControl' => [
142 77 'url' => admin_url('admin-ajax.php'),
143 - 'action' => 'toggle_control',
78 + 'action' => 'tableberg_toggle_control',
144 79 'nonce' => wp_create_nonce('toggle_control'),
145 - ),
146 - ),
147 - );
148 - $data['global_control'] = array(
80 + ],
81 + ],
82 + ];
83 + $data['global_control'] = [
149 84 'data' => get_option('tableberg_global_control', false),
150 - 'ajax' => array(
151 - 'toggleControl' => array(
85 + 'ajax' => [
86 + 'toggleControl' => [
152 87 'url' => admin_url('admin-ajax.php'),
153 - 'action' => 'toggle_control',
88 + 'action' => 'tableberg_toggle_control',
154 89 'nonce' => wp_create_nonce('toggle_control'),
155 - ),
156 - ),
157 - );
158 - $data['block_properties'] = array(
90 + ],
91 + ],
92 + ];
93 + $data['block_properties'] = [
159 94 'data' => get_option('tableberg_block_properties', false),
160 - 'ajax' => array(
161 - 'blockProperties' => array(
95 + 'ajax' => [
96 + 'blockProperties' => [
162 97 'url' => admin_url('admin-ajax.php'),
163 - 'action' => 'block_properties',
98 + 'action' => 'tableberg_block_properties',
164 99 'nonce' => wp_create_nonce('block_properties'),
165 - ),
166 - ),
167 - );
100 + ],
101 + ],
102 + ];
168 103
169 - $data = array_merge($data, Tableberg\Utils\Utils::welcome_page());
104 + $has_pro_addon = defined('TABLEBERG_PRO_VERSION');
105 + global $tp_fs;
106 + if (isset($tp_fs)) {
107 + $data['misc'] = [
108 + 'pro_status' => $has_pro_addon
109 + || ($tp_fs->is__premium_only()
110 + && $tp_fs->can_use_premium_code()),
111 + ];
112 + } else {
113 + $data['misc'] = [
114 + 'pro_status' => $has_pro_addon,
115 + ];
116 + }
117 +
118 + $data = array_merge($data, $this->welcome_page());
170 119 return $data;
171 120 }
172 121
173 - /**
174 - * Enqueue admin scripts.
175 - */
176 - public function enqueue_admin_script()
177 - {
122 + public function enqueue_admin_script() {
178 123 $tableberg_assets = new Tableberg\Assets();
179 124 $tableberg_assets->register_admin_assets();
180 125 }
181 126
182 - /**
183 - * Set template for main setting page
184 - *
185 - * @return void
186 - */
187 - public function main_menu_template_cb()
188 - {
189 - require_once $this->plugin_path . 'includes/Admin/templates/menus/main-menu.php';
127 + public static function welcome_page() {
128 + return [
129 + 'welcome' => [
130 + 'title' => 'Welcome to Tableberg!',
131 + 'content' => 'Elevate Your Content with Seamless Tables - The Ultimate WordPress Block Editor Plugin for Effortless Table Creation!',
132 + ],
133 + 'documentation' => [
134 + 'title' => 'Documentation',
135 + 'content' => 'Elevate your space with Tableberg: a sleek, modern table block for style and functionality. Crafted for timeless elegance and versatility.',
136 + ],
137 + 'support' => [
138 + 'title' => 'Support',
139 + 'content' => "Visit our Tableberg Support Page for quick solutions and assistance. We're here to ensure your Tableberg experience is seamless and satisfying.",
140 + ],
141 + 'community' => [
142 + 'title' => 'Join Community',
143 + 'content' => 'Join the vibrant Tableberg community. Connect, share, and discover endless possibilities together. Elevate your experience with like-minded enthusiasts now!',
144 + ],
145 + 'upgrade' => [
146 + 'title' => 'Upgrade to Tableberg PRO!',
147 + 'content' => 'Elevate Your Content with Seamless Tables - The Ultimate WordPress Block Editor Plugin for Effortless Table Creation!',
148 + ],
149 + ];
190 150 }
191 151
192 - /**
193 - * Register Setting Pages for the admin area.
194 - */
195 - public function register_admin_menus()
196 - {
152 + public function main_menu_template_cb() {
153 + ?>
154 +<div id="tableberg-admin-menu"></div>
155 +<?php
156 + }
197 157
198 - // assign global variables.
158 + public function register_admin_menus() {
199 159 global $menu_page;
200 160 global $menu_page_slug;
201 161
202 162 $menu_page_slug = 'tableberg-settings';
203 163 $menu_page = add_menu_page(
204 - 'Tableberg Settings',
205 - 'Tableberg',
164 + __('Tableberg Settings', 'tableberg'),
165 + __('Tableberg', 'tableberg'),
206 166 'manage_options',
207 167 $menu_page_slug,
208 - array($this, 'main_menu_template_cb'),
168 + [$this, 'main_menu_template_cb'],
209 169 plugin_dir_url(__FILE__) . 'images/logos/menu-icon.svg'
210 170 );
211 171 }
212 172
213 - /**
214 - * Generating the review notice.
215 - *
216 - * @since 2.1.6
217 - */
218 - public static function tableberg_review_notice()
219 - {
173 + public static function tableberg_review_notice() {
220 174 $install_date = get_option('tableberg_installDate');
221 175 $display_date = date('Y-m-d h:i:s');
222 176 $datetime1 = new \DateTime($install_date);
223 177 $datetime2 = new \DateTime($display_date);
224 178 $diff_interval = round(($datetime2->format('U') - $datetime1->format('U')) / (60 * 60 * 24));
179 +
225 180 if ($diff_interval >= 21 && get_option('tableberg_review_notify') == 'no') {
226 -?>
227 - <div class="tableberg-review-notice notice notice-info">
228 - <p style="font-size: 14px;">
229 - <?php
230 - _e(
231 - 'Hey,<br> I noticed that you have been using <strong>Tableberg Plugin</strong> for a while now - that’s awesome! Could you please do me a BIG favor and <b>give it a 5-star rating on WordPress</b>? Just to help us spread the word and boost our motivation. <br>~ Imtiaz Rayhan<br>~ Lead Developer, Tableberg.',
181 + ?>
182 + <div class="tableberg-review-notice notice notice-info" style="position: relative; padding:0.5rem 1.5rem">
183 + <button type="button" class="notice-dismiss Tableberg_HideReview_Notice" style="position: absolute; top: 2px; right: 2px;">
184 + <span class="screen-reader-text"><?php esc_html_e('Dismiss this notice.', 'tableberg'); ?></span>
185 + </button>
186 + <p style="font-size: 14px; line-height: 2;padding-right:2rem">
187 + <?php
188 + echo wp_kses_post(__(
189 + 'Hello! Seems like you\'ve been using <strong>Tableberg</strong> for a while on your website. That\'s awesome!<br>If you can spare a few moments to rate it on wordpress.org, it would help us a lot (and boost my motivation).<br>Imtiaz Rayhan, developer of Tableberg',
232 190 'tableberg'
233 - );
234 - ?>
235 - </p>
236 - <ul>
237 - <li>
238 - <a style="margin-right: 5px; margin-bottom: 5px;" class="button-primary" href="https://wordpress.org/support/plugin/tableberg/reviews/?filter=5#new-post" target="_blank">Sure, you deserve it.</a>
239 - <a style="margin-right: 5px;" class="Tableberg_HideReview_Notice button" href="javascript:void(0);">I already did.</a>
240 - <a class="Tableberg_HideReview_Notice button" href="javascript:void(0);">No, not good enough.</a>
241 - </li>
242 - </ul>
243 - </div>
244 - <script>
245 - jQuery(document).ready(function($) {
246 - jQuery('.Tableberg_HideReview_Notice').click(function() {
247 - var data = {
248 - 'action': 'TablebergReviewNoticeHide'
249 - };
250 - jQuery.ajax({
251 - url: "<?php echo admin_url('admin-ajax.php'); ?>",
252 - type: "post",
253 - data: data,
254 - dataType: "json",
255 - async: !0,
256 - success: function(notice_hide) {
257 - if (notice_hide == "success") {
258 - jQuery('.tableberg-review-notice').slideUp('fast');
259 - }
260 - }
261 - });
262 - });
263 - });
264 - </script>
265 -<?php
191 + ));
192 + ?>
193 + </p>
194 + <ul style="list-style-type: none; padding: 0;">
195 + <li>
196 + <a style="margin-right: 5px; margin-bottom: 5px;" class="button-primary" href="https://wordpress.org/support/plugin/tableberg/reviews/" target="_blank"><?php esc_html_e('Ok, I will gladly help!', 'tableberg'); ?></a>
197 + <a class="Tableberg_HideReview_Notice button" href="javascript:void(0);"><?php esc_html_e('No, thanks', 'tableberg'); ?></a>
198 + </li>
199 + </ul>
200 + </div>
201 + <script>
202 + jQuery(document).ready(function($) {
203 + $('.Tableberg_HideReview_Notice').click(function() {
204 + var data = {
205 + 'action': 'TablebergReviewNoticeHide'
206 + };
207 + $.ajax({
208 + url: "<?php echo esc_url(admin_url('admin-ajax.php')); ?>",
209 + type: "post",
210 + data: data,
211 + dataType: "json",
212 + async: true,
213 + success: function(notice_hide) {
214 + if (notice_hide == "success") {
215 + $('.tableberg-review-notice').slideUp('fast');
216 + }
217 + }
218 + });
219 + });
220 + });
221 + </script>
222 + <?php
266 223 }
267 224 }
268 225
269 - /**
270 - * Hides the review notice.
271 - *
272 - * @since 2.1.6
273 - */
274 - public function tableberg_hide_review_notify()
275 - {
226 +
227 + public function tableberg_hide_review_notify() {
276 228 update_option('tableberg_review_notify', 'yes');
277 - echo json_encode(array('success'));
229 + echo wp_json_encode(['success']);
278 230 exit;
279 231 }
280 232 }