Пример своей страницы в админке - amel-post/bitrix.help GitHub Wiki

<?
// подключим все необходимые файлы:
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); // первый общий пролог

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/include.php"); // инициализация модуля
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/prolog.php"); // пролог модуля

// подключим языковой файл
//IncludeModuleLangFile(__FILE__);

// получим права доступа текущего пользователя на модуль
$POST_RIGHT = $APPLICATION->GetGroupRight("iblock");
// если нет прав - отправим к форме авторизации с сообщением об ошибке
if ($POST_RIGHT == "D")
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

$aTabs = array(
    array("DIV" => "prices_import", "TAB" => 'Импорт цен', "ICON"=>"main_user_edit", "TITLE"=>'Импорт цен'),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);

$ID = intval($ID);		// идентификатор редактируемой записи
$messages = null;		// сообщение об ошибке
$bVarsFromForm = false; // флаг "Данные получены с формы", обозначающий, что выводимые данные получены с формы, а не из БД.


// ******************************************************************** //
//                ОБРАБОТКА ИЗМЕНЕНИЙ ФОРМЫ                             //
// ******************************************************************** //

if(
    $REQUEST_METHOD == "POST" // проверка метода вызова страницы
    &&
    ($save!="" || $apply!="") // проверка нажатия кнопок "Сохранить" и "Применить"
    &&
    $POST_RIGHT=="W"          // проверка наличия прав на запись для модуля
    &&
    check_bitrix_sessid()     // проверка идентификатора сессии
)
{
    $request = \Bitrix\Main\Context::getCurrent()->getRequest();
    $file = $request->getFile('apartments_csv_file');
    $items = array();
    if (($handle = fopen($file['tmp_name'], "r")) !== FALSE)
    {
        while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
        {
            mb_convert_variables('UTF-8', 'Windows-1251', $data);
            $items[] = $data;
        }
        fclose($handle);
    }

    try
    {
        $messages = Apartments::importPrices($items);
    }
    catch (\Exception $e)
    {
        $messages['ERROR_MESSAGES'] = $e->getMessage();
    }


}


// ******************************************************************** //
//                ВЫВОД ФОРМЫ                                           //
// ******************************************************************** //
$APPLICATION->SetTitle('Импорт цен из CSV  (1-я очередь)');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); // второй общий пролог

// вывод административного меню
$aMenu = array(
    array(
        "TEXT"=>'Вернуться в раздел квартир',
        "TITLE"=>'Вернуться в раздел квартир',
        "LINK"=>'/bitrix/admin/iblock_list_admin.php?IBLOCK_ID=23&type=catalog&lang=ru&find_section_section=0',
        "ICON"=>"btn_list",
    )
);
$context = new CAdminContextMenu($aMenu);
$context->Show();


if (!empty($messages['ERROR_MESSAGES']))
{
    CAdminMessage::ShowMessage(array("MESSAGE"=>$messages['ERROR_MESSAGES'], "TYPE"=>"ERROR"));
}
elseif (!empty($messages['SUCCESS_COUNT']))
{
    CAdminMessage::ShowMessage(array("MESSAGE"=>'Импорт выполнен успешно. Обработано записей: ' . $messages['SUCCESS_COUNT'], "TYPE"=>"OK"));
}

?>

<form method="POST" Action="<?echo $APPLICATION->GetCurPage()?>" ENCTYPE="multipart/form-data" name="post_form">
<?
echo bitrix_sessid_post();
$tabControl->Begin();
$tabControl->BeginNextTab();
?>
    <tr>
        <td width="20%">Импортировать из CSV:</td>
        <td width="80%"><input type="file" name="apartments_csv_file" /></td>
    </tr>

<?
$tabControl->Buttons(
    array(
        "disabled"=>($POST_RIGHT<"W"),
        "back_url"=>"rubric_admin.php?lang=".LANG,
    )
);
$tabControl->End();

?>
<?echo BeginNote();?>
    <?echo "Загрузите файл с ценами квартир и нажмите \"Сохранить\"<br>"?>
    <?echo "Файл должен иметь формат CSV и содержать только 4 столбца: №ПомСтроит, Состояние, ЦенаКвМ, Цквартиры.<br>"?>
    <?echo "Важно, чтобы столбцы имели именно такие названия и располагались в этом порядке.<br>"?>
    <?echo "№ПомСтроит - номер квартиры<br>"?>
    <?echo "Состояние - свободно/занято<br>"?>
    <?echo "ЦенаКвМ - цена за кв. м<br>"?>
    <?echo "Цквартиры - полная цена квартиры<br>"?>
    <?echo "Пример файла с ценамы можно скачать <a href=\"/upload/apart_csv_test.csv\">тут</a><br>"?>
<?echo EndNote();?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>
⚠️ **GitHub.com Fallback** ⚠️