Main menu

Отключение сортировки в списках модулей Vtiger

Yazov Rating Yazov Rating Yazov Rating Yazov Rating Yazov Rating Рейтинг 4.93 (57 Голосов)

В этой статье Я рассмотрю два варианта отключения возможности сортировки контрагентов (а так же сортировки в других модулях) по различным полям. Если вам нужно отключить сортировку в модулях Vtiger или отключить ее не для всех в списках модулей - добро пожаловать под кат.

Первый вариант менее удобен, так как отключает возможность сортировки вообще для всех. А вот второй более гибкий, так как им можно запретить возможность сортировку в модулях для отдельных групп. Здесь Я рассмотрю оба варианта, а второй будет работать следующим образом: сортировка отключена для всех пользователей кроме администраторов. Поэтому для использования более удобного варианта сразу переходите ко второй части.

Итак, начнем с самого простого и топорного способа отключения возможности сортировки в Vtiger: отключим ее вообще для всех. Для этого нужно открыть файл /include/ListView/ListViewController.php и в районе 600 строки находим в выражении такой код:

$name = "<a href='javascript:;' onClick='getListViewEntries_js(\"".$module.
            "\",\"parenttab=".$tabname."&order_by=".$field->getColumnName()."&sorder=".
            $temp_sorder.$sort_qry."\");' class='listFormHeaderLinks'>".
            getTranslatedString('LBL_LIST_USER_NAME_ROLE',$module)."".$arrow."</a>";
        } else {
          if($this->isHeaderSortingEnabled()) {
            $name = "<a href='javascript:;' onClick='getListViewEntries_js(\"".$module.
              "\",\"parenttab=".$tabname."&foldername=Default&order_by=".$field->getColumnName()."&start=".
              $_SESSION["lvs"][$module]["start"]."&sorder=".$temp_sorder."".
            $sort_qry."\");' class='listFormHeaderLinks'>".$label."".$arrow."</a>";

И заменяем его на следующий:

$name = "<a href='javascript:;'>".
            getTranslatedString('LBL_LIST_USER_NAME_ROLE',$module)."".$arrow."</a>";
        } else {
          if($this->isHeaderSortingEnabled()) {
            $name = "<a class='listFormHeaderLinks'>".$label."".$arrow."</a>";

Но, как Я уже заметил выше, этот вариант слишком топорный. Можно сделать его более гибким, а именно отключить возможность сортировки всем, кроме администраторов. Это гораздо удобнее. Правда для этого нужно забыть первый вариант ;)

Снова идем в файл /include/ListView/ListViewController.php и находим в районе 600 строки следующий код:

if($module == 'Users' && $fieldName == 'User Name') {
          $name = "<a href='javascript:;' onClick='getListViewEntries_js(\"".$module.
            "\",\"parenttab=".$tabname."&order_by=".$field->getColumnName()."&sorder=".
            $temp_sorder.$sort_qry."\");' class='listFormHeaderLinks'>".
            getTranslatedString('LBL_LIST_USER_NAME_ROLE',$module)."".$arrow."</a>";
        } else {
          if($this->isHeaderSortingEnabled()) {
            $name = "<a href='javascript:;' onClick='getListViewEntries_js(\"".$module.
              "\",\"parenttab=".$tabname."&foldername=Default&order_by=".$field->getColumnName()."&start=".
              $_SESSION["lvs"][$module]["start"]."&sorder=".$temp_sorder."".
            $sort_qry."\");' class='listFormHeaderLinks'>".$label."".$arrow."</a>";
 
          } else {
            $name = $label;
          }

Здесь, после кода

else {
            $name = $label;
          }

Добавляем новое условие, при котором возможность сортировки остается включенной только для администраторов:

if (is_admin($current_user)) {
            $name = "<a href='javascript:;' onClick='getListViewEntries_js(\"".$module.
              "\",\"parenttab=".$tabname."&foldername=Default&order_by=".$field->getColumnName()."&start=".
              $_SESSION["lvs"][$module]["start"]."&sorder=".$temp_sorder."".
            $sort_qry."\");' class='listFormHeaderLinks'>".$label."".$arrow."</a>";
 
          } else {
            $name = $label;
          }

Нет особого смысла объяснять первый вариант, ведь там все слишком просто, а вот вторым мы указываем условие if (is_admin($current_user)), которое определяет является ли пользователь администратором и для него добавляем возможность сортировки списков. Для всех остальных же эта возможность отсутствует. При этом важно оставить предыдущие условия, чтобы не нарушать функционал.

Обновление биоса на ноутбуке lenovo на сайте http://www.lenovo-helpers.ru.

Follow me on TwitterЯ ВКонтакте