Form visibility closed (#91)
This commit is contained in:
parent
9137282eba
commit
d6930d0dc2
|
@ -23,7 +23,7 @@ class PublicFormController extends Controller
|
|||
|
||||
public function show(Request $request, string $slug)
|
||||
{
|
||||
$form = Form::whereSlug($slug)->whereVisibility('public')->firstOrFail();
|
||||
$form = Form::whereSlug($slug)->whereIn('visibility', ['public', 'closed'])->firstOrFail();
|
||||
if ($form->workspace == null) {
|
||||
// Workspace deleted
|
||||
return $this->error([
|
||||
|
|
|
@ -20,7 +20,7 @@ class Form extends Model
|
|||
const DARK_MODE_VALUES = ['auto', 'light', 'dark'];
|
||||
const THEMES = ['default', 'simple', 'notion'];
|
||||
const WIDTHS = ['centered', 'full'];
|
||||
const VISIBILITY = ['public', 'draft'];
|
||||
const VISIBILITY = ['public', 'draft', 'closed'];
|
||||
|
||||
use HasFactory, HasSlug, SoftDeletes;
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</div>
|
||||
</v-transition>
|
||||
|
||||
<div v-if="isPublicFormPage && form.is_closed"
|
||||
<div v-if="isPublicFormPage && (form.is_closed || form.visibility=='closed')"
|
||||
class="border shadow-sm p-2 my-4 flex items-center rounded-md bg-yellow-100 border-yellow-500"
|
||||
>
|
||||
<div class="flex-grow">
|
||||
|
@ -68,7 +68,7 @@
|
|||
</div>
|
||||
|
||||
<transition
|
||||
v-if="!form.is_password_protected && (!isPublicFormPage || (!form.is_closed && !form.max_number_of_submissions_reached))"
|
||||
v-if="!form.is_password_protected && (!isPublicFormPage || (!form.is_closed && !form.max_number_of_submissions_reached && form.visibility!='closed'))"
|
||||
enter-active-class="duration-500 ease-out"
|
||||
enter-class="translate-x-full opacity-0"
|
||||
enter-to-class="translate-x-0 opacity-100"
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
help="If filled, then the form won't accept submissions after the given date"
|
||||
:required="false"
|
||||
/>
|
||||
<rich-text-area-input v-if="form.closes_at" name="closed_text"
|
||||
<rich-text-area-input v-if="form.closes_at || form.visibility=='closed'" name="closed_text"
|
||||
:form="form"
|
||||
label="Closed form text"
|
||||
help="This message will be shown when the form will be closed"
|
||||
|
|
|
@ -90,6 +90,10 @@ export default {
|
|||
{
|
||||
name: "Draft (form won't be accessible)",
|
||||
value: "draft"
|
||||
},
|
||||
{
|
||||
name: "Closed",
|
||||
value: "closed"
|
||||
}
|
||||
],
|
||||
isCollapseOpen: true
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
submission{{ form.submissions_count > 0 ? 's' : '' }}
|
||||
</li>
|
||||
<li class="list-disc ml-6 pr-1 text-blue-500" v-if="form.visibility=='draft'">Draft (not public)</li>
|
||||
<li class="list-disc ml-6 pr-1 text-blue-500" v-if="form.visibility=='closed'">Closed</li>
|
||||
<li class="list-disc ml-6">Edited {{ form.last_edited_human }}</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -85,6 +85,18 @@ it('can not submit draft form', function () {
|
|||
->assertStatus(403);
|
||||
});
|
||||
|
||||
it('can not submit visibility closed form', function () {
|
||||
$user = $this->actingAsUser();
|
||||
$workspace = $this->createUserWorkspace($user);
|
||||
$form = $this->createForm($user, $workspace, [
|
||||
'visibility' => 'closed'
|
||||
]);
|
||||
$formData = FormSubmissionDataFactory::generateSubmissionData($form);
|
||||
|
||||
$this->postJson(route('forms.answer', $form->slug), $formData)
|
||||
->assertStatus(403);
|
||||
});
|
||||
|
||||
it('can not submit form with past dates', function () {
|
||||
$user = $this->actingAsUser();
|
||||
$workspace = $this->createUserWorkspace($user);
|
||||
|
|
Loading…
Reference in New Issue