Лабораторная работа №7. Программирование простейшего модуля в CMS 1С-Битрикс. Создание компонента передающего сообщение администратору об ошибке — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Лабораторная работа №7. Программирование простейшего модуля в CMS 1С-Битрикс. Создание компонента передающего сообщение администратору об ошибке

2017-09-10 500
Лабораторная работа №7. Программирование простейшего модуля в CMS 1С-Битрикс. Создание компонента передающего сообщение администратору об ошибке 0.00 из 5.00 0 оценок
Заказать работу

Задание: создание компонента для сообщений администратору об ошибке. С помощью этого компонента можно реализовать функционал, который бы позволял пользователям сообщать ответственным за контент о найденной на сайте ошибке. Ошибка будет высылаться почтовым уведомлением. Алгоритм работы пользователя с компонентом очень простой: если пользователь находит на портале ошибку, то он выделяет текст, нажимает Ctrl+Enter и получает форму (рис.1):

 

Рис.1. Пример формы сообщения об ошибке

Форма заполняется и сообщение отправляется ответственному лицу.

 

Создание почтового шаблона

Так как сообщение об ошибке будет отправлено на почту, то потребуется создать новый почтовый тип.

Перейдите на страницу Настройки >Настройки продукта > Почтовые события > Типы почтовых событий.

 

Заполните поля формы (рис.2):

Рис.2. Форма Тип почтового события

Перейдите на страницу Настройки >Настройки продукта > Почтовые события > Почтовые шаблоны.

Нажмите в контекстной панели наДобавить шаблон, откроется форма создания шаблона.

Задайте шаблон для созданного типа почтового события (рис.3):

 

Рис.3. Форма Параметры почтового события

 

Создание компонента

Создайте в собственном пространстве имен папку feedback.error со следующей структурой:

 

папка /images

файл feedback.gif

папка /templates

папка /.default

файл script.js

файлtemplate.php

файл.description.php

файл.parameters.php

файл component.php

 

Файл feedback.gif - иконка, которая будет отображаться в визуальном редакторе.

 

Код файла script.js:

 

BX.bind(document, "keypress", SendError);

functionSendError (event, formElem)
{
event = event || window.event;

if ((event.ctrlKey) && ((event.keyCode == 0xA)||(event.keyCode == 0xD)))
{
var Dialog = new BX.CDialog({
title: "На сайте обнаружена ошибка!!",
head: "В чём заключается ошибка?",
content: '<form method="POST" id="help_form">\
<textarea name="error_desc" style="height: 78px; width: 374px;"></textarea>\
<input type="hidden" name="error_message"value="'+getSelectedText()+'">\
<input type="hidden" name="error_url" value="'+window.location+'">\
<input type="hidden" name="error_referer" value="'+document.referrer+'">\
<input type="hidden" name="error_useragent" value="'+navigator.userAgent+'">\
<input type="hidden" name="sessid" value="'+BX.bitrix_sessid()+'"></form>',
resizable: false,
height: '198',
width: '400'});

Dialog.SetButtons([
{
'title': 'Отправить',
'id': 'action_send',
'name': 'action_send',
'action': function (){
BX.ajax.submit(BX("help_form"));
this. parentWindow.Close();
}
},
{
'title': 'Отмена',
'id': 'cancel',
'name': 'cancel',
'action': function (){
this. parentWindow.Close();
}
}
]);
Dialog.Show();
}
}
functiongetSelectedText (){
if (window.getSelection){
txt = window.getSelection();
}
elseif (document.getSelection) {
txt = document.getSelection();
}
elseif (document.selection){
txt = document.selection.createRange().text;
}
elsereturn;
return txt;
}

Код файла template.php:

<?
CUtil::InitJSCore(array ('window', 'ajax'));
?>

 

Код файла. description.php:

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!== true) die ();

$arComponentDescription = array (
"NAME" =>"Send Error",
"DESCRIPTION" =>"Send Error",
"ICON" =>"/images/feedback.gif",
"PATH" => array (
"ID" =>"utility",
),
);
?>

Код файла. parameters.php:

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!== true) die ();

$arComponentParameters = array ();
?>

Код файла component.php:

<?
if (check_bitrix_sessid() && $_SERVER['REQUEST_METHOD'] == "POST"&&! empty ($_REQUEST["error_message"]) &&! empty ($_REQUEST["error_url"]))
{
$arMailFields = Array ();
$arMailFields["ERROR_MESSAGE"] = trim ($_REQUEST["error_message"]);
$arMailFields["ERROR_DESCRIPTION"] = trim ($_REQUEST["error_desc"]);
$arMailFields["ERROR_URL"] = $_REQUEST["error_url"];
$arMailFields["ERROR_REFERER"] = $_REQUEST["error_referer"];
$arMailFields["ERROR_USERAGENT"] = $_REQUEST["error_useragent"];

CEvent::Send("BX", SITE_ID, $arMailFields);
}
$this->IncludeComponentTemplate();
?>

Script.js

Теперь подробнее для разработчиков о том, что находится в файле feedback.error\templates\.default\script.js.

Объявление функции-обработчика, которая выводится на <body>:

 

functionSendError(event, formElem)

 

Ожидание нажатия Ctrl+Enter:

 

if ((event.ctrlKey) && ((event.keyCode == 0xA)||(event.keyCode == 0xD)))

Определение параметров будущего окна и его содержимого:

var Dialog = new BX.CDialog({
title: "Насайтеобнаруженаошибка!!",
head: "Вчёмзаключаетсяошибка?",
content: '< form method="POST" id="help_form" action="/bitrix/templates/.default/send_error.php">\
< textarea name="error_desc" style="height: 78px; width: 374px;"></ textarea >\
< input type="hidden" name="error_message"value="'+getSelectedText()+'">\
< input type="hidden" name="error_url" value="'+window.location+'">\
< input type="hidden" name="sessid" value="'+BX.bitrix_sessid()+'"></ form >',
resizable: false,
height: '198',
width: '400'});

 

Определение набора кнопок:

 

Dialog.SetButtons([
{
'title':'Отправить',
'id': 'action_send',
'name': 'action_send',
'action': function (){
BX.ajax.submit(BX("help_form"));
this. parentWindow.Close();
}
},
{
'title': 'Отмена',
'id': 'cancel',
'name': 'cancel',
'action': function (){
this. parentWindow.Close();
}
},
]);

 

Вывод окна:

 

Функция getSelectedText() получает выделенный мышью текст. И далее идет отправка письма в тексте файла component.php:

 

if (check_bitrix_sessid() && $_SERVER['REQUEST_METHOD'] == "POST"&&! empty ($_REQUEST["error_message"]) &&! empty ($_REQUEST["error_url"]))
{
$arMailFields = Array ();
$arMailFields["ERROR_MESSAGE"] = trim ($_REQUEST["error_message"]);
$arMailFields["ERROR_DESCRIPTION"] = trim ($_REQUEST["error_desc"]);
$arMailFields["ERROR_URL"] = trim ($_REQUEST["error_url"]);
CEvent::Send("BX", SITE_ID, $arMailFields);
};


 

Список литературы

 

1. Гоше Х. "HTML5. Для профессионалов" – СПб.: Питер, 2012

2. Веллинг, Л. Разработка Web-приложений с помощью PHP и MySQL. [Текст] / Л. Веллинг, Л. Томсон; 3-е изд.: пер. с англ. – М.: Издательский дом «Вильямс», 2008. – 880 с.

3. Вьюхин, В.В. Базы данных [Текст]: учеб. пособие для вузов. Ч. 1. Лабораторный практикум / В.В. Вьюхин, С.В. Супрун, Т.А. Кочнева. – Екатеринбург: Изд-во РГППУ, 2005. – 66 с.

4. Action Script 3.0 для Adobe Flash CS4 Professional [Текст]: официальный учебный курс. – М.: Эксмо, 2009. – 400 с.

5. Супрун, С. В. Разработка Web-приложений. В 2 ч. Ч. 2. Серверные технологии [Текст]: учеб. пособие для вузов [Гриф УМО]. Ч.2. Серверные технологии / С. В. Супрун, В. В. Вьюхин; – Екатеринбург: Издательство РГППУ, 2005. – 36 с.

6. Карпова, Т. С. Базы данных: модели, разработка, реализация [Text]: учебник / Карпова, Т. С. - СПб.: Питер, 2001. - 303 с.: ил. - 19 экз.

7. Холл, М. Программирование для Web [Text]: Библиотека профессионала / Холл, М. - М.: Вильямс, 2002. - 1261 с.: - 1 экз.

8. Гарнаев, А. Ю. Web-программирование на Java и JavaScript [Текст] / А. Ю. Гарнаев, С. Гарнаев. - СПб.: БХВ-Петербург, 2005. - 1040 с. - 2 экз.

9. Басыров, Р. И. 1С - Битрикс. Строим профессиональный сайт и интернет-магазин [Текст] / Р. Басыров. - СПб.: Питер, 2011. - 544 с.: ил. + 1 эл. опт. диск (CD-ROM). -: Строим профессиональный сайт и интернет-магазин.: - 1 экз.

 


Поделиться с друзьями:

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.019 с.