Merge photo comments feature #114
@ -273,8 +273,6 @@ class PhotoCommentController extends Controller
|
|||||||
{
|
{
|
||||||
Mail::to($moderator)->send(new ModeratePhotoComment($moderator, $album, $photo, $comment));
|
Mail::to($moderator)->send(new ModeratePhotoComment($moderator, $album, $photo, $comment));
|
||||||
}
|
}
|
||||||
|
|
||||||
dd($moderators);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function stripDisallowedHtmlTags($commentText)
|
private function stripDisallowedHtmlTags($commentText)
|
||||||
@ -314,13 +312,18 @@ class PhotoCommentController extends Controller
|
|||||||
// Replace the matched string with the inner string
|
// Replace the matched string with the inner string
|
||||||
$commentText = substr_replace($commentText, $endingTagMatches[2], $disallowedStringOffset, strlen($endingTagMatches[0]));
|
$commentText = substr_replace($commentText, $endingTagMatches[2], $disallowedStringOffset, strlen($endingTagMatches[0]));
|
||||||
|
|
||||||
// Find out what difference in lengths the string are post-replacement (we will have only replaced the tags, not the entire string, so we just use)
|
|
||||||
// the length of the captured start tag
|
|
||||||
$differenceAfterReplacement = strlen($endingTagMatches[1]);
|
|
||||||
|
|
||||||
// Adjust the offsets for strings after the one we're processing, so the offsets match up with the string correctly
|
// Adjust the offsets for strings after the one we're processing, so the offsets match up with the string correctly
|
||||||
for ($index2 = $index + 1; $index2 < count($htmlTagMatches); $index2++)
|
for ($index2 = $index + 1; $index2 < count($htmlTagMatches); $index2++)
|
||||||
{
|
{
|
||||||
|
// If this string appears entirely BEFORE the next one starts, we need to subtract the entire length.
|
||||||
|
// Otherwise, we only need to substract the length of the start tag, as the next one starts within it.
|
||||||
|
$differenceAfterReplacement = strlen($endingTagMatches[1]);
|
||||||
|
|
||||||
|
if ($htmlTagMatch[0][1] + strlen($endingTagMatches[0]) < $htmlTagMatches[$index2][0][1])
|
||||||
|
{
|
||||||
|
$differenceAfterReplacement = strlen($endingTagMatches[0]) - strlen($endingTagMatches[2]);
|
||||||
|
}
|
||||||
|
|
||||||
$htmlTagMatches[$index2][0][1] -= $differenceAfterReplacement;
|
$htmlTagMatches[$index2][0][1] -= $differenceAfterReplacement;
|
||||||
$htmlTagMatches[$index2][1][1] -= $differenceAfterReplacement;
|
$htmlTagMatches[$index2][1][1] -= $differenceAfterReplacement;
|
||||||
}
|
}
|
||||||
|
@ -4,14 +4,12 @@ namespace App\Mail;
|
|||||||
|
|
||||||
use App\Album;
|
use App\Album;
|
||||||
use App\Facade\Theme;
|
use App\Facade\Theme;
|
||||||
use App\Facade\UserConfig;
|
|
||||||
use App\Photo;
|
use App\Photo;
|
||||||
use App\PhotoComment;
|
use App\PhotoComment;
|
||||||
use App\User;
|
use App\User;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Mail\Mailable;
|
use Illuminate\Mail\Mailable;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
|
|
||||||
class ModeratePhotoComment extends Mailable
|
class ModeratePhotoComment extends Mailable
|
||||||
{
|
{
|
||||||
@ -30,6 +28,9 @@ class ModeratePhotoComment extends Mailable
|
|||||||
public function __construct(User $user, Album $album, Photo $photo, PhotoComment $comment)
|
public function __construct(User $user, Album $album, Photo $photo, PhotoComment $comment)
|
||||||
{
|
{
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
|
$this->album = $album;
|
||||||
|
$this->photo = $photo;
|
||||||
|
$this->comment = $comment;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,12 +40,15 @@ class ModeratePhotoComment extends Mailable
|
|||||||
*/
|
*/
|
||||||
public function build()
|
public function build()
|
||||||
{
|
{
|
||||||
$subject = trans('email.change_email_required_subject', ['app_name' => UserConfig::get('app_name')]);
|
$subject = trans('email.moderate_photo_comment_subject', ['album_name' => $this->album->name]);
|
||||||
|
|
||||||
return $this
|
return $this
|
||||||
->subject($subject)
|
->subject($subject)
|
||||||
->markdown(Theme::viewName('email.user_change_email_required'))
|
->markdown(Theme::viewName('email.moderate_photo_comment'))
|
||||||
->with([
|
->with([
|
||||||
|
'album' => $this->album,
|
||||||
|
'comment' => $this->comment,
|
||||||
|
'photo' => $this->photo,
|
||||||
'subject' => $subject,
|
'subject' => $subject,
|
||||||
'user' => $this->user
|
'user' => $this->user
|
||||||
]);
|
]);
|
||||||
|
@ -9,5 +9,11 @@ return [
|
|||||||
'change_email_required_subject' => 'Confirm the e-mail change to your :app_name account',
|
'change_email_required_subject' => 'Confirm the e-mail change to your :app_name account',
|
||||||
'generic_intro' => 'Hi :user_name,',
|
'generic_intro' => 'Hi :user_name,',
|
||||||
'generic_regards' => 'Regards,',
|
'generic_regards' => 'Regards,',
|
||||||
|
'moderate_photo_comment_comment_label' => 'Comments:',
|
||||||
|
'moderate_photo_comment_email_label' => 'Author e-mail:',
|
||||||
|
'moderate_photo_comment_name_label' => 'Author name:',
|
||||||
|
'moderate_photo_comment_p1' => 'A new comment has been posted in the :album_name album.',
|
||||||
|
'moderate_photo_comment_p2' => 'Click the button below to open the photo\'s page and approve or reject the comment. You will need to login to see unapproved comments.',
|
||||||
|
'moderate_photo_comment_subject' => 'New comment requires moderation in :album_name',
|
||||||
'test_email_subject' => 'Test e-mail from :app_name'
|
'test_email_subject' => 'Test e-mail from :app_name'
|
||||||
];
|
];
|
@ -48,6 +48,7 @@ return [
|
|||||||
'register_action' => 'Create account',
|
'register_action' => 'Create account',
|
||||||
'remember_me_label' => 'Remember me',
|
'remember_me_label' => 'Remember me',
|
||||||
'remove_action' => 'Remove',
|
'remove_action' => 'Remove',
|
||||||
|
'review_photo_comment_action' => 'Approve/reject comment',
|
||||||
'save_action' => 'Save Changes',
|
'save_action' => 'Save Changes',
|
||||||
'select' => 'Select',
|
'select' => 'Select',
|
||||||
'select_current_text' => '(current)',
|
'select_current_text' => '(current)',
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
@component('mail::message')
|
||||||
|
@lang('email.generic_intro', ['user_name' => $user->name])
|
||||||
|
|
||||||
|
|
||||||
|
@lang('email.moderate_photo_comment_p1', ['album_name' => $album->name])
|
||||||
|
|
||||||
|
|
||||||
|
@lang('email.moderate_photo_comment_p2')
|
||||||
|
|
||||||
|
|
||||||
|
@lang('email.moderate_photo_comment_name_label') {{ $comment->name }}
|
||||||
|
|
||||||
|
@lang('email.moderate_photo_comment_email_label') {{ $comment->email }}
|
||||||
|
|
||||||
|
@lang('email.moderate_photo_comment_comment_label')
|
||||||
|
|
||||||
|
{!! $comment->comment !!}
|
||||||
|
|
||||||
|
@component('mail::button', ['url' => $photo->url(), 'color' => 'blue'])
|
||||||
|
@lang('forms.review_photo_comment_action')
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@lang('email.generic_regards')<br/>
|
||||||
|
{{ UserConfig::get('app_name') }}<br/>
|
||||||
|
<a href="{{ route('home') }}">{{ route('home') }}</a>
|
||||||
|
@endcomponent
|
Loading…
Reference in New Issue
Block a user