c61c42ce1d
ref 8ea1dfb
ref https://linear.app/tryghost/issue/ONC-111
* undid the reversion for the performance improvements
* built upon new tests for the posts list functionality in admin,
including right click actions
* added tests for pages view in Admin
This was reverted because it broke the Pages list view in Admin, which
is a thin extension of the Posts functionality in admin (route &
controller). That has been fixed and tests added.
This was originally reverted because the changes to improve loading
response times broke right click (bulk) actions in the posts list. This
was not caught because it turned out we had near-zero test coverage of
that part of the codebase. Test coverage has been expanded for the posts
list, and while not comprehensive, is a much better place for us to be
in.
75 lines
3.5 KiB
Handlebars
75 lines
3.5 KiB
Handlebars
<section class="gh-canvas gh-canvas-sticky">
|
|
<GhCanvasHeader class="gh-canvas-header sticky break tablet post-header">
|
|
<GhCustomViewTitle @title="Pages" @query={{reset-query-params "posts"}} />
|
|
|
|
<section class="view-actions">
|
|
<PostsList::ContentFilter
|
|
@currentUser={{this.session.user}}
|
|
@selectedType={{this.selectedType}}
|
|
@availableTypes={{this.availableTypes}}
|
|
@onTypeChange={{this.changeType}}
|
|
@selectedVisibility={{this.selectedVisibility}}
|
|
@availableVisibilities={{this.availableVisibilities}}
|
|
@onVisibilityChange={{this.changeVisibility}}
|
|
@selectedAuthor={{this.selectedAuthor}}
|
|
@availableAuthors={{this.availableAuthors}}
|
|
@onAuthorChange={{this.changeAuthor}}
|
|
@selectedTag={{this.selectedTag}}
|
|
@availableTags={{this.availableTags}}
|
|
@onTagChange={{this.changeTag}}
|
|
@selectedOrder={{this.selectedOrder}}
|
|
@availableOrders={{this.availableOrders}}
|
|
@onOrderChange={{this.changeOrder}}
|
|
/>
|
|
|
|
<LinkTo @route="lexical-editor.new" @model="page" class="gh-btn gh-btn-primary view-actions-top-row" data-test-new-page-button={{true}}><span>New page</span></LinkTo>
|
|
</section>
|
|
</GhCanvasHeader>
|
|
|
|
<section class="view-container content-list">
|
|
<PostsList::List
|
|
@model={{@model}}
|
|
@list={{this.selectionList}}
|
|
>
|
|
<li class="no-posts-box">
|
|
<div class="no-posts">
|
|
{{#if this.showingAll}}
|
|
{{svg-jar "pages-placeholder" class="gh-pages-placeholder"}}
|
|
<h4>Tell the world about yourself.</h4>
|
|
<LinkTo @route="lexical-editor.new" @model="page" class="gh-btn gh-btn-green">
|
|
<span>Create a new page</span>
|
|
</LinkTo>
|
|
{{else}}
|
|
<h4>No pages match the current filter</h4>
|
|
<LinkTo @route="pages" @query={{hash visibility=null type=null author=null tag=null}} class="gh-btn">
|
|
<span>Show all pages</span>
|
|
</LinkTo>
|
|
{{/if}}
|
|
</div>
|
|
</li>
|
|
</PostsList::List>
|
|
|
|
{{!-- only show one infinity loader wheel at a time - always order as scheduled, draft, remainder --}}
|
|
{{#if @model.scheduledInfinityModel}}
|
|
<GhInfinityLoader
|
|
@infinityModel={{@model.scheduledInfinityModel}}
|
|
@scrollable=".gh-main"
|
|
@triggerOffset={{1000}} />
|
|
{{/if}}
|
|
{{#if (and @model.draftInfinityModel (or (not @model.scheduledInfinityModel) (and @model.scheduledInfinityModel @model.scheduledInfinityModel.reachedInfinity)))}}
|
|
<GhInfinityLoader
|
|
@infinityModel={{@model.draftInfinityModel}}
|
|
@scrollable=".gh-main"
|
|
@triggerOffset={{1000}} />
|
|
{{/if}}
|
|
{{#if (and @model.publishedAndSentInfinityModel (and (or (not @model.scheduledInfinityModel) @model.scheduledInfinityModel.reachedInfinity) (or (not @model.draftInfinityModel) @model.draftInfinityModel.reachedInfinity)))}}
|
|
<GhInfinityLoader
|
|
@infinityModel={{@model.publishedAndSentInfinityModel}}
|
|
@scrollable=".gh-main"
|
|
@triggerOffset={{1000}} />
|
|
{{/if}}
|
|
|
|
</section>
|
|
{{outlet}}
|
|
</section>
|