Version Description
(August 18, 2020) = * Enhancement: Checked compatibility with WordPress 5.5. * Enhancement: Added option to customize the inline correct/incorrect messages. * Enhancement: Added video, audio, youtube and gallery support while displaying message before quiz. * Enhancement: Added support of template variables when redirecting to result page. * Enhancement: Added new template variable %MAXIMUM_POINTS% to display the maximum possible points per quiz. * Enhancement: Added option to select quiz in Gutenberg block editor. * Enhancement: Email and name fields will be captured automatically for logged in user. * Enhancement: Upgraded user interface of addons settinga page. * Bug: Fixed score calculation issues. * Bug: Fixed issues while editing quiz's text tab. * Bug: Fixed issue where question title not showing for Polar question type. * Bug: Fixed calculation issues while using Polar question type. * Bug: Fixed validation issues with phone field in contact tab. * Bug: Fixed issue where option to limit choices was not working for horizontal multiple response question type. * Bug: Fixed security vulnerability (discovered by NinTechNet). * Bug: Fixed issue where number of items per page was not working on Quizzes/Surveys page. * Bug: Fixed issue with required checkbox while editing questions. * Bug: Fixed extra contact field were not showing in admin result new template. * Bug: Fixed issues with the title while retaking a quiz. * Bug: Fixed issue where category not assigning while editing the question.
Release Info
Developer | expresstech |
Plugin | Quiz And Survey Master (Formerly Quiz Master Next) |
Version | 7.0.2 |
Comparing to | |
See all releases |
Code changes from version 7.0.1 to 7.0.2
- assets/Premium Bundle.png +0 -0
- assets/Starter Bundle.png +0 -0
- blocks/block.js +11 -6
- blocks/block.php +31 -2
- css/common.css +5 -0
- css/qsm-admin.css +185 -37
- js/admin.js +22 -4
- js/qsm-admin-question.js +3 -3
- js/qsm-admin.js +19 -0
- js/qsm-quiz.js +11 -8
- mlw_quizmaster2.php +3 -3
- php/admin/addons-page.php +88 -45
- php/admin/admin-dashboard.php +4 -8
- php/admin/admin-results-details-page.php +17 -8
- php/admin/admin-results-page.php +4 -2
- php/admin/functions.php +3 -2
- php/admin/quizzes-page.php +1 -0
- php/classes/class-qmn-quiz-manager.php +109 -37
- php/classes/class-qsm-contact-manager.php +8 -8
- php/classes/class-qsm-install.php +20 -0
- php/question-types.php +16 -10
- php/rest-api.php +17 -0
- php/shortcodes.php +4 -4
- php/template-variables.php +20 -0
- readme.txt +62 -26
Binary file
|
Binary file
|
@@ -3,6 +3,7 @@ var el = wp.element.createElement,
|
|
3 |
registerBlockType = wp.blocks.registerBlockType,
|
4 |
ServerSideRender = wp.components.ServerSideRender,
|
5 |
TextControl = wp.components.TextControl,
|
|
|
6 |
InspectorControls = wp.editor.InspectorControls;
|
7 |
|
8 |
/*
|
@@ -11,9 +12,10 @@ var el = wp.element.createElement,
|
|
11 |
registerBlockType( 'qsm/main-block', {
|
12 |
title: 'QSM Block',
|
13 |
icon: 'feedback',
|
14 |
-
category: 'widgets',
|
15 |
|
16 |
edit: function( props ) {
|
|
|
17 |
return [
|
18 |
/*
|
19 |
* The ServerSideRender element uses the REST API to automatically call
|
@@ -26,11 +28,14 @@ registerBlockType( 'qsm/main-block', {
|
|
26 |
} ),
|
27 |
|
28 |
el( InspectorControls, {},
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
34 |
),
|
35 |
];
|
36 |
},
|
3 |
registerBlockType = wp.blocks.registerBlockType,
|
4 |
ServerSideRender = wp.components.ServerSideRender,
|
5 |
TextControl = wp.components.TextControl,
|
6 |
+
SelectControl = wp.components.SelectControl,
|
7 |
InspectorControls = wp.editor.InspectorControls;
|
8 |
|
9 |
/*
|
12 |
registerBlockType( 'qsm/main-block', {
|
13 |
title: 'QSM Block',
|
14 |
icon: 'feedback',
|
15 |
+
category: 'widgets',
|
16 |
|
17 |
edit: function( props ) {
|
18 |
+
const quiz_arr = props.attributes.quiz_id;
|
19 |
return [
|
20 |
/*
|
21 |
* The ServerSideRender element uses the REST API to automatically call
|
28 |
} ),
|
29 |
|
30 |
el( InspectorControls, {},
|
31 |
+
el( 'p', { style: { padding: '0 16px' } },
|
32 |
+
el( SelectControl, {
|
33 |
+
label: 'Quiz/Survey ID',
|
34 |
+
value: props.attributes.quiz,
|
35 |
+
options: quiz_arr,
|
36 |
+
onChange: ( value ) => { props.setAttributes( { quiz: value } ); },
|
37 |
+
} )
|
38 |
+
)
|
39 |
),
|
40 |
];
|
41 |
},
|
@@ -17,13 +17,17 @@ function qsm_block_init() {
|
|
17 |
'qsm-quiz-block',
|
18 |
plugins_url( 'block.js', __FILE__ ),
|
19 |
array( 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor' )
|
20 |
-
);
|
21 |
// Register our block, and explicitly define the attributes we accept.
|
22 |
register_block_type( 'qsm/main-block', array(
|
23 |
'attributes' => array(
|
24 |
'quiz' => array(
|
25 |
-
|
26 |
),
|
|
|
|
|
|
|
|
|
27 |
),
|
28 |
'editor_script' => 'qsm-quiz-block',
|
29 |
'render_callback' => 'qsm_block_render',
|
@@ -31,6 +35,31 @@ function qsm_block_init() {
|
|
31 |
}
|
32 |
add_action( 'init', 'qsm_block_init' );
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
/**
|
35 |
* The block renderer.
|
36 |
*
|
17 |
'qsm-quiz-block',
|
18 |
plugins_url( 'block.js', __FILE__ ),
|
19 |
array( 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor' )
|
20 |
+
);
|
21 |
// Register our block, and explicitly define the attributes we accept.
|
22 |
register_block_type( 'qsm/main-block', array(
|
23 |
'attributes' => array(
|
24 |
'quiz' => array(
|
25 |
+
'type' => 'string',
|
26 |
),
|
27 |
+
'quiz_id' => array(
|
28 |
+
'type' => 'array',
|
29 |
+
'default' => qsm_get_quizzes_list()
|
30 |
+
)
|
31 |
),
|
32 |
'editor_script' => 'qsm-quiz-block',
|
33 |
'render_callback' => 'qsm_block_render',
|
35 |
}
|
36 |
add_action( 'init', 'qsm_block_init' );
|
37 |
|
38 |
+
/**
|
39 |
+
* Get the quizzes list
|
40 |
+
*
|
41 |
+
* @since 7.0.2
|
42 |
+
* @global object $wpdb
|
43 |
+
* @return array
|
44 |
+
*/
|
45 |
+
function qsm_get_quizzes_list(){
|
46 |
+
global $wpdb;
|
47 |
+
$quizzes = $wpdb->get_results( "SELECT quiz_id, quiz_name FROM {$wpdb->prefix}mlw_quizzes WHERE deleted='0'" );
|
48 |
+
$newslatter_provider_list[] = array(
|
49 |
+
'label' => __('Select the quiz', 'quiz-master-next'),
|
50 |
+
'value' => ''
|
51 |
+
);
|
52 |
+
if( $quizzes ){
|
53 |
+
foreach( $quizzes as $key=>$value) {
|
54 |
+
$newslatter_provider_list[] = array(
|
55 |
+
'label' => $value->quiz_name,
|
56 |
+
'value' => $value->quiz_id,
|
57 |
+
);
|
58 |
+
}
|
59 |
+
}
|
60 |
+
return $newslatter_provider_list;
|
61 |
+
}
|
62 |
+
|
63 |
/**
|
64 |
* The block renderer.
|
65 |
*
|
@@ -183,4 +183,9 @@ footer.qsm-popup__footer button.qsm-popup-secondary-button:hover{
|
|
183 |
.question-type-polar-s{
|
184 |
height: auto !important;
|
185 |
}
|
|
|
|
|
|
|
|
|
|
|
186 |
}
|
183 |
.question-type-polar-s{
|
184 |
height: auto !important;
|
185 |
}
|
186 |
+
body .quiz_section .qmn_radio_answers label,
|
187 |
+
body .quiz_section .qmn_check_answers label,
|
188 |
+
body .quiz_section .qmn_accept_answers label{
|
189 |
+
font-size: 14px !important;
|
190 |
+
}
|
191 |
}
|
@@ -127,31 +127,62 @@ span.qsm-quiz-name {
|
|
127 |
|
128 |
.qsm-addon-browse-addons{
|
129 |
background: #fff;
|
130 |
-
padding:
|
131 |
width: 100%;
|
132 |
display: inline-block;
|
133 |
-
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
.qsm-addon-browse-addons .qsm-addon-anchor-left{
|
136 |
float: left;
|
137 |
}
|
138 |
.qsm-addon-browse-addons .qsm-addon-list-right{
|
139 |
float: right;
|
|
|
|
|
140 |
}
|
141 |
.qsm-addon-browse-addons .qsm-addon-list-right > span{
|
142 |
margin-right: 10px;
|
143 |
font-size: 16px;
|
144 |
}
|
145 |
-
.qsm-addon-browse-addons .qsm-addon-anchor-left a.active{
|
146 |
-
font-weight: bold;
|
147 |
-
}
|
148 |
.qsm-addon-browse-addons .qsm-addon-anchor-left a{
|
149 |
display: inline-block;
|
150 |
font-size: 16px;
|
151 |
color: #474444;
|
152 |
text-decoration: none;
|
153 |
-
margin-top: 5px
|
154 |
-
margin-right:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
.qsm_popular_addons div.popuar-addon-ul{
|
157 |
width: 100%;
|
@@ -159,15 +190,67 @@ span.qsm-quiz-name {
|
|
159 |
}
|
160 |
.qsm_popular_addons div.popuar-addon-ul > div{
|
161 |
background: #fff;
|
162 |
-
padding:
|
163 |
-
width:
|
164 |
margin-right: 2%;
|
165 |
float: left;
|
166 |
margin-bottom: 30px;
|
|
|
167 |
}
|
168 |
.qsm_popular_addons div.popuar-addon-ul > div:nth-child(3n+4){
|
169 |
clear: both;
|
170 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
.qsm_popular_addons div.popuar-addon-ul > div .description-wrap{
|
172 |
padding: 20px;
|
173 |
}
|
@@ -184,47 +267,102 @@ span.qsm-quiz-name {
|
|
184 |
.qsm-quiz-page-addon.qsm-addon-page-list{
|
185 |
width: 75%;
|
186 |
float: left;
|
187 |
-
margin-top:
|
188 |
}
|
189 |
.qsm-addon-news-ads{
|
190 |
width: 25%;
|
191 |
float: right;
|
192 |
-
background: #
|
193 |
-
padding:
|
194 |
box-sizing: border-box;
|
195 |
-
margin-top:
|
196 |
}
|
197 |
.qsm-addon-news-ads .qsm-news-ads-title{
|
198 |
border-bottom: 0;
|
199 |
-
margin-top:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
201 |
.qsm-addon-news-ads .qsm-info-widget{
|
202 |
text-align: left;
|
203 |
padding: 30px;
|
204 |
}
|
205 |
.qsm-addon-news-ads .qsm-info-widget h3{
|
206 |
-
color: #
|
207 |
-
|
208 |
-
|
209 |
-
margin-
|
210 |
-
background: #fff;
|
211 |
-
color: #444;
|
212 |
}
|
213 |
-
.qsm-addon-news-ads .qsm-info-widget
|
214 |
-
|
215 |
-
color: #444;
|
216 |
}
|
217 |
.qsm-addon-news-ads .qsm-info-widget{
|
218 |
transform: none !important;
|
219 |
max-width: 100%;
|
|
|
|
|
|
|
|
|
220 |
}
|
221 |
-
.qsm-addon-news-ads .qsm-info-widget
|
222 |
-
|
223 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
}
|
225 |
-
.qsm-addon-news-ads .qsm-info-widget
|
226 |
-
background: #0073AF;
|
227 |
color: #fff;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
}
|
229 |
.qsm-active-addons .installed_title{
|
230 |
background: #fff;
|
@@ -233,11 +371,12 @@ span.qsm-quiz-name {
|
|
233 |
border: 1px solid #ccd0d4;
|
234 |
color: #007cba;
|
235 |
font-size: 16px;
|
|
|
236 |
}
|
237 |
.qsm-active-addons .installed_addons_wrapper,
|
238 |
.qsm-active-addons .no_addons_installed{
|
239 |
border: 1px solid #ccd0d4;
|
240 |
-
border-top: medium none
|
241 |
}
|
242 |
.qsm-active-addons .no_addons_installed{
|
243 |
padding: 30px 25%;
|
@@ -249,10 +388,11 @@ span.qsm-quiz-name {
|
|
249 |
}
|
250 |
.qsm-active-addons .installed_addons_wrapper .installed_addon{
|
251 |
padding: 15px 15px 27px 15px;
|
252 |
-
background: #FAFAFA;
|
253 |
-
}
|
254 |
-
.qsm-active-addons .installed_addons_wrapper .installed_addon:nth-child(2n){
|
255 |
background: #fff;
|
|
|
|
|
|
|
|
|
256 |
}
|
257 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_name{
|
258 |
font-size: 14px;
|
@@ -263,6 +403,14 @@ span.qsm-quiz-name {
|
|
263 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_link{
|
264 |
float: right;
|
265 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
266 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_link span.dashicons{
|
267 |
margin-top: 4px;
|
268 |
}
|
@@ -327,7 +475,7 @@ Options Page
|
|
327 |
Results Pages & Emails Tab
|
328 |
*********************/
|
329 |
.results-page,
|
330 |
-
.email {
|
331 |
width: 100%;
|
332 |
background-color: #fff;
|
333 |
margin: 20px 0;
|
@@ -336,7 +484,7 @@ Results Pages & Emails Tab
|
|
336 |
}
|
337 |
|
338 |
.results-page .results-page-content,
|
339 |
-
.email .email-content{
|
340 |
background: #fff;
|
341 |
padding-right: 15px;
|
342 |
padding-left: 15px;
|
@@ -345,7 +493,7 @@ Results Pages & Emails Tab
|
|
345 |
}
|
346 |
|
347 |
.results-page-header,
|
348 |
-
.email-header {
|
349 |
display: flex;
|
350 |
align-items: center;
|
351 |
justify-content: flex-end;
|
@@ -355,7 +503,7 @@ Results Pages & Emails Tab
|
|
355 |
}
|
356 |
|
357 |
.delete-page-button,
|
358 |
-
.delete-email-button {
|
359 |
background: none;
|
360 |
border: none;
|
361 |
color: #dc3232;
|
@@ -364,7 +512,7 @@ Results Pages & Emails Tab
|
|
364 |
}
|
365 |
|
366 |
.delete-page-button:hover,
|
367 |
-
.delete-email-button:hover {
|
368 |
transform: scale(1.2);
|
369 |
}
|
370 |
|
127 |
|
128 |
.qsm-addon-browse-addons{
|
129 |
background: #fff;
|
130 |
+
padding: 0;
|
131 |
width: 100%;
|
132 |
display: inline-block;
|
133 |
+
box-sizing: border-box;
|
134 |
+
margin-bottom: 30px;
|
135 |
+
}
|
136 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-install-addon{
|
137 |
+
float: left;
|
138 |
+
}
|
139 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-add-addon{
|
140 |
+
padding-top: 9px;
|
141 |
+
padding-left: 30px;
|
142 |
+
}
|
143 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-add-addon a.active{
|
144 |
+
background: #222;
|
145 |
+
color: #fff;
|
146 |
+
outline: none;
|
147 |
+
box-shadow: none;
|
148 |
+
}
|
149 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-add-addon a{
|
150 |
+
padding: 7px 15px;
|
151 |
+
font-weight: normal;
|
152 |
+
border-radius: 5px;
|
153 |
}
|
154 |
.qsm-addon-browse-addons .qsm-addon-anchor-left{
|
155 |
float: left;
|
156 |
}
|
157 |
.qsm-addon-browse-addons .qsm-addon-list-right{
|
158 |
float: right;
|
159 |
+
padding-top: 15px;
|
160 |
+
padding-right: 30px;
|
161 |
}
|
162 |
.qsm-addon-browse-addons .qsm-addon-list-right > span{
|
163 |
margin-right: 10px;
|
164 |
font-size: 16px;
|
165 |
}
|
|
|
|
|
|
|
166 |
.qsm-addon-browse-addons .qsm-addon-anchor-left a{
|
167 |
display: inline-block;
|
168 |
font-size: 16px;
|
169 |
color: #474444;
|
170 |
text-decoration: none;
|
171 |
+
/*margin-top: 5px;*/
|
172 |
+
margin-right: 15px;
|
173 |
+
}
|
174 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-install-addon a{
|
175 |
+
background: #AAAAAA;
|
176 |
+
padding: 15px 25px;
|
177 |
+
color: #fff;
|
178 |
+
margin-right: -4px;
|
179 |
+
box-sizing: border-box;
|
180 |
+
}
|
181 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-install-addon a span.dashicons{
|
182 |
+
height: 15px;
|
183 |
+
}
|
184 |
+
.qsm-addon-browse-addons .qsm-addon-anchor-left .qsm-install-addon a.active{
|
185 |
+
background: #007CBA;
|
186 |
}
|
187 |
.qsm_popular_addons div.popuar-addon-ul{
|
188 |
width: 100%;
|
190 |
}
|
191 |
.qsm_popular_addons div.popuar-addon-ul > div{
|
192 |
background: #fff;
|
193 |
+
padding: 10px;
|
194 |
+
width: 31%;
|
195 |
margin-right: 2%;
|
196 |
float: left;
|
197 |
margin-bottom: 30px;
|
198 |
+
box-sizing: border-box;
|
199 |
}
|
200 |
.qsm_popular_addons div.popuar-addon-ul > div:nth-child(3n+4){
|
201 |
clear: both;
|
202 |
}
|
203 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-itd-wrap {
|
204 |
+
width: 100%;
|
205 |
+
display: inline-block;
|
206 |
+
}
|
207 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-image{
|
208 |
+
width: 100px;
|
209 |
+
height: 80px;
|
210 |
+
background-size: cover;
|
211 |
+
background-repeat: no-repeat;
|
212 |
+
background-position: center center;
|
213 |
+
background-color: #F0F0F0;
|
214 |
+
float: left;
|
215 |
+
}
|
216 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-title-descption{
|
217 |
+
width: calc( 100% - 110px );
|
218 |
+
float: right;
|
219 |
+
}
|
220 |
+
.qsm_popular_addons div.popuar-addon-ul .description{
|
221 |
+
display: block;
|
222 |
+
margin-bottom: 5px;
|
223 |
+
}
|
224 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-title{
|
225 |
+
font-size: 16px;
|
226 |
+
color: #222;
|
227 |
+
font-weight: bold;
|
228 |
+
text-decoration: none;
|
229 |
+
margin-bottom: 5px;
|
230 |
+
display: block;
|
231 |
+
}
|
232 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-price {
|
233 |
+
border-top: 1px solid #f1f1f1;
|
234 |
+
padding-top: 10px;
|
235 |
+
margin-top: 15px;
|
236 |
+
}
|
237 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-price-btn{
|
238 |
+
background: #fff;
|
239 |
+
border: #fff;
|
240 |
+
color: #007cba;
|
241 |
+
font-weight: bold;
|
242 |
+
font-size: 14px;
|
243 |
+
}
|
244 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-get-link{
|
245 |
+
float: right;
|
246 |
+
background: #fff;
|
247 |
+
color: #007cba;
|
248 |
+
border-width: 2px;
|
249 |
+
font-weight: bold;
|
250 |
+
}
|
251 |
+
.qsm_popular_addons div.popuar-addon-ul .addon-get-link span.dashicons {
|
252 |
+
margin-top: 4px;
|
253 |
+
}
|
254 |
.qsm_popular_addons div.popuar-addon-ul > div .description-wrap{
|
255 |
padding: 20px;
|
256 |
}
|
267 |
.qsm-quiz-page-addon.qsm-addon-page-list{
|
268 |
width: 75%;
|
269 |
float: left;
|
270 |
+
margin-top: 0;
|
271 |
}
|
272 |
.qsm-addon-news-ads{
|
273 |
width: 25%;
|
274 |
float: right;
|
275 |
+
background: #007CBA;
|
276 |
+
padding: 10px 20px 30px 20px;
|
277 |
box-sizing: border-box;
|
278 |
+
margin-top: 0;
|
279 |
}
|
280 |
.qsm-addon-news-ads .qsm-news-ads-title{
|
281 |
border-bottom: 0;
|
282 |
+
margin-top: 20px;
|
283 |
+
background: #fff;
|
284 |
+
padding: 16px;
|
285 |
+
color: #007CBA;
|
286 |
+
font-weight: bold;
|
287 |
+
position: relative;
|
288 |
+
}
|
289 |
+
.qsm-addon-news-ads .qsm-news-ads-title:before,
|
290 |
+
.qsm-addon-news-ads .qsm-news-ads-title:after{
|
291 |
+
content: "";
|
292 |
+
position: absolute;
|
293 |
+
height: 0;
|
294 |
+
width: 0;
|
295 |
+
top: 0;
|
296 |
+
left: 0;
|
297 |
+
border-style: solid;
|
298 |
+
border-width: 25px;
|
299 |
+
}
|
300 |
+
.qsm-addon-news-ads .qsm-news-ads-title:before{
|
301 |
+
border-color: transparent transparent transparent #007CBA;
|
302 |
+
}
|
303 |
+
.qsm-addon-news-ads .qsm-news-ads-title:after{
|
304 |
+
right: 0;
|
305 |
+
left: auto;
|
306 |
+
border-color: transparent #007CBA transparent transparent;
|
307 |
}
|
308 |
.qsm-addon-news-ads .qsm-info-widget{
|
309 |
text-align: left;
|
310 |
padding: 30px;
|
311 |
}
|
312 |
.qsm-addon-news-ads .qsm-info-widget h3{
|
313 |
+
color: #222;
|
314 |
+
font-weight: bold;
|
315 |
+
margin-top: 20px;
|
316 |
+
margin-bottom: 15px;
|
|
|
|
|
317 |
}
|
318 |
+
.qsm-addon-news-ads .qsm-info-widget p{
|
319 |
+
font-size: 14px;
|
|
|
320 |
}
|
321 |
.qsm-addon-news-ads .qsm-info-widget{
|
322 |
transform: none !important;
|
323 |
max-width: 100%;
|
324 |
+
position: relative;
|
325 |
+
background: #fff;
|
326 |
+
text-align: center;
|
327 |
+
margin-top: 70px;
|
328 |
}
|
329 |
+
.qsm-addon-news-ads .qsm-info-widget .bundle-icon{
|
330 |
+
width: 40px;
|
331 |
+
height: 40px;
|
332 |
+
padding: 20px;
|
333 |
+
border-radius: 50%;
|
334 |
+
position: absolute;
|
335 |
+
top: -40px;
|
336 |
+
left: calc( 50% - 40px );
|
337 |
+
border: 2px solid #fff;
|
338 |
+
box-shadow: 0px 0px 5px 1px rgb(0 0 0 / 16%);
|
339 |
+
}
|
340 |
+
.qsm-addon-news-ads .qsm-info-widget:nth-child(2) .bundle-icon{
|
341 |
+
background: #00B592;
|
342 |
}
|
343 |
+
.qsm-addon-news-ads .qsm-info-widget .addon-bundle-btn{
|
|
|
344 |
color: #fff;
|
345 |
+
width: 100%;
|
346 |
+
padding: 5px;
|
347 |
+
font-size: 14px;
|
348 |
+
position: relative;
|
349 |
+
margin-top: 0;
|
350 |
+
}
|
351 |
+
.qsm-addon-news-ads .qsm-info-widget .addon-bundle-btn span.dashicons{
|
352 |
+
position: absolute;
|
353 |
+
top: 10px;
|
354 |
+
right: 10px;
|
355 |
+
}
|
356 |
+
.qsm-addon-news-ads .qsm-info-widget:nth-child(2) .addon-bundle-btn{
|
357 |
+
background: #00B592;
|
358 |
+
border-color: #00B592;
|
359 |
+
}
|
360 |
+
.qsm-addon-news-ads .qsm-info-widget:nth-child(3) .bundle-icon{
|
361 |
+
background: #ED706F;
|
362 |
+
}
|
363 |
+
.qsm-addon-news-ads .qsm-info-widget:nth-child(3) .addon-bundle-btn{
|
364 |
+
background: #ED706F;
|
365 |
+
border-color: #ED706F;
|
366 |
}
|
367 |
.qsm-active-addons .installed_title{
|
368 |
background: #fff;
|
371 |
border: 1px solid #ccd0d4;
|
372 |
color: #007cba;
|
373 |
font-size: 16px;
|
374 |
+
display: none;
|
375 |
}
|
376 |
.qsm-active-addons .installed_addons_wrapper,
|
377 |
.qsm-active-addons .no_addons_installed{
|
378 |
border: 1px solid #ccd0d4;
|
379 |
+
/*border-top: medium none;*/
|
380 |
}
|
381 |
.qsm-active-addons .no_addons_installed{
|
382 |
padding: 30px 25%;
|
388 |
}
|
389 |
.qsm-active-addons .installed_addons_wrapper .installed_addon{
|
390 |
padding: 15px 15px 27px 15px;
|
|
|
|
|
|
|
391 |
background: #fff;
|
392 |
+
border-bottom: 1px solid #cdc7c7;
|
393 |
+
}
|
394 |
+
.qsm-active-addons .installed_addons_wrapper .installed_addon:last-child{
|
395 |
+
border-bottom: medium none;
|
396 |
}
|
397 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_name{
|
398 |
font-size: 14px;
|
403 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_link{
|
404 |
float: right;
|
405 |
}
|
406 |
+
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_link a{
|
407 |
+
background: #fff;
|
408 |
+
border-width: 2px;
|
409 |
+
font-weight: 500;
|
410 |
+
font-size: 13px;
|
411 |
+
padding-left: 15px;
|
412 |
+
padding-right: 15px;
|
413 |
+
}
|
414 |
.qsm-active-addons .installed_addons_wrapper .installed_addon .installed_addon_link span.dashicons{
|
415 |
margin-top: 4px;
|
416 |
}
|
475 |
Results Pages & Emails Tab
|
476 |
*********************/
|
477 |
.results-page,
|
478 |
+
#emails .email {
|
479 |
width: 100%;
|
480 |
background-color: #fff;
|
481 |
margin: 20px 0;
|
484 |
}
|
485 |
|
486 |
.results-page .results-page-content,
|
487 |
+
#emails .email .email-content{
|
488 |
background: #fff;
|
489 |
padding-right: 15px;
|
490 |
padding-left: 15px;
|
493 |
}
|
494 |
|
495 |
.results-page-header,
|
496 |
+
#emails .email-header {
|
497 |
display: flex;
|
498 |
align-items: center;
|
499 |
justify-content: flex-end;
|
503 |
}
|
504 |
|
505 |
.delete-page-button,
|
506 |
+
#emails .delete-email-button {
|
507 |
background: none;
|
508 |
border: none;
|
509 |
color: #dc3232;
|
512 |
}
|
513 |
|
514 |
.delete-page-button:hover,
|
515 |
+
#emails .delete-email-button:hover {
|
516 |
transform: scale(1.2);
|
517 |
}
|
518 |
|
@@ -211,7 +211,12 @@ var QSMAdmin;
|
|
211 |
var data = jQuery.parseJSON( response );
|
212 |
if( data.success === true ){
|
213 |
var text_msg = data.text_message;
|
214 |
-
|
|
|
|
|
|
|
|
|
|
|
215 |
tinyMCE.get( 'qsm_question_text_message' ).setContent( text_msg );
|
216 |
jQuery( '.qsm-text-allowed-variables > .qsm-text-variable-wrap' ).html('').html( data.allowed_variable_text );
|
217 |
jQuery('.qsm-text-main-wrap .qsm-text-tab-message-loader').hide();
|
@@ -308,12 +313,25 @@ var QSMAdmin;
|
|
308 |
this_par.text('').text(button_txt);
|
309 |
}, 1000);
|
310 |
});
|
311 |
-
$(document).on('click', '.qsm-addon-anchor-left
|
312 |
e.preventDefault();
|
313 |
var href = $(this).attr('href');
|
314 |
-
$('.qsm-addon-anchor-left').find('a').removeClass('active');
|
315 |
$(this).addClass('active');
|
316 |
-
$('.qsm-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
$( href ).show();
|
318 |
});
|
319 |
});
|
211 |
var data = jQuery.parseJSON( response );
|
212 |
if( data.success === true ){
|
213 |
var text_msg = data.text_message;
|
214 |
+
if ($('#wp-qsm_question_text_message-wrap').hasClass('html-active')) {
|
215 |
+
jQuery( "#qsm_question_text_message" ).val( text_msg );
|
216 |
+
} else {
|
217 |
+
text_msg = text_msg.replace(/\n/g,"<br>");
|
218 |
+
tinyMCE.get( 'qsm_question_text_message' ).setContent( text_msg );
|
219 |
+
}
|
220 |
tinyMCE.get( 'qsm_question_text_message' ).setContent( text_msg );
|
221 |
jQuery( '.qsm-text-allowed-variables > .qsm-text-variable-wrap' ).html('').html( data.allowed_variable_text );
|
222 |
jQuery('.qsm-text-main-wrap .qsm-text-tab-message-loader').hide();
|
313 |
this_par.text('').text(button_txt);
|
314 |
}, 1000);
|
315 |
});
|
316 |
+
$(document).on('click', '.qsm-addon-anchor-left .qsm-install-addon a', function(e){
|
317 |
e.preventDefault();
|
318 |
var href = $(this).attr('href');
|
319 |
+
$('.qsm-addon-anchor-left .qsm-install-addon').find('a').removeClass('active');
|
320 |
$(this).addClass('active');
|
321 |
+
$('.qsm-addon-setting-wrap .qsm-primary-acnhor').hide();
|
322 |
+
$( href ).show();
|
323 |
+
if( href == '#qsm_add_addons' ){
|
324 |
+
$('.qsm-add-addon').css('display', 'inline-block');
|
325 |
+
}else{
|
326 |
+
$('.qsm-add-addon').css('display', 'none');
|
327 |
+
}
|
328 |
+
});
|
329 |
+
$(document).on('click', '.qsm-addon-anchor-left .qsm-add-addon a', function(e){
|
330 |
+
e.preventDefault();
|
331 |
+
var href = $(this).attr('href');
|
332 |
+
$('.qsm-addon-anchor-left .qsm-add-addon').find('a').removeClass('active');
|
333 |
+
$(this).addClass('active');
|
334 |
+
$('.qsm-addon-setting-wrap .qsm_popular_addons').hide();
|
335 |
$( href ).show();
|
336 |
});
|
337 |
});
|
@@ -366,7 +366,7 @@ var import_button;
|
|
366 |
var answerInfo = $( '#correct_answer_info' ).val();
|
367 |
var type = $( "#question_type" ).val();
|
368 |
var comments = $( "#comments" ).val();
|
369 |
-
advanced_option['required'] = $("
|
370 |
var category = $( ".category-radio:checked" ).val();
|
371 |
var autofill = $( "#hide_autofill" ).val();
|
372 |
var limit_text = $( "#limit_text" ).val();
|
@@ -869,10 +869,10 @@ var import_button;
|
|
869 |
//Add new category
|
870 |
$( document ).on('click', '#qsm-category-add-toggle', function(){
|
871 |
if( $( '#qsm-category-add' ).is(":visible") ){
|
872 |
-
$('#new_category_new').attr('checked', false);
|
873 |
$( '#qsm-category-add' ).slideUp('slow');
|
874 |
}else{
|
875 |
-
$('#new_category_new').attr('checked', true);
|
876 |
$( '#qsm-category-add' ).slideDown('slow');
|
877 |
}
|
878 |
});
|
366 |
var answerInfo = $( '#correct_answer_info' ).val();
|
367 |
var type = $( "#question_type" ).val();
|
368 |
var comments = $( "#comments" ).val();
|
369 |
+
advanced_option['required'] = $(".questionElements input[name='required']").is(":checked") ? 0 : 1;
|
370 |
var category = $( ".category-radio:checked" ).val();
|
371 |
var autofill = $( "#hide_autofill" ).val();
|
372 |
var limit_text = $( "#limit_text" ).val();
|
869 |
//Add new category
|
870 |
$( document ).on('click', '#qsm-category-add-toggle', function(){
|
871 |
if( $( '#qsm-category-add' ).is(":visible") ){
|
872 |
+
$('.questionElements #new_category_new').attr('checked', false);
|
873 |
$( '#qsm-category-add' ).slideUp('slow');
|
874 |
}else{
|
875 |
+
$('.questionElements #new_category_new').attr('checked', true).prop('checked', 'checked');
|
876 |
$( '#qsm-category-add' ).slideDown('slow');
|
877 |
}
|
878 |
});
|
@@ -102,6 +102,7 @@ var QSMQuizzesSurveys;
|
|
102 |
icons: icons,
|
103 |
heightStyle: "content"
|
104 |
});
|
|
|
105 |
jQuery('.template-list .template-list-inner:first-child').trigger('click');
|
106 |
}
|
107 |
});
|
@@ -112,6 +113,8 @@ var QSMQuizzesSurveys;
|
|
112 |
var addons = $(this).data('addons');
|
113 |
$('.template-list .template-list-inner').removeClass('selected-quiz-template');
|
114 |
$(this).addClass('selected-quiz-template');
|
|
|
|
|
115 |
$.post(ajaxurl, {settings: settings, addons: addons, action: action },
|
116 |
function (data) {
|
117 |
var diff_html = data.split('=====');
|
@@ -120,6 +123,14 @@ var QSMQuizzesSurveys;
|
|
120 |
$('#recomm_addons_wrapper').html('');
|
121 |
$('#recomm_addons_wrapper').html(diff_html[1]);
|
122 |
$( "#accordion" ).accordion();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
}
|
124 |
);
|
125 |
});
|
@@ -127,6 +138,14 @@ var QSMQuizzesSurveys;
|
|
127 |
event.preventDefault();
|
128 |
MicroModal.show( 'modal-export-import' );
|
129 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
/*$( '#quiz_search' ).keyup( function() {
|
131 |
QSMQuizzesSurveys.searchQuizzes( $( this ).val() );
|
132 |
});*/
|
102 |
icons: icons,
|
103 |
heightStyle: "content"
|
104 |
});
|
105 |
+
jQuery('#accordion h3.ui-accordion-header').next().slideDown();
|
106 |
jQuery('.template-list .template-list-inner:first-child').trigger('click');
|
107 |
}
|
108 |
});
|
113 |
var addons = $(this).data('addons');
|
114 |
$('.template-list .template-list-inner').removeClass('selected-quiz-template');
|
115 |
$(this).addClass('selected-quiz-template');
|
116 |
+
$('#quiz_settings_wrapper').html('').html('<div class="qsm-spinner-loader"></div>');
|
117 |
+
$('#recomm_addons_wrapper').html('').html('<div class="qsm-spinner-loader"></div>');
|
118 |
$.post(ajaxurl, {settings: settings, addons: addons, action: action },
|
119 |
function (data) {
|
120 |
var diff_html = data.split('=====');
|
123 |
$('#recomm_addons_wrapper').html('');
|
124 |
$('#recomm_addons_wrapper').html(diff_html[1]);
|
125 |
$( "#accordion" ).accordion();
|
126 |
+
$('#accordion h3.ui-accordion-header').next().slideDown();
|
127 |
+
$( '#quiz_settings_wrapper select' ).each(function(){
|
128 |
+
var name = $(this).attr('name');
|
129 |
+
var value = $(this).val();
|
130 |
+
if( $( '.' + name + '_' + value ).length > 0 ){
|
131 |
+
$( '.' + name + '_' + value ).show();
|
132 |
+
}
|
133 |
+
});
|
134 |
}
|
135 |
);
|
136 |
});
|
138 |
event.preventDefault();
|
139 |
MicroModal.show( 'modal-export-import' );
|
140 |
});
|
141 |
+
$(document).on('change', '.qsm_tab_content select, #quiz_settings_wrapper select', function(){
|
142 |
+
var name = $(this).attr('name');
|
143 |
+
var value = $(this).val();
|
144 |
+
$( '.qsm_hidden_tr' ).hide();
|
145 |
+
if( $( '.' + name + '_' + value ).length > 0 ){
|
146 |
+
$( '.' + name + '_' + value ).show();
|
147 |
+
}
|
148 |
+
});
|
149 |
/*$( '#quiz_search' ).keyup( function() {
|
150 |
QSMQuizzesSurveys.searchQuizzes( $( this ).val() );
|
151 |
});*/
|
@@ -658,14 +658,14 @@ function qmnResetError( quiz_form_id ) {
|
|
658 |
jQuery( '#' + quiz_form_id + ' .quiz_section' ).removeClass( 'qmn_error' );
|
659 |
}
|
660 |
|
661 |
-
function qmnValidation( element, quiz_form_id ) {
|
662 |
var result = true;
|
663 |
var quiz_id = +jQuery( '#' + quiz_form_id ).find( '.qmn_quiz_id' ).val();
|
664 |
var email_error = qmn_quiz_data[ quiz_id ].error_messages.email;
|
665 |
var number_error = qmn_quiz_data[ quiz_id ].error_messages.number;
|
666 |
var empty_error = qmn_quiz_data[ quiz_id ].error_messages.empty;
|
667 |
var incorrect_error = qmn_quiz_data[ quiz_id ].error_messages.incorrect;
|
668 |
-
qmnResetError( quiz_form_id );
|
669 |
jQuery( element ).each(function(){
|
670 |
if ( jQuery( this ).attr( 'class' )) {
|
671 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwEmail' ) !== -1 && this.value !== "" ) {
|
@@ -677,7 +677,7 @@ function qmnValidation( element, quiz_form_id ) {
|
|
677 |
}
|
678 |
}
|
679 |
var by_pass = true;
|
680 |
-
if( qmn_quiz_data[quiz_id].hasOwnProperty('skip_validation_time_expire') && qmn_quiz_data[quiz_id].skip_validation_time_expire == 0 ){
|
681 |
by_pass = false;
|
682 |
}
|
683 |
|
@@ -699,7 +699,7 @@ function qmnValidation( element, quiz_form_id ) {
|
|
699 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwRequiredAccept' ) > -1 && ! jQuery( this ).prop( 'checked' ) ) {
|
700 |
qmnDisplayError( empty_error, jQuery( this ), quiz_form_id );
|
701 |
result = false;
|
702 |
-
}
|
703 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwRequiredRadio' ) > -1 ) {
|
704 |
check_val = jQuery( this ).find( 'input:checked' ).val();
|
705 |
if ( check_val == "No Answer Provided" ) {
|
@@ -1182,11 +1182,14 @@ jQuery(function() {
|
|
1182 |
},
|
1183 |
success: function (response) {
|
1184 |
parent_div.replaceWith(response);
|
1185 |
-
|
1186 |
-
|
|
|
|
|
1187 |
|
1188 |
-
|
1189 |
-
|
|
|
1190 |
|
1191 |
QSM.initPagination( quiz_id );
|
1192 |
},
|
658 |
jQuery( '#' + quiz_form_id + ' .quiz_section' ).removeClass( 'qmn_error' );
|
659 |
}
|
660 |
|
661 |
+
function qmnValidation( element, quiz_form_id ) {
|
662 |
var result = true;
|
663 |
var quiz_id = +jQuery( '#' + quiz_form_id ).find( '.qmn_quiz_id' ).val();
|
664 |
var email_error = qmn_quiz_data[ quiz_id ].error_messages.email;
|
665 |
var number_error = qmn_quiz_data[ quiz_id ].error_messages.number;
|
666 |
var empty_error = qmn_quiz_data[ quiz_id ].error_messages.empty;
|
667 |
var incorrect_error = qmn_quiz_data[ quiz_id ].error_messages.incorrect;
|
668 |
+
qmnResetError( quiz_form_id );
|
669 |
jQuery( element ).each(function(){
|
670 |
if ( jQuery( this ).attr( 'class' )) {
|
671 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwEmail' ) !== -1 && this.value !== "" ) {
|
677 |
}
|
678 |
}
|
679 |
var by_pass = true;
|
680 |
+
if( qmn_quiz_data[ quizID ].timer_limit_val > 0 && qmn_quiz_data[quiz_id].hasOwnProperty('skip_validation_time_expire') && qmn_quiz_data[quiz_id].skip_validation_time_expire == 0 ){
|
681 |
by_pass = false;
|
682 |
}
|
683 |
|
699 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwRequiredAccept' ) > -1 && ! jQuery( this ).prop( 'checked' ) ) {
|
700 |
qmnDisplayError( empty_error, jQuery( this ), quiz_form_id );
|
701 |
result = false;
|
702 |
+
}
|
703 |
if( jQuery( this ).attr( 'class' ).indexOf( 'mlwRequiredRadio' ) > -1 ) {
|
704 |
check_val = jQuery( this ).find( 'input:checked' ).val();
|
705 |
if ( check_val == "No Answer Provided" ) {
|
1182 |
},
|
1183 |
success: function (response) {
|
1184 |
parent_div.replaceWith(response);
|
1185 |
+
|
1186 |
+
if( qmn_quiz_data[ quiz_id ].timer_limit_val > 0 ){
|
1187 |
+
// Restart the timer for retake quiz.
|
1188 |
+
setInterval( qmnTimeTakenTimer, 1000 );
|
1189 |
|
1190 |
+
// Reset the timer clock on retake quiz.
|
1191 |
+
QSM.initTimer( quiz_id );
|
1192 |
+
}
|
1193 |
|
1194 |
QSM.initPagination( quiz_id );
|
1195 |
},
|
@@ -2,14 +2,14 @@
|
|
2 |
/**
|
3 |
* Plugin Name: Quiz And Survey Master
|
4 |
* Description: Easily and quickly add quizzes and surveys to your website.
|
5 |
-
* Version: 7.0.
|
6 |
* Author: ExpressTech
|
7 |
* Author URI: https://quizandsurveymaster.com/
|
8 |
* Plugin URI: https://expresstech.io/
|
9 |
* Text Domain: quiz-master-next
|
10 |
*
|
11 |
* @author QSM Team
|
12 |
-
* @version 7.0.
|
13 |
* @package QSM
|
14 |
*/
|
15 |
|
@@ -37,7 +37,7 @@ class MLWQuizMasterNext {
|
|
37 |
* @var string
|
38 |
* @since 4.0.0
|
39 |
*/
|
40 |
-
public $version = '7.0.
|
41 |
|
42 |
/**
|
43 |
* QSM Alert Manager Object
|
2 |
/**
|
3 |
* Plugin Name: Quiz And Survey Master
|
4 |
* Description: Easily and quickly add quizzes and surveys to your website.
|
5 |
+
* Version: 7.0.2
|
6 |
* Author: ExpressTech
|
7 |
* Author URI: https://quizandsurveymaster.com/
|
8 |
* Plugin URI: https://expresstech.io/
|
9 |
* Text Domain: quiz-master-next
|
10 |
*
|
11 |
* @author QSM Team
|
12 |
+
* @version 7.0.2
|
13 |
* @package QSM
|
14 |
*/
|
15 |
|
37 |
* @var string
|
38 |
* @since 4.0.0
|
39 |
*/
|
40 |
+
public $version = '7.0.2';
|
41 |
|
42 |
/**
|
43 |
* QSM Alert Manager Object
|
@@ -63,8 +63,25 @@ function qsm_generate_featured_addons() {
|
|
63 |
global $mlwQuizMasterNext;
|
64 |
wp_enqueue_script( 'qsm_admin_script', plugins_url( '../../js/admin.js', __FILE__ ), array( 'jquery' ), $mlwQuizMasterNext->version );
|
65 |
$tab_array = $mlwQuizMasterNext->pluginHelper->get_addon_tabs();
|
66 |
-
?>
|
67 |
-
<div class="qsm-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
<h2 class="installed_title"><?php _e('Installed Addons', 'quiz-master-next'); ?></h2>
|
69 |
<?php
|
70 |
if( $tab_array && count( $tab_array ) > 1 ){ ?>
|
@@ -93,18 +110,8 @@ function qsm_generate_featured_addons() {
|
|
93 |
<?php }
|
94 |
?>
|
95 |
</div>
|
96 |
-
<div class="qsm-
|
97 |
-
<div class="qsm-addon-
|
98 |
-
<a class="active" href="#qsm_popular_addons"><?php _e('Popular Addons', 'quiz-master-next'); ?></a>
|
99 |
-
<a href="#qsm_onsale_addons"><?php _e('On Sale Addons', 'quiz-master-next'); ?></a>
|
100 |
-
<a href="#qsm_new_addons"><?php _e('Recently Updated Addons', 'quiz-master-next'); ?></a>
|
101 |
-
</div>
|
102 |
-
<div class="qsm-addon-list-right">
|
103 |
-
<span><?php _e('40+ addons available', 'quiz-master-next'); ?></span>
|
104 |
-
<a href="http://quizandsurveymaster.com/addons/?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank" class="button-primary"><?php _e('Browse All Addons', 'quiz-master-next'); ?></a>
|
105 |
-
</div>
|
106 |
-
</div>
|
107 |
-
<div class="qsm-quiz-page-addon qsm-addon-page-list">
|
108 |
<?php
|
109 |
$popular_addons = qsm_get_widget_data('popular_products');
|
110 |
if( empty( $popular_addons ) ){
|
@@ -119,14 +126,24 @@ function qsm_generate_featured_addons() {
|
|
119 |
foreach ( $popular_addons as $key => $single_arr ) {
|
120 |
?>
|
121 |
<div>
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
<
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
</div>
|
131 |
<?php
|
132 |
}
|
@@ -148,14 +165,24 @@ function qsm_generate_featured_addons() {
|
|
148 |
foreach ( $qsm_onsale_addons as $key => $single_arr ) {
|
149 |
?>
|
150 |
<div>
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
<
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
</div>
|
160 |
<?php
|
161 |
}
|
@@ -180,16 +207,24 @@ function qsm_generate_featured_addons() {
|
|
180 |
}
|
181 |
?>
|
182 |
<div>
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
</div>
|
194 |
<?php
|
195 |
}
|
@@ -212,17 +247,25 @@ function qsm_generate_featured_addons() {
|
|
212 |
<h3 class="qsm-news-ads-title"><?php _e('SAVE WITH OUR BUNDLES', 'quiz-master-next'); ?></h3>
|
213 |
<?php
|
214 |
foreach ($bundles as $key => $bundles_arr) { ?>
|
215 |
-
<div class="qsm-info-widget"
|
216 |
-
|
217 |
-
|
218 |
-
<
|
219 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
</div>
|
221 |
<?php
|
222 |
}
|
223 |
}
|
224 |
?>
|
225 |
</div>
|
|
|
226 |
<?php
|
227 |
}
|
228 |
|
63 |
global $mlwQuizMasterNext;
|
64 |
wp_enqueue_script( 'qsm_admin_script', plugins_url( '../../js/admin.js', __FILE__ ), array( 'jquery' ), $mlwQuizMasterNext->version );
|
65 |
$tab_array = $mlwQuizMasterNext->pluginHelper->get_addon_tabs();
|
66 |
+
?>
|
67 |
+
<div class="qsm-addon-browse-addons">
|
68 |
+
<div class="qsm-addon-anchor-left">
|
69 |
+
<div class="qsm-install-addon">
|
70 |
+
<a class="active" href="#qsm_installed_addons"><?php _e('Installed Addons', 'quiz-master-next'); ?></a>
|
71 |
+
<a href="#qsm_add_addons"><?php _e('Add Addons', 'quiz-master-next'); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a>
|
72 |
+
</div>
|
73 |
+
<div class="qsm-add-addon" style="display: none;">
|
74 |
+
<a class="active" href="#qsm_popular_addons"><?php _e('Popular Addons', 'quiz-master-next'); ?></a>
|
75 |
+
<a href="#qsm_onsale_addons"><?php _e('On Sale Addons', 'quiz-master-next'); ?></a>
|
76 |
+
<a href="#qsm_new_addons"><?php _e('Recently Updated Addons', 'quiz-master-next'); ?></a>
|
77 |
+
</div>
|
78 |
+
</div>
|
79 |
+
<div class="qsm-addon-list-right">
|
80 |
+
<span><?php _e('40+ addons available', 'quiz-master-next'); ?></span>
|
81 |
+
<a style="text-decoration: none; font-size: 15px;" href="http://quizandsurveymaster.com/addons/?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank"><?php _e('Browse All Addons', 'quiz-master-next'); ?></a>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
<div id="qsm_installed_addons" class="qsm-active-addons qsm-primary-acnhor">
|
85 |
<h2 class="installed_title"><?php _e('Installed Addons', 'quiz-master-next'); ?></h2>
|
86 |
<?php
|
87 |
if( $tab_array && count( $tab_array ) > 1 ){ ?>
|
110 |
<?php }
|
111 |
?>
|
112 |
</div>
|
113 |
+
<div id="qsm_add_addons" class="qsm-primary-acnhor" style="display: none;">
|
114 |
+
<div class="qsm-quiz-page-addon qsm-addon-page-list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
<?php
|
116 |
$popular_addons = qsm_get_widget_data('popular_products');
|
117 |
if( empty( $popular_addons ) ){
|
126 |
foreach ( $popular_addons as $key => $single_arr ) {
|
127 |
?>
|
128 |
<div>
|
129 |
+
<div class="addon-itd-wrap">
|
130 |
+
<div class="addon-image" style="background-image: url('<?php echo $single_arr['img']; ?>')"></div>
|
131 |
+
<div class="addon-title-descption">
|
132 |
+
<a class="addon-title" href="<?php echo $single_arr['link']; ?>" target="_blank">
|
133 |
+
<?php echo $single_arr['name']; ?>
|
134 |
+
</a>
|
135 |
+
<span class="description">
|
136 |
+
<?php echo wp_trim_words($single_arr['description'], 8); ?>
|
137 |
+
</span>
|
138 |
+
<?php if(str_word_count($single_arr['description']) > 9 ){
|
139 |
+
echo '<a class="read-more" href="'. $single_arr['link'] .'">'. __('Show more', 'quiz-master-next') .'</a>';
|
140 |
+
} ?>
|
141 |
+
</div>
|
142 |
+
</div>
|
143 |
+
<div class="addon-price">
|
144 |
+
<button class="button button-primary addon-price-btn"><?php _e('Price: ' , 'quiz-master-next'); ?>$<?php echo array_values($single_arr['price'])[0]; ?></button>
|
145 |
+
<a class="button button-primary addon-get-link" href="<?php echo $single_arr['link']; ?>?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank"><?php _e('Get This Addon', 'quiz-master-next'); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a>
|
146 |
+
</div>
|
147 |
</div>
|
148 |
<?php
|
149 |
}
|
165 |
foreach ( $qsm_onsale_addons as $key => $single_arr ) {
|
166 |
?>
|
167 |
<div>
|
168 |
+
<div class="addon-itd-wrap">
|
169 |
+
<div class="addon-image" style="background-image: url('<?php echo $single_arr['img']; ?>')"></div>
|
170 |
+
<div class="addon-title-descption">
|
171 |
+
<a class="addon-title" href="<?php echo $single_arr['link']; ?>" target="_blank">
|
172 |
+
<?php echo $single_arr['name']; ?>
|
173 |
+
</a>
|
174 |
+
<span class="description">
|
175 |
+
<?php echo wp_trim_words($single_arr['description'], 8); ?>
|
176 |
+
</span>
|
177 |
+
<?php if(str_word_count($single_arr['description']) > 9 ){
|
178 |
+
echo '<a class="read-more" href="'. $single_arr['link'] .'">'. __('Show more', 'quiz-master-next') .'</a>';
|
179 |
+
} ?>
|
180 |
+
</div>
|
181 |
+
</div>
|
182 |
+
<div class="addon-price">
|
183 |
+
<button class="button button-primary addon-price-btn"><?php _e('Price: ' , 'quiz-master-next'); ?>$<?php echo array_values($single_arr['price'])[0]; ?></button>
|
184 |
+
<a class="button button-primary addon-get-link" href="<?php echo $single_arr['link']; ?>?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank"><?php _e('Get This Addon', 'quiz-master-next'); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a>
|
185 |
+
</div>
|
186 |
</div>
|
187 |
<?php
|
188 |
}
|
207 |
}
|
208 |
?>
|
209 |
<div>
|
210 |
+
<div class="addon-itd-wrap">
|
211 |
+
<div class="addon-image" style="background-image: url('<?php echo $single_arr['img']; ?>')"></div>
|
212 |
+
<div class="addon-title-descption">
|
213 |
+
<a class="addon-title" href="<?php echo $single_arr['link']; ?>" target="_blank">
|
214 |
+
<?php echo $single_arr['name']; ?>
|
215 |
+
</a>
|
216 |
+
<span class="description">
|
217 |
+
<?php echo wp_trim_words($single_arr['description'], 8); ?>
|
218 |
+
</span>
|
219 |
+
<?php if(str_word_count($single_arr['description']) > 9 ){
|
220 |
+
echo '<a class="read-more" href="'. $single_arr['link'] .'">'. __('Show more', 'quiz-master-next') .'</a>';
|
221 |
+
} ?>
|
222 |
+
</div>
|
223 |
+
</div>
|
224 |
+
<div class="addon-price">
|
225 |
+
<button class="button button-primary addon-price-btn"><?php _e('Price: ' , 'quiz-master-next'); ?>$<?php echo array_values($single_arr['price'])[0]; ?></button>
|
226 |
+
<a class="button button-primary addon-get-link" href="<?php echo $single_arr['link']; ?>?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank"><?php _e('Get This Addon', 'quiz-master-next'); ?> <span class="dashicons dashicons-arrow-right-alt2"></span></a>
|
227 |
+
</div>
|
228 |
</div>
|
229 |
<?php
|
230 |
}
|
247 |
<h3 class="qsm-news-ads-title"><?php _e('SAVE WITH OUR BUNDLES', 'quiz-master-next'); ?></h3>
|
248 |
<?php
|
249 |
foreach ($bundles as $key => $bundles_arr) { ?>
|
250 |
+
<div class="qsm-info-widget">
|
251 |
+
<div class="bundle-icon">
|
252 |
+
<?php
|
253 |
+
echo '<img src="'. QSM_PLUGIN_URL .'assets/'. $bundles_arr['name'] .'.png" />';
|
254 |
+
?>
|
255 |
+
</div>
|
256 |
+
<h3><?php echo $bundles_arr['name']; ?></h3>
|
257 |
+
<p><?php echo $bundles_arr['desc']; ?></p>
|
258 |
+
<a href="<?php echo $bundles_arr['link']; ?>?utm_source=qsm-addons-page&utm_medium=plugin&utm_content=all-addons-top&utm_campaign=qsm_plugin" target="_blank" class="button button-primary addon-bundle-btn">
|
259 |
+
<?php echo _e('Get now', 'quiz-master-next'); ?> $<?php echo array_values($bundles_arr['price'])[0]; ?>
|
260 |
+
<span class="dashicons dashicons-arrow-right-alt2"></span>
|
261 |
+
</a>
|
262 |
</div>
|
263 |
<?php
|
264 |
}
|
265 |
}
|
266 |
?>
|
267 |
</div>
|
268 |
+
</div>
|
269 |
<?php
|
270 |
}
|
271 |
|
@@ -1,25 +1,21 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* @since 7.0
|
|
|
4 |
* @param string $name
|
5 |
*/
|
6 |
function qsm_get_widget_data( $name ){
|
7 |
-
$
|
8 |
-
if($get_dashboard_data !== false && !empty( $get_dashboard_data ) ){
|
9 |
-
$qsm_admin_dd = $get_dashboard_data;
|
10 |
-
}else{
|
11 |
-
$qsm_admin_dd = qsm_fetch_data_from_script();
|
12 |
-
set_transient( 'qsm_admin_dashboard_data', $qsm_admin_dd, 24*60*60 );
|
13 |
-
}
|
14 |
return isset( $qsm_admin_dd[$name] ) ? $qsm_admin_dd[$name] : array();
|
15 |
}
|
16 |
|
|
|
17 |
function qsm_fetch_data_from_script(){
|
18 |
$args = array(
|
19 |
'timeout' => 10,
|
20 |
'sslverify' => false
|
21 |
);
|
22 |
-
$fetch_api_data = wp_remote_get('https://
|
23 |
if( is_array( $fetch_api_data ) && isset( $fetch_api_data['response'] ) && isset( $fetch_api_data['response']['code'] ) && $fetch_api_data['response']['code'] == 200 ){
|
24 |
$qsm_admin_dd = wp_remote_retrieve_body( $fetch_api_data );
|
25 |
return json_decode( $qsm_admin_dd, true );
|
1 |
<?php
|
2 |
/**
|
3 |
* @since 7.0
|
4 |
+
* @since 7.0.2 Removed the transient
|
5 |
* @param string $name
|
6 |
*/
|
7 |
function qsm_get_widget_data( $name ){
|
8 |
+
$qsm_admin_dd = qsm_fetch_data_from_script();
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
return isset( $qsm_admin_dd[$name] ) ? $qsm_admin_dd[$name] : array();
|
10 |
}
|
11 |
|
12 |
+
|
13 |
function qsm_fetch_data_from_script(){
|
14 |
$args = array(
|
15 |
'timeout' => 10,
|
16 |
'sslverify' => false
|
17 |
);
|
18 |
+
$fetch_api_data = wp_remote_get('https://t6k8i7j6.stackpathcdn.com/wp-content/parsing_script.json', $args);
|
19 |
if( is_array( $fetch_api_data ) && isset( $fetch_api_data['response'] ) && isset( $fetch_api_data['response']['code'] ) && $fetch_api_data['response']['code'] == 200 ){
|
20 |
$qsm_admin_dd = wp_remote_retrieve_body( $fetch_api_data );
|
21 |
return json_decode( $qsm_admin_dd, true );
|
@@ -110,17 +110,24 @@ function qsm_generate_results_details_tab() {
|
|
110 |
$new_template_result_detail = esc_attr( $settings['new_template_result_detail'] );
|
111 |
}
|
112 |
if( $new_template_result_detail == 1 ){
|
113 |
-
$template = '';
|
114 |
-
if ( is_serialized( $results_data->quiz_results ) && is_array( @unserialize( $results_data->quiz_results ) ) ) {
|
|
|
115 |
$template .= '<div class="overview-main-wrapper">';
|
116 |
//User detail
|
117 |
$template .= '<div class="candidate-detail-wrap overview-inner-wrap">';
|
118 |
$template .= '<div id="submitdiv" class="postbox "><h2 class="hndle ui-sortable-handle"><span>User Detail</span></h2>';
|
119 |
-
$template .= '<div class="inside">';
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
$template .= '</div>';
|
125 |
$template .= '</div>';
|
126 |
$template .= '</div>';
|
@@ -221,8 +228,10 @@ function qsm_generate_results_details_tab() {
|
|
221 |
}
|
222 |
|
223 |
// Prepare responses array.
|
|
|
224 |
if ( is_serialized( $results_data->quiz_results ) && is_array( @unserialize( $results_data->quiz_results ) ) ) {
|
225 |
$results = unserialize($results_data->quiz_results);
|
|
|
226 |
if ( ! isset( $results["contact"] ) ) {
|
227 |
$results["contact"] = array();
|
228 |
}
|
@@ -254,7 +263,7 @@ function qsm_generate_results_details_tab() {
|
|
254 |
'total_points' => $results_data->point_score,
|
255 |
'total_score' => $results_data->correct_score,
|
256 |
'total_correct' => $results_data->correct,
|
257 |
-
'total_questions' => $results_data->total,
|
258 |
'comments' => isset( $results[2] ) ? $results[2] : '',
|
259 |
'question_answers_array' => isset( $results[1] ) ? $results[1] : array(),
|
260 |
'contact' => $results["contact"],
|
110 |
$new_template_result_detail = esc_attr( $settings['new_template_result_detail'] );
|
111 |
}
|
112 |
if( $new_template_result_detail == 1 ){
|
113 |
+
$template = '';
|
114 |
+
if ( is_serialized( $results_data->quiz_results ) && is_array( @unserialize( $results_data->quiz_results ) ) ) {
|
115 |
+
$results_contact = unserialize($results_data->quiz_results);
|
116 |
$template .= '<div class="overview-main-wrapper">';
|
117 |
//User detail
|
118 |
$template .= '<div class="candidate-detail-wrap overview-inner-wrap">';
|
119 |
$template .= '<div id="submitdiv" class="postbox "><h2 class="hndle ui-sortable-handle"><span>User Detail</span></h2>';
|
120 |
+
$template .= '<div class="inside">';
|
121 |
+
if( isset( $results_contact['contact'] ) && is_array( $results_contact['contact'] ) && !empty( $results_contact['contact'] ) ){
|
122 |
+
for ( $i = 0; $i < count( $results_contact["contact"] ); $i++ ) {
|
123 |
+
$template .= '<span class="result-candidate-span"><label>'. $results_contact["contact"][ $i ]["label"] .'</label><span>'. $results_contact["contact"][ $i ]["value"] .'</span></span>';
|
124 |
+
}
|
125 |
+
}else{
|
126 |
+
$template .= '<span class="result-candidate-span"><label>'. __( 'Name:', 'quiz-master-next' ) .'</label><span>'. $results_data->name .'</span></span>';
|
127 |
+
$template .= '<span class="result-candidate-span"><label>'. __( 'Business:', 'quiz-master-next' ) .'</label><span>'. $results_data->business .'</span></span>';
|
128 |
+
$template .= '<span class="result-candidate-span"><label>'. __( 'Phone:', 'quiz-master-next' ) .'</label><span>'. $results_data->phone .'</span></span>';
|
129 |
+
$template .= '<span class="result-candidate-span"><label>'. __( 'Email:', 'quiz-master-next' ) .'</label><span>'. $results_data->email .'</span></span>';
|
130 |
+
}
|
131 |
$template .= '</div>';
|
132 |
$template .= '</div>';
|
133 |
$template .= '</div>';
|
228 |
}
|
229 |
|
230 |
// Prepare responses array.
|
231 |
+
$total_hidden_questions = 0;
|
232 |
if ( is_serialized( $results_data->quiz_results ) && is_array( @unserialize( $results_data->quiz_results ) ) ) {
|
233 |
$results = unserialize($results_data->quiz_results);
|
234 |
+
$total_hidden_questions = isset($results['hidden_questions']) ? count($results['hidden_questions']) : 0;
|
235 |
if ( ! isset( $results["contact"] ) ) {
|
236 |
$results["contact"] = array();
|
237 |
}
|
263 |
'total_points' => $results_data->point_score,
|
264 |
'total_score' => $results_data->correct_score,
|
265 |
'total_correct' => $results_data->correct,
|
266 |
+
'total_questions' => $results_data->total - $total_hidden_questions,
|
267 |
'comments' => isset( $results[2] ) ? $results[2] : '',
|
268 |
'question_answers_array' => isset( $results[1] ) ? $results[1] : array(),
|
269 |
'contact' => $results["contact"],
|
@@ -343,6 +343,7 @@ function qsm_results_overview_tab_content() {
|
|
343 |
}
|
344 |
$mlw_complete_time = '';
|
345 |
$mlw_qmn_results_array = @unserialize($mlw_quiz_info->quiz_results);
|
|
|
346 |
if ( is_array( $mlw_qmn_results_array ) ) {
|
347 |
$mlw_complete_hours = floor($mlw_qmn_results_array[0] / 3600);
|
348 |
if ( $mlw_complete_hours > 0 ) {
|
@@ -355,7 +356,8 @@ function qsm_results_overview_tab_content() {
|
|
355 |
$mlw_complete_seconds = $mlw_qmn_results_array[0] % 60;
|
356 |
$mlw_complete_time .= "$mlw_complete_seconds seconds";
|
357 |
}
|
358 |
-
|
|
|
359 |
$quotes_list .= "<tr{$alternate}>";
|
360 |
$quotes_list .= "<td><input type='checkbox' class='qmn_delete_checkbox' name='delete_results[]' value='".$mlw_quiz_info->result_id. "' /></td>";
|
361 |
$quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->quiz_name . "</span><div class='row-actions'><span style='color:green;font-size:16px;'><a href='admin.php?page=qsm_quiz_result_details&&result_id=".$mlw_quiz_info->result_id."'>View</a> | <a style='color: red;' onclick=\"deleteResults('".$mlw_quiz_info->result_id."','".esc_js($mlw_quiz_info->quiz_name)."')\" href='#'>Delete</a></span></div></td>";
|
@@ -364,7 +366,7 @@ function qsm_results_overview_tab_content() {
|
|
364 |
$quotes_list .= "<td><span style='font-size:16px;'>".__('Not Graded','quiz-master-next' )."</span></td>";
|
365 |
} else {
|
366 |
if ( $mlw_quiz_info->quiz_system == 0 ) {
|
367 |
-
$quotes_list .= "<td class='post-title column-title'><span style='font-size:16px;'>" . $mlw_quiz_info->correct ." out of ".$
|
368 |
}
|
369 |
if ( $mlw_quiz_info->quiz_system == 1 ) {
|
370 |
$quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->point_score . " Points</span></td>";
|
343 |
}
|
344 |
$mlw_complete_time = '';
|
345 |
$mlw_qmn_results_array = @unserialize($mlw_quiz_info->quiz_results);
|
346 |
+
$hidden_questions = isset($mlw_qmn_results_array['hidden_questions']) ? count($mlw_qmn_results_array['hidden_questions']): 0;
|
347 |
if ( is_array( $mlw_qmn_results_array ) ) {
|
348 |
$mlw_complete_hours = floor($mlw_qmn_results_array[0] / 3600);
|
349 |
if ( $mlw_complete_hours > 0 ) {
|
356 |
$mlw_complete_seconds = $mlw_qmn_results_array[0] % 60;
|
357 |
$mlw_complete_time .= "$mlw_complete_seconds seconds";
|
358 |
}
|
359 |
+
|
360 |
+
$out_of_q = $mlw_quiz_info->total - $hidden_questions;
|
361 |
$quotes_list .= "<tr{$alternate}>";
|
362 |
$quotes_list .= "<td><input type='checkbox' class='qmn_delete_checkbox' name='delete_results[]' value='".$mlw_quiz_info->result_id. "' /></td>";
|
363 |
$quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->quiz_name . "</span><div class='row-actions'><span style='color:green;font-size:16px;'><a href='admin.php?page=qsm_quiz_result_details&&result_id=".$mlw_quiz_info->result_id."'>View</a> | <a style='color: red;' onclick=\"deleteResults('".$mlw_quiz_info->result_id."','".esc_js($mlw_quiz_info->quiz_name)."')\" href='#'>Delete</a></span></div></td>";
|
366 |
$quotes_list .= "<td><span style='font-size:16px;'>".__('Not Graded','quiz-master-next' )."</span></td>";
|
367 |
} else {
|
368 |
if ( $mlw_quiz_info->quiz_system == 0 ) {
|
369 |
+
$quotes_list .= "<td class='post-title column-title'><span style='font-size:16px;'>" . $mlw_quiz_info->correct ." out of ".$out_of_q." or ".$mlw_quiz_info->correct_score."%</span></td>";
|
370 |
}
|
371 |
if ( $mlw_quiz_info->quiz_system == 1 ) {
|
372 |
$quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->point_score . " Points</span></td>";
|
@@ -384,8 +384,8 @@ function qsm_create_new_quiz_wizard(){ ?>
|
|
384 |
'option_name' => 'Require User Login',
|
385 |
'value' => 0
|
386 |
),
|
387 |
-
'
|
388 |
-
'option_name' => '
|
389 |
'value' => 0
|
390 |
)
|
391 |
),
|
@@ -546,6 +546,7 @@ function qsm_create_new_quiz_wizard(){ ?>
|
|
546 |
function qsm_text_template_variable_list(){
|
547 |
$variable_list = array(
|
548 |
'%POINT_SCORE%' => __('Score for the quiz when using points', 'quiz-master-next'),
|
|
|
549 |
'%AVERAGE_POINT%' => __('The average amount of points user had per question', 'quiz-master-next'),
|
550 |
'%AMOUNT_CORRECT%' => __('The number of correct answers the user had', 'quiz-master-next'),
|
551 |
'%TOTAL_QUESTIONS%' => __('The total number of questions in the quiz', 'quiz-master-next'),
|
384 |
'option_name' => 'Require User Login',
|
385 |
'value' => 0
|
386 |
),
|
387 |
+
'progress_bar' => array(
|
388 |
+
'option_name' => 'Show progress bar',
|
389 |
'value' => 0
|
390 |
)
|
391 |
),
|
546 |
function qsm_text_template_variable_list(){
|
547 |
$variable_list = array(
|
548 |
'%POINT_SCORE%' => __('Score for the quiz when using points', 'quiz-master-next'),
|
549 |
+
'%MAXIMUM_POINTS%' => __('Maximum possible points one can score', 'quiz-master-next'),
|
550 |
'%AVERAGE_POINT%' => __('The average amount of points user had per question', 'quiz-master-next'),
|
551 |
'%AMOUNT_CORRECT%' => __('The number of correct answers the user had', 'quiz-master-next'),
|
552 |
'%TOTAL_QUESTIONS%' => __('The total number of questions in the quiz', 'quiz-master-next'),
|
@@ -641,6 +641,7 @@ function qsm_generate_quizzes_surveys_page_screen_options(){
|
|
641 |
}
|
642 |
|
643 |
add_filter('set-screen-option', 'qsm_set_screen_option', 10, 3);
|
|
|
644 |
/**
|
645 |
* @since 7.0
|
646 |
* @param str $status
|
641 |
}
|
642 |
|
643 |
add_filter('set-screen-option', 'qsm_set_screen_option', 10, 3);
|
644 |
+
add_filter('set_screen_option_qsm_per_page', 'qsm_set_screen_option', 10, 3);
|
645 |
/**
|
646 |
* @since 7.0
|
647 |
* @param str $status
|
@@ -87,8 +87,9 @@ class QMNQuizManager {
|
|
87 |
}
|
88 |
}
|
89 |
}
|
90 |
-
$json = array();
|
91 |
-
$
|
|
|
92 |
if ( isset( $validate_file['type'] ) && in_array($validate_file['type'], $mimes)) {
|
93 |
if($_FILES["file"]['size'] >= $file_upload_limit * 1024 * 1024){
|
94 |
$json['type']= 'error';
|
@@ -98,7 +99,7 @@ class QMNQuizManager {
|
|
98 |
}
|
99 |
$upload_dir = wp_upload_dir();
|
100 |
$datafile = $_FILES["file"]["tmp_name"];
|
101 |
-
|
102 |
$extension = pathinfo($file_name, PATHINFO_EXTENSION);
|
103 |
$rawBaseName = 'qsmfileupload_' . md5( date('Y-m-d H:i:s') ) . '_' . pathinfo($file_name, PATHINFO_FILENAME);
|
104 |
$new_fname = $rawBaseName . '.' . $extension;
|
@@ -286,7 +287,8 @@ class QMNQuizManager {
|
|
286 |
'progress_bar' => $qmn_quiz_options->progress_bar,
|
287 |
'contact_info_location' => $qmn_quiz_options->contact_info_location,
|
288 |
'qpages' => $qpages,
|
289 |
-
'skip_validation_time_expire' => $qmn_quiz_options->skip_validation_time_expire
|
|
|
290 |
);
|
291 |
|
292 |
$return_display = apply_filters('qmn_begin_shortcode', $return_display, $qmn_quiz_options, $qmn_array_for_variables);
|
@@ -514,7 +516,7 @@ class QMNQuizManager {
|
|
514 |
wp_enqueue_style('qsm_model_css', plugins_url('../../css/qsm-admin.css', __FILE__));
|
515 |
wp_enqueue_script('qsm_model_js', plugins_url('../../js/micromodal.min.js', __FILE__));
|
516 |
wp_enqueue_script('qsm_quiz', plugins_url('../../js/qsm-quiz.js', __FILE__), array('wp-util', 'underscore', 'jquery', 'jquery-ui-tooltip', 'progress-bar'), $mlwQuizMasterNext->version);
|
517 |
-
wp_localize_script('qsm_quiz', 'qmn_ajax_object', array('ajaxurl' => admin_url('admin-ajax.php'), 'enable_quick_result_mc' => isset($options->enable_quick_result_mc) ? $options->enable_quick_result_mc : '','enable_result_after_timer_end' => isset($options->enable_result_after_timer_end) ? $options->enable_result_after_timer_end : '', 'quick_result_correct_text' =>
|
518 |
wp_enqueue_script( 'math_jax', '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML' );
|
519 |
global $qmn_total_questions;
|
520 |
$qmn_total_questions = 0;
|
@@ -546,9 +548,9 @@ class QMNQuizManager {
|
|
546 |
wp_reset_postdata();
|
547 |
}
|
548 |
$quiz_display = apply_filters('qsm_display_before_form', $quiz_display);
|
549 |
-
$quiz_display .= "<form name='quizForm{$quiz_data['quiz_id']}' id='quizForm{$quiz_data['quiz_id']}' action='' method='POST' class='qsm-quiz-form qmn_quiz_form mlw_quiz_form' novalidate enctype='multipart/form-data'>";
|
550 |
$quiz_display .= "<input type='hidden' name='qsm_hidden_questions' id='qsm_hidden_questions' value=''>";
|
551 |
-
$quiz_display .= "<div
|
552 |
$quiz_display .= "<span id='mlw_top_of_quiz'></span>";
|
553 |
$quiz_display = apply_filters('qmn_begin_quiz_form', $quiz_display, $options, $quiz_data);
|
554 |
|
@@ -569,7 +571,7 @@ class QMNQuizManager {
|
|
569 |
$quiz_display .= $this->display_end_section($options, $quiz_data);
|
570 |
}
|
571 |
$quiz_display = apply_filters('qmn_before_error_message', $quiz_display, $options, $quiz_data);
|
572 |
-
$quiz_display .= "<div
|
573 |
$quiz_display .= "<input type='hidden' name='total_questions' id='total_questions' value='$qmn_total_questions'/>";
|
574 |
$quiz_display .= "<input type='hidden' name='timer' id='timer' value='0'/>";
|
575 |
$quiz_display .= "<input type='hidden' name='timer_ms' id='timer_ms' value='0'/>";
|
@@ -612,7 +614,11 @@ class QMNQuizManager {
|
|
612 |
?>
|
613 |
<section class="qsm-page <?php echo $animation_effect; ?>">
|
614 |
<div class="quiz_section quiz_begin">
|
615 |
-
<div class='qsm-before-message mlw_qmn_message_before'
|
|
|
|
|
|
|
|
|
616 |
<?php
|
617 |
if (0 == $options->contact_info_location) {
|
618 |
echo QSM_Contact_Manager::display_fields($options);
|
@@ -634,9 +640,13 @@ class QMNQuizManager {
|
|
634 |
$message_before = apply_filters('mlw_qmn_template_variable_quiz_page', $message_before, $quiz_data);
|
635 |
?>
|
636 |
<div class="quiz_section quiz_begin">
|
637 |
-
<div class='qsm-before-message mlw_qmn_message_before'
|
638 |
-
|
639 |
-
|
|
|
|
|
|
|
|
|
640 |
echo QSM_Contact_Manager::display_fields($options);
|
641 |
}
|
642 |
?>
|
@@ -651,7 +661,7 @@ class QMNQuizManager {
|
|
651 |
<?php
|
652 |
echo $mlwQuizMasterNext->pluginHelper->display_question($question['question_type_new'], $question_id, $options);
|
653 |
if (0 == $question['comments']) {
|
654 |
-
echo "<input type='text' class='qsm-question-comment qsm-question-comment-small mlw_qmn_question_comment'
|
655 |
}
|
656 |
if (2 == $question['comments']) {
|
657 |
echo "<textarea class='qsm-question-comment qsm-question-comment-large mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' onclick='qmnClearField(this)'>" . htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES) . "</textarea>";
|
@@ -711,7 +721,7 @@ class QMNQuizManager {
|
|
711 |
<?php
|
712 |
echo $mlwQuizMasterNext->pluginHelper->display_question($question['question_type_new'], $question_id, $options);
|
713 |
if (0 == $question['comments']) {
|
714 |
-
echo "<input type='text' class='qsm-question-comment qsm-question-comment-small mlw_qmn_question_comment'
|
715 |
}
|
716 |
if (2 == $question['comments']) {
|
717 |
echo "<textarea class='qsm-question-comment qsm-question-comment-large mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' onclick='qmnClearField(this)'>" . htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES) . "</textarea>";
|
@@ -813,7 +823,7 @@ class QMNQuizManager {
|
|
813 |
$message_before = wpautop(htmlspecialchars_decode($qmn_quiz_options->message_before, ENT_QUOTES));
|
814 |
$message_before = apply_filters('mlw_qmn_template_variable_quiz_page', $message_before, $qmn_array_for_variables);
|
815 |
|
816 |
-
$section_display .= "<div class='mlw_qmn_message_before'
|
817 |
if (0 == $qmn_quiz_options->contact_info_location) {
|
818 |
$section_display .= QSM_Contact_Manager::display_fields($qmn_quiz_options);
|
819 |
}
|
@@ -859,7 +869,7 @@ class QMNQuizManager {
|
|
859 |
$question_display .= $mlwQuizMasterNext->pluginHelper->display_question($mlw_question->question_type_new, $mlw_question->question_id, $qmn_quiz_options);
|
860 |
|
861 |
if (0 == $mlw_question->comments) {
|
862 |
-
$question_display .= "<input type='text' class='mlw_qmn_question_comment'
|
863 |
$question_display .= "<br />";
|
864 |
}
|
865 |
if (2 == $mlw_question->comments) {
|
@@ -1067,7 +1077,16 @@ class QMNQuizManager {
|
|
1067 |
}
|
1068 |
}
|
1069 |
}
|
1070 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1071 |
$mlw_qmn_pagetime = isset($_POST["pagetime"]) ? $_POST["pagetime"] : array();
|
1072 |
$mlw_qmn_timer = isset($_POST["timer"]) ? sanitize_text_field(intval($_POST["timer"])) : 0;
|
1073 |
$mlw_qmn_timer_ms = isset($_POST["timer_ms"]) ? sanitize_text_field(intval($_POST["timer_ms"])) : 0;
|
@@ -1080,7 +1099,7 @@ class QMNQuizManager {
|
|
1080 |
|
1081 |
if (!isset($_POST["mlw_code_captcha"]) || ( isset($_POST["mlw_code_captcha"]) && $_POST["mlw_user_captcha"] == $_POST["mlw_code_captcha"] )) {
|
1082 |
|
1083 |
-
$qmn_array_for_variables = array_merge($qmn_array_for_variables, $this->check_answers($qmn_quiz_options, $qmn_array_for_variables));
|
1084 |
$result_display = apply_filters('qmn_after_check_answers', $result_display, $qmn_quiz_options, $qmn_array_for_variables);
|
1085 |
$qmn_array_for_variables['comments'] = $this->check_comment_section($qmn_quiz_options, $qmn_array_for_variables);
|
1086 |
$result_display = apply_filters('qmn_after_check_comments', $result_display, $qmn_quiz_options, $qmn_array_for_variables);
|
@@ -1103,6 +1122,7 @@ class QMNQuizManager {
|
|
1103 |
if(isset($results_array['parameters'])) {
|
1104 |
$qmn_array_for_variables['parameters'] = $results_array['parameters'];
|
1105 |
}
|
|
|
1106 |
$serialized_results = serialize($results_array);
|
1107 |
|
1108 |
// Inserts the responses in the database.
|
@@ -1153,6 +1173,7 @@ class QMNQuizManager {
|
|
1153 |
);
|
1154 |
$results_id = $wpdb->insert_id;
|
1155 |
}
|
|
|
1156 |
|
1157 |
// Determines redirect/results page.
|
1158 |
$results_pages = $this->display_results_text($qmn_quiz_options, $qmn_array_for_variables);
|
@@ -1215,7 +1236,7 @@ class QMNQuizManager {
|
|
1215 |
// Prepares data to be sent back to front-end.
|
1216 |
$return_array = array(
|
1217 |
'display' => htmlspecialchars_decode($result_display),
|
1218 |
-
'redirect' => $results_pages['redirect'],
|
1219 |
);
|
1220 |
|
1221 |
return $return_array;
|
@@ -1257,6 +1278,7 @@ class QMNQuizManager {
|
|
1257 |
$correct_status = "incorrect";
|
1258 |
$answer_points = 0;
|
1259 |
$question_data = array();
|
|
|
1260 |
|
1261 |
// Question types to calculate result on
|
1262 |
$result_question_types = array(
|
@@ -1270,6 +1292,7 @@ class QMNQuizManager {
|
|
1270 |
5, // Large Open Answer
|
1271 |
7, // Number
|
1272 |
14, // Fill In The Blank
|
|
|
1273 |
);
|
1274 |
|
1275 |
// If deprecated pagination setting is not used, use new system...
|
@@ -1281,47 +1304,64 @@ class QMNQuizManager {
|
|
1281 |
// Cycle through each question on a page
|
1282 |
foreach ($page as $page_question_id) {
|
1283 |
|
1284 |
-
// Cycle through each question that appeared to the user
|
1285 |
foreach ($question_list as $question_id) {
|
1286 |
|
1287 |
// When the questions are the same...
|
1288 |
if ($page_question_id == $question_id) {
|
1289 |
|
1290 |
-
$question = $questions[$page_question_id];
|
1291 |
// Ignore non points questions from result
|
1292 |
$question_type_new = $question['question_type_new'];
|
1293 |
-
|
1294 |
-
$total_questions--;
|
1295 |
-
}
|
1296 |
-
if(in_array($question_id,$quiz_data['hidden_questions'])) {
|
1297 |
-
$total_questions--;
|
1298 |
-
continue;
|
1299 |
-
}
|
1300 |
|
1301 |
// Reset question-specific variables
|
1302 |
$user_answer = "";
|
1303 |
$correct_answer = "";
|
1304 |
$correct_status = "incorrect";
|
1305 |
$answer_points = 0;
|
1306 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1307 |
// Send question to our grading function
|
1308 |
-
$results_array = apply_filters('qmn_results_array', $mlwQuizMasterNext->pluginHelper->display_review($question['question_type_new'], $question['question_id']));
|
1309 |
-
if($results_array['question_type'] == 'file_upload') {
|
1310 |
-
$results_array['user_text'] = '<a target="_blank" href="'.$results_array['user_text'].'">Click here to view</a>';
|
1311 |
}
|
1312 |
// If question was graded correctly.
|
1313 |
if (!isset($results_array["null_review"])) {
|
1314 |
if(in_array($question_type_new,$result_question_types)) {
|
1315 |
-
$
|
1316 |
-
|
|
|
|
|
1317 |
}
|
1318 |
|
1319 |
|
1320 |
// If the user's answer was correct
|
1321 |
if ('correct' == $results_array["correct"]) {
|
1322 |
if(in_array($question_type_new,$result_question_types)) {
|
1323 |
-
$
|
1324 |
-
|
|
|
|
|
1325 |
}
|
1326 |
|
1327 |
}
|
@@ -1375,7 +1415,24 @@ class QMNQuizManager {
|
|
1375 |
$correct_answer = "";
|
1376 |
$correct_status = "incorrect";
|
1377 |
$answer_points = 0;
|
1378 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1379 |
// Send question to our grading function
|
1380 |
$results_array = $mlwQuizMasterNext->pluginHelper->display_review($question['question_type_new'], $question['question_id']);
|
1381 |
|
@@ -1440,6 +1497,7 @@ class QMNQuizManager {
|
|
1440 |
'total_questions' => $total_questions,
|
1441 |
'question_answers_display' => '', // Kept for backwards compatibility
|
1442 |
'question_answers_array' => $question_data,
|
|
|
1443 |
);
|
1444 |
}
|
1445 |
|
@@ -1808,6 +1866,20 @@ class QMNQuizManager {
|
|
1808 |
require_once plugin_dir_path( __FILE__ ) . 'class-qmn-background-process.php';
|
1809 |
$this->qsm_background_email = new QSM_Background_Request();
|
1810 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1811 |
}
|
1812 |
|
1813 |
global $qmnQuizManager;
|
87 |
}
|
88 |
}
|
89 |
}
|
90 |
+
$json = array();
|
91 |
+
$file_name = sanitize_file_name( $_FILES["file"]["name"] );
|
92 |
+
$validate_file = wp_check_filetype( $file_name );
|
93 |
if ( isset( $validate_file['type'] ) && in_array($validate_file['type'], $mimes)) {
|
94 |
if($_FILES["file"]['size'] >= $file_upload_limit * 1024 * 1024){
|
95 |
$json['type']= 'error';
|
99 |
}
|
100 |
$upload_dir = wp_upload_dir();
|
101 |
$datafile = $_FILES["file"]["tmp_name"];
|
102 |
+
//$file_name = $_FILES["file"]["name"];
|
103 |
$extension = pathinfo($file_name, PATHINFO_EXTENSION);
|
104 |
$rawBaseName = 'qsmfileupload_' . md5( date('Y-m-d H:i:s') ) . '_' . pathinfo($file_name, PATHINFO_FILENAME);
|
105 |
$new_fname = $rawBaseName . '.' . $extension;
|
287 |
'progress_bar' => $qmn_quiz_options->progress_bar,
|
288 |
'contact_info_location' => $qmn_quiz_options->contact_info_location,
|
289 |
'qpages' => $qpages,
|
290 |
+
'skip_validation_time_expire' => $qmn_quiz_options->skip_validation_time_expire,
|
291 |
+
'timer_limit_val' => $qmn_quiz_options->timer_limit
|
292 |
);
|
293 |
|
294 |
$return_display = apply_filters('qmn_begin_shortcode', $return_display, $qmn_quiz_options, $qmn_array_for_variables);
|
516 |
wp_enqueue_style('qsm_model_css', plugins_url('../../css/qsm-admin.css', __FILE__));
|
517 |
wp_enqueue_script('qsm_model_js', plugins_url('../../js/micromodal.min.js', __FILE__));
|
518 |
wp_enqueue_script('qsm_quiz', plugins_url('../../js/qsm-quiz.js', __FILE__), array('wp-util', 'underscore', 'jquery', 'jquery-ui-tooltip', 'progress-bar'), $mlwQuizMasterNext->version);
|
519 |
+
wp_localize_script('qsm_quiz', 'qmn_ajax_object', array('ajaxurl' => admin_url('admin-ajax.php'), 'enable_quick_result_mc' => isset($options->enable_quick_result_mc) ? $options->enable_quick_result_mc : '','enable_result_after_timer_end' => isset($options->enable_result_after_timer_end) ? $options->enable_result_after_timer_end : '', 'quick_result_correct_text' => $options->quick_result_correct_answer_text, 'quick_result_wrong_text' => $options->quick_result_wrong_answer_text ));
|
520 |
wp_enqueue_script( 'math_jax', '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML' );
|
521 |
global $qmn_total_questions;
|
522 |
$qmn_total_questions = 0;
|
548 |
wp_reset_postdata();
|
549 |
}
|
550 |
$quiz_display = apply_filters('qsm_display_before_form', $quiz_display);
|
551 |
+
$quiz_display .= "<form name='quizForm{$quiz_data['quiz_id']}' id='quizForm{$quiz_data['quiz_id']}' action='".$_SERVER['REQUEST_URI']."' method='POST' class='qsm-quiz-form qmn_quiz_form mlw_quiz_form' novalidate enctype='multipart/form-data'>";
|
552 |
$quiz_display .= "<input type='hidden' name='qsm_hidden_questions' id='qsm_hidden_questions' value=''>";
|
553 |
+
$quiz_display .= "<div id='mlw_error_message' class='qsm-error-message qmn_error_message_section'></div>";
|
554 |
$quiz_display .= "<span id='mlw_top_of_quiz'></span>";
|
555 |
$quiz_display = apply_filters('qmn_begin_quiz_form', $quiz_display, $options, $quiz_data);
|
556 |
|
571 |
$quiz_display .= $this->display_end_section($options, $quiz_data);
|
572 |
}
|
573 |
$quiz_display = apply_filters('qmn_before_error_message', $quiz_display, $options, $quiz_data);
|
574 |
+
$quiz_display .= "<div id='mlw_error_message_bottom' class='qsm-error-message qmn_error_message_section'></div>";
|
575 |
$quiz_display .= "<input type='hidden' name='total_questions' id='total_questions' value='$qmn_total_questions'/>";
|
576 |
$quiz_display .= "<input type='hidden' name='timer' id='timer' value='0'/>";
|
577 |
$quiz_display .= "<input type='hidden' name='timer_ms' id='timer_ms' value='0'/>";
|
614 |
?>
|
615 |
<section class="qsm-page <?php echo $animation_effect; ?>">
|
616 |
<div class="quiz_section quiz_begin">
|
617 |
+
<div class='qsm-before-message mlw_qmn_message_before'>
|
618 |
+
<?php
|
619 |
+
echo $this->qsm_convert_editor_text_to_shortcode( $message_before );
|
620 |
+
?>
|
621 |
+
</div>
|
622 |
<?php
|
623 |
if (0 == $options->contact_info_location) {
|
624 |
echo QSM_Contact_Manager::display_fields($options);
|
640 |
$message_before = apply_filters('mlw_qmn_template_variable_quiz_page', $message_before, $quiz_data);
|
641 |
?>
|
642 |
<div class="quiz_section quiz_begin">
|
643 |
+
<div class='qsm-before-message mlw_qmn_message_before'>
|
644 |
+
<?php
|
645 |
+
echo $this->qsm_convert_editor_text_to_shortcode( $message_before );
|
646 |
+
?>
|
647 |
+
</div>
|
648 |
+
<?php
|
649 |
+
if (0 == $options->contact_info_location) {
|
650 |
echo QSM_Contact_Manager::display_fields($options);
|
651 |
}
|
652 |
?>
|
661 |
<?php
|
662 |
echo $mlwQuizMasterNext->pluginHelper->display_question($question['question_type_new'], $question_id, $options);
|
663 |
if (0 == $question['comments']) {
|
664 |
+
echo "<input type='text' class='qsm-question-comment qsm-question-comment-small mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' value='" . esc_attr(htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES)) . "' onclick='qmnClearField(this)'/>";
|
665 |
}
|
666 |
if (2 == $question['comments']) {
|
667 |
echo "<textarea class='qsm-question-comment qsm-question-comment-large mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' onclick='qmnClearField(this)'>" . htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES) . "</textarea>";
|
721 |
<?php
|
722 |
echo $mlwQuizMasterNext->pluginHelper->display_question($question['question_type_new'], $question_id, $options);
|
723 |
if (0 == $question['comments']) {
|
724 |
+
echo "<input type='text' class='qsm-question-comment qsm-question-comment-small mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' value='" . esc_attr(htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES)) . "' onclick='qmnClearField(this)'/>";
|
725 |
}
|
726 |
if (2 == $question['comments']) {
|
727 |
echo "<textarea class='qsm-question-comment qsm-question-comment-large mlw_qmn_question_comment' id='mlwComment$question_id' name='mlwComment$question_id' onclick='qmnClearField(this)'>" . htmlspecialchars_decode($options->comment_field_text, ENT_QUOTES) . "</textarea>";
|
823 |
$message_before = wpautop(htmlspecialchars_decode($qmn_quiz_options->message_before, ENT_QUOTES));
|
824 |
$message_before = apply_filters('mlw_qmn_template_variable_quiz_page', $message_before, $qmn_array_for_variables);
|
825 |
|
826 |
+
$section_display .= "<div class='mlw_qmn_message_before'>". $this->qsm_convert_editor_text_to_shortcode( $message_before ) ."</div>";
|
827 |
if (0 == $qmn_quiz_options->contact_info_location) {
|
828 |
$section_display .= QSM_Contact_Manager::display_fields($qmn_quiz_options);
|
829 |
}
|
869 |
$question_display .= $mlwQuizMasterNext->pluginHelper->display_question($mlw_question->question_type_new, $mlw_question->question_id, $qmn_quiz_options);
|
870 |
|
871 |
if (0 == $mlw_question->comments) {
|
872 |
+
$question_display .= "<input type='text' class='mlw_qmn_question_comment' id='mlwComment" . $mlw_question->question_id . "' name='mlwComment" . $mlw_question->question_id . "' value='" . esc_attr(htmlspecialchars_decode($qmn_quiz_options->comment_field_text, ENT_QUOTES)) . "' onclick='qmnClearField(this)'/>";
|
873 |
$question_display .= "<br />";
|
874 |
}
|
875 |
if (2 == $mlw_question->comments) {
|
1077 |
}
|
1078 |
}
|
1079 |
}
|
1080 |
+
|
1081 |
+
if( is_user_logged_in() ){
|
1082 |
+
$current_user = wp_get_current_user();
|
1083 |
+
if( $qmn_array_for_variables['user_email'] == 'None' )
|
1084 |
+
$qmn_array_for_variables['user_email'] = esc_html( $current_user->user_email );
|
1085 |
+
|
1086 |
+
if( $qmn_array_for_variables['user_name'] == 'None' )
|
1087 |
+
$qmn_array_for_variables['user_name'] = esc_html( $current_user->display_name );
|
1088 |
+
}
|
1089 |
+
|
1090 |
$mlw_qmn_pagetime = isset($_POST["pagetime"]) ? $_POST["pagetime"] : array();
|
1091 |
$mlw_qmn_timer = isset($_POST["timer"]) ? sanitize_text_field(intval($_POST["timer"])) : 0;
|
1092 |
$mlw_qmn_timer_ms = isset($_POST["timer_ms"]) ? sanitize_text_field(intval($_POST["timer_ms"])) : 0;
|
1099 |
|
1100 |
if (!isset($_POST["mlw_code_captcha"]) || ( isset($_POST["mlw_code_captcha"]) && $_POST["mlw_user_captcha"] == $_POST["mlw_code_captcha"] )) {
|
1101 |
|
1102 |
+
$qmn_array_for_variables = array_merge($qmn_array_for_variables, $this->check_answers($qmn_quiz_options, $qmn_array_for_variables));
|
1103 |
$result_display = apply_filters('qmn_after_check_answers', $result_display, $qmn_quiz_options, $qmn_array_for_variables);
|
1104 |
$qmn_array_for_variables['comments'] = $this->check_comment_section($qmn_quiz_options, $qmn_array_for_variables);
|
1105 |
$result_display = apply_filters('qmn_after_check_comments', $result_display, $qmn_quiz_options, $qmn_array_for_variables);
|
1122 |
if(isset($results_array['parameters'])) {
|
1123 |
$qmn_array_for_variables['parameters'] = $results_array['parameters'];
|
1124 |
}
|
1125 |
+
$results_array['hidden_questions'] = $qmn_array_for_variables['hidden_questions'];
|
1126 |
$serialized_results = serialize($results_array);
|
1127 |
|
1128 |
// Inserts the responses in the database.
|
1173 |
);
|
1174 |
$results_id = $wpdb->insert_id;
|
1175 |
}
|
1176 |
+
$qmn_array_for_variables['result_id'] = $results_id;
|
1177 |
|
1178 |
// Determines redirect/results page.
|
1179 |
$results_pages = $this->display_results_text($qmn_quiz_options, $qmn_array_for_variables);
|
1236 |
// Prepares data to be sent back to front-end.
|
1237 |
$return_array = array(
|
1238 |
'display' => htmlspecialchars_decode($result_display),
|
1239 |
+
'redirect' => apply_filters('mlw_qmn_template_variable_results_page', $results_pages['redirect'], $qmn_array_for_variables),
|
1240 |
);
|
1241 |
|
1242 |
return $return_array;
|
1278 |
$correct_status = "incorrect";
|
1279 |
$answer_points = 0;
|
1280 |
$question_data = array();
|
1281 |
+
$total_possible_points = 0;
|
1282 |
|
1283 |
// Question types to calculate result on
|
1284 |
$result_question_types = array(
|
1292 |
5, // Large Open Answer
|
1293 |
7, // Number
|
1294 |
14, // Fill In The Blank
|
1295 |
+
13 //Polar.
|
1296 |
);
|
1297 |
|
1298 |
// If deprecated pagination setting is not used, use new system...
|
1304 |
// Cycle through each question on a page
|
1305 |
foreach ($page as $page_question_id) {
|
1306 |
|
1307 |
+
// Cycle through each question that appeared to the user
|
1308 |
foreach ($question_list as $question_id) {
|
1309 |
|
1310 |
// When the questions are the same...
|
1311 |
if ($page_question_id == $question_id) {
|
1312 |
|
1313 |
+
$question = $questions[$page_question_id];
|
1314 |
// Ignore non points questions from result
|
1315 |
$question_type_new = $question['question_type_new'];
|
1316 |
+
$hidden_questions = is_array($quiz_data['hidden_questions']) ? $quiz_data['hidden_questions']: array();
|
|
|
|
|
|
|
|
|
|
|
|
|
1317 |
|
1318 |
// Reset question-specific variables
|
1319 |
$user_answer = "";
|
1320 |
$correct_answer = "";
|
1321 |
$correct_status = "incorrect";
|
1322 |
$answer_points = 0;
|
1323 |
+
|
1324 |
+
//Get total correct points
|
1325 |
+
if( ( $options->system == 3 || $options->system == 1 ) && isset($question['answers']) && !empty( $question['answers'] ) ){
|
1326 |
+
if(!in_array($question_id,$hidden_questions)) {
|
1327 |
+
if( $question_type_new == 4 || $question_type_new == 10 ){
|
1328 |
+
foreach ($question['answers'] as $single_answerk_key => $single_answer_arr) {
|
1329 |
+
if ( $options->system == 1 && isset( $single_answer_arr[1] ) ){
|
1330 |
+
$total_possible_points = $total_possible_points + $single_answer_arr[1];
|
1331 |
+
}
|
1332 |
+
if( $options->system == 3 && isset( $single_answer_arr[2] ) && $single_answer_arr[2] == 1 ){
|
1333 |
+
$total_possible_points = $total_possible_points + $single_answer_arr[1];
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
+
}else{
|
1337 |
+
$max_value = max(array_column($question['answers'], '1'));
|
1338 |
+
$total_possible_points = $total_possible_points + $max_value;
|
1339 |
+
}
|
1340 |
+
}
|
1341 |
+
}
|
1342 |
+
|
1343 |
// Send question to our grading function
|
1344 |
+
$results_array = apply_filters('qmn_results_array', $mlwQuizMasterNext->pluginHelper->display_review($question['question_type_new'], $question['question_id']));
|
1345 |
+
if( isset($results_array['question_type']) && $results_array['question_type'] == 'file_upload') {
|
1346 |
+
$results_array['user_text'] = '<a target="_blank" href="'.$results_array['user_text'].'">' . __('Click here to view', 'quiz-master-next') . '</a>';
|
1347 |
}
|
1348 |
// If question was graded correctly.
|
1349 |
if (!isset($results_array["null_review"])) {
|
1350 |
if(in_array($question_type_new,$result_question_types)) {
|
1351 |
+
if(!in_array($question_id,$hidden_questions)) {
|
1352 |
+
$points_earned += $results_array["points"];
|
1353 |
+
$answer_points += $results_array["points"];
|
1354 |
+
}
|
1355 |
}
|
1356 |
|
1357 |
|
1358 |
// If the user's answer was correct
|
1359 |
if ('correct' == $results_array["correct"]) {
|
1360 |
if(in_array($question_type_new,$result_question_types)) {
|
1361 |
+
if(!in_array($question_id,$hidden_questions)) {
|
1362 |
+
$total_correct += 1;
|
1363 |
+
$correct_status = "correct";
|
1364 |
+
}
|
1365 |
}
|
1366 |
|
1367 |
}
|
1415 |
$correct_answer = "";
|
1416 |
$correct_status = "incorrect";
|
1417 |
$answer_points = 0;
|
1418 |
+
|
1419 |
+
//Get total correct points
|
1420 |
+
if( ( $options->system == 3 || $options->system == 1 ) && isset($question['answers']) && !empty( $question['answers'] ) ){
|
1421 |
+
if( $question_type_new == 4 || $question_type_new == 10 ){
|
1422 |
+
foreach ($question['answers'] as $single_answerk_key => $single_answer_arr) {
|
1423 |
+
if ( $options->system == 1 && isset( $single_answer_arr[1] ) ){
|
1424 |
+
$total_possible_points = $total_possible_points + $single_answer_arr[1];
|
1425 |
+
}
|
1426 |
+
if( $options->system == 3 && isset( $single_answer_arr[2] ) && $single_answer_arr[2] == 1 ){
|
1427 |
+
$total_possible_points = $total_possible_points + $single_answer_arr[1];
|
1428 |
+
}
|
1429 |
+
}
|
1430 |
+
}else{
|
1431 |
+
$max_value = max(array_column($question['answers'], '1'));
|
1432 |
+
$total_possible_points = $total_possible_points + $max_value;
|
1433 |
+
}
|
1434 |
+
}
|
1435 |
+
|
1436 |
// Send question to our grading function
|
1437 |
$results_array = $mlwQuizMasterNext->pluginHelper->display_review($question['question_type_new'], $question['question_id']);
|
1438 |
|
1497 |
'total_questions' => $total_questions,
|
1498 |
'question_answers_display' => '', // Kept for backwards compatibility
|
1499 |
'question_answers_array' => $question_data,
|
1500 |
+
'total_possible_points' => $total_possible_points
|
1501 |
);
|
1502 |
}
|
1503 |
|
1866 |
require_once plugin_dir_path( __FILE__ ) . 'class-qmn-background-process.php';
|
1867 |
$this->qsm_background_email = new QSM_Background_Request();
|
1868 |
}
|
1869 |
+
|
1870 |
+
/**
|
1871 |
+
* Convert editor text into respective shortcodes
|
1872 |
+
*
|
1873 |
+
* @since 7.0.2
|
1874 |
+
* @param string $editor_text
|
1875 |
+
*/
|
1876 |
+
public function qsm_convert_editor_text_to_shortcode( $editor_text ){
|
1877 |
+
global $wp_embed;
|
1878 |
+
$editor_text = $wp_embed->run_shortcode( $editor_text );
|
1879 |
+
$editor_text = preg_replace("/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i","<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>",$editor_text);
|
1880 |
+
$allowed_html = wp_kses_allowed_html( 'post' );
|
1881 |
+
return do_shortcode( wp_kses( $editor_text, $allowed_html ) );
|
1882 |
+
}
|
1883 |
}
|
1884 |
|
1885 |
global $qmnQuizManager;
|
@@ -61,7 +61,7 @@ class QSM_Contact_Manager {
|
|
61 |
}
|
62 |
?>
|
63 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->name_field_text, ENT_QUOTES ); ?></span>
|
64 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='<?php echo esc_attr( $class ); ?>'
|
65 |
<?php
|
66 |
}
|
67 |
|
@@ -73,7 +73,7 @@ class QSM_Contact_Manager {
|
|
73 |
}
|
74 |
?>
|
75 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->business_field_text, ENT_QUOTES ); ?></span>
|
76 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='<?php echo esc_attr( $class ); ?>'
|
77 |
<?php
|
78 |
}
|
79 |
|
@@ -85,7 +85,7 @@ class QSM_Contact_Manager {
|
|
85 |
}
|
86 |
?>
|
87 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->email_field_text, ENT_QUOTES ); ?></span>
|
88 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='email' class='mlwEmail <?php echo esc_attr( $class ); ?>'
|
89 |
<?php
|
90 |
}
|
91 |
|
@@ -97,7 +97,7 @@ class QSM_Contact_Manager {
|
|
97 |
}
|
98 |
?>
|
99 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->phone_field_text, ENT_QUOTES ); ?></span>
|
100 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='number' class='<?php echo esc_attr( $class ); ?>'
|
101 |
<?php
|
102 |
}
|
103 |
} elseif ( ! empty( $fields ) && is_array( $fields ) ) {
|
@@ -124,12 +124,12 @@ class QSM_Contact_Manager {
|
|
124 |
if ( ( 'true' === $fields[ $i ]["required"] || true === $fields[ $i ]["required"] ) && ! $fields_hidden ) {
|
125 |
$class = 'mlwRequiredText qsm_required_text';
|
126 |
}
|
127 |
-
if($fields[ $i ]['use'] == 'phone'){
|
128 |
$class = 'mlwRequiredNumber qsm_required_text';
|
129 |
}
|
130 |
?>
|
131 |
<span class='mlw_qmn_question qsm_question'><?php echo $fields[ $i ]['label']; ?></span>
|
132 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='<?php echo $fields[ $i ]['use'] == 'phone' ? 'number' : 'text'; ?>' class='<?php echo esc_attr( $class ); ?>'
|
133 |
<?php
|
134 |
break;
|
135 |
|
@@ -139,7 +139,7 @@ class QSM_Contact_Manager {
|
|
139 |
}
|
140 |
?>
|
141 |
<span class='mlw_qmn_question qsm_question'><?php echo $fields[ $i ]['label']; ?></span>
|
142 |
-
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='mlwEmail <?php echo esc_attr( $class ); ?>'
|
143 |
<?php
|
144 |
break;
|
145 |
|
@@ -148,7 +148,7 @@ class QSM_Contact_Manager {
|
|
148 |
$class = 'mlwRequiredAccept qsm_required_accept';
|
149 |
}
|
150 |
?>
|
151 |
-
<input type='checkbox' id='contact_field_<?php echo $i; ?>' class='<?php echo esc_attr( $class ); ?>'
|
152 |
<label class='mlw_qmn_question qsm_question' for='contact_field_<?php echo $i; ?>'><?php echo $fields[ $i ]['label']; ?></label>
|
153 |
<?php
|
154 |
break;
|
61 |
}
|
62 |
?>
|
63 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->name_field_text, ENT_QUOTES ); ?></span>
|
64 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='<?php echo esc_attr( $class ); ?>' name='mlwUserName' placeholder="<?php echo htmlspecialchars_decode( $options->name_field_text, ENT_QUOTES ); ?>" value='<?php echo esc_attr( $name ); ?>' />
|
65 |
<?php
|
66 |
}
|
67 |
|
73 |
}
|
74 |
?>
|
75 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->business_field_text, ENT_QUOTES ); ?></span>
|
76 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='<?php echo esc_attr( $class ); ?>' name='mlwUserComp' placeholder="<?php echo htmlspecialchars_decode( $options->business_field_text, ENT_QUOTES ); ?>" value='' />
|
77 |
<?php
|
78 |
}
|
79 |
|
85 |
}
|
86 |
?>
|
87 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->email_field_text, ENT_QUOTES ); ?></span>
|
88 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='email' class='mlwEmail <?php echo esc_attr( $class ); ?>' name='mlwUserEmail' placeholder="<?php echo htmlspecialchars_decode( $options->email_field_text, ENT_QUOTES ); ?>" value='<?php echo esc_attr( $email ); ?>' />
|
89 |
<?php
|
90 |
}
|
91 |
|
97 |
}
|
98 |
?>
|
99 |
<span class='mlw_qmn_question qsm_question'><?php echo htmlspecialchars_decode( $options->phone_field_text, ENT_QUOTES ); ?></span>
|
100 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='number' class='<?php echo esc_attr( $class ); ?>' name='mlwUserPhone' placeholder="<?php echo htmlspecialchars_decode( $options->phone_field_text, ENT_QUOTES ); ?>" value='' />
|
101 |
<?php
|
102 |
}
|
103 |
} elseif ( ! empty( $fields ) && is_array( $fields ) ) {
|
124 |
if ( ( 'true' === $fields[ $i ]["required"] || true === $fields[ $i ]["required"] ) && ! $fields_hidden ) {
|
125 |
$class = 'mlwRequiredText qsm_required_text';
|
126 |
}
|
127 |
+
if($fields[ $i ]['use'] == 'phone' && 'true' === $fields[ $i ]["required"] || true === $fields[ $i ]["required"] ){
|
128 |
$class = 'mlwRequiredNumber qsm_required_text';
|
129 |
}
|
130 |
?>
|
131 |
<span class='mlw_qmn_question qsm_question'><?php echo $fields[ $i ]['label']; ?></span>
|
132 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='<?php echo $fields[ $i ]['use'] == 'phone' ? 'number' : 'text'; ?>' <?php if( $fields[ $i ]['use'] == 'phone' ){ ?> onkeydown="return event.keyCode !== 69" <?php } ?> class='<?php echo esc_attr( $class ); ?>' name='contact_field_<?php echo $i; ?>' value='<?php echo esc_attr( $value ); ?>' placeholder="<?php echo $fields[ $i ]['label']; ?>" />
|
133 |
<?php
|
134 |
break;
|
135 |
|
139 |
}
|
140 |
?>
|
141 |
<span class='mlw_qmn_question qsm_question'><?php echo $fields[ $i ]['label']; ?></span>
|
142 |
+
<input <?php if($contact_disable_autofill){ echo "autocomplete='off'"; } ?> type='text' class='mlwEmail <?php echo esc_attr( $class ); ?>' name='contact_field_<?php echo $i; ?>' value='<?php echo esc_attr( $value ); ?>' placeholder="<?php echo $fields[ $i ]['label']; ?>" />
|
143 |
<?php
|
144 |
break;
|
145 |
|
148 |
$class = 'mlwRequiredAccept qsm_required_accept';
|
149 |
}
|
150 |
?>
|
151 |
+
<input type='checkbox' id='contact_field_<?php echo $i; ?>' class='<?php echo esc_attr( $class ); ?>' name='contact_field_<?php echo $i; ?>' value='checked' />
|
152 |
<label class='mlw_qmn_question qsm_question' for='contact_field_<?php echo $i; ?>'><?php echo $fields[ $i ]['label']; ?></label>
|
153 |
<?php
|
154 |
break;
|
@@ -1003,6 +1003,26 @@ class QSM_Install {
|
|
1003 |
'default' => 'Hint'
|
1004 |
);
|
1005 |
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1006 |
|
1007 |
//Setting for animation
|
1008 |
$field_array = array(
|
1003 |
'default' => 'Hint'
|
1004 |
);
|
1005 |
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
1006 |
+
|
1007 |
+
// Registers quick result correct answer setting
|
1008 |
+
$field_array = array(
|
1009 |
+
'id' => 'quick_result_correct_answer_text',
|
1010 |
+
'label' => __('Correct answer message', 'quiz-master-next'),
|
1011 |
+
'type' => 'text',
|
1012 |
+
'default' => 'Correct! You have selected correct answer.',
|
1013 |
+
'tooltip' => __('Text to show when the selected option is correct answer.', 'quiz-master-next')
|
1014 |
+
);
|
1015 |
+
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
1016 |
+
|
1017 |
+
// Registers quick result wrong answer setting
|
1018 |
+
$field_array = array(
|
1019 |
+
'id' => 'quick_result_wrong_answer_text',
|
1020 |
+
'label' => __('Incorrect answer message', 'quiz-master-next'),
|
1021 |
+
'type' => 'text',
|
1022 |
+
'default' => 'Wrong! You have selected wrong answer.',
|
1023 |
+
'tooltip' => __('Text to show when the selected option is wrong answer.', 'quiz-master-next')
|
1024 |
+
);
|
1025 |
+
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
1026 |
|
1027 |
//Setting for animation
|
1028 |
$field_array = array(
|
@@ -122,7 +122,7 @@ function qmn_multiple_choice_display($id, $question, $answers)
|
|
122 |
if($answerEditor === 'rich'){
|
123 |
$question_display .= "<div class='qmn_mc_answer_wrap' id='question$id-$mlw_answer_total'>";
|
124 |
}else{
|
125 |
-
$question_display .= "<div class='qmn_mc_answer_wrap' id='question".$id."-".esc_attr($answer[0])."'>";
|
126 |
}
|
127 |
$question_display .= "<input type='radio' class='qmn_quiz_radio' name='question".$id."' id='question".$id."_".$mlw_answer_total."' value='". trim( htmlentities(esc_attr($answer[0])) ) ."' /> <label for='question".$id."_".$mlw_answer_total."'>". trim( htmlspecialchars_decode($answer[0], ENT_QUOTES) ) ."</label>";
|
128 |
$question_display .= "</div>";
|
@@ -948,6 +948,10 @@ function qmn_horizontal_multiple_response_display($id, $question, $answers)
|
|
948 |
$required = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'required');
|
949 |
if ($required == 0) {$mlw_requireClass = "mlwRequiredCheck";} else {$mlw_requireClass = "";}
|
950 |
//$question_title = apply_filters('the_content', $question);
|
|
|
|
|
|
|
|
|
951 |
$new_question_title = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'question_title');
|
952 |
$question_display .= qsm_question_title_func($question, '', $new_question_title);
|
953 |
$question_display .= "<div class='qmn_check_answers $mlw_requireClass'>";
|
@@ -960,7 +964,7 @@ function qmn_horizontal_multiple_response_display($id, $question, $answers)
|
|
960 |
if ($answer[0] != "")
|
961 |
{
|
962 |
$question_display .= "<input type='hidden' name='question".$id."' value='This value does not matter' />";
|
963 |
-
$question_display .= "<span class='mlw_horizontal_multiple'><input type='checkbox' name='question".$id."_".$mlw_answer_total."' id='question".$id."_".$mlw_answer_total."' value='".esc_attr($answer[0])."' /> <label for='question".$id."_".$mlw_answer_total."'>".htmlspecialchars_decode($answer[0], ENT_QUOTES)." </label></span>";
|
964 |
}
|
965 |
}
|
966 |
}
|
@@ -1224,7 +1228,9 @@ function qmn_polar_display($id, $question, $answers) {
|
|
1224 |
} else {
|
1225 |
$mlw_requireClass = "";
|
1226 |
}
|
1227 |
-
$
|
|
|
|
|
1228 |
$input_text .= "<div class='left-polar-title'>" . $answers[0][0] ."</div>";
|
1229 |
$input_text .= "<div class='slider-main-wrapper'><input type='hidden' class='qmn_polar $mlw_requireClass' id='question" . $id . "' name='question" . $id . "' />";
|
1230 |
$input_text .= '<div id="slider-'. $id .'"></div></div>';
|
@@ -1258,19 +1264,19 @@ function qmn_polar_review($id, $question, $answers) {
|
|
1258 |
$return_array['question_text'] = str_replace("%POLAR_SLIDER%", "__________", do_shortcode(htmlspecialchars_decode($question, ENT_QUOTES)));
|
1259 |
}
|
1260 |
if (isset($_POST["question" . $id])) {
|
1261 |
-
$decode_user_answer = sanitize_textarea_field(
|
1262 |
$mlw_user_answer = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $decode_user_answer)));
|
1263 |
} else {
|
1264 |
$mlw_user_answer = " ";
|
1265 |
}
|
1266 |
$return_array['user_text'] = $mlw_user_answer;
|
1267 |
-
|
1268 |
foreach($answers as $answer) {
|
1269 |
-
$decode_correct_text =
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
}
|
1275 |
}
|
1276 |
return $return_array;
|
122 |
if($answerEditor === 'rich'){
|
123 |
$question_display .= "<div class='qmn_mc_answer_wrap' id='question$id-$mlw_answer_total'>";
|
124 |
}else{
|
125 |
+
$question_display .= "<div class='qmn_mc_answer_wrap' id='question".$id."-".str_replace(" ","-",esc_attr($answer[0]))."'>";
|
126 |
}
|
127 |
$question_display .= "<input type='radio' class='qmn_quiz_radio' name='question".$id."' id='question".$id."_".$mlw_answer_total."' value='". trim( htmlentities(esc_attr($answer[0])) ) ."' /> <label for='question".$id."_".$mlw_answer_total."'>". trim( htmlspecialchars_decode($answer[0], ENT_QUOTES) ) ."</label>";
|
128 |
$question_display .= "</div>";
|
948 |
$required = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'required');
|
949 |
if ($required == 0) {$mlw_requireClass = "mlwRequiredCheck";} else {$mlw_requireClass = "";}
|
950 |
//$question_title = apply_filters('the_content', $question);
|
951 |
+
$limit_multiple_response = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'limit_multiple_response');
|
952 |
+
$limit_mr_text = '';
|
953 |
+
if($limit_multiple_response > 0)
|
954 |
+
$limit_mr_text = 'onchange="qsmCheckMR(this,'. $limit_multiple_response .')"';
|
955 |
$new_question_title = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'question_title');
|
956 |
$question_display .= qsm_question_title_func($question, '', $new_question_title);
|
957 |
$question_display .= "<div class='qmn_check_answers $mlw_requireClass'>";
|
964 |
if ($answer[0] != "")
|
965 |
{
|
966 |
$question_display .= "<input type='hidden' name='question".$id."' value='This value does not matter' />";
|
967 |
+
$question_display .= "<span class='mlw_horizontal_multiple'><input type='checkbox' " . $limit_mr_text ." name='question".$id."_".$mlw_answer_total."' id='question".$id."_".$mlw_answer_total."' value='".esc_attr($answer[0])."' /> <label for='question".$id."_".$mlw_answer_total."'>".htmlspecialchars_decode($answer[0], ENT_QUOTES)." </label></span>";
|
968 |
}
|
969 |
}
|
970 |
}
|
1228 |
} else {
|
1229 |
$mlw_requireClass = "";
|
1230 |
}
|
1231 |
+
$new_question_title = $mlwQuizMasterNext->pluginHelper->get_question_setting($id, 'question_title');
|
1232 |
+
$question_title = qsm_question_title_func($question, '', $new_question_title);
|
1233 |
+
//$question_title = "<div class='mlw_qmn_question polar-question-title'>". do_shortcode(htmlspecialchars_decode($question, ENT_QUOTES)) ."</div>";
|
1234 |
$input_text .= "<div class='left-polar-title'>" . $answers[0][0] ."</div>";
|
1235 |
$input_text .= "<div class='slider-main-wrapper'><input type='hidden' class='qmn_polar $mlw_requireClass' id='question" . $id . "' name='question" . $id . "' />";
|
1236 |
$input_text .= '<div id="slider-'. $id .'"></div></div>';
|
1264 |
$return_array['question_text'] = str_replace("%POLAR_SLIDER%", "__________", do_shortcode(htmlspecialchars_decode($question, ENT_QUOTES)));
|
1265 |
}
|
1266 |
if (isset($_POST["question" . $id])) {
|
1267 |
+
$decode_user_answer = sanitize_textarea_field( $_POST["question" . $id] );
|
1268 |
$mlw_user_answer = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $decode_user_answer)));
|
1269 |
} else {
|
1270 |
$mlw_user_answer = " ";
|
1271 |
}
|
1272 |
$return_array['user_text'] = $mlw_user_answer;
|
1273 |
+
$return_array['points'] = $mlw_user_answer;
|
1274 |
foreach($answers as $answer) {
|
1275 |
+
$decode_correct_text = $answer[1];
|
1276 |
+
$return_array['correct_text'] = trim( preg_replace( '/\s\s+/', ' ', str_replace( "\n", " ", $decode_correct_text ) ) );
|
1277 |
+
if ( $return_array['user_text'] == trim ($decode_correct_text) && isset($answer[2]) && $answer[2] == 1 ) {
|
1278 |
+
$return_array['correct'] = "correct";
|
1279 |
+
break;
|
1280 |
}
|
1281 |
}
|
1282 |
return $return_array;
|
@@ -17,49 +17,66 @@ function qsm_register_rest_routes() {
|
|
17 |
register_rest_route( 'quiz-survey-master/v1', '/questions/', array(
|
18 |
'methods' => WP_REST_Server::READABLE,
|
19 |
'callback' => 'qsm_rest_get_questions',
|
|
|
20 |
) );
|
21 |
register_rest_route( 'quiz-survey-master/v1', '/questions/', array(
|
22 |
'methods' => WP_REST_Server::CREATABLE,
|
23 |
'callback' => 'qsm_rest_create_question',
|
|
|
|
|
|
|
24 |
) );
|
25 |
register_rest_route( 'quiz-survey-master/v1', '/questions/(?P<id>\d+)', array(
|
26 |
'methods' => WP_REST_Server::EDITABLE,
|
27 |
'callback' => 'qsm_rest_save_question',
|
|
|
28 |
) );
|
29 |
register_rest_route( 'quiz-survey-master/v1', '/questions/(?P<id>\d+)', array(
|
30 |
'methods' => WP_REST_Server::READABLE,
|
31 |
'callback' => 'qsm_rest_get_question',
|
|
|
32 |
) );
|
33 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/results', array(
|
34 |
'methods' => WP_REST_Server::READABLE,
|
35 |
'callback' => 'qsm_rest_get_results',
|
|
|
36 |
) );
|
37 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/results', array(
|
38 |
'methods' => WP_REST_Server::EDITABLE,
|
39 |
'callback' => 'qsm_rest_save_results',
|
|
|
40 |
) );
|
41 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/emails', array(
|
42 |
'methods' => WP_REST_Server::READABLE,
|
43 |
'callback' => 'qsm_rest_get_emails',
|
|
|
44 |
) );
|
45 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/emails', array(
|
46 |
'methods' => WP_REST_Server::EDITABLE,
|
47 |
'callback' => 'qsm_rest_save_emails',
|
|
|
|
|
|
|
48 |
) );
|
49 |
//Register rest api to get quiz list
|
50 |
register_rest_route('qsm', '/list_quiz', array(
|
51 |
'methods' => 'GET',
|
52 |
'callback' => 'qsm_get_basic_info_quiz',
|
|
|
53 |
));
|
54 |
//Register rest api to get result of quiz
|
55 |
register_rest_route('qsm', '/list_results/(?P<id>\d+)', array(
|
56 |
'methods' => 'GET',
|
57 |
'callback' => 'qsm_get_result_of_quiz',
|
|
|
58 |
));
|
59 |
//Get questions for question bank
|
60 |
register_rest_route( 'quiz-survey-master/v1', '/bank_questions/(?P<id>\d+)', array(
|
61 |
'methods' => WP_REST_Server::READABLE,
|
62 |
'callback' => 'qsm_rest_get_bank_questions',
|
|
|
|
|
|
|
63 |
) );
|
64 |
}
|
65 |
|
17 |
register_rest_route( 'quiz-survey-master/v1', '/questions/', array(
|
18 |
'methods' => WP_REST_Server::READABLE,
|
19 |
'callback' => 'qsm_rest_get_questions',
|
20 |
+
'permission_callback' => '__return_true',
|
21 |
) );
|
22 |
register_rest_route( 'quiz-survey-master/v1', '/questions/', array(
|
23 |
'methods' => WP_REST_Server::CREATABLE,
|
24 |
'callback' => 'qsm_rest_create_question',
|
25 |
+
'permission_callback' => function () {
|
26 |
+
return current_user_can( 'edit_posts' );
|
27 |
+
}
|
28 |
) );
|
29 |
register_rest_route( 'quiz-survey-master/v1', '/questions/(?P<id>\d+)', array(
|
30 |
'methods' => WP_REST_Server::EDITABLE,
|
31 |
'callback' => 'qsm_rest_save_question',
|
32 |
+
'permission_callback' => '__return_true',
|
33 |
) );
|
34 |
register_rest_route( 'quiz-survey-master/v1', '/questions/(?P<id>\d+)', array(
|
35 |
'methods' => WP_REST_Server::READABLE,
|
36 |
'callback' => 'qsm_rest_get_question',
|
37 |
+
'permission_callback' => '__return_true',
|
38 |
) );
|
39 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/results', array(
|
40 |
'methods' => WP_REST_Server::READABLE,
|
41 |
'callback' => 'qsm_rest_get_results',
|
42 |
+
'permission_callback' => '__return_true',
|
43 |
) );
|
44 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/results', array(
|
45 |
'methods' => WP_REST_Server::EDITABLE,
|
46 |
'callback' => 'qsm_rest_save_results',
|
47 |
+
'permission_callback' => '__return_true',
|
48 |
) );
|
49 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/emails', array(
|
50 |
'methods' => WP_REST_Server::READABLE,
|
51 |
'callback' => 'qsm_rest_get_emails',
|
52 |
+
'permission_callback' => '__return_true',
|
53 |
) );
|
54 |
register_rest_route( 'quiz-survey-master/v1', '/quizzes/(?P<id>\d+)/emails', array(
|
55 |