diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js index 0cc50563a..d795f0e7d 100644 --- a/app/assets/javascripts/app/router.js +++ b/app/assets/javascripts/app/router.js @@ -21,9 +21,14 @@ app.Router = Backbone.Router.extend({ "people/:id/photos": "photos", "people/:id": "stream", - "u/:name": "stream", - - "bookmarklet": "bookmarklet" + "u/:name": "stream" + }, + + initialize: function() { + // To support encoded linefeeds (%0A) we need to specify + // our own internal router.route call with the correct regexp. + // see: https://github.com/diaspora/diaspora/issues/4994#issuecomment-46431124 + this.route(/^bookmarklet(?:\?(.*))?/, "bookmarklet"); }, help: function() { diff --git a/spec/javascripts/app/router_spec.js b/spec/javascripts/app/router_spec.js index 543abef09..6371f34e1 100644 --- a/spec/javascripts/app/router_spec.js +++ b/spec/javascripts/app/router_spec.js @@ -69,4 +69,14 @@ describe('app.Router', function () { expect(hideFollowedTags).toHaveBeenCalled(); }); }); + + describe("bookmarklet", function() { + it('routes to bookmarklet even if params have linefeeds', function() { + router = new app.Router(); + var route = jasmine.createSpy('bookmarklet route'); + router.on('route:bookmarklet', route); + router.navigate("/bookmarklet?\n\nfeefwefwewef\n", {trigger: true}); + expect(route).toHaveBeenCalled(); + }); + }); });