private static function _total_steps_required($unit_id)
 {
     $criteria = Unit::get_module_completion_data($unit_id);
     if (empty($criteria)) {
         return false;
     }
     $total_answers = count($criteria['mandatory_modules']);
     $total_pages = Unit::get_page_count($unit_id);
     return $total_answers + $total_pages;
 }
        function module_status($atts)
        {
            ob_start();
            extract(shortcode_atts(array('course_id' => in_the_loop() ? get_the_ID() : '', 'unit_id' => false, 'message' => __('%d of %d mandatory elements completed.', 'cp'), 'format' => 'true'), $atts, 'module_status'));
            $message = sanitize_text_field($message);
            $format = sanitize_text_field($format);
            $format = 'true' == $format ? true : false;
            if ($course_id) {
                $course_id = (int) $course_id;
            }
            $unit_id = (int) $unit_id;
            if (empty($unit_id)) {
                return '';
            }
            $criteria = Unit::get_module_completion_data($unit_id);
            $unit_status = Unit::get_unit_availability_status($unit_id);
            $unit_available = Unit::is_unit_available($unit_id, $unit_status);
            $input_modules_count = count($criteria['all_input_ids']);
            $assessable_input_modules_count = count($criteria['gradable_modules']);
            $mandatory_input_elements = count($criteria['mandatory_modules']);
            $mandatory_responses = Student_Completion::get_mandatory_steps_completed(get_current_user_id(), $course_id, $unit_id);
            //			$all_responses					 = do_shortcode( '[course_unit_details field="student_module_responses"]' );
            // $is_unit_available				 = do_shortcode( '[course_unit_details field="is_unit_available"]' );
            //			$input_modules_count			 = do_shortcode( '[course_unit_details field="input_modules_count"]' );
            //			$assessable_input_modules_count	 = do_shortcode( '[course_unit_details field="assessable_input_modules_count"]' );
            //			$mandatory_input_elements		 = do_shortcode( '[course_unit_details field="mandatory_input_modules_count"]' );
            //			$mandatory_responses			 = do_shortcode( '[course_unit_details field="student_module_responses" additional="mandatory"]' );
            //			$all_responses					 = do_shortcode( '[course_unit_details field="student_module_responses"]' );
            $unit = new Unit($unit_id);
            $unit->status = $unit_status;
            if ($input_modules_count > 0) {
                ?>
				<span class="unit-archive-single-module-status"><?php 
                if ($unit_available) {
                    if ($mandatory_input_elements > 0) {
                        echo sprintf($message, $mandatory_responses, $mandatory_input_elements);
                    }
                } else {
                    if (isset($unit->status) && $unit->status['mandatory_required']['enabled'] && !$unit->status['mandatory_required']['result'] && !$unit->status['completion_required']['enabled']) {
                        esc_html_e('All mandatory answers are required in previous unit.', 'cp');
                    } elseif (isset($unit->status) && $unit->status['completion_required']['enabled'] && !$unit->status['completion_required']['result']) {
                        esc_html_e('Previous unit must be completed successfully.', 'cp');
                    }
                    if (isset($unit->status) && !$unit->status['date_restriction']['result']) {
                        echo __('Available', 'cp') . ' ' . date_i18n(get_option('date_format'), strtotime(do_shortcode('[course_unit_details field="unit_availability"]')));
                    }
                }
                ?>
</span>
			<?php 
            } else {
                ?>
				<span class="unit-archive-single-module-status"><?php 
                if ($unit_available) {
                    //						 _e('Read-only','cp');
                } else {
                    if (isset($unit->status) && $unit->status['mandatory_required']['enabled'] && !$unit->status['mandatory_required']['result'] && !$unit->status['completion_required']['enabled']) {
                        esc_html_e('All mandatory answers are required in previous unit.', 'cp');
                    } elseif (isset($unit->status) && $unit->status['completion_required']['enabled'] && !$unit->status['completion_required']['result']) {
                        esc_html_e('Previous unit must be completed successfully.', 'cp');
                    }
                    if (isset($unit->status) && !empty($unit->status) && !$unit->status['date_restriction']['result']) {
                        echo __('Available', 'cp') . ' ' . date_i18n(get_option('date_format'), strtotime(do_shortcode('[course_unit_details field="unit_availability"]')));
                    }
                }
                ?>
</span>
			<?php 
            }
            $content = ob_get_clean();
            return $content;
        }
	<h2 class="workbook-title">
		<?php 
echo __('Workbook', 'cp');
echo $workbook_course_progress;
echo $complete_message;
?>
	</h2>

	<div class="clearfix"></div>

<?php 
if (have_posts()) {
    while (have_posts()) {
        the_post();
        $criteria = Unit::get_module_completion_data(get_the_ID());
        $input_module_count = count($criteria['all_input_ids']);
        $has_assessable = $input_module_count > 0 ? true : false;
        ?>
		<div class="workbook_units cp-wrap">
			<div class="unit_title">
				<h3><?php 
        the_title();
        ?>
					<span><?php 
        _e('Unit progress: ', 'cp');
        ?>
 <?php 
        echo do_shortcode('[course_unit_progress course_id="' . $course_id . '" unit_id="' . get_the_ID() . '"]');
        ?>
						%</span>