во-первых, никаких миграций
во-вторых, чтобы разрабатывать локально, нужно иметь копию всего кода самого битрикса
/local/
Validate::getMessage()
статичный?class Validate
{
private $name;
private $phone;
public $result = [];
public function __construct(string $name, string $phone)
{
$this->phone = $phone;
$this->name = $name;
}
public function getValidate()
{
if (!$this->name && !$this->phone){
return $this->getMessage(true, 'Заполните имя и телефон');
} elseif (!$this->name){
return $this->getMessage(true, 'Заполните имя');
} elseif (!$this->phone){
return $this->getMessage(true, 'Заполните телефон');
} else {
return $this->getMessage(false, 'Сообщение отправлено');
}
}
public function getMessage(bool $error, string $message)
{
return $this->result = [
'error' => $error,
'message' => $message
];
}
}
<?php
CJSCore::Init(['popup']);
?>
<a href="#" id="element">Ссылка</a>
<script>
// BX.element - элемент, к которому будет привязано окно, если null – окно появится по центру экрана
BX.ready(function () {
var popup = BX.PopupWindowManager.create("popup-message", BX('element'), {
content: 'Контент, отображаемый в теле окна',
width: 400, // ширина окна
height: 100, // высота окна
zIndex: 100, // z-index
closeIcon: {
// объект со стилями для иконки закрытия, при null - иконки не будет
opacity: 1
},
titleBar: 'Заголовок окна',
closeByEsc: true, // закрытие окна по esc
darkMode: false, // окно будет светлым или темным
autoHide: false, // закрытие при клике вне окна
draggable: true, // можно двигать или нет
resizable: true, // можно ресайзить
min_height: 100, // минимальная высота окна
min_width: 100, // минимальная ширина окна
lightShadow: true, // использовать светлую тень у окна
angle: true, // появится уголок
overlay: {
// объект со стилями фона
backgroundColor: 'black',
opacity: 500
},
buttons: [
new BX.PopupWindowButton({
text: 'Сохранить', // текст кнопки
id: 'save-btn', // идентификатор
className: 'ui-btn ui-btn-success', // доп. классы
events: {
click: function() {
// Событие при клике на кнопку
}
}
}),
new BX.PopupWindowButton({
text: 'Копировать',
id: 'copy-btn',
className: 'ui-btn ui-btn-primary',
events: {
click: function() {
}
}
})
],
events: {
onPopupShow: function() {
// Событие при показе окна
},
onPopupClose: function() {
// Событие при закрытии окна
}
}
});
popup.show();
});
</script>
CIBlockPropertyEnum
в D7 есть аналог – \Bitrix\Iblock\PropertyEnumerationTable
OnBeforeAdd (параметры: fields)
OnAdd (параметры: fields)
OnAfterAdd (параметры: fields, primary)
OnBeforeUpdate (параметры: primary, fields)
OnUpdate (параметры: primary, fields)
OnAfterUpdate (параметры: primary, fields)
OnBeforeDelete (параметры: primary)
OnDelete (параметры: primary)
OnAfterDelete (параметры: primary)
<div class="scale">
<div class="scale__line" style="width: 40%"></div>
<div class="scale__points">
<span class="scale__point" style="left: 30%"></div>
<span class="scale__point" style="left: 60%"></div>
</div>
</div>
.scale {
position: relative;
height: 50px;
background: linear-gradient(90deg, #e66465, #9198e5);
width: 100%;
transition: 0.5s width;
}
.scale--ended {
width: 0;
}
.scale__line {
position: absolute;
top: 0;
right: 0;
bottom: 0;
background: #cacaca;
}
.scale__points {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.scale__point {
width: 70px;
height: 50px;
position: absolute;
top: 0;
overflow: hidden;
}
.scale__point:after{
content: '';
display: block;
position: absolute;
left: 10px;
top: 0;
border-radius: 100%;
width: 50px;
height: 50px;
box-shadow: 0px 0px 0px 50px #FFFFFF;
}
<?php
$val = 150000;
$point = 50000;
$result = ceil($val / $point); // с округлением в большую сторону
$result = floor($val / $point); // с округлением в меньшую сторону
$result = round($val / $point); // по правилам математического округления
function loadFriends() {
sendRequest('wall.get', {domain:'tattoogenius' ,offset: 0, count:4}, function (data) {
var html = '';
data.response.items.map(function(item) {
item.attachments[0].photo.sizes.map(function(picture) {
var url = picture.url;
html += '<p>' + url + '</p>';
})
});
$('.photos').html(html);
});
}