diff --git a/_locales/en/messages.json b/_locales/en/messages.json index d77738c4..81ba831e 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1127,6 +1127,18 @@ "message": "If checked, the AI will add only existing tags and won't create new tags.", "description": "" }, + "prefs_OptionText_add_tags_auto_uselist": { + "message": "Use only these tags", + "description": "" + }, + "prefs_OptionText_add_tags_auto_uselist_Info": { + "message": "If checked, the AI will add only tags from the list below. The list must contain comma separated list of allowed tags.", + "description": "" + }, + "prefs_OptionText_add_tags_auto_uselist_list_Info": { + "message": "The list must contain at least one tag. The tags must be separated by a comma.", + "description": "" + }, "prefs_OptionText_add_tags_auto_only_inbox": { "message": "Only add tags to inbox emails", "description": "" diff --git a/options/mzta-options-default.js b/options/mzta-options-default.js index 16530072..e1aeb908 100644 --- a/options/mzta-options-default.js +++ b/options/mzta-options-default.js @@ -62,6 +62,8 @@ export const prefs_default = { add_tags_auto: false, add_tags_auto_force_existing: false, add_tags_auto_only_inbox: true, + add_tags_auto_uselist: false, + add_tags_auto_uselist_list: '', add_tags_context_menu: true, add_tags_enabled_accounts: [], get_calendar_event: true, diff --git a/pages/addtags/mzta-add-tags.css b/pages/addtags/mzta-add-tags.css index 198b6896..070f3bdf 100644 --- a/pages/addtags/mzta-add-tags.css +++ b/pages/addtags/mzta-add-tags.css @@ -17,10 +17,16 @@ margin: 40px auto; } -#addtags_excl_list{ +#addtags_excl_list, #add_tags_auto_uselist_list{ width: 30em; } +#add_tags_auto_uselist_list:disabled { + background-color: #eee; + color: #888; + cursor: not-allowed; +} + #account_selector_container{ display: none; } @@ -37,13 +43,17 @@ background-color: #e9ffdf; } +tr.add_tags_auto_sub td{ + padding-left: 0.8em !important; +} + .btn_div{ width: 100%; display: flex; justify-content: space-between; } -#addtags_info_additional_statements, #add_tags_auto_only_inbox_tr{ +#addtags_info_additional_statements, #add_tags_auto_only_inbox_tr, #add_tags_auto_uselist_tr{ display: none; } diff --git a/pages/addtags/mzta-add-tags.html b/pages/addtags/mzta-add-tags.html index ef5d2488..f7178469 100644 --- a/pages/addtags/mzta-add-tags.html +++ b/pages/addtags/mzta-add-tags.html @@ -68,7 +68,7 @@ - + __MSG_prefs_OptionText_add_tags_auto_only_inbox__ + + __MSG_prefs_OptionText_add_tags_auto_uselist__ + + + + __MSG_prefs_OptionText_add_tags_context_menu__ diff --git a/pages/addtags/mzta-add-tags.js b/pages/addtags/mzta-add-tags.js index 8da2bae2..c52e6583 100644 --- a/pages/addtags/mzta-add-tags.js +++ b/pages/addtags/mzta-add-tags.js @@ -57,14 +57,25 @@ document.addEventListener('DOMContentLoaded', async () => { let add_tags_auto_only_inbox_tr = document.getElementById('add_tags_auto_only_inbox_tr'); let account_selector_container = document.getElementById('account_selector_container'); let add_tags_auto_infoline = document.getElementById('add_tags_auto_infoline'); + let add_tags_auto_uselist_tr = document.getElementById('add_tags_auto_uselist_tr'); add_tags_auto_el.addEventListener('click', (event) => { add_tags_auto_only_inbox_tr.style.display = event.target.checked ? 'table-row' : 'none'; account_selector_container.style.display = event.target.checked ? 'block' : 'none'; add_tags_auto_infoline.style.display = event.target.checked ? 'inline' : 'none'; + add_tags_auto_uselist_tr.style.display = event.target.checked ? 'table-row' : 'none'; + }); add_tags_auto_only_inbox_tr.style.display = add_tags_auto_el.checked ? 'table-row' : 'none'; account_selector_container.style.display = add_tags_auto_el.checked ? 'block' : 'none'; add_tags_auto_infoline.style.display = add_tags_auto_el.checked ? 'inline' : 'none'; + add_tags_auto_uselist_tr.style.display = add_tags_auto_el.checked ? 'table-row' : 'none'; + + let add_tags_auto_uselist = document.getElementById('add_tags_auto_uselist'); + let add_tags_auto_uselist_list = document.getElementById('add_tags_auto_uselist_list'); + add_tags_auto_uselist.addEventListener('click', (event) => { + add_tags_auto_uselist_list.disabled = !event.target.checked; + }); + add_tags_auto_uselist_list.disabled = !add_tags_auto_uselist.checked; addtags_reset_btn.addEventListener('click', () => { addtags_textarea.value = browser.i18n.getMessage('prompt_add_tags_full_text'); @@ -221,6 +232,9 @@ function saveOptions(e) { case 'select-one': options[element.id] = element.value; break; + case 'textarea': + options[element.id] = element.value.trim(); + break; default: console.error("[ThunderAI] Unhandled input type:", element.type); } @@ -243,6 +257,7 @@ async function restoreOptions() { element.value = result[element.id] ?? default_number_value; break; case 'text': + case 'textarea': case 'password': let default_text_value = ''; if(element.id == 'default_chatgpt_lang') default_text_value = prefs_default.default_chatgpt_lang;