GravityView  2.1.1
The best, easiest way to display Gravity Forms entries on your website.
class-admin-welcome.php
Go to the documentation of this file.
1 <?php
2 /**
3  * Welcome Page Class
4  *
5  * @package GravityView
6  * @author Zack Katz <zack@gravityview.co>
7  * @link https://gravityview.co
8  * @copyright Copyright 2014, Katz Web Services, Inc.
9  *
10  * @since 1.0.0
11  */
12 
13 // Exit if accessed directly
14 if ( ! defined( 'ABSPATH' ) ) exit;
15 
16 /**
17  * GravityView_Welcome Class
18  *
19  * A general class for About page.
20  *
21  * @since 1.0
22  */
24 
25  /**
26  * @var string The capability users should have to view the page
27  */
28  public $minimum_capability = 'gravityview_getting_started';
29 
30  /**
31  * Get things started
32  *
33  * @since 1.0
34  */
35  public function __construct() {
36  add_action( 'admin_menu', array( $this, 'admin_menus'), 200 );
37  add_action( 'admin_head', array( $this, 'admin_head' ) );
38  add_action( 'admin_init', array( $this, 'welcome' ) );
39  add_filter( 'gravityview_is_admin_page', array( $this, 'is_dashboard_page'), 10, 2 );
40  }
41 
42  /**
43  * Register the Dashboard Pages which are later hidden but these pages
44  * are used to render the Welcome pages.
45  *
46  * @access public
47  * @since 1.0
48  * @return void
49  */
50  public function admin_menus() {
51 
52  // Add help page to GravityView menu
53  add_submenu_page(
54  'edit.php?post_type=gravityview',
55  __('GravityView: Getting Started', 'gravityview'),
56  __('Getting Started', 'gravityview'),
57  $this->minimum_capability,
58  'gv-getting-started',
59  array( $this, 'getting_started_screen' )
60  );
61 
62  // Changelog Page
63  add_submenu_page(
64  'edit.php?post_type=gravityview',
65  __( 'Changelog', 'gravityview' ),
66  __( 'Changelog', 'gravityview' ),
67  $this->minimum_capability,
68  'gv-changelog',
69  array( $this, 'changelog_screen' )
70  );
71 
72  // Credits Page
73  add_submenu_page(
74  'edit.php?post_type=gravityview',
75  __( 'Credits', 'gravityview' ),
76  __( 'Credits', 'gravityview' ),
77  $this->minimum_capability,
78  'gv-credits',
79  array( $this, 'credits_screen' )
80  );
81 
82  }
83 
84  /**
85  * Is this page a GV dashboard page?
86  *
87  * @return boolean $is_page True: yep; false: nope
88  */
89  public function is_dashboard_page($is_page = false, $hook = NULL) {
90  global $plugin_page;
91 
92  if($is_page) { return $is_page; }
93 
94  return in_array( $plugin_page, array( 'gv-about', 'gv-credits', 'gv-getting-started' ) );
95  }
96 
97  /**
98  * Hide Individual Dashboard Pages
99  *
100  * @access public
101  * @since 1.0
102  * @return void
103  */
104  public function admin_head() {
105  global $plugin_page;
106 
107  remove_submenu_page( 'edit.php?post_type=gravityview', 'gv-credits' );
108  remove_submenu_page( 'edit.php?post_type=gravityview', 'gv-changelog' );
109 
110  if( !$this->is_dashboard_page() ) { return; }
111 
112  ?>
113  <style type="text/css" media="screen" xmlns="http://www.w3.org/1999/html">
114  /*<![CDATA[*/
115  .update-nag { display: none; }
116  /*]]>*/
117  </style>
118  <?php
119  }
120 
121  /**
122  * Navigation tabs
123  *
124  * @access public
125  * @since 1.0
126  * @return void
127  */
128  public function tabs() {
129  global $plugin_page;
130 
131  // Don't fetch -beta, etc.
132  list( $display_version ) = explode( '-', GravityView_Plugin::version );
133 
134  $selected = !empty( $plugin_page ) ? $plugin_page : 'gv-getting-started';
135 
136  echo gravityview_get_floaty( 132 );
137  ?>
138 
139  <h1><?php printf( esc_html__( 'Welcome to GravityView %s', 'gravityview' ), $display_version ); ?></h1>
140  <div class="about-text"><?php esc_html_e( 'Thank you for installing GravityView. Beautifully display your Gravity Forms entries.', 'gravityview' ); ?></div>
141 
142  <h2 class="nav-tab-wrapper clear">
143  <a class="nav-tab <?php echo $selected == 'gv-getting-started' ? 'nav-tab-active' : ''; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'gv-getting-started', 'post_type' => 'gravityview'), 'edit.php' ) ) ); ?>">
144  <?php _e( "Getting Started", 'gravityview' ); ?>
145  </a>
146  <a class="nav-tab <?php echo $selected == 'gv-changelog' ? 'nav-tab-active' : ''; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'gv-changelog', 'post_type' => 'gravityview'), 'edit.php' ) ) ); ?>">
147  <?php _e( "List of Changes", 'gravityview' ); ?>
148  </a>
149  <a class="nav-tab <?php echo $selected == 'gv-credits' ? 'nav-tab-active' : ''; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'gv-credits', 'post_type' => 'gravityview'), 'edit.php' ) ) ); ?>">
150  <?php _e( 'Credits', 'gravityview' ); ?>
151  </a>
152  </h2>
153  <?php
154  }
155 
156  /**
157  * Render About Screen
158  *
159  * @access public
160  * @since 1.0
161  * @return void
162  */
163  public function getting_started_screen() {
164  ?>
165  <div class="wrap about-wrap">
166  <?php $this->tabs(); ?>
167  </div>
168 
169  <div class="about-wrap">
170 
171  <h2 class="about-headline-callout">Configuring a View</h2>
172 
173  <div class="feature-video" style="text-align:center;">
174  <iframe height="315" src="https://www.youtube-nocookie.com/embed/WrXsZhqKRY8?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
175 
176  <p style="text-align:center; padding-top: 1em;"><a class="button button-primary button-hero" href="https://docs.gravityview.co/category/24-category">Read more: Setting Up Your First View</a></p>
177  </div>
178 
179  <div class="feature-section two-col">
180  <div class="col">
181  <h3>Create a View</h3>
182 
183  <ol class="ol-decimal">
184  <li>Go to <a href="<?php echo admin_url('post-new.php?post_type=gravityview'); ?>">Views &gt; New View</a></li>
185  <li>If you want to <strong>create a new form</strong>, click the "Use a Form Preset" button</li>
186  <li>If you want to <strong>use an existing form&rsquo;s entries</strong>, select from the dropdown.</li>
187  <li>Select the type of View you would like to create. There are two core types of Views: <strong>Table</strong> and <strong>Listing</strong>.
188  <ul class="ul-square">
189  <li><strong>Table Views</strong> output entries as tables; a grid of data.</li>
190  <li><strong>Listing Views</strong> display entries in a more visual layout.</li>
191  </ul>
192  </li>
193  <li>On the View Configuration metabox, click on the "+Add Field" button to add form fields to the active areas of your View. These are the fields that will be displayed in the frontend.</li>
194  </ol>
195  </div>
196  <div class="col">
197  <h4>What is a View?</h4>
198  <p>When a form is submitted in Gravity Forms, an entry is created. Without GravityView, Gravity Forms entries are visible only in the WordPress dashboard, and only to users with permission.</p>
199  <p>GravityView allows you to display entries on the front of your site. In GravityView, when you arrange the fields you want displayed and save the configuration, it's called a "View".</p>
200  </div>
201  </div>
202 
203  <hr />
204 
205  <div class="feature-section two-col">
206  <div class="col">
207  <h3>Embed Views in Posts &amp; Pages</h3>
208  <p>Views don&rsquo;t need to be embedded in a post or page, but you can if you want. Embed Views using the "Add View" button above your content editor.</p>
209  </div>
210  <div class="col">
211  <img src="<?php echo plugins_url( 'assets/images/screenshots/add-view-button.png', GRAVITYVIEW_FILE ); ?>" />
212  </div>
213  </div>
214 
215  <hr />
216 
217  <div class="feature-section two-col">
218  <div class="col">
219  <h3>Configure Multiple Entry, Single Entry, and Edit Entry Layouts</h3>
220 
221  <p>You can configure what fields are displayed in <strong>Multiple Entry</strong>, <strong>Single Entry</strong>, and <strong>Edit Entry</strong> modes. These can be configured by clicking on the tabs in "View Configuration."</p>
222 
223  <ul class="ul-disc">
224  <li>Click "+ Add Field" to add a field to a zone</li>
225  <li>Click the name of the field you want to display</li>
226  <li>Once added, fields can be dragged and dropped to be re-arranged. Hover over the field until you see a cursor with four arrows, then drag the field.</li>
227  <li>Click the <a href="#" style="text-decoration:none;"><i class="dashicons dashicons-admin-generic"></i></a> gear icon on each field to configure the <strong>Field Settings</strong></li>
228  </ul>
229  </div>
230  <div class="col">
231  <img src="<?php echo plugins_url( 'assets/images/screenshots/add-field.png', GRAVITYVIEW_FILE ); ?>" alt="Add a field dialog box" />
232  </div>
233  </div>
234  </div>
235  <?php
236  }
237 
238 
239  /**
240  * Render Changelog Screen
241  *
242  * @since 1.0.1
243  * @return void
244  */
245  public function changelog_screen() {
246 
247  ?>
248  <div class="wrap about-wrap">
249 
250  <?php $this->tabs(); ?>
251 
252  <div class="feature-section col two-col" style="margin:0 0 2em 0; padding: 0;">
253 
254  <div class="col col-1">
255  <div class="media-container"><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=gravityview&page=gv-admin-installer' ) ); ?>"><img alt="Admin installer of GravityView plugins &amp; extensions" src="<?php echo plugins_url( 'assets/images/screenshots/installer.png', GRAVITYVIEW_FILE ); ?>" style="border: none"></a></div>
256  <h4 class="higher">Admin Installer</h4>
257  <p>Download and manage all your GravityView plugins and extensions from one convenient place&mdash;you no longer need to download plugins from your GravityView Account page!</p>
258  <p><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=gravityview&page=gv-admin-installer' ) ); ?>" class="button button-primary button-large">Check out the Installer</a></p>
259  </div>
260  <div class="col col-2">
261  <div class="media-container"><img alt="Approval notifications" src="<?php echo plugins_url( 'assets/images/screenshots/approval-notifications.png', GRAVITYVIEW_FILE ); ?>" style="border: none"></div>
262  <h4 class="higher">Approval Notifications</h4>
263  <p>Notify users or administrators when entries have been approved or disapproved.</p>
264  <p><a href="https://docs.gravityview.co/article/488-notification-when-entry-approved" class="button button-primary button-large">Learn How to Set Up</a></p>
265  </div>
266  </div>
267 
268  <div class="changelog point-releases" style="border-bottom: 0">
269 
270  <div class="headline-feature" style="max-width: 100%">
271  <h2 style="border-bottom: 1px solid #ccc; padding-bottom: 1em; margin-bottom: 0; margin-top: 0"><?php esc_html_e( 'What&rsquo;s New', 'gravityview' ); ?></h2>
272  </div>
273 
274  <h3>2.1.1 on October 26, 2018</h3>
275 
276  <ul>
277  <li>Added: A "Connected Views" menu on the Gravity Forms Forms page - hover over a form to see the new Connected Views menu!</li>
278  <li>Fixed: Additional slashes being added to the custom date format for Date fields</li>
279  <li>Fixed: Quiz letter grade not updated after editing an entry that has Gravity Forms Quiz fields</li>
280  <li>Fixed: Single Entry screen is inaccessible when the category is part of a URL path (using the <code>%category%</code> tag in the site's Permalinks settings)</li>
281  <li>Fixed: Issue where GravityView CSS isn't loading in the Dashboard for some customers</li>
282  <li>Fixed: Display uploaded files using Gravity Forms' secure link URL format, if enabled</li>
283  </ul>
284 
285  <p><strong>Developer Updates:</strong></p>
286 
287  <ul>
288  <li>Fixed: Fixed an issue when using <a href="https://docs.gravityview.co/article/57-customizing-urls">custom entry slugs</a> where non-unique values across forms cause the entries to not be accessible</li>
289  <li>Added: <code>gravityview/template/table/use-legacy-style</code> filter to use the legacy Table layout stylesheet without any responsive layout styles (added in GravityView 2.1) - <a href="https://gist.github.com/zackkatz/45d869e096cd5114a87952d292116d3f">Here's code you can use</a></li>
290  <li>Added: <code>gravityview/view/can_render</code> filter to allow you to override whether a View can be rendered or not</li>
291  <li>Added: <code>gravityview/widgets/search/datepicker/format</code> filter to allow you to modify only the format used, rather than using the <code>gravityview_search_datepicker_class</code> filter</li>
292  <li>Fixed: Undefined index PHP warning in the GravityView Extensions screen</li>
293  <li>Fixed: Removed internal usage of deprecated GravityView functions</li>
294  <li>Limitation: "Enable lightbox for images" will not work on images when using Gravity Forms secure URL format. <a href="mailto:support@gravityview.co">Contact support</a> for a work-around, or use a <a href="https://docs.gravityview.co/article/277-using-the-foobox-lightbox-plugin-instead-of-the-default">different lightbox script</a>.</li>
295  </ul>
296 
297  <h3>2.1.0.2 &amp; 2.1.0.3 on September 28, 2018</h3>
298 
299  <ul>
300  <li>Fixed: Slashes being added to field quotes</li>
301  <li>Fixed: Images showing as links for File Upload fields</li>
302  </ul>
303 
304  <h3>2.1.0.1 on September 27, 2018</h3>
305 
306  <ul>
307  <li>Fixed: Responsive table layout labels showing sorting icon HTML</li>
308  <li>Fixed: Responsive table layout showing table footer</li>
309  </ul>
310 
311  <h2>2.1 on September 27, 2018</h2>
312 
313  <ul>
314  <li>Added: You can now send email notifications when an entry is approved, disapproved, or the approval status has changed. <a href="https://docs.gravityview.co/article/488-notification-when-entry-approved">Learn how</a></li>
315  <li>Added: Automatically un-approve an entry when it has been updated by an user without the ability to moderate entries</li>
316  <li>Added: Easy way to install GravityView Extensions and our stand-alone plugins <a href="https://docs.gravityview.co/article/489-managing-extensions">Learn how</a></li>
317  <li>Added: Enable CSV output for Views <a href="https://docs.gravityview.co/article/491-csv-export">Learn how</a></li>
318  <li>Added: A "Page Size" widget allows users to change the number of entries per page</li>
319  <li>Added: Support for displaying a single input value of a Chained Select field</li>
320  <li>Added: The Table layout is now mobile-responsive!</li>
321  <li>Improved: Added a shortcut to reset entry approval on the front-end of a View: "Option + Click" on the Entry Approval field</li>
322  <li>Fixed: Custom date format not working with the <code>{date_created}</code> Merge Tag</li>
323  <li>Fixed: Embedding a View inside an embedded entry didn't work</li>
324  <li>Fixed: "Link to entry" setting not working for File Upload fields</li>
325  <li>Fixed: Approval Status field not showing anything</li>
326  <li>Updated translations - thank you, translators!
327  <ul>
328  <li>Polish translated by <a href="https://www.transifex.com/user/profile/dariusz.zielonka/">@dariusz.zielonka</a></li>
329  <li>Russian translated by <a href="https://www.transifex.com/user/profile/awsswa59/">@awsswa59</a></li>
330  <li>Turkish translated by <a href="https://www.transifex.com/accounts/profile/suhakaralar/">@suhakaralar</a></li>
331  <li>Chinese translated by <a href="https://www.transifex.com/user/profile/michaeledi/">@michaeledi</a></li>
332  </ul></li>
333  </ul>
334 
335  <p><strong>Developer Notes:</strong></p>
336 
337  <ul>
338  <li>Added: Process shortcodes inside [gv<em>entry</em>link] shortcodes</li>
339  <li>Added: <code>gravityview/shortcodes/gv_entry_link/output</code> filter to modify output of the <code>[gv_entry_link]</code> shortcode</li>
340  <li>Added <code>gravityview/widget/page_size/settings</code> and <code>gravityview/widget/page_size/page_sizes</code> filters to modify new Page Size widget</li>
341  <li>Modified: Added <code>data-label</code> attributes to all Table layout cells to make responsive layout CSS-only</li>
342  <li>Modified: Added responsive CSS to the Table layout CSS ("table-view.css")</li>
343  <li>Improved: Reduced database lookups when using custom entry slugs</li>
344  <li>Introduced <code>\GV\View-&gt;can_render()</code> method to reduce code duplication</li>
345  <li>Fixed: Don't add <code>gvid</code> unless multiple Views embedded in a post</li>
346  <li>Fixed: PHP 5.3 warning in when using <code>array_combine()</code> on empty arrays</li>
347  <li>Fixed: Apply <code>addslashes</code> to View Configuration when saving, fixing <code>{date_created}</code> format</li>
348  <li>REST API: Allow setting parent post or page with the REST API request using <code>post_id={id}</code> (<a href="https://docs.gravityview.co/article/468-rest-api">learn more</a>)</li>
349  <li>REST API: Added <code>X-Item-Total</code> header and meta to REST API response</li>
350  </ul>
351 
352  <h3>2.0.14.1 on July 19, 2018</h3>
353 
354  <ul>
355  <li>Fixed: Potential XSS ("Cross Site Scripting") security issue. <strong>Please update.</strong></li>
356  <li>Fixed: GravityView styles weren't being loaded for some users</li>
357  </ul>
358 
359  <h3>2.0.14 on July 9, 2018</h3>
360 
361  <ul>
362  <li>Added: Allow filtering entries by Unapproved status in Gravity Forms</li>
363  <li>Added: Reset entry approval status by holding down Option/Alt when clicking entry approval icon</li>
364  <li>Fixed: Merge Tags not working in field Custom Labels</li>
365  <li>Fixed: Enable sorting by approval status all the time, not just when a form has an Approval field</li>
366  <li>Fixed: When a View is saved without a connected form, don't show "no longer exists" message</li>
367  <li>Fixed: Inline Edit plugin not updating properly when GravityView is active</li>
368  </ul>
369 
370  <p><strong>Developer Notes:</strong></p>
371 
372  <ul>
373  <li>Added: <code>gravityview/approve_entries/after_submission/default_status</code> filter to modify the default status of an entry as it is created.</li>
374  <li>Modified: No longer delete <code>is_approved</code> entry meta when updating entry status - leave the value to be <code>GravityView_Entry_Approval_Status::UNAPPROVED</code> (3)</li>
375  <li>Fixed: Allow for "in" and "not_in" comparisons when using <code>GravityView_GFFormsModel::is_value_match</code></li>
376  <li>Tweak: If "Search Mode" key is set, but there is no value, use "all"</li>
377  <li>Tweak: Reduced number of database queries when rendering a View</li>
378  </ul>
379 
380  <h3>2.0.13.1 on June 26, 2018</h3>
381 
382  <ul>
383  <li>Fixed: Custom Content fields not working with DIY Layout</li>
384  <li>Fixed: Error when displaying plugin updates on a single site of a Multisite installation</li>
385  </ul>
386 
387  <h3>2.0.13 on June 25, 2018</h3>
388 
389  <ul>
390  <li>Fixed: Custom Content fields not working with DIY Layout since 2.0.11</li>
391  <li>Fixed: Fatal error when migrating settings from (very) old versions of GravityView</li>
392  <li>Added: Code for Entry Notes to work properly with future version of DataTables</li>
393  </ul>
394 
395  <h3>2.0.12 on June 13, 2018</h3>
396 
397  <ul>
398  <li>Fixed: On the Plugins page, "Update now" not working for GravityView Premium Plugins, Views & Extensions</li>
399  <li>Fixed: Always show that plugin updates are available, even if a license is expired</li>
400  </ul>
401 
402  <h3>2.0.11 on June 12, 2018</h3>
403 
404  <ul>
405  <li>Added: Search for fields by name when adding fields to your View configuration (it's really great!)</li>
406  <li>Fixed: GravityView license details not saving when the license was activated (only when the Update Settings button was clicked)</li>
407  <li>Fixed: Entry filtering for single entries</li>
408  <li>Fixed: Per-user language setting not being used in WordPress 4.7 or newer</li>
409  </ul>
410 
411  <p><strong>Developer Notes</strong></p>
412 
413  <ul>
414  <li>Added: <code>\GV\View::get_joins()</code> method to fetch array of <code>\GV\Joins</code> connected with a View</li>
415  <li>Added: <code>\GV\View::get_joined_forms()</code> method to get array of <code>\GV\GF_Forms</code> connected with a View</li>
416  </ul>
417 
418 
419  <h3>2.0.10 on June 6, 2018</h3>
420 
421  <ul>
422  <li>Added: Search for fields by name when adding fields to your View configuration (it's really great!)</li>
423  <li>Fixed: Password-protected Views were showing "You are not allowed to view this content" instead of the password form</li>
424  <li>Fixed: When Map View is embedded, Search Bar pointed to View URL, not page URL</li>
425  </ul>
426 
427  <p style="text-align: center">
428  <a href="https://gravityview.co/changelog/" class="aligncenter button button-primary button-hero" style="margin: 0 auto; display: inline-block; text-transform: capitalize"><?php esc_html_e( 'View change history', 'gravityview' ); ?></a>
429  </p>
430 
431  <div class="clear"></div>
432  </div>
433 
434  </div>
435  <?php
436  }
437 
438  /**
439  * Render Credits Screen
440  *
441  * @access public
442  * @since 1.0
443  * @return void
444  */
445  public function credits_screen() { ?>
446  <div class="wrap about-wrap">
447 
448  <?php $this->tabs(); ?>
449  <p class="about-description"><?php _e( 'GravityView is brought to you by:', 'gravityview' ); ?></p>
450 
451  <style>
452  .feature-section h3 a {
453  text-decoration: none;
454  display: inline-block;
455  margin-left: .2em;
456  line-height: 1em;
457  }
458  </style>
459  <div class="feature-section col three-col">
460 
461  <div class="col">
462  <h3>Zack Katz <a href="https://twitter.com/zackkatz"><span class="dashicons dashicons-twitter" title="Follow Zack on Twitter"></span></a> <a href="https://katz.co" title="View Zack&rsquo;s website"><span class="dashicons dashicons-admin-site"></span></a></h3>
463  <h4 style="font-weight:0; margin-top:0">Project Lead &amp; Developer</h4>
464  <p><img style="float:left; margin: 0 15px 10px 0;" src="<?php echo plugins_url( 'assets/images/zack.jpg', GRAVITYVIEW_FILE ); ?>" width="94" height="94" />Zack has been developing integrations with Gravity Forms since 2009. He runs GravityView and lives with his wife (and cat) in <a href="https://wikipedia.org/wiki/Denver">Denver, Colorado</a>.</p>
465  </div>
466 
467  <div class="col">
468  <h3>Rafael Ehlers <a href="https://twitter.com/rafaehlers" title="Follow Rafael on Twitter"><span class="dashicons dashicons-twitter"></span></a> <a href="https://heropress.com/essays/journey-resilience/" title="View Rafael&rsquo;s WordPress Journey"><span class="dashicons dashicons-admin-site"></span></a></p></h3>
469  <h4 style="font-weight:0; margin-top:0">Project Manager, Support Lead &amp; Customer&nbsp;Advocate</h4>
470  <p><img style="margin: 0 15px 10px 0;" class="alignleft avatar" src="<?php echo plugins_url( 'assets/images/rafael.jpg', GRAVITYVIEW_FILE ); ?>" width="94" height="94" />Rafael helps guide GravityView development priorities and keep us on track. He&rsquo;s the face of our customer support and helps customers get the most out of the product. Rafael hails from <a href="https://wikipedia.org/wiki/Porto_Alegre">Porto Alegre, Brazil</a>.</p>
471  </div>
472 
473  <div class="col last-feature">
474  <h3>Gennady Kovshenin <a href="https://twitter.com/soulseekah" title="Follow Gennady on Twitter"><span class="dashicons dashicons-twitter"></span></a> <a href="https://codeseekah.com" title="View Gennady&rsquo;s Blog"><span class="dashicons dashicons-admin-site"></span></a></h3>
475  <h4 style="font-weight:0; margin-top:0">Core Developer</h4>
476  <p><img style="margin: 0 15px 10px 0;" class="alignleft avatar" src="<?php echo plugins_url( 'assets/images/gennady.jpg', GRAVITYVIEW_FILE ); ?>" width="94" height="94" />Gennady works on the GravityView core, improving everything behind the scenes. He is an active member of the WordPress community and loves exotic tea. Gennady lives and runs long distances in <a href="https://wikipedia.org/wiki/Saint_Petersburg" rel="external">St. Petersburg, Russia</a>.</p>
477  </div>
478 
479  <div class="col">
480  <h3>Vlad K.</h3>
481  <h4 style="font-weight:0; margin-top:0">Core Developer</h4>
482  <p><img style="margin: 0 15px 10px 0;" class="alignleft avatar" src="<?php echo plugins_url( 'assets/images/vlad.jpg', GRAVITYVIEW_FILE ); ?>" width="94" height="94" />Vlad, while being the &ldquo;new kid on the block&rdquo; at GravityView, is not new to WordPress, having previously worked on the top newsletter plugin. He&rsquo;s a full-stack developer who focuses on GravityView's user-facing code in the Dashboard and front end. Vlad comes from Russia and lives in Canada.</p>
483  </div>
484  </div>
485 
486  <hr class="clear" />
487 
488  <div class="feature-section">
489  <div>
490  <h2><?php esc_attr_e( 'Contributors', 'gravityview' ); ?></h2>
491 
492  <ul class="wp-people-group">
493  <li class="wp-person">Core &amp; Extension development by <a href="http://tinygod.pt" class="block">Luis Godinho</a> and <a href="https://codeseekah.com" class="block">Gennady Kovshenin</a></li>
494  <li class="wp-person">Bengali translation by <a href="https://www.transifex.com/accounts/profile/tareqhi/">@tareqhi</a></li>
495  <li class="wp-person">German translation by <a href="https://www.transifex.com/user/profile/hubert123456/">@hubert123456</a>, <a href="https://www.transifex.com/accounts/profile/seschwarz/">@seschwarz</a>, <a href="https://www.transifex.com/accounts/profile/abdmc/">@abdmc</a>, <a href="https://www.transifex.com/accounts/profile/deckerweb/">@deckerweb</a></li>
496  <li class="wp-person">Turkish translation by <a href="https://www.transifex.com/accounts/profile/suhakaralar/">@suhakaralar</a></li>
497  <li class="wp-person">Dutch translation by <a href="https://www.transifex.com/accounts/profile/leooosterloo/">@leooosterloo</a>, <a href="https://www.transifex.com/accounts/profile/Weergeven/">@Weergeven</a>, and <a href="https://www.transifex.com/accounts/profile/erikvanbeek/">@erikvanbeek</a>, and <a href="https://www.transifex.com/user/profile/SilverXp/">Thom (@SilverXp)</a></li>
498  <li class="wp-person">Hungarian translation by <a href="https://www.transifex.com/accounts/profile/dbalage/">@dbalage</a> and <a href="https://www.transifex.com/accounts/profile/Darqebus/">@Darqebus</a></li>
499  <li class="wp-person">Italian translation by <a href="https://www.transifex.com/accounts/profile/Lurtz/">@Lurtz</a> and <a href="https://www.transifex.com/accounts/profile/ClaraDiGennaro/">@ClaraDiGennaro</a></li>
500  <li class="wp-person">French translation by <a href="https://www.transifex.com/accounts/profile/franckt/">@franckt</a> and <a href="https://www.transifex.com/accounts/profile/Newbdev/">@Newbdev</a></li>
501  <li class="wp-person">Portuguese translation by <a href="https://www.transifex.com/accounts/profile/luistinygod/">@luistinygod</a>, <a href="https://www.transifex.com/accounts/profile/marlosvinicius.info/">@marlosvinicius</a>, and <a href="https://www.transifex.com/user/profile/rafaehlers/">@rafaehlers</a></li>
502  <li class="wp-person">Romanian translation by <a href="https://www.transifex.com/accounts/profile/ArianServ/">@ArianServ</a></li>
503  <li class="wp-person">Finnish translation by <a href="https://www.transifex.com/accounts/profile/harjuja/">@harjuja</a></li>
504  <li class="wp-person">Spanish translation by <a href="https://www.transifex.com/accounts/profile/jorgepelaez/">@jorgepelaez</a>, <a href="https://www.transifex.com/accounts/profile/luisdiazvenero/">@luisdiazvenero</a>, <a href="https://www.transifex.com/accounts/profile/josemv/">@josemv</a>, <a href="https://www.transifex.com/accounts/profile/janolima/">@janolima</a> and <a href="https://www.transifex.com/accounts/profile/matrixmercury/">@matrixmercury</a>, <a href="https://www.transifex.com/user/profile/jplobaton/">@jplobaton</a></li>
505  <li class="wp-person">Swedish translation by <a href="https://www.transifex.com/accounts/profile/adamrehal/">@adamrehal</a></li>
506  <li class="wp-person">Indonesian translation by <a href="https://www.transifex.com/accounts/profile/sariyanta/">@sariyanta</a></li>
507  <li class="wp-person">Norwegian translation by <a href="https://www.transifex.com/accounts/profile/aleksanderespegard/">@aleksanderespegard</a></li>
508  <li class="wp-person">Danish translation by <a href="https://www.transifex.com/accounts/profile/jaegerbo/">@jaegerbo</a></li>
509  <li class="wp-person">Chinese translation by <a href="https://www.transifex.com/user/profile/michaeledi/">@michaeledi</a></li>
510  <li class="wp-person">Persian translation by <a href="https://www.transifex.com/user/profile/azadmojtaba/">@azadmojtaba</a>, <a href="https://www.transifex.com/user/profile/amirbe/">@amirbe</a>, <a href="https://www.transifex.com/user/profile/Moein.Rm/">@Moein.Rm</a></li>
511  <li class="wp-person">Russian translation by <a href="https://www.transifex.com/user/profile/gkovaleff/">@gkovaleff</a>, <a href="https://www.transifex.com/user/profile/awsswa59/">@awsswa59</a></li>
512  <li class="wp-person">Polish translation by <a href="https://www.transifex.com/user/profile/dariusz.zielonka/">@dariusz.zielonka</a></li>
513  <li class="wp-person">Code contributions by <a href="https://github.com/ryanduff">@ryanduff</a>, <a href="https://github.com/dmlinn">@dmlinn</a>, <a href="https://github.com/mgratch">@mgratch</a>, <a href="https://github.com/ViewFromTheBox">@ViewFromTheBox</a>, <a href="https://github.com/stevehenty">@stevehenty</a>, <a href="https://github.com/naomicbush">@naomicbush</a>, and <a href="https://github.com/mrcasual">@mrcasual</a></li>
514  </ul>
515 
516  <h4><?php esc_attr_e( 'Want to contribute?', 'gravityview' ); ?></h4>
517  <p><?php echo sprintf( esc_attr__( 'If you want to contribute to the code, %syou can on Github%s. If your contributions are accepted, you will be thanked here.', 'gravityview'), '<a href="https://github.com/katzwebservices/GravityView">', '</a>' ); ?></p>
518  </div>
519  </div>
520 
521  <hr class="clear" />
522 
523  <div class="changelog">
524 
525  <h4>Thanks to the following open-source software:</h4>
526 
527  <ul>
528  <li><a href="https://datatables.net/">DataTables</a> - amazing tool for table data display. Many thanks!</li>
529  <li><a href="https://github.com/10up/flexibility">Flexibility</a> - Adds support for CSS flexbox to Internet Explorer 8 &amp; 9</li>
530  <li><a href="https://github.com/GaryJones/Gamajo-Template-Loader">Gamajo Template Loader</a> - makes it easy to load template files with user overrides</li>
531  <li><a href="https://github.com/carhartl/jquery-cookie">jQuery Cookie plugin</a> - Access and store cookie values with jQuery</li>
532  <li><a href="https://gravityview.co/gravityforms">Gravity Forms</a> - If Gravity Forms weren't such a great plugin, GravityView wouldn't exist!</li>
533  <li>GravityView uses icons made by Freepik, Adam Whitcroft, Amit Jakhu, Zurb, Scott de Jonge, Yannick, Picol, Icomoon, TutsPlus, Dave Gandy, SimpleIcon from <a href="https://www.flaticon.com" title="Flaticon">www.flaticon.com</a></li>
534  <li>GravityView uses free vector art by <a href="https://www.vecteezy.com">vecteezy.com</a></li>
535  <li><a href="https://github.com/jnicol/standalone-phpenkoder">PHPEnkoder</a> script encodes the email addresses.</li>
536  <li>The Duplicate View functionality is based on the excellent <a href="https://lopo.it/duplicate-post-plugin/">Duplicate Post plugin</a> by Enrico Battocchi</li>
537  <li>Browser testing by <a href="https://www.browserstack.com">BrowserStack</a></li>
538  <li><a href="https://easydigitaldownloads.com/downloads/software-licensing/">Easy Digital Downloads</a> makes auto-upgrades possible</li>
539  </ul>
540 
541  </div>
542 
543  </div>
544  <?php
545  }
546 
547 
548  /**
549  * Sends user to the Welcome page on first activation of GravityView as well as each
550  * time GravityView is upgraded to a new version
551  *
552  * @access public
553  * @since 1.0
554  * @return void
555  */
556  public function welcome() {
557  global $plugin_page;
558 
559  // Bail if we're just editing the plugin
560  if( $plugin_page === 'plugin-editor.php' ) { return; }
561 
562  // Bail if no activation redirect
563  if ( ! get_transient( '_gv_activation_redirect' ) ) { return; }
564 
565  // Delete the redirect transient
566  delete_transient( '_gv_activation_redirect' );
567 
568  $upgrade = get_option( 'gv_version_upgraded_from' );
569 
570  // Don't do anything if they've already seen the new version info
571  if( $upgrade === GravityView_Plugin::version ) {
572  return;
573  }
574 
575  // Add "Upgraded From" Option
576  update_option( 'gv_version_upgraded_from', GravityView_Plugin::version );
577 
578  // Bail if activating from network, or bulk
579  if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { return; }
580 
581  // First time install
582  if( ! $upgrade ) {
583  wp_safe_redirect( admin_url( 'edit.php?post_type=gravityview&page=gv-getting-started' ) ); exit;
584  }
585  // Update
586  else {
587  wp_safe_redirect( admin_url( 'edit.php?post_type=gravityview&page=gv-changelog' ) ); exit;
588  }
589  }
590 }
all()
Get all the settings.
static get_joins( $post)
Get joins associated with a view.
admin_head()
Hide Individual Dashboard Pages.
gravityview_get_floaty( $height=87, $css_class=null)
Get an image of our intrepid explorer friend.
welcome()
Sends user to the Welcome page on first activation of GravityView as well as each time GravityView is...
gravityview()
Definition: _stubs.php:26
getting_started_screen()
Render About Screen.
styles()
Register styles in the app admin page.
__construct()
Get things started.
admin_menus()
Register the Dashboard Pages which are later hidden but these pages are used to render the Welcome pa...
new GravityView_Welcome
static get_joined_forms( $post_id=0)
Get joined forms associated with a view.
GravityView_Welcome Class.
scale description ul
If this file is called directly, abort.
gv_entry_link( $entry, $post_id=NULL)
Definition: class-api.php:775
is_dashboard_page($is_page=false, $hook=NULL)
Is this page a GV dashboard page?
tabs()
Navigation tabs.