%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/lib/tradingplatform/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/lib/tradingplatform/catalogsectiontab.php |
<?
namespace Bitrix\Sale\TradingPlatform;
use \Bitrix\Main\SystemException;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
/**
* Class CatalogSectionTab
* Work with iblock section / catalog category.
* @package Bitrix\Sale\TradingPlatform
*/
class CatalogSectionTab
{
protected static $tabHandlers = array();
function OnInit($args)
{
$result = array();
$res = \Bitrix\Sale\TradingPlatformTable::getList(array(
'select' => array("ID", "CODE", "CATALOG_SECTION_TAB_CLASS_NAME"),
'filter' => array('=ACTIVE' => 'Y'),
));
while($arRes = $res->fetch())
{
if(strlen($arRes["CATALOG_SECTION_TAB_CLASS_NAME"]) > 0 && class_exists($arRes["CATALOG_SECTION_TAB_CLASS_NAME"]))
{
$tabHandler = new $arRes["CATALOG_SECTION_TAB_CLASS_NAME"];
if(!($tabHandler instanceof TabHandler))
throw new SystemException("TabHandler (".$arRes["CODE"].") has wrong instance. (".__CLASS__."::".__METHOD__.")");
self::$tabHandlers[$arRes["CODE"]] = $tabHandler;
}
}
if(!empty(self::$tabHandlers))
{
//todo: iblock filter
$result = array(
"TABSET" => "SALE_TRADING_PLATFORM",
"GetTabs" => array("\\Bitrix\\Sale\\TradingPlatform\\CatalogSectionTab", "GetTabs"),
"ShowTab" => array("\\Bitrix\\Sale\\TradingPlatform\\CatalogSectionTab", "ShowTab"),
"Action" => array("\\Bitrix\\Sale\\TradingPlatform\\CatalogSectionTab", "Action"),
"Check" => array("\\Bitrix\\Sale\\TradingPlatform\\CatalogSectionTab", "Check"),
);
}
return $result;
}
function Action($arArgs)
{
/** @var \CMain $APPLICATION*/
global $APPLICATION;
$result = true;
foreach(self::$tabHandlers as $handler)
{
/** @var TabHandler $handler*/
try
{
$result = $handler->action($arArgs);
}
catch(SystemException $e)
{
$APPLICATION->ThrowException($e->getMessage());
$result = false;
break;
}
}
return $result;
}
function Check($arArgs)
{
/** @var \CMain $APPLICATION*/
global $APPLICATION;
$result = true;
foreach(self::$tabHandlers as $handler)
{
/** @var TabHandler $handler*/
try
{
$result = $handler->check($arArgs);
}
catch(SystemException $e)
{
$APPLICATION->ThrowException($e->getMessage());
$result = false;
break;
}
}
return $result;
}
function GetTabs($arArgs)
{
$arTabs = array(
array(
"DIV" => "edit_trading_platforms",
"TAB" => Loc::getMessage('SALE_TRADING_PLATFORMS_TAB'),
"ICON" => "sale",
"TITLE" => Loc::getMessage('SALE_TRADING_PLATFORMS_TAB_TITLE'),
),
);
return $arTabs;
}
// arArgs = array("ID" => $ID, "IBLOCK"=>$arIBlock, "IBLOCK_TYPE"=>$arIBTYPE)
function ShowTab($divName, $arArgs, $bVarsFromForm)
{
if ($divName == "edit_trading_platforms")
{
$result = "";
foreach(self::$tabHandlers as $tradingPlatformCode => $handler)
{
/** @var TabHandler $handler*/
$header = '<tr class="heading" id="tr_'.$tradingPlatformCode.'"><td colspan="2">'.$handler->name.'</td></tr>';
$body = $handler->showTabSection($divName, $arArgs, $bVarsFromForm);
if(strlen($body) <= 0)
$body = '<tr><td colspan="2">'.Loc::getMessage('SALE_TRADING_PLATFORMS_NOT_ACTIVE').' ('.$siteId = $arArgs["IBLOCK"]["LID"].')</td></tr>';
$result .= $header.$body;
}
echo $result;
}
}
}