WP Manifestindependent plugin directory
manifest / forms / entrydesk

EntryDesk

EntryDesk — Frontend entry display & user portal for Gravity Forms (table/grid views, search, single-entry pages, portal). Vue 3 builder + React renderer.

★ 0stars
0.1.0latest · 3mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/chomachomachoma/entrydesk/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Frontend Entry Display & User Portal for Gravity Forms.

EntryDesk lifts Gravity Forms entries out of wp-admin and puts them on the front end: searchable/sortable table and grid views, single-entry detail pages, and a logged-in user portal where people can see and edit their own submissions — no custom code required.

Built as a display/query layer on top of the Gravity Forms API (GFAPI), with a Vue 3 admin view-builder and a React frontend renderer.


Requirements

WordPress 6.8+
PHP 8.3+
Gravity Forms 2.10+ (active)

Installation

  1. Copy the entrydesk/ folder into wp-content/plugins/.
  2. Activate EntryDesk in Plugins. Activation creates the two custom tables, registers the entrydesk_manage_views capability, and flushes rewrite rules for single-entry URLs.
  3. Go to Forms ▸ EntryDesk Views to build your first view.

The plugin ships with its built JS bundles committed under assets/dist/, so it installs and runs as a plain WordPress plugin with no build step.

Shortcodes

Shortcode Purpose
[entrydesk_view id="N"] Render view N (table or grid) with search / filter / sort / pagination.
[entrydesk_portal] Show the logged-in user's own entries with edit links.

Single-entry pages

Every entry gets a pretty URL:

/entrydesk-entry/{entry_id}

served via template_include (theme-overridable at your-theme/entrydesk/single-entry.php). Access is permission-checked — public views expose their entries publicly; otherwise the viewer must own the entry or hold entrydesk_manage_views.

REST API — namespace entrydesk/v1

Method Route Permission
GET /views/{id} Public for public views, else cap/role gated.
GET /views/{id}/entries Same as above. Supports search, filter, orderby, order, page, per_page.
POST /views Requires entrydesk_manage_views.
GET /entries/{id} Ownership-gated (owner or entrydesk_manage_views).
POST /entries/{id} Ownership-gated — portal edit.

Writes require a valid X-WP-Nonce (wp_rest). A parallel wp_ajax(_nopriv_)entrydesk_query endpoint provides a no-JS/legacy fallback for the query surface.

Capabilities

entrydesk_manage_views — granted to administrator on activation and mapped through manage_options so any admin passes.

Architecture

Browser ─shortcode page→ SSR skeleton (ViewRenderer, PHP)
   │ mounts React app
   │ fetch /wp-json/entrydesk/v1/views/{id}/entries?…
   ▼
React renderer ◀─JSON─ RestController → EntryQuery → index table (fast path)
                                             └→ GFAPI::get_entries (source of truth)
Admin: Forms ▸ EntryDesk Views → Vue builder → REST → ViewRepository → gf_entrydesk_views
GF submit/update/status → EntryIndex sync → gf_entrydesk_view_entries (search index)
  • Views are a CPT (entrydesk_view) + a config row (gf_entrydesk_views).
  • The index table is a read accelerator; GFAPI is the source of truth. If the index is missing/stale, EntryQuery falls back to GFAPI::get_entries(). Rebuild it with wp entrydesk reindex or the admin "Rebuild index" button.

Custom tables

  • {prefix}gf_entrydesk_views — view configurations (JSON config).
  • {prefix}gf_entrydesk_view_entries — flattened search index keyed by (form_id, entry_id), FULLTEXT on search_text (degrades to LIKE).

Development

Source lives in assets/src/ (Vue admin, React frontend). The committed bundles in assets/dist/ are what actually load; a Vite config is provided for rebuilding.

composer install          # fetches the Freemius licensing SDK into vendor/
npm ci && npm run build   # rebuild assets/dist from assets/src
bash tests/lint.sh        # php -l over src/ + templates/
bash tests/smoke-activate.sh

vendor/ is git-ignored and rebuilt by the release workflow; a fallback autoloader still resolves EntryDesk's own classes if vendor/ is absent, so the plugin loads for local development without the Freemius licensing layer.

Uninstall

Deleting the plugin drops both tables, deletes the options, removes the capability, and deletes all entrydesk_view CPT posts. Because EntryDesk is distributed through Freemius (which owns the uninstall event and rejects plugins that ship uninstall.php), this cleanup runs from the Freemius after_uninstall hook — entrydesk_fs_uninstall_cleanup() in entrydesk.php.

Distribution (Freemius)

EntryDesk is distributed via Freemius as a freemium product (free base + a paid Pro plan), configured in ent_fs() in entrydesk.php (product 34118). A GitHub Release (.github/workflows/deploy-freemius.yml) builds a production zip and uploads it as a pending release; promote it to released in the Freemius dashboard. The workflow needs three repo secrets: FREEMIUS_PUBLIC_KEY, FREEMIUS_DEV_ID, FREEMIUS_SECRET_KEY.

License

GPL-2.0-or-later.

Releases

1 release.

Tag
Published
0.1.0 latest
Jul 9, 2026 3mo ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.