Compare commits

..

5 Commits

Author SHA1 Message Date
philipp lang 5641006e2b Add mail data from template to form
continuous-integration/drone/push Build was killed Details
2024-07-15 17:13:23 +02:00
philipp lang 607038af6b Lint 2024-07-15 17:05:21 +02:00
philipp lang 189b83f2a5 Update migrations 2024-07-15 17:05:02 +02:00
philipp lang 3f4c655e5e Disable is_dirty when link not found 2024-07-15 17:00:42 +02:00
philipp lang 158cd2d352 Lint 2024-07-15 16:59:29 +02:00
5 changed files with 55 additions and 33 deletions

View File

@ -1,10 +1,7 @@
<?php <?php
use App\Form\Models\Form;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration return new class extends Migration
{ {

View File

@ -14,12 +14,6 @@ return new class extends Migration
*/ */
public function up() public function up()
{ {
Schema::table('forms', function (Blueprint $table) {
$table->json('description')->default($this->default())->change();
$table->json('mail_top')->default($this->default())->nullable(false)->change();
$table->json('mail_bottom')->default($this->default())->nullable(false)->change();
});
foreach (DB::table('forms')->get() as $form) { foreach (DB::table('forms')->get() as $form) {
$mailTop = json_decode($form->mail_top, true); $mailTop = json_decode($form->mail_top, true);
if (!$mailTop || !count($mailTop)) { if (!$mailTop || !count($mailTop)) {
@ -34,6 +28,12 @@ return new class extends Migration
DB::table('forms')->where('id', $form->id)->update(['description' => $this->default()]); DB::table('forms')->where('id', $form->id)->update(['description' => $this->default()]);
} }
} }
Schema::table('forms', function (Blueprint $table) {
$table->json('description')->default($this->default())->change();
$table->json('mail_top')->default($this->default())->nullable(false)->change();
$table->json('mail_bottom')->default($this->default())->nullable(false)->change();
});
} }
/** /**

View File

@ -53,7 +53,7 @@
</div> </div>
</template> </template>
<script lang="js" setup> <script setup>
import {ref, inject, computed} from 'vue'; import {ref, inject, computed} from 'vue';
const axios = inject('axios'); const axios = inject('axios');
const emit = defineEmits(['update:modelValue']); const emit = defineEmits(['update:modelValue']);
@ -70,7 +70,7 @@ const props = defineProps({
id: { id: {
required: true, required: true,
type: String, type: String,
} },
}); });
const comparatorOptions = ref([ const comparatorOptions = ref([
@ -144,14 +144,17 @@ const fieldOptions = computed(() =>
); );
function addCondition() { function addCondition() {
emit('update:modelValue', {...props.modelValue, ifs: [ emit('update:modelValue', {
...props.modelValue,
ifs: [
...props.modelValue.ifs, ...props.modelValue.ifs,
{ {
field: null, field: null,
comparator: null, comparator: null,
value: null, value: null,
} },
]}); ],
});
} }
const locked = ref(false); const locked = ref(false);
@ -162,5 +165,7 @@ async function checkIfDirty() {
locked.value = response.data.result; locked.value = response.data.result;
} }
if (props.single.links && props.single.links.is_dirty) {
checkIfDirty(); checkIfDirty();
}
</script> </script>

View File

@ -228,6 +228,8 @@ const allFields = computed(() => {
function setTemplate(template) { function setTemplate(template) {
active.value = 0; active.value = 0;
single.value.config = template.config; single.value.config = template.config;
single.value.mail_top = template.mail_top;
single.value.mail_bottom = template.mail_bottom;
} }
async function saveFileConditions(conditions) { async function saveFileConditions(conditions) {

View File

@ -19,7 +19,6 @@ class FormIndexActionTest extends FormTestCase
{ {
Carbon::setTestNow(Carbon::parse('2023-03-03')); Carbon::setTestNow(Carbon::parse('2023-03-03'));
$this->login()->loginNami()->withoutExceptionHandling(); $this->login()->loginNami()->withoutExceptionHandling();
Formtemplate::factory()->name('tname')->sections([FormtemplateSectionRequest::new()->name('sname')])->create();
$form = Form::factory() $form = Form::factory()
->name('lala') ->name('lala')
->excerpt('fff') ->excerpt('fff')
@ -58,8 +57,6 @@ class FormIndexActionTest extends FormTestCase
->assertInertiaPath('data.data.0.links.export', route('form.export', ['form' => $form])) ->assertInertiaPath('data.data.0.links.export', route('form.export', ['form' => $form]))
->assertInertiaPath('data.meta.links.store', route('form.store')) ->assertInertiaPath('data.meta.links.store', route('form.store'))
->assertInertiaPath('data.meta.links.formtemplate_index', route('formtemplate.index')) ->assertInertiaPath('data.meta.links.formtemplate_index', route('formtemplate.index'))
->assertInertiaPath('data.meta.templates.0.name', 'tname')
->assertInertiaPath('data.meta.templates.0.config.sections.0.name', 'sname')
->assertInertiaPath('data.meta.default.name', '') ->assertInertiaPath('data.meta.default.name', '')
->assertInertiaPath('data.meta.default.prevention_conditions', ['mode' => 'all', 'ifs' => []]) ->assertInertiaPath('data.meta.default.prevention_conditions', ['mode' => 'all', 'ifs' => []])
->assertInertiaPath('data.meta.default.prevention_text.version', '1.0') ->assertInertiaPath('data.meta.default.prevention_text.version', '1.0')
@ -76,6 +73,27 @@ class FormIndexActionTest extends FormTestCase
->assertInertiaPath('data.meta.section_default.name', ''); ->assertInertiaPath('data.meta.section_default.name', '');
} }
public function testFormtemplatesHaveData(): void
{
$this->login()->loginNami()->withoutExceptionHandling();
Formtemplate::factory()->name('tname')->sections([FormtemplateSectionRequest::new()->name('sname')->fields([
$this->textField('vorname')
])])
->mailTop(EditorRequestFactory::new()->text(10, 'lala'))
->mailBottom(EditorRequestFactory::new()->text(10, 'lalb'))
->create();
sleep(1);
$this->get(route('form.index'))
->assertOk()
->assertInertiaPath('data.meta.templates.0.name', 'tname')
->assertInertiaPath('data.meta.templates.0.name', 'tname')
->assertInertiaPath('data.meta.templates.0.config.sections.0.name', 'sname')
->assertInertiaPath('data.meta.templates.0.config.sections.0.fields.0.key', 'vorname')
->assertInertiaPath('data.meta.templates.0.mail_top.blocks.0.data.text', 'lala')
->assertInertiaPath('data.meta.templates.0.mail_bottom.blocks.0.data.text', 'lalb');
}
public function testItDisplaysExport(): void public function testItDisplaysExport(): void
{ {
$this->login()->loginNami()->withoutExceptionHandling(); $this->login()->loginNami()->withoutExceptionHandling();