Revert "REFACTOR: support booting discourse with DISCOURSE_NO_CONSTANTS"

This reverts commit c0b277d273.
This commit is contained in:
Robin Ward
2015-11-20 10:00:12 -05:00
parent 1c8b3c9447
commit c21457d6a7
99 changed files with 384 additions and 394 deletions

View File

@@ -1,20 +1,17 @@
import { propertyNotEqual } from 'discourse/lib/computed';
import { popupAjaxError } from 'discourse/lib/ajax-error';
import ApiKey from 'admin/models/api-key';
import Group from 'discourse/models/group';
import TL3Requirements from 'admin/models/tl3-requirements';
const AdminUser = Discourse.User.extend({
customGroups: Em.computed.filter("groups", (g) => !g.automatic && Group.create(g)),
automaticGroups: Em.computed.filter("groups", (g) => g.automatic && Group.create(g)),
customGroups: Em.computed.filter("groups", (g) => !g.automatic && Discourse.Group.create(g)),
automaticGroups: Em.computed.filter("groups", (g) => g.automatic && Discourse.Group.create(g)),
generateApiKey() {
const self = this;
return Discourse.ajax("/admin/users/" + this.get('id') + "/generate_api_key", {
type: 'POST'
}).then(function (result) {
const apiKey = ApiKey.create(result.api_key);
const apiKey = Discourse.ApiKey.create(result.api_key);
self.set('api_key', apiKey);
return apiKey;
});
@@ -380,7 +377,7 @@ const AdminUser = Discourse.User.extend({
}
}
}).catch(function() {
AdminUser.find( user.get('username') ).then(function(u){ user.setProperties(u); });
Discourse.AdminUser.find( user.get('username') ).then(function(u){ user.setProperties(u); });
bootbox.alert(I18n.t("admin.user.delete_failed"));
});
};
@@ -453,7 +450,7 @@ const AdminUser = Discourse.User.extend({
if (user.get('loadedDetails')) { return Ember.RSVP.resolve(user); }
return AdminUser.find(user.get('username_lower')).then(function (result) {
return Discourse.AdminUser.find(user.get('username_lower')).then(function (result) {
user.setProperties(result);
user.set('loadedDetails', true);
});
@@ -461,19 +458,19 @@ const AdminUser = Discourse.User.extend({
tl3Requirements: function() {
if (this.get('tl3_requirements')) {
return TL3Requirements.create(this.get('tl3_requirements'));
return Discourse.TL3Requirements.create(this.get('tl3_requirements'));
}
}.property('tl3_requirements'),
suspendedBy: function() {
if (this.get('suspended_by')) {
return AdminUser.create(this.get('suspended_by'));
return Discourse.AdminUser.create(this.get('suspended_by'));
}
}.property('suspended_by'),
approvedBy: function() {
if (this.get('approved_by')) {
return AdminUser.create(this.get('approved_by'));
return Discourse.AdminUser.create(this.get('approved_by'));
}
}.property('approved_by')
@@ -514,7 +511,7 @@ AdminUser.reopenClass({
find(username) {
return Discourse.ajax("/admin/users/" + username + ".json").then(function (result) {
result.loadedDetails = true;
return AdminUser.create(result);
return Discourse.AdminUser.create(result);
});
},
@@ -522,7 +519,7 @@ AdminUser.reopenClass({
return Discourse.ajax("/admin/users/list/" + query + ".json", {
data: filter
}).then(function(users) {
return users.map((u) => AdminUser.create(u));
return users.map((u) => Discourse.AdminUser.create(u));
});
}
});

View File

@@ -1,7 +1,15 @@
/**
A model that stores all or some data that is displayed on the dashboard.
const AdminDashboard = Discourse.Model.extend({});
@class AdminDashboard
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
AdminDashboard.reopenClass({
Discourse.AdminDashboard = Discourse.Model.extend({});
Discourse.AdminDashboard.reopenClass({
/**
Fetch all dashboard data. This can be an expensive request when the cached data
@@ -12,7 +20,7 @@ AdminDashboard.reopenClass({
**/
find: function() {
return Discourse.ajax("/admin/dashboard.json").then(function(json) {
var model = AdminDashboard.create(json);
var model = Discourse.AdminDashboard.create(json);
model.set('loaded', true);
return model;
});
@@ -30,11 +38,9 @@ AdminDashboard.reopenClass({
type: 'GET',
dataType: 'json'
}).then(function(json) {
var model = AdminDashboard.create(json);
var model = Discourse.AdminDashboard.create(json);
model.set('loaded', true);
return model;
});
}
});
export default AdminDashboard;

View File

@@ -1,4 +1,12 @@
const ApiKey = Discourse.Model.extend({
/**
Our data model for representing an API key in the system
@class ApiKey
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.ApiKey = Discourse.Model.extend({
/**
Regenerates the api key
@@ -26,20 +34,19 @@ const ApiKey = Discourse.Model.extend({
});
ApiKey.reopenClass({
Discourse.ApiKey.reopenClass({
/**
Creates an API key instance with internal user object
@method create
@param {...} var_args the properties to initialize this with
@returns {ApiKey} the ApiKey instance
@returns {Discourse.ApiKey} the ApiKey instance
**/
create: function() {
const AdminUser = require('admin/models/admin-user').default;
var result = this._super.apply(this, arguments);
if (result.user) {
result.user = AdminUser.create(result.user);
result.user = Discourse.AdminUser.create(result.user);
}
return result;
},
@@ -48,12 +55,12 @@ ApiKey.reopenClass({
Finds a list of API keys
@method find
@returns {Promise} a promise that resolves to the array of `ApiKey` instances
@returns {Promise} a promise that resolves to the array of `Discourse.ApiKey` instances
**/
find: function() {
return Discourse.ajax("/admin/api").then(function(keys) {
return keys.map(function (key) {
return ApiKey.create(key);
return Discourse.ApiKey.create(key);
});
});
},
@@ -62,14 +69,12 @@ ApiKey.reopenClass({
Generates a master api key and returns it.
@method generateMasterKey
@returns {Promise} a promise that resolves to a master `ApiKey`
@returns {Promise} a promise that resolves to a master `Discourse.ApiKey`
**/
generateMasterKey: function() {
return Discourse.ajax("/admin/api/key", {type: 'POST'}).then(function (result) {
return ApiKey.create(result.api_key);
return Discourse.ApiKey.create(result.api_key);
});
}
});
export default ApiKey;

View File

@@ -1,6 +1,12 @@
import ColorSchemeColor from 'admin/models/color-scheme-color';
/**
Our data model for a color scheme.
const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
@class ColorScheme
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.ColorScheme = Discourse.Model.extend(Ember.Copyable, {
init: function() {
this._super();
@@ -19,9 +25,9 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
},
copy: function() {
var newScheme = ColorScheme.create({name: this.get('name'), enabled: false, can_edit: true, colors: Em.A()});
var newScheme = Discourse.ColorScheme.create({name: this.get('name'), enabled: false, can_edit: true, colors: Em.A()});
_.each(this.get('colors'), function(c){
newScheme.colors.pushObject(ColorSchemeColor.create({name: c.get('name'), hex: c.get('hex'), default_hex: c.get('default_hex')}));
newScheme.colors.pushObject(Discourse.ColorSchemeColor.create({name: c.get('name'), hex: c.get('hex'), default_hex: c.get('default_hex')}));
});
return newScheme;
},
@@ -103,17 +109,17 @@ var ColorSchemes = Ember.ArrayProxy.extend({
}.observes('selectedItem')
});
ColorScheme.reopenClass({
Discourse.ColorScheme.reopenClass({
findAll: function() {
var colorSchemes = ColorSchemes.create({ content: [], loading: true });
Discourse.ajax('/admin/color_schemes').then(function(all) {
_.each(all, function(colorScheme){
colorSchemes.pushObject(ColorScheme.create({
colorSchemes.pushObject(Discourse.ColorScheme.create({
id: colorScheme.id,
name: colorScheme.name,
enabled: colorScheme.enabled,
is_base: colorScheme.is_base,
colors: colorScheme.colors.map(function(c) { return ColorSchemeColor.create({name: c.name, hex: c.hex, default_hex: c.default_hex}); })
colors: colorScheme.colors.map(function(c) { return Discourse.ColorSchemeColor.create({name: c.name, hex: c.hex, default_hex: c.default_hex}); })
}));
});
colorSchemes.set('loading', false);
@@ -121,5 +127,3 @@ ColorScheme.reopenClass({
return colorSchemes;
}
});
export default ColorScheme;

View File

@@ -1,4 +1,13 @@
const ColorSchemeColor = Discourse.Model.extend({
/**
Our data model for a color within a color scheme.
(It's a funny name for a class, but Color seemed too generic for what this class is.)
@class ColorSchemeColor
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.ColorSchemeColor = Discourse.Model.extend({
init: function() {
this._super();
@@ -69,5 +78,3 @@ const ColorSchemeColor = Discourse.Model.extend({
return this.get('hex').match(/^([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/) !== null;
}.property('hex')
});
export default ColorSchemeColor;

View File

@@ -1,11 +0,0 @@
const EmailSettings = Discourse.Model.extend({});
EmailSettings.reopenClass({
find: function() {
return Discourse.ajax("/admin/email.json").then(function (settings) {
return EmailSettings.create(settings);
});
}
});
export default EmailSettings;

View File

@@ -1,14 +1,20 @@
import AdminUser from 'admin/models/admin-user';
/**
Our data model for representing an email log.
const EmailLog = Discourse.Model.extend({});
@class EmailLog
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.EmailLog = Discourse.Model.extend({});
EmailLog.reopenClass({
Discourse.EmailLog.reopenClass({
create: function(attrs) {
attrs = attrs || {};
if (attrs.user) {
attrs.user = AdminUser.create(attrs.user);
attrs.user = Discourse.AdminUser.create(attrs.user);
}
return this._super(attrs);
@@ -21,10 +27,10 @@ EmailLog.reopenClass({
return Discourse.ajax("/admin/email/" + status + ".json", { data: filter }).then(function(logs) {
return _.map(logs, function (log) {
return EmailLog.create(log);
return Discourse.EmailLog.create(log);
});
});
}
});
export default EmailLog;

View File

@@ -1,6 +1,14 @@
const EmailPreview = Discourse.Model.extend({});
/**
Our data model for showing a preview of an email
EmailPreview.reopenClass({
@class EmailPreview
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.EmailPreview = Discourse.Model.extend({});
Discourse.EmailPreview.reopenClass({
findDigest: function(lastSeenAt, username) {
if (Em.isEmpty(lastSeenAt)) {
@@ -14,9 +22,7 @@ EmailPreview.reopenClass({
return Discourse.ajax("/admin/email/preview-digest.json", {
data: { last_seen_at: lastSeenAt, username: username }
}).then(function (result) {
return EmailPreview.create(result);
return Discourse.EmailPreview.create(result);
});
}
});
export default EmailPreview;

View File

@@ -0,0 +1,17 @@
/**
Our data model for representing the current email settings
@class EmailSettings
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.EmailSettings = Discourse.Model.extend({});
Discourse.EmailSettings.reopenClass({
find: function() {
return Discourse.ajax("/admin/email.json").then(function (settings) {
return Discourse.EmailSettings.create(settings);
});
}
});

View File

@@ -1,9 +1,12 @@
import AdminUser from 'admin/models/admin-user';
import Topic from 'discourse/models/topic';
import Post from 'discourse/models/post';
/**
Our data model for interacting with flagged posts.
const FlaggedPost = Post.extend({
@class FlaggedPost
@extends Discourse.Post
@namespace Discourse
@module Discourse
**/
Discourse.FlaggedPost = Discourse.Post.extend({
summary: function () {
return _(this.post_actions)
@@ -137,7 +140,7 @@ const FlaggedPost = Post.extend({
});
FlaggedPost.reopenClass({
Discourse.FlaggedPost.reopenClass({
findAll: function (filter, offset) {
offset = offset || 0;
@@ -148,18 +151,18 @@ FlaggedPost.reopenClass({
// users
var userLookup = {};
_.each(data.users, function (user) {
userLookup[user.id] = AdminUser.create(user);
userLookup[user.id] = Discourse.AdminUser.create(user);
});
// topics
var topicLookup = {};
_.each(data.topics, function (topic) {
topicLookup[topic.id] = Topic.create(topic);
topicLookup[topic.id] = Discourse.Topic.create(topic);
});
// posts
_.each(data.posts, function (post) {
var f = FlaggedPost.create(post);
var f = Discourse.FlaggedPost.create(post);
f.userLookup = userLookup;
f.topicLookup = topicLookup;
result.pushObject(f);
@@ -171,5 +174,3 @@ FlaggedPost.reopenClass({
});
}
});
export default FlaggedPost;

View File

@@ -1,4 +1,4 @@
const TL3Requirements = Discourse.Model.extend({
Discourse.TL3Requirements = Discourse.Model.extend({
days_visited_percent: function() {
return ((this.get('days_visited') * 100) / this.get('time_period'));
}.property('days_visited', 'time_period'),
@@ -38,5 +38,3 @@ const TL3Requirements = Discourse.Model.extend({
'num_likes_received_users', 'min_likes_received_users',
'trust_level_locked')
});
export default TL3Requirements;

View File

@@ -14,7 +14,7 @@ const Permalink = Discourse.Model.extend({
Permalink.reopenClass({
findAll: function(filter) {
return Discourse.ajax("/admin/permalinks.json", { data: { filter: filter } }).then(function(permalinks) {
return permalinks.map(p => Permalink.create(p));
return permalinks.map(p => Discourse.Permalink.create(p));
});
}
});

View File

@@ -1,4 +1,13 @@
const ScreenedEmail = Discourse.Model.extend({
/**
Represents an email address that is watched for during account registration,
and an action is taken.
@class ScreenedEmail
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.ScreenedEmail = Discourse.Model.extend({
actionName: function() {
return I18n.t("admin.logs.screened_actions." + this.get('action'));
}.property('action'),
@@ -8,14 +17,12 @@ const ScreenedEmail = Discourse.Model.extend({
}
});
ScreenedEmail.reopenClass({
Discourse.ScreenedEmail.reopenClass({
findAll: function() {
return Discourse.ajax("/admin/logs/screened_emails.json").then(function(screened_emails) {
return screened_emails.map(function(b) {
return ScreenedEmail.create(b);
return Discourse.ScreenedEmail.create(b);
});
});
}
});
export default ScreenedEmail;

View File

@@ -1,4 +1,8 @@
const ScreenedIpAddress = Discourse.Model.extend({
/**
Represents an IP address that is watched for during account registration
(and possibly other times), and an action is taken.
**/
Discourse.ScreenedIpAddress = Discourse.Model.extend({
actionName: function() {
return I18n.t("admin.logs.screened_ips.actions." + this.get('action_name'));
}.property('action_name'),
@@ -23,11 +27,11 @@ const ScreenedIpAddress = Discourse.Model.extend({
}
});
ScreenedIpAddress.reopenClass({
Discourse.ScreenedIpAddress.reopenClass({
findAll: function(filter) {
return Discourse.ajax("/admin/logs/screened_ip_addresses.json", { data: { filter: filter } }).then(function(screened_ips) {
return screened_ips.map(function(b) {
return ScreenedIpAddress.create(b);
return Discourse.ScreenedIpAddress.create(b);
});
});
},
@@ -36,5 +40,3 @@ ScreenedIpAddress.reopenClass({
return Discourse.ajax("/admin/logs/screened_ip_addresses/roll_up", { type: "POST" });
}
});
export default ScreenedIpAddress;

View File

@@ -1,17 +1,23 @@
const ScreenedUrl = Discourse.Model.extend({
/**
Represents a URL that is watched for, and an action may be taken.
@class ScreenedUrl
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.ScreenedUrl = Discourse.Model.extend({
actionName: function() {
return I18n.t("admin.logs.screened_actions." + this.get('action'));
}.property('action')
});
ScreenedUrl.reopenClass({
Discourse.ScreenedUrl.reopenClass({
findAll: function() {
return Discourse.ajax("/admin/logs/screened_urls.json").then(function(screened_urls) {
return screened_urls.map(function(b) {
return ScreenedUrl.create(b);
return Discourse.ScreenedUrl.create(b);
});
});
}
});
export default ScreenedUrl;

View File

@@ -35,7 +35,7 @@ SiteSetting.reopenClass({
if (!categories[s.category]) {
categories[s.category] = [];
}
categories[s.category].pushObject(SiteSetting.create(s));
categories[s.category].pushObject(Discourse.SiteSetting.create(s));
});
return Object.keys(categories).map(function(n) {

View File

@@ -1,6 +1,4 @@
import AdminUser from 'admin/models/admin-user';
const StaffActionLog = Discourse.Model.extend({
Discourse.StaffActionLog = Discourse.Model.extend({
showFullDetails: false,
actionName: function() {
@@ -41,15 +39,15 @@ const StaffActionLog = Discourse.Model.extend({
}.property('action_name')
});
StaffActionLog.reopenClass({
Discourse.StaffActionLog.reopenClass({
create: function(attrs) {
attrs = attrs || {};
if (attrs.acting_user) {
attrs.acting_user = AdminUser.create(attrs.acting_user);
attrs.acting_user = Discourse.AdminUser.create(attrs.acting_user);
}
if (attrs.target_user) {
attrs.target_user = AdminUser.create(attrs.target_user);
attrs.target_user = Discourse.AdminUser.create(attrs.target_user);
}
return this._super(attrs);
},
@@ -57,10 +55,8 @@ StaffActionLog.reopenClass({
findAll: function(filters) {
return Discourse.ajax("/admin/logs/staff_action_logs.json", { data: filters }).then(function(staff_actions) {
return staff_actions.map(function(s) {
return StaffActionLog.create(s);
return Discourse.StaffActionLog.create(s);
});
});
}
});
export default StaffActionLog;

View File

@@ -1,4 +1,12 @@
const VersionCheck = Discourse.Model.extend({
/**
Our data model for determining whether there's a new version of Discourse
@class VersionCheck
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.VersionCheck = Discourse.Model.extend({
noCheckPerformed: function() {
return this.get('updated_at') === null;
@@ -31,12 +39,10 @@ const VersionCheck = Discourse.Model.extend({
}.property('installed_sha')
});
VersionCheck.reopenClass({
Discourse.VersionCheck.reopenClass({
find: function() {
return Discourse.ajax('/admin/version_check').then(function(json) {
return VersionCheck.create(json);
return Discourse.VersionCheck.create(json);
});
}
});
export default VersionCheck;