PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.1.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.1.2
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | classes/Visualizer/Render/Page/Data.php +105 -20 3.0.83.1.2 View file →
@@ -43,13 +43,19 @@
43 43 $Visualizer_Pro->_addEditor( $this->chart->ID );
44 44 if ( method_exists( $Visualizer_Pro, '_addFilterWizard' ) ) {
45 45 $Visualizer_Pro->_addFilterWizard( $this->chart->ID );
46 46 }
47 + } else {
48 + Visualizer_Render_Layout::show( 'faux-editor' );
47 49 }
50 +
51 + $this->add_additional_content();
52 +
48 53 // Added by Ash/Upwork
49 54 echo '<div id="canvas">';
50 55 echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
51 56 echo '</div>';
57 + echo $this->custom_css;
52 58 }
53 59
54 60 /**
55 61 * Renders sidebar content.
@@ -63,12 +69,17 @@
63 69 array(
64 70 'action' => Visualizer_Plugin::ACTION_UPLOAD_DATA,
65 71 'nonce' => wp_create_nonce(),
66 72 'chart' => $this->chart->ID,
67 - ), admin_url( 'admin-ajax.php' )
73 + ),
74 + admin_url( 'admin-ajax.php' )
68 75 );
76 +
77 + // this will allow us to open the correct source tab by default.
78 + $source_of_chart = strtolower( get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_SOURCE, true ) );
79 + $type = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_TYPE, true );
69 80 ?>
70 - <span id="visualizer-chart-id" data-id="<?php echo $this->chart->ID; ?>"></span>
81 + <span id="visualizer-chart-id" data-id="<?php echo $this->chart->ID; ?>" data-chart-source="<?php echo $source_of_chart; ?>" data-chart-type="<?php echo $type; ?>"></span>
71 82 <iframe id="thehole" name="thehole"></iframe>
72 83 <ul class="viz-group-wrapper full-height">
73 84 <li class="viz-group viz-group-category open" id="vz-chart-source">
74 85 <div class="viz-group-header">
@@ -75,9 +86,9 @@
75 86 <h2 class="viz-group-title viz-main-group"><?php _e( 'Chart Data', 'visualizer' ); ?></h2>
76 87 </div>
77 88 <ul class="viz-group-content">
78 89 <ul class="viz-group-wrapper">
79 - <li class="viz-group">
90 + <li class="viz-group visualizer_source_csv">
80 91 <h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from file', 'visualizer' ); ?></h2>
81 92 <div class="viz-group-content">
82 93 <p class="viz-group-description"><?php esc_html_e( 'Select and upload your data CSV file here. The first row of the CSV file should contain the column headings. The second one should contain series type (string, number, boolean, date, datetime, timeofday).', 'visualizer' ); ?></p>
83 94 <p class="viz-group-description"><?php echo sprintf( __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %1$s %2$s%3$s', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $this->type . '.csv" target="_blank">', $this->type, '.csv</a>' ); ?></p>
@@ -91,9 +102,9 @@
91 102 value="<?php _e( 'Import', 'visualizer' ); ?>">
92 103 </form>
93 104 </div>
94 105 </li>
95 - <li class="viz-group visualizer-import-url">
106 + <li class="viz-group visualizer-import-url visualizer_source_csv_remote">
96 107 <h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from URL', 'visualizer' ); ?></h2>
97 108 <ul class="viz-group-content">
98 109 <li class="viz-subsection">
99 110 <span class="viz-section-title"><?php _e( 'One time import', 'visualizer' ); ?></span>
@@ -134,13 +145,15 @@
134 145 <select name="vz-import-time" id="vz-import-time"
135 146 class="visualizer-select">
136 147 <?php
137 148 $hours = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_CHART_SCHEDULE, true );
138 - $schedules = array(
139 - '1' => __( 'Each hour', 'visualizer' ),
140 - '12' => __( 'Each 12 hours', 'visualizer' ),
141 - '24' => __( 'Each day', 'visualizer' ),
142 - '36' => __( 'Each 3 days', 'visualizer' ),
149 + $schedules = apply_filters(
150 + 'visualizer_chart_schedules', array(
151 + '1' => __( 'Each hour', 'visualizer' ),
152 + '12' => __( 'Each 12 hours', 'visualizer' ),
153 + '24' => __( 'Each day', 'visualizer' ),
154 + '72' => __( 'Each 3 days', 'visualizer' ),
155 + )
143 156 );
144 157 foreach ( $schedules as $num => $name ) {
145 158 $extra = $num == $hours ? 'selected' : '';
146 159 ?>
@@ -172,9 +185,10 @@
172 185 $fetch_link = add_query_arg(
173 186 array(
174 187 'action' => ( VISUALIZER_PRO ) ? Visualizer_Pro::ACTION_FETCH_DATA : '',
175 188 'nonce' => wp_create_nonce(),
176 - ), admin_url( 'admin-ajax.php' )
189 + ),
190 + admin_url( 'admin-ajax.php' )
177 191 );
178 192 $query_args_charts = array(
179 193 'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
180 194 'posts_per_page' => 300,
@@ -205,9 +219,9 @@
205 219 <h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from WordPress', 'visualizer' ); ?><span
206 220 class="dashicons dashicons-lock"></span></h2>
207 221 <div class="viz-group-content edit-data-content">
208 222 <div>
209 - <p class="viz-group-description"><?php _e( 'You can import here data from WordPress', 'visualizer' ); ?></p>
223 + <p class="viz-group-description"><?php _e( 'You can import data from WordPress here.', 'visualizer' ); ?></p>
210 224 <input type="button" id="filter-chart-button" class="button button-primary "
211 225 value="<?php _e( 'Create Filters', 'visualizer' ); ?>" data-current="chart"
212 226 data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>"
213 227 data-t-chart="<?php _e( 'Create Filters', 'visualizer' ); ?>">
@@ -216,12 +230,64 @@
216 230 </div>
217 231 </li>
218 232
219 233 <?php
220 - // we will auto-open the manual data feature but only when pro is active.
234 + $save_query = add_query_arg(
235 + array(
236 + 'action' => Visualizer_Plugin::ACTION_SAVE_DB_QUERY,
237 + 'security' => wp_create_nonce( Visualizer_Plugin::ACTION_SAVE_DB_QUERY . Visualizer_Plugin::VERSION ),
238 + 'chart' => $this->chart->ID,
239 + ), admin_url( 'admin-ajax.php' )
240 + );
241 + ?>
242 + <li class="viz-group visualizer_source_query <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'db-query' ); ?>">
243 + <h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from database', 'visualizer' ); ?><span
244 + class="dashicons dashicons-lock"></span></h2>
245 + <div class="viz-group-content edit-data-content">
246 + <div>
247 + <p class="viz-group-description"><?php _e( 'You can import data from the database here.', 'visualizer' ); ?></p>
248 + <form id="vz-db-wizard" action="<?php echo $save_query; ?>" method="post" target="thehole">
249 + <p class="viz-group-description"><?php _e( 'How often do you want to refresh the data from the database.', 'visualizer' ); ?></p>
250 + <select name="refresh" id="vz-db-import-time" class="visualizer-select">
251 + <?php
252 + $bttn_label = 'visualizer_source_query' === $source_of_chart ? __( 'Modify Query', 'visualizer' ) : __( 'Create Query', 'visualizer' );
253 + $hours = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_DB_SCHEDULE, true );
254 + $schedules = apply_filters(
255 + 'visualizer_schedules', array(
256 + '0' => __( 'Live', 'visualizer' ),
257 + '1' => __( 'Each hour', 'visualizer' ),
258 + '12' => __( 'Each 12 hours', 'visualizer' ),
259 + '24' => __( 'Each day', 'visualizer' ),
260 + '72' => __( 'Each 3 days', 'visualizer' ),
261 + )
262 + );
263 + foreach ( $schedules as $num => $name ) {
264 + $extra = $num == $hours ? 'selected' : '';
265 + ?>
266 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
267 + <?php
268 + }
269 + ?>
270 + </select>
271 + <input type="hidden" name="params" id="viz-db-wizard-params">
272 +
273 + <input type="button" id="db-chart-button" class="button button-secondary "
274 + value="<?php echo $bttn_label; ?>" data-current="chart"
275 + data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>"
276 + data-t-chart="<?php echo $bttn_label; ?>">
277 + <input type="button" id="db-chart-save-button" class="button button-primary "
278 + value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
279 + <?php echo apply_filters( 'visualizer_pro_upsell', '', 'db-query' ); ?>
280 + </form>
281 + </div>
282 + </div>
283 + </li>
284 +
285 + <?php
286 + // we will auto-open the manual data feature but only when pro is active and source is empty.
221 287 $pro_class = apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' );
222 288 ?>
223 - <li class="viz-group <?php echo $pro_class; ?> <?php echo empty( $pro_class ) ? 'open' : ''; ?> ">
289 + <li class="viz-group <?php echo $pro_class; ?> <?php echo empty( $source_of_chart ) && empty( $pro_class ) ? 'open' : ''; ?> ">
224 290 <h2 class="viz-group-title viz-sub-group visualizer-editor-tab"
225 291 data-current="chart"><?php _e( 'Manual Data', 'visualizer' ); ?><span
226 292 class="dashicons dashicons-lock"></span></h2>
227 293 <form id="editor-form" action="<?php echo $upload_link; ?>" method="post" target="thehole">
@@ -282,9 +348,9 @@
282 348 foreach ( $permissions as $k => $v ) {
283 349 $this->$k = $v;
284 350 }
285 351 }
286 -?>
352 + ?>
287 353 <li class="viz-group viz-group-category bottom-fixed sidebar-footer-link" id="vz-chart-permissions">
288 354 <h2><span class="dashicons dashicons-admin-users"></span><?php _e( 'Permissions', 'visualizer' ); ?></h2>
289 355 <div class="viz-group-header">
290 356 <button class="customize-section-back" tabindex="0"></button>
@@ -296,17 +362,18 @@
296 362 echo add_query_arg(
297 363 array(
298 364 'nonce' => wp_create_nonce(),
299 365 'tab' => 'permissions',
300 - ), remove_query_arg( 'tab', $_SERVER['REQUEST_URI'] )
366 + ),
367 + remove_query_arg( 'tab', $_SERVER['REQUEST_URI'] )
301 368 );
302 -?>
369 + ?>
303 370 " method="post">
304 371 <?php $this->permissionsSidebar(); ?>
305 372 </form>
306 373 </ul>
307 374 </li>
308 -<?php
375 + <?php
309 376 }
310 377
311 378 /**
312 379 * Generates the permissions form.
@@ -319,9 +386,11 @@
319 386 return;
320 387 }
321 388 Visualizer_Render_Sidebar::_renderGroupStart(
322 389 esc_html__( 'Who can see this chart?', 'visualizer' ) . '<span
323 - class="dashicons dashicons-lock"></span>', '', apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'chart-permissions' )
390 + class="dashicons dashicons-lock"></span>',
391 + '',
392 + apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'chart-permissions' )
324 393 );
325 394 Visualizer_Render_Sidebar::_renderSectionStart();
326 395 Visualizer_Render_Sidebar::_renderSectionDescription( esc_html__( 'Select who can view the chart on the front-end.', 'visualizer' ) );
327 396
@@ -361,9 +430,11 @@
361 430 Visualizer_Render_Sidebar::_renderGroupEnd();
362 431
363 432 Visualizer_Render_Sidebar::_renderGroupStart(
364 433 esc_html__( 'Who can edit this chart?', 'visualizer' ) . '<span
365 - class="dashicons dashicons-lock"></span>', '', apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'chart-permissions' )
434 + class="dashicons dashicons-lock"></span>',
435 + '',
436 + apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'chart-permissions' )
366 437 );
367 438 Visualizer_Render_Sidebar::_renderSectionStart();
368 439 Visualizer_Render_Sidebar::_renderSectionDescription( esc_html__( 'Select who can edit the chart on the front-end.', 'visualizer' ) );
369 440
@@ -423,9 +494,23 @@
423 494 echo '</div>';
424 495 }
425 496 echo '<input type="submit" id="settings-button" class="button button-primary button-large push-right" value="', $this->button, '">';
426 497 if ( isset( $this->cancel_button ) ) {
427 - echo '<input type="submit" id="cancel-button" class="button button-secondary button-large push-right" value="', $this->cancel_button, '">';
498 + echo '<input type="submit" id="cancel-button" class="button button-secondary button-large push-left" value="', $this->cancel_button, '">';
428 499 }
500 + }
501 +
502 + /**
503 + * Renders the additional content.
504 + *
505 + * @access private
506 + */
507 + private function add_additional_content() {
508 + $source = strtolower( get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_SOURCE, true ) );
509 + $query = '';
510 + if ( 'visualizer_source_query' === $source ) {
511 + $query = get_post_meta( $this->chart->ID, Visualizer_Plugin::CF_DB_QUERY, true );
512 + }
513 + Visualizer_Render_Layout::show( 'db-query', $query );
429 514 }
430 515
431 516 }