SugarTalk - ресурс для администраторов и разработчиков системы SugarCRM.

Пользовательское условие на вывод данных в listview

Одна из самых востребованных функций списка (listview) в sugarcrm — это возможность фильтрации данных в зависимости от пользовательского условия.  И почему-то ни в каких мануалах я не нашел простого изящного решения, неизменного при обновлении системы (в документации на английском – так называемый Upgrade Save). Многие начинают модифицировать bean класс sugarcrm, в частности, метод  get_list_view_data,а, соответственно, можно применить только для пользовательских модулей, при обновлении sugarcrm любые изменения bean классов в родных модулях будут потеряны.

Предлагаю простой метод , как задавать условия в listview. Открываем файл listviewdefs.php в папке metadata модуля, и в самом конце добавляем строчку:

$this->where = "";

Где внутри задаем пользовательское условие к БД.

Например, в списке сделок нам не надо показывать уже закрытые сделки, тогда добавляем следующее условие:

$this->where = "sales_stage <> 'Closed Won' AND sales_stage <> 'Closed Lost'";

sales_stage – это поле в БД, которое хранит статус  сделки.

Не забывайте, чтобы файл не изменился при обновлении системы, необходимо изменить его в custom директории. Например, для модуля Сделки – это будет следующий путь: custom/modules/Opportunities/metadata/listviewdefs.php

Если у вас не будет любой из папок в этом пути, создайте ее вручную. Если вы не модифицировали список через студию sugarcrm, то скорей всего, у вас не будет по этому пути и файла listviewdefs.php. Если это так, то просто скопируйте его из папки modules/Opportunities/metadata или же просто зайдите в студию -> модуль сделки -> макеты -> форма списка -> сохранить и установить. После этого он сам появится по данному пути. Изменять необходимо именно файл по этому пути.

Усложним предыдущий пример и модифицируем так,  чтобы это условие работало только для обычных пользователей sugarcrm. А, например, администраторы видели все записи.

Вынесем наше условие в отдельную функцию (или класс), которую можно будет потом модифицировать под любые наши нужды, для этого сделаем файл в custom директории. У меня он находится по пути custom/custom_script/list_view_where.php

Содержимое файла:

01
02
03
04
05
06
07
08
09
10
<?php
function limit_list(&$view, $module_name)
{
    global $current_user;
    if ($module_name == 'Opportunities' and !is_admin($current_user))
    {
        $view->where = "sales_stage <> 'Closed Won' AND sales_stage <> 'Closed Lost'";
    }
}
?>

В listviewdefs.php соответственно вызовем нашу функцию

1
2
3
4
<?php
require_once('custom/custom_script/list_view_where.php');
limit_list($this, 'Opportunities');
?>

Таким образом, вы можете модифицировать функцию  под любые ваши нужды и подключать ее в необходимых модулях. К сожалению, этот метод  имеет один недостаток: если вы правите listviewdefs через sugar studio, то при сохранении макета  подключение пользовательской функции исчезнет, и вам надо будет снова подключать вашу функцию. Именно поэтому я рекомендую выносить всю  вашу логику для listview в отдельный файл.

P.S. Новая статья на данную тему доступна здесь

Высказать своё мнение о статье Вы можете в комментариях, если Вас интересуют какие либо вопросы или дополнения, то обсуждение по данной теме доступно на нашем форуме.

Последнее изменениеПонедельник, 10 июля 2017 18:00
  • Оцените материал
    (0 голосов)
  • Опубликовано в SugarCRM
  • Прочитано 33048 раз

11763 комментарии

  • Kitchen Cabinet Apush

    Kitchen Cabinet Apush

    Комментировать 02.09.2017 09:22

    Пользовательское условие на вывод данных в listview

  • Kenny Lofton Indians Jersey

    Kenny Lofton Indians Jersey

    Комментировать 02.09.2017 09:21

    There are no DIM weight charges, residential delivery fees, rural delivery fees, address correction fees or anything like that.
    Kenny Lofton Indians Jersey

  • Wholesale Jerseys From China

    Wholesale Jerseys From China

    Комментировать 02.09.2017 08:16

    He applied for reinstatement in September 1997 and met with commissioner Bud Selig in November 2002, but Selig never ruled on Rose's application. Some other promotional sites are either less expensive or free, conversely none of them have enough web traffic to rival Ebay.You may use social media for your company, not mingling.Rule 1: Know your prospective customers.Rose agreed in 1989 to a lifetime ban from baseball after a Major League Baseball investigation concluded that he bet on games involving the Cincinnati Reds while managing and playing.
    Wholesale Jerseys From China [url=http://www.wholesalenfljerseysfromchina.com/]Wholesale Jerseys From China[/url]

  • Wholesale Jerseys China

    Wholesale Jerseys China

    Комментировать 02.09.2017 08:16

    There are present different types of receptors in the world. This may include some landscaped walking paths, benches, tables, and landscaped areas. Now most of the new camera products also offer the brand new feature and applications for you. Instead, look up free resources online, and do it yourself. It is not an easy job to check and examine the performance regarding cameras easily.
    Wholesale Jerseys China

  • The New Hummer Power Devices

    The New Hummer Power Devices

    Комментировать 02.09.2017 08:15

    Пользовательское условие на вывод данных в listview

  • Adam Duvall Reds Jersey

    Adam Duvall Reds Jersey

    Комментировать 02.09.2017 07:21

    However, as we touched on above, using tag selectors like we did in our last tutorial has limitations.
    Adam Duvall Reds Jersey

  • Red bus hire

    Red bus hire

    Комментировать 02.09.2017 07:20

    Youre so cool! I dont suppose Ive read anything like this before. So nice to find somebody with some original thoughts on this subject. realy thank you for starting this up. this website is something that is needed on the web, someone with a little originality. useful job for bringing something new to the internet!

  • cartier love bangle size 19 copy

    cartier love bangle size 19 copy

    Комментировать 02.09.2017 07:18

    Its nice information this really helps interesting site
    cartier love bangle size 19 copy

  • kyire 3

    kyire 3

    Комментировать 02.09.2017 07:17

    Barcelona poaching peg Manchester united 1 small method model and name the wizards to dig the premier league
    kyire 3

  • cartier rose gold love bangle fake

    cartier rose gold love bangle fake

    Комментировать 02.09.2017 07:17

    I simply want to say I am all new to blogs and actually enjoyed your blog site. Likely I’m planning to bookmark your website . You definitely come with fabulous articles and reviews. Cheers for revealing your website.
    cartier rose gold love bangle fake

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Наверх

Последние новости

  • 1
  • 2
  • 3
  • 4

Популярные новости