Przeglądaj źródła

add "Bokmarks > allowed folders" option (fix #725)

Gildas 4 lat temu
rodzic
commit
1ff4ab8ac1

+ 4 - 0
_locales/de/messages.json

@@ -499,6 +499,10 @@
 		"message": "Das neue Bookmark mit der gespeicherten Seite verlinken",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "Erlaubte Ordner",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "Ignorierte Ordner",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/en/messages.json

@@ -499,6 +499,10 @@
 		"message": "link the new bookmark to the saved page",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "ignored folders",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/es/messages.json

@@ -499,6 +499,10 @@
 		"message": "enlazar el nuevo marcador a la página guardada",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "carpetas permitidas",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "carpetas ignoradas",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/fr/messages.json

@@ -499,6 +499,10 @@
 		"message": "lier le nouveau signet à la page sauvegardée",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "dossiers autorisés",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "dossiers ignorés",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/ja/messages.json

@@ -499,6 +499,10 @@
 		"message": "新しいブックマークを保存したページにリンクさせることを可能にする",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "ignored folders",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/pl/messages.json

@@ -499,6 +499,10 @@
 		"message": "łącz nową zakładkę z zapisaną stroną",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "ignorowane foldery",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/ru/messages.json

@@ -499,6 +499,10 @@
 		"message": "связать новую закладку с сохранённой страницей",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "игнорируемые папки",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/uk/messages.json

@@ -499,6 +499,10 @@
 		"message": "link the new bookmark to the saved page",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "ignored folders",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/zh_CN/messages.json

@@ -499,6 +499,10 @@
 		"message": "将新书签的链接指向已保存页面",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "忽略文件夹",
 		"description": "Options page label: 'ignored folders'"

+ 4 - 0
_locales/zh_TW/messages.json

@@ -499,6 +499,10 @@
 		"message": "將新書籤的鏈接指向已保存頁面",
 		"description": "Options page label: 'link the new bookmark to the saved page'"
 	},
+	"optionAllowedBookmarkFolders": {
+		"message": "allowed folders",
+		"description": "Options page label: 'allowed folders'"
+	},
 	"optionIgnoredBookmarkFolders": {
 		"message": "忽略文件夾",
 		"description": "Options page label: 'ignored folders'"

+ 7 - 1
extension/core/bg/bookmarks.js

@@ -87,8 +87,14 @@ async function onCreated(bookmarkId, bookmarkInfo) {
 	const options = await config.getOptions(bookmarkInfo.url);
 	if (options.saveCreatedBookmarks) {
 		const bookmarkFolders = await getParentFolders(bookmarkInfo.parentId);
+		const allowedBookmarkSet = options.allowedBookmarkFolders.toString();
+		const allowedBookmark = bookmarkFolders.find(folder => options.allowedBookmarkFolders.includes(folder));
+		const ignoredBookmarkSet = options.ignoredBookmarkFolders.toString();
 		const ignoredBookmark = bookmarkFolders.find(folder => options.ignoredBookmarkFolders.includes(folder));
-		if (!ignoredBookmark) {
+		if (
+			((allowedBookmarkSet && allowedBookmark) || !allowedBookmarkSet) &&
+			((ignoredBookmarkSet && !ignoredBookmark) || !ignoredBookmarkSet)
+		) {
 			if (activeTabs.length && activeTabs[0].url == bookmarkInfo.url) {
 				business.saveTabs(activeTabs, { bookmarkId, bookmarkFolders });
 			} else {

+ 1 - 0
extension/core/bg/config.js

@@ -94,6 +94,7 @@ const DEFAULT_CONFIG = {
 	openSavedPage: false,
 	autoOpenEditor: false,
 	saveCreatedBookmarks: false,
+	allowedBookmarkFolders: [],
 	ignoredBookmarkFolders: [],
 	replaceBookmarkURL: true,
 	saveFavicon: true,

+ 7 - 1
extension/ui/bg/ui-options.js

@@ -74,6 +74,7 @@ const removeAlternativeMediasLabel = document.getElementById("removeAlternativeM
 const saveCreatedBookmarksLabel = document.getElementById("saveCreatedBookmarksLabel");
 const passReferrerOnErrorLabel = document.getElementById("passReferrerOnErrorLabel");
 const replaceBookmarkURLLabel = document.getElementById("replaceBookmarkURLLabel");
+const allowedBookmarkFoldersLabel = document.getElementById("allowedBookmarkFoldersLabel");
 const ignoredBookmarkFoldersLabel = document.getElementById("ignoredBookmarkFoldersLabel");
 const titleLabel = document.getElementById("titleLabel");
 const userInterfaceLabel = document.getElementById("userInterfaceLabel");
@@ -158,6 +159,7 @@ const removeAlternativeMediasInput = document.getElementById("removeAlternativeM
 const saveCreatedBookmarksInput = document.getElementById("saveCreatedBookmarksInput");
 const passReferrerOnErrorInput = document.getElementById("passReferrerOnErrorInput");
 const replaceBookmarkURLInput = document.getElementById("replaceBookmarkURLInput");
+const allowedBookmarkFoldersInput = document.getElementById("allowedBookmarkFoldersInput");
 const ignoredBookmarkFoldersInput = document.getElementById("ignoredBookmarkFoldersInput");
 const groupDuplicateImagesInput = document.getElementById("groupDuplicateImagesInput");
 const infobarTemplateInput = document.getElementById("infobarTemplateInput");
@@ -500,6 +502,7 @@ removeAlternativeMediasLabel.textContent = browser.i18n.getMessage("optionRemove
 saveCreatedBookmarksLabel.textContent = browser.i18n.getMessage("optionSaveCreatedBookmarks");
 passReferrerOnErrorLabel.textContent = browser.i18n.getMessage("optionPassReferrerOnError");
 replaceBookmarkURLLabel.textContent = browser.i18n.getMessage("optionReplaceBookmarkURL");
+allowedBookmarkFoldersLabel.textContent = browser.i18n.getMessage("optionAllowedBookmarkFolders");
 ignoredBookmarkFoldersLabel.textContent = browser.i18n.getMessage("optionIgnoredBookmarkFolders");
 groupDuplicateImagesLabel.textContent = browser.i18n.getMessage("optionGroupDuplicateImages");
 titleLabel.textContent = browser.i18n.getMessage("optionsTitle");
@@ -708,8 +711,10 @@ async function refresh(profileName) {
 	passReferrerOnErrorInput.checked = profileOptions.passReferrerOnError;
 	replaceBookmarkURLInput.checked = profileOptions.replaceBookmarkURL;
 	replaceBookmarkURLInput.disabled = !profileOptions.saveCreatedBookmarks;
+	allowedBookmarkFoldersInput.value = profileOptions.allowedBookmarkFolders.map(folder => folder.replace(/,/g, "\\,")).join(","); // eslint-disable-line no-useless-escape
+	allowedBookmarkFoldersInput.disabled = !profileOptions.saveCreatedBookmarks;
 	ignoredBookmarkFoldersInput.value = profileOptions.ignoredBookmarkFolders.map(folder => folder.replace(/,/g, "\\,")).join(","); // eslint-disable-line no-useless-escape
-	ignoredBookmarkFoldersInput.disabled = !profileOptions.saveCreatedBookmarks;
+	ignoredBookmarkFoldersInput.disabled = !profileOptions.saveCreatedBookmarks;	
 	infobarTemplateInput.value = profileOptions.infobarTemplate;
 	includeInfobarInput.checked = profileOptions.includeInfobar;
 	confirmInfobarInput.checked = profileOptions.confirmInfobarContent;
@@ -778,6 +783,7 @@ async function update() {
 			saveCreatedBookmarks: saveCreatedBookmarksInput.checked,
 			passReferrerOnError: passReferrerOnErrorInput.checked,
 			replaceBookmarkURL: replaceBookmarkURLInput.checked,
+			allowedBookmarkFolders: allowedBookmarkFoldersInput.value.replace(/([^\\]),/g, "$1 ,").split(/[^\\],/).map(folder => folder.replace(/\\,/g, ",")),
 			ignoredBookmarkFolders: ignoredBookmarkFoldersInput.value.replace(/([^\\]),/g, "$1 ,").split(/[^\\],/).map(folder => folder.replace(/\\,/g, ",")),
 			groupDuplicateImages: groupDuplicateImagesInput.checked,
 			infobarTemplate: infobarTemplateInput.value,

+ 7 - 1
extension/ui/pages/help.html

@@ -397,7 +397,13 @@
 					<li data-options-label="ignoredBookmarkFoldersLabel"> <span class="option">Option: ignored
 							folders</span>
 						<p>Enter a list of bookmark folder names to ignore. The folder names must be separated with a
-							comma.
+							comma. SingleFile will ignore bookmarks added in folders that contains these names.
+						</p>
+					</li>
+					<li data-options-label="allowedBookmarkFoldersLabel"> <span class="option">Option: ignored
+							folders</span>
+						<p>Enter a list of bookmark folder names to allow. The folder names must be separated with a
+							comma. SingleFile will only save pages added in folders that contains these names.
 						</p>
 					</li>
 				</ul>

+ 4 - 0
extension/ui/pages/options.html

@@ -229,6 +229,10 @@
 				<label for="ignoredBookmarkFoldersInput" id="ignoredBookmarkFoldersLabel"></label>
 				<input type="text" id="ignoredBookmarkFoldersInput">
 			</div>
+			<div class="option second-level vertical">
+				<label for="allowedBookmarkFoldersInput" id="allowedBookmarkFoldersLabel"></label>
+				<input type="text" id="allowedBookmarkFoldersInput">
+			</div>
 		</details>
 		<details>
 			<summary id="autoSaveLabel"></summary>