Created
November 25, 2016 12:19
Star
You must be signed in to star a gist
Example of how to control when the spam/ham buttons are shown from a MarkAsJunk2 driver.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* MarkAsJunk2 JS events example | |
* This is an example of how to interact with the markasjunk2 JS event | |
* markasjunk2-update to change the spam/ham options shown for specific | |
* folders | |
* | |
* @version 0.1 | |
* @author Philip Weir | |
* | |
* Copyright (C) 2016 Philip Weir | |
* | |
* This driver is part of the MarkASJunk2 plugin for Roundcube. | |
* | |
* This program is free software: you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation, either version 3 of the License, or | |
* (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with Roundcube. If not, see http://www.gnu.org/licenses/. | |
*/ | |
class markasjunk2_jsevent | |
{ | |
private $addition_spam_folders = array('spam2', 'spam3'); | |
private $suspicious_folders = array('unknown1', 'unknown2'); | |
public function init() | |
{ | |
$js_addition_spam_folders = json_encode($this->addition_spam_folders); | |
$js_suspicious_folders = json_encode($this->suspicious_folders); | |
$script = <<<EOL | |
rcmail.addEventListener('markasjunk2-update', function(props) { | |
var addition_spam_folders = {$js_addition_spam_folders}; | |
var suspicious_folders = {$js_suspicious_folders}; | |
// ignore this special code when in a multifolder listing | |
if (rcmail.is_multifolder_listing()) | |
return; | |
if ($.inArray(rcmail.env.mailbox, addition_spam_folders) > -1) { | |
props.disp.spam = false; | |
props.disp.ham = true; | |
} | |
else if ($.inArray(rcmail.env.mailbox, suspicious_folders) > -1) { | |
props.disp.spam = true; | |
props.disp.ham = true; | |
// from here it is also possible to alter the buttons themselves... | |
props.objs.spamobj.find('a > span').text('As possibly spam'); | |
} | |
else { | |
props.objs.spamobj.find('a > span').text(rcmail.get_label('markasjunk','markasjunk2')); | |
} | |
return props; | |
} ); | |
EOL; | |
$rcmail = rcmail::get_instance(); | |
$rcmail->output->add_script($script, 'docready'); | |
} | |
public function spam(&$uids, $mbox) | |
{ | |
// Treat message as spam... | |
} | |
public function ham(&$uids, $mbox) | |
{ | |
// Treat message as ham... | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment