I have a template modification applied to the post_macros template. What it does is checks to see if a member who does not have the permission to make a reply to a thread has the permission to use the multi quote, and if so it shows the +Quote button. That works.
However when I select +Quote it does not respond with the: 'message added to multi-quote', but rather opens up the editor and injects the quoted message there. I do not understand why this is happening. The template modification just duplicates the actual multi-quote button:
Note that in the above code I pass an additional parameter to actionReply. All it does is to check if the reply came from the +Quote, and if not returns the parent. If so, then it executes the new action reply (which just removes the canReply permission check and a couple of little things not needed, everything else is the same):
So, why when I click +Quote the message is not added to multi-quote, but rather sent directly to the editor?
Thank-you,
However when I select +Quote it does not respond with the: 'message added to multi-quote', but rather opens up the editor and injects the quoted message there. I do not understand why this is happening. The template modification just duplicates the actual multi-quote button:
HTML:
<xf:set var="$quoteLink">{{ link('threads/reply', $thread, {'quote': $post.post_id, 'mq-add': true}) }}</xf:set>
<xf:if is="$xf.options.multiQuote AND $xf.visitor.user_id">
<a href="{$quoteLink}"
class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote"
title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}"
data-message-id="{$post.post_id}"
data-mq-action="add">{{ phrase('quote') }}</a>
</xf:if>
Note that in the above code I pass an additional parameter to actionReply. All it does is to check if the reply came from the +Quote, and if not returns the parent. If so, then it executes the new action reply (which just removes the canReply permission check and a couple of little things not needed, everything else is the same):
PHP:
class Thread extends XFCP_Thread
{
public function actionReply(ParameterBag $params)
{
if (!$mqAdd = $this->filter('mq-add', 'uint'))
{
return parent::actionReply($params);
}
$visitor = \XF::visitor();
$thread = $this->assertViewableThread($params->thread_id, ['Watch|' . $visitor->user_id]);
if (!$thread->canUseEaeatMultiQuote($error))
{
return $this->noPermission($error);
}
$defaultMessage = '';
$forceAttachmentHash = null;
if ($quote = $this->filter('quote', 'uint'))
{
$post = $this->em()->find('XF:Post', $quote, 'User');
if ($post && $post->thread_id == $thread->thread_id && $post->canView())
{
$defaultMessage = $post->getQuoteWrapper(
$this->app->stringFormatter()->getBbCodeForQuote($post->message, 'post')
);
$forceAttachmentHash = '';
}
}
$viewParams = [
'thread' => $thread,
'forum' => $thread->Forum,
'attachmentData' => $this->getReplyAttachmentData($thread, $forceAttachmentHash),
'defaultMessage' => $defaultMessage
];
return $this->view('XF:Thread\Reply', 'thread_reply', $viewParams);
}
}
So, why when I click +Quote the message is not added to multi-quote, but rather sent directly to the editor?
Thank-you,