Добавить поля в карточку пользователя клиента

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Добавить поля в карточку пользователя клиента

Сообщение fatherice » 22 июл 2016, 19:21

версия OTRS: 4.0.13

Хочется добавить несколько дополнительных полей в карточки пользователей клиента.
Как это можно сделать?

Спасибо.
OTRS 5.0.11, CentOS 7

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Добавить поля в карточку пользователя клиента

Сообщение ykolesnikov » 22 июл 2016, 19:27

В мануале об этом прямо написано, осталось небольшое усилие, найти :cry:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 22 июл 2016, 19:38

ykolesnikov писал(а):В мануале об этом прямо написано, осталось небольшое усилие, найти :cry:
Юрий, я честно старался это найти, но нашел информацию только о динамических полях для заявок и заметок.
Буду благодарен за помощь.
OTRS 5.0.11, CentOS 7

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Добавить поля в карточку пользователя клиента

Сообщение ykolesnikov » 22 июл 2016, 22:34

Внимательно почитайте этот раздел.
http://otrs.github.io/doc/manual/admin/ ... tomer-data
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 01 авг 2016, 16:30

Я добавил столбец к базе данных в нужную таблицу.

Но далее я не понимаю вот этот момент:

Код: Выделить всё

 Теперь добавьте новый столбец в MAP-масив в Kernel/Config.pm, как это показано в нижеприведенном сценарии.

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserRoom',      'Room',      'room',       0, 1, 'var', '', 0 ],

Сценарий: Добавление поля "комната" в файл Kernel/Config.pm file.

Всю эту информацию о клиенте можно также отредактировать воспользовавшись ссылкой Клиенты в интерфейсе агента. 
Я вижу массив в Kernel/Config/Default.pm, но как я понял, он будет затираться все время.
в файл Kernel/Config.pm данного раздела нет и при попытке скопировать его из Default.pm я получаю InternalServerError при обновлении страницы в OTRS.

Как правильно добавлять дополнительные строки в Kernel/Config.pm?
OTRS 5.0.11, CentOS 7

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Добавить поля в карточку пользователя клиента

Сообщение ykolesnikov » 02 авг 2016, 10:01

Добавить в Config.pm надо раздел Мар для клиента целиком из Defaults.pm с добавленной строкой.

P.S. Добавьте себе в профиле подпись, например как у меня, для разных версий OTRS и ОС могут быть иногда отличия.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 11:17

Я добавил поле "auth_method"

Код: Выделить всё

MariaDB [otrs]> describe customer_user;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| login       | varchar(200) | NO   | UNI | NULL    |                |
| email       | varchar(150) | NO   |     | NULL    |                |
| customer_id | varchar(150) | NO   |     | NULL    |                |
| pw          | varchar(64)  | YES  |     | NULL    |                |
| title       | varchar(50)  | YES  |     | NULL    |                |
| first_name  | varchar(100) | NO   |     | NULL    |                |
| last_name   | varchar(100) | NO   |     | NULL    |                |
| phone       | varchar(150) | YES  |     | NULL    |                |
| fax         | varchar(150) | YES  |     | NULL    |                |
| mobile      | varchar(150) | YES  |     | NULL    |                |
| street      | varchar(150) | YES  |     | NULL    |                |
| zip         | varchar(200) | YES  |     | NULL    |                |
| city        | varchar(200) | YES  |     | NULL    |                |
| country     | varchar(200) | YES  |     | NULL    |                |
| comments    | varchar(250) | YES  |     | NULL    |                |
| valid_id    | smallint(6)  | NO   | MUL | NULL    |                |
| create_time | datetime     | NO   |     | NULL    |                |
| create_by   | int(11)      | NO   | MUL | NULL    |                |
| change_time | datetime     | NO   |     | NULL    |                |
| change_by   | int(11)      | NO   | MUL | NULL    |                |
| auth_method | varchar(250) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
22 rows in set (0.01 sec)
Вот содержимое моего Config.pm

Код: Выделить всё

#
#  -->> Most OTRS configuration should be done via the OTRS web interface
#       and the SysConfig. Only for some configuration, such as database
#       credentials and customer data source changes, you should edit this
#       file. For changes do customer data sources you can copy the definitions
#       from Kernel/Config/Defaults.pm and paste them in this file.
#       Config.pm will not be overwritten when updating OTRS.
# --

package Kernel::Config;

use strict;
use warnings;
use utf8;

sub Load {
    my $Self = shift;

    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #

    # The database host
    $Self->{'DatabaseHost'} = '127.0.0.1';

    # The database name
    $Self->{'Database'} = "otrs";

    # The database user
    $Self->{'DatabaseUser'} = "otrs";

    # The password of database user. You also can use bin/otrs.Console.pl Maint::Database::PasswordCrypt
    # for crypted passwords
    $Self->{'DatabasePw'} = 'R4e3w2q1';

    # The database DSN for MySQL ==> more: "perldoc DBD::mysql"
    $Self->{'DatabaseDSN'} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost}";

    # The database DSN for PostgreSQL ==> more: "perldoc DBD::Pg"
    # if you want to use a local socket connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};";
    # if you want to use a TCP/IP connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};host=$Self->{DatabaseHost};";

    # The database DSN for Microsoft SQL Server - only supported if OTRS is
    # installed on Windows as well
#    $Self->{DatabaseDSN} = "DBI:ODBC:driver={SQL Server};Database=$Self->{Database};Server=$Self->{DatabaseHost},1433";

    # The database DSN for Oracle ==> more: "perldoc DBD::oracle"
#    $Self->{DatabaseDSN} = "DBI:Oracle://$Self->{DatabaseHost}:1521/$Self->{Database}";
#
#    $ENV{ORACLE_HOME}     = '/path/to/your/oracle';
#    $ENV{NLS_DATE_FORMAT} = 'YYYY-MM-DD HH24:MI:SS';
#    $ENV{NLS_LANG}        = 'AMERICAN_AMERICA.AL32UTF8';

    # ---------------------------------------------------- #
    # fs root directory
    # ---------------------------------------------------- #
    $Self->{Home} = '/opt/otrs';

    # ---------------------------------------------------- #
    # insert your own config settings "here"               #
    # config settings taken from Kernel/Config/Defaults.pm #
    # ---------------------------------------------------- #
    # $Self->{SessionUseCookie} = 0;
    # $Self->{CheckMXRecord} = 0;

    # ---------------------------------------------------- #

    # ---------------------------------------------------- #
    # data inserted by installer                           #
    # ---------------------------------------------------- #
    # $DIBI$

    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    # end of your own config options!!!                    #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
}

# ---------------------------------------------------- #
# needed system stuff (don't edit this)                #
# ---------------------------------------------------- #

use base qw(Kernel::Config::Defaults);

# -----------------------------------------------------#

1;
Все попытки вставить что-либо в этот файл приводят к Internal Server Error.

Вставлять я пытался блок MAP целиком.

Код: Выделить всё

Map => [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
            [ 'UserTitle',      Translatable('Title or salutation'), 'title',  1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  Translatable('Firstname'),  'first_name', 1, 1, 'var', '', 0 ],
            [ 'UserLastname',   Translatable('Lastname'),   'last_name',  1, 1, 'var', '', 0 ],
            [ 'UserLogin',      Translatable('Username'),   'login',      1, 1, 'var', '', 0 ],
            [ 'UserPassword',   Translatable('Password'),   'pw',         0, 0, 'var', '', 0 ],
            [ 'UserEmail',      Translatable('Email'),      'email',      1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', Translatable('CustomerID'), 'customer_id', 0, 1, 'var', '', 0 ],
            [ 'UserPhone',        Translatable('Phone'),       'phone',        1, 0, 'var', '', 0 ],
            [ 'UserFax',          Translatable('Fax'),         'fax',          1, 0, 'var', '', 0 ],
            [ 'UserMobile',       Translatable('Mobile'),      'mobile',       1, 0, 'var', '', 0 ],
            [ 'UserStreet',       Translatable('Street'),      'street',       1, 0, 'var', '', 0 ],
            [ 'UserZip',          Translatable('Zip'),         'zip',          1, 0, 'var', '', 0 ],
            [ 'UserCity',         Translatable('City'),        'city',         1, 0, 'var', '', 0 ],
            [ 'UserCountry',      Translatable('Country'),     'country',      1, 0, 'var', '', 0 ],
            [ 'UserComment',      Translatable('Comment'),     'comments',     1, 0, 'var', '', 0 ],
            [ 'ValidID',          Translatable('Valid'),       'valid_id',     0, 1, 'int', '', 0 ],
            [ 'auth_method',       Translatable('auth_method'),      'auth_method',       1, 0, 'var', '', 0 ],
        ],
OTRS 5.0.11, CentOS 7

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 11:21

Как он узнает, что надо этот раздел брать именно из Config.pm, а не из Defaults.pm?
OTRS 5.0.11, CentOS 7

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Добавить поля в карточку пользователя клиента

Сообщение ykolesnikov » 02 авг 2016, 14:01

Потому, что если Вы потрудитесь почитать мануал, то узнаете много нового, в том числе и порядок применения конфигурационных файлов в OTRS.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 15:40

ykolesnikov писал(а):Потому, что если Вы потрудитесь почитать мануал, то узнаете много нового, в том числе и порядок применения конфигурационных файлов в OTRS.
Действительно.

Итак, на текущий момент я получаю Internal Server Error и в логе я вижу следующую ошибку.

[Tue Aug 02 15:36:22.269739 2016] [:error] [pid 2647] Undefined subroutine &Kernel::Config::Translatable called at /opt/otrs//Kernel/Config.pm line 76.\n
Строка 76 - это начало "Map"

Причем, если блок Map брать без изменения и просто скопировать, то ошибка точно такая же.
OTRS 5.0.11, CentOS 7

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 16:04

Я убрал "translatable" из всех полей и ошибка ушла.

Но, поле в карточке пользователя так и не появилось.
OTRS 5.0.11, CentOS 7

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 16:16

Разобрался. Надо было в Config.pm весь блок копировать со строки: "$Self->{CustomerUser} = {"
OTRS 5.0.11, CentOS 7

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 16:16

Юрий, спасибо.
Вы мне очень помогли!
OTRS 5.0.11, CentOS 7

fatherice
OTRS Новобранец
Сообщения: 12
Зарегистрирован: 04 май 2016, 16:51

Re: Добавить поля в карточку пользователя клиента

Сообщение fatherice » 02 авг 2016, 16:21

Остался вопрос с "Translatable"
Вероятно, надо скопировать еще какой-то блок.
OTRS 5.0.11, CentOS 7

Ответить