PageSourceSearch

https://film.com.pl/_js/modules/paywall.js

js film.com.pl collected 2026-09-25 01:06:35 UTC 24,611 bytes, 492 lines download raw bytes

1var genesisPaywall = {  
2    eid: 0,
3    etype: 0,
4    user: false,
5    nscpw: false,
6    active: false,
7    styleAssigned: false,
8    scrollAssigned: false,
9    articlePaywall: (genesisPage.elements.element ? genesisPage.elements.element.querySelector('.art-text.art-text-paywall') : false),
10
11    init: function () {
12        this.eid   = genesisPage.getTargetData('id');
13        this.etype = genesisPage.getTargetData('etype');     
14        this.nscpw = (sessionStorage.nscpwid == this.eid); 
15        if ((typeof deep_user_profile == 'object') && (deep_user_profile != null) && (typeof deep_user_profile.rfv_segment == 'string'))
16            user = deep_user_profile;
17        else
18        if ((typeof stored_user_profile == 'object') && (stored_user_profile != null) && (typeof stored_user_profile.rfv_segment == 'string'))
19            user = stored_user_profile;   
20
21        if (this.articlePaywall && (this.etype == 1) && (this.eid > 1))   
22            this.runArticlePaywall();
23
24        this.active = true;
25        //console.log('genesisPaywall', genesisPaywall, genesisPage);
26    },
27    runArticlePaywall: function () {
28        var obj = this;   
29        fetch('/user-info', {
30            method: 'post',
31            body: JSON.stringify({
32                'pw': 1,   
33                'id': obj.eid,
34                'user': obj.user,
35                'nscpw':  obj.nscpw
36            }),  
37            headers: {
38                'Content-Type': 'application/json',
39                'Accept': 'application/json'
40            }
41        })              
42        .then(res => res.json())
43        .then(paywallData => {               
44            if (paywallData.pw == 1)
45            {
46                const ti = document.querySelector('#art-text-inner'),
47                      tr = document.querySelector('#__relations');
48                obj.articlePaywall.classList.remove('art-text-paywall-wait'); 
49                if ((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0))
50                {
51                    if (ti)
52                        ti.innerHTML = paywallData.element.content;
53                    if (tr)
54                        tr.value = paywallData.element.relations;
55                    obj.articlePaywall.classList.remove('art-text-paywall');  
56                }    
57                setTimeout(function() {      
58                    if (typeof genesisArticle == 'object' && typeof genesisArticle.getRelations == 'function')
59                        genesisArticle.getRelations();  
60                    if (typeof getGalleries == 'object' && typeof getGalleries.getRelations == 'function')
61                        genesisArticle.getGalleries();      
62                }, 150);  
63
64                if (typeof paywallData.element.paywall_message == 'object')
65                {   
66                    if ((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0))
67                    {
68                        if (location.host.indexOf('dorzeczy') >= 0)
69                        {
70                        }
71                        else                                     
72                        if (location.host.indexOf('wprost') >= 0)
73                        {
74                            /*
75                            $('#art-text-inner').prepend(  
76                                '<p class="art-text-frame">' +       
77                                 'Czytasz artykuł w ramach promocji dostępu do&nbsp;treści ' +
78                                '<a href="https://cyfrowy.wprost.pl/oferty?utm_source=' + $('body').data('host') + '&utm_medium=info-open-dynamic&utm_campaign=static" target=_blank">Wprost</a>' +   
79                                '</p>'
80                            );
81                            */
82                        }
83                    }    
84                    obj.showMessage(paywallData.element.paywall_message, (paywallData.element.content_open == 1));
85                }     
86                else               
87                if ((paywallData.element.content_open == 1) && ((paywallData.element.paywall == 0) || (paywallData.element.paywall == 2)))
88                {
89                    let suf = '',   
90                        url = 'https://cyfrowy.wprost.pl/oferty';
91                    if (location.host.indexOf('dorzeczy') >= 0)
92                        url = 'https://subskrypcja.dorzeczy.pl/';       
93                    url += '?utm_source=' + document.body.dataset.host + '&utm_medium=article-message&utm_campaign=reminder-button'
94                    if ((document.body.dataset.subscdays <= 14) && (document.body.dataset.subscdaysStr != '') && (document.body.dataset.subscdaysStr != 'undefined'))  
95                    {
96                        suf = '<br />Twoja subskrypcja <nobr>wygasa za ' + document.body.dataset.subscdaysStr + '</nobr>' +
97                              '<br /><button type="button" onclick="window.open(\'' + url + '\');" class="button button-auto button-blue mtop10 pleft30 pright30"><b>Odnawiam</b></button>';                  
98                    }
99                    if (obj.nscpw && (!document.body.dataset.subscription))
100                    {                          
101                        obj.articlePaywall.insertAdjacentHTML('afterBegin', 
102                            '<p class="art-text-frame">' +       
103                            'Artykuł czytasz dzięki promocji <strong>Google&nbsp;News&nbsp;Showcase</strong>.' +
104                            '<br /> Zyskaj dostęp do wszystkich treści <a href="' + $('#subsription-button').attr('href') + '">' + ((location.host.indexOf('dorzeczy') >= 0) ? 'DoRzeczy+' : 'Wprost&nbsp;Premium') + '</a>' + 
105                            '</p>'                                                                                            
106                        );
107                    }
108                    else
109                    {    
110                        obj.articlePaywall.insertAdjacentHTML('afterBegin', 
111                            '<p class="art-text-frame">' +       
112                            'Artykuł czytasz dzięki subskrypcji. <b>Dziękujemy!</b>' + suf +  
113                            '</p>'
114                        );     
115                    }
116                }     
117                if (typeof paywallCallback == 'function')
118                    paywallCallback( ((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0)) );
119            }
120            else
121            {       
122                if (typeof paywallData.element.paywall_message == 'object')
123                    obj.showMessage(paywallData.element.paywall_message, true);
124                if (typeof paywallCallback == 'function')
125                    paywallCallback(false);
126            }    
127        });
128    },
129
130    runVideoPaywall: function (player, paywallShort=false) {
131        // console.log('runVideoPaywall', player, paywallShort);
132        var obj = this;   
133        fetch('/user-info', {
134            method: 'post',
135            body: JSON.stringify({
136                'vpw': 1,  
137                'id': player.ide,
138                'user': (obj.user ? obj.user : false)
139            }),  
140            headers: {
141                'Content-Type': 'application/json',
142                'Accept': 'application/json'
143            }
144        })              
145        .then(res => res.json())
146        .then(paywallData => {       
147            // console.log('runVideoPaywall paywallData', paywallData, player);     
148            if (paywallData.pw == 1)
149            {
150                if ((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0))
151                {
152                    if (typeof paywallData.element.data == 'object')
153                    {  
154                        for (d in paywallData.element.data) 
155                        {                 
156                            player.wrapper.dataset[d] = paywallData.element.data[d];
157                        }   
158                        if (paywallData.element.data.vendor == 'genesis')
159                            player.template.innerHTML = paywallData.element.content;
160                        genesisVideoPlayers.reloadPlayer(player.wrapper.dataset.index);
161                    }
162                }     
163                else
164                {
165                    // console.log('runVideoPaywall content_open', paywallData.element.content_open , 'paywall ', paywallData.element.paywall,paywallShort);
166                    if (player.vendor == 'youtube')
167                    {
168                        if (paywallShort)
169                        {
170                            paywallData.element.paywall_message = false;
171                            genesisVideoPlayers.createYouTubePlayer(player.wrapper.dataset.index);
172                        }
173                    }
174                    //if ((typeof genesisMMedia == 'object') && (typeof genesisMMedia.openPaywallYTPlayer == 'function'))
175                    //    genesisMMedia.openPaywallYTPlayer();
176                }
177                if (typeof paywallData.element.paywall_message == 'object')
178                    obj.showMessage(paywallData.element.paywall_message, ((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0)), player);
179                if (typeof paywallCallback == 'function')
180                    paywallCallback(((paywallData.element.content_open == 1) && (paywallData.element.paywall == 0)) );
181            }
182            else
183            {       
184                if (typeof paywallData.element.paywall_message == 'object')
185                    obj.showMessage(paywallData.element.paywall_message, true, player);
186                if (typeof paywallCallback == 'function')
187                    paywallCallback(false);
188            }  
189        });   
190    },    
191    showMessage: function (message, isOpen, player=false) { 
192        var obj = this;   
193        let hiddenPercent  = 0,  
194            paywallMessage = false,
195            messageContent = message.content;        
196        messageContent = messageContent.replace(new RegExp("utm_source=\&", "gi"), ('utm_source=' + location.hostname.replace(/www./gi,'') + '&'));
197
198        if (this.articlePaywall && (typeof player != 'object') && (this.etype == 1) && (this.eid > 1))   
199        {
200            //$('.art-text-relation-paywall').slideUp();
201            let ar = document.querySelector('#art-content .art-text.art-text-relations');
202            if ((!isOpen) && (typeof deep_init_content == 'object'))
203            {       
204                try 
205                {      
206                    if ((typeof deep_init_content.wprost == 'object') && (deep_init_content.wprost.article.word_count > 0) && (deep_init_content.wprost.article.full_word_count > 0) && (deep_init_content.wprost.article.word_count < deep_init_content.wprost.article.full_word_count > 0))
207                    {                                                                                                         
208                        let p = 100 - Math.round((deep_init_content.wprost.article.word_count * 100) / deep_init_content.wprost.article.full_word_count);
209                        if (p > 0)
210                            hiddenPercent = p;
211                    }  
212                    else    
213                    if ((typeof deep_init_content.dorzeczy == 'object') && (deep_init_content.dorzeczy.article.word_count > 0) && (deep_init_content.dorzeczy.article.full_word_count > 0) && (deep_init_content.dorzeczy.article.word_count < deep_init_content.dorzeczy.article.full_word_count > 0))
214                    {                                                                                                        
215                        let p = 100 - Math.round((deep_init_content.dorzeczy.article.word_count * 100) / deep_init_content.dorzeczy.article.full_word_count);
216                        if (p > 0)
217                            hiddenPercent = p;
218                    }    
219                }     
220                catch (e) 
221                {
222                    hiddenPercent = 0;   
223                }   
224            }
225            if (!ar)
226            {
227                const at = document.querySelector('#art-content .art-text');
228                if (at)
229                    at.insertAdjacentHTML('afterEnd', '<div class="art-text art-text-relations"></div>');
230                ar = document.querySelector('#art-content .art-text.art-text-relations');
231            }
232            if (ar)
233            {
234                ar.insertAdjacentHTML('afterBegin',                     
235                    '<div data-special="true" class="art-text-relation art-text-relation-paywall '+ (isOpen ? 'art-text-relation-paywall-open' : 'art-text-relation-paywall-close') +'">' +                                                     
236                        '<div class="art-text-relation-inner">' +           
237                            '<div id="paywall-message" class="paywall-message" data-id="' + message.id_message + '" data-name="' + message.name + '" data-version="' + message.version + '" data-open="' + (isOpen ? 1 : 0) + '" data-pw-opt="' + message.paywall_option + '" data-hdprc="' + ((hiddenPercent > 0) ? (100 - hiddenPercent) : 0) + '">' +    
238                                ((hiddenPercent > 50) ? '<span class="cnt">Pozostało ' + hiddenPercent + '% tekstu</span>' :'') +          
239                                '<div id="paywall-message-inner">' +    
240                                messageContent +
241                                '</div>' +
242                            '</div>' +
243                        '</div>' +
244                    '</div>'                                                                    
245                );    
246                paywallMessage = document.querySelector('#paywall-message');
247            }
248        }
249        else
250        if (typeof player == 'object')   
251        {
252            // console.log('runVideoPaywall playerWrapper', player.playerWrapper);   
253            const playerWrapper = player.playerWrapper;
254            if (playerWrapper) 
255            {
256                playerWrapper.insertAdjacentHTML('afterBegin', 
257                    '<div id="paywall-message-' + message.id_message + '-' + player.id + '" class="paywall-message" data-id="' + message.id_message + '" data-name="' + message.name + '" data-version="' + message.version + '" data-open="' + (isOpen ? 1 : 0) + '" data-pw-opt="' + message.paywall_option + '" style="display:none;">' +    
258                        '<div class="video-message">' +           
259                        messageContent +
260                        '</div>' +
261                    '</div>' 
262                );
263                paywallMessage = document.querySelector('#paywall-message-' + message.id_message + '-' + player.id);
264            }
265        }
266        if (paywallMessage)
267        {
268            if (!this.styleAssigned)
269            {
270                this.loadStyle();
271            }
272            setTimeout(function() { 
273                paywallMessage.style.display = 'block';
274            }, 100);     
275            setTimeout(function() { 
276                paywallMessage.classList.add('visible');
277                obj.paywallSeen();
278            }, 200);                              
279            if (typeof message.buttons == 'object')
280            {
281                const hr = paywallMessage.querySelector('hr'),
282                      bt = document.createElement('div');                    
283                bt.className = 'buttons';       
284                for (b in message.buttons) 
285                {                 
286                    bt.insertAdjacentHTML('beforeEnd', 
287                        '<button type="button" class="button button-' + message.buttons[b].color + '" '+
288                        'onclick="' + message.buttons[b].click + '">' +
289                        message.buttons[b].label +
290                        '</button>'
291                    );
292                }    
293                if (hr)
294                    hr.replaceWith(bt);
295                else
296                if (typeof player != 'object')
297                    paywallMessage.insertAdjacentElement('beforeEnd', bt);
298            }  
299            
300            // if (event.target.nodeName == 'BUTTON')
301                                                
302            if ((typeof checkDeep == 'function') && (checkDeep()))
303            {
304                callDeepEvent({
305                    'event.type': 'paywall-init',   
306                    'message': {                            
307                        'id': message.id_message,                               
308                        'name': message.name,
309                        'version': message.version
310                    },   
311                    'paywall': {                            
312                        'content_open': isOpen,                               
313                        'type': {
314                            'id': message.paywall_option, 
315                            'name': ((message.paywall_option == 2) ? 'Premium' : (message.paywall_option == 1) ? 'Freemium' : ((message.paywall_option == 0) ? 'Dynamic' : 'Other')),
316                        }
317                    },  
318                    'source': deep_init_content
319                }); 
320            }
321            if (!this.scrollAssigned)
322            {
323                this.scrollAssigned = true;
324                document.addEventListener('scroll', function (event) {
325                    obj.paywallSeen(true);   
326                });
327            }  
328        }
329    },
330    paywallSeen: function (fromScroll) {    
331        const paywallMessages = document.querySelectorAll('.paywall-message');      
332        if (paywallMessages.length > 0)
333        {       
334            if (!this.styleAssigned && (fromScroll || genesisScroll.top > 0))
335            {
336                this.loadStyle();
337            }
338            paywallMessages.forEach(function (paywallMessage) {                
339                let mi = paywallMessage.dataset.id,
340                    mn = paywallMessage.dataset.name,  
341                    mv = paywallMessage.dataset.version,
342                    op = paywallMessage.dataset.open, 
343                    po = paywallMessage.dataset.pwOpt,  
344                    hp = paywallMessage.dataset.hdprc;
345                // console.log('runVideoPaywall isElementInViewport', genesisPage.isElementInViewport(paywallMessage, 'top'), paywallMessage);  
346                if ((!paywallMessage.classList.contains('seen')) && (paywallMessage.classList.contains('visible')) && (genesisPage.isElementInViewport(paywallMessage, 'top')))
347                {  
348                    // console.log('runVideoPaywall seen', paywallMessage);   
349                    paywallMessage.classList.add('seen');                    
350                    if ((typeof checkDeep == 'function') && (checkDeep()))
351                    {
352                        callDeepEvent({
353                            'event.type': ((op == 1) ? 'open-' : '') + 'paywall-displayed', 
354                            'paywall': {                            
355                                'content_open': op,     
356                                'close_after': ((hp == 0) ? false : hp),                                                    
357                                'type': {
358                                    'id': po, 
359                                    'name': ((po == 2) ? 'Premium' : (po == 1) ? 'Freemium' : ((po == 0) ? 'Dynamic' : 'Other')),
360                                }
361                            },
362                            'message': {                            
363                                'id': mi,                               
364                                'name': mn,
365                                'version': mv
366                            },
367                            'source': deep_init_content
368                        });     
369                    }        
370                    if ((typeof gtag == 'function') || (typeof GA_TRACKING_ID == 'string')) 
371                    { 
372                        gtag('event', 'Displayed', {
373                            'event_category': 'Paywall',
374                            'event_label':    mn
375                        });
376                    }
377                }  
378            });
379        }    
380    }, 
381    buttonClick: function (sender, type, url) {  
382        if (!sender)
383            return false;
384        const paywallMessage = sender.closest('.paywall-message');
385        if (!paywallMessage)
386            return false;        
387        let mi = paywallMessage.dataset.id,
388            mn = paywallMessage.dataset.name,  
389            mv = paywallMessage.dataset.version,
390            op = paywallMessage.dataset.open, 
391            po = paywallMessage.dataset.pwOpt,  
392            hp = paywallMessage.dataset.hdprc,
393            tg = sender.nodeName.toUpperCase(),  
394            lb = sender.innerText.trim(),
395            ed = {
396                'event.type': ((op == 1) ? 'open-' : '') + 'paywall-clicked',    
397                'message': {                             
398                    'id': mi,                               
399                    'name': mn,
400                    'version': mv
401                },   
402                'paywall': {                            
403                    'content_open': op,                         
404                    'close_after': ((hp == 0) ? false : hp),                    
405                    'type': {
406                        'id': po, 
407                        'name': ((po == 2) ? 'Premium' : (po == 1) ? 'Freemium' : ((po == 0) ? 'Dynamic' : 'Other')),
408                    }
409                },                          
410                'action': {                            
411                    'element': (tg == 'A') ? 'link' : 'button',                               
412                    'label': lb,
413                    'dest': false,
414                    'offer': false
415                },
416                'source': deep_init_content
417            };     
418                        
419        if (type == 'expand')
420        {         
421            const at = document.querySelector('#art-text-inner'),
422                  ar = document.querySelector('.article');
423            if (at)     
424                at.classList.add('art-text-freemium-expand');  
425            if (ar)     
426                ar.classList.add('article-freemium-expand');  
427            sender.remove();
428            ed.action.dest = type;          
429            if ((typeof checkDeep == 'function') && (checkDeep()))
430                callDeepEvent(ed);   
431        }
432        else
433        if (type == 'log_in')
434        {         
435            const hdLB = document.querySelector('#header #login-button');
436            if (hdLB)
437            {
438                hdLB.click();
439                ed.action.dest = type;       
440                if ((typeof checkDeep == 'function') && (checkDeep()))
441                    callDeepEvent(ed); 
442            }  
443        }
444        else
445        if (url)
446        {  
447            const l = document.createElement('a')
448                  h = location.hostname.replace(/www./gi,'');
449            l.href = url;    
450            url = l.protocol + '//' + l.host + l.pathname + '?utm_source=' + h + '&utm_medium=paywall-message&utm_campaign=' + mn;  
451            ed.action.dest = 'url';       
452            if ((typeof checkDeep == 'function') && (checkDeep()))
453                callDeepEvent(ed);               
454            setTimeout(function() {  
455                window.location = url;   
456            }, 600);  
457        }   
458                    
459        if ((typeof gtag == 'function') || (typeof GA_TRACKING_ID == 'string')) 
460        { 
461            gtag('event', 'Clicked', {
462                'event_category': 'Paywall',
463                'event_label': lb
464            });
465        }
466    },
467    loadStyle: function () {  
468        if (!this.styleAssigned)
469        {
470            this.styleAssigned = true;
471            if (location.host.indexOf('dorzeczy') >= 0)
472            {
473                addCSSModule('module-paywall-message', '/dorzeczy/_css/paywall-message.css', false, true);
474            }
475            else                                     
476            if (location.host.indexOf('wprost') >= 0)
477            { 
478                addCSSModule('font-muli', '/_css/fonts/Muli.css');
479                addCSSModule('module-paywall-message', '/wprost/_css/paywall-message.css', false, true);
480            }
481        }
482    }
483}
484
485function initPaywall()
486{        
487    genesisPaywall.init();  
488}       
489function paywallMsgBtnClick(sender, type, url)
490{          
491    genesisPaywall.buttonClick(sender, type, url);
492}          

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.