/**
  * Выводит форму фильтрации списка
  */
 public function createFilterForm()
 {
     $this->setContext(AdminListHelper::OP_CREATE_FILTER_FORM);
     print ' <form name="find_form" method="GET" action="' . static::getUrl($this->additionalUrlParams) . '?">';
     $sectionHelper = $this->getHelperClass(AdminSectionEditHelper::className());
     if ($sectionHelper) {
         $sectionsInterfaceSettings = static::getInterfaceSettings($sectionHelper::getViewName());
         foreach ($this->arFilterOpts as $code => &$name) {
             if (!empty($this->tableColumnsMap[$code])) {
                 $name = $sectionsInterfaceSettings['FIELDS'][$this->tableColumnsMap[$code]]['WIDGET']->getSettings('TITLE');
             }
         }
     }
     $oFilter = new \CAdminFilter($this->getListTableID() . '_filter', $this->arFilterOpts);
     $oFilter->Begin();
     foreach ($this->arFilterOpts as $code => $name) {
         $widget = $this->createWidgetForField($code);
         if ($widget->getSettings('TITLE') != $this->arFilterOpts[$code]) {
             $widget->setSetting('TITLE', $this->arFilterOpts[$code]);
         }
         $widget->showFilterHtml();
     }
     $oFilter->Buttons(array("table_id" => $this->getListTableID(), "url" => static::getUrl($this->additionalUrlParams), "form" => "find_form"));
     $oFilter->End();
     print '</form>';
 }
 /**
  * Возвращает класс хелпера нужного типа из всех зарегистрированных хелперов в модуле и находящихся
  * в том же неймспейсе что класс хелпера из которого вызван этот метод
  *
  * Под типом понимается ближайший родитель из модуля AdminHelper.
  *
  * Например если нам нужно получить ListHelper для формирования ссылки на список из EditHelper,
  * то это будет вглядеть так $listHelperClass = static::getHelperClass(AdminListHelper::getClass())
  *
  * @param $class
  * 
  * @return string|bool
  */
 public function getHelperClass($class)
 {
     $interfaceSettings = self::$interfaceSettings[static::getModule()];
     foreach ($interfaceSettings as $viewName => $settings) {
         $parentClasses = class_parents($settings['helper']);
         array_pop($parentClasses);
         // AdminBaseHelper
         $parentClass = array_pop($parentClasses);
         $thirdClass = array_pop($parentClasses);
         if (in_array($thirdClass, array(AdminSectionListHelper::className(), AdminSectionEditHelper::className()))) {
             $parentClass = $thirdClass;
         }
         if ($parentClass == $class && class_exists($settings['helper'])) {
             $helperClassParts = explode('\\', $settings['helper']);
             array_pop($helperClassParts);
             $helperNamespace = implode('\\', $helperClassParts);
             $сlassParts = explode('\\', get_called_class());
             array_pop($сlassParts);
             $classNamespace = implode('\\', $сlassParts);
             if ($helperNamespace == $classNamespace) {
                 return $settings['helper'];
             }
         }
     }
     return false;
 }
 /**
  * Возвращает массив со списком действий при клике правой клавишей мыши на строке таблицы
  * По-умолчанию:
  * <ul>
  * <li> Редактировать элемент </li>
  * <li> Удалить элемент </li>
  * <li> Если это всплывающее окно - запустить кастомную JS-функцию. </li>
  * </ul>
  *
  * @param $data Данные текущей строки.
  * @param $section Признак списка для раздела.
  * 
  * @return array
  *
  * @see CAdminListRow::AddActions
  *
  * @api
  */
 protected function getRowActions($data, $section = false)
 {
     $actions = array();
     if ($this->isPopup()) {
         $jsData = \CUtil::PhpToJSObject($data);
         $actions['select'] = array('ICON' => 'select', 'DEFAULT' => true, 'TEXT' => Loc::getMessage('DIGITALWAND_ADMIN_HELPER_LIST_SELECT'), "ACTION" => 'javascript:' . $this->popupClickFunctionName . '(' . $jsData . ')');
     } else {
         $viewQueryString = 'module=' . static::getModule() . '&view=' . static::getViewName() . '&entity=' . static::getEntityCode();
         $query = array_merge($this->additionalUrlParams, array($this->pk() => $data[$this->pk()]));
         if ($this->hasWriteRights()) {
             $sectionHelperClass = static::getHelperClass(AdminSectionEditHelper::className());
             $editHelperClass = static::getHelperClass(AdminEditHelper::className());
             $actions['edit'] = array('ICON' => 'edit', 'DEFAULT' => true, 'TEXT' => Loc::getMessage('DIGITALWAND_ADMIN_HELPER_LIST_EDIT'), 'ACTION' => $this->list->ActionRedirect($section ? $sectionHelperClass::getUrl($query) : $editHelperClass::getUrl($query)));
         }
         if ($this->hasDeleteRights()) {
             $actions['delete'] = array('ICON' => 'delete', 'TEXT' => Loc::getMessage("DIGITALWAND_ADMIN_HELPER_LIST_DELETE"), 'ACTION' => "if(confirm('" . Loc::getMessage('DIGITALWAND_ADMIN_HELPER_LIST_DELETE_CONFIRM') . "')) " . $this->list->ActionDoGroup($data[$this->pk()], $section ? "delete-section" : "delete", $viewQueryString));
         }
     }
     return $actions;
 }