向普通用户隐藏 sugarcrm 中的字段审核列表

Hide the Fields audited list in sugarcrm to the regular user

我们如何隐藏对普通用户审核的字段列表,但要管理审核字段列表需要可见, 以下行需要为普通用户隐藏,只有管理员才能看到以下行 本模块审核的字段:姓名、职务等

我正在使用 sugarcrm ce 6。5.x

我理解你的问题 "when a Regular User views the Audit history, he or she should not see the list of fields that are audited. System Administrators can still see this list. All Users should still see the actual audit/history table." 如果你的回答是正确的,我的建议是:

列表(和弹出窗口本身)是在 modules/Audit/Popup_picker.php 中处理和生成的,因此您可以先查看那里的代码。

在我看来,下面两行负责显示此输出:

  1. echo $start_tag.translate('LBL_AUDITED_FIELDS', 'Audit').$fields.$end_tag;(on/around 第 139 行)
  2. echo $start_tag.translate('LBL_AUDITED_FIELDS', 'Audit').$end_tag;(on/around 第 143 行)

找到该代码后,我会将文件 modules/Audit/Popup_picker.php 复制到 custom/modules/Audit/Popup_picker.php 并进行调整以将 if(is_admin($GLOBALS['current_user']) 之类的检查添加到代码中。如果您将此用作额外条件,您可能会得到如下内容,请注意我的更改在 PHP 注释中用 <-- 注释,并且我清理了一些缩进和白色 space):

if($field_count > 0 && is_admin($GLOBALS['current_user'])) // <-- Added Admin-Check Condition
{
    $index = 0;
    foreach($audited_fields as $key=>$value)
    {
        $index++;
        $vname = ''; 

        if(isset($value['vname']))
            $vname = $value['vname'];
        else if(isset($value['label']))
            $vname = $value['label'];

        $fields .= str_replace(':', '', translate($vname, $focus->module_dir));

        if($index < $field_count)
        {   
            $fields .= ", ";
        }   
    }

    echo $start_tag.translate('LBL_AUDITED_FIELDS', 'Audit').$fields.$end_tag;
} elseif(is_admin($GLOBALS['current_user'])) { // <-- changed ELSE to ELSEIF and added Admin-Check Condition
    echo $start_tag.translate('LBL_AUDITED_FIELDS', 'Audit').$end_tag;
} else { // added new ELSE statement
    echo $start_tag.$end_tag; // <-- Regular users shouldn't see the message at all so render the empty table
}

我还没有 运行 测试过这段代码,但我希望这会给你一个很好的策略来深入研究并自己创建自定义。