FEATURE: move contactform into own repository

This commit is contained in:
Michal Kváček
2017-08-22 20:17:39 +02:00
commit 6b0509a1db
36 changed files with 1039 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
<?php
namespace Modules\ContactForm\Http\Controllers\Visitor;
use App\CMS\Helpers\Template;
use App\Http\Controllers\Controller;
use App\Models\Content\Content;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Mail;
use Modules\ContactForm\Http\Requests\SendNewEmailRequest;
class CreateNewMessage extends Controller
{
/**
* Method for sending emails via contact form
*
* @param SendNewEmailRequest $request
* @param $formId
*
* @return mixed
*/
public function postMessage(SendNewEmailRequest $request, $formId)
{
// load form settings
$form = Content::where('moduleHandler', config('contactform.handler'))
->findOrFail($formId);
// select template
$template = isset($form->moduleSettings['emailTemplate']) ? $form->moduleSettings['emailTemplate'] : 'contactform::emails.default';
// send email
$status = Mail::send(Template::name($template), ['data' => $request], function (Message $message) use ($request, $form) {
$message->from($request->email, $request->name);
// get message subject
$subject = isset($form->moduleSettings['subject']) ? $form->moduleSettings['subject'] : trans('contactform::admin/contents.defaultSubject');
$message->to($form->moduleSettings['email'])
->subject($subject);
});
// inform user about success or failure
return $this->sendResponse($status, $request, $form);
}
private function sendResponse($status, SendNewEmailRequest $request, $form)
{
// send response for ajax
if ($request->ajax()) {
return response()->json([
'status' => $status ? 'success' : 'failed',
'redirectUrl' => $form->url
]);
} else {
// redirect user to previous form
$response = redirect()->back();
return $status ? $response->with('success', 'sent') : $response->with('error', 'cannotSend');
}
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php namespace Modules\ContactForm\Http\Requests;
use App\Http\Requests\Request;
class SendNewEmailRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
'g-recaptcha-response' => 'required|recaptcha',
];
}
}
+12
View File
@@ -0,0 +1,12 @@
<?php
Route::group([
'middleware' => ['web'],
'namespace' => '\Modules\ContactForm\Http\Controllers\Visitor',
'prefix' => LaravelLocalization::setLocale() . '/contactform'
], function () {
// method for sending new message
Route::post('/message/{formId}', 'CreateNewMessage@postMessage')
->name('email.send');
});