Меню KDT

Страница "Мероприятия"

Пример её создания.

Для отображения списка мероприятий для начала нужно в панели управления сайтом создать страницу мероприятий, с произвольным адресом страницы (например /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 %}
Код обязательно должен обладать отступом (tabs).