diff --git a/ghost/admin/app/components/gh-infinite-scroll-box.js b/ghost/admin/app/components/gh-infinite-scroll-box.js deleted file mode 100644 index 25e61daeac..0000000000 --- a/ghost/admin/app/components/gh-infinite-scroll-box.js +++ /dev/null @@ -1,7 +0,0 @@ -import Ember from 'ember'; -import InfiniteScrollMixin from 'ghost/mixins/infinite-scroll'; - -const {Component} = Ember; - -export default Component.extend(InfiniteScrollMixin, { -}); diff --git a/ghost/admin/app/components/gh-infinite-scroll.js b/ghost/admin/app/components/gh-infinite-scroll.js index 128d5341ff..56746ba1f3 100644 --- a/ghost/admin/app/components/gh-infinite-scroll.js +++ b/ghost/admin/app/components/gh-infinite-scroll.js @@ -3,4 +3,10 @@ import InfiniteScrollMixin from 'ghost/mixins/infinite-scroll'; const {Component} = Ember; -export default Component.extend(InfiniteScrollMixin); +export default Component.extend(InfiniteScrollMixin, { + actions: { + checkScroll() { + this._checkScroll(); + } + } +}); diff --git a/ghost/admin/app/components/gh-posts-list-item.js b/ghost/admin/app/components/gh-posts-list-item.js index b2568a0681..5b82c9d8e3 100644 --- a/ghost/admin/app/components/gh-posts-list-item.js +++ b/ghost/admin/app/components/gh-posts-list-item.js @@ -34,10 +34,6 @@ export default Component.extend(ActiveLinkWrapper, { return Ember.String.htmlSafe(`background-image: url(${this.get('authorAvatar')})`); }), - viewOrEdit: computed('previewIsHidden', function () { - return this.get('previewIsHidden') ? 'editor.edit' : 'posts.post'; - }), - click() { this.sendAction('onClick', this.get('post')); }, @@ -54,6 +50,9 @@ export default Component.extend(ActiveLinkWrapper, { willDestroyElement() { this._super(...arguments); this.removeObserver('active', this, this.scrollIntoView); + if (this.get('post.isDeleted') && this.attrs.onDelete) { + this.attrs.onDelete(); + } }, scrollIntoView() { diff --git a/ghost/admin/app/components/gh-tag.js b/ghost/admin/app/components/gh-tag.js new file mode 100644 index 0000000000..6136ea5e10 --- /dev/null +++ b/ghost/admin/app/components/gh-tag.js @@ -0,0 +1,11 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + willDestroyElement() { + this._super(...arguments); + + if (this.get('tag.isDeleted') && this.attrs.onDelete) { + this.attrs.onDelete(); + } + } +}); diff --git a/ghost/admin/app/controllers/posts.js b/ghost/admin/app/controllers/posts.js index c72d27aefe..6b34a9a87e 100644 --- a/ghost/admin/app/controllers/posts.js +++ b/ghost/admin/app/controllers/posts.js @@ -81,14 +81,6 @@ export default Controller.extend({ }), actions: { - showPostContent(post) { - if (!post) { - return; - } - - this.transitionToRoute('posts.post', post); - }, - toggleDeletePostModal() { this.toggleProperty('showDeletePostModal'); } diff --git a/ghost/admin/app/mixins/infinite-scroll.js b/ghost/admin/app/mixins/infinite-scroll.js index 1e735a9fc2..68d9ec706c 100644 --- a/ghost/admin/app/mixins/infinite-scroll.js +++ b/ghost/admin/app/mixins/infinite-scroll.js @@ -8,10 +8,9 @@ export default Mixin.create({ /** * Determines if we are past a scroll point where we need to fetch the next page - * @param {object} event The scroll event */ - checkScroll(event) { - let element = event.target; + _checkScroll() { + let element = this.get('element'); let triggerPoint = this.get('triggerPoint'); let isLoading = this.get('isLoading'); @@ -28,11 +27,11 @@ export default Mixin.create({ let el = this.get('element'); - el.onscroll = run.bind(this, this.checkScroll); + el.onscroll = run.bind(this, this._checkScroll); - if (el.scrollHeight <= el.clientHeight) { - this.sendAction('fetch'); - } + // run on load, on the offchance that the initial load + // did not fill the view. + this._checkScroll(); }, willDestroyElement() { diff --git a/ghost/admin/app/templates/components/gh-content-view-container.hbs b/ghost/admin/app/templates/components/gh-content-view-container.hbs index f4a0b59217..e76a0b3886 100644 --- a/ghost/admin/app/templates/components/gh-content-view-container.hbs +++ b/ghost/admin/app/templates/components/gh-content-view-container.hbs @@ -1 +1 @@ -{{yield this}} +{{yield previewIsHidden}} diff --git a/ghost/admin/app/templates/components/gh-infinite-scroll-box.hbs b/ghost/admin/app/templates/components/gh-infinite-scroll-box.hbs deleted file mode 100644 index 889d9eeadc..0000000000 --- a/ghost/admin/app/templates/components/gh-infinite-scroll-box.hbs +++ /dev/null @@ -1 +0,0 @@ -{{yield}} diff --git a/ghost/admin/app/templates/components/gh-infinite-scroll.hbs b/ghost/admin/app/templates/components/gh-infinite-scroll.hbs index 889d9eeadc..adc76bdb1f 100644 --- a/ghost/admin/app/templates/components/gh-infinite-scroll.hbs +++ b/ghost/admin/app/templates/components/gh-infinite-scroll.hbs @@ -1 +1 @@ -{{yield}} +{{yield (action "checkScroll")}} diff --git a/ghost/admin/app/templates/components/gh-tag.hbs b/ghost/admin/app/templates/components/gh-tag.hbs new file mode 100644 index 0000000000..92ba536b36 --- /dev/null +++ b/ghost/admin/app/templates/components/gh-tag.hbs @@ -0,0 +1,8 @@ +
+ {{#link-to 'settings.tags.tag' tag class="tag-edit-button"}} + {{tag.name}} + /{{tag.slug}} +

{{tag.description}}

+ {{tag.count.posts}} + {{/link-to}} +
diff --git a/ghost/admin/app/templates/posts.hbs b/ghost/admin/app/templates/posts.hbs index c8e4c30afe..c42ae4e199 100644 --- a/ghost/admin/app/templates/posts.hbs +++ b/ghost/admin/app/templates/posts.hbs @@ -1,4 +1,4 @@ -{{#gh-content-view-container as |container|}} +{{#gh-content-view-container as |previewIsHidden|}}
{{#gh-view-title openMobileMenu="openMobileMenu"}}Content{{/gh-view-title}}
@@ -8,11 +8,11 @@
- {{#gh-infinite-scroll-box tagName="section" classNames="content-list-content js-content-scrollbox" fetch="loadNextPage"}} + {{#gh-infinite-scroll tagName="section" classNames="content-list-content js-content-scrollbox" fetch="loadNextPage" as |checkScroll|}}
    {{#each sortedPosts key="id" as |post|}} - {{#gh-posts-list-item post=post onDoubleClick="openEditor" previewIsHidden=container.previewIsHidden as |component|}} - {{#link-to component.viewOrEdit post.id class="permalink" title="Edit this post"}} + {{#gh-posts-list-item post=post onDoubleClick="openEditor" onDelete=(action checkScroll) as |component|}} + {{#link-to (if previewIsHidden 'editor.edit' 'posts.post') post.id class="permalink" title="Edit this post"}}

    {{post.title}}

- {{/gh-infinite-scroll-box}} + {{/gh-infinite-scroll}}
{{outlet}} diff --git a/ghost/admin/app/templates/settings/tags.hbs b/ghost/admin/app/templates/settings/tags.hbs index dae378ac96..f67750a544 100644 --- a/ghost/admin/app/templates/settings/tags.hbs +++ b/ghost/admin/app/templates/settings/tags.hbs @@ -12,17 +12,11 @@ fetch="loadNextPage" isLoading=isLoading classNames="tag-list" + as |checkScroll| }}
{{#each tags as |tag|}} -
- {{#link-to 'settings.tags.tag' tag class="tag-edit-button"}} - {{tag.name}} - /{{tag.slug}} -

{{tag.description}}

- {{tag.count.posts}} - {{/link-to}} -
+ {{gh-tag tag=tag onDelete=(action checkScroll)}} {{/each}}
{{/gh-infinite-scroll}} diff --git a/ghost/admin/tests/unit/components/gh-infinite-scroll-box-test.js b/ghost/admin/tests/unit/components/gh-infinite-scroll-box-test.js deleted file mode 100644 index d3acd4c7aa..0000000000 --- a/ghost/admin/tests/unit/components/gh-infinite-scroll-box-test.js +++ /dev/null @@ -1,28 +0,0 @@ -/* jshint expr:true */ -import {expect} from 'chai'; -import { - describeComponent, - it -} from 'ember-mocha'; - -describeComponent( - 'gh-infinite-scroll-box', - 'Unit: Component: gh-infinite-scroll-box', - { - unit: true - // specify the other units that are required for this test - // needs: ['component:foo', 'helper:bar'] - }, - function () { - it('renders', function () { - // creates the component instance - let component = this.subject(); - - expect(component._state).to.equal('preRender'); - - // renders the component on the page - this.render(); - expect(component._state).to.equal('inDOM'); - }); - } -);