Skip to content

Commit

Permalink
[FIX]Screen email: fix Adding to Trust Contact while the email is blo…
Browse files Browse the repository at this point in the history
…cked
  • Loading branch information
christer77 committed Nov 6, 2024
1 parent 9cdbb8e commit c31c7d6
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 44 deletions.
61 changes: 60 additions & 1 deletion modules/imap/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -1318,19 +1318,78 @@ var add_email_in_contact_trusted = function(list_email) {
}
};

var list_blocked_senders = [];
get_liste_block_sieve(Hm_Utils.parse_folder_path(hm_list_path()));

function get_liste_block_sieve(detail) {
var page = hm_page_name();
if (page == 'message_list') {
Hm_Ajax.request(
[
{ name: 'hm_ajax_hook', value: 'ajax_liste_block_sieve' },
{ name: 'imap_server_id', 'value': detail.server_id},
],
function (res) {
if (res.ajax_liste_block_sieve) {
list_blocked_senders = res.ajax_liste_block_sieve;
}
}
);
}
};

$('.screen-email-unlike').on("click", function() { imap_screen_email(); return false; });

$('.screen-email-like').on("click", function() {
var list_email = [];
var list_msg_uid = [];
var email_existing_in_blocked_senders = [];
$('input[type=checkbox]').each(function() {
if (this.checked && this.id.search('imap') != -1) {
let email = $('.'+ this.id +' .from').attr("data-title")
if (email = email.trim()) {
list_email.push(email);
if (list_blocked_senders.lenght > 0) {
Object.keys(list_blocked_senders).forEach(key => {
if (list_blocked_senders[key] === email) {
email_existing_in_blocked_senders.push(email);
list_msg_uid.push($(this).parent().parent().attr("data-uid"));
delete list_blocked_senders[key];
}
});
}
}
}
});
add_email_in_contact_trusted(list_email); return false;

if (email_existing_in_blocked_senders) {
var list_html = "<ol>";
email_existing_in_blocked_senders.forEach(sender => {
sender = sender.trim();
list_html += `<li>${sender}</li>`;
});
list_html += "</ol>";
const modal = new Hm_Modal({
modalId: 'emptySubjectBodyModal',
title: 'Warning',
btnSize: 'sm'
});

var modalContentHeadline = "Adress mail exist in your Block list";
modal.addFooterBtn(hm_trans('Add Emails to Trust contact'), 'btn-warning', handleAddEmail);
modal.setContent(modalContentHeadline + list_html + `<p>${hm_trans('If you add these, all will be unblocked.<br>Are you sure you want to add this in your Trust contact?')}</p>`);
modal.open();
function handleAddEmail() {
list_msg_uid.forEach(function(msg_uid) {
block_unblock_sender(msg_uid, Hm_Utils.parse_folder_path(hm_list_path()), 'sender', 'unblocked');
});
modal.hide();
add_email_in_contact_trusted(list_email);
};
} else {
add_email_in_contact_trusted(list_email);
}
return false;
});

$(document).on('click', '[data-bs-dismiss="modal"]', function() {
Expand Down
45 changes: 2 additions & 43 deletions modules/sievefilters/modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,11 @@ public function process() {
*/
class Hm_Handler_sieve_block_domain_script extends Hm_Handler_Module {
public function process() {
$imap_account = null;
foreach ($this->user_config->get('imap_servers') as $idx => $mailbox) {
if ($idx == $this->request->post['imap_server_id']) {
$imap_account = $mailbox;
break;
}
}

Expand Down Expand Up @@ -1344,46 +1346,3 @@ public function process() {
}
}
}

/**
* @subpackage sievefilterstoggle/handler
*/
class Hm_Handler_sieve_toggle_script_state extends Hm_Handler_Module {
public function process() {
list($success, $form) = $this->process_form(array('imap_account', 'script_state', 'sieve_script_name'));
if (!$success) {
$this->out('success', false);
return;
}
$imap_account = Hm_IMAP_List::dump($form['imap_account']);
$factory = get_sieve_client_factory($this->config);
$success = false;
try {
$client = $factory->init($this->user_config, $imap_account);
$state = $form['script_state'] ? 'enabled': 'disabled';
$scripts = $client->listScripts();
foreach ($scripts as $key => $script) {
if ($script == 'main_script') {
$client->removeScripts('main_script');
}
if ($script == $form['sieve_script_name']) {
if (! $form['script_state']) {
unset($scripts[$key]);
}
$client->renameScript($script, "s{$state}_");
$success = true;
}
}
$scripts = $client->listScripts();
$main_script = generate_main_script($scripts);
save_main_script($client, $main_script, $scripts);
$client->activateScript('main_script');
$client->close();

Hm_Msgs::add("Script $state");
} catch (Exception $e) {
Hm_Msgs::add("ERRSieve: {$e->getMessage()}");
}
$this->out('success', $success);
}
}
8 changes: 8 additions & 0 deletions modules/sievefilters/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@
add_handler('ajax_sieve_unblock_sender', 'sieve_unblock_sender', true);
add_output('ajax_sieve_unblock_sender', 'sieve_block_unblock_output', true);

/* liste of sieve blocked */
setup_base_ajax_page('ajax_liste_block_sieve', 'core');
add_handler('ajax_liste_block_sieve', 'load_list_sieve_block', true);
add_output('ajax_liste_block_sieve', 'get_list_sieve_block', true);

/* get mailboxes script */
setup_base_ajax_page('ajax_sieve_get_mailboxes', 'core');
add_handler('ajax_sieve_get_mailboxes', 'load_imap_servers_from_config', true, 'imap', 'load_user_data', 'after');
Expand Down Expand Up @@ -124,6 +129,8 @@
'ajax_sieve_block_domain',
'ajax_sieve_block_change_behaviour',
'ajax_sieve_toggle_script_state',
'ajax_liste_block_sieve',
'message_list',
),
'allowed_output' => array(
'imap_server_ids' => array(FILTER_UNSAFE_RAW, false),
Expand All @@ -136,6 +143,7 @@
'sieve_detail_display' => array(FILTER_UNSAFE_RAW, false),
'imap_extensions_display' => array(FILTER_UNSAFE_RAW, false),
'script_details' => array(FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY),
'ajax_liste_block_sieve' => array(FILTER_UNSAFE_RAW, false),
),
'allowed_get' => array(),
'allowed_post' => array(
Expand Down

0 comments on commit c31c7d6

Please sign in to comment.