PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.9.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.9.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/Layout.php +222 -377 4.0.73.9.2 View file →
@@ -27,15 +27,8 @@
27 27 */
28 28 class Visualizer_Render_Layout extends Visualizer_Render {
29 29
30 30 /**
31 - * Fallback time for live update option.
32 - *
33 - * @var float
34 - */
35 - public static $live_option_fallback_hour = 0.16; // 10 minutes
36 -
37 - /**
38 31 * Renders template.
39 32 *
40 33 * @since 1.0.0
41 34 *
@@ -60,19 +53,9 @@
60 53 *
61 54 * @access public
62 55 */
63 56 public static function _renderDbQuery( $args ) {
64 - global $wpdb;
65 57 $query = $args[1];
66 - if ( ! $query ) {
67 - $query = '
68 -/* List Posts published per. month */
69 -SELECT CONCAT( YEAR(post_date), "/", MONTH(post_date) ) as date, COUNT(*) AS post_count
70 -FROM ' . $wpdb->prefix . 'posts
71 -WHERE post_type = "post" AND post_status = "publish"
72 -GROUP BY YEAR(post_date), MONTH(post_date)
73 -ORDER BY YEAR(post_date) DESC, MONTH(post_date) DESC;';
74 - }
75 58 ?>
76 59 <div id='visualizer-db-query' style="display: none">
77 60 <div class="visualizer-db-query-form">
78 61 <div>
@@ -88,29 +71,10 @@
88 71 </div>
89 72 </div>
90 73 <div class='db-wizard-hints'>
91 74 <ul>
92 - <li><?php echo __( 'Your database prefix is:', 'visualizer' ); ?> <span class="visualizer-emboss"><?php echo $wpdb->prefix; ?></span></li>
93 - <li>
94 - <?php
95 - echo sprintf(
96 - // translators: %1$s - HTML link tag, %2$s - HTML closing link tag.
97 - __( 'For examples of queries and links to resources that you can use with this feature, please click %1$shere%2$s', 'visualizer' ),
98 - '<a href="' . VISUALIZER_DB_QUERY_DOC_URL . '" target="_blank">',
99 - '</a>'
100 - );
101 - ?>
102 - </li>
103 - <li>
104 - <?php
105 - echo sprintf(
106 - // translators: %1$s - HTML link tag, %2$s - HTML closing link tag.
107 - __( 'Use %1$sShift+Space%2$s for autocompleting keywords or table names.', 'visualizer' ),
108 - '<span class="visualizer-emboss">',
109 - '</span>'
110 - );
111 - ?>
112 - </li>
75 + <li><?php echo sprintf( __( 'For examples of queries and links to resources that you can use with this feature, please click %1$shere%2$s', 'visualizer' ), '<a href="' . VISUALIZER_DB_QUERY_DOC_URL . '" target="_blank">', '</a>' ); ?></li>
76 + <li><?php echo sprintf( __( 'Use %1$sControl+Space%2$s for autocompleting keywords or table names.', 'visualizer' ), '<span class="visualizer-emboss">', '</span>' ); ?></li>
113 77 <?php do_action( 'visualizer_db_query_add_hints', $args ); ?>
114 78 </ul>
115 79 </div>
116 80 <div class='db-wizard-results'></div>
@@ -140,9 +104,9 @@
140 104 </tr>
141 105 </thead>
142 106 <tfoot>
143 107 </tfoot>
144 - <tbody>
108 + <tbody>
145 109 <?php
146 110 foreach ( $results as $result ) {
147 111 echo '<tr>';
148 112 foreach ( $result as $r ) {
@@ -197,18 +161,9 @@
197 161 <div>
198 162 <form id="json-endpoint-form">
199 163 <div class="json-wizard-hints">
200 164 <ul class="info">
201 - <li>
202 - <?php
203 - echo sprintf(
204 - // translators: %1$s - HTML link tag, %2$s - HTML closing link tag.
205 - __( 'If you want to add authentication or headers to the endpoint or change the request in any way, please refer to our document %1$shere%2$s.', 'visualizer' ),
206 - '<a href="https://docs.themeisle.com/article/1043-visualizer-how-to-extend-rest-endpoints-with-json-response" target="_blank">',
207 - '</a>'
208 - );
209 - ?>
210 - </li>
165 + <li><?php echo sprintf( __( 'If you want to add authentication or headers to the endpoint or change the request in any way, please refer to our document %1$shere%2$s.', 'visualizer' ), '<a href="https://docs.themeisle.com/article/1043-visualizer-how-to-extend-rest-endpoints-with-json-response" target="_blank">', '</a>' ); ?></li>
211 166 </ul>
212 167 </div>
213 168
214 169 <input
@@ -243,9 +198,9 @@
243 198 id="vz-import-json-username"
244 199 name="username"
245 200 value="<?php echo ( array_key_exists( 'auth', $headers ) && array_key_exists( 'username', $headers['auth'] ) ? $headers['auth']['username'] : '' ); ?>"
246 201 placeholder="<?php esc_html_e( 'Username/Access Key', 'visualizer' ); ?>"
247 - class="json-form-element">
202 + class="json-form-element">
248 203 &
249 204 <input
250 205 type="password"
251 206 id="vz-import-json-password"
@@ -251,9 +206,9 @@
251 206 id="vz-import-json-password"
252 207 name="password"
253 208 value="<?php echo ( array_key_exists( 'auth', $headers ) && array_key_exists( 'password', $headers['auth'] ) ? $headers['auth']['password'] : '' ); ?>"
254 209 placeholder="<?php esc_html_e( 'Password/Secret Key', 'visualizer' ); ?>"
255 - class="json-form-element">
210 + class="json-form-element">
256 211 </div>
257 212 </div>
258 213 <div class="json-wizard-header">
259 214 <div></div>
@@ -359,9 +314,9 @@
359 314 $action = esc_url(
360 315 add_query_arg(
361 316 array(
362 317 'action' => Visualizer_Plugin::ACTION_UPLOAD_DATA,
363 - 'nonce' => wp_create_nonce( 'visualizer-upload-data' ),
318 + 'nonce' => wp_create_nonce(),
364 319 'chart' => $chart_id,
365 320 ),
366 321 admin_url( 'admin-ajax.php' )
367 322 )
@@ -389,8 +344,9 @@
389 344 <?php Visualizer_Render_Layout::show( 'text-editor', $chart_id ); ?>
390 345
391 346 </div>
392 347 <?php
348 +
393 349 }
394 350
395 351 /**
396 352 * Show the text area editor.
@@ -463,9 +419,9 @@
463 419 }
464 420 ?>
465 421 </tr>
466 422 </thead>
467 - <tbody>
423 + <tbody>
468 424 <tr>
469 425 <th><?php _e( 'Data Type', 'visualizer' ); ?></th>
470 426 <?php
471 427 $index = 0;
@@ -530,9 +486,9 @@
530 486 private static function _renderPermissions( $args ) {
531 487 $chart_id = $args[1];
532 488
533 489 // ignore for unit tests because Travis throws the error "Indirect modification of overloaded property Visualizer_Render_Page_Data::$permissions has no effect".
534 - if ( defined( 'WP_TESTS_DOMAIN' ) && function_exists( 'tests_add_filter' ) ) {
490 + if ( defined( 'WP_TESTS_DOMAIN' ) ) {
535 491 return;
536 492 }
537 493
538 494 $permissions = apply_filters( 'visualizer_pro_get_permissions', null, $chart_id );
@@ -615,9 +571,9 @@
615 571 true,
616 572 array( 'visualizer-permission', 'visualizer-permission-specific', 'visualizer-permission-edit-specific' )
617 573 );
618 574 Visualizer_Render_Sidebar::_renderSectionEnd();
619 - echo apply_filters( 'visualizer_pro_upsell', '', 'chart-permissions', 'https://docs.themeisle.com/article/1280-how-to-customize-permissions' );
575 + echo apply_filters( 'visualizer_pro_upsell', '', 'chart-permissions' );
620 576 echo '</div>';
621 577 Visualizer_Render_Sidebar::_renderGroupEnd();
622 578 }
623 579
@@ -626,14 +582,9 @@
626 582 *
627 583 * @access public
628 584 */
629 585 public static function _renderTabAdvanced( $args ) {
630 - $chart_id = $args[1];
631 - $sidebar = $args[2];
632 -
633 - $chart_options = get_post_meta( $chart_id, Visualizer_Plugin::CF_SETTINGS, true );
634 - $backend_title = isset( $chart_options['backend-title'] ) && ! empty( $chart_options['backend-title'] ) ? $chart_options['backend-title'] : '';
635 -
586 + $sidebar = $args[2];
636 587 ?>
637 588 <ul class="viz-group-wrapper full-height">
638 589 <li class="viz-group open" id="vz-chart-settings">
639 590 <ul class="viz-group-content">
@@ -639,9 +590,8 @@
639 590 <ul class="viz-group-content">
640 591 <ul class="viz-group-wrapper">
641 592 <form id="settings-form" action="<?php echo esc_url( add_query_arg( 'nonce', wp_create_nonce() ) ); ?>" method="post">
642 593 <input type="hidden" id="chart-img" name="chart-img">
643 - <input type="hidden" id="backend-title" name="backend-title" value="<?php echo esc_html( $backend_title ); ?>">
644 594 <?php echo $sidebar; ?>
645 595 <?php self::_renderPermissions( $args ); ?>
646 596 <input type="hidden" name="save" value="1">
647 597 </form>
@@ -687,22 +637,12 @@
687 637 <h4><span class="dashicons dashicons-editor-help"></span><a href="<?php echo VISUALIZER_MAIN_DOC; ?>" target="_blank"><?php _e( 'Main documentation page', 'visualizer' ); ?></a></h4>
688 638 <h4><span class="dashicons dashicons-media-code"></span><a href="<?php echo VISUALIZER_CODE_SNIPPETS_URL; ?>" target="_blank"><?php _e( 'Custom code snippets', 'visualizer' ); ?></a></h4>
689 639 <?php
690 640 Visualizer_Render_Sidebar::_renderSectionEnd();
691 - // translators: %s - the chart type.
692 641 Visualizer_Render_Sidebar::_renderSectionStart( sprintf( __( '%s chart', 'visualizer' ), ucwords( $displayType ) ), true );
693 642 ?>
694 643 <h4><span class="dashicons dashicons-video-alt2"></span>&nbsp;<a href="<?php echo str_replace( '#', "$type-chart", VISUALIZER_DEMO_URL ); ?>" target="_blank"><?php _e( 'View demo', 'visualizer' ); ?></a></h4>
695 - <h4><span class="dashicons dashicons-search"></span><a href="<?php echo str_replace( '#', $type, VISUALIZER_DOC_COLLECTION ); ?>" target="_blank">
696 - <?php
697 - echo sprintf(
698 - // translators: %s - the chart type.
699 - __( 'Articles containing "%s"', 'visualizer' ),
700 - $displayType
701 - );
702 - ?>
703 - </a>
704 - </h4>
644 + <h4><span class="dashicons dashicons-search"></span><a href="<?php echo str_replace( '#', $type, VISUALIZER_DOC_COLLECTION ); ?>" target="_blank"><?php echo sprintf( __( 'Articles containing "%s"', 'visualizer' ), $displayType ); ?></a></h4>
705 645 <?php
706 646 Visualizer_Render_Sidebar::_renderSectionEnd();
707 647 Visualizer_Render_Sidebar::_renderGroupEnd();
708 648 ?>
@@ -724,9 +664,9 @@
724 664 $upload_link = esc_url(
725 665 add_query_arg(
726 666 array(
727 667 'action' => Visualizer_Plugin::ACTION_UPLOAD_DATA,
728 - 'nonce' => wp_create_nonce( 'visualizer-upload-data' ),
668 + 'nonce' => wp_create_nonce(),
729 669 'chart' => $chart_id,
730 670 ),
731 671 admin_url( 'admin-ajax.php' )
732 672 )
@@ -745,12 +685,9 @@
745 685 if ( ! empty( $filter_config ) ) {
746 686 $source_of_chart .= '_wp';
747 687 }
748 688 $editor_type = get_post_meta( $chart_id, Visualizer_Plugin::CF_EDITOR, true );
749 - if (
750 - $editor_type ||
751 - ! Visualizer_Module::is_pro() // Use Manual Source for non-pro users since it is the only unlocked source.
752 - ) {
689 + if ( $editor_type ) {
753 690 $source_of_chart = 'visualizer_source_manual';
754 691 }
755 692
756 693 $type = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true );
@@ -759,208 +696,125 @@
759 696 <ul class="viz-group-wrapper full-height">
760 697 <li class="viz-group open" id="vz-chart-source">
761 698 <ul class="viz-group-content">
762 699 <ul class="viz-group-wrapper">
763 - <!-- manual -->
764 - <li class="viz-group visualizer_source_manual">
765 - <h2 class="viz-group-title viz-sub-group visualizer-editor-tab" data-current="chart" role="button" tabindex="0"><?php _e( 'Manual Data', 'visualizer' ); ?></h2>
766 - <div class="viz-group-content edit-data-content">
767 - <form id="editor-form" action="<?php echo $upload_link; ?>" method="post" target="thehole">
768 - <input type="hidden" id="chart-data" name="chart_data">
769 - <input type="hidden" id="chart-data-src" name="chart_data_src">
770 -
771 - <?php if ( Visualizer_Module::can_show_feature( 'simple-editor' ) ) { ?>
772 - <div>
773 - <p class="viz-group-description viz-editor-selection">
774 - <?php _e( 'Use the', 'visualizer' ); ?>
775 - <select name="editor-type" id="viz-editor-type">
776 - <?php
777 - if ( empty( $editor_type ) ) {
778 - $editor_type = Visualizer_Module::is_pro() ? 'excel' : 'text';
779 - }
780 - foreach ( apply_filters( 'visualizer_editors', array( 'text' => __( 'Text', 'visualizer' ), 'table' => __( 'Simple', 'visualizer' ) ) ) as $e_type => $e_label ) {
781 - ?>
782 - <option value="<?php echo $e_type; ?>" <?php selected( $editor_type, $e_type ); ?> ><?php echo $e_label; ?></option>
783 - <?php } ?>
784 - </select>
785 - <?php _e( 'editor to manually edit the chart data.', 'visualizer' ); ?>
786 - </p>
787 - <input type="button" id="editor-undo" class="button button-secondary" style="display: none" value="<?php _e( 'Undo Changes', 'visualizer' ); ?>">
788 - <input type="button" id="editor-button" class="button button-primary "
789 - value="<?php _e( 'Edit Data', 'visualizer' ); ?>" data-current="chart"
790 - data-t-editor="<?php _e( 'Show Chart', 'visualizer' ); ?>"
791 - data-t-chart="<?php _e( 'Edit Data', 'visualizer' ); ?>"
792 - >
793 - <p class="viz-group-description viz-info-msg" style="display:none"><?php echo sprintf( __( 'Please make sure you click \'Show Chart\' before you save the chart.', 'visualizer' ) ); ?></p>
700 + <!-- import from file -->
701 + <li class="viz-group visualizer_source_csv">
702 + <h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from file', 'visualizer' ); ?></h2>
703 + <div class="viz-group-content">
704 + <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>
705 + <p class="viz-group-description viz-info-msg"><b><?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. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $type . '.csv" target="_blank">', $type, '.csv</a>' ); ?></b></p>
706 + <form id="vz-csv-file-form" action="<?php echo $upload_link; ?>" method="post"
707 + target="thehole" enctype="multipart/form-data">
708 + <input type="hidden" id="remote-data" name="remote_data">
709 + <div class="">
710 + <input type="file" id="csv-file" name="local_data">
794 711 </div>
795 - <?php } else { ?>
796 - <input type="button" id="editor-undo" class="button button-secondary" style="display: none" value="<?php _e( 'Undo Changes', 'visualizer' ); ?>">
797 - <input type="button" id="editor-chart-button" class="button button-primary "
798 - value="<?php _e( 'View Editor', 'visualizer' ); ?>" data-current="chart"
799 - data-t-editor="<?php _e( 'Show Chart', 'visualizer' ); ?>"
800 - data-t-chart="<?php _e( 'View Editor', 'visualizer' ); ?>"
801 - >
802 - <p class="viz-group-description viz-info-msg" style="display:none"><?php echo sprintf( __( 'Please make sure you click \'Show Chart\' before you save the chart.', 'visualizer' ) ); ?></p>
803 - <?php } ?>
712 + <input type="button" class="button button-primary" id="vz-import-file"
713 + value="<?php _e( 'Import', 'visualizer' ); ?>">
804 714 </form>
805 715 </div>
806 716 </li>
807 -
808 - <!-- import from file -->
809 - <li class="viz-group visualizer_source_csv <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-file' ); ?> ">
810 - <h2 class="viz-group-title viz-sub-group visualizer-src-tab" role="button" tabindex="0"><?php _e( 'Import data from file', 'visualizer' ); ?><span class="dashicons dashicons-lock"></span></h2>
811 - <div class="viz-group-content">
812 - <div>
813 - <p class="viz-group-description"><?php esc_html_e( 'Select and upload your data file here. Supported formats: CSV, XLSX. The first row should contain the column headings. The second row should contain the series type (string, number, boolean, date, datetime, timeofday).', 'visualizer' ); ?></p>
814 - <p class="viz-group-description viz-info-msg">
815 - <b>
816 - <?php
817 - echo sprintf(
818 - // translators: $s - the chart type with the link attached.
819 - __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %s. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ),
820 - '<a href="' . VISUALIZER_ABSURL . 'samples/' . $type . '.csv" target="_blank">' . $type . '.csv</a>'
821 - );
822 - ?>
823 - </b>
824 - </p>
825 - <form id="vz-csv-file-form" action="<?php echo $upload_link; ?>" method="post"
826 - target="thehole" enctype="multipart/form-data">
827 - <input type="hidden" id="remote-data" name="remote_data">
828 - <div class="">
829 - <input type="file" id="csv-file" name="local_data" accept=".csv,.xlsx">
830 - </div>
831 - <input type="button" class="button button-primary" id="vz-import-file"
832 - value="<?php _e( 'Import', 'visualizer' ); ?>">
833 - </form>
834 - <?php echo apply_filters( 'visualizer_pro_upsell', '', 'import-file' ); ?>
835 - </div>
836 - </div>
837 - </li>
838 717 <!-- import from url -->
839 - <li class="viz-group visualizer-import-url visualizer_source_csv_remote visualizer_source_json <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-url' ); ?> ">
840 - <h2 class="viz-group-title viz-sub-group visualizer-src-tab" role="button" tabindex="0"><?php _e( 'Import data from URL', 'visualizer' ); ?><span class="dashicons dashicons-lock"></span></h2>
718 + <li class="viz-group visualizer-import-url visualizer_source_csv_remote visualizer_source_json">
719 + <h2 class="viz-group-title viz-sub-group visualizer-src-tab"><?php _e( 'Import data from URL', 'visualizer' ); ?></h2>
841 720 <ul class="viz-group-content">
842 721 <!-- import from csv url -->
843 722 <li class="viz-subsection">
844 - <span class="viz-section-title" role="button" tabindex="0"><?php _e( 'Import from CSV / XLSX', 'visualizer' ); ?></span>
845 - <div class="only-pro-anchor">
846 - <div class="viz-section-items section-items">
847 - <p class="viz-group-description">
723 + <span class="viz-section-title"><?php _e( 'Import from CSV', 'visualizer' ); ?></span>
724 + <div class="viz-section-items section-items">
725 + <p class="viz-group-description"><?php echo sprintf( __( 'You can use this to import data from a remote CSV file or %1$sGoogle Spreadsheet%2$s.', 'visualizer' ), '<a href="https://docs.themeisle.com/article/607-how-can-i-populate-data-from-google-spreadsheet" target="_blank" >', '</a>' ); ?> </p>
726 + <p class="viz-group-description viz-info-msg"><b><?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. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ), '<a href="' . VISUALIZER_ABSURL . 'samples/' . $type . '.csv" target="_blank">', $type, '.csv</a>' ); ?></b></p>
727 + <form id="vz-one-time-import" action="<?php echo $upload_link; ?>" method="post"
728 + target="thehole" enctype="multipart/form-data">
729 + <div class="remote-file-section">
730 + <input type="url" id="vz-schedule-url" name="remote_data" value="<?php echo esc_attr( get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_URL, true ) ); ?>" placeholder="<?php esc_html_e( 'Please enter the URL of CSV file', 'visualizer' ); ?>" class="visualizer-input visualizer-remote-url">
731 + </div>
732 + <select name="vz-import-time" id="vz-import-time" class="visualizer-select">
733 + <?php
734 + $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_SCHEDULE, true );
735 + $schedules = apply_filters(
736 + 'visualizer_chart_schedules', array(
737 + '-1' => __( 'One-time', 'visualizer' ),
738 + ),
739 + 'csv',
740 + $chart_id
741 + );
742 + foreach ( $schedules as $num => $name ) {
743 + // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
744 + $extra = $num == $hours ? 'selected' : '';
745 + ?>
746 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
848 747 <?php
849 - echo sprintf(
850 - // translators: %1$s - HTML link tag, %2$s - HTML closing link tag.
851 - __( 'You can use this to import data from a remote CSV or Excel (XLSX) file, or %1$sGoogle Spreadsheet%2$s.', 'visualizer' ),
852 - '<a href="https://docs.themeisle.com/article/607-how-can-i-populate-data-from-google-spreadsheet" target="_blank" >',
853 - '</a>'
854 - );
748 + }
749 + do_action( 'visualizer_chart_schedules_spl', 'csv', $chart_id, 1 );
750 + ?>
751 + </select>
752 +
753 + <?php
754 + if ( ! Visualizer_Module::is_pro() ) {
855 755 ?>
856 - </p>
857 - <p class="viz-group-description viz-info-msg">
858 - <b>
859 - <?php
860 - echo sprintf(
861 - // translators: %s - the chart type with the link attached.
862 - __( 'If you are unsure about how to format your data CSV then please take a look at this sample: %s. If you are using non-English characters, please make sure you save the file in UTF-8 encoding.', 'visualizer' ),
863 - '<a href="' . VISUALIZER_ABSURL . 'samples/' . $type . '.csv" target="_blank">' . $type . '.csv</a>'
864 - );
865 - ?>
866 - </b>
867 - </p>
868 - <form id="vz-one-time-import" action="<?php echo $upload_link; ?>" method="post"
869 - target="thehole" enctype="multipart/form-data">
870 - <div class="remote-file-section">
871 - <input type="url" id="vz-schedule-url" name="remote_data" value="<?php echo esc_attr( get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_URL, true ) ); ?>" placeholder="<?php esc_html_e( 'Please enter the URL of a CSV or XLSX file', 'visualizer' ); ?>" class="visualizer-input visualizer-remote-url">
872 - </div>
873 - <select name="vz-import-time" id="vz-import-time" class="visualizer-select">
756 + <input type="button" id="view-remote-file" class="button button-primary" value="<?php _e( 'Import', 'visualizer' ); ?>">
874 757 <?php
875 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_SCHEDULE, true );
876 - $schedules = apply_filters(
877 - 'visualizer_chart_schedules', array(
878 - '-1' => __( 'One-time', 'visualizer' ),
879 - ),
880 - 'csv',
881 - $chart_id
882 - );
883 - foreach ( $schedules as $num => $name ) {
884 - // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
885 - $extra = self::is_hour_selected( $hours, $num ) ? 'selected' : '';
886 - ?>
887 - <option value="<?php echo esc_attr( $num ); ?>" <?php echo esc_attr( $extra ); ?>><?php echo esc_html( $name ); ?></option>
888 - <?php
889 - }
890 - do_action( 'visualizer_chart_schedules_spl', 'csv', $chart_id, 1 );
758 + } else {
891 759 ?>
892 - </select>
893 -
760 + <input type="button" id="vz-save-schedule" class="button button-primary" value="<?php _e( 'Import & Save schedule', 'visualizer' ); ?>">
894 761 <?php
895 - if ( ! Visualizer_Module::is_pro() ) {
896 - ?>
897 - <input type="button" id="view-remote-file" class="button button-primary" value="<?php _e( 'Import', 'visualizer' ); ?>">
898 - <?php
899 - } else {
900 - ?>
901 - <input type="button" id="vz-save-schedule" class="button button-primary" value="<?php _e( 'Import & Save schedule', 'visualizer' ); ?>">
902 - <?php
903 - }
904 - ?>
905 - <?php echo apply_filters( 'visualizer_pro_upsell', '', 'import-url' ); ?>
906 - </form>
907 - </div>
762 + }
763 + ?>
764 + </form>
908 765 </div>
909 766 </li>
910 767 <!-- import from json url -->
911 768 <li class="viz-subsection">
912 - <span class="viz-section-title visualizer_source_json" role="button" tabindex="0"><?php _e( 'Import from JSON', 'visualizer' ); ?></span>
913 - <div class="only-pro-anchor">
914 - <div class="viz-section-items section-items">
915 - <p class="viz-group-description"><?php _e( 'You can choose here to import/synchronize your chart data with a remote JSON source. For more info check <a href="https://docs.themeisle.com/article/1052-how-to-generate-charts-from-json-data-rest-endpoints" target="_blank" >this</a> tutorial', 'visualizer' ); ?></p>
916 - <form id="vz-import-json" action="<?php echo $upload_link; ?>" method="post" target="thehole" enctype="multipart/form-data">
917 - <div class="remote-file-section">
769 + <span class="viz-section-title visualizer_source_json"><?php _e( 'Import from JSON', 'visualizer' ); ?></span>
770 + <div class="viz-section-items section-items">
771 + <p class="viz-group-description"><?php _e( 'You can choose here to import/synchronize your chart data with a remote JSON source. For more info check <a href="https://docs.themeisle.com/article/1052-how-to-generate-charts-from-json-data-rest-endpoints" target="_blank" >this</a> tutorial', 'visualizer' ); ?></p>
772 + <form id="vz-import-json" action="<?php echo $upload_link; ?>" method="post" target="thehole" enctype="multipart/form-data">
773 + <div class="remote-file-section">
774 + <?php
775 + $bttn_label = 'visualizer_source_json' === $source_of_chart ? __( 'Modify Parameters', 'visualizer' ) : __( 'Create Parameters', 'visualizer' );
776 + if ( Visualizer_Module::is_pro() ) {
777 + ?>
778 + <p class="viz-group-description"><?php _e( 'How often do you want to check the URL', 'visualizer' ); ?></p>
779 + <select name="time" id="vz-json-time" class="visualizer-select json-form-element" data-chart="<?php echo $chart_id; ?>">
918 780 <?php
919 - $bttn_label = 'visualizer_source_json' === $source_of_chart ? __( 'Modify Parameters', 'visualizer' ) : __( 'Create Parameters', 'visualizer' );
920 - if ( Visualizer_Module::is_pro() ) {
781 + $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_JSON_SCHEDULE, true );
782 + $schedules = apply_filters(
783 + 'visualizer_chart_schedules', array(
784 + '-1' => __( 'One-time', 'visualizer' ),
785 + ),
786 + 'json',
787 + $chart_id
788 + );
789 + foreach ( $schedules as $num => $name ) {
790 + // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
791 + $extra = $num == $hours ? 'selected' : '';
921 792 ?>
922 - <p class="viz-group-description"><?php _e( 'How often do you want to check the URL', 'visualizer' ); ?></p>
923 - <select name="time" id="vz-json-time" class="visualizer-select json-form-element" data-chart="<?php echo $chart_id; ?>">
793 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
924 794 <?php
925 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_JSON_SCHEDULE, true );
926 - $schedules = apply_filters(
927 - 'visualizer_chart_schedules', array(
928 - '-1' => __( 'One-time', 'visualizer' ),
929 - ),
930 - 'json',
931 - $chart_id
932 - );
933 - foreach ( $schedules as $num => $name ) {
934 - // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
935 - $extra = self::is_hour_selected( $hours, $num ) ? 'selected' : '';
936 - ?>
937 - <option value="<?php echo esc_attr( $num ); ?>" <?php echo esc_attr( $extra ); ?>><?php echo esc_html( $name ); ?></option>
938 - <?php
939 - }
940 - do_action( 'visualizer_chart_schedules_spl', 'json', $chart_id, 1 );
941 - ?>
942 - </select>
943 - <?php
944 795 }
796 + do_action( 'visualizer_chart_schedules_spl', 'json', $chart_id, 1 );
945 797 ?>
946 - </div>
798 + </select>
799 + <?php
800 + }
801 + ?>
802 + </div>
947 803
948 - <input type="button" id="json-chart-button" class="button button-secondary show-chart-toggle"
949 - value="<?php echo $bttn_label; ?>" data-current="chart"
950 - data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>"
951 - data-t-chart="<?php echo $bttn_label; ?>">
804 + <input type="button" id="json-chart-button" class="button button-secondary show-chart-toggle"
805 + value="<?php echo $bttn_label; ?>" data-current="chart"
806 + data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>"
807 + data-t-chart="<?php echo $bttn_label; ?>">
808 + <?php
809 + if ( Visualizer_Module::is_pro() ) {
810 + ?>
811 + <input type="button" id="json-chart-save-button" class="button button-primary "
812 + value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
952 813 <?php
953 - if ( Visualizer_Module::is_pro() ) {
954 - ?>
955 - <input type="button" id="json-chart-save-button" class="button button-primary "
956 - value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
957 - <?php
958 - }
959 - ?>
960 - <?php echo apply_filters( 'visualizer_pro_upsell', '', 'import-url' ); ?>
961 - </form>
962 - </div>
814 + }
815 + ?>
816 + </form>
963 817 </div>
964 818 </li>
965 819 </ul>
966 820 </li>
@@ -966,9 +820,9 @@
966 820 </li>
967 821 <!-- import from chart -->
968 822 <li class="viz-group viz-import-from-other <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' ); ?>">
969 823 <h2 class="viz-group-title viz-sub-group"
970 - data-current="chart" role="button" tabindex="0"><?php _e( 'Import from other chart', 'visualizer' ); ?><span
824 + data-current="chart"><?php _e( 'Import from other chart', 'visualizer' ); ?><span
971 825 class="dashicons dashicons-lock"></span></h2>
972 826 <div class="viz-group-content edit-data-content">
973 827 <div>
974 828 <p class="viz-group-description"><?php _e( 'You can import here data from your previously created charts', 'visualizer' ); ?></p>
@@ -978,9 +832,9 @@
978 832 $fetch_link = esc_url(
979 833 add_query_arg(
980 834 array(
981 835 'action' => Visualizer_Module::is_pro() ? Visualizer_Pro::ACTION_FETCH_DATA : '',
982 - 'nonce' => Visualizer_Module::is_pro() ? wp_create_nonce( Visualizer_Pro::ACTION_FETCH_DATA ) : wp_create_nonce(),
836 + 'nonce' => wp_create_nonce(),
983 837 ),
984 838 admin_url( 'admin-ajax.php' )
985 839 )
986 840 );
@@ -1015,15 +869,11 @@
1015 869
1016 870 </select>
1017 871 </form>
1018 872 <input type="button" id="existing-chart" class="button button-primary"
1019 - value="<?php _e( 'Import Chart', 'visualizer' ); ?>"
1020 - data-viz-link="<?php echo $fetch_link; ?>">
1021 - <?php
1022 - if ( ! Visualizer_Module_Admin::proFeaturesEnabled() ) {
1023 - echo apply_filters( 'visualizer_pro_upsell', '', 'import-chart' );
1024 - }
1025 - ?>
873 + value="<?php _e( 'Import Chart', 'visualizer' ); ?>"
874 + data-viz-link="<?php echo $fetch_link; ?>">
875 + <?php echo apply_filters( 'visualizer_pro_upsell', '' ); ?>
1026 876 </div>
1027 877 </div>
1028 878 </li>
1029 879
@@ -1038,54 +888,43 @@
1038 888 )
1039 889 );
1040 890 ?>
1041 891 <!-- import from WordPress -->
1042 - <li class="viz-group visualizer_source_query_wp <?php echo esc_attr( apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-wp' ) ); ?> ">
1043 - <h2 class="viz-group-title viz-sub-group" role="button" tabindex="0"><?php _e( 'Import from WordPress', 'visualizer' ); ?><span
892 + <li class="viz-group visualizer_source_query_wp <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-wp' ); ?> ">
893 + <h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from WordPress', 'visualizer' ); ?><span
1044 894 class="dashicons dashicons-lock"></span></h2>
1045 895 <div class="viz-group-content edit-data-content">
1046 896 <div>
1047 897 <p class="viz-group-description"><?php _e( 'You can import data from WordPress here.', 'visualizer' ); ?></p>
1048 - <form id="vz-filter-wizard" action="<?php echo esc_url( $save_filter ); ?>" method="post" target="thehole">
898 + <form id="vz-filter-wizard" action="<?php echo $save_filter; ?>" method="post" target="thehole">
899 + <p class="viz-group-description"><?php _e( 'How often do you want to refresh the data from WordPress.', 'visualizer' ); ?></p>
900 + <select name="refresh" id="vz-filter-import-time" class="visualizer-select">
1049 901 <?php
1050 - $is_wp_source = 'visualizer_source_query_wp' === $source_of_chart;
1051 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
1052 - $bttn_label = $is_wp_source ? '1. ' . __( 'Modify Data Source', 'visualizer' ) : '1. ' . __( 'Choose Data Source', 'visualizer' );
902 + $bttn_label = 'visualizer_source_query_wp' === $source_of_chart ? __( 'Modify Filter', 'visualizer' ) : __( 'Create Filter', 'visualizer' );
903 + $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
904 + $schedules = apply_filters(
905 + 'visualizer_chart_schedules', array(
906 + '-1' => __( 'One-time', 'visualizer' ),
907 + ),
908 + 'wp',
909 + $chart_id
910 + );
911 + foreach ( $schedules as $num => $name ) {
912 + // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
913 + $extra = $num == $hours ? 'selected' : '';
914 + ?>
915 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
916 + <?php
917 + }
918 + do_action( 'visualizer_chart_schedules_spl', 'wp', $chart_id, 1 );
1053 919 ?>
920 + </select>
1054 921
1055 - <!-- Step 1: Choose / modify data source -->
1056 - <input type="button" id="filter-chart-button" class="button button-secondary show-chart-toggle vz-import-step-btn" value="<?php echo esc_attr( $bttn_label ); ?>" data-current="chart" data-t-filter="<?php esc_attr_e( 'Show Chart', 'visualizer' ); ?>" data-t-chart="<?php echo esc_attr( $bttn_label ); ?>">
1057 -
1058 - <!-- Step 2: Sync schedule toggle -->
1059 - <div id="vz-wp-sync-step">
1060 - <button type="button" id="vz-wp-sync-btn" class="vz-import-step-toggle" aria-expanded="<?php echo $is_wp_source ? 'true' : 'false'; ?>">
1061 - <?php echo '2. ' . __( 'Set Sync Schedule', 'visualizer' ); ?>
1062 - <span class="dashicons dashicons-arrow-down-alt2"></span>
1063 - </button>
1064 - <div id="vz-wp-sync-options"<?php echo $is_wp_source ? '' : ' style="display:none"'; ?>>
1065 - <select name="refresh" id="vz-filter-import-time" class="visualizer-select">
1066 - <?php
1067 - $schedules = apply_filters(
1068 - 'visualizer_chart_schedules', array(
1069 - '-1' => __( 'One-time', 'visualizer' ),
1070 - ),
1071 - 'wp',
1072 - $chart_id
1073 - );
1074 - foreach ( $schedules as $num => $name ) {
1075 - $extra = self::is_hour_selected( $hours, $num ) ? 'selected' : '';
1076 - ?>
1077 - <option value="<?php echo esc_attr( $num ); ?>" <?php echo esc_attr( $extra ); ?>><?php echo esc_html( $name ); ?></option>
1078 - <?php
1079 - }
1080 - do_action( 'visualizer_chart_schedules_spl', 'wp', $chart_id, 1 );
1081 - ?>
1082 - </select>
1083 - <input type="button" id="db-filter-save-button" class="button button-primary" value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
1084 - </div>
1085 - </div>
922 + <input type="button" id="filter-chart-button" class="button button-secondary show-chart-toggle" value="<?php echo $bttn_label; ?>" data-current="chart" data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>" data-t-chart="<?php echo $bttn_label; ?>">
923 + <input type="button" id="db-filter-save-button" class="button button-primary" value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
924 + <?php echo apply_filters( 'visualizer_pro_upsell', '', 'db-query' ); ?>
1086 925 </form>
1087 - <?php echo apply_filters( 'visualizer_pro_upsell', '', 'import-wp', 'https://docs.themeisle.com/article/1278-how-to-import-data-from-wordpress' ); ?>
926 + <?php echo apply_filters( 'visualizer_pro_upsell', '', 'import-wp' ); ?>
1088 927 </div>
1089 928 </div>
1090 929 </li>
1091 930
@@ -1127,9 +966,9 @@
1127 966 )
1128 967 );
1129 968 ?>
1130 969 <li class="viz-group visualizer_woocommerce_source<?php echo 'visualizer_source_json_wc' === $source_of_chart ? ' open' : ''; ?> <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'import-wc-report' ); ?> ">
1131 - <h2 class="viz-group-title viz-sub-group" role="button" tabindex="0"><?php _e( 'Import from WooCommerce Reports', 'visualizer' ); ?><span class="dashicons dashicons-lock"></span></h2>
970 + <h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from WooCommerce Reports', 'visualizer' ); ?><span class="dashicons dashicons-lock"></span></h2>
1132 971 <div class="viz-group-content edit-data-content">
1133 972 <div>
1134 973 <p class="viz-group-description"><?php _e( 'You can choose here to import/synchronize your chart data with a WooCommerce report API. For more info check <a href="https://woocommerce.github.io/woocommerce-rest-api-docs/?shell#reports" target="_blank" >this</a> tutorial', 'visualizer' ); ?></p>
1135 974 <form id="vz-import-woo-report" action="<?php echo $upload_link; ?>" method="post" target="thehole" enctype="multipart/form-data">
@@ -1148,11 +987,12 @@
1148 987 'json',
1149 988 $chart_id
1150 989 );
1151 990 foreach ( $schedules as $num => $name ) {
1152 - $extra = self::is_hour_selected( $hours, $num ) ? 'selected' : '';
991 + // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
992 + $extra = $num == $hours ? 'selected' : '';
1153 993 ?>
1154 - <option value="<?php echo esc_attr( $num ); ?>" <?php echo esc_attr( $extra ); ?>><?php echo esc_html( $name ); ?></option>
994 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
1155 995 <?php
1156 996 }
1157 997 do_action( 'visualizer_chart_schedules_spl', 'json', $chart_id, 1 );
1158 998 ?>
@@ -1197,57 +1037,97 @@
1197 1037 )
1198 1038 );
1199 1039 ?>
1200 1040 <!-- import from db -->
1201 - <li class="viz-group visualizer_source_query <?php echo esc_attr( apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'db-query' ) ); ?>">
1202 - <h2 class="viz-group-title viz-sub-group" role="button" tabindex="0"><?php _e( 'Import from database', 'visualizer' ); ?><span
1041 + <li class="viz-group visualizer_source_query <?php echo apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'db-query' ); ?>">
1042 + <h2 class="viz-group-title viz-sub-group"><?php _e( 'Import from database', 'visualizer' ); ?><span
1203 1043 class="dashicons dashicons-lock"></span></h2>
1204 1044 <div class="viz-group-content edit-data-content">
1205 1045 <div>
1206 1046 <p class="viz-group-description"><?php _e( 'You can import data from the database here.', 'visualizer' ); ?></p>
1207 - <form id="vz-db-wizard" action="<?php echo esc_url( $save_query ); ?>" method="post" target="thehole">
1047 + <form id="vz-db-wizard" action="<?php echo $save_query; ?>" method="post" target="thehole">
1048 + <p class="viz-group-description"><?php _e( 'How often do you want to refresh the data from the database.', 'visualizer' ); ?></p>
1049 + <select name="refresh" id="vz-db-import-time" class="visualizer-select">
1208 1050 <?php
1209 - $is_db_source = 'visualizer_source_query' === $source_of_chart;
1210 - $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
1211 - $bttn_label = $is_db_source ? __( '1. Modify Data Source', 'visualizer' ) : __( '1. Choose Data Source', 'visualizer' );
1051 + $bttn_label = 'visualizer_source_query' === $source_of_chart ? __( 'Modify Query', 'visualizer' ) : __( 'Create Query', 'visualizer' );
1052 + $hours = get_post_meta( $chart_id, Visualizer_Plugin::CF_DB_SCHEDULE, true );
1053 + $schedules = apply_filters(
1054 + 'visualizer_chart_schedules', array(
1055 + '-1' => __( 'One-time', 'visualizer' ),
1056 + ),
1057 + 'db',
1058 + $chart_id
1059 + );
1060 + foreach ( $schedules as $num => $name ) {
1061 + // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
1062 + $extra = $num == $hours ? 'selected' : '';
1063 + ?>
1064 + <option value="<?php echo $num; ?>" <?php echo $extra; ?>><?php echo $name; ?></option>
1065 + <?php
1066 + }
1067 + do_action( 'visualizer_chart_schedules_spl', 'db', $chart_id, 1 );
1212 1068 ?>
1069 + </select>
1070 + <input type="hidden" name="params" id="viz-db-wizard-params">
1213 1071
1214 - <!-- Step 1: Choose / modify data source -->
1215 - <input type="hidden" name="params" id="viz-db-wizard-params">
1216 - <input type="button" id="db-chart-button" class="button button-secondary show-chart-toggle vz-import-step-btn" value="<?php echo esc_attr( $bttn_label ); ?>" data-current="chart" data-t-filter="<?php esc_attr_e( 'Show Chart', 'visualizer' ); ?>" data-t-chart="<?php echo esc_attr( $bttn_label ); ?>">
1072 + <input type="button" id="db-chart-button" class="button button-secondary show-chart-toggle" value="<?php echo $bttn_label; ?>" data-current="chart" data-t-filter="<?php _e( 'Show Chart', 'visualizer' ); ?>" data-t-chart="<?php echo $bttn_label; ?>">
1073 + <input type="button" id="db-chart-save-button" class="button button-primary" value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
1074 + <?php echo apply_filters( 'visualizer_pro_upsell', '', 'db-query' ); ?>
1075 + </form>
1076 + </div>
1077 + </div>
1078 + </li>
1217 1079
1218 - <!-- Step 2: Sync schedule toggle -->
1219 - <div id="vz-db-sync-step">
1220 - <button type="button" id="vz-db-sync-btn" class="vz-import-step-toggle" aria-expanded="<?php echo $is_db_source ? 'true' : 'false'; ?>">
1221 - <?php echo '2. ' . __( 'Set Sync Schedule', 'visualizer' ); ?>
1222 - <span class="dashicons dashicons-arrow-down-alt2"></span>
1223 - </button>
1224 - <div id="vz-db-sync-options"<?php echo $is_db_source ? '' : ' style="display:none"'; ?>>
1225 - <select name="refresh" id="vz-db-import-time" class="visualizer-select">
1080 + <!-- manual -->
1081 + <li class="viz-group visualizer_source_manual <?php echo ! Visualizer_Module_Admin::proFeaturesLocked() ? apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature', 'db-query' ) : ''; ?>">
1082 + <h2 class="viz-group-title viz-sub-group visualizer-editor-tab" data-current="chart"><?php _e( 'Manual Data', 'visualizer' ); ?>
1083 + <span class="dashicons dashicons-lock"></span>
1084 + </h2>
1085 + <div class="viz-group-content edit-data-content">
1086 + <form id="editor-form" action="<?php echo $upload_link; ?>" method="post" target="thehole">
1087 + <input type="hidden" id="chart-data" name="chart_data">
1088 + <input type="hidden" id="chart-data-src" name="chart_data_src">
1089 +
1090 + <?php if ( Visualizer_Module::can_show_feature( 'simple-editor' ) ) { ?>
1091 + <div>
1092 + <p class="viz-group-description viz-editor-selection">
1093 + <?php _e( 'Use the', 'visualizer' ); ?>
1094 + <select name="editor-type" id="viz-editor-type">
1095 + <?php
1096 + if ( empty( $editor_type ) ) {
1097 + $editor_type = Visualizer_Module::is_pro() ? 'excel' : 'text';
1098 + }
1099 + foreach ( apply_filters( 'visualizer_editors', array( 'text' => __( 'Text', 'visualizer' ), 'table' => __( 'Simple', 'visualizer' ) ) ) as $e_type => $e_label ) {
1100 + ?>
1101 + <option value="<?php echo $e_type; ?>" <?php selected( $editor_type, $e_type ); ?> ><?php echo $e_label; ?></option>
1102 + <?php } ?>
1103 + </select>
1104 + <?php _e( 'editor to manually edit the chart data.', 'visualizer' ); ?>
1105 + </p>
1106 + <input type="button" id="editor-undo" class="button button-secondary" style="display: none" value="<?php _e( 'Undo Changes', 'visualizer' ); ?>">
1107 + <input type="button" id="editor-button" class="button button-primary "
1108 + value="<?php _e( 'Edit Data', 'visualizer' ); ?>" data-current="chart"
1109 + data-t-editor="<?php _e( 'Show Chart', 'visualizer' ); ?>"
1110 + data-t-chart="<?php _e( 'Edit Data', 'visualizer' ); ?>"
1111 + >
1112 + <p class="viz-group-description viz-info-msg"><?php echo sprintf( __( 'Please make sure you click \'Show Chart\' before you save the chart.', 'visualizer' ) ); ?></p>
1113 + </div>
1114 + <?php } else { ?>
1115 + <input type="button" id="editor-undo" class="button button-secondary" style="display: none" value="<?php _e( 'Undo Changes', 'visualizer' ); ?>">
1116 + <input type="button" id="editor-chart-button" class="button button-primary "
1117 + value="<?php _e( 'View Editor', 'visualizer' ); ?>" data-current="chart"
1118 + data-t-editor="<?php _e( 'Show Chart', 'visualizer' ); ?>"
1119 + data-t-chart="<?php _e( 'View Editor', 'visualizer' ); ?>"
1120 + >
1121 + <p class="viz-group-description viz-info-msg"><?php echo sprintf( __( 'Please make sure you click \'Show Chart\' before you save the chart.', 'visualizer' ) ); ?></p>
1122 + <?php } ?>
1226 1123 <?php
1227 - $schedules = apply_filters(
1228 - 'visualizer_chart_schedules', array(
1229 - '-1' => __( 'One-time', 'visualizer' ),
1230 - ),
1231 - 'db',
1232 - $chart_id
1233 - );
1234 - foreach ( $schedules as $num => $name ) {
1235 - $extra = self::is_hour_selected( $hours, $num ) ? 'selected' : '';
1236 - ?>
1237 - <option value="<?php echo esc_attr( $num ); ?>" <?php echo esc_attr( $extra ); ?>><?php echo esc_html( $name ); ?></option>
1238 - <?php
1124 + if ( ! Visualizer_Module_Admin::proFeaturesLocked() ) {
1125 + echo apply_filters( 'visualizer_pro_upsell', '', 'db-query' );
1239 1126 }
1240 - do_action( 'visualizer_chart_schedules_spl', 'db', $chart_id, 1 );
1241 1127 ?>
1242 - </select>
1243 - <input type="button" id="db-chart-save-button" class="button button-primary" value="<?php _e( 'Save Schedule', 'visualizer' ); ?>">
1244 - </div>
1245 - </div>
1246 - <?php echo apply_filters( 'visualizer_pro_upsell', '', 'db-query', 'https://docs.themeisle.com/article/1279-how-to-import-data-from-a-database' ); ?>
1247 - </form>
1248 - </div>
1249 - </div>
1128 + </form>
1129 + </div>
1250 1130 </li>
1251 1131 </ul>
1252 1132 </li>
1253 1133 </ul>
@@ -1255,41 +1135,6 @@
1255 1135
1256 1136 <span id="visualizer-chart-id" data-id="<?php echo $chart_id; ?>" data-chart-source="<?php echo esc_attr( $source_of_chart ); ?>" data-chart-type="<?php echo esc_attr( $type ); ?>" data-chart-lib="<?php echo esc_attr( $lib ); ?>"></span>
1257 1137 <iframe id="thehole" name="thehole"></iframe>
1258 1138 <?php
1259 - }
1260 -
1261 - /**
1262 - * Check if the given hour is selected.
1263 - *
1264 - * @param int|float|string $hour The hour.
1265 - * @param int|float|string $reference The number.
1266 - *
1267 - * @return bool
1268 - */
1269 - public static function is_hour_selected( $hour, $reference ) {
1270 -
1271 - if ( ! is_numeric( $hour ) || ! is_numeric( $reference ) ) {
1272 - return false;
1273 - }
1274 -
1275 - $hour = floatval( $hour );
1276 - $reference = floatval( $reference );
1277 -
1278 - if ( self::is_live_update_option( $reference ) ) {
1279 - $reference = self::$live_option_fallback_hour;
1280 - }
1281 -
1282 - return abs( $hour - $reference ) < 0.000001;
1283 - }
1284 -
1285 - /**
1286 - * Check if the reference option is deprecated live update option.
1287 - *
1288 - * @param float $reference_hour The reference hour.
1289 - *
1290 - * @return bool
1291 - */
1292 - public static function is_live_update_option( $reference_hour ) {
1293 - return abs( $reference_hour ) < 0.000001;
1294 1139 }
1295 1140 }