mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 18:31:57 +03:00
22fe1c01de
fixes https://github.com/TryGhost/Team/issues/2084 - When audience feedback is enabled, we use a single 'conversions' count instead of having separate ones for signups and paid conversions. - The analytics component is separated so we can change it without breaking the existing page.
158 lines
7.0 KiB
Handlebars
158 lines
7.0 KiB
Handlebars
<section class="gh-canvas" {{did-insert this.loadData}}>
|
|
|
|
<GhCanvasHeader class="gh-canvas-header gh-post-analytics-header">
|
|
<div class="flex flex-column flex-grow-1">
|
|
<div class="gh-canvas-breadcrumb">
|
|
<LinkTo @route="posts">
|
|
Posts
|
|
</LinkTo>
|
|
{{svg-jar "arrow-right-small"}}Analytics
|
|
</div>
|
|
<h2 class="gh-canvas-title gh-post-title">
|
|
{{this.post.title}}
|
|
</h2>
|
|
<div class="gh-post-analytics-meta">
|
|
<div class="gh-post-analytics-meta-text">
|
|
{{#if this.post.hasBeenEmailed }}
|
|
{{#if this.post.emailOnly}}
|
|
Sent
|
|
{{else}}
|
|
Published and sent
|
|
{{/if}}
|
|
{{else}}
|
|
Published
|
|
{{#if @post.didEmailFail}}
|
|
but failed to send
|
|
{{else}}
|
|
on your site
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#let (moment-site-tz this.post.publishedAtUTC) as |publishedAt|}}
|
|
on
|
|
{{moment-format publishedAt "D MMM YYYY"}}
|
|
at
|
|
{{moment-format publishedAt "HH:mm"}}
|
|
{{/let}}
|
|
</div>
|
|
<LinkTo @route="editor.edit" @models={{array this.post.displayName this.post.id}} class="gh-post-list-cta edit" title="">
|
|
{{svg-jar "pen" title=""}}<span>Edit post</span>
|
|
</LinkTo>
|
|
</div>
|
|
</div>
|
|
</GhCanvasHeader>
|
|
|
|
<h4 class="gh-main-section-header small bn">
|
|
Engagement
|
|
</h4>
|
|
<div class="gh-post-analytics-box">
|
|
{{#if this.post.hasBeenEmailed}}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "emails.post_id:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.email.emailCount}}</h3>
|
|
<p>Sent</p>
|
|
</LinkTo>
|
|
</div>
|
|
|
|
{{#if this.post.showEmailOpenAnalytics }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "opened_emails.post_id:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.email.openedCount}}</h3>
|
|
<p>Opened — <strong>{{this.post.email.openRate}}%</strong></p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.post.showEmailClickAnalytics }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "clicked_links.post_id:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.count.clicks}}</h3>
|
|
<p>Clicked — <strong>{{this.post.clickRate}}%</strong></p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if this.post.showAttributionAnalytics }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "signup:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.count.signups}}</h3>
|
|
<p>{{gh-pluralize this.post.count.signups "signup" without-count=true}}</p>
|
|
</LinkTo>
|
|
</div>
|
|
|
|
{{#if this.post.showPaidAttributionAnalytics }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "conversion:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.count.paid_conversions}}</h3>
|
|
<p><span class="hide-when-small">Paid </span>{{gh-pluralize this.post.count.paid_conversions "conversion" without-count=true}}</p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
{{#if this.isLoaded }}
|
|
{{#if this.showLinks }}
|
|
{{#if (is-empty this.links) }}
|
|
{{!-- Empty state --}}
|
|
{{else}}
|
|
<Posts::LinksTable @links={{this.links}} @updateLink={{this.updateLink}} />
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if this.showSources }}
|
|
{{#if (is-empty this.sources) }}
|
|
{{!-- Empty state --}}
|
|
{{else}}
|
|
<h4 class="gh-main-section-header small bn">
|
|
Growth from this post
|
|
</h4>
|
|
<div class="gh-post-analytics-box column">
|
|
<div class="gh-attribution-box">
|
|
<div class="gh-attribution-table-column">
|
|
<MemberAttribution::SourceAttributionTable
|
|
@sources={{this.sources}}
|
|
@sortColumn={{this.sortColumn}}
|
|
@setSortColumn={{this.setSortColumn}}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
<h4 class="gh-main-section-header small bn">
|
|
Get started with analytics
|
|
</h4>
|
|
<div class="gh-post-analytics-box resources">
|
|
<a href="https://ghost.org/help/post-analytics/" target="_blank" class="gh-post-analytics-resource" rel="noopener noreferrer">
|
|
<div class="thumbnail" style="background-image: url(assets/img/marketing/analytics-1.jpg);"></div>
|
|
<div class="flex flex-column justify-between">
|
|
<div>
|
|
<h3>Understanding analytics in Ghost</h3>
|
|
<p>Find out how to review the performance of your content and get the most out of post analytics in Ghost.</p>
|
|
</div>
|
|
<div class="gh-btn gh-btn-link">Read more →</div>
|
|
</div>
|
|
</a>
|
|
<a href="https://ghost.org/resources/content-distribution/" target="_blank" class="gh-post-analytics-resource" rel="noopener noreferrer">
|
|
<div class="thumbnail" style="background-image: url(assets/img/marketing/analytics-2.jpg);"></div>
|
|
<div class="flex flex-column justify-between">
|
|
<div>
|
|
<h3>How to get your content seen online</h3>
|
|
<p>Use these content distribution tactics to get more people to discover your work and increase engagement.</p>
|
|
</div>
|
|
<div class="gh-btn gh-btn-link">Read more →</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
{{else}}
|
|
<div class="gh-post-analytics-loading">
|
|
<div class="gh-loading-spinner-outer">
|
|
<div class="gh-loading-spinner"></div>
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
</section>
|