senaidh
Участники
- Сообщения
- 16
- Реакции
- 0
- Баллы
- 8
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: В настоящее время эта функция требует доступа к сайту с помощью встроенного браузера Safari.
xfrm_resource_view
<div class="resourceSidebarGroup">
<dl class="pairs pairs--justified">
<dt>{{ phrase('author') }}</dt>
<dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd>
</dl>
<xf:if is="$resource.isDownloadable()">
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_downloads') }}</dt>
<dd>{$resource.download_count|number}</dd>
</dl>
</xf:if>
<dl class="pairs pairs--justified">
<dt>{{ phrase('views') }}</dt>
<dd>{{ max($resource.view_count, $resource.download_count, 1)|number }}</dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_first_release') }}</dt>
<dd><xf:date time="{$resource.resource_date}" /></dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_last_update') }}</dt>
<dd><xf:date time="{$resource.last_update}" /></dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('rating') }}</dt>
<dd>
<xf:macro template="rating_macros" name="stars_text"
arg-rating="{$resource.rating_avg}"
arg-count="{$resource.rating_count}"
arg-rowClass="ratingStarsRow--textBlock" />
</dd>
</dl>
</div>
<div class="resourceSidebarGroup">
<dl class="pairs pairs--justified">
<dt>{{ phrase('author') }}</dt>
<dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd>
</dl>
</div>
<div class="resourceStatsBlock">
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.CurrentVersion.version_string}</span>
<span class="resource-title">{{ phrase('xfrm_version') }}</span>
</div>
<xf:if is="$resource.isDownloadable()">
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.download_count|number}</span>
<span class="resource-title">{{ phrase('xfrm_downloads') }}</span>
</div>
</xf:if>
<div class="resourceInfoBlock">
<span class="resource-data">{{ max($resource.view_count, $resource.download_count, 1)|number }}</span>
<span class="resource-title">{{ phrase('views') }}</span>
</div>
</div>
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<xf:macro template="rating_macros" name="stars_text"
arg-rating="{$resource.rating_avg}"
arg-count="{$resource.rating_count}"
arg-rowClass="ratingStarsRow--textBlock" />
</div>
<div class="resourceInfoBlock">
<span class="resource-data"><xf:date time="{$resource.last_update}" /></span>
<span class="resource-title">{{ phrase('last_updated') }}</span>
</div>
</div>
</div>
extra.less
.resourceBody-sidebar
{
width: 325px;
.resourceStatsBlock
{
display: flex;
flex-direction: column;
gap: 0.5rem;
padding: 10px;
border-radius: 5px;
.resourceBlockGroup
{
display: flex;
gap: 10px;
flex-wrap: nowrap;
.resourceInfoBlock
{
padding: 10px;
border-radius: 3px;
width: 100%;
text-align: center;
border: 1px solid #e5e9ec;
> .resource-data
{
font-size: 14px;
font-weight: 500;
}
> .resource-title
{
font-weight: 400;
}
> span
{
display: block;
}
}
}
}
}
Отключите модификацию, которую делает плагин. В поле заменить замените на этот кодКонфликс с плагином [OzzModz] XFRM File Extension And Size Display
<div class="resourceSidebarGroup">
<dl class="pairs pairs--justified">
<dt>{{ phrase('author') }}</dt>
<dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd>
</dl>
</div>
<div class="resourceStatsBlock">
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.CurrentVersion.version_string}</span>
<span class="resource-title">{{ phrase('xfrm_version') }}</span>
</div>
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.download_count|number}</span>
<span class="resource-title">{{ phrase('xfrm_downloads') }}</span>
</div>
<div class="resourceInfoBlock">
<span class="resource-data">{{ max($resource.view_count, $resource.download_count, 1)|number }}</span>
<span class="resource-title">{{ phrase('views') }}</span>
</div>
</div>
<xf:if is="count($resource.CurrentVersion.Attachments) == 1">
<div class="resourceBlockGroup">
<xf:set var="$attachment" value="{{ $resource.CurrentVersion.Attachments|first }}" />
<div class="resourceInfoBlock">
<span class="resource-data">{{ $attachment.getExtension() }}</span>
<span class="resource-title">{{ phrase('extensionsize_extention_type') }}</span>
</div>
<div class="resourceInfoBlock">
<span class="resource-data">{{ $attachment.getFileSize()|file_size }}</span>
<span class="resource-title">{{ phrase('extensionsize_file_size') }}</span>
</div>
</div>
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<span class="resource-data" data-xf-init="tooltip" title="{{ $attachment.Data.file_hash }}" style="cursor: pointer;"><a>{{ $attachment.Data.file_hash }}</a></span>
<span class="resource-title">{{ phrase('ozzmodzExtensionSize_hash') }}</span>
</div>
</div>
</xf:if>
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<xf:macro template="rating_macros" name="stars_text"
arg-rating="{$resource.rating_avg}"
arg-count="{$resource.rating_count}"
arg-rowClass="ratingStarsRow--textBlock" />
</div>
<div class="resourceInfoBlock">
<span class="resource-data"><xf:date time="{$resource.last_update}" /></span>
<span class="resource-title">{{ phrase('last_updated') }}</span>
</div>
</div>
</div>
<xf:title>{$resource.title}</xf:title>
<xf:set var="$descSnippet" value="{{ snippet($description.message, 250, {'stripBbCode': true}) }}" />
<xf:macro template="metadata_macros" name="metadata"
arg-description="{$descSnippet}"
arg-shareUrl="{{ link('canonical:resources', $resource) }}"
arg-canonicalUrl="{{ link('canonical:resources', $resource) }}" />
<xf:page option="ldJsonHtml">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CreativeWork",
"@id": "{{ link('canonical:resources', $resource)|escape('json') }}",
"name": "{$resource.title|escape('json')}",
"headline": "{$resource.title|escape('json')}",
"alternativeHeadline": "{$resource.tag_line|escape('json')}",
"description": "{$descSnippet|escape('json')}",
<xf:if is="$resource.isVersioned()">
"version": "{$resource.CurrentVersion.version_string|escape('json')}",
</xf:if>
<xf:if is="$xf.options.xfrmAllowIcons AND $resource.icon_date">
"thumbnailUrl": "{{ $resource.getIconUrl('s', true)|escape('json') }}",
</xf:if>
"dateCreated": "{{ date($resource.resource_date, 'c')|escape('json') }}",
"dateModified": "{{ date($resource.last_update, 'c')|escape('json') }}",
<xf:if is="$resource.rating_count">"aggregateRating": {
"@type": "AggregateRating",
"ratingCount": "{$resource.rating_count|escape('json')}",
"ratingValue": "{$resource.rating_avg|escape('json')}"
},</xf:if>
<xf:if is="$resource.hasViewableDiscussion()">
"discussionUrl": "{{ link('canonical:threads', $resource.Discussion)|escape('json') }}",
</xf:if>
"author": {
"@type": "Person",
"name": "{{ ($resource.User ? $resource.User.username : $resource.username)|escape('json') }}"
}
}
</script>
</xf:page>
<xf:if is="$iconError">
<div class="blockMessage blockMessage--error">{{ phrase('xfrm_new_icon_could_not_be_applied_try_later') }}</div>
</xf:if>
<xf:wrap template="xfrm_resource_wrapper">
<xf:set var="$pageSelected" value="overview" />
</xf:wrap>
<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{{ $resource.canViewUpdateImages() }}" />
<div class="block">
<xf:if contentcheck="true">
<div class="block-outer">
<div class="block-outer-opposite">
<xf:contentcheck>
<xf:macro template="xfrm_resource_wrapper_macros" name="action_buttons" arg-resource="{$resource}" />
</xf:contentcheck>
</div>
</div>
</xf:if>
<div class="block-container">
<div class="block-body lbContainer js-resourceBody"
data-xf-init="lightbox"
data-lb-id="resource-{$resource.resource_id}"
data-lb-caption-desc="{{ $resource.User ? $resource.User.username : $resource.username }} · {{ date_time($resource.resource_date) }}">
<div class="resourceBody">
<article class="resourceBody-main js-lbContainer">
<xf:macro template="custom_fields_macros" name="custom_fields_view"
arg-type="resources"
arg-group="above_info"
arg-onlyInclude="{$category.field_cache}"
arg-set="{$resource.custom_fields}"
arg-wrapperClass="resourceBody-fields resourceBody-fields--before" />
<xf:if is="$trimmedDescription">
{{ bb_code($trimmedDescription, 'resource_update', $description) }}
<div class="block-rowMessage block-rowMessage--important">
{{ phrase('xfrm_do_not_have_permission_to_view_full_content_of_this_resource') }}
<xf:if is="!$xf.visitor.user_id">
<a href="{{ link('login') }}" data-xf-click="overlay">{{ phrase('log_in_or_register_now') }}</a>
</xf:if>
</div>
<xf:else />
{{ bb_code($description.message, 'resource_update', $description) }}
</xf:if>
<xf:macro template="custom_fields_macros" name="custom_fields_view"
arg-type="resources"
arg-group="below_info"
arg-onlyInclude="{$category.field_cache}"
arg-set="{$resource.custom_fields}"
arg-wrapperClass="resourceBody-fields resourceBody-fields--after" />
<xf:if is="$description.attach_count">
<xf:if contentcheck="true">
<xf:css src="attachments.less" />
<ul class="attachmentList resourceBody-attachments">
<xf:contentcheck>
<xf:foreach loop="$description.Attachments" value="$attachment" if="!$description.isAttachmentEmbedded($attachment)">
<xf:macro template="attachment_macros" name="attachment_list_item"
arg-attachment="{$attachment}"
arg-canView="{{ $resource.canViewUpdateImages() }}" />
</xf:foreach>
</xf:contentcheck>
</ul>
</xf:if>
</xf:if>
<xf:if contentcheck="true">
<div class="actionBar">
<xf:contentcheck>
<xf:if contentcheck="true">
<div class="actionBar-set actionBar-set--external">
<xf:contentcheck>
<xf:react content="{$description}" link="resources/update/react" list="< .js-resourceBody | .js-reactionsList" />
</xf:contentcheck>
</div>
</xf:if>
<xf:if contentcheck="true">
<div class="actionBar-set actionBar-set--internal">
<xf:contentcheck>
<xf:if is="$description.canReport()">
<a href="{{ link('resources/update/report', $description) }}"
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="$resource.canEdit()">
<a href="{{ link('resources/edit', $resource) }}"
class="actionBar-action actionBar-action--edit actionBar-action--menuItem">{{ phrase('edit') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
</xf:if>
<xf:if is="$description.edit_count && $description.canViewHistory()">
<a href="{{ link('resources/update/history', $description) }}"
class="actionBar-action actionBar-action--history actionBar-action--menuItem"
data-xf-click="toggle"
data-target="< .js-resourceBody | .js-historyTarget"
data-menu-closer="true">{{ phrase('history') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
</xf:if>
<xf:if is="$description.canDelete('soft')">
<a href="{{ link('resources/delete', $description) }}"
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="$xf.visitor.canViewIps() && $description.ip_id">
<a href="{{ link('resources/update/ip', $description) }}"
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="$description.canWarn()">
<a href="{{ link('resources/update/warn', $description) }}"
class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
<xf:elseif is="$description.warning_id && $xf.visitor.canViewWarnings()" />
<a href="{{ link('warnings', {'warning_id': $description.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">•••</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:contentcheck>
</div>
</xf:if>
<div class="reactionsBar js-reactionsList {{ $description.reactions ? 'is-active' : '' }}">
<xf:reactions content="{$description}" link="resources/update/reactions" />
</div>
<xf:if is="$description.edit_count && $description.canViewHistory()">
<div class="js-historyTarget toggleTarget" data-href="trigger-href"></div>
</xf:if>
</article>
<div class="resourceBody-sidebar">
<div class="resourceSidebarGroup">
<dl class="pairs pairs--justified">
<dt>{{ phrase('author') }}</dt>
<dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd>
</dl>
<xf:if is="$resource.isDownloadable()">
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_downloads') }}</dt>
<dd>{$resource.download_count|number}</dd>
</dl>
</xf:if>
<dl class="pairs pairs--justified">
<dt>{{ phrase('views') }}</dt>
<dd>{{ max($resource.view_count, $resource.download_count, 1)|number }}</dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_first_release') }}</dt>
<dd><xf:date time="{$resource.resource_date}" /></dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('xfrm_last_update') }}</dt>
<dd><xf:date time="{$resource.last_update}" /></dd>
</dl>
<dl class="pairs pairs--justified">
<dt>{{ phrase('rating') }}</dt>
<dd>
<xf:macro template="rating_macros" name="stars_text"
arg-rating="{$resource.rating_avg}"
arg-count="{$resource.rating_count}"
arg-rowClass="ratingStarsRow--textBlock" />
</dd>
</dl>
</div>
<xf:if contentcheck="true">
<div class="resourceSidebarGroup resourceSidebarGroup--buttons">
<xf:contentcheck>
<xf:if is="$resource.hasViewableDiscussion()">
<xf:button href="{{ link('threads', $resource.Discussion) }}" class="button--fullWidth">{{ phrase('xfrm_join_discussion') }}</xf:button>
</xf:if>
<xf:if is="$resource.external_url">
<xf:button href="{$resource.external_url}" class="button--link button--fullWidth">{{ phrase('xfrm_more_information') }}</xf:button>
</xf:if>
<xf:if is="$resource.alt_support_url AND $resource.Category.enable_support_url">
<xf:button href="{$resource.alt_support_url}" class="button--link button--fullWidth">{{ phrase('xfrm_get_support') }}</xf:button>
</xf:if>
</xf:contentcheck>
</div>
</xf:if>
<xf:if is="$resource.canViewTeamMembers() && $teamMembers is not empty">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">
<xf:if is="$resource.canManageTeamMembers()">
<a href="{{ link('resources/manage-team', $resource) }}" data-xf-click="overlay">
{{ phrase('xfrm_resource_team') }}
</a>
<xf:else />
{{ phrase('xfrm_resource_team') }}
</xf:if>
</h4>
<ul class="resourceSidebarList">
<xf:foreach loop="$teamMembers" value="$teamMember">
<li>
<div class="contentRow">
<div class="contentRow-figure">
<xf:avatar user="$teamMember.User" size="xxs" />
</div>
<div class="contentRow-main contentRow-main--close">
<xf:username user="$teamMember.User" rich="true" />
<div class="contentRow-minor">
<xf:usertitle user="$teamMember.User" />
</div>
</div>
</div>
</li>
</xf:foreach>
</ul>
</div>
</xf:if>
<xf:if is="$authorOthers is not empty">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">
<a href="{{ link('resources/authors', $resource.User) }}">{{ phrase('xfrm_more_resources_from_x', {'name': $resource.User.username}) }}</a>
</h4>
<ul class="resourceSidebarList">
<xf:foreach loop="$authorOthers" value="$authorOther">
<li>
<xf:macro template="xfrm_resource_list_macros" name="resource_simple"
arg-resource="{$authorOther}"
arg-withMeta="{{ false }}" />
</li>
</xf:foreach>
</ul>
</div>
</xf:if>
<xf:if contentcheck="true">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">{{ phrase('xfrm_share_this_resource') }}</h4>
<xf:contentcheck>
<xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" />
</xf:contentcheck>
</div>
</xf:if>
</div>
</div>
</div>
</div>
</div>
<xf:if is="$latestUpdates is not empty">
<div class="block">
<div class="block-container">
<h3 class="block-header">{{ phrase('xfrm_latest_updates') }}</h3>
<ol class="block-body">
<xf:foreach loop="$latestUpdates" value="$update">
<li class="block-row block-row--separated">
<h3 class="block-textHeader">
<a href="{{ link('resources/update', $update) }}">{$update.title}</a>
</h3>
<div>{{ snippet($update.message, 100, {'stripBbCode': true}) }}</div>
</xf:foreach>
</ol>
<div class="block-footer">
<span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/updates', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span>
</div>
</div>
</div>
</xf:if>
<xf:if is="$latestReviews is not empty">
<div class="block">
<div class="block-container">
<h3 class="block-header">{{ phrase('xfrm_latest_reviews') }}</h3>
<div class="block-body">
<xf:foreach loop="$latestReviews" value="$review">
<xf:macro template="xfrm_resource_review_macros" name="review"
arg-review="{$review}"
arg-resource="{$resource}" />
</xf:foreach>
</div>
<div class="block-footer">
<span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/reviews', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span>
</div>
</div>
</div>
</xf:if>
<xf:title>{$resource.title}</xf:title>
<xf:set var="$descSnippet" value="{{ snippet($description.message, 250, {'stripBbCode': true}) }}" />
<xf:macro template="metadata_macros" name="metadata"
arg-description="{$descSnippet}"
arg-shareUrl="{{ link('canonical:resources', $resource) }}"
arg-canonicalUrl="{{ link('canonical:resources', $resource) }}" />
<xf:page option="ldJsonHtml">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CreativeWork",
"@id": "{{ link('canonical:resources', $resource)|escape('json') }}",
"name": "{$resource.title|escape('json')}",
"headline": "{$resource.title|escape('json')}",
"alternativeHeadline": "{$resource.tag_line|escape('json')}",
"description": "{$descSnippet|escape('json')}",
<xf:if is="$resource.isVersioned()">
"version": "{$resource.CurrentVersion.version_string|escape('json')}",
</xf:if>
<xf:if is="$xf.options.xfrmAllowIcons AND $resource.icon_date">
"thumbnailUrl": "{{ $resource.getIconUrl('s', true)|escape('json') }}",
</xf:if>
"dateCreated": "{{ date($resource.resource_date, 'c')|escape('json') }}",
"dateModified": "{{ date($resource.last_update, 'c')|escape('json') }}",
<xf:if is="$resource.rating_count">"aggregateRating": {
"@type": "AggregateRating",
"ratingCount": "{$resource.rating_count|escape('json')}",
"ratingValue": "{$resource.rating_avg|escape('json')}"
},</xf:if>
<xf:if is="$resource.hasViewableDiscussion()">
"discussionUrl": "{{ link('canonical:threads', $resource.Discussion)|escape('json') }}",
</xf:if>
"author": {
"@type": "Person",
"name": "{{ ($resource.User ? $resource.User.username : $resource.username)|escape('json') }}"
}
}
</script>
</xf:page>
<xf:if is="$iconError">
<div class="blockMessage blockMessage--error">{{ phrase('xfrm_new_icon_could_not_be_applied_try_later') }}</div>
</xf:if>
<xf:wrap template="xfrm_resource_wrapper">
<xf:set var="$pageSelected" value="overview" />
</xf:wrap>
<xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{{ $resource.canViewUpdateImages() }}" />
<div class="block">
<xf:if contentcheck="true">
<div class="block-outer">
<div class="block-outer-opposite">
<xf:contentcheck>
<xf:macro template="xfrm_resource_wrapper_macros" name="action_buttons" arg-resource="{$resource}" />
</xf:contentcheck>
</div>
</div>
</xf:if>
<div class="block-container">
<div class="block-body lbContainer js-resourceBody"
data-xf-init="lightbox"
data-lb-id="resource-{$resource.resource_id}"
data-lb-caption-desc="{{ $resource.User ? $resource.User.username : $resource.username }} · {{ date_time($resource.resource_date) }}">
<div class="resourceBody">
<article class="resourceBody-main js-lbContainer">
<xf:macro template="custom_fields_macros" name="custom_fields_view"
arg-type="resources"
arg-group="above_info"
arg-onlyInclude="{$category.field_cache}"
arg-set="{$resource.custom_fields}"
arg-wrapperClass="resourceBody-fields resourceBody-fields--before" />
<xf:if is="$trimmedDescription">
{{ bb_code($trimmedDescription, 'resource_update', $description) }}
<div class="block-rowMessage block-rowMessage--important">
{{ phrase('xfrm_do_not_have_permission_to_view_full_content_of_this_resource') }}
<xf:if is="!$xf.visitor.user_id">
<a href="{{ link('login') }}" data-xf-click="overlay">{{ phrase('log_in_or_register_now') }}</a>
</xf:if>
</div>
<xf:else />
{{ bb_code($description.message, 'resource_update', $description) }}
</xf:if>
<xf:macro template="custom_fields_macros" name="custom_fields_view"
arg-type="resources"
arg-group="below_info"
arg-onlyInclude="{$category.field_cache}"
arg-set="{$resource.custom_fields}"
arg-wrapperClass="resourceBody-fields resourceBody-fields--after" />
<xf:if is="$description.attach_count">
<xf:if contentcheck="true">
<xf:css src="attachments.less" />
<ul class="attachmentList resourceBody-attachments">
<xf:contentcheck>
<xf:foreach loop="$description.Attachments" value="$attachment" if="!$description.isAttachmentEmbedded($attachment)">
<xf:macro template="attachment_macros" name="attachment_list_item"
arg-attachment="{$attachment}"
arg-canView="{{ $resource.canViewUpdateImages() }}" />
</xf:foreach>
</xf:contentcheck>
</ul>
</xf:if>
</xf:if>
<xf:if contentcheck="true">
<div class="actionBar">
<xf:contentcheck>
<xf:if contentcheck="true">
<div class="actionBar-set actionBar-set--external">
<xf:contentcheck>
<xf:react content="{$description}" link="resources/update/react" list="< .js-resourceBody | .js-reactionsList" />
</xf:contentcheck>
</div>
</xf:if>
<xf:if contentcheck="true">
<div class="actionBar-set actionBar-set--internal">
<xf:contentcheck>
<xf:if is="$description.canReport()">
<a href="{{ link('resources/update/report', $description) }}"
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="$resource.canEdit()">
<a href="{{ link('resources/edit', $resource) }}"
class="actionBar-action actionBar-action--edit actionBar-action--menuItem">{{ phrase('edit') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
</xf:if>
<xf:if is="$description.edit_count && $description.canViewHistory()">
<a href="{{ link('resources/update/history', $description) }}"
class="actionBar-action actionBar-action--history actionBar-action--menuItem"
data-xf-click="toggle"
data-target="< .js-resourceBody | .js-historyTarget"
data-menu-closer="true">{{ phrase('history') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
</xf:if>
<xf:if is="$description.canDelete('soft')">
<a href="{{ link('resources/delete', $description) }}"
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="$xf.visitor.canViewIps() && $description.ip_id">
<a href="{{ link('resources/update/ip', $description) }}"
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="$description.canWarn()">
<a href="{{ link('resources/update/warn', $description) }}"
class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a>
<xf:set var="$hasActionBarMenu" value="{{ true }}" />
<xf:elseif is="$description.warning_id && $xf.visitor.canViewWarnings()" />
<a href="{{ link('warnings', {'warning_id': $description.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">•••</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:contentcheck>
</div>
</xf:if>
<div class="reactionsBar js-reactionsList {{ $description.reactions ? 'is-active' : '' }}">
<xf:reactions content="{$description}" link="resources/update/reactions" />
</div>
<xf:if is="$description.edit_count && $description.canViewHistory()">
<div class="js-historyTarget toggleTarget" data-href="trigger-href"></div>
</xf:if>
</article>
<div class="resourceSidebarGroup">
<dl class="pairs pairs--justified">
<dt>{{ phrase('author') }}</dt>
<dd><xf:username user="{$resource.User}" defaultname="{$resource.username}" /></dd>
</dl>
</div>
<div class="resourceStatsBlock">
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.CurrentVersion.version_string}</span>
<span class="resource-title">{{ phrase('xfrm_version') }}</span>
</div>
<xf:if is="$resource.isDownloadable()">
<div class="resourceInfoBlock">
<span class="resource-data">{$resource.download_count|number}</span>
<span class="resource-title">{{ phrase('xfrm_downloads') }}</span>
</div>
</xf:if>
<div class="resourceInfoBlock">
<span class="resource-data">{{ max($resource.view_count, $resource.download_count, 1)|number }}</span>
<span class="resource-title">{{ phrase('views') }}</span>
</div>
</div>
<div class="resourceBlockGroup">
<div class="resourceInfoBlock">
<xf:macro template="rating_macros" name="stars_text"
arg-rating="{$resource.rating_avg}"
arg-count="{$resource.rating_count}"
arg-rowClass="ratingStarsRow--textBlock" />
</div>
<div class="resourceInfoBlock">
<span class="resource-data"><xf:date time="{$resource.last_update}" /></span>
<span class="resource-title">{{ phrase('last_updated') }}</span>
</div>
</div>
<xf:if contentcheck="true">
<div class="resourceSidebarGroup resourceSidebarGroup--buttons">
<xf:contentcheck>
<xf:if is="$resource.hasViewableDiscussion()">
<xf:button href="{{ link('threads', $resource.Discussion) }}" class="button--fullWidth">{{ phrase('xfrm_join_discussion') }}</xf:button>
</xf:if>
<xf:if is="$resource.external_url">
<xf:button href="{$resource.external_url}" class="button--link button--fullWidth">{{ phrase('xfrm_more_information') }}</xf:button>
</xf:if>
<xf:if is="$resource.alt_support_url AND $resource.Category.enable_support_url">
<xf:button href="{$resource.alt_support_url}" class="button--link button--fullWidth">{{ phrase('xfrm_get_support') }}</xf:button>
</xf:if>
</xf:contentcheck>
</div>
</xf:if>
<xf:if is="$resource.canViewTeamMembers() && $teamMembers is not empty">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">
<xf:if is="$resource.canManageTeamMembers()">
<a href="{{ link('resources/manage-team', $resource) }}" data-xf-click="overlay">
{{ phrase('xfrm_resource_team') }}
</a>
<xf:else />
{{ phrase('xfrm_resource_team') }}
</xf:if>
</h4>
<ul class="resourceSidebarList">
<xf:foreach loop="$teamMembers" value="$teamMember">
<li>
<div class="contentRow">
<div class="contentRow-figure">
<xf:avatar user="$teamMember.User" size="xxs" />
</div>
<div class="contentRow-main contentRow-main--close">
<xf:username user="$teamMember.User" rich="true" />
<div class="contentRow-minor">
<xf:usertitle user="$teamMember.User" />
</div>
</div>
</div>
</li>
</xf:foreach>
</ul>
</div>
</xf:if>
<xf:if is="$authorOthers is not empty">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">
<a href="{{ link('resources/authors', $resource.User) }}">{{ phrase('xfrm_more_resources_from_x', {'name': $resource.User.username}) }}</a>
</h4>
<ul class="resourceSidebarList">
<xf:foreach loop="$authorOthers" value="$authorOther">
<li>
<xf:macro template="xfrm_resource_list_macros" name="resource_simple"
arg-resource="{$authorOther}"
arg-withMeta="{{ false }}" />
</li>
</xf:foreach>
</ul>
</div>
</xf:if>
<xf:if contentcheck="true">
<div class="resourceSidebarGroup">
<h4 class="resourceSidebarGroup-title">{{ phrase('xfrm_share_this_resource') }}</h4>
<xf:contentcheck>
<xf:macro template="share_page_macros" name="buttons" arg-iconic="{{ true }}" />
</xf:contentcheck>
</div>
</xf:if>
</div>
</div>
</div>
</div>
</div>
<xf:if is="$latestUpdates is not empty">
<div class="block">
<div class="block-container">
<h3 class="block-header">{{ phrase('xfrm_latest_updates') }}</h3>
<ol class="block-body">
<xf:foreach loop="$latestUpdates" value="$update">
<li class="block-row block-row--separated">
<h3 class="block-textHeader">
<a href="{{ link('resources/update', $update) }}">{$update.title}</a>
</h3>
<div>{{ snippet($update.message, 100, {'stripBbCode': true}) }}</div>
</xf:foreach>
</ol>
<div class="block-footer">
<span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/updates', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span>
</div>
</div>
</div>
</xf:if>
<xf:if is="$latestReviews is not empty">
<div class="block">
<div class="block-container">
<h3 class="block-header">{{ phrase('xfrm_latest_reviews') }}</h3>
<div class="block-body">
<xf:foreach loop="$latestReviews" value="$review">
<xf:macro template="xfrm_resource_review_macros" name="review"
arg-review="{$review}"
arg-resource="{$resource}" />
</xf:foreach>
</div>
<div class="block-footer">
<span class="block-footer-controls"><xf:button class="button--link" href="{{ link('resources/reviews', $resource) }}">{{ phrase('xfrm_read_more...') }}</xf:button></span>
</div>
</div>
</div>
</xf:if>
Мы используем основные cookies для обеспечения работы этого сайта, а также дополнительные cookies для обеспечения максимального удобства пользователя.
Посмотрите дополнительную информацию и настройте свои предпочтения