Version Description
(June 20, 2018) = * Closed Enhancement: Remove Tools tab (Issue #689) * Closed Enhancement: Bump Minimum PHP Version To 5.4 (Issue #607) * Closed Enhancement: Move Leaderboards to free addon (Issue #380)
(Read Full Changelog)
=
Download this release
Release Info
Developer | fpcorso |
Plugin | ![]() |
Version | 6.0.0 |
Comparing to | |
See all releases |
Code changes from version 5.3.2 to 6.0.0
- CHANGELOG.md +14 -0
- css/qsm-admin.css +149 -4
- js/qsm-admin.js +39 -37
- mlw_quizmaster2.php +3 -9
- php/admin/about-page.php +6 -13
- php/admin/options-page-leaderboard-tab.php +0 -64
- php/admin/options-page-tools-tab.php +0 -113
- php/admin/quizzes-page.php +146 -39
- php/classes/class-qsm-install.php +0 -37
- php/leaderboard-shortcode.php +0 -82
- php/widgets.php +0 -128
- readme.txt +6 -15
CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 5.2.4 (May 7, 2018) =
|
2 |
* Closed Bug: %QUESTIONS_ANSWERS% variable is displaying questions in order of creation - ([Issue #660](https://github.com/fpcorso/quiz_master_next/issues/660))
|
3 |
* Closed Bug: Extra spacing is being added to questions when multiple lines are in question - ([Issue #659](https://github.com/fpcorso/quiz_master_next/issues/659))
|
1 |
+
= 5.3.2 (June 7, 2018) =
|
2 |
+
* Closed Plugin Compatibility: Conflict with Divi Builder ([Issue #686](https://github.com/fpcorso/quiz_master_next/issues/686))
|
3 |
+
|
4 |
+
= 5.3.1 (May 21, 2018) =
|
5 |
+
* Closed Enhancement: Add user ID to admin results page table - ([Issue #682](https://github.com/fpcorso/quiz_master_next/issues/682))
|
6 |
+
* Closed Enhancement: Integrate with WordPress 4.9.6 GDPR features - ([Issue #681](https://github.com/fpcorso/quiz_master_next/issues/681))
|
7 |
+
|
8 |
+
= 5.3.0 (May 16, 2018) =
|
9 |
+
* Closed Enhancement: Ability to disable IP address collection - ([Issue #670](https://github.com/fpcorso/quiz_master_next/issues/670))
|
10 |
+
* Closed User Request: Ability to customize name of QSM archive name - ([Issue #666](https://github.com/fpcorso/quiz_master_next/issues/666))
|
11 |
+
* Closed User Request: Progress Bar - ([Issue #412](https://github.com/fpcorso/quiz_master_next/issues/412))
|
12 |
+
* Closed User Request: Disable Results Being Stored In Database - ([Issue #215](https://github.com/fpcorso/quiz_master_next/issues/215))
|
13 |
+
* Closed Bug: Question ordering doesn't work when using older pagination option - ([Issue #657](https://github.com/fpcorso/quiz_master_next/issues/657))
|
14 |
+
|
15 |
= 5.2.4 (May 7, 2018) =
|
16 |
* Closed Bug: %QUESTIONS_ANSWERS% variable is displaying questions in order of creation - ([Issue #660](https://github.com/fpcorso/quiz_master_next/issues/660))
|
17 |
* Closed Bug: Extra spacing is being added to questions when multiple lines are in question - ([Issue #659](https://github.com/fpcorso/quiz_master_next/issues/659))
|
css/qsm-admin.css
CHANGED
@@ -61,10 +61,6 @@ Quizzes/Surveys Page
|
|
61 |
color: red !important;
|
62 |
}
|
63 |
|
64 |
-
.qsm-dialog-form {
|
65 |
-
|
66 |
-
}
|
67 |
-
|
68 |
.qsm-dialog-form label {
|
69 |
display: inline-block;
|
70 |
font-size: 16px;
|
@@ -257,3 +253,152 @@ Misc.
|
|
257 |
.qsm-info-box a {
|
258 |
color: yellow;
|
259 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
color: red !important;
|
62 |
}
|
63 |
|
|
|
|
|
|
|
|
|
64 |
.qsm-dialog-form label {
|
65 |
display: inline-block;
|
66 |
font-size: 16px;
|
253 |
.qsm-info-box a {
|
254 |
color: yellow;
|
255 |
}
|
256 |
+
|
257 |
+
.qsm-popup {
|
258 |
+
font-family: -apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif;
|
259 |
+
}
|
260 |
+
|
261 |
+
.qsm-popup__overlay {
|
262 |
+
position: fixed;
|
263 |
+
top: 0;
|
264 |
+
left: 0;
|
265 |
+
right: 0;
|
266 |
+
bottom: 0;
|
267 |
+
background: rgba(0,0,0,0.6);
|
268 |
+
display: flex;
|
269 |
+
justify-content: center;
|
270 |
+
align-items: center;
|
271 |
+
z-index: 9999;
|
272 |
+
}
|
273 |
+
|
274 |
+
.qsm-popup__container {
|
275 |
+
background-color: #fff;
|
276 |
+
padding: 30px;
|
277 |
+
min-width: 500px;
|
278 |
+
max-width: 700px;
|
279 |
+
max-height: 95vh;
|
280 |
+
border-radius: 4px;
|
281 |
+
overflow-y: auto;
|
282 |
+
box-sizing: border-box;
|
283 |
+
}
|
284 |
+
|
285 |
+
.qsm-popup__header {
|
286 |
+
display: flex;
|
287 |
+
justify-content: space-between;
|
288 |
+
align-items: center;
|
289 |
+
}
|
290 |
+
|
291 |
+
.qsm-popup__title {
|
292 |
+
margin-top: 0;
|
293 |
+
margin-bottom: 0;
|
294 |
+
font-weight: 600;
|
295 |
+
font-size: 1.25rem;
|
296 |
+
line-height: 1.25;
|
297 |
+
color: #00449e;
|
298 |
+
box-sizing: border-box;
|
299 |
+
}
|
300 |
+
|
301 |
+
.qsm-popup__close {
|
302 |
+
background: transparent;
|
303 |
+
border: 0;
|
304 |
+
color: #00449e;
|
305 |
+
text-decoration: none;
|
306 |
+
}
|
307 |
+
|
308 |
+
.qsm-popup__header .qsm-popup__close:before {
|
309 |
+
content: "\2715";
|
310 |
+
}
|
311 |
+
|
312 |
+
.qsm-popup__content {
|
313 |
+
margin-top: 2rem;
|
314 |
+
margin-bottom: 2rem;
|
315 |
+
line-height: 1.5;
|
316 |
+
color: rgba(0,0,0,.8);
|
317 |
+
}
|
318 |
+
|
319 |
+
.qsm-popup__btn {
|
320 |
+
font-size: .875rem;
|
321 |
+
padding-left: 1rem;
|
322 |
+
padding-right: 1rem;
|
323 |
+
padding-top: .5rem;
|
324 |
+
padding-bottom: .5rem;
|
325 |
+
background-color: #e6e6e6;
|
326 |
+
color: rgba(0,0,0,.8);
|
327 |
+
border-radius: .25rem;
|
328 |
+
border-style: none;
|
329 |
+
border-width: 0;
|
330 |
+
cursor: pointer;
|
331 |
+
-webkit-appearance: button;
|
332 |
+
text-transform: none;
|
333 |
+
overflow: visible;
|
334 |
+
line-height: 1.15;
|
335 |
+
margin: 0;
|
336 |
+
will-change: transform;
|
337 |
+
-moz-osx-font-smoothing: grayscale;
|
338 |
+
-webkit-backface-visibility: hidden;
|
339 |
+
backface-visibility: hidden;
|
340 |
+
-webkit-transform: translateZ(0);
|
341 |
+
transform: translateZ(0);
|
342 |
+
transition: -webkit-transform .25s ease-out;
|
343 |
+
transition: transform .25s ease-out;
|
344 |
+
transition: transform .25s ease-out,-webkit-transform .25s ease-out;
|
345 |
+
}
|
346 |
+
|
347 |
+
.qsm-popup__btn:focus, .qsm-popup__btn:hover {
|
348 |
+
-webkit-transform: scale(1.05);
|
349 |
+
transform: scale(1.05);
|
350 |
+
}
|
351 |
+
|
352 |
+
.qsm-popup__btn-primary {
|
353 |
+
background-color: #00449e;
|
354 |
+
color: #fff;
|
355 |
+
}
|
356 |
+
|
357 |
+
@keyframes mmfadeIn {
|
358 |
+
from { opacity: 0; }
|
359 |
+
to { opacity: 1; }
|
360 |
+
}
|
361 |
+
|
362 |
+
@keyframes mmfadeOut {
|
363 |
+
from { opacity: 1; }
|
364 |
+
to { opacity: 0; }
|
365 |
+
}
|
366 |
+
|
367 |
+
@keyframes mmslideIn {
|
368 |
+
from { transform: translateY(15%); }
|
369 |
+
to { transform: translateY(0); }
|
370 |
+
}
|
371 |
+
|
372 |
+
@keyframes mmslideOut {
|
373 |
+
from { transform: translateY(0); }
|
374 |
+
to { transform: translateY(-10%); }
|
375 |
+
}
|
376 |
+
|
377 |
+
.qsm-popup-slide {
|
378 |
+
display: none;
|
379 |
+
}
|
380 |
+
|
381 |
+
.qsm-popup-slide.is-open {
|
382 |
+
display: block;
|
383 |
+
}
|
384 |
+
|
385 |
+
.qsm-popup-slide[aria-hidden="false"] .qsm-popup__overlay {
|
386 |
+
animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1);
|
387 |
+
}
|
388 |
+
|
389 |
+
.qsm-popup-slide[aria-hidden="false"] .qsm-popup__container {
|
390 |
+
animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1);
|
391 |
+
}
|
392 |
+
|
393 |
+
.qsm-popup-slide[aria-hidden="true"] .qsm-popup__overlay {
|
394 |
+
animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1);
|
395 |
+
}
|
396 |
+
|
397 |
+
.qsm-popup-slide[aria-hidden="true"] .qsm-popup__container {
|
398 |
+
animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1);
|
399 |
+
}
|
400 |
+
|
401 |
+
.qsm-popup-slide .qsm-popup__container,
|
402 |
+
.qsm-popup-slide .qsm-popup__overlay {
|
403 |
+
will-change: transform;
|
404 |
+
}
|
js/qsm-admin.js
CHANGED
@@ -47,7 +47,7 @@ var QSMQuizzesSurveys;
|
|
47 |
$( '#delete_quiz_name' ).val( val.name );
|
48 |
}
|
49 |
});
|
50 |
-
|
51 |
},
|
52 |
editQuizName: function( quiz_id ) {
|
53 |
$( '#edit_quiz_id' ).val( quiz_id );
|
@@ -56,49 +56,27 @@ var QSMQuizzesSurveys;
|
|
56 |
$( '#edit_quiz_name' ).val( val.name );
|
57 |
}
|
58 |
});
|
59 |
-
|
60 |
},
|
61 |
duplicateQuiz: function( quiz_id ) {
|
62 |
$( '#duplicate_quiz_id' ).val( quiz_id );
|
63 |
-
|
64 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
};
|
66 |
$(function() {
|
67 |
-
$( '#new_quiz_dialog' ).dialog({
|
68 |
-
autoOpen: false,
|
69 |
-
buttons: {
|
70 |
-
Cancel: function() {
|
71 |
-
$( this ).dialog( 'close' );
|
72 |
-
}
|
73 |
-
}
|
74 |
-
});
|
75 |
-
$( '#delete_dialog' ).dialog({
|
76 |
-
autoOpen: false,
|
77 |
-
buttons: {
|
78 |
-
Cancel: function() {
|
79 |
-
$( this ).dialog( 'close' );
|
80 |
-
}
|
81 |
-
}
|
82 |
-
});
|
83 |
-
$( '#edit_dialog' ).dialog({
|
84 |
-
autoOpen: false,
|
85 |
-
buttons: {
|
86 |
-
Cancel: function() {
|
87 |
-
$( this ).dialog( 'close' );
|
88 |
-
}
|
89 |
-
}
|
90 |
-
});
|
91 |
-
$( '#duplicate_dialog' ).dialog({
|
92 |
-
autoOpen: false,
|
93 |
-
buttons: {
|
94 |
-
Cancel: function() {
|
95 |
-
$( this ).dialog( 'close' );
|
96 |
-
}
|
97 |
-
}
|
98 |
-
});
|
99 |
$( '#new_quiz_button, #new_quiz_button_two' ).on( 'click', function( event ) {
|
100 |
event.preventDefault();
|
101 |
-
|
102 |
});
|
103 |
$( '#quiz_search' ).keyup( function() {
|
104 |
QSMQuizzesSurveys.searchQuizzes( $( this ).val() );
|
@@ -115,6 +93,30 @@ var QSMQuizzesSurveys;
|
|
115 |
event.preventDefault();
|
116 |
QSMQuizzesSurveys.editQuizName( $( this ).parents( '.qsm-quiz-row' ).data( 'id' ) );
|
117 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
QSMQuizzesSurveys.load();
|
119 |
});
|
120 |
}(jQuery));
|
47 |
$( '#delete_quiz_name' ).val( val.name );
|
48 |
}
|
49 |
});
|
50 |
+
MicroModal.show( 'modal-5' );
|
51 |
},
|
52 |
editQuizName: function( quiz_id ) {
|
53 |
$( '#edit_quiz_id' ).val( quiz_id );
|
56 |
$( '#edit_quiz_name' ).val( val.name );
|
57 |
}
|
58 |
});
|
59 |
+
MicroModal.show( 'modal-3' );
|
60 |
},
|
61 |
duplicateQuiz: function( quiz_id ) {
|
62 |
$( '#duplicate_quiz_id' ).val( quiz_id );
|
63 |
+
MicroModal.show( 'modal-4' );
|
64 |
+
},
|
65 |
+
/**
|
66 |
+
* Opens the popup to reset quiz stats
|
67 |
+
*
|
68 |
+
* @param int The ID of the quiz
|
69 |
+
*/
|
70 |
+
openResetPopup: function( quiz_id ) {
|
71 |
+
quiz_id = parseInt( quiz_id );
|
72 |
+
$( '#reset_quiz_id' ).val( quiz_id );
|
73 |
+
MicroModal.show( 'modal-1' );
|
74 |
+
},
|
75 |
};
|
76 |
$(function() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
$( '#new_quiz_button, #new_quiz_button_two' ).on( 'click', function( event ) {
|
78 |
event.preventDefault();
|
79 |
+
MicroModal.show( 'modal-2' );
|
80 |
});
|
81 |
$( '#quiz_search' ).keyup( function() {
|
82 |
QSMQuizzesSurveys.searchQuizzes( $( this ).val() );
|
93 |
event.preventDefault();
|
94 |
QSMQuizzesSurveys.editQuizName( $( this ).parents( '.qsm-quiz-row' ).data( 'id' ) );
|
95 |
});
|
96 |
+
$( '#the-list' ).on( 'click', '.qsm-action-link-reset', function( event ) {
|
97 |
+
event.preventDefault();
|
98 |
+
QSMQuizzesSurveys.openResetPopup( $( this ).parents( '.qsm-quiz-row' ).data( 'id' ) );
|
99 |
+
});
|
100 |
+
$( '#reset-stats-button' ).on( 'click', function( event ) {
|
101 |
+
event.preventDefault();
|
102 |
+
$( '#reset_quiz_form' ).submit();
|
103 |
+
});
|
104 |
+
$( '#create-quiz-button' ).on( 'click', function( event ) {
|
105 |
+
event.preventDefault();
|
106 |
+
$( '#new-quiz-form' ).submit();
|
107 |
+
});
|
108 |
+
$( '#edit-name-button' ).on( 'click', function( event ) {
|
109 |
+
event.preventDefault();
|
110 |
+
$( '#edit-name-form' ).submit();
|
111 |
+
});
|
112 |
+
$( '#duplicate-quiz-button' ).on( 'click', function( event ) {
|
113 |
+
event.preventDefault();
|
114 |
+
$( '#duplicate-quiz-form' ).submit();
|
115 |
+
});
|
116 |
+
$( '#delete-quiz-button' ).on( 'click', function( event ) {
|
117 |
+
event.preventDefault();
|
118 |
+
$( '#delete-quiz-form' ).submit();
|
119 |
+
});
|
120 |
QSMQuizzesSurveys.load();
|
121 |
});
|
122 |
}(jQuery));
|
mlw_quizmaster2.php
CHANGED
@@ -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:
|
6 |
* Author: Frank Corso
|
7 |
* Author URI: https://www.quizandsurveymaster.com/
|
8 |
* Plugin URI: https://www.quizandsurveymaster.com/
|
9 |
* Text Domain: quiz-master-next
|
10 |
*
|
11 |
* @author Frank Corso
|
12 |
-
* @version
|
13 |
* @package QSM
|
14 |
*/
|
15 |
|
@@ -33,7 +33,7 @@ class MLWQuizMasterNext {
|
|
33 |
* @var string
|
34 |
* @since 4.0.0
|
35 |
*/
|
36 |
-
public $version = '
|
37 |
|
38 |
/**
|
39 |
* QSM Alert Manager Object
|
@@ -130,11 +130,9 @@ class MLWQuizMasterNext {
|
|
130 |
include 'php/admin/options-page-contact-tab.php';
|
131 |
include 'php/admin/options-page-text-tab.php';
|
132 |
include 'php/admin/options-page-option-tab.php';
|
133 |
-
include 'php/admin/options-page-leaderboard-tab.php';
|
134 |
include 'php/admin/options-page-email-tab.php';
|
135 |
include 'php/admin/options-page-results-page-tab.php';
|
136 |
include 'php/admin/options-page-style-tab.php';
|
137 |
-
include 'php/admin/options-page-tools-tab.php';
|
138 |
include 'php/admin/options-page-preview-tab.php';
|
139 |
include 'php/admin/addons-page.php';
|
140 |
include 'php/admin/settings-page.php';
|
@@ -146,8 +144,6 @@ class MLWQuizMasterNext {
|
|
146 |
include 'php/classes/class-qsm-contact-manager.php';
|
147 |
include 'php/classes/class-qmn-quiz-manager.php';
|
148 |
|
149 |
-
include 'php/leaderboard-shortcode.php';
|
150 |
-
include 'php/widgets.php';
|
151 |
include 'php/template-variables.php';
|
152 |
include 'php/adverts-generate.php';
|
153 |
include 'php/question-types.php';
|
@@ -180,8 +176,6 @@ class MLWQuizMasterNext {
|
|
180 |
private function add_hooks() {
|
181 |
add_action( 'admin_menu', array( $this, 'setup_admin_menu' ) );
|
182 |
add_action( 'admin_head', array( $this, 'admin_head' ), 900 );
|
183 |
-
add_action( 'widgets_init', create_function( '', 'return register_widget("Mlw_Qmn_Leaderboard_Widget");' ) );
|
184 |
-
add_shortcode( 'mlw_quizmaster_leaderboard', 'mlw_quiz_leaderboard_shortcode' );
|
185 |
add_action( 'init', array( $this, 'register_quiz_post_types' ) );
|
186 |
}
|
187 |
|
2 |
/**
|
3 |
* Plugin Name: Quiz And Survey Master
|
4 |
* Description: Easily and quickly add quizzes and surveys to your website.
|
5 |
+
* Version: 6.0.0
|
6 |
* Author: Frank Corso
|
7 |
* Author URI: https://www.quizandsurveymaster.com/
|
8 |
* Plugin URI: https://www.quizandsurveymaster.com/
|
9 |
* Text Domain: quiz-master-next
|
10 |
*
|
11 |
* @author Frank Corso
|
12 |
+
* @version 6.0.0
|
13 |
* @package QSM
|
14 |
*/
|
15 |
|
33 |
* @var string
|
34 |
* @since 4.0.0
|
35 |
*/
|
36 |
+
public $version = '6.0.0';
|
37 |
|
38 |
/**
|
39 |
* QSM Alert Manager Object
|
130 |
include 'php/admin/options-page-contact-tab.php';
|
131 |
include 'php/admin/options-page-text-tab.php';
|
132 |
include 'php/admin/options-page-option-tab.php';
|
|
|
133 |
include 'php/admin/options-page-email-tab.php';
|
134 |
include 'php/admin/options-page-results-page-tab.php';
|
135 |
include 'php/admin/options-page-style-tab.php';
|
|
|
136 |
include 'php/admin/options-page-preview-tab.php';
|
137 |
include 'php/admin/addons-page.php';
|
138 |
include 'php/admin/settings-page.php';
|
144 |
include 'php/classes/class-qsm-contact-manager.php';
|
145 |
include 'php/classes/class-qmn-quiz-manager.php';
|
146 |
|
|
|
|
|
147 |
include 'php/template-variables.php';
|
148 |
include 'php/adverts-generate.php';
|
149 |
include 'php/question-types.php';
|
176 |
private function add_hooks() {
|
177 |
add_action( 'admin_menu', array( $this, 'setup_admin_menu' ) );
|
178 |
add_action( 'admin_head', array( $this, 'admin_head' ), 900 );
|
|
|
|
|
179 |
add_action( 'init', array( $this, 'register_quiz_post_types' ) );
|
180 |
}
|
181 |
|
php/admin/about-page.php
CHANGED
@@ -33,27 +33,20 @@ function mlw_generate_about_page() {
|
|
33 |
</h2>
|
34 |
<div class="qsm-tab-content tab-1">
|
35 |
<div class="feature">
|
36 |
-
<h2 class="feature-headline">Welcome to QSM
|
37 |
</div>
|
38 |
<div class="feature">
|
39 |
-
<h2 class="feature-headline">New
|
40 |
-
<p class="feature-text">
|
41 |
-
<p class="feature-text">When editing your quiz or survey, go to the "Options" tab and set the "Show a progress bar?" option to "Yes".</p>
|
42 |
</div>
|
43 |
<div class="feature">
|
44 |
-
<h2 class="feature-headline">
|
45 |
-
<p class="feature-text">
|
46 |
-
</div>
|
47 |
-
<div class="feature">
|
48 |
-
<h2 class="feature-headline">Disable Storing Results In The Database</h2>
|
49 |
-
<p class="feature-text">For the quizzes and surveys that do not need to actually store any responses, you can now turn off the results being stored in the database. To do so, go to the "Options" tab when editing your quiz or survey and set the "Store the responses in the database?" option to "No".</p>
|
50 |
</div>
|
51 |
</div>
|
52 |
<div class="qsm-tab-content tab-2" style="display: none;">
|
53 |
<h2>Changelog</h2>
|
54 |
-
<?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next',
|
55 |
-
<?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next', 51 ); ?>
|
56 |
-
<?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next', 50 ); ?>
|
57 |
</div>
|
58 |
<div class="qsm-tab-content tab-3" style="display:none;">
|
59 |
<h2>GitHub Contributors</h2>
|
33 |
</h2>
|
34 |
<div class="qsm-tab-content tab-1">
|
35 |
<div class="feature">
|
36 |
+
<h2 class="feature-headline">Welcome to QSM 6.0!</h2>
|
37 |
</div>
|
38 |
<div class="feature">
|
39 |
+
<h2 class="feature-headline">New PHP Minimum</h2>
|
40 |
+
<p class="feature-text">As planned, all versions of Quiz And Survey Master starting with this version will require a minimum of PHP 5.4.</p>
|
|
|
41 |
</div>
|
42 |
<div class="feature">
|
43 |
+
<h2 class="feature-headline">Removing Of Deprecated Features</h2>
|
44 |
+
<p class="feature-text">As planned, the Leaderboards is now in our free addon instead of being built into the main plugin. The old "Tools" tab has also been removed.</p>
|
|
|
|
|
|
|
|
|
45 |
</div>
|
46 |
</div>
|
47 |
<div class="qsm-tab-content tab-2" style="display: none;">
|
48 |
<h2>Changelog</h2>
|
49 |
+
<?php QSM_Changelog_Generator::get_changelog_list( 'fpcorso/quiz_master_next', 36 ); ?>
|
|
|
|
|
50 |
</div>
|
51 |
<div class="qsm-tab-content tab-3" style="display:none;">
|
52 |
<h2>GitHub Contributors</h2>
|
php/admin/options-page-leaderboard-tab.php
DELETED
@@ -1,64 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
-
|
4 |
-
/**
|
5 |
-
* Adds the leaderboard to the Quiz Settings page.
|
6 |
-
*
|
7 |
-
* @return void
|
8 |
-
* @since 4.4.0
|
9 |
-
*/
|
10 |
-
function qmn_settings_leaderboard_tab() {
|
11 |
-
global $mlwQuizMasterNext;
|
12 |
-
$mlwQuizMasterNext->pluginHelper->register_quiz_settings_tabs( __( "Leaderboard", 'quiz-master-next' ), 'qsm_options_leaderboard_tab_content' );
|
13 |
-
}
|
14 |
-
add_action( "plugins_loaded", 'qmn_settings_leaderboard_tab', 5 );
|
15 |
-
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Adds the leaderboard content to the leaderboard tab.
|
19 |
-
*
|
20 |
-
* @return void
|
21 |
-
* @since 4.4.0
|
22 |
-
*/
|
23 |
-
function qsm_options_leaderboard_tab_content() {
|
24 |
-
global $wpdb;
|
25 |
-
global $mlwQuizMasterNext;
|
26 |
-
?>
|
27 |
-
<div style="background:#fff;border-left: 4px solid #fff;padding: 1px 12px;margin: 5px 0 15px;border-left-color: #dc3232;">
|
28 |
-
<p style="font-weight:bold;">Warning: This feature is being removed from the core version. Please use our new free Leaderboards addon. You can read more about this change in <a href="http://bit.ly/2sPOKxw" target="_blank">our post about the leaderboards being moved.</a></p>
|
29 |
-
</div>
|
30 |
-
<h3><?php _e( 'Template Variables', 'quiz-master-next' ); ?></h3>
|
31 |
-
<table class="form-table">
|
32 |
-
<tr>
|
33 |
-
<td><strong>%FIRST_PLACE_NAME%</strong> - <?php _e("The name of the user who is in first place", 'quiz-master-next'); ?></td>
|
34 |
-
<td><strong>%FIRST_PLACE_SCORE%</strong> - <?php _e("The score from the first place's quiz", 'quiz-master-next'); ?></td>
|
35 |
-
</tr>
|
36 |
-
|
37 |
-
<tr>
|
38 |
-
<td><strong>%SECOND_PLACE_NAME%</strong> - <?php _e("The name of the user who is in second place", 'quiz-master-next'); ?></td>
|
39 |
-
<td><strong>%SECOND_PLACE_SCORE%</strong> - <?php _e("The score from the second place's quiz", 'quiz-master-next'); ?></td>
|
40 |
-
</tr>
|
41 |
-
|
42 |
-
<tr>
|
43 |
-
<td><strong>%THIRD_PLACE_NAME%</strong> - <?php _e('The name of the user who is in third place', 'quiz-master-next'); ?></td>
|
44 |
-
<td><strong>%THIRD_PLACE_SCORE%</strong> - <?php _e("The score from the third place's quiz", 'quiz-master-next'); ?></td>
|
45 |
-
</tr>
|
46 |
-
|
47 |
-
<tr>
|
48 |
-
<td><strong>%FOURTH_PLACE_NAME%</strong> - <?php _e('The name of the user who is in fourth place', 'quiz-master-next'); ?></td>
|
49 |
-
<td><strong>%FOURTH_PLACE_SCORE%</strong> - <?php _e("The score from the fourth place's quiz", 'quiz-master-next'); ?></td>
|
50 |
-
</tr>
|
51 |
-
|
52 |
-
<tr>
|
53 |
-
<td><strong>%FIFTH_PLACE_NAME%</strong> - <?php _e('The name of the user who is in fifth place', 'quiz-master-next'); ?></td>
|
54 |
-
<td><strong>%FIFTH_PLACE_SCORE%</strong> - <?php _e("The score from the fifth place's quiz", 'quiz-master-next'); ?></td>
|
55 |
-
</tr>
|
56 |
-
|
57 |
-
<tr>
|
58 |
-
<td><strong>%QUIZ_NAME%</strong> - <?php _e("The name of the quiz", 'quiz-master-next'); ?></td>
|
59 |
-
</tr>
|
60 |
-
</table>
|
61 |
-
<?php
|
62 |
-
$mlwQuizMasterNext->pluginHelper->generate_settings_section( 'quiz_leaderboards' );
|
63 |
-
}
|
64 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
php/admin/options-page-tools-tab.php
DELETED
@@ -1,113 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
-
|
4 |
-
/**
|
5 |
-
* Adds the Tools tab to the Quiz Settings page.
|
6 |
-
*
|
7 |
-
* @return void
|
8 |
-
* @since 4.4.0
|
9 |
-
*/
|
10 |
-
function qmn_settings_tools_tab()
|
11 |
-
{
|
12 |
-
global $mlwQuizMasterNext;
|
13 |
-
$mlwQuizMasterNext->pluginHelper->register_quiz_settings_tabs(__("Tools", 'quiz-master-next'), 'mlw_options_tools_tab_content');
|
14 |
-
}
|
15 |
-
add_action("plugins_loaded", 'qmn_settings_tools_tab', 5);
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Adds the Tools tab content to the Tools tab.
|
19 |
-
*
|
20 |
-
* @return void
|
21 |
-
* @since 4.4.0
|
22 |
-
*/
|
23 |
-
function mlw_options_tools_tab_content()
|
24 |
-
{
|
25 |
-
global $wpdb;
|
26 |
-
global $mlwQuizMasterNext;
|
27 |
-
$quiz_id = intval($_GET["quiz_id"]);
|
28 |
-
//Update Quiz Table
|
29 |
-
if (isset($_POST["mlw_reset_quiz_stats"]) && $_POST["mlw_reset_quiz_stats"] == "confirmation")
|
30 |
-
{
|
31 |
-
//Variables from reset stats form
|
32 |
-
$mlw_reset_stats_quiz_id = intval( $_POST["mlw_reset_quiz_id"] );
|
33 |
-
$results = $wpdb->update(
|
34 |
-
$wpdb->prefix . "mlw_quizzes",
|
35 |
-
array(
|
36 |
-
'quiz_views' => 0,
|
37 |
-
'quiz_taken' => 0,
|
38 |
-
'last_activity' => date("Y-m-d H:i:s")
|
39 |
-
),
|
40 |
-
array( 'quiz_id' => $mlw_reset_stats_quiz_id ),
|
41 |
-
array(
|
42 |
-
'%d',
|
43 |
-
'%d',
|
44 |
-
'%s'
|
45 |
-
),
|
46 |
-
array( '%d' )
|
47 |
-
);
|
48 |
-
if ( $results ) {
|
49 |
-
$mlwQuizMasterNext->alertManager->newAlert(__('The stats has been reset successfully.', 'quiz-master-next'), 'success');
|
50 |
-
$mlwQuizMasterNext->audit_manager->new_audit( "Quiz Stats Have Been Reset For Quiz Number $mlw_reset_stats_quiz_id" );
|
51 |
-
} else {
|
52 |
-
$mlwQuizMasterNext->alertManager->newAlert(sprintf(__('There has been an error in this action. Please share this with the developer. Error Code: %s', 'quiz-master-next'), '0010'), 'error');
|
53 |
-
$mlwQuizMasterNext->log_manager->add("Error 0010", $wpdb->last_error.' from '.$wpdb->last_query, 0, 'error');
|
54 |
-
}
|
55 |
-
}
|
56 |
-
|
57 |
-
if ( isset( $_GET["quiz_id"] ) ) {
|
58 |
-
$table_name = $wpdb->prefix . "mlw_quizzes";
|
59 |
-
$mlw_quiz_options = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE quiz_id=%d LIMIT 1", $quiz_id ) );
|
60 |
-
}
|
61 |
-
?>
|
62 |
-
<div id="tabs-8" class="mlw_tab_content">
|
63 |
-
<script type="text/javascript">
|
64 |
-
var $j = jQuery.noConflict();
|
65 |
-
// increase the default animation speed to exaggerate the effect
|
66 |
-
$j.fx.speeds._default = 1000;
|
67 |
-
$j(function() {
|
68 |
-
$j( "#tabs" ).tabs();
|
69 |
-
});
|
70 |
-
</script>
|
71 |
-
<script>
|
72 |
-
jQuery(function() {
|
73 |
-
jQuery('#mlw_reset_stats_dialog').dialog({
|
74 |
-
autoOpen: false,
|
75 |
-
show: 'blind',
|
76 |
-
width:700,
|
77 |
-
hide: 'explode',
|
78 |
-
buttons: {
|
79 |
-
Ok: function() {
|
80 |
-
jQuery(this).dialog('close');
|
81 |
-
}
|
82 |
-
}
|
83 |
-
});
|
84 |
-
|
85 |
-
jQuery('#mlw_reset_stats_button').click(function() {
|
86 |
-
jQuery('#mlw_reset_stats_dialog').dialog('open');
|
87 |
-
return false;
|
88 |
-
} );
|
89 |
-
});
|
90 |
-
</script>
|
91 |
-
<p><?php _e('Use this button to reset all the stats collected for this quiz (Quiz Views and Times Quiz Has Been Taken).', 'quiz-master-next'); ?></p>
|
92 |
-
<button class="button" id="mlw_reset_stats_button"><?php _e('Reset Quiz Views And Taken Stats', 'quiz-master-next'); ?></button>
|
93 |
-
<hr />
|
94 |
-
<h3>Addon Quiz Settings</h3>
|
95 |
-
<div id="tabs">
|
96 |
-
<ul>
|
97 |
-
<?php do_action('mlw_qmn_options_tab'); ?>
|
98 |
-
</ul>
|
99 |
-
<?php do_action('mlw_qmn_options_tab_content'); ?>
|
100 |
-
</div>
|
101 |
-
<?php do_action('mlw_qmn_quiz_tools'); ?>
|
102 |
-
<div id="mlw_reset_stats_dialog" title="Reset Stats For This Quiz" style="display:none;">
|
103 |
-
<p><?php _e('Are you sure you want to reset the stats to 0? All views and taken stats for this quiz will be reset. This is permanent and cannot be undone.', 'quiz-master-next'); ?></p>
|
104 |
-
<form action='' method='post'>
|
105 |
-
<input type='hidden' name='mlw_reset_quiz_stats' value='confirmation' />
|
106 |
-
<input type='hidden' name='mlw_reset_quiz_id' value='<?php echo $quiz_id; ?>' />
|
107 |
-
<p class='submit'><input type='submit' class='button-primary' value='<?php _e('Reset All Stats For Quiz', 'quiz-master-next'); ?>' /></p>
|
108 |
-
</form>
|
109 |
-
</div>
|
110 |
-
</div>
|
111 |
-
<?php
|
112 |
-
}
|
113 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
php/admin/quizzes-page.php
CHANGED
@@ -24,9 +24,9 @@ function qsm_generate_quizzes_surveys_page() {
|
|
24 |
global $mlwQuizMasterNext;
|
25 |
|
26 |
// Enqueue our styles and scripts.
|
|
|
27 |
wp_enqueue_style( 'qsm_admin_style', plugins_url( '../../css/qsm-admin.css', __FILE__ ), array(), $mlwQuizMasterNext->version );
|
28 |
-
wp_enqueue_script( 'qsm_admin_script', plugins_url( '../../js/qsm-admin.js', __FILE__ ), array( 'wp-util', 'underscore', 'jquery
|
29 |
-
wp_enqueue_style( 'qsm_jquery_redmond_theme', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css' );
|
30 |
|
31 |
// Create new quiz.
|
32 |
if ( isset( $_POST['qsm_new_quiz_nonce'] ) && wp_verify_nonce( $_POST['qsm_new_quiz_nonce'], 'qsm_new_quiz' ) ) {
|
@@ -55,6 +55,33 @@ function qsm_generate_quizzes_surveys_page() {
|
|
55 |
$mlwQuizMasterNext->quizCreator->duplicate_quiz( $quiz_id, $quiz_name, isset( $_POST['duplicate_questions'] ) );
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
// Load our quizzes.
|
59 |
$quizzes = $mlwQuizMasterNext->pluginHelper->get_quizzes();
|
60 |
|
@@ -205,48 +232,123 @@ function qsm_generate_quizzes_surveys_page() {
|
|
205 |
?>
|
206 |
</div>
|
207 |
|
208 |
-
<!--
|
209 |
-
<div
|
210 |
-
<
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
</div>
|
217 |
|
218 |
-
<!--
|
219 |
-
<div
|
220 |
-
<
|
221 |
-
<
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
</div>
|
228 |
|
229 |
-
<!--
|
230 |
-
<div
|
231 |
-
<
|
232 |
-
<
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
</div>
|
240 |
|
241 |
-
<!--
|
242 |
-
<div
|
243 |
-
<
|
244 |
-
<
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
</div>
|
251 |
|
252 |
<!-- Templates -->
|
@@ -275,7 +377,12 @@ function qsm_generate_quizzes_surveys_page() {
|
|
275 |
</td>
|
276 |
<td>[qsm quiz={{ data.id }}]</td>
|
277 |
<td>[qsm_link id={{ data.id }}]<?php _e( 'Click here', 'quiz-master-next' ); ?>[/qsm_link]</td>
|
278 |
-
<td>
|
|
|
|
|
|
|
|
|
|
|
279 |
<td>{{ data.lastActivity }}</td>
|
280 |
</tr>
|
281 |
</script>
|
24 |
global $mlwQuizMasterNext;
|
25 |
|
26 |
// Enqueue our styles and scripts.
|
27 |
+
wp_enqueue_script( 'micromodal_script', plugins_url( '../../js/micromodal.min.js', __FILE__ ) );
|
28 |
wp_enqueue_style( 'qsm_admin_style', plugins_url( '../../css/qsm-admin.css', __FILE__ ), array(), $mlwQuizMasterNext->version );
|
29 |
+
wp_enqueue_script( 'qsm_admin_script', plugins_url( '../../js/qsm-admin.js', __FILE__ ), array( 'wp-util', 'underscore', 'jquery', 'micromodal_script' ), $mlwQuizMasterNext->version );
|
|
|
30 |
|
31 |
// Create new quiz.
|
32 |
if ( isset( $_POST['qsm_new_quiz_nonce'] ) && wp_verify_nonce( $_POST['qsm_new_quiz_nonce'], 'qsm_new_quiz' ) ) {
|
55 |
$mlwQuizMasterNext->quizCreator->duplicate_quiz( $quiz_id, $quiz_name, isset( $_POST['duplicate_questions'] ) );
|
56 |
}
|
57 |
|
58 |
+
// Resets stats for a quiz.
|
59 |
+
if ( isset( $_POST['qsm_reset_stats_nonce'] ) && wp_verify_nonce( $_POST['qsm_reset_stats_nonce'] , 'qsm_reset_stats' ) ) {
|
60 |
+
$quiz_id = intval( $_POST['reset_quiz_id'] );
|
61 |
+
$results = $wpdb->update(
|
62 |
+
$wpdb->prefix . 'mlw_quizzes',
|
63 |
+
array(
|
64 |
+
'quiz_views' => 0,
|
65 |
+
'quiz_taken' => 0,
|
66 |
+
'last_activity' => date( 'Y-m-d H:i:s' ),
|
67 |
+
),
|
68 |
+
array( 'quiz_id' => $quiz_id ),
|
69 |
+
array(
|
70 |
+
'%d',
|
71 |
+
'%d',
|
72 |
+
'%s',
|
73 |
+
),
|
74 |
+
array( '%d' )
|
75 |
+
);
|
76 |
+
if ( false !== $results ) {
|
77 |
+
$mlwQuizMasterNext->alertManager->newAlert( __( 'The stats has been reset successfully.', 'quiz-master-next' ), 'success' );
|
78 |
+
$mlwQuizMasterNext->audit_manager->new_audit( "Quiz Stats Have Been Reset For Quiz Number $quiz_id" );
|
79 |
+
} else {
|
80 |
+
$mlwQuizMasterNext->alertManager->newAlert( __( 'Error trying to reset stats. Please try again.', 'quiz-master-next' ), 'error' );
|
81 |
+
$mlwQuizMasterNext->log_manager->add( 'Error resetting stats', $wpdb->last_error . ' from ' . $wpdb->last_query, 0, 'error' );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
// Load our quizzes.
|
86 |
$quizzes = $mlwQuizMasterNext->pluginHelper->get_quizzes();
|
87 |
|
232 |
?>
|
233 |
</div>
|
234 |
|
235 |
+
<!-- Popup for resetting stats -->
|
236 |
+
<div class="qsm-popup qsm-popup-slide" id="modal-1" aria-hidden="true">
|
237 |
+
<div class="qsm-popup__overlay" tabindex="-1" data-micromodal-close>
|
238 |
+
<div class="qsm-popup__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
|
239 |
+
<header class="qsm-popup__header">
|
240 |
+
<h2 class="qsm-popup__title" id="modal-1-title">Reset stats for this quiz?</h2>
|
241 |
+
<a class="qsm-popup__close" aria-label="Close modal" data-micromodal-close></a>
|
242 |
+
</header>
|
243 |
+
<main class="qsm-popup__content" id="modal-1-content">
|
244 |
+
<p><?php _e('Are you sure you want to reset the stats to 0? All views and taken stats for this quiz will be reset. This is permanent and cannot be undone.', 'quiz-master-next'); ?></p>
|
245 |
+
<form action="" method="post" id="reset_quiz_form">
|
246 |
+
<?php wp_nonce_field( 'qsm_reset_stats', 'qsm_reset_stats_nonce' ); ?>
|
247 |
+
<input type="hidden" id="reset_quiz_id" name="reset_quiz_id" value="0" />
|
248 |
+
</form>
|
249 |
+
</main>
|
250 |
+
<footer class="qsm-popup__footer">
|
251 |
+
<button id="reset-stats-button" class="qsm-popup__btn qsm-popup__btn-primary"><?php _e('Reset All Stats For Quiz', 'quiz-master-next'); ?></button>
|
252 |
+
<button class="qsm-popup__btn" data-micromodal-close aria-label="Close this dialog window"><?php _e('Cancel', 'quiz-master-next'); ?></button>
|
253 |
+
</footer>
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
</div>
|
257 |
+
|
258 |
+
<!-- Popup for new quiz -->
|
259 |
+
<div class="qsm-popup qsm-popup-slide" id="modal-2" aria-hidden="true">
|
260 |
+
<div class="qsm-popup__overlay" tabindex="-1" data-micromodal-close>
|
261 |
+
<div class="qsm-popup__container" role="dialog" aria-modal="true" aria-labelledby="modal-2-title">
|
262 |
+
<header class="qsm-popup__header">
|
263 |
+
<h2 class="qsm-popup__title" id="modal-2-title"><?php _e( 'Create New Quiz Or Survey', 'quiz-master-next' ); ?></h2>
|
264 |
+
<a class="qsm-popup__close" aria-label="Close modal" data-micromodal-close></a>
|
265 |
+
</header>
|
266 |
+
<main class="qsm-popup__content" id="modal-2-content">
|
267 |
+
<form action="" method="post" id="new-quiz-form">
|
268 |
+
<?php wp_nonce_field( 'qsm_new_quiz', 'qsm_new_quiz_nonce' ); ?>
|
269 |
+
<label><?php _e( 'Name', 'quiz-master-next' ); ?></label>
|
270 |
+
<input type="text" name="quiz_name" value="" />
|
271 |
+
</form>
|
272 |
+
</main>
|
273 |
+
<footer class="qsm-popup__footer">
|
274 |
+
<button id="create-quiz-button" class="qsm-popup__btn qsm-popup__btn-primary"><?php _e('Create', 'quiz-master-next'); ?></button>
|
275 |
+
<button class="qsm-popup__btn" data-micromodal-close aria-label="Close this dialog window"><?php _e('Cancel', 'quiz-master-next'); ?></button>
|
276 |
+
</footer>
|
277 |
+
</div>
|
278 |
+
</div>
|
279 |
</div>
|
280 |
|
281 |
+
<!-- Popup for edit quiz name -->
|
282 |
+
<div class="qsm-popup qsm-popup-slide" id="modal-3" aria-hidden="true">
|
283 |
+
<div class="qsm-popup__overlay" tabindex="-1" data-micromodal-close>
|
284 |
+
<div class="qsm-popup__container" role="dialog" aria-modal="true" aria-labelledby="modal-3-title">
|
285 |
+
<header class="qsm-popup__header">
|
286 |
+
<h2 class="qsm-popup__title" id="modal-3-title"><?php _e( 'Edit Name', 'quiz-master-next' ); ?></h2>
|
287 |
+
<a class="qsm-popup__close" aria-label="Close modal" data-micromodal-close></a>
|
288 |
+
</header>
|
289 |
+
<main class="qsm-popup__content" id="modal-3-content">
|
290 |
+
<form action='' method='post' id="edit-name-form">
|
291 |
+
<label><?php _e( 'Name', 'quiz-master-next' ); ?></label>
|
292 |
+
<input type="text" id="edit_quiz_name" name="edit_quiz_name" />
|
293 |
+
<input type="hidden" id="edit_quiz_id" name="edit_quiz_id" />
|
294 |
+
<?php wp_nonce_field( 'qsm_edit_name_quiz', 'qsm_edit_name_quiz_nonce' ); ?>
|
295 |
+
</form>
|
296 |
+
</main>
|
297 |
+
<footer class="qsm-popup__footer">
|
298 |
+
<button id="edit-name-button" class="qsm-popup__btn qsm-popup__btn-primary"><?php _e('Edit', 'quiz-master-next'); ?></button>
|
299 |
+
<button class="qsm-popup__btn" data-micromodal-close aria-label="Close this dialog window"><?php _e('Cancel', 'quiz-master-next'); ?></button>
|
300 |
+
</footer>
|
301 |
+
</div>
|
302 |
+
</div>
|
303 |
</div>
|
304 |
|
305 |
+
<!-- Popup for duplicate quiz -->
|
306 |
+
<div class="qsm-popup qsm-popup-slide" id="modal-4" aria-hidden="true">
|
307 |
+
<div class="qsm-popup__overlay" tabindex="-1" data-micromodal-close>
|
308 |
+
<div class="qsm-popup__container" role="dialog" aria-modal="true" aria-labelledby="modal-4-title">
|
309 |
+
<header class="qsm-popup__header">
|
310 |
+
<h2 class="qsm-popup__title" id="modal-4-title"><?php _e( 'Duplicate', 'quiz-master-next' ); ?></h2>
|
311 |
+
<a class="qsm-popup__close" aria-label="Close modal" data-micromodal-close></a>
|
312 |
+
</header>
|
313 |
+
<main class="qsm-popup__content" id="modal-4-content">
|
314 |
+
<form action='' method='post' id="duplicate-quiz-form">
|
315 |
+
<label for="duplicate_questions"><?php _e( 'Duplicate questions also?', 'quiz-master-next' ); ?></label><input type="checkbox" name="duplicate_questions" id="duplicate_questions"/><br />
|
316 |
+
<br />
|
317 |
+
<label for="duplicate_new_quiz_name"><?php _e( 'Name Of New Quiz Or Survey:', 'quiz-master-next' ); ?></label><input type="text" id="duplicate_new_quiz_name" name="duplicate_new_quiz_name" />
|
318 |
+
<input type="hidden" id="duplicate_quiz_id" name="duplicate_quiz_id" />
|
319 |
+
<?php wp_nonce_field( 'qsm_duplicate_quiz', 'qsm_duplicate_quiz_nonce' ); ?>
|
320 |
+
</form>
|
321 |
+
</main>
|
322 |
+
<footer class="qsm-popup__footer">
|
323 |
+
<button id="duplicate-quiz-button" class="qsm-popup__btn qsm-popup__btn-primary"><?php _e('Duplicate', 'quiz-master-next'); ?></button>
|
324 |
+
<button class="qsm-popup__btn" data-micromodal-close aria-label="Close this dialog window"><?php _e('Cancel', 'quiz-master-next'); ?></button>
|
325 |
+
</footer>
|
326 |
+
</div>
|
327 |
+
</div>
|
328 |
</div>
|
329 |
|
330 |
+
<!-- Popup for delete quiz -->
|
331 |
+
<div class="qsm-popup qsm-popup-slide" id="modal-5" aria-hidden="true">
|
332 |
+
<div class="qsm-popup__overlay" tabindex="-1" data-micromodal-close>
|
333 |
+
<div class="qsm-popup__container" role="dialog" aria-modal="true" aria-labelledby="modal-5-title">
|
334 |
+
<header class="qsm-popup__header">
|
335 |
+
<h2 class="qsm-popup__title" id="modal-5-title"><?php _e( 'Delete', 'quiz-master-next' ); ?></h2>
|
336 |
+
<a class="qsm-popup__close" aria-label="Close modal" data-micromodal-close></a>
|
337 |
+
</header>
|
338 |
+
<main class="qsm-popup__content" id="modal-5-content">
|
339 |
+
<form action='' method='post' id="delete-quiz-form">
|
340 |
+
<h3><b><?php _e( 'Are you sure you want to delete this quiz or survey?', 'quiz-master-next' ); ?></b></h3>
|
341 |
+
<?php wp_nonce_field( 'qsm_delete_quiz', 'qsm_delete_quiz_nonce' ); ?>
|
342 |
+
<input type='hidden' id='delete_quiz_id' name='delete_quiz_id' value='' />
|
343 |
+
<input type='hidden' id='delete_quiz_name' name='delete_quiz_name' value='' />
|
344 |
+
</form>
|
345 |
+
</main>
|
346 |
+
<footer class="qsm-popup__footer">
|
347 |
+
<button id="delete-quiz-button" class="qsm-popup__btn qsm-popup__btn-primary"><?php _e('Delete', 'quiz-master-next'); ?></button>
|
348 |
+
<button class="qsm-popup__btn" data-micromodal-close aria-label="Close this dialog window"><?php _e('Cancel', 'quiz-master-next'); ?></button>
|
349 |
+
</footer>
|
350 |
+
</div>
|
351 |
+
</div>
|
352 |
</div>
|
353 |
|
354 |
<!-- Templates -->
|
377 |
</td>
|
378 |
<td>[qsm quiz={{ data.id }}]</td>
|
379 |
<td>[qsm_link id={{ data.id }}]<?php _e( 'Click here', 'quiz-master-next' ); ?>[/qsm_link]</td>
|
380 |
+
<td>
|
381 |
+
{{ data.views }}/{{ data.taken }}
|
382 |
+
<div class="row-actions">
|
383 |
+
<a class="qsm-action-link qsm-action-link-reset" href="#"><?php _e( 'Reset', 'quiz-master-next' ); ?></a>
|
384 |
+
</div>
|
385 |
+
</td>
|
386 |
<td>{{ data.lastActivity }}</td>
|
387 |
</tr>
|
388 |
</script>
|
php/classes/class-qsm-install.php
CHANGED
@@ -717,28 +717,6 @@ class QSM_Install {
|
|
717 |
'default' => 'The entered text is not correct!'
|
718 |
);
|
719 |
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
720 |
-
|
721 |
-
// Registers template setting
|
722 |
-
$field_array = array(
|
723 |
-
'id' => 'template',
|
724 |
-
'label' => __('Leaderboard Template', 'quiz-master-next'),
|
725 |
-
'type' => 'editor',
|
726 |
-
'variables' => array(
|
727 |
-
'%QUIZ_NAME%',
|
728 |
-
'%FIRST_PLACE_NAME%',
|
729 |
-
'%FIRST_PLACE_SCORE%',
|
730 |
-
'%SECOND_PLACE_NAME%',
|
731 |
-
'%SECOND_PLACE_SCORE%',
|
732 |
-
'%THIRD_PLACE_NAME%',
|
733 |
-
'%THIRD_PLACE_SCORE%',
|
734 |
-
'%FOURTH_PLACE_NAME%',
|
735 |
-
'%FOURTH_PLACE_SCORE%',
|
736 |
-
'%FIFTH_PLACE_NAME%',
|
737 |
-
'%FIFTH_PLACE_SCORE%'
|
738 |
-
),
|
739 |
-
'default' => 0
|
740 |
-
);
|
741 |
-
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_leaderboards' );
|
742 |
}
|
743 |
|
744 |
/**
|
@@ -927,21 +905,6 @@ class QSM_Install {
|
|
927 |
$results = $wpdb->query( $update_sql );
|
928 |
}
|
929 |
|
930 |
-
//Update 0.9.2
|
931 |
-
if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'leaderboard_template'") != "leaderboard_template")
|
932 |
-
{
|
933 |
-
$sql = "ALTER TABLE ".$table_name." ADD leaderboard_template TEXT NOT NULL AFTER comment_field_text";
|
934 |
-
$results = $wpdb->query( $sql );
|
935 |
-
$mlw_leaderboard_default = "<h3>Leaderboard for %QUIZ_NAME%</h3>
|
936 |
-
1. %FIRST_PLACE_NAME%-%FIRST_PLACE_SCORE%<br />
|
937 |
-
2. %SECOND_PLACE_NAME%-%SECOND_PLACE_SCORE%<br />
|
938 |
-
3. %THIRD_PLACE_NAME%-%THIRD_PLACE_SCORE%<br />
|
939 |
-
4. %FOURTH_PLACE_NAME%-%FOURTH_PLACE_SCORE%<br />
|
940 |
-
5. %FIFTH_PLACE_NAME%-%FIFTH_PLACE_SCORE%<br />";
|
941 |
-
$update_sql = "UPDATE ".$table_name." SET leaderboard_template='".$mlw_leaderboard_default."'";
|
942 |
-
$results = $wpdb->query( $update_sql );
|
943 |
-
}
|
944 |
-
|
945 |
//Update 0.9.4
|
946 |
if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'randomness_order'") != "randomness_order")
|
947 |
{
|
717 |
'default' => 'The entered text is not correct!'
|
718 |
);
|
719 |
$mlwQuizMasterNext->pluginHelper->register_quiz_setting( $field_array, 'quiz_text' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
720 |
}
|
721 |
|
722 |
/**
|
905 |
$results = $wpdb->query( $update_sql );
|
906 |
}
|
907 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
908 |
//Update 0.9.4
|
909 |
if($wpdb->get_var("SHOW COLUMNS FROM ".$table_name." LIKE 'randomness_order'") != "randomness_order")
|
910 |
{
|
php/leaderboard-shortcode.php
DELETED
@@ -1,82 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
-
|
4 |
-
/**
|
5 |
-
* This function creates the leaderboard that is displayed.
|
6 |
-
*
|
7 |
-
* Sorts the scores a quizzes by type.
|
8 |
-
*
|
9 |
-
* @param $atts This is wordpress return for shortcodes
|
10 |
-
* @return type $mlw_quiz_leaderboard_display This variable contains all the contents of the leaderboard.
|
11 |
-
* @since 4.4.0
|
12 |
-
*/
|
13 |
-
function mlw_quiz_leaderboard_shortcode( $atts ) {
|
14 |
-
|
15 |
-
extract(shortcode_atts(array(
|
16 |
-
'mlw_quiz' => 0
|
17 |
-
), $atts));
|
18 |
-
$mlw_quiz_id = intval( $mlw_quiz );
|
19 |
-
$mlw_quiz_leaderboard_display = "";
|
20 |
-
|
21 |
-
|
22 |
-
global $wpdb;
|
23 |
-
$mlw_quiz_options = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $wpdb->prefix . "mlw_quizzes" . " WHERE quiz_id=%d AND deleted='0'", $mlw_quiz_id ) );
|
24 |
-
foreach($mlw_quiz_options as $mlw_eaches) {
|
25 |
-
$mlw_quiz_options = $mlw_eaches;
|
26 |
-
break;
|
27 |
-
}
|
28 |
-
$sql = "SELECT * FROM " . $wpdb->prefix . "mlw_results WHERE quiz_id=%d AND deleted='0'";
|
29 |
-
if ($mlw_quiz_options->system == 0)
|
30 |
-
{
|
31 |
-
$sql .= " ORDER BY correct_score DESC";
|
32 |
-
}
|
33 |
-
if ($mlw_quiz_options->system == 1)
|
34 |
-
{
|
35 |
-
$sql .= " ORDER BY point_score DESC";
|
36 |
-
}
|
37 |
-
$sql .= " LIMIT 10";
|
38 |
-
$mlw_result_data = $wpdb->get_results( $wpdb->prepare( $sql, $mlw_quiz_id ) );
|
39 |
-
|
40 |
-
$mlw_quiz_leaderboard_display = $mlw_quiz_options->leaderboard_template;
|
41 |
-
$mlw_quiz_leaderboard_display = str_replace( "%QUIZ_NAME%" , $mlw_quiz_options->quiz_name, $mlw_quiz_leaderboard_display);
|
42 |
-
|
43 |
-
$leader_count = 0;
|
44 |
-
foreach($mlw_result_data as $mlw_eaches) {
|
45 |
-
$leader_count++;
|
46 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
47 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
48 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
49 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
50 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
51 |
-
if ($mlw_quiz_options->system == 0)
|
52 |
-
{
|
53 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
54 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
55 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
56 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
57 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
58 |
-
}
|
59 |
-
if ($mlw_quiz_options->system == 1)
|
60 |
-
{
|
61 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
62 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
63 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
64 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
65 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
66 |
-
}
|
67 |
-
}
|
68 |
-
$mlw_quiz_leaderboard_display = str_replace( "%QUIZ_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
69 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
70 |
-
$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
71 |
-
$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
72 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
73 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
74 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
75 |
-
$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
76 |
-
$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
77 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
78 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
79 |
-
|
80 |
-
return $mlw_quiz_leaderboard_display;
|
81 |
-
}
|
82 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
php/widgets.php
DELETED
@@ -1,128 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
3 |
-
|
4 |
-
/**
|
5 |
-
* The class contains all of the functions for the leaderboard widget.
|
6 |
-
*
|
7 |
-
* @return void
|
8 |
-
* @since 4.4.0
|
9 |
-
*/
|
10 |
-
class Mlw_Qmn_Leaderboard_Widget extends WP_Widget {
|
11 |
-
|
12 |
-
// constructor
|
13 |
-
function __construct() {
|
14 |
-
parent::__construct(false, $name = __('Quiz And Survey Master Leaderboard Widget', 'quiz-master-next'));
|
15 |
-
}
|
16 |
-
|
17 |
-
// widget form creation
|
18 |
-
function form($instance) {
|
19 |
-
// Check values
|
20 |
-
if( $instance) {
|
21 |
-
$title = esc_attr($instance['title']);
|
22 |
-
$quiz_id = esc_attr($instance['quiz_id']);
|
23 |
-
} else {
|
24 |
-
$title = '';
|
25 |
-
$quiz_id = '';
|
26 |
-
}
|
27 |
-
?>
|
28 |
-
<p>
|
29 |
-
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title', 'quiz-master-next'); ?></label>
|
30 |
-
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
|
31 |
-
</p>
|
32 |
-
<p>
|
33 |
-
<label for="<?php echo $this->get_field_id('quiz_id'); ?>"><?php _e('Quiz ID', 'quiz-master-next'); ?></label>
|
34 |
-
<input class="widefat" id="<?php echo $this->get_field_id('quiz_id'); ?>" name="<?php echo $this->get_field_name('quiz_id'); ?>" type="number" step="1" min="1" value="<?php echo $quiz_id; ?>" />
|
35 |
-
</p>
|
36 |
-
<?php
|
37 |
-
}
|
38 |
-
|
39 |
-
// widget update
|
40 |
-
function update($new_instance, $old_instance) {
|
41 |
-
$instance = $old_instance;
|
42 |
-
// Fields
|
43 |
-
$instance['title'] = strip_tags($new_instance['title']);
|
44 |
-
$instance['quiz_id'] = strip_tags($new_instance['quiz_id']);
|
45 |
-
return $instance;
|
46 |
-
}
|
47 |
-
|
48 |
-
// widget display
|
49 |
-
function widget($args, $instance) {
|
50 |
-
extract( $args );
|
51 |
-
// Filter to alter leadboard widget title
|
52 |
-
$title = apply_filters('qsm_leaderboard_widget_title', $instance['title']);
|
53 |
-
$quiz_id = $instance['quiz_id'];
|
54 |
-
echo $before_widget;
|
55 |
-
// Display the widget
|
56 |
-
echo '<div class="widget-text wp_widget_plugin_box">';
|
57 |
-
// Check if title is set
|
58 |
-
if ( $title ) {
|
59 |
-
echo $before_title . $title . $after_title;
|
60 |
-
}
|
61 |
-
$mlw_quiz_id = intval( $quiz_id );
|
62 |
-
$mlw_quiz_leaderboard_display = "";
|
63 |
-
|
64 |
-
|
65 |
-
global $wpdb;
|
66 |
-
$mlw_quiz_options = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM " . $wpdb->prefix . "mlw_quizzes WHERE quiz_id=%d AND deleted='0'", $mlw_quiz_id ) );
|
67 |
-
foreach($mlw_quiz_options as $mlw_eaches) {
|
68 |
-
$mlw_quiz_options = $mlw_eaches;
|
69 |
-
break;
|
70 |
-
}
|
71 |
-
$sql = "SELECT * FROM " . $wpdb->prefix . "mlw_results WHERE quiz_id=%d AND deleted='0'";
|
72 |
-
if ($mlw_quiz_options->system == 0)
|
73 |
-
{
|
74 |
-
$sql .= " ORDER BY correct_score DESC";
|
75 |
-
}
|
76 |
-
if ($mlw_quiz_options->system == 1)
|
77 |
-
{
|
78 |
-
$sql .= " ORDER BY point_score DESC";
|
79 |
-
}
|
80 |
-
$sql .= " LIMIT 10";
|
81 |
-
$mlw_result_data = $wpdb->get_results( $wpdb->prepare( $sql, $mlw_quiz_id ) );
|
82 |
-
|
83 |
-
$mlw_quiz_leaderboard_display = $mlw_quiz_options->leaderboard_template;
|
84 |
-
$mlw_quiz_leaderboard_display = str_replace( "%QUIZ_NAME%" , $mlw_quiz_options->quiz_name, $mlw_quiz_leaderboard_display);
|
85 |
-
|
86 |
-
$leader_count = 0;
|
87 |
-
foreach($mlw_result_data as $mlw_eaches) {
|
88 |
-
$leader_count++;
|
89 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
90 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
91 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
92 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
93 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_NAME%" , $mlw_eaches->name, $mlw_quiz_leaderboard_display);}
|
94 |
-
if ($mlw_quiz_options->system == 0)
|
95 |
-
{
|
96 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
97 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
98 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
99 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
100 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , $mlw_eaches->correct_score."%", $mlw_quiz_leaderboard_display);}
|
101 |
-
}
|
102 |
-
if ($mlw_quiz_options->system == 1)
|
103 |
-
{
|
104 |
-
if ($leader_count == 1) {$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
105 |
-
if ($leader_count == 2) {$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
106 |
-
if ($leader_count == 3) {$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
107 |
-
if ($leader_count == 4) {$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
108 |
-
if ($leader_count == 5) {$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , $mlw_eaches->point_score." Points", $mlw_quiz_leaderboard_display);}
|
109 |
-
}
|
110 |
-
}
|
111 |
-
$mlw_quiz_leaderboard_display = str_replace( "%QUIZ_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
112 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
113 |
-
$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
114 |
-
$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
115 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
116 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_NAME%" , " ", $mlw_quiz_leaderboard_display);
|
117 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIRST_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
118 |
-
$mlw_quiz_leaderboard_display = str_replace( "%SECOND_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
119 |
-
$mlw_quiz_leaderboard_display = str_replace( "%THIRD_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
120 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FOURTH_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
121 |
-
$mlw_quiz_leaderboard_display = str_replace( "%FIFTH_PLACE_SCORE%" , " ", $mlw_quiz_leaderboard_display);
|
122 |
-
|
123 |
-
echo $mlw_quiz_leaderboard_display;
|
124 |
-
echo '</div>';
|
125 |
-
echo $after_widget;
|
126 |
-
}
|
127 |
-
}
|
128 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: fpcorso
|
|
3 |
Tags: quiz, survey, lead, test, score, exam, questionnaire, question
|
4 |
Requires at least: 4.8
|
5 |
Tested up to: 4.9
|
6 |
-
Requires PHP: 5.
|
7 |
-
Stable tag:
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -111,19 +111,10 @@ This is usually a theme conflict. You can [checkout out our common conflict solu
|
|
111 |
|
112 |
== Changelog ==
|
113 |
|
114 |
-
=
|
115 |
-
* Closed
|
116 |
-
|
117 |
-
|
118 |
-
* Closed Enhancement: Add user ID to admin results page table - ([Issue #682](https://github.com/fpcorso/quiz_master_next/issues/682))
|
119 |
-
* Closed Enhancement: Integrate with WordPress 4.9.6 GDPR features - ([Issue #681](https://github.com/fpcorso/quiz_master_next/issues/681))
|
120 |
-
|
121 |
-
= 5.3.0 (May 16, 2018) =
|
122 |
-
* Closed Enhancement: Ability to disable IP address collection - ([Issue #670](https://github.com/fpcorso/quiz_master_next/issues/670))
|
123 |
-
* Closed User Request: Ability to customize name of QSM archive name - ([Issue #666](https://github.com/fpcorso/quiz_master_next/issues/666))
|
124 |
-
* Closed User Request: Progress Bar - ([Issue #412](https://github.com/fpcorso/quiz_master_next/issues/412))
|
125 |
-
* Closed User Request: Disable Results Being Stored In Database - ([Issue #215](https://github.com/fpcorso/quiz_master_next/issues/215))
|
126 |
-
* Closed Bug: Question ordering doesn't work when using older pagination option - ([Issue #657](https://github.com/fpcorso/quiz_master_next/issues/657))
|
127 |
|
128 |
([Read Full Changelog](https://github.com/fpcorso/quiz_master_next/blob/master/CHANGELOG.md))
|
129 |
|
3 |
Tags: quiz, survey, lead, test, score, exam, questionnaire, question
|
4 |
Requires at least: 4.8
|
5 |
Tested up to: 4.9
|
6 |
+
Requires PHP: 5.4
|
7 |
+
Stable tag: 6.0.0
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
111 |
|
112 |
== Changelog ==
|
113 |
|
114 |
+
= 6.0.0 (June 20, 2018) =
|
115 |
+
* Closed Enhancement: Remove Tools tab ([Issue #689](https://github.com/fpcorso/quiz_master_next/issues/689))
|
116 |
+
* Closed Enhancement: Bump Minimum PHP Version To 5.4 ([Issue #607](https://github.com/fpcorso/quiz_master_next/issues/607))
|
117 |
+
* Closed Enhancement: Move Leaderboards to free addon ([Issue #380](https://github.com/fpcorso/quiz_master_next/issues/380))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
|
119 |
([Read Full Changelog](https://github.com/fpcorso/quiz_master_next/blob/master/CHANGELOG.md))
|
120 |
|