Skip to content

Share dialog implies it shares the form with Nextcloud users, but manages the public link #137

Open

Description

@Rikdekker

Summary

The Share dialog is titled "Share form" and contains two user/group pickers, but it does not share a form with other Nextcloud users — it manages the public response link. This misleads users into thinking they are granting colleagues access to the form.

Reported by a user setting up a new Nextcloud for a nonprofit, who reasonably assumed the picker inside "Share form" was how you share a form with your team. They initially thought they had misconfigured something. They had not — our documentation described it incorrectly too.

The documentation is now fixed (0964d44, EN + NL, unreleased). The UI that caused the confusion is unchanged, so the next user will hit exactly the same wall.

Background: how sharing actually works

FormVox is file-based. Every form is a .fvform file in Files, so a form is shared through the regular Nextcloud sharing sidebar, with the normal permission model. This is a deliberate design choice and we intend to keep it — it means forms inherit Nextcloud's permissions, visibility and policies for free, rather than FormVox maintaining a parallel sharing system.

The problem is not the model. It is that the UI never says so.

What is misleading

Location Current text Why it misleads
src/components/ShareDialog.vue:4 Share form Promises sharing, delivers a link
src/components/ShareDialog.vue:7 Share this form with others to collect responses. The second half corrects the first, but is read later
src/components/ShareDialog.vue:247 Restrict to specific users/groups Main cause. A user/group picker inside a "Share" dialog reads as sharing
src/components/ShareDialog.vue:252 Only selected users and group members can access this form. "can access this form" confirms the wrong reading

The dialog contains no reference to Files at all. A user who opens it asking "how do I share this with a colleague" is never told where that actually happens.

What already exists

src/components/SettingsPanel.vue:22-26 already has a "Manage sharing" button that opens the real Nextcloud sharing sidebar, with the permission roles explained above it. The implementation (openNativeShareDialog, lines 58-79) tries OCA.Files.Sidebar and falls back to a redirect into Files.

That is exactly what the reporter was looking for. It just lives in the settings panel, while the button labelled Share goes somewhere else.

So this is a labelling and navigation problem, not missing functionality.

Proposed changes

1. Rename the dialog

  • ShareDialog.vue:4 — Share form → Response link
  • ShareDialog.vue:7 → Create a link so people can respond. To give colleagues access to the form itself, use Sharing.

Resolves the misunderstanding on the first line the user reads.

2. Add a route to Files inside the dialog

A line at the top of the dialog:

Looking to share with Nextcloud users? → Manage sharing

Reuses openNativeShareDialog from SettingsPanel.vue. That function would move out of the component into e.g. src/utils/sharing.js so both callers can use it.

3. Reword the restriction picker

  • ShareDialog.vue:247 — Restrict to specific users/groups → Limit who may submit
  • ShareDialog.vue:252 → This only restricts the response link. It does not give these people access to the form — for that, use Sharing.

The Notify on new responses picker (line 100) stays as is; that label is already unambiguous.

Explicitly out of scope

Building a picker-and-Submit sharing flow inside FormVox (select users → one button → they get a notification), which is what the reporter originally asked for.

Nextcloud has no generic share API for non-file objects — IShareProvider is typed against Node/Folder. Every app that wants this builds its own share table, picker, "shared with me" query and notification path. That gap has been on the server backlog since nextcloud/server#7315 (2017). nextcloud/forms did build it, and it took five years (nextcloud/forms#576, #563 in 2020 → #322 completed 2025-08-13).

Adding a second sharing system alongside the file share would mean two ways to share the same form that disagree with each other.

Nextcloud is now solving this at the platform level: nextcloud/server#51803 "Unified sharing across apps", milestone Nextcloud 35, with the bulk merged in PR nextcloud/server#62241 (2026-07-20). The API currently lives in the NCU\Sharing unstable namespace and is marked @experimental, so no timeline is promised — but that is the mechanism FormVox should adopt when it stabilises, rather than inventing its own.

Scope

Files touched ShareDialog.vue, SettingsPanel.vue, new helper in src/utils/
Translation strings 3 changed, 1 new
Data model / API no change
Migration none
Risk low — no behaviour change, only naming and navigation

Open questions

  1. Is Response link the right name? The dialog does more than the link alone (QR, embed, webhooks, response limit). Alternatives: Publish, Collect responses.
  2. Where should openNativeShareDialog live now that two components use it? src/utils/ currently holds l10n.js and odt-export.js.
  3. Should the editor's empty state also point at Files? A user who has never shared anything is never shown that sharing lives there.

Activity

  1. added
    designRelated to design, interface, interaction design, UX, etc.
    documentationImprovements or additions to documentation
    on Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    0. Needs triagePending approval or rejectiondesignRelated to design, interface, interaction design, UX, etc.documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions