Skip to content

Commit 5770879

Browse files
committed
Refactor: Move Topic Details into better objects, identity map, tests, query string filters
1 parent d051e35 commit 5770879

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1849
-1239
lines changed

app/assets/javascripts/admin/controllers/admin_flags_controller.js

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Discourse.AdminFlagsController = Ember.ArrayController.extend({
4040
bootbox.alert(Em.String.i18n("admin.flags.error"));
4141
});
4242
},
43+
4344
/**
4445
Deletes a post
4546

app/assets/javascripts/discourse.js

-4
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,6 @@ Discourse = Ember.Application.createWithMixins({
331331
Discourse.MessageBus.start();
332332
Discourse.KeyValueStore.init("discourse_", Discourse.MessageBus);
333333

334-
// Don't remove site settings for now. It seems on some browsers the route
335-
// tries to use it after it has been removed
336-
// PreloadStore.remove('siteSettings');
337-
338334
// Developer specific functions
339335
Discourse.Development.setupProbes();
340336
Discourse.Development.observeLiveChanges();

app/assets/javascripts/discourse/components/url.js

+22-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
@namespace Discourse
66
@module Discourse
77
**/
8-
Discourse.URL = {
8+
Discourse.URL = Em.Object.createWithMixins({
99

1010
// Used for matching a topic
1111
TOPIC_REGEXP: /\/t\/([^\/]+)\/(\d+)\/?(\d+)?/,
@@ -23,7 +23,7 @@ Discourse.URL = {
2323
**/
2424
router: function() {
2525
return Discourse.__container__.lookup('router:main');
26-
},
26+
}.property(),
2727

2828
/**
2929
Browser aware replaceState. Will only be invoked if the browser supports it.
@@ -43,7 +43,8 @@ Discourse.URL = {
4343
// while URLs are loading. For example, while a topic loads it sets `currentPost`
4444
// which triggers a replaceState even though the topic hasn't fully loaded yet!
4545
Em.run.next(function() {
46-
Discourse.URL.router().get('location').replaceURL(path);
46+
var location = Discourse.URL.get('router.location');
47+
if (location.replaceURL) { location.replaceURL(path); }
4748
});
4849
}
4950
},
@@ -85,10 +86,16 @@ Discourse.URL = {
8586
if (oldTopicId === newTopicId) {
8687
Discourse.URL.replaceState(path);
8788
var topicController = Discourse.__container__.lookup('controller:topic');
88-
var opts = { trackVisit: false };
89+
var opts = { };
8990
if (newMatches[3]) opts.nearPost = newMatches[3];
90-
topicController.cancelFilter();
91-
topicController.loadPosts(opts);
91+
92+
var postStream = topicController.get('postStream');
93+
postStream.refresh(opts).then(function() {
94+
topicController.setProperties({
95+
currentPost: opts.nearPost || 1,
96+
progressPosition: opts.nearPost || 1
97+
});
98+
});
9299

93100
// Abort routing, we have replaced our state.
94101
return;
@@ -102,11 +109,18 @@ Discourse.URL = {
102109

103110
// Be wary of looking up the router. In this case, we have links in our
104111
// HTML, say form compiled markdown posts, that need to be routed.
105-
var router = this.router();
112+
var router = this.get('router');
106113
router.router.updateURL(path);
107114
return router.handleURL(path);
108115
},
109116

117+
/**
118+
Replaces the query parameters in the URL. Use no parameters to clear them.
119+
120+
@method replaceQueryParams
121+
**/
122+
queryParams: Em.computed.alias('router.location.queryParams'),
123+
110124
/**
111125
@private
112126
@@ -131,4 +145,4 @@ Discourse.URL = {
131145
window.location = Discourse.getURL(url);
132146
}
133147

134-
};
148+
});

app/assets/javascripts/discourse/controllers/edit_topic_auto_close_controller.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
Discourse.EditTopicAutoCloseController = Discourse.ObjectController.extend(Discourse.ModalFunctionality, {
1111

1212
setDays: function() {
13-
if( this.get('auto_close_at') ) {
14-
var closeTime = new Date( this.get('auto_close_at') );
13+
if( this.get('details.auto_close_at') ) {
14+
var closeTime = new Date( this.get('details.auto_close_at') );
1515
if (closeTime > new Date()) {
1616
this.set('auto_close_days', closeTime.daysSince());
1717
}
1818
} else {
19-
this.set('auto_close_days', '');
19+
this.set('details.auto_close_days', '');
2020
}
21-
}.observes('auto_close_at'),
21+
}.observes('details.auto_close_at'),
2222

2323
saveAutoClose: function() {
2424
this.setAutoClose( parseFloat(this.get('auto_close_days')) );
@@ -36,7 +36,7 @@ Discourse.EditTopicAutoCloseController = Discourse.ObjectController.extend(Disco
3636
dataType: 'html', // no custom errors, jquery 1.9 enforces json
3737
data: { auto_close_days: days > 0 ? days : null }
3838
}).then(function(){
39-
editTopicAutoCloseController.set('auto_close_at', moment().add('days', days).format());
39+
editTopicAutoCloseController.set('details.auto_close_at', moment().add('days', days).format());
4040
}, function (error) {
4141
bootbox.alert(Em.String.i18n('generic_error'));
4242
});

app/assets/javascripts/discourse/controllers/invite_private_controller.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Discourse.InvitePrivateController = Discourse.ObjectController.extend(Discourse.
4040
invitePrivateController.set('finished', true);
4141

4242
if(result && result.user) {
43-
invitePrivateController.get('content.allowed_users').pushObject(result.user);
43+
invitePrivateController.get('content.details.allowed_users').pushObject(result.user);
4444
}
4545
}, function() {
4646
// Failure

app/assets/javascripts/discourse/controllers/quote_button_controller.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Discourse.QuoteButtonController = Discourse.Controller.extend({
3434
if (!Discourse.User.current()) return;
3535

3636
// don't display the "quote-reply" button if we can't create a post
37-
if (!this.get('controllers.topic.content.can_create_post')) return;
37+
if (!this.get('controllers.topic.model.details.can_create_post')) return;
3838

3939
var selection = window.getSelection();
4040
// no selections

0 commit comments

Comments
 (0)