В фильтр добавляем поле "ZOMBIE" => false. Битрикс задачи из базы на самом деле не удаляет, а просто помечает поле "ZOMBIE" => true и задач не видно в списке. Данный метод вытаскивает все задачи, поэтому и фильтруем.
"STATUS" => self::TASK_COMPLETED - здесь происходит фильтрация по статусу задач.
При разработке компонентов и модулей часто приходится делать отладку, а именно вывести содержимое массива. Для удобства можно подготовить несколько готовых функции:
//Функция отладки
function arDump(&$data,$defaultUserId = "1"){
global $USER;
if($USER->GetId() == $defaultUserId){
echo "<pre>".print_r($data,true)."</pre>";
}
}
//Функция Reflection API, получение всех методов, и свойств
function classDump($className,$defaultUserId = "1"){
global $USER;
if($USER->GetId() == $defaultUserId){
$reflection = new ReflectionClass($className);
$methods = $reflection->getMethods();
$props = $reflection->getProperties();
$statics = $reflection->getStaticProperties();
$arReflection["NAME"] = $className;
$arReflection["METHODS"] = $methods;
$arReflection["PROPERTIES"] = $props;
$arReflection["STATIC_PROPERTIES"] = $statics;
echo "<pre>".print_r($arReflection,true)."</pre>";
}
}
//Функция отладки в файл
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt");
function fileDump(&$arFields,$paramName = "arrName"){
AddMessage2Log($paramName.' = '.print_r($arFields, true),'');
}
Данный код необходимо добавить в файл /local/php_interface/init.php
arDump - выводит содержимое массива в форматированном виде;
fileDump - дозаписывает содержимое массива в файл log.txt в корень сайта. Вместо AddMessage2Log можно использовать аналог в новом ядре D7 - Bitrix\Main\Diag\Debug::dumpToFile и Bitrix\Main\Diag\Debug::writeToFile. Данный вариант отладки очень удобно использовать в ajax запросах.
classDump - можно использовать рефлекию, для того чтобы исследовать недокументированный класс, чтобы посмотреть, какие есть у него методы и свойства.
Подключение нового фильтра bitrix:main.ui.filter для пользовательских форм.
Данный фильтр работает в связке с гридом bitrix:main.ui.filter. У меня стояла задача прикрепить для своих пользовательских форм, где нет необходимости в использовании грида.
Рассмотрим кратко, как можно использовать данный компонент.
Вначале создадим массив с полями. Детально о вариантах полей Вы можете узнать в исходнике компонента.
Николаев Андрей, BX.addCustomEvent('BX.Main.Filter:apply', function( filterId , dumpObject, filterObj) будет работать только при применении фильтра, но как отследить инициализацию фильтра?
Зарипов Рушан, мы остлеживаем сохранением b_user_option. Т.е. при применении фильтра сохраняет его в b_user_option и при выводе достаем. Т.е. когда пользователь заходит на страницу он получает правильный фильтр и уже отфильтрованные данные.
Можно конечно и cookie использовать для сохранения фильтра, но тут уже есть недостатки.
В сообществе Битрикс уже рассказывали тему про модальное popup окно. Иногда нужно реализовать простое всплывающее меню как представлено ниже.
Сейчас поговорим о том, как его вывести.
Для это достаточно написать нижеприведенный код:
var menu = [];
menu.push({
text: "Бизнес процессы",
title: "Бизнес процессы",
href: "/company/personal/bizproc/"
});
menu.push({
text: "Сервисы",
title: "Сервисы",
href: "/services/"
});
var params = {
offsetLeft: 20,
closeByEsc: true,
angle: {
position: 'top'
},
events: {
onPopupClose : function(){
//обработка событии при закрытии меню
}
}
}
var popupMenu = new BX.PopupMenuWindow(
"myPopupForm",
BX("menuBtn"),
menu,
params
);
popupMenu.popupWindow.show();
"myPopupForm" - строка - уникальный id DOM-элемента; BX("menuBtn") - параметр «принадлежности окна» к какому-либо DOM-элементу на странице (то есть относительно какого элемента будем выводить всплывающее меню); menu - собственно массив объектов с элементами меню; params - параметры окна, аналогичные в BX.PopupWindow.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».