1267c3c0 by Jeff Balicki

mark as completed

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent 780641d1
...@@ -122,23 +122,3 @@ function certs(){ ...@@ -122,23 +122,3 @@ function certs(){
122 error_log("certs()". $e->getMessage()) ; 122 error_log("certs()". $e->getMessage()) ;
123 } 123 }
124 } 124 }
125
126 add_filter(
127 'learndash_header_data',
128 function( $header_data, $menu_tab_key, $admin_tab_sets ) {
129 $header_data['tabs'] = array_merge(
130 $header_data['tabs'],
131 array(
132 array(
133 'id' => $screen_post_type . '-settings',
134 'name' => esc_html__( 'Mark as Completed', 'learndash' ),
135 'metaboxes' => [ 'learndash-course-users-management' ],
136 'showDocumentSidebar' => 'false',
137 ),
138 )
139 );
140 return $header_data;
141 },
142 30,
143 3
144 );
......
1 <?php 1 <?php
2 /**
3 * LearnDash Settings Metabox for Course Access Settings.
4 *
5 * @since 3.1.0
6 * @package LearnDash\Settings\Metaboxes
7 */
8 2
9 if ( ! defined( 'ABSPATH' ) ) { 3 if ( ! defined( 'ABSPATH' ) ) {
10 exit; 4 exit;
11 } 5 }
12 6
13 if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) { 7 if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) {
14 /** 8
15 * Class LearnDash Settings Metabox for Course Access Settings.
16 *
17 * @since 3.1.0
18 */
19 class LearnDash_Settings_Metabox_Course_Users_Management extends LearnDash_Settings_Metabox { 9 class LearnDash_Settings_Metabox_Course_Users_Management extends LearnDash_Settings_Metabox {
20 10
21 /** 11
22 * Public constructor for class
23 *
24 * @since 3.1.0
25 */
26 public function __construct() { 12 public function __construct() {
27 // What screen ID are we showing on. 13 // What screen ID are we showing on.
28 $this->settings_screen_id = 'sfwd-courses'; 14 $this->settings_screen_id = 'sfwd-courses';
...@@ -33,20 +19,14 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear ...@@ -33,20 +19,14 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
33 // Section label/header. 19 // Section label/header.
34 $this->settings_section_label = sprintf( 20 $this->settings_section_label = sprintf(
35 // translators: placeholder: Course. 21 // translators: placeholder: Course.
36 esc_html_x( '%s Users management', 'placeholder: management', 'learndash' ), 22 esc_html_x( '%s Complete Management', 'placeholder: management', 'learndash' ),
37 learndash_get_custom_label( 'course' ) 23 learndash_get_custom_label( 'course' )
38 ); 24 );
39 25
40 parent::__construct(); 26 parent::__construct();
41 } 27 }
42 28
43 /** 29
44 * Show Settings Section Fields.
45 *
46 * @since 3.1.0
47 *
48 * @param object $metabox Metabox object.
49 */
50 protected function show_settings_metabox_fields( $metabox = null ) { 30 protected function show_settings_metabox_fields( $metabox = null ) {
51 if ( ( is_object( $metabox ) ) && ( is_a( $metabox, 'LearnDash_Settings_Metabox' ) ) && ( $metabox->settings_metabox_key === $this->settings_metabox_key ) ) { 31 if ( ( is_object( $metabox ) ) && ( is_a( $metabox, 'LearnDash_Settings_Metabox' ) ) && ( $metabox->settings_metabox_key === $this->settings_metabox_key ) ) {
52 if ( ( isset( $metabox->post ) ) && ( is_a( $metabox->post, 'WP_Post ' ) ) ) { 32 if ( ( isset( $metabox->post ) ) && ( is_a( $metabox->post, 'WP_Post ' ) ) ) {
...@@ -57,26 +37,18 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear ...@@ -57,26 +37,18 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
57 37
58 if ( ( ! empty( $course_id ) ) && ( get_post_type( $course_id ) === learndash_get_post_type_slug( 'course' ) ) ) { 38 if ( ( ! empty( $course_id ) ) && ( get_post_type( $course_id ) === learndash_get_post_type_slug( 'course' ) ) ) {
59 $users = learndash_get_course_users_access_from_meta( $course_id ); 39 $users = learndash_get_course_users_access_from_meta( $course_id );
60 echo '<table><tr><th>Username</th><th>Email</th><th>first_name</th><th>last_name</th><th>Mark Complete</th><tr>'; 40 echo '<table width="100%"><tr><th>Username</th><th>Email</th><th>First Name</th><th>Last Name</th><th>Mark Complete</th><tr>';
61 foreach($users as $user){ 41 foreach($users as $user){
62 $user_info = get_userdata($user); 42 $user_info = get_userdata($user);
63 echo '<tr><td>'. $user_info->user_login .'</td><td>'. $user_info->user_email .'</td><td>'.$user_info->first_name.'</td><td>'.$user_info->last_name.'</td><td>Mark Complete</td></tr>'; 43 echo '<tr><td>'. $user_info->user_login .'</td><td>'. $user_info->user_email .'</td><td>'.$user_info->first_name.'</td><td>'.$user_info->last_name.'</td><td><button class="mark_as_complete" data-user-id="'.$user.'" data-course-id="'.$course_id.'" >Mark Complete</button></td></tr>';
64 } 44 }
65 echo "</table>"; 45 echo "</table>";
46 echo"";
66 } 47 }
67 } 48 }
68 } 49 }
69 50
70 /** 51
71 * Save Settings Metabox
72 *
73 * @since 3.1.0
74 *
75 * @param integer $post_id $Post ID is post being saved.
76 * @param object $saved_post WP_Post object being saved.
77 * @param boolean $update If update true, otherwise false.
78 * @param array $settings_field_updates array of settings fields to update.
79 */
80 public function save_post_meta_box( $post_id = 0, $saved_post = null, $update = null, $settings_field_updates = null ) { 52 public function save_post_meta_box( $post_id = 0, $saved_post = null, $update = null, $settings_field_updates = null ) {
81 if ( ( isset( $_POST['learndash_course_users_nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash_course_users_nonce'], 'learndash_course_users_nonce_' . $post_id ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized 53 if ( ( isset( $_POST['learndash_course_users_nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash_course_users_nonce'], 'learndash_course_users_nonce_' . $post_id ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
82 if ( ( isset( $_POST['learndash_course_users'] ) ) && ( isset( $_POST['learndash_course_users'][ $post_id ] ) ) && ( ! empty( $_POST['learndash_course_users'][ $post_id ] ) ) && isset( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) && ( ! empty( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) ) ) { 54 if ( ( isset( $_POST['learndash_course_users'] ) ) && ( isset( $_POST['learndash_course_users'][ $post_id ] ) ) && ( ! empty( $_POST['learndash_course_users'][ $post_id ] ) ) && isset( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) && ( ! empty( $_POST[ 'learndash_course_users-' . $post_id . '-changed' ] ) ) ) {
...@@ -86,7 +58,7 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear ...@@ -86,7 +58,7 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
86 } 58 }
87 } 59 }
88 60
89 // End of functions. 61
90 } 62 }
91 63
92 add_filter( 64 add_filter(
...@@ -95,7 +67,6 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear ...@@ -95,7 +67,6 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
95 if ( ( ! isset( $metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] ) ) && ( class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) { 67 if ( ( ! isset( $metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] ) ) && ( class_exists( 'LearnDash_Settings_Metabox_Course_Users_Management' ) ) ) {
96 $metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] = LearnDash_Settings_Metabox_Course_Users_Management::add_metabox_instance(); 68 $metaboxes['LearnDash_Settings_Metabox_Course_Users_Management'] = LearnDash_Settings_Metabox_Course_Users_Management::add_metabox_instance();
97 } 69 }
98
99 return $metaboxes; 70 return $metaboxes;
100 }, 71 },
101 50, 72 50,
...@@ -104,4 +75,44 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear ...@@ -104,4 +75,44 @@ if ( ( class_exists( 'LearnDash_Settings_Metabox' ) ) && ( ! class_exists( 'Lear
104 } 75 }
105 76
106 77
78 add_filter(
79 'learndash_header_data',
80 function( $header_data, $menu_tab_key, $admin_tab_sets ) {
81 $header_data['tabs'] = array_merge(
82 $header_data['tabs'],
83 array(
84 array(
85 'id' => 'course-complete-settings',
86 'name' => esc_html__( 'Mark as Completed', 'learndash' ),
87 'metaboxes' => [ 'learndash-course-users-management' ],
88 'showDocumentSidebar' => 'false',
89 ),
90 )
91 );
92 return $header_data;
93 },
94 30,
95 3
96 );
97
98 add_action( 'wp_ajax_mark_as_complete', 'mark_as_complete_callback' );
107 99
100
101 function mark_as_complete_callback() {
102
103 $selected_user_id = $_POST['user_id'];
104 $selected_course_id = $_POST['course_id'];
105 learndash_user_course_complete_all_steps( $selected_user_id, $selected_course_id );
106 wp_send_json( array( 'success' => true ) );
107
108 }
109
110
111 add_action( 'admin_print_scripts-post-new.php', 'course_admin_script', 11 );
112 add_action( 'admin_print_scripts-post.php', 'course_admin_script', 11 );
113
114 function course_admin_script() {
115 global $post_type;
116 if( 'sfwd-courses' == $post_type )
117 wp_enqueue_script( 'course-admin-script', get_stylesheet_directory_uri() . '/js/course-admin.js' );
118 }
...\ No newline at end of file ...\ No newline at end of file
......
1
2 jQuery(document).ready(function($) {
3
4 $(document).on('click','.mark_as_complete', function() {
5
6 var button = $(this);
7 var user_id = $(this).attr('data-user-id');
8 var course_id = $(this).attr('data-course-id');
9 $.ajax({
10 url: ajaxurl,
11 type: 'POST',
12 data: {
13 action: 'mark_as_complete', user_id : user_id, course_id : course_id,
14
15 },
16 success: function(response) {
17
18 button.html('completed');
19 },
20 error: function(xhr, status, error) {
21 console.log(error);
22 }
23 });
24 });
25
26 });
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
3 This file is used by the Wordfence Web Application Firewall. Read 3 This file is used by the Wordfence Web Application Firewall. Read
4 more at https://docs.wordfence.com/en/Web_Application_Firewall_FAQ 4 more at https://docs.wordfence.com/en/Web_Application_Firewall_FAQ
5 ****************************************************************** 5 ******************************************************************
6 a:12:{s:22:"attackDataNextInterval";N;s:16:"rulesLastUpdated";N;s:12:"premiumCount";N;s:12:"filePatterns";N;s:24:"filePatternCommonStrings";N;s:18:"filePatternIndexes";N;s:21:"signaturesLastUpdated";N;s:21:"signaturePremiumCount";N;s:23:"createInitialRulesDelay";i:1680297390;s:10:"watchedIPs";N;s:15:"blockedPrefixes";N;s:21:"blacklistAllowedCache";N;}
...\ No newline at end of file ...\ No newline at end of file
6 a:12:{s:22:"attackDataNextInterval";N;s:16:"rulesLastUpdated";N;s:12:"premiumCount";N;s:12:"filePatterns";N;s:24:"filePatternCommonStrings";N;s:18:"filePatternIndexes";N;s:21:"signaturesLastUpdated";N;s:21:"signaturePremiumCount";N;s:23:"createInitialRulesDelay";i:1680300292;s:10:"watchedIPs";N;s:15:"blockedPrefixes";N;s:21:"blacklistAllowedCache";N;}
...\ No newline at end of file ...\ No newline at end of file
......