8namespace Bitrix\Sender;
12use Bitrix\Main\Type as MainType;
13use Bitrix\Main\Localization\Loc;
14use Bitrix\Main\Loader;
15use Bitrix\Fileman\Block\Editor as BlockEditor;
16use Bitrix\Fileman\Block\EditorMail as BlockEditorMail;
18Loc::loadMessages(__FILE__);
40 private static array $loadedTemplates = [];
52 $resultList =
array();
53 if($templateType && $templateType !==
'USER')
63 $localPathOfIcon = static::LOCAL_DIR_IMG .
'my.png';
77 $templateDb = static::getList([
79 'order' => [
'ID' =>
'DESC'],
80 'limit' => self::PER_PAGE_LIMIT,
87 $resultList[] =
array(
96 'ON_DEMAND' => static::isContentForBlockEditor(
$template[
'CONTENT'])
117 return static::update($id,
array(
119 'DATE_USE' =>
new MainType\
DateTime()
130 return 'b_sender_preset_template';
142 'data_type' =>
'integer',
143 'autocomplete' =>
true,
147 'data_type' =>
'string',
149 'default_value' =>
'Y',
152 'data_type' =>
'string',
154 'title' => Loc::getMessage(
'SENDER_ENTITY_TEMPLATE_FIELD_TITLE_NAME')
157 'data_type' =>
'string',
159 'title' => Loc::getMessage(
'SENDER_ENTITY_TEMPLATE_FIELD_TITLE_CONTENT'),
160 'save_data_modification' =>
array(
'\Bitrix\Main\Text\Emoji',
'getSaveModificator'),
161 'fetch_data_modification' =>
array(
'\Bitrix\Main\Text\Emoji',
'getFetchModificator'),
163 'USE_COUNT' =>
array(
164 'data_type' =>
'integer',
165 'default_value' => 0,
168 'DATE_INSERT' =>
array(
169 'data_type' =>
'datetime',
171 'default_value' =>
new MainType\
DateTime(),
174 'data_type' =>
'datetime',
197 if (isset(
$data[
'fields'][
'CONTENT']))
216 if (array_key_exists(
'CONTENT',
$data[
'fields']))
237 'select' =>
array(
'ID',
'SUBJECT',
'MAILING_ID',
'MAILING_NAME' =>
'TITLE'),
238 'filter' =>
array(
'TEMPLATE_TYPE' =>
'USER',
'TEMPLATE_ID' =>
$data[
'primary'][
'ID']),
239 'order' =>
array(
'MAILING_NAME' =>
'ASC',
'ID')
242 if($chainListDb->getSelectedRowsCount() > 0)
245 $messageList =
array();
246 while($chain = $chainListDb->fetch())
248 $messageList[$chain[
'MAILING_NAME']] =
'[' . $chain[
'ID'] .
'] ' .
htmlspecialcharsbx($chain[
'SUBJECT']) .
"\n";
251 $message = Loc::getMessage(
'SENDER_ENTITY_TEMPLATE_DELETE_ERROR_TEMPLATE',
array(
'#NAME#' =>
$template[
'NAME'])) .
"\n";
252 foreach($messageList as $mailingName => $messageItem)
254 $message .= Loc::getMessage(
'SENDER_ENTITY_TEMPLATE_DELETE_ERROR_MAILING',
array(
'#NAME#' => $mailingName)) .
"\n" . $messageItem .
"\n";
275 Loader::includeModule(
'fileman');
276 return BlockEditor::isContentSupported(
$content);
287 $fieldName =
$params[
'FIELD_NAME'];
288 $fieldValue =
$params[
'FIELD_VALUE'];
289 $isUserHavePhpAccess =
$params[
'HAVE_USER_ACCESS'];
290 $showSaveTemplate = isset(
$params[
'SHOW_SAVE_TEMPLATE']) ?
$params[
'SHOW_SAVE_TEMPLATE'] :
true;
293 $contentUrl = isset(
$params[
'CONTENT_URL']) ?
$params[
'CONTENT_URL'] :
'';
294 $templateTypeInput = isset(
$params[
'TEMPLATE_TYPE_INPUT']) ?
$params[
'TEMPLATE_TYPE_INPUT'] :
'TEMPLATE_TYPE';
295 $templateIdInput = isset(
$params[
'TEMPLATE_ID_INPUT']) ?
$params[
'TEMPLATE_ID_INPUT'] :
'TEMPLATE_ID';
296 $templateType = isset(
$params[
'TEMPLATE_TYPE']) ?
$params[
'TEMPLATE_TYPE'] :
'';
298 $isTemplateMode = isset(
$params[
'IS_TEMPLATE_MODE']) ? (bool)
$params[
'IS_TEMPLATE_MODE'] :
true;
299 if(!empty(
$params[
'PERSONALIZE_LIST']) && is_array(
$params[
'PERSONALIZE_LIST']))
306 $isDisplayBlockEditor = ($templateType &&
$templateId) || static::isContentForBlockEditor($fieldValue);
308 $editorHeight =
'650px';
309 $editorWidth =
'100%';
311 Loader::includeModule(
'fileman');
314 "js" =>
array(
"/bitrix/js/sender/editor/htmleditor.js"),
321 <div
id=
"bx-sender-visual-editor-<?=$fieldName?>" style=
"<?if($isDisplayBlockEditor):?>display: none;<?endif;?>">
324 <?
if(!$isInit): $isInit =
true;?>
325 var letterManager =
new SenderLetterManager;
331 "BXEdPlaceHolderSelectorTitle" :
"<?=Loc::getMessage('SENDER_TEMPLATE_EDITOR_PLACEHOLDER')?>"
334 <textarea
id=
"bxed_<?=htmlspecialcharsbx($fieldName)?>"
335 name=
"<?=htmlspecialcharsbx($fieldName)?>"
336 style=
"height: <?=htmlspecialcharsbx($editorHeight)?>; width: <?=htmlspecialcharsbx($editorWidth)?>;"
342 <div
id=
"bx-sender-block-editor-<?=htmlspecialcharsbx($fieldName)?>" style=
"<?if(!$isDisplayBlockEditor):?>display: none;<?endif;?>">
344 <input type=
"hidden" name=
"<?=htmlspecialcharsbx($templateTypeInput)?>" value=
"<?=htmlspecialcharsbx($templateType)?>" />
345 <input type=
"hidden" name=
"<?=htmlspecialcharsbx($templateIdInput)?>" value=
"<?=htmlspecialcharsbx($templateId)?>" />
348 if($isDisplayBlockEditor)
352 $url =
'/bitrix/admin/sender_template_admin.php?';
353 $url .=
'action=get_template&template_type=' . $templateType .
'&template_id=' .
$templateId;
361 echo BlockEditorMail::show(
array(
363 'charset' => $charset,
365 'own_result_id' =>
'bxed_' . $fieldName,
367 'templateType' => $templateType,
369 'isTemplateMode' => $isTemplateMode,
370 'isUserHavePhpAccess' => $isUserHavePhpAccess,
376 if($showSaveTemplate):
379 function ToggleTemplateSaveDialog()
381 BX(
'TEMPLATE_ACTION_SAVE_NAME_CONT').value =
'';
383 var currentDisplay = BX(
'TEMPLATE_ACTION_SAVE_NAME_CONT').style.display;
384 BX(
'TEMPLATE_ACTION_SAVE_NAME_CONT').style.display = BX.toggle(currentDisplay, [
'inline',
'none']);
387 <div
class=
"adm-detail-content-item-block-save">
389 <input type=
"checkbox" value=
"Y" name=
"TEMPLATE_ACTION_SAVE" id=
"TEMPLATE_ACTION_SAVE" onclick=
"ToggleTemplateSaveDialog();">
390 <label
for=
"TEMPLATE_ACTION_SAVE"><?=Loc::getMessage(
'SENDER_TEMPLATE_EDITOR_SAVE')?></label>
392 <span
id=
"TEMPLATE_ACTION_SAVE_NAME_CONT" style=
"display: none;"> <?=Loc::getMessage(
'SENDER_TEMPLATE_EDITOR_SAVE_NAME')?> <input type=
"text" name=
"TEMPLATE_ACTION_SAVE_NAME"></span>
397 return ob_get_clean();
static getList(array $parameters=array())
static syncFiles(int $entityId, int $entityType, string $template, bool $deleteFiles=true, bool $onDeleteEntity=false)
static getPersonalizeList()
static setPersonalizeList(array $personalizeList=null)
static fixTemplateStyles($html)
static isContentForBlockEditor($content)
static onBeforeAdd(ORM\Event $event)
static onPresetTemplateList($templateType=null, $templateId=null)
static onAfterAdd(ORM\Event $event)
static initEditor(array $params)
static onBeforeDelete(ORM\Event $event)
static onBeforeUpdate(ORM\Event $event)
static Init($arExt=array(), $bReturn=false)
static RegisterExt($name, $arPaths)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
bitrix_sessid_get($varname='sessid')
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']