如何将自定义列添加到OTRS故障单视图(仪表板)

时间:2014-08-11 07:49:13

标签: perl otrs

我一直在尝试将更多数据附加到OTRS票证(最新版本)。我已经设法获取票证数据中的信息,但是,我不知道如何在视图中访问它。大多数数据似乎是通过$ QData / $ Data解析的,但是,当我打印变量时,我得到的全部是16/12。

    %CustomerCompanyName = $Self->{CustomerCompanyObject}->CustomerCompanyGet( CustomerID => $Ticket{CustomerID} ); 

    #} 
    $Ticket{CustomerCompanyName} = \%CustomerCompanyName;

我想在dtl AgentDashboardTicketGeneric.dtl 中访问它,但是,$ Data {“CustomerCompanyName”}为空。我设法得到哈希或16/12。同样,在变量$ Ticket中我们设法转储变量并看到数据实际存在于那里(实际上无法访问它,我们无法确定它是哪种数据类型并尝试了所有可能的方式我们可以想到)。

编辑:我明白了。它与Johannes解决方案一起使用,但是,SysConfig中列的值必须为2,而不是1。

1 个答案:

答案 0 :(得分:3)

您可以通过用户界面访问所有故障单数据。在每个小部件中,您可以在右上角访问设置并删除,添加,排序列。

如果您需要客户公司数据(未绑定到故障单数据),则需要修改/扩展给定模块(Kernel :: Output :: HTML :: DashboardTicketGeneric)。这就是$ Data {" CustomerCompanyName"}为空的原因,因为那里没有加载客户公司的东西。

恕我直言,你不需要修改dtl。在sysconfig中添加新列:

  

HTTP://OTRSHOST/otrs/index.pl?Action=AdminSysConfig;Subaction=Edit;SysConfigSubGroup=Frontend%3A%3AAgent%3A%3ADashboard;SysConfigGroup=Ticket   添加新列" CompanyName"到每个小部件DefaultColumns。   Sysconfig

(提示:这里你也可以使用DynamicField_XXX添加DynamicFields)

然后在DashboardTicketGeneric.pm中修改代码

首先:添加模块(L:21左右)

use Kernel::System::CustomerCompany;

之后启动模块(在L:44左右的CustomerUserObject之后)

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);

然后将逻辑添加到模块中(L:1414左右 - 在客户名称块之后:

            elsif ( $Column eq 'CompanyName' ) {

                # get customer company name
                my %CompanyData;
                if ( $Ticket{CustomerID} ) {
                    %CompanyData = $Self->{CustomerCompanyObject}->CustomerCompanyGet(
                        CustomerID => $Ticket{CustomerID},
                    );
                }
                $DataValue = $CompanyData{CustomerCompanyName};
            }

enter image description here

然后删除缓存(..bin / otrs.DeleteCache.pl),因为小部件使用缓存并且您的更改不会足够快地应用;)

将列添加到窗口小部件(窗口小部件的右上角 - >设置),您应该没问题。 enter image description here enter image description here

更新:放置"新模块"在自定义文件夹

Custom/Kernel/Output/HTML/DashboardTicketGeneric.pm

问候

约翰