XenForo message-footer и ectionBar

  • Автор темы hideman 
  • Дата начала
  • Ответы 0
  • Просмотры 762
  • Подписаны 1
Больше тем от hideman

Недавние поиски:

hideman 

Administrator
Команда форума
6 Июл 2021
88
19
8
USA
Credits
428
В шаблоне iO Child Theme
Панель редактирования сообщений \ публикаций
!!
admin.php?templates/post_macros.6301/edit&style_id=8

PHP:
.message-footer .actionBar-action--report, .message-footer .actionBar-action--edit, .message-footer .actionBar-action--delete, .message-footer .actionBar-action--ip, .message-footer .actionBar-action--warn, .message-footer .actionBar-action--bookmark, .message-footer .actionBar-action--reply, .message-footer .actionBar-action--mq, .message-footer .actionBar-action--like, .message-footer

PHP:
<xf:macro name="post"
          arg-post="!"
          arg-thread="!"
          arg-uix_condensed=""
          arg-highlightedPosts="{{ [] }}">

    <xf:css src="message.less" />
    <xf:set var="$isIgnored" value="{{ $post.isIgnored() }}" />

    <xf:extension name="before"></xf:extension>

    <xf:extension name="extra_classes" value="message--post" />
    <article class="message {{ extension_value('extra_classes') }} {{ $uix_condensed ? 'uix_message--condensed' : '' }} js-post js-inlineModContainer {{ $post.isIgnored() ? 'is-ignored' : '' }} {{ $post.isUnread() ? ' is-unread' : '' }}"
             data-author="{{ $post.User.username ?: $post.username }}"
             data-content="post-{$post.post_id}"
             id="js-post-{$post.post_id}">

        <span class="u-anchorTarget" id="post-{$post.post_id}"></span>

        <xf:extension name="full_body">
            <div class="message-inner">
                <xf:extension name="user_cell">
                    <div class="message-cell message-cell--user">
                        <xf:macro template="message_macros" name="user_info" arg-threadUserId="{$thread.user_id}" arg-user="{$post.User}"
                                  arg-fallbackName="{$post.username}"/>
                    </div>
                </xf:extension>

                <xf:extension name="main_cell">
                    <div class="message-cell message-cell--main">
                        <xf:extension name="main_cell_inner">
                            <div class="message-main uix_messageContent js-quickEditTarget">

                                <xf:extension name="attribution">
                                    <xf:macro name="post_attribution" arg-post="{$post}" arg-thread="{$thread}" />
                                </xf:extension>

                                <div class="message-content js-messageContent">
                                    <xf:extension name="content">

                                        <xf:extension name="notices">
                                            <xf:macro name="post_notices" arg-post="{$post}" arg-thread="{$thread}" />
                                        </xf:extension>

                                        <xf:extension name="user_content">
                                            <xf:macro name="post_user_content" arg-post="{$post}" arg-thread="{$thread}" />
                                        </xf:extension>

                                        <xf:extension name="after_content">
                                            <xf:macro name="post_last_edit" arg-post="{$post}" />
                                        </xf:extension>

                                        <xf:extension name="signature">
                                            <xf:macro template="message_macros" name="signature" arg-user="{$post.User}" />
                                        </xf:extension>

                                    </xf:extension>
                                </div>

                                <div class="reactionsBar js-reactionsList {{ $post.reactions ? 'is-active' : '' }}">
                                    <xf:reactions content="{$post}" link="posts/reactions" />
                                </div>

                                <xf:extension name="footer">
                                    <xf:macro name="post_footer" arg-post="{$post}" arg-thread="{$thread}" />
                                </xf:extension>
                            </div>

                        </xf:extension>
                    </div>
                </xf:extension>
            </div>
        </xf:extension>
    </article>

    <xf:extension name="after"></xf:extension>
    <xf:ad position="post_below_container" arg-post="{$post}" />
</xf:macro>

<xf:macro name="post_attribution"
          arg-post="!"
          arg-thread="!"
          arg-showPosition="{{ true }}"
          arg-showUser="{{ false }}"
          arg-showThreadUnreadIndicator="{{ false }}"
          arg-showReplyCount="{{ false }}"
          arg-repliesPhrase="{{ phrase('replies:') }}"
          arg-mainClass=""
          arg-oppositeClass="">

    <header class="message-attribution message-attribution--split">
        <ul class="message-attribution-main listInline {$mainClass}">
            <xf:if is="$showUser">
                <xf:set var="$username"><xf:username user="{$post.User}" defaultname="{$post.username}" /></xf:set>
                <li class="u-concealed message-attribution-user--top">{{ phrase('by_user_x', {'name':$username}) }}</li>
            </xf:if>
            <li class="u-concealed">
                <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow">
                    <xf:date time="{$post.post_date}" itemprop="datePublished" />
                </a>
            </li>
            <xf:if is="$post.is_question_solution">
                <li class="uix_solutionAttribution">              
                    <span class="is-solution" data-xf-init="tooltip" title="{{ phrase('solution') }}"><xf:fa icon="fa-check-circle" /> {{ phrase('solution') }}</span>
                </li>
            </xf:if>
            <xf:if is="$showReplyCount && $thread.reply_count">
                <li class="u-concealed">
                    <a href="{{ link('threads', $thread) }}#posts">
                        <xf:fa icon="fa-comment" />
                        {$repliesPhrase|raw} {$thread.reply_count|number}
                    </a>
                </li>
            </xf:if>
        </ul>

        <ul class="message-attribution-opposite message-attribution-opposite--list {$oppositeClass}">
            <xf:if is="$post.isUnread()">
                <li><span class="message-newIndicator">{{ phrase('new') }}</span></li>
                <xf:elseif is="$thread.isUnread() && $showThreadUnreadIndicator" />
                <li><span class="message-newIndicator">{{ phrase('new_replies') }}</span></li>
            </xf:if>
            <li>
                <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}"
                    class="message-attribution-gadget"
                    data-xf-init="share-tooltip"
                    data-href="{{ link('posts/share', $post) }}"
                    aria-label="{{ phrase('share')|for_attr }}"
                    rel="nofollow">
                    <xf:fa icon="fa-share-alt"/>
                </a>
            </li>
            <xf:if contentcheck="true">
                <li>
                    <xf:contentcheck>
                        <xf:macro template="bookmark_macros" name="link"
                                  arg-content="{$post}"
                                  arg-class="message-attribution-gadget bookmarkLink--highlightable"
                                  arg-confirmUrl="{{ link('posts/bookmark', $post) }}"
                                  arg-showText="{{ false }}"/>
                    </xf:contentcheck>
                </li>
            </xf:if>
            <xf:if is="$showPosition">
                <li>
                    <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow">
                        #{{ number($post.position + 1) }}
                    </a>
                </li>
            </xf:if>
        </ul>
    </header>
</xf:macro>

<xf:macro name="post_notices" arg-post="!" arg-thread="!">
    <xf:if is="$post.message_state == 'deleted'">
        <div class="messageNotice messageNotice--deleted">
            <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" />
        </div>
        <xf:elseif is="$post.message_state == 'moderated'" />
        <div class="messageNotice messageNotice--moderated">
            {{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }}
        </div>
    </xf:if>
    <xf:if is="$post.warning_message">
        <div class="messageNotice messageNotice--warning">
            {$post.warning_message}
        </div>
    </xf:if>
    <xf:if is="$post.isIgnored()">
        <div class="messageNotice messageNotice--ignored">
            {{ phrase('you_are_ignoring_content_by_this_member') }}
            <xf:showignored />
        </div>
    </xf:if>
</xf:macro>

<xf:macro name="post_user_content" arg-post="!" arg-thread="!" arg-snippet="{{ false }}" arg-displayAds="{{ true }}">

    <div class="message-userContent lbContainer js-lbContainer {{ $isIgnored ? 'is-ignored' : '' }}"
         data-lb-id="post-{$post.post_id}"
         data-lb-caption-desc="{{ $post.User ? $post.User.username : $post.username }} &middot; {{ date_time($post.post_date) }}">

        <xf:if is="$post.isFirstPost()">
            <xf:macro template="custom_fields_macros" name="custom_fields_view"
                      arg-type="threads"
                      arg-group="before"
                      arg-onlyInclude="{$thread.Forum.field_cache}"
                      arg-set="{$thread.custom_fields}"
                      arg-wrapperClass="message-fields message-fields--before" />
        </xf:if>

        <article class="message-body js-selectToQuote">
            <xf:if is="$displayAds">
                <xf:ad position="post_above_content" arg-post="{$post}" />
            </xf:if>
            <xf:if is="$snippet">
                {{ bb_code_snippet($post.message, 'post', $post, $snippet) }}
                <xf:else />
                {{ bb_code($post.message, 'post', $post) }}
            </xf:if>
            <div class="js-selectToQuoteEnd">&nbsp;</div>
            <xf:if is="$displayAds">
                <xf:ad position="post_below_content" arg-post="{$post}" />
            </xf:if>
        </article>

        <xf:if is="$post.isFirstPost()">
            <xf:macro template="custom_fields_macros" name="custom_fields_view"
                      arg-type="threads"
                      arg-group="after"
                      arg-onlyInclude="{$thread.Forum.field_cache}"
                      arg-set="{$thread.custom_fields}"
                      arg-wrapperClass="message-fields message-fields--after" />
        </xf:if>

        <xf:if is="$post.attach_count">
            <xf:macro template="message_macros" name="attachments"
                      arg-attachments="{$post.Attachments}"
                      arg-message="{$post}"
                      arg-canView="{{ $thread.canViewAttachments() }}" />
        </xf:if>
    </div>
</xf:macro>

<xf:macro name="post_last_edit" arg-post="!">
    <xf:if is="$post.last_edit_date">
        <div class="message-lastEdit">
            <xf:if is="$post.user_id == $post.last_edit_user_id">
                {{ phrase('last_edited:') }} <xf:date time="{$post.last_edit_date}" itemprop="dateModified" />
                <xf:else />
                {{ phrase('last_edited_by_moderator:') }} <xf:date time="{$post.last_edit_date}" itemprop="dateModified" />
            </xf:if>
        </div>
    </xf:if>
</xf:macro>

<xf:macro name="post_footer" arg-post="!" arg-thread="!">
    <footer class="message-footer">
        <xf:if contentcheck="true">
            <div class="message-actionBar actionBar">
                <xf:contentcheck>
                    <xf:macro name="post_action_bar" arg-post="{$post}" arg-thread="{$thread}" />
                </xf:contentcheck>
            </div>
        </xf:if>

        <xf:comment> -- moved to above footer --
            <div class="reactionsBar js-reactionsList {{ $post.reactions ? 'is-active' : '' }}">
                <xf:reactions content="{$post}" link="posts/reactions" />
            </div>
        </xf:comment>

        <div class="js-historyTarget message-historyTarget toggleTarget" data-href="trigger-href"></div>
    </footer>
</xf:macro>

<xf:macro name="post_action_bar" arg-post="!" arg-thread="!">
    <xf:if contentcheck="true">
        <div class="actionBar-set actionBar-set--external">
            <xf:contentcheck>

                <xf:if is="{{ property('uix_voteActionButton') != 'never'}}">

                    <xf:if is="$post.isFirstPost()">
                        <xf:if is="$post.Thread.isContentVotingSupported()">
                            <span class="actionBar-action actionBar-action--vote">
                                <xf:macro template="content_vote_macros" name="vote_control"
                                          arg-link="threads/vote"
                                          arg-content="{$thread}" />
                            </span>
                        </xf:if>
                        <xf:else />
                        <xf:if is="$post.isContentVotingSupported()">
                            <span class="actionBar-action actionBar-action--vote">
                                <xf:macro template="content_vote_macros" name="vote_control"
                                          arg-link="posts/vote"
                                          arg-content="{$post}" />
                            </span>
                        </xf:if>
                    </xf:if>
                </xf:if>

                <xf:react content="{$post}" link="posts/react" list="< .js-post | .js-reactionsList" />

                <xf:if is="$thread.canReply() OR $thread.canReplyPreReg()">
                    <xf:set var="$quoteLink">{{ link('threads/reply', $thread, {'quote': $post.post_id}) }}</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 }}"
                           rel="nofollow"
                           data-message-id="{$post.post_id}"
                           data-mq-action="add">{{ phrase('quote') }}</a>
                    </xf:if>

                    <a href="{$quoteLink}"
                       class="actionBar-action actionBar-action--reply"
                       title="{{ phrase('reply_quoting_this_message')|for_attr }}"
                       rel="nofollow"
                       data-xf-click="quote"
                       data-quote-href="{{ link('posts/quote', $post) }}">{{ phrase('reply') }}</a>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>

    <xf:if contentcheck="true">
        <div class="actionBar-set actionBar-set--internal">
            <xf:contentcheck>
                <xf:if is="$post.canUseInlineModeration()">
                    <span class="actionBar-action actionBar-action--inlineMod">
                        <xf:checkbox standalone="true">
                            <xf:option value="{$post.post_id}" class="js-inlineModToggle"
                                       data-xf-init="tooltip"
                                       title="{{ phrase('select_for_moderation') }}"
                                       label="{{ phrase('select_for_moderation') }}"
                                       hiddenlabel="true" />
                        </xf:checkbox>
                    </span>
                </xf:if>

                <xf:if is="$post.canReport()">
                    <a href="{{ link('posts/report', $post) }}"
                       class="actionBar-action actionBar-action--report"
                       data-xf-click="overlay">{{ phrase('report_verb') }}</a>
                </xf:if>

                <xf:set var="$hasActionBarMenu" value="{{ false }}" />
                <xf:if is="$post.canEdit()">
                    <xf:js src="xf/message.js" min="1" />
                    <a href="{{ link('posts/edit', $post) }}"
                       class="actionBar-action actionBar-action--edit actionBar-action--menuItem"
                       data-xf-click="quick-edit"
                       data-editor-target="#js-post-{$post.post_id} .js-quickEditTarget"
                       data-menu-closer="true">{{ phrase('edit') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$post.edit_count && $post.canViewHistory()">
                    <a href="{{ link('posts/history', $post) }}"
                       class="actionBar-action actionBar-action--history actionBar-action--menuItem"
                       data-xf-click="toggle"
                       data-target="#js-post-{$post.post_id} .js-historyTarget"
                       data-menu-closer="true">{{ phrase('history') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$post.canDelete('soft')">
                    <a href="{{ link('posts/delete', $post) }}"
                       class="actionBar-action actionBar-action--delete actionBar-action--menuItem"
                       data-xf-click="overlay">{{ phrase('delete') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$post.message_state == 'deleted' AND $post.canUndelete()">
                    <a href="{{ link('posts/undelete', $post) }}"
                       class="actionBar-action actionBar-action--undelete actionBar-action--menuItem"
                       data-xf-click="overlay">{{ phrase('undelete') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$post.canCleanSpam()">
                    <a href="{{ link('spam-cleaner', $post) }}"
                       class="actionBar-action actionBar-action--spam actionBar-action--menuItem"
                       data-xf-click="overlay">{{ phrase('spam') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$xf.visitor.canViewIps() && $post.ip_id">
                    <a href="{{ link('posts/ip', $post) }}"
                       class="actionBar-action actionBar-action--ip actionBar-action--menuItem"
                       data-xf-click="overlay">{{ phrase('ip') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>
                <xf:if is="$post.canWarn()">

                    <a href="{{ link('posts/warn', $post) }}"
                       class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a>

                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                    <xf:elseif is="$post.warning_id && $xf.visitor.canViewWarnings()" />
                    <a href="{{ link('warnings', {'warning_id': $post.warning_id}) }}"
                       class="actionBar-action actionBar-action--warn actionBar-action--menuItem"
                       data-xf-click="overlay">{{ phrase('view_warning') }}</a>
                    <xf:set var="$hasActionBarMenu" value="{{ true }}" />
                </xf:if>

                <xf:if is="$hasActionBarMenu">
                    <a class="actionBar-action actionBar-action--menuTrigger"
                       data-xf-click="menu"
                       title="{{ phrase('more_options')|for_attr }}"
                       role="button"
                       tabindex="0"
                       aria-expanded="false"
                       aria-haspopup="true">&#8226;&#8226;&#8226;</a>

                    <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar">
                        <div class="menu-content">
                            <h4 class="menu-header">{{ phrase('more_options') }}</h4>
                            <div class="js-menuBuilderTarget"></div>
                        </div>
                    </div>
                </xf:if>
            </xf:contentcheck>
        </div>
    </xf:if>
</xf:macro>

<xf:macro name="post_deleted" arg-post="!" arg-thread="!">
    <xf:css src="message.less" />
    <div class="message message--deleted message--post{{ $post.isIgnored() ? ' is-ignored' : '' }}{{ $post.isUnread() ? ' is-unread' : '' }} js-post js-inlineModContainer"
         data-author="{{ $post.User.username ?: $post.username }}"
         data-content="post-{$post.post_id}">

        <span class="u-anchorTarget" id="post-{$post.post_id}"></span>
        <div class="message-inner">
            <div class="message-cell message-cell--user">
                <xf:macro template="message_macros" name="user_info_simple" arg-user="{$post.User}" arg-fallbackName="{$post.username}" />
            </div>
            <div class="message-cell message-cell--main">
                <div class="uix_messageContent">
                    <div class="message-attribution">
                        <ul class="listInline listInline--bullet message-attribution-main">
                            <li><a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed" rel="nofollow"><xf:date time="{$post.post_date}" /></a></li>
                            <li><xf:username user="{$post.User}" defaultname="{$post.username}" class="u-concealed" /></li>
                        </ul>
                    </div>

                    <div class="messageNotice messageNotice--deleted">
                        <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" />

                        <a href="{{ link('posts/show', $post) }}" class="u-jsOnly" data-xf-click="inserter" data-replace="[data-content=post-{$post.post_id}]">{{ phrase('show...') }}</a>

                        <xf:if is="$post.canUseInlineModeration()">
                            <span style="display: none">
                                <!-- this can be actioned on the full post -->
                                <xf:checkbox standalone="true">
                                    <xf:option value="{$post.post_id}" class="js-inlineModToggle"
                                               hiddenlabel="true" />
                                </xf:checkbox>
                            </span>
                        </xf:if>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <xf:ad position="post_below_container" arg-post="{$post}" />
</xf:macro>