From 1783089d64382623b33be1412ed9a810fef701d0 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 21 Oct 2013 11:11:54 -0400 Subject: [PATCH] FIX: [quote] without params was failing. --- .../discourse/dialects/quote_dialect.js | 33 ++++++++++++------- test/javascripts/components/bbcode_test.js | 5 +++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/discourse/dialects/quote_dialect.js b/app/assets/javascripts/discourse/dialects/quote_dialect.js index 9db791278cb..87920d47103 100644 --- a/app/assets/javascripts/discourse/dialects/quote_dialect.js +++ b/app/assets/javascripts/discourse/dialects/quote_dialect.js @@ -6,19 +6,24 @@ Discourse.Dialect.replaceBlock({ stop: '[/quote]', emitter: function(blockContents, matches, options) { - var paramsString = matches[1].replace(/\"/g, ''), - params = {'class': 'quote'}, - paramsSplit = paramsString.split(/\, */), - username = paramsSplit[0]; + var params = {'class': 'quote'}, + username; - paramsSplit.forEach(function(p,i) { - if (i > 0) { - var assignment = p.split(':'); - if (assignment[0] && assignment[1]) { - params['data-' + assignment[0]] = assignment[1].trim(); + if (matches[1]) { + var paramsString = matches[1].replace(/\"/g, ''), + paramsSplit = paramsString.split(/\, */); + + username = paramsSplit[0]; + + paramsSplit.forEach(function(p,i) { + if (i > 0) { + var assignment = p.split(':'); + if (assignment[0] && assignment[1]) { + params['data-' + assignment[0]] = assignment[1].trim(); + } } - } - }); + }); + } var avatarImg; if (options.lookupAvatarByPostNumber) { @@ -41,11 +46,15 @@ Discourse.Dialect.replaceBlock({ }); } + if (!username) { + return ['p', ['aside', params, contents ]]; + } + return ['p', ['aside', params, ['div', {'class': 'title'}, ['div', {'class': 'quote-controls'}], avatarImg ? ['__RAW', avatarImg] : "", - I18n.t('user.said', {username: username}) + username ? I18n.t('user.said', {username: username}) : "" ], contents ]]; diff --git a/test/javascripts/components/bbcode_test.js b/test/javascripts/components/bbcode_test.js index f893d6a59f1..f95f39ba880 100644 --- a/test/javascripts/components/bbcode_test.js +++ b/test/javascripts/components/bbcode_test.js @@ -74,6 +74,11 @@ test("quotes", function() { formatQuote("this is a bug", "[quote=\"eviltrout, post:1, topic:2\"]\nthis is <not> a bug\n[/quote]\n\n", "it escapes the contents of the quote"); + + format("[quote]test[/quote]", + "", + "it supports quotes without params"); + }); test("quote formatting", function() {