| @@ -1,142 +1,144 @@ | ||
| 1 | -<?php | |
| 2 | -if ( ! defined( 'ABSPATH' ) ) { | |
| 3 | - exit; // Exit if accessed directly | |
| 4 | -} | |
| 5 | -global $wpdb,$wppmfunction,$current_user; | |
| 6 | -$wppm_users_role = get_option('wppm_user_role'); | |
| 7 | -$proj_id = isset($_POST['proj_id']) ? absint(sanitize_text_field(wp_unslash($_POST['proj_id']))) : '' ; | |
| 8 | -$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); | |
| 9 | -$project = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project where id = %d", $proj_id)); | |
| 10 | -if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_project_permission('assign_project_users',$proj_id) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')))) {exit;} | |
| 11 | -if(!empty($project->users)){ | |
| 12 | - $users = explode(",",$project->users); | |
| 13 | -} | |
| 14 | -$settings = get_option("wppm-ap-modal"); | |
| 15 | -ob_start(); | |
| 16 | -?> | |
| 17 | -<form id="frm_get_project_users"> | |
| 18 | - <div id="wppm_get_users"> | |
| 19 | - <input type="text" id="wppm_user_name" class="wppm_user_name form-control regi_user_autocomplete ui-autocomplete-input" name="user_name" autocomplete="off" placeholder="Search User"> | |
| 20 | - <div class="wppm_filter_display_container" id="wppm_proj_users_display_container"> | |
| 21 | - <?php if(!empty($users)){ | |
| 22 | - foreach($users as $user){ ?> | |
| 23 | - <div id="wppm_user_display_container_<?php echo esc_attr($user)?>" class="row wppm_user_display_container"> | |
| 24 | - <?php | |
| 25 | - $userdata = get_userdata( $user ); | |
| 26 | - $user = absint($user); | |
| 27 | - $project_user = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d", $proj_id, $user)); | |
| 28 | - ?> | |
| 29 | - <div class="flex-container col-sm-4"> | |
| 30 | - <span class="wppm_filter_display_text"> | |
| 31 | - <?php echo esc_html($userdata->display_name); ?> | |
| 32 | - <input type="hidden" name="user_names[]" value="<?php echo esc_attr($user) ?>"> | |
| 33 | - </span> | |
| 34 | - </div> | |
| 35 | - <div class="col-sm-4 wppm_user_role"> | |
| 36 | - <select size="sm" class="form-control" id="wppm_select_user_role_<?php echo esc_attr( $user ); ?>" name="wppm_select_user_role_<?php echo esc_attr( $user ); ?>"> | |
| 37 | - <?php if ( ! empty( $wppm_users_role ) ) : ?> | |
| 38 | - <?php foreach ( $wppm_users_role as $key => $role ) : ?><?php | |
| 39 | - $selected = ( ! empty( $project_user ) && $key == $project_user->role_id ) | |
| 40 | - ? 'selected="selected"' | |
| 41 | - : ''; | |
| 42 | - ?> | |
| 43 | - <option <?php echo esc_attr( $selected ); ?> value="<?php echo esc_attr( $key ); ?>"> | |
| 44 | - <?php echo esc_html( $role['label'] ); ?> | |
| 45 | - </option> | |
| 46 | - <?php endforeach; ?> | |
| 47 | - <?php endif; ?> | |
| 48 | - </select> | |
| 49 | - </div> | |
| 50 | - <div class="col-sm-4 wppm_delete_user_icon"> | |
| 51 | - <span onclick="wppm_remove_filter(<?php echo esc_attr($user)?>);"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span> | |
| 52 | - </div><?php | |
| 53 | - ?> | |
| 54 | - </div> | |
| 55 | - <?php } | |
| 56 | - } else{ | |
| 57 | - ?><span class="wppm_project_users_not_assign_label"><?php echo esc_html_e('None','taskbuilder');?></span><?php | |
| 58 | - } | |
| 59 | - ?> | |
| 60 | - </div> | |
| 61 | - <input type="hidden" name="action" value="wppm_set_project_users" /> | |
| 62 | - <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_project_users' ) ); ?>"> | |
| 63 | - <input type="hidden" id="wppm_proj_id" name="proj_id" value="<?php echo esc_attr($proj_id) ?>" /> | |
| 64 | - </div> | |
| 65 | -</form> | |
| 66 | -<style> | |
| 67 | - li { | |
| 68 | - color:<?php echo esc_attr( $settings['body-text-color'])?>!important; | |
| 69 | - } | |
| 70 | -</style> | |
| 71 | -<script> | |
| 72 | - jQuery(document).ready(function(){ | |
| 73 | - jQuery("input[name='user_name']").keypress(function(e) { | |
| 74 | - //Enter key | |
| 75 | - if (e.which == 13) { | |
| 76 | - return false; | |
| 77 | - } | |
| 78 | - }); | |
| 79 | - | |
| 80 | - jQuery( ".wppm_user_name" ).autocomplete({ | |
| 81 | - minLength: 1, | |
| 82 | - appendTo: jQuery('.wppm_user_name').parent(), | |
| 83 | - source: function( request, response ) { | |
| 84 | - var term = request.term; | |
| 85 | - request = { | |
| 86 | - action: 'wppm_filter_autocomplete', | |
| 87 | - term : term, | |
| 88 | - field : 'users_name', | |
| 89 | - } | |
| 90 | - jQuery.getJSON( wppm_admin.ajax_url, request, function( data, status, xhr ) { | |
| 91 | - response(data); | |
| 92 | - }); | |
| 93 | - }, | |
| 94 | - select: function (event, ui) { | |
| 95 | - var html_str = '<div id="wppm_user_display_container_'+ui.item.user_id+'" class="row wppm_user_display_container">' | |
| 96 | - +'<div class="flex-container col-sm-4">' | |
| 97 | - +'<span class="wppm_filter_display_text">' | |
| 98 | - +ui.item.label | |
| 99 | - +'<input type="hidden" name="user_names[]" value="'+ui.item.user_id+'">' | |
| 100 | - +'</span>' | |
| 101 | - +'</div>' | |
| 102 | - +'<div class="col-sm-4 wppm_user_role">' | |
| 103 | - +'<select size="sm" class="form-control" id="wppm_select_user_role_'+ui.item.user_id+'" name="wppm_select_user_role_'+ui.item.user_id+'">'+ | |
| 104 | - <?php | |
| 105 | - if(!empty($wppm_users_role)){ | |
| 106 | - foreach($wppm_users_role as $key=>$role){ | |
| 107 | - if(!empty($role)){ | |
| 108 | - foreach($role as $k=>$val){ | |
| 109 | - ?>'<option value="<?php echo esc_attr($key) ?>"><?php echo esc_html($role['label']) ?></option>'+<?php | |
| 110 | - } | |
| 111 | - } | |
| 112 | - } | |
| 113 | - } | |
| 114 | - ?> | |
| 115 | - '</select>' | |
| 116 | - +'</div>' | |
| 117 | - +'<div class="col-sm-4 wppm_delete_user_icon">' | |
| 118 | - +'<span onclick="wppm_remove_filter('+ui.item.user_id+');"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>' | |
| 119 | - +'</div>' | |
| 120 | - +'</div>'; | |
| 121 | - jQuery('.wppm_project_users_not_assign_label').hide(); | |
| 122 | - jQuery('#wppm_get_users #wppm_proj_users_display_container').append(html_str); | |
| 123 | - jQuery(this).val(''); return false; | |
| 124 | - } | |
| 125 | - }).focus(function() { | |
| 126 | - jQuery(this).autocomplete("search", ""); | |
| 127 | - }); | |
| 128 | - }); | |
| 129 | -</script> | |
| 130 | -<?php | |
| 131 | -$body = ob_get_clean(); | |
| 132 | -ob_start(); | |
| 133 | -?> | |
| 134 | -<button type="button" class="btn wppm_popup_close" onclick="wppm_modal_close();"><?php echo esc_html_e('Close','taskbuilder');?></button> | |
| 135 | -<button type="button" class="btn wppm_popup_action" onclick="wppm_set_project_users();"><?php echo esc_html_e('Save','taskbuilder');?></button> | |
| 136 | -<?php | |
| 137 | -$footer = ob_get_clean(); | |
| 138 | -$output = array( | |
| 139 | - 'body' => $body, | |
| 140 | - 'footer' => $footer | |
| 141 | -); | |
| 142 | -echo wp_json_encode($output); | |
| 1 | +<?php | |
| 2 | +if ( ! defined( 'ABSPATH' ) ) { | |
| 3 | + exit; // Exit if accessed directly | |
| 4 | +} | |
| 5 | +global $wpdb,$wppmfunction,$current_user; | |
| 6 | +$wppm_users_role = get_option('wppm_user_role'); | |
| 7 | +$proj_id = isset($_POST['proj_id']) ? sanitize_text_field($_POST['proj_id']) : '' ; | |
| 8 | +$proj_id = esc_sql($proj_id); | |
| 9 | +$wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true ); | |
| 10 | +$project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '$proj_id'" ); | |
| 11 | +if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_project_permission('assign_project_users',$proj_id) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')))) {exit;} | |
| 12 | +if(!empty($project->users)){ | |
| 13 | + $users = explode(",",$project->users); | |
| 14 | +} | |
| 15 | +$settings = get_option("wppm-ap-modal"); | |
| 16 | +ob_start(); | |
| 17 | +?> | |
| 18 | +<form id="frm_get_project_users"> | |
| 19 | + <div id="wppm_get_users"> | |
| 20 | + <input type="text" id="wppm_user_name" class="wppm_user_name form-control regi_user_autocomplete ui-autocomplete-input" name="user_name" autocomplete="off" placeholder="Search User"> | |
| 21 | + <div class="wppm_filter_display_container" id="wppm_proj_users_display_container"> | |
| 22 | + <?php if(!empty($users)){ | |
| 23 | + foreach($users as $user){ ?> | |
| 24 | + <div id="wppm_user_display_container_<?php echo esc_attr($user)?>" class="row wppm_user_display_container"> | |
| 25 | + <?php | |
| 26 | + $userdata = get_userdata( $user ); | |
| 27 | + $user = esc_sql($user); | |
| 28 | + $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$proj_id' AND user_id = '$user'"); | |
| 29 | + ?> | |
| 30 | + <div class="flex-container col-sm-4"> | |
| 31 | + <span class="wppm_filter_display_text"> | |
| 32 | + <?php echo esc_html_e($userdata->display_name,'taskbuilder'); ?> | |
| 33 | + <input type="hidden" name="user_names[]" value="<?php echo esc_attr($user) ?>"> | |
| 34 | + </span> | |
| 35 | + </div> | |
| 36 | + <div class="col-sm-4 wppm_user_role"> | |
| 37 | + <select size="sm" class="form-control" id="wppm_select_user_role_<?php echo esc_attr($user) ?>" name="wppm_select_user_role_<?php echo esc_attr($user) ?>"> | |
| 38 | + <?php | |
| 39 | + if(!empty($wppm_users_role)){ | |
| 40 | + foreach($wppm_users_role as $key=>$role){ | |
| 41 | + if(!empty($role)){ | |
| 42 | + foreach($role as $k=>$val){ | |
| 43 | + $selected = (!empty($project_user) && $key == $project_user->role_id) ? 'selected="selected"' : ''; | |
| 44 | + ?><option <?php echo $selected?> value="<?php echo esc_attr($key) ?>"><?php echo esc_html_e($role['label'],'taskbuilder') ?></option><?php | |
| 45 | + } | |
| 46 | + } | |
| 47 | + } | |
| 48 | + } | |
| 49 | + ?> | |
| 50 | + </select> | |
| 51 | + </div> | |
| 52 | + <div class="col-sm-4 wppm_delete_user_icon"> | |
| 53 | + <span onclick="wppm_remove_filter(<?php echo esc_attr($user)?>);"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span> | |
| 54 | + </div><?php | |
| 55 | + ?> | |
| 56 | + </div> | |
| 57 | + <?php } | |
| 58 | + } else{ | |
| 59 | + ?><span class="wppm_project_users_not_assign_label"><?php echo esc_html_e('None','wp_projects');?></span><?php | |
| 60 | + } | |
| 61 | + ?> | |
| 62 | + </div> | |
| 63 | + <input type="hidden" name="action" value="wppm_set_project_users" /> | |
| 64 | + <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_project_users' ) ); ?>"> | |
| 65 | + <input type="hidden" id="wppm_proj_id" name="proj_id" value="<?php echo esc_attr($proj_id) ?>" /> | |
| 66 | + </div> | |
| 67 | +</form> | |
| 68 | +<style> | |
| 69 | + li { | |
| 70 | + color:<?php echo esc_attr( $settings['body-text-color'])?>!important; | |
| 71 | + } | |
| 72 | +</style> | |
| 73 | +<script> | |
| 74 | + jQuery(document).ready(function(){ | |
| 75 | + jQuery("input[name='user_name']").keypress(function(e) { | |
| 76 | + //Enter key | |
| 77 | + if (e.which == 13) { | |
| 78 | + return false; | |
| 79 | + } | |
| 80 | + }); | |
| 81 | + | |
| 82 | + jQuery( ".wppm_user_name" ).autocomplete({ | |
| 83 | + minLength: 1, | |
| 84 | + appendTo: jQuery('.wppm_user_name').parent(), | |
| 85 | + source: function( request, response ) { | |
| 86 | + var term = request.term; | |
| 87 | + request = { | |
| 88 | + action: 'wppm_filter_autocomplete', | |
| 89 | + term : term, | |
| 90 | + field : 'users_name', | |
| 91 | + } | |
| 92 | + jQuery.getJSON( wppm_admin.ajax_url, request, function( data, status, xhr ) { | |
| 93 | + response(data); | |
| 94 | + }); | |
| 95 | + }, | |
| 96 | + select: function (event, ui) { | |
| 97 | + var html_str = '<div id="wppm_user_display_container_'+ui.item.user_id+'" class="row wppm_user_display_container">' | |
| 98 | + +'<div class="flex-container col-sm-4">' | |
| 99 | + +'<span class="wppm_filter_display_text">' | |
| 100 | + +ui.item.label | |
| 101 | + +'<input type="hidden" name="user_names[]" value="'+ui.item.user_id+'">' | |
| 102 | + +'</span>' | |
| 103 | + +'</div>' | |
| 104 | + +'<div class="col-sm-4 wppm_user_role">' | |
| 105 | + +'<select size="sm" class="form-control" id="wppm_select_user_role_'+ui.item.user_id+'" name="wppm_select_user_role_'+ui.item.user_id+'">'+ | |
| 106 | + <?php | |
| 107 | + if(!empty($wppm_users_role)){ | |
| 108 | + foreach($wppm_users_role as $key=>$role){ | |
| 109 | + if(!empty($role)){ | |
| 110 | + foreach($role as $k=>$val){ | |
| 111 | + ?>'<option value="<?php echo esc_attr($key) ?>"><?php echo esc_html_e($role['label'],'taskbuilder') ?></option>'+<?php | |
| 112 | + } | |
| 113 | + } | |
| 114 | + } | |
| 115 | + } | |
| 116 | + ?> | |
| 117 | + '</select>' | |
| 118 | + +'</div>' | |
| 119 | + +'<div class="col-sm-4 wppm_delete_user_icon">' | |
| 120 | + +'<span onclick="wppm_remove_filter('+ui.item.user_id+');"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>' | |
| 121 | + +'</div>' | |
| 122 | + +'</div>'; | |
| 123 | + jQuery('.wppm_project_users_not_assign_label').hide(); | |
| 124 | + jQuery('#wppm_get_users #wppm_proj_users_display_container').append(html_str); | |
| 125 | + jQuery(this).val(''); return false; | |
| 126 | + } | |
| 127 | + }).focus(function() { | |
| 128 | + jQuery(this).autocomplete("search", ""); | |
| 129 | + }); | |
| 130 | + }); | |
| 131 | +</script> | |
| 132 | +<?php | |
| 133 | +$body = ob_get_clean(); | |
| 134 | +ob_start(); | |
| 135 | +?> | |
| 136 | +<button type="button" class="btn wppm_popup_close" onclick="wppm_modal_close();"><?php echo esc_html_e('Close','taskbuilder');?></button> | |
| 137 | +<button type="button" class="btn wppm_popup_action" onclick="wppm_set_project_users();"><?php echo esc_html_e('Save','taskbuilder');?></button> | |
| 138 | +<?php | |
| 139 | +$footer = ob_get_clean(); | |
| 140 | +$output = array( | |
| 141 | + 'body' => $body, | |
| 142 | + 'footer' => $footer | |
| 143 | +); | |
| 144 | +echo json_encode($output); | |