PageSourceSearch

https://www.edigest.hk/wp-content/plugins/wpforms-basic/assets/js/…9.29b90da97c3ef2d651415544c4d1c00611.5.9.44

js edigest.hk collected 2026-09-24 09:25:46 UTC 21,274 bytes, 529 lines download raw bytes

1jQuery(document).ready(function($){
2
3    var logout_html = '<a href="javascript:void(0)" class="logout" onclick="email_user_logout();" title="登出"><svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="sign-out" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M96 64h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h84c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H96c-53 0-96-43-96-96V160c0-53 43-96 96-96zm231.1 19.5l-19.6 19.6c-4.8 4.8-4.7 12.5.2 17.1L420.8 230H172c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h248.8L307.7 391.7c-4.8 4.7-4.9 12.4-.2 17.1l19.6 19.6c4.7 4.7 12.3 4.7 17 0l164.4-164c4.7-4.7 4.7-12.3 0-17l-164.4-164c-4.7-4.6-12.3-4.6-17 .1z" class=""></path></svg></a>';
4
5    var first_post_id = wpforms_first_post.first_post_id,
6        site_url = wpforms_first_post.site_url,
7        post_type = wpforms_first_post.post_type,
8        site_slug = wpforms_first_post.site_slug,
9        device_token = wpforms_first_post.device_token;
10
11    var __wpforms_user_info_bool = Cookies.get('__wpforms_user_info');
12    if(__wpforms_user_info_bool){
13        __wpforms_user_info = JSON.parse(__wpforms_user_info_bool);
14        $(".wpforms-field-name input").each(function(){// user information
15            var name_value = '',class_name = $(this).attr('class');
16            if(class_name.indexOf('name-first') >= 0){
17                name_value = __wpforms_user_info.first_name;
18            }else if(class_name.indexOf('name-last') >= 0){
19                name_value = __wpforms_user_info.last_name;
20            }else{
21                name_value = __wpforms_user_info.full_name;
22            }
23            $(this).val(name_value);
24        });
25
26        $(".wpforms-field-phone_no input").val(__wpforms_user_info.phone_no);// phone number
27
28        var gender = __wpforms_user_info.gender;// gender
29        if(gender.length > 0){
30            $(".wpforms-field-gender input").each(function(){
31                if($(this).val() == gender){
32                    $(this).attr({'checked':'checked'});
33                }
34            });
35        }
36
37        var age_range = (__wpforms_user_info.age_range).replace('+'," ");// age_range
38        if(age_range.length > 0){
39            $(".wpforms-field-age_range option").each(function(){
40                if($(this).text() == age_range){
41                    $(this).attr({'selected':'selected'});
42                }
43            });
44        }
45        
46    }
47
48     /////////////// show popup ////////////////////
49    var PopupQNA = function(){
50        var $Container = document.querySelector('.popup_qna');
51        if($Container==null){
52            return;
53        }
54        //var $ButtonClose = $Container.querySelector('.popup_qna_close');
55        var $Wrapper = $Container.querySelector('.popup_qna_wrapper');
56        var $Inner = $Container.querySelector('.popup_qna_inner');
57        var _innerOrignalClass = $Inner.className;
58        var hideQNA = function() {
59          if ($Container) {
60            $Inner.className = _innerOrignalClass + ' animated faster slideInDown';
61            setTimeout(function(){
62                $Container.style.display = 'none';
63                $Inner.className = _innerOrignalClass;
64            }, 450)
65          }
66        };
67        var showQNA = function() {
68            if ($Container) {
69                $Container.style.display = 'table';
70            }
71        }
72        // $ButtonClose.addEventListener('click', function(){
73        //     hideQNA();
74        // });
75
76        $Wrapper.addEventListener('click', function(e){
77            if (e.target === $Wrapper) {
78                hideQNA();
79            }
80        });
81        return {
82            show: showQNA,
83            hide: hideQNA
84        }
85    }
86    var _QNA = new PopupQNA();
87    //////////////////////////////////////////////////////////////////////////////
88    // // 1. first post wpforms input token
89    // var first_wpforms_token = $("._custom_token");
90    // if(first_wpforms_token.length > 0){
91    //     //console.log('yes _custom_token');
92    //     $.ajax({
93    //         url: "/wp-admin/admin-ajax.php?action=ajax_get_custom_token",
94    //         type: 'get',            
95    //         dataType: 'json',
96    //         success: function(response){
97    //             var _token_input = $("._custom_token");
98    //             if(_token_input.length > 0){
99    //                 $(_token_input.get(0)).val(response.token);
100    //             }    
101    //         },
102    //         error: function(response){              
103               
104    //         }
105    //     });
106    // }
107
108    // get email from cookie:
109    var useNmgOneLogin = ['sundaykiss'].indexOf(site_slug) !== -1;
110    var cookie_email;
111    if (useNmgOneLogin) {
112        var nmg_user_info = get_nmg_user_info();
113        if (nmg_user_info) {
114            cookie_email = nmg_user_info.email;
115        }
116        if (cookie_email) {
117            // Prefill email for need to login form:
118            $('.wpforms-form').each(function(index) {
119                var without_auto_popup = $(this).find('input[data-without_auto_popup="1"]');
120                if (without_auto_popup.length > 0) {
121                    var email_input = $(this).find('.wpforms-field-email input');
122                    if (email_input.length > 0) {
123                        email_input.val(cookie_email);
124                    }
125                }
126            });
127        }
128    } else {
129        cookie_email = get_wpform_cookie_email();
130        //if the plugin active,show logout button:
131        if(cookie_email){
132            if(site_url.indexOf('edigest') >= 0){// 暫時show logout button for ED
133                $('.share_list').append('<li>'+logout_html+'<li>');//destop
134                $('.share_search').before(logout_html);// mobile
135            }
136        }
137    }
138
139    // check post type
140    if(post_type == 'page'){
141        var the_forms = $(".page-id-"+first_post_id);
142    }else{
143        var the_forms = $("#post-"+first_post_id);
144    }
145    //添加錨點:first post:
146    var first_post_action = the_forms.find('.wpforms-form').attr('action');
147    the_forms.find('.wpforms-form').attr('action', first_post_action+'#form');
148
149    check_has_wpform_and_show_popup(_QNA, cookie_email, the_forms, 'auto');
150
151    
152    // 2. lazyload post token:
153    $(window).on('article.readmore', function(event, element){
154        if(site_url.indexOf('gotrip') >= 0){//Gotrip
155            var post_id = element.data('post_id');
156            var post_url = element.data('url');
157            var id_string = 'post-'+post_id;
158        }else{
159            var id_string = element.attr('id');
160            var post_id = id_string.substr(5);
161            var post_url = $("#"+id_string).data('url');
162        }
163
164        if(post_id != first_post_id){
165             if($("#"+id_string).find('.wpforms-form').length > 0){
166                if(site_url.indexOf('madamefigaro') >= 0){//figaro
167                    post_url = $("#"+id_string).data('post_url');
168                }
169                window.location.href = post_url; return false;
170            }
171        }        
172        //});
173
174        // $.ajax({
175        //     url: "/wp-admin/admin-ajax.php?action=ajax_get_custom_token",
176        //     type: 'get',            
177        //     dataType: 'json',
178        //     success: function(response){
179        //         next_wpform.find('._custom_token').val(response.token);   
180        //     },
181        //     error: function(response){   
182        //     }
183        // });
184       
185        // var n_cookie_email = get_wpform_cookie_email();
186        // check_has_wpform_and_show_popup(_QNA, n_cookie_email, next_wpform, 'auto');
187
188        // // fiexd: change form action url:
189        // //var post_url = element.data('url');
190        // reg = new RegExp(site_url,"g");
191        // var action = post_url.replace(reg,"");
192        // next_wpform.find('.wpforms-form').attr('action',action+'#form');
193    });
194
195    $(document).on( 'click', '.wpforms-field-email input', function() {
196        var without_auto_popup = $(this).closest('.wpforms-form').find('input[data-without_auto_popup="1"]');
197        if (without_auto_popup.length === 0) {
198            return;
199        }
200        if (cookie_email) {
201            return;
202        }
203        if(post_type == 'post'){
204            var form_id = $(this).parent().parent().parent().attr('id');
205        }else{
206            var form_id = $(this).parent().parent().parent().parent().attr('id');
207        }
208        // console.log('site_slug:', site_slug);
209        if (useNmgOneLogin) {
210            window.popupNmgOneLogin(function(data) {
211                console.log('data:', data);
212                var nmg_user_info = get_nmg_user_info();
213                cookie_email = nmg_user_info.email;
214                if (cookie_email) {
215                    $('.wpforms-field-email input').val(cookie_email);
216                }
217            });
218        } else {
219            var current_form = $("#"+form_id);
220            var v_cookie_email = get_wpform_cookie_email();
221            check_has_wpform_and_show_popup(_QNA, v_cookie_email, current_form, 'all');
222        }
223    });
224    var ga_form_id = 0;
225    // check hkid_no when ajax submit:
226    $(document).on( 'click', '.wpforms-submit ', function() {
227        
228        ga_form_id = $(this).parent().find("input[name='wpforms[id]']").val();
229
230        var quired = $('.wpforms-field-hkid_no').find('.wpforms-required-label');
231        var hkid_no = $('.wpforms-field-hkid_no input').val();
232        if(quired.length > 0 && (hkid_no.trim().length) > 0){   
233            //console.log(hkid_no);
234            var hkidPat = /^([A-Z]{1})([0-9]{3,})([A-Za-z0-9]+)?$/;
235            var matchArray = hkid_no.match(hkidPat);
236           if (matchArray == null){
237                $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
238                var erro = '<label class="wpforms-error hkid_no_erro">Please enter a valid HKID Number.</label>';
239                $('.wpforms-field-hkid_no input').after(erro);
240                return false;
241           }else{
242                $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
243           }
244        }else{
245            $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
246        }
247        //validate_hkid_numbers($('.wpforms-field-hkid_no input'));
248    });
249
250    // check hkid_no when blur:
251    $(document).on( 'blur', '.wpforms-field-hkid_no input', function() {
252        validate_hkid_numbers($(this));  
253    });
254
255    function validate_hkid_numbers(obj){
256        var required = $('.wpforms-field-hkid_no').find('.wpforms-required-label');// 必填的時候驗證
257        var hkid_no = obj.val();
258        if(required.length > 0 && (hkid_no.trim().length) > 0){   
259            //console.log('hkid_no :'+hkid_no);
260            var hkidPat = /^([A-Z]{1})([0-9]{3,})([A-Za-z0-9]+)?$/;
261            var matchArray = hkid_no.match(hkidPat);
262            //console.log('matchArray :'+matchArray);
263           if (matchArray == null){
264                $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
265                var erro = '<label class="wpforms-error hkid_no_erro">Please enter a valid HKID Number.</label>';
266                obj.after(erro);
267                return false;
268           }else{
269                $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
270           }
271        }else{
272            $('.wpforms-field-hkid_no').find('.hkid_no_erro').remove();
273        }
274    }
275
276
277    // create nmgone login popup:
278    var appid  = "wordpress.nmgone.login";
279    Nmgone.config({
280        appid:      appid
281    });
282
283    // callback get user email:
284    Nmgone.callback(function(code){
285        var authenticateUrl = '/wp-admin/admin-ajax.php?action=wpforms_get_nmgone_user_info';
286
287        console.log('this is frontendcallback');
288        console.log(code);
289
290        var xmlHttp;
291        if (window.XMLHttpRequest){//for IE7+, Firefox, Chrome, Opera, Safari
292            xmlHttp=new XMLHttpRequest();
293        } else {//for IE6, IE5
294            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
295        }
296        var token_url =  authenticateUrl + '&code=' + code;//get access token url
297        xmlHttp.open("GET", token_url, true);
298        xmlHttp.send();
299        xmlHttp.onreadystatechange = function() {
300            if (xmlHttp.readyState == 4) {
301                if (xmlHttp.status == 200) {
302                    var response = JSON.parse(xmlHttp.responseText);
303                    var email = response.data.email;
304                    $('.wpforms-field-email input').val(email);
305                    // set cookie:
306                    var encryption_email = $.base64.encode(email);// 加密
307                    //console.log('encryption_email'+encryption_email)
308                    Cookies.set( '__wpforms_nmg_bu_email', encryption_email, { expires: 3650, path: '/' } );
309
310                    //show logout button:
311                     if(site_url.indexOf('edigest') >= 0){// 暫時show logout button for ED
312                        $('.share_list').append('<li>'+logout_html+'<li>');//destop
313                        $('.share_search').before(logout_html);// mobile
314                    }
315
316                    // hide popup:
317                    $('.popup_qna').hide();
318                } else {
319                    if (typeof JSON.parse(xmlHttp.responseText) != 'string') {
320                        console.log(JSON.parse(xmlHttp.responseText));
321                    }
322                }
323            }
324        }          
325
326    });
327
328    var code = getQueryVariable('code');            
329    if (code) {
330        Nmgone.handle(code);
331    }
332
333    // select for other value:
334    //$('select').change(function(){
335    $(document).on( 'change', 'select', function() {
336        var select_name = $(this).attr('name');
337        var select_input = '<input type="text" class="wpforms-field-medium" name="'+select_name+'">';
338        var select_value = $(this).children('option:selected').val();
339        if(select_value.indexOf('其他') >= 0 || select_value.indexOf('Others') >= 0){
340            $(this).after(select_input);
341        }else{
342            $(this).parent().find('input').remove();
343        }
344    });
345
346    // fixed: 如果wpforms係click readmore button 之後則從新執行wpforms.js
347    var wpforms_js = wpforms_first_post.wpforms_js,
348        wpforms_file_upload = wpforms_first_post.wpforms_file_upload;
349    $(window).on('article.readmore', function(event, element){
350        $.getScript(wpforms_js);
351        $.getScript(wpforms_file_upload);
352    });
353
354
355    // 2020.11.10 分步顯示page 中wpform://////////////////////////////////////////////////////////////
356    var wpform_list_obj = $('.wpforms-container');
357    //var step_key = site_slug+'_page_'+first_post_id+'_step';// 如果是page,則page id = first_post_id
358    //var step_number = Cookies.get(step_key);
359    var wpforms_id = '';
360    var wpforms_id_cookie_key = false;
361    
362    if(wpform_list_obj.length > 1 && post_type == 'page'){  
363        // ////////////////// 2020.12.18 分步的wpfroms添加Page與Page之間有關聯//////////////////
364        // check是不是最後一個步驟:
365        var finish_bool = true;
366        $.each(wpform_list_obj, function (i, e){
367            var temp_cookie_key = site_slug + '-' + $(e).attr('id');  
368            if(typeof(Cookies.get(temp_cookie_key)) == 'undefined'){
369                finish_bool = false; return false;
370            }
371        });
372
373        if(finish_bool){
374           //如果user填寫了所有wpform,則默以最後wpforms中settings的redirect url跳轉
375            var redirect_url = wpform_list_obj.eq((wpform_list_obj.length)-1).find('.wpforms-submit').attr('custom_redirect_attr');
376            if(redirect_url){
377                window.location.href = redirect_url; return false;
378            }else{
379                window.location.href = site_url; return false;
380            }
381        }
382
383        if(site_url.indexOf('edigest') >= 0){// ED site
384            email_api_url = '';
385            if(site_url.indexOf('www.') >= 0){// Production
386                email_api_url = "https://apigateway-aws.nmg.com.hk/ednews/v0/users/devices?device_token="+device_token;//123456y
387            }else{
388                email_api_url = "http://test.apigateway.nmg.com.hk/news/v0/users/devices?device_token="+device_token;//123456y
389            }
390            
391            $.ajax({  // get user email by device token:
392                type: "GET",
393                url: email_api_url,
394                success: function(data){
395                    if(data.status == true){
396                        user_email = data.data.email;
397                        show_page_wpforms_step_by_step(user_email);
398                    }else{// 獲取不到redirect to homepage
399                         show_page_wpforms_step_by_step(null);// 沒有device_token時,都顯示
400                    }                
401                }
402            });
403
404        }else{
405            show_page_wpforms_step_by_step(null); // 除了ED,其他bu site的顯示
406        }
407
408    }else{
409        // if(post_type == 'page'){
410        //     if($('.wpforms-container').length > 1){ // 如果是分步填寫的wpform,沒有參數則redirect homepage:
411        //         //window.location.href = site_url; return false;
412        //         show_page_wpforms_step_by_step(null);// web訪問沒有device_token時,都顯示
413        //     }else{
414        //         wpform_list_obj.show();// normal page wpforms
415        //     }
416        // }else{
417        //     wpform_list_obj.show();// normal single wpforms
418        // }
419        wpform_list_obj.show();// normal single / page wpforms
420    }
421
422
423    // show wpforms step by step in page:
424    function show_page_wpforms_step_by_step(user_email){
425        if(user_email){
426            $('.wpforms-field-container').find("input[type='email']").val(user_email);
427        }
428        $.each(wpform_list_obj, function (index, domEle){
429            wpforms_id = $(domEle).attr('id');
430            wpforms_id_cookie_key = site_slug + '-' + wpforms_id;  
431            if(typeof(Cookies.get(wpforms_id_cookie_key)) == 'undefined'){
432                $('#'+wpforms_id).show();// display wpforms if no cookie
433                return false;//break
434            }
435        });
436    }
437
438
439    // when submit success: Set cookie in page with more wpforms:
440    $(window).on('wpformsAjaxSubmitSuccess', function(event, element){
441         //2021.2.24 add GA when submit success
442        //var form_id = element.data.form_id;
443        add_theme_ga_tracking('Wpform', 'Submitbutton', 'Submit_'+ga_form_id, '', 0);
444        fbq('track', "SubmitApplication");
445        if(post_type == 'page' && (wpform_list_obj.length) > 1){// 只有post_type=page and wpforms的數量為多個時,則認為係分步的wpform
446            // set 每個wpforms的cookie:
447            Cookies.set( wpforms_id_cookie_key, 1, { expires: 3650, path: '/' } );
448        }
449    });
450
451});
452
453
454function check_has_wpform_and_show_popup(_QNA, cookie_email, element, type){
455    // type=='all': element就是當前wpform元素
456    if(type == 'auto'){//當前post元素
457        var wpforms_container = element.find('.wpforms-container');
458        if(wpforms_container.length == 0) return false;
459    }
460    //var wpforms_container = element.find('.wpforms-container');
461    //if(wpforms_container.length == 0) return false;
462    if(!cookie_email){
463        var auto_popup = element.find('.auto_popup_or_not').data('auto_popup');
464        var without_auto_popup = element.find('.auto_popup_or_not').data('without_auto_popup');
465        console.log('auto_popup: '+auto_popup);
466        console.log('without_auto_popup: '+without_auto_popup);
467        if(type == 'auto'){
468            if(auto_popup == 1 ) show(_QNA);
469        }else{
470            if(auto_popup == 1 || without_auto_popup == 1) show(_QNA);
471        }
472           
473    }else{ //赋值
474        jQuery(element).find('.wpforms-field-email input').val(cookie_email);
475    }
476}
477
478
479function show(_QNA){
480     var appid  = "wordpress.nmgone.login";
481    Nmgone.config({
482        appid:      appid
483    });
484    Nmgone.create({
485        container: 'wrap-div',//container的id
486        success: function(){
487            //顯示container
488            //document.getElementById('wrap-div').style.display = 'block';
489            // $('#wrap-div').show();//可執行jq方法
490            console.log('create successful');
491             _QNA.show();
492        },
493        error: function(message){
494            console.log('created failed!');
495
496            console.log(message);
497             if(message=='container has frame'){
498                 _QNA.show();
499            }
500        }
501    });
502}
503
504
505function get_wpform_cookie_email(){
506    var wf_login_cookie = Cookies.get('__wpforms_nmg_bu_email');
507    var cookie_email = wf_login_cookie ? jQuery.base64.decode(wf_login_cookie) : false;
508    return cookie_email;
509}
510
511function get_nmg_user_info() {
512    var theme_nmgone_user = Cookies.get('theme_nmgone_user');
513    return theme_nmgone_user ? JSON.parse(theme_nmgone_user) : false;
514}
515
516
517// ajax logout:
518function email_user_logout(){
519     jQuery.ajax({
520        url: "/wp-admin/admin-ajax.php?action=ajax_wpforms_email_user_logout",
521        type: 'post',       
522        dataType: 'json',
523        success: function(response){
524            location.reload();
525        },
526        error: function(response){   
527        }
528    });
529}

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.