PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.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/Library.php +50 -12 3.1.13.4.2 View file →
@@ -39,9 +39,12 @@
39 39 echo '<div class="wrap">';
40 40 echo '<div id="visualizer-icon" class="icon32"><br></div>';
41 41 echo '<h2>';
42 42 esc_html_e( 'Visualizer Library', 'visualizer' );
43 - echo ' <a href="javascript:;" class="add-new-h2">', esc_html__( 'Add New', 'visualizer' ), '</a>';
43 + echo ' <a href="javascript:;" class="add-new-h2 add-new-chart">', esc_html__( 'Add New', 'visualizer' ), '</a>';
44 + if ( Visualizer_Module::is_pro() ) {
45 + echo ' <a href="' . admin_url( 'options-general.php' ) . '" class="page-title-action">', esc_html__( 'License Settings', 'visualizer' ), '</a>';
46 + }
44 47 echo '</h2>';
45 48 $this->_renderMessages();
46 49 $this->_renderLibrary();
47 50 echo '</div>';
@@ -80,8 +83,10 @@
80 83 // Added by Ash/Upwork
81 84 echo $this->custom_css;
82 85 echo '<div id="visualizer-types" class="visualizer-clearfix">';
83 86 echo '<ul class="subsubsub">';
87 + // All tab.
88 + echo '<li class="visualizer-list-item all"><a class="' . ( ! isset( $_GET['type'] ) || empty( $_GET['type'] ) ? 'current' : '' ) . '" href="', esc_url( add_query_arg( array( 'vpage' => false, 'type' => false, 'vaction' => false, 's' => false ) ) ), '">' . __( 'All', 'visualizer' ) . '</a> | </li>';
84 89 foreach ( $this->types as $type => $array ) {
85 90 if ( ! is_array( $array ) ) {
86 91 // support for old pro
87 92 $array = array( 'enabled' => true, 'name' => $array );
@@ -91,8 +96,10 @@
91 96 add_query_arg(
92 97 array(
93 98 'type' => $type,
94 99 'vpage' => false,
100 + 'vaction' => false,
101 + 's' => false,
95 102 )
96 103 )
97 104 ) . '">';
98 105 if ( ! $array['enabled'] ) {
@@ -97,11 +104,11 @@
97 104 ) . '">';
98 105 if ( ! $array['enabled'] ) {
99 106 $link = "<a class=' visualizer-pro-only' href='" . Visualizer_Plugin::PRO_TEASER_URL . "' target='_blank'>";
100 107 }
101 - echo '<li class="visualizer-list-item all">';
102 - if ( $type == $this->type ) {
103 - echo '<a class=" current" href="', esc_url( add_query_arg( 'vpage', false ) ), '">';
108 + echo '<li class="visualizer-list-item ' . esc_attr( $this->type ) . '">';
109 + if ( $type === $this->type ) {
110 + echo '<a class="current" href="', esc_url( add_query_arg( 'vpage', false ) ), '">';
104 111 echo $label;
105 112 echo '</a>';
106 113 } else {
107 114 echo $link;
@@ -110,26 +117,37 @@
110 117 }
111 118 echo ' | </li>';
112 119 }
113 120 echo '</ul>';
121 +
114 122 echo '<form action="" method="get"><p id="visualizer-search" class="search-box">
115 - <input type="search" name="s" value="' . $filterBy . '">
123 + <input type="search" placeholder="' . __( 'Enter title', 'visualizer' ) . '" name="s" value="' . $filterBy . '">
116 124 <input type="hidden" name="page" value="visualizer">
117 - <input type="submit" id="search-submit" class="button button-secondary" value="' . esc_attr__( 'Search', 'visualizer' ) . '">
125 + <button type="submit" id="search-submit" title="' . __( 'Search', 'visualizer' ) . '"><i class="dashicons dashicons-search"></i></button>
118 126 </p> </form>';
127 +
119 128 echo '</div>';
120 129 echo '<div id="visualizer-content-wrapper">';
121 130 if ( ! empty( $this->charts ) ) {
122 131 echo '<div id="visualizer-library" class="visualizer-clearfix">';
132 + $count = 0;
123 133 foreach ( $this->charts as $placeholder_id => $chart ) {
124 134 $this->_renderChartBox( $placeholder_id, $chart['id'] );
135 + // show the sidebar after the first 3 charts.
136 + if ( $count++ === 2 ) {
137 + $this->_renderSidebar();
138 + }
125 139 }
140 + // show the sidebar if there are less than 3 charts.
141 + if ( $count < 3 ) {
142 + $this->_renderSidebar();
143 + }
126 144 echo '</div>';
127 145 } else {
128 146 echo '<div id="visualizer-library" class="visualizer-clearfix">';
129 147 echo '<div class="visualizer-chart">';
130 148 echo '<div class="visualizer-chart-canvas visualizer-nochart-canvas">';
131 - echo '<div class="visualizer-notfound">', esc_html__( 'No charts found', 'visualizer' ), '</div>';
149 + echo '<div class="visualizer-notfound">', esc_html__( 'No charts found', 'visualizer' ), '<p><h2><a href="javascript:;" class="add-new-h2 add-new-chart">', esc_html__( 'Add New', 'visualizer' ), '</a></h2></p></div>';
132 150 echo '</div>';
133 151 echo '<div class="visualizer-chart-footer visualizer-clearfix">';
134 152 echo '<span class="visualizer-chart-action visualizer-nochart-delete"></span>';
135 153 echo '<span class="visualizer-chart-action visualizer-nochart-clone"></span>';
@@ -139,11 +157,11 @@
139 157 echo '&nbsp;[visualizer]&nbsp;';
140 158 echo '</span>';
141 159 echo '</div>';
142 160 echo '</div>';
161 + $this->_renderSidebar();
143 162 echo '</div>';
144 163 }
145 - $this->_renderSidebar();
146 164 echo '</div>';
147 165 if ( is_array( $this->pagination ) ) {
148 166 echo '<ul class=" subsubsub">';
149 167 foreach ( $this->pagination as $page ) {
@@ -168,8 +186,16 @@
168 186 $title = '#' . $chart_id;
169 187 if ( ! empty( $settings[0]['title'] ) ) {
170 188 $title = $settings[0]['title'];
171 189 }
190 + // for ChartJS, title is an array.
191 + if ( is_array( $title ) && isset( $title['text'] ) ) {
192 + $title = $title['text'];
193 + }
194 + if ( empty( $title ) ) {
195 + $title = '#' . $chart_id;
196 + }
197 +
172 198 $ajax_url = admin_url( 'admin-ajax.php' );
173 199 $delete_url = add_query_arg(
174 200 array(
175 201 'action' => Visualizer_Plugin::ACTION_DELETE_CHART,
@@ -194,8 +220,15 @@
194 220 'security' => wp_create_nonce( Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION ),
195 221 ),
196 222 admin_url( 'admin-ajax.php' )
197 223 );
224 +
225 + $chart_status = array( 'date' => get_the_modified_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $chart_id ), 'error' => get_post_meta( $chart_id, Visualizer_Plugin::CF_ERROR, true ), 'icon' => 'dashicons-yes-alt', 'title' => '' );
226 + if ( ! empty( $chart_status['error'] ) ) {
227 + $chart_status['icon'] = 'error dashicons-dismiss';
228 + $chart_status['title'] = __( 'Click to view the error', 'visualizer' );
229 + }
230 +
198 231 echo '<div class="visualizer-chart"><div class="visualizer-chart-title">', esc_html( $title ), '</div>';
199 232 echo '<div id="', $placeholder_id, '" class="visualizer-chart-canvas">';
200 233 echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
201 234 echo '</div>';
@@ -206,8 +239,9 @@
206 239 echo '<a class="visualizer-chart-action visualizer-chart-export" href="javascript:;" title="', esc_attr__( 'Export', 'visualizer' ), '" data-chart="', $export_link, '"></a>';
207 240 echo '<span class="visualizer-chart-shortcode" title="', esc_attr__( 'Click to select', 'visualizer' ), '">';
208 241 echo '&nbsp;[visualizer id=&quot;', $chart_id, '&quot;]&nbsp;';
209 242 echo '</span>';
243 + echo '<hr><div class="visualizer-chart-status"><span class="visualizer-date" title="' . __( 'Last Updated', 'visualizer' ) . '">' . $chart_status['date'] . '</span><span class="visualizer-error"><i class="dashicons ' . $chart_status['icon'] . '" data-viz-error="' . esc_attr( str_replace( '"', "'", $chart_status['error'] ) ) . '" title="' . esc_attr( $chart_status['title'] ) . '"></i></span></div>';
210 244 echo '</div>';
211 245 echo '</div>';
212 246 }
213 247
@@ -214,19 +248,23 @@
214 248 /**
215 249 * Render sidebar.
216 250 */
217 251 private function _renderSidebar() {
218 - if ( ! VISUALIZER_PRO ) {
252 + if ( ! Visualizer_Module::is_pro() ) {
219 253 echo '<div id="visualizer-sidebar">';
220 254 echo '<div class="visualizer-sidebar-box">';
221 - echo '<h3>' . __( 'Gain more editing power', 'visualizer' ) . '</h3><ul>';
255 + echo '<h3>' . __( 'Discover the power of PRO!', 'visualizer' ) . '</h3><ul>';
222 256 echo '<li>' . __( 'Spreadsheet like editor', 'visualizer' ) . '</li>';
223 257 echo '<li>' . __( 'Import from other charts', 'visualizer' ) . '</li>';
258 + echo '<li>' . __( 'Use database query to create charts', 'visualizer' ) . '</li>';
259 + echo '<li>' . __( 'Create charts from WordPress tables', 'visualizer' ) . '</li>';
224 260 echo '<li>' . __( 'Frontend editor', 'visualizer' ) . '</li>';
225 261 echo '<li>' . __( 'Private charts', 'visualizer' ) . '</li>';
226 262 echo '<li>' . __( 'Auto-sync with online files', 'visualizer' ) . '</li>';
227 - echo '<li>' . __( '3 more chart types', 'visualizer' ) . '</li></ul>';
228 - echo '<a href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank" class="button button-primary">' . __( 'View more features', 'visualizer' ) . '</a>';
263 + echo '<li>' . __( '6 more chart types', 'visualizer' ) . '</li></ul>';
264 + echo '<p><a href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank" class="button button-primary">' . __( 'View more features', 'visualizer' ) . '</a></p>';
265 + echo '<p style="background-color: #0073aac7; color: #ffffff; padding: 2px; font-weight: bold;">' . __( 'We offer a 30-day no-questions-asked money back guarantee!', 'visualizer' ) . '</p>';
266 + echo '<p><a href="' . VISUALIZER_SURVEY . '" target="_blank" class="">' . __( 'Don\'t see the features you need? Help us improve!', 'visualizer' ) . '</a></p>';
229 267 echo '</div>';
230 268 echo '</div>';
231 269 }
232 270 }