PageSourceSearch

https://www.boldgrid.com/support/wp-content/plugins/weforms-develo…/quiz/assets/frontend-quiz.js?ver=1.6.28

js boldgrid.com collected 2026-10-02 04:32:46 UTC 21,087 bytes, 466 lines download raw bytes

1jQuery(document).ready(function($) {
2
3    var weFormsFrontQuiz = {
4        init: function () {
5            var form_id = [],
6                frontend_quiz = [];
7            $(".wpuf-form-add :input[name=form_id]").each(function(){
8                form_id.push( $(this).val() );
9            });
10            $(".wpuf-form-add :input[name=weforms-front-quiz]").each(function(){
11                frontend_quiz.push( $(this).val() );
12            });
13
14            var idx,
15                form_selector = '';
16
17            for ( idx = 0; idx < form_id.length; idx++ ) {
18                form_selector = '.weforms-' + form_id[idx];
19                if ( frontend_quiz[idx] === 'yes' ) {
20                    $(form_selector).off();
21                    $(form_selector).on('submit', this.frontQuizFormSubmit);
22                }
23            }
24        },
25
26        frontQuizFormSubmit: function (e) {
27            e.preventDefault();
28
29            var form = $(this),
30                submitButton = form.find('input[type=submit]'),
31                form_data = weFormsFrontQu
31iz.weFormsValidateForm(form);
32
33            if (form_data) {
34
35                // send the request
36                form.find('li.wpuf-submit').append('<span class="wpuf-loading"></span>');
37                submitButton.attr('disabled', 'disabled').addClass('button-primary-disabled');
38
39                $.post( weforms_frontend_quiz.ajaxurl, form_data, function ( res ) {
40                    e.preventDefault();
41                    // var res = $.parseJSON(res);
42                    var settings        = res.form_settings,
43                        userCanSee      = settings.respondent_can_see,
44                        totalPoints     = settings.total_points,
45                        score           = totalPoints,
46                        releaseGrade    = settings.release_grade,
47                        output          = '';
48
49                    if ( releaseGrade == 'after_submission' ) {
50                        output += '<ul class="wpuf-form form-label-above">';
51
52                        $.each( res.form_fields, function( key, field ) {
53                            var template        = field.template,
54                                selectedAnswers = field.selected_answers,
55                                userChoice      = ( res.data !== undefined ) ? res.data[field.name] : '' ,
56                                fieldPoints     = parseFloat(field.points),
57                                isRightAnswer   = weFormsFrontQu
57iz.isRightAnswer(selectedAnswers, userChoice),
58                                getPoints       = weFormsFrontQuiz.getPoints(fieldPoints, isRightAnswer);
59
60                            var divClass = (isRightAnswer) ? 'right-answer' : 'wrong-answer';
61
62                            output += '<li class="wpuf-el '+ divClass +'">';
63                                output += '<div class="wpuf-label">';
64                                    output += '<label for="' + field.name +'">';
65                                    output += field.label;
66                                    
67                                    if (userCanSee.includes( 'point_values' )) {
68                                        output += '<span class="weforms-field-points">'+ getPoints +'/'+ fieldPoints +'</span>';
69                                    }
70
71                                    output += '</label>';
72                                output += '</div>';
73                                output += '<div class="wpuf-fields">';
74                                    
75                                    switch( template ) {
76                                        case 'dropdown_field':
77                                        case 'radio_field':
78                                            $.each( field.options, function( key, value ) {
79                                                output += '<label class="wpuf-radio-block '+ weFormsFrontQu
79iz.isChecked(key, userChoice) +'">';
80                                                    output += '<input name="'+ key +'" type="radio" value="'+ value +'" '+ weFormsFrontQuiz.isChecked(key, userChoice) +' disabled>';
81                                                    output += value;
82                                                output += '</label>';
83                                            });
84
85
86                                            if (!isRightAnswer) {
87                                                score -= fieldPoints;
88
89                                                if (userCanSee.includes( 'correct_answers' )) {
90                                                    output += '<div class="right-answer-block">';
91                                                        output += '<p>Correct answer</p>';
92                                                        output += '<label class="wpuf-radio-block">';
93                                                            output += '<input type="radio" checked disabled>';
94                                                            output += field.options[selectedAnswers];  
95                                                        output += '</label>';
96                                                    output += '</div>'; 
97                                                }   
98                                            };
99
100                                            if (userCanSee.includes( 'question_feedback' )) {
101                                                if (weFormsFrontQu
101iz.hasFieldFeedback(field, isRightAnswer)) {
102                                                    output += '<div class="weforms-answer-feedback">';
103                                                        output += '<p>Feedback</p>';
104                                                        output += '<p class="feedback">'+ weFormsFrontQuiz.getFieldFeedback(field, isRightAnswer) +'</p>';
105                                                    output += '</div>'; 
106                                                }
107                                            };
108                                            break;
109                                        
110                                        case 'multiple_select':
111                                        case 'checkbox_field':
112                                            $.each( field.options, function( key, value ) {
113                                                var checked = '';
114
115                                                if (userChoice && userChoice.includes(key) ) {
116                                                    checked = 'checked';
117                                                }
118
119                                                output += '<label class="wpuf-checkbox-block '+ checked +'">';
120                                                    output += '<input name="'+ key +'" type="checkbox" value="'+ value +'" '+ checked +' disabled>';
121                                                    output += value;
122                                                output += '</label>';
123                                            });
124
125                                            if (!isRightAnswer) {
126                                                score -= fieldPoints;
127
128                                                if (userCanSee.includes( 'correct_answers' )) {
129                                                    output += '<div class="right-answer-block">';
130                                                        output += '<p>Correct answer</p>';
131
132                                                        $.each( selectedAnswers, function( key, value ) {
133                                                            output += '<label class="wpuf-checkbox-block">';
134                                                            output += '<input type="checkbox" checked disabled>';
135                                                            output += field.options[value]; 
136                                                            output += '</label>';
137                                                        });
138
139                                                    output += '</div>'; 
140                                                }   
141                                            };
142
143                                            if (userCanSee.includes( 'question_feedback' )) {
144                                                if (weFormsFrontQu
144iz.hasFieldFeedback(field, isRightAnswer)) {
145                                                    output += '<div class="weforms-answer-feedback">';
146                                                        output += '<p>Feedback</p>';
147                                                        output += '<p class="feedback">'+ weFormsFrontQuiz.getFieldFeedback(field, isRightAnswer) +'</p>';
148                                                    output += '</div>';   
149                                                }  
150                                            };                                  
151                                            break;                                                                              
152                                    }
153
154                                output += '</div>';                            
155                                output += '';
156                            output += '</li>';
157                        });
158
159                        output += '</ul>';
160
161                        if (userCanSee.includes( 'point_values' )) {
162                            output += '<div class="weforms-quiz-points">';
163                                output += 'Total Points ';
164                                output += '<span class="score">'+ score +'/'+ totalPoints +'</span>';
165                            output += '</div>';
166                        }
167                        
168                    }
169
170                    form.before( '<div class="wpuf-success">' + res.message + '</div><div class="weforms-quiz-feedback">' + output + '</div>');
171                    form.slideUp( 'fast', function() {
172                        form.remove();
173                    });
174
175                    submitButton.removeClass('button-primary-disabled');
176                    form.find('span.wpuf-loading').remove();
177                });
178            }
179        },
180
181        weFormsValidateForm: function (self) {
182
183            var temp,
184                temp_val = '',
185                error = false,
186                error_items = [];
187            error_type = '';
188
189            // ===== Validate: Text and Textarea ========
190            var required = self.find('[data-required="yes"]:visible');
191
192            required.each(function (i, item) {
193                // temp_val = $.trim($(item).val());
194
195                // console.log( $(item).data('type') );
196                var data_type = $(item).data('type');
197                val = '';
198
199                switch (data_type) {
200                    case 'rich':
201                        var name = $(item).data('id');
202                        val = $.trim(tinyMCE.get(name).getContent());
203
204                        if (val === '') {
205                            error = true;
206
207                            // make it warn collor
208                            weFormsFrontQuiz.weFormsFrontMarkError(item);
209                        }
210                        break;
211
212                    case 'textarea':
213                    case 'text':
214
215                        val = $.trim($(item).val());
216
217                        if (val === '') {
218                            error = true;
219                            error_type = 'required';
220
221                            // make it warn collor
222                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
223                        }
224                        break;
225
226                    case 'password':
227                    case 'confirm_password':
228                        var hasRepeat = $(item).data('repeat');
229
230                        val = $.trim($(item).val());
231
232                        if (val === '') {
233                            error = true;
234                            error_type = 'required';
235
236                            // make it warn collor
237                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
238                        }
239
240                        if (hasRepeat) {
241                            var repeatItem = $('[data-type="confirm_password"]').eq(0);
242
243                            if (repeatItem.val() !== val) {
244                                error = true;
245                                error_type = 'mismatch';
246
247                                weFormsFrontQuiz.weFormsFrontMarkError(repeatItem, error_type);
248                            }
249                        }
250
251                        break;
252
253                    case 'select':
254                        val = $(item).val();
255
256                        // console.log(val);
257                        if (!val || val === '-1') {
258                            error = true;
259                            error_type = 'required';
260
261                            // make it warn collor
262                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
263                        }
264                        break;
265
266                    case 'multiselect':
267                        val = $(item).val();
268
269                        if (val === null || val.length === 0) {
270                            error = true;
271                            error_type = 'required';
272
273                            // make it warn collor
274                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
275                        }
276                        break;
277
278                    case 'tax-checkbox':
279                        var length = $(item).children().find('input:checked').length;
280
281                        if (!length) {
282                            error = true;
283                            error_type = 'required';
284
285                            // make it warn collor
286                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
287                        }
288                        break;
289
290                    case 'radio':
291                        var length = $(item).find('input:checked').length;
292
293                        if (!length) {
294                            error = true;
295                            error_type = 'required';
296
297                            // make it warn collor
298                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
299                        }
300                        break;
301
302                    case 'file':
303                        var length = $(item).find('ul').children().length;
304
305                        if (!length) {
306                            error = true;
307                            error_type = 'required';
308
309                            // make it warn collor
310                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
311                        }
312                        break;
313
314                    case 'email':
315                        var val = $(item).val();
316
317                        if (val !== '') {
318                            //run the validation
319                            if (!weFormsFrontQuiz.isValidEmail(val)) {
320                                error = true;
321                                error_type = 'validation';
322
323                                weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
324                            }
325                        } else if (val === '') {
326                            error = true;
327                            error_type = 'required';
328
329                            weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
330                        }
331                        break;
332
333
334                    case 'url':
335                        var val = $(item).val();
336
337                        if (val !== '') {
338                            //run the validation
339                            if (!weFormsFrontQuiz.isValidURL(val)) {
340                                error = true;
341                                error_type = 'validation';
342
343                                weFormsFrontQuiz.weFormsFrontMarkError(item, error_type);
344                            }
345                        }
346                        break;
347                }
348
349            });
350
351            // if already some error found, bail out
352            if (error) {
353                // add error notice
354                weFormsFrontQuiz.addErrorNotice(self, 'end');
355
356                return false;
357            }
358
359            var form_data = self.serialize(),
360                rich_texts = [];
361
362            // grab rich texts from tinyMCE
363            $('.wpuf-rich-validation', self).each(function (index, item) {
364                var item = $(item);
365                var editor_id = item.data('id');
366                var item_name = item.data('name');
367                var val = $.trim(tinyMCE.get(editor_id).getContent());
368
369                rich_texts.push(item_name + '=' + encodeURIComponent(val));
370            });
371
372            // append them to the form var
373            form_data = form_data + '&' + rich_texts.join('&');
374            return form_data;
375        },
376
377        weFormsFrontMarkError: function(item, error_type) {
378
379            var error_string = '';
380            $(item).closest('li').addClass('has-error');
381
382            if ( error_type ) {
383                error_string = $(item).closest('li').data('label');
384                switch ( error_type ) {
385                    case 'required' :
386                        error_string = error_string + ' ' + error_str_obj[error_type];
387                        break;
388                    case 'mismatch' :
389                        error_string = error_string + ' ' +error_str_obj[error_type];
390                        break;
391                    case 'validation' :
392                        error_string = error_string + ' ' + error_str_obj[error_type];
393                        break;
394                }
395                $(item).siblings('.wpuf-error-msg').remove();
396                $(item).after('<div class="wpuf-error-msg">'+ error_string +'</div>');
397            }
398
399            $(item).focus();
400        },
401
402        isChecked: function(key, userChoice, attr = 'checked') {
403            if (key == userChoice) {
404                return attr;
405            }
406            return '';
407        },
408
409        isRightAnswer: function(selectedAnswers, userChoice) {
410            if (typeof selectedAnswers === "string" ) {
411                if (selectedAnswers == userChoice) {
412                    return true;  
413                }
414                return false
415            } else if( typeof selectedAnswers === "object" ) {
416                var answers = selectedAnswers.join('|'),
417                    choices = userChoice;
418
419                if (choices != null & typeof userChoice == 'object' ) {
420                    choices = userChoice.join('|');  
421                }
422
423                if (answers == choices) {
424                    return true; 
425                }
426                return false
427            }            
428        },
429
430        getPoints: function(fieldPoints, isRightAnswer) {
431            if (isRightAnswer) {
432                return fieldPoints;
433            }
434            return 0;
435        },
436
437        hasFieldFeedback: function(field, isRightAnswer) {
438            if (!isRightAnswer && field.incorrect_ans_feeback != "" ) {
439                return true;
440            } else if ( isRightAnswer && field.correct_ans_feeback != "" ) {
441                return true;
442            }
443            return false;
444        },
445
446        getFieldFeedback: function(field, isRightAnswer) {
447            if (!isRightAnswer) {
448                return field.incorrect_ans_feeback;
449            }
450            return field.correct_ans_feeback;           
451        },
452
453        isValidEmail: function( email ) {
454            var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
455            return pattern.test(email);
456        },
457
458        isValidURL: function(url) {
459            var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/|https:\/\/){1}([0-9A-Za-z]+\.)");
460            return urlregex.test(url);
461        },
462
463    };
464
465    weFormsFrontQuiz.init();
466});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.