WP Manifestindependent plugin directory
manifest / unclassified / gravity-lense

GravityLens releasesself-updates

Shareable spreadsheet views of Gravity Forms entries, with filtered links, inline editing, comment columns, and CSV/XLSX export.

by Guilamu · github.com/guilamu/gravity-lense · website

0stars
3release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/guilamu/gravity-lense/releases/download/v1.0.2/gravity-lens.zip

Ships its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.

Readme

GravityLens

Shareable spreadsheet views of Gravity Forms entries, with filtered links, inline editing, comment columns, and CSV/XLSX export.

Shareable Views

  • Generate tokenized share links for any Gravity Forms form.
  • Restrict a link to a subset of entries with a field filter, so reviewers only ever see the rows that concern them.
  • Require WordPress login per share when entries should stay behind authentication.
  • Keep public viewers focused on entries with a dedicated table layout and sticky navigation.

Editing And Review

  • Edit text, email, phone, number, website, hidden, URL, and textarea-style values inline.
  • Edit dropdown and radio fields inline with the same compact select-style control.
  • Add custom comment columns from the viewer and optionally share them across other links for the same form.
  • Keep file uploads, checkboxes, multiselects, and lists read-only, with checkbox and multiselect values collapsed into one pipe-delimited column.
  • Record every edit in a rolling Gravity Forms note holding the field label, old value, new value, share label, and source IP.

Export And Access

  • Export the share dataset to CSV or XLSX from the public viewer, honouring the share filter.
  • Load up to 500 entries client-side for fast search and sort on smaller forms.
  • Switch large forms to server-driven paging, search, and sorting automatically.

Key Features

  • Filtered Shares: Scope a link to the entries matching one field condition, editable without recreating the link.
  • Login Gates: Require authenticated WordPress access on a per-share basis.
  • Multilingual: Works with content in any language supported by Gravity Forms.
  • Translation-Ready: All user-facing strings are internationalized, with a French translation bundled.
  • Secure: Nonces, capability checks, REST permission callbacks, field allowlists, and per-entry filter enforcement.
  • GitHub Updates: Automatic updates from GitHub releases, with a WordPress-style View details modal.

Requirements

  • Gravity Forms 2.7 or higher
  • WordPress 6.4 or higher
  • PHP 8.0 or higher

Installation

  1. Upload the gravity-lens folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu in WordPress
  3. Make sure Gravity Forms is active, then open Forms → GravityLens
  4. Create a share link, optionally setting an expiry, access flags, and a filter
  5. Copy the generated URL and share it

FAQ

Does GravityLens work without Gravity Forms?

No. The plugin shows an admin notice and stops bootstrapping if Gravity Forms is inactive.

How do I restrict a link to part of a form?

Pick a field, an operator, and a value in the Filter block. The filter applies to the table, the export, and the per-entry edit route alike. It can be changed later from the share table, so a recurring review keeps one durable link. Administrative fields are offered here — filtering on a hidden grouping key is usually what you want.

Which field types can be edited inline?

Text-like fields, dropdowns, and radios. File uploads, checkboxes, multiselects, and list fields stay read-only.

Can I require users to log in before they open a share?

Yes. Each share can require a WordPress login; unauthenticated visitors are sent to the login screen.

Does GravityLens keep an audit trail for edits?

Yes. Each edit updates a rolling Gravity Forms note on the entry with the field label and id, old and new values, share label, and request IP.

Can comment columns be shared across links for the same form?

Yes. A comment column can stay local to one link or be shared with the other GravityLens links pointing at the same form.

Known Issues

  • None currently documented.

Limitations

  • Checkbox, multiselect, list, and file upload fields are read-only.
  • Administrative fields are never displayed in a share. They can still be used as a filter, which exposes nothing: the value is set by an administrator and the field is not rendered as a column.
  • On a filtered share holding more than 500 entries, the multi-column server search is disabled: Gravity Forms accepts a single filter mode per query, so the filter takes precedence and search runs client-side.

Troubleshooting

  • If the plugin menu does not appear, confirm Gravity Forms is active and the user has the gravityforms_edit_forms capability.
  • If share creation fails, verify the database user can create and write to the gl_shares table.
  • If a filter seems ignored, re-save it: a filter referencing a field that no longer exists on the form is dropped on validation.
  • If inline edits fail, check that REST requests reach WordPress and that the wp_rest nonce is present.
  • If GitHub updates do not appear, clear the gl_github_release transient or wait for the 12-hour cache window.

Project Structure

.
├── gravity-lens.php                    # Main plugin bootstrap and dependency checks
├── uninstall.php                       # Table and option cleanup on uninstall
├── README.md                           # Plugin documentation
├── assets
│   ├── gravity-lens-icon-wp.svg        # Admin menu and header icon
│   ├── css
│   │   ├── admin.css                   # Admin screen styles
│   │   └── viewer.css                  # Public viewer styles
│   └── js
│       ├── admin.js                    # Admin screen behaviour
│       └── viewer.js                   # Public viewer application logic
├── includes
│   ├── class-gl-activator.php          # Activation and schema upgrades
│   ├── class-gl-addon.php              # Gravity Forms add-on registration and assets
│   ├── class-gl-admin.php              # Admin page and post/redirect/get handlers
│   ├── class-gl-deactivator.php        # Deactivation cleanup
│   ├── class-gl-export.php             # CSV/XLSX export streaming
│   ├── class-gl-field-renderer.php     # Field display and sanitization rules
│   ├── class-gl-github-updater.php     # GitHub release updates and View details modal
│   ├── class-gl-rest-controller.php    # REST routes for entries, edits, and export
│   ├── class-gl-rewrite.php            # Public rewrite rules
│   ├── class-gl-share-entry-value.php  # Storage for custom column values
│   ├── class-gl-share.php              # Share CRUD, filters, and validation helpers
│   ├── class-gl-viewer.php             # Viewer routing and asset localization
│   ├── Parsedown.php                   # Markdown parser for updater modal content
│   └── xlsxwriter.class.php            # XLSX writer used by the export
├── languages
│   ├── gravity-lens-fr_FR.mo           # French translation (binary)
│   ├── gravity-lens-fr_FR.po           # French translation (source)
│   └── gravity-lens.pot                # Translation template
└── templates
    └── viewer.php                      # Public viewer HTML shell

Changelog

1.0.2 - 2026-08-24

  • Changed: The share table no longer edits filters inline. The three cramped controls are replaced by a read-only summary of the active filter, so a link's scope stays visible at a glance without crowding the row. Filters are set when the link is created; to change one, create a new link.

1.0.1 - 2026-08-24

  • Fixed: Administrative fields could not be selected as a share filter. Display and filtering shared one allowlist, so excluding a field from the viewer also removed it from the filter selector — dropping exactly the hidden grouping keys a filter is most useful for. The two surfaces are now separate: filtering on such a field exposes nothing, since the value is set by an administrator and the field is still never rendered as a column. Administrative entries are labelled as such in the selector.

1.0.0 - 2026-08-24

  • New: Entry filters scope a share link to a subset of entries, enforced on the table, the export, and the per-entry edit route alike. A filter can be edited without recreating the link.
  • New: Per-column share toggle for comment columns in the viewer settings panel.
  • New: Comment columns can sync their notes across share links targeting the same form.
  • New: Share CRUD with readonly and login-required flags, optional expiry, inline editing with a rolling Gravity Forms note as audit trail, and GitHub release updates with a View details modal.
  • Security: Fields set to Administrative visibility were exposed in public share views. Only the legacy adminOnly flag was checked, which recent Gravity Forms versions no longer set. Such fields are now excluded from every share view and export.
  • Fixed: Admin table icons sat below their buttons and column headers overlapped on WordPress 7, which added a line-height rule for dashicons inside buttons.
  • Fixed: The French translation never loaded — no compiled .mo shipped. All strings are now translated, and three updater strings that used a constant as text domain are extractable again.
  • Improved: Exports fetch entries in batches instead of re-querying the whole set when a form holds more than 1000 entries.
  • Improved: Per-request caching removes repeated share lookups and JSON decoding of view settings.
  • Improved: Refined the viewer share icon and aligned the admin search and form control styling.
  • Changed: Licensed under AGPL-3.0.
  • Removed: Dead code (delete_column_values(), get_hidden_field_ids()) and generated *_msgids.txt artefacts that were shipped in the release zip.

Security

If you discover a security vulnerability in this plugin, please report it responsibly through GitHub Security Advisories. Do not open a public issue for security reports.

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

For translations, the plugin uses WordPress i18n. You can contribute translations by editing the .po files in the languages/ directory and generating the corresponding .mo files with the wp i18n CLI commands.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — see the LICENSE file for details.


Made with love for the WordPress community

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v1.0.2 Aug 25, 2026 gravity-lens.zip 1
v1.0.1 Aug 24, 2026 gravity-lens.zip 1
v1.0.0 Aug 24, 2026 gravity-lens.zip 1