From eae30d7816bce3c99613e4cfc9c674547233d4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Sat, 7 Sep 2013 10:49:11 +0200 Subject: [PATCH] staff can always upload a file --- .../javascripts/discourse/components/utilities.js | 5 +++-- app/assets/javascripts/discourse/models/draft.js | 8 ++++---- app/assets/javascripts/discourse/models/user.js | 13 +++++++++++++ test/javascripts/components/utilities_test.js | 4 ++-- test/javascripts/fixtures/draft_fixtures.js | 2 ++ test/javascripts/fixtures/user_fixtures.js | 2 ++ test/javascripts/models/user_test.js | 10 +++++++++- 7 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 test/javascripts/fixtures/draft_fixtures.js diff --git a/app/assets/javascripts/discourse/components/utilities.js b/app/assets/javascripts/discourse/components/utilities.js index f9bbd02e7..0000c8157 100644 --- a/app/assets/javascripts/discourse/components/utilities.js +++ b/app/assets/javascripts/discourse/components/utilities.js @@ -194,7 +194,8 @@ Discourse.Utilities = { @method validateUploadedFile @param {File} file The file to be uploaded - @param {string} type The type of the file + @param {string} type The type of the upload (image, attachment) + @returns true whenever the upload is valid **/ validateUploadedFile: function(file, type) { // check that the uploaded file is authorized @@ -205,7 +206,7 @@ Discourse.Utilities = { } // ensures that new users can upload a file - if (Discourse.User.currentProp('trust_level') === 0 && Discourse.SiteSettings['newuser_max_' + type + 's'] === 0) { + if (!Discourse.User.current().isAllowedToUploadAFile(type)) { bootbox.alert(I18n.t('post.errors.' + type + '_upload_not_allowed_for_new_user')); return false; } diff --git a/app/assets/javascripts/discourse/models/draft.js b/app/assets/javascripts/discourse/models/draft.js index 110eab62d..e049a80ec 100644 --- a/app/assets/javascripts/discourse/models/draft.js +++ b/app/assets/javascripts/discourse/models/draft.js @@ -11,7 +11,7 @@ Discourse.Draft = Discourse.Model.extend({}); Discourse.Draft.reopenClass({ clear: function(key, sequence) { - return Discourse.ajax("/draft", { + return Discourse.ajax("/draft.json", { type: 'DELETE', data: { draft_key: key, @@ -21,20 +21,20 @@ Discourse.Draft.reopenClass({ }, get: function(key) { - return Discourse.ajax('/draft', { + return Discourse.ajax('/draft.json', { data: { draft_key: key }, dataType: 'json' }); }, getLocal: function(key, current) { - var local; + // TODO: implement this return current; }, save: function(key, sequence, data) { data = typeof data === "string" ? data : JSON.stringify(data); - return Discourse.ajax("/draft", { + return Discourse.ajax("/draft.json", { type: 'POST', data: { draft_key: key, diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js index 816007184..da09146b6 100644 --- a/app/assets/javascripts/discourse/models/user.js +++ b/app/assets/javascripts/discourse/models/user.js @@ -276,6 +276,19 @@ Discourse.User = Discourse.Model.extend({ type: 'PUT', data: { use_uploaded_avatar: useUploadedAvatar } }); + }, + + /** + Determines whether the current user is allowed to upload a file. + + @method isAllowedToUploadAFile + @param {string} type The type of the upload (image, attachment) + @returns true if the current user is allowed to upload a file + **/ + isAllowedToUploadAFile: function(type) { + return this.get('staff') || + this.get('trust_level') > 0 || + Discourse.SiteSettings['newuser_max_' + type + 's'] > 0; } }); diff --git a/test/javascripts/components/utilities_test.js b/test/javascripts/components/utilities_test.js index 7981dd465..c6d8e98f6 100644 --- a/test/javascripts/components/utilities_test.js +++ b/test/javascripts/components/utilities_test.js @@ -24,7 +24,6 @@ test("uploading one file", function() { test("new user cannot upload images", function() { Discourse.SiteSettings.newuser_max_images = 0; - this.stub(Discourse.User, 'currentProp').withArgs("trust_level").returns(0); this.stub(bootbox, "alert"); ok(!validUpload([{name: "image.png"}])); @@ -33,7 +32,6 @@ test("new user cannot upload images", function() { test("new user cannot upload attachments", function() { Discourse.SiteSettings.newuser_max_attachments = 0; - this.stub(Discourse.User, 'currentProp').withArgs("trust_level").returns(0); this.stub(bootbox, "alert"); ok(!validUpload([{name: "roman.txt"}])); @@ -52,6 +50,7 @@ test("ensures an authorized upload", function() { test("prevents files that are too big from being uploaded", function() { var image = { name: "image.png", size: 10 * 1024 }; Discourse.SiteSettings.max_image_size_kb = 5; + Discourse.User.currentProp("trust_level", 1); this.stub(bootbox, "alert"); ok(!validUpload([image])); @@ -70,6 +69,7 @@ var dummyBlob = function() { }; test("allows valid uploads to go through", function() { + Discourse.User.currentProp("trust_level", 1); Discourse.SiteSettings.max_image_size_kb = 15; this.stub(bootbox, "alert"); diff --git a/test/javascripts/fixtures/draft_fixtures.js b/test/javascripts/fixtures/draft_fixtures.js new file mode 100644 index 000000000..a69e36357 --- /dev/null +++ b/test/javascripts/fixtures/draft_fixtures.js @@ -0,0 +1,2 @@ +/*jshint maxlen:10000000 */ +Discourse.URL_FIXTURES["/draft.json"] = {}; diff --git a/test/javascripts/fixtures/user_fixtures.js b/test/javascripts/fixtures/user_fixtures.js index d091e77ab..53cdc19c8 100644 --- a/test/javascripts/fixtures/user_fixtures.js +++ b/test/javascripts/fixtures/user_fixtures.js @@ -7,3 +7,5 @@ Discourse.URL_FIXTURES["/user_actions.json?offset=0&username=eviltrout&filter=6, Discourse.URL_FIXTURES["/user_actions.json?offset=0&username=eviltrout&filter=1"] = {"user_actions":[{"action_type":1,"created_at":"2013-07-23T21:19:11Z","excerpt":"wow, that was incredibly easy. was expecting it to get a little hairy somewhere! \n\nreally, really spectacular feature team, great work. \n\nsaves me a number of "hey, this email that you sent didn't go where you think it did, you gotta log back in" emails!","avatar_template":"https://www.gravatar.com/avatar/9f9c97c5ef6915fb25af52ab3d51a06e.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":15,"reply_to_post_number":14,"username":"SBauch","name":"Sam Bauch","user_id":2876,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-07-18T21:56:21Z","excerpt":"I'll just drop this here: \n\nhttps://github.com/cfstras/discourse-konami \nIt's built on Konami-JS, which made this really easy :) \n\nTo Install, add this line to your Gemfile: \n\ngem 'discourse_konami', :git => 'https://github.com/cfstras/discourse-konami'\n\n\nexecute: \n\n$ bundle install\n$ rake assets:p…","avatar_template":"https://www.gravatar.com/avatar/18c103ae1020a5a9ceefe80ae83af5d5.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"plugin-the-konami-code","topic_id":8473,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"cfstras","name":"cfstras","user_id":1496,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Plugin: The Konami Code","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-07-17T19:46:22Z","excerpt":"Hi everybody, \n\nI work at Heroku and am managing our little forums experiment. I plan on creating a new fork of Discourse shortly that will contain everything we needed to do to get it running on Heroku. Teaser: it wasn't much at all and I have hopes that someday there will be no diversion from mast…","avatar_template":"https://www.gravatar.com/avatar/8eb7bf96dd877adca0cbd29bb2e47e38.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"anyone-got-this-running-on-heroku-yet","topic_id":625,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":124,"reply_to_post_number":null,"username":"rwdaigle","name":"rwdaigle","user_id":6128,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Anyone got this running on Heroku yet?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-07-16T17:49:47Z","excerpt":"I was thinking, if we just added a hyperlink directly underneath your username, it could coerce users to fill in about me sections. \n\n[image] \n\nThe rules are simple \n\n\nOnly shows up when you are looking at your avatar/username \nAnd clearly only shows up when its blank \nLink takes you to your edit pr…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"stronger-hinting-to-fill-stuff-in-about-me-field","topic_id":8409,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Stronger hinting to fill stuff in about me field","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-07-12T20:52:21Z","excerpt":"And a blog post.","avatar_template":"https://www.gravatar.com/avatar/69fda0df8b4878fb6a18deffa972d26a.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"thumbnails-and-original-images-in-posts","topic_id":8321,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":null,"username":"erlend_sh","name":"Erlend Sogge Heggen","user_id":5351,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Thumbnails and original images in posts","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-25T16:01:27Z","excerpt":"Continuing the discussion from Internationalization / localization, which has become a massive, unfocused topic: \n\nLet's talk about translation tools and the process for getting translations done. If we were going to adopt a third-party tool to get translations done, which should be used? From the I…","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"translation-tools-transifex-localeapp","topic_id":7763,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Translation Tools: Transifex? Localeapp?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-25T15:45:31Z","excerpt":"I use 1Password to log in to Discourse sites. You may need to click the + sign to create a new record, but it Works For Me™. \n\n[image]","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"add-method-attribute-to-logon-form","topic_id":7741,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":6,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Add method attribute to logon form?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-25T03:03:44Z","excerpt":"I made a bunch of progress today see: \n\n\n \n \n \n [image]\n github.com\n \n \n \n\n \n \n [SamSaffron]\n\n \n fix all sorts of issues with random spec order\nSiteSetting no longer persisted across tests\n \n\n \n by SamSaffron\n on…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"site-settings-refactoring","topic_id":7687,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Site Settings Refactoring","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-19T13:31:51Z","excerpt":"Andrew \n\nI am very humbled to have a response from you here, I do appreciate what you created with sugar, when @eviltrout picked it for Discourse it was not a decision he took on a whim. \n\nI am super excited you are taking a fresh look at performance, that is fantastic news. \n\nAfter quite a while…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"getting-rid-of-sugar-js","topic_id":7146,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":8,"reply_to_post_number":7,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Getting rid of sugar.js","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-19T13:31:47Z","excerpt":"Hello, creator of Sugar.js here. \n\nI realize you guys have come to a decision and sad to see you go but that's up to you... just want to add my 2 cents: \n\n1: \n\nYou're totally right about performance and it's something that Sugar has/is/will be devoting more attention to. I have just done a major ref…","avatar_template":"https://www.gravatar.com/avatar/39255341a51574e9651b1094537e7683.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"getting-rid-of-sugar-js","topic_id":7146,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":7,"reply_to_post_number":null,"username":"l_andrew_l","name":"l_andrew_l","user_id":5610,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Getting rid of sugar.js","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-12T14:09:25Z","excerpt":"Sugar.js is gone. \n\nThis makes me happy. I just don't buy that there is this magic need to amend every protoype in the system. It is fragile, risky and generally considered a bad practice, I don't buy that you need to wack 100 extra method on Array, String and so on. Also, Sugar unacceptably slow fo…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"getting-rid-of-sugar-js","topic_id":7146,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Getting rid of sugar.js","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-10T20:43:34Z","excerpt":"It was a bug. I fixed it today:","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"unable-to-delete-categories","topic_id":7357,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Unable to delete categories!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-09T16:06:49Z","excerpt":"Your install is a mess, looks like a lot of the requests aren't even making it to Discourse: \n\nWhen I try to save preferences, I see this in the chrome console: \n\n\n PUT http://convinceyou.com/users/supermathie 404 (Not Found) \n\n\nWhen I try to log out: \n\n\n DELETE http://convinceyou.com/session/supe…","avatar_template":"https://www.gravatar.com/avatar/44ae1b2d44d48aed3d432129a5703942.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"troubleshooting-failed-discourse-install","topic_id":7292,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"supermathie","name":"Michael Brown","user_id":3,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Troubleshooting failed Discourse install","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-07T18:29:30Z","excerpt":"It's actually very tidy if we change the PostCreator constructor and think about pulling the whitelist logic into its own class. The request can stay the same and we get to re-use the filter in other controllers. Something like: \n\n# app/controllers/posts_controller.rb\nclass PostsControllers \n …","avatar_template":"https://www.gravatar.com/avatar/4fafaca2401263fd03b62ff37a157a35.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"ensuring-scalar-values-for-parameters-with-strong-parameters","topic_id":7235,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":12,"reply_to_post_number":10,"username":"chrishunt","name":"Chris Hunt","user_id":247,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Ensuring scalar values for parameters with strong_parameters","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-06T21:28:41Z","excerpt":"So, you want to use S3 to handle image uploads? Here's the definitive guide: \n\nS3 registration\n\nHead over to http://aws.amazon.com/s3/ and click on [image]. \n\nDuring the create account process, make sure you provide payment information, otherwise you won't be able to use S3. There's no registration …","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"how-to-set-up-image-uploads-to-s3","topic_id":7229,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"How to set up image uploads to S3?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-06T15:07:28Z","excerpt":"The user model is one of our most biggest models, I totally support simplifying and decomposing. \n\nUsername suggestion stuff can be extracted out. We can introduce a UserCreator like we have a PostCreator and TopicCreator, update_last_seen! maybe can be moved to another spot. \n\nPR totally welcome. …","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"little-refactor-over-user-model-to-avoid-global-complexity","topic_id":7219,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Little refactor over User model to avoid global complexity","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-06T05:47:36Z","excerpt":"Seems good! \n\nOf course, I should have checked other big projects, brains are very silly things. My thought was "oh, I don't know if this is true, I'll look at Discourse!" And rather than keep looking, I just stopped there.","avatar_template":"https://www.gravatar.com/avatar/233c279c012ebac792aaa805f966cbc7.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-the-gpl-and-per-file-notice","topic_id":7208,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"steveklabnik","name":"steveklabnik","user_id":5413,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse, the GPL, and per-file notice","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-02T15:23:14Z","excerpt":"I got Ember.Control from wycats :)","avatar_template":"https://www.gravatar.com/avatar/749001c9fe6927c4b069a45c2a3d68f7.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-ember-refactorings","topic_id":7019,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"ryanflorence","name":"ryanflorence","user_id":2702,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse Ember Refactorings","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-06-02T15:22:11Z","excerpt":"This is excellent @eviltrout! \n\nJust one remark, regarding this issue: \n\nWhen a view is enough, I really like what @ryanflorence is doing in his screencasts with his Control view: \n\nEmber.Control = Ember.View.extend({ \n init: function() {\n this._super();\n this.set('context', this);\n }\n…","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-ember-refactorings","topic_id":7019,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse Ember Refactorings","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-05-31T16:58:10Z","excerpt":"For the feature I was working on yesterday, @codinghorror wanted a rather complex sentence. \n\n"There is 1 unread and 9 new topics remaining, or browse other topics in [category]" \n\nThis seemingly simple sentence was a royal nightmare to localize with our existing localization system. Think through …","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"message-format-support-for-localization","topic_id":7035,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Message Format support for localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-05-31T16:58:07Z","excerpt":"I know this isn't really the point of your post, but I don't think that's correct. At least, it seems super-awkward to this American. Is it possible to rewrite the sentence entirely? Maybe something like this: \n\n\n You have 1 unread topic and 9 new topics left, or browse other topics in [categor…","avatar_template":"https://www.gravatar.com/avatar/413ef976f0d2ca993005c9aee4769254.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"message-format-support-for-localization","topic_id":7035,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"BhaelOchon","name":"Bill Ayakatubby","user_id":471,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Message Format support for localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-05-28T14:45:39Z","excerpt":"I believe you should use the uncategorized_name site setting for that.","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"how-to-localize-the-uncategorized-category-name","topic_id":6947,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"How to localize the “uncategorized” category name","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-05-24T14:09:01Z","excerpt":"I'm digging into the Topic class along the same lines. I love cleaning, simplifying, and good OO design.","avatar_template":"https://www.gravatar.com/avatar/985ff04dc441ad87b0cefcd31823575d.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"so-you-want-to-help-out-with-discourse","topic_id":3823,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":29,"reply_to_post_number":null,"username":"mattvanhorn","name":"Matt Van Horn","user_id":5103,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"So, you want to help out with Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-05-17T03:39:29Z","excerpt":"I got this question on twitter and wanted to touch on it here. \n\n\n \n \n \n [image] twitter.com\n \n \n \n \n [image]@nycplayer\n\n @samsaffron Want to start helping w/ Discourse, is it OK w/ you to make PRs for minor stuff like changing !foo.present? to foo.blank…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"where-does-discourse-stand-on-minor-refactoring-prs","topic_id":6677,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Where does Discourse stand on minor refactoring PRs","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-10T01:35:32Z","excerpt":"I have seen some twittering by @robconery that I would like to respond to here as opposed to on twitter. \n\n\n \n \n \n [image] twitter.com\n \n \n \n\n \n [image]\n \n @robconery\n \n \n\n I like the Discourse project a lot, but using it as a starti…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-as-your-first-rails-app","topic_id":5751,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse as Your First Rails App","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-08T23:58:19Z","excerpt":"Yeah. I'm hoping that we can minimize the tech support questions though - I'd rather have interesting discussion than boring tech support.","avatar_template":"https://www.gravatar.com/avatar/b0b1ce3a4e0a77abd157ec0309b72922.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"mixing-discussion-with-q-a","topic_id":5684,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"geek","name":"Lowell Heddings","user_id":8,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"mixing discussion with Q&A","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-08T23:56:01Z","excerpt":"Hi, \n\nWe have just released a new version 0.8.5 of Discourse with the latest updates and fixes. It is available from: \n\nhttp://bitnami.com/stack/discourse \n\nIt also ships Git now so you can maintain up-to-date the code from the repository. \n\nWe have also written a quick guide for syncing Discourse w…","avatar_template":"https://www.gravatar.com/avatar/a9355c49149e2788c3373b26289dbca0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-as-part-of-bitnami","topic_id":3905,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":31,"reply_to_post_number":null,"username":"wojciechka","name":"wojciechka","user_id":4369,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse as part of BitNami","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-03T22:54:52Z","excerpt":"It’s been almost exactly two months since we launched Discourse, and I’m pleased to announce that yesterday we launched the first of our three partners: \n\nThat’s right, How-To Geek! \n\nThis topic is for comments on the original blog entry, at http://blog.discourse.org/2013/04/our-first-partner-how-to…","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"our-first-partner-how-to-geek","topic_id":5575,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"codinghorror","name":"Jeff Atwood","user_id":32,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Our First Partner: How-To Geek","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-01T19:12:09Z","excerpt":"Yeah the tutorial purposefully glosses over the rails server side stuff, but links to the controller on github- \n\n \n\n \n [image] github.com\n \n \n https://github.com/discourse/discourse/blob/master/app/controllers/admin/reports_controller.rb\n require_dependency 'report'\n\nclass Admi…","avatar_template":"https://www.gravatar.com/avatar/9f9c97c5ef6915fb25af52ab3d51a06e.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"issues-with-adding-routes","topic_id":5422,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":7,"reply_to_post_number":6,"username":"SBauch","name":"Sam Bauch","user_id":2876,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Issues with adding routes","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-04-01T15:32:35Z","excerpt":"This pull request fixes it [wink]","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"storing-images-on-s3","topic_id":3370,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":10,"reply_to_post_number":9,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Storing images on S3","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-24T18:12:06Z","excerpt":"Slim Scrooge monitors your queries and modifies the select list to only include required columns. May be either of use in itself or for ideas on reducing select * overhead.","avatar_template":"https://www.gravatar.com/avatar/f0254f5e74f0733c9538d6095afac235.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"tuning-ruby-and-rails-for-discourse","topic_id":4126,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":22,"reply_to_post_number":10,"username":"all4miller","name":"all4miller","user_id":4052,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Tuning Ruby and Rails for Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-22T13:59:27Z","excerpt":"Nice catch! This pull request fixes it [wink]","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"opengraph-tags-not-fully-sanitized","topic_id":4992,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"OpenGraph tags not fully sanitized","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-22T13:59:25Z","excerpt":"The og:description meta tag is currently getting corrupted with DOCTYPE information which is not being stripped out cleanly. \n\nlib/summarize.rb is currently using the ActionView::Helpers summarize method to strip HTML tags, but this fails to deal with DOCTYPE entries. \n\nSince the Sanitize Gem is alr…","avatar_template":"https://www.gravatar.com/avatar/44d0a0aa228f242b5ae82aaed237312b.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"opengraph-tags-not-fully-sanitized","topic_id":4992,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"Ethos","name":"Terry Cox","user_id":3634,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"OpenGraph tags not fully sanitized","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-21T20:50:22Z","excerpt":"I have started working on a Danish translation. If you know the language, feel free to help out. You can track my progress here: https://github.com/discourse/discourse/pull/493","avatar_template":"https://www.gravatar.com/avatar/2c3b9882e6898958b892a218b5493af9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":77,"reply_to_post_number":null,"username":"mikl","name":"Mikkel Høgh","user_id":2753,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-19T21:17:01Z","excerpt":"And they put us in front of phpBB too [hammer]","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"discourse-in-the-news","topic_id":4911,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"codinghorror","name":"Jeff Atwood","user_id":32,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Discourse in the news...","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-14T14:04:52Z","excerpt":"I think the answer here is both. \n\nAs @eviltrout said, we should include the "top 10" login strategies that people are likely to want. You can see from recent Stack Exchange data that beyond local logins, Google, Facebook (and probably Twitter), most everything else is a tiny percentage of the total…","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"adding-additional-omniauth-strategies-via-plugin","topic_id":4290,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":11,"reply_to_post_number":null,"username":"codinghorror","name":"Jeff Atwood","user_id":32,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Adding additional Omniauth strategies via plugin?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-13T22:39:06Z","excerpt":"Continuing the discussion from Alternative (non-ajax) way to login, so that browser password manager can save the login credentials: \n\nSince Discourse's login form was being rendered only when you click the login button, browsers weren't asking to save your password. They only see forms that are ren…","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"login-support-for-browser-password-managers","topic_id":4738,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Login support for browser password managers","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-13T22:14:33Z","excerpt":"This should do it: \n\nuser = User.where(username: 'xyz').first \nemail_token = user.email_tokens.create(email: user.email) \nEmailToken.confirm( email_token.token )","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"is-there-a-continuing-guide-for-post-installation-steps","topic_id":4586,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":5,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Is there a continuing guide for post installation steps?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-13T03:39:58Z","excerpt":"Feel free to comment on the blog, too, but I wanted to open this up to a fuller discussion here as well: \n\nhttp://blog.discourse.org/2013/03/the-universal-rules-of-civilized-discourse/ \n\n\n The principles in the default Discourse community behavior FAQ were distilled, as best we could, from the comm…","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"the-universal-rules-of-civilized-discourse","topic_id":4705,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"codinghorror","name":"Jeff Atwood","user_id":32,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"The Universal Rules of Civilized Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-11T16:25:08Z","excerpt":"I am working on the Norwegian version of the translated files.","avatar_template":"https://www.gravatar.com/avatar/097f9f15bb97c2d6b8392f1858a7d8a8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":69,"reply_to_post_number":null,"username":"Andersos","name":"Anders Sandvik","user_id":3403,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-11T16:24:11Z","excerpt":"I am about to issue a pull-request for a first translation of Discourse into German. While doing it over the weekend, I came across a simple issue that renders proper translation of some phrases impossible: in the code, phrases are composed of too fine-grained units. \n\nTake this simple example of a …","avatar_template":"https://www.gravatar.com/avatar/1753724263a5dee3e38790e6ac3d685c.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":68,"reply_to_post_number":null,"username":"potthast","name":"Martin Potthast","user_id":3620,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-11T16:23:51Z","excerpt":"I'd like to throw a different perspective out there regarding this conversation. So far, the discussion seems to have focused on the performance impact of additional omniauth providers. While this is valid, it may end up being slightly less impactful than the code changes that need to be added to th…","avatar_template":"https://www.gravatar.com/avatar/39645efbd222c6c512f7ba0d9abadbbf.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"adding-additional-omniauth-strategies-via-plugin","topic_id":4290,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":10,"reply_to_post_number":null,"username":"devigned","name":"David Justice","user_id":3502,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Adding additional Omniauth strategies via plugin?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-11T00:26:16Z","excerpt":"@eviltrout and @zogstrip were wondering why I made this commit: \n\n \n \n \n \n [image] github.com\n \n \n \n \n [SamSaffron]\n SamSaffron\n requiring is mega expensive, lets not do it every request.\n Changed 1 files with 1 additions and 1 deletions.\n \n …","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"pattern-for-defer-loading-gems-and-profiling-with-perftools-rb","topic_id":4629,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Pattern for defer loading gems and profiling with perftools.rb","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-09T00:32:08Z","excerpt":"Yes, my github username is tangramor and I committed the translation work early today. \nThe should be some minor problems in the formatted emails, and I haven't tested them yet.","avatar_template":"https://www.gravatar.com/avatar/645454e097898e3f0d9a54c699995678.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":66,"reply_to_post_number":65,"username":"tattoo","name":"Tattoo","user_id":2995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-07T15:10:49Z","excerpt":"You are right, I checked out the newest code and it works now, thank you! \n\nI am working on the Simplified Chinese localization, if there is anybody want to do the same thing, we can work together. \n\nAnd for Discourse, I have decided to give it a Chinese name: 论道","avatar_template":"https://www.gravatar.com/avatar/645454e097898e3f0d9a54c699995678.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":61,"reply_to_post_number":60,"username":"tattoo","name":"Tattoo","user_id":2995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-06T15:23:16Z","excerpt":"I had forgotten how ridiculous Google Wave was. Anyone who says Discourse is "too noisy", well, I assume they have never been to any other forum software in their entire lives and certainly have never seen Google Wave in 'action'. And I use the term loosely.. \n\nOne caveat here is that there are actu…","avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"did-you-guys-consider-other-design-patterns-around-quoting","topic_id":4343,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"codinghorror","name":"Jeff Atwood","user_id":32,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Did you guys consider other design patterns around quoting?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-06T15:19:59Z","excerpt":"Just submitted a pull request solving this issue [wink]","avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"autofocus-in-insert-image-dialog-on-the-web-tab","topic_id":4410,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"zogstrip","name":"Régis Hanol","user_id":1995,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Autofocus in \"Insert image\" dialog, \"On the web\" tab","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-06T15:13:23Z","excerpt":"A very cheap fix, based on some of my work here: \n\n \n\n\nOur test suite runs on a debian VM, I played with various knobs to find the fastest way to run our tests, our baseline was 4:57 mins to run all our tests on 1.9.3 - p392 \n\nRAILS_ENV=test RUBY_GC_MALLOC_LIMIT=50000000 LD_PRELOAD=/usr/lib/libtcma…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"how-can-we-speed-up-our-test-suite","topic_id":3531,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":15,"reply_to_post_number":10,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"How can we speed up our test suite?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-05T20:44:19Z","excerpt":"It depends on what you're comfortable with - have you deployed a rails application to production? Are you comfortable with rolling back commits if there's a regression that gets pushed to master? \n\nAside from some initial setup, it's been relatively painless for me. I have a handful of commits where…","avatar_template":"https://www.gravatar.com/avatar/1fb5ede8d649e85f33f38b8f290c59e4.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"how-bloody-is-the-bleeding-edge","topic_id":4471,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":1,"username":"jcsims","name":"Chris Sims","user_id":639,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"How Bloody is the Bleeding Edge?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-05T15:43:16Z","excerpt":"Okay here's what I made today. https://dl.dropbox.com/u/19678539/discourse_mobile.pdf \n\nIncluded screens: \n\n\nTopic view\nList topics view\nHome page\nMenu open\nAfter you guys give feedback, I'm not sure if I should move to the CSS or continue mocking up the rest of the screens: \n\n\nNew reply and topic\nM…","avatar_template":"https://www.gravatar.com/avatar/b3cc0833590c80e6335edd04cacfc734.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"brainstorming-a-mobile-discourse-design","topic_id":4116,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":5,"reply_to_post_number":null,"username":"rahilsondhi","name":"Rahil Sondhi","user_id":3160,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Brainstorming a mobile Discourse design","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-04T18:48:59Z","excerpt":"Awesome! We're on it, hope to have something within the week.","avatar_template":"https://www.gravatar.com/avatar/5810c72f30b0ab202823d8c26460c39d.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"please-add-persona-as-an-authentication-option","topic_id":1420,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":8,"reply_to_post_number":null,"username":"lloydhilaiel","name":"lloydhilaiel","user_id":2575,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Please add Persona as an authentication option","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-04T14:51:53Z","excerpt":"Hey Sam, thanks for the info. \n\nI guess we fixed the hash thing on master, but it wasn't backported to 3-2-stable. I've backported it here: \n\n \n \n \n \n [image] github.com\n \n \n \n \n [spastorino]\n spastorino\n Freeze columns only once per Result\n\nConflic…","avatar_template":"https://www.gravatar.com/avatar/f29327647a9cff5c69618bae420792ea.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"tuning-ruby-and-rails-for-discourse","topic_id":4126,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":9,"reply_to_post_number":null,"username":"tenderlove","name":"tenderlove","user_id":3386,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Tuning Ruby and Rails for Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-01T22:48:50Z","excerpt":"Just in case that anybody else is interested, we're working with @gururea in a Spanish translation here: https://github.com/dacap/discourse/tree/spanish","avatar_template":"https://www.gravatar.com/avatar/ec0ebc7c17f649d03ee78d4eba56ef73.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"internationalization-localization","topic_id":280,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":58,"reply_to_post_number":52,"username":"dacap","name":"David Capello","user_id":1275,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Internationalization / localization","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-03-01T20:24:16Z","excerpt":"I think the link you want is here: \n\n[image] \n\nThe admin button on a user's profile takes you to their profile page in admin. I guess that's not clear from the button name though.","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"admin-button-should-direct-to-admin","topic_id":4292,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Admin button should direct to /admin","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-27T20:20:40Z","excerpt":"Here are some quick raw notes I would like to flesh out to a blog post, eventually. \n\nBeen noticing performance on the front page of Discourse is rather bad, after digging in with MiniProfiler I notices lots of GCs are hit for a single page view. I ran some tests in production with a few settings a…","avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"tuning-ruby-and-rails-for-discourse","topic_id":4126,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"sam","name":"Sam Saffron","user_id":1,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Tuning Ruby and Rails for Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-26T22:39:45Z","excerpt":"I just added some site settings that will get plugged into the default terms of service. company_full_name, company_short_name, company_domain. \n\nYou can always customize the heck out of the TOS by putting your own document in app/views/static/tos.html.erb after a deploy to your server.","avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"usage-of-tos-and-privacy-policy-in-discourse-powered-forums","topic_id":4004,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":5,"reply_to_post_number":null,"username":"Neil","name":"Neil","user_id":2,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Usage of TOS and Privacy Policy in discourse powered forums","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-15T22:56:37Z","excerpt":"In a recent commit, the docs were all moved into their own docs folder, so the above link to the advanced guide is broken. It can now be found at Discourse Advanced Developer Install Guide. \n\nAlso, thank you for the details on how you created your Vagrant VM. I hadn't heard of Vagrant before I start…","avatar_template":"https://www.gravatar.com/avatar/9489ef302fbff6c19bba507d09f8cd1d.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"new-updated-docs","topic_id":2918,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":1,"username":"lonnon","name":"Lonnon Foster","user_id":2636,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"New: Updated Docs","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-15T22:21:51Z","excerpt":"Over the past few days I've been working on chef scripts to get a server ready for discourse in production. Last night I got a working version of my capistrano scripts to make it easy to deploy. \n\nBoth are still works in progress, but what's nice is now they are set up, I can make changes pretty eas…","avatar_template":"https://www.gravatar.com/avatar/4cfb483116a822652d698dce303ec842.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"getting-ready-for-production-notes","topic_id":3080,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"colin","name":"colin","user_id":1674,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Getting ready for production - Notes","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-15T22:19:45Z","excerpt":"Two points in favor of JavaScript: \n\nEvery CoffeeScript developer knows JavaScript. The inverse is not true. Because CoffeeScript emits JavaScript, and any debugging you do in the browser is in JavaScript, by definition CoffeeScript developers must have at least a passing familiarity with JavaScrip…","avatar_template":"https://www.gravatar.com/avatar/9bf3a766e037b9d5a4da0a6f9d0f4f68.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"is-it-better-for-discourse-to-use-javascript-or-coffeescript","topic_id":3153,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":11,"reply_to_post_number":null,"username":"tomdale","name":"Tom","user_id":23,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Is it better for Discourse to use JavaScript or CoffeeScript?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":1,"created_at":"2013-02-15T20:48:23Z","excerpt":"Alright, my designer friend at work whipped this up in about 10 mins. It's a good starting point. \n\n[image]","avatar_template":"https://www.gravatar.com/avatar/2984ff3f6ddddffea016b22341d2e032.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","slug":"notification-styling-formatting-leaves-much-to-be-desired","topic_id":3128,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"meenie","name":"Cody Lundquist","user_id":2475,"acting_username":"eviltrout","acting_name":"Robin Ward","acting_user_id":19,"title":"Notification styling/formatting leaves much to be desired","deleted":false,"hidden":false,"moderator_action":false}]}; Discourse.URL_FIXTURES["/user_actions.json?offset=0&username=eviltrout&filter=2"] = {"user_actions":[{"action_type":2,"created_at":"2013-07-23T17:08:15Z","excerpt":"I'm not sure if someone else fixed it already, but when I'm not logged in I can see the category list in the hamburger menu just fine: \n\n[image]","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"category-tag-cloud-on-front-page","topic_id":8489,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":5,"reply_to_post_number":4,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Category \"Tag\" Cloud on front page","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-19T14:37:03Z","excerpt":"Stripping out signatures is pretty hard. Right now we're using a gem originally open sourced by github for parsing out email replies: \n\nhttps://github.com/lawrencepit/email_reply_parser \n\nIt works reasonably well but there are definitely edge cases where it's less effective. I am guessing it's becau…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/44ae1b2d44d48aed3d432129a5703942.png?s={size}&r=pg&d=identicon","slug":"use-regex-to-split-the-reply-by-mail-to-remove-noise","topic_id":8465,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"supermathie","acting_name":"Michael Brown","acting_user_id":3,"title":"Use regex to split the reply-by mail to remove noise","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-19T08:36:20Z","excerpt":"While Discourse has a comprehensive web API that it consumes, it is not really documented and outlined for external use as we are still working on it quite heavily and want to be able to change it quickly. \n\nIf you build on top of the current REST API you might have to deal with changes, so beware […","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/57cbb6a2e56bfe02ae46522889961b86.png?s={size}&r=pg&d=identicon","slug":"creating-an-discourse-user-through-api","topic_id":8124,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"Chinh_Xuan_Bui","acting_name":"Chinh_Xuan_Bui","acting_user_id":5966,"title":"Creating an Discourse User through API","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-18T16:22:43Z","excerpt":"Stripping out signatures is pretty hard. Right now we're using a gem originally open sourced by github for parsing out email replies: \n\nhttps://github.com/lawrencepit/email_reply_parser \n\nIt works reasonably well but there are definitely edge cases where it's less effective. I am guessing it's becau…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"use-regex-to-split-the-reply-by-mail-to-remove-noise","topic_id":8465,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Use regex to split the reply-by mail to remove noise","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-17T19:45:32Z","excerpt":"Because we haven't gotten around to it yet! I think we might not have had that metric when we first prototyped best_of, or we simply forgot it. We'd like that a lot.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/bdfe9d9defc060d689ccd31c07e1bc19.png?s={size}&r=pg&d=identicon","slug":"how-does-the-best-of-view-work-and-what-is-its-ultimate-purpose","topic_id":8345,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":8,"reply_to_post_number":7,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"Ajarn","acting_name":"Brentley Jones","acting_user_id":3681,"title":"How does the best of view work and what is it's ultimate purpose?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-12T11:46:37Z","excerpt":"Hmmm I don't think it can be swapped in/out while the processes are running like that. \n\nI'd be okay with a site_setting to disable email, (off by default obviously) that would just run a noop on any email sends.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/18c103ae1020a5a9ceefe80ae83af5d5.png?s={size}&r=pg&d=identicon","slug":"temporarily-disabling-e-mail-notifications","topic_id":7955,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":6,"reply_to_post_number":5,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"cfstras","acting_name":"cfstras","acting_user_id":1496,"title":"Temporarily disabling E-Mail notifications","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-12T09:41:05Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/038e2caac4482e97ba6b24c3a88b86ff.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"lightyear","acting_name":"Benjamin Kampmann","acting_user_id":6060,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-11T04:08:30Z","excerpt":"Oh I see! I apologize that I didn't understand this at first. \n\nThis is actually quite a good solution. I remember wanting to try something like this before we went ahead with the current method. \n\nIf google works properly with this approach too, maybe we should consider not putting the content into…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/cf99a7295aafa43c75ce25668b24df29.png?s={size}&r=pg&d=identicon","slug":"noscript-tag-and-some-search-engines","topic_id":8078,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":10,"reply_to_post_number":9,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"cerberus","acting_name":"Alejandro Petroff","acting_user_id":4757,"title":"Noscript tag and some search engines","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-10T15:15:38Z","excerpt":"The easiest way to do this is to disable sending emails from Rails at all: \n\nconfig.action_mailer.delivery_method = :test \n\n\nYou put that in your production.rb file, restart sidekiq and you're good to go. No emails will go out until you're finished your work.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/18c103ae1020a5a9ceefe80ae83af5d5.png?s={size}&r=pg&d=identicon","slug":"temporarily-disabling-e-mail-notifications","topic_id":7955,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"cfstras","acting_name":"cfstras","acting_user_id":1496,"title":"Temporarily disabling E-Mail notifications","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-09T16:04:02Z","excerpt":"The easiest way to do this is to disable sending emails from Rails at all: \n\nconfig.action_mailer.delivery_method = :test \n\n\nYou put that in your production.rb file, restart sidekiq and you're good to go. No emails will go out until you're finished your work.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"temporarily-disabling-e-mail-notifications","topic_id":7955,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Temporarily disabling E-Mail notifications","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-09T15:07:02Z","excerpt":"The easiest way to do this is to disable sending emails from Rails at all: \n\nconfig.action_mailer.delivery_method = :test \n\n\nYou put that in your production.rb file, restart sidekiq and you're good to go. No emails will go out until you're finished your work.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"temporarily-disabling-e-mail-notifications","topic_id":7955,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Temporarily disabling E-Mail notifications","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-09T11:38:34Z","excerpt":"I've just fixed it, deploy should come later today. \n\nThe issue was our opengraph code was returning the first post in the stream, which was not necessarily the one you requested.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/42ca770299eab441ddabae5a1ad5f799.png?s={size}&r=pg&d=identicon","slug":"onebox-of-discourse-post-shows-wrong-content","topic_id":8175,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"phanimahesh","acting_name":"J Phani Mahesh","acting_user_id":5477,"title":"Onebox of discourse post shows wrong content","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T21:25:43Z","excerpt":"I've just fixed it, deploy should come later today. \n\nThe issue was our opengraph code was returning the first post in the stream, which was not necessarily the one you requested.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"onebox-of-discourse-post-shows-wrong-content","topic_id":8175,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Onebox of discourse post shows wrong content","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T21:24:36Z","excerpt":"\n [image]\n github.com\n \n \n \n\n \n \n [eviltrout]\n\n \n Added `In-Reply-To` and `References` email headers. Additionally removed username from\nemail replies and new posts to keep the subjects collapsable.\n \n\n \n by evil…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"replies-notifications-are-not-grouped-as-conversations-in-my-mua","topic_id":8133,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":11,"reply_to_post_number":10,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Replies notifications are not grouped as conversations in my MUA","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T17:34:42Z","excerpt":"I've just fixed it, deploy should come later today. \n\nThe issue was our opengraph code was returning the first post in the stream, which was not necessarily the one you requested.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/1c52629e9379bb4d8108634ce9ca4d9e.png?s={size}&r=pg&d=identicon","slug":"onebox-of-discourse-post-shows-wrong-content","topic_id":8175,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"hugo","acting_name":"Hugo","acting_user_id":2935,"title":"Onebox of discourse post shows wrong content","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T17:28:10Z","excerpt":"I've just fixed it, deploy should come later today. \n\nThe issue was our opengraph code was returning the first post in the stream, which was not necessarily the one you requested.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"onebox-of-discourse-post-shows-wrong-content","topic_id":8175,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Onebox of discourse post shows wrong content","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T16:25:17Z","excerpt":"I've just fixed it, deploy should come later today. \n\nThe issue was our opengraph code was returning the first post in the stream, which was not necessarily the one you requested.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/bdfe9d9defc060d689ccd31c07e1bc19.png?s={size}&r=pg&d=identicon","slug":"onebox-of-discourse-post-shows-wrong-content","topic_id":8175,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":2,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"Ajarn","acting_name":"Brentley Jones","acting_user_id":3681,"title":"Onebox of discourse post shows wrong content","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-08T16:05:41Z","excerpt":"\n [image]\n github.com\n \n \n \n\n \n \n [eviltrout]\n\n \n Added `In-Reply-To` and `References` email headers. Additionally removed username from\nemail replies and new posts to keep the subjects collapsable.\n \n\n \n by evil…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"replies-notifications-are-not-grouped-as-conversations-in-my-mua","topic_id":8133,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":11,"reply_to_post_number":10,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Replies notifications are not grouped as conversations in my MUA","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-05T19:40:24Z","excerpt":"While Discourse has a comprehensive web API that it consumes, it is not really documented and outlined for external use as we are still working on it quite heavily and want to be able to change it quickly. \n\nIf you build on top of the current REST API you might have to deal with changes, so beware […","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"creating-an-discourse-user-through-api","topic_id":8124,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Creating an Discourse User through API","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-05T09:26:56Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/f21c5d25f6f9fd36c27a8def7f03ad8a.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"akhayyat","acting_name":"Ahmad Khayyat","acting_user_id":4702,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-05T05:50:06Z","excerpt":"Hi there! \n\nI just tried these same settings and it appeared fine in the admin section. The only thing I can think of is perhaps you didn't restart your Rails server before checking? That file is only loaded when the server starts up. \n\n[image]","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/de9a910f6c145938e047f77a524df50b.png?s={size}&r=pg&d=identicon","slug":"trying-to-change-the-email-delivery-method","topic_id":8055,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"nick12377","acting_name":"nickj","acting_user_id":5293,"title":"Trying to Change the Email Delivery Method","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-04T22:41:15Z","excerpt":"I deployed a fix for this. It should work now! \n\nIf not please let us know.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/82c793022ec1bce6ea7573bc27b2340b.png?s={size}&r=pg&d=identicon","slug":"posting-a-message-doesnt-clear-draft-box","topic_id":8104,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":3,"reply_to_post_number":1,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"PabloC","acting_name":"Pablo Corral","acting_user_id":2291,"title":"Posting a message doesn't clear draft box","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-04T04:14:29Z","excerpt":"Hi there! \n\nI just tried these same settings and it appeared fine in the admin section. The only thing I can think of is perhaps you didn't restart your Rails server before checking? That file is only loaded when the server starts up. \n\n[image]","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"trying-to-change-the-email-delivery-method","topic_id":8055,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Trying to Change the Email Delivery Method","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-03T20:26:55Z","excerpt":"Sorry about this! I'll fix it as soon as I can.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/040f75103040d887e6e32d607cb940a3.png?s={size}&r=pg&d=identicon","slug":"last-read-indicator-doesnt-always-update-when-scrolling-to-bottom","topic_id":8047,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":6,"reply_to_post_number":5,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"CvX","acting_name":"Jarek Radosz","acting_user_id":369,"title":"Last read indicator doesn't always update when scrolling to bottom","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-03T20:11:24Z","excerpt":"It's true the 1GB is an overestimate for small forums. But it's meant to ensure people have enough resources regardless of what the forum is doing. Additionally, it gives us the ability to have the app use more ram if an awesome feature demands it without people saying "hey it no longer works in 512…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/bdfe9d9defc060d689ccd31c07e1bc19.png?s={size}&r=pg&d=identicon","slug":"512mb-of-ram-is-enough-to-run-discourse","topic_id":6844,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":7,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"Ajarn","acting_name":"Brentley Jones","acting_user_id":3681,"title":"512MB of RAM is enough to run Discourse","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-02T15:38:56Z","excerpt":"I've just deployed the new post stream code. In my tests it seems to link correctly to the post. Can you confirm that it's working better now @Iszi? Thanks!","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"following-links-to-posts-within-the-same-topic-jumps-to-the-top","topic_id":5971,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Following links to posts within the same topic jumps to the top","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-02T15:31:44Z","excerpt":"I've just deployed the new post stream code. In my tests it seems to link correctly to the post. Can you confirm that it's working better now @Iszi? Thanks!","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"following-links-to-posts-within-the-same-topic-jumps-to-the-top","topic_id":5971,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Following links to posts within the same topic jumps to the top","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-02T15:31:33Z","excerpt":"I've just deployed my post stream update and I believe this issue is fixed! Sorry about that.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"loading-never-stops","topic_id":7554,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":16,"reply_to_post_number":14,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"Loading (never stops)","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-07-02T15:19:36Z","excerpt":"I've just deployed my post stream update and I believe this issue is fixed! Sorry about that.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"loading-never-stops","topic_id":7554,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":16,"reply_to_post_number":14,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"Loading (never stops)","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-30T16:24:33Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/69fda0df8b4878fb6a18deffa972d26a.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"erlend_sh","acting_name":"Erlend Sogge Heggen","acting_user_id":5351,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-30T13:31:20Z","excerpt":"I do all my developing in OSX. Actually I love buying hardware and PC gaming so my main system is actually a Hackintosh that I built myself. It's probably faster than any mac you can buy. \n\nAlthough I created the Vagrant install with @Neil's help I do my development for discourse right on my local m…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/ef419cd042564d6d56fab6edfec7ad73.png?s={size}&r=pg&d=identicon","slug":"what-ide-editor-and-environment-do-you-use","topic_id":2105,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":15,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"nicmart","acting_name":"Nicolò Martini","acting_user_id":3581,"title":"What IDE, editor and environment do you use?","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-29T22:05:20Z","excerpt":"Modals\n\nToday I merged in a large commit (warning, might slow down your browser) to back all our modals by controllers. \n\nPreviously, our modals were just views that we dynamically inserted into an ember ContainerView. They worked pretty well, but all the logic and attributes for dealing with the mo…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/040f75103040d887e6e32d607cb940a3.png?s={size}&r=pg&d=identicon","slug":"discourse-ember-refactorings","topic_id":7019,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":2,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"CvX","acting_name":"Jarek Radosz","acting_user_id":369,"title":"Discourse Ember Refactorings","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-28T23:31:30Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/4079bc13f142ea46e0144d1ca9426aa9.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"fgonzal","acting_name":"Federico","acting_user_id":2287,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-28T21:18:53Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/28b6612d548d24ff57361dac58ac3fee.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"mkirk","acting_name":"Michael John Kirk","acting_user_id":5586,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-28T14:40:50Z","excerpt":"Not yet! We started with polling because it was easiest for our setup, but\nwe'd love to support web hooks too. It probably won't be too hard due to\nthe way the internal API works.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/5c049595372be0a1a22f4192b490f032.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":9,"reply_to_post_number":8,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"jorge_castro","acting_name":"Jorge Castro","acting_user_id":529,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-28T09:45:44Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/0de93e19798baa853bff3237381de87a.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"polusok","acting_name":"Mykhailo Poliarush","acting_user_id":5810,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-27T21:56:13Z","excerpt":"Not yet! We started with polling because it was easiest for our setup, but\nwe'd love to support web hooks too. It probably won't be too hard due to\nthe way the internal API works.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/97e3dd0d8128a2e17b28c71e0fb08b31.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":9,"reply_to_post_number":8,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"knwang","acting_name":"knwang","acting_user_id":3865,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-27T03:38:54Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/97e3dd0d8128a2e17b28c71e0fb08b31.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"knwang","acting_name":"knwang","acting_user_id":3865,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-27T00:43:18Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/04e8c634e5ee0fd074f78f3bad6eb5b3.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"djensen47","acting_name":"Dave Jensen","acting_user_id":5108,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-26T11:28:08Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/4ddc8924e79bcec03256821af65fca91.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"marcoceppi","acting_name":"Marco Ceppi","acting_user_id":761,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-26T00:25:31Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/34c3b45c075a6d85555beb674892d0d8.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"computerdruid","acting_name":"ComputerDruid","acting_user_id":5372,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T23:10:49Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/3dcae8378d46c244172a115c28ca49ce.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"sam","acting_name":"Sam Saffron","acting_user_id":1,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T22:56:16Z","excerpt":"It's queryable via the Category table which has a topic_id indicating what the category topic is. I wouldn't want to join on that though. \n\nIt seems we have a sub_type column that we could probably use to indicate category topics and filter them out. Will add to my list.","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/43675ac6f4ef94f40b5e44add2a984c1.png?s={size}&r=pg&d=identicon","slug":"your-topic-is-similar-to-always-comes-up","topic_id":7614,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":9,"reply_to_post_number":8,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"naggie","acting_name":"Callan Bryant","acting_user_id":1374,"title":"\"Your topic is similar to...\" Always comes up","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T21:28:00Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/413ef976f0d2ca993005c9aee4769254.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"BhaelOchon","acting_name":"Bill Ayakatubby","acting_user_id":471,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T18:47:21Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/3baf9989e97ccf45aff1cf61fb730931.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"briangillespie","acting_name":"Brian Gillespie","acting_user_id":5483,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T18:18:19Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/7a42855912a58f4c3c5d0ce82e33905f.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"stevebaer","acting_name":"Steve Baer","acting_user_id":4939,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T18:09:49Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/e217128117fe24525c7af5ebc5e45745.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"mcwumbly","acting_name":"David McClure","acting_user_id":4263,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T17:42:33Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/6c38e00d92cd9bd3ada3392b15015553.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"frandallfarmer","acting_name":"F. Randall Farmer","acting_user_id":38,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T17:41:03Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/5c049595372be0a1a22f4192b490f032.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"jorge_castro","acting_name":"Jorge Castro","acting_user_id":529,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:59:02Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/42776c4982dff1fa45ee8248532f8ad0.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"Neil","acting_name":"Neil","acting_user_id":2,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:53:58Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/55c791f0242e5167536c65496046eef5.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"RGJ","acting_name":"Richard ","acting_user_id":406,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:24:42Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/3e8ede783ef16c8234c03473a5b8780f.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"MaSe","acting_name":"Мария Сергеева","acting_user_id":5174,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:16:02Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/1c52629e9379bb4d8108634ce9ca4d9e.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"hugo","acting_name":"Hugo","acting_user_id":2935,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:10:51Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:06:40Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-25T16:03:28Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/26bf5a02583eaf63d1f8063bb3a6bc00.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"kpfleming","acting_name":"Kevin P. Fleming","acting_user_id":2625,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-22T09:45:59Z","excerpt":"If you've been following the latest commits, you might have noticed some changes to the ways we do things in our Ember application. I thought it would be a good idea to explain what's been changing and why. \n\nView Helpers\n\nAs of Ember RC2 we've gained new helpers for inserting views into handlebars.…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/efe90c21899f95a64cb78e01b5cb7733.png?s={size}&r=pg&d=identicon","slug":"discourse-ember-refactorings","topic_id":7019,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"etewiah","acting_name":"etewiah","acting_user_id":5465,"title":"Discourse Ember Refactorings","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-20T17:51:16Z","excerpt":"I've just deployed support for a new setting minimum_topics_similar with a default of 50. If the site has fewer topics than that, you won't receive a suggested topics list. What do you think a sensible value would be on try.discourse.org? \n\n\n \n \n \n [image]\n github.…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"your-topic-is-similar-to-always-comes-up","topic_id":7614,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"\"Your topic is similar to...\" Always comes up","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-19T20:14:14Z","excerpt":"I've just deployed support for a new setting minimum_topics_similar with a default of 50. If the site has fewer topics than that, you won't receive a suggested topics list. What do you think a sensible value would be on try.discourse.org? \n\n\n \n \n \n [image]\n github.…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/cf99a7295aafa43c75ce25668b24df29.png?s={size}&r=pg&d=identicon","slug":"your-topic-is-similar-to-always-comes-up","topic_id":7614,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"cerberus","acting_name":"Alejandro Petroff","acting_user_id":4757,"title":"\"Your topic is similar to...\" Always comes up","deleted":false,"hidden":false,"moderator_action":false},{"action_type":2,"created_at":"2013-06-19T18:10:49Z","excerpt":"I've just deployed support for a new setting minimum_topics_similar with a default of 50. If the site has fewer topics than that, you won't receive a suggested topics list. What do you think a sensible value would be on try.discourse.org? \n\n\n \n \n \n [image]\n github.…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/b7797beb47cfb7aa0fe60d09604aaa09.png?s={size}&r=pg&d=identicon","slug":"your-topic-is-similar-to-always-comes-up","topic_id":7614,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":4,"reply_to_post_number":3,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"zogstrip","acting_name":"Régis Hanol","acting_user_id":1995,"title":"\"Your topic is similar to...\" Always comes up","deleted":false,"hidden":false,"moderator_action":false}]}; Discourse.URL_FIXTURES["/user_actions.json?offset=0&username=eviltrout&filter=11"] = {"user_actions":[{"action_type":11,"created_at":"2013-06-25T16:19:52Z","excerpt":"We've just enabled the ability to reply by email to Discourse for all users on meta! It works like on other sites such as Facebook or Github. If an email is related to a topic, it will say in the footer that you can reply to it. Simply reply to the message in your email client and your post will be …","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"new-reply-via-email-support","topic_id":7764,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"New: Reply via Email Support!","deleted":false,"hidden":false,"moderator_action":false},{"action_type":11,"created_at":"2013-02-13T00:56:51Z","excerpt":"I've just deployed some slightly better documentation to our project regarding developer set ups. Vagrant is still the recommended install for most people, however if you have Rails experience there is now an advanced guide. The advanced guide also contains instructions on setting up your own Vagran…","avatar_template":"https://www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","acting_avatar_template":"https://www.gravatar.com/avatar/51d623f33f8b83095db84ff35e15dbe8.png?s={size}&r=pg&d=identicon","slug":"new-updated-docs","topic_id":2918,"target_user_id":19,"target_name":"Robin Ward","target_username":"eviltrout","post_number":1,"reply_to_post_number":null,"username":"eviltrout","name":"Robin Ward","user_id":19,"acting_username":"codinghorror","acting_name":"Jeff Atwood","acting_user_id":32,"title":"New: Updated Docs","deleted":false,"hidden":false,"moderator_action":false}]}; + +PreloadStore.store("currentUser", {"id":42,"username":"eviltrout","avatar_template":"//www.gravatar.com/avatar/c6e17f2ae2a215e87ff9e878a4e63cd9.png?s={size}&r=pg&d=identicon","name":"Evil Trout","unread_notifications":0,"unread_private_messages":0,"admin":false,"notification_channel_position":null,"site_flagged_posts_count":0,"moderator":false,"staff":false,"reply_count":0,"topic_count":0,"enable_quoting":true,"external_links_in_new_tab":false,"dynamic_favicon":false,"trust_level":0,"can_edit":true}); diff --git a/test/javascripts/models/user_test.js b/test/javascripts/models/user_test.js index 04d490bee..0414ef44e 100644 --- a/test/javascripts/models/user_test.js +++ b/test/javascripts/models/user_test.js @@ -16,4 +16,12 @@ test('searchContext', function() { var user = Discourse.User.create({id: 1, username: 'EvilTrout'}); deepEqual(user.get('searchContext'), {type: 'user', id: 'eviltrout', user: user}, "has a search context"); -}); \ No newline at end of file +}); + +test("isAllowedToUploadAFile", function() { + var user = Discourse.User.create({ trust_level: 0, admin: true }); + ok(user.isAllowedToUploadAFile("image"), "admin can always upload a file"); + + user.setProperties({ admin: false, moderator: true }); + ok(user.isAllowedToUploadAFile("image"), "moderator can always upload a file"); +});