Vtiger 7.3 принёс нам множество улучшений в части производительности и функционала. В том числе добавлена интересная возможность - в настройках отдельно взятого пользователя выбирать какую страницу открывать по умолчанию после авторизации. Раньше это можно было сделать только глобально из настроек системы.
Если вы по каким-то причинам не можете обновиться до версии 7.3, то можете внедрить в Vtiger этот отдельно взятый функционал. Для этого вам понадобится запустить скрипт добавления поля, а также внести изменения в код Vtiger. Итак, приступим.
Первое что надо сделать - добавить нужное нам поле. Пишем нужный нам скрипт:
<?php
// Turn on debugging level
$Vtiger_Utils_Log = true;
chdir('../');
require_once('vtlib/Vtiger/Menu.php');
require_once('vtlib/Vtiger/Block.php');
require_once('vtlib/Vtiger/Field.php');
// Include necessary classes
include_once('vtlib/Vtiger/Module.php');
// Define instances
$users = Vtiger_Module::getInstance('Users');
$blockInstance = new Vtiger_Block();
// Nouvelle instance pour le nouveau bloc
$block = Vtiger_Block::getInstance('LBL_MORE_INFORMATION', $users);
// Add Default User Module
$fieldInstance = new Vtiger_Field();
$fieldInstance->name = 'user_default_module';
$fieldInstance->table = 'vtiger_users';
$fieldInstance->column = 'user_default_module';
$fieldInstance->label = 'User Default Module ';
$fieldInstance->columntype = 'varchar(50)';
$fieldInstance->uitype = 15;
$fieldInstance->typeofdata = 'V~O';
$block->addField($fieldInstance);
?>
Кладём скрипт в папку scripts в корне CRM-системы с именем add_lp_field.php. Если этой папки нет, создайте её. Далее запустите один раз этот файл из браузера по адресу scripts/add_lp_field.php.
Теперь нам понадобится внести ряд изменений в файлы CRM.
Меняем файл includes/main/WebUI.php
После этих строчек (в районе 104-105):
$currentUser = $this->getLogin();
vglobal('current_user', $currentUser);
Добавляем следующее:
$user_default_module = $currentUser->user_default_module;
if (empty($user_default_module)) {
$user_default_module = vglobal('default_module');
}
vglobal('user_default_module', $user_default_module);
Далее ищем строчки 165-166, ищем следующее содержимое:
if(empty($module)) {
if ($this->hasLogin()) {
$defaultModule = vglobal('default_module');
Удаляем строчку $defaultModule = vglobal('default_module');
Вместо неё вставляем следующее:
$defaultModule = vglobal('user_default_module');
Далее идём в файл modules/Vtiger/models/Field.php.
Добавляем в него новую функцию, например, в районе строчки 248:
public function getModulesList(){
global $adb;
// vtlib customization: Ignore disabled and Tools modules
$query = 'select distinct vtiger_tab.tablabel, vtiger_tab.name as tabname from vtiger_tab where (vtiger_tab.presence != 1 and vtiger_tab.parent != "Tools" and vtiger_tab.parent != "")';
// END
$result = $adb->pquery($query, array());
while($row = $adb->fetch_array($result)){
$modules[$row['tablabel']] = $row['tabname'];
}
return $modules;
}
Затем нам потребуется вызвать данную функцию в getPicklistValues.
Идём в строчку 317, ищем эти строчки:
}else{
$picklistValues = Vtiger_Util_Helper::getPickListValues($fieldName);
}
После неё добавляем новый код:
$fieldName = $this->getName();
if ($fieldName === 'user_default_module'){
$picklistValues = $this->getModulesList();
}
Если вы успешно совершили вышеописанные действия, то у вас должно в настройках пользователя появится новое поле, показанное на картинке. И после авторизации данный пользователь должен попадать на страницу, указанную в настройках