PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.3.4
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.3.4
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 3.10.4 All 148 releases
← All changes | classes/Visualizer/Render/Library.php +48 -15 3.0.53.3.4 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>';
@@ -77,10 +80,13 @@
77 80 if ( isset( $_GET['s'] ) && strlen( $_GET['s'] ) > 0 ) {
78 81 $filterBy = filter_input( INPUT_GET, 's', FILTER_SANITIZE_STRING );
79 82 }
80 83 // Added by Ash/Upwork
84 + echo $this->custom_css;
81 85 echo '<div id="visualizer-types" class="visualizer-clearfix">';
82 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>';
83 89 foreach ( $this->types as $type => $array ) {
84 90 if ( ! is_array( $array ) ) {
85 91 // support for old pro
86 92 $array = array( 'enabled' => true, 'name' => $array );
@@ -90,8 +96,10 @@
90 96 add_query_arg(
91 97 array(
92 98 'type' => $type,
93 99 'vpage' => false,
100 + 'vaction' => false,
101 + 's' => false,
94 102 )
95 103 )
96 104 ) . '">';
97 105 if ( ! $array['enabled'] ) {
@@ -96,11 +104,11 @@
96 104 ) . '">';
97 105 if ( ! $array['enabled'] ) {
98 106 $link = "<a class=' visualizer-pro-only' href='" . Visualizer_Plugin::PRO_TEASER_URL . "' target='_blank'>";
99 107 }
100 - echo '<li class="visualizer-list-item all">';
101 - if ( $type == $this->type ) {
102 - 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 ) ), '">';
103 111 echo $label;
104 112 echo '</a>';
105 113 } else {
106 114 echo $link;
@@ -110,25 +118,35 @@
110 118 echo ' | </li>';
111 119 }
112 120 echo '</ul>';
113 121 echo '<form action="" method="get"><p id="visualizer-search" class="search-box">
114 - <input type="search" name="s" value="' . $filterBy . '">
122 + <input type="search" placeholder="' . __( 'Enter title', 'visualizer' ) . '" name="s" value="' . $filterBy . '">
115 123 <input type="hidden" name="page" value="visualizer">
116 - <input type="submit" id="search-submit" class="button button-secondary" value="' . esc_attr__( 'Search', 'visualizer' ) . '">
124 + <button type="submit" id="search-submit" title="' . __( 'Search', 'visualizer' ) . '"><i class="dashicons dashicons-search"></i></button>
125 + <button type="button" class="add-new-chart" title="' . __( 'Add New', 'visualizer' ) . '"><i class="dashicons dashicons-plus-alt"></i></button>
117 126 </p> </form>';
118 127 echo '</div>';
119 128 echo '<div id="visualizer-content-wrapper">';
120 129 if ( ! empty( $this->charts ) ) {
121 130 echo '<div id="visualizer-library" class="visualizer-clearfix">';
131 + $count = 0;
122 132 foreach ( $this->charts as $placeholder_id => $chart ) {
123 133 $this->_renderChartBox( $placeholder_id, $chart['id'] );
134 + // show the sidebar after the first 3 charts.
135 + if ( $count++ === 2 ) {
136 + $this->_renderSidebar();
137 + }
124 138 }
139 + // show the sidebar if there are less than 3 charts.
140 + if ( $count < 3 ) {
141 + $this->_renderSidebar();
142 + }
125 143 echo '</div>';
126 144 } else {
127 145 echo '<div id="visualizer-library" class="visualizer-clearfix">';
128 146 echo '<div class="visualizer-chart">';
129 147 echo '<div class="visualizer-chart-canvas visualizer-nochart-canvas">';
130 - echo '<div class="visualizer-notfound">', esc_html__( 'No charts found', 'visualizer' ), '</div>';
148 + 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>';
131 149 echo '</div>';
132 150 echo '<div class="visualizer-chart-footer visualizer-clearfix">';
133 151 echo '<span class="visualizer-chart-action visualizer-nochart-delete"></span>';
134 152 echo '<span class="visualizer-chart-action visualizer-nochart-clone"></span>';
@@ -138,11 +156,11 @@
138 156 echo '&nbsp;[visualizer]&nbsp;';
139 157 echo '</span>';
140 158 echo '</div>';
141 159 echo '</div>';
160 + $this->_renderSidebar();
142 161 echo '</div>';
143 162 }
144 - $this->_renderSidebar();
145 163 echo '</div>';
146 164 if ( is_array( $this->pagination ) ) {
147 165 echo '<ul class=" subsubsub">';
148 166 foreach ( $this->pagination as $page ) {
@@ -167,8 +185,16 @@
167 185 $title = '#' . $chart_id;
168 186 if ( ! empty( $settings[0]['title'] ) ) {
169 187 $title = $settings[0]['title'];
170 188 }
189 + // for ChartJS, title is an array.
190 + if ( is_array( $title ) && isset( $title['text'] ) ) {
191 + $title = $title['text'];
192 + }
193 + if ( empty( $title ) ) {
194 + $title = '#' . $chart_id;
195 + }
196 +
171 197 $ajax_url = admin_url( 'admin-ajax.php' );
172 198 $delete_url = add_query_arg(
173 199 array(
174 200 'action' => Visualizer_Plugin::ACTION_DELETE_CHART,
@@ -173,9 +199,10 @@
173 199 array(
174 200 'action' => Visualizer_Plugin::ACTION_DELETE_CHART,
175 201 'nonce' => wp_create_nonce(),
176 202 'chart' => $chart_id,
177 - ), $ajax_url
203 + ),
204 + $ajax_url
178 205 );
179 206 $clone_url = add_query_arg(
180 207 array(
181 208 'action' => Visualizer_Plugin::ACTION_CLONE_CHART,
@@ -181,9 +208,10 @@
181 208 'action' => Visualizer_Plugin::ACTION_CLONE_CHART,
182 209 'nonce' => wp_create_nonce( Visualizer_Plugin::ACTION_CLONE_CHART ),
183 210 'chart' => $chart_id,
184 211 'type' => $this->type,
185 - ), $ajax_url
212 + ),
213 + $ajax_url
186 214 );
187 215 $export_link = add_query_arg(
188 216 array(
189 217 'action' => Visualizer_Plugin::ACTION_EXPORT_DATA,
@@ -188,9 +216,10 @@
188 216 array(
189 217 'action' => Visualizer_Plugin::ACTION_EXPORT_DATA,
190 218 'chart' => $chart_id,
191 219 'security' => wp_create_nonce( Visualizer_Plugin::ACTION_EXPORT_DATA . Visualizer_Plugin::VERSION ),
192 - ), admin_url( 'admin-ajax.php' )
220 + ),
221 + admin_url( 'admin-ajax.php' )
193 222 );
194 223 echo '<div class="visualizer-chart"><div class="visualizer-chart-title">', esc_html( $title ), '</div>';
195 224 echo '<div id="', $placeholder_id, '" class="visualizer-chart-canvas">';
196 225 echo '<img src="', VISUALIZER_ABSURL, 'images/ajax-loader.gif" class="loader">';
@@ -210,19 +239,23 @@
210 239 /**
211 240 * Render sidebar.
212 241 */
213 242 private function _renderSidebar() {
214 - if ( ! VISUALIZER_PRO ) {
243 + if ( ! Visualizer_Module::is_pro() ) {
215 244 echo '<div id="visualizer-sidebar">';
216 245 echo '<div class="visualizer-sidebar-box">';
217 - echo '<h3>' . __( 'Gain more editing power', 'visualizer' ) . '</h3><ul>';
246 + echo '<h3>' . __( 'Discover the power of PRO!', 'visualizer' ) . '</h3><ul>';
218 247 echo '<li>' . __( 'Spreadsheet like editor', 'visualizer' ) . '</li>';
219 248 echo '<li>' . __( 'Import from other charts', 'visualizer' ) . '</li>';
249 + echo '<li>' . __( 'Use database query to create charts', 'visualizer' ) . '</li>';
250 + echo '<li>' . __( 'Create charts from WordPress tables', 'visualizer' ) . '</li>';
220 251 echo '<li>' . __( 'Frontend editor', 'visualizer' ) . '</li>';
221 252 echo '<li>' . __( 'Private charts', 'visualizer' ) . '</li>';
222 253 echo '<li>' . __( 'Auto-sync with online files', 'visualizer' ) . '</li>';
223 - echo '<li>' . __( '3 more chart types', 'visualizer' ) . '</li></ul>';
224 - echo '<a href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank" class="button button-primary">' . __( 'View more features', 'visualizer' ) . '</a>';
254 + echo '<li>' . __( '6 more chart types', 'visualizer' ) . '</li></ul>';
255 + echo '<p><a href="' . Visualizer_Plugin::PRO_TEASER_URL . '" target="_blank" class="button button-primary">' . __( 'View more features', 'visualizer' ) . '</a></p>';
256 + 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>';
257 + echo '<p><a href="' . VISUALIZER_SURVEY . '" target="_blank" class="">' . __( 'Don\'t see the features you need? Help us improve!', 'visualizer' ) . '</a></p>';
225 258 echo '</div>';
226 259 echo '</div>';
227 260 }
228 261 }