Plugin Directory

Changeset 3399768


Ignore:
Timestamp:
11/20/2025 01:27:07 PM (4 months ago)
Author:
taskbuilder
Message:

print task

Location:
taskbuilder
Files:
52 added
22 edited
1 copied

Legend:

Unmodified
Added
Removed
  • taskbuilder/tags/5.0.0/asset/css/admin.css

    r3329577 r3399768  
    980980  cursor:pointer;
    981981}
    982 .wppm_add_new_task_btn, #wppm_task_list_btn,#wppm_delete_btn,#wppm_delete_task_btn,#wppm_clone_task_btn{
     982.wppm_add_new_task_btn, #wppm_task_list_btn,#wppm_delete_btn,#wppm_delete_task_btn,#wppm_clone_task_btn,#wppm_print_task_btn{
    983983  cursor: pointer;
    984984}
     
    15421542    }
    15431543  }
     1544
     1545#wppmprint_menu{
     1546  display: flex;
     1547  flex-direction: column;
     1548  position: absolute;
     1549  background: white;
     1550  border: 1px solid #ccc;
     1551  z-index: 1000;
     1552  margin-left: 155px;
     1553  display: none;
     1554}
     1555
     1556#wppmprint_menu a {
     1557  padding: 8px 12px;
     1558  text-decoration: none;
     1559  color: #333;
     1560}
     1561
     1562#wppmprint_menu a:hover {
     1563  background: #f0f0f0;
     1564}
  • taskbuilder/tags/5.0.0/asset/js/admin.js

    r3342822 r3399768  
    22762276  });
    22772277}
     2278
     2279function wppm_print_task(id){
     2280  jQuery('#wppmprint_menu').css('display', 'flex');
     2281}
     2282
     2283function wppm_open_pdf(id){
     2284  window.open(wppm_admin.ajax_url + "?action=wppm_get_task_pdf&id=" + id, "_blank");
     2285}
     2286
     2287function wppm_download_pdf(id){
     2288  window.open(wppm_admin.ajax_url + "?action=wppm_download_pdf&id=" + id, "_blank");
     2289}
     2290
     2291function wppm_get_print_task_settings(){
     2292  jQuery('.wppm_setting_pills li').removeClass('active');
     2293  jQuery('#wppm_settings_print_task').addClass('active');
     2294  jQuery('.wppm_setting_col2').html(wppm_admin.loading_html);
     2295  var data = {
     2296    action: 'wppm_get_print_task_settings'
     2297  };
     2298  jQuery.post(wppm_admin.ajax_url, data, function(response) {
     2299    jQuery('.wppm_setting_col2').html(response);
     2300  });
     2301}
     2302
     2303function wppm_set_print_task_settings(){
     2304  jQuery('.wppm_submit_wait').show();
     2305  var dataform = new FormData(jQuery('#wppm_print_task_settings')[0]);
     2306  jQuery.ajax({
     2307    url: wppm_admin.ajax_url,
     2308    type: 'POST',
     2309    data: dataform,
     2310    processData: false,
     2311    contentType: false
     2312  })
     2313  .done(function (response_str) {
     2314    var response = JSON.parse(response_str);
     2315    jQuery('.wppm_submit_wait').hide();
     2316    if (response.sucess_status=='1') {
     2317      jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
     2318    }
     2319    jQuery('#wppm_alert_success').slideDown('fast',function(){});
     2320    setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
     2321  });
     2322}
     2323
  • taskbuilder/tags/5.0.0/includes/admin/settings.php

    r3342822 r3399768  
    2828        <li id="wppm_settings_coworker" role="presentation"><a href="javascript:wppm_get_coworker_permission_settings();"><?php echo esc_html_e('Co-workers Permission','taskbuilder');?></a></li>
    2929        <li id="wppm_settings_rich_text_editor" role="presentation"><a href="javascript:wppm_get_rich_text_editor_settings();"><?php echo esc_html_e('Rich Text Editor','taskbuilder');?></a></li>
     30        <li id="wppm_settings_print_task" role="presentation"><a href="javascript:wppm_get_print_task_settings();"><?php echo esc_html_e('Print Task','taskbuilder');?></a></li>
    3031        <?php do_action('wppm_after_setting_pills');?>
    3132      </ul>
  • taskbuilder/tags/5.0.0/includes/admin/tasks/open_task/wppm_open_task.php

    r3329577 r3399768  
    206206        <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>
    207207        <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>
     208        <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"></span>
     209        <div class="menu" id="wppmprint_menu" onclick="event.stopPropagation();">
     210          <a href="#" id="wppm_openPDF" onclick="wppm_open_pdf(<?php echo esc_attr($id) ?>)">🖨️ <?php echo esc_html_e('Open In Browser','taskbuilder');?></a>
     211          <a href="#" id="wppm_downloadPDF" onclick="wppm_download_pdf(<?php echo esc_attr($id) ?>)">💾 <?php echo esc_html_e('Download PDF','taskbuilder');?></a>
     212        </div>
    208213        <?php do_action('wppm_individual_task_button',$id);?>
    209214      </div>
     
    676681</style>
    677682<script>
     683  const button = document.getElementById('wppm_print_task_btn');
     684  const box = document.getElementById('wppmprint_menu');
     685
     686  // Show box on button click
     687  button.addEventListener('click', (e) => {
     688    e.stopPropagation(); // prevent document click from firing immediately
     689    box.style.display = 'flex';
     690  });
     691
     692  // Prevent hiding when clicking inside box
     693  box.addEventListener('click', (e) => {
     694    e.stopPropagation();
     695  });
     696
     697  // Hide when clicking outside
     698  document.addEventListener('click', () => {
     699    box.style.display = 'none';
     700  });
    678701jQuery( document ).ready( function( jQuery ) {<?php
    679702  if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
  • taskbuilder/tags/5.0.0/includes/class-wppm-admin.php

    r3350878 r3399768  
    166166            add_action( 'wp_ajax_wppm_search_wp_pages', array($this, 'wppm_search_wp_pages'));
    167167      add_action( 'wp_ajax_wppm_set_page_settings',array($this,'wppm_set_page_settings'));
     168      add_action( 'wp_ajax_wppm_get_task_pdf', array($this, 'wppm_get_task_pdf'));
     169      add_action( 'wp_ajax_wppm_download_pdf', array($this, 'wppm_download_pdf'),100,2);
     170      add_action('wp_ajax_wppm_get_print_task_settings',array($this,'wppm_get_print_task_settings'));
     171      add_action('wp_ajax_wppm_set_print_task_settings',array($this,'wppm_set_print_task_settings'));
    168172    }
    169173   
     
    11091113      die();
    11101114    }
    1111    
    1112   }
     1115
     1116    public function wppm_get_task_pdf(){
     1117      include WPPM_ABSPATH.'includes/admin/wppm_get_task_pdf.php';
     1118      die();
     1119    }
     1120
     1121    public function wppm_download_pdf(){
     1122      include WPPM_ABSPATH.'includes/admin/wppm_download_pdf.php';
     1123      die();
     1124    }
     1125
     1126    public function wppm_get_print_task_settings(){
     1127      include WPPM_ABSPATH.'includes/admin/settings/wppm_get_print_task_settings.php';
     1128      die();
     1129    }
     1130
     1131    public function wppm_set_print_task_settings(){
     1132      include WPPM_ABSPATH.'includes/admin/settings/wppm_set_print_task_settings.php';
     1133      die();
     1134    }
     1135}
    11131136 
    11141137endif;
  • taskbuilder/tags/5.0.0/includes/frontend/shortcode.php

    r3329577 r3399768  
    102102                <?php }
    103103                if((isset($_REQUEST['project-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    104                   wppm_open_project(<?php echo $_REQUEST['project-id'] ?>);
     104                  wppm_open_project(<?php echo esc_js(sanitize_text_field($_REQUEST['project-id'])); ?>);
    105105                <?php }
    106106              }
  • taskbuilder/tags/5.0.0/includes/frontend/wppm_public_projects_tasks.php

    r3286301 r3399768  
    107107                  }
    108108                  if((isset($_REQUEST['task-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    109                         wppm_open_task(<?php echo $_REQUEST['task-id'] ?>);
     109                          wppm_open_task(<?php echo esc_js(sanitize_text_field($_REQUEST['task-id'])); ?>);
    110110                 <?php }
    111111                }
  • taskbuilder/tags/5.0.0/includes/frontend/wppm_tasks_shortcode.php

    r3329577 r3399768  
    109109                  }
    110110                  if((isset($_REQUEST['task-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    111                         wppm_open_task(<?php echo $_REQUEST['task-id'] ?>);
     111                        wppm_open_task(<?php echo esc_js(sanitize_text_field($_REQUEST['task-id'])); ?>);
    112112                 <?php }
    113113                }
  • taskbuilder/tags/5.0.0/includes/wppm-install.php

    r3329577 r3399768  
    471471        }
    472472
     473        if($installed_version < '5.0.0'){
     474            $wppm_print_settings = array(
     475            'wppm_print_body_font_size' => 10);
     476            update_option('wppm_print_settings',$wppm_print_settings);
     477        }
     478
    473479        // update wppm_version option to plugin version
    474480        update_option( 'wppm_version', WPPM_VERSION );
  • taskbuilder/tags/5.0.0/readme.txt

    r3380030 r3399768  
    1 === Taskbuilder - Project Management, Task Management, Kanban Board, Goal Tracking,Team Collaboration  ===
     1=== Taskbuilder - Wordpress Project Management & Task Management  ===
    22Contributors: taskbuilder
    33Donate link: https://taskbuilder.net
     
    55Requires at least: 4.4
    66Tested up to: 6.8.3
    7 Stable tag: 4.0.9
     7Stable tag: 5.0.0
    88License: GPL v3
    99
     
    118118
    119119== Changelog ==
     120= V 5.0.0(November 20,2025) =
     121* Fix: XSS Vulnerability.
     122* New: Print task feature in open task view. PDF Open in browser or download option are available.
     123* Fix(pro feature): Recurrent Task add-on small bug fix.
     124
    120125= V 4.0.9(October 17,2025) =
    121126* New: Portuguese (Brazil) Translation added.
  • taskbuilder/tags/5.0.0/taskbuilder.php

    r3380030 r3399768  
    44 * Plugin URI: https://wordpress.org/plugins/taskbuilder/
    55 * Description: Wordpress Project Management & Task Management plugin. Easy to keep track of projects & tasks!
    6  * Version: 4.0.9
     6 * Version: 5.0.0
    77 * Author: Taskbuilder Team
    88 * Author URI: https://taskbuilder.net/
     
    2020 
    2121  final class WP_Taskbuilder {
    22     public $version    = '4.0.9';
     22    public $version    = '5.0.0';
    2323    public function __construct() {
    2424      // define global constants
  • taskbuilder/trunk/asset/css/admin.css

    r3329577 r3399768  
    980980  cursor:pointer;
    981981}
    982 .wppm_add_new_task_btn, #wppm_task_list_btn,#wppm_delete_btn,#wppm_delete_task_btn,#wppm_clone_task_btn{
     982.wppm_add_new_task_btn, #wppm_task_list_btn,#wppm_delete_btn,#wppm_delete_task_btn,#wppm_clone_task_btn,#wppm_print_task_btn{
    983983  cursor: pointer;
    984984}
     
    15421542    }
    15431543  }
     1544
     1545#wppmprint_menu{
     1546  display: flex;
     1547  flex-direction: column;
     1548  position: absolute;
     1549  background: white;
     1550  border: 1px solid #ccc;
     1551  z-index: 1000;
     1552  margin-left: 155px;
     1553  display: none;
     1554}
     1555
     1556#wppmprint_menu a {
     1557  padding: 8px 12px;
     1558  text-decoration: none;
     1559  color: #333;
     1560}
     1561
     1562#wppmprint_menu a:hover {
     1563  background: #f0f0f0;
     1564}
  • taskbuilder/trunk/asset/js/admin.js

    r3342822 r3399768  
    22762276  });
    22772277}
     2278
     2279function wppm_print_task(id){
     2280  jQuery('#wppmprint_menu').css('display', 'flex');
     2281}
     2282
     2283function wppm_open_pdf(id){
     2284  window.open(wppm_admin.ajax_url + "?action=wppm_get_task_pdf&id=" + id, "_blank");
     2285}
     2286
     2287function wppm_download_pdf(id){
     2288  window.open(wppm_admin.ajax_url + "?action=wppm_download_pdf&id=" + id, "_blank");
     2289}
     2290
     2291function wppm_get_print_task_settings(){
     2292  jQuery('.wppm_setting_pills li').removeClass('active');
     2293  jQuery('#wppm_settings_print_task').addClass('active');
     2294  jQuery('.wppm_setting_col2').html(wppm_admin.loading_html);
     2295  var data = {
     2296    action: 'wppm_get_print_task_settings'
     2297  };
     2298  jQuery.post(wppm_admin.ajax_url, data, function(response) {
     2299    jQuery('.wppm_setting_col2').html(response);
     2300  });
     2301}
     2302
     2303function wppm_set_print_task_settings(){
     2304  jQuery('.wppm_submit_wait').show();
     2305  var dataform = new FormData(jQuery('#wppm_print_task_settings')[0]);
     2306  jQuery.ajax({
     2307    url: wppm_admin.ajax_url,
     2308    type: 'POST',
     2309    data: dataform,
     2310    processData: false,
     2311    contentType: false
     2312  })
     2313  .done(function (response_str) {
     2314    var response = JSON.parse(response_str);
     2315    jQuery('.wppm_submit_wait').hide();
     2316    if (response.sucess_status=='1') {
     2317      jQuery('#wppm_alert_success .wppm_alert_text').text(response.messege);
     2318    }
     2319    jQuery('#wppm_alert_success').slideDown('fast',function(){});
     2320    setTimeout(function(){ jQuery('#wppm_alert_success').slideUp('fast',function(){}); }, 3000);
     2321  });
     2322}
     2323
  • taskbuilder/trunk/includes/admin/settings.php

    r3342822 r3399768  
    2828        <li id="wppm_settings_coworker" role="presentation"><a href="javascript:wppm_get_coworker_permission_settings();"><?php echo esc_html_e('Co-workers Permission','taskbuilder');?></a></li>
    2929        <li id="wppm_settings_rich_text_editor" role="presentation"><a href="javascript:wppm_get_rich_text_editor_settings();"><?php echo esc_html_e('Rich Text Editor','taskbuilder');?></a></li>
     30        <li id="wppm_settings_print_task" role="presentation"><a href="javascript:wppm_get_print_task_settings();"><?php echo esc_html_e('Print Task','taskbuilder');?></a></li>
    3031        <?php do_action('wppm_after_setting_pills');?>
    3132      </ul>
  • taskbuilder/trunk/includes/admin/tasks/open_task/wppm_open_task.php

    r3329577 r3399768  
    206206        <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>
    207207        <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>
     208        <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"></span>
     209        <div class="menu" id="wppmprint_menu" onclick="event.stopPropagation();">
     210          <a href="#" id="wppm_openPDF" onclick="wppm_open_pdf(<?php echo esc_attr($id) ?>)">🖨️ <?php echo esc_html_e('Open In Browser','taskbuilder');?></a>
     211          <a href="#" id="wppm_downloadPDF" onclick="wppm_download_pdf(<?php echo esc_attr($id) ?>)">💾 <?php echo esc_html_e('Download PDF','taskbuilder');?></a>
     212        </div>
    208213        <?php do_action('wppm_individual_task_button',$id);?>
    209214      </div>
     
    676681</style>
    677682<script>
     683  const button = document.getElementById('wppm_print_task_btn');
     684  const box = document.getElementById('wppmprint_menu');
     685
     686  // Show box on button click
     687  button.addEventListener('click', (e) => {
     688    e.stopPropagation(); // prevent document click from firing immediately
     689    box.style.display = 'flex';
     690  });
     691
     692  // Prevent hiding when clicking inside box
     693  box.addEventListener('click', (e) => {
     694    e.stopPropagation();
     695  });
     696
     697  // Hide when clicking outside
     698  document.addEventListener('click', () => {
     699    box.style.display = 'none';
     700  });
    678701jQuery( document ).ready( function( jQuery ) {<?php
    679702  if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task->id))){ ?>
  • taskbuilder/trunk/includes/class-wppm-admin.php

    r3350878 r3399768  
    166166            add_action( 'wp_ajax_wppm_search_wp_pages', array($this, 'wppm_search_wp_pages'));
    167167      add_action( 'wp_ajax_wppm_set_page_settings',array($this,'wppm_set_page_settings'));
     168      add_action( 'wp_ajax_wppm_get_task_pdf', array($this, 'wppm_get_task_pdf'));
     169      add_action( 'wp_ajax_wppm_download_pdf', array($this, 'wppm_download_pdf'),100,2);
     170      add_action('wp_ajax_wppm_get_print_task_settings',array($this,'wppm_get_print_task_settings'));
     171      add_action('wp_ajax_wppm_set_print_task_settings',array($this,'wppm_set_print_task_settings'));
    168172    }
    169173   
     
    11091113      die();
    11101114    }
    1111    
    1112   }
     1115
     1116    public function wppm_get_task_pdf(){
     1117      include WPPM_ABSPATH.'includes/admin/wppm_get_task_pdf.php';
     1118      die();
     1119    }
     1120
     1121    public function wppm_download_pdf(){
     1122      include WPPM_ABSPATH.'includes/admin/wppm_download_pdf.php';
     1123      die();
     1124    }
     1125
     1126    public function wppm_get_print_task_settings(){
     1127      include WPPM_ABSPATH.'includes/admin/settings/wppm_get_print_task_settings.php';
     1128      die();
     1129    }
     1130
     1131    public function wppm_set_print_task_settings(){
     1132      include WPPM_ABSPATH.'includes/admin/settings/wppm_set_print_task_settings.php';
     1133      die();
     1134    }
     1135}
    11131136 
    11141137endif;
  • taskbuilder/trunk/includes/frontend/shortcode.php

    r3329577 r3399768  
    102102                <?php }
    103103                if((isset($_REQUEST['project-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    104                   wppm_open_project(<?php echo $_REQUEST['project-id'] ?>);
     104                  wppm_open_project(<?php echo esc_js(sanitize_text_field($_REQUEST['project-id'])); ?>);
    105105                <?php }
    106106              }
  • taskbuilder/trunk/includes/frontend/wppm_public_projects_tasks.php

    r3286301 r3399768  
    107107                  }
    108108                  if((isset($_REQUEST['task-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    109                         wppm_open_task(<?php echo $_REQUEST['task-id'] ?>);
     109                          wppm_open_task(<?php echo esc_js(sanitize_text_field($_REQUEST['task-id'])); ?>);
    110110                 <?php }
    111111                }
  • taskbuilder/trunk/includes/frontend/wppm_tasks_shortcode.php

    r3329577 r3399768  
    109109                  }
    110110                  if((isset($_REQUEST['task-id'])) && (!empty(sanitize_text_field($_REQUEST['auth-code'] )))){ ?>
    111                         wppm_open_task(<?php echo $_REQUEST['task-id'] ?>);
     111                        wppm_open_task(<?php echo esc_js(sanitize_text_field($_REQUEST['task-id'])); ?>);
    112112                 <?php }
    113113                }
  • taskbuilder/trunk/includes/wppm-install.php

    r3329577 r3399768  
    471471        }
    472472
     473        if($installed_version < '5.0.0'){
     474            $wppm_print_settings = array(
     475            'wppm_print_body_font_size' => 10);
     476            update_option('wppm_print_settings',$wppm_print_settings);
     477        }
     478
    473479        // update wppm_version option to plugin version
    474480        update_option( 'wppm_version', WPPM_VERSION );
  • taskbuilder/trunk/readme.txt

    r3380030 r3399768  
    1 === Taskbuilder - Project Management, Task Management, Kanban Board, Goal Tracking,Team Collaboration  ===
     1=== Taskbuilder - Wordpress Project Management & Task Management  ===
    22Contributors: taskbuilder
    33Donate link: https://taskbuilder.net
     
    55Requires at least: 4.4
    66Tested up to: 6.8.3
    7 Stable tag: 4.0.9
     7Stable tag: 5.0.0
    88License: GPL v3
    99
     
    118118
    119119== Changelog ==
     120= V 5.0.0(November 20,2025) =
     121* Fix: XSS Vulnerability.
     122* New: Print task feature in open task view. PDF Open in browser or download option are available.
     123* Fix(pro feature): Recurrent Task add-on small bug fix.
     124
    120125= V 4.0.9(October 17,2025) =
    121126* New: Portuguese (Brazil) Translation added.
  • taskbuilder/trunk/taskbuilder.php

    r3380030 r3399768  
    44 * Plugin URI: https://wordpress.org/plugins/taskbuilder/
    55 * Description: Wordpress Project Management & Task Management plugin. Easy to keep track of projects & tasks!
    6  * Version: 4.0.9
     6 * Version: 5.0.0
    77 * Author: Taskbuilder Team
    88 * Author URI: https://taskbuilder.net/
     
    2020 
    2121  final class WP_Taskbuilder {
    22     public $version    = '4.0.9';
     22    public $version    = '5.0.0';
    2323    public function __construct() {
    2424      // define global constants
Note: See TracChangeset for help on using the changeset viewer.