Initial import
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
<?php
|
||||
|
||||
use app\models\Events;
|
||||
use app\models\PriceObject;
|
||||
use app\widgets\services\Includes;
|
||||
|
||||
/**
|
||||
* @var Events $model
|
||||
* @var PriceObject $object
|
||||
*/
|
||||
?>
|
||||
<div class="inner-content p10">
|
||||
<?php if (empty($model->id)): ?>
|
||||
<p style="color: darkorange; font-weight: bold">* Формата ще бъде активна след попълването на "Основни
|
||||
данни"</p>
|
||||
<?php endif; ?>
|
||||
<form autocomplete="off" class="<?= empty($model->id) ? 'disabled' : '' ?>">
|
||||
<div class="row" style="width: 250px">
|
||||
<label class="require">Време за дневно посещение</label>
|
||||
<input data-min-h="7" data-max-h="20" type="hidden" name="daily_open_time" id="daily_open_time"
|
||||
value="<?= $model->daily_open_time ?>">
|
||||
</div>
|
||||
<div class="row c4 top15">
|
||||
<label class="require">Максимален брой посетители за деня</label>
|
||||
<input data-format="integer" name="max_visitors" style="width: 60px" value="<?= $model->max_visitors ?>">
|
||||
</div>
|
||||
<div class="row top15">
|
||||
<label>Цени</label>
|
||||
</div>
|
||||
<div class="top-page-panel c9">
|
||||
<div class="row c5">
|
||||
<div onclick="addPrice(this)" data-id="<?= $model->id ?>"
|
||||
class="btn-ib btn-default">
|
||||
<i class="la la-plus-circle"></i> Добавяне на цена
|
||||
</div>
|
||||
<div id="bDelete" data-model="app\models\PriceObject" onclick="checkDelete(this)"
|
||||
class="btn-ib btn-default ct disabled">
|
||||
<i class="la la-trash-o"></i> Изтриване на цена <span id="delCount">(0)</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top15">
|
||||
<table class="cms-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-right c1">
|
||||
<input id="checkAll" onclick="checkAllPositions(this)" title="Избери всички"
|
||||
class="delete-checkbox <?= sizeof($model->price_objects) == 0 ? 'hide' : '' ?>" type="checkbox">
|
||||
No
|
||||
</th>
|
||||
<th>Текст [bg]</th>
|
||||
<th>Текст [en]</th>
|
||||
<th style="width: 100px">Цена</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="price_list">
|
||||
<?php foreach ($model->price_objects as $i => $object): ?>
|
||||
<tr>
|
||||
<td class="text-right">
|
||||
<input onclick="checkSingle(this)"
|
||||
data-del="<?= $object->id ?>"
|
||||
class="delete-checkbox"
|
||||
type="checkbox"
|
||||
style="top: calc(50% - 10px)">
|
||||
<span><?= $i + 1 ?></span></td>
|
||||
<td><input name="price_object[id_<?= $object->id ?>][text_bg]" value="<?= $object->text_bg ?>" type="text"></td>
|
||||
<td><input name="price_object[id_<?= $object->id ?>][text_en]" value="<?= $object->text_en ?>" type="text"></td>
|
||||
<td><input name="price_object[id_<?= $object->id ?>][price]" value="<?= $object->price ?>" type="text"
|
||||
data-format="money"></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
<tr id="empty_row" class="<?= (sizeof($model->price_objects) > 0 ? 'hide' : '') ?>">
|
||||
<td colspan="4" class="ct"
|
||||
style="font-size: 14px; padding: 15px; color: var(--base-background-dark); pointer-events: none">
|
||||
Няма добавени цени
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row c9 top15 flex">
|
||||
<?= Includes::formButtons('website/events') ?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const checkAll = one('#checkAll');
|
||||
|
||||
function addPrice(e) {
|
||||
const price_list = one('#price_list');
|
||||
const row = document.createElement('tr');
|
||||
const count = all('#price_list tr').length
|
||||
one('#empty_row').addClass('hide')
|
||||
row.innerHTML = `
|
||||
<td class="text-right">
|
||||
<input onclick="checkSingle(this)"
|
||||
data-del
|
||||
class="delete-checkbox"
|
||||
type="checkbox"
|
||||
style="top: calc(50% - 10px)">
|
||||
<span>${count + 1}</span></td>
|
||||
<td><input name="price_object[c_${count + 1}][text_bg]" type="text"></td>
|
||||
<td><input name="price_object[c_${count + 1}][text_en]" type="text"></td>
|
||||
<td><input name="price_object[c_${count + 1}][price]" type="text" data-format="money"></td>
|
||||
`;
|
||||
price_list.appendChild(row);
|
||||
dataFormat();
|
||||
checkAll.removeClass('hide')
|
||||
}
|
||||
|
||||
timeRange('#daily_open_time');
|
||||
|
||||
let sl = [];
|
||||
|
||||
function checkAllPositions(el) {
|
||||
sl = [];
|
||||
all('td [data-del]').forEach(e => {
|
||||
e.checked = el.checked === true;
|
||||
if (el.checked) {
|
||||
sl.push(e.dataset.del);
|
||||
e.parentNode.parentNode.addClass('checked');
|
||||
} else {
|
||||
e.parentNode.parentNode.removeClass('checked');
|
||||
}
|
||||
|
||||
})
|
||||
updateActionButtons();
|
||||
}
|
||||
|
||||
function checkSingle(e) {
|
||||
if (e.checked) {
|
||||
sl.push(e.dataset.del);
|
||||
console.log(sl)
|
||||
e.parentNode.parentNode.addClass('checked');
|
||||
} else {
|
||||
one('#checkAll').checked = false;
|
||||
e.parentNode.parentNode.removeClass('checked');
|
||||
const f = sl.indexOf(e.dataset.del);
|
||||
sl.splice(f, 1);
|
||||
}
|
||||
updateActionButtons(e.dataset.del);
|
||||
}
|
||||
|
||||
function updateActionButtons() {
|
||||
const bDelete = one('#bDelete');
|
||||
const delCount = one('#delCount');
|
||||
const c = sl.length;
|
||||
if (delCount)
|
||||
delCount.innerText = '(' + c + ')';
|
||||
if (c > 0) {
|
||||
if (bDelete)
|
||||
bDelete.removeClass('disabled');
|
||||
} else {
|
||||
if (bDelete)
|
||||
bDelete.addClass('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
function checkDelete(e) {
|
||||
const msg = 'Сигурни ли сте, че искате да изтриете ' + (sl.length > 1 ? 'тези ' + sl.length + ' записа?' : 'този запис?');
|
||||
modal.confirm(msg, () => {
|
||||
if(all('[data-del]').length === 0) {
|
||||
const checkAll = one('#checkAll')
|
||||
checkAll.checked = false;
|
||||
checkAll.addClass('hide')
|
||||
one('#empty_row').removeClass('hide')
|
||||
}
|
||||
all('[data-del]').forEach(e => {
|
||||
if (e.checked)
|
||||
e.parentNode.parentNode.remove();
|
||||
});
|
||||
all('[data-del]').forEach((e, i) => {
|
||||
const number = e.parentNode.querySelector('span');
|
||||
number.innerText = (i + 1).toString();
|
||||
})
|
||||
const ids = [];
|
||||
sl.forEach(value => {
|
||||
if(value) {
|
||||
ids.push(value);
|
||||
}
|
||||
});
|
||||
sl = [];
|
||||
updateActionButtons();
|
||||
if(ids.length > 0) {
|
||||
request({
|
||||
url: window.location.href.split('?')[0] + '?o=d',
|
||||
post: {
|
||||
ids: JSON.stringify(ids),
|
||||
model: e.dataset.model
|
||||
},
|
||||
done: e => {
|
||||
window.location.reload()
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user