GravityView  1.22.6
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@katzwebservices.com>
7  * @license ToBeDefined
8  * @link http://www.katzwebservices.com
9  * @copyright Copyright 2014, Katz Web Services, Inc.
10  *
11  * @since 1.0.0
12  */
13 
14 // Exit if accessed directly
15 if ( ! defined( 'ABSPATH' ) ) exit;
16 
17 /**
18  * GravityView_Welcome Class
19  *
20  * A general class for About page.
21  *
22  * @since 1.0
23  */
25 
26  /**
27  * @var string The capability users should have to view the page
28  */
29  public $minimum_capability = 'gravityview_getting_started';
30 
31  /**
32  * Get things started
33  *
34  * @since 1.0
35  */
36  public function __construct() {
37  add_action( 'admin_menu', array( $this, 'admin_menus'), 200 );
38  add_action( 'admin_head', array( $this, 'admin_head' ) );
39  add_action( 'admin_init', array( $this, 'welcome' ) );
40  add_filter( 'gravityview_is_admin_page', array( $this, 'is_dashboard_page'), 10, 2 );
41  }
42 
43  /**
44  * Register the Dashboard Pages which are later hidden but these pages
45  * are used to render the Welcome pages.
46  *
47  * @access public
48  * @since 1.0
49  * @return void
50  */
51  public function admin_menus() {
52 
53  // Add help page to GravityView menu
54  add_submenu_page(
55  'edit.php?post_type=gravityview',
56  __('GravityView: Getting Started', 'gravityview'),
57  __('Getting Started', 'gravityview'),
58  $this->minimum_capability,
59  'gv-getting-started',
60  array( $this, 'getting_started_screen' )
61  );
62 
63  // Changelog Page
64  add_submenu_page(
65  'edit.php?post_type=gravityview',
66  __( 'Changelog', 'gravityview' ),
67  __( 'Changelog', 'gravityview' ),
68  $this->minimum_capability,
69  'gv-changelog',
70  array( $this, 'changelog_screen' )
71  );
72 
73  // Credits Page
74  add_submenu_page(
75  'edit.php?post_type=gravityview',
76  __( 'Credits', 'gravityview' ),
77  __( 'Credits', 'gravityview' ),
78  $this->minimum_capability,
79  'gv-credits',
80  array( $this, 'credits_screen' )
81  );
82 
83  }
84 
85  /**
86  * Is this page a GV dashboard page?
87  *
88  * @return boolean $is_page True: yep; false: nope
89  */
90  public function is_dashboard_page($is_page = false, $hook = NULL) {
91  global $plugin_page;
92 
93  if($is_page) { return $is_page; }
94 
95  return in_array( $plugin_page, array( 'gv-about', 'gv-credits', 'gv-getting-started' ) );
96  }
97 
98  /**
99  * Hide Individual Dashboard Pages
100  *
101  * @access public
102  * @since 1.0
103  * @return void
104  */
105  public function admin_head() {
106  global $plugin_page;
107 
108  remove_submenu_page( 'edit.php?post_type=gravityview', 'gv-credits' );
109  remove_submenu_page( 'edit.php?post_type=gravityview', 'gv-changelog' );
110 
111  if( !$this->is_dashboard_page() ) { return; }
112 
113  ?>
114  <style type="text/css" media="screen" xmlns="http://www.w3.org/1999/html">
115  /*<![CDATA[*/
116  .update-nag { display: none; }
117  /*]]>*/
118  </style>
119  <?php
120  }
121 
122  /**
123  * Navigation tabs
124  *
125  * @access public
126  * @since 1.0
127  * @return void
128  */
129  public function tabs() {
130  global $plugin_page;
131 
132  // Don't fetch -beta, etc.
133  list( $display_version ) = explode( '-', GravityView_Plugin::version );
134 
135  $selected = !empty( $plugin_page ) ? $plugin_page : 'gv-getting-started';
136 
137  echo gravityview_get_floaty( 132 );
138  ?>
139 
140  <h1><?php printf( esc_html__( 'Welcome to GravityView %s', 'gravityview' ), $display_version ); ?></h1>
141  <div class="about-text"><?php esc_html_e( 'Thank you for installing GravityView. Beautifully display your Gravity Forms entries.', 'gravityview' ); ?></div>
142 
143  <h2 class="nav-tab-wrapper clear">
144  <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' ) ) ); ?>">
145  <?php _e( "Getting Started", 'gravityview' ); ?>
146  </a>
147  <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' ) ) ); ?>">
148  <?php _e( "List of Changes", 'gravityview' ); ?>
149  </a>
150  <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' ) ) ); ?>">
151  <?php _e( 'Credits', 'gravityview' ); ?>
152  </a>
153  </h2>
154  <?php
155  }
156 
157  /**
158  * Render About Screen
159  *
160  * @access public
161  * @since 1.0
162  * @return void
163  */
164  public function getting_started_screen() {
165  ?>
166  <div class="wrap about-wrap">
167  <?php $this->tabs(); ?>
168  </div>
169 
170  <div class="about-wrap">
171 
172  <h2 class="about-headline-callout">Configuring a View</h2>
173 
174  <div class="feature-video" style="text-align:center;">
175  <iframe height="315" src="https://www.youtube-nocookie.com/embed/WrXsZhqKRY8?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
176 
177  <p style="text-align:center; padding-top: 1em;"><a class="button button-primary button-hero" href="http://docs.gravityview.co/category/24-category">Read more: Setting Up Your First View</a></p>
178  </div>
179 
180  <div class="feature-section two-col">
181  <div class="col">
182  <h3>Create a View</h3>
183 
184  <ol class="ol-decimal">
185  <li>Go to <a href="<?php echo admin_url('post-new.php?post_type=gravityview'); ?>">Views &gt; New View</a></li>
186  <li>If you want to <strong>create a new form</strong>, click the "Use a Form Preset" button</li>
187  <li>If you want to <strong>use an existing form&rsquo;s entries</strong>, select from the dropdown.</li>
188  <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>.
189  <ul class="ul-square">
190  <li><strong>Table Views</strong> output entries as tables; a grid of data.</li>
191  <li><strong>Listing Views</strong> display entries in a more visual layout.</li>
192  </ul>
193  </li>
194  <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>
195  </ol>
196  </div>
197  <div class="col">
198  <h4>What is a View?</h4>
199  <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>
200  <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>
201  </div>
202  </div>
203 
204  <hr />
205 
206  <div class="feature-section two-col">
207  <div class="col">
208  <h3>Embed Views in Posts &amp; Pages</h3>
209  <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>
210  </div>
211  <div class="col">
212  <img src="<?php echo plugins_url( 'assets/images/screenshots/add-view-button.png', GRAVITYVIEW_FILE ); ?>" />
213  </div>
214  </div>
215 
216  <hr />
217 
218  <div class="feature-section two-col">
219  <div class="col">
220  <h3>Configure Multiple Entry, Single Entry, and Edit Entry Layouts</h3>
221 
222  <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>
223 
224  <ul class="ul-disc">
225  <li>Click "+ Add Field" to add a field to a zone</li>
226  <li>Click the name of the field you want to display</li>
227  <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>
228  <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>
229  </ul>
230  </div>
231  <div class="col">
232  <img src="<?php echo plugins_url( 'assets/images/screenshots/add-field.png', GRAVITYVIEW_FILE ); ?>" alt="Add a field dialog box" />
233  </div>
234  </div>
235  </div>
236  <?php
237  }
238 
239 
240  /**
241  * Render Changelog Screen
242  *
243  * @since 1.0.1
244  * @return void
245  */
246  public function changelog_screen() {
247 
248  ?>
249  <div class="wrap about-wrap">
250 
251  <?php $this->tabs(); ?>
252 
253  <div class="changelog point-releases" style="border-bottom: 0">
254 
255  <div class="feature-section col two-col" style="margin:0; padding: 0;">
256  <div class="col col-1">
257  <div class="media-container"><iframe width="489" height="275" src="https://www.youtube-nocookie.com/embed/ANEiBP1tON0?rel=0&amp;showinfo=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div>
258  <h4 class="higher"><abbr title="Do It Yourself">DIY</abbr> Layout</h4>
259  <p>The View layout tool for designers &amp; developers. Included in Galactic licenses. DIY allows you to define your own CSS and HTML structure instead of needing to modify our predefined layouts to fit your needs.</p>
260  <p><a href="https://gravityview.co/extensions/diy-layout/?utm_source=admin-welcome&utm_medium=plugin&utm_campaign=whats-new&utm_content=button" class="button-primary button button-large">Learn More &amp; Get DIY Now</a></p>
261  </div>
262  <div class="col col-2">
263  <div class="media-container"><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=gravityview&page=gravityview_settings' ) ); ?>"><img alt="Beta!" src="<?php echo plugins_url( 'assets/images/screenshots/beta-program.jpg', GRAVITYVIEW_FILE ); ?>" style="border: none"></a></div>
264  <h4 class="higher">Beta Program</h4>
265  <p>We have a new Beta Program that gives you access to the latest pre-release versions of GravityView. We&rsquo;ve got big updates coming, and by opting-in, you&rsquo;ll get access early.</p>
266  <p><a href="<?php echo esc_url( admin_url( 'edit.php?post_type=gravityview&page=gravityview_settings' ) ); ?>" class="button button-primary button-large">Turn on &ldquo;Become a Beta Tester&rdquo; in Settings</a></p>
267  </div>
268  </div>
269 
270  <div class="headline-feature" style="max-width: 100%">
271  <h2 style="border-bottom: 1px solid #ccc; padding-bottom: 1em; margin-bottom: 0;"><?php esc_html_e( 'What&rsquo;s New', 'gravityview' ); ?></h2>
272  </div>
273 
274  <h3>1.22.6 on April 4, 2018</h3>
275 
276  <ul>
277  <li>Fixed: Line breaks being added to <code>[gvlogic]</code> shortcode output</li>
278  <li>Fixed: Gravity Forms 2.3 compatibility notice</li>
279  <li>Fixed: &quot;The ID is required.&quot; message when configuring the GravityView Search WordPress widget</li>
280  <li>Fixed: Slashes were being added to Post Image details</li>
281  </ul>
282 
283  <p><strong>Developer Updates:</strong></p>
284 
285  <ul>
286  <li>Added <code>gravityview/edit_entry/reveal_hidden_field</code> filter, which allows you to prevent Hidden fields from becoming Text fields in Edit Entry context</li>
287  <li>Added <code>gravityview/edit_entry/field_visibility</code> filter to set field visibility on Edit Entry (default is always &quot;visible&quot;)</li>
288  </ul>
289 
290 
291  <h3>1.22.5 on January 25, 2018</h3>
292 
293  <ul>
294  <li>Improves support for <a href="https://gravityview.co/extensions/diy-layout/">DIY Layout</a>, a layout for designers &amp; developers to take full advantage of GravityView</li>
295  <li>Tweak: Show &quot;Embed Shortcode&quot; helper if a View has widgets configured but not Fields</li>
296  <li>Fixed: Add Note support for Gravity Forms 2.3 (it&#39;s coming soon)</li>
297  <li>Fixed: <code>tabindex</code> not properly set for Update/Cancel/Delete buttons in Edit Entry</li>
298  <li>Fixed: Hide Yoast SEO Content &amp; SEO Analysis functionality when editing a View</li>
299  <li>Fixed: Line breaks were being added to Custom Content fields and widgets, even when &quot;Automatically add paragraphs to content&quot; wasn&#39;t checked</li>
300  </ul>
301 
302  <p><strong>Developer Updates:</strong></p>
303 
304  <ul>
305  <li>Add <code>$nl2br</code>, <code>$format</code>, <code>$aux_data</code> parameters to <code>GravityView_API::replace_variables()</code> to be consistent with <code>GFCommon::replace_variables()</code></li>
306  </ul>
307 
308  <h3>1.22.4?</h3>
309 
310  <p>Yes, we skipped a minor release (1.22.4 exists only in our hearts). Thanks for noticing!</p>
311 
312  <h3>1.22.3 on December 21, 2017</h3>
313 
314  <ul>
315  <li>Added: Support for displaying files uploaded using the Gravity Forms Dropbox Addon (thanks, @mgratch and @ViewFromTheBox!)</li>
316  <li>Added: Merge Tags now are replaced when in <code>[gvlogic]</code> shortcodes not in a View</li>
317  <li>Fixed: Filtering by date in Advanced Filters prevented single entries from being visible</li>
318  <li>Fixed: <code>gravityview/capabilities/allow_logged_out</code> filter wasn&#39;t living up to its name (allowing logged-out visitors to edit entries)</li>
319  </ul>
320 
321  <p><strong>Developer Updates:</strong></p>
322 
323  <ul>
324  <li>Modified: We&#39;re reverting changes made to Advanced Custom Field plugin compatibility</li>
325  <li>Added: <code>gravityview/fields/fileupload/file_path</code> filter in <code>class-gravityview-field-fileupload.php</code></li>
326  <li>Modified: Removed <code>!important</code> from the CSS height rule for the <code>.gv-notes .gv-note-add textarea</code> rule</li>
327  </ul>
328 
329  <h3>1.22.2 on December 7, 2017</h3>
330 
331  <ul>
332  <li>Fixed: Fatal error when running Ultimate Member 2.0 beta</li>
333  <li>Fixed: Issue deleting entries when Advanced Filter rules don&#39;t match</li>
334  <li>Fixed: Delete Entry messages not displaying when entry is deleted</li>
335  <li>Fixed: ACF shortcodes in WYSIWYG fields no longer processed since 1.22.1</li>
336  <li>Fixed: Fatal error when using old installations of Gravity Forms</li>
337  </ul>
338 
339  <p><strong>Developer Updates:</strong></p>
340 
341  <ul>
342  <li>Added: <code>gravityview/edit_entry/unset_hidden_field_values</code> filter to prevent deleting values for fields hidden by Conditional Logic</li>
343  </ul>
344 
345  <h3>1.22.1.1 on November 29, 2017</h3>
346 
347  <ul>
348  <li>Fixed: When displaying Email fields, PHP warning about <code>StandalonePHPEnkoder.php</code></li>
349  </ul>
350 
351  <h3>1.22.1 on November 29, 2017</h3>
352 
353  <ul>
354  <li>Moved &quot;Custom Content&quot; field to top of field picker, in what Rafael calls the &quot;Best idea of 2017 🏆&quot;</li>
355  <li>Added: When Gravity Forms 2.3 is released, support for &quot;Random&quot; entry order will be enabled</li>
356  <li>Fixed: Entry oEmbeds not working when using &quot;Plain&quot; URL formats to embed</li>
357  <li>Fixed: Only published Views showing in Gravity Forms &quot;Connected Views&quot; menu</li>
358  <li>Fixed: Deleting entries can cause entries to be displayed from a different View when Advanced Filters is activated and multiple Views are embedded on a page</li>
359  <li>Fixed: Infinite loop when using <code>[gravityview]</code> shortcode inside ACF fields</li>
360  </ul>
361 
362  <p><strong>Developer Updates:</strong></p>
363 
364  <ul>
365  <li>Added: <code>GravityView_HTML_Elements</code> class for generating commonly-used HTML elements</li>
366  <li>Added: Way to disable front-end cookies for our friends in Europe (<a href="https://gist.github.com/zackkatz/354a71dc47ffef072ed725706cf455ed">see code here</a>)</li>
367  <li>Added: <code>gravityview/metaboxes/data-source/before</code> and <code>gravityview/metaboxes/data-source/after</code> hooks</li>
368  <li>Added: Second <code>$args</code> param added to <code>gravityview_get_connected_views()</code> function</li>
369  <li>Modified: Pass fifth parameter <code>$input_type</code> to <code>GravityView_Template::assign_field_options</code> method</li>
370  </ul>
371 
372  <h3>1.22 on September 4, 2017</h3>
373 
374  <ul>
375  <li>Added: Support for Gravity Forms 2.3</li>
376  <li>Fixed: Inline Edit plugin not working when displaying a single entry</li>
377  <li>Fixed: Featured Entries plugin not adding correct CSS selector to the single entry container</li>
378  </ul>
379 
380  <p><strong>Developer Updates:</strong></p>
381 
382  <ul>
383  <li>Modified: Template files <code>list-header.php</code>, <code>list-single.php</code>, <code>table-header.php</code>, <code>table-single.php</code></li>
384  <li>Fixed: When <code>GRAVITYVIEW_LICENSE_KEY</code> constant is defined, it will always be used, and the license field will be disabled</li>
385  <li>Fixed: List View and Table View templates have more standardized CSS selectors for single &amp; multiple contexts (<a href="http://docs.gravityview.co/article/63-css-guide">Learn more</a>)</li>
386  <li>Fixed: Permalink issue when embedding a View on a page, then making it the site&#39;s Front Page</li>
387  <li>Fixed: Transient cache issues when invalidating cache</li>
388  <li>Fixed: <code>gv_empty()</code> now returns false for an array with all empty values</li>
389  <li>Fixed: Delay plugin compatibility checks until <code>plugins_loaded</code></li>
390  </ul>
391 
392  <h3>1.21.5.3 on July 24, 2017</h3>
393 
394  <ul>
395  <li>Fixed: For some field types, the value &quot;No&quot; would be interpreted as <code>false</code></li>
396  <li>Fixed: In Edit Entry, when editing a form that has a Post Custom Field field type—configured as checkboxes—file upload fields would not be saved</li>
397  <li>Fixed: If a form connected to a View is in the trash, there will be an error when editing the View</li>
398  <li>Fixed: Embedding single entries with WordPress 4.8</li>
399  <li>Fixed: Fatal error when using older version of WPML</li>
400  </ul>
401 
402 
403  <h3>1.21.5.2 on June 26, 2017</h3>
404 
405  <ul>
406  <li>Tweak: Improved plugin speed by reducing amount of information logged</li>
407  <li>Fixed: Duplicate descriptions on the settings screen</li>
408  <li>Fixed: Our &quot;No-Conflict Mode&quot; made the settings screen look bad. Yes, we recognize the irony.</li>
409  <li>Updated: Translations - thank you, translators!
410 
411  <ul>
412  <li>Turkish translation by <a href="https://www.transifex.com/accounts/profile/suhakaralar/">@suhakaralar</a></li>
413  <li>Dutch translations by Thom</li>
414  </ul></li>
415  </ul>
416 
417  <h3>1.21.5.1 on June 13, 2017</h3>
418 
419  <ul>
420  <li>Modified: We stopped allowing any HTML in Paragraph Text fields in 1.21.5, but this functionality was used by lots of people. We now use a different function to allow safe HTML by default.</li>
421  <li>Added: `gravityview/fields/textarea/allowed_kses` filter to modify the allowed HTML to be displayed.</li>
422  </ul>
423 
424 
425  <h3>1.21.5 on June 8, 2017</h3>
426 
427  <ul>
428  <li>Added: The <code>{current_post}</code> Merge Tag adds information about the current post. <a href="http://docs.gravityview.co/article/412-currentpost-merge-tag">Read more about it</a>.</li>
429  <li>Added: <code>gravityview/gvlogic/parse_atts/after</code> action to modify <code>[gvlogic]</code> shortcode attributes after it&#39;s been parsed</li>
430  <li>Added: A new setting to opt-in for access to the latest pre-release versions of GravityView (in <a href="<?php echo esc_url( admin_url( 'edit.php?post_type=gravityview&page=gravityview_settings' ) ); ?>">Views &gt; Settings)</a></li>
431  <li>Added: Support for Restrict Content Pro when in &quot;No-Conflict Mode&quot;</li>
432  <li>Fixed: Saving an entry could strip the entry creator information. Now, when the entry creator is not in the &quot;Change Entry Creator&quot; users list, we add them back in to the list.</li>
433  <li>Fixed: Potential security issue</li>
434  <li>Fixed: Multiple notifications could sometimes be sent when editing an entry in GravityView.</li>
435  <li>Fixed: Gravity Forms tooltip scripts being loaded admin-wide.</li>
436  </ul>
437 
438  <h3>1.21.4 on April 13, 2017</h3>
439 
440  <ul>
441  <li>Fixed: &quot;Enable sorting by column&quot; not visible when using table-based View Presets</li>
442  <li>Fixed: Error activating the plugin when Gravity Forms is not active</li>
443  <li>Fixed: Numeric sorting</li>
444  <li>Fixed: Compatibility issue with WPML 3.6.1 and lower</li>
445  <li>Tweak: When using <code>?cache</code> to disable entries caching, cached data is removed</li>
446  </ul>
447 
448  <h3>1.21.3 on April 4, 2017</h3>
449 
450  <ul>
451  <li>Fixed: Post Images stopped working in Edit Entry</li>
452  <li>Fixed: Conflict with our Social Sharing &amp; SEO Extension</li>
453  <li>Fixed: Unable to search for a value of <code>0</code></li>
454  <li>Fixed: Inaccurate search results when using the <code>search_field</code> and <code>search_value</code> settings in the <code>[gravityview]</code> shortcode
455 
456  <ul>
457  <li>The search mode will now always be set to <code>all</code> when using these settings</li>
458  </ul></li>
459  </ul>
460 
461  <p><strong>Developer Updates:</strong></p>
462 
463  <ul>
464  <li>We decided to not throw exceptions in the new <code>gravityview()</code> wrapper function. Instead, we will log errors via Gravity Forms logging.</li>
465  </ul>
466 
467 
468  <h3>1.21.2 on March 31, 2017</h3>
469 
470  <ul>
471  <li>Added: Support for embedding <code>[gravityview]</code> shortcodes in Advanced Custom Fields (ACF) fields</li>
472  <li>Fixed: PHP warnings and notices</li>
473  </ul>
474 
475 
476  <h3>1.21.1 on March 30, 2017</h3>
477 
478  <ul>
479  <li>Fixed: Advanced Filters no longer filtered 😕</li>
480  <li>Fixed: Fatal error when viewing Single Entry with a Single Entry Title setting that included Merge Tags</li>
481  <li>Fixed: Cache wasn&#39;t cleared when an entry was created using Gravity Forms API (thanks Steve with Gravity Flow!)</li>
482  </ul>
483 
484 
485  <h3>1.21 on March 29, 2017</h3>
486 
487  <ul>
488  <li>Fixed: Edit Entry compatibility with Gravity Forms 2.2</li>
489  <li>Fixed: Single Entry not accessible when filtering a View by Gravity Flow&#39;s &quot;Final Status&quot; field</li>
490  <li>Fixed: Needed to re-save permalink settings for Single Entry and Edit Entry to work</li>
491  <li>Fixed: Incorrect pagination calculations when passing <code>offset</code> via the <code>[gravityview]</code> shortcode</li>
492  </ul>
493 
494  <p><strong>Developer Updates:</strong></p>
495 
496  <ul>
497  <li>Modified: <code>GVCommon::check_entry_display()</code> now returns WP_Error instead of <code>false</code> when an error occurs. This allows for additional information to be passed.</li>
498  <li>Added: <code>gravityview/search-all-split-words</code> filter to change search behavior for the &quot;Search All&quot; search input. Default (<code>true</code>) converts words separated by spaces into separate search terms. <code>false</code> will search whole word.</li>
499  <li>Much progress has been made on the <code>gravityview()</code> wrapper function behind the scenes. Getting closer to parity all the time.</li>
500  </ul>
501 
502  <p style="text-align: center">
503  <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>
504  </p>
505 
506  <div class="clear"></div>
507  </div>
508 
509  </div>
510  <?php
511  }
512 
513  /**
514  * Render Credits Screen
515  *
516  * @access public
517  * @since 1.0
518  * @return void
519  */
520  public function credits_screen() { ?>
521  <div class="wrap about-wrap">
522 
523  <?php $this->tabs(); ?>
524  <p class="about-description"><?php _e( 'GravityView is brought to you by:', 'gravityview' ); ?></p>
525 
526  <style>
527  .feature-section h3 a {
528  text-decoration: none;
529  display: inline-block;
530  margin-left: .2em;
531  line-height: 1em;
532  }
533  </style>
534  <div class="feature-section col three-col">
535 
536  <div class="col">
537  <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>
538  <h4 style="font-weight:0; margin-top:0">Project Lead &amp; Developer</h4>
539  <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>
540  </div>
541 
542  <div class="col">
543  <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>
544  <h4 style="font-weight:0; margin-top:0">Project Manager, Support Lead &amp; Customer&nbsp;Advocate</h4>
545  <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>
546  </div>
547 
548  <div class="col last-feature">
549  <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>
550  <h4 style="font-weight:0; margin-top:0">Core Developer</h4>
551  <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/Magnitogorsk" rel="external">Magnitogorsk, Russia</a>.</p>
552  </div>
553  </div>
554 
555  <hr class="clear" />
556 
557  <div class="feature-section">
558  <div>
559  <h2><?php esc_attr_e( 'Contributors', 'gravityview' ); ?></h2>
560 
561  <ul class="wp-people-group">
562  <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>
563  <li class="wp-person">Bengali translation by <a href="https://www.transifex.com/accounts/profile/tareqhi/">@tareqhi</a></li>
564  <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>
565  <li class="wp-person">Turkish translation by <a href="https://www.transifex.com/accounts/profile/suhakaralar/">@suhakaralar</a></li>
566  <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>
567  <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>
568  <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>
569  <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>
570  <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>
571  <li class="wp-person">Romanian translation by <a href="https://www.transifex.com/accounts/profile/ArianServ/">@ArianServ</a></li>
572  <li class="wp-person">Finnish translation by <a href="https://www.transifex.com/accounts/profile/harjuja/">@harjuja</a></li>
573  <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></li>
574  <li class="wp-person">Swedish translation by <a href="https://www.transifex.com/accounts/profile/adamrehal/">@adamrehal</a></li>
575  <li class="wp-person">Indonesian translation by <a href="https://www.transifex.com/accounts/profile/sariyanta/">@sariyanta</a></li>
576  <li class="wp-person">Norwegian translation by <a href="https://www.transifex.com/accounts/profile/aleksanderespegard/">@aleksanderespegard</a></li>
577  <li class="wp-person">Danish translation by <a href="https://www.transifex.com/accounts/profile/jaegerbo/">@jaegerbo</a></li>
578  <li class="wp-person">Chinese translation by <a href="https://www.transifex.com/user/profile/michaeledi/">@michaeledi</a></li>
579  <li class="wp-person">Persian translation by <a href="https://www.transifex.com/user/profile/azadmojtaba/">@azadmojtaba</a></li>
580  <li class="wp-person">Russian translation by <a href="https://www.transifex.com/user/profile/gkovaleff/">@gkovaleff</a></li>
581  <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>, and <a href="https://github.com/stevehenty">@stevehenty</a></li>
582  </ul>
583 
584  <h4><?php esc_attr_e( 'Want to contribute?', 'gravityview' ); ?></h4>
585  <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>
586  </div>
587  </div>
588 
589  <hr class="clear" />
590 
591  <div class="changelog">
592 
593  <h4>Thanks to the following open-source software:</h4>
594 
595  <ul>
596  <li><a href="http://datatables.net/">DataTables</a> - amazing tool for table data display. Many thanks!</li>
597  <li><a href="https://github.com/10up/flexibility">Flexibility</a> - Adds support for CSS flexbox to Internet Explorer 8 &amp; 9</li>
598  <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>
599  <li><a href="https://github.com/carhartl/jquery-cookie">jQuery Cookie plugin</a> - Access and store cookie values with jQuery</li>
600  <li><a href="https://katz.si/gf">Gravity Forms</a> - If Gravity Forms weren't such a great plugin, GravityView wouldn't exist!</li>
601  <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="http://www.flaticon.com" title="Flaticon">www.flaticon.com</a></li>
602  <li>GravityView uses free vector art by <a href="https://www.vecteezy.com">vecteezy.com</a></li>
603  <li><a href="https://github.com/jnicol/standalone-phpenkoder">PHPEnkoder</a> script encodes the email addresses.</li>
604  <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>
605  <li>Browser testing by <a href="https://www.browserstack.com">BrowserStack</a></li>
606  <li><a href="https://easydigitaldownloads.com/downloads/software-licensing/">Easy Digital Downloads</a> makes auto-upgrades possible</li>
607  </ul>
608 
609  </div>
610 
611  </div>
612  <?php
613  }
614 
615 
616  /**
617  * Sends user to the Welcome page on first activation of GravityView as well as each
618  * time GravityView is upgraded to a new version
619  *
620  * @access public
621  * @since 1.0
622  * @return void
623  */
624  public function welcome() {
625  global $plugin_page;
626 
627  // Bail if we're just editing the plugin
628  if( $plugin_page === 'plugin-editor.php' ) { return; }
629 
630  // Bail if no activation redirect
631  if ( ! get_transient( '_gv_activation_redirect' ) ) { return; }
632 
633  // Delete the redirect transient
634  delete_transient( '_gv_activation_redirect' );
635 
636  $upgrade = get_option( 'gv_version_upgraded_from' );
637 
638  // Don't do anything if they've already seen the new version info
639  if( $upgrade === GravityView_Plugin::version ) {
640  return;
641  }
642 
643  // Add "Upgraded From" Option
644  update_option( 'gv_version_upgraded_from', GravityView_Plugin::version );
645 
646  // Bail if activating from network, or bulk
647  if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { return; }
648 
649  // First time install
650  if( ! $upgrade ) {
651  wp_safe_redirect( admin_url( 'edit.php?post_type=gravityview&page=gv-getting-started' ) ); exit;
652  }
653  // Update
654  else {
655  wp_safe_redirect( admin_url( 'edit.php?post_type=gravityview&page=gv-changelog' ) ); exit;
656  }
657  }
658 }
includes
admin_head()
Hide Individual Dashboard Pages.
scale description ul
getting_started_screen()
Render About Screen.
__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
GravityView_Welcome Class.
gravityview_get_floaty( $height=87)
Get an image of our intrepid explorer friend.
gravityview()
The main GravityView wrapper function.
is_dashboard_page($is_page=false, $hook=NULL)
Is this page a GV dashboard page?
tabs()
Navigation tabs.