Add form settings
This commit is contained in:
		
							parent
							
								
									db8d117dcf
								
							
						
					
					
						commit
						291e69e68c
					
				|  | @ -35,7 +35,6 @@ class SettingServiceProvider extends ServiceProvider | ||||||
|         app(SettingFactory::class)->register(ModuleSettings::class); |         app(SettingFactory::class)->register(ModuleSettings::class); | ||||||
|         app(SettingFactory::class)->register(InvoiceSettings::class); |         app(SettingFactory::class)->register(InvoiceSettings::class); | ||||||
|         app(SettingFactory::class)->register(NamiSettings::class); |         app(SettingFactory::class)->register(NamiSettings::class); | ||||||
|         app(SettingFactory::class)->register(FormSettings::class); |  | ||||||
|         app(SettingFactory::class)->register(FileshareSettings::class); |         app(SettingFactory::class)->register(FileshareSettings::class); | ||||||
|         app(SettingFactory::class)->register(PreventionSettings::class); |         app(SettingFactory::class)->register(PreventionSettings::class); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -184,6 +184,7 @@ return [ | ||||||
|         Modules\Mailgateway\MailgatewayServiceProvider::class, |         Modules\Mailgateway\MailgatewayServiceProvider::class, | ||||||
|         Modules\Nami\NamiServiceProvider::class, |         Modules\Nami\NamiServiceProvider::class, | ||||||
|         Modules\Auth\AuthServiceProvider::class, |         Modules\Auth\AuthServiceProvider::class, | ||||||
|  |         Modules\Form\FormServiceProvider::class, | ||||||
|     ], |     ], | ||||||
| 
 | 
 | ||||||
|     /* |     /* | ||||||
|  |  | ||||||
|  | @ -0,0 +1,53 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Modules\Form\Components; | ||||||
|  | 
 | ||||||
|  | use App\Form\FormSettings; | ||||||
|  | use Livewire\Component; | ||||||
|  | 
 | ||||||
|  | class SettingView extends Component | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |     public string $clearCacheUrl; | ||||||
|  |     public string $registerUrl; | ||||||
|  |     public $settingClass = FormSettings::class; | ||||||
|  | 
 | ||||||
|  |     public function rules(): array | ||||||
|  |     { | ||||||
|  |         return [ | ||||||
|  |             'clearCacheUrl' => '', | ||||||
|  |             'registerUrl' => '', | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function mount(): void | ||||||
|  |     { | ||||||
|  |         $this->registerUrl = app(FormSettings::class)->registerUrl; | ||||||
|  |         $this->clearCacheUrl = app(FormSettings::class)->clearCacheUrl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function save(): void | ||||||
|  |     { | ||||||
|  |         app(FormSettings::class)->fill($this->validate())->save(); | ||||||
|  |         $this->dispatch('success', 'Einstellungen gespeichert.'); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function render() | ||||||
|  |     { | ||||||
|  |         return <<<'HTML' | ||||||
|  |             <x-page::setting-layout :active="$settingClass"> | ||||||
|  |                 <x-slot:right> | ||||||
|  |                     <x-form::save-button form="formsettingform"></x-form::save-button> | ||||||
|  |                 </x-slot:right> | ||||||
|  |                 <form id="formsettingform" class="grow p-6 grid grid-cols-2 gap-3 items-start content-start" | ||||||
|  |                     wire:submit.prevent="save"> | ||||||
|  |                     <x-ui::setting-intro class="col-span-full"> | ||||||
|  |                         Hier kannst du Einstellungen für Anmeldeformulare setzen. | ||||||
|  |                     </x-ui::setting-intro> | ||||||
|  |                     <x-form::text name="register_url" wire:model="registerUrl" label="Formular-Link"></x-form::text> | ||||||
|  |                     <x-form::text name="clear_cache_url" wire:model="clearCacheUrl" label="Frontend-Cache-Url"></x-form::text> | ||||||
|  |                 </form> | ||||||
|  |             </x-page::setting-layout> | ||||||
|  |         HTML; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,42 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Modules\Form\Components; | ||||||
|  | 
 | ||||||
|  | use App\Form\FormSettings; | ||||||
|  | use Illuminate\Foundation\Testing\DatabaseTransactions; | ||||||
|  | use Livewire\Livewire; | ||||||
|  | use Tests\TestCase; | ||||||
|  | 
 | ||||||
|  | uses(TestCase::class); | ||||||
|  | uses(DatabaseTransactions::class); | ||||||
|  | 
 | ||||||
|  | it('it renders page', function () { | ||||||
|  |     test()->withoutExceptionHandling()->login()->loginNami(); | ||||||
|  | 
 | ||||||
|  |     test()->get('/setting/form')->assertSeeLivewire(SettingView::class); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | it('it displays active modules', function () { | ||||||
|  |     test()->withoutExceptionHandling()->login()->loginNami(); | ||||||
|  |     app(FormSettings::class)->fill(['registerUrl' => 'http://example.com/register', 'clearCacheUrl' => 'http://example.com/clear-cache'])->save(); | ||||||
|  | 
 | ||||||
|  |     Livewire::test(SettingView::class) | ||||||
|  |         ->assertSee('Einstellungen für Anmeldeformulare') | ||||||
|  |         ->assertSee('Formular-Link') | ||||||
|  |         ->assertSet('registerUrl', 'http://example.com/register') | ||||||
|  |         ->assertSet('clearCacheUrl', 'http://example.com/clear-cache') | ||||||
|  |         ->assertSeeHtml('data-active'); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | it('it saves settings', function () { | ||||||
|  |     test()->withoutExceptionHandling()->login()->loginNami(); | ||||||
|  | 
 | ||||||
|  |     Livewire::test(SettingView::class) | ||||||
|  |         ->set('clearCacheUrl', 'http://example.com/clear') | ||||||
|  |         ->set('registerUrl', 'http://example.com/register') | ||||||
|  |         ->call('save') | ||||||
|  |         ->assertDispatched('success', 'Einstellungen gespeichert.'); | ||||||
|  | 
 | ||||||
|  |     test()->assertEquals('http://example.com/clear', app(FormSettings::class)->clearCacheUrl); | ||||||
|  |     test()->assertEquals('http://example.com/register', app(FormSettings::class)->registerUrl); | ||||||
|  | }); | ||||||
|  | @ -0,0 +1,35 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | namespace Modules\Form; | ||||||
|  | 
 | ||||||
|  | use Illuminate\Routing\Router; | ||||||
|  | use Illuminate\Support\ServiceProvider; | ||||||
|  | use Modules\Form\Components\SettingView; | ||||||
|  | use App\Setting\SettingFactory; | ||||||
|  | use App\Form\FormSettings; | ||||||
|  | 
 | ||||||
|  | class FormServiceProvider extends ServiceProvider | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      * Register services. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function register() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Bootstrap services. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function boot() | ||||||
|  |     { | ||||||
|  |         app(SettingFactory::class)->register(FormSettings::class); | ||||||
|  | 
 | ||||||
|  |         app(Router::class)->middleware(['web', 'auth:web'])->group(function ($router) { | ||||||
|  |             $router->get('/setting/form', SettingView::class)->name('setting.form'); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -1,48 +0,0 @@ | ||||||
| <template> |  | ||||||
|     <page-layout> |  | ||||||
|         <template #right> |  | ||||||
|             <f-save-button form="formsettingsform"></f-save-button> |  | ||||||
|         </template> |  | ||||||
|         <setting-layout> |  | ||||||
|             <form id="formsettingsform" class="grow p-6 grid grid-cols-2 gap-3 items-start content-start" @submit.prevent="submit"> |  | ||||||
|                 <div class="col-span-full text-gray-100 mb-3"> |  | ||||||
|                     <p class="text-sm">Hier kannst du Einstellungen für Anmeldeformulare setzen.</p> |  | ||||||
|                 </div> |  | ||||||
|                 <div class="grid grid-cols-2 gap-4"> |  | ||||||
|                     <f-text id="register_url" v-model="inner.registerUrl" label="Formular-Link"></f-text> |  | ||||||
|                     <f-text id="clear_cache_url" v-model="inner.clearCacheUrl" label="Frontend-Cache-Url"></f-text> |  | ||||||
|                 </div> |  | ||||||
|             </form> |  | ||||||
|         </setting-layout> |  | ||||||
|     </page-layout> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script> |  | ||||||
| import SettingLayout from './Layout.vue'; |  | ||||||
| 
 |  | ||||||
| export default { |  | ||||||
|     components: { |  | ||||||
|         SettingLayout, |  | ||||||
|     }, |  | ||||||
|     props: { |  | ||||||
|         data: { |  | ||||||
|             type: Object, |  | ||||||
|             default: () => { |  | ||||||
|                 return {}; |  | ||||||
|             }, |  | ||||||
|         }, |  | ||||||
|     }, |  | ||||||
|     data: function () { |  | ||||||
|         return { |  | ||||||
|             inner: {...this.data.data}, |  | ||||||
|         }; |  | ||||||
|     }, |  | ||||||
|     methods: { |  | ||||||
|         submit() { |  | ||||||
|             this.$inertia.post('/setting/form', this.inner, { |  | ||||||
|                 onSuccess: () => this.$success('Einstellungen gespeichert.'), |  | ||||||
|             }); |  | ||||||
|         }, |  | ||||||
|     }, |  | ||||||
| }; |  | ||||||
| </script> |  | ||||||
		Loading…
	
		Reference in New Issue