]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Просмотр задачи в попапе на странице Доска задач
authorvladfo <fvv2011@gmail.com>
Tue, 24 Sep 2024 06:54:42 +0000 (09:54 +0300)
committervladfo <fvv2011@gmail.com>
Tue, 24 Sep 2024 06:54:42 +0000 (09:54 +0300)
erp24/controllers/crud/TaskController.php
erp24/views/task/four-columns.php

index 430a3da055043b1da42793c397218d544bcf3677..ced8806525a58b9bb157b53adb610f47cf5b06dc 100644 (file)
@@ -90,17 +90,33 @@ class TaskController extends Controller
         $comment = new Comment;
         $comment->entity = 'task';
         $comment->entity_id = $id;
+
         if ($this->request->isPost && $comment->load($this->request->post())) {
             $comment->created_at = date('Y-m-d H:i:s');
             $comment->created_by = Yii::$app->user->id;
             $comment->files = UploadedFile::getInstances($comment, 'files');
             if ($comment->validateSaveAndManageImages()) {
+                if (Yii::$app->request->isAjax) {
+                    // Возвращаем JSON в случае успешного добавления комментария через AJAX
+                    return $this->asJson(['success' => true]);
+                }
                 return $this->redirect(['view', 'id' => $id]);
             }
         }
 
+        $model = $this->findModel($id);
+
+        if (Yii::$app->request->isAjax) {
+            // Если это AJAX-запрос, рендерим только содержимое для модального окна
+            return $this->renderAjax('view', [
+                'model' => $model,
+                'comment' => $comment,
+            ]);
+        }
+
+        // Обычный рендеринг страницы при стандартном запросе
         return $this->render('view', [
-            'model' => $this->findModel($id),
+            'model' => $model,
             'comment' => $comment,
         ]);
     }
index 2dd87d027225289d98b989b179381234c6a5af10..aefe0aca720ec52cc523dc72c775b7e60774ebd4 100755 (executable)
@@ -460,6 +460,39 @@ $(document).on('beforeSubmit', '#create-task-form', function(e) {
     
     return false; // Предотвращаем стандартную отправку формы
 });
+
+$(document).ready(function() {
+    // Открытие модального окна для просмотра задачи
+    $('.view-task-button').on('click', function() {
+        var taskId = $(this).data('id');
+        var viewTaskUrl = '/crud/task/view?id=' + taskId;  // URL для запроса просмотра задачи
+
+        // Загружаем данные через AJAX
+        $.get(viewTaskUrl, function(data) {
+            $('#view-task-content').html(data);  // Вставляем HTML в модальное окно
+            $('#view-task-modal').fadeIn();  // Показываем модальное окно
+
+            // Отключаем скролл body
+            $('body').addClass('no-scroll');
+        });
+    });
+
+    // Закрытие модального окна
+    $('.close').on('click', function() {
+        $('#view-task-modal').fadeOut();
+
+        // Включаем скролл body
+        $('body').removeClass('no-scroll');
+    });
+
+    // Закрытие окна при клике вне содержимого
+    $(window).on('click', function(event) {
+        if ($(event.target).is('#view-task-modal')) {
+            $('#view-task-modal').fadeOut();
+            $('body').removeClass('no-scroll');
+        }
+    });
+});
 JS;
     $this->registerJs($script);
     ?>
@@ -489,8 +522,8 @@ JS;
                                                 $taskName = Html::tag('small', $task->name, ['class'=>'small text-wrap']);
                                                 ?>
                                                 <?= Html::a($taskName,
-                                                    ['/crud/task/view', 'id' => $task->id],
-                                                    ['class' => 'btn btn-outline-primary', 'target' => '_blank',
+                                                    null,
+                                                    ['class' => 'btn btn-outline-primary view-task-button', 'data-id' => $task->id,
                                                         'style' => 'text-overflow: ellipsis; overflow: hidden;']) ?>
                                             </div>
                                             <?php if (isset($task->updated_by)): ?>
@@ -526,3 +559,14 @@ JS;
         </div>
     </div>
 </div>
+
+<!-- Модальное окно для просмотра задачи -->
+<div id="view-task-modal" class="custom-modal" style="display:none;">
+    <div class="custom-modal-content">
+        <span class="close">&times;</span>
+        <h2 class="view-task-title">Просмотр задачи</h2>
+        <div id="view-task-content">
+            <!-- Сюда будет загружаться контент задачи через AJAX -->
+        </div>
+    </div>
+</div>