用于禁用Roundcube中一个文件夹的“转发”按钮的插件

时间:2014-10-11 14:21:52

标签: php jquery roundcube

我正在寻找一种快速方法来禁用Roundcube菜单栏中仅针对一个特定文件夹的所有按钮:

enter image description here

我正在使用PHP脚本将电子邮件保存到imap服务器上的特定“MailsGroupés”文件夹中。这导致邮件通过Roundcube可见(这是我想保留的功能),但也能够前进,发送...而且我绝对不希望这样,所以我想禁用顶部栏按钮,作为临时解决方案。

我确信使用Roundcube插件可以实现这一点,但我还没有深入了解Roundcube插件开发,我真的很感激一些帮助,而我仍在寻找答案。< / p>

1 个答案:

答案 0 :(得分:1)

好的,所以我设法找到答案。

使用guide to build plugins for Roundcube,我设置了一个&#34; no_forward_for_groupes&#34;插件,在[roundcubeRoot]/plugin/no_forward_for_groupes文件夹中。我通过wrtiting

[roundcubeRoot]/config/config.inc.php文件中激活了它
$config['plugins'] = array('no_forward_for_groupes');

与任何其他插件一样。

[roundcubeRoot]/program/js/app.js文件(Roundcube的核心JS)中进行了一些阅读和研究之后,我发现了我需要处理的对象以及要监听的事件。最后的代码就在之后。如您所见,我禁用了许多其他命令,以及拖放。所以基本上我有一个只读文件夹,你无法收到任何邮件。我知道这是一个特定的用例,但我希望有一天它可以帮助一些人!

<强> no_forward_for_groupes.php

<?php
/**
 * No Forward For Groups
 *
 * This plugin disables the Send / Forward menus from the Mails_Groupes folder
 *
 * @version 0.1
 * @author Remy Sanfeliu
 */
class no_forward_for_groupes extends rcube_plugin
{
  public $task = 'mail';

  function init(){
    $this->include_script('no_forward_for_groupes.js');
  }

}

<强> no_forward_for_groupes.js

/**
 * No Forward For Groups
 *
 * This plugin disables the Send / Forward menus from the Mails_Groupes folder
 *
 * @version 0.1
 * @author Remy Sanfeliu
 */

window.rcmail.addEventListener('listupdate', function(folder, old) {

    if (folder.folder=="SENT.Mails_Groupes"){
        window.rcmail.message_list.addEventListener('select', select_msglist);
        window.rcmail.message_list.addEventListener('dragstart', do_nothing);
        window.rcmail.message_list.addEventListener('dragmove', do_nothing);
        window.rcmail.message_list.addEventListener('dragend', do_nothing);
    }else{
        window.rcmail.message_list.removeEventListener('select', select_msglist);
        window.rcmail.message_list.removeEventListener('dragstart', do_nothing);
        window.rcmail.message_list.removeEventListener('dragmove', do_nothing);
        window.rcmail.message_list.removeEventListener('dragend', do_nothing);
    }

});


function select_msglist(list){
    window.rcmail.enable_command(   'reply',
                                    'reply-all',
                                    'reply-list',
                                    'move',
                                    'copy',
                                    'delete',
                                    'mark',
                                    'edit',
                                    'forward',
                                    'forward-attachment',
                                    'forward-inline',

                                    false);
}

function do_nothing(){
    // DO NOTHING
}