1
0
mirror of https://github.com/flarum/core.git synced 2025-02-25 19:53:48 +01:00
php-flarum/ember/app/views/discussions.js
2015-01-03 21:51:47 +10:30

102 lines
2.9 KiB
JavaScript

import Ember from 'ember';
import DropdownSelect from '../components/ui/controls/dropdown-select';
import ActionButton from '../components/ui/controls/action-button';
import NavItem from '../components/ui/items/nav-item';
import TaggedArray from '../utils/tagged-array';
export default Ember.View.extend({
sidebarItems: null,
classNameBindings: ['pinned'],
pinned: function() {
return this.get('controller.panePinned');
}.property('controller.panePinned'),
didInsertElement: function() {
var sidebarItems = TaggedArray.create();
this.trigger('populateSidebar', sidebarItems);
this.set('sidebarItems', sidebarItems);
var view = this;
this.$().find('.discussions-pane').on('mouseenter', function() {
if (! $(this).hasClass('paned')) return;
clearTimeout(view.get('controller.paneTimeout'));
view.set('controller.paneShowing', true);
}).on('mouseleave', function() {
view.set('controller.paneShowing', false);
});
if (this.get('controller.test') !== null) {
var row = this.$().find('li[data-id='+this.get('controller.controllers.application.resultStream.currentResult.id')+']');
if (row.length) {
row.addClass('highlight');
}
// TODO: work out if the highlighted row is in view of the saved scroll position.
// If it isn't, don't use the saved scroll position - generate a new one.
$(window).scrollTop(this.get('controller.test'));
this.set('controller.test', null);
}
var self = this;
$(window).on('scroll.loadMore', function() {
if (self.get('controller.loadingMore') || ! self.get('controller.moreResults')) {
return;
}
var w = $(window),
d = $('.discussions'),
curPos = w.scrollTop() + w.height(),
endPos = d.offset().top + d.height() - 200;
if (curPos > endPos) {
self.get('controller').send('loadMore');
}
});
},
populateSidebarDefault: function(sidebar) {
var newDiscussion = ActionButton.create({
title: 'Start a Discussion',
icon: 'edit',
class: 'btn-primary'
})
sidebar.pushObjectWithTag(newDiscussion, 'newDiscussion');
var nav = TaggedArray.create();
this.trigger('populateNav', nav);
sidebar.pushObjectWithTag(DropdownSelect.createWithItems(nav), 'nav');
}.on('populateSidebar'),
populateNavDefault: function(nav) {
nav.pushObjectWithTag(NavItem.create({
title: 'All Discussions',
icon: 'comments-o',
linkTo: '"discussions" (query-params filter="")'
}), 'all');
nav.pushObjectWithTag(NavItem.create({
title: 'Private',
icon: 'envelope-o',
linkTo: '"discussions" (query-params filter="private")'
}), 'private');
nav.pushObjectWithTag(NavItem.create({
title: 'Following',
icon: 'star',
linkTo: '"discussions" (query-params filter="following")'
}), 'following');
}.on('populateNav'),
willDestroyElement: function() {
this.set('controller.test', $(window).scrollTop());
$(window).off('scroll.loadMore');
}
});