/** * Устанавливает настройки интерфейса для текущего поля * * @see AdminBaseHelper::getInterfaceSettings(); * @see AdminBaseHelper::setFields(); * * @param string $code * * @return bool */ public function loadSettings($code = null) { $interface = $this->helper->getInterfaceSettings(); $code = is_null($code) ? $this->code : $code; if (!isset($interface['FIELDS'][$code])) { return false; } unset($interface['FIELDS'][$code]['WIDGET']); $this->settings = array_merge($this->settings, $interface['FIELDS'][$code]); $this->setDefaultValue(); return true; }
/** * Генерирует HTML для поля в списке * @see AdminListHelper::addRowCell(); * @param \CAdminListRow $row * @param array $data - данные текущей строки */ public function generateRow(&$row, $data) { if ($this->getSettings('MULTIPLE')) { } else { if ($this->getSettings('EDIT_LINK') || $this->getSettings('SECTION_LINK')) { $entityClass = $this->entityName; $pk = $entityClass::getEntity()->getPrimary(); if ($this->getSettings('SECTION_LINK')) { $params = $this->helper->isPopup() ? $_GET : array(); $params['ID'] = $this->data[$pk]; $listHelper = $this->helper->getHelperClass($this->helper->isPopup() ? AdminSectionListHelper::className() : AdminListHelper::className()); $pageUrl = $listHelper::getUrl($params); $value = '<span class="adm-submenu-item-link-icon adm-list-table-icon iblock-section-icon"></span>'; } else { $editHelper = $this->helper->getHelperClass(AdminEditHelper::className()); $pageUrl = $editHelper::getUrl(array('ID' => $this->data[$pk])); } $value .= '<a href="' . $pageUrl . '">' . static::prepareToOutput($this->getValue()) . '</a>'; } else { $value = static::prepareToOutput($this->getValue()); } if ($this->getSettings('EDIT_IN_LIST') and !$this->getSettings('READONLY')) { $row->AddInputField($this->getCode(), array('style' => 'width:90%')); } $row->AddViewField($this->getCode(), $value); } }
/** * Возвращает массив со списком действий при клике правой клавишей мыши на строке таблицы * По-умолчанию: * <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; }