Merge pull request #796 from ZogStriP/fix-shift-clicks-on-links

FIX: shift+click on links
This commit is contained in:
Sam 2013-04-30 16:02:24 -07:00
commit 58dbfa1b91
3 changed files with 15 additions and 10 deletions

View File

@ -129,7 +129,7 @@ Discourse = Ember.Application.createWithMixins({
}); });
$('#main').on('click.discourse', 'a', function(e) { $('#main').on('click.discourse', 'a', function(e) {
if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) return; if (e.isDefaultPrevented() || e.shiftKey || e.metaKey || e.ctrlKey) return;
var $currentTarget = $(e.currentTarget); var $currentTarget = $(e.currentTarget);
var href = $currentTarget.attr('href'); var href = $currentTarget.attr('href');

View File

@ -68,7 +68,7 @@ Discourse.ClickTrack = {
} }
// if they want to open in a new tab, do an AJAX request // if they want to open in a new tab, do an AJAX request
if (e.metaKey || e.ctrlKey || e.which === 2) { if (e.shiftKey || e.metaKey || e.ctrlKey || e.which === 2) {
Discourse.ajax(Discourse.getURL("/clicks/track"), { Discourse.ajax(Discourse.getURL("/clicks/track"), {
data: { data: {
url: href, url: href,

View File

@ -152,25 +152,30 @@ describe("Discourse.ClickTrack", function() {
spyOn(window, 'open'); spyOn(window, 'open');
}); });
it("opens in a new tab when pressing alt", function() { var expectItOpensInANewTab = function() {
clickEvent.metaKey = true;
expect(track(clickEvent)).toBe(false); expect(track(clickEvent)).toBe(false);
expect(Discourse.ajax).toHaveBeenCalled(); expect(Discourse.ajax).toHaveBeenCalled();
expect(window.open).toHaveBeenCalledWith('http://www.google.com', '_blank'); expect(window.open).toHaveBeenCalledWith('http://www.google.com', '_blank');
};
it("opens in a new tab when pressing shift", function() {
clickEvent.shiftKey = true;
expectItOpensInANewTab();
});
it("opens in a new tab when pressing meta", function() {
clickEvent.metaKey = true;
expectItOpensInANewTab();
}); });
it("opens in a new tab when pressing ctrl", function() { it("opens in a new tab when pressing ctrl", function() {
clickEvent.ctrlKey = true; clickEvent.ctrlKey = true;
expect(track(clickEvent)).toBe(false); expectItOpensInANewTab();
expect(Discourse.ajax).toHaveBeenCalled();
expect(window.open).toHaveBeenCalledWith('http://www.google.com', '_blank');
}); });
it("opens in a new tab when middle clicking", function() { it("opens in a new tab when middle clicking", function() {
clickEvent.which = 2; clickEvent.which = 2;
expect(track(clickEvent)).toBe(false); expectItOpensInANewTab();
expect(Discourse.ajax).toHaveBeenCalled();
expect(window.open).toHaveBeenCalledWith('http://www.google.com', '_blank');
}); });
}); });