# taskbuilder/5.0.3/includes/admin/tasks/open_task/wppm_open_task.php

Taskbuilder – Project Management &amp; Task Management Tool With Kanban Board, version 5.0.3. 1,047 lines.

- Page: https://pluginprobe.com/plugins/taskbuilder/5.0.3/code/includes/admin/tasks/open_task/wppm_open_task.php
- Raw: https://pluginprobe.com/plugins/taskbuilder/5.0.3/raw/includes/admin/tasks/open_task/wppm_open_task.php
- Modified: 2026-02-09T12:31:54+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/taskbuilder/5.0.3/code/includes/admin/tasks/open_task/wppm_open_task.php#L10-L20`.

```php
<?php
if ( ! defined( 'ABSPATH' ) ) {
  exit; // Exit if accessed directly
}

global $current_user,$wpdb,$wppmfunction;
$id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : "0";
$task_list_view = get_option('wppm_default_task_list_view');
$wppm_default_task_date = get_option('wppm_default_task_date');
$wppm_task_time = get_option('wppm_task_time');
$appearance_settings = get_option("wppm-ap-individual-task");
$wppm_tinymce_visibility_open_task = get_option('wppm_tinymce_visibility_open_task');
$settings = get_option("wppm-ap-modal");
$wppm_rich_text_editor = get_option('wppm_rich_text_editor');
$wppm_toolbar_actions = get_option('wppm_toolbar_actions');
$wppm_date_setting = get_option('wppm_date_setting');
$wppm_task_hide_comment_section = get_option('wppm_task_hide_comment_section');
$wppm_deafault_time_duration_task = get_option('wppm_display_time_duration_task');
$url_auth = false;
$auth_id = $wppmfunction->wppm_get_auth_code($id);
$auth_id = sanitize_text_field($auth_id);
// url authentication.
$auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( $_POST['auth-code'] ) : ''; // phpcs:ignore
if ( ! $auth_code ) {
  $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( $_POST['auth_code'] ) : ''; // phpcs:ignore
}

if ( $auth_code && $auth_id == $auth_code ) {
  $url_auth = true;
}
if (!(($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('view_task',$id)) || ($url_auth==true))) {  ?>
  <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
  <?php
  wp_die();
}
$proj_id = isset($_POST) && isset($_POST['proj_id']) ? intval(sanitize_text_field($_POST['proj_id'])) : 0;
$current_date = date('Y-m-d');
$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
$cu_id = $current_user->ID;
if(!empty($id)){
  $task = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task where id='".esc_sql($id)."'");
  $project_data = $wppmfunction->get_project($task->project);
  $task_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_comment where task_id='".esc_sql($id)."' ORDER BY create_time DESC");
  $orderby_proj_sql = esc_sql(sanitize_sql_orderby( "create_time DESC" ));
  $task_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_comment where task_id='".esc_sql($id)."' ORDER BY ". $orderby_proj_sql);
  $task_proj = isset($task->project) ? esc_sql($task->project) :"";
  $task_id = isset($task->id) ? esc_sql($task->id):"";
}
$user_role = $wpdb->get_var( "SELECT role_id FROM {$wpdb->prefix}wppm_project_users where proj_id = '$task_proj' AND user_id = '$cu_id'");
if(!empty($task_proj)){
  $project_name = $wpdb->get_var( "SELECT project_name FROM {$wpdb->prefix}wppm_project where id= '$task_proj'");
}
$wppm_checklist=$wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist where task_id='$task_id'" );
if(!empty($task->status)){
  $task_status_var = esc_sql($task->status);
  $task_status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id='$task_status_var'");
}
if(!empty($task->priority)){
  $task_priority_var = esc_sql($task->priority);
  $task_priority = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id='$task_priority_var'");
}
if(!empty($task->users)){
  $users = explode(",",$task->users);
} 

if(!empty($task->description)){
  $task_description = stripslashes((htmlspecialchars_decode($task->description, ENT_QUOTES)));
}

if($wppm_task_time == 1){
  $tsDate = new DateTime($task->start_date);
  $teDate = new DateTime($task->end_date);
  if($task->start_date=='0000-00-00 00:00:00'){
    if($wppm_date_setting=='Y-m-d H:i:s'){
      $task_start_date = '0000-00-00 00:00:00';
    }elseif($wppm_date_setting=='d-m-Y H:i:s'){
      $task_start_date = '00-00-0000 00:00:00';
    }elseif($wppm_date_setting=='m-d-Y H:i:s'){
      $task_start_date = '00-00-0000 00:00:00';
    }else{
      $task_start_date = '0000-00-00 00:00:00';
    }
  }if($task->end_date=='0000-00-00 00:00:00'){
    if($wppm_date_setting=='Y-m-d H:i:s'){
      $task_end_date = '0000-00-00 00:00:00';
    }elseif($wppm_date_setting=='d-m-Y H:i:s'){
      $task_end_date = '00-00-0000 00:00:00';
    }elseif($wppm_date_setting=='m-d-Y H:i:s'){
      $task_end_date = '00-00-0000 00:00:00';
    }else{
      $task_end_date = '0000-00-00 00:00:00';
    }
  }if($task->start_date!='0000-00-00 00:00:00'){
    if(!empty($wppm_date_setting)){
      $task_start_date = $tsDate->format($wppm_date_setting);
    }else{
      $task_start_date = isset($task->start_date)? $task->start_date:"";
    }
  }
  if($task->end_date!='0000-00-00 00:00:00'){
    if(!empty($wppm_date_setting)){
      $task_end_date = $teDate->format($wppm_date_setting);
    }else{
      $task_end_date = isset($task->end_date) ? $task->end_date: "" ;
    }
  }
} elseif($wppm_task_time == 0){
    $tsDate = isset($task->start_date) ? new DateTime($task->start_date): "";
    $teDate = isset($task->end_date) ? new DateTime($task->end_date):"";
    $task_start_date = !empty($tsDate) ? $tsDate->format( $wppm_date_setting):"";
    $task_end_date =  !empty($teDate) ? $teDate->format( $wppm_date_setting):"";
    if($task->start_date=='0000-00-00 00:00:00'){
      if($wppm_date_setting=='Y-m-d H:i:s'){
        $task_start_date = '0000-00-00';
      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
        $task_start_date = '00-00-0000';
      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
        $task_start_date = '00-00-0000';
      }else{
        $task_start_date = '0000-00-00';
      }
    }
    if($task->end_date=='0000-00-00 00:00:00'){
      if($wppm_date_setting=='Y-m-d H:i:s'){
        $task_end_date = '0000-00-00';
      }elseif($wppm_date_setting=='d-m-Y H:i:s'){
        $task_end_date = '00-00-0000';
      }elseif($wppm_date_setting=='m-d-Y H:i:s'){
        $task_end_date = '00-00-0000';
      }
      else{
        $task_end_date = '0000-00-00';
      }
    }if($task->start_date!='0000-00-00 00:00:00'){
        if($wppm_date_setting=='Y-m-d H:i:s'){
          $task_start_date = $tsDate->format('Y-m-d');
        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
          $task_start_date = $tsDate->format('d-m-Y');
        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
          $task_start_date = $tsDate->format('m-d-Y');
        }else{
          $task_start_date = $tsDate->format('Y-m-d');
        }
    }if($task->end_date!='0000-00-00 00:00:00'){
      if($wppm_date_setting=='Y-m-d H:i:s'){
          $task_end_date = $teDate->format('Y-m-d');
        }elseif($wppm_date_setting=='d-m-Y H:i:s'){
          $task_end_date = $teDate->format('d-m-Y');
        }elseif($wppm_date_setting=='m-d-Y H:i:s'){
          $task_end_date = $teDate->format('m-d-Y');
        }else{
          $task_end_date = $teDate->format('Y-m-d');
        }
    }
}
$flag = false;
$wppm_task_fillter = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task where id='".esc_sql($id)."'");
if(!empty($wppm_task_fillter)){
  foreach($wppm_task_fillter as $key_filter=>$val_filter){
      $val_array = (array) $val_filter;
      $tusers =  $val_array['users'];
      $tusers_arr = explode(',',$tusers);
      $tproject_id = $val_array['project'];
      $tproject_id = esc_sql($tproject_id);
      if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
        $project_user_role = $wpdb->get_var("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$tproject_id' AND user_id = '$cu_id'");
        $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$tproject_id'");
        $project_users_arr = explode(',',(string)$project_users);
        if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
          $flag= true;
          break;
        }
      }
  }
}
$project_creator = $wpdb->get_var("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = '$cu_id'");
?>
<form id="wppm_open_task" method="post">
  <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
    <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"> <span class="wppm_alert_text"></span>
  </div>
  <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
    <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"> <span class="wppm_alert_text"></span>
  </div>
  <div class="wppm_headers row">
      <div class="col-sm-8">
        <span class="wppm-heading-inline">
          <?php echo esc_html_e('Task','taskbuilder');?>
        </span><?php
        if(($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',$task_id) || ($flag==true) || $project_creator!="") && $task->is_archived!=1){
          $style = "display:inline;";
        }else{
          $style = "display:none;";
        }
        $style = apply_filters('wppm_add_new_task_btn_style_open_task_form',$style);
        if(($wppm_task_fillter && (!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || $wppm_current_user_capability == 'wppm_admin'|| $wppm_current_user_capability == 'wppm_manager' ||  $current_user->has_cap('manage_options') || $project_data['created_by']==$current_user->ID){
          $archive_style= "display:inline;";
        }else{
          $archive_style= "display:none;";
        }
        if($proj_id==0) { 
          ?> <span onclick="wppm_add_new_task(<?php echo esc_attr($proj_id) ?>)" class="wppm_add_new_task_btn" id="wppm_add_new_task_btn" style="<?php echo $style?>" title="Create Task"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
        <?php } 
        else{ ?>
            <span class="wppm_add_new_task_btn" id="wppm_add_new_task_btn" title="Create Task" onclick="wppm_create_project_task(<?php echo esc_attr($proj_id) ?>)" style="<?php echo $style ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="add"></span>
        <?php } ?>
        <?php if($proj_id==0) { 
                $task_list_function =  ($task_list_view==1)?"wppm_get_task_list()":"wppm_view_task_search_filter()";
                ?>
                <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="<?php echo $task_list_function ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list"></span>
        <?php } 
        else{
          ?>
          <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list"></span>
        <?php } ?>
        <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_permission('delete_task',$id)) || $wppm_current_user_capability == 'wppm_admin'|| $project_data['created_by']==$current_user->ID )? "display:inline":"display:none"; ?>
        <?php $clone_style = ((($current_user->ID && $current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin') || ($wppmfunction->has_permission('clone_task',$id)) || $project_data['created_by']==$current_user->ID ) && $task->is_archived!=1) ? "display:inline":"display:none"; ?>
        <?php $ar_css = ($task->is_archived==1) ? "display:none;" : "display:inline"; ?>
        <span class="wppm-delete_task_btn" id="wppm_delete_task_btn" title="Delete Task" onclick="wppm_get_delete_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)" style="<?php echo esc_attr($style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/bin.svg'); ?>" alt="delete"></span>
        <div class="wppm-clone_task_btn" id="wppm_clone_task_btn" title="Clone Task" onclick="wppm_clone_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id)?>)" style="<?php echo esc_attr($clone_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/duplicate.svg'); ?>" alt="clone"></div>
        <span class="wppm-print_task_btn" id="wppm_print_task_btn" title="Print Task" onclick="wppm_print_task(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/printer_menu.svg'); ?>" alt="print" style="<?php echo esc_attr($ar_css);?>"></span>
        <span class="wppm-archieve_task_btn" id="wppm_archieve_task_btn" title="<?php echo ($task->is_archived==1 ) ? 'Restore Task' : 'Archive Task'; ?>" onclick="wppm_archive_task(<?php echo esc_attr($id) ?>,<?php echo esc_attr($task->is_archived) ?>)" style="<?php echo esc_attr($archive_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/archive.svg'); ?>" alt="archive"></span>
        <input type="hidden" name="wppm_archive_task_ajax_nonce" id="wppm_archive_task_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_archive_task_ajax_nonce' ) ); ?>">
        <div class="menu" id="wppmprint_menu" onclick="event.stopPropagation();">
          <a href="#" id="wppm_openPDF" onclick="wppm_open_pdf(<?php echo esc_attr($id) ?>)">🖨️ <?php echo esc_html_e('Open In Browser','taskbuilder');?></a>
          <a href="#" id="wppm_downloadPDF" onclick="wppm_download_pdf(<?php echo esc_attr($id) ?>)">💾 <?php echo esc_html_e('Download PDF','taskbuilder');?></a>
        </div>
        <?php do_action('wppm_individual_task_button',$id);?>
      </div>
  </div>
  <div id="wppm_load_individual_task_container" class="row">
    <div class="col-sm-8 wppm_body col-md-9">
      <div class="wppm_task_details_container">
        <div class="row">
          <div class="col-sm-12">
            <span class="wppm_task_label"> <?php echo esc_html_e($task->task_name,'taskbuilder');
              if (($wppmfunction->has_permission('change_task_details',$id) || $current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin') && $task->is_archived!=1) { ?>
                  <span id="wppm_individual_edit_task_subject" onclick="wppm_edit_task_details(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)" class="btn btn-sm wppm_action_btn" style="background-color:#FFFFFF !important;color:#000000 !important;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
              <?php } ?>
              </span>
          </div>
        </div>
        <div class="row">
          <div class="col-sm-3">
            <span class="wppm_task_details_label"><?php echo esc_html_e('Project:','taskbuilder');?></span>
          </div>
          <div class="col-sm-9">
            <span class="wppm_task_details"><?php echo (isset($project_name))? esc_html_e($project_name,'taskbuilder'):""  ?></span>
          </div>
        </div>
        <div class="row">
          <div class="col-sm-3">
            <span class="wppm_task_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
          </div>
          <div class="col-sm-9"><?php
            $tcDate = isset($task->date_created) ? new DateTime($task->date_created): "";
                if($wppm_task_time !=0){
                  if($wppm_date_setting=='Y-m-d H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
                  } elseif($wppm_date_setting=='d-m-Y H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y H:i:s'):"";
                  } elseif($wppm_date_setting=='m-d-Y H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y H:i:s'):"";
                  } else {
                    $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d H:i:s'):"";
                  }
                } elseif($wppm_task_time == 0){
                  if($wppm_date_setting=='Y-m-d H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
                  } elseif($wppm_date_setting=='d-m-Y H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('d-m-Y'):"";
                  } elseif($wppm_date_setting=='m-d-Y H:i:s'){
                    $task_create_date = !empty($tcDate) ? $tcDate->format('m-d-Y'):"";
                  } else {
                    $task_create_date = !empty($tcDate) ? $tcDate->format('Y-m-d'):"";
                  }
                } ?>
            <span class="wppm_task_details"><?php echo (isset($task_create_date))? esc_html($task_create_date):"" ?></span>
          </div>
        </div>
        <?php if($wppm_default_task_date == 1 && $wppm_deafault_time_duration_task==0){ ?>
                <div class="row">
                  <div class="col-sm-3">
                    <span class="wppm_task_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
                  </div>
                  <div class="col-sm-9">
                    <span class="wppm_task_details" id="wppm_edit_tstart_date"><?php echo (isset($task_start_date))? esc_html($task_start_date):"" ?></span>
                  </div>
                  <input type="hidden" name="wppm_edit_tstart_date_ajax_nonce" id="wppm_edit_tstart_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_task_start_date' ) ); ?>">
                </div>
                <div class="row">
                  <div class="col-sm-3">
                    <span class="wppm_task_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
                  </div>
                  <div class="col-sm-9">
                    <?php $style = (!empty($task->end_date) && ($task->status!=4 && $task->end_date < $current_date && $task->end_date != '0000-00-00 00:00:00' && $task->end_date != '00-00-0000 00:00:00' && $task->end_date != '00-00-0000' && $task->end_date != '0000-00-00')) ? "color:#FF0000":"color:#2C3E50"; ?>
                    <span class="wppm_task_details" id="wppm_edit_tend_date" style="<?php echo esc_attr($style); ?>"><?php echo (isset($task_end_date))? esc_html($task_end_date):"" ?></span>
                  </div>
                  <input type="hidden" name="wppm_edit_tend_date_ajax_nonce" id="wppm_edit_tend_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_task_end_date' ) ); ?>">
                </div>
        <?php }
         if($wppm_deafault_time_duration_task==1){ 
                $wppm_task_duration = $wppmfunction->wppm_get_duration($task->start_date,$task->end_date);
                $tstatus = isset($task->status) ? $task->status :"";
                $style = (!empty($task->end_date) && $tstatus!=4 && $task->end_date < $current_date && ($task->end_date != '0000-00-00 00:00:00' && $task->end_date != '00-00-0000 00:00:00' && $task->end_date != '00-00-0000' && $task->end_date != '0000-00-00')) ? "color:#FF1111":"color:#2C3E51"; ?>
                <div class="row">
                  <div class="col-sm-3">
                    <span class="wppm_task_details_label"><?php echo esc_html_e('Task Duration:','taskbuilder');?></span>
                  </div>
                  <div class="col-sm-9">
                    <span class="wppm_task_details"  id="wppm_edit_task_duration" style="<?php echo esc_attr($style); ?>"><?php echo (isset($wppm_task_duration))? esc_html($wppm_task_duration): "" ?></span>
                  </div>
                </div> <?php
        }?>
        <div class="row">
          <div class="col-sm-3">
            <span class="wppm_task_details_label"><?php echo esc_html_e('Task Priority:','taskbuilder');?></span>
          </div>
          <div class="col-sm-9">
            <span class="wppm_task_details_priority"><span class="wppm_admin_label" style="background-color:<?php echo (isset($task_priority->bg_color))? esc_html($task_priority->bg_color):""?>;color:<?php echo (isset($task_priority->color))? esc_html($task_priority->color):""?>;"><?php echo (isset($task_priority->name)) ? esc_html_e($task_priority->name,'taskbuilder'):"" ?> </span></span>
          </div>
        </div>
        <div class="row">
          <div class="col-sm-3">
            <span class="wppm_task_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
          </div>
          <div class="col-sm-9">
            <span class="wppm_task_description"><?php echo (isset($task_description))? wp_kses_post(wpautop($task_description)):"" ?></span>
          </div>
        </div>
        <?php do_action('wppm_after_task_details_in_open_task',$task->id, $task->project);?>
      </div>
      <div class="wppm_task_checklist_container" id="wppm_task_checklist_container">
        <div id="wppm_checklist_container">
          <?php 
          if(!empty($wppm_checklist)){
            foreach( $wppm_checklist as $key=>$list){
              ?>
              <div class="row">
                <div class="col-sm-8">
                  <span class="wppm_checklist_label"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/checklist.svg'); ?>" alt="checklist"><?php echo esc_html_e($list->checklist_name,'taskbuilder');?></span>
                </div>
                <?php 
                $check_style = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('edit_checklist',$task->id)) && $task->is_archived!=1)? "display:inline":"display:none"; ?>
                <?php $disabled = (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('delete_checklist',$task->id)|| ($wppmfunction->has_permission('add_checklist',0))) && $task->is_archived!=1)? "":"disabled"; ?>
                <?php if($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')){ ?>
                        <div class="col-sm-4" style="text-align:right;<?php echo esc_attr($check_style) ?>">
                          <a class="wppm_delete_checklist" onclick="wppm_delete_checklist(<?php echo esc_attr($list->id);?>,<?php echo esc_attr($task->id);?>,<?php echo esc_attr($proj_id);?>)"><?php echo esc_html_e('Delete Checklist','taskbuilder');?></a>
                          <input type="hidden" name="wppm_delete_checklist_ajax_nonce" id="wppm_delete_checklist_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_delete_checklist' ) ); ?>">
                        </div>
                <?php }?>
              </div> 
              <div class="wppm_progress_bar_container row">
                <div class="col-sm-4">
                    <span class="wppm_progressbar_label" id="wppm_progressbar_label_<?php echo esc_attr($list->id)?>">0%</span>
                </div>
                <div class="wppm_progress_bar col-sm-8">
                  <div id="CheckProgress_<?php echo esc_attr($list->id);?>" class="wppm_checkprogress" role="progressbar" style="width: 0%" aria-valuemin="0" aria-valuemax="100"></div>   
                </div>
              </div>
              <?php
              $list_id = esc_sql($list->id);
              $wppm_checklist_items = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id='$list_id' ORDER BY load_order ASC");
              ?>
              <ul id="wppm_checklist_items_container_<?php echo esc_attr($list->id) ?>" class="wppm_checklist_items_container" style="list-style-type: none; padding-left:0px; margin-top:10px; margin-bottom:10px;">
              <?php
                if(!empty( $wppm_checklist_items)){
                  foreach($wppm_checklist_items as $key=>$val){
                    $checked = $val->checked == 1 ? 'checked="checked"' : '';
                    ?>
                    <li id="wppm_checklist_<?php echo esc_attr($val->id) ?>" data-id="<?php echo esc_attr($val->id); ?>" class="row wppm_checklist_item" style="margin-bottom:10px;font: 15px 'Helvetica Neue',Helvetica,Arial,sans-serif;">
                      <div class="col-sm-8" id="wppm_checklist_item_container_<?php echo esc_attr($val->id) ?>">
                        <span class="wppm_chk_items_drag">☰</span>
                        <input id="wppm_checklist_item_<?php echo esc_attr($val->id) ?>" class="wppm_checklist_item_<?php echo esc_attr($val->checklist_id) ?>" onchange="wppm_checklist_progress(<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($task->id) ?>)" type="checkbox" name="wppm_checklist" <?php echo esc_attr($checked) ?> value="<?php echo esc_attr($val->id) ?>" <?php echo esc_attr($disabled) ?> style="margin:5px;"><label style="padding-top: 5px;font-weight: normal;font: 13px 'Helvetica Neue',Helvetica,Arial,sans-serif;"><?php  echo esc_html_e($val->item_name,'taskbuilder') ?></label>
                        <input type="hidden" name="wppm_checklist_progress_ajax_nonce" id="wppm_checklist_progress_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_checklist_progress' ) ); ?>">
                      </div>
                      <?php if (($list->created_by == $current_user->ID || $current_user->has_cap('manage_options') || $user_role == 1 || $wppmfunction->has_permission('delete_checklist',$task->id)) && $task->is_archived!=1) { ?>
                      <div class="col-sm-4" id="wppm_checklist_action_<?php echo esc_attr($val->id) ?>" style="text-align:right; display:none;cursor:pointer;">
                          <span onclick=wppm_edit_checklist_item(<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr( $proj_id);?>,<?php echo esc_attr($id) ?>)><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
                          <input type="hidden" name="wppm_edit_checklist_item_ajax_nonce" id="wppm_edit_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_edit_checklist_item' ) ); ?>">
                          <span onclick=wppm_delete_checklist_item(<?php echo esc_attr($val->id) ?>,<?php echo esc_attr($val->checklist_id) ?>,<?php echo esc_attr($proj_id);?>,<?php echo esc_attr($id) ?>)><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
                          <input type="hidden" name="wppm_delete_checklist_item_ajax_nonce" id="wppm_delete_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_checklist_item' ) ); ?>">
                      </div>
                      <?php } ?>
                    </li>
                    <?php
                  }
                } ?>
              <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
                <div class="row">
                  <div class="col-sm-12 wppm_add_checklist_item_container_<?php echo esc_attr($list->id) ?>" style="padding-top:15px;">
                    <a class="wppm_add_checklist" id="wppm_add_checklist_item_btn_<?php echo esc_attr($list->id) ?>" onclick="wppm_add_checklist_item(<?php echo esc_attr($list->id)?>)"><?php echo esc_html_e('+ Add item','taskbuilder');?></a>
                  </div>
                </div>
              <?php }?>
              <?php if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
                    <div class="row">
                      <div class="col-sm-12" style="display:none;" id="wppm_add_checklist_label_container_<?php echo esc_attr($list->id) ?>">
                        <div class="row" id="wppm_add_new_checklist_item_<?php echo esc_attr($list->id) ?>">
                          <div class="col-sm-12">
                            <input type="text" id="wppm_checklist_item_label_<?php echo esc_attr($list->id) ?>" class="wppm_checklist_item_label_<?php echo esc_attr($list->id) ?>" placeholder="<?php echo esc_attr__('Add an item','taskbuilder') ?>" name="wppm_checklist_item_label" style="font: 13px 'Helvetica Neue',Helvetica,Arial,sans-serif;">
                            <input type="button" value="Add" class="btn btn-success btn-sm wppm_add_new_item_btn_<?php echo esc_attr($list->id); ?>" onclick="wppm_add_new_checklist_item(<?php echo esc_attr($list->id)?>,<?php echo esc_attr($task->id)?>,<?php echo esc_attr($proj_id) ?>)">
                            <input type="hidden" name="wppm_checklist_item_ajax_nonce" id="wppm_checklist_item_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_add_new_checklist_item' ) ); ?>">
                            <span onclick="wppm_remove_add_checklist_container(<?php echo esc_attr($list->id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="delete"></span>
                          </div>
                        </div>
                        </br>
                      </div>
                    </div>
              <?php }?>
            <hr class="wppm_checklist_divider">
            </ul>
            <?php
            }
          } ?>
        </div><?php 
        if(($wppmfunction->has_permission('add_checklist',$task->id) || $current_user->has_cap('manage_options')) && $task->is_archived!=1){ ?>
          <div id="wppm_add_checklist_container">
            <div class="row">
              <div class="col-sm-12">
                <span id="wppm_add_checklist" onclick="wppm_add_checklist()"> <?php echo esc_html_e('+Add a checklist','taskbuilder')?> </span>
              </div>
            </div>
            <div class="row" id="wppm_add_new_checklist" style="display:none;">
              <div class="col-sm-12">
                <input type="text" class="wppm_checklist_label" placeholder="<?php echo esc_attr__('Please insert checklist title','taskbuilder');?>" id="wppm_checklist_label" name="wppm_checklist_label">
                <input type="button" value="Add" id="wppm_checklist_btn" class="btn btn-success btn-sm" onclick="wppm_add_new_checklist(<?php echo esc_attr($id)?>,<?php echo esc_attr($proj_id) ?>)">
                <input type="hidden" name="wppm_checklist_ajax_nonce" id="wppm_checklist_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_add_new_checklist' ) ); ?>">
                <span onclick="wppm_remove_add_checklist()"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross1.svg'); ?>"></span>
              </div>
            </div>
            </br>
          </div><?php
        } ?>
      </div>
      <div id="wppm_activity_container"  style="<?php echo ($wppm_task_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
        <div class="row">
          <div class="col-sm-12" style="margin-top:5px;">
            <span class="wppm_task_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
          </div>
        </div>
        <div class="row">
          <div class="col-sm-12" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
            <textarea id="wppm_task_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_task_comment()" name="wppm_task_comment"></textarea>
          </div>
        </div>
        <div class="row" id="wppm_comment_btn" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
          <div class="col-sm-6">
            <span id="wppm_attach_file" onclick="wppm_upload_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
          </div>
          <div class="col-sm-6">
            <button type="button" id="wppm_individual_cancel_comment_btn" onclick="wppm_cancel_comment();" class="wppm-btn-cancel">
              <?php echo esc_html_e('Cancel','taskbuilder')?> 
            </button>
            <button type="button" id="wppm_individual_submit_task_comment_btn" style="background-color:<?php echo esc_attr($appearance_settings['comment-send-btn-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['comment-send-btn-color'])?>!important;" onclick="wppm_submit_task_comment(<?php echo esc_attr($id); ?>,<?php echo esc_attr($proj_id); ?>);" class="wppm-btn">
              <?php echo esc_html_e('SEND','taskbuilder')?> 
            </button>
            <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_task_comment' ) ); ?>">
          </div>
        </div>
        <div class="row" style="<?php echo ($task->is_archived==1) ? 'display:none;' : 'display:block;' ?>">
          <div class="wppm_attachment_container col-sm-12" style="display:none;">
          </div>
        </div>
      </div>
      <div class="wppm_thread_container"  style="<?php echo ($wppm_task_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
        <?php 
            if(!empty($task_comment)){
              foreach($task_comment as $comment){
                $task_comment_meta = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_task_comment_meta where task_id='".esc_sql($id)."' AND comment_id='".esc_sql($comment->id)."'");
                $user = get_userdata( $comment->created_by );
                $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
                $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
                $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
                $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
                $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
                if($attachment_ids!=""){
                  $attachments = explode(",",$attachment_ids);
                } else {
                  $attachments = array();
                }
                ?>
                <div class="wppm_thread">
                  <div class="wppm_thread_avatar">
                    <?php echo (get_avatar($comment->created_by, 40));?>
                  </div>
                  <div class="wppm_thread_body">
                    <div class="wppm_thread_user_name">
                      <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo esc_html($user->display_name) ?></strong>
                      <span><?php if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){
                        $comment_log_body = unserialize($comment->body);
                        $prev_status = $comment_log_body['prev_status'];
                        $new_status = $comment_log_body['new_status'];
                        if(isset($prev_status)){
                          $prev_status = esc_sql($prev_status);
                          $task_prev_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id='$prev_status'");
                        }
                        if(isset($new_status)){
                          $new_status = esc_sql($new_status);
                          $task_new_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_statuses where id='$new_status'");
                        }
                        esc_html_e("changed status from $task_prev_status->name to $task_new_status->name","taskbuilder");
                      } if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){
                        $comment_log_body = unserialize($comment->body);
                        $prev_user = $comment_log_body['prev_user'];
                        $new_user = $comment_log_body['new_user'];
                        $prev_user_data = get_userdata($prev_user);
                        $new_user_data = get_userdata($new_user);
                        esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
                      }
                      if( !empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')){
                        esc_html_e("changed the Assignee","taskbuilder");
                      } 
                      if(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){
                        $comment_log_body = unserialize($comment->body);
                        $prev_prio = $comment_log_body['prev_prio'];
                        $new_prio = $comment_log_body['new_prio'];
                        if(isset($prev_prio)){
                          $prev_prio = esc_sql($prev_prio);
                          $task_prev_prio = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id= '$prev_prio'");
                        }
                        if(isset($new_prio)){
                          $new_prio = esc_sql($new_prio);
                          $task_new_prio = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_priorities where id= '$new_prio'");
                        }
                        $task_prev_prio_name = !empty($task_prev_prio) ? $task_prev_prio->name: "None";
                        $task_new_prio_name = !empty($task_new_prio) ? $task_new_prio->name: "None";
                        esc_html_e("changed priority from $task_prev_prio_name to $task_new_prio_name","taskbuilder");
                      }
                      ?>
                      <small class="wppm_comment_date" style="color:<?php echo esc_attr($appearance_settings['comment-date-color']);?>"><i><?php echo esc_html($thread_date) ?></i></small>
                      <div class="wppm_thread_action">
                        <?php if((((($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id))) && ((empty($task_comment_meta->comment_type)) || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='comment')))) && ($task->is_archived!=1)){ ?>
                          <span title="Edit this thread" onclick="wppm_edit_thread(<?php echo esc_attr($comment->id)?>,<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
                          <span title="Delete this thread" onclick="wppm_delete_thread(<?php echo esc_attr($comment->id) ?>,<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
                        <?php } ?>
                      </div>
                    </div>
                    <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
                      <?php 
                      $allowedtags = array( 'br' => array(), 'abbr' => array('title' => array(),), 'p' => array(), 'strong' => array(), 'a' => array('href' => array(), 'title' => array(), 'target'=> array(), 'rel'=>array()),'em' =>array(),'span' =>array(), 'blockquote'=>array('cite'  => array(),),'div' => array('class' => array(),'title' => array(),'style' => array(),),'ul'=>array(),'li'=>array(),'ol'=>array(),'img' => array( 'alt'=> array(),'class' => array(),'height' => array(),'src'=> array(),'width'=> array(),));
                      if(!empty($comment_body) && ((empty($task_comment_meta->comment_type)) || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='comment') || (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='delete_task_comment'))){
                        echo wp_kses(wpautop($comment_body),$allowedtags) ;
                      } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_status')){ ?>
                        <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($task_prev_status->bg_color) ? esc_attr($task_prev_status->bg_color):""; ?>;color:<?php echo isset($task_prev_status->color) ? esc_attr($task_prev_status->color): "" ?>;"><?php echo isset($task_prev_status->name) ? esc_attr($task_prev_status->name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span class="wppm_admin_label" style="margin-left:10px; background-color:<?php echo isset($task_new_status->bg_color) ? esc_attr($task_new_status->bg_color):""; ?>;color:<?php echo isset($task_new_status->color) ? esc_attr($task_new_status->color): "" ?>;"><?php echo isset($task_new_status->name) ? esc_attr($task_new_status->name) : "" ?></span><?php
                      }elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_creator')){ ?>
                        <span style="margin-right: 10px;"><?php echo isset($prev_user_data->display_name) ? esc_attr($prev_user_data->display_name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo isset($new_user_data->display_name) ? esc_attr($new_user_data->display_name) : "" ?></span><?php
                      } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_assign_user')) { 
                        $comment_log_body = unserialize($comment->body);
                        $prev_assign_user = $comment_log_body['prev_assign_user'];
                        $new_assign_user = $comment_log_body['new_assign_user'];
                        $prev_assign_user_array = array();
                        $new_assign_user_array = array();
                        if(!empty($prev_assign_user)){
                          $prev_assign_user_array = explode(",",$prev_assign_user);
                        }
                        if(!empty($new_assign_user)){
                          $new_assign_user_array = explode(",",$new_assign_user);
                        }
                        $assign_user_name = array();
                        $assign_user_name_str = "";
                        if(!empty($prev_assign_user_array)){
                          foreach($prev_assign_user_array as $val){
                            $assign_user = get_userdata($val);
                            $assign_user_name[] = $assign_user->display_name;
                          }
                          $assign_user_name_str = implode(",",$assign_user_name);
                        }
                        $new_assign_user_name = array();
                        $new_assign_user_name_str = "";
                        if(!empty($new_assign_user_array)){
                          foreach($new_assign_user_array as $val){
                            $new_assign_user = get_userdata($val);
                            $new_assign_user_name[] = $new_assign_user->display_name;
                          }
                          $new_assign_user_name_str = implode(",",$new_assign_user_name);
                        }
                        ?>
                        <span style="margin-right: 10px;"><?php echo !empty($assign_user_name) ? esc_attr( $assign_user_name_str) : "None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo !empty($new_assign_user_name_str) ? esc_attr($new_assign_user_name_str) : "None" ?></span><?php
                      } elseif(!empty($comment->body) && (isset($task_comment_meta->comment_type) && $task_comment_meta->comment_type=='change_task_priority')){ ?>
                        <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($task_prev_prio->bg_color) ? esc_attr($task_prev_prio->bg_color):""; ?>;color:<?php echo isset($task_prev_prio->color) ? esc_attr($task_prev_prio->color): "" ?>;"><?php echo !empty($task_prev_prio->name) ? esc_attr($task_prev_prio->name) : "None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span class="wppm_admin_label" style="margin-left:10px; background-color:<?php echo isset($task_new_prio->bg_color) ? esc_attr($task_new_prio->bg_color):""; ?>;color:<?php echo isset($task_new_prio->color) ? esc_attr($task_new_prio->color): "" ?>;"><?php echo !empty($task_new_prio->name) ? esc_attr($task_new_prio->name) : "None" ?></span><?php
                      } ?>
                       
                    </div>
                    <?php 
                    if(!empty($attachments)&& (isset($task_comment_meta->comment_type) && !($task_comment_meta->comment_type=='delete_task_comment'))):?> <br>
                      <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
                      <table class="wppm_attachment_tbl">
                        <tbody>
                        <?php
                        if(!empty($attachments)){
                          foreach( $attachments as $attachment ):
                            $download_url = site_url('/').'?wppm_attachment='.$attachment.'&tid='.$id.'&tac='.$auth_id;
                            $attachment = esc_sql($attachment);
                            $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id='$attachment'");
                            $findStr = ".txt";
                            if(!empty( $attach)){
                              $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
                              $attachment_name = sanitize_file_name($attachment_name);
                            }
                            if((!empty($attachment_name))){
                              ?>
                              <tr class="wppm_attachment_tr">
                                <td>
                                  <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
                                  <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
                                  <?php if((($comment->created_by == $current_user->ID) || ($current_user->has_cap('manage_options')) || ($wppmfunction->has_comment_permission('edit_task_comment',$id,$comment->id))) && ($task->is_archived!=1)){ ?>
                                    <span class="wppm_thread_action_btn" onclick="wppm_thread_attachment_remove(this,<?php echo esc_attr($attach->id); ?>,<?php echo esc_attr($comment->id); ?>,<?php echo esc_attr($id); ?>,<?php echo esc_attr($proj_id);?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="cancel"></span>
                                  <?php } ?>
                                </td>
                              </tr>
                              <input type="hidden" name="wppm_ajax_nonce" id="wppm_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_thread_attachment' ) ); ?>">
                            <?php }
                          endforeach;
                        } ?>
                        </tbody>
                      </table>
                    <?php do_action('wppm_after_comment_attachment',$id,$comment->id);?>
                    <?php endif;?>
                  </div>
                </div>
            <?php } 
            } ?>
      </div>
    </div>
    <div class="wppm_individual_task_widget col-sm-4 wppm_sidebar col-md-3">
      <div class="row wppm_widget" id="wppm_status_widget">
        <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>"> 
          <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
            <?php
            if((($current_user->has_cap('manage_options') || $wppm_current_user_capability == ('wppm_admin')  || ($flag==true) || ($wppmfunction->has_permission('change_task_status',$id))!="") && ($task->is_archived!=1))){
              ?>
              <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_status(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
              <?php
            }
          ?>
        </div>
        <hr class="widget_divider">
        <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
          <div class="wppm_sidebar_labels"><span class="wppm_label_info" style="color:<?php echo esc_attr($appearance_settings['widget-body-label-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?>:</span> <span class="wppm_admin_label" style="background-color:<?php echo (isset($task_status->bg_color))? esc_attr($task_status->bg_color):""?>;color:<?php echo (isset($task_status->color))? esc_attr($task_status->color):""?>;"><?php echo (isset($task_status->name))? esc_attr($task_status->name):"" ?> </span></div>
        </div>
      </div>
      <div class="row wppm_widget" id="wppm_raisedby_widget">
        <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>"> 
          <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>">
          <?php echo esc_html_e('Task Creator','taskbuilder')?></h4>
          <?php if ((($wppmfunction->has_permission('change_raised_by',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
                  <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_creator(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
          <?php } ?>
        </div>
        <hr class="widget_divider"> <?php
        if(isset($task->created_by)){
          $user_info = get_userdata($task->created_by);
        }else{
          $user_info ="";
        }
        ?>
        <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
          <div style="padding:2px 0;">
              <span class="wppm_task_user_avatar"><?php echo (get_avatar($task->created_by, 25, "mysteryman")); ?></span>
              <span class="wppm_task_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>;"><?php echo isset($user_info->display_name)?esc_html($user_info->display_name):""; ?></span>
          </div>
        </div>
      </div>
      <div class="row wppm_widget" id="wppm_task_users_widget_container">
        <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>"> 
          <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>;"><?php echo esc_html_e('Users','taskbuilder')?></h4>
          <?php if ((($wppmfunction->has_permission('assign_task_users',$id ) || $current_user->has_cap('manage_options')) && ($task->is_archived!=1))) { ?>
                    <span class="wppm_edit_task_details_widget" onclick="wppm_edit_task_users(<?php echo esc_attr($id) ?>,<?php echo esc_attr($proj_id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
            <?php } ?>
        </div>
        <hr class="widget_divider">
        <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
          <div id="wppm_task_users">
            <?php 
            $i=0;
            if(!empty($users)){
              foreach($users as $user) { 
                $user_data = get_userdata($user);
                if(!empty($project_data['users'])){
                  $proj_users = explode(',',$project_data['users']);
                  if(in_array($user,$proj_users)){
                    $i++;
                    ?>
                    <div style="padding:2px 0;">
                        <span class="wppm_task_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
                        <span class="wppm_task_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>;"><?php echo ((!empty($user_data))? esc_html($user_data->display_name) :"") ?></span>
                    </div>
                    <?php 
                  }
                }
              }
            }
            if($i==0){ ?>
              <span class="wppm_display_user_none" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"><?php echo esc_html_e('None','taskbuilder'); ?></span> <?php
            } 
            ?>
          </div>
        </div>
      </div>
      <?php do_action('wppm_after_task_widgets',$id,$task_id );?>
    </div>
    <input type="hidden" id="wppm_nonce" value="<?php echo wp_create_nonce('wppm_upload_file')?>">
    <input type="file" id="wppm_attachment_upload" class="hidden" onchange="">
  </div>
</form>
<style>
  .wppm_comment_date i:hover{
    color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
  }
  #Layer_1{
    fill:red!important;
  }
</style>
<script>
jQuery( document ).ready( function( jQuery ) {
  const button = document.getElementById('wppm_print_task_btn');
  const box = document.getElementById('wppmprint_menu');

  // Show box on button click
  button.addEventListener('click', (e) => {
    e.stopPropagation(); // prevent document click from firing immediately
    box.style.display = 'flex';
  });

  // Prevent hiding when clicking inside box
  box.addEventListener('click', (e) => {
    e.stopPropagation();
  });

  // Hide when clicking outside
  document.addEventListener('click', () => {
    box.style.display = 'none';
  });
<?php
  if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
    jQuery("#wppm_edit_tstart_date").flatpickr({
      enableTime: true,
      dateFormat: "Y-m-d H:i",
      onChange: function(selectedDates, dateStr, instance) {
        var data = {
          action: 'wppm_set_change_task_start_date',
          task_id:<?php echo esc_attr($task->id);?>,
          date:dateStr,
          _ajax_nonce:jQuery('#wppm_edit_tstart_date_ajax_nonce').val()
        };
        jQuery.post(wppm_admin.ajax_url, data, function(response) {
          instance.close();
          wppm_open_task(<?php echo esc_attr($task->id);?>);
        }); 
      },
    });
    jQuery("#wppm_edit_tend_date").flatpickr({
      enableTime: true,
      dateFormat: "Y-m-d H:i",
      onChange: function(selectedDates, dateStr, instance) {
        var data = {
          action: 'wppm_set_change_task_end_date',
          task_id:<?php echo esc_attr($task->id);?>,
          date:dateStr,
          _ajax_nonce:jQuery('#wppm_edit_tend_date_ajax_nonce').val()
        };
        jQuery.post(wppm_admin.ajax_url, data, function(response) {
          instance.close();
          wppm_open_task(<?php echo esc_attr($task->id);?>);
        }); 
      },
    });
  <?php } ?>
  <?php foreach ($wppm_checklist as $chklist) { ?>
          var $checkboxes = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>);
          var $progress = jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>);
          var total = $checkboxes.length;
          var checked = jQuery('.wppm_checklist_item_'+<?php echo esc_attr($chklist->id);?>).filter(':checked').length;
          var progressWidth = Math.ceil((checked / total) * 100);
          jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('background','#5ba4cf');
          jQuery('#CheckProgress_'+<?php echo esc_attr($chklist->id);?>).css('width', progressWidth + '%');
          if(progressWidth>0){
            jQuery('#wppm_progressbar_label_'+<?php echo esc_attr($chklist->id);?>).text(progressWidth+'%');
          }
    <?php $wppm_checklist_items = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_checklist_items where checklist_id=".$chklist->id);
          foreach ($wppm_checklist_items as $chkitems) { 
          ?>  jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseover", function () {
                jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","inline");
                jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#e7e8ea");
              })
              jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).on("mouseout", function () {
                jQuery( '#wppm_checklist_action_'+<?php echo esc_attr($chkitems->id);?>).css("display","none");
                jQuery( '#wppm_checklist_'+<?php echo esc_attr($chkitems->id);?>).css("background-color","#ffffff");
              })
          <?php
          }
    } 
    $bold = (isset($wppm_toolbar_actions['bold']) && $wppm_toolbar_actions['bold']==1)? 'bold' :"";
    $italic = (isset($wppm_toolbar_actions['italic']) && $wppm_toolbar_actions['italic']==1)? 'italic' :"";   
    $underline = (isset($wppm_toolbar_actions['underline']) && $wppm_toolbar_actions['underline']==1)?'underline' :"";   
    $blockquote = (isset($wppm_toolbar_actions['blockquote']) && $wppm_toolbar_actions['blockquote']==1)? 'blockquote' :"";   
    $align = (isset($wppm_toolbar_actions['align']) && $wppm_toolbar_actions['align']==1)?  ' alignleft aligncenter alignright ' :"";   
    $bullist = (isset($wppm_toolbar_actions['bullist']) && $wppm_toolbar_actions['bullist']==1)? $bullist = 'bullist' :""; 
    $numlist = (isset($wppm_toolbar_actions['numlist']) && $wppm_toolbar_actions['numlist']==1)? $numlist = 'numlist' :"";     
    $rtl = (isset($wppm_toolbar_actions['rtl']) && $wppm_toolbar_actions['rtl']==1)? $rtl = 'rtl' :"";     
    $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :""; 
    $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";     
    $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :""; 
    $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :""; 
    $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
    if(($wppm_tinymce_visibility_open_task==1)){
     if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
      ?> 
      tinymce.remove();
      tinymce.init({ 
        selector:'#wppm_task_comment',
        body_id: 'wppm_task_comment',
        directionality : '<?php //echo 'rtl'; ?>',
        menubar: false,
        statusbar: false,
        height : '200',
        width  : '100%',
        plugins: [
            'lists link image directionality paste textcolor'
        ],
        image_advtab: true,
        toolbar: '<?php echo $bold ?> <?php echo $italic ?> <?php echo $underline ?> <?php echo $blockquote?> | <?php echo $align ?> | <?php echo $bullist ?> <?php echo $numlist ?> | <?php echo $rtl ?> | <?php echo $link ?> <?php echo $image ?> | <?php echo $forecolor?> <?php echo $backcolor?> <?php echo $strikethrough ?>',
        branding: false,
        autoresize_bottom_margin: 20,
        browser_spellcheck : true,
        relative_urls : false,
        remove_script_host : false,
        convert_urls : true,
        paste_as_text: true,
        setup: function (editor) {
        }
      });
      jQuery('#wppm_comment_btn').show();
      <?php } ?>
    <?php } ?>
});

jQuery(function(jQuery){
    // Checklist Sorting
  jQuery(".wppm_checklist_items_container").sortable({
      handle: ".wppm_chk_items_drag",
      update: function() {
          let order = [];
          jQuery(this).find("li").each(function(){
              order.push(jQuery(this).data("id")); // checklist item id
          });

          // AJAX Save
          jQuery.post(wppm_admin.ajax_url, {
              action: "wppm_update_checklist_order",
              order: order,
              task_id: <?php echo esc_attr($id); ?>,
              _ajax_nonce: '<?php echo esc_attr( wp_create_nonce( 'wppm_update_checklist_order' ) ); ?>'
          }, function(response_str){
              var response = JSON.parse(response_str);
              jQuery('.wppm_submit_wait').hide();
              if (response.sucess_status=='1') {
                jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
              }
              jQuery('#wppm_alert_success').slideDown('fast',function(){});
              setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
          });
      }
  });

});

function wppm_cancel_comment(){ <?php
  if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
  ?>
    tinyMCE. activeEditor. setContent('');
    tinymce.remove('#wppm_task_comment');
    jQuery('#wppm_comment_btn').hide();
  <?php } else{ 
    ?>
    jQuery('#wppm_task_comment').css("width", "80%");
    jQuery('#wppm_task_comment').css("height", "30px");
    jQuery('#wppm_task_comment').css("color", "#000");
    jQuery('#wppm_task_comment').css("padding", "5px");
    jQuery('#wppm_task_comment').css(" margin-bottom", "15px");
    jQuery('#wppm_task_comment').css("overflow", "hidden");
    jQuery('#wppm_task_comment').css("border", "1 px solid #eee");
    jQuery('#wppm_task_comment').css("color", "#eee");
    jQuery('#wppm_task_comment').css("margin-top", "10px");
    jQuery('#wppm_comment_btn').hide();
  <?php }?>
}

function wppm_add_task_comment(){
  <?php
  if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){
  ?> 
  tinymce.remove();
  tinymce.init({ 
    selector:'#wppm_task_comment',
    body_id: 'wppm_task_comment',
    directionality : '<?php //echo 'rtl'; ?>',
    menubar: false,
    statusbar: false,
    height : '200',
    width  : '100%',
    plugins: [
        'lists link image directionality paste textcolor'
    ],
    image_advtab: true,
    toolbar: '<?php echo $bold ?> <?php echo $italic ?> <?php echo $underline ?> <?php echo $blockquote?> | <?php echo $align ?> | <?php echo $bullist ?> <?php echo $numlist ?> | <?php echo $rtl ?> | <?php echo $link ?> <?php echo $image ?> | <?php echo $forecolor?> <?php echo $backcolor?> <?php echo $strikethrough ?>',
    branding: false,
    autoresize_bottom_margin: 20,
    browser_spellcheck : true,
    relative_urls : false,
    remove_script_host : false,
    convert_urls : true,
    paste_as_text: true,
    setup: function (editor) {
    }
  });
  <?php } else{ ?>
    jQuery('#wppm_task_comment').css("width", "100%");
    jQuery('#wppm_task_comment').css("height", "160px");
    jQuery('#wppm_task_comment').css("color", "#000");
  <?php }?>
  jQuery('#wppm_comment_btn').show();
}

function wppm_submit_task_comment(id,proj_id){
  var dataform = new FormData(jQuery('#wppm_open_task')[0]);
  dataform.append('action','wppm_submit_task_comment');
  <?php
  if(!empty($wppm_rich_text_editor) && ($wppm_rich_text_editor == 1)){ ?> 
    var comment_body = tinyMCE.get('wppm_task_comment').getContent().trim();
  <?php } else{ ?>
    var comment_body = jQuery("#wppm_task_comment").val();
  <?php }?>
  dataform.append('comment_body',comment_body);
  dataform.append('task_id',id);
  jQuery('#wppm_task_container').html(wppm_admin.loading_html);
  jQuery.ajax({
    url: wppm_admin.ajax_url,
    type: 'POST',
    data: dataform,
    processData: false,
    contentType: false
  })
  .done(function (response_str) {
    if((proj_id!=0)||(proj_id!="")){
      wppm_open_project_tasks(id,proj_id);
    }else if((proj_id==0)||(proj_id=="")){
      wppm_open_task(id);
    }
  });
}

function wppm_add_checklist_item(checklist_id){
  jQuery('#wppm_add_checklist_label_container_'+checklist_id).show();
  jQuery('#wppm_add_checklist_item_btn_'+checklist_id).hide();
  jQuery('.wppm_add_checklist_label_container_'+checklist_id).show();
  jQuery('.wppm_checklist_item_label_'+checklist_id).css('height', '30px');
  jQuery('.wppm_add_new_item_btn_'+checklist_id).css('margin', '10px');
}

function wppm_add_checklist(){
  jQuery('#wppm_add_checklist').hide();
  jQuery('#wppm_add_new_checklist').show();
}

function wppm_remove_add_checklist_container(checklist_id){
  jQuery('#wppm_add_checklist_label_container_'+checklist_id).hide();
  jQuery('#wppm_add_checklist_item_btn_'+checklist_id).show();
}

function wppm_remove_add_checklist(){
  jQuery('#wppm_add_new_checklist').hide();
  jQuery('#wppm_add_checklist').show();
}

function wppm_upload_file(){
    jQuery('#wppm_attachment_upload').unbind('change');
    jQuery('#wppm_attachment_upload').on('change', function() {
      var flag = false;
      var file = this.files[0];
      jQuery('#wppm_attachment_upload').val('');
      var allowedExtension = ['exe', 'php','js'];
	    var file_name_split = file.name.split('.');
	    var file_extension = file_name_split[file_name_split.length-1];
      file_extension = file_extension.toLowerCase();	
      if( (jQuery.inArray(file_extension,allowedExtension)  > -1)){
        flag = true;
        alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
      };
      <?php
      $max_upload = (int)(ini_get('upload_max_filesize')); ?>
      var current_filesize=file.size/1000000;
      if(current_filesize > <?php echo esc_attr($max_upload); ?>){
				flag = true;
				alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
			}
      if (!flag){
        var html_str = '<div class="wppm_attachment">'+
                          '<div class="progress" style="float: none !important; width: unset !important;">'+
                              '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
                                file.name+
                              '</div>'+
                              '<span class="wppm_attachment_cancel" onclick="wppm_attachment_cancel(this);" style="display:none;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross_icon.svg'); ?>" alt="delete_icon"></span>'+
                          '</div>'+
                        '</div>';
          jQuery('.wppm_attachment_container').show();
          jQuery('.wppm_attachment_container').append(html_str);
          var attachment = jQuery('.wppm_attachment_container').find('.wppm_attachment').last();
          var data = new FormData();
            data.append('file', file);
            data.append('arr_name', file.name);
            data.append('action', 'wppm_upload_file');
            data.append('nonce', jQuery('#wppm_nonce').val().trim());
            jQuery.ajax({
              type: 'post',
              url: wppm_admin.ajax_url,
              data: data,
              xhr: function(){
                var xhr = new window.XMLHttpRequest();
                xhr.upload.addEventListener("progress", function(evt){
                  if (evt.lengthComputable) {
                    var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
                    jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
                  }
                }, false);
                return xhr;
              },
              processData: false,
              contentType: false,
              success: function(response) {
                var return_obj=JSON.parse(response);
                jQuery(attachment).find('.wppm_attachment_cancel').show();
                if( parseInt(return_obj.id) != 0 ){
                  jQuery(attachment).append('<input type="hidden" class="wppm_comment_attachment" name="wppm_comment_attachment[]" value="'+return_obj.id+'">');
                  jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
                }else {
                  jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
                }
              }
            });    
      }
    });
    jQuery('#wppm_attachment_upload').trigger('click');
}
</script>

```
