mirror of
https://github.com/flarum/framework.git
synced 2024-12-14 08:03:37 +08:00
c28307903b
HTMLBars goodness! Since there was some breakage and a lot of fiddling around to get some things working, I took this opportunity to do a big cleanup of the whole Ember app. I accidentally worked on some new features too :3 Note that the app is still broken right now, pending on https://github.com/emberjs/ember.js/issues/10401 Cleanup: - Restructuring of components - Consolidation of some stuff into mixins, cleanup of some APIs that will be public - Change all instances of .property() / .observes() / .on() to Ember.computed() / Ember.observer() / Ember.on() respectively (I think it is more readable) - More comments - Start conforming to a code style (2 spaces for indentation) New features: - Post hiding/restoring - Mark individual discussions as read by clicking - Clicking on a read discussion jumps to the end - Mark all discussions as read - Progressively mark the discussion as read as the page is scrolled - Unordered list post formatting - Post permalink popup Demo once that Ember regression is fixed!
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
import AddCssClassToBody from 'flarum/mixins/add-css-class-to-body';
|
|
|
|
export default Ember.Route.extend(AddCssClassToBody, {
|
|
cachedModel: null,
|
|
|
|
model: function() {
|
|
if (!this.get('cachedModel')) {
|
|
this.set('cachedModel', Ember.ArrayProxy.create());
|
|
}
|
|
return Ember.RSVP.resolve(this.get('cachedModel'));
|
|
},
|
|
|
|
setupController: function(controller, model) {
|
|
controller.set('model', model);
|
|
|
|
if (!model.get('length')) {
|
|
controller.set('resultsLoading', true);
|
|
controller.getResults().then(function(results) {
|
|
controller
|
|
.set('resultsLoading', false)
|
|
.set('meta', results.get('meta'))
|
|
.set('model.content', results);
|
|
});
|
|
}
|
|
},
|
|
|
|
deactivate: function() {
|
|
this._super();
|
|
this.controllerFor('application').set('backButtonTarget', this.controllerFor('index'));
|
|
},
|
|
|
|
actions: {
|
|
refresh: function() {
|
|
this.set('cachedModel', null);
|
|
this.refresh();
|
|
},
|
|
|
|
didTransition: function() {
|
|
var application = this.controllerFor('application');
|
|
if (application.get('backButtonTarget') === this.controllerFor('index')) {
|
|
application.set('backButtonTarget', null);
|
|
}
|
|
|
|
this.controllerFor('composer').send('minimize');
|
|
this.controllerFor('index').set('paned', false);
|
|
this.controllerFor('index').set('paneShowing', false);
|
|
}
|
|
}
|
|
});
|