Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Админка: Инфоблок: Пользовательские формы редактирования элементов

00 голосов
1
Создал форму редактирования элементов.
Но теперь нет возможности настроить из админки названия и порядок (первое, второе...) полей. А надо...
Взял из \bitrix\modules\iblock\admin\iblock_element_edit.php
от
//START of the custom form
до
//END of the custom form
Не понял где в файле написано как система выводит НЕ пользовательскую форму.
спросил 22 Янв, 14 от SpySpirit (160 баллов)

1 Ответ

00 голосов
Получилось. Опишу весь процесс создания форм редактирования элементов.
Копируем bitrix\modules\iblock\admin\iblock_element_edit.php
в /bitrix/php_interface/include/iblock_element_edit_my.php
и в нашем новом файле оставляем строки от
Код
//START of the custom form
до
Код
//END of the custom form
и редактируем как нам нужно.
Как называть поля ввода в форме (name="???";)?
В исходном коде поля выводятся так
Код
<?_ShowPropertyField('PROP['.$prop_fields["ID"].']', $prop_fields, $prop_fields["VALUE"], (($historyId <= 0) && (!$bVarsFromForm) && ($ID<=0)), $bVarsFromForm, 50000, $tabControl->GetFormName(), $bCopy);?>
Это и "name" и "value"... все сразу.

Функция _ShowPropertyField находится в
bitrix\modules\iblock\admin_tools.php
Смотрим в ней как поля в форме называть...

В настройках инфоблока данный файл указываем в качестве "Файл с формой редактирования элемента".

Смотрим что получилось...
Теперь поля не отсортированы. И кнопки "Настроить" нет.
Не хочется в iblock_element_edit_my.php добавлять механизм сортировки и отказываться от стандартной функции?

Тогда добавим такой код:
Код
// Toolbar "Настроить"
$aMenu = array();
if (false == ((true == defined('BT_UT_AUTOCOMPLETE')) && (1 == BT_UT_AUTOCOMPLETE)))
{
   $link = DeleteParam(array("mode"));
   $link = $GLOBALS["APPLICATION"]->GetCurPage()."?mode=settings".($link <> ""? "&".$link:"");
   $aMenu[] = array(
      "TEXT"=>GetMessage("IBEL_E_SETTINGS"),
      "TITLE"=>GetMessage("IBEL_E_SETTINGS_TITLE"),
      "LINK"=>"jav * ascript:".$tabControl->GetName().".ShowSettings('".urlencode($link)."')",
      "ICON"=>"btn_settings",
   );
   
   $context = new CAdminContextMenu($aMenu);
   $context->Show();
}
Проверяем... Теперь появился еще один Toolbar с одним пунктом "Настроить".
Хотелось бы конечно в уже существующий добавить, но увы...
Уж лучше так чем совсем никак.

P.S.
В iblock_element_edit.php создаются вкладки
Код
$tabControl = new CAdminForm($bCustomForm? "tabControl": "form_element_".$IBLOCK_ID, $aTabs);
(см. bitrix\modules\main\interface\admin_lib.php)
...
поля
Код
tabControl->AddCheckBoxField("ACTIVE", GetMessage("IBLOCK_FIELD_ACTIVE").":", false, "Y", $str_ACTIVE=="Y");
...
и отображаются
Код
$tabControl->Show();
CAdminForm->Show() сортирует вкладки и поля перед выводом.

Вот еще полезная информация (как в админку свой функционал добавлять):
http://dev.1c-bitrix.ru/api_help/main/general/admin.section/rubric_edit.php
ответил 15 Май, 14 от SpySpirit (160 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
1 ответ
спросил 04 Май, 13 от OLEGI4 (300 баллов)
0 голосов
8 ответов
0 голосов
1 ответ
0 голосов
7 ответов
спросил 25 Июль, 13 от Kimimaro (180 баллов)