| 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); |