Share dialog implies it shares the form with Nextcloud users, but manages the public link
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 6
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Description
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 linkShareDialog.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 submitShareDialog.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
- Is
Response linkthe right name? The dialog does more than the link alone (QR, embed, webhooks, response limit). Alternatives:Publish,Collect responses. - Where should
openNativeShareDialoglive now that two components use it?src/utils/currently holdsl10n.jsandodt-export.js. - Should the editor's empty state also point at Files? A user who has never shared anything is never shown that sharing lives there.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/components/ShareDialog.vue and src/components/SettingsPanel.vue, especially the listed labels and openNativeShareDialog implementation. Decide where the shared helper belongs, then verify the dialog distinguishes response-link restrictions from form access and that Manage sharing opens the native Nextcloud sharing sidebar.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100