Добавление страницы по умолчанию в настройки пользователя

Добавление страницы по умолчанию в настройки пользователя

Vtiger 7.3 принёс нам множество улучшений в части производительности и функционала. В том числе добавлена интересная возможность - в настройках отдельно взятого пользователя выбирать какую страницу открывать по умолчанию после авторизации. Раньше это можно было сделать только глобально из настроек системы.

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();

            }

 

Если вы успешно совершили вышеописанные действия, то у вас должно в настройках пользователя появится новое поле, показанное на картинке. И после авторизации данный пользователь должен попадать на страницу, указанную в настройках