Skip to content

Commit 5f3507e

Browse files
authored
Merge pull request #25 from FlandreDaisuki/open-all
Resolve #16
2 parents f8c8f56 + ab9401b commit 5f3507e

File tree

4 files changed

+53
-27
lines changed

4 files changed

+53
-27
lines changed

_locales/en/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,9 @@
101101

102102
"msgSuccessSaveOptions": {
103103
"message": "Saved!"
104+
},
105+
106+
"contextMenuOpenAll": {
107+
"message": "Open All"
104108
}
105109
}

_locales/zh_TW/messages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,9 @@
101101

102102
"msgSuccessSaveOptions": {
103103
"message": "已保存!"
104+
},
105+
106+
"contextMenuOpenAll": {
107+
"message": "全部打開"
104108
}
105109
}

background.js

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ function createContextMenu(storedSettings) {
6666
chrome.contextMenus.create(contextMenuOptions);
6767
}
6868
}
69+
chrome.contextMenus.create({ parentId: 'Image-Reverse-Search', type: 'separator' });
70+
chrome.contextMenus.create({
71+
parentId: 'Image-Reverse-Search',
72+
id: 'openAll',
73+
title: chrome.i18n.getMessage('contextMenuOpenAll'),
74+
contexts: ['image'],
75+
});
6976
}
7077

7178
/* Default settings. If there is nothing in storage, use these values. */
@@ -96,44 +103,55 @@ function checkStoredSettings(storedSettings) {
96103

97104
function reverseSearch(info, storedSettings) {
98105
function getTabIndex(openTabAt, tabs) {
99-
if (openTabAt == 'right') {
100-
return tabs[0].index + 1;
101-
} else if (openTabAt == 'left') {
102-
return tabs[0].index;
103-
} else if (openTabAt == 'end') {
104-
return null;
106+
const thisTab = tabs.filter(t => t.active)[0];
107+
if (openTabAt === 'right') {
108+
return thisTab.index + 1;
109+
} else if (openTabAt === 'left') {
110+
return thisTab.index;
111+
} else {
112+
/* openTabAt === 'end' */
113+
return tabs.length;
105114
}
106115
}
107116

108-
function getProviderURL(targetProviderName) {
109-
for (const p of storedSettings.storageProviders) {
110-
if (p.name === targetProviderName) {
111-
return p.url;
117+
/* return array of url string */
118+
function getProviderURLs(targetProviderName) {
119+
if (targetProviderName === 'openAll') {
120+
const urls = [];
121+
for (const p of storedSettings.storageProviders) {
122+
if (p.selected) {
123+
urls.push(p.url);
124+
}
125+
}
126+
/* Reverse for correct order because we insert by tabIndex */
127+
return urls.reverse();
128+
} else {
129+
for (const p of storedSettings.storageProviders) {
130+
if (p.name === targetProviderName) {
131+
return [p.url];
132+
}
112133
}
113134
}
114135
}
115136

116137
const imageURL = info.srcUrl;
117138
const openInBackground = storedSettings.openInBackground;
118139
const openTabAt = storedSettings.openTabAt;
119-
const searchProvider = getProviderURL(info.menuItemId);
140+
const searchProviders = getProviderURLs(info.menuItemId);
120141

121142
function openImageSearch(tabs) {
122-
tabIndex = getTabIndex(openTabAt, tabs);
123-
chrome.tabs.create({
124-
url: searchProvider.replace('%s', encodeURIComponent(imageURL)),
125-
active: !openInBackground,
126-
index: tabIndex,
127-
});
143+
const tabIndex = getTabIndex(openTabAt, tabs);
144+
145+
for (const p of searchProviders) {
146+
chrome.tabs.create({
147+
url: p.replace('%s', encodeURIComponent(imageURL)),
148+
active: !openInBackground,
149+
index: tabIndex,
150+
});
151+
}
128152
}
129153

130-
chrome.tabs.query(
131-
{
132-
currentWindow: true,
133-
active: true,
134-
},
135-
openImageSearch,
136-
);
154+
chrome.tabs.query({ currentWindow: true }, openImageSearch);
137155
}
138156

139157
/* Setup context menu */

options/options.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ const $el = document.createElement.bind(document);
1010
function i18nOrdinal(n) {
1111
const [prefix, suffix] = chrome.i18n.getUILanguage().split('-', 2);
1212
if (prefix === 'en') {
13-
if (n == 1) return '1st';
14-
if (n == 2) return '2nd';
15-
if (n == 3) return '3rd';
13+
if (n === 1) return '1st';
14+
if (n === 2) return '2nd';
15+
if (n === 3) return '3rd';
1616
return `${n}th`;
1717
}
1818
return `${n}`;

0 commit comments

Comments
 (0)