Исходный код вики Для разработчиков

Версия 43.1 от Михаил Галич на 17.12.2023, 12:27

Последние авторы
1 {{toc depth="4"/}}
2
3 = Инструкция для подключения =
4
5 Назначение данного раздела — описать способы взаимодействия с виджетом Веб-платформы по задуманному вами сценарию. Типичный процесс подключения, открытия и отслеживания виджета выглядит так:
6
7 ~1. Подключите скрипт ##external.script.js## к вашему сайту. Его адрес будет доступен **после добавления сайта** в процессе настройки в **администраторской панели Веб-Платформы**, так же как и параметр ##id## для подключения
8
9 2. Вставьте в необходимом месте на своём сайте код:
10
11 {{code language="html"}}
12 <script type="text/javascript">
13 // инициализируем виджет с параметрами
14 WPInit({
15 id: 1,
16 width: 400,
17 type: 'modal'
18 })
19
20 // сразу откроем его для пользователя
21 WPOpenModal(); // вариант для модального окна
22 // WPOpen(); // вариант для открытия в теле страницы. Используется при инициализации виджета с type: 'instant'
23
24 // будем следить за состоянием виджета
25 WPChange = function(response) {
26 if (response.status == 'reserved') {
27 // если заказ зарезирвирован, занесём данные из response.data.order_id себе на сайт
28 }
29 if (response.status == 'completed') {
30 // если заказ оплачен, занесём данные из response.data.order_id себе на сайт
31 }
32 }
33 </script>
34 {{/code}}
35
36 = Функции =
37
38 == WPInit ==
39
40 (% class="box infomessage" %)
41 (((
42 Функция загрузки виджета с параметризацией, при создании необходимо передать**## id ##**виджета, который можно найти в Административной панели
43 )))
44
45 ===== Минимальный способ инициализации: =====
46
47 {{code language="javascript"}}
48 WPInit({ id: 1 })
49 {{/code}}
50
51 ===== Пример передаваемых данных: =====
52
53 (% class="box infomessage" %)
54 (((
55 Виджет можно инициализировать с различными параметрами, все из них опциональные, кроме **##id##**.
56 )))
57
58 {{code language="javascript"}}
59 WPInit({
60 id: 1,
61 width: 400,
62 height: 600,
63 type: 'modal'
64 })
65 {{/code}}
66
67 == WPOpen ==
68
69 (% class="box infomessage" %)
70 (((
71 Функция открытия виджета в каком-либо блоке, используется при инициализации виджета с## **type: 'instant'**##
72 )))
73
74 ===== Пример передаваемых данных: =====
75
76 {{code language="javascript"}}
77 // показ виджета с группой id 5
78 WPOpen({
79 groupid: [5]
80 })
81 {{/code}}
82
83 == WPOpenModal ==
84
85 (% class="box infomessage" %)
86 (((
87 Функция открытия виджета в модальном окне, используется при инициализации виджета с## **type: 'modal'**##
88 )))
89
90 ===== Пример передаваемых данных: =====
91
92 {{code language="javascript"}}
93 // показ виджета на нажатие кнопки с id "OpenButton"
94 var OpenButton = document.getElementById('OpenButton');
95 OpenButton.onclick = function () {
96 WPOpenModal({ tariffsid: [27, 28] });
97 };
98 {{/code}}
99
100 == WPChange ==
101
102 (% class="box infomessage" %)
103 (((
104 Функция, которая вызывается каждый раз при изменении состояния виджета.
105 Каждый раз передаёт в переменной response состояние в **##status##** и опционально данные в **##data##**.
106 При переопределении этой функции у себя на странице, администратор может следить за состоянием виджета и статусом заказа из javascript
107 )))
108
109 ===== Примеры передаваемых данных: =====
110
111 * ##{ status:'starting' }## — виджет в процессе запуска, в этот момент определяется, что он должен в данный момент отображать
112 * ##{ status:'started' }## — виджет на начальном экране, где показывается список услуг для покупки
113 * ##{ status:'reserved', data: { order_id: 2 } }## — виджет находится на стадии забронированного заказ, в data передаётся id
114 * ##{ status:'completed', data: { order_id: 2 } }## — виджет находится на стадии оплаченного заказ, в data передаётся id заказа
115
116 ===== Пример работы с данными: =====
117
118 {{code language="javascript"}}
119 WPChange = function(response) {
120 if (response.status == 'starting') {
121 // действие на внешней странице
122 }
123 if (response.status == 'started') {
124 // действие на внешней странице
125 }
126 if (response.status == 'reserved') {
127 // id зарезервированного заказа: response.data.order_id
128 }
129 if (response.status == 'completed') {
130 // id оплаченного заказа: response.data.order_id
131 }
132 }
133 {{/code}}
134
135 = Параметры =
136
137 == Обязательные параметры WPInit ==
138
139 ==== id ====
140
141 Тип данных:## //number//##
142
143 (% class="box infomessage" %)
144 (((
145 id виджета, который можно узнать в Административной панели.
146 )))
147
148 == Возможные параметры WPInit ==
149
150 ==== height ====
151
152 Тип данных:## //number //##//|## boolean##//
153
154 По умолчанию:##// false//##
155
156 (% class="box infomessage" %)
157 (((
158 Высота виджета в пикселях, по умолчанию:
159 • 480px, если виджет запущен как type: 'modal'
160 • 100%, если виджет запущен как type: 'instant'
161 )))
162
163 ==== width ====
164
165 Тип данных:## //number //##//|## boolean##//
166
167 По умолчанию:##// false//##
168
169 (% class="box infomessage" %)
170 (((
171 Ширина виджета в пикселях, по умолчанию:
172 • 640px, если виджет запущен как type: 'modal'
173 • 100%, если виджет запущен как type: 'instant'
174 )))
175
176 ==== type ====
177
178 Тип данных:## //string//##
179
180 По умолчанию:##// 'instant'//##
181
182 (% class="box infomessage" %)
183 (((
184 Способ открытия виджета
185 • 'instant' Открытие виджета на месте, где был вызов виджета (на месте тэга script), либо в блоке place, если он указан в параметрах виджета при инициализации
186 • 'modal' Открытие виджета в модальном окне
187 )))
188
189 ==== place ====
190
191 Тип данных:## //string //##//|## boolean##//
192
193 По умолчанию:##// false//##
194
195 (% class="box infomessage" %)
196 (((
197 Идентификатор элемента DOM, в который необходимо поместить виджет, например: **###widget##**. Используется совместно с **##type: 'instant'##**
198 )))
199
200 (% class="box warningmessage" %)
201 (((
202 **Важно:** элемент DOM для place должен быть либо на странице до вставки инициализации виджета (WPInit), либо инициализация виджета должна быть исполнена после загрузки DOM (например, обёрнута в событие $(document).ready(function(){}) в jQuery)
203 )))
204
205 ----
206
207 == Возможные параметры WPOpen и WPOpenModal ==
208
209 === Календарь и даты ===
210
211 ==== disableddates ====
212
213 Тип данных:##// Array<string>//##
214
215 По умолчанию:##// []//##
216
217 (% class="box infomessage" %)
218 (((
219 Параметр отключения дат в календаре (и в //покупке// и в //пополнении//). Делает невозможным выбор определённых дней в массиве дат.
220 )))
221
222 Пример:
223
224 {{code language="javascript"}}
225 disableddates: ['23.02.2018', '08.03.2018'] // уберёт даты 23.02.2018 и 08.03.2018 из возможных для выбора дат в календаре.
226 {{/code}}
227
228 ==== forcedate ====
229
230 Тип данных:##// string//##
231
232 По умолчанию:##// undefined//##
233
234 (% class="box infomessage" %)
235 (((
236 Параметр для открывания виджета с указанной сразу датой (и в //покупке// и в //пополнении//).
237 **##forcedate: '20.05.2018'##** покажет услуги к продаже на дату 20.05.2018.
238 )))
239
240 ==== maxdate ====
241
242 Тип данных:##// string//##
243
244 По умолчанию:##// undefined//##
245
246 (% class="box infomessage" %)
247 (((
248 Параметр максимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//).
249 **##maxdate: '20.05.2018'##** покажет 20.05.2018 как самую последнюю дату, доступную к выбору в календаре.
250 )))
251
252 ==== mindate ====
253
254 Тип данных:##// string//##
255
256 По умолчанию:##// undefined//##
257
258 (% class="box infomessage" %)
259 (((
260 Параметр минимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//).
261 **##mindate: '20.05.2018'##** покажет 20.05.2018 как самую первую дату, доступную к выбору в календаре, если она находится после текущего дня.
262 )))
263
264 ==== nocalendar ====
265
266 Тип данных:## //boolean//##
267
268 По умолчанию:##// false//##
269
270 (% class="box infomessage" %)
271 (((
272 Убирает календарь внутри виджета (и в //покупке// и в //пополнении//), в случаях, когда дата, на которую покупается/пополняется билет, не важна.
273 )))
274
275 ----
276
277 === Услуги, пакеты услуг, группы услуг ===
278
279 ==== tariffsid ====
280
281 Тип данных:##// Array<number> //##//|## boolean##//
282
283 По умолчанию:##// []//##
284
285 (% class="box infomessage" %)
286 (((
287 Тарифы, которые следует показать на вкладке «Покупка услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него.
288 )))
289
290 Пример:
291
292 {{code language="javascript"}}
293 tariffsid: [29, 30] // покажет тарифы с id 29 и 30 во вкладке «Покупка услуг».
294 tariffsid: false // уберёт все тарифы с первой страницы
295 {{/code}}
296
297 ==== rtariffsid ====
298
299 Тип данных:##// Array<number> //##//|## boolean##//
300
301 По умолчанию:##// []//##
302
303 (% class="box infomessage" %)
304 (((
305 Тарифы, которые следует показать после ввода карты во вкладке «Пополнение услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него.
306 )))
307
308 Пример:
309
310 {{code language="javascript"}}
311 rtariffsid: [56, 57] // покажет тарифы с id 56 и 57 после ввода карты во вкладке «Пополнение услуг»
312 rtariffsid: false // уберёт все тарифы во вкладке «Пополнение услуг»
313 {{/code}}
314
315 ==== bundlesid ====
316
317 Тип данных:##// Array<number> //##//|## boolean##//
318
319 По умолчанию:##// []//##
320
321 (% class="box infomessage" %)
322 (((
323 Пакеты услуг, которые следует показать на первой странице. По умолчанию массив пуст и не показывает отдельно никакие из пакетов услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать пакеты услуг, доступные только для него.
324 )))
325
326 Пример:
327
328 {{code language="javascript"}}
329 bundlesid: [4, 5] // покажет пакеты услуг с id 4 и 5 в момент открытия виджета.
330 bundlesid: false // уберёт все пакеты услуг с первой страницы
331 {{/code}}
332
333 ==== bundleslessonstariffsid ====
334
335 Тип данных:##// Array<number>//##
336
337 По умолчанию:##// []//##
338
339 (% class="box warningmessage" %)
340 (((
341 Описание отсутствует
342 )))
343
344 ==== groupid ====
345
346 Тип данных:##// number//##
347
348 По умолчанию:##// undefined//##
349
350 (% class="box infomessage" %)
351 (((
352 Параметр, который форсирует показ определённой группы услуг ппс. groupid: 5 покажет только одну группу с id 5 в виджете.
353 )))
354
355 ----
356
357 === Предзаказ ===
358
359 ==== preorder ====
360
361 Тип данных:##// Array<object>//##
362
363 По умолчанию:##// undefined//##
364
365 (% class="box infomessage" %)
366 (((
367 Параметр, позволяющий купить сразу несколько услуг и перейти к подтверждению покупки.
368 • id — id услуги к покупке
369 • date — дата, на которую покупается услуга
370 • count — количество покупаемых услуг
371 )))
372
373 ===== Пример передаваемых данных: =====
374
375 {{code language="javascript"}}
376 // либо WPOpenModal({})
377 WPOpen({
378 preorder: [
379 {
380 id: 57,
381 date: '06.06.2019',
382 count: 1
383 }, {
384 id: 58,
385 date: '07.06.2019',
386 count: 2
387 }
388 ]
389 })
390 {{/code}}
391
392 ----
393
394 === Отображение ===
395
396 ==== cartmaxitems **##*##** ====
397
398 Тип данных:##// number//##
399
400 По умолчанию:##// 6//##
401
402 (% class="box infomessage" %)
403 (((
404 Ограничивает максимальное кол-во товаров в корзине. ##Минимальное значение 1, но не меньше **cartminitems**. Максимальное значение 60.##
405 )))
406
407 ==== cartminitems **##*##** ====
408
409 Тип данных:##// number//##
410
411 По умолчанию:##// 1//##
412
413 (% class="box infomessage" %)
414 (((
415 Ограничивает минимальное кол-во товаров в корзине. ##Минимальное значение 1. Максимальное значение 60, но не больше **cartmaxitems**.##
416 )))
417
418 ==== categories ====
419
420 Тип данных:##// Array<string>//##
421
422 По умолчанию:##// []//##
423
424 (% class="box warningmessage" %)
425 (((
426 Описание отсутствует
427 )))
428
429 ==== clubsiteid ====
430
431 Тип данных:##// number//##
432
433 По умолчанию:##// 0//##
434
435 (% class="box warningmessage" %)
436 (((
437 Описание отсутствует
438 )))
439
440 ==== coachid ====
441
442 Тип данных:##// number//##
443
444 По умолчанию:##// undefined//##
445
446 (% class="box warningmessage" %)
447 (((
448 Описание отсутствует
449 )))
450
451 ==== disablemultipleseances **##*##** ====
452
453 Тип данных:##// boolean//##
454
455 По умолчанию:##// false//##
456
457 (% class="box infomessage" %)
458 (((
459 Параметр предотвращает добавление в корзину тарифов с различными сеансами.
460 Таким образом как только в корзине появится хоть один товар с сеансом "10:00 - 11:30", товары, у которых есть сеанс например "13:00 - 14:30" будет невозможно добавить в корзину.
461 Товары без сеансов __не будут затронуты__.
462 )))
463
464 ==== forcemedia ====
465
466 Тип данных:##// string//##
467
468 По умолчанию:##// ''//##
469
470 (% class="box infomessage" %)
471 (((
472 Параметр, который вставяет строчку с носителем в поле носителя во вкладке «Пополнение услуг». Используется, например, для QR-кода нанесённого на носитель, чтобы быстро его пополнить.
473 )))
474
475 Пример:
476
477 {{code language="javascript"}}
478 forcemedia: 'E0012345678900'
479 {{/code}}
480
481 ==== forceseanceid **##*##** ====
482
483 Тип данных:##// number//##
484
485 По умолчанию без указания идентификатора не учитывается.
486
487 (% class="box infomessage" %)
488 (((
489 Заставит виджет выбрать мероприятие арены по идентификатору платформы и не позволять вернуться к этапу выбора других мероприятий.
490 )))
491
492 ==== forcesectorid **##*##** ====
493
494 Тип данных:##// number//##
495
496 По умолчанию без указания идентификатора не учитывается.
497
498 (% class="box infomessage" %)
499 (((
500 Заставит виджет выбрать сектор мероприятия по **##id##** и не позволять вернуться к этапу выбора других секторов.
501 )))
502
503 ==== forcetab ====
504
505 Тип данных:##// string//##
506
507 По умолчанию:##// ''//##
508
509 (% class="box infomessage" %)
510 (((
511 Переключение на необходимую вкладку виджета («**покупка услуг**» или «**пополнение услуг**») при загрузке.
512 По умолчанию открывается вкладка «**покупка услуг**».
513 **##forcetab: 'rewrite'##** принудительно откроет «**пополнение услуг**».
514 Обычно используется в комбинации с параметром **##onlytab##**
515 )))
516
517 ==== grouplessonsskillstariffs ====
518
519 Тип данных:##// Array<number> //##//|## object##//
520
521 По умолчанию:##// {}//##
522
523 (% class="box warningmessage" %)
524 (((
525 Описание отсутствует
526 )))
527
528 ==== grouplessonstariffsid ====
529
530 Тип данных:##// Array<number>//##
531
532 По умолчанию:##// []//##
533
534 (% class="box warningmessage" %)
535 (((
536 Описание отсутствует
537 )))
538
539 ==== lessonslocation ====
540
541 Тип данных:##// number//##
542
543 По умолчанию:##// undefined//##
544
545 (% class="box infomessage" %)
546 (((
547 Отображение места занятия для индивидуальных, групповых и многодневных занятий
548 )))
549
550 [[image:1702560957244-690.png]]
551
552 ==== lessonstariffsid ====
553
554 Тип данных:##// Array<number>//##
555
556 По умолчанию:##// []//##
557
558 (% class="box infomessage" %)
559 (((
560 Ограничить видимость доступных тарифов в выпадающем списке программ обучения по массиву с их идентификаторами
561 )))
562
563 [[image:1702641274330-465.png]]
564
565 ==== locale **##*##** ====
566
567 Тип данных:##// string//##
568
569 По умолчанию:##// ''//##
570
571 (% class="box infomessage" %)
572 (((
573 Параметр локализации. Позволяет переключать между языками виджета, например 'ru' - русский язык, 'en' - английский язык.
574 )))
575
576 ==== marketbillid ====
577
578 Тип данных:##// number//##
579
580 По умолчанию:##// undefined//##
581
582 (% class="box warningmessage" %)
583 (((
584 Описание отсутствует
585 )))
586
587 ==== marketemployeeid ====
588
589 Тип данных:##// number//##
590
591 По умолчанию:##// undefined//##
592
593 (% class="box warningmessage" %)
594 (((
595 Описание отсутствует
596 )))
597
598 ==== minimap **##*##** ====
599
600 Тип данных:##// boolean//##
601
602 По умолчанию:##// true//##
603
604 (% class="box infomessage" %)
605 (((
606 Отображать миникарту.
607 )))
608
609 ==== minimapaspect **##*##** ====
610
611 Тип данных:##// number//##
612
613 По умолчанию:##// 0.2//##
614
615 (% class="box infomessage" %)
616 (((
617 Размер миникарты относительной полного размера карты, а не контейнера, в которой она находится.
618 )))
619
620 ==== multidayslessonsskillstarif(% style="display:none" %) (%%)fs **##*##** ====
621
622 Тип данных:##// Array<number> //##//|## object##//
623
624 По умолчанию:##// []//##
625
626 (% class="box infomessage" %)
627 (((
628 Производит фильтрацию тарифов для многодневных занятий. Принимает массив идентификаторов.
629 Параметр дополняет фильтрацию по параметру **##grouplessonsskillstariffs##**.
630 )))
631
632 ==== nocategories ====
633
634 Тип данных:##// boolean//##
635
636 По умолчанию:##// false//##
637
638 (% class="box infomessage" %)
639 (((
640 Если **##true##** скрывает фильтр по категории инструкторских занятий
641 )))
642
643 [[image:1702638427440-675.png]]
644
645 ==== nocoach ====
646
647 Тип данных:##// boolean//##
648
649 По умолчанию:##// false//##
650
651 (% class="box infomessage" %)
652 (((
653 Если **##true##** скрывает выпадающее меню выбора инструктора
654 )))
655
656 [[image:1702638265778-588.png]]
657
658 ==== nolocation ====
659
660 Тип данных:##// boolean//##
661
662 По умолчанию:##// false//##
663
664 (% class="box infomessage" %)
665 (((
666 Если **##true##** скрывает фильтр по месту проведения инструкторских занятий
667 )))
668
669 [[image:1702638034420-756.png]]
670
671 ==== nopromo ====
672
673 Тип данных:##// boolean//##
674
675 По умолчанию:##// false//##
676
677 (% class="box infomessage" %)
678 (((
679 Убирает вывод промокода на странице подтверждения заказа.
680 )))
681
682 ==== noskills ====
683
684 Тип данных:##// boolean//##
685
686 По умолчанию:##// false//##
687
688 (% class="box infomessage" %)
689 (((
690 Если **##true##** скрывает фильтр по дисциплине инструкторских занятий
691 )))
692
693 [[image:1702638705750-678.png]]
694
695 ==== notariffs ====
696
697 Тип данных:##// boolean//##
698
699 По умолчанию:##// false//##
700
701 (% class="box warningmessage" %)
702 (((
703 Описание отсутствует
704 )))
705
706 ==== onlytab ====
707
708 Тип данных:##// string //##//|## Array<string>##//
709
710 По умолчанию:##// []//##
711
712 (% class="box infomessage" %)
713 (((
714 Скрытие других вкладок виджета («покупка услуг» или «пополнение услуг») при загрузке. Обычно используется в комбинации с параметром **##forcetab##**
715 )))
716
717 {{code language="javascript"}}
718 onlytab: 'service' // покажет только вкладку «покупка услуг».
719 onlytab: 'rewrite' // покажет только вкладку «пополнение услуг».
720 onlytab: ['service', 'rewrite'] // покажет только вкладки «покупка услуг» и «пополнение услуг»;
721 {{/code}}
722
723 ==== ordercomment **##*##** ====
724
725 Тип данных:##// string//##
726
727 По умолчанию:##// ''//##
728
729 (% class="box infomessage" %)
730 (((
731 Опциональный комментарий к заказу. Максимальная длинна комментария 50 символов.
732 )))
733
734 ==== personallessonsskillstariffs **##*##** ====
735
736 Тип данных:##// Array<number> //##//|## object##//
737
738 По умолчанию:##// []//##
739
740 (% class="box infomessage" %)
741 (((
742 Производит фильтрацию тарифов для индивидуальных занятий. Принимает массив идентификаторов.
743 )))
744
745 ==== placeid ====
746
747 Тип данных:##// number//##
748
749 По умолчанию:##// undefined//##
750
751 (% class="box infomessage" %)
752 (((
753 идентификатор места, использующийся для получения списка инструкторов.
754 )))
755
756 ==== requiredloyalty **##*##** ====
757
758 Тип данных:##// boolean//##
759
760 По умолчанию:##// false//##
761
762 (% class="box infomessage" %)
763 (((
764 Включает обязательную регистрацию клиента в программе настроенной на объектке.
765 )))
766
767 ==== resetcart **##*##** ====
768
769 Тип данных:##// boolean//##
770
771 По умолчанию:##// false//##
772
773 (% class="box infomessage" %)
774 (((
775 Автоматически очищать содержимое корзины.
776 )))
777
778 ==== rewritetariffsid ====
779
780 Тип данных:##// Array<number>//##
781
782 По умолчанию:##// []//##
783
784 (% class="box warningmessage" %)
785 (((
786 Описание отсутствует
787 )))
788
789 ==== saletermstype **##*##** ====
790
791 Тип данных:##// string//##
792
793 По умолчанию:##// '//default//'//##
794
795 (% class="box infomessage" %)
796 (((
797 Перед оплатой просит пользователя согласиться с правилами в форме галочки или всплывающего окна
798 )))
799
800 {{code language="javascript"}}
801 saletermstype: 'checkbox' // потребует установку галочки для согласия.
802 saletermstype: 'dialog' // покажет всплывающее окно с правилами, которые нужно принять.
803 saletermstype: 'default' // принятие правил не требуется.
804 {{/code}}
805
806 ==== shownoticketsseances ====
807
808 Тип данных:##// boolean//##
809
810 По умолчанию:##// false//##
811
812 (% class="box infomessage" %)
813 (((
814 Не скрывать сеансы, на которые закончились билеты. Работает если **##tariffsseancesfilter: true##**
815 )))
816
817 ==== showoverseances ====
818
819 Тип данных:##// boolean//##
820
821 По умолчанию:##// false//##
822
823 (% class="box infomessage" %)
824 (((
825 Отвечает за отображение прошедших сеансов в списке для фильтрации по времени. При значении **##true##** прошедшие сеансы будут отображаться, но недоступны для выбора пользователем. Работает если **##tariffsseancesfilter: true##**
826 )))
827
828 [[image:1702554598837-627.png]]
829
830 ==== skills ====
831
832 Тип данных:##// Array<number>//##
833
834 По умолчанию:##// []//##
835
836 (% class="box infomessage" %)
837 (((
838 Ограничить видимость доступных к выбору дисциплин по идентификатору
839 )))
840
841 [[image:1702639385677-964.png]]
842
843 ==== tariffsseancesfilter **##*##** ====
844
845 Тип данных:##// boolean//##
846
847 По умолчанию:##// false//##
848
849 (% class="box infomessage" %)
850 (((
851 Включить отображение фильтра тарифов по сеансам.
852 )))
853
854 [[image:https://info.moipass.ru/images/tariffsseancesfilter.png||alt="Example"]]
855
856 ----
857
858 (% class="box warningmessage" %)
859 (((
860 **##* ##**- доступно в новой версии виджета
861 )))