| Index: lib/notificationHelper.js |
| =================================================================== |
| --- a/lib/notificationHelper.js |
| +++ b/lib/notificationHelper.js |
| @@ -63,13 +63,8 @@ |
| { |
| if (activeNotification.links) |
| { |
| - activeNotification.links.forEach(function(link) |
|
Sebastian Noack
2015/09/11 10:58:26
I wonder why we did it that complicated in the fir
Thomas Greiner
2015/09/11 12:51:48
From what I've seen `ext.pages.open` wasn't availa
|
| - { |
| - ext.windows.getLastFocused(function(win) |
| - { |
| - win.openTab(Utils.getDocLink(link)); |
| - }); |
| - }); |
| + for (let link of activeNotification.links) |
| + ext.pages.open(Utils.getDocLink(link)); |
| } |
| } |
| @@ -81,12 +76,24 @@ |
| NotificationStorage.markAsShown(activeNotification.id); |
| activeNotification.onClicked(); |
| } |
| - else if (activeNotification.links && activeNotification.links[buttonIndex]) |
| + else |
| { |
| - ext.windows.getLastFocused(function(win) |
| + let links = activeNotification.links || []; |
| + if (buttonIndex == 1 || links.length == 0) |
| { |
| - win.openTab(Utils.getDocLink(activeNotification.links[buttonIndex])); |
| - }); |
| + Prefs.notifications_showui = true; |
| + ext.showOptions(function(page) |
| + { |
| + page.sendMessage({ |
| + type: "focus-section", |
| + section: "notifications" |
| + }); |
| + }); |
| + } |
| + else if (links.length == 1) |
| + ext.pages.open(Utils.getDocLink(activeNotification.links[0])); |
| + else |
| + openNotificationLinks(); |
| } |
| } |
| @@ -147,7 +154,7 @@ |
| let title = texts.title || ""; |
| let message = texts.message ? texts.message.replace(/<\/?(a|strong)>/g, "") : ""; |
| let iconUrl = ext.getURL("icons/detailed/abp-128.png"); |
| - let hasLinks = activeNotification.links && activeNotification.links.length > 0; |
| + let linkCount = (activeNotification.links || []).length; |
| if (canUseChromeNotifications) |
| { |
| @@ -165,11 +172,15 @@ |
| } |
| else |
| { |
| - let regex = /<a>(.*?)<\/a>/g; |
| - let plainMessage = texts.message || ""; |
| - let match; |
| - while (match = regex.exec(plainMessage)) |
| - opts.buttons.push({title: match[1]}); |
| + if (linkCount == 1) |
| + { |
| + let match = /<a>(.*?)<\/a>/.exec(texts.message || ""); |
|
Sebastian Noack
2015/09/11 10:58:26
Nit: .exec() simply returns null if you pass null
Thomas Greiner
2015/09/11 12:51:48
Done.
|
| + if (match) |
| + opts.buttons.push({title: match[1]}); |
| + } |
| + else if (linkCount > 1) |
| + opts.buttons.push({title: ext.i18n.getMessage("notification_open_all")}); |
| + opts.buttons.push({title: ext.i18n.getMessage("notification_configure")}); |
| } |
| imgToBase64(iconUrl, function(iconData) |
| @@ -180,7 +191,7 @@ |
| } |
| else if ("Notification" in window && activeNotification.type != "question") |
| { |
| - if (hasLinks) |
| + if (linkCount == 0) |
| message += " " + ext.i18n.getMessage("notification_without_buttons"); |
| imgToBase64(iconUrl, function(iconData) |
| @@ -202,7 +213,7 @@ |
| else |
| { |
| let message = title + "\n" + message; |
| - if (hasLinks) |
| + if (linkCount == 0) |
| message += "\n\n" + ext.i18n.getMessage("notification_with_buttons"); |
| let approved = confirm(message); |