mirror of
https://github.com/flarum/core.git
synced 2025-07-31 13:40:20 +02:00
Upgrade to Ember 1.11-beta.1
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!
This commit is contained in:
45
ember/app/mixins/has-item-lists.js
Normal file
45
ember/app/mixins/has-item-lists.js
Normal file
@@ -0,0 +1,45 @@
|
||||
import Ember from 'ember';
|
||||
|
||||
import TaggedArray from 'flarum/utils/tagged-array';
|
||||
import ActionButton from 'flarum/components/ui/action-button';
|
||||
|
||||
export default Ember.Mixin.create({
|
||||
itemLists: [],
|
||||
|
||||
initItemLists: Ember.on('didInsertElement', function() {
|
||||
var self = this;
|
||||
this.get('itemLists').forEach(function(name) {
|
||||
self.initItemList(name);
|
||||
});
|
||||
}),
|
||||
|
||||
initItemList: function(name) {
|
||||
this.set(name, this.populateItemList(name));
|
||||
},
|
||||
|
||||
populateItemList: function(name) {
|
||||
var items = TaggedArray.create();
|
||||
this.trigger('populate'+name.charAt(0).toUpperCase()+name.slice(1), items);
|
||||
return items;
|
||||
},
|
||||
|
||||
addActionItem: function(items, tag, label, icon, conditionProperty, actionName, actionTarget) {
|
||||
if (conditionProperty && !this.get(conditionProperty)) { return; }
|
||||
|
||||
var self = this;
|
||||
actionTarget = actionTarget || self.get('controller');
|
||||
var item = ActionButton.extend({
|
||||
label: label,
|
||||
icon: icon,
|
||||
action: function() {
|
||||
actionTarget.send(actionName || tag);
|
||||
}
|
||||
});
|
||||
|
||||
var itemInstance = item.create();
|
||||
|
||||
items.pushObjectWithTag(itemInstance, tag);
|
||||
|
||||
return itemInstance;
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user