diff --git a/app/assets/javascripts/discourse/components/activity-filter.js.es6 b/app/assets/javascripts/discourse/components/activity-filter.js.es6 index 876e7bdb264..c0cf5b4e4eb 100644 --- a/app/assets/javascripts/discourse/components/activity-filter.js.es6 +++ b/app/assets/javascripts/discourse/components/activity-filter.js.es6 @@ -1,4 +1,5 @@ import StringBuffer from 'discourse/mixins/string-buffer'; +import UserAction from "discourse/models/user-action"; export default Ember.Component.extend(StringBuffer, { tagName: 'li', @@ -27,9 +28,9 @@ export default Ember.Component.extend(StringBuffer, { typeKey: function() { const actionType = this.get('content.action_type'); - if (actionType === Discourse.UserAction.TYPES.messages_received) { return ""; } + if (actionType === UserAction.TYPES.messages_received) { return ""; } - const result = Discourse.UserAction.TYPES_INVERTED[actionType]; + const result = UserAction.TYPES_INVERTED[actionType]; if (!result) { return ""; } // We like our URLS to have hyphens, not underscores @@ -55,11 +56,11 @@ export default Ember.Component.extend(StringBuffer, { icon: function() { switch(parseInt(this.get('content.action_type'), 10)) { - case Discourse.UserAction.TYPES.likes_received: return "heart"; - case Discourse.UserAction.TYPES.bookmarks: return "bookmark"; - case Discourse.UserAction.TYPES.edits: return "pencil"; - case Discourse.UserAction.TYPES.replies: return "reply"; - case Discourse.UserAction.TYPES.mentions: return "at"; + case UserAction.TYPES.likes_received: return "heart"; + case UserAction.TYPES.bookmarks: return "bookmark"; + case UserAction.TYPES.edits: return "pencil"; + case UserAction.TYPES.replies: return "reply"; + case UserAction.TYPES.mentions: return "at"; } }.property("content.action_type") }); diff --git a/app/assets/javascripts/discourse/components/category-chooser.js.es6 b/app/assets/javascripts/discourse/components/category-chooser.js.es6 index 4cef1f2edf1..1611fcbe5d5 100644 --- a/app/assets/javascripts/discourse/components/category-chooser.js.es6 +++ b/app/assets/javascripts/discourse/components/category-chooser.js.es6 @@ -2,6 +2,7 @@ import ComboboxView from 'discourse/components/combo-box'; import { categoryBadgeHTML } from 'discourse/helpers/category-link'; import computed from 'ember-addons/ember-computed-decorators'; import { observes, on } from 'ember-addons/ember-computed-decorators'; +import PermissionType from 'discourse/models/permission-type'; export default ComboboxView.extend({ classNames: ['combobox category-combobox'], @@ -22,7 +23,7 @@ export default ComboboxView.extend({ if (scopedCategoryId && c.get('id') !== scopedCategoryId && c.get('parent_category_id') !== scopedCategoryId) { return false; } if (c.get('isUncategorizedCategory')) { return false; } if (c.get('contains_messages')) { return false; } - return c.get('permission') === Discourse.PermissionType.FULL; + return c.get('permission') === PermissionType.FULL; }); }, diff --git a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 index 60c3f4ddc1a..502ed2325de 100644 --- a/app/assets/javascripts/discourse/components/edit-category-security.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-security.js.es6 @@ -1,4 +1,5 @@ import { buildCategoryPanel } from 'discourse/components/edit-category-panel'; +import PermissionType from 'discourse/models/permission-type'; export default buildCategoryPanel('security', { editingPermissions: false, @@ -16,7 +17,7 @@ export default buildCategoryPanel('security', { if (!this.get('category.is_special')) { this.get('category').addPermission({ group_name: group + "", - permission: Discourse.PermissionType.create({id}) + permission: PermissionType.create({id}) }); } }, diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index 934a8357833..b6cea5d0aef 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -1,6 +1,8 @@ import { exportUserArchive } from 'discourse/lib/export-csv'; import CanCheckEmails from 'discourse/mixins/can-check-emails'; import computed from 'ember-addons/ember-computed-decorators'; +import UserAction from 'discourse/models/user-action'; +import User from 'discourse/models/user'; export default Ember.Controller.extend(CanCheckEmails, { indexStream: false, @@ -10,7 +12,7 @@ export default Ember.Controller.extend(CanCheckEmails, { @computed("content.username") viewingSelf(username) { - return username === Discourse.User.currentProp('username'); + return username === User.currentProp('username'); }, @computed('indexStream', 'viewingSelf', 'forceExpand') @@ -39,13 +41,13 @@ export default Ember.Controller.extend(CanCheckEmails, { @computed("userActionType") privateMessageView(userActionType) { - return (userActionType === Discourse.UserAction.TYPES.messages_sent) || - (userActionType === Discourse.UserAction.TYPES.messages_received); + return (userActionType === UserAction.TYPES.messages_sent) || + (userActionType === UserAction.TYPES.messages_received); }, @computed() canInviteToForum() { - return Discourse.User.currentProp('can_invite_to_forum'); + return User.currentProp('can_invite_to_forum'); }, canDeleteUser: Ember.computed.and("model.can_be_deleted", "model.can_delete_all_posts"), @@ -72,7 +74,9 @@ export default Ember.Controller.extend(CanCheckEmails, { }, adminDelete() { - Discourse.AdminUser.find(this.get('model.username').toLowerCase()) + // I really want this deferred, don't want to bring in all this code till used + const AdminUser = require('admin/models/admin-user').default; + AdminUser.find(this.get('model.username').toLowerCase()) .then(user => user.destroy({deletePosts: true})); }, diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 492e36e58db..ed82eb9786d 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -1,5 +1,6 @@ import RestModel from 'discourse/models/rest'; import { on } from 'ember-addons/ember-computed-decorators'; +import PermissionType from 'discourse/models/permission-type'; const Category = RestModel.extend({ @@ -15,16 +16,16 @@ const Category = RestModel.extend({ availableGroups.removeObject(elem.group_name); return { group_name: elem.group_name, - permission: Discourse.PermissionType.create({id: elem.permission_type}) + permission: PermissionType.create({id: elem.permission_type}) }; })); } }, availablePermissions: function(){ - return [ Discourse.PermissionType.create({id: Discourse.PermissionType.FULL}), - Discourse.PermissionType.create({id: Discourse.PermissionType.CREATE_POST}), - Discourse.PermissionType.create({id: Discourse.PermissionType.READONLY}) + return [ PermissionType.create({id: PermissionType.FULL}), + PermissionType.create({id: PermissionType.CREATE_POST}), + PermissionType.create({id: PermissionType.READONLY}) ]; }.property(), @@ -117,9 +118,9 @@ const Category = RestModel.extend({ permissions: function(){ return Em.A([ - {group_name: "everyone", permission: Discourse.PermissionType.create({id: 1})}, - {group_name: "admins", permission: Discourse.PermissionType.create({id: 2}) }, - {group_name: "crap", permission: Discourse.PermissionType.create({id: 3}) } + {group_name: "everyone", permission: PermissionType.create({id: 1})}, + {group_name: "admins", permission: PermissionType.create({id: 2}) }, + {group_name: "crap", permission: PermissionType.create({id: 3}) } ]); }.property(), diff --git a/app/assets/javascripts/discourse/models/permission_type.js b/app/assets/javascripts/discourse/models/permission-type.js.es6 similarity index 65% rename from app/assets/javascripts/discourse/models/permission_type.js rename to app/assets/javascripts/discourse/models/permission-type.js.es6 index a37ba818c88..04e3771b07d 100644 --- a/app/assets/javascripts/discourse/models/permission_type.js +++ b/app/assets/javascripts/discourse/models/permission-type.js.es6 @@ -1,5 +1,4 @@ - -Discourse.PermissionType = Discourse.Model.extend({ +const PermissionType = Discourse.Model.extend({ description: function(){ var key = ""; @@ -18,6 +17,8 @@ Discourse.PermissionType = Discourse.Model.extend({ }.property("id") }); -Discourse.PermissionType.FULL = 1; -Discourse.PermissionType.CREATE_POST = 2; -Discourse.PermissionType.READONLY = 3; +PermissionType.FULL = 1; +PermissionType.CREATE_POST = 2; +PermissionType.READONLY = 3; + +export default PermissionType; diff --git a/app/assets/javascripts/discourse/models/user_action_group.js b/app/assets/javascripts/discourse/models/user-action-group.js.es6 similarity index 54% rename from app/assets/javascripts/discourse/models/user_action_group.js rename to app/assets/javascripts/discourse/models/user-action-group.js.es6 index 9edbcaadb9d..3953780ee96 100644 --- a/app/assets/javascripts/discourse/models/user_action_group.js +++ b/app/assets/javascripts/discourse/models/user-action-group.js.es6 @@ -1,12 +1,7 @@ /** A data model representing a group of UserActions - - @class UserActionGroup - @extends Discourse.Model - @namespace Discourse - @module Discourse **/ -Discourse.UserActionGroup = Discourse.Model.extend({ +export default Discourse.Model.extend({ push: function(item) { if (!this.items) { this.items = []; diff --git a/app/assets/javascripts/discourse/models/user-action.js.es6 b/app/assets/javascripts/discourse/models/user-action.js.es6 index f03d8190834..50af402544f 100644 --- a/app/assets/javascripts/discourse/models/user-action.js.es6 +++ b/app/assets/javascripts/discourse/models/user-action.js.es6 @@ -2,6 +2,7 @@ import RestModel from 'discourse/models/rest'; import { url } from 'discourse/lib/computed'; import { on } from 'ember-addons/ember-computed-decorators'; import computed from 'ember-addons/ember-computed-decorators'; +import UserActionGroup from 'discourse/models/user-action-group'; const UserActionTypes = { likes_given: 1, @@ -35,7 +36,7 @@ const UserAction = RestModel.extend({ @computed("action_type") descriptionKey(action) { - if (action === null || Discourse.UserAction.TO_SHOW.indexOf(action) >= 0) { + if (action === null || UserAction.TO_SHOW.indexOf(action) >= 0) { if (this.get('isPM')) { return this.get('sameUser') ? 'sent_by_you' : 'sent_by_user'; } else { @@ -111,10 +112,10 @@ const UserAction = RestModel.extend({ let groups = this.get("childGroups"); if (!groups) { groups = { - likes: Discourse.UserActionGroup.create({ icon: "fa fa-heart" }), - stars: Discourse.UserActionGroup.create({ icon: "fa fa-star" }), - edits: Discourse.UserActionGroup.create({ icon: "fa fa-pencil" }), - bookmarks: Discourse.UserActionGroup.create({ icon: "fa fa-bookmark" }) + likes: UserActionGroup.create({ icon: "fa fa-heart" }), + stars: UserActionGroup.create({ icon: "fa fa-star" }), + edits: UserActionGroup.create({ icon: "fa fa-pencil" }), + bookmarks: UserActionGroup.create({ icon: "fa fa-bookmark" }) }; } this.set("childGroups", groups); @@ -171,7 +172,7 @@ UserAction.reopenClass({ if (found === void 0) { let current; - if (Discourse.UserAction.TO_COLLAPSE.indexOf(item.action_type) >= 0) { + if (UserAction.TO_COLLAPSE.indexOf(item.action_type) >= 0) { current = UserAction.create(item); item.switchToActing(); current.addChild(item); diff --git a/app/assets/javascripts/discourse/models/user-stream.js.es6 b/app/assets/javascripts/discourse/models/user-stream.js.es6 index fe20fe7c547..706102e0794 100644 --- a/app/assets/javascripts/discourse/models/user-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/user-stream.js.es6 @@ -1,5 +1,6 @@ import { url } from 'discourse/lib/computed'; import RestModel from 'discourse/models/rest'; +import UserAction from 'discourse/models/user-action'; export default RestModel.extend({ loaded: false, @@ -11,13 +12,13 @@ export default RestModel.extend({ filterParam: function() { const filter = this.get('filter'); if (filter === Discourse.UserAction.TYPES.replies) { - return [Discourse.UserAction.TYPES.replies, - Discourse.UserAction.TYPES.quotes].join(","); + return [UserAction.TYPES.replies, + UserAction.TYPES.quotes].join(","); } if(!filter) { - return [Discourse.UserAction.TYPES.topics, - Discourse.UserAction.TYPES.posts].join(","); + return [UserAction.TYPES.topics, + UserAction.TYPES.posts].join(","); } return filter; @@ -70,10 +71,10 @@ export default RestModel.extend({ const copy = Em.A(); result.user_actions.forEach(function(action) { action.title = Discourse.Emoji.unescape(Handlebars.Utils.escapeExpression(action.title)); - copy.pushObject(Discourse.UserAction.create(action)); + copy.pushObject(UserAction.create(action)); }); - self.get('content').pushObjects(Discourse.UserAction.collapseStream(copy)); + self.get('content').pushObjects(UserAction.collapseStream(copy)); self.setProperties({ loaded: true, itemsLoaded: self.get('itemsLoaded') + result.user_actions.length diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index d0abb2dde57..f182d2fea5d 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -1,6 +1,7 @@ import { filterQueryParams, findTopicList } from 'discourse/routes/build-topic-route'; import { queryParams } from 'discourse/controllers/discovery-sortable'; import TopicList from 'discourse/models/topic-list'; +import PermissionType from 'discourse/models/permission-type'; // A helper function to create a category route with parameters export default (filter, params) => { @@ -68,7 +69,7 @@ export default (filter, params) => { const topics = this.get('topics'), category = model.category, canCreateTopic = topics.get('can_create_topic'), - canCreateTopicOnCategory = category.get('permission') === Discourse.PermissionType.FULL; + canCreateTopicOnCategory = category.get('permission') === PermissionType.FULL; this.controllerFor('navigation/category').setProperties({ canCreateTopicOnCategory: canCreateTopicOnCategory, diff --git a/app/assets/javascripts/discourse/routes/user-activity-bookmarks.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-bookmarks.js.es6 index ad2b2bd986f..cb14c181538 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-bookmarks.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-bookmarks.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["bookmarks"] + userActionType: UserAction.TYPES["bookmarks"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-edits.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-edits.js.es6 index a3192d2a1d7..32c624edfb2 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-edits.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-edits.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["edits"] + userActionType: UserAction.TYPES["edits"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-likes-given.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-likes-given.js.es6 index 84ed7b4501d..13a0e5b9863 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-likes-given.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-likes-given.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["likes_given"] + userActionType: UserAction.TYPES["likes_given"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-likes-received.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-likes-received.js.es6 index 3e7e5cdc4cb..a533005648b 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-likes-received.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-likes-received.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["likes_received"] + userActionType: UserAction.TYPES["likes_received"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-mentions.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-mentions.js.es6 index ae90417db6a..aecde13106b 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-mentions.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-mentions.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["mentions"] + userActionType: UserAction.TYPES["mentions"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-pending.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-pending.js.es6 index 5d7e9e47b75..05faabbb301 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-pending.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-pending.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES.pending + userActionType: UserAction.TYPES.pending }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-posts.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-posts.js.es6 index 0be8704abf5..62607c9a164 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-posts.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-posts.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["posts"] + userActionType: UserAction.TYPES["posts"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-replies.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-replies.js.es6 index 29fd25a2a2a..28e11587f4b 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-replies.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-replies.js.es6 @@ -1,5 +1,6 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream"; +import UserAction from "discourse/models/user-action"; export default UserActivityStreamRoute.extend({ - userActionType: Discourse.UserAction.TYPES["replies"] + userActionType: UserAction.TYPES["replies"] }); diff --git a/app/assets/javascripts/discourse/routes/user-activity-topics.js.es6 b/app/assets/javascripts/discourse/routes/user-activity-topics.js.es6 index 65210df7a7e..8c1a443d8ec 100644 --- a/app/assets/javascripts/discourse/routes/user-activity-topics.js.es6 +++ b/app/assets/javascripts/discourse/routes/user-activity-topics.js.es6 @@ -1,7 +1,8 @@ import UserTopicListRoute from "discourse/routes/user-topic-list"; +import UserAction from "discourse/models/user-action"; export default UserTopicListRoute.extend({ - userActionType: Discourse.UserAction.TYPES.topics, + userActionType: UserAction.TYPES.topics, model: function() { return this.store.findFiltered('topicList', {filter: 'topics/created-by/' + this.modelFor('user').get('username_lower') }); diff --git a/app/assets/javascripts/main_include.js b/app/assets/javascripts/main_include.js index 04914bd0e96..a4d939f1a40 100644 --- a/app/assets/javascripts/main_include.js +++ b/app/assets/javascripts/main_include.js @@ -24,9 +24,12 @@ //= require ./discourse/lib/eyeline //= require ./discourse/helpers/register-unbound //= require ./discourse/mixins/scrolling +//= require ./discourse/models/model //= require ./discourse/models/rest //= require ./discourse/models/badge-grouping //= require ./discourse/models/badge +//= require ./discourse/models/permission-type +//= require ./discourse/models/user-action-group //= require ./discourse/models/category //= require ./discourse/lib/ajax-error //= require ./discourse/lib/markdown @@ -38,8 +41,6 @@ //= require ./discourse/lib/debounce //= require ./discourse/lib/safari-hacks //= require_tree ./discourse/adapters -//= require ./discourse/models/rest -//= require ./discourse/models/model //= require ./discourse/models/result-set //= require ./discourse/models/store //= require ./discourse/models/post-action-type