Документация для разработчиков
Темная тема

new BX.CDialog

new BX.CDialog(
	params
);

Конструктор.

Параметры функции

{
	(
		title: 'dialog title',
		head: 'head block html',
		content: 'dialog content',
		icon: 'head icon classname or filename'
	)
	или
	(
		content_url: url to content load
			loaded content scripts can use BX.WindowManager.Get() to get access to the current window object
	)
		
	height: window_height_in_pixels,
	width: window_width_in_pixels,
		
	draggable: true|false,
	resizable: true|false,
		
	min_height: min_window_height_in_pixels, // useless if resizable = false
	min_width: min_window_width_in_pixels, // useless if resizable = false
		
	buttons: [
		'html_code',
		BX.CDialog.prototype.btnSave, BX.CDialog.prototype.btnCancel, BX.CDialog.prototype.btnClose,
		{
			title: заголовок кнопки,
			name: имя кнопки,
			id: id кнопки,
			action: function () {
				this.Close();
			},
			onclick: "BX.WindowManager.Get().Close()"
		},
		new CWindowButton({
			title: заголовок кнопки,
			name: имя кнопки,
			id: id кнопки,
			action: function () {
				this.Close();
			},
			onclick: "BX.WindowManager.Get().Close()"
		})
	]
}
Параметр Описание
title Название диалога
head html код заголовка
content Контент диалога
content_url URL для загрузки контента. Загружаемые скрипты могут использовать BX.WindowManager.Get для получения доступа к объекту текущего окна. Параметр может использоваться вместо первых трёх.
content_post POST-данные, которые нужно передать для формирования контента. Необязательный параметр.
height Высота диалога в пикселях
width Ширина диалога в пикселях
draggable (true|false) Разрешение на использование drag&drop
resizable (true|false) Разрешение на изменение размеров окна
min_height Минимальная высота диалога в пикселях. false - при запрете на изменение размера.
min_width Минимальная ширина диалога в пикселях. false - при запрете на изменение размера.
buttons Массив, элементами которого являются описания кнопок. Описание каждой кнопки может быть HTML-кодом кнопки, может быть экземпляром класса BX.CWindowButton или объектом со следующими параметрами:.
{
	title - заголовок кнопки, 
	name - имя кнопки, 
	id - id кнопки, 
	action - обработчик нажатия на кнопку
}
Кроме того, есть стандартные кнопки:
  • BX.CDialog.prototype.btnSave - кнопка Сохранить
  • BX.CDialog.prototype.btnCancel - кнопка Отменить
  • BX.CDialog.prototype.btnClose - Кнопка Закрыть


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Вячеслав Салиев
Отработка событий диалогового окна

https://g-rain-design.ru/blog/posts/cdialog-cadmindialog-modal-popups/
1
Александр Чепурнов
Пример с параметром content_post.

Код
dialog = new BX.CDialog({
         'content_url': '/url/to/page',
         'content_post': 'foo=5&bar=7',
         'width':400,
            'height':400
      });

 
1
Антон Долганин
Комментарий для случая подгрузки контента диалога по URL.

После введения нового интерфейса (раньше не припомню такого), если мы окном рисуем с кнопками (передаем массив кнопок), то после сабмита они исчезают. Причина в код ядра:
Код
this.ClearButtons(); // buttons are appended during form reload, so we should clear footer

Решается установкой кнопок в теле (в прилетаемом контенте) диалога:
Код
<sc ript type="text/javascript">
   BX.WindowManager.Get().SetButtons([BX.CDialog.prototype.btnSave, BX.CDialog.prototype.btnCancel]);
</sc ript>
Если хочется закрыть окно после сабмита (например, после успешного), в теле контента такой код:
Код
top.BX.WindowManager.Get().AllowClose(); 
top.BX.WindowManager.Get().Close();
3
Иван Левый
Пример работы на php:
Код
<?
CJSCore::Init(array('window')); 

$arDialogParams = array(
   'title' => 'title',
   'content' => 'content',
   'width' => 500,
   'height' => 200,
   'buttons' => array(
      '[code]BX.CDialog.prototype.btnClose[code]', // Системная кнопка "Закрыть"
      array(
         "title" => "заголовок кнопки",
         "name" => "имя кнопки",
         "id" => "id кнопки",
         "action" => "[code]function(){BX.WindowManager.Get().Close();}[code]", // Кастомная кнопка
         )
   ),
);

// преобразование в объект и замена кавычек 
$strParams = CUtil::PhpToJsObject($arDialogParams);
$strParams = str_replace('\'[code]', '', $strParams);
$strParams = str_replace('[code]\'', '', $strParams);

// ссылка для открытия окна
$url = 'javascript:(new BX.CDialog('.$strParams.')).Show()';
?>

<a href="<?=$url?>">Показать окно</a>
 
*************************
Комментарий от разработчика:
Для получения javascript-строки для загрузки и показа в окне данных можно воспользоваться методом CMain::GetPopupLink();
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх