mark as completed
Signed-off-by: Jeff <jeff@gotenzing.com>
Showing
5 changed files
with
76 additions
and
59 deletions
| ... | @@ -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 | ... | ... |
wp-content/themes/crlg/js/course-admin.js
0 → 100644
| 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 |
No preview for this file type
| ... | @@ -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 | ... | ... |
-
Please register or sign in to post a comment