Документация Битрикс: |
- /bitrix/modules - Модули системы (как штатные, так и загруженные из Marketplace)
- /local/modules - пользовательские модули, но можно и в /bitrix/modules
Свой модуль
nikaverro.test
где
- nikaverro - мой код партнера
- test - название модуля
Файлы установки
папка /local/modules/nikaverro.test/install
в ней
- /components/ - папка со своими компонентами (необязательно)
- /js/ - папка с js скриптами для админки (необязательно)
- /panel/ - папка с css скриптами для админки (необязательно)
- index.php - с нашим классом, который расширяет битриксовский CModule
- version.php - дата версии и номер версии модуля
функции битрикса для работы с файловой системой сайта: DeleteDirFilesEx CopyDirFiles |
<?php use Bitrix\Main\Localization\Loc; use Bitrix\Main\ModuleManager; Loc::loadMessages(__FILE__); class nikaverro_test extends CModule { public $MODULE_ID = 'nikaverro.test'; public $MODULE_VERSION; public $MODULE_VERSION_DATE; public $MODULE_NAME; public $MODULE_DESCRIPTION; public $PARTNER_URI; public $MODULE_GROUP_RIGHTS; public function __construct() { $arModuleVersion = []; include __DIR__ . '/version.php'; if (is_array($arModuleVersion) && array_key_exists('VERSION', $arModuleVersion)) { $this->MODULE_VERSION = $arModuleVersion['VERSION']; $this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE']; } $this->MODULE_NAME = Loc::getMessage('nikaverro_test_module_name'); $this->MODULE_DESCRIPTION = Loc::getMessage('nikaverro_test_module_description'); $this->PARTNER_NAME = Loc::getMessage('nikaverro_test_partner_name'); $this->PARTNER_URI = Loc::getMessage('nikaverro_test_partner_uri'); $this->MODULE_GROUP_RIGHTS = 'N'; } public function InstallDB($arParams = []) //создание своих таблиц в БД { global $DB, $APPLICATION; //проверяем, есть ли таблицы $errors = false; //создаем таблицы, если они еще не существуют $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/db/".strtolower($DB->type)."/install.sql"); if (!empty($errors)){ $APPLICATION->ThrowException(implode("", $errors)); return false; } return true; } public function UnInstallDB($arParams = []) //удаление своих таблиц в БД { global $DB, $DBType, $APPLICATION; if(array_key_exists("SAVEDATA", $arParams) and $arParams["SAVEDATA"] == "N"){ //удаляем, если параметр сохранить = "N" $errors = false; $errors = $DB->RunSQLBatch($_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/db/".strtolower($DB->type)."/uninstall.sql"); if (!empty($errors)){ $APPLICATION->ThrowException(implode("", $errors)); return false; } } return true; } public function InstallFiles($arParams = []) { if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/admin")){ if ($dir = opendir($p)){ while (false !== $item = readdir($dir)){ if ($item == ".." || $item == "." || $item == "menu.php") continue; file_put_contents($file = $_SERVER['DOCUMENT_ROOT'].'/bitrix/admin/'.$this->MODULE_ID.'_'.$item, '<'.'? require($_SERVER["DOCUMENT_ROOT"]."/local/modules/'.$this->MODULE_ID.'/admin/'.$item.'");?'.'>'); } closedir($dir); } } if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/components")){ if ($dir = opendir($p)){ while (false !== $item = readdir($dir)){ if ($item == ".." || $item == ".") continue; CopyDirFiles($p."/".$item, $_SERVER["DOCUMENT_ROOT"]."/bitrix/components/".$item, $ReWrite = True, $Recursive = True); } closedir($dir); } } //создаем папку для собственных нужд if(is_dir($_SERVER["DOCUMENT_ROOT"]."/upload/testfolder")){ //ставим права chmod($_SERVER["DOCUMENT_ROOT"]."/upload/testfolder", 0755); } else{ mkdir($_SERVER["DOCUMENT_ROOT"]."/upload/testfolder", 0755, true); } //копируем стили if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/panel")){ if ($dir = opendir($p)){ while (false !== $item = readdir($dir)){ if ($item == ".." || $item == ".") continue; CopyDirFiles($p."/".$item, $_SERVER["DOCUMENT_ROOT"]."/bitrix/themes/.default/".$this->MODULE_ID."/".$item, $ReWrite = True, $Recursive = True); } closedir($dir); } } //копируем js if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/js")){ if ($dir = opendir($p)){ while (false !== $item = readdir($dir)){ if ($item == ".." || $item == ".") continue; CopyDirFiles($p."/".$item, $_SERVER["DOCUMENT_ROOT"]."/bitrix/js/".$this->MODULE_ID."/".$item, $ReWrite = True, $Recursive = True); } closedir($dir); } } return true; } public function UnInstallFiles() { //удаляем папку с админ скриптами if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/admin")) { if ($dir = opendir($p)) { while (false !== $item = readdir($dir)) { if ($item == ".." || $item == ".") continue; unlink($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/".$this->MODULE_ID."_".$item); } closedir($dir); } } //удаляем компоненты if (is_dir($p = $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/components")) { if ($dir = opendir($p)) { while (false !== $item = readdir($dir)) { if ($item == ".." || $item == "." || !is_dir($p0 = $p."/".$item)) continue; $dir0 = opendir($p0); while (false !== $item0 = readdir($dir0)) { if ($item0 == ".." || $item0 == ".") continue; DeleteDirFilesEx("/bitrix/components/".$item."/".$item0); } closedir($dir0); } closedir($dir); } } //удаляем папку if(is_dir($_SERVER["DOCUMENT_ROOT"]."/upload/testfolder")){ DeleteDirFilesEx("/upload/testfolder"); } //удаляем стили if(is_dir($_SERVER["DOCUMENT_ROOT"]."/bitrix/themes/.default/".$this->MODULE_ID)){ DeleteDirFilesEx("/bitrix/themes/.default/".$this->MODULE_ID); } //удаляем js if(is_dir($_SERVER["DOCUMENT_ROOT"]."/bitrix/js/".$this->MODULE_ID)){ DeleteDirFilesEx("/bitrix/js/".$this->MODULE_ID); } return true; } public function InstallEvents() { //RegisterModuleDependences("main", "OnBuildGlobalMenu", $this->MODULE_ID, "CAlfateamWordstat", "OnBuildGlobalMenu"); //старый вариант $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->registerEventHandler( "main", "OnProlog", $this->MODULE_ID, "nikaverro\\test\\MyClass", "onProlog" ); return true; } public function UnInstallEvents() { //UnRegisterModuleDependences("main", "OnBuildGlobalMenu", $this->MODULE_ID, "CAlfateamWordstat", "OnBuildGlobalMenu"); //старый вариант $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->unRegisterEventHandler( "main", "OnProlog", $this->MODULE_ID, "nikaverro\\test\\MyClass", "onProlog" ); return true; } public function RegisterAgents() { $allowedAgents = [ '\\nikaverro\\test\\MyClass::agent()' => [ "MODULE_ID" => $this->MODULE_ID, "NAME" => '\\nikaverro\\test\\MyClass::agent();', "AGENT_INTERVAL" => 300, "IS_PERIOD" => "Y" ] ]; $needToInstall = []; $res = CAgent::GetList([], ["MODULE_ID" => $this->MODULE_ID]); while ($arAgent = $res->Fetch()) { if (array_key_exists($arAgent["NAME"], $allowedAgents)) { unset($allowedAgents[$arAgent["NAME"]]); } } $agentObject = new \CAgent(); foreach ($allowedAgents as $agent) { $agentObject->Add($agent); } } public function UnRegisterAgents() { \CAgent::RemoveModuleAgents($this->MODULE_ID); } public function DoInstall() { //$this->InstallFiles(); $this->InstallDB(); //$this->InstallEvents(); //$this->RegisterAgents(); ModuleManager::registerModule($this->MODULE_ID); } /*public function DoUninstall() //удаляем модуль за 1 шаг { //$this->UnInstallFiles(); //$this->UnInstallEvents(); //$this->UnRegisterAgents(); ModuleManager::unRegisterModule($this->MODULE_ID); }*/ public function DoUninstall() //удаляем модуль за 2 шага - спрашиваем, сохранить ли таблицы { global $APPLICATION, $step; $step = IntVal($step); if($step<2){ $APPLICATION->IncludeAdminFile(Loc::getMessage('nikaverro_test_partner_name'), $_SERVER["DOCUMENT_ROOT"]."/local/modules/".$this->MODULE_ID."/install/unstep1.php"); } elseif(($step == 2) and (array_key_exists("nextstep", $_REQUEST))){ //$this->UnInstallFiles(); //$this->UnInstallEvents(); //$this->UnRegisterAgents(); ModuleManager::unRegisterModule($this->MODULE_ID); $this->UnInstallDB(["SAVEDATA" => $_REQUEST["savedata"]]); } } } |
<?php $arModuleVersion = [ 'VERSION' => '1.0.0', 'VERSION_DATE' => '2024-04-12', ]; |
install/unstep.php - может отсутствовать
install/unstep1.php
<?if(!check_bitrix_sessid()) return; use Bitrix\Main\Localization\Loc; IncludeModuleLangFile(__FILE__); echo CAdminMessage::ShowNote(Loc::getMessage('nikaverro_test_partner_name')); ?> <form action="<?=$APPLICATION->GetCurPage(); ?>"> <?=bitrix_sessid_post(); ?> <input type="hidden" name="step" value="2"> <input type="hidden" name="id" value="nikaverro.test"> <input type="hidden" name="uninstall" value="Y"> <p><b><?=GetMessage("SAVE_OR_DELETE_DATA")?>:</b><Br> <input type="radio" name="savedata" value="Y" CHECKED><?=GetMessage("SAVE")?><Br> <input type="radio" name="savedata" value="N"><?=GetMessage("DELETE_")?><Br> </p> <input type="submit" name="nextstep" value="<?=GetMessage("NEXT")?>"> <input type="submit" name="cancel" value="<?=GetMessage("CANCEL")?>"> </form> |
install/db/mysql/install.sql
создаем свои 2 таблицы
create table if not exists n_words( ID INT(255) auto_increment, WORD VARCHAR(100) NOT NULL, PROFILE_ID INT(10) NOT NULL, SORT INT(10) DEFAULT 500, primary key (ID) ); create table if not exists n_profiles( PROFILE_ID INT(10) auto_increment, NAME VARCHAR(100) NOT NULL, DATE_CREATE DATE NOT NULL, CREATED_BY SMALLINT(4)NOT NULL, DATE_MODIFIED DATE NOT NULL, MODIFIED_BY SMALLINT(4)NOT NULL, AGENT_START DATETIME, AGENT_EXISTS BOOLEAN DEFAULT 0, REGIONS VARCHAR(8000), PERIODICITY SMALLINT(4)NOT NULL, ACTIVE BOOLEAN DEFAULT 0, IBLOCK BOOLEAN DEFAULT 0, IBLOCK_ID SMALLINT(4) DEFAULT 0, IBLOCK_FROM VARCHAR(100), IBLOCK_TO VARCHAR(100), primary key (PROFILE_ID) ); |
install/db/mysql/uninstall.sql
удаляем таблицы
drop table n_words; drop table n_profiles; |
Языковые файлы (Ланги)
/local/modules/nikaverro.test/lang/
пример /local/modules/nikaverro.test/lang/ru/install/index.php
$MESS["nikaverro_test_module_name"] = "Тестовый модуль"; $MESS["nikaverro_test_module_description"] = "Описание тестового модуля"; $MESS["nikaverro_test_partner_name"] = 'Вероника Малышева'; $MESS["nikaverro_test_partner_uri"] = "https://nikaverro.ru/?utm_source=nikaverro.test&utm_medium=modules"; $MESS["nikaverro_test_delete_step1"] = "Удаление модуля шаг1"; |
/bitrix/admin/partner_modules.php?lang=ru
Перед удалением вопрос
Настройки модуля
TEST_OPTION1, TEST_OPTION2
option.php
<? use Bitrix\Main\Config\Option; use Bitrix\Main\Context; // если администратор if($USER->IsAdmin() && CModule::IncludeModule('nikaverro.test')): $request = Context::getCurrent()->getRequest(); // формируем объект запроса // если переданы данные из формы if($request->getRequestMethod() == 'POST' && !empty($request->getPost('apply')) && check_bitrix_sessid()){ Option::set("nikaverro.test", "TEST_OPTION1", $request->getPost("TestOption1")); Option::set("nikaverro.test", "TEST_OPTION2", $request->getPost("TestOption2")); } // табы $arTabs = array( array( 'DIV' => 'MainSettings', 'TAB' => 'Первая вкладка', 'TITLE' => 'Основные настройки Тестового модуля' ), array( 'DIV' => 'SecondSettings', 'TAB' => 'Вторая вкладка', 'TITLE' => 'Дополнительные настройки Тестового модуля' ), ); // инициализируем вывод табов $tabControl = new CAdminTabControl('tabControl', $arTabs); $tabControl->Begin(); ?> <form method="post" name="webhooks" action="<? echo $APPLICATION->GetCurPage() ?>?mid=<?=urlencode($mid)?>&lang=<? echo LANGUAGE_ID ?>"> <?=bitrix_sessid_post();?> <?$tabControl->BeginNextTab();?> <tr> <td valign="middle" width="40%" class="adm-detail-content-cell-l"> опция 1 </td> <td valign="middle" width="60%" class="adm-detail-content-cell-r"> <?$arOptionVariants = [1,2,3]?> <select name="TestOption1" > <?foreach ($arOptionVariants as $option):?> <option <?=($option == Option::get("nikaverro.test", "TEST_OPTION1"))?"selected":""?> value="<?=$option?>"><?=$option?></option> <?endforeach;?> </select> </td> </tr> <?$tabControl->BeginNextTab();?> <tr> <td valign="middle" width="40%" class="adm-detail-content-cell-l"> опция 2 </td> <td valign="middle" width="60%" class="adm-detail-content-cell-r"> <input value="<?=Option::get("nikaverro.test", "TEST_OPTION2")?>" type="text" name="TestOption2" style="width: 50px;"> </td> </tr> <?$tabControl->Buttons(); bitrix_sessid_post(); ?> <input type="submit" name="apply" value="<?=GetMessage('MAIN_SAVE')?>" title="<?=GetMessage('MAIN_OPT_SAVE_TITLE')?>" class="adm-btn-save"> <?$tabControl->End();?> </form> <?endif; |
default_option.php
<? $nikaverro_test_default_option = [ "TEST_OPTION1" => "1", "TEST_OPTION2" => "test2", ]; |
Свои классы и логика
Из документации Битрикса: для автоматического подключения располагаем в /bitrix/modules/#namemodule#/lib (или /local/modules/#namemodule#/lib )
|
/local/modules/nikaverro.test/lib/myclass.php
<? namespace nikaverro\test; use Bitrix\Main\Config\Option; class MyClass{ public static function Hello(){ echo "Hello World!"; echo Option::get("nikaverro.test", "TEST_OPTION1"); } public static function OnProlog(){ } public static function agent($i = 0){ $i++; return '\\nikaverro\\test\\MyClass::agent('.$i.');'; } } |
вызов класса
if(CModule::IncludeModule('nikaverro.test')){ nikaverro\test\MyClass::Hello(); } |
/local/modules/nikaverro.test/admin/
файл меню /local/modules/nikaverro.test/admin/menu.php
- global_menu_content - раздел "Контент"
- global_menu_marketing - раздел "Маркетинг"
- global_menu_store - раздел "Магазин"
- global_menu_services - раздел "Сервисы"
- global_menu_statistics - раздел "Аналитика"
- global_menu_marketplace - раздел "Marketplace"
- global_menu_settings - раздел "Настройки"
<? $MODULE_ID = "nikaverro.test"; $aMenu = [ "parent_menu" => "testmenu",//global_menu_services, "section" => $MODULE_ID."_Тестовый админский блок", "sort" => 50, "text" => "Тестовый админский блок (".$MODULE_ID.")", "title" => "Тестовый админский блок", "url" => "javascript:void(0)", "icon" => "fav_menu_icon", "page_icon" => "", "items_id" => $MODULE_ID."_items", "more_url" => [], "items" => [] ]; $aMenu["items"][] = [ "text" => "Админская страница 1", "url" => $MODULE_ID."_"."page1.php", "icon" => "form_menu_icon", "page_icon" => "form_page_icon", "more_url" => [$MODULE_ID."_"."page1_add.php"], "title" => "Админская страница" ]; $aMenu["items"][] = [ "text" => "Админская страница 2", "url" => $MODULE_ID."_"."page2.php", "icon" => "form_menu_icon", "page_icon" => "form_page_icon", "more_url" => [], "title" => "Админская страница 2" ]; return $aMenu; |
<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); $APPLICATION->SetTitle("Заголовок страницы 1"); global $DB; $tableProfiles = "n_profiles"; $tableWords = "n_words"; $moduleId = "nikaverro.test"; $sTableID = "tbl_profile"; // ID таблицы $oSort = new CAdminSorting($sTableID, "PROFILE_ID", "desc"); // объект сортировки $lAdmin = new CAdminList($sTableID, $oSort); // основной объект списка // ******************************************************************** // // ПРОВЕРКА ПРАВ ДОСТУПА // // ******************************************************************** // $POST_RIGHT = $APPLICATION->GetGroupRight($moduleId); if ($POST_RIGHT == "D"){ $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } // ******************************************************************** // // ОБРАБОТКА ДЕЙСТВИЙ НАД ЭЛЕМЕНТАМИ СПИСКА // // ******************************************************************** // // сохранение отредактированных элементов if($lAdmin->EditAction() && $POST_RIGHT=="W") { // пройдем по списку переданных элементов foreach($FIELDS as $profileid=>$newarFields) { if(!$lAdmin->IsUpdated($profileid)) continue; // сохраним изменения каждого элемента $profileid = IntVal($profileid); $newarFields["DATE_MODIFIED"] = date("d.m.Y"); $newarFields["MODIFIED_BY"] = $USER->GetID(); if($newarFields['ACTIVE'] == "Y") { $newarFields["ACTIVE"] = 1; } else{ $newarFields["ACTIVE"] = 0; } $strUpdate = $DB->PrepareUpdate($tableProfiles, $newarFields); $DB->Query("UPDATE ".$tableProfiles." SET ".$strUpdate." WHERE PROFILE_ID=".$profileid, true); } } if(($arProfileId = $lAdmin->GroupAction()) && $POST_RIGHT=="W"){ // если выбрано "Для всех элементов" if($_REQUEST['action_target']=='selected'){ $rsData = $DB->Query("SELECT * FROM ".$tableProfiles); while($arFields = $rsData->GetNext()){ $arProfileId[] = $arFields['PROFILE_ID']; } } // пройдем по списку элементов foreach($arProfileId as $profileid){ if(strlen($profileid)<=0){ continue; } $profileid = IntVal($profileid); // для каждого элемента совершим требуемое действие if($_REQUEST['action'] == "delete"){ // удаление $DB->StartTransaction(); if(!$DB->Query("DELETE FROM ".$tableProfiles." WHERE PROFILE_ID=".$profileid)){ $message .= 'Error!'; $DB->Rollback(); } else{ $DB->Commit(); $DB->StartTransaction(); if(!$DB->Query("DELETE FROM ".$tableWords." WHERE PROFILE_ID=".$profileid)){ $message .= 'Error!'; $DB->Rollback(); } else{ $DB->Commit(); } } } elseif(($_REQUEST['action'] == "active")or($_REQUEST['action'] == "deactive")){ $arFields = array(); if($_REQUEST['action'] == "active") { $arFields["ACTIVE"] = 1; } else{ $arFields["ACTIVE"] = 0; } $strUpdate = $DB->PrepareUpdate($tableProfiles, $arFields); $DB->Query("UPDATE ".$tableProfiles." SET ".$strUpdate." WHERE PROFILE_ID=".$profileid, true); } } } // ******************************************************************** // // ВЫБОРКА ЭЛЕМЕНТОВ СПИСКА // // ******************************************************************** // $rsData = $DB->Query("SELECT * FROM ".$tableProfiles." ORDER BY ".$by." ".$order); $rsData = new CAdminResult($rsData, $sTableID); // аналогично CDBResult инициализируем постраничную навигацию. $rsData->NavStart(); // отправим вывод переключателя страниц в основной объект $lAdmin $lAdmin->NavText($rsData->GetNavPrint(GetMessage("rub_nav"))); // ******************************************************************** // // ПОДГОТОВКА СПИСКА К ВЫВОДУ // // ******************************************************************** // //сформируем заголовки таблицы $headers = array(); $headers [] = array( "id" =>"PROFILE_ID", "content" =>"ID", "sort" =>"PROFILE_ID", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"NAME", "content" =>GetMessage("NAME"), "sort" =>"NAME", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"ACTIVE", "content" =>GetMessage("ACTIVE"), "sort" =>"ACTIVE", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"AGENT_START", "content" =>GetMessage("NEXT_AGENT"), "sort" =>"AGENT_START", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"REGIONS", "content" => GetMessage("REGIONS"), "sort" =>"REGIONS", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"PERIODICITY", "content" =>GetMessage("PERIODICITY"), "sort" =>"PERIODICITY", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"AGENT_EXISTS", "content" =>GetMessage("AGENT_EXISTS"), "sort" =>"AGENT_EXISTS", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"DATE_CREATE", "content" =>GetMessage("DATE_CREATE"), "sort" =>"DATE_CREATE", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"CREATED_BY", "content" =>GetMessage("CREATED_BY"), "sort" =>"CREATED_BY", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"DATE_MODIFIED", "content" =>GetMessage("DATE_MODIFIED"), "sort" =>"DATE_MODIFIED", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"MODIFIED_BY", "content" => GetMessage("MODIFIED_BY"), "sort" =>"MODIFIED_BY", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"IBLOCK", "content" => "Источник слов".GetMessage("WORDS_RESOURCE"), "sort" =>"IBLOCK", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"IBLOCK_ID", "content" =>"IBLOCK_ID".GetMessage("IBLOCK_ID"), "sort" =>"IBLOCK_ID", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"IBLOCK_FROM", "content" =>"поле FROM".GetMessage("IBLOCK_FROM"), "sort" =>"IBLOCK_FROM", "align" =>"right", "default" =>true ); $headers [] = array( "id" =>"IBLOCK_TO", "content" =>"поле ТО".GetMessage("IBLOCK_TO"), "sort" =>"IBLOCK_TO", "align" =>"right", "default" =>true ); $lAdmin->AddHeaders($headers); //получим данные для таблицы while($arRes = $rsData->NavNext(true, "f_")){ $arRes ["REGIONS"] = unserialize($arRes ["REGIONS"]); //$arRes["REGIONS"] = implode(",", $arRes["REGIONS"]); $arRes["REGIONS"] = $arRes["REGIONS"]["NAME"]; if($arRes ["ACTIVE"] == '1'){ $arRes ["ACTIVE"] = 'Y'; } else{ $arRes ["ACTIVE"] = 'N'; } if($arRes["AGENT_EXISTS"] == 1){ $arRes["AGENT_EXISTS"] = GetMessage("YES"); } else{ $arRes["AGENT_EXISTS"] = GetMessage("NO"); } if($arRes["IBLOCK"] == 0){ $arRes["IBLOCK"] = "простой"; } else{ $arRes["IBLOCK"] = "инфоблок"; } $arRes["AGENT_START"] = ConvertTimeStamp(MakeTimeStamp($arRes["AGENT_START"], "YYYY-MM-DD HH:MI:SS"), 'FULL'); $arRes["DATE_MODIFIED"] = ConvertTimeStamp(MakeTimeStamp($arRes["DATE_MODIFIED"], "YYYY-MM-DD"), 'SHORT'); $arRes["DATE_CREATE"] = ConvertTimeStamp(MakeTimeStamp($arRes["DATE_CREATE"], "YYYY-MM-DD"), 'SHORT'); $row =& $lAdmin->AddRow($f_PROFILE_ID, $arRes); $row->AddInputField("NAME", array("size"=>20)); $row->AddInputField("PERIODICITY", array("size"=>20)); $row->AddCheckField("ACTIVE"); // сформируем контекстное меню $arActions = array(); // редактирование элемента $arActions[] = array( "ICON"=>"edit", "DEFAULT"=>true, "TEXT"=>GetMessage("EDIT"), "ACTION"=>$lAdmin->ActionRedirect($moduleId."_profile_edit.php?profileid=".$f_PROFILE_ID) ); // удаление элемента if ($POST_RIGHT>="W") $arActions[] = array( "ICON"=>"delete", "TEXT"=>GetMessage("DELETE_"), "ACTION"=>"if(confirm('".GetMessage("DELETE_")."')) ".$lAdmin->ActionDoGroup($f_PROFILE_ID, "delete") ); // вставим разделитель $arActions[] = array("SEPARATOR"=>true); // применим контекстное меню к строке $row->AddActions($arActions); } // резюме таблицы $lAdmin->AddFooter( array( array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()), // кол-во элементов array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"), // счетчик выбранных элементов ) ); // групповые действия $lAdmin->AddGroupActionTable(Array( "delete"=>"", // удалить выбранные профили "active"=>GetMessage("DO_ACTIVE"), // активировать выбранные профили "deactive"=>GetMessage("DO_DEACTIVE"), // деактивировать выбранные профили )); $aContext = array( array( "TEXT"=>GetMessage("ADD"), "LINK"=>$moduleId."_page2.php?lang=".LANG, "TITLE"=>GetMessage("ADD"), "ICON"=>"btn_new", ), ); // и прикрепим его к списку $lAdmin->AddAdminContextMenu($aContext); // ******************************************************************** // // ВЫВОД // // ******************************************************************** // // альтернативный вывод $lAdmin->CheckListMode(); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $lAdmin->DisplayList(); ?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?> |