diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json
index a01f4c1..792e0a3 100644
--- a/.vscode/ftp-kr.sync.cache.json
+++ b/.vscode/ftp-kr.sync.cache.json
@@ -24,8 +24,8 @@
},
"MailToTaskImporter.php": {
"type": "-",
- "size": 37407,
- "lmtime": 1770734028354,
+ "size": 37982,
+ "lmtime": 1770800891666,
"modified": false
},
"TaskAttachmentRepository.php": {
@@ -177,9 +177,9 @@
"libraries": {},
"logs.txt": {
"type": "-",
- "size": 1016,
+ "size": 3048,
"lmtime": 1770733260000,
- "modified": false
+ "modified": true
},
"REFACTORING_PLAN.md": {
"type": "-",
diff --git a/templates/tasks/task_popup.php b/templates/tasks/task_popup.php
index 274172f..d140318 100644
--- a/templates/tasks/task_popup.php
+++ b/templates/tasks/task_popup.php
@@ -11,8 +11,19 @@
endif;?>
#= $this -> task['id'];?> = $this -> task['name'];?>
+
+ $checklist_count = is_array( $this -> task['actions'] ) ? count( $this -> task['actions'] ) : 0;
+ $comments_count = is_array( $this -> task['comments'] ) ? count( $this -> task['comments'] ) : 0;
+ $attachments_count = is_array( $this -> task_attachments ) ? count( $this -> task_attachments ) : 0;
+ ?>
+
if ( is_array( $this -> task['users'] ) ): foreach ( $this -> task['users'] as $user_tmp_id ):?>
$user_tmp = \factory\Users::user_details( $user_tmp_id );?>
@@ -22,69 +33,81 @@
endforeach; endif;?>
- if ( $this -> task['text'] ):?>
-
-
- = htmlspecialchars_decode( $this -> task['text'] );?>
-
- endif;?>
-
-
Lista kontrolna
-
-
+
+ if ( $this -> task['text'] ):?>
+
+
+ = htmlspecialchars_decode( $this -> task['text'] );?>
+
+ else:?>
+
+ Brak opisu zadania.
+
+ endif;?>
-
-
@@ -174,6 +197,66 @@
width: 100% !important;
}
+ .task_popup .task_details .content .left .task-tabs-nav {
+ margin: 0 0 10px 0;
+ display: flex;
+ flex-wrap: wrap;
+ border: 1px solid #d8e2f6;
+ border-radius: 8px;
+ overflow: hidden;
+ background: #f4f8ff;
+ position: sticky;
+ top: 0;
+ z-index: 30;
+ }
+
+ .task_popup .task_details .content .left .task-tabs-nav .js-task-tab-btn {
+ padding: 8px 12px;
+ color: #355899;
+ text-decoration: none;
+ font-size: 13px;
+ font-weight: 600;
+ border-right: 1px solid #d8e2f6;
+ transition: all 0.2s ease;
+ }
+
+ .task_popup .task_details .content .left .task-tabs-nav .js-task-tab-btn:last-child {
+ border-right: 0;
+ }
+
+ .task_popup .task_details .content .left .task-tabs-nav .js-task-tab-btn:hover {
+ background: #e7f0ff;
+ }
+
+ .task_popup .task_details .content .left .task-tabs-nav .js-task-tab-btn.is-active {
+ background: #6690f4;
+ color: #fff;
+ }
+
+ .task_popup .task_details .content .left .task-tab-panel {
+ margin-top: 10px;
+ display: none;
+ }
+
+ .task_popup .task_details .content .left .task-tab-panel.is-active {
+ display: block;
+ }
+
+ .task_popup .task_details .content .left .task-tab-panel .attachments {
+ margin-top: 0;
+ }
+
+ .task_popup .task_details .content .left .task-tab-panel .description.description-empty {
+ color: #6b7280;
+ font-style: italic;
+ }
+
+ .task_popup .task_details .content .left .task-tab-panel[data-tab="description"] .description:not(.description-empty) {
+ min-height: 320px;
+ max-height: calc(90vh - 300px);
+ overflow-y: auto;
+ }
+
.task_popup .task_details .content .right .client .select2-container--bootstrap-5 .select2-selection {
min-height: 35px;
border: 1px solid #cdcdcd;
@@ -208,6 +291,37 @@
if ( !popup.length )
return;
+ var tab_panels = popup.find( '.task-tab-panel' );
+ var tab_buttons = popup.find( '.js-task-tab-btn' );
+
+ function setActiveTaskTab( tab_name ) {
+ if ( !tab_panels.length )
+ return;
+
+ var allowed_tabs = [ 'description', 'checklist', 'comments', 'attachments' ];
+ var selected_tab = allowed_tabs.indexOf( tab_name ) >= 0 ? tab_name : 'description';
+
+ tab_panels.each( function() {
+ var panel = $( this );
+ panel.toggleClass( 'is-active', panel.attr( 'data-tab' ) === selected_tab );
+ });
+
+ tab_buttons.each( function() {
+ var button = $( this );
+ var is_active = button.attr( 'data-tab' ) === selected_tab;
+ button.toggleClass( 'is-active', is_active ).attr( 'aria-selected', is_active ? 'true' : 'false' );
+ });
+
+ window.crm_task_popup_active_tab = selected_tab;
+ }
+
+ popup.on( 'click', '.js-task-tab-btn', function( e ) {
+ e.preventDefault();
+ setActiveTaskTab( $( this ).attr( 'data-tab' ) );
+ } );
+
+ setActiveTaskTab( window.crm_task_popup_active_tab || 'description' );
+
if ( $.fn.select2 )
{
var client_select = popup.find( '.task_client_select' );
Komentarze
-- foreach ( $this -> task['comments'] as $comment ):?> --
-
-
= \factory\Users::user_details( $comment['user_id'] )['name'] . ' ' . \factory\Users::user_details( $comment['user_id'] )['surname'];?>
- = date( 'Y/m/d H:i', strtotime( $comment['date_add'] ) );?>
- = nl2br( $comment['text'] );?>
-
- endforeach;?>
-
-