Your IP : 3.129.23.166
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
use Bitrix\Sale\Delivery;
use Bitrix\Main\Page\Asset;
use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\Delivery\Services;
use Bitrix\Sale\Delivery\ExtraServices;
use Bitrix\Currency;
use \Bitrix\Sale\Helpers\Admin\BusinessValueControl;
Loc::loadMessages(__FILE__);
\Bitrix\Main\Loader::includeModule('sale');
$selfFolderUrl = $adminPage->getSelfFolderUrl();
$listUrl = $selfFolderUrl."sale_delivery_service_list.php?lang=".LANGUAGE_ID;
$listUrl = $adminSidePanelHelper->editUrlToPublicPage($listUrl);
/** @var CMain $APPLICATION */
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(Loc::getMessage("SALE_DSE_ACCESS_DENIED"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/lib/helpers/admin/businessvalue.php');
$ID = isset($_REQUEST["ID"]) ? intval($_REQUEST["ID"]) : 0;
$srvStrError = "";
$fields = array();
$tabControlName = "tabControl";
$isItSavingProcess = ($_SERVER['REQUEST_METHOD'] == "POST" && (strlen($_POST["save"]) > 0 || strlen($_POST["apply"]) > 0)) ? true : false;
$isItReloadingProcess = ($_SERVER['REQUEST_METHOD'] == "POST" && (!isset($_POST["save"]) && !isset($_POST["apply"]))) ? true : false;
$isItViewProcess = $_SERVER['REQUEST_METHOD'] != "POST";
$classNamesList = Services\Manager::getHandlersList();
$disableButtonsFlag = false;
$backUrlReq = !empty($_REQUEST["back_url"]) ? str_replace("mode=list", "", $_REQUEST["back_url"]) : '';
$backUrlReq = $adminSidePanelHelper->editUrlToPublicPage($backUrlReq);
$backUrl = $APPLICATION->GetCurPageParam("", array("mode", "back_url"));
$backUrl = urlencode(CHTTP::urlDeleteParams($backUrl, array("IFRAME", "IFRAME_TYPE")));
/*
* Process form fields received via POST
*/
if (($isItReloadingProcess || $isItSavingProcess) && $saleModulePermissions == "W" && check_bitrix_sessid())
{
$adminSidePanelHelper->decodeUriComponent();
if(isset($_POST["ID"])) $fields["ID"] = intval($_POST["ID"]);
if(isset($_POST["CODE"])) $fields["CODE"] = trim($_POST["CODE"]);
if(isset($_POST["SORT"])) $fields["SORT"] = intval($_POST["SORT"]);
if(isset($_POST["NAME"])) $fields["NAME"] = trim($_POST["NAME"]);
if(isset($_POST["VAT_ID"])) $fields["VAT_ID"] = intval($_POST["VAT_ID"]);
if(isset($_POST["CONFIG"])) $fields["CONFIG"] = $_POST["CONFIG"];
if(isset($_POST["CURRENCY"])) $fields["CURRENCY"] = trim($_POST["CURRENCY"]);
if(isset($_POST["PARENT_ID"])) $fields["PARENT_ID"] = intval($_POST["PARENT_ID"]);
if(isset($_POST["CLASS_NAME"])) $fields["CLASS_NAME"] = trim($_POST["CLASS_NAME"]);
if(isset($_POST["DESCRIPTION"])) $fields["DESCRIPTION"] = htmlspecialcharsback(trim($_POST["DESCRIPTION"]));
if(isset($_POST["TRACKING_PARAMS"]) && is_array($_POST["TRACKING_PARAMS"]))
$fields["TRACKING_PARAMS"] = $_POST["TRACKING_PARAMS"];
else
$fields["TRACKING_PARAMS"] = array();
if(isset($_POST["CHANGED_FIELDS"]) && is_array($_POST["CHANGED_FIELDS"]))
$changedFields = $_POST["CHANGED_FIELDS"];
else
$changedFields = array();
if(isset($_POST["ACTIVE"]) && $_POST["ACTIVE"] == "Y")
$fields["ACTIVE"] = "Y";
else
$fields["ACTIVE"] = "N";
if(isset($_POST["ALLOW_EDIT_SHIPMENT"]) && $_POST["ALLOW_EDIT_SHIPMENT"] == "Y")
$fields["ALLOW_EDIT_SHIPMENT"] = "Y";
else
$fields["ALLOW_EDIT_SHIPMENT"] = "N";
$needSaveLogo = false;
$delimiter = "<br>";
if ($adminSidePanelHelper->isAjaxRequest())
{
$delimiter = "; ";
}
if(!empty($_POST["LOGOTIP_del"]) && $_POST["LOGOTIP_del"] == 'Y')
{
$fields["LOGOTIP"]["del"] = trim($_POST["LOGOTIP_del"]);
$needSaveLogo = true;
}
elseif(!empty($_FILES["LOGOTIP"]) && is_array($_FILES["LOGOTIP"]) && $_FILES["LOGOTIP"]["error"] == 0)
{
$imageFileError = CFile::CheckImageFile($_FILES["LOGOTIP"]);
if (is_null($imageFileError))
{
$fields["LOGOTIP"] = $_FILES["LOGOTIP"];
$needSaveLogo = true;
}
else
{
$srvStrError .= $imageFileError . $delimiter;
}
}
if($needSaveLogo)
{
$fields["LOGOTIP"]["MODULE_ID"] = "sale";
CFile::SaveForDB($fields, "LOGOTIP", "sale/delivery/logotip");
}
elseif(isset($_POST["LOGOTIP_FILE_ID"]) && intval($_POST["LOGOTIP_FILE_ID"]))
{
$fields["LOGOTIP"] = intval($_POST["LOGOTIP_FILE_ID"]);
}
if ($isItSavingProcess)
{
if(strlen($fields["NAME"]) <=0 )
$srvStrError .= Loc::getMessage("SALE_DSE_ERROR_NO_NAME").$delimiter;
if(strlen($fields["CLASS_NAME"]) <=0 )
$srvStrError .= Loc::getMessage("SALE_DSE_ERROR_NO_CLASS_NAME").$delimiter;
if($srvStrError == '')
{
try
{
$service = Services\Manager::createObject($fields);
if($service)
$fields = $service->prepareFieldsForSaving($fields);
else
$srvStrError = Loc::getMessage('SALE_DSE_DELIVERY_SERVICE_CREATE_ERROR');
}
catch(\Bitrix\Main\SystemException $e)
{
$srvStrError = $e->getMessage();
}
if($srvStrError == '')
{
if(isset($fields["PARENT_ID"]) && $fields["PARENT_ID"] == "new" && strlen($_POST["GROUP_NAME"]) > 0)
{
$fields["PARENT_ID"] = Services\Manager::getGroupId($_POST["GROUP_NAME"]);
if($fields["PARENT_ID"] <=0)
$srvStrError .= Loc::getMessage("SALE_DSE_ERROR_GROUP_SAVE").$delimiter;
}
unset($fields["ID"]);
if ($ID > 0)
{
$res = Services\Manager::update($ID, $fields);
if ($res->isSuccess())
{
// update some fields in children if need
if(!empty($changedFields))
{
$fieldsList = array();
if(in_array('ACTIVE', $changedFields))
{
if($fields['ACTIVE'] == 'Y')
$fieldsList['ACTIVE'] = 'Y';
else
$fieldsList['ACTIVE'] = 'N';
}
if(!empty($fieldsList))
{
Services\Manager::setChildrenFieldsValues(
$ID,
$fieldsList
);
}
}
}
else
{
$srvStrError .= Loc::getMessage("SALE_DSE_ERROR_EDIT_DELIVERY").$delimiter.implode($delimiter,$res->getErrorMessages());
}
}
else
{
$res = Services\Manager::add($fields);
if ($res->isSuccess())
{
$ID = $res->getId();
if(!$fields["CLASS_NAME"]::isInstalled())
$fields["CLASS_NAME"]::install();
}
else
{
$srvStrError .= Loc::getMessage("SALE_DSE_ERROR_ADD_DELIVERY").$delimiter.implode($delimiter,$res->getErrorMessages());
}
}
if($res->isSuccess())
{
if($service && $consumers = $service->onGetBusinessValueConsumers())
{
$businessValueControl = new BusinessValueControl('DELIVERY_'.$service->getId());
if ($businessValueControl->setMapFromPost())
{
if (!$businessValueControl->saveMap())
$srvStrError .= 'Can\'t save business values';
}
}
}
if($ID > 0)
{
//stores
unset($res);
if(isset($_POST["STORES_SHOW"]) && $_POST["STORES_SHOW"] == "Y" && isset($_POST["STORES"]["PARAMS"]["STORES"]))
{
$res = ExtraServices\Manager::saveStores(
$ID,
Bitrix\Sale\Delivery\ExtraServices\Store::getStoresIdsFromParams(
$_POST["STORES"]["PARAMS"]
)
);
}
else
{
$res = ExtraServices\Manager::setStoresUnActive($ID);
}
if(!$res->isSuccess())
$srvStrError .= implode($delimiter, $res->getErrorMessages());
}
}
}
if(strlen($srvStrError) <= 0)
{
if (strlen($_POST["apply"]) > 0)
{
$paramsToKill = array();
if(!empty($_REQUEST["RESET_TARIF_SETTINGS"]))
$paramsToKill[] = "RESET_TARIF_SETTINGS";
$redirectUrl = $APPLICATION->GetCurPageParam("ID=".$ID, $paramsToKill);
if(isset($_REQUEST[$tabControlName."_active_tab"]))
$redirectUrl .= "&".$tabControlName."_active_tab=".$_REQUEST[$tabControlName."_active_tab"];
$adminSidePanelHelper->sendSuccessResponse("apply", array("reloadUrl" => $redirectUrl,
"ID" => $ID, $tabControlName."_active_tab" => $_REQUEST[$tabControlName."_active_tab"]));
$redirectUrl = $adminSidePanelHelper->setDefaultQueryParams($redirectUrl);
LocalRedirect($redirectUrl);
}
elseif(strlen($_POST["save"]) > 0)
{
$adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $ID));
$adminSidePanelHelper->localRedirect((!empty($backUrlReq) ? $backUrlReq : $listUrl));
LocalRedirect((!empty($backUrlReq) ? $backUrlReq : "sale_delivery_service_list.php?lang=".LANGUAGE_ID
."&filter_group=".$fields["PARENT_ID"]));
}
}
else
{
$adminSidePanelHelper->sendJsonErrorResponse($srvStrError);
}
}
}
/*
* If errors or !$_POST
* Fill form fields by data from table
*/
if(empty($fields) && $ID <= 0)
{
$fields["PARENT_ID"] = $_REQUEST["PARENT_ID"] ? intval($_REQUEST["PARENT_ID"]) : 0;
$fields["PROFILE_ID"] = $_REQUEST["PROFILE_ID"] ? htmlspecialcharsbx($_REQUEST["PROFILE_ID"]) : "";
$fields["SERVICE_TYPE"] = $_REQUEST["SERVICE_TYPE"] ? htmlspecialcharsbx($_REQUEST["SERVICE_TYPE"]) : "";
$fields["CURRENCY"] = COption::GetOptionString("sale", "default_currency", "RUB");
$fields["RIGHTS"] = "YYY"; //Admin Manager Client
$fields["ACTIVE"] = "Y";
if(!empty($_REQUEST["CLASS_NAME"]))
{
if(!is_subclass_of($_REQUEST["CLASS_NAME"], 'Bitrix\Sale\Delivery\Services\Base'))
throw new \Bitrix\Main\SystemException('Class"'.$_REQUEST["CLASS_NAME"].'" is not a child of Bitrix\Sale\Delivery\Services\Base');
$fields["CLASS_NAME"] = $_REQUEST["CLASS_NAME"];
}
}
$serviceConfig = array();
$canHasProfiles = false;
$showRestrictions = true;
$showExtraServices = false;
$additionalTabs = array();
$parentService = null;
$showFieldsList = \Bitrix\Sale\Delivery\Services\Table::getMap();
/* saving or updating Extra service & restrictions */
if($ID > 0 && ($_SERVER['REQUEST_METHOD'] != "POST" || $isItSavingProcess))
{
$dbRes = \Bitrix\Sale\Delivery\Services\Table::getById($ID);
if(!$fields = $dbRes->fetch())
$srvStrError .= str_replace("#ID#", $ID, Loc::getMessage("SALE_DSE_ERROR_ID"))."<br>";
}
/* If action is copying */
if($_REQUEST["action"] == "copy")
{
$ID = 0;
unset($fields["ID"]);
}
elseif($_REQUEST["action"] == "profile_delete")
{
$idProf = isset($_REQUEST["ID_PROF"]) ? intval($_REQUEST["ID_PROF"]) : 0;
if($idProf > 0)
{
$res = Services\Manager::delete($idProf);
if(!$res->isSuccess())
$srvStrError .= implode("<br>\n", $res->getErrorMessages())."<br>";
}
else
{
$srvStrError .= Loc::getMessage("SALE_DSE_PROFILE_DEL_ERROR", array("#ID#" => $idProf))."<br>";
}
}
/* Ask parent service witch class_names for children are allowed */
if(intval($fields["PARENT_ID"]) > 0)
{
$parentService = Services\Manager::getObjectById($fields["PARENT_ID"]);
if($parentService)
$classNamesList = $parentService->getChildrenClassNames();
}
else /* get all available */
{
$classesToExclude = array(
'\Bitrix\Sale\Delivery\Services\AutomaticProfile',
'\Bitrix\Sale\Delivery\Services\Group'
);
foreach($classesToExclude as $class)
{
$key = array_search($class, $classNamesList);
if($key !== false)
unset($classNamesList[$key]);
}
}
/* if we have only one class - let's fix it */
if(empty($fields["CLASS_NAME"]) && count($classNamesList) == 1)
$fields["CLASS_NAME"] = current($classNamesList);
$isGroup = $fields["CLASS_NAME"] == '\Bitrix\Sale\Delivery\Services\Group';
$service = null;
if((isset($fields["CLASS_NAME"]) && strlen($fields["CLASS_NAME"]) > 0) || $parentService)
{
/* We must convert handler config from post as it was taken from database */
if($isItSavingProcess && strlen($srvStrError) > 0)
{
try
{
$service = Services\Manager::createObject($fields);
if($service)
$fields = $service->prepareFieldsForSaving($fields);
}
catch(\Bitrix\Main\SystemException $e){}
}
if($parentService && get_class($parentService) != 'Bitrix\Sale\Delivery\Services\Group')
{
$service = $parentService->createProfileObject($fields);
$fields['CLASS_NAME'] = get_class($service);
}
else
{
$service = Services\Manager::createObject($fields);
}
if($service)
{
$res = $service->execAdminAction();
if(!$res->isSuccess())
$srvStrError = implode("<br>\n", $res->getErrorMessages())."<br>";
$fields = $service->prepareFieldsForUsing($fields);
try
{
$serviceConfig = $service->getConfig();
}
catch(\Bitrix\Main\SystemException $e)
{
$srvStrError .= "<br>\n".$e->getMessage()."<br>";
$disableButtonsFlag = true;
}
$showRestrictions = $service->whetherAdminRestrictionsShow();
$showExtraServices = $service->whetherAdminExtraServicesShow();
$additionalTabs = $service->getAdminAdditionalTabs();
$showFieldsList = $service->getAdminFieldsList();
$canHasProfiles = $service->canHasProfiles() && ($ID > 0);
if($ID <= 0)
{
if(strlen($fields["PROFILE_ID"]) > 0 || strlen($fields["SERVICE_TYPE"]) > 0)
{
$fields["NAME"] = $service->getName();
$fields["DESCRIPTION"] = $service->getDescription();
$fields["LOGOTIP"] = $service->getLogotip();
}
if(strlen($fields["NAME"]) <= 0)
$fields["NAME"] = $service->getClassTitle();
if(strlen($fields["DESCRIPTION"]) <= 0)
$fields["DESCRIPTION"] = $service->getClassDescription();
}
}
}
if(strlen($fields["DESCRIPTION"]) > 0)
{
$CBXSanitizer = new \CBXSanitizer;
$CBXSanitizer->SetLevel(\CBXSanitizer::SECURE_LEVEL_LOW);
$fields["DESCRIPTION"] = $CBXSanitizer->SanitizeHtml($fields["DESCRIPTION"]);
}
$serviceCurrency = $fields["CURRENCY"];
if(\Bitrix\Main\Loader::includeModule('currency'))
{
$currencyList = Currency\CurrencyManager::getCurrencyList();
if (isset($currencyList[$fields["CURRENCY"]]))
$serviceCurrency = $currencyList[$fields["CURRENCY"]];
unset($currencyList);
}
$aTabs = array(
array(
"DIV" => "edit_main",
"TAB" => Loc::getMessage("SALE_DSE_TAB_GENERAL"),
"ICON" => "sale",
"TITLE" => $isGroup ? Loc::getMessage("SALE_DSE_TAB_GROUP_GENERAL") : Loc::getMessage("SALE_DSE_TAB_DELIVERY_GENERAL")
)
);
/* from service config */
foreach($serviceConfig as $sectionKey => $serviceSection)
{
$aTabs[] = array(
"DIV" => "edit_".$sectionKey,
"TAB" => $serviceSection["TITLE"],
"ICON" => "sale",
"TITLE" => $serviceSection["DESCRIPTION"]
);
}
if($canHasProfiles)
{
$aTabs[] = array(
"DIV" => "edit_profiles",
"TAB" => Loc::getMessage("SALE_DSE_TAB_PROFILES"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_DSE_TAB_PROFILES_DESCR"),
);
}
if($service && $showRestrictions && $ID > 0)
{
$aTabs[] = array(
"DIV" => "edit_restriction",
"TAB" => Loc::getMessage("SALE_DSE_TAB_RESTRICTIONS"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_DSE_TAB_RESTRICTIONS_DESCR")
);
}
if($showExtraServices && $ID > 0)
{
$aTabs[] = array(
"DIV" => "edit_extraservices",
"TAB" => Loc::getMessage("SALE_DSE_TAB_EXTRA_SERVICES"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_DSE_TAB_EXTRA_SERVICES_DESCR"),
);
}
$isTrackingTabShow = $service && $ID > 0 && strlen($service->getTrackingClass()) > 0 && !$service->isTrackingInherited();
if($isTrackingTabShow)
{
$aTabs[] = array(
"DIV" => "edit_tracking",
"TAB" => Loc::getMessage("SALE_DSE_TAB_TRACKING"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_DSE_TAB_TRACKING_DESCR"),
);
}
if($service && $ID > 0)
$businessValueConsumers = $service->onGetBusinessValueConsumers();
else
$businessValueConsumers = array();
if($service && $ID > 0 && !empty($businessValueConsumers))
{
$aTabs[] = array(
"DIV" => "edit_business_value",
"TAB" => Loc::getMessage("SALE_DSE_BUSINESS_VALUES"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_DSE_BUSINESS_VALUES")
);
}
if($service && is_array($additionalTabs) && !empty($additionalTabs) && $ID > 0)
{
$i = 0;
foreach($additionalTabs as $tab)
{
if(!isset($tab["TAB"]))
throw new \Bitrix\Main\ArgumentNullException('additionalTabs["TAB"]');
$aTabs[] = array(
"DIV" => "edit_additional_tab_".$i++,
"TAB" => $tab["TAB"],
"ICON" => "sale",
"TITLE" => $tab["TITLE"]
);
}
}
$tabControl = new CAdminTabControl("tabControl", $aTabs);
/* Profiles */
if($canHasProfiles)
{
$sTableIDSubService = "tbl_sale_delivery_subservice";
$oSortSubService = new CAdminSorting($sTableIDSubService);
$lAdminSubServices = new CAdminList($sTableIDSubService, $oSortSubService);
$dbSubServicesRes = \Bitrix\Sale\Delivery\Services\Table::getList(array(
"filter" => array(
"PARENT_ID" => $ID
),
"select" => array(
"ID", "NAME", "ACTIVE", "LOGOTIP", "PARENT_ID"
),
"order" => isset($_REQUEST["by"]) && isset($_REQUEST["order"]) ? array($_REQUEST["by"] => $_REQUEST["order"]) : array("NAME" => "ASC")
));
$profilesList = new CAdminResult($dbSubServicesRes, $sTableIDSubService);
$profilesList->NavStart();
$lAdminSubServices->NavText($profilesList->GetNavPrint(Loc::getMessage('SALE_DSE_TAB_PROFILES')));
$profileHeader = array(
array("id"=>"ID", "content"=>"ID", "sort"=>"ID", "default"=>true),
array("id"=>"NAME", "content"=>Loc::getMessage("SALE_DSE_PROF_HEAD_NAME"), "sort"=>"NAME", "default"=>true),
array("id"=>"ACTIVE", "content"=>Loc::getMessage("SALE_DSE_PROF_HEAD_ACTIVE"), "sort"=>"ACTIVE", "default"=>true),
array("id"=>"LOGOTIP", "content"=>Loc::getMessage("SALE_DSE_PROF_HEAD_LOGOTIP"), "sort"=>"LOGOTIP", "default"=>true)
);
$lAdminSubServices->AddHeaders($profileHeader);
while ($profileParams = $profilesList->NavNext(true, "f_"))
{
$actUrl = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANG."&PARENT_ID=".$f_PARENT_ID."&ID=".$f_ID.'&'.$tabControl->ActiveTabParam();
$actUrl = $adminSidePanelHelper->editUrlToPublicPage($actUrl)."&back_url=".$backUrl;
$row =& $lAdminSubServices->AddRow($f_ID, $profileParams, $actUrl, Loc::getMessage("SALE_DSE_EDIT_DESCR"));
$atrTarget = $adminSidePanelHelper->isPublicFrame() ? 'target="_top"' : '';
$row->AddField("NAME", '<a '.$atrTarget.' href="'.$actUrl.'" class="adm-list-table-icon-link">'.
'<span class="adm-list-table-link">'.
$f_NAME.
'</span>'.
'</a>');
$row->AddField("ID", $f_ID);
$logoHtml = intval($f_LOGOTIP) > 0 ? CFile::ShowImage(CFile::GetFileArray($f_LOGOTIP), 150, 150, "border=0", "", false) : "";
$row->AddField("LOGOTIP", $logoHtml);
$row->AddField("ACTIVE", (($f_ACTIVE=="Y") ? Loc::getMessage("SALE_DSE_YES") : Loc::getMessage("SALE_DSE_NO")));
$row->AddField("CLASS_NAME", $f_CLASS_NAME);
$arActions = Array();
$copyUrl = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&ID=".$f_ID."&action=copy";
$copyUrl = $adminSidePanelHelper->editUrlToPublicPage($copyUrl)."&back_url=".$backUrl;
$arActions[] = array(
"ICON" => "edit",
"TEXT" => Loc::getMessage("SALE_DSE_COPY"),
"LINK" => $copyUrl,
"DEFAULT" => true
);
$editUrl = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$f_PARENT_ID."&ID=".$f_ID;
$editUrl = $adminSidePanelHelper->editUrlToPublicPage($editUrl)."&back_url=".$backUrl;
$arActions[] = array(
"ICON" => "edit",
"TEXT" => Loc::getMessage("SALE_DSE_EDIT_DESCR"),
"LINK" => $editUrl,
"DEFAULT" => true
);
if ($saleModulePermissions >= "W")
{
$deleteUrl = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$fields["PARENT_ID"]."&ID=".$ID.
"&action=profile_delete&ID_PROF=".$f_ID;
$deleteUrl = $adminSidePanelHelper->editUrlToPublicPage($deleteUrl);
$arActions[] = array("SEPARATOR" => true);
$arActions[] = array(
"ICON" => "delete",
"TEXT" => Loc::getMessage("SALE_DSE_DELETE"),
"ACTION" => "if(confirm('".Loc::getMessage('SALE_DSE_CONFIRM_DEL_PROFILE_MESSAGE')."')) ".$lAdminSubServices->ActionRedirect($deleteUrl)
);
}
$row->AddActions($arActions);
}
if ($saleModulePermissions == "W")
{
foreach($service->getProfilesList() as $profileId => $profileName)
{
$addUrl = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$ID.
"&PROFILE_ID=".htmlspecialcharsbx($profileId);
$addUrl = $adminSidePanelHelper->editUrlToPublicPage($addUrl)."&back_url=".$backUrl;
$menu[] = array(
"TEXT" => $profileName,
"LINK" => $addUrl,
);
}
if(!empty($menu))
{
$aContext = array(
array(
"TEXT" => Loc::getMessage("SALE_DSE_ADD_NEW_PROFILE"),
"LINK" => $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$ID."&back_url=".$backUrl,
"TITLE" => Loc::getMessage("SALE_DSE_ADD_NEW_PROFILE_TITLE"),
"MENU" => $menu,
"ICON" => "btn_new"
)
);
$lAdminSubServices->AddAdminContextMenu($aContext, false);
}
}
if($_REQUEST["table_id"]==$sTableIDSubService)
$lAdminSubServices->CheckListMode();
}
/* profiles end */
Asset::getInstance()->addJs("/bitrix/js/sale/delivery.js");
if($parentService && get_class($parentService) != 'Bitrix\Sale\Delivery\Services\Group')
{
if($ID > 0)
{
$sDocTitle = str_replace(
array("#NAME#", "#PARENT_NAME#"),
array($fields["NAME"], $parentService->getName()),
Loc::getMessage("SALE_DSE_EDIT_RECORD_PROFILE")
);
}
else
{
reset($serviceConfig);
$_REQUEST[$tabControl->name."_active_tab"] = 'edit_'.key($serviceConfig);
$sDocTitle = str_replace(
"#PARENT_NAME#",
$parentService->getName(),
Loc::getMessage("SALE_DSE_NEW_RECORD_PROFILE")
);
}
}
else
{
if($isGroup)
{
if($ID > 0)
$sDocTitle = str_replace("#NAME#", $fields["NAME"], Loc::getMessage("SALE_DSE_EDIT_GROUP"));
else
$sDocTitle = Loc::getMessage("SALE_DSE_NEW_GROUP");
}
else
{
if($ID > 0)
$sDocTitle = str_replace("#NAME#", $fields["NAME"], Loc::getMessage("SALE_DSE_EDIT_RECORD"));
else
$sDocTitle = Loc::getMessage("SALE_DSE_NEW_RECORD");
}
}
$APPLICATION->SetTitle($sDocTitle);
if($service && $showRestrictions && $ID > 0)
{
ob_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/admin/delivery_restrictions_list.php");
$restrictionsHtml = ob_get_contents();
ob_end_clean();
}
else
{
$restrictionsHtml = "";
}
if($showExtraServices && $ID > 0)
{
ob_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/admin/delivery_eservice_list.php");
$extraServicesHtml = ob_get_contents();
ob_end_clean();
}
else
{
$extraServicesHtml = "";
}
$vatList = array(
0 => Loc::getMessage('SALE_DSE_FORM_NO_VAT')
);
if(\Bitrix\Main\Loader::includeModule('catalog'))
{
$dbRes = \Bitrix\Catalog\VatTable::getList(array(
'filter' => array('ACTIVE' => 'Y'),
'order' => array('SORT' => 'ASC')
));
while($vat = $dbRes->fetch())
$vatList[$vat['ID']] = $vat['NAME'];
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
\Bitrix\Sale\Internals\Input\Manager::initJs();
?>
<script language="JavaScript">
BX.message({
SALE_DSE_GROUP_NAME: '<?=Loc::getMessage("SALE_DSE_GROUP_NAME")?>',
SALE_DSE_GROUP_CREATE: '<?=Loc::getMessage("SALE_DSE_GROUP_CREATE")?>',
SALE_DSE_GROUP_CREATE_G: '<?=Loc::getMessage("SALE_DSE_GROUP_CREATE_G")?>',
SALE_RDL_RESTRICTION: '<?=Loc::getMessage("SALE_RDL_RESTRICTION")?>',
SALE_RDL_SAVE: '<?=Loc::getMessage("SALE_RDL_SAVE")?>'
});
BX.addCustomEvent('onDeliveryServiceNameChange', function(params){
if(typeof params.name != 'undefined')
{
var iname = BX('adm-sale-delivery-name');
if(iname)
iname.value = params.name;
}
if(typeof params.description != 'undefined')
{
if(window.JCLightHTMLEditor.items['hndl_dscr'])
window.JCLightHTMLEditor.items['hndl_dscr'].SetEditorContent(params.description);
}
});
</script>
<?
if(!empty($backUrlReq))
$link = $backUrlReq;
elseif($isGroup)
{
$link = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&filter_class_name=".
urlencode('\Bitrix\Sale\Delivery\Services\Group');
$link = $adminSidePanelHelper->editUrlToPublicPage($link);
}
else
{
$link = $selfFolderUrl."sale_delivery_service_list.php?lang=".LANGUAGE_ID."&filter_group=".$fields["PARENT_ID"];
if ($adminSidePanelHelper->isPublicSidePanel())
$link = $listUrl;
}
if($isGroup)
$linkText = Loc::getMessage("SALE_DSE_2GLIST");
elseif($service && $service->isProfile())
$linkText = Loc::getMessage("SALE_DSE_2DS_EDIT");
else
$linkText = Loc::getMessage("SALE_DSE_2DLIST");
$aMenu = array(
array(
"TEXT" => $linkText,
"LINK" => $link,
"ICON" => "btn_list"
)
);
if ($ID > 0 && $saleModulePermissions >= "W")
{
$aMenu[] = array("SEPARATOR" => "Y");
if($isGroup)
$link = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&CLASS_NAME=".urlencode('\Bitrix\Sale\Delivery\Services\Group');
else
$link = $selfFolderUrl."sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$fields["PARENT_ID"];
$link = $adminSidePanelHelper->editUrlToPublicPage($link);
$aMenu[] = array(
"TEXT" => $isGroup ? Loc::getMessage("SALE_DSE_NEW_GROUP") : Loc::getMessage("SALE_DSE_NEW_DELIVERY"),
"LINK" => $link,
"ICON" => "btn_new"
);
$deleteUrl = "".$selfFolderUrl."sale_delivery_service_list.php?lang=".LANGUAGE_ID."&filter_group=".$fields["PARENT_ID"]."&ID=".$ID."&action=delete&".bitrix_sessid_get()."#tb";
$buttonAction = "LINK";
if ($adminSidePanelHelper->isPublicFrame())
{
$deleteUrl = $listUrl."&filter_group=".$fields["PARENT_ID"]."&ID=".$ID."&action=delete&".bitrix_sessid_get()."#tb";
$buttonAction = "ONCLICK";
}
$aMenu[] = array(
"TEXT" => $isGroup ? Loc::getMessage("SALE_DSE_DELETE_GROUP") : Loc::getMessage("SALE_DSE_DELETE_DELIVERY"),
$buttonAction => "javascript:if(confirm('".
($isGroup ? Loc::getMessage("SALE_DSE_DELETE_GROUP_CONFIRM") : Loc::getMessage("SALE_DSE_DELETE_DELIVERY_CONFIRM")).
"')) top.window.location.href='".$deleteUrl."';",
"ICON" => "btn_delete"
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
//warn about unfilled required fields
if($ID > 0)
{
if(is_array($serviceConfig) && !empty($serviceConfig))
{
foreach($serviceConfig as $sectionKey => $configSection)
{
if(is_array($configSection["ITEMS"]) && !empty($configSection["ITEMS"]))
{
foreach($configSection["ITEMS"] as $name => $params)
{
if(!empty($params['REQUIRED']) && $params['REQUIRED'] == true && strlen($params['VALUE']) <= 0)
$srvStrError .= Loc::getMessage('SALE_DSE_REQUIRED_FIELD').' "'.$params['NAME'].'".<br>';
}
}
}
}
}
if(strlen($srvStrError) > 0)
{
$m = Array("DETAILS"=>$srvStrError, "TYPE"=>"ERROR", "HTML"=>true);
if($isItSavingProcess)
$m["MESSAGE"] = Loc::getMessage("SALE_DSE_ERROR");
$adminMessage = new CAdminMessage($m);
echo $adminMessage->Show();
}
if($service)
$serviceMessage = $service->getAdminMessage();
if(!empty($serviceMessage))
{
$adminMessage = new CAdminMessage($serviceMessage);
echo $adminMessage->Show();
}
$actionUrl = $APPLICATION->GetCurPageParam("",array("RESET_HANDLER_SETTINGS", "action"));
$actionUrl = $adminSidePanelHelper->setDefaultQueryParams($actionUrl);
?>
<form method="POST" action="<?=$actionUrl?>" name="form1" enctype="multipart/form-data">
<input type="hidden" name="lang" value="<?=LANGUAGE_ID; ?>">
<input type="hidden" name="ID" value="<?=$ID ?>">
<input type="hidden" name="CODE" value="<?=(isset($fields["CODE"]) ? htmlspecialcharsbx($fields["CODE"]) : "" )?>">
<input type="hidden" name="PARENT_ID" value="<?=(isset($fields["PARENT_ID"]) ? $fields["PARENT_ID"] : "0" )?>">
<?=bitrix_sessid_post()?>
<?if(is_array($fields)):?>
<?foreach($fields as $fieldName => $fieldValue): /* if fields don't show let's make them hidden */?>
<?if(!is_array($fieldValue) && strlen($fieldValue) > 0 && !array_key_exists($fieldName, $showFieldsList)):?>
<input type="hidden" name="<?=$fieldName?>" value="<?=$fieldValue?>">
<?endif;?>
<?endforeach;?>
<?endif;?>
<?
$tabControl->Begin();
/* General settings */
$tabControl->BeginNextTab();
if($ID>0 && array_key_exists("ID", $showFieldsList)):?>
<tr>
<td width="40%">ID:</td>
<td width="60%"><?=$ID?></td>
</tr>
<?endif;?>
<?if(array_key_exists("NAME", $showFieldsList)):?>
<tr class="adm-detail-required-field">
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_NAME")?>:</td>
<td width="60%"><input id='adm-sale-delivery-name' type="text" name="NAME" value="<?=(isset($fields["NAME"]) ? htmlspecialcharsbx($fields["NAME"]) : "" )?>" size="40"></td>
</tr>
<?endif;?>
<?if(array_key_exists("CLASS_NAME", $showFieldsList)):?>
<tr class="adm-detail-required-field">
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_CLASS_NAME")?>:</td>
<td width="60%">
<?if(count($classNamesList) > 1 && (strlen($fields["CLASS_NAME"]) <= 0 )):?>
<select name="CLASS_NAME" onchange="if(this.value == '') return; top.BX.showWait(); this.form.submit(); /*elements.apply.click();*/">
<option value=""></option>
<?foreach($classNamesList as $className):?>
<option value="<?=$className?>" <?=(isset($fields["CLASS_NAME"]) && $className == $fields["CLASS_NAME"] ? " selected" : "" )?>><?=$className::getClassTitle()." [".$className."]"?></option>
<?endforeach;?>
</select>
<?else:?>
<?=class_exists($fields["CLASS_NAME"]) ? $fields["CLASS_NAME"]::getClassTitle() : $fields["CLASS_NAME"]?>
<input type="hidden" name="CLASS_NAME" value="<?=$fields["CLASS_NAME"]?>">
<?endif;?>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("ACTIVE", $showFieldsList)):?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_ACTIVE")?>:</td>
<td width="60%"><input type="checkbox" name="ACTIVE" value="Y" <?if ($fields["ACTIVE"]=="Y") echo "checked";?> onclick="BX.Sale.Delivery.createFlagFieldChanged('ACTIVE', this);"></td>
</tr>
<?endif;?>
<?if(array_key_exists("SORT", $showFieldsList)):?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_SORT")?>:</td>
<td width="60%"><input type="text" name="SORT" value="<?=(isset($fields["SORT"]) ? $fields["SORT"] : "100" )?>" size="5"></td>
</tr>
<?endif;?>
<?if(array_key_exists("DESCRIPTION", $showFieldsList)):?>
<tr>
<td width="40%" class="adm-detail-valign-top"><?=Loc::getMessage("SALE_DSE_FORM_DESCRIPTION")?>:</td>
<td width="60%">
<?=wrapDescrLHE(
'DESCRIPTION',
isset($fields["DESCRIPTION"]) ? $fields["DESCRIPTION"] : '',
'hndl_dscr');?>
<script language="JavaScript">BX.Sale.Delivery.setLHEClass('bxlhe_frame_hndl_dscr'); </script>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("PARENT_ID", $showFieldsList)):?>
<?if($parentService && get_class($parentService) != 'Bitrix\Sale\Delivery\Services\Group'):?>
<tr>
<td width="40%">
<?=Loc::getMessage("SALE_DSE_FORM_PARENT_ID")?>
:</td>
<td width="60%">
<a href="?LANG=<?=LANGUAGE_ID?>&PARENT_ID=<?=$parentService->getParentId()?>&ID=<?=$parentService->getId()?>"><?=htmlspecialcharsbx($parentService->getName())?></a>
</td>
</tr>
<?else:?>
<tr>
<td width="40%">
<?=Loc::getMessage("SALE_DSE_FORM_GROUP_ID")?>
:</td>
<td width="60%">
<?=\Bitrix\Sale\Delivery\Helper::getGroupChooseControl($fields["PARENT_ID"], "PARENT_ID")?>
<a
href="javascript:void(0);"
style="border-bottom: 1px dashed; cursor: pointer; text-decoration: none;"
onclick="BX.Sale.Delivery.createGroup();"
>
<?=Loc::getMessage("SALE_DSE_ADD")?>
</a>
<input type="hidden" name="GROUP_NAME" id="GROUP_NAME" value="">
</td>
</tr>
<?endif;?>
<?endif;?>
<?if(array_key_exists("LOGOTIP", $showFieldsList)):?>
<tr>
<td width="40%" class="adm-detail-valign-top"><?=Loc::getMessage("SALE_DSE_FORM_LOGO")?>:</td>
<td width="60%">
<div><input type="file" name="LOGOTIP"><input type="hidden" name="LOGOTIP_FILE_ID" value="<?=$fields["LOGOTIP"]?>"></div>
<?if(isset($fields["LOGOTIP"]) && intval($fields["LOGOTIP"]) > 0):?>
<br>
<?
$arLogotip = CFile::GetFileArray($fields["LOGOTIP"]);
echo CFile::ShowImage($arLogotip, 150, 150, "border=0", "", false);
?>
<br />
<div>
<input type="checkbox" name="LOGOTIP_del" value="Y" id="LOGOTIP_del" >
<label for="LOGOTIP_del"><?=Loc::getMessage("SALE_DSE_LOGOTIP_DEL");?></label>
</div>
<?endif;?>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("CURRENCY", $showFieldsList)):?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_CURRENCY")?>:</td>
<td width="60%">
<?=CCurrency::SelectBox("CURRENCY", $fields["CURRENCY"], "", true, "");?>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("STORES", $showFieldsList)):?>
<?$stores = ExtraServices\Manager::getStoresFields($ID, false);?>
<?$storeClassName = ExtraServices\Manager::STORE_PICKUP_CLASS;?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_STORES_SHOW")?>:</td>
<td width="60%">
<input type="checkbox" name="STORES_SHOW" value="Y" <?=!empty($stores) && $stores["ACTIVE"] == "Y" ? " checked" : ""?> onchange="BX.Sale.Delivery.toggleStores();">
</td>
</tr>
<tr id="sale-admin-delivery-stores"<?=!empty($stores) && $stores["ACTIVE"] == "Y" ? '' : ' style="display: none;"'?>>
<td width="40%">
<?=Loc::getMessage("SALE_DSE_FORM_STORES")?>:
</td>
<td width="60%">
<?=$storeClassName::getAdminParamsControl("STORES", $stores)?>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("ALLOW_EDIT_SHIPMENT", $showFieldsList)):?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_ALLOW_EDIT_SHIPMENT")?>:</td>
<td width="60%">
<input type="checkbox" name="ALLOW_EDIT_SHIPMENT" value="Y"<?=(isset($fields["ALLOW_EDIT_SHIPMENT"]) && $fields["ALLOW_EDIT_SHIPMENT"] == 'N' ? '' : " checked" )?>>
</td>
</tr>
<?endif;?>
<?if(array_key_exists("VAT_ID", $showFieldsList)):?>
<tr>
<td width="40%"><?=Loc::getMessage("SALE_DSE_FORM_VAT_ID")?>:</td>
<td width="60%">
<select name="VAT_ID">
<?foreach($vatList as $vatId => $vatName):?>
<option value="<?=$vatId?>" <?=(isset($fields["VAT_ID"]) && $vatId == $fields["VAT_ID"] ? " selected" : "" )?>><?=htmlspecialcharsbx($vatName)?></option>
<?endforeach;?>
</select>
</td>
</tr>
<?endif;?>
<?$hiddensConfigHtml = "";?>
<?if(is_array($serviceConfig) && !empty($serviceConfig)):?>
<?foreach($serviceConfig as $sectionKey => $configSection):?>
<?$tabControl->BeginNextTab();?>
<?if(isset($configSection["ITEMS"]) && is_array($configSection["ITEMS"]) && !empty($configSection["ITEMS"])):?>
<?foreach($configSection["ITEMS"] as $name => $params):?>
<?if($params["TYPE"] == "DELIVERY_SECTION"):?>
<tr class="heading">
<td colspan="2"><?=$params["NAME"]?></td>
</tr>
<?elseif(isset($params['HIDDEN']) && $params['HIDDEN'] == true):?>
<?$hiddensConfigHtml .= \Bitrix\Sale\Internals\Input\Manager::getEditHtml("CONFIG[".$sectionKey."][".$name."]", $params)?>
<?else:?>
<tr<?=(!empty($params['REQUIRED']) && $params['REQUIRED'] == true ? ' class= "adm-detail-required-field"' : '')?>>
<td width="40%" class="adm-detail-valign-top"><?=htmlspecialcharsbx($params["NAME"])?>:</td>
<td width="60%" class="adm-detail-valign-top">
<?=\Bitrix\Sale\Internals\Input\Manager::getEditHtml("CONFIG[".$sectionKey."][".$name."]", $params)?>
</td>
</tr>
<?endif;?>
<?endforeach;?>
<?endif;?>
<?endforeach;?>
<?endif;?>
<?if($canHasProfiles):?>
<?$tabControl->BeginNextTab();?>
<tr>
<td colspan="2">
<?$lAdminSubServices->DisplayList(array("FIX_HEADER" => false, "FIX_FOOTER" => false));?>
</td>
</tr>
<?endif;?>
<?if(strlen($restrictionsHtml) > 0):?>
<?$tabControl->BeginNextTab();?>
<tr><td id="sale-delivery-restriction-container"><?=$restrictionsHtml?></td></tr>
<?endif;?>
<?if($service && $showExtraServices && $ID > 0):?>
<?$tabControl->BeginNextTab();?>
<tr><td><?=$extraServicesHtml?></td></tr>
<?endif;?>
<?if($isTrackingTabShow):?>
<?$tabControl->BeginNextTab();
$tManager = Delivery\Tracking\Manager::getInstance();
$tracking = $tManager->getTrackingObjectByDeliveryId($ID);
$trackingParamsStructure = $tracking->getParamsStructure()
?><tr>
<td width="40%" class="adm-detail-valign-top"><?=Loc::getMessage("SALE_DSE_FORM_DESCRIPTION")?>:</td>
<td width="60%">
<?=$tracking->getClassDescription()?>
<?=(empty($trackingParamsStructure) ? '<br>'.Loc::getMessage('SALE_DSE_TAB_TRACKING_PARAMS_EMPTY') : '')?>
</td></tr>
<?if(!empty($trackingParamsStructure)):?>
<tr class="heading"><td colspan="2"><?=Loc::getMessage("SALE_DSE_TAB_TRACKING_PARAMS")?></td></tr>
<?foreach($trackingParamsStructure as $id => $params):?>
<tr>
<td width="40%"><?=$params["LABEL"]?>:</td>
<td width="60%">
<?=$tracking->getEditHtml($id,"TRACKING_PARAMS[".$id."]")?>
</td>
</tr>
<?endforeach;?>
<?endif;?>
<?endif;?>
<?if($service && $ID > 0 && !empty($businessValueConsumers)):?>
<?$tabControl->BeginNextTab();?>
<tr>
<td colspan="2">
<?
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/lib/helpers/admin/businessvalue.php');
$businessValueControl = new BusinessValueControl('DELIVERY_'.$service->getId());
$businessValueControl->renderMap(
array(
'CONSUMER_KEY' => 'DELIVERY_'.$service->getId(),
'HIDE_FILLED_CODES' => false
)
);
?>
</td>
</tr>
<?endif;?>
<?if(is_array($additionalTabs) && !empty($additionalTabs) && $ID > 0):?>
<?foreach($additionalTabs as $addTab):?>
<?$tabControl->BeginNextTab();?>
<?if(!isset($addTab["CONTENT"])) throw new \Bitrix\Main\ArgumentNullException('additionalTabs["CONTENT"]');?>
<?=$addTab["CONTENT"]?>
<?endforeach;?>
<?endif;
$tabControl->Buttons(array("disabled" => ($disableButtonsFlag || $saleModulePermissions < "W"),
"back_url" => !empty($backUrlReq) ? $backUrlReq : ($listUrl)));
$tabControl->End();
?>
<?=$hiddensConfigHtml?>
</form>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
function wrapDescrLHE($inputName, $content = '', $divId = false)
{
ob_start();
$ar = array(
'inputName' => $inputName,
'height' => '160',
'width' => '320',
'content' => $content,
'bResizable' => true,
'bManualResize' => true,
'bUseFileDialogs' => false,
'bFloatingToolbar' => false,
'bArisingToolbar' => false,
'bAutoResize' => true,
'bSaveOnBlur' => true,
'toolbarConfig' => array(
'Bold', 'Italic', 'Underline', 'Strike',
'CreateLink', 'DeleteLink',
'Source', 'BackColor', 'ForeColor'
)
);
if($divId)
$ar['id'] = $divId;
\Bitrix\Main\Loader::includeModule('fileman');
$LHE = new CLightHTMLEditor;
$LHE->Show($ar);
$sVal = ob_get_contents();
ob_end_clean();
return $sVal;
}