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 @@ # task['id'];?> task['name'];?> + 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; + ?>
+
task['users'] ) ): foreach ( $this -> task['users'] as $user_tmp_id ):?> @@ -22,69 +33,81 @@
- task['text'] ):?> -
- - task['text'] );?> -
- -
-

Lista kontrolna

-
- - -
- +
+ task['text'] ):?> +
+ + task['text'] );?> +
+ +
+ Brak opisu zadania. +
+
-
-

Komentarze

- -
    - task['comments'] as $comment ):?> -
  • - -
    -
    -
    -
  • - -
-
-
-

Załączniki

- -
    - task_attachments ) and count( $this -> task_attachments ) ):?> - task_attachments as $attachment ):?> -
  • - - +
    +
    +

    Lista kontrolna

    +
    +
      + task['actions'] as $action ):?> +
    • + checked="checked"> + + + - () - -
    • - -
    • Brak załączników.
    • - -
    +
+
+
+
+
+

Komentarze

+ +
    + task['comments'] as $comment ):?> +
  • + +
    +
    +
    +
  • + +
+
+
+
+
+

Załączniki

+ +
    + task_attachments ) and count( $this -> task_attachments ) ):?> + task_attachments as $attachment ):?> +
  • + + + + () + + +
  • + + +
  • Brak załączników.
  • + +
+
@@ -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' );