Для отображения списка мероприятий для начала нужно в панели управления сайтом создать страницу мероприятий, с произвольным адресом страницы (например Затем в шаблоне /meroprs
) и с шаблоном страницы Мероприятия (meroprs.html)
.meroprs.html
в месте, где необходимо вывести мероприятия, нужно прописать следующий код (не забывайте импровизировать, приведенный код ознакомительный):
{% set pkid = xget('pkid') %}
{% if pkid %}
{% set meropr = widgetDataByType(
'meroprs', {
filter: {
site_pkid: site.id,
pkid: pkid,
},
}
).data.0 %}
{% if meropr %}
<script type="text/javascript">
{% set pageMeroprsID = random(999999) %}
jsApplication.pageLoad(function(){
{% set variable = 'var_'~random(999999) %}
var {{variable}} = 0;
var param = '';
var load = [];
load = load.concat(ioGetModuleUrls({module: 'noty-packaged', push: 1}));
if(jsApplication.busy && load.length > 0){jsApplication.busy(true); {{variable}} = 1;}
if(load.length > 0){
yepnope({
load: load,
complete: function(){
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
//onBootstrapEditable();
setTimeout('pageMeroprs{{pageMeroprsID}}()', 10);
},
});
} else {
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
setTimeout('pageMeroprs{{pageMeroprsID}}()', 10);
}
});
function pageMeroprs{{pageMeroprsID}}(){
$(document).on('click', '.meropr-form .meropr-reg-btn', function(){
var meropr_pkid = $('.meropr-form .meropr-pkid').val();
var meropr_type = $('.meropr-form .meropr-type:checked').val();
var meropr_fio = $('.meropr-form .meropr-fio').val();
var meropr_phone = $('.meropr-form .meropr-phone').val();
var meropr_email = $('.meropr-form .meropr-email').val();
var meropr_iin = $('.meropr-form .meropr-iin').val();
var meropr_company = $('.meropr-form .meropr-company').val();
var meropr_dolzhnost = $('.meropr-form .meropr-dolzhnost').val();
var meropr_phonerab = $('.meropr-form .meropr-phonerab').val();
var meropr_emailcompany = $('.meropr-form .meropr-emailcompany').val();
var meropr_addresscompany = $('.meropr-form .meropr-addresscompany').val();
var meropr_site = $('.meropr-form .meropr-site').val();
var meropr_other = $('.meropr-form .meropr-other').val();
if(meropr_fio != ''){
/*
type: BootstrapDialog.TYPE_DEFAULT,
type: BootstrapDialog.TYPE_INFO,
type: BootstrapDialog.TYPE_PRIMARY,
type: BootstrapDialog.TYPE_SUCCESS,
type: BootstrapDialog.TYPE_WARNING,
type: BootstrapDialog.TYPE_DANGER,
size: BootstrapDialog.SIZE_NORMAL, // normal
size: BootstrapDialog.SIZE_SMALL, // small
size: BootstrapDialog.SIZE_WIDE, // large
size: BootstrapDialog.SIZE_LARGE, // big font
*/
BootstrapDialog.show({
closable: true,
type: BootstrapDialog.TYPE_PRIMARY,
size: BootstrapDialog.SIZE_SMALL, // small
title: 'Подтверждение отправки заявки',
message: (
'<form method="post" class="row-fluid text-center meropr-form">'+
'Введите код с картинки:<br/>'+
'<img src="/entity/io.model.captcha.draw" class="meropr-captcha-img" title="Обновить картинку" /><br/>'+
'<input type="text" class="form-control text-center meropr-captcha" />'+
'</form>'
),
buttons: [
{
label: 'Отправить заявку',
cssClass: 'btn-small btn-info',
action: function(dialog, event){
var $btnSend = this;
var $btnCancel = dialog.getButton('cancel-btn');
var meropr_captcha = dialog.getModalBody().find('.meropr-captcha').val();
if(meropr_captcha != ''){
$btnSend.spin();
$btnSend.disable();
$btnCancel.disable();
dialog.setClosable(false);
ioCallEntity({
entity: 'io.model.cms20.meroprsMembers.reg',
resultType: 'json',
params: {
pkid: meropr_pkid,
type: meropr_type,
fio: meropr_fio,
phone: meropr_phone,
email: meropr_email,
iin: meropr_iin,
company: meropr_company,
dolzhnost: meropr_dolzhnost,
phonerab: meropr_phonerab,
emailcompany: meropr_emailcompany,
addresscompany: meropr_addresscompany,
site: meropr_site,
other: meropr_other,
captcha: meropr_captcha,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var n = noty({
text: 'Заявка успешно отправлена',
type: 'success',
layout: 'bottomRight',
timeout: 2000,
});
$('.meropr-form .meropr-fio').val('');
$('.meropr-form .meropr-phone').val('');
$('.meropr-form .meropr-email').val('');
$('.meropr-form .meropr-iin').val('');
$('.meropr-form .meropr-company').val('');
$('.meropr-form .meropr-dolzhnost').val('');
$('.meropr-form .meropr-phonerab').val('');
$('.meropr-form .meropr-emailcompany').val('');
$('.meropr-form .meropr-addresscompany').val('');
$('.meropr-form .meropr-site').val('');
$('.meropr-form .meropr-other').val('');
$btnSend.stopSpin();
$btnSend.enable();
$btnCancel.enable();
dialog.setClosable(true);
dialog.close();
} else {
if(obj.res.error_code == -1000001){
var n = noty({
text: 'Неверно введен код с картинки',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
dialog.getModalBody().find('.meropr-captcha').focus();
} else if(obj.res.error_code == -1000002){
var n = noty({
text: 'К сожалению свободные места на посещение мероприятия закончились',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.meropr-form .meropr-name').focus();
dialog.close();
} else if(obj.res.error_code == -1000003){
var n = noty({
text: 'К сожалению свободные места на дистанционное участие закончились',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.meropr-form .meropr-topic').focus();
dialog.close();
} else {
var n = noty({
text: 'Не удалось отправить заявку. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
dialog.getModalBody().find('.meropr-captcha-img').attr('src', '/entity/io.model.captcha.draw');
dialog.getModalBody().find('.meropr-captcha').val('').focus();
$btnSend.stopSpin();
$btnSend.enable();
$btnCancel.enable();
dialog.setClosable(true);
}
}
});
} else {
var n = noty({
text: 'Вы не указали код с картинки',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
dialog.getModalBody().find('.meropr-captcha').focus();
}
},
},
{
id: 'cancel-btn',
label: 'Отмена',
cssClass: 'btn-small btn-white',
action: function(dialog, event){
dialog.close();
},
}
],
onshown: function(dialog){
dialog.getModalBody().find('.meropr-captcha').focus();
dialog.getModalBody().find('.meropr-captcha-img').off('click');
dialog.getModalBody().find('.meropr-captcha-img').on('click', function(){
$(this).attr('src', '/entity/io.model.captcha.draw');
dialog.getModalBody().find('.meropr-captcha').focus();
});
},
});
} else {
if(meropr_fio == ''){
var n = noty({
text: 'Вы не указали ФИО',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.meropr-form .meropr-fio').focus();
}
}
});
}
</script>
<h4>Мероприятие: {{meropr.name|purify|raw}}</h4>
<div>({{meropr.description|purify|raw}})</div>
<br/>
<form class="meropr-form" action="/entity/io.model.cms20.meroprs.reg" method="post">
<input type="hidden" name="pkid" class="meropr-pkid" value="{{meropr.pkid}}" />
<div class="form-group row">
<div class="form-field col-md-6 text-center">
<div>Посещение мероприятия</div>
<input type="radio" name="type" value="0" class="form-control meropr-type" checked="checked" />
</div>
<div class="form-field col-md-6 text-center">
<div>Дистанционное участие</div>
<input type="radio" name="type" value="1" class="form-control meropr-type" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="text" placeholder="ФИО участника *" class="form-control meropr-fio" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-6">
<input type="number" placeholder="Личный номер телефона" class="form-control meropr-phone" />
</div>
<div class="form-field col-md-6">
<input type="email" placeholder="Личный email" class="form-control meropr-email" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="number" placeholder="ИИН" class="form-control meropr-iin" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="text" placeholder="Компания" class="form-control meropr-company" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="text" placeholder="Должность" class="form-control meropr-dolzhnost" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-6">
<input type="number" placeholder="Номер телефона компании" class="form-control meropr-phonerab" />
</div>
<div class="form-field col-md-6">
<input type="email" placeholder="Email компании" class="form-control meropr-emailcompany" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="text" placeholder="Адрес компании" class="form-control meropr-addresscompany" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<input type="text" placeholder="Сайт компании" class="form-control meropr-site" />
</div>
</div>
<div class="form-group row">
<div class="form-field col-md-12">
<textarea placeholder="Прочее" class="form-control meropr-other"></textarea>
</div>
</div>
<button type="button" class="btn meropr-reg-btn">Отправить заявку на участие в мероприятии</button>
</form>
{% else %}
<center>Мероприятие не найдено</center>
{% endif %}
{% else %}
{% set meroprs = widgetDataByType(
'meroprs', {
filter: {
site_pkid: site.id,
},
}
).data %}
<ul>
{% for meropr in meroprs %}
<li>
<a href="{{UrlGetAdd(link('/meroprs'), 'pkid', meropr.pkid)}}">{{meropr.name|purify|raw}}</a>
</li>
{% endfor %}
</ul>
{% endif %}