Quiz And Survey Master (Formerly Quiz Master Next) - Version 6.2.2

Version Description

Download this release

Release Info

Developer quizsurvey
Plugin Icon 128x128 Quiz And Survey Master (Formerly Quiz Master Next)
Version 6.2.2
Comparing to
See all releases

Code changes from version 6.2.1 to 6.2.2

README.md CHANGED
@@ -13,9 +13,7 @@ Please read [CONTRIBUTING.md](https://github.com/QuizandSurveyMaster/quiz_master
13
  We use [SemVer](http://semver.org/) for versioning. For the versions available, see [the releases in this repository](https://github.com/QuizandSurveyMaster/quiz_master_next/releases).
14
 
15
  ## Developers
16
- * Frank Corso - Lead Developer
17
-
18
- See also [the list of contributors](https://github.com/QuizandSurveyMaster/quiz_master_next/graphs/contributors) who participated in this project.
19
 
20
  ## License
21
  This project is licensed under the GPLv2 License - see the [LICENSE.md file](https://github.com/QuizandSurveyMaster/quiz_master_next/blob/master/LICENSE.md) for details.
13
  We use [SemVer](http://semver.org/) for versioning. For the versions available, see [the releases in this repository](https://github.com/QuizandSurveyMaster/quiz_master_next/releases).
14
 
15
  ## Developers
16
+ See [the list of contributors](https://github.com/QuizandSurveyMaster/quiz_master_next/graphs/contributors) who participated in this project.
 
 
17
 
18
  ## License
19
  This project is licensed under the GPLv2 License - see the [LICENSE.md file](https://github.com/QuizandSurveyMaster/quiz_master_next/blob/master/LICENSE.md) for details.
css/jquery-ui.css ADDED
@@ -0,0 +1,1177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.10.3 - 2013-05-03
2
+ * http://jqueryui.com
3
+ * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=gloss_wave&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=glass&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
+ * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden {
10
+ display: none;
11
+ }
12
+ .ui-helper-hidden-accessible {
13
+ border: 0;
14
+ clip: rect(0 0 0 0);
15
+ height: 1px;
16
+ margin: -1px;
17
+ overflow: hidden;
18
+ padding: 0;
19
+ position: absolute;
20
+ width: 1px;
21
+ }
22
+ .ui-helper-reset {
23
+ margin: 0;
24
+ padding: 0;
25
+ border: 0;
26
+ outline: 0;
27
+ line-height: 1.3;
28
+ text-decoration: none;
29
+ font-size: 100%;
30
+ list-style: none;
31
+ }
32
+ .ui-helper-clearfix:before,
33
+ .ui-helper-clearfix:after {
34
+ content: "";
35
+ display: table;
36
+ border-collapse: collapse;
37
+ }
38
+ .ui-helper-clearfix:after {
39
+ clear: both;
40
+ }
41
+ .ui-helper-clearfix {
42
+ min-height: 0; /* support: IE7 */
43
+ }
44
+ .ui-helper-zfix {
45
+ width: 100%;
46
+ height: 100%;
47
+ top: 0;
48
+ left: 0;
49
+ position: absolute;
50
+ opacity: 0;
51
+ filter:Alpha(Opacity=0);
52
+ }
53
+
54
+ .ui-front {
55
+ z-index: 100;
56
+ }
57
+
58
+
59
+ /* Interaction Cues
60
+ ----------------------------------*/
61
+ .ui-state-disabled {
62
+ cursor: default !important;
63
+ }
64
+
65
+
66
+ /* Icons
67
+ ----------------------------------*/
68
+
69
+ /* states and images */
70
+ .ui-icon {
71
+ display: block;
72
+ text-indent: -99999px;
73
+ overflow: hidden;
74
+ background-repeat: no-repeat;
75
+ }
76
+
77
+
78
+ /* Misc visuals
79
+ ----------------------------------*/
80
+
81
+ /* Overlays */
82
+ .ui-widget-overlay {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+ .ui-accordion .ui-accordion-header {
90
+ display: block;
91
+ cursor: pointer;
92
+ position: relative;
93
+ margin-top: 2px;
94
+ padding: .5em .5em .5em .7em;
95
+ min-height: 0; /* support: IE7 */
96
+ }
97
+ .ui-accordion .ui-accordion-icons {
98
+ padding-left: 2.2em;
99
+ }
100
+ .ui-accordion .ui-accordion-noicons {
101
+ padding-left: .7em;
102
+ }
103
+ .ui-accordion .ui-accordion-icons .ui-accordion-icons {
104
+ padding-left: 2.2em;
105
+ }
106
+ .ui-accordion .ui-accordion-header .ui-accordion-header-icon {
107
+ position: absolute;
108
+ left: .5em;
109
+ top: 50%;
110
+ margin-top: -8px;
111
+ }
112
+ .ui-accordion .ui-accordion-content {
113
+ padding: 1em 2.2em;
114
+ border-top: 0;
115
+ overflow: auto;
116
+ }
117
+ .ui-autocomplete {
118
+ position: absolute;
119
+ top: 0;
120
+ left: 0;
121
+ cursor: default;
122
+ }
123
+ .ui-button {
124
+ display: inline-block;
125
+ position: relative;
126
+ padding: 0;
127
+ line-height: normal;
128
+ margin-right: .1em;
129
+ cursor: pointer;
130
+ vertical-align: middle;
131
+ text-align: center;
132
+ overflow: visible; /* removes extra width in IE */
133
+ }
134
+ .ui-button,
135
+ .ui-button:link,
136
+ .ui-button:visited,
137
+ .ui-button:hover,
138
+ .ui-button:active {
139
+ text-decoration: none;
140
+ }
141
+ /* to make room for the icon, a width needs to be set here */
142
+ .ui-button-icon-only {
143
+ width: 2.2em;
144
+ }
145
+ /* button elements seem to need a little more width */
146
+ button.ui-button-icon-only {
147
+ width: 2.4em;
148
+ }
149
+ .ui-button-icons-only {
150
+ width: 3.4em;
151
+ }
152
+ button.ui-button-icons-only {
153
+ width: 3.7em;
154
+ }
155
+
156
+ /* button text element */
157
+ .ui-button .ui-button-text {
158
+ display: block;
159
+ line-height: normal;
160
+ }
161
+ .ui-button-text-only .ui-button-text {
162
+ padding: .4em 1em;
163
+ }
164
+ .ui-button-icon-only .ui-button-text,
165
+ .ui-button-icons-only .ui-button-text {
166
+ padding: .4em;
167
+ text-indent: -9999999px;
168
+ }
169
+ .ui-button-text-icon-primary .ui-button-text,
170
+ .ui-button-text-icons .ui-button-text {
171
+ padding: .4em 1em .4em 2.1em;
172
+ }
173
+ .ui-button-text-icon-secondary .ui-button-text,
174
+ .ui-button-text-icons .ui-button-text {
175
+ padding: .4em 2.1em .4em 1em;
176
+ }
177
+ .ui-button-text-icons .ui-button-text {
178
+ padding-left: 2.1em;
179
+ padding-right: 2.1em;
180
+ }
181
+ /* no icon support for input elements, provide padding by default */
182
+ input.ui-button {
183
+ padding: .4em 1em;
184
+ }
185
+
186
+ /* button icon element(s) */
187
+ .ui-button-icon-only .ui-icon,
188
+ .ui-button-text-icon-primary .ui-icon,
189
+ .ui-button-text-icon-secondary .ui-icon,
190
+ .ui-button-text-icons .ui-icon,
191
+ .ui-button-icons-only .ui-icon {
192
+ position: absolute;
193
+ top: 50%;
194
+ margin-top: -8px;
195
+ }
196
+ .ui-button-icon-only .ui-icon {
197
+ left: 50%;
198
+ margin-left: -8px;
199
+ }
200
+ .ui-button-text-icon-primary .ui-button-icon-primary,
201
+ .ui-button-text-icons .ui-button-icon-primary,
202
+ .ui-button-icons-only .ui-button-icon-primary {
203
+ left: .5em;
204
+ }
205
+ .ui-button-text-icon-secondary .ui-button-icon-secondary,
206
+ .ui-button-text-icons .ui-button-icon-secondary,
207
+ .ui-button-icons-only .ui-button-icon-secondary {
208
+ right: .5em;
209
+ }
210
+
211
+ /* button sets */
212
+ .ui-buttonset {
213
+ margin-right: 7px;
214
+ }
215
+ .ui-buttonset .ui-button {
216
+ margin-left: 0;
217
+ margin-right: -.3em;
218
+ }
219
+
220
+ /* workarounds */
221
+ /* reset extra padding in Firefox, see h5bp.com/l */
222
+ input.ui-button::-moz-focus-inner,
223
+ button.ui-button::-moz-focus-inner {
224
+ border: 0;
225
+ padding: 0;
226
+ }
227
+ .ui-datepicker {
228
+ width: 17em;
229
+ padding: .2em .2em 0;
230
+ display: none;
231
+ }
232
+ .ui-datepicker .ui-datepicker-header {
233
+ position: relative;
234
+ padding: .2em 0;
235
+ }
236
+ .ui-datepicker .ui-datepicker-prev,
237
+ .ui-datepicker .ui-datepicker-next {
238
+ position: absolute;
239
+ top: 2px;
240
+ width: 1.8em;
241
+ height: 1.8em;
242
+ }
243
+ .ui-datepicker .ui-datepicker-prev-hover,
244
+ .ui-datepicker .ui-datepicker-next-hover {
245
+ top: 1px;
246
+ }
247
+ .ui-datepicker .ui-datepicker-prev {
248
+ left: 2px;
249
+ }
250
+ .ui-datepicker .ui-datepicker-next {
251
+ right: 2px;
252
+ }
253
+ .ui-datepicker .ui-datepicker-prev-hover {
254
+ left: 1px;
255
+ }
256
+ .ui-datepicker .ui-datepicker-next-hover {
257
+ right: 1px;
258
+ }
259
+ .ui-datepicker .ui-datepicker-prev span,
260
+ .ui-datepicker .ui-datepicker-next span {
261
+ display: block;
262
+ position: absolute;
263
+ left: 50%;
264
+ margin-left: -8px;
265
+ top: 50%;
266
+ margin-top: -8px;
267
+ }
268
+ .ui-datepicker .ui-datepicker-title {
269
+ margin: 0 2.3em;
270
+ line-height: 1.8em;
271
+ text-align: center;
272
+ }
273
+ .ui-datepicker .ui-datepicker-title select {
274
+ font-size: 1em;
275
+ margin: 1px 0;
276
+ }
277
+ .ui-datepicker select.ui-datepicker-month-year {
278
+ width: 100%;
279
+ }
280
+ .ui-datepicker select.ui-datepicker-month,
281
+ .ui-datepicker select.ui-datepicker-year {
282
+ width: 49%;
283
+ }
284
+ .ui-datepicker table {
285
+ width: 100%;
286
+ font-size: .9em;
287
+ border-collapse: collapse;
288
+ margin: 0 0 .4em;
289
+ }
290
+ .ui-datepicker th {
291
+ padding: .7em .3em;
292
+ text-align: center;
293
+ font-weight: bold;
294
+ border: 0;
295
+ }
296
+ .ui-datepicker td {
297
+ border: 0;
298
+ padding: 1px;
299
+ }
300
+ .ui-datepicker td span,
301
+ .ui-datepicker td a {
302
+ display: block;
303
+ padding: .2em;
304
+ text-align: right;
305
+ text-decoration: none;
306
+ }
307
+ .ui-datepicker .ui-datepicker-buttonpane {
308
+ background-image: none;
309
+ margin: .7em 0 0 0;
310
+ padding: 0 .2em;
311
+ border-left: 0;
312
+ border-right: 0;
313
+ border-bottom: 0;
314
+ }
315
+ .ui-datepicker .ui-datepicker-buttonpane button {
316
+ float: right;
317
+ margin: .5em .2em .4em;
318
+ cursor: pointer;
319
+ padding: .2em .6em .3em .6em;
320
+ width: auto;
321
+ overflow: visible;
322
+ }
323
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
324
+ float: left;
325
+ }
326
+
327
+ /* with multiple calendars */
328
+ .ui-datepicker.ui-datepicker-multi {
329
+ width: auto;
330
+ }
331
+ .ui-datepicker-multi .ui-datepicker-group {
332
+ float: left;
333
+ }
334
+ .ui-datepicker-multi .ui-datepicker-group table {
335
+ width: 95%;
336
+ margin: 0 auto .4em;
337
+ }
338
+ .ui-datepicker-multi-2 .ui-datepicker-group {
339
+ width: 50%;
340
+ }
341
+ .ui-datepicker-multi-3 .ui-datepicker-group {
342
+ width: 33.3%;
343
+ }
344
+ .ui-datepicker-multi-4 .ui-datepicker-group {
345
+ width: 25%;
346
+ }
347
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
348
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
349
+ border-left-width: 0;
350
+ }
351
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
352
+ clear: left;
353
+ }
354
+ .ui-datepicker-row-break {
355
+ clear: both;
356
+ width: 100%;
357
+ font-size: 0;
358
+ }
359
+
360
+ /* RTL support */
361
+ .ui-datepicker-rtl {
362
+ direction: rtl;
363
+ }
364
+ .ui-datepicker-rtl .ui-datepicker-prev {
365
+ right: 2px;
366
+ left: auto;
367
+ }
368
+ .ui-datepicker-rtl .ui-datepicker-next {
369
+ left: 2px;
370
+ right: auto;
371
+ }
372
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
373
+ right: 1px;
374
+ left: auto;
375
+ }
376
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
377
+ left: 1px;
378
+ right: auto;
379
+ }
380
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
381
+ clear: right;
382
+ }
383
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
384
+ float: left;
385
+ }
386
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
387
+ .ui-datepicker-rtl .ui-datepicker-group {
388
+ float: right;
389
+ }
390
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
391
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
392
+ border-right-width: 0;
393
+ border-left-width: 1px;
394
+ }
395
+ .ui-dialog {
396
+ position: absolute;
397
+ top: 0;
398
+ left: 0;
399
+ padding: .2em;
400
+ outline: 0;
401
+ }
402
+ .ui-dialog .ui-dialog-titlebar {
403
+ padding: .4em 1em;
404
+ position: relative;
405
+ }
406
+ .ui-dialog .ui-dialog-title {
407
+ float: left;
408
+ margin: .1em 0;
409
+ white-space: nowrap;
410
+ width: 90%;
411
+ overflow: hidden;
412
+ text-overflow: ellipsis;
413
+ }
414
+ .ui-dialog .ui-dialog-titlebar-close {
415
+ position: absolute;
416
+ right: .3em;
417
+ top: 50%;
418
+ width: 21px;
419
+ margin: -10px 0 0 0;
420
+ padding: 1px;
421
+ height: 20px;
422
+ }
423
+ .ui-dialog .ui-dialog-content {
424
+ position: relative;
425
+ border: 0;
426
+ padding: .5em 1em;
427
+ background: none;
428
+ overflow: auto;
429
+ }
430
+ .ui-dialog .ui-dialog-buttonpane {
431
+ text-align: left;
432
+ border-width: 1px 0 0 0;
433
+ background-image: none;
434
+ margin-top: .5em;
435
+ padding: .3em 1em .5em .4em;
436
+ }
437
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
438
+ float: right;
439
+ }
440
+ .ui-dialog .ui-dialog-buttonpane button {
441
+ margin: .5em .4em .5em 0;
442
+ cursor: pointer;
443
+ }
444
+ .ui-dialog .ui-resizable-se {
445
+ width: 12px;
446
+ height: 12px;
447
+ right: -5px;
448
+ bottom: -5px;
449
+ background-position: 16px 16px;
450
+ }
451
+ .ui-draggable .ui-dialog-titlebar {
452
+ cursor: move;
453
+ }
454
+ .ui-menu {
455
+ list-style: none;
456
+ padding: 2px;
457
+ margin: 0;
458
+ display: block;
459
+ outline: none;
460
+ }
461
+ .ui-menu .ui-menu {
462
+ margin-top: -3px;
463
+ position: absolute;
464
+ }
465
+ .ui-menu .ui-menu-item {
466
+ margin: 0;
467
+ padding: 0;
468
+ width: 100%;
469
+ /* support: IE10, see #8844 */
470
+ list-style-image: url(data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==);
471
+ }
472
+ .ui-menu .ui-menu-divider {
473
+ margin: 5px -2px 5px -2px;
474
+ height: 0;
475
+ font-size: 0;
476
+ line-height: 0;
477
+ border-width: 1px 0 0 0;
478
+ }
479
+ .ui-menu .ui-menu-item a {
480
+ text-decoration: none;
481
+ display: block;
482
+ padding: 2px .4em;
483
+ line-height: 1.5;
484
+ min-height: 0; /* support: IE7 */
485
+ font-weight: normal;
486
+ }
487
+ .ui-menu .ui-menu-item a.ui-state-focus,
488
+ .ui-menu .ui-menu-item a.ui-state-active {
489
+ font-weight: normal;
490
+ margin: -1px;
491
+ }
492
+
493
+ .ui-menu .ui-state-disabled {
494
+ font-weight: normal;
495
+ margin: .4em 0 .2em;
496
+ line-height: 1.5;
497
+ }
498
+ .ui-menu .ui-state-disabled a {
499
+ cursor: default;
500
+ }
501
+
502
+ /* icon support */
503
+ .ui-menu-icons {
504
+ position: relative;
505
+ }
506
+ .ui-menu-icons .ui-menu-item a {
507
+ position: relative;
508
+ padding-left: 2em;
509
+ }
510
+
511
+ /* left-aligned */
512
+ .ui-menu .ui-icon {
513
+ position: absolute;
514
+ top: .2em;
515
+ left: .2em;
516
+ }
517
+
518
+ /* right-aligned */
519
+ .ui-menu .ui-menu-icon {
520
+ position: static;
521
+ float: right;
522
+ }
523
+ .ui-progressbar {
524
+ height: 2em;
525
+ text-align: left;
526
+ overflow: hidden;
527
+ }
528
+ .ui-progressbar .ui-progressbar-value {
529
+ margin: -1px;
530
+ height: 100%;
531
+ }
532
+ .ui-progressbar .ui-progressbar-overlay {
533
+ background: url("images/animated-overlay.gif");
534
+ height: 100%;
535
+ filter: alpha(opacity=25);
536
+ opacity: 0.25;
537
+ }
538
+ .ui-progressbar-indeterminate .ui-progressbar-value {
539
+ background-image: none;
540
+ }
541
+ .ui-resizable {
542
+ position: relative;
543
+ }
544
+ .ui-resizable-handle {
545
+ position: absolute;
546
+ font-size: 0.1px;
547
+ display: block;
548
+ }
549
+ .ui-resizable-disabled .ui-resizable-handle,
550
+ .ui-resizable-autohide .ui-resizable-handle {
551
+ display: none;
552
+ }
553
+ .ui-resizable-n {
554
+ cursor: n-resize;
555
+ height: 7px;
556
+ width: 100%;
557
+ top: -5px;
558
+ left: 0;
559
+ }
560
+ .ui-resizable-s {
561
+ cursor: s-resize;
562
+ height: 7px;
563
+ width: 100%;
564
+ bottom: -5px;
565
+ left: 0;
566
+ }
567
+ .ui-resizable-e {
568
+ cursor: e-resize;
569
+ width: 7px;
570
+ right: -5px;
571
+ top: 0;
572
+ height: 100%;
573
+ }
574
+ .ui-resizable-w {
575
+ cursor: w-resize;
576
+ width: 7px;
577
+ left: -5px;
578
+ top: 0;
579
+ height: 100%;
580
+ }
581
+ .ui-resizable-se {
582
+ cursor: se-resize;
583
+ width: 12px;
584
+ height: 12px;
585
+ right: 1px;
586
+ bottom: 1px;
587
+ }
588
+ .ui-resizable-sw {
589
+ cursor: sw-resize;
590
+ width: 9px;
591
+ height: 9px;
592
+ left: -5px;
593
+ bottom: -5px;
594
+ }
595
+ .ui-resizable-nw {
596
+ cursor: nw-resize;
597
+ width: 9px;
598
+ height: 9px;
599
+ left: -5px;
600
+ top: -5px;
601
+ }
602
+ .ui-resizable-ne {
603
+ cursor: ne-resize;
604
+ width: 9px;
605
+ height: 9px;
606
+ right: -5px;
607
+ top: -5px;
608
+ }
609
+ .ui-selectable-helper {
610
+ position: absolute;
611
+ z-index: 100;
612
+ border: 1px dotted black;
613
+ }
614
+ .ui-slider {
615
+ position: relative;
616
+ text-align: left;
617
+ }
618
+ .ui-slider .ui-slider-handle {
619
+ position: absolute;
620
+ z-index: 2;
621
+ width: 1.2em;
622
+ height: 1.2em;
623
+ cursor: default;
624
+ }
625
+ .ui-slider .ui-slider-range {
626
+ position: absolute;
627
+ z-index: 1;
628
+ font-size: .7em;
629
+ display: block;
630
+ border: 0;
631
+ background-position: 0 0;
632
+ }
633
+
634
+ /* For IE8 - See #6727 */
635
+ .ui-slider.ui-state-disabled .ui-slider-handle,
636
+ .ui-slider.ui-state-disabled .ui-slider-range {
637
+ filter: inherit;
638
+ }
639
+
640
+ .ui-slider-horizontal {
641
+ height: .8em;
642
+ }
643
+ .ui-slider-horizontal .ui-slider-handle {
644
+ top: -.3em;
645
+ margin-left: -.6em;
646
+ }
647
+ .ui-slider-horizontal .ui-slider-range {
648
+ top: 0;
649
+ height: 100%;
650
+ }
651
+ .ui-slider-horizontal .ui-slider-range-min {
652
+ left: 0;
653
+ }
654
+ .ui-slider-horizontal .ui-slider-range-max {
655
+ right: 0;
656
+ }
657
+
658
+ .ui-slider-vertical {
659
+ width: .8em;
660
+ height: 100px;
661
+ }
662
+ .ui-slider-vertical .ui-slider-handle {
663
+ left: -.3em;
664
+ margin-left: 0;
665
+ margin-bottom: -.6em;
666
+ }
667
+ .ui-slider-vertical .ui-slider-range {
668
+ left: 0;
669
+ width: 100%;
670
+ }
671
+ .ui-slider-vertical .ui-slider-range-min {
672
+ bottom: 0;
673
+ }
674
+ .ui-slider-vertical .ui-slider-range-max {
675
+ top: 0;
676
+ }
677
+ .ui-spinner {
678
+ position: relative;
679
+ display: inline-block;
680
+ overflow: hidden;
681
+ padding: 0;
682
+ vertical-align: middle;
683
+ }
684
+ .ui-spinner-input {
685
+ border: none;
686
+ background: none;
687
+ color: inherit;
688
+ padding: 0;
689
+ margin: .2em 0;
690
+ vertical-align: middle;
691
+ margin-left: .4em;
692
+ margin-right: 22px;
693
+ }
694
+ .ui-spinner-button {
695
+ width: 16px;
696
+ height: 50%;
697
+ font-size: .5em;
698
+ padding: 0;
699
+ margin: 0;
700
+ text-align: center;
701
+ position: absolute;
702
+ cursor: default;
703
+ display: block;
704
+ overflow: hidden;
705
+ right: 0;
706
+ }
707
+ /* more specificity required here to overide default borders */
708
+ .ui-spinner a.ui-spinner-button {
709
+ border-top: none;
710
+ border-bottom: none;
711
+ border-right: none;
712
+ }
713
+ /* vertical centre icon */
714
+ .ui-spinner .ui-icon {
715
+ position: absolute;
716
+ margin-top: -8px;
717
+ top: 50%;
718
+ left: 0;
719
+ }
720
+ .ui-spinner-up {
721
+ top: 0;
722
+ }
723
+ .ui-spinner-down {
724
+ bottom: 0;
725
+ }
726
+
727
+ /* TR overrides */
728
+ .ui-spinner .ui-icon-triangle-1-s {
729
+ /* need to fix icons sprite */
730
+ background-position: -65px -16px;
731
+ }
732
+ .ui-tabs {
733
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
734
+ padding: .2em;
735
+ }
736
+ .ui-tabs .ui-tabs-nav {
737
+ margin: 0;
738
+ padding: .2em .2em 0;
739
+ }
740
+ .ui-tabs .ui-tabs-nav li {
741
+ list-style: none;
742
+ float: left;
743
+ position: relative;
744
+ top: 0;
745
+ margin: 1px .2em 0 0;
746
+ border-bottom-width: 0;
747
+ padding: 0;
748
+ white-space: nowrap;
749
+ }
750
+ .ui-tabs .ui-tabs-nav li a {
751
+ float: left;
752
+ padding: .5em 1em;
753
+ text-decoration: none;
754
+ }
755
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active {
756
+ margin-bottom: -1px;
757
+ padding-bottom: 1px;
758
+ }
759
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active a,
760
+ .ui-tabs .ui-tabs-nav li.ui-state-disabled a,
761
+ .ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
762
+ cursor: text;
763
+ }
764
+ .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
765
+ .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
766
+ cursor: pointer;
767
+ }
768
+ .ui-tabs .ui-tabs-panel {
769
+ display: block;
770
+ border-width: 0;
771
+ padding: 1em 1.4em;
772
+ background: none;
773
+ }
774
+ .ui-tooltip {
775
+ padding: 8px;
776
+ position: absolute;
777
+ z-index: 9999;
778
+ max-width: 300px;
779
+ -webkit-box-shadow: 0 0 5px #aaa;
780
+ box-shadow: 0 0 5px #aaa;
781
+ }
782
+ body .ui-tooltip {
783
+ border-width: 2px;
784
+ }
785
+
786
+ /* Component containers
787
+ ----------------------------------*/
788
+ .ui-widget {
789
+ font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
790
+ font-size: 1.1em;
791
+ }
792
+ .ui-widget .ui-widget {
793
+ font-size: 1em;
794
+ }
795
+ .ui-widget input,
796
+ .ui-widget select,
797
+ .ui-widget textarea,
798
+ .ui-widget button {
799
+ font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
800
+ font-size: 1em;
801
+ }
802
+ .ui-widget-content {
803
+ border: 1px solid #a6c9e2;
804
+ background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x;
805
+ color: #222222;
806
+ }
807
+ .ui-widget-content a {
808
+ color: #222222;
809
+ }
810
+ .ui-widget-header {
811
+ border: 1px solid #4297d7;
812
+ background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x;
813
+ color: #ffffff;
814
+ font-weight: bold;
815
+ }
816
+ .ui-widget-header a {
817
+ color: #ffffff;
818
+ }
819
+
820
+ /* Interaction states
821
+ ----------------------------------*/
822
+ .ui-state-default,
823
+ .ui-widget-content .ui-state-default,
824
+ .ui-widget-header .ui-state-default {
825
+ border: 1px solid #c5dbec;
826
+ background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x;
827
+ font-weight: bold;
828
+ color: #2e6e9e;
829
+ }
830
+ .ui-state-default a,
831
+ .ui-state-default a:link,
832
+ .ui-state-default a:visited {
833
+ color: #2e6e9e;
834
+ text-decoration: none;
835
+ }
836
+ .ui-state-hover,
837
+ .ui-widget-content .ui-state-hover,
838
+ .ui-widget-header .ui-state-hover,
839
+ .ui-state-focus,
840
+ .ui-widget-content .ui-state-focus,
841
+ .ui-widget-header .ui-state-focus {
842
+ border: 1px solid #79b7e7;
843
+ background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x;
844
+ font-weight: bold;
845
+ color: #1d5987;
846
+ }
847
+ .ui-state-hover a,
848
+ .ui-state-hover a:hover,
849
+ .ui-state-hover a:link,
850
+ .ui-state-hover a:visited {
851
+ color: #1d5987;
852
+ text-decoration: none;
853
+ }
854
+ .ui-state-active,
855
+ .ui-widget-content .ui-state-active,
856
+ .ui-widget-header .ui-state-active {
857
+ border: 1px solid #79b7e7;
858
+ background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x;
859
+ font-weight: bold;
860
+ color: #e17009;
861
+ }
862
+ .ui-state-active a,
863
+ .ui-state-active a:link,
864
+ .ui-state-active a:visited {
865
+ color: #e17009;
866
+ text-decoration: none;
867
+ }
868
+
869
+ /* Interaction Cues
870
+ ----------------------------------*/
871
+ .ui-state-highlight,
872
+ .ui-widget-content .ui-state-highlight,
873
+ .ui-widget-header .ui-state-highlight {
874
+ border: 1px solid #fad42e;
875
+ background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x;
876
+ color: #363636;
877
+ }
878
+ .ui-state-highlight a,
879
+ .ui-widget-content .ui-state-highlight a,
880
+ .ui-widget-header .ui-state-highlight a {
881
+ color: #363636;
882
+ }
883
+ .ui-state-error,
884
+ .ui-widget-content .ui-state-error,
885
+ .ui-widget-header .ui-state-error {
886
+ border: 1px solid #cd0a0a;
887
+ background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
888
+ color: #cd0a0a;
889
+ }
890
+ .ui-state-error a,
891
+ .ui-widget-content .ui-state-error a,
892
+ .ui-widget-header .ui-state-error a {
893
+ color: #cd0a0a;
894
+ }
895
+ .ui-state-error-text,
896
+ .ui-widget-content .ui-state-error-text,
897
+ .ui-widget-header .ui-state-error-text {
898
+ color: #cd0a0a;
899
+ }
900
+ .ui-priority-primary,
901
+ .ui-widget-content .ui-priority-primary,
902
+ .ui-widget-header .ui-priority-primary {
903
+ font-weight: bold;
904
+ }
905
+ .ui-priority-secondary,
906
+ .ui-widget-content .ui-priority-secondary,
907
+ .ui-widget-header .ui-priority-secondary {
908
+ opacity: .7;
909
+ filter:Alpha(Opacity=70);
910
+ font-weight: normal;
911
+ }
912
+ .ui-state-disabled,
913
+ .ui-widget-content .ui-state-disabled,
914
+ .ui-widget-header .ui-state-disabled {
915
+ opacity: .35;
916
+ filter:Alpha(Opacity=35);
917
+ background-image: none;
918
+ }
919
+ .ui-state-disabled .ui-icon {
920
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
921
+ }
922
+
923
+ /* Icons
924
+ ----------------------------------*/
925
+
926
+ /* states and images */
927
+ .ui-icon {
928
+ width: 16px;
929
+ height: 16px;
930
+ }
931
+ .ui-icon,
932
+ .ui-widget-content .ui-icon {
933
+ background-image: url(images/ui-icons_469bdd_256x240.png);
934
+ }
935
+ .ui-widget-header .ui-icon {
936
+ background-image: url(images/ui-icons_d8e7f3_256x240.png);
937
+ }
938
+ .ui-state-default .ui-icon {
939
+ background-image: url(images/ui-icons_6da8d5_256x240.png);
940
+ }
941
+ .ui-state-hover .ui-icon,
942
+ .ui-state-focus .ui-icon {
943
+ background-image: url(images/ui-icons_217bc0_256x240.png);
944
+ }
945
+ .ui-state-active .ui-icon {
946
+ background-image: url(images/ui-icons_f9bd01_256x240.png);
947
+ }
948
+ .ui-state-highlight .ui-icon {
949
+ background-image: url(images/ui-icons_2e83ff_256x240.png);
950
+ }
951
+ .ui-state-error .ui-icon,
952
+ .ui-state-error-text .ui-icon {
953
+ background-image: url(images/ui-icons_cd0a0a_256x240.png);
954
+ }
955
+
956
+ /* positioning */
957
+ .ui-icon-blank { background-position: 16px 16px; }
958
+ .ui-icon-carat-1-n { background-position: 0 0; }
959
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
960
+ .ui-icon-carat-1-e { background-position: -32px 0; }
961
+ .ui-icon-carat-1-se { background-position: -48px 0; }
962
+ .ui-icon-carat-1-s { background-position: -64px 0; }
963
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
964
+ .ui-icon-carat-1-w { background-position: -96px 0; }
965
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
966
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
967
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
968
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
969
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
970
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
971
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
972
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
973
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
974
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
975
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
976
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
977
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
978
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
979
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
980
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
981
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
982
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
983
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
984
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
985
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
986
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
987
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
988
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
989
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
990
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
991
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
992
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
993
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
994
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
995
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
996
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
997
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
998
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
999
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1000
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1001
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1002
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1003
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1004
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1005
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1006
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1007
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1008
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1009
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1010
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1011
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1012
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1013
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1014
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1015
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1016
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1017
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1018
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1019
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1020
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1021
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1022
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
1023
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
1024
+ .ui-icon-extlink { background-position: -32px -80px; }
1025
+ .ui-icon-newwin { background-position: -48px -80px; }
1026
+ .ui-icon-refresh { background-position: -64px -80px; }
1027
+ .ui-icon-shuffle { background-position: -80px -80px; }
1028
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
1029
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
1030
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
1031
+ .ui-icon-folder-open { background-position: -16px -96px; }
1032
+ .ui-icon-document { background-position: -32px -96px; }
1033
+ .ui-icon-document-b { background-position: -48px -96px; }
1034
+ .ui-icon-note { background-position: -64px -96px; }
1035
+ .ui-icon-mail-closed { background-position: -80px -96px; }
1036
+ .ui-icon-mail-open { background-position: -96px -96px; }
1037
+ .ui-icon-suitcase { background-position: -112px -96px; }
1038
+ .ui-icon-comment { background-position: -128px -96px; }
1039
+ .ui-icon-person { background-position: -144px -96px; }
1040
+ .ui-icon-print { background-position: -160px -96px; }
1041
+ .ui-icon-trash { background-position: -176px -96px; }
1042
+ .ui-icon-locked { background-position: -192px -96px; }
1043
+ .ui-icon-unlocked { background-position: -208px -96px; }
1044
+ .ui-icon-bookmark { background-position: -224px -96px; }
1045
+ .ui-icon-tag { background-position: -240px -96px; }
1046
+ .ui-icon-home { background-position: 0 -112px; }
1047
+ .ui-icon-flag { background-position: -16px -112px; }
1048
+ .ui-icon-calendar { background-position: -32px -112px; }
1049
+ .ui-icon-cart { background-position: -48px -112px; }
1050
+ .ui-icon-pencil { background-position: -64px -112px; }
1051
+ .ui-icon-clock { background-position: -80px -112px; }
1052
+ .ui-icon-disk { background-position: -96px -112px; }
1053
+ .ui-icon-calculator { background-position: -112px -112px; }
1054
+ .ui-icon-zoomin { background-position: -128px -112px; }
1055
+ .ui-icon-zoomout { background-position: -144px -112px; }
1056
+ .ui-icon-search { background-position: -160px -112px; }
1057
+ .ui-icon-wrench { background-position: -176px -112px; }
1058
+ .ui-icon-gear { background-position: -192px -112px; }
1059
+ .ui-icon-heart { background-position: -208px -112px; }
1060
+ .ui-icon-star { background-position: -224px -112px; }
1061
+ .ui-icon-link { background-position: -240px -112px; }
1062
+ .ui-icon-cancel { background-position: 0 -128px; }
1063
+ .ui-icon-plus { background-position: -16px -128px; }
1064
+ .ui-icon-plusthick { background-position: -32px -128px; }
1065
+ .ui-icon-minus { background-position: -48px -128px; }
1066
+ .ui-icon-minusthick { background-position: -64px -128px; }
1067
+ .ui-icon-close { background-position: -80px -128px; }
1068
+ .ui-icon-closethick { background-position: -96px -128px; }
1069
+ .ui-icon-key { background-position: -112px -128px; }
1070
+ .ui-icon-lightbulb { background-position: -128px -128px; }
1071
+ .ui-icon-scissors { background-position: -144px -128px; }
1072
+ .ui-icon-clipboard { background-position: -160px -128px; }
1073
+ .ui-icon-copy { background-position: -176px -128px; }
1074
+ .ui-icon-contact { background-position: -192px -128px; }
1075
+ .ui-icon-image { background-position: -208px -128px; }
1076
+ .ui-icon-video { background-position: -224px -128px; }
1077
+ .ui-icon-script { background-position: -240px -128px; }
1078
+ .ui-icon-alert { background-position: 0 -144px; }
1079
+ .ui-icon-info { background-position: -16px -144px; }
1080
+ .ui-icon-notice { background-position: -32px -144px; }
1081
+ .ui-icon-help { background-position: -48px -144px; }
1082
+ .ui-icon-check { background-position: -64px -144px; }
1083
+ .ui-icon-bullet { background-position: -80px -144px; }
1084
+ .ui-icon-radio-on { background-position: -96px -144px; }
1085
+ .ui-icon-radio-off { background-position: -112px -144px; }
1086
+ .ui-icon-pin-w { background-position: -128px -144px; }
1087
+ .ui-icon-pin-s { background-position: -144px -144px; }
1088
+ .ui-icon-play { background-position: 0 -160px; }
1089
+ .ui-icon-pause { background-position: -16px -160px; }
1090
+ .ui-icon-seek-next { background-position: -32px -160px; }
1091
+ .ui-icon-seek-prev { background-position: -48px -160px; }
1092
+ .ui-icon-seek-end { background-position: -64px -160px; }
1093
+ .ui-icon-seek-start { background-position: -80px -160px; }
1094
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1095
+ .ui-icon-seek-first { background-position: -80px -160px; }
1096
+ .ui-icon-stop { background-position: -96px -160px; }
1097
+ .ui-icon-eject { background-position: -112px -160px; }
1098
+ .ui-icon-volume-off { background-position: -128px -160px; }
1099
+ .ui-icon-volume-on { background-position: -144px -160px; }
1100
+ .ui-icon-power { background-position: 0 -176px; }
1101
+ .ui-icon-signal-diag { background-position: -16px -176px; }
1102
+ .ui-icon-signal { background-position: -32px -176px; }
1103
+ .ui-icon-battery-0 { background-position: -48px -176px; }
1104
+ .ui-icon-battery-1 { background-position: -64px -176px; }
1105
+ .ui-icon-battery-2 { background-position: -80px -176px; }
1106
+ .ui-icon-battery-3 { background-position: -96px -176px; }
1107
+ .ui-icon-circle-plus { background-position: 0 -192px; }
1108
+ .ui-icon-circle-minus { background-position: -16px -192px; }
1109
+ .ui-icon-circle-close { background-position: -32px -192px; }
1110
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
1111
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
1112
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
1113
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
1114
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
1115
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
1116
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
1117
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
1118
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
1119
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
1120
+ .ui-icon-circle-check { background-position: -208px -192px; }
1121
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
1122
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
1123
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
1124
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
1125
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
1126
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
1127
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1128
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1129
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1130
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1131
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1132
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1133
+
1134
+
1135
+ /* Misc visuals
1136
+ ----------------------------------*/
1137
+
1138
+ /* Corner radius */
1139
+ .ui-corner-all,
1140
+ .ui-corner-top,
1141
+ .ui-corner-left,
1142
+ .ui-corner-tl {
1143
+ border-top-left-radius: 5px;
1144
+ }
1145
+ .ui-corner-all,
1146
+ .ui-corner-top,
1147
+ .ui-corner-right,
1148
+ .ui-corner-tr {
1149
+ border-top-right-radius: 5px;
1150
+ }
1151
+ .ui-corner-all,
1152
+ .ui-corner-bottom,
1153
+ .ui-corner-left,
1154
+ .ui-corner-bl {
1155
+ border-bottom-left-radius: 5px;
1156
+ }
1157
+ .ui-corner-all,
1158
+ .ui-corner-bottom,
1159
+ .ui-corner-right,
1160
+ .ui-corner-br {
1161
+ border-bottom-right-radius: 5px;
1162
+ }
1163
+
1164
+ /* Overlays */
1165
+ .ui-widget-overlay {
1166
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1167
+ opacity: .3;
1168
+ filter: Alpha(Opacity=30);
1169
+ }
1170
+ .ui-widget-shadow {
1171
+ margin: -8px 0 0 -8px;
1172
+ padding: 8px;
1173
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1174
+ opacity: .3;
1175
+ filter: Alpha(Opacity=30);
1176
+ border-radius: 8px;
1177
+ }
index.php CHANGED
@@ -1,4 +1,4 @@
1
  <?php
2
 
3
- die("Error: Unauthorized Access");
4
  ?>
1
  <?php
2
 
3
+ die("Error: Unauthorized Access.");
4
  ?>
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.2.1
6
  * Author: QSM Team
7
  * Author URI: https://www.quizandsurveymaster.com/
8
  * Plugin URI: https://www.quizandsurveymaster.com/
9
  * Text Domain: quiz-master-next
10
  *
11
  * @author QSM Team
12
- * @version 6.2.1
13
  * @package QSM
14
  */
15
 
@@ -34,7 +34,7 @@ class MLWQuizMasterNext {
34
  * @var string
35
  * @since 4.0.0
36
  */
37
- public $version = '6.2.1';
38
 
39
  /**
40
  * 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: 6.2.2
6
  * Author: QSM Team
7
  * Author URI: https://www.quizandsurveymaster.com/
8
  * Plugin URI: https://www.quizandsurveymaster.com/
9
  * Text Domain: quiz-master-next
10
  *
11
  * @author QSM Team
12
+ * @version 6.2.2
13
  * @package QSM
14
  */
15
 
34
  * @var string
35
  * @since 4.0.0
36
  */
37
+ public $version = '6.2.2';
38
 
39
  /**
40
  * QSM Alert Manager Object
php/admin/admin-results-page.php CHANGED
@@ -1,49 +1,54 @@
1
  <?php
2
- if ( ! defined( 'ABSPATH' ) ) exit;
 
 
3
 
4
  /**
5
- * This function generates the admin side quiz results page
6
- *
7
- * @return void
8
- * @since 4.4.0
9
- */
10
  function qsm_generate_admin_results_page() {
11
 
12
- // Makes sure user has the right privledges
13
- if ( ! current_user_can('moderate_comments') ) {
14
  return;
15
  }
16
 
17
- // Retrieves the current stab and all registered tabs
18
  global $mlwQuizMasterNext;
19
- $active_tab = strtolower(str_replace( " ", "-", isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : __( 'Quiz Results', 'quiz-master-next' )));
20
- $tab_array = $mlwQuizMasterNext->pluginHelper->get_admin_results_tabs();
21
 
22
  ?>
23
  <div class="wrap">
24
- <h2><?php _e('Quiz Results', 'quiz-master-next'); ?></h2>
25
  <?php $mlwQuizMasterNext->alertManager->showAlerts(); ?>
26
  <?php qsm_show_adverts(); ?>
27
  <h2 class="nav-tab-wrapper">
28
  <?php
29
- // Cycles through the tabs and creates the navigation
30
- foreach( $tab_array as $tab ) {
31
  $active_class = '';
32
  if ( $active_tab == $tab['slug'] ) {
33
  $active_class = 'nav-tab-active';
34
  }
35
- echo "<a href=\"?page=mlw_quiz_results&tab={$tab['slug']}\" class=\"nav-tab $active_class\">{$tab['title']}</a>";
 
 
 
36
  }
37
  ?>
38
  </h2>
39
  <div>
40
  <?php
41
- // Locates the active tab and calls its content function
42
- foreach( $tab_array as $tab ) {
43
- if ( $active_tab == $tab['slug'] ) {
44
- call_user_func( $tab['function'] );
45
- }
46
  }
 
47
  ?>
48
  </div>
49
  </div>
@@ -60,7 +65,7 @@ function qsm_generate_admin_results_page() {
60
  */
61
  function qsm_results_overview_tab() {
62
  global $mlwQuizMasterNext;
63
- $mlwQuizMasterNext->pluginHelper->register_admin_results_tab( __( "Quiz Results", 'quiz-master-next' ), "qsm_results_overview_tab_content" );
64
  }
65
  add_action( 'plugins_loaded', 'qsm_results_overview_tab' );
66
 
@@ -75,22 +80,22 @@ function qsm_results_overview_tab_content() {
75
  global $wpdb;
76
  global $mlwQuizMasterNext;
77
 
78
- // If nonce is correct, delete results
79
- if ( isset( $_POST["delete_results_nonce"] ) && wp_verify_nonce( $_POST['delete_results_nonce'], 'delete_results') ) {
80
 
81
- // Variables from delete result form
82
- $mlw_delete_results_id = intval( $_POST["result_id"] );
83
- $mlw_delete_results_name = sanitize_text_field( $_POST["delete_quiz_name"] );
84
 
85
- // Update table to mark results as deleted
86
  $results = $wpdb->update(
87
- $wpdb->prefix . "mlw_results",
88
  array(
89
- 'deleted' => 1
90
  ),
91
  array( 'result_id' => $mlw_delete_results_id ),
92
  array(
93
- '%d'
94
  ),
95
  array( '%d' )
96
  );
@@ -103,7 +108,7 @@ function qsm_results_overview_tab_content() {
103
  $mlwQuizMasterNext->alertManager->newAlert( sprintf( __( 'There was an error when deleting this result. Error from WordPress: %s', 'quiz-master-next' ), $error ), 'error' );
104
  $mlwQuizMasterNext->log_manager->add( 'Error deleting result', "Tried {$wpdb->last_query} but got $error.", 0, 'error' );
105
  } else {
106
- $mlwQuizMasterNext->alertManager->newAlert( __('Your results has been deleted successfully.','quiz-master-next'), 'success');
107
  $mlwQuizMasterNext->audit_manager->new_audit( "Results Has Been Deleted From: $mlw_delete_results_name" );
108
 
109
  }
@@ -137,51 +142,58 @@ function qsm_results_overview_tab_content() {
137
  }
138
  }
139
 
140
- // Prepares the SQL to retrieve the results
141
- $mlw_qmn_table_limit = 40;
142
- $search_phrase_sql = '';
143
- $order_by_sql = 'ORDER BY result_id DESC';
144
- if ( isset( $_GET["qmn_search_phrase"] ) && !empty( $_GET["qmn_search_phrase"] ) ) {
145
- $search_phrase = $_GET["qmn_search_phrase"];
146
- $mlw_qmn_results_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(result_id) FROM {$wpdb->prefix}mlw_results WHERE deleted='0' AND (quiz_name LIKE %s OR name LIKE %s OR business LIKE %s OR email LIKE %s OR phone LIKE %s)", '%' . $wpdb->esc_like($search_phrase) . '%', '%' . $wpdb->esc_like($search_phrase) . '%', '%' . $wpdb->esc_like($search_phrase) . '%', '%' . $wpdb->esc_like($search_phrase) . '%', '%' . $wpdb->esc_like($search_phrase) . '%' ) );
147
- $search_phrase_sql = " AND (quiz_name LIKE '%$search_phrase%' OR name LIKE '%$search_phrase%' OR business LIKE '%$search_phrase%' OR email LIKE '%$search_phrase%' OR phone LIKE '%$search_phrase%')";
 
 
148
  } else {
149
- $mlw_qmn_results_count = $wpdb->get_var( "SELECT COUNT(result_id) FROM " . $wpdb->prefix . "mlw_results WHERE deleted='0'" );
150
- }
151
- if ( isset( $_GET["qmn_order_by"] ) ) {
152
- switch ( $_GET["qmn_order_by"] )
153
- {
154
- case 'quiz_name':
155
- $order_by_sql = " ORDER BY quiz_name DESC";
156
- break;
157
- case 'name':
158
- $order_by_sql = " ORDER BY name DESC";
159
- break;
160
- case 'point_score':
161
- $order_by_sql = " ORDER BY point_score DESC";
162
- break;
163
- case 'correct_score':
164
- $order_by_sql = " ORDER BY correct_score DESC";
165
- break;
166
- default:
167
- $order_by_sql = " ORDER BY result_id DESC";
168
- }
169
  }
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
 
172
- if( isset( $_GET['mlw_result_page'] ) ) {
173
- $mlw_qmn_result_page = intval( $_GET['mlw_result_page'] ) + 1;
174
- $mlw_qmn_result_begin = $mlw_qmn_table_limit * $mlw_qmn_result_page ;
175
  } else {
176
- $mlw_qmn_result_page = 0;
177
- $mlw_qmn_result_begin = 0;
178
  }
179
- $mlw_qmn_result_left = $mlw_qmn_results_count - ($mlw_qmn_result_page * $mlw_qmn_table_limit);
180
- if ( isset( $_GET["quiz_id"] ) && $_GET["quiz_id"] != "" ) {
181
- $quiz_id = intval( $_GET["quiz_id"] );
182
- $mlw_quiz_data = $wpdb->get_results( "SELECT * FROM " . $wpdb->prefix . "mlw_results WHERE deleted='0' AND quiz_id=$quiz_id $search_phrase_sql $order_by_sql LIMIT $mlw_qmn_result_begin, $mlw_qmn_table_limit" );
183
  } else {
184
- $mlw_quiz_data = $wpdb->get_results( "SELECT * FROM " . $wpdb->prefix . "mlw_results WHERE deleted='0'$search_phrase_sql $order_by_sql LIMIT $mlw_qmn_result_begin, $mlw_qmn_table_limit" );
185
  }
186
 
187
  wp_enqueue_script( 'jquery' );
@@ -189,7 +201,7 @@ function qsm_results_overview_tab_content() {
189
  wp_enqueue_script( 'jquery-ui-dialog' );
190
  wp_enqueue_script( 'jquery-ui-button' );
191
  wp_enqueue_script( 'qmn_admin_js', plugins_url( '../../js/admin.js', __FILE__ ) );
192
- wp_enqueue_style( 'qmn_jquery_redmond_theme', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css' );
193
  ?>
194
  <script type="text/javascript">
195
  var $j = jQuery.noConflict();
@@ -214,55 +226,51 @@ function qsm_results_overview_tab_content() {
214
  <a href="javascript: document.bulk_delete_form.submit();" class="button action">Bulk Delete</a>
215
  </div>
216
  <div class="tablenav-pages">
217
- <span class="displaying-num"><?php echo sprintf(_n('One result', '%s results', $mlw_qmn_results_count, 'quiz-master-next'), number_format_i18n($mlw_qmn_results_count)); ?></span>
218
  <span class="pagination-links">
219
  <?php
220
  $mlw_qmn_previous_page = 0;
221
- $mlw_current_page = $mlw_qmn_result_page+1;
222
- $mlw_total_pages = ceil($mlw_qmn_results_count/$mlw_qmn_table_limit);
223
 
224
  $url_query_string = '';
225
- if ( isset( $_GET["quiz_id"] ) && $_GET["quiz_id"] != "" ) {
226
- $url_query_string .= '&&quiz_id='.intval( $_GET["quiz_id"] );
227
  }
228
 
229
- if ( isset( $_GET["qmn_search_phrase"] ) && !empty( $_GET["qmn_search_phrase"] ) ) {
230
- $url_query_string .= '&&qmn_search_phrase='.$_GET["qmn_search_phrase"];
231
  }
232
 
233
- if ( isset( $_GET["qmn_order_by"] ) && !empty( $_GET["qmn_order_by"] ) ) {
234
- $url_query_string .= '&&qmn_order_by='.$_GET["qmn_order_by"];
235
  }
236
 
237
- if( $mlw_qmn_result_page > 0 )
238
- {
239
- $mlw_qmn_previous_page = $mlw_qmn_result_page - 2;
240
- echo "<a class=\"prev-page\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_previous_page$url_query_string\"><</a>";
241
- echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
242
- if( $mlw_qmn_result_left > $mlw_qmn_table_limit )
243
- {
244
- echo "<a class=\"next-page\" title=\"Go to the next page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_result_page$url_query_string\">></a>";
245
- }
246
- else
247
- {
248
- echo "<a class=\"next-page disabled\" title=\"Go to the next page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_result_page$url_query_string\">></a>";
249
  }
250
- }
251
- else if( $mlw_qmn_result_page == 0 )
252
- {
253
- if( $mlw_qmn_result_left > $mlw_qmn_table_limit )
254
- {
255
- echo "<a class=\"prev-page disabled\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_previous_page$url_query_string\"><</a>";
256
- echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
257
- echo "<a class=\"next-page\" title=\"Go to the next page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_result_page$url_query_string\">></a>";
258
  }
259
- }
260
- else if( $mlw_qmn_result_left < $mlw_qmn_table_limit )
261
- {
262
- $mlw_qmn_previous_page = $mlw_qmn_result_page - 2;
263
- echo "<a class=\"prev-page\" title=\"Go to the previous page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_previous_page$url_query_string\"><</a>";
264
- echo "<span class=\"paging-input\">$mlw_current_page of $mlw_total_pages</span>";
265
- echo "<a class=\"next-page disabled\" title=\"Go to the next page\" href=\"?page=mlw_quiz_results&&mlw_result_page=$mlw_qmn_result_page$url_query_string\">></a>";
266
  }
267
  ?>
268
  </span>
@@ -271,66 +279,66 @@ function qsm_results_overview_tab_content() {
271
  </div>
272
  <form action='' method="get">
273
  <?php
274
- if ( isset( $_GET["quiz_id"] ) ) {
275
  ?>
276
- <input type="hidden" name="quiz_id" value="<?php echo $_GET["quiz_id"]; ?>" />
277
  <?php
278
  }
279
  ?>
280
  <input type="hidden" name="page" value="mlw_quiz_results">
281
  <p class="search-box">
282
- <label for="qmn_search_phrase"><?php _e( 'Search Results', 'quiz-master-next' ); ?></label>
283
- <input type="search" id="qmn_search_phrase" name="qmn_search_phrase" value="">
284
- <label for="qmn_order_by"><?php _e( 'Order By', 'quiz-master-next' ); ?></label>
285
  <select id="qmn_order_by" name="qmn_order_by">
286
- <option value="quiz_name"><?php _e( 'Quiz Name', 'quiz-master-next' ); ?></option>
287
- <option value="name"><?php _e( 'User Name', 'quiz-master-next' ); ?></option>
288
- <option value="point_score"><?php _e( 'Points', 'quiz-master-next' ); ?></option>
289
- <option value="correct_score"><?php _e( 'Correct Percent', 'quiz-master-next' ); ?></option>
290
- <option value="default"><?php _e( 'Default (Time)', 'quiz-master-next' ); ?></option>
291
  </select>
292
- <button class="button"><?php _e( 'Search Results', 'quiz-master-next' ); ?></button>
293
  </p>
294
  </form>
295
  <form action="" method="post" name="bulk_delete_form">
296
  <input type="hidden" name="bulk_delete" value="confirmation" />
297
- <?php wp_nonce_field('bulk_delete','bulk_delete_nonce'); ?>
298
  <table class=widefat>
299
  <thead>
300
  <tr>
301
  <th><input type="checkbox" id="qmn_check_all" /></th>
302
- <th><?php _e('Actions','quiz-master-next'); ?></th>
303
- <th><?php _e('Quiz Name','quiz-master-next'); ?></th>
304
- <th><?php _e('Score','quiz-master-next'); ?></th>
305
- <th><?php _e('Time To Complete','quiz-master-next'); ?></th>
306
- <th><?php _e('Name','quiz-master-next'); ?></th>
307
- <th><?php _e('Business','quiz-master-next'); ?></th>
308
- <th><?php _e('Email','quiz-master-next'); ?></th>
309
- <th><?php _e('Phone','quiz-master-next'); ?></th>
310
- <th><?php _e('User','quiz-master-next'); ?></th>
311
- <th><?php _e('Time Taken','quiz-master-next'); ?></th>
312
- <th><?php _e('IP Address','quiz-master-next'); ?></th>
313
  </tr>
314
  </thead>
315
  <?php
316
  $quotes_list = "";
317
  $display = "";
318
  $alternate = "";
319
- foreach($mlw_quiz_data as $mlw_quiz_info) {
320
- if($alternate) $alternate = "";
321
- else $alternate = " class=\"alternate\"";
 
 
 
322
  $mlw_complete_time = '';
323
  $mlw_qmn_results_array = @unserialize($mlw_quiz_info->quiz_results);
324
- if (is_array($mlw_qmn_results_array))
325
- {
326
  $mlw_complete_hours = floor($mlw_qmn_results_array[0] / 3600);
327
- if ($mlw_complete_hours > 0)
328
- {
329
  $mlw_complete_time .= "$mlw_complete_hours hours ";
330
  }
331
  $mlw_complete_minutes = floor(($mlw_qmn_results_array[0] % 3600) / 60);
332
- if ($mlw_complete_minutes > 0)
333
- {
334
  $mlw_complete_time .= "$mlw_complete_minutes minutes ";
335
  }
336
  $mlw_complete_seconds = $mlw_qmn_results_array[0] % 60;
@@ -341,17 +349,14 @@ function qsm_results_overview_tab_content() {
341
  $quotes_list .= "<td><input type='checkbox' class='qmn_delete_checkbox' name='delete_results[]' value='".$mlw_quiz_info->result_id. "' /></td>";
342
  $quotes_list .= "<td><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 onclick=\"deleteResults('".$mlw_quiz_info->result_id."','".esc_js($mlw_quiz_info->quiz_name)."')\" href='#'>Delete</a></span></td>";
343
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->quiz_name . "</span></td>";
344
- if ($mlw_quiz_info->quiz_system == 0)
345
- {
346
  $quotes_list .= "<td class='post-title column-title'><span style='font-size:16px;'>" . $mlw_quiz_info->correct ." out of ".$mlw_quiz_info->total." or ".$mlw_quiz_info->correct_score."%</span></td>";
347
  }
348
- if ($mlw_quiz_info->quiz_system == 1)
349
- {
350
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->point_score . " Points</span></td>";
351
  }
352
- if ($mlw_quiz_info->quiz_system == 2)
353
- {
354
- $quotes_list .= "<td><span style='font-size:16px;'>".__('Not Graded','quiz-master-next')."</span></td>";
355
  }
356
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_complete_time ."</span></td>";
357
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->name ."</span></td>";
@@ -376,12 +381,12 @@ function qsm_results_overview_tab_content() {
376
  </form>
377
 
378
  <div id="delete_dialog" title="Delete Results?" style="display:none;">
379
- <h3><b><?php _e('Are you sure you want to delete these results?','quiz-master-next'); ?></b></h3>
380
  <form action='' method='post'>
381
  <?php wp_nonce_field( 'delete_results','delete_results_nonce' ); ?>
382
  <input type='hidden' id='result_id' name='result_id' value='' />
383
  <input type='hidden' id='delete_quiz_name' name='delete_quiz_name' value='' />
384
- <p class='submit'><input type='submit' class='button-primary' value='<?php _e('Delete Results','quiz-master-next'); ?>' /></p>
385
  </form>
386
  </div>
387
  <?php
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
 
6
  /**
7
+ * This function generates the admin side quiz results page
8
+ *
9
+ * @return void
10
+ * @since 4.4.0
11
+ */
12
  function qsm_generate_admin_results_page() {
13
 
14
+ // Makes sure user has the right privledges.
15
+ if ( ! current_user_can( 'moderate_comments' ) ) {
16
  return;
17
  }
18
 
19
+ // Retrieves the current stab and all registered tabs.
20
  global $mlwQuizMasterNext;
21
+ $active_tab = strtolower( str_replace( ' ', '-', isset( $_GET['tab'] ) ? $_GET['tab'] : __( 'Quiz Results', 'quiz-master-next' ) ) );
22
+ $tab_array = $mlwQuizMasterNext->pluginHelper->get_admin_results_tabs();
23
 
24
  ?>
25
  <div class="wrap">
26
+ <h2><?php esc_html_e( 'Quiz Results', 'quiz-master-next' ); ?></h2>
27
  <?php $mlwQuizMasterNext->alertManager->showAlerts(); ?>
28
  <?php qsm_show_adverts(); ?>
29
  <h2 class="nav-tab-wrapper">
30
  <?php
31
+ // Cycles through the tabs and creates the navigation.
32
+ foreach ( $tab_array as $tab ) {
33
  $active_class = '';
34
  if ( $active_tab == $tab['slug'] ) {
35
  $active_class = 'nav-tab-active';
36
  }
37
+ $tab_url = "?page=mlw_quiz_results&tab={$tab['slug']}";
38
+ ?>
39
+ <a href="<?php echo esc_url_raw( $tab_url ); ?>" class="nav-tab <?php echo esc_attr( $active_class ); ?>"><?php echo esc_html( $tab['title'] ); ?></a>
40
+ <?php
41
  }
42
  ?>
43
  </h2>
44
  <div>
45
  <?php
46
+ // Locates the active tab and calls its content function.
47
+ foreach ( $tab_array as $tab ) {
48
+ if ( $active_tab == $tab['slug'] ) {
49
+ call_user_func( $tab['function'] );
 
50
  }
51
+ }
52
  ?>
53
  </div>
54
  </div>
65
  */
66
  function qsm_results_overview_tab() {
67
  global $mlwQuizMasterNext;
68
+ $mlwQuizMasterNext->pluginHelper->register_admin_results_tab( __( 'Quiz Results', 'quiz-master-next' ), 'qsm_results_overview_tab_content' );
69
  }
70
  add_action( 'plugins_loaded', 'qsm_results_overview_tab' );
71
 
80
  global $wpdb;
81
  global $mlwQuizMasterNext;
82
 
83
+ // If nonce is correct, delete results.
84
+ if ( isset( $_POST['delete_results_nonce'] ) && wp_verify_nonce( $_POST['delete_results_nonce'], 'delete_results') ) {
85
 
86
+ // Variables from delete result form.
87
+ $mlw_delete_results_id = intval( $_POST['result_id'] );
88
+ $mlw_delete_results_name = sanitize_text_field( $_POST['delete_quiz_name'] );
89
 
90
+ // Updates table to mark results as deleted.
91
  $results = $wpdb->update(
92
+ $wpdb->prefix . 'mlw_results',
93
  array(
94
+ 'deleted' => 1,
95
  ),
96
  array( 'result_id' => $mlw_delete_results_id ),
97
  array(
98
+ '%d',
99
  ),
100
  array( '%d' )
101
  );
108
  $mlwQuizMasterNext->alertManager->newAlert( sprintf( __( 'There was an error when deleting this result. Error from WordPress: %s', 'quiz-master-next' ), $error ), 'error' );
109
  $mlwQuizMasterNext->log_manager->add( 'Error deleting result', "Tried {$wpdb->last_query} but got $error.", 0, 'error' );
110
  } else {
111
+ $mlwQuizMasterNext->alertManager->newAlert( __('Your results has been deleted successfully.','quiz-master-next' ), 'success');
112
  $mlwQuizMasterNext->audit_manager->new_audit( "Results Has Been Deleted From: $mlw_delete_results_name" );
113
 
114
  }
142
  }
143
  }
144
 
145
+ // Prepares the SQL to retrieve the results.
146
+ $table_limit = 40;
147
+ $search_phrase_sql = '';
148
+ $order_by_sql = 'ORDER BY result_id DESC';
149
+ if ( isset( $_GET['qsm_search_phrase'] ) && ! empty( $_GET['qsm_search_phrase'] ) ) {
150
+ // Sanitizes the search phrase and then uses $wpdb->prepare to properly escape the queries after using $wpdb->esc_like.
151
+ $sanitized_search_phrase = sanitize_text_field( $_GET['qsm_search_phrase'] );
152
+ $search_phrase_percents = '%' . $wpdb->esc_like( $sanitized_search_phrase ) . '%';
153
+ $search_phrase_sql = $wpdb->prepare( ' AND (quiz_name LIKE %s OR name LIKE %s OR business LIKE %s OR email LIKE %s OR phone LIKE %s)', $search_phrase_percents, $search_phrase_percents, $search_phrase_percents, $search_phrase_percents, $search_phrase_percents );
154
+ $qsm_results_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(result_id) FROM {$wpdb->prefix}mlw_results WHERE deleted='0' AND (quiz_name LIKE %s OR name LIKE %s OR business LIKE %s OR email LIKE %s OR phone LIKE %s)", $search_phrase_percents, $search_phrase_percents, $search_phrase_percents, $search_phrase_percents, $search_phrase_percents ) );
155
  } else {
156
+ $qsm_results_count = $wpdb->get_var( "SELECT COUNT(result_id) FROM {$wpdb->prefix}mlw_results WHERE deleted = '0'" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  }
158
 
159
+ // Gets the order by arg. Uses switch to create SQL to prevent SQL injection.
160
+ if ( isset( $_GET['qmn_order_by'] ) ) {
161
+ switch ( $_GET['qmn_order_by'] ) {
162
+ case 'quiz_name':
163
+ $order_by = 'quiz_name';
164
+ $order_by_sql = ' ORDER BY quiz_name DESC';
165
+ break;
166
+ case 'name':
167
+ $order_by = 'name';
168
+ $order_by_sql = ' ORDER BY name DESC';
169
+ break;
170
+ case 'point_score':
171
+ $order_by = 'point_score';
172
+ $order_by_sql = ' ORDER BY point_score DESC';
173
+ break;
174
+ case 'correct_score':
175
+ $order_by = 'correct_score';
176
+ $order_by_sql = ' ORDER BY correct_score DESC';
177
+ break;
178
+ default:
179
+ $order_by = 'quiz_name';
180
+ $order_by_sql = ' ORDER BY result_id DESC';
181
+ }
182
+ }
183
 
184
+ if ( isset( $_GET['qsm_results_page'] ) ) {
185
+ $result_page = intval( $_GET['qsm_results_page'] ) + 1;
186
+ $result_begin = $table_limit * $result_page;
187
  } else {
188
+ $result_page = 0;
189
+ $result_begin = 0;
190
  }
191
+ $results_left = $qsm_results_count - ( $result_page * $table_limit );
192
+ if ( isset( $_GET['quiz_id'] ) && ! empty( $_GET['quiz_id'] ) ) {
193
+ $quiz_id = intval( $_GET['quiz_id'] );
194
+ $mlw_quiz_data = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}mlw_results WHERE deleted='0' AND quiz_id = %d $search_phrase_sql $order_by_sql LIMIT %d, %d", $quiz_id, $result_begin, $table_limit ) );
195
  } else {
196
+ $mlw_quiz_data = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}mlw_results WHERE deleted = '0' $search_phrase_sql $order_by_sql LIMIT %d, %d", $result_begin, $table_limit ) );
197
  }
198
 
199
  wp_enqueue_script( 'jquery' );
201
  wp_enqueue_script( 'jquery-ui-dialog' );
202
  wp_enqueue_script( 'jquery-ui-button' );
203
  wp_enqueue_script( 'qmn_admin_js', plugins_url( '../../js/admin.js', __FILE__ ) );
204
+ wp_enqueue_style( 'qmn_jquery_redmond_theme', plugins_url( '../../css/jquery-ui.css', __FILE__ ) );
205
  ?>
206
  <script type="text/javascript">
207
  var $j = jQuery.noConflict();
226
  <a href="javascript: document.bulk_delete_form.submit();" class="button action">Bulk Delete</a>
227
  </div>
228
  <div class="tablenav-pages">
229
+ <span class="displaying-num"><?php echo sprintf(_n('One result', '%s results', $qsm_results_count, 'quiz-master-next' ), number_format_i18n($qsm_results_count)); ?></span>
230
  <span class="pagination-links">
231
  <?php
232
  $mlw_qmn_previous_page = 0;
233
+ $mlw_current_page = $result_page+1;
234
+ $mlw_total_pages = ceil( $qsm_results_count / $table_limit );
235
 
236
  $url_query_string = '';
237
+ if ( isset( $_GET['quiz_id'] ) && ! empty( $_GET['quiz_id'] ) ) {
238
+ $url_query_string .= '&&quiz_id=' . intval( $_GET['quiz_id'] );
239
  }
240
 
241
+ if ( isset( $_GET['qsm_search_phrase'] ) && ! empty( $_GET['qsm_search_phrase'] ) ) {
242
+ $url_query_string .= "&&qsm_search_phrase=$sanitized_search_phrase";
243
  }
244
 
245
+ if ( isset( $_GET['qmn_order_by'] ) && !empty( $_GET['qmn_order_by'] ) ) {
246
+ $url_query_string .= "&&qmn_order_by=$order_by";
247
  }
248
 
249
+ if ( $result_page > 0 ) {
250
+ $mlw_qmn_previous_page = $result_page - 2;
251
+ ?>
252
+ <a class="prev-page button" href="<?php echo esc_url_raw( "?page=mlw_quiz_results&&qsm_results_page=$mlw_qmn_previous_page$url_query_string" ); ?>"><</a>
253
+ <span class="paging-input"><?php echo esc_html( $mlw_current_page ); ?> of <?php echo esc_html( $mlw_total_pages ); ?></span>
254
+ <?php
255
+ if ( $results_left > $table_limit ) {
256
+ ?>
257
+ <a class="next-page button" href="<?php echo esc_url_raw( "?page=mlw_quiz_results&&qsm_results_page=$result_page$url_query_string" ); ?>">></a>
258
+ <?php
 
 
259
  }
260
+ } elseif ( 0 == $result_page ) {
261
+ if ( $results_left > $table_limit ) {
262
+ ?>
263
+ <span class="paging-input"><?php echo esc_html( $mlw_current_page ); ?> of <?php echo esc_html( $mlw_total_pages ); ?></span>
264
+ <a class="next-page button" href="<?php echo esc_url_raw( "?page=mlw_quiz_results&&qsm_results_page=$result_page$url_query_string" ); ?>">></a>
265
+ <?php
 
 
266
  }
267
+ } elseif ( $results_left < $table_limit ) {
268
+ $mlw_qmn_previous_page = $result_page - 2;
269
+ ?>
270
+ <a class="prev-page button" href="<?php echo esc_url_raw( "?page=mlw_quiz_results&&qsm_results_page=$mlw_qmn_previous_page$url_query_string" ); ?>"><</a>
271
+ <span class="paging-input"><?php echo esc_html( $mlw_current_page ); ?> of <?php echo esc_html( $mlw_total_pages ); ?></span>
272
+ <a class="next-page button" href="<?php echo esc_url_raw( "?page=mlw_quiz_results&&qsm_results_page=$result_page$url_query_string" ); ?>">></a>
273
+ <?php
274
  }
275
  ?>
276
  </span>
279
  </div>
280
  <form action='' method="get">
281
  <?php
282
+ if ( isset( $_GET['quiz_id'] ) ) {
283
  ?>
284
+ <input type="hidden" name="quiz_id" value="<?php echo esc_attr( intval( $_GET['quiz_id'] ) ); ?>" />
285
  <?php
286
  }
287
  ?>
288
  <input type="hidden" name="page" value="mlw_quiz_results">
289
  <p class="search-box">
290
+ <label for="qsm_search_phrase"><?php esc_html_e( 'Search Results', 'quiz-master-next' ); ?></label>
291
+ <input type="search" id="qsm_search_phrase" name="qsm_search_phrase" value="">
292
+ <label for="qmn_order_by"><?php esc_html_e( 'Order By', 'quiz-master-next' ); ?></label>
293
  <select id="qmn_order_by" name="qmn_order_by">
294
+ <option value="quiz_name"><?php esc_html_e( 'Quiz Name', 'quiz-master-next' ); ?></option>
295
+ <option value="name"><?php esc_html_e( 'User Name', 'quiz-master-next' ); ?></option>
296
+ <option value="point_score"><?php esc_html_e( 'Points', 'quiz-master-next' ); ?></option>
297
+ <option value="correct_score"><?php esc_html_e( 'Correct Percent', 'quiz-master-next' ); ?></option>
298
+ <option value="default"><?php esc_html_e( 'Default (Time)', 'quiz-master-next' ); ?></option>
299
  </select>
300
+ <button class="button"><?php esc_html_e( 'Search Results', 'quiz-master-next' ); ?></button>
301
  </p>
302
  </form>
303
  <form action="" method="post" name="bulk_delete_form">
304
  <input type="hidden" name="bulk_delete" value="confirmation" />
305
+ <?php wp_nonce_field( 'bulk_delete','bulk_delete_nonce' ); ?>
306
  <table class=widefat>
307
  <thead>
308
  <tr>
309
  <th><input type="checkbox" id="qmn_check_all" /></th>
310
+ <th><?php esc_html_e( 'Actions','quiz-master-next' ); ?></th>
311
+ <th><?php esc_html_e( 'Quiz Name','quiz-master-next' ); ?></th>
312
+ <th><?php esc_html_e( 'Score','quiz-master-next' ); ?></th>
313
+ <th><?php esc_html_e( 'Time To Complete','quiz-master-next' ); ?></th>
314
+ <th><?php esc_html_e( 'Name','quiz-master-next' ); ?></th>
315
+ <th><?php esc_html_e( 'Business','quiz-master-next' ); ?></th>
316
+ <th><?php esc_html_e( 'Email','quiz-master-next' ); ?></th>
317
+ <th><?php esc_html_e( 'Phone','quiz-master-next' ); ?></th>
318
+ <th><?php esc_html_e( 'User','quiz-master-next' ); ?></th>
319
+ <th><?php esc_html_e( 'Time Taken','quiz-master-next' ); ?></th>
320
+ <th><?php esc_html_e( 'IP Address','quiz-master-next' ); ?></th>
321
  </tr>
322
  </thead>
323
  <?php
324
  $quotes_list = "";
325
  $display = "";
326
  $alternate = "";
327
+ foreach ( $mlw_quiz_data as $mlw_quiz_info ) {
328
+ if ( $alternate ) {
329
+ $alternate = '';
330
+ } else {
331
+ $alternate = ' class="alternate"';
332
+ }
333
  $mlw_complete_time = '';
334
  $mlw_qmn_results_array = @unserialize($mlw_quiz_info->quiz_results);
335
+ if ( is_array( $mlw_qmn_results_array ) ) {
 
336
  $mlw_complete_hours = floor($mlw_qmn_results_array[0] / 3600);
337
+ if ( $mlw_complete_hours > 0 ) {
 
338
  $mlw_complete_time .= "$mlw_complete_hours hours ";
339
  }
340
  $mlw_complete_minutes = floor(($mlw_qmn_results_array[0] % 3600) / 60);
341
+ if ( $mlw_complete_minutes > 0 ) {
 
342
  $mlw_complete_time .= "$mlw_complete_minutes minutes ";
343
  }
344
  $mlw_complete_seconds = $mlw_qmn_results_array[0] % 60;
349
  $quotes_list .= "<td><input type='checkbox' class='qmn_delete_checkbox' name='delete_results[]' value='".$mlw_quiz_info->result_id. "' /></td>";
350
  $quotes_list .= "<td><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 onclick=\"deleteResults('".$mlw_quiz_info->result_id."','".esc_js($mlw_quiz_info->quiz_name)."')\" href='#'>Delete</a></span></td>";
351
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->quiz_name . "</span></td>";
352
+ if ( $mlw_quiz_info->quiz_system == 0 ) {
 
353
  $quotes_list .= "<td class='post-title column-title'><span style='font-size:16px;'>" . $mlw_quiz_info->correct ." out of ".$mlw_quiz_info->total." or ".$mlw_quiz_info->correct_score."%</span></td>";
354
  }
355
+ if ( $mlw_quiz_info->quiz_system == 1 ) {
 
356
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->point_score . " Points</span></td>";
357
  }
358
+ if ( $mlw_quiz_info->quiz_system == 2 ) {
359
+ $quotes_list .= "<td><span style='font-size:16px;'>".__('Not Graded','quiz-master-next' )."</span></td>";
 
360
  }
361
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_complete_time ."</span></td>";
362
  $quotes_list .= "<td><span style='font-size:16px;'>" . $mlw_quiz_info->name ."</span></td>";
381
  </form>
382
 
383
  <div id="delete_dialog" title="Delete Results?" style="display:none;">
384
+ <h3><b><?php esc_html_e( 'Are you sure you want to delete these results?','quiz-master-next' ); ?></b></h3>
385
  <form action='' method='post'>
386
  <?php wp_nonce_field( 'delete_results','delete_results_nonce' ); ?>
387
  <input type='hidden' id='result_id' name='result_id' value='' />
388
  <input type='hidden' id='delete_quiz_name' name='delete_quiz_name' value='' />
389
+ <p class='submit'><input type='submit' class='button-primary' value='<?php esc_html_e( 'Delete Results','quiz-master-next' ); ?>' /></p>
390
  </form>
391
  </div>
392
  <?php
php/admin/options-page-contact-tab.php CHANGED
@@ -67,11 +67,12 @@ add_action( 'wp_ajax_nopriv_qsm_save_contact', 'qsm_contact_form_admin_ajax' );
67
  * @return void
68
  */
69
  function qsm_contact_form_admin_ajax() {
70
- global $wpdb;
71
- global $mlwQuizMasterNext;
72
- $results["status"] = QSM_Contact_Manager::save_fields( $_POST["quiz_id"], $_POST["contact_form"] );
73
- echo json_encode( $results );
74
- die();
 
75
  }
76
 
77
  ?>
67
  * @return void
68
  */
69
  function qsm_contact_form_admin_ajax() {
70
+ global $wpdb;
71
+ global $mlwQuizMasterNext;
72
+ // Sends posted form data to Contact Manager to sanitize and save.
73
+ $results['status'] = QSM_Contact_Manager::save_fields( intval( $_POST['quiz_id'] ), $_POST['contact_form'] );
74
+ echo wp_json_encode( $results );
75
+ die();
76
  }
77
 
78
  ?>
php/admin/quiz-options-page.php CHANGED
@@ -49,7 +49,7 @@ function qsm_generate_quiz_options() {
49
 
50
  wp_enqueue_script( 'qmn_admin_js', plugins_url( '../../js/admin.js', __FILE__ ), array( 'backbone', 'underscore', 'wp-util' ), $mlwQuizMasterNext->version, true );
51
  wp_enqueue_style( 'qsm_admin_style', plugins_url( '../../css/qsm-admin.css', __FILE__ ), array(), $mlwQuizMasterNext->version );
52
- wp_enqueue_style( 'qmn_jquery_redmond_theme', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css' );
53
  wp_enqueue_script( 'math_jax', '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML' );
54
  ?>
55
  <div class="wrap">
49
 
50
  wp_enqueue_script( 'qmn_admin_js', plugins_url( '../../js/admin.js', __FILE__ ), array( 'backbone', 'underscore', 'wp-util' ), $mlwQuizMasterNext->version, true );
51
  wp_enqueue_style( 'qsm_admin_style', plugins_url( '../../css/qsm-admin.css', __FILE__ ), array(), $mlwQuizMasterNext->version );
52
+ wp_enqueue_style( 'qmn_jquery_redmond_theme', plugins_url( '../../css/jquery-ui.css', __FILE__ ) );
53
  wp_enqueue_script( 'math_jax', '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML' );
54
  ?>
55
  <div class="wrap">
php/classes/class-qmn-quiz-manager.php CHANGED
@@ -291,7 +291,7 @@ class QMNQuizManager {
291
  wp_enqueue_script( 'jquery' );
292
  wp_enqueue_script( 'jquery-ui-core' );
293
  wp_enqueue_script( 'jquery-ui-tooltip' );
294
- wp_enqueue_style( 'jquery-redmond-theme', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/redmond/jquery-ui.css' );
295
 
296
  global $qmn_json_data;
297
  $qmn_json_data['error_messages'] = array(
291
  wp_enqueue_script( 'jquery' );
292
  wp_enqueue_script( 'jquery-ui-core' );
293
  wp_enqueue_script( 'jquery-ui-tooltip' );
294
+ wp_enqueue_style( 'jquery-redmond-theme', plugins_url( '../../css/jquery-ui.css', __FILE__ ) );
295
 
296
  global $qmn_json_data;
297
  $qmn_json_data['error_messages'] = array(
php/classes/class-qsm-contact-manager.php CHANGED
@@ -272,6 +272,25 @@ class QSM_Contact_Manager {
272
  if ( self::load_fields() === $fields ) {
273
  return true;
274
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  global $mlwQuizMasterNext;
276
  $mlwQuizMasterNext->pluginHelper->prepare_quiz( intval( $quiz_id ) );
277
  return $mlwQuizMasterNext->pluginHelper->update_quiz_setting( 'contact_form', serialize( $fields ) );
272
  if ( self::load_fields() === $fields ) {
273
  return true;
274
  }
275
+
276
+ if ( ! is_array( $fields ) || empty( $fields ) ) {
277
+ return false;
278
+ }
279
+
280
+ $quiz_id = intval( $quiz_id );
281
+ if ( 0 === $quiz_id ) {
282
+ return false;
283
+ }
284
+
285
+ $total_fields = count( $fields );
286
+ for ( $i = 0; $i < $total_fields; $i++ ) {
287
+ $fields[ $i ] = array(
288
+ 'label' => sanitize_text_field( $fields[ $i ]['label'] ),
289
+ 'use' => sanitize_text_field( $fields[ $i ]['use'] ),
290
+ 'type' => sanitize_text_field( $fields[ $i ]['type'] ),
291
+ 'required' => sanitize_text_field( $fields[ $i ]['required'] ),
292
+ );
293
+ }
294
  global $mlwQuizMasterNext;
295
  $mlwQuizMasterNext->pluginHelper->prepare_quiz( intval( $quiz_id ) );
296
  return $mlwQuizMasterNext->pluginHelper->update_quiz_setting( 'contact_form', serialize( $fields ) );
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Quiz And Survey Master (Formerly Quiz Master Next) ===
2
- Contributors: quizsurvey, fpcorso
3
  Tags: quiz, survey, lead, test, score, exam, questionnaire, question
4
  Requires at least: 4.9
5
- Tested up to: 5.0.2
6
  Requires PHP: 5.4
7
- Stable tag: 6.2.1
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -128,4 +128,4 @@ This is usually a theme conflict. You can [checkout out our common conflict solu
128
  == Upgrade Notice ==
129
 
130
  = 6.2.1 =
131
- Upgrade to fix cut submit button on mobile issue
1
  === Quiz And Survey Master (Formerly Quiz Master Next) ===
2
+ Contributors: quizsurvey
3
  Tags: quiz, survey, lead, test, score, exam, questionnaire, question
4
  Requires at least: 4.9
5
+ Tested up to: 5.1.1
6
  Requires PHP: 5.4
7
+ Stable tag: 6.2.2
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
128
  == Upgrade Notice ==
129
 
130
  = 6.2.1 =
131
+ Upgrade to fix cut submit button on mobile issue