Merge photo comments feature #114
@ -11,6 +11,7 @@ use App\PhotoComment;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Validation\ValidationException;
|
||||||
|
|
||||||
class PhotoCommentController extends Controller
|
class PhotoCommentController extends Controller
|
||||||
{
|
{
|
||||||
@ -45,7 +46,7 @@ class PhotoCommentController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(StorePhotoCommentRequest $request, $albumUrlAlias, $photoFilename)
|
public function store(Request $request, $albumUrlAlias, $photoFilename)
|
||||||
{
|
{
|
||||||
$album = DbHelper::getAlbumByPath($albumUrlAlias);
|
$album = DbHelper::getAlbumByPath($albumUrlAlias);
|
||||||
if (is_null($album))
|
if (is_null($album))
|
||||||
@ -64,11 +65,9 @@ class PhotoCommentController extends Controller
|
|||||||
return redirect($photo->url());
|
return redirect($photo->url());
|
||||||
}
|
}
|
||||||
|
|
||||||
$comment = new PhotoComment();
|
|
||||||
$comment->photo_id = $photo->id;
|
|
||||||
$comment->fill($request->only(['commentor_email', 'commentor_name', 'comment_text']));
|
|
||||||
|
|
||||||
// Validate and link the parent comment, if provided
|
// Validate and link the parent comment, if provided
|
||||||
|
// We do this here so if the validation fails, we still have the parent comment available in the catch block
|
||||||
|
$parentComment = null;
|
||||||
if ($request->has('parent_comment_id'))
|
if ($request->has('parent_comment_id'))
|
||||||
{
|
{
|
||||||
$parentComment = $photo->comments()->where('id', intval($request->get('parent_comment_id')))->first();
|
$parentComment = $photo->comments()->where('id', intval($request->get('parent_comment_id')))->first();
|
||||||
@ -78,27 +77,53 @@ class PhotoCommentController extends Controller
|
|||||||
$request->getSession()->flash('success', trans('gallery.photo_comment_posted_successfully'));
|
$request->getSession()->flash('success', trans('gallery.photo_comment_posted_successfully'));
|
||||||
return redirect($photo->url());
|
return redirect($photo->url());
|
||||||
}
|
}
|
||||||
|
|
||||||
$comment->parent_comment_id = $parentComment->id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = $this->getUser();
|
try
|
||||||
if (!is_null($user) && !$user->isAnonymous())
|
|
||||||
{
|
{
|
||||||
$comment->created_user_id = $user->id;
|
$this->validate($request, [
|
||||||
|
'commentor_name' => 'required|max:255',
|
||||||
|
'commentor_email' => 'sometimes|max:255|email',
|
||||||
|
'comment_text' => 'required'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$comment = new PhotoComment();
|
||||||
|
$comment->photo_id = $photo->id;
|
||||||
|
$comment->fill($request->only(['commentor_email', 'commentor_name', 'comment_text']));
|
||||||
|
|
||||||
|
if (!is_null($parentComment))
|
||||||
|
{
|
||||||
|
$comment->parent_comment_id = $parentComment->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $this->getUser();
|
||||||
|
if (!is_null($user) && !$user->isAnonymous())
|
||||||
|
{
|
||||||
|
$comment->created_user_id = $user->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$comment->save();
|
||||||
|
|
||||||
|
$request->getSession()->flash('success', trans('gallery.photo_comment_posted_successfully'));
|
||||||
|
|
||||||
|
if ($request->isXmlHttpRequest())
|
||||||
|
{
|
||||||
|
return response()->json(['redirect_url' => $photo->url()]);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
return redirect($photo->url());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (ValidationException $e)
|
||||||
$comment->save();
|
|
||||||
|
|
||||||
$request->getSession()->flash('success', trans('gallery.photo_comment_posted_successfully'));
|
|
||||||
|
|
||||||
if ($request->isXmlHttpRequest())
|
|
||||||
{
|
{
|
||||||
return response()->json(['redirect_url' => $photo->url()]);
|
if (!is_null($parentComment))
|
||||||
}
|
{
|
||||||
else
|
return redirect()->to($photo->replyToCommentFormUrl($parentComment->id))->withErrors($e->errors());
|
||||||
{
|
}
|
||||||
return redirect($photo->url());
|
else
|
||||||
|
{
|
||||||
|
return redirect()->back()->withErrors($e->errors());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Requests;
|
|
||||||
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
|
||||||
|
|
||||||
class StorePhotoCommentRequest extends FormRequest
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Determine if the user is authorized to make this request.
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function authorize()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the validation rules that apply to the request.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function rules()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'commentor_name' => 'required|max:255',
|
|
||||||
'commentor_email' => 'sometimes|max:255|email',
|
|
||||||
'comment_text' => 'required'
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
@ -40,7 +40,14 @@ function PhotoViewModel(urls) {
|
|||||||
var formData = form.serialize();
|
var formData = form.serialize();
|
||||||
$.post(formUrl, formData, function(result)
|
$.post(formUrl, formData, function(result)
|
||||||
{
|
{
|
||||||
window.location = result.redirect_url;
|
if (result.redirect_url)
|
||||||
|
{
|
||||||
|
window.location = result.redirect_url;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('#comment-reply-form-content').html(result);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
replyToComment: function(e) {
|
replyToComment: function(e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user