From a3f4e3a9dc262f09a53c2c026f6f59baefb33ce6 Mon Sep 17 00:00:00 2001 From: Mohammad Zubair Ali Date: Tue, 6 Aug 2024 13:53:49 +0530 Subject: [PATCH 1/3] arrange qsm submenus --- css/qsm-admin.css | 8 ++++++++ mlw_quizmaster2.php | 10 +++++----- php/admin/addons-page.php | 2 +- php/template-variables.php | 8 ++++---- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/css/qsm-admin.css b/css/qsm-admin.css index 9fcc38099..8d8dd69b1 100644 --- a/css/qsm-admin.css +++ b/css/qsm-admin.css @@ -3454,4 +3454,12 @@ input#preferred-date-format-custom { #qmn-failed-submission-table-message { padding-right: 38px; position: relative; +} +#toplevel_page_qsm_dashboard li:nth-last-child(3) a:after { + border-bottom: 1px solid hsla(0, 0%, 100%, .2); + display: block; + float: left; + margin: 13px -15px 8px; + content: ""; + width: calc(100% + 26px); } \ No newline at end of file diff --git a/mlw_quizmaster2.php b/mlw_quizmaster2.php index f25ec8545..c7efc8a25 100644 --- a/mlw_quizmaster2.php +++ b/mlw_quizmaster2.php @@ -486,12 +486,12 @@ public function qsm_admin_scripts_style( $hook ) { foreach ( $qsm_variables as $key => $value ) { // Iterate over each key of the nested object if ( is_array( $value ) && ! empty($value) ) { - + foreach ( $value as $nestedKey => $nestedValue ) { // Add the nested key to the array $qsm_variables_name[] = $nestedKey; - } - } + } + } } $qsm_admin_messages = array( 'error' => __('Error', 'quiz-master-next'), @@ -760,12 +760,12 @@ public function setup_admin_menu() { add_submenu_page( 'qsm_dashboard', __( 'Settings', 'quiz-master-next' ), __( 'Settings', 'quiz-master-next' ), 'manage_options', 'qmn_global_settings', array( 'QMNGlobalSettingsPage', 'display_page' ) ); add_submenu_page( 'qsm_dashboard', __( 'Tools', 'quiz-master-next' ), __( 'Tools', 'quiz-master-next' ), 'manage_options', 'qsm_quiz_tools', 'qsm_generate_quiz_tools' ); add_submenu_page( 'qsm_dashboard', __( 'Stats', 'quiz-master-next' ), __( 'Stats', 'quiz-master-next' ), 'moderate_comments', 'qmn_stats', 'qmn_generate_stats_page' ); - add_submenu_page( 'qsm_dashboard', __( 'Addon Settings', 'quiz-master-next' ), '' . __( 'Addons', 'quiz-master-next' ) . '', 'moderate_comments', 'qmn_addons', 'qmn_addons_page' ); - add_submenu_page( 'qsm_dashboard', __( 'Get a Free Addon', 'quiz-master-next' ), '' . esc_html__( 'Get a Free Addon!', 'quiz-master-next' ) . '', 'moderate_comments', 'qsm-free-addon', 'qsm_display_optin_page' ); add_submenu_page( 'qsm_dashboard', __( 'About', 'quiz-master-next' ), __( 'About', 'quiz-master-next' ), 'moderate_comments', 'qsm_quiz_about', 'qsm_generate_about_page' ); if ( ! class_exists( 'QSM_Advanced_Assessment' ) ) { add_submenu_page( 'qsm_dashboard', __( 'Answer Labels', 'quiz-master-next' ), __( 'Answer Labels', 'quiz-master-next' ), 'manage_options', 'qsm-answer-label', 'qsm_advanced_assessment_quiz_page_content', 3 ); } + add_submenu_page( 'qsm_dashboard', __( 'Addon Settings', 'quiz-master-next' ), '' . __( 'Extensions', 'quiz-master-next' ) . '', 'moderate_comments', 'qmn_addons', 'qmn_addons_page', 33 ); + add_submenu_page( 'qsm_dashboard', __( 'Get a Free Addon', 'quiz-master-next' ), '' . esc_html__( 'Free Extensions', 'quiz-master-next' ) . '', 'moderate_comments', 'qsm-free-addon', 'qsm_display_optin_page', 34 ); // Register screen option for dashboard page add_action( 'screen_settings', 'qsm_dashboard_screen_options', 10, 2 ); } diff --git a/php/admin/addons-page.php b/php/admin/addons-page.php index 7a62f4073..6c055261d 100644 --- a/php/admin/addons-page.php +++ b/php/admin/addons-page.php @@ -211,7 +211,7 @@ function qsm_display_optin_page() { ?>
-

+

diff --git a/php/template-variables.php b/php/template-variables.php index ca713afcf..32a61eb6c 100644 --- a/php/template-variables.php +++ b/php/template-variables.php @@ -952,12 +952,12 @@ function qsm_custom_wpkses_post_tags( $tags, $context ) { 'allowfullscreen' => true, ); $tags['video'] = array( - 'width' => true, - 'height' => true, - 'src' => true, + 'width' => true, + 'height' => true, + 'src' => true, 'controls' => true, 'autoplay' => true, - 'preload' => true, + 'preload' => true, ); $tags['source'] = array( 'src' => true, From 4272d5ab241d4acf86e06d3fca0263c3fc5ce9ce Mon Sep 17 00:00:00 2001 From: Mohammad Zubair Ali Date: Tue, 13 Aug 2024 14:36:12 +0530 Subject: [PATCH 2/3] fixed progress bar issue with elementor popup --- js/qsm-quiz.js | 94 +++++++++++++++++---------------------------- mlw_quizmaster2.php | 13 ++++--- 2 files changed, 42 insertions(+), 65 deletions(-) diff --git a/js/qsm-quiz.js b/js/qsm-quiz.js index d68eea773..5442422cc 100644 --- a/js/qsm-quiz.js +++ b/js/qsm-quiz.js @@ -310,34 +310,7 @@ var qsmTimerInterval = []; if ('1' == qmn_quiz_data[quizID].progress_bar) { jQuery(document).trigger('qsm_init_progressbar_before', [quizID, qmn_quiz_data]); $('#quizForm' + quizID).find('.qsm-progress-bar').show(); - qmn_quiz_data[quizID].bar = new ProgressBar.Line('#quizForm' + quizID + ' .qsm-progress-bar', { - strokeWidth: 2, - easing: 'easeInOut', - duration: 1400, - color: '#3498db', - trailColor: '#eee', - trailWidth: 1, - svgStyle: { width: '100%', height: '100%' }, - text: { - style: { - // color: '#999', - position: 'absolute', - padding: 0, - margin: 0, - top: 0, - right: '10px', - 'font-size': '13px', - 'font-weight': 'bold', - transform: null - }, - autoStyleContainer: false - }, - from: { color: '#3498db' }, - to: { color: '#ED6A5A' }, - step: function (state, bar) { - //bar.setText(Math.round(bar.value() * 100) + ' %'); - } - }); + qmn_quiz_data[quizID].bar = createQSMProgressBar(quizID, '#quizForm' + quizID + ' .qsm-progress-bar'); jQuery(document).trigger('qsm_init_progressbar_after', [quizID, qmn_quiz_data]); } QSM.goToPage(quizID, 1); @@ -444,7 +417,11 @@ var qsmTimerInterval = []; } var animate_value = current_page / total_page_length; if (animate_value <= 1) { - qmn_quiz_data[quizID].bar.animate(animate_value); + if (undefined == qmn_quiz_data[quizID].bar) { + qmn_quiz_data[quizID].bar = createQSMProgressBar(quizID, '#quizForm' + quizID + ' .qsm-progress-bar'); + } else { + qmn_quiz_data[quizID].bar.animate(animate_value); + } var old_text = jQuery('#quizForm' + quizID).find('.progressbar-text').text().replace(' %', ''); var new_text = Math.round(animate_value * 100); jQuery({ @@ -628,6 +605,33 @@ function isUrlValid(url) { return /^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(url); } +/** + * Create QSM progress bar + * @returns + */ +function createQSMProgressBar(quizID, elementID) { + return new ProgressBar.Line(elementID, { + strokeWidth: 2, + easing: 'easeInOut', + duration: 1400, + color: '#3498db', + trailColor: '#eee', + trailWidth: 1, + svgStyle: { width: '100%', height: '100%' }, + text: { + style: { + position: 'absolute', + right: '10px', + 'font-size': '13px', + 'font-weight': 'bold' + }, + autoStyleContainer: false + }, + from: { color: '#3498db' }, + to: { color: '#ED6A5A' } + }); +} + /** * Limit multiple response based on question limit * @returns @@ -1300,33 +1304,7 @@ function qmnInitPagination(quiz_id) { if ('1' == qmn_quiz_data[quiz_id].progress_bar) { jQuery(document).trigger('qsm_init_progressbar_before', [quiz_id, qmn_quiz_data]); jQuery('#quizForm' + quiz_id).closest('.qmn_quiz_container').find('.qsm-progress-bar').show(); - qmn_quiz_data[quiz_id].bar = new ProgressBar.Line('#qsm_progress_bar_' + quiz_id, { - strokeWidth: 2, - easing: 'easeInOut', - duration: 500, - color: '#3498db', - trailColor: '#eee', - trailWidth: 1, - svgStyle: { width: '100%', height: '100%' }, - text: { - style: { - // color: '#999', - position: 'absolute', - padding: 0, - margin: 0, - top: 0, - right: '10px', - 'font-size': '13px', - 'font-weight': 'bold', - transform: null - }, - autoStyleContainer: false - }, - from: { color: '#3498db' }, - to: { color: '#ED6A5A' }, - step: function (state, bar) { - } - }); + qmn_quiz_data[quiz_id].bar = createQSMProgressBar(quiz_id, '#qsm_progress_bar_' + quiz_id); jQuery(document).trigger('qsm_init_progressbar_after', [quiz_id, qmn_quiz_data]); } @@ -2067,6 +2045,4 @@ jQuery(document).keydown(function(event) { } jQuery(document).trigger('qsm_keyboard_quiz_action_end', event); } -}); - - +}); \ No newline at end of file diff --git a/mlw_quizmaster2.php b/mlw_quizmaster2.php index c7efc8a25..f07516eab 100644 --- a/mlw_quizmaster2.php +++ b/mlw_quizmaster2.php @@ -745,6 +745,9 @@ public function setup_admin_menu() { if ( $enabled && 'cancelled' !== $enabled ) { $qsm_taxonomy_menu_hook = add_submenu_page( 'qsm_dashboard', __( 'Question Categories', 'quiz-master-next' ), __( 'Question Categories', 'quiz-master-next' ), 'edit_posts', 'edit-tags.php?taxonomy=qsm_category' ); } + if ( ! class_exists( 'QSM_Advanced_Assessment' ) ) { + add_submenu_page( 'qsm_dashboard', __( 'Answer Labels', 'quiz-master-next' ), __( 'Answer Labels', 'quiz-master-next' ), 'manage_options', 'qsm-answer-label', 'qsm_advanced_assessment_quiz_page_content', 3 ); + } add_submenu_page( 'options.php', __( 'Settings', 'quiz-master-next' ), __( 'Settings', 'quiz-master-next' ), 'edit_posts', 'mlw_quiz_options', 'qsm_generate_quiz_options' ); add_submenu_page( 'qsm_dashboard', __( 'Results', 'quiz-master-next' ), __( 'Results', 'quiz-master-next' ), 'moderate_comments', 'mlw_quiz_results', 'qsm_generate_admin_results_page' ); @@ -752,7 +755,7 @@ public function setup_admin_menu() { if ( ! empty( $settings['enable_qsm_log'] ) && $settings['enable_qsm_log'] ) { add_submenu_page( 'qsm_dashboard', __( 'Failed Submission', 'quiz-master-next' ), __( 'Failed Submission', 'quiz-master-next' ), 'moderate_comments', 'qsm-quiz-failed-submission', array( $this, 'admin_failed_submission_page' ) ); } - // Failed DB Query. + // Failed DB Query if ( ! empty( $settings['enable_qsm_log'] ) && $settings['enable_qsm_log'] && $this->get_failed_alter_table_queries() ) { add_submenu_page( 'qsm_dashboard', __( 'Failed DB Queries', 'quiz-master-next' ), __( 'Failed Database Queries', 'quiz-master-next' ), 'moderate_comments', 'qsm-database-failed-queries', array( $this, 'qsm_database_failed_queries' ) ); } @@ -761,11 +764,9 @@ public function setup_admin_menu() { add_submenu_page( 'qsm_dashboard', __( 'Tools', 'quiz-master-next' ), __( 'Tools', 'quiz-master-next' ), 'manage_options', 'qsm_quiz_tools', 'qsm_generate_quiz_tools' ); add_submenu_page( 'qsm_dashboard', __( 'Stats', 'quiz-master-next' ), __( 'Stats', 'quiz-master-next' ), 'moderate_comments', 'qmn_stats', 'qmn_generate_stats_page' ); add_submenu_page( 'qsm_dashboard', __( 'About', 'quiz-master-next' ), __( 'About', 'quiz-master-next' ), 'moderate_comments', 'qsm_quiz_about', 'qsm_generate_about_page' ); - if ( ! class_exists( 'QSM_Advanced_Assessment' ) ) { - add_submenu_page( 'qsm_dashboard', __( 'Answer Labels', 'quiz-master-next' ), __( 'Answer Labels', 'quiz-master-next' ), 'manage_options', 'qsm-answer-label', 'qsm_advanced_assessment_quiz_page_content', 3 ); - } - add_submenu_page( 'qsm_dashboard', __( 'Addon Settings', 'quiz-master-next' ), '' . __( 'Extensions', 'quiz-master-next' ) . '', 'moderate_comments', 'qmn_addons', 'qmn_addons_page', 33 ); - add_submenu_page( 'qsm_dashboard', __( 'Get a Free Addon', 'quiz-master-next' ), '' . esc_html__( 'Free Extensions', 'quiz-master-next' ) . '', 'moderate_comments', 'qsm-free-addon', 'qsm_display_optin_page', 34 ); + + add_submenu_page( 'qsm_dashboard', __( 'Extensions Settings', 'quiz-master-next' ), '' . __( 'Extensions', 'quiz-master-next' ) . '', 'moderate_comments', 'qmn_addons', 'qmn_addons_page', 34 ); + add_submenu_page( 'qsm_dashboard', __( 'Free Add-ons', 'quiz-master-next' ), '' . esc_html__( 'Free Add-ons', 'quiz-master-next' ) . '', 'moderate_comments', 'qsm-free-addon', 'qsm_display_optin_page', 90 ); // Register screen option for dashboard page add_action( 'screen_settings', 'qsm_dashboard_screen_options', 10, 2 ); } From 19bfa56038b7a5a3fd26e4f6cfb44fce8cdc1b0e Mon Sep 17 00:00:00 2001 From: Mohammad Zubair Ali Date: Tue, 13 Aug 2024 15:26:18 +0530 Subject: [PATCH 3/3] fixed duplicate progressbar issue --- js/qsm-quiz.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/js/qsm-quiz.js b/js/qsm-quiz.js index 5442422cc..464b6f4cb 100644 --- a/js/qsm-quiz.js +++ b/js/qsm-quiz.js @@ -417,11 +417,11 @@ var qsmTimerInterval = []; } var animate_value = current_page / total_page_length; if (animate_value <= 1) { - if (undefined == qmn_quiz_data[quizID].bar) { + if (!qmn_quiz_data[quizID].bar) { + jQuery( '#quizForm' + quizID + ' .qsm-progress-bar svg' ).remove(); qmn_quiz_data[quizID].bar = createQSMProgressBar(quizID, '#quizForm' + quizID + ' .qsm-progress-bar'); - } else { - qmn_quiz_data[quizID].bar.animate(animate_value); } + qmn_quiz_data[quizID].bar.animate(animate_value); var old_text = jQuery('#quizForm' + quizID).find('.progressbar-text').text().replace(' %', ''); var new_text = Math.round(animate_value * 100); jQuery({ @@ -620,8 +620,8 @@ function createQSMProgressBar(quizID, elementID) { svgStyle: { width: '100%', height: '100%' }, text: { style: { - position: 'absolute', - right: '10px', + 'position': 'absolute', + 'right': '10px', 'font-size': '13px', 'font-weight': 'bold' },