diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 92978b4..bf9ca62 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -174,6 +174,7 @@ class ApiController extends Controller { $form->setAccess([ 'type' => 'public' ]); + $form->setSubmitOnce(true); $this->formMapper->insert($form); diff --git a/src/views/Sidebar.vue b/src/views/Sidebar.vue index 56ed6b8..89298a9 100644 --- a/src/views/Sidebar.vue +++ b/src/views/Sidebar.vue @@ -23,22 +23,64 @@ @@ -135,7 +130,6 @@ import { generateUrl } from '@nextcloud/router' import { getLocale, getDayNamesShort, getMonthNamesShort } from '@nextcloud/l10n' import { subscribe, unsubscribe } from '@nextcloud/event-bus' import { showError, showSuccess } from '@nextcloud/dialogs' -import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' import AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar' import DatetimePicker from '@nextcloud/vue/dist/Components/DatetimePicker' import moment from '@nextcloud/moment' @@ -147,7 +141,6 @@ export default { name: 'Sidebar', components: { - ActionLink, AppSidebar, DatetimePicker, ShareDiv, @@ -177,6 +170,19 @@ export default { return window.location.protocol + '//' + window.location.host + generateUrl(`/apps/forms/${this.form.hash}`) }, + // Inverting submitOnce for UI here. Adapt downto Db for V3, if this imposes for longterm. + submitMultiple: { + get() { + if (this.form.access.type === 'public' || this.form.isAnonymous) { + return true + } + return !this.form.submitOnce + }, + set(submitMultiple) { + this.form.submitOnce = !submitMultiple + }, + }, + formExpires: { get() { return this.form.expires !== 0 @@ -337,7 +343,12 @@ export default {