public static function disabledButtons($isCreate = false)
{
- if (!$isCreate || date('d') > 10) {
+ if ($isCreate) {
return false;
}
- return true;
+
+ return date('d') > 10;
}
+
}
<div class="row">
<div class="col-md-10"></div>
<div class="col-md-2">
- <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success w-100', 'disabled' => $disabledButtons]) ?>
+ <?= Html::submitButton('Сохранить', [
+ 'class' => 'btn btn-success btn-save w-100',
+ 'disabled' => BouquetComposition::disabledButtons(!$id)]) ?>
</div>
</div>
<?php ActiveForm::end(); ?>
\ No newline at end of file
<?php use app\widgets\DualList;
use yii\helpers\Html;
+use yii_app\records\BouquetComposition;
+
?>
<?= DualList::widget([
'name' => 'products',
<div class="row">
<div class="col-md-6 position-relative">
- <!-- Обертка для перекрытия текста -->
<div class="pt-2 position-relative content-wrapper">
- <!-- Прелоадер -->
<div class="loader-overlay d-none">
<div class="spinner-border text-primary" role="status"></div>
</div>
<?= Html::button('Рассчитать', ['class' => 'btn btn-warning calculate-btn w-100']) ?>
</div>
<div class="col-md-2 d-flex justify-content-end align-items-end px-3 w-100">
- <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success w-100']) ?>
+ <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success w-100', 'disabled' => BouquetComposition::disabledButtons()]) ?>
</div>
<?php } else { ?>
<div class="col-md-4 d-flex justify-content-end align-items-end px-3 w-100">
</div>
</div>
<div class="col-md-4">
- <?= Html::a('Редактировать', Url::to("/bouquet/update?id=$model->id"), ['class' => $model && !BouquetComposition::disabledButtons()? 'btn btn-warning w-100' : 'btn btn-warning w-100 disabled']) ?>
+ <?= Html::a('Редактировать', Url::to(["/bouquet/update", "id" => $model->id]), [
+ 'class' => 'btn btn-warning btn-edit w-100' . ($model && !BouquetComposition::disabledButtons() ? '' : ' disabled')
+ ]) ?>
</div>
</div>
\ No newline at end of file
'processUrls' => [],
'availableItems' => $availableItems,
'model' => null,
- 'disabledButtons' => \yii_app\records\BouquetComposition::disabledButtons(true)
+ 'id' => null
]); ?>
</div>
use yii_app\records\Products1c;
/** @var yii\web\View $this */
-
$this->title = 'Содержание матрицы';
?>
-
<div class="bouquet-index p-4">
<h1><?= Html::encode($this->title) ?></h1>
]) ?>
</div>
<div class="text-center mt-2">
- <?= Html::a('Редактировать', Url::to('/matrix-type'), ['class' => 'text-decoration-none', 'target' => '_blank', 'disabled' => BouquetComposition::disabledButtons()]) ?>
+ <?= Html::a('Редактировать', Url::to('/matrix-type'), ['class' => 'text-decoration-none', 'target' => '_blank']) ?>
</div>
</div>
<div class='col-md-2 d-flex flex-column gap-2'>
<div class='card bg-transparent border-0' style='aspect-ratio: 1/1; width: 100%; flex: 1;'>
- " . Html::tag('video', '', [
- 'class' => 'video-preview',
- 'src' => Url::to($model->presentation->url ?? null),
- 'style' => 'width: 100%; height: 100%; object-fit: cover;',
- 'autoplay' => true,
- 'muted' => true,
- 'loop' => true,
- 'playsinline' => true
- ]) . "
+ " . Html::tag('video', '', [
+ 'class' => 'video-preview',
+ 'src' => Url::to($model->presentation->url ?? null),
+ 'style' => 'width: 100%; height: 100%; object-fit: cover;',
+ 'autoplay' => true,
+ 'muted' => true,
+ 'loop' => true,
+ 'playsinline' => true
+ ]) . "
<div class='text-center bg-transparent fw-bold p-0 m-0'>Презентация</div>
</div>
<div class='card' style='aspect-ratio: 1/1; width: 100%; flex: 1;'> " .
<div class='col-md-2 d-flex flex-column gap-2'>
<div class='card bg-transparent border-0' style='aspect-ratio: 1/1; width: 100%; flex: 1;'> " .
- Html::tag('video', '', [
+ Html::tag('video', '', [
'class' => 'video-preview',
'src' => Url::to($model->buildProcess->url ?? null),
'style' => 'width: 100%; height: 100%; object-fit: cover;',
<div class='row mt-auto text-center'>
<div class='col-md-7'></div>
<div class='col-md-2'>
- " . Html::a('Редактировать', Url::to(['/bouquet/view', 'id' => $model['id']]), [
- 'class' => 'btn btn-warning'
- ]) . "
+ " .
+ Html::a('Редактировать', Url::to(['/bouquet/view', 'id' => $model['id']]), [
+ 'class' => 'btn btn-warning btn-edit' .
+ ((Yii::$app->request->get('year') < date('Y') || // Если год в прошлом → disabled
+ (Yii::$app->request->get('year') == date('Y') && Yii::$app->request->get('month') < date('m')) ||
+ (Yii::$app->request->get('year') == date('Y') && Yii::$app->request->get('month') == date('m') && BouquetComposition::disabledButtons()) ||
+ (Yii::$app->request->get('year') == date('Y') && Yii::$app->request->get('month') == date('m') + 1 &&BouquetComposition::disabledButtons())
+ ) ? ' disabled' : ''),
+ ])
+ . "
</div>
</div>
</div>
'photoFiles' => $photoFiles,
'videoUrls' => $videoUrls,
'processUrls' => $processUrls,
- 'disabledButtons' => \yii_app\records\BouquetComposition::disabledButtons(),
+ 'id' => $model->id
]); ?>
</div>
});
});
});
+
$(document).ready(function () {
if (window.location.pathname.includes('/bouquet/view')) {
$('.year-picker, .month-picker').on('change', function () {
+
let year = $('.year-picker').val();
let month = $('.month-picker').val();
let urlParams = new URLSearchParams(window.location.search);
let id = urlParams.get('id');
+
+ let currentYear = new Date().getFullYear();
+ let currentMonth = new Date().getMonth() + 1;
+
+ if (year >= currentYear && month > currentMonth) {
+ $('.btn-edit').removeClass('disabled')
+ $('.btn-save').prop('disabled', false);
+ } else {
+ $('.btn-edit').addClass('disabled')
+ $('.btn-save').prop('disabled', true);
+ }
if (!id) {
return;
}
$(this).addClass('selected');
});
+// Убираем выделение при клике вне элемента
+$(document).on('click', function(e) {
+ if (!$(e.target).closest('.selected-item').length) {
+ $('#{$id}-selected-container .selected-item').removeClass('selected');
+ }
+});
// Фильтрация доступных элементов
$('#{$id}-filter-available').on('input', function() {